Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
5257 mario79 1
main_menu_start:
2
	mov	[main_menu_pointer],0
3
.red:
4
	call	draw_main_menu_window
5
;---------------------------------------------------------------------
6
.still:
7
	mcall	10
8
 
9
	cmp	eax,1
10
	je	.red
11
 
12
	cmp	eax,2
13
	je	.key
14
 
15
	cmp	eax,3
16
	je	.button
17
 
18
	jmp	.still
19
;---------------------------------------------------------------------
20
.key:
21
	mcall	2
22
	cmp	[extended_key],1
23
	je	.extended_key
24
 
25
	test	al,al
26
	jnz	.still
27
 
28
	cmp	ah,72	; arrow up
29
	je	.arrow_up
30
 
31
	cmp	ah,80	; arrow down
32
	je	.arrow_down
33
 
34
	cmp	ah,17	; w - arrow up
35
	je	.arrow_up
36
 
37
	cmp	ah,31	; s - arrow down
38
	je	.arrow_down
39
 
40
	cmp	ah,57	; space
41
	je	.enter_to_point
42
 
43
	cmp	ah,28	; enter
44
	je	.enter_to_point
45
 
46
	mov	[extended_key],1
47
	jmp	.still
48
;---------------------------------------------------------------------
49
.extended_key:
50
	mov	[extended_key],0
51
	cmp	ah,72	; arrow up
52
	je	.arrow_up
53
 
54
	cmp	ah,80	; arrow down
55
	je	.arrow_down
56
 
57
	jmp	.still
58
;---------------------------------------------------------------------
59
.arrow_up:
60
	cmp	[main_menu_pointer],0
61
	je	.still
62
 
63
	call	clear_old_pointer
64
	dec	[main_menu_pointer]
65
	call	draw_new_pointer
66
	jmp	.still
67
;---------------------------------------------------------------------
68
.arrow_down:
69
	cmp	[main_menu_pointer],4
70
	je	.still
71
 
72
	call	clear_old_pointer
73
	inc	[main_menu_pointer]
74
	call	draw_new_pointer
75
	jmp	.still
76
;---------------------------------------------------------------------
77
.enter_to_point:
78
	cmp	[main_menu_pointer],0
79
	je	start_level_0
80
 
81
	cmp	[main_menu_pointer],4
82
	je	button.exit
83
 
84
	jmp	.still
85
;---------------------------------------------------------------------
86
.button:
87
	mcall	17
88
 
89
	cmp	ah,1
90
	jne	.still
91
 
92
	jmp	button.exit
93
;---------------------------------------------------------------------
94
clear_old_pointer:
95
	movzx	ecx,byte [main_menu_pointer]
96
	imul	ecx,SPRITE_SIZE_Y
97
	add	ecx,SPRITE_SIZE_Y*2 + 32
98
	shl	ecx,16
99
	mov	cx,SPRITE_SIZE_Y
100
	mcall	13,,,0
101
	ret
102
;---------------------------------------------------------------------
103
draw_new_pointer:
104
;	movzx	ecx,byte [main_menu_pointer]
105
;	imul	ecx,SPRITE_SIZE_Y
106
;	add	ecx,SPRITE_SIZE_Y*2
107
;	shl	ecx,16
108
;	mov	cx,SPRITE_SIZE_Y
109
;	mcall	13,,,0xff0000
110
 
111
	mov	eax,[npc_miku_icons]
112
	mov	ebp,SPRITE_SIZE_X*SPRITE_SIZE_Y*12
113
	call	copy_base_8bpp
114
 
115
	movzx	edx,byte [main_menu_pointer]
116
	imul	edx,SPRITE_SIZE_Y
117
	add	edx,SPRITE_SIZE_Y*2 + 32
118
	add	edx,SPRITE_SIZE_X*2 shl 16
119
 
120
	xor	ebp,ebp
121
	mcall	65,buffer_area,,,32
122
	ret
123
;---------------------------------------------------------------------
124
draw_main_menu_window:
125
	mcall	12,1
126
	mcall	48,4
127
	mov	ecx,100 shl 16 + 644
128
	add	cx,ax
129
	mcall	0,<100,649>,,0x74AABBCC,,title
130
 
131
	call	clear_screen
132
 
133
	mov	eax,4
134
	mov	ebx,SPRITE_SIZE_X*3 shl 16 + SPRITE_SIZE_Y*3
135
	mov	ecx,0x90ffffff
136
	mov	esi,main_menu_text_pointers
137
;--------------------------------------
138
@@:
139
	mov	edx,[esi]
140
	test	edx,edx
141
	jz	.end
142
 
143
	mcall
144
	add	ebx,SPRITE_SIZE_Y
145
	add	esi,4
146
	jmp	@b
147
;--------------------------------------
148
.end:
149
	call	draw_new_pointer
150
 
151
	mcall	12,2
152
	ret
153
;---------------------------------------------------------------------
154
clear_screen:
155
	xor	edx,edx
156
	mcall	13,<0,SPRITE_SIZE_X*LEVEL_MAP_SIZE_X>,<0,SPRITE_SIZE_Y*LEVEL_MAP_SIZE_Y>
157
	ret
158
;---------------------------------------------------------------------