Rev 2677 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2677 | Rev 2678 | ||
---|---|---|---|
1 | ; |
1 | ; |
2 | ; Phenix Dynamic Game Created by Pavlushin Evgeni for ASCL |
2 | ; Phenix Dynamic Game Created by Pavlushin Evgeni for ASCL |
3 | ; |
3 | ; |
4 | ; 100% Full relase! |
4 | ; 100% Full relase! |
5 | ; |
5 | ; |
6 | ; www.waptap@mail.ru |
6 | ; www.waptap@mail.ru |
7 | ; |
7 | ; |
8 | 8 | ||
9 | 9 | ||
10 | ;****************************************************************************** |
10 | ;****************************************************************************** |
11 | use32 |
11 | use32 |
12 | org 0x0 |
12 | org 0x0 |
13 | db 'MENUET01' ; 8 byte id |
13 | db 'MENUET01' ; 8 byte id |
14 | dd 0x01 ; header version |
14 | dd 0x01 ; header version |
15 | dd START ; start of code |
15 | dd START ; start of code |
16 | dd IM_END ; size of image |
16 | dd IM_END ; size of image |
17 | dd I_END ; memory for app |
17 | dd I_END ; memory for app |
18 | dd I_END ; esp |
18 | dd I_END ; esp |
19 | dd 0x0 , 0x0 ; I_Param , I_Icon |
19 | dd 0x0 , 0x0 ; I_Param , I_Icon |
20 | 20 | ||
21 | ;****************************************************************************** |
21 | ;****************************************************************************** |
22 | 22 | ||
23 | 23 | ||
24 | include 'lang.inc' |
24 | include 'lang.inc' |
25 | include '../../../macros.inc' |
25 | include '../../../macros.inc' |
26 | include 'ascl.inc' |
26 | include 'ascl.inc' |
27 | include 'ascgl.inc' |
27 | include 'ascgl.inc' |
28 | include 'ascml.inc' |
28 | include 'ascml.inc' |
29 | 29 | ||
30 | 30 | ||
31 | showmas: |
31 | showmas: |
32 | cmp [edi+8],dword 0 |
32 | cmp [edi+8],dword 0 |
33 | je noshow |
33 | je noshow |
34 | cmp [edi+8],dword 1 |
34 | cmp [edi+8],dword 1 |
35 | jne no_gun |
35 | jne no_gun |
36 | mov eax,shoot |
36 | mov eax,shoot |
37 | jmp outp |
37 | jmp outp |
38 | no_gun: |
38 | no_gun: |
39 | push edi |
39 | push edi |
40 | random 3,ebx |
40 | random 3,ebx |
41 | pop edi |
41 | pop edi |
42 | cmp ebx,0 |
42 | cmp ebx,0 |
43 | jne no_star |
43 | jne no_star |
44 | mov eax,star |
44 | mov eax,star |
45 | jmp outp |
45 | jmp outp |
46 | no_star: |
46 | no_star: |
47 | cmp ebx,1 |
47 | cmp ebx,1 |
48 | jne no_star2 |
48 | jne no_star2 |
49 | mov eax,star2 |
49 | mov eax,star2 |
50 | jmp outp |
50 | jmp outp |
51 | no_star2: |
51 | no_star2: |
52 | mov eax,star3 |
52 | mov eax,star3 |
53 | outp: |
53 | outp: |
54 | aimgtoimg eax,dword [edi],dword [edi+4],canvas,0x0 |
54 | aimgtoimg eax,dword [edi],dword [edi+4],canvas,0x0 |
55 | noshow: |
55 | noshow: |
56 | ret |
56 | ret |
57 | 57 | ||
58 | showobjmas: |
58 | showobjmas: |
59 | cmp [edi+8],dword 0 |
59 | cmp [edi+8],dword 0 |
60 | je noshow1 |
60 | je noshow1 |
61 | cmp [edi+4],dword 380 |
61 | cmp [edi+4],dword 380 |
62 | jg noshow1 |
62 | jg noshow1 |
63 | cmp [edi+4],dword 0 |
63 | cmp [edi+4],dword 0 |
64 | jl noshow1 |
64 | jl noshow1 |
65 | cmp [edi+8],dword 1 |
65 | cmp [edi+8],dword 1 |
66 | jne no_warship1 |
66 | jne no_warship1 |
67 | mov eax,warship1 |
67 | mov eax,warship1 |
68 | jmp outws |
68 | jmp outws |
69 | no_warship1: |
69 | no_warship1: |
70 | cmp [edi+8],dword 2 |
70 | cmp [edi+8],dword 2 |
71 | jne no_warship2 |
71 | jne no_warship2 |
72 | mov eax,warship2 |
72 | mov eax,warship2 |
73 | jmp outws |
73 | jmp outws |
74 | no_warship2: |
74 | no_warship2: |
75 | cmp [edi+8],dword 3 |
75 | cmp [edi+8],dword 3 |
76 | jne no_meteor |
76 | jne no_meteor |
77 | mov eax,meteor |
77 | mov eax,meteor |
78 | jmp outws |
78 | jmp outws |
79 | no_meteor: |
79 | no_meteor: |
80 | cmp [edi+8],dword 4 |
80 | cmp [edi+8],dword 4 |
81 | jne no_box |
81 | jne no_box |
82 | mov eax,box |
82 | mov eax,box |
83 | jmp outws |
83 | jmp outws |
84 | no_box: |
84 | no_box: |
85 | outws: |
85 | outws: |
86 | aimgtoimg eax,dword [edi],dword [edi+4],canvas,0x0 |
86 | aimgtoimg eax,dword [edi],dword [edi+4],canvas,0x0 |
87 | noshow1: |
87 | noshow1: |
88 | ret |
88 | ret |
89 | 89 | ||
90 | 90 | ||
91 | moveobjmas: |
91 | moveobjmas: |
92 | cmp [edi+8],dword 0 |
92 | cmp [edi+8],dword 0 |
93 | je no_ws |
93 | je no_ws |
94 | mov eax,[edi+12] |
94 | mov eax,[edi+12] |
95 | add [edi],eax |
95 | add [edi],eax |
96 | mov eax,[edi+16] |
96 | mov eax,[edi+16] |
97 | add [edi+4],eax |
97 | add [edi+4],eax |
98 | 98 | ||
99 | cmp dword [edi],600 |
99 | cmp dword [edi],600 |
100 | jng xok1 |
100 | jng xok1 |
101 | sub dword [edi],20 |
101 | sub dword [edi],20 |
102 | neg dword [edi+12] |
102 | neg dword [edi+12] |
103 | jmp xok2 |
103 | jmp xok2 |
104 | xok1: |
104 | xok1: |
105 | cmp dword [edi],0 |
105 | cmp dword [edi],0 |
106 | jnl xok2 |
106 | jnl xok2 |
107 | add dword [edi],20 |
107 | add dword [edi],20 |
108 | neg dword [edi+12] |
108 | neg dword [edi+12] |
109 | xok2: |
109 | xok2: |
110 | cmp dword [edi+4],400 |
110 | cmp dword [edi+4],400 |
111 | jng yok |
111 | jng yok |
112 | mov dword [edi+8],0 |
112 | mov dword [edi+8],0 |
113 | ret |
113 | ret |
114 | yok: |
114 | yok: |
115 | cmp dword [edi+8],2 ;green ship |
115 | cmp dword [edi+8],2 ;green ship |
116 | jne no_grs |
116 | jne no_grs |
117 | cmp dword [edi+4],100 |
117 | cmp dword [edi+4],100 |
118 | jna no_grs |
118 | jna no_grs |
119 | cmp dword [edi+4],103 |
119 | cmp dword [edi+4],103 |
120 | jna grs |
120 | jna grs |
121 | cmp dword [edi+4],200 |
121 | cmp dword [edi+4],200 |
122 | jna no_grs |
122 | jna no_grs |
123 | cmp dword [edi+4],203 |
123 | cmp dword [edi+4],203 |
124 | jna grs |
124 | jna grs |
125 | cmp dword [edi+4],300 |
125 | cmp dword [edi+4],300 |
126 | jna no_grs |
126 | jna no_grs |
127 | cmp dword [edi+4],303 |
127 | cmp dword [edi+4],303 |
128 | ja no_grs |
128 | ja no_grs |
129 | grs: |
129 | grs: |
130 | neg dword [edi+12] |
130 | neg dword [edi+12] |
131 | mov [temp],edi |
131 | mov [temp],edi |
132 | findmas massive,findzero |
132 | findmas massive,findzero |
133 | ;in edi off to free element |
133 | ;in edi off to free element |
134 | jc close_app |
134 | jc close_app |
135 | mov esi,edi |
135 | mov esi,edi |
136 | mov edi,[temp] |
136 | mov edi,[temp] |
137 | mov eax,[edi] |
137 | mov eax,[edi] |
138 | mov [esi],eax |
138 | mov [esi],eax |
139 | mov eax,[edi+4] |
139 | mov eax,[edi+4] |
140 | mov [esi+4],eax |
140 | mov [esi+4],eax |
141 | mov [esi+8],dword 1 |
141 | mov [esi+8],dword 1 |
142 | mov [esi+12],dword 0 |
142 | mov [esi+12],dword 0 |
143 | mov [esi+16],dword 10 |
143 | mov [esi+16],dword 10 |
144 | no_grs: |
144 | no_grs: |
145 | 145 | ||
146 | cmp dword [edi+8],1 ;blue ship |
146 | cmp dword [edi+8],1 ;blue ship |
147 | jne no_bls |
147 | jne no_bls |
148 | cmp dword [edi+4],50 |
148 | cmp dword [edi+4],50 |
149 | jna no_bls |
149 | jna no_bls |
150 | cmp dword [edi+4],64 |
150 | cmp dword [edi+4],64 |
151 | jna bls |
151 | jna bls |
152 | cmp dword [edi+4],100 |
152 | cmp dword [edi+4],100 |
153 | jna no_bls |
153 | jna no_bls |
154 | cmp dword [edi+4],114 |
154 | cmp dword [edi+4],114 |
155 | jna bls |
155 | jna bls |
156 | cmp dword [edi+4],150 |
156 | cmp dword [edi+4],150 |
157 | jna no_bls |
157 | jna no_bls |
158 | cmp dword [edi+4],164 |
158 | cmp dword [edi+4],164 |
159 | ja no_bls |
159 | ja no_bls |
160 | bls: |
160 | bls: |
161 | mov [temp],edi |
161 | mov [temp],edi |
162 | findmas massive,findzero |
162 | findmas massive,findzero |
163 | jc close_app |
163 | jc close_app |
164 | mov esi,edi |
164 | mov esi,edi |
165 | mov edi,[temp] |
165 | mov edi,[temp] |
166 | mov eax,[edi] |
166 | mov eax,[edi] |
167 | mov [esi],eax |
167 | mov [esi],eax |
168 | mov eax,[edi+4] |
168 | mov eax,[edi+4] |
169 | mov [esi+4],eax |
169 | mov [esi+4],eax |
170 | mov [esi+8],dword 2 |
170 | mov [esi+8],dword 2 |
171 | mov [esi+12],dword 0 |
171 | mov [esi+12],dword 0 |
172 | mov [esi+16],dword 5 |
172 | mov [esi+16],dword 5 |
173 | no_bls: |
173 | no_bls: |
174 | 174 | ||
175 | no_ws: |
175 | no_ws: |
176 | ret |
176 | ret |
177 | 177 | ||
178 | 178 | ||
179 | delfarshoot: |
179 | delfarshoot: |
180 | cmp [edi+4],dword 40 |
180 | cmp [edi+4],dword 40 |
181 | jb del |
181 | jb del |
182 | cmp [edi+4],dword 400 |
182 | cmp [edi+4],dword 400 |
183 | ja del |
183 | ja del |
184 | cmp [edi],dword 40 |
184 | cmp [edi],dword 40 |
185 | jb del |
185 | jb del |
186 | cmp [edi],dword 600 |
186 | cmp [edi],dword 600 |
187 | ja del |
187 | ja del |
188 | jmp nodel |
188 | jmp nodel |
189 | del: |
189 | del: |
190 | mov [edi+8],dword 0 |
190 | mov [edi+8],dword 0 |
191 | nodel: |
191 | nodel: |
192 | ret |
192 | ret |
193 | 193 | ||
194 | 194 | ||
195 | movemas: |
195 | movemas: |
196 | cmp [edi+8],dword 0 |
196 | cmp [edi+8],dword 0 |
197 | jne no_freeel |
197 | jne no_freeel |
198 | ret |
198 | ret |
199 | no_freeel: |
199 | no_freeel: |
200 | mov eax,[edi+12] |
200 | mov eax,[edi+12] |
201 | add [edi],eax |
201 | add [edi],eax |
202 | mov eax,[edi+16] |
202 | mov eax,[edi+16] |
203 | add [edi+4],eax |
203 | add [edi+4],eax |
204 | ret |
204 | ret |
205 | 205 | ||
206 | 206 | ||
207 | 207 | ||
208 | endshowmas: |
208 | endshowmas: |
209 | cmp [edi+8],dword 0 |
209 | cmp [edi+8],dword 0 |
210 | je noshowem |
210 | je noshowem |
211 | mov eax,star2 |
211 | mov eax,star2 |
212 | aimgtoimg eax,dword [edi],dword [edi+4],canvas,0x0 |
212 | aimgtoimg eax,dword [edi],dword [edi+4],canvas,0x0 |
213 | noshowem: |
213 | noshowem: |
214 | ret |
214 | ret |
215 | 215 | ||
216 | 216 | ||
217 | 217 | ||
218 | endmovemas: |
218 | endmovemas: |
219 | cmp [edi+8],dword 0 |
219 | cmp [edi+8],dword 0 |
220 | jne no_fr |
220 | jne no_fr |
221 | ret |
221 | ret |
222 | no_fr: |
222 | no_fr: |
223 | mov eax,[edi+12] |
223 | mov eax,[edi+12] |
224 | add [edi],eax |
224 | add [edi],eax |
225 | mov eax,[edi+16] |
225 | mov eax,[edi+16] |
226 | add [edi+4],eax |
226 | add [edi+4],eax |
227 | ret |
227 | ret |
228 | 228 | ||
229 | 229 | ||
230 | findzero: |
230 | findzero: |
231 | cmp [edi+8],dword 0 |
231 | cmp [edi+8],dword 0 |
232 | je iz_zero |
232 | je iz_zero |
233 | xor eax,eax |
233 | xor eax,eax |
234 | ret |
234 | ret |
235 | iz_zero: |
235 | iz_zero: |
236 | mov eax,1 |
236 | mov eax,1 |
237 | ret |
237 | ret |
238 | 238 | ||
239 | compobr: |
239 | compobr: |
240 | cmp [esi+8],dword 0 |
240 | cmp [esi+8],dword 0 |
241 | je no_crsh |
241 | je no_crsh |
242 | cmp [edi+8],dword 0 |
242 | cmp [edi+8],dword 0 |
243 | je no_crsh |
243 | je no_crsh |
244 | cmp [esi+16],dword 0 |
244 | cmp [esi+16],dword 0 |
245 | jg no_crsh |
245 | jg no_crsh |
246 | 246 | ||
247 | mov eax,[esi] |
247 | mov eax,[esi] |
248 | mov [temp],eax |
248 | mov [temp],eax |
249 | mov eax,[esi+4] |
249 | mov eax,[esi+4] |
250 | mov [temp2],eax |
250 | mov [temp2],eax |
251 | mov eax,[edi] |
251 | mov eax,[edi] |
252 | mov [temp3],eax |
252 | mov [temp3],eax |
253 | mov eax,[edi+4] |
253 | mov eax,[edi+4] |
254 | mov [temp4],eax |
254 | mov [temp4],eax |
255 | 255 | ||
256 | pushad |
256 | pushad |
257 | collimg imgsize,[temp],[temp2],imgsize,[temp3],[temp4],[otv] |
257 | collimg imgsize,[temp],[temp2],imgsize,[temp3],[temp4],[otv] |
258 | popad |
258 | popad |
259 | cmp [otv],dword 0 |
259 | cmp [otv],dword 0 |
260 | je no_crsh |
260 | je no_crsh |
261 | 261 | ||
262 | cmp [edi+8],dword 2 |
262 | cmp [edi+8],dword 2 |
263 | jne no_grship |
263 | jne no_grship |
264 | inc [gship] |
264 | inc [gship] |
265 | add [score],30 |
265 | add [score],30 |
266 | jmp setzero |
266 | jmp setzero |
267 | no_grship: |
267 | no_grship: |
268 | cmp [edi+8],dword 1 |
268 | cmp [edi+8],dword 1 |
269 | jne no_blship |
269 | jne no_blship |
270 | inc [bship] |
270 | inc [bship] |
271 | add [score],20 |
271 | add [score],20 |
272 | jmp setzero |
272 | jmp setzero |
273 | no_blship: |
273 | no_blship: |
274 | cmp [edi+8],dword 3 |
274 | cmp [edi+8],dword 3 |
275 | jne no_metr |
275 | jne no_metr |
276 | dec dword [edi+16] |
276 | dec dword [edi+16] |
277 | cmp dword [edi+16],0 |
277 | cmp dword [edi+16],0 |
278 | jne mok |
278 | jne mok |
279 | mov dword [edi+16],1 |
279 | mov dword [edi+16],1 |
280 | mok: |
280 | mok: |
281 | mov [esi+8],dword 0 |
281 | mov [esi+8],dword 0 |
282 | ret |
282 | ret |
283 | no_metr: |
283 | no_metr: |
284 | 284 | ||
285 | setzero: |
285 | setzero: |
286 | mov [esi+8],dword 0 |
286 | mov [esi+8],dword 0 |
287 | mov [edi+8],dword 0 |
287 | mov [edi+8],dword 0 |
288 | no_crsh: |
288 | no_crsh: |
289 | ret |
289 | ret |
290 | 290 | ||
291 | shipobjtest: |
291 | shipobjtest: |
292 | cmp [edi+8],dword 0 |
292 | cmp [edi+8],dword 0 |
293 | je no_obj |
293 | je no_obj |
294 | mov eax,[edi] |
294 | mov eax,[edi] |
295 | mov [temp3],eax |
295 | mov [temp3],eax |
296 | mov eax,[edi+4] |
296 | mov eax,[edi+4] |
297 | mov [temp4],eax |
297 | mov [temp4],eax |
298 | pushad |
298 | pushad |
299 | collimg imgsize,[shipx],[shipy],imgsize,[temp3],[temp4],[otv] |
299 | collimg imgsize,[shipx],[shipy],imgsize,[temp3],[temp4],[otv] |
300 | popad |
300 | popad |
301 | cmp [otv],dword 0 |
301 | cmp [otv],dword 0 |
302 | je no_obj |
302 | je no_obj |
303 | cmp [edi+8],dword 4 ;if box |
303 | cmp [edi+8],dword 4 ;if box |
304 | jne no_fbox |
304 | jne no_fbox |
305 | add [energy],5 |
305 | add [energy],5 |
306 | add [score],50 |
306 | add [score],50 |
307 | mov [edi+8],dword 0 |
307 | mov [edi+8],dword 0 |
308 | inc [boxget] |
308 | inc [boxget] |
309 | ret |
309 | ret |
310 | no_fbox: |
310 | no_fbox: |
311 | sub [energy],16 |
311 | sub [energy],16 |
312 | mov [edi+8],dword 0 |
312 | mov [edi+8],dword 0 |
313 | no_obj: |
313 | no_obj: |
314 | ret |
314 | ret |
315 | 315 | ||
316 | shipguntest: |
316 | shipguntest: |
317 | cmp [edi+8],dword 0 |
317 | cmp [edi+8],dword 0 |
318 | je no_gobj |
318 | je no_gobj |
319 | cmp [edi+16],dword 0 |
319 | cmp [edi+16],dword 0 |
320 | jl no_gobj |
320 | jl no_gobj |
321 | mov eax,[edi] |
321 | mov eax,[edi] |
322 | mov [temp3],eax |
322 | mov [temp3],eax |
323 | mov eax,[edi+4] |
323 | mov eax,[edi+4] |
324 | mov [temp4],eax |
324 | mov [temp4],eax |
325 | pushad |
325 | pushad |
326 | collimg imgsize,[shipx],[shipy],imgsize,[temp3],[temp4],[otv] |
326 | collimg imgsize,[shipx],[shipy],imgsize,[temp3],[temp4],[otv] |
327 | popad |
327 | popad |
328 | cmp [otv],dword 0 |
328 | cmp [otv],dword 0 |
329 | je no_gobj |
329 | je no_gobj |
330 | sub [energy],4 |
330 | sub [energy],4 |
331 | mov [edi+8],dword 0 |
331 | mov [edi+8],dword 0 |
332 | no_gobj: |
332 | no_gobj: |
333 | ret |
333 | ret |
334 | 334 | ||
335 | 335 | ||
336 | START: ; start of execution |
336 | START: ; start of execution |
337 | 337 | ||
338 | massize = 400 |
338 | massize = 400 |
339 | elemsize = 20 |
339 | elemsize = 20 |
340 | 340 | ||
341 | mov [massive],dword massize |
341 | mov [massive],dword massize |
342 | mov [massive+4],dword elemsize |
342 | mov [massive+4],dword elemsize |
343 | 343 | ||
344 | omassize = 100 |
344 | omassize = 100 |
345 | oelemsize = 20 |
345 | oelemsize = 20 |
346 | 346 | ||
347 | mov [objmas],dword omassize |
347 | mov [objmas],dword omassize |
348 | mov [objmas+4],dword oelemsize |
348 | mov [objmas+4],dword oelemsize |
349 | 349 | ||
350 | 350 | ||
351 | mov eax,66 |
351 | mov eax,66 |
352 | mov ebx,1 |
352 | mov ebx,1 |
353 | mov ecx,1 |
353 | mov ecx,1 |
354 | mcall |
354 | mcall |
355 | 355 | ||
356 | mov eax,26 |
356 | mov eax,26 |
357 | mov ebx,2 |
357 | mov ebx,2 |
358 | mov ecx,1 |
358 | mov ecx,1 |
359 | mov edx,keymap |
359 | mov edx,keymap |
360 | mcall |
360 | mcall |
361 | 361 | ||
362 | startgame: |
362 | startgame: |
363 | giftoimg gif_file_area2,canvas |
363 | giftoimg gif_file_area2,canvas |
364 | giftoimg gif_file_area,img_area |
364 | giftoimg gif_file_area,img_area |
365 | 365 | ||
366 | getimg img_area,0,0,32,32,ship |
366 | getimg img_area,0,0,32,32,ship |
367 | getimg img_area,32,0,32,32,shoot |
367 | getimg img_area,32,0,32,32,shoot |
368 | getimg img_area,64,0,32,32,warship1 |
368 | getimg img_area,64,0,32,32,warship1 |
369 | getimg img_area,96,0,32,32,warship2 |
369 | getimg img_area,96,0,32,32,warship2 |
370 | getimg img_area,128,0,32,32,meteor |
370 | getimg img_area,128,0,32,32,meteor |
371 | getimg img_area,160,0,32,32,star |
371 | getimg img_area,160,0,32,32,star |
372 | getimg img_area,192,0,32,32,star2 |
372 | getimg img_area,192,0,32,32,star2 |
373 | getimg img_area,224,0,32,32,star3 |
373 | getimg img_area,224,0,32,32,star3 |
374 | getimg img_area,0,32,32,32,box |
374 | getimg img_area,0,32,32,32,box |
375 | 375 | ||
376 | 376 | ||
377 | 377 | ||
378 | main_menu: |
378 | main_menu: |
379 | call draw_logowindow |
379 | call draw_logowindow |
380 | 380 | ||
381 | stillm: |
381 | stillm: |
382 | wtevent redm,keym,buttonm |
382 | wtevent redm,keym,buttonm |
383 | jmp stillm |
383 | jmp stillm |
384 | redm: |
384 | redm: |
385 | call draw_logowindow |
385 | call draw_logowindow |
386 | jmp stillm |
386 | jmp stillm |
387 | keym: |
387 | keym: |
388 | mov eax,2 |
388 | mov eax,2 |
389 | mcall |
389 | mcall |
390 | jmp stillm |
390 | jmp stillm |
391 | buttonm: |
391 | buttonm: |
392 | mov eax,17 ; get id |
392 | mov eax,17 ; get id |
393 | mcall |
393 | mcall |
394 | cmp ah,1 ; button id=1 ? |
394 | cmp ah,1 ; button id=1 ? |
395 | je close_app |
395 | je close_app |
396 | cmp ah,2 ; button id=1 ? |
396 | cmp ah,2 ; button id=1 ? |
397 | je start_game |
397 | je start_game |
398 | cmp ah,3 ; button id=1 ? |
398 | cmp ah,3 ; button id=1 ? |
399 | je help |
399 | je help |
400 | cmp ah,4 ; button id=1 ? |
400 | cmp ah,4 ; button id=1 ? |
401 | je close_app |
401 | je close_app |
402 | jmp stillm |
402 | jmp stillm |
403 | 403 | ||
404 | draw_logowindow: |
404 | draw_logowindow: |
405 | call draw_window |
405 | call draw_window |
406 | mcall 9,proc_info,-1 |
406 | mcall 9,proc_info,-1 |
407 | test [proc_info+process_information.wnd_state], 0x04 |
407 | test [proc_info+process_information.wnd_state], 0x04 |
408 | jz @f |
408 | jz @f |
409 | ret |
409 | ret |
410 | @@: |
410 | @@: |
411 | setimg 5,21,canvas |
411 | setimg 5,21,canvas |
412 | drawlbut 300,300,60,14,'START',2,0x990000,cl_Black |
412 | drawlbut 300,300,60,14,'START',2,0x990000,cl_Black |
413 | drawlbut 300,320,60,14,'HELP',3,0x990000,cl_Black |
413 | drawlbut 300,320,60,14,'HELP',3,0x990000,cl_Black |
414 | drawlbut 300,340,60,14,'EXIT',4,0x990000,cl_Black |
414 | drawlbut 300,340,60,14,'EXIT',4,0x990000,cl_Black |
415 | ret |
415 | ret |
416 | 416 | ||
417 | ;*********************** |
417 | ;*********************** |
418 | ; Draw help menu |
418 | ; Draw help menu |
419 | ;*********************** |
419 | ;*********************** |
420 | 420 | ||
421 | help: |
421 | help: |
422 | call draw_helpwindow |
422 | call draw_helpwindow |
423 | 423 | ||
424 | stillh: |
424 | stillh: |
425 | wtevent redh,keyh,buttonh |
425 | wtevent redh,keyh,buttonh |
426 | jmp stillh |
426 | jmp stillh |
427 | redh: |
427 | redh: |
428 | call draw_helpwindow |
428 | call draw_helpwindow |
429 | jmp stillh |
429 | jmp stillh |
430 | keyh: |
430 | keyh: |
431 | mov eax,2 |
431 | mov eax,2 |
432 | mcall |
432 | mcall |
433 | jmp stillh |
433 | jmp stillh |
434 | buttonh: |
434 | buttonh: |
435 | mov eax,17 ; get id |
435 | mov eax,17 ; get id |
436 | mcall |
436 | mcall |
437 | cmp ah,1 ; button id=1 ? |
437 | cmp ah,1 ; button id=1 ? |
438 | je close_app |
438 | je close_app |
439 | cmp ah,2 ; button id=1 ? |
439 | cmp ah,2 ; button id=1 ? |
440 | je start_game |
440 | je start_game |
441 | cmp ah,3 ; button id=1 ? |
441 | cmp ah,3 ; button id=1 ? |
442 | je help |
442 | je help |
443 | cmp ah,4 ; button id=1 ? |
443 | cmp ah,4 ; button id=1 ? |
444 | je close_app |
444 | je close_app |
445 | cmp ah,5 ; button id=1 ? |
445 | cmp ah,5 ; button id=1 ? |
446 | je main_menu |
446 | je main_menu |
447 | jmp stillh |
447 | jmp stillh |
448 | 448 | ||
449 | draw_helpwindow: |
449 | draw_helpwindow: |
450 | call draw_window |
450 | call draw_window |
451 | mcall 9,proc_info,-1 |
451 | mcall 9,proc_info,-1 |
452 | test [proc_info+process_information.wnd_state], 0x04 |
452 | test [proc_info+process_information.wnd_state], 0x04 |
453 | jnz stillh |
453 | jnz stillh |
454 | setimg 5,21,canvas |
454 | setimg 5,21,canvas |
455 | 455 | ||
456 | drawfbox 40,50,580,380,cl_Grey |
456 | drawfbox 40,50,580,380,cl_Grey |
457 | 457 | ||
458 | mov ebp,4*7 |
458 | mov ebp,4*7 |
459 | mov ebx,180*65536+90 |
459 | mov ebx,180*65536+90 |
460 | mov edx,helptext |
460 | mov edx,helptext |
461 | mov esi,50 |
461 | mov esi,50 |
462 | mov ecx,cl_White |
462 | mov ecx,cl_White |
463 | dec ebp |
463 | dec ebp |
464 | looht: |
464 | looht: |
465 | mov eax,4 |
465 | mov eax,4 |
466 | mcall |
466 | mcall |
467 | add edx,esi |
467 | add edx,esi |
468 | add ebx,10 |
468 | add ebx,10 |
469 | dec ebp |
469 | dec ebp |
470 | jnz looht |
470 | jnz looht |
471 | 471 | ||
472 | setimg 90,90,ship |
472 | setimg 90,90,ship |
473 | setimg 90,130,shoot |
473 | setimg 90,130,shoot |
474 | setimg 90,170,star |
474 | setimg 90,170,star |
475 | setimg 90,210,warship1 |
475 | setimg 90,210,warship1 |
476 | setimg 90,250,warship2 |
476 | setimg 90,250,warship2 |
477 | setimg 90,290,meteor |
477 | setimg 90,290,meteor |
478 | setimg 90,330,box |
478 | setimg 90,330,box |
479 | 479 | ||
480 | drawlbut 500,400,80,14,'< |
480 | drawlbut 500,400,80,14,'< |
481 | 481 | ||
482 | jmp stillh |
482 | jmp stillh |
483 | 483 | ||
484 | helptext: |
484 | helptext: |
485 | db 'Phenix ' |
485 | db 'Phenix ' |
486 | db 'Controls: Num1 move left, Num3 move right ' |
486 | db 'Controls: Num1 move left, Num3 move right ' |
487 | db ' P-pause (use for screen shooting) ' |
487 | db ' P-pause (use for screen shooting) ' |
488 | db ' ' |
488 | db ' ' |
489 | 489 | ||
490 | db 'Lazer cannon ' |
490 | db 'Lazer cannon ' |
491 | db 'Press Num5 for shoot ' |
491 | db 'Press Num5 for shoot ' |
492 | db 'Core fast, speed fast, reload slow ' |
492 | db 'Core fast, speed fast, reload slow ' |
493 | db ' ' |
493 | db ' ' |
494 | 494 | ||
495 | db 'Plazma cannon ' |
495 | db 'Plazma cannon ' |
496 | db 'Press Num2 for Plazma Nuke and Num8 for shoot ' |
496 | db 'Press Num2 for Plazma Nuke and Num8 for shoot ' |
497 | db 'Core slow, speed medium, reload fast ' |
497 | db 'Core slow, speed medium, reload fast ' |
498 | db ' ' |
498 | db ' ' |
499 | 499 | ||
500 | db 'Blue warship ' |
500 | db 'Blue warship ' |
501 | db 'Speed fast ' |
501 | db 'Speed fast ' |
502 | db 'Attack method: plazma bomb ' |
502 | db 'Attack method: plazma bomb ' |
503 | db ' ' |
503 | db ' ' |
504 | 504 | ||
505 | db 'Green warship ' |
505 | db 'Green warship ' |
506 | db 'Speed slow ' |
506 | db 'Speed slow ' |
507 | db 'Attack method: laser shoot ' |
507 | db 'Attack method: laser shoot ' |
508 | db ' ' |
508 | db ' ' |
509 | 509 | ||
510 | db 'Meteor ' |
510 | db 'Meteor ' |
511 | db 'Dangeros object! ' |
511 | db 'Dangeros object! ' |
512 | db 'SuperSheld ' |
512 | db 'SuperSheld ' |
513 | db ' ' |
513 | db ' ' |
514 | 514 | ||
515 | db 'Fly Box ' |
515 | db 'Fly Box ' |
516 | db 'Sheld pack, sheld +5, score +30 ' |
516 | db 'Sheld pack, sheld +5, score +30 ' |
517 | db 'Get for sheld level up! ' |
517 | db 'Get for sheld level up! ' |
518 | db ' ' |
518 | db ' ' |
519 | 519 | ||
520 | start_game: |
520 | start_game: |
521 | 521 | ||
522 | ; jmp end_gm |
522 | ; jmp end_gm |
523 | 523 | ||
524 | mov [canvas],dword 640 |
524 | mov [canvas],dword 640 |
525 | mov [canvas+4],dword 440 |
525 | mov [canvas+4],dword 440 |
526 | 526 | ||
527 | call draw_window |
527 | call draw_window |
528 | 528 | ||
529 | ;Main loop wait for event with 10msec |
529 | ;Main loop wait for event with 10msec |
530 | still: |
530 | still: |
531 | ; scevent red,key,button ;for full speed |
531 | ; scevent red,key,button ;for full speed |
532 | 532 | ||
533 | timeevent 1,no_event,red,key,button |
533 | timeevent 1,no_event,red,key,button |
534 | no_event: |
534 | no_event: |
535 | mcall 9,proc_info,-1 |
535 | mcall 9,proc_info,-1 |
536 | test [proc_info+process_information.wnd_state], 0x04 |
536 | test [proc_info+process_information.wnd_state], 0x04 |
537 | jnz still |
537 | jnz still |
538 | setimg 5,21,canvas |
538 | setimg 5,21,canvas |
539 | 539 | ||
540 | cmp [pause_on],0 |
540 | cmp [pause_on],0 |
541 | jne still |
541 | jne still |
542 | 542 | ||
543 | cmp [energy],0 |
543 | cmp [energy],0 |
544 | jl game_over |
544 | jl game_over |
545 | 545 | ||
546 | cmp [ctime],dword 0 |
546 | cmp [ctime],dword 0 |
547 | je no_dct |
547 | je no_dct |
548 | dec dword [ctime] |
548 | dec dword [ctime] |
549 | no_dct: |
549 | no_dct: |
550 | 550 | ||
551 | cmp [xtime],dword 0 |
551 | cmp [xtime],dword 0 |
552 | je no_dxt |
552 | je no_dxt |
553 | dec dword [xtime] |
553 | dec dword [xtime] |
554 | no_dxt: |
554 | no_dxt: |
555 | 555 | ||
556 | 556 | ||
557 | ; |
557 | ; |
558 | ; Add to level new ships |
558 | ; Add to level new ships |
559 | ; |
559 | ; |
560 | inc dword [pathtime] |
560 | inc dword [pathtime] |
561 | mov ebp,[levelpart] |
561 | mov ebp,[levelpart] |
562 | shl ebp,5 |
562 | shl ebp,5 |
563 | add ebp,levels |
563 | add ebp,levels |
564 | mov eax,[ebp] |
564 | mov eax,[ebp] |
565 | cmp [pathtime],eax ;500 |
565 | cmp [pathtime],eax ;500 |
566 | jne no_nextloc |
566 | jne no_nextloc |
567 | 567 | ||
568 | randobjmasx: |
568 | randobjmasx: |
569 | mov ebp,[levelpart] |
569 | mov ebp,[levelpart] |
570 | shl ebp,5 |
570 | shl ebp,5 |
571 | add ebp,levels |
571 | add ebp,levels |
572 | 572 | ||
573 | mov ecx,[ebp+8] |
573 | mov ecx,[ebp+8] |
574 | mov [shiptype],2 |
574 | mov [shiptype],2 |
575 | mov [xmoving],9 |
575 | mov [xmoving],9 |
576 | mov [xaccel],4 |
576 | mov [xaccel],4 |
577 | mov [ymoving],3 |
577 | mov [ymoving],3 |
578 | mov [yaccel],2 |
578 | mov [yaccel],2 |
579 | call add_ships |
579 | call add_ships |
580 | 580 | ||
581 | mov ecx,[ebp+12] |
581 | mov ecx,[ebp+12] |
582 | mov [shiptype],1 |
582 | mov [shiptype],1 |
583 | mov [xmoving],3 |
583 | mov [xmoving],3 |
584 | mov [xaccel],1 |
584 | mov [xaccel],1 |
585 | mov [ymoving],3 |
585 | mov [ymoving],3 |
586 | mov [yaccel],6 |
586 | mov [yaccel],6 |
587 | call add_ships |
587 | call add_ships |
588 | 588 | ||
589 | mov ecx,[ebp+16] |
589 | mov ecx,[ebp+16] |
590 | mov [shiptype],3 |
590 | mov [shiptype],3 |
591 | mov [xmoving],5 |
591 | mov [xmoving],5 |
592 | mov [xaccel],2 |
592 | mov [xaccel],2 |
593 | mov [ymoving],5 |
593 | mov [ymoving],5 |
594 | mov [yaccel],2 |
594 | mov [yaccel],2 |
595 | call add_ships |
595 | call add_ships |
596 | 596 | ||
597 | mov ecx,[ebp+20] |
597 | mov ecx,[ebp+20] |
598 | mov [shiptype],4 |
598 | mov [shiptype],4 |
599 | mov [xmoving],4 |
599 | mov [xmoving],4 |
600 | mov [xaccel],1 |
600 | mov [xaccel],1 |
601 | mov [ymoving],4 |
601 | mov [ymoving],4 |
602 | mov [yaccel],1 |
602 | mov [yaccel],1 |
603 | call add_ships |
603 | call add_ships |
604 | 604 | ||
605 | jmp newlocend |
605 | jmp newlocend |
606 | 606 | ||
607 | shiptype dd 0 |
607 | shiptype dd 0 |
608 | xmoving dd 0 |
608 | xmoving dd 0 |
609 | ymoving dd 0 |
609 | ymoving dd 0 |
610 | xaccel dd 0 |
610 | xaccel dd 0 |
611 | yaccel dd 0 |
611 | yaccel dd 0 |
612 | 612 | ||
613 | add_ships: |
613 | add_ships: |
614 | looship: |
614 | looship: |
615 | cmp ecx,0 |
615 | cmp ecx,0 |
616 | je no_ships |
616 | je no_ships |
617 | push ecx |
617 | push ecx |
618 | findmas objmas,findzero |
618 | findmas objmas,findzero |
619 | ;in edi off to free element |
619 | ;in edi off to free element |
620 | jc close_app |
620 | jc close_app |
621 | mov ebp,[shiptype] |
621 | mov ebp,[shiptype] |
622 | mov dword [edi+8],ebp ;2 ;green ship |
622 | mov dword [edi+8],ebp ;2 ;green ship |
623 | ; random x |
623 | ; random x |
624 | push edi |
624 | push edi |
625 | random 600,eax |
625 | random 600,eax |
626 | pop edi |
626 | pop edi |
627 | mov [edi],eax |
627 | mov [edi],eax |
628 | ; random y |
628 | ; random y |
629 | push edi |
629 | push edi |
630 | mov ebp,[levelpart] |
630 | mov ebp,[levelpart] |
631 | shl ebp,5 |
631 | shl ebp,5 |
632 | add ebp,levels |
632 | add ebp,levels |
633 | mov esi,[ebp+4] ;get max range |
633 | mov esi,[ebp+4] ;get max range |
634 | random esi,eax |
634 | random esi,eax |
635 | neg eax |
635 | neg eax |
636 | pop edi |
636 | pop edi |
637 | mov [edi+4],eax |
637 | mov [edi+4],eax |
638 | ; x moving |
638 | ; x moving |
639 | push edi ;planers |
639 | push edi ;planers |
640 | random [xmoving],eax |
640 | random [xmoving],eax |
641 | sub eax,[xaccel];4 |
641 | sub eax,[xaccel];4 |
642 | pop edi |
642 | pop edi |
643 | mov [edi+12],eax |
643 | mov [edi+12],eax |
644 | ; y moving |
644 | ; y moving |
645 | push edi |
645 | push edi |
646 | random [ymoving],eax ;slow |
646 | random [ymoving],eax ;slow |
647 | add eax,[yaccel] ;2 |
647 | add eax,[yaccel] ;2 |
648 | pop edi |
648 | pop edi |
649 | mov [edi+16],eax |
649 | mov [edi+16],eax |
650 | pop ecx |
650 | pop ecx |
651 | dec ecx |
651 | dec ecx |
652 | jnz looship |
652 | jnz looship |
653 | no_ships: |
653 | no_ships: |
654 | ret |
654 | ret |
655 | 655 | ||
656 | 656 | ||
657 | levelpart dd 0 |
657 | levelpart dd 0 |
658 | levels: |
658 | levels: |
659 | ;level1 |
659 | ;level1 |
660 | dd 1,800,0,0,5,8,0,0 ;one at start |
660 | dd 1,800,0,0,5,8,0,0 ;one at start |
661 | dd 500,2000,4,20,30,0,0,0 |
661 | dd 500,2000,4,20,30,0,0,0 |
662 | dd 500,2000,4,20,0,8,0,0 |
662 | dd 500,2000,4,20,0,8,0,0 |
663 | dd 500,2000,10,0,0,4,0,0 |
663 | dd 500,2000,10,0,0,4,0,0 |
664 | dd 500,4000,0,30,0,0,0,0 |
664 | dd 500,4000,0,30,0,0,0,0 |
665 | dd 400,400,0,0,10,0,0,0 |
665 | dd 400,400,0,0,10,0,0,0 |
666 | dd 400,400,0,0,10,0,0,0 |
666 | dd 400,400,0,0,10,0,0,0 |
667 | dd 0,0,0,0,0,0,0,0 ;end of level |
667 | dd 0,0,0,0,0,0,0,0 ;end of level |
668 | ;level2 |
668 | ;level2 |
669 | dd 1,16000,0,30,0,0,0,0 ;one at start |
669 | dd 1,16000,0,30,0,0,0,0 ;one at start |
670 | dd 200,8000,0,20,0,0,0,0 |
670 | dd 200,8000,0,20,0,0,0,0 |
671 | dd 200,2000,0,10,0,8,0,0 |
671 | dd 200,2000,0,10,0,8,0,0 |
672 | dd 200,4000,0,10,0,0,0,0 |
672 | dd 200,4000,0,10,0,0,0,0 |
673 | dd 0,0,0,0,0,0,0,0 ;end of level |
673 | dd 0,0,0,0,0,0,0,0 ;end of level |
674 | ;level3 |
674 | ;level3 |
675 | dd 1,4000,0,20,30,8,0,0 ;one at start |
675 | dd 1,4000,0,20,30,8,0,0 ;one at start |
676 | dd 400,4000,10,10,20,6,0,0 |
676 | dd 400,4000,10,10,20,6,0,0 |
677 | dd 400,4000,0,20,10,2,0,0 |
677 | dd 400,4000,0,20,10,2,0,0 |
678 | dd 400,4000,10,10,20,0,0,0 |
678 | dd 400,4000,10,10,20,0,0,0 |
679 | dd 0,-1,0,0,0,0,0,0 ;end of game |
679 | dd 0,-1,0,0,0,0,0,0 ;end of game |
680 | 680 | ||
681 | 681 | ||
682 | newlocend: |
682 | newlocend: |
683 | mov [pathtime],0 |
683 | mov [pathtime],0 |
684 | inc [levelpart] |
684 | inc [levelpart] |
685 | jmp no_nextloc |
685 | jmp no_nextloc |
686 | 686 | ||
687 | endgame dd 0 |
687 | endgame dd 0 |
688 | objects dd 0 |
688 | objects dd 0 |
689 | endtest: |
689 | endtest: |
690 | cmp dword [edi+8],0 |
690 | cmp dword [edi+8],0 |
691 | jne no_free |
691 | jne no_free |
692 | ret |
692 | ret |
693 | no_free: |
693 | no_free: |
694 | mov [endgame],0 |
694 | mov [endgame],0 |
695 | inc [objects] |
695 | inc [objects] |
696 | ret |
696 | ret |
697 | 697 | ||
698 | 698 | ||
699 | no_nextloc: |
699 | no_nextloc: |
700 | mov [objects],0 |
700 | mov [objects],0 |
701 | mov [endgame],1 |
701 | mov [endgame],1 |
702 | readmas objmas,endtest |
702 | readmas objmas,endtest |
703 | cmp [endgame],1 |
703 | cmp [endgame],1 |
704 | jne no_end_lev ;no_nextloc |
704 | jne no_end_lev ;no_nextloc |
705 | 705 | ||
706 | mov ebp,[levelpart] |
706 | mov ebp,[levelpart] |
707 | shl ebp,5 |
707 | shl ebp,5 |
708 | add ebp,levels |
708 | add ebp,levels |
709 | mov eax,[ebp+4] |
709 | mov eax,[ebp+4] |
710 | cmp eax,dword 0 |
710 | cmp eax,dword 0 |
711 | je end_lev ;end of level |
711 | je end_lev ;end of level |
712 | cmp eax,dword -1 |
712 | cmp eax,dword -1 |
713 | je end_gm ;end of game |
713 | je end_gm ;end of game |
714 | 714 | ||
715 | no_end_lev: |
715 | no_end_lev: |
716 | 716 | ||
717 | cmp [num5],dword 0 |
717 | cmp [num5],dword 0 |
718 | je no_addsh |
718 | je no_addsh |
719 | cmp [ctime],dword 0 |
719 | cmp [ctime],dword 0 |
720 | jne no_addsh |
720 | jne no_addsh |
721 | cmp [lazer],dword 0 |
721 | cmp [lazer],dword 0 |
722 | je no_addsh |
722 | je no_addsh |
723 | findmas massive,findzero |
723 | findmas massive,findzero |
724 | ;in edi off to free element |
724 | ;in edi off to free element |
725 | jc close_app |
725 | jc close_app |
726 | mov eax,[shipx] |
726 | mov eax,[shipx] |
727 | mov [edi],eax |
727 | mov [edi],eax |
728 | mov eax,[shipy] |
728 | mov eax,[shipy] |
729 | mov [edi+4],eax |
729 | mov [edi+4],eax |
730 | mov [edi+8],dword 1 ;show |
730 | mov [edi+8],dword 1 ;show |
731 | mov [edi+12],dword 0 |
731 | mov [edi+12],dword 0 |
732 | mov [edi+16],dword -12 |
732 | mov [edi+16],dword -12 |
733 | mov [ctime],dword 8 ;wait for cannon |
733 | mov [ctime],dword 8 ;wait for cannon |
734 | dec [lazer] |
734 | dec [lazer] |
735 | no_addsh: |
735 | no_addsh: |
736 | 736 | ||
737 | cmp [num8],dword 0 |
737 | cmp [num8],dword 0 |
738 | je no_addplx |
738 | je no_addplx |
739 | cmp [xtime],dword 256-16 |
739 | cmp [xtime],dword 256-16 |
740 | jae no_addplx |
740 | jae no_addplx |
741 | cmp [plazma],0 |
741 | cmp [plazma],0 |
742 | je no_addplx |
742 | je no_addplx |
743 | findmas massive,findzero |
743 | findmas massive,findzero |
744 | ;in edi off to free element |
744 | ;in edi off to free element |
745 | jc close_app |
745 | jc close_app |
746 | mov eax,[shipx] |
746 | mov eax,[shipx] |
747 | mov [edi],eax |
747 | mov [edi],eax |
748 | mov eax,[shipy] |
748 | mov eax,[shipy] |
749 | mov [edi+4],eax |
749 | mov [edi+4],eax |
750 | mov [edi+8],dword 2 ;show |
750 | mov [edi+8],dword 2 ;show |
751 | add [xtime],dword 8 ;wait for cannon |
751 | add [xtime],dword 8 ;wait for cannon |
752 | cmp [xtime],dword 256 |
752 | cmp [xtime],dword 256 |
753 | jna okx |
753 | jna okx |
754 | mov [xtime],256 |
754 | mov [xtime],256 |
755 | okx: |
755 | okx: |
756 | mov [edi+12],dword 0 ;wait for cannon |
756 | mov [edi+12],dword 0 ;wait for cannon |
757 | mov [edi+16],dword -8 ;wait for cannon |
757 | mov [edi+16],dword -8 ;wait for cannon |
758 | dec [plazma] |
758 | dec [plazma] |
759 | no_addplx: |
759 | no_addplx: |
760 | 760 | ||
761 | 761 | ||
762 | 762 | ||
763 | cmp [num2],dword 0 |
763 | cmp [num2],dword 0 |
764 | je no_addsh2 |
764 | je no_addsh2 |
765 | cmp [xtime],dword 0 |
765 | cmp [xtime],dword 0 |
766 | jne no_addsh2 |
766 | jne no_addsh2 |
767 | cmp [plazma],0 |
767 | cmp [plazma],0 |
768 | je no_addsh2 |
768 | je no_addsh2 |
769 | mov eax,[shipy] |
769 | mov eax,[shipy] |
770 | mov [temp3],eax |
770 | mov [temp3],eax |
771 | mov [temp2],dword 5 |
771 | mov [temp2],dword 5 |
772 | loox2: |
772 | loox2: |
773 | mov [temp],dword 10 |
773 | mov [temp],dword 10 |
774 | loox: |
774 | loox: |
775 | findmas massive,findzero |
775 | findmas massive,findzero |
776 | ;in edi off to free element |
776 | ;in edi off to free element |
777 | jc close_app |
777 | jc close_app |
778 | random 25,eax |
778 | random 25,eax |
779 | mov ebp,eax |
779 | mov ebp,eax |
780 | sub eax,12 |
780 | sub eax,12 |
781 | add eax,[shipx] |
781 | add eax,[shipx] |
782 | mov [edi],eax |
782 | mov [edi],eax |
783 | shr ebp,3 |
783 | shr ebp,3 |
784 | random ebp,eax |
784 | random ebp,eax |
785 | neg eax |
785 | neg eax |
786 | add eax,[temp3] ;[shipy] |
786 | add eax,[temp3] ;[shipy] |
787 | mov [edi+4],eax |
787 | mov [edi+4],eax |
788 | mov [edi+8],dword 2 ;show hstar |
788 | mov [edi+8],dword 2 ;show hstar |
789 | random 5,eax |
789 | random 5,eax |
790 | sub eax,2 |
790 | sub eax,2 |
791 | mov [edi+12],eax ;show hstar |
791 | mov [edi+12],eax ;show hstar |
792 | random 7,eax |
792 | random 7,eax |
793 | sub eax,8 |
793 | sub eax,8 |
794 | mov [edi+16],eax ;show hstar |
794 | mov [edi+16],eax ;show hstar |
795 | dec [temp] |
795 | dec [temp] |
796 | jnz loox |
796 | jnz loox |
797 | sub [temp3],30 |
797 | sub [temp3],30 |
798 | dec [temp2] |
798 | dec [temp2] |
799 | jnz loox2 |
799 | jnz loox2 |
800 | mov [xtime],dword 256 ;wait for cannon |
800 | mov [xtime],dword 256 ;wait for cannon |
801 | sub [plazma],50 |
801 | sub [plazma],50 |
802 | no_addsh2: |
802 | no_addsh2: |
803 | 803 | ||
804 | 804 | ||
805 | cmp [num1],dword 0 |
805 | cmp [num1],dword 0 |
806 | je no_left |
806 | je no_left |
807 | sub dword [shipx],6 |
807 | sub dword [shipx],6 |
808 | no_left: |
808 | no_left: |
809 | 809 | ||
810 | cmp [num3],dword 0 |
810 | cmp [num3],dword 0 |
811 | je no_right |
811 | je no_right |
812 | add dword [shipx],6 |
812 | add dword [shipx],6 |
813 | no_right: |
813 | no_right: |
814 | 814 | ||
815 | ;ship correct |
815 | ;ship correct |
816 | cmp [shipx],5 |
816 | cmp [shipx],5 |
817 | jnl xl_ok |
817 | jnl xl_ok |
818 | mov [shipx],5 |
818 | mov [shipx],5 |
819 | xl_ok: |
819 | xl_ok: |
820 | cmp [shipx],603 |
820 | cmp [shipx],603 |
821 | jng xr_ok |
821 | jng xr_ok |
822 | mov [shipx],603 |
822 | mov [shipx],603 |
823 | xr_ok: |
823 | xr_ok: |
824 | 824 | ||
825 | 825 | ||
826 | ;clear scrbuf |
826 | ;clear scrbuf |
827 | mov edi,canvas+8 |
827 | mov edi,canvas+8 |
828 | cld |
828 | cld |
829 | mov ecx,640*440*3/4 |
829 | mov ecx,640*440*3/4 |
830 | mov eax,0 |
830 | mov eax,0 |
831 | rep stosd |
831 | rep stosd |
832 | 832 | ||
833 | compmas objmas,massive,compobr |
833 | compmas objmas,massive,compobr |
834 | 834 | ||
835 | readmas objmas,shipobjtest |
835 | readmas objmas,shipobjtest |
836 | readmas massive,shipguntest |
836 | readmas massive,shipguntest |
837 | 837 | ||
838 | readmas objmas,showobjmas |
838 | readmas objmas,showobjmas |
839 | readmas objmas,moveobjmas |
839 | readmas objmas,moveobjmas |
840 | 840 | ||
841 | readmas massive,showmas |
841 | readmas massive,showmas |
842 | readmas massive,movemas |
842 | readmas massive,movemas |
843 | readmas massive,delfarshoot |
843 | readmas massive,delfarshoot |
844 | ; findmas massive,findzero |
844 | ; findmas massive,findzero |
845 | ;in edi off to free element |
845 | ;in edi off to free element |
846 | ; jc close_app |
846 | ; jc close_app |
847 | 847 | ||
848 | aimgtoimg ship,[shipx],[shipy],canvas,0x0 |
848 | aimgtoimg ship,[shipx],[shipy],canvas,0x0 |
849 | 849 | ||
850 | drawfbox 150,5,64,5,0x000000 |
850 | drawfbox 150,5,64,5,0x000000 |
851 | mov eax,[xtime] |
851 | mov eax,[xtime] |
852 | sub eax,256 |
852 | sub eax,256 |
853 | neg eax |
853 | neg eax |
854 | shr eax,2 |
854 | shr eax,2 |
855 | drawfbox 150,5,eax,5,0x0000ff |
855 | drawfbox 150,5,eax,5,0x0000ff |
856 | 856 | ||
857 | drawfbox 150,12,64,5,0x000000 |
857 | drawfbox 150,12,64,5,0x000000 |
858 | mov eax,[ctime] |
858 | mov eax,[ctime] |
859 | sub eax,8 |
859 | sub eax,8 |
860 | neg eax |
860 | neg eax |
861 | shl eax,3 |
861 | shl eax,3 |
862 | drawfbox 150,12,eax,5,0xffff00 |
862 | drawfbox 150,12,eax,5,0xffff00 |
863 | 863 | ||
864 | drawfbox 220,2,6*5+2 ,9,cl_Grey |
864 | drawfbox 220,2,6*5+2 ,9,cl_Grey |
865 | outcount [plazma],221,3,cl_Blue,5*65536 |
865 | outcount [plazma],221,3,cl_Blue,5*65536 |
866 | drawfbox 220,11,6*5+2 ,9,cl_Grey |
866 | drawfbox 220,11,6*5+2 ,9,cl_Grey |
867 | outcount [lazer],221,12,0xffff00,5*65536 |
867 | outcount [lazer],221,12,0xffff00,5*65536 |
868 | 868 | ||
869 | 869 | ||
870 | drawfbox 280,6,6*5+2 ,9,cl_Grey |
870 | drawfbox 280,6,6*5+2 ,9,cl_Grey |
871 | outcount [gship],281,7,cl_Green,5*65536 |
871 | outcount [gship],281,7,cl_Green,5*65536 |
872 | drawfbox 320,6,6*5+2 ,9,cl_Grey |
872 | drawfbox 320,6,6*5+2 ,9,cl_Grey |
873 | outcount [bship],321,7,cl_Blue,5*65536 |
873 | outcount [bship],321,7,cl_Blue,5*65536 |
874 | drawfbox 360,6,6*5+2 ,9,cl_Grey |
874 | drawfbox 360,6,6*5+2 ,9,cl_Grey |
875 | outcount [boxget],361,7,0xffaa00,5*65536 |
875 | outcount [boxget],361,7,0xffaa00,5*65536 |
876 | 876 | ||
877 | drawfbox 400,2,6*5+2 ,9,cl_Grey |
877 | drawfbox 400,2,6*5+2 ,9,cl_Grey |
878 | outcount [objects],401,2,0x00ff00,5*65536 |
878 | outcount [objects],401,2,0x00ff00,5*65536 |
879 | drawfbox 400,11,6*5+2 ,9,cl_Grey |
879 | drawfbox 400,11,6*5+2 ,9,cl_Grey |
880 | outcount [energy],401,12,0xff0000,5*65536 |
880 | outcount [energy],401,12,0xff0000,5*65536 |
881 | 881 | ||
882 | drawfbox 450,11,6*5+2 ,9,cl_Grey |
882 | drawfbox 450,11,6*5+2 ,9,cl_Grey |
883 | outcount [score],451,12,0xffff00,5*65536 |
883 | outcount [score],451,12,0xffff00,5*65536 |
884 | 884 | ||
885 | 885 | ||
886 | jmp still |
886 | jmp still |
887 | 887 | ||
888 | red: |
888 | red: |
889 | call draw_window |
889 | call draw_window |
890 | jmp still |
890 | jmp still |
891 | 891 | ||
892 | key: ; key |
892 | key: ; key |
893 | mov eax,2 |
893 | mov eax,2 |
894 | mcall ; read (eax=2) |
894 | mcall ; read (eax=2) |
895 | 895 | ||
896 | shr eax,8 |
896 | shr eax,8 |
897 | and eax,0xff |
897 | and eax,0xff |
898 | mov ah,al |
898 | mov ah,al |
899 | 899 | ||
900 | cmp ah,153 |
900 | cmp ah,153 |
901 | jne no_pause |
901 | jne no_pause |
902 | not [pause_on] |
902 | not [pause_on] |
903 | jmp still |
903 | jmp still |
904 | no_pause: |
904 | no_pause: |
905 | 905 | ||
906 | 906 | ||
907 | cmp ah,76 |
907 | cmp ah,76 |
908 | jne no_num5d |
908 | jne no_num5d |
909 | mov [num5],1 |
909 | mov [num5],1 |
910 | jmp still |
910 | jmp still |
911 | no_num5d: |
911 | no_num5d: |
912 | cmp ah,204 |
912 | cmp ah,204 |
913 | jne no_num5u |
913 | jne no_num5u |
914 | mov [num5],0 |
914 | mov [num5],0 |
915 | jmp still |
915 | jmp still |
916 | no_num5u: |
916 | no_num5u: |
917 | 917 | ||
918 | cmp ah,80 |
918 | cmp ah,80 |
919 | jne no_num2d |
919 | jne no_num2d |
920 | mov [num2],1 |
920 | mov [num2],1 |
921 | jmp still |
921 | jmp still |
922 | no_num2d: |
922 | no_num2d: |
923 | cmp ah,208 |
923 | cmp ah,208 |
924 | jne no_num2u |
924 | jne no_num2u |
925 | mov [num2],0 |
925 | mov [num2],0 |
926 | jmp still |
926 | jmp still |
927 | no_num2u: |
927 | no_num2u: |
928 | 928 | ||
929 | cmp ah,79 ;key_Space 85 exit |
929 | cmp ah,79 ;key_Space 85 exit |
930 | jne no_num1d |
930 | jne no_num1d |
931 | mov [num1],1 |
931 | mov [num1],1 |
932 | jmp still |
932 | jmp still |
933 | no_num1d: |
933 | no_num1d: |
934 | cmp ah,207 ;key_Space 85 exit |
934 | cmp ah,207 ;key_Space 85 exit |
935 | jne no_num1u |
935 | jne no_num1u |
936 | mov [num1],0 |
936 | mov [num1],0 |
937 | jmp still |
937 | jmp still |
938 | no_num1u: |
938 | no_num1u: |
939 | 939 | ||
940 | cmp ah,81 ;key_Space 85 exit |
940 | cmp ah,81 ;key_Space 85 exit |
941 | jne no_num3d |
941 | jne no_num3d |
942 | mov [num3],1 |
942 | mov [num3],1 |
943 | jmp still |
943 | jmp still |
944 | no_num3d: |
944 | no_num3d: |
945 | cmp ah,209 ;key_Space 85 exit |
945 | cmp ah,209 ;key_Space 85 exit |
946 | jne no_num3u |
946 | jne no_num3u |
947 | mov [num3],0 |
947 | mov [num3],0 |
948 | jmp still |
948 | jmp still |
949 | no_num3u: |
949 | no_num3u: |
950 | 950 | ||
951 | cmp ah,72 ;key_Space 85 exit |
951 | cmp ah,72 ;key_Space 85 exit |
952 | jne no_num8d |
952 | jne no_num8d |
953 | mov [num8],1 |
953 | mov [num8],1 |
954 | jmp still |
954 | jmp still |
955 | no_num8d: |
955 | no_num8d: |
956 | cmp ah,200 ;key_Space 85 exit |
956 | cmp ah,200 ;key_Space 85 exit |
957 | jne no_num8u |
957 | jne no_num8u |
958 | mov [num8],0 |
958 | mov [num8],0 |
959 | jmp still |
959 | jmp still |
960 | no_num8u: |
960 | no_num8u: |
961 | 961 | ||
962 | jmp still ; not testing |
962 | jmp still ; not testing |
963 | 963 | ||
964 | button: ; button |
964 | button: ; button |
965 | mov eax,17 ; get id |
965 | mov eax,17 ; get id |
966 | mcall |
966 | mcall |
967 | cmp ah,1 ; button id=1 ? |
967 | cmp ah,1 ; button id=1 ? |
968 | jne noclose |
968 | jne noclose |
969 | close_app: |
969 | close_app: |
970 | mov eax,-1 ; close this program |
970 | mov eax,-1 ; close this program |
971 | mcall |
971 | mcall |
972 | noclose: |
972 | noclose: |
973 | jmp still |
973 | jmp still |
974 | 974 | ||
975 | draw_window: |
975 | draw_window: |
976 | 976 | ||
977 | mcall 12,1 ;start window redraw |
977 | mcall 12,1 ;start window redraw |
978 | mcall 0, <40, 640+9>, <40, 440+26>, 0x14000000,, wtitle |
978 | mcall 0, <40, 640+9>, <40, 440+26>, 0x14000000,, wtitle |
979 | mcall 12,2 ;end window redraw |
979 | mcall 12,2 ;end window redraw |
980 | ; setimg 5,22,img_area |
980 | ; setimg 5,22,img_area |
981 | 981 | ||
982 | ret |
982 | ret |
983 | 983 | ||
984 | ;********************** |
984 | ;********************** |
985 | ; Game Over process |
985 | ; Game Over process |
986 | ;********************** |
986 | ;********************** |
987 | 987 | ||
988 | game_over: |
988 | game_over: |
989 | ; close |
989 | ; close |
990 | call draw_gowindow |
990 | call draw_gowindow |
991 | stillgo: |
991 | stillgo: |
992 | wtevent redgo,keygo,buttongo |
992 | wtevent redgo,keygo,buttongo |
993 | jmp stillgo |
993 | jmp stillgo |
994 | redgo: |
994 | redgo: |
995 | call draw_gowindow |
995 | call draw_gowindow |
996 | jmp stillgo |
996 | jmp stillgo |
997 | keygo: |
997 | keygo: |
998 | mov eax,2 |
998 | mov eax,2 |
999 | mcall |
999 | mcall |
1000 | jmp stillgo |
1000 | jmp stillgo |
1001 | buttongo: |
1001 | buttongo: |
1002 | mov eax,17 ; get id |
1002 | mov eax,17 ; get id |
1003 | mcall |
1003 | mcall |
1004 | cmp ah,1 |
1004 | cmp ah,1 |
1005 | je close_app |
1005 | je close_app |
1006 | cmp ah,4 |
1006 | cmp ah,4 |
1007 | je close_app |
1007 | je close_app |
1008 | cmp ah,5 |
1008 | cmp ah,5 |
1009 | je main_menu |
1009 | je main_menu |
1010 | cmp ah,7 |
1010 | cmp ah,7 |
1011 | je restart_lev |
1011 | je restart_lev |
1012 | jmp stillgo |
1012 | jmp stillgo |
1013 | 1013 | ||
1014 | restart_lev: |
1014 | restart_lev: |
1015 | mov [pathtime],0 |
1015 | mov [pathtime],0 |
1016 | 1016 | ||
1017 | prevpart: |
1017 | prevpart: |
1018 | mov ebp,[levelpart] |
1018 | mov ebp,[levelpart] |
1019 | shl ebp,5 |
1019 | shl ebp,5 |
1020 | add ebp,levels |
1020 | add ebp,levels |
1021 | mov eax,[ebp] |
1021 | mov eax,[ebp] |
1022 | cmp eax,dword 1 |
1022 | cmp eax,dword 1 |
1023 | je rest ;end of level |
1023 | je rest ;end of level |
1024 | dec [levelpart] |
1024 | dec [levelpart] |
1025 | jmp prevpart |
1025 | jmp prevpart |
1026 | 1026 | ||
1027 | 1027 | ||
1028 | rest: |
1028 | rest: |
1029 | ;massives reset - clear massives |
1029 | ;massives reset - clear massives |
1030 | mov edi,massive+8 |
1030 | mov edi,massive+8 |
1031 | cld |
1031 | cld |
1032 | mov ecx,massize*elemsize/4 |
1032 | mov ecx,massize*elemsize/4 |
1033 | mov eax,0 |
1033 | mov eax,0 |
1034 | rep stosd |
1034 | rep stosd |
1035 | 1035 | ||
1036 | mov edi,objmas+8 |
1036 | mov edi,objmas+8 |
1037 | cld |
1037 | cld |
1038 | mov ecx,omassize*oelemsize/4 |
1038 | mov ecx,omassize*oelemsize/4 |
1039 | mov eax,0 |
1039 | mov eax,0 |
1040 | rep stosd |
1040 | rep stosd |
1041 | 1041 | ||
1042 | ;counters reset |
1042 | ;counters reset |
1043 | mov [boxget],0 |
1043 | mov [boxget],0 |
1044 | mov [gship],0 |
1044 | mov [gship],0 |
1045 | mov [bship],0 |
1045 | mov [bship],0 |
1046 | 1046 | ||
1047 | ;ship reset |
1047 | ;ship reset |
1048 | mov [energy],100 |
1048 | mov [energy],100 |
1049 | mov [shipx],300 |
1049 | mov [shipx],300 |
1050 | mov [shipy],400 |
1050 | mov [shipy],400 |
1051 | mov [lazer],1000 |
1051 | mov [lazer],1000 |
1052 | mov [plazma],500 |
1052 | mov [plazma],500 |
1053 | 1053 | ||
1054 | 1054 | ||
1055 | ; reset keyboard |
1055 | ; reset keyboard |
1056 | mov [num1],0 |
1056 | mov [num1],0 |
1057 | mov [num5],0 |
1057 | mov [num5],0 |
1058 | mov [num3],0 |
1058 | mov [num3],0 |
1059 | mov [num2],0 |
1059 | mov [num2],0 |
1060 | mov [num8],0 |
1060 | mov [num8],0 |
1061 | jmp start_game |
1061 | jmp start_game |
1062 | 1062 | ||
1063 | draw_gowindow: |
1063 | draw_gowindow: |
1064 | startwd |
1064 | startwd |
1065 | call draw_window |
1065 | call draw_window |
1066 | mcall 9,proc_info,-1 |
1066 | mcall 9,proc_info,-1 |
1067 | test [proc_info+process_information.wnd_state], 0x04 |
1067 | test [proc_info+process_information.wnd_state], 0x04 |
1068 | jz @f |
1068 | jz @f |
1069 | ret |
1069 | ret |
1070 | @@: |
1070 | @@: |
1071 | drawfbox 170,160,300,120,cl_Grey |
1071 | drawfbox 170,160,300,120,cl_Grey |
1072 | drawlbut 180,260,80,14,'(X) EXIT',4,0x990000,cl_Black |
1072 | drawlbut 180,260,80,14,'EXIT',4,0x990000,cl_Black |
1073 | drawlbut 280,260,80,14,' |
1073 | drawlbut 280,260,80,14,'MENU',5,0x990000,cl_Black |
1074 | drawlbut 380,260,80,14,'RESTART',7,0x990000,cl_Black |
1074 | drawlbut 380,260,80,14,'RESTART',7,0x990000,cl_Black |
1075 | 1075 | ||
1076 | label 280,200,' GAME OVER ',cl_Black |
1076 | label 280,200,' GAME OVER ',cl_Black |
1077 | endwd |
1077 | endwd |
1078 | ret |
1078 | ret |
1079 | 1079 | ||
1080 | 1080 | ||
1081 | ;********************** |
1081 | ;********************** |
1082 | ; End level process |
1082 | ; End level process |
1083 | ;********************** |
1083 | ;********************** |
1084 | 1084 | ||
1085 | end_lev: |
1085 | end_lev: |
1086 | ; close |
1086 | ; close |
1087 | call draw_scorewindow |
1087 | call draw_scorewindow |
1088 | stilleg: |
1088 | stilleg: |
1089 | wtevent redeg,keyeg,buttoneg |
1089 | wtevent redeg,keyeg,buttoneg |
1090 | jmp stilleg |
1090 | jmp stilleg |
1091 | redeg: |
1091 | redeg: |
1092 | call draw_scorewindow |
1092 | call draw_scorewindow |
1093 | jmp stilleg |
1093 | jmp stilleg |
1094 | keyeg: |
1094 | keyeg: |
1095 | mov eax,2 |
1095 | mov eax,2 |
1096 | mcall |
1096 | mcall |
1097 | jmp stilleg |
1097 | jmp stilleg |
1098 | buttoneg: |
1098 | buttoneg: |
1099 | mov eax,17 ; get id |
1099 | mov eax,17 ; get id |
1100 | mcall |
1100 | mcall |
1101 | cmp ah,1 |
1101 | cmp ah,1 |
1102 | je close_app |
1102 | je close_app |
1103 | cmp ah,2 |
1103 | cmp ah,2 |
1104 | je next_lev |
1104 | je next_lev |
1105 | cmp ah,3 |
1105 | cmp ah,3 |
1106 | je help |
1106 | je help |
1107 | cmp ah,4 |
1107 | cmp ah,4 |
1108 | je close_app |
1108 | je close_app |
1109 | cmp ah,5 |
1109 | cmp ah,5 |
1110 | je main_menu |
1110 | je main_menu |
1111 | jmp stilleg |
1111 | jmp stilleg |
1112 | 1112 | ||
1113 | next_lev: |
1113 | next_lev: |
1114 | mov [pathtime],0 |
1114 | mov [pathtime],0 |
1115 | inc [levelpart] |
1115 | inc [levelpart] |
1116 | 1116 | ||
1117 | ;ship reset |
1117 | ;ship reset |
1118 | mov [energy],100 |
1118 | mov [energy],100 |
1119 | mov [shipx],300 |
1119 | mov [shipx],300 |
1120 | mov [shipy],400 |
1120 | mov [shipy],400 |
1121 | mov [lazer],1000 |
1121 | mov [lazer],1000 |
1122 | mov [plazma],500 |
1122 | mov [plazma],500 |
1123 | 1123 | ||
1124 | ;counters reset |
1124 | ;counters reset |
1125 | mov [boxget],0 |
1125 | mov [boxget],0 |
1126 | mov [gship],0 |
1126 | mov [gship],0 |
1127 | mov [bship],0 |
1127 | mov [bship],0 |
1128 | 1128 | ||
1129 | ; reset keyboard |
1129 | ; reset keyboard |
1130 | mov [num1],0 |
1130 | mov [num1],0 |
1131 | mov [num5],0 |
1131 | mov [num5],0 |
1132 | mov [num3],0 |
1132 | mov [num3],0 |
1133 | mov [num2],0 |
1133 | mov [num2],0 |
1134 | mov [num8],0 |
1134 | mov [num8],0 |
1135 | jmp start_game |
1135 | jmp start_game |
1136 | 1136 | ||
1137 | draw_scorewindow: |
1137 | draw_scorewindow: |
1138 | call draw_window |
1138 | call draw_window |
1139 | mcall 9,proc_info,-1 |
1139 | mcall 9,proc_info,-1 |
1140 | test [proc_info+process_information.wnd_state], 0x04 |
1140 | test [proc_info+process_information.wnd_state], 0x04 |
1141 | jz @f |
1141 | jz @f |
1142 | ret |
1142 | ret |
1143 | @@: |
1143 | @@: |
1144 | startwd |
1144 | startwd |
1145 | drawfbox 170,130,300,190,cl_Grey |
1145 | drawfbox 170,130,300,190,cl_Grey |
1146 | drawlbut 180,300,80,14,'(X) EXIT',4,0x990000,cl_Black |
1146 | drawlbut 180,300,80,14,'(X) EXIT',4,0x990000,cl_Black |
1147 | drawlbut 280,300,80,14,' |
1147 | drawlbut 280,300,80,14,' |
1148 | drawlbut 380,300,80,14,'NEXT >>',2,0x990000,cl_Black |
1148 | drawlbut 380,300,80,14,'NEXT >>',2,0x990000,cl_Black |
1149 | 1149 | ||
1150 | setimg 180,140,warship1 |
1150 | setimg 180,140,warship1 |
1151 | outcount [bship],241,151,cl_Blue,5*65536 |
1151 | outcount [bship],241,151,cl_Blue,5*65536 |
1152 | 1152 | ||
1153 | setimg 180,180,warship2 |
1153 | setimg 180,180,warship2 |
1154 | outcount [gship],241,191,cl_Green,5*65536 |
1154 | outcount [gship],241,191,cl_Green,5*65536 |
1155 | 1155 | ||
1156 | setimg 180,220,meteor |
1156 | setimg 180,220,meteor |
1157 | setimg 180,260,box |
1157 | setimg 180,260,box |
1158 | outcount [boxget],241,271,0xbbbb00,5*65536 |
1158 | outcount [boxget],241,271,0xbbbb00,5*65536 |
1159 | endwd |
1159 | endwd |
1160 | ret |
1160 | ret |
1161 | 1161 | ||
1162 | 1162 | ||
1163 | ;********************** |
1163 | ;********************** |
1164 | ; End of game process |
1164 | ; End of game process |
1165 | ;********************** |
1165 | ;********************** |
1166 | 1166 | ||
1167 | end_gm: |
1167 | end_gm: |
1168 | mov [pathtime],0 |
1168 | mov [pathtime],0 |
1169 | call draw_window |
1169 | call draw_window |
1170 | label 200 ,8,'YOU WIN PRESS ANY KEY TO EXIT',cl_White+font_Big |
1170 | label 200 ,8,'YOU WIN PRESS ANY KEY TO EXIT',cl_White+font_Big |
1171 | 1171 | ||
1172 | stilleg2: |
1172 | stilleg2: |
1173 | ; scevent redeg2,keyeg2,buttoneg2 |
1173 | ; scevent redeg2,keyeg2,buttoneg2 |
1174 | timeevent 1,no_event2,redeg2,keyeg2,buttoneg2 |
1174 | timeevent 1,no_event2,redeg2,keyeg2,buttoneg2 |
1175 | 1175 | ||
1176 | no_event2: |
1176 | no_event2: |
1177 | setimg 5,21,canvas |
1177 | setimg 5,21,canvas |
1178 | 1178 | ||
1179 | ;clear scrbuf |
1179 | ;clear scrbuf |
1180 | mov edi,canvas+8 |
1180 | mov edi,canvas+8 |
1181 | cld |
1181 | cld |
1182 | mov ecx,640*440*3/4 |
1182 | mov ecx,640*440*3/4 |
1183 | mov eax,0 |
1183 | mov eax,0 |
1184 | rep stosd |
1184 | rep stosd |
1185 | 1185 | ||
1186 | aimgtoimg ship,320,220,canvas,0x0 |
1186 | aimgtoimg ship,320,220,canvas,0x0 |
1187 | 1187 | ||
1188 | readmas massive,endshowmas |
1188 | readmas massive,endshowmas |
1189 | readmas massive,endmovemas |
1189 | readmas massive,endmovemas |
1190 | readmas massive,delfarshoot |
1190 | readmas massive,delfarshoot |
1191 | ; findmas massive,findzero |
1191 | ; findmas massive,findzero |
1192 | ;in edi off to free element |
1192 | ;in edi off to free element |
1193 | ; jc close_app |
1193 | ; jc close_app |
1194 | 1194 | ||
1195 | inc [pathtime] |
1195 | inc [pathtime] |
1196 | cmp [pathtime],30 |
1196 | cmp [pathtime],30 |
1197 | jne no_firework |
1197 | jne no_firework |
1198 | mov [pathtime],0 |
1198 | mov [pathtime],0 |
1199 | random 400,eax |
1199 | random 400,eax |
1200 | mov [temp3],eax |
1200 | mov [temp3],eax |
1201 | random 600,eax |
1201 | random 600,eax |
1202 | mov [temp2],eax |
1202 | mov [temp2],eax |
1203 | mov [temp],dword 8;10 |
1203 | mov [temp],dword 8;10 |
1204 | xloox: |
1204 | xloox: |
1205 | findmas massive,findzero |
1205 | findmas massive,findzero |
1206 | ;in edi off to free element |
1206 | ;in edi off to free element |
1207 | jc close_app |
1207 | jc close_app |
1208 | 1208 | ||
1209 | mov eax,[temp2] ;[shipx] |
1209 | mov eax,[temp2] ;[shipx] |
1210 | mov [edi],eax |
1210 | mov [edi],eax |
1211 | mov eax,[temp3] ;[shipy] |
1211 | mov eax,[temp3] ;[shipy] |
1212 | mov [edi+4],eax |
1212 | mov [edi+4],eax |
1213 | mov [edi+8],dword 2 ;show hstar |
1213 | mov [edi+8],dword 2 ;show hstar |
1214 | rerand: |
1214 | rerand: |
1215 | random 5,eax |
1215 | random 5,eax |
1216 | sub eax,2 |
1216 | sub eax,2 |
1217 | cmp eax,0 |
1217 | cmp eax,0 |
1218 | je rerand |
1218 | je rerand |
1219 | mov [edi+12],eax ;show hstar |
1219 | mov [edi+12],eax ;show hstar |
1220 | rerand2: |
1220 | rerand2: |
1221 | random 7,eax |
1221 | random 7,eax |
1222 | sub eax,3 |
1222 | sub eax,3 |
1223 | cmp eax,0 |
1223 | cmp eax,0 |
1224 | je rerand2 |
1224 | je rerand2 |
1225 | mov [edi+16],eax ;show hstar |
1225 | mov [edi+16],eax ;show hstar |
1226 | dec [temp] |
1226 | dec [temp] |
1227 | jnz xloox |
1227 | jnz xloox |
1228 | no_firework: |
1228 | no_firework: |
1229 | jmp stilleg2 |
1229 | jmp stilleg2 |
1230 | 1230 | ||
1231 | redeg2: |
1231 | redeg2: |
1232 | jmp end_gm ;stilleg2 |
1232 | jmp end_gm ;stilleg2 |
1233 | keyeg2: |
1233 | keyeg2: |
1234 | mov eax,2 |
1234 | mov eax,2 |
1235 | mcall |
1235 | mcall |
1236 | jmp main_menu |
1236 | jmp main_menu |
1237 | buttoneg2: |
1237 | buttoneg2: |
1238 | mov eax,17 ; get id |
1238 | mov eax,17 ; get id |
1239 | mcall |
1239 | mcall |
1240 | jmp stilleg2 |
1240 | jmp stilleg2 |
1241 | 1241 | ||
1242 | 1242 | ||
1243 | 1243 | ||
1244 | 1244 | ||
1245 | 1245 | ||
1246 | 1246 | ||
1247 | ; DATA AREA |
1247 | ; DATA AREA |
1248 | IM_END: |
1248 | IM_END: |
1249 | ;global |
1249 | ;global |
1250 | pause_on dd 0 |
1250 | pause_on dd 0 |
1251 | 1251 | ||
1252 | ;massive |
1252 | ;massive |
1253 | shipx dd 300 |
1253 | shipx dd 300 |
1254 | shipy dd 400 |
1254 | shipy dd 400 |
1255 | 1255 | ||
1256 | ;guns |
1256 | ;guns |
1257 | lazer dd 1000 |
1257 | lazer dd 1000 |
1258 | plazma dd 500 |
1258 | plazma dd 500 |
1259 | 1259 | ||
1260 | ;keys |
1260 | ;keys |
1261 | num1 dd 0 |
1261 | num1 dd 0 |
1262 | num5 dd 0 |
1262 | num5 dd 0 |
1263 | num3 dd 0 |
1263 | num3 dd 0 |
1264 | num2 dd 0 |
1264 | num2 dd 0 |
1265 | num8 dd 0 |
1265 | num8 dd 0 |
1266 | 1266 | ||
1267 | ;enemy countres |
1267 | ;enemy countres |
1268 | gship dd 0 |
1268 | gship dd 0 |
1269 | bship dd 0 |
1269 | bship dd 0 |
1270 | boxget dd 0 |
1270 | boxget dd 0 |
1271 | 1271 | ||
1272 | energy dd 100 |
1272 | energy dd 100 |
1273 | score dd 0 |
1273 | score dd 0 |
1274 | 1274 | ||
1275 | ;delay for cannon |
1275 | ;delay for cannon |
1276 | ctime dd 0 |
1276 | ctime dd 0 |
1277 | ;delay for nuke gun |
1277 | ;delay for nuke gun |
1278 | xtime dd 0 |
1278 | xtime dd 0 |
1279 | ;path time |
1279 | ;path time |
1280 | pathtime dd 0 |
1280 | pathtime dd 0 |
1281 | ; |
1281 | ; |
1282 | temp dd 0 |
1282 | temp dd 0 |
1283 | temp2 dd 0 |
1283 | temp2 dd 0 |
1284 | temp3 dd 0 |
1284 | temp3 dd 0 |
1285 | temp4 dd 0 |
1285 | temp4 dd 0 |
1286 | otv dd 0 |
1286 | otv dd 0 |
1287 | 1287 | ||
1288 | ;for collimg |
1288 | ;for collimg |
1289 | imgsize: |
1289 | imgsize: |
1290 | dd 32 |
1290 | dd 32 |
1291 | dd 32 |
1291 | dd 32 |
1292 | 1292 | ||
1293 | ;massive: |
1293 | ;massive: |
1294 | ;dd 400 ;elements num |
1294 | ;dd 400 ;elements num |
1295 | ;dd 20 ;size of element in bytes |
1295 | ;dd 20 ;size of element in bytes |
1296 | ;rb 400*20 |
1296 | ;rb 400*20 |
1297 | 1297 | ||
1298 | keymap: |
1298 | keymap: |
1299 | rb 1000 |
1299 | rb 1000 |
1300 | 1300 | ||
1301 | wtitle db 'Phenix for KolibriOS', 0 |
1301 | wtitle db 'Phenix for KolibriOS', 0 |
1302 | 1302 | ||
1303 | ;gif_file_area ~21500 |
1303 | ;gif_file_area ~21500 |
1304 | gif_file_area2: |
1304 | gif_file_area2: |
1305 | file 'phenix.gif' |
1305 | file 'phenix.gif' |
1306 | gif_file_area: |
1306 | gif_file_area: |
1307 | file 'star2.gif';include gif file |
1307 | file 'star2.gif';include gif file |
1308 | img_area: |
1308 | img_area: |
1309 | rb 256*64*3+8 |
1309 | rb 256*64*3+8 |
1310 | ship: |
1310 | ship: |
1311 | rb 32*32*3+8 |
1311 | rb 32*32*3+8 |
1312 | shoot: |
1312 | shoot: |
1313 | rb 32*32*3+8 |
1313 | rb 32*32*3+8 |
1314 | warship1: |
1314 | warship1: |
1315 | rb 32*32*3+8 |
1315 | rb 32*32*3+8 |
1316 | warship2: |
1316 | warship2: |
1317 | rb 32*32*3+8 |
1317 | rb 32*32*3+8 |
1318 | meteor: |
1318 | meteor: |
1319 | rb 32*32*3+8 |
1319 | rb 32*32*3+8 |
1320 | star: |
1320 | star: |
1321 | rb 32*32*3+8 |
1321 | rb 32*32*3+8 |
1322 | star2: |
1322 | star2: |
1323 | rb 32*32*3+8 |
1323 | rb 32*32*3+8 |
1324 | star3: |
1324 | star3: |
1325 | rb 32*32*3+8 |
1325 | rb 32*32*3+8 |
1326 | box: |
1326 | box: |
1327 | rb 32*32*3+8 |
1327 | rb 32*32*3+8 |
1328 | 1328 | ||
1329 | IncludeUGlobals |
1329 | IncludeUGlobals |
1330 | 1330 | ||
1331 | massive: |
1331 | massive: |
1332 | rd massize ;elements num |
1332 | rd massize ;elements num |
1333 | rd elemsize ;size of element in bytes |
1333 | rd elemsize ;size of element in bytes |
1334 | rb massize*elemsize |
1334 | rb massize*elemsize |
1335 | 1335 | ||
1336 | objmas: |
1336 | objmas: |
1337 | rd omassize ;elements num |
1337 | rd omassize ;elements num |
1338 | rd oelemsize ;size of element in bytes |
1338 | rd oelemsize ;size of element in bytes |
1339 | rb omassize*oelemsize |
1339 | rb omassize*oelemsize |
1340 | 1340 | ||
1341 | canvas: |
1341 | canvas: |
1342 | canvas_x: |
1342 | canvas_x: |
1343 | rd 1 |
1343 | rd 1 |
1344 | canvas_y: |
1344 | canvas_y: |
1345 | rd 1 |
1345 | rd 1 |
1346 | rb (640*440*3)+2000 |
1346 | rb (640*440*3)+2000 |
1347 | 1347 | ||
1348 | proc_info: |
1348 | proc_info: |
1349 | rb 1024 |
1349 | rb 1024 |
1350 | I_END:40,>40,> |
1350 | I_END:40,>40,> |
1351 | 1351 | ||
1352 | > |
1352 | > |
1353 | 1353 | ||
1354 | > |
1354 | > |