Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
950 leency 1
;ˆ‘Ž‚€ˆ… ˜€ˆŠ€, Ž ‡€„€ŽŒ“ ID ŠŽŠˆ (AX)
2
paint_ball:
3
	pushad
4
 
5
	movzx	bx, byte [eax*2 + lineCoord - 4]
6
	movzx	cx, byte [eax*2 + lineCoord - 3]
7
 
8
	movzx	eax, byte [eax + lineBall - 2]
9
	test	eax, eax
10
	jz	@F
11
 
12
	mov	edx,[tableColor+eax*4]
13
 
14
	imul	bx, bx, 37
15
	add	bx, 11
16
	shl	ebx, 16
17
	mov	bx, 19		; ebx=[x start]*65536+[x size]
18
 
19
	imul	cx, cx, 37
20
	add	cx, 57
21
	shl	ecx, 16
22
	mov	cx, 19		; ecx=[y start]*65536+[y size]
23
 
24
	mcall	13
25
	@@:
26
	popad
27
	ret
28
 
29
 
30
;Žˆ‘Ž‚Š€ €ŒŠˆ ‚ŽŠ“ƒ ‚›€ŽƒŽ ˜€ˆŠ€ [current]
31
choice_ball:
32
	pushad
33
	mov	eax, [current]
34
	movzx	bx, byte [eax*2 + lineCoord - 4]
35
	movzx	cx, byte [eax*2 + lineCoord - 3]
36
 
37
	imul	bx, bx, 37
38
	add	bx, 3
39
	shl	ebx, 16
40
	mov	bx, 34		; ebx=[x start]*65536+[x size]
41
 
42
	imul	cx, cx, 37
43
	add	cx, 49
44
	shl	ecx, 16
45
	mov	cx, 34		; ecx=[y start]*65536+[y size]
46
 
47
	mov	edx,0x0
48
	mcall	13
49
	popad
50
	ret
51
 
52
;……ˆ‘Ž‚Š€ Ÿ—…‰Šˆ (eax)
53
redraw_cell:
54
	pushad
55
	or	eax, 0x80000000
56
	mov	edx,eax
57
	mcall	8
58
 
59
	and	edx, 0x7FFFFFFF
60
	movzx	bx, byte [edx*2 + lineCoord - 4]
61
	movzx	cx, byte [edx*2 + lineCoord - 3]
62
 
63
	imul	bx, bx, 37
64
	add	bx, 3
65
	shl	ebx, 16
66
	mov	bx, 34		; ebx=[x start]*65536+[x size]
67
 
68
	imul	cx, cx, 37
69
	add	cx, 49
70
	shl	ecx, 16
71
	mov	cx, 34		; ecx=[y start]*65536+[y size]
72
 
73
	mov	esi, 0x00B8C2D3
74
	mcall	8
75
 
76
	popad
77
	ret
78
 
79
;Ž–…„“€ Ž‚…Šˆ „‹ˆ› ‹ˆˆ‰ ˆ ‘ˆ‚€ˆ… ˜€ˆŠŽ‚
80
vanish_balls:
81
 
82
	mov	[countVanishBall], 0
83
	mov	al, [findUpDown]
84
	cmp	al, 4
85
	jb	@F
86
 
87
	add	[countVanishBall], al
88
	mov	ah, 1
89
	call	zero_vanish_matrix
90
	mov	ah, 2
91
	call	zero_vanish_matrix
92
@@:
93
	mov	al, [findRightLeft]
94
	cmp	al, 4
95
	jb	@F
96
 
97
	add	[countVanishBall], al
98
	mov	ah, 3
99
	call	zero_vanish_matrix
100
	mov	ah, 4
101
	call	zero_vanish_matrix
102
@@:
103
	mov	al, [findUpRight_DownLeft]
104
	cmp	al, 4
105
	jb	@F
106
 
107
	add	[countVanishBall], al
108
	mov	ah, 7
109
	call	zero_vanish_matrix
110
	mov	ah, 8
111
	call	zero_vanish_matrix
112
@@:
113
	mov	al, [findUpLeft_DownRight]
114
	cmp	al, 4
115
	jb	@F
116
 
117
	add	[countVanishBall], al
118
	mov	ah, 5
119
	call	zero_vanish_matrix
120
	mov	ah, 6
121
	call	zero_vanish_matrix
122
@@:
123
	ret
124
 
125
;ฎกญใซ๏ฅโ ฌ โเจๆใ ฏฎ แฎฎโข งญ ็ฅญจ๎ ah
126
zero_vanish_matrix:
127
 
128
	mov	ecx, 81
129
	mov	edi, lineBall
130
	xor	al, al
131
 
132
	.cycle_zeros:
133
	   mov	dl, [edi]
134
  	   shr	dl, 4
135
	   cmp	dl, 0x0F
136
	   je	@F
137
	   cmp	dl, ah
138
	   je	@F
139
	   inc	edi
140
	   jmp	.temp
141
	   @@:
142
	   stosb
143
	   push	eax
144
	   mov	eax, edi
145
	   sub	eax, lineBall - 1
146
	   call	redraw_cell
147
	   pop	eax
148
	   .temp:
149
	   loop	.cycle_zeros
150
	ret
151
 
152
;ˆ‘“…Œ Ž‚›… –‚…’€
153
paint_new_color:
154
	movzx	eax, [newColor1]
155
	mov	edx, [tableColor + eax*4]
156
	mov	ebx, 123*65536 + 19
157
	mov	ecx, 15*65536 + 19
158
	mcall	13
159
	movzx	eax, [newColor2]
160
	mov	edx, [tableColor + eax*4]
161
	mov	ebx, 160*65536 + 19
162
	mov	ecx, 15*65536 + 19
163
	mcall	13
164
	movzx	eax, [newColor3]
165
	mov	edx, [tableColor + eax*4]
166
	mov	ebx, 197*65536 + 19
167
	mov	ecx, 15*65536 + 19
168
	mcall	13
169
	ret
170
 
171
;ˆ‘“…Œ Ž—Šˆ
172
redraw_score:
173
	mov	ebx, 8*65536 + 100
174
	mov	ecx, 20*65536 + 20
175
	mov	edx, 0x0
176
	mcall	13
177
 
178
	mov	ebx, 0xB0000
179
	mov	ecx, [score]
180
	mov	edx, 15*65536 + 27
181
	mov	esi, 0x10ffffff
182
	mcall	47
183
	ret