Rev 8485 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8485 | Rev 8488 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | WND_COLOR equ 0x54000000 |
1 | ; Author: RU095@YANDEX.RU |
Line 2... | Line 2... | ||
2 | 2 | ||
3 | use32 |
3 | use32 |
4 | org 0x0 |
4 | org 0x0 |
5 | db 'MENUET01' |
5 | db 'MENUET01' |
Line 11... | Line 11... | ||
11 | dd 0x0 |
11 | dd 0x0 |
12 | dd 0x0 |
12 | dd 0x0 |
13 | 13 | ||
Line 14... | Line 14... | ||
14 | include 'lang.inc' |
14 | include 'lang.inc' |
15 | include '..\..\macros.inc' ; макросы облегчают жизнь ассемблерщиков! |
15 | include '..\..\macros.inc' ; ¬ ªà®áë ®¡«¥£ç îâ ¦¨§ì áᥬ¡«¥à騪®¢! |
Line 16... | Line 16... | ||
16 | 16 | ||
17 | include 'ASCL.INC' |
17 | include 'ASCL.INC' |
Line 18... | Line -... | ||
18 | include 'ASCGL.INC' |
- | |
- | 18 | include 'ASCGL.INC' |
|
Line 19... | Line 19... | ||
19 | 19 | ||
20 | 20 | WND_COLOR equ 0x74000000 |
|
Line 21... | Line 21... | ||
21 | 21 | ||
Line 22... | Line 22... | ||
22 | gif_hash_offset = gif_hash_area |
22 | gif_hash_offset = gif_hash_area |
23 | COLOR_ORDER equ MENUETOS |
23 | COLOR_ORDER equ MENUETOS |
24 | 24 | ||
25 | DELAY equ 2 ; Задержка перед переходом к следующему кадру в мсек |
25 | DELAY equ 2 ; ¤¥à¦ª ¯¥à¥¤ ¯¥à¥å®¤®¬ ª á«¥¤ãî饬㠪 ¤àã ¢ ¬á¥ª |
26 | 26 | ||
27 | START: |
27 | START: |
28 | ;**************** |
28 | ;**************** |
29 | ; Открываем фаил |
29 | ; âªàë¢ ¥¬ ä ¨« |
Line 61... | Line 61... | ||
61 | call draw_subimage |
61 | call draw_subimage |
62 | jmp still |
62 | jmp still |
63 | 63 | ||
Line 64... | Line 64... | ||
64 | key: |
64 | key: |
65 | ; блока движения персонажа |
65 | ; ¡«®ª ¤¢¨¦¥¨ï ¯¥àá® ¦ |
66 | mov eax,2 |
66 | mov eax,2 |
67 | int 0x40 |
67 | int 0x40 |
68 | cmp ah, 179 ; право 4 |
68 | cmp ah, 179 ; ¯à ¢® 4 |
69 | je go_mov |
69 | je go_mov |
70 | cmp ah, 176 ; лево 1 |
70 | cmp ah, 176 ; «¥¢® 1 |
71 | je go_mov |
71 | je go_mov |
72 | cmp ah, 178 ; верх 3 |
72 | cmp ah, 178 ; ¢¥àå 3 |
73 | je go_mov |
73 | je go_mov |
74 | cmp ah, 177 ; низ 2 |
74 | cmp ah, 177 ; ¨§ 2 |
75 | je go_mov |
75 | je go_mov |
76 | cmp ah, 120 ; низ 2 |
76 | cmp ah, 120 ; ¨§ 2 |
77 | je go_fire |
77 | je go_fire |
78 | cmp ah, 122 ; низ 2 |
78 | cmp ah, 122 ; ¨§ 2 |
79 | je go_fire |
79 | je go_fire |
80 | cmp ah, 239 ; низ 2 |
80 | cmp ah, 239 ; ¨§ 2 |
81 | je go_fire_left |
81 | je go_fire_left |
82 | cmp ah, 231 ; низ 2 |
82 | cmp ah, 231 ; ¨§ 2 |
83 | je go_fire |
83 | je go_fire |
Line 84... | Line 84... | ||
84 | 84 | ||
Line 85... | Line 85... | ||
85 | 85 | ||
86 | jmp no_mov ; if not left, right, up, down, then go NO MOV |
86 | jmp no_mov ; if not left, right, up, down, then go NO MOV |
87 | 87 | ||
88 | go_mov: |
88 | go_mov: |
89 | ;mov ebx, [v_mov2] |
89 | ;mov ebx, [v_mov2] |
Line 90... | Line 90... | ||
90 | mov [v_mov2], ah |
90 | mov [v_mov2], ah |
91 | sub word [v_mov2], 175 ; отнимаем от кода клавиши 175 и остается 1,2,3 или 4 соответственно направления движения персонажа |
91 | sub word [v_mov2], 175 ; ®â¨¬ ¥¬ ®â ª®¤ ª« ¢¨è¨ 175 ¨ ®áâ ¥âáï 1,2,3 ¨«¨ 4 ᮮ⢥âá⢥® ¯à ¢«¥¨ï ¤¢¨¦¥¨ï ¯¥àá® ¦ |
92 | jmp no_mov ; if not left, right, up, down, then go NO MOV |
92 | jmp no_mov ; if not left, right, up, down, then go NO MOV |
93 | 93 | ||
94 | go_fire_left: |
94 | go_fire_left: |
95 | xor eax,eax |
95 | xor eax,eax |
96 | mov ah, 122 |
96 | mov ah, 122 |
97 | call fire |
97 | call fire |
98 | jmp no_mov |
98 | jmp no_mov |
99 | go_fire: |
99 | go_fire: |
Line 100... | Line 100... | ||
100 | call fire |
100 | call fire |
101 | no_mov: |
101 | no_mov: |
102 | ; конец блока движения персонажа |
102 | ; ª®¥æ ¡«®ª ¤¢¨¦¥¨ï ¯¥àá® ¦ |
Line 103... | Line 103... | ||
103 | jmp still |
103 | jmp still |
104 | 104 | ||
- | 105 | button: |
|
105 | button: |
106 | mov eax, 17 |
- | 107 | int 0x40 |
|
- | 108 | ||
- | 109 | cmp ah,1 |
|
Line 106... | Line 110... | ||
106 | mov eax, 17 |
110 | jne noclose |
107 | int 0x40 |
111 | _close: |
108 | 112 | or eax,-1 |
|
Line 109... | Line 113... | ||
109 | cmp ah, 1 |
113 | int 0x40 |
110 | jne still |
114 | noclose: |
Line 111... | Line 115... | ||
111 | mcall -1 |
115 | jmp still |
112 | 116 | ||
- | 117 | ; ********************************************* |
|
113 | ; ********************************************* |
118 | ; ******* ******* |
114 | ; ******* ОПРЕДЕЛЕНИЕ И ОТРИСОВКА ОКНА ******* |
119 | ; ********************************************* |
115 | ; ********************************************* |
120 | |
- | 121 | draw_window: |
|
116 | 122 | startwd |
|
Line 117... | Line 123... | ||
117 | draw_window: |
123 | |
118 | startwd |
124 | mcall 48, 4 |
119 | 125 | mov ecx, 50*65536+516 |
|
Line 145... | Line 151... | ||
145 | ;******************************************* |
151 | ;******************************************* |
146 | 152 | ||
Line 147... | Line 153... | ||
147 | labirint: |
153 | labirint: |
Line 148... | Line 154... | ||
148 | 154 | ||
149 | ; вывод блоков лабиринта |
155 | ; ¢ë¢®¤ ¡«®ª®¢ « ¡¨à¨â |
Line 150... | Line 156... | ||
150 | cycle: |
156 | cycle: |
151 | 157 | ||
152 | mov eax, [Lab] |
158 | mov eax, [Lab] |
153 | shl eax, 5 ; сдвиг регистра в право на 5 позиции все равно что умножили на 32 |
159 | shl eax, 5 ; ᤢ¨£ ॣ¨áâà ¢ ¯à ¢® 5 ¯®§¨æ¨¨ ¢á¥ à ¢® ç⮠㬮¦¨«¨ 32 |
154 | mov [perem1], eax |
160 | mov [perem1], eax |
155 | mov eax, [Lab] |
161 | mov eax, [Lab] |
156 | shr eax, 4 ; сдвиг регистра в лево |
162 | shr eax, 4 ; ᤢ¨£ ॣ¨áâà ¢ «¥¢® |
157 | shl eax, 5 ; сдвиг обратно (все равно что целочисленное делениена 256) |
163 | shl eax, 5 ; ᤢ¨£ ®¡à â® (¢á¥ à ¢® ç⮠楫®ç¨á«¥®¥ ¤¥«¥¨¥ 256) |
158 | mov [perem2], eax |
164 | mov [perem2], eax |
Line 159... | Line 165... | ||
159 | shl eax, 4 ; все равно что отнимаем от координат ненужный прирост -> У-256*X |
165 | shl eax, 4 ; ¢á¥ à ¢® çâ® ®â¨¬ ¥¬ ®â ª®®à¤¨ â ¥ã¦ë© ¯à¨à®áâ -> -256*X |
160 | sbb dword [perem1], eax; |
166 | sbb dword [perem1], eax; |
161 | 167 | ||
Line 162... | Line 168... | ||
162 | mov ebx, [Lab] |
168 | mov ebx, [Lab] |
163 | sbb ebx, 1 |
169 | sbb ebx, 1 |
Line 164... | Line 170... | ||
164 | mov eax,[Dangeon + ebx] ; берет байт из дангеон + смещение |
170 | mov eax,[Dangeon + ebx] ; ¡¥à¥â ¡ ©â ¨§ ¤ £¥® + ᬥ饨¥ |
165 | 171 | ||
Line 166... | Line 172... | ||
166 | cmp ah, 1 ; |
172 | cmp ah, 1 ; |
167 | je go_block |
173 | je go_block |
Line 168... | Line 174... | ||
168 | 174 | ||
169 | cmp ah, 0 ; |
175 | cmp ah, 0 ; |
Line 170... | Line 176... | ||
170 | je back_block |
176 | je back_block |
171 | 177 | ||
Line 172... | Line 178... | ||
172 | cmp ah, 12 ; закраска фона за алмазом |
178 | cmp ah, 12 ; § ªà áª ä® § «¬ §®¬ |
173 | je back_block |
179 | je back_block |
Line 174... | Line 180... | ||
174 | 180 | ||
175 | cmp ah, 3 ; |
181 | cmp ah, 3 ; |
176 | je boom_block |
182 | je boom_block |
Line 198... | Line 204... | ||
198 | door_block: |
204 | door_block: |
199 | imgtoimg img_door1,dword [perem1],dword [perem2],canvas |
205 | imgtoimg img_door1,dword [perem1],dword [perem2],canvas |
Line 200... | Line 206... | ||
200 | 206 | ||
201 | mov eax, [gold] |
207 | mov eax, [gold] |
202 | cmp ax, 10 ; если собрано более 10 алмазов дверь открыта |
208 | cmp ax, 10 ; ¥á«¨ á®¡à ® ¡®«¥¥ 10 «¬ §®¢ ¤¢¥àì ®âªàëâ |
203 | jna end_block |
209 | jna end_block |
204 | imgtoimg img_door2,dword [perem1],dword [perem2],canvas |
210 | imgtoimg img_door2,dword [perem1],dword [perem2],canvas |
Line 205... | Line 211... | ||
205 | jmp end_block |
211 | jmp end_block |
206 | 212 | ||
207 | 213 | ||
208 | boom_block: |
214 | boom_block: |
209 | imgtoimg img_area,dword [perem1],dword [perem2],canvas |
215 | imgtoimg img_area,dword [perem1],dword [perem2],canvas |
210 | mov ebp,18 ; кадр |
216 | mov ebp,18 ; ª ¤à |
211 | mov eax, dword [perem1] |
217 | mov eax, dword [perem1] |
212 | mov dword [X_anime], eax |
218 | mov dword [X_anime], eax |
Line 219... | Line 225... | ||
219 | cmp ecx, 0 |
225 | cmp ecx, 0 |
220 | jne end_block |
226 | jne end_block |
221 | 227 | ||
Line 222... | Line 228... | ||
222 | mov ebx, [Lab] |
228 | mov ebx, [Lab] |
223 | mov byte [Dangeon + ebx], 0 ; берет байт из дангеон + смещение |
229 | mov byte [Dangeon + ebx], 0 ; ¡¥à¥â ¡ ©â ¨§ ¤ £¥® + ᬥ饨¥ |
Line 224... | Line 230... | ||
224 | 230 | ||
Line 225... | Line 231... | ||
225 | 231 | ||
Line 240... | Line 246... | ||
240 | ret ; END labirint |
246 | ret ; END labirint |
Line 241... | Line 247... | ||
241 | 247 | ||
242 | 248 | ||
243 | ;******************************************* |
249 | ;******************************************* |
244 | ; ЛЕСТНИЦА |
250 | ; |
245 | ;******************************************* |
251 | ;******************************************* |
246 | lestniza: |
252 | lestniza: |
Line 247... | Line 253... | ||
247 | ; вывод блоков лабиринта |
253 | ; ¢ë¢®¤ ¡«®ª®¢ « ¡¨à¨â |
248 | cycle2: |
254 | cycle2: |
249 | 255 | ||
250 | mov eax, [Lab] |
256 | mov eax, [Lab] |
251 | shl eax, 5 ; сдвиг регистра в право на 5 позиции все равно что умножили на 32 |
257 | shl eax, 5 ; ᤢ¨£ ॣ¨áâà ¢ ¯à ¢® 5 ¯®§¨æ¨¨ ¢á¥ à ¢® ç⮠㬮¦¨«¨ 32 |
252 | mov [perem1], eax |
258 | mov [perem1], eax |
253 | mov eax, [Lab] |
259 | mov eax, [Lab] |
254 | shr eax, 4 ; сдвиг регистра в лево |
260 | shr eax, 4 ; ᤢ¨£ ॣ¨áâà ¢ «¥¢® |
255 | shl eax, 5 ; сдвиг обратно (все равно что целочисленное делениена 256) |
261 | shl eax, 5 ; ᤢ¨£ ®¡à â® (¢á¥ à ¢® ç⮠楫®ç¨á«¥®¥ ¤¥«¥¨¥ 256) |
Line 256... | Line 262... | ||
256 | mov [perem2], eax |
262 | mov [perem2], eax |
257 | shl eax, 4 ; все равно что отнимаем от координат ненужный прирост -> У-256*X |
263 | shl eax, 4 ; ¢á¥ à ¢® çâ® ®â¨¬ ¥¬ ®â ª®®à¤¨ â ¥ã¦ë© ¯à¨à®áâ -> -256*X |
258 | sbb dword [perem1], eax; |
264 | sbb dword [perem1], eax; |
Line 259... | Line 265... | ||
259 | 265 | ||
260 | 266 | ||
Line 261... | Line 267... | ||
261 | mov ebx, [Lab] |
267 | mov ebx, [Lab] |
Line 288... | Line 294... | ||
288 | 294 | ||
Line 289... | Line 295... | ||
289 | 295 | ||
290 | 296 | ||
291 | ;******************************************* |
297 | ;******************************************* |
292 | ; ВОДА и АЛМАЗЫ |
298 | ; ¨ |
Line 293... | Line 299... | ||
293 | ;******************************************* |
299 | ;******************************************* |
294 | water: |
300 | water: |
Line 295... | Line 301... | ||
295 | 301 | ||
296 | ; вывод воды лабиринта |
302 | ; ¢ë¢®¤ ¢®¤ë « ¡¨à¨â |
297 | cycle3: |
303 | cycle3: |
298 | 304 | ||
299 | mov eax, [Lab] |
305 | mov eax, [Lab] |
300 | shl eax, 5 ; сдвиг регистра в право на 5 позиции все равно что умножили на 32 |
306 | shl eax, 5 ; ᤢ¨£ ॣ¨áâà ¢ ¯à ¢® 5 ¯®§¨æ¨¨ ¢á¥ à ¢® ç⮠㬮¦¨«¨ 32 |
301 | mov [perem1], eax |
307 | mov [perem1], eax |
302 | mov eax, [Lab] |
308 | mov eax, [Lab] |
303 | shr eax, 4 ; сдвиг регистра в лево |
309 | shr eax, 4 ; ᤢ¨£ ॣ¨áâà ¢ «¥¢® |
Line 304... | Line 310... | ||
304 | shl eax, 5 ; сдвиг обратно (все равно что целочисленное делениена 256) |
310 | shl eax, 5 ; ᤢ¨£ ®¡à â® (¢á¥ à ¢® ç⮠楫®ç¨á«¥®¥ ¤¥«¥¨¥ 256) |
305 | mov [perem2], eax |
311 | mov [perem2], eax |
306 | shl eax, 4 ; все равно что отнимаем от координат ненужный прирост -> У-256*X |
312 | shl eax, 4 ; ¢á¥ à ¢® çâ® ®â¨¬ ¥¬ ®â ª®®à¤¨ â ¥ã¦ë© ¯à¨à®áâ -> -256*X |
Line 307... | Line 313... | ||
307 | sbb dword [perem1], eax; |
313 | sbb dword [perem1], eax; |
308 | 314 | ||
Line 309... | Line 315... | ||
309 | 315 | ||
310 | mov ebx, [Lab] |
316 | mov ebx, [Lab] |
Line 311... | Line 317... | ||
311 | sbb ebx, 1 |
317 | sbb ebx, 1 |
312 | mov eax,[Dangeon + ebx] ; берет байт из дангеон + смещение |
318 | mov eax,[Dangeon + ebx] ; ¡¥à¥â ¡ ©â ¨§ ¤ £¥® + ᬥ饨¥ |
313 | 319 | ||
Line 340... | Line 346... | ||
340 | 346 | ||
Line 341... | Line 347... | ||
341 | cmp eax, 10 |
347 | cmp eax, 10 |
342 | ja almaz2 |
348 | ja almaz2 |
Line 343... | Line 349... | ||
343 | 349 | ||
344 | mov ebp,14 ; кадр |
350 | mov ebp,14 ; ª ¤à |
345 | mov eax, dword [perem1] |
351 | mov eax, dword [perem1] |
346 | mov dword [X_anime], eax |
352 | mov dword [X_anime], eax |
347 | mov eax, dword [perem2] |
353 | mov eax, dword [perem2] |
348 | mov dword [Y_anime], eax |
354 | mov dword [Y_anime], eax |
Line 352... | Line 358... | ||
352 | almaz2: |
358 | almaz2: |
353 | cmp eax, 20 |
359 | cmp eax, 20 |
354 | ja almaz3 |
360 | ja almaz3 |
Line 355... | Line 361... | ||
355 | 361 | ||
356 | mov ebp,15 ; кадр |
362 | mov ebp,15 ; ª ¤à |
357 | mov eax, dword [perem1] |
363 | mov eax, dword [perem1] |
358 | mov dword [X_anime], eax |
364 | mov dword [X_anime], eax |
359 | mov eax, dword [perem2] |
365 | mov eax, dword [perem2] |
360 | mov dword [Y_anime], eax |
366 | mov dword [Y_anime], eax |
361 | call animashka |
367 | call animashka |
Line 362... | Line 368... | ||
362 | jmp end_water |
368 | jmp end_water |
363 | 369 | ||
364 | almaz3: |
370 | almaz3: |
365 | mov ebp,16 ; кадр |
371 | mov ebp,16 ; ª ¤à |
366 | mov eax, dword [perem1] |
372 | mov eax, dword [perem1] |
367 | mov dword [X_anime], eax |
373 | mov dword [X_anime], eax |
368 | mov eax, dword [perem2] |
374 | mov eax, dword [perem2] |
Line 388... | Line 394... | ||
388 | ret ; END water |
394 | ret ; END water |
Line 389... | Line 395... | ||
389 | 395 | ||
390 | 396 | ||
391 | ;******************************************* |
397 | ;******************************************* |
392 | ; Выводим следующий кадр из списка картинок |
398 | ; 뢮¤¨¬ á«¥¤ãî騩 ª ¤à ¨§ ᯨ᪠ª à⨮ª |
393 | ;******************************************* |
399 | ;******************************************* |
Line 394... | Line 400... | ||
394 | draw_subimage: |
400 | draw_subimage: |
395 | ;aframetoimg Image,32, 32,canvas,0x00ffffff ; НЕВИДИМЫЙ, прозрачный ЦВЕТ ИЛИ НЕ РИСУЕМЫЙ |
401 | ;aframetoimg Image,32, 32,canvas,0x00ffffff ; , ¯à®§à çë© |
396 | 402 | ||
397 | call labirint |
403 | call labirint |
398 | call lestniza |
404 | call lestniza |
399 | call enemy_mas |
405 | call enemy_mas |
400 | call enemy_mov |
406 | call enemy_mov |
401 | ;------------------------------------------------------------------------------- |
407 | ;------------------------------------------------------------------------------- |
402 | mov ebx, [gold] |
408 | mov ebx, [gold] |
403 | cmp bx, 5 ;увеличение скорости врагов если украл более 9 |
409 | cmp bx, 5 ;㢥«¨ç¥¨¥ ᪮à®á⨠¢à £®¢ ¥á«¨ ãªà « ¡®«¥¥ 9 |
404 | jna lov_velo |
410 | jna lov_velo |
405 | call enemy_mas |
411 | call enemy_mas |
406 | call enemy_mov |
412 | call enemy_mov |
407 | lov_velo: |
413 | lov_velo: |
408 | ;------------------------------------------------------------------------------- |
414 | ;------------------------------------------------------------------------------- |
409 | ;------------------------------------------------------------------------------- |
415 | ;------------------------------------------------------------------------------- |
410 | mov ebx, [gold] |
416 | mov ebx, [gold] |
411 | cmp bx, 9 ;увеличение скорости врагов если украл более 9 |
417 | cmp bx, 9 ;㢥«¨ç¥¨¥ ᪮à®á⨠¢à £®¢ ¥á«¨ ãªà « ¡®«¥¥ 9 |
412 | jna lov_velo2 |
418 | jna lov_velo2 |
413 | call enemy_mas |
419 | call enemy_mas |
Line 430... | Line 436... | ||
430 | call bullet_mas |
436 | call bullet_mas |
431 | call proverka_gold |
437 | call proverka_gold |
432 | call potop |
438 | call potop |
433 | 439 | ||
Line 434... | Line 440... | ||
434 | setimg 6,20,canvas |
440 | setimg 0,0,canvas |
Line 435... | Line 441... | ||
435 | 441 | ||
436 | call timer |
442 | call timer |
437 | call tablo |
443 | call tablo |
Line 438... | Line 444... | ||
438 | ret |
444 | ret |
439 | 445 | ||
440 | ;@@@@@@@@@@@@@@@@@@ |
446 | ;@@@@@@@@@@@@@@@@@@ |
Line 441... | Line 447... | ||
441 | animashka: |
447 | animashka: |
442 | ;!!!ВАЖНО перед вызовом процедуры должен быть установлен ebx[номер кадра] и x,y |
448 | ;!!! ¯¥à¥¤ ¢ë§®¢®¬ ¯à®æ¥¤ãàë ¤®«¦¥ ¡ëâì ãáâ ®¢«¥ ebx[®¬¥à ª ¤à ] ¨ x,y |
443 | 449 | ||
444 | mov edi,coords |
450 | mov edi,coords |
445 | mov esi, Image ; гиф анимашка в памяти |
451 | mov esi, Image ; £¨ä ¨¬ èª ¢ ¯ ¬ï⨠|
446 | ; |
452 | ; |
447 | ; mov ebp, dword [edi+8] ;ecx здесь конкретный номер выводимого кадра |
453 | ; mov ebp, dword [edi+8] ;ecx §¤¥áì ª®ªà¥âë© ®¬¥à ¢ë¢®¤¨¬®£® ª ¤à |
448 | ; inc ebp ; увеличение кадра |
454 | ; inc ebp ; 㢥«¨ç¥¨¥ ª ¤à |
Line 449... | Line 455... | ||
449 | ; cmp ebp,3 ; максимальное количество кадров !!!!!!! |
455 | ; cmp ebp,3 ; ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ ª ¤à®¢ !!!!!!! |
450 | ; jna ok_fr ; если выводимы кадр меньше максимального количества кадров |
456 | ; jna ok_fr ; ¥á«¨ ¢ë¢®¤¨¬ë ª ¤à ¬¥ìè¥ ¬ ªá¨¬ «ì®£® ª®«¨ç¥á⢠ª ¤à®¢ |
451 | ;!!!!!!!!! mov ebp,2 ;обнуление кадра |
457 | ;!!!!!!!!! mov ebp,2 ;®¡ã«¥¨¥ ª ¤à |
452 | 458 | ||
453 | ok_fr: |
459 | ok_fr: |
454 | mov dword [edi+8], ebp ;номер выводимого кадра |
460 | mov dword [edi+8], ebp ;®¬¥à ¢ë¢®¤¨¬®£® ª ¤à |
455 | loo: |
461 | loo: |
456 | cmp ebp,0 ; если кадр нулевой то сразу на вывод ? |
462 | cmp ebp,0 ; ¥á«¨ ª ¤à ã«¥¢®© â® áà §ã ¢ë¢®¤ ? |
457 | je setpic |
463 | je setpic |
458 | movzx eax,word [esi+4] ; если нет то увеличиваем х у ? |
464 | movzx eax,word [esi+4] ; ¥á«¨ ¥â ⮠㢥«¨ç¨¢ ¥¬ å ã ? |
459 | movzx ebx,word [esi+6] |
465 | movzx ebx,word [esi+6] |
460 | mul ebx ;dword [esi+4] умножает ebx на eax и результат в eax edx |
466 | mul ebx ;dword [esi+4] 㬮¦ ¥â ebx eax ¨ १ã«ìâ â ¢ eax edx |
461 | mov ebx,3 ; количество кадров ??? |
467 | mov ebx,3 ; ª®«¨ç¥á⢮ ª ¤à®¢ ??? |
462 | mul ebx |
468 | mul ebx |
463 | add eax,8 |
469 | add eax,8 |
Line 464... | Line 470... | ||
464 | add esi,eax |
470 | add esi,eax |
465 | dec ebp |
471 | dec ebp |
466 | jmp loo |
472 | jmp loo |
467 | setpic: |
473 | setpic: |
468 | 474 | ||
469 | pushad |
475 | pushad |
470 | ; aframetoimg esi,dword [edi], dword [edi+4],canvas,0x00ffffff ; НЕВИДИМЫЙ, прозрачный ЦВЕТ ИЛИ НЕ РИСУЕМЫЙ |
476 | ; aframetoimg esi,dword [edi], dword [edi+4],canvas,0x00ffffff ; , ¯à®§à çë© |
471 | ; aframetoimg esi,32, 32,canvas,0x00ffffff ; НЕВИДИМЫЙ, прозрачный ЦВЕТ ИЛИ НЕ РИСУЕМЫЙ |
477 | ; aframetoimg esi,32, 32,canvas,0x00ffffff ; , ¯à®§à çë© |
Line 482... | Line 488... | ||
482 | mov eax,[timer1] ; |
488 | mov eax,[timer1] ; |
483 | add eax, 1; |
489 | add eax, 1; |
484 | mov [timer1], eax |
490 | mov [timer1], eax |
485 | 491 | ||
Line 486... | Line 492... | ||
486 | cmp eax, 64 ; таймер от 0 до 64 |
492 | cmp eax, 64 ; â ©¬¥à ®â 0 ¤® 64 |
487 | je nul_timer |
493 | je nul_timer |
488 | jmp timer_dalee |
494 | jmp timer_dalee |
489 | nul_timer : |
495 | nul_timer : |
490 | mov [timer1], 0 |
496 | mov [timer1], 0 |
491 | timer_dalee: |
497 | timer_dalee: |
Line 499... | Line 505... | ||
499 | ;******************************************* |
505 | ;******************************************* |
500 | ; ENEMY |
506 | ; ENEMY |
501 | ;******************************************* |
507 | ;******************************************* |
Line 502... | Line 508... | ||
502 | 508 | ||
Line 503... | Line 509... | ||
503 | enemy_mas: ; вывод ENEmy ENEMYYYYYYYYYYYYYYY ENEMYYYYYYYYYYYYYY !!! |
509 | enemy_mas: ; ¢ë¢®¤ ENEmy ENEMYYYYYYYYYYYYYYY ENEMYYYYYYYYYYYYYY !!! |
Line 504... | Line 510... | ||
504 | 510 | ||
Line 505... | Line 511... | ||
505 | mov word [Lab2], 0 ; все делать в WORD один элемент в массиве +2 следующий враг соотвтетственно 6*2= + 12 |
511 | mov word [Lab2], 0 ; ¢á¥ ¤¥« âì ¢ WORD ®¤¨ í«¥¬¥â ¢ ¬ áᨢ¥ +2 á«¥¤ãî騩 ¢à £ á®®â¢â¥âá⢥® 6*2= + 12 |
506 | 512 | ||
507 | cycle4: |
513 | cycle4: |
508 | 514 | ||
Line 509... | Line 515... | ||
509 | mov ebx, 0 |
515 | mov ebx, 0 |
510 | mov ecx, 0 |
516 | mov ecx, 0 |
Line 511... | Line 517... | ||
511 | mov edx, 0 |
517 | mov edx, 0 |
512 | mov esi, 0 |
518 | mov esi, 0 |
Line 513... | Line 519... | ||
513 | 519 | ||
514 | mov word bx, [Lab2] |
520 | mov word bx, [Lab2] |
Line 515... | Line 521... | ||
515 | mov word ax,[Enemy+bx] ; берет байт из Enemy + смещение |
521 | mov word ax,[Enemy+bx] ; ¡¥à¥â ¡ ©â ¨§ Enemy + ᬥ饨¥ |
516 | 522 | ||
517 | cmp ax, 1 ; обычный враг номер 1 |
523 | cmp ax, 1 ; ®¡ëçë© ¢à £ ®¬¥à 1 |
Line 518... | Line 524... | ||
518 | je go_enemy |
524 | je go_enemy |
519 | 525 | ||
520 | jmp end_enemy |
526 | jmp end_enemy |
Line 521... | Line 527... | ||
521 | go_enemy: |
527 | go_enemy: |
522 | 528 | ||
523 | add word bx, 2 ; X кооридината данного врага |
529 | add word bx, 2 ; X ª®®à¨¤¨ â ¤ ®£® ¢à £ |
Line 524... | Line 530... | ||
524 | mov word ax, [Enemy + bx] |
530 | mov word ax, [Enemy + bx] |
525 | mov word [X_enemy], ax |
531 | mov word [X_enemy], ax |
526 | 532 | ||
Line 527... | Line 533... | ||
527 | add word bx, 2 ; Y кооридината данного врага |
533 | add word bx, 2 ; Y ª®®à¨¤¨ â ¤ ®£® ¢à £ |
528 | mov word ax, [Enemy + ebx] |
534 | mov word ax, [Enemy + ebx] |
529 | mov word [Y_enemy], ax |
535 | mov word [Y_enemy], ax |
Line 530... | Line 536... | ||
530 | 536 | ||
531 | add word bx, 2 ; положение в массиве данного врага |
537 | add word bx, 2 ; ¯®«®¦¥¨¥ ¢ ¬ áᨢ¥ ¤ ®£® ¢à £ |
532 | mov word ax, [Enemy + ebx] |
538 | mov word ax, [Enemy + ebx] |
533 | mov word [lab_enemy], ax |
539 | mov word [lab_enemy], ax |
534 | 540 | ||
535 | add word bx, 2 ; направление движения данного врага |
541 | add word bx, 2 ; ¯à ¢«¥¨¥ ¤¢¨¦¥¨ï ¤ ®£® ¢à £ |
536 | mov word ax, [Enemy + ebx] |
542 | mov word ax, [Enemy + ebx] |
537 | mov word [mov_enemy], ax |
543 | mov word [mov_enemy], ax |
Line 562... | Line 568... | ||
562 | jmp enemy_2 |
568 | jmp enemy_2 |
Line 563... | Line 569... | ||
563 | 569 | ||
Line 564... | Line 570... | ||
564 | enemy_1: |
570 | enemy_1: |
565 | 571 | ||
566 | mov ebp,0 ; кадр |
572 | mov ebp,0 ; ª ¤à |
567 | mov eax, dword [X_enemy] |
573 | mov eax, dword [X_enemy] |
568 | mov dword [X_anime], eax |
574 | mov dword [X_anime], eax |
569 | mov eax, dword [Y_enemy] |
575 | mov eax, dword [Y_enemy] |
Line 570... | Line 576... | ||
570 | mov dword [Y_anime], eax |
576 | mov dword [Y_anime], eax |
Line 571... | Line 577... | ||
571 | call animashka |
577 | call animashka |
572 | 578 | ||
573 | jmp enemy_bmp_end |
579 | jmp enemy_bmp_end |
574 | 580 | ||
575 | enemy_2: |
581 | enemy_2: |
576 | mov ebp,1 ; кадр |
582 | mov ebp,1 ; ª ¤à |
577 | mov eax, dword [X_enemy] |
583 | mov eax, dword [X_enemy] |
Line 600... | Line 606... | ||
600 | ;$$$$$$$$$$$$$$$$$$$$$$$$$$ |
606 | ;$$$$$$$$$$$$$$$$$$$$$$$$$$ |
601 | ; ENEMY MOV |
607 | ; ENEMY MOV |
602 | ;$$$$$$$$$$$$$$$$$$$$$$$$$$ |
608 | ;$$$$$$$$$$$$$$$$$$$$$$$$$$ |
603 | enemy_mov: |
609 | enemy_mov: |
604 | mov word [Lab2], 0 ; все делать в WORD один элемент в массиве +2 следующий враг соотвтетственно 6*2= + 12 |
610 | mov word [Lab2], 0 ; ¢á¥ ¤¥« âì ¢ WORD ®¤¨ í«¥¬¥â ¢ ¬ áᨢ¥ +2 á«¥¤ãî騩 ¢à £ á®®â¢â¥âá⢥® 6*2= + 12 |
Line 605... | Line 611... | ||
605 | 611 | ||
Line 606... | Line 612... | ||
606 | cycle5: |
612 | cycle5: |
607 | 613 | ||
608 | mov ebx, 0 |
614 | mov ebx, 0 |
609 | mov ecx, 0 |
615 | mov ecx, 0 |
Line 610... | Line 616... | ||
610 | mov edx, 0 |
616 | mov edx, 0 |
611 | mov esi, 0 |
617 | mov esi, 0 |
Line 612... | Line 618... | ||
612 | 618 | ||
613 | mov word bx, [Lab2] |
619 | mov word bx, [Lab2] |
Line 614... | Line 620... | ||
614 | mov word ax,[Enemy+bx] ; берет байт из Enemy + смещение |
620 | mov word ax,[Enemy+bx] ; ¡¥à¥â ¡ ©â ¨§ Enemy + ᬥ饨¥ |
615 | 621 | ||
Line 616... | Line 622... | ||
616 | cmp ax, 1 ; обычный враг номер 1 |
622 | cmp ax, 1 ; ®¡ëçë© ¢à £ ®¬¥à 1 |
617 | je go_mov_enemy |
623 | je go_mov_enemy |
618 | 624 | ||
Line 619... | Line 625... | ||
619 | jmp end_mov_enemy |
625 | jmp end_mov_enemy |
620 | go_mov_enemy: |
626 | go_mov_enemy: |
621 | 627 | ||
Line 622... | Line 628... | ||
622 | add word bx, 2 ; X кооридината данного врага |
628 | add word bx, 2 ; X ª®®à¨¤¨ â ¤ ®£® ¢à £ |
623 | mov word ax, [Enemy + bx] |
629 | mov word ax, [Enemy + bx] |
624 | mov word [X_enemy], ax |
630 | mov word [X_enemy], ax |
Line 625... | Line 631... | ||
625 | 631 | ||
626 | add word bx, 2 ; Y кооридината данного врага |
632 | add word bx, 2 ; Y ª®®à¨¤¨ â ¤ ®£® ¢à £ |
627 | mov word ax, [Enemy + ebx] |
633 | mov word ax, [Enemy + ebx] |
Line 628... | Line 634... | ||
628 | mov word [Y_enemy], ax |
634 | mov word [Y_enemy], ax |
629 | 635 | ||
630 | add word bx, 2 ; положение в массиве данного врага |
636 | add word bx, 2 ; ¯®«®¦¥¨¥ ¢ ¬ áᨢ¥ ¤ ®£® ¢à £ |
Line 631... | Line 637... | ||
631 | mov word ax, [Enemy + ebx] |
637 | mov word ax, [Enemy + ebx] |
632 | mov word [lab_enemy], ax |
638 | mov word [lab_enemy], ax |
633 | 639 | ||
Line 634... | Line 640... | ||
634 | add word bx, 2 ; направление движения данного врага |
640 | add word bx, 2 ; ¯à ¢«¥¨¥ ¤¢¨¦¥¨ï ¤ ®£® ¢à £ |
Line 635... | Line 641... | ||
635 | mov word ax, [Enemy + ebx] |
641 | mov word ax, [Enemy + ebx] |
Line 636... | Line 642... | ||
636 | mov word [mov_enemy], ax |
642 | mov word [mov_enemy], ax |
637 | 643 | ||
638 | add word bx, 2 ; enemy LIFE |
644 | add word bx, 2 ; enemy LIFE |
639 | mov word ax, [Enemy + ebx] |
645 | mov word ax, [Enemy + ebx] |
640 | mov word [life_enemy], ax |
646 | mov word [life_enemy], ax |
641 | 647 | ||
642 | cmp ax, 499; ; замороженные враги |
648 | cmp ax, 499; ; § ¬®à®¦¥ë¥ ¢à £¨ |
Line 666... | Line 672... | ||
666 | call load_level ; DEAD HIRO |
672 | call load_level ; DEAD HIRO |
667 | delay 150 |
673 | delay 150 |
668 | 674 | ||
Line 669... | Line 675... | ||
669 | ne_em: |
675 | ne_em: |
670 | ;Блок попадания 1 пули |
676 | ;«®ª ¯®¯ ¤ ¨ï 1 ¯ã«¨ |
Line 671... | Line 677... | ||
671 | 677 | ||
672 | mov word bx, 0 |
678 | mov word bx, 0 |
673 | mov word ax,[Bullet + ebx] |
679 | mov word ax,[Bullet + ebx] |
674 | cmp ax, 0 |
680 | cmp ax, 0 |
Line 698... | Line 704... | ||
698 | 704 | ||
Line 699... | Line 705... | ||
699 | no_bullet: |
705 | no_bullet: |
Line 700... | Line 706... | ||
700 | 706 | ||
701 | 707 | ||
702 | ;БЛОК ПРИРОСТА ДВИЖЕНИЯ ВРАГОВ |
708 | ; |
703 | mov word ax, [mov_enemy] ; |
709 | mov word ax, [mov_enemy] ; |
704 | cmp ax, 1 ; left ; |
710 | cmp ax, 1 ; left ; |
705 | jne next_2 ; |
711 | jne next_2 ; |
706 | sbb word [X_enemy], 1 ; |
712 | sbb word [X_enemy], 1 ; |
707 | mov word ax, [X_enemy] ; |
713 | mov word ax, [X_enemy] ; |
708 | mov word bx, [Lab2] ; |
714 | mov word bx, [Lab2] ; |
709 | add word bx, 2 ; X кооридината данного врага |
715 | add word bx, 2 ; X ª®®à¨¤¨ â ¤ ®£® ¢à £ |
710 | mov word [Enemy + bx], ax ; |
716 | mov word [Enemy + bx], ax ; |
711 | ; |
717 | ; |
712 | next_2: ; |
718 | next_2: ; |
713 | cmp ax, 2 ; down ; |
719 | cmp ax, 2 ; down ; |
714 | jne next_3 ; |
720 | jne next_3 ; |
715 | add word [Y_enemy], 1 ; |
721 | add word [Y_enemy], 1 ; |
716 | mov word ax, [Y_enemy] ; |
722 | mov word ax, [Y_enemy] ; |
717 | mov word bx, [Lab2] ; |
723 | mov word bx, [Lab2] ; |
718 | add word bx, 4 ; Y кооридината данного врага |
724 | add word bx, 4 ; Y ª®®à¨¤¨ â ¤ ®£® ¢à £ |
719 | mov word [Enemy + bx], ax ; |
725 | mov word [Enemy + bx], ax ; |
720 | ; |
726 | ; |
721 | next_3: ; |
727 | next_3: ; |
722 | cmp ax, 3 ; up ; |
728 | cmp ax, 3 ; up ; |
723 | jne next_4 ; |
729 | jne next_4 ; |
724 | sbb word [Y_enemy], 1 ; |
730 | sbb word [Y_enemy], 1 ; |
725 | mov word ax, [Y_enemy] ; |
731 | mov word ax, [Y_enemy] ; |
726 | mov word bx, [Lab2] ; |
732 | mov word bx, [Lab2] ; |
727 | add word bx, 4 ; Y кооридината данного врага |
733 | add word bx, 4 ; Y ª®®à¨¤¨ â ¤ ®£® ¢à £ |
728 | mov word [Enemy + bx], ax ; |
734 | mov word [Enemy + bx], ax ; |
729 | ; |
735 | ; |
730 | next_4: ; |
736 | next_4: ; |
Line 731... | Line 737... | ||
731 | cmp ax, 4 ; right ; |
737 | cmp ax, 4 ; right ; |
732 | jne next_end |
738 | jne next_end |
733 | 739 | ||
734 | ;Гравитационная заплатка лечит трабл - когда враг двигается слева на право то пролетает один пустой блок |
740 | ;à ¢¨â 樮 ï § ¯« ⪠«¥ç¨â âà ¡« - ª®£¤ ¢à £ ¤¢¨£ ¥âáï á«¥¢ ¯à ¢® â® ¯à®«¥â ¥â ®¤¨ ¯ãá⮩ ¡«®ª |
735 | mov word bx, [X_enemy] ; Это условие позволяет добежать до позиции напротив блока |
741 | mov word bx, [X_enemy] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
736 | and ebx, 31 ; X в позиции напротив блока |
742 | and ebx, 31 ; X ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
737 | cmp bx, 0 ; |
743 | cmp bx, 0 ; |
738 | jne n4_dalee ; |
744 | jne n4_dalee ; |
739 | mov bx,[lab_enemy] |
745 | mov bx,[lab_enemy] |
740 | add bx,16 |
746 | add bx,16 |
741 | mov ax, [Dangeon + bx] |
747 | mov ax, [Dangeon + bx] |
742 | and eax,15 |
748 | and eax,15 |
743 | cmp word ax, 0 |
749 | cmp word ax, 0 |
744 | je next_end |
750 | je next_end |
Line 745... | Line 751... | ||
745 | cmp word ax, 4 |
751 | cmp word ax, 4 |
746 | je next_end |
752 | je next_end |
747 | ;конец заплатки |
753 | ;ª®¥æ § ¯« ⪨ |
748 | 754 | ||
749 | n4_dalee: |
755 | n4_dalee: |
750 | ; |
756 | ; |
751 | add word [X_enemy], 1 ; |
757 | add word [X_enemy], 1 ; |
752 | mov word ax, [X_enemy] ; |
758 | mov word ax, [X_enemy] ; |
753 | mov word bx, [Lab2] ; |
759 | mov word bx, [Lab2] ; |
754 | add word bx, 2 ; X кооридината данного врага |
760 | add word bx, 2 ; X ª®®à¨¤¨ â ¤ ®£® ¢à £ |
Line 755... | Line 761... | ||
755 | mov word [Enemy + bx], ax ; |
761 | mov word [Enemy + bx], ax ; |
Line 756... | Line 762... | ||
756 | ; |
762 | ; |
757 | next_end: |
763 | next_end: |
758 | ;END БЛОК ПРИРОСТА ДВИЖЕНИЯ ВРАГ |
764 | ;END |
759 | 765 | ||
760 | ; |
766 | ; |
761 | 767 | ||
762 | ; Рандомный выбор на леснице |
768 | ; ¤®¬ë© ¢ë¡®à «¥á¨æ¥ |
763 | mov word bx, [X_enemy] ; Это условие позволяет добежать до позиции напротив блока |
769 | mov word bx, [X_enemy] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
764 | and ebx, 31 ; X в позиции напротив блока |
770 | and ebx, 31 ; X ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
Line 765... | Line 771... | ||
765 | cmp bx, 0 ; |
771 | cmp bx, 0 ; |
Line 778... | Line 784... | ||
778 | 784 | ||
Line 779... | Line 785... | ||
779 | mov eax, [Ypl] |
785 | mov eax, [Ypl] |
780 | cmp eax, [Y_enemy] |
786 | cmp eax, [Y_enemy] |
781 | jna bolee |
787 | jna bolee |
782 | mov word [mov_enemy],2 ; вниз |
788 | mov word [mov_enemy],2 ; ¢¨§ |
783 | mov word ax, [mov_enemy] ; |
789 | mov word ax, [mov_enemy] ; |
784 | mov word bx, [Lab2] ; |
790 | mov word bx, [Lab2] ; |
785 | add word bx, 8 ; направление движения данного врага |
791 | add word bx, 8 ; ¯à ¢«¥¨¥ ¤¢¨¦¥¨ï ¤ ®£® ¢à £ |
786 | mov word [Enemy + bx], ax ; |
792 | mov word [Enemy + bx], ax ; |
787 | jmp end_les |
793 | jmp end_les |
Line 788... | Line 794... | ||
788 | 794 | ||
789 | bolee: |
795 | bolee: |
790 | mov word [mov_enemy],3 ; up |
796 | mov word [mov_enemy],3 ; up |
791 | mov word ax, [mov_enemy] ; |
797 | mov word ax, [mov_enemy] ; |
792 | mov word bx, [Lab2] ; |
798 | mov word bx, [Lab2] ; |
793 | add word bx, 8 ; направление движения данного врага |
799 | add word bx, 8 ; ¯à ¢«¥¨¥ ¤¢¨¦¥¨ï ¤ ®£® ¢à £ |
794 | mov word [Enemy + bx], ax ; |
800 | mov word [Enemy + bx], ax ; |
Line 795... | Line 801... | ||
795 | jmp end_les |
801 | jmp end_les |
Line 804... | Line 810... | ||
804 | 810 | ||
Line 805... | Line 811... | ||
805 | mov eax, [Xpl] |
811 | mov eax, [Xpl] |
806 | cmp eax, [X_enemy] |
812 | cmp eax, [X_enemy] |
807 | jna bolee2 |
813 | jna bolee2 |
808 | mov word [mov_enemy],4 ; вниз |
814 | mov word [mov_enemy],4 ; ¢¨§ |
809 | mov word ax, [mov_enemy] ; |
815 | mov word ax, [mov_enemy] ; |
810 | mov word bx, [Lab2] ; |
816 | mov word bx, [Lab2] ; |
811 | add word bx, 8 ; направление движения данного врага |
817 | add word bx, 8 ; ¯à ¢«¥¨¥ ¤¢¨¦¥¨ï ¤ ®£® ¢à £ |
812 | mov word [Enemy + bx], ax ; |
818 | mov word [Enemy + bx], ax ; |
813 | jmp end_les |
819 | jmp end_les |
Line 814... | Line 820... | ||
814 | 820 | ||
815 | bolee2: |
821 | bolee2: |
816 | mov word [mov_enemy],1 ; up |
822 | mov word [mov_enemy],1 ; up |
817 | mov word ax, [mov_enemy] ; |
823 | mov word ax, [mov_enemy] ; |
818 | mov word bx, [Lab2] ; |
824 | mov word bx, [Lab2] ; |
819 | add word bx, 8 ; направление движения данного врага |
825 | add word bx, 8 ; ¯à ¢«¥¨¥ ¤¢¨¦¥¨ï ¤ ®£® ¢à £ |
Line 820... | Line 826... | ||
820 | mov word [Enemy + bx], ax ; |
826 | mov word [Enemy + bx], ax ; |
821 | 827 | ||
Line 822... | Line 828... | ||
822 | end_les: |
828 | end_les: |
823 | ; end Рандомный выбор на леснице |
829 | ; end ¤®¬ë© ¢ë¡®à «¥á¨æ¥ |
824 | 830 | ||
825 | ;Гравитация |
831 | ;à ¢¨â æ¨ï |
826 | mov word bx, [X_enemy] ; Это условие позволяет добежать до позиции напротив блока |
832 | mov word bx, [X_enemy] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
Line 827... | Line 833... | ||
827 | and ebx, 31 ; X в позиции напротив блока |
833 | and ebx, 31 ; X ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
828 | cmp bx, 0 ; |
834 | cmp bx, 0 ; |
Line 838... | Line 844... | ||
838 | cmp word ax, 4 |
844 | cmp word ax, 4 |
839 | je grava |
845 | je grava |
840 | jmp end_grava |
846 | jmp end_grava |
841 | grava: |
847 | grava: |
842 | mov word [mov_enemy], 2 ; padenie ВРАГА |
848 | mov word [mov_enemy], 2 ; padenie |
843 | mov word ax, [mov_enemy] ; |
849 | mov word ax, [mov_enemy] ; |
844 | mov word bx, [Lab2] ; |
850 | mov word bx, [Lab2] ; |
845 | add word bx, 8 ; направление движения данного врага |
851 | add word bx, 8 ; ¯à ¢«¥¨¥ ¤¢¨¦¥¨ï ¤ ®£® ¢à £ |
846 | mov word [Enemy + bx], ax ; |
852 | mov word [Enemy + bx], ax ; |
847 | 853 | ||
Line 848... | Line 854... | ||
848 | end_grava: |
854 | end_grava: |
849 | ;конец гравитации |
855 | ;ª®¥æ £à ¢¨â 樨 |
Line 850... | Line 856... | ||
850 | 856 | ||
851 | ;блок расчета положения врага в лабиринте |
857 | ;¡«®ª à áç¥â ¯®«®¦¥¨ï ¢à £ ¢ « ¡¨à¨â¥ |
852 | mov eax, 0 ; |
858 | mov eax, 0 ; |
853 | mov eax, [Y_enemy] ; |
859 | mov eax, [Y_enemy] ; |
854 | shr eax, 5 ; |
860 | shr eax, 5 ; |
855 | shl eax, 4 ; |
861 | shl eax, 4 ; |
856 | mov ebx, 0 ; |
862 | mov ebx, 0 ; |
857 | mov ebx, [X_enemy] ; |
863 | mov ebx, [X_enemy] ; |
858 | shr ebx, 5 ; |
864 | shr ebx, 5 ; |
859 | add eax, ebx ; |
865 | add eax, ebx ; |
860 | mov [lab_enemy], eax ; |
866 | mov [lab_enemy], eax ; |
861 | mov word bx, [Lab2] ; |
867 | mov word bx, [Lab2] ; |
862 | add word bx, 6 ; направление движения данного врага |
868 | add word bx, 6 ; ¯à ¢«¥¨¥ ¤¢¨¦¥¨ï ¤ ®£® ¢à £ |
863 | mov word [Enemy + bx], ax ; |
869 | mov word [Enemy + bx], ax ; |
Line 864... | Line 870... | ||
864 | ;блок расчета положения врага в лабиринте |
870 | ;¡«®ª à áç¥â ¯®«®¦¥¨ï ¢à £ ¢ « ¡¨à¨â¥ |
865 | 871 | ||
866 | 872 | ||
867 | 873 | ||
868 | 874 | ||
869 | 875 | ||
870 | 876 | ||
871 | ;БЛОК ЗПАПРЕТА ДВижения |
877 | ; ¨¦¥¨ï |
872 | mov word bx, [Y_enemy] ; Это условие позволяет добежать до позиции напротив блока |
878 | mov word bx, [Y_enemy] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
Line 873... | Line 879... | ||
873 | and bx, 31 ; Y в позиции напротив блока |
879 | and bx, 31 ; Y ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
Line 874... | Line 880... | ||
874 | cmp bx, 0 ; |
880 | cmp bx, 0 ; |
875 | jne end_zapret ; |
881 | jne end_zapret ; |
876 | mov word ax, [X_enemy] ; Это условие позволяет добежать до позиции напротив блока |
882 | mov word ax, [X_enemy] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
877 | and ax, 31 ; X в позиции напротив блока |
883 | and ax, 31 ; X ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
878 | cmp ax, 0 ; |
884 | cmp ax, 0 ; |
879 | jne end_zapret ; |
885 | jne end_zapret ; |
880 | 886 | ||
881 | mov word ax, [mov_enemy] ; Это условие позволяет добежать до позиции напротив блока |
887 | mov word ax, [mov_enemy] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
882 | 888 | ||
Line 883... | Line 889... | ||
883 | cmp ax, 0 |
889 | cmp ax, 0 |
884 | jne duma1 |
890 | jne duma1 |
885 | ; Рандомный выбор движения |
891 | ; ¤®¬ë© ¢ë¡®à ¤¢¨¦¥¨ï |
886 | mov eax, [timer1] |
892 | mov eax, [timer1] |
887 | and eax, 3 |
893 | and eax, 3 |
Line 888... | Line 894... | ||
888 | cmp eax, 0 |
894 | cmp eax, 0 |
889 | jne dalee_duma1 |
895 | jne dalee_duma1 |
890 | add eax, 4 |
896 | add eax, 4 |
891 | dalee_duma1: |
897 | dalee_duma1: |
892 | 898 | ||
893 | mov word [mov_enemy], ax ; |
899 | mov word [mov_enemy], ax ; |
894 | mov word ax, [mov_enemy] ; |
900 | mov word ax, [mov_enemy] ; |
895 | mov word bx, [Lab2] ; |
901 | mov word bx, [Lab2] ; |
896 | add word bx, 8 ; направление движения данного врага |
902 | add word bx, 8 ; ¯à ¢«¥¨¥ ¤¢¨¦¥¨ï ¤ ®£® ¢à £ |
897 | mov word [Enemy + bx], ax ; |
903 | mov word [Enemy + bx], ax ; |
Line 898... | Line 904... | ||
898 | 904 | ||
899 | 905 | ||
900 | 906 | ||
901 | duma1: |
907 | duma1: |
902 | cmp ax, 4 |
908 | cmp ax, 4 |
903 | jne duma2 ; прверка справа |
909 | jne duma2 ; ¯à¢¥àª á¯à ¢ |
904 | mov bx,[lab_enemy] |
910 | mov bx,[lab_enemy] |
905 | add bx,1 |
911 | add bx,1 |
906 | mov ax, [Dangeon + bx] |
912 | mov ax, [Dangeon + bx] |
907 | and eax,3 |
913 | and eax,3 |
Line 908... | Line 914... | ||
908 | cmp ax, 0 |
914 | cmp ax, 0 |
909 | jne duma_stop |
915 | jne duma_stop |
910 | jmp duma_end |
916 | jmp duma_end |
911 | 917 | ||
912 | duma2: |
918 | duma2: |
913 | cmp ax, 1 |
919 | cmp ax, 1 |
914 | jne duma3 ; слева |
920 | jne duma3 ; á«¥¢ |
915 | mov bx,[lab_enemy] |
921 | mov bx,[lab_enemy] |
916 | sbb bx,1 |
922 | sbb bx,1 |
917 | mov ax, [Dangeon + bx] |
923 | mov ax, [Dangeon + bx] |
Line 918... | Line 924... | ||
918 | and eax,3 |
924 | and eax,3 |
919 | cmp ax, 0 |
925 | cmp ax, 0 |
920 | jne duma_stop |
926 | jne duma_stop |
Line 921... | Line 927... | ||
921 | jmp duma_end |
927 | jmp duma_end |
922 | 928 | ||
923 | duma3: |
929 | duma3: |
924 | cmp ax, 2 |
930 | cmp ax, 2 |
925 | jne duma4 ; снизу |
931 | jne duma4 ; ᨧã |
926 | mov bx,[lab_enemy] |
932 | mov bx,[lab_enemy] |
Line 927... | Line 933... | ||
927 | add bx,16 |
933 | add bx,16 |
928 | mov ax, [Dangeon + bx] |
934 | mov ax, [Dangeon + bx] |
929 | and eax,3 |
935 | and eax,3 |
930 | cmp ax, 0 |
936 | cmp ax, 0 |
931 | jne duma_stop |
937 | jne duma_stop |
Line 932... | Line 938... | ||
932 | jmp duma_end |
938 | jmp duma_end |
Line 933... | Line 939... | ||
933 | 939 | ||
Line 934... | Line 940... | ||
934 | duma4: |
940 | duma4: |
935 | cmp ax, 3 |
941 | cmp ax, 3 |
936 | jne duma_stop ; сверху |
942 | jne duma_stop ; ᢥàåã |
937 | 943 | ||
938 | mov bx,[lab_enemy] ; если кирпич над головой |
944 | mov bx,[lab_enemy] ; ¥á«¨ ª¨à¯¨ç ¤ £®«®¢®© |
Line 939... | Line 945... | ||
939 | sbb bx,16 |
945 | sbb bx,16 |
Line 940... | Line 946... | ||
940 | mov ax, [Dangeon + bx] |
946 | mov ax, [Dangeon + bx] |
941 | and eax,3 |
947 | and eax,3 |
Line 942... | Line 948... | ||
942 | cmp ax, 0 ; если кирпич над головой |
948 | cmp ax, 0 ; ¥á«¨ ª¨à¯¨ç ¤ £®«®¢®© |
Line 943... | Line 949... | ||
943 | jne duma_stop |
949 | jne duma_stop |
944 | 950 | ||
Line 985... | Line 991... | ||
985 | ;***************************** |
991 | ;***************************** |
986 | 992 | ||
Line 987... | Line 993... | ||
987 | hiro: |
993 | hiro: |
Line 988... | Line 994... | ||
988 | 994 | ||
989 | mov ecx, [v_fire] ;стрельба |
995 | mov ecx, [v_fire] ;áâà¥«ì¡ |
990 | cmp ecx, 0 |
996 | cmp ecx, 0 |
991 | je next_anima |
997 | je next_anima |
992 | cmp ecx, 1 |
998 | cmp ecx, 1 |
993 | je wprawo |
999 | je wprawo |
994 | mov ebp,12 ; кадр |
1000 | mov ebp,12 ; ª ¤à |
995 | mov eax, dword [Xpl] |
1001 | mov eax, dword [Xpl] |
996 | mov dword [X_anime], eax |
1002 | mov dword [X_anime], eax |
997 | mov eax, dword [Ypl] |
1003 | mov eax, dword [Ypl] |
998 | mov dword [Y_anime], eax |
1004 | mov dword [Y_anime], eax |
999 | call animashka |
1005 | call animashka |
1000 | mov ecx, [timer1] ;стрельба |
1006 | mov ecx, [timer1] ;áâà¥«ì¡ |
1001 | and ecx, 15 |
1007 | and ecx, 15 |
1002 | cmp ecx, 0 |
1008 | cmp ecx, 0 |
1003 | jne end_hiro |
1009 | jne end_hiro |
1004 | mov dword [v_fire], 0 |
1010 | mov dword [v_fire], 0 |
Line 1005... | Line 1011... | ||
1005 | jmp end_hiro |
1011 | jmp end_hiro |
1006 | 1012 | ||
1007 | wprawo: |
1013 | wprawo: |
1008 | mov ebp,11 ; кадр |
1014 | mov ebp,11 ; ª ¤à |
1009 | mov eax, dword [Xpl] |
1015 | mov eax, dword [Xpl] |
1010 | mov dword [X_anime], eax |
1016 | mov dword [X_anime], eax |
1011 | mov eax, dword [Ypl] |
1017 | mov eax, dword [Ypl] |
1012 | mov dword [Y_anime], eax |
1018 | mov dword [Y_anime], eax |
1013 | call animashka |
1019 | call animashka |
1014 | mov ecx, [timer1] ;стрельба |
1020 | mov ecx, [timer1] ;áâà¥«ì¡ |
1015 | and ecx, 15 |
1021 | and ecx, 15 |
1016 | cmp ecx, 0 |
1022 | cmp ecx, 0 |
1017 | jne end_hiro |
1023 | jne end_hiro |
Line 1018... | Line 1024... | ||
1018 | mov dword [v_fire], 0 |
1024 | mov dword [v_fire], 0 |
1019 | jmp end_hiro |
1025 | jmp end_hiro |
Line 1020... | Line 1026... | ||
1020 | 1026 | ||
1021 | ;стрельба |
1027 | ;áâà¥«ì¡ |
1022 | jmp end_hiro |
1028 | jmp end_hiro |
Line 1030... | Line 1036... | ||
1030 | and eax, 15 |
1036 | and eax, 15 |
1031 | cmp eax, 7 ; |
1037 | cmp eax, 7 ; |
1032 | ja next_l1 |
1038 | ja next_l1 |
1033 | 1039 | ||
Line 1034... | Line 1040... | ||
1034 | mov ebp,3 ; кадр |
1040 | mov ebp,3 ; ª ¤à |
1035 | mov eax, dword [Xpl] |
1041 | mov eax, dword [Xpl] |
1036 | mov dword [X_anime], eax |
1042 | mov dword [X_anime], eax |
1037 | mov eax, dword [Ypl] |
1043 | mov eax, dword [Ypl] |
1038 | mov dword [Y_anime], eax |
1044 | mov dword [Y_anime], eax |
1039 | call animashka |
1045 | call animashka |
1040 | jmp end_hiro |
1046 | jmp end_hiro |
Line 1041... | Line 1047... | ||
1041 | 1047 | ||
1042 | next_l1: |
1048 | next_l1: |
1043 | mov ebp,5 ; кадр |
1049 | mov ebp,5 ; ª ¤à |
1044 | mov eax, dword [Xpl] |
1050 | mov eax, dword [Xpl] |
1045 | mov dword [X_anime], eax |
1051 | mov dword [X_anime], eax |
1046 | mov eax, dword [Ypl] |
1052 | mov eax, dword [Ypl] |
1047 | mov dword [Y_anime], eax |
1053 | mov dword [Y_anime], eax |
1048 | call animashka |
1054 | call animashka |
1049 | pusha |
1055 | pusha |
1050 | mcall 55, eax, , , Music_mov ; звук выстрела |
1056 | mcall 55, eax, , , Music_mov ; §¢ãª ¢ëáâ५ |
Line 1051... | Line 1057... | ||
1051 | popa |
1057 | popa |
Line 1052... | Line 1058... | ||
1052 | 1058 | ||
Line 1061... | Line 1067... | ||
1061 | and eax, 15 |
1067 | and eax, 15 |
1062 | cmp eax, 7 ; |
1068 | cmp eax, 7 ; |
1063 | ja next_d1 |
1069 | ja next_d1 |
1064 | 1070 | ||
Line 1065... | Line 1071... | ||
1065 | mov ebp,4 ; кадр |
1071 | mov ebp,4 ; ª ¤à |
1066 | mov eax, dword [Xpl] |
1072 | mov eax, dword [Xpl] |
1067 | mov dword [X_anime], eax |
1073 | mov dword [X_anime], eax |
1068 | mov eax, dword [Ypl] |
1074 | mov eax, dword [Ypl] |
1069 | mov dword [Y_anime], eax |
1075 | mov dword [Y_anime], eax |
1070 | call animashka |
1076 | call animashka |
Line 1071... | Line 1077... | ||
1071 | 1077 | ||
1072 | pusha |
1078 | pusha |
1073 | mcall 55, eax, , , Music_mov ; звук выстрела |
1079 | mcall 55, eax, , , Music_mov ; §¢ãª ¢ëáâ५ |
1074 | popa |
1080 | popa |
Line 1075... | Line 1081... | ||
1075 | jmp end_hiro |
1081 | jmp end_hiro |
1076 | 1082 | ||
1077 | next_d1: |
1083 | next_d1: |
1078 | mov ebp,6 ; кадр |
1084 | mov ebp,6 ; ª ¤à |
1079 | mov eax, dword [Xpl] |
1085 | mov eax, dword [Xpl] |
1080 | mov dword [X_anime], eax |
1086 | mov dword [X_anime], eax |
1081 | mov eax, dword [Ypl] |
1087 | mov eax, dword [Ypl] |
Line 1086... | Line 1092... | ||
1086 | 1092 | ||
Line 1087... | Line 1093... | ||
1087 | next_d: |
1093 | next_d: |
1088 | cmp eax, 2 |
1094 | cmp eax, 2 |
1089 | jne next_u |
1095 | jne next_u |
1090 | mov ebp,13 ; кадр |
1096 | mov ebp,13 ; ª ¤à |
1091 | mov eax, [temp2] |
1097 | mov eax, [temp2] |
1092 | cmp eax, 8 |
1098 | cmp eax, 8 |
1093 | jne padaem |
1099 | jne padaem |
1094 | mov ebp,10 ; кадр |
1100 | mov ebp,10 ; ª ¤à |
1095 | padaem: |
1101 | padaem: |
1096 | mov eax, [temp5] |
1102 | mov eax, [temp5] |
1097 | cmp eax, 8 |
1103 | cmp eax, 8 |
1098 | jne padaem2 |
1104 | jne padaem2 |
1099 | mov ebp,10 ; кадр |
1105 | mov ebp,10 ; ª ¤à |
1100 | padaem2: |
1106 | padaem2: |
1101 | mov eax, dword [Xpl] |
1107 | mov eax, dword [Xpl] |
1102 | mov dword [X_anime], eax |
1108 | mov dword [X_anime], eax |
1103 | mov eax, dword [Ypl] |
1109 | mov eax, dword [Ypl] |
1104 | mov dword [Y_anime], eax |
1110 | mov dword [Y_anime], eax |
Line 1113... | Line 1119... | ||
1113 | and eax, 15 |
1119 | and eax, 15 |
1114 | cmp eax, 7 ; |
1120 | cmp eax, 7 ; |
1115 | ja next_u1 |
1121 | ja next_u1 |
1116 | 1122 | ||
Line 1117... | Line 1123... | ||
1117 | mov ebp,10 ; кадр |
1123 | mov ebp,10 ; ª ¤à |
1118 | mov eax, dword [Xpl] |
1124 | mov eax, dword [Xpl] |
1119 | mov dword [X_anime], eax |
1125 | mov dword [X_anime], eax |
1120 | mov eax, dword [Ypl] |
1126 | mov eax, dword [Ypl] |
1121 | mov dword [Y_anime], eax |
1127 | mov dword [Y_anime], eax |
1122 | call animashka |
1128 | call animashka |
1123 | jmp end_hiro |
1129 | jmp end_hiro |
Line 1124... | Line 1130... | ||
1124 | 1130 | ||
1125 | next_u1: |
1131 | next_u1: |
1126 | mov ebp,9 ; кадр |
1132 | mov ebp,9 ; ª ¤à |
1127 | mov eax, dword [Xpl] |
1133 | mov eax, dword [Xpl] |
1128 | mov dword [X_anime], eax |
1134 | mov dword [X_anime], eax |
1129 | mov eax, dword [Ypl] |
1135 | mov eax, dword [Ypl] |
1130 | mov dword [Y_anime], eax |
1136 | mov dword [Y_anime], eax |
Line 1134... | Line 1140... | ||
1134 | 1140 | ||
Line 1135... | Line 1141... | ||
1135 | next_s: |
1141 | next_s: |
1136 | cmp eax, 0 |
1142 | cmp eax, 0 |
1137 | jne next_s |
1143 | jne next_s |
1138 | mov ebp,17; кадр |
1144 | mov ebp,17; ª ¤à |
1139 | mov eax, dword [Xpl] |
1145 | mov eax, dword [Xpl] |
1140 | mov dword [X_anime], eax |
1146 | mov dword [X_anime], eax |
1141 | mov eax, dword [Ypl] |
1147 | mov eax, dword [Ypl] |
1142 | mov dword [Y_anime], eax |
1148 | mov dword [Y_anime], eax |
1143 | call animashka |
1149 | call animashka |
Line 1155... | Line 1161... | ||
1155 | ; Hiro MOV |
1161 | ; Hiro MOV |
1156 | ;**************** |
1162 | ;**************** |
1157 | hiro_mov: |
1163 | hiro_mov: |
1158 | 1164 | ||
Line 1159... | Line 1165... | ||
1159 | ;ПРЕГРАД |
1165 | ; |
Line 1160... | Line 1166... | ||
1160 | 1166 | ||
1161 | ; вычисление соседних блоков |
1167 | ; ¢ëç¨á«¥¨¥ á®á¥¤¨å ¡«®ª®¢ |
1162 | mov ebx, [hiro_lab] |
1168 | mov ebx, [hiro_lab] |
1163 | sbb ebx,2 |
1169 | sbb ebx,2 |
1164 | mov eax,[Dangeon + bx] ; up |
1170 | mov eax,[Dangeon + bx] ; up |
1165 | mov [temp1], ah ; temp4 |
1171 | mov [temp1], ah ; temp4 |
1166 | ; |
1172 | ; |
1167 | add ebx,1 ; left hiro right |
1173 | add ebx,1 ; left hiro right |
1168 | mov eax,[Dangeon + bx] ; temp1 temp2 temp3 |
1174 | mov eax,[Dangeon + bx] ; temp1 temp2 temp3 |
Line 1169... | Line 1175... | ||
1169 | mov [temp2], ah ; |
1175 | mov [temp2], ah ; |
1170 | 1176 | ||
1171 | ;------------------------------------------------------------------------------- |
1177 | ;------------------------------------------------------------------------------- |
1172 | ; Сбор алмазов |
1178 | ; ¡®à «¬ §®¢ |
1173 | ;------------------------------------------------------------------------------- |
1179 | ;------------------------------------------------------------------------------- |
Line 1174... | Line 1180... | ||
1174 | mov ecx, [Ypl] ; Это условие позволяет добежать до позиции напротив блока |
1180 | mov ecx, [Ypl] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1175 | and ecx, 31 ; Y в позиции напротив блока |
1181 | and ecx, 31 ; Y ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1176 | 1182 | ||
1177 | mov edx, [Xpl] ; Это условие позволяет добежать до позиции напротив блока |
1183 | mov edx, [Xpl] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1178 | and edx, 31 ; Y в позиции напротив блока |
1184 | and edx, 31 ; Y ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
Line 1179... | Line 1185... | ||
1179 | or edx,ecx ; Мы четко спозиционированы по Х и У |
1185 | or edx,ecx ; ë ç¥âª® ᯮ§¨æ¨®¨à®¢ ë ¯® ¨ |
1180 | cmp edx, 0 |
1186 | cmp edx, 0 |
1181 | jne no_almaz |
1187 | jne no_almaz |
1182 | 1188 | ||
1183 | cmp ah, 12 |
1189 | cmp ah, 12 |
1184 | jne no_almaz |
1190 | jne no_almaz |
1185 | xor cx, cx |
1191 | xor cx, cx |
1186 | add ebx,1 ; ЗАПЛАТКА !!! без нее почемуто обнуляет не алмазы а соседние блоки |
1192 | add ebx,1 ; !!! ¡¥§ ¥¥ ¯®ç¥¬ãâ® ®¡ã«ï¥â ¥ «¬ §ë á®á¥¤¨¥ ¡«®ª¨ |
1187 | mov [Dangeon + bx], ch |
1193 | mov [Dangeon + bx], ch |
1188 | sbb ebx, 1 ; ЗАПЛАТКА !!! |
1194 | sbb ebx, 1 ; !!! |
1189 | mov ecx, [gold] |
1195 | mov ecx, [gold] |
1190 | add ecx, 1 |
1196 | add ecx, 1 |
1191 | mov [gold], ecx |
1197 | mov [gold], ecx |
1192 | pusha |
1198 | pusha |
1193 | mcall 55, eax, , , Music_almaz ; звук Almaz |
1199 | mcall 55, eax, , , Music_almaz ; §¢ãª Almaz |
1194 | popa |
1200 | popa |
1195 | no_almaz: |
1201 | no_almaz: |
1196 | ;------------------------------------------------------------------------------- |
1202 | ;------------------------------------------------------------------------------- |
1197 | ; Сбор алмазов |
1203 | ; ¡®à «¬ §®¢ |
1198 | ;------------------------------------------------------------------------------- |
1204 | ;------------------------------------------------------------------------------- |
Line 1199... | Line 1205... | ||
1199 | ; down |
1205 | ; down |
1200 | add ebx,1 ; temp5 |
1206 | add ebx,1 ; temp5 |
1201 | mov eax,[Dangeon + bx] ; |
1207 | mov eax,[Dangeon + bx] ; |
Line 1202... | Line 1208... | ||
1202 | mov [temp3], ah |
1208 | mov [temp3], ah |
1203 | 1209 | ||
1204 | sbb ebx,17 ; !!!!!!!!!!!! |
1210 | sbb ebx,17 ; !!!!!!!!!!!! |
1205 | mov eax,[Dangeon + bx] ; при отсутствии библиотеки MACROS.INC ebx=17 , при ее присутствии ebx=16 |
1211 | mov eax,[Dangeon + bx] ; ¯à¨ ®âáãâá⢨¨ ¡¨¡«¨®â¥ª¨ MACROS.INC ebx=17 , ¯à¨ ¥¥ ¯à¨áãâá⢨¨ ebx=16 |
Line 1206... | Line 1212... | ||
1206 | mov [temp4], ah |
1212 | mov [temp4], ah |
1207 | 1213 | ||
1208 | add ebx,32 ; |
1214 | add ebx,32 ; |
1209 | mov eax,[Dangeon + bx] ; |
1215 | mov eax,[Dangeon + bx] ; |
1210 | mov [temp5], ah |
1216 | mov [temp5], ah |
1211 | ; вычисление соседних блоков |
1217 | ; ¢ëç¨á«¥¨¥ á®á¥¤¨å ¡«®ª®¢ |
1212 | 1218 | ||
Line 1213... | Line 1219... | ||
1213 | 1219 | ||
1214 | 1220 | ||
1215 | 1221 | ||
1216 | 1222 | ||
1217 | ;разрешение на движение |
1223 | ;à §à¥è¥¨¥ ¤¢¨¦¥¨¥ |
Line 1218... | Line 1224... | ||
1218 | mov eax,0 ; |
1224 | mov eax,0 ; |
Line 1234... | Line 1240... | ||
1234 | and eax,2 |
1240 | and eax,2 |
1235 | cmp eax, 0 |
1241 | cmp eax, 0 |
1236 | je smena2 |
1242 | je smena2 |
1237 | 1243 | ||
Line 1238... | Line 1244... | ||
1238 | mov ebx, [Xpl] ; Это условие позволяет добежать до позиции напротив блока |
1244 | mov ebx, [Xpl] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1239 | and ebx, 31 ; X в позиции напротив блока |
1245 | and ebx, 31 ; X ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1240 | cmp ebx, 0 ; |
1246 | cmp ebx, 0 ; |
1241 | jne end_tamgna ; |
1247 | jne end_tamgna ; |
Line 1242... | Line 1248... | ||
1242 | 1248 | ||
1243 | smena2: |
1249 | smena2: |
1244 | mov eax, [v_mov2] |
1250 | mov eax, [v_mov2] |
1245 | and eax, 7 |
1251 | and eax, 7 |
1246 | mov [v_mov], eax |
1252 | mov [v_mov], eax |
1247 | end_tamgna: |
1253 | end_tamgna: |
Line 1248... | Line 1254... | ||
1248 | ;разрешение на движение |
1254 | ;à §à¥è¥¨¥ ¤¢¨¦¥¨¥ |
1249 | 1255 | ||
1250 | 1256 | ||
1251 | ;УПИРАНИЕ В ПРЕГРАДУ |
1257 | ; |
1252 | mov ebx, [Ypl] ; |
1258 | mov ebx, [Ypl] ; |
1253 | and ebx, 31 ; Y в позиции напротив блока |
1259 | and ebx, 31 ; Y ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1254 | cmp ebx, 0 ; |
1260 | cmp ebx, 0 ; |
1255 | jne end_stop ; |
1261 | jne end_stop ; |
1256 | mov eax, [Xpl] ; без макроса этого блока не было он был внутри блока упираний |
1262 | mov eax, [Xpl] ; ¡¥§ ¬ ªà®á í⮣® ¡«®ª ¥ ¡ë«® ® ¡ë« ¢ãâਠ¡«®ª ã¯¨à ¨© |
1257 | and eax, 31 ; X в позиции напротив блока |
1263 | and eax, 31 ; X ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
Line 1258... | Line 1264... | ||
1258 | cmp eax, 0 ; |
1264 | cmp eax, 0 ; |
1259 | jne end_stop ; |
1265 | jne end_stop ; |
1260 | mov eax, [v_mov] |
1266 | mov eax, [v_mov] |
Line 1261... | Line 1267... | ||
1261 | 1267 | ||
1262 | cmp eax, 2 |
1268 | cmp eax, 2 |
1263 | je stop_d |
1269 | je stop_d |
Line 1264... | Line 1270... | ||
1264 | jmp stop_u |
1270 | jmp stop_u |
1265 | 1271 | ||
Line 1266... | Line 1272... | ||
1266 | stop_d: |
1272 | stop_d: |
Line 1289... | Line 1295... | ||
1289 | mov ebx, [temp4] |
1295 | mov ebx, [temp4] |
1290 | and ebx,3 |
1296 | and ebx,3 |
1291 | and eax, ebx |
1297 | and eax, ebx |
Line 1292... | Line 1298... | ||
1292 | 1298 | ||
1293 | ; mov ebx, [Ypl] ; Это условие позволяет добежать до позиции напротив блока |
1299 | ; mov ebx, [Ypl] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1294 | ; and ebx, 31 ; Y в позиции напротив блока |
1300 | ; and ebx, 31 ; Y ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1295 | ; cmp ebx, 0 ; |
1301 | ; cmp ebx, 0 ; |
Line 1296... | Line 1302... | ||
1296 | ; jne end_stop ; |
1302 | ; jne end_stop ; |
Line 1307... | Line 1313... | ||
1307 | 1313 | ||
Line 1308... | Line 1314... | ||
1308 | mov ebx, [temp1] |
1314 | mov ebx, [temp1] |
1309 | and ebx,3 |
1315 | and ebx,3 |
Line 1310... | Line 1316... | ||
1310 | 1316 | ||
1311 | ; mov eax, [Xpl] ; Это условие позволяет добежать до позиции напротив блока |
1317 | ; mov eax, [Xpl] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1312 | ; and eax, 31 ; Y в позиции напротив блока |
1318 | ; and eax, 31 ; Y ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1313 | ; cmp eax, 0 ; |
1319 | ; cmp eax, 0 ; |
Line 1314... | Line 1320... | ||
1314 | ; jne end_stop ; |
1320 | ; jne end_stop ; |
1315 | 1321 | ||
Line 1330... | Line 1336... | ||
1330 | mov ebx, 0 |
1336 | mov ebx, 0 |
1331 | mov [v_mov], ebx |
1337 | mov [v_mov], ebx |
1332 | 1338 | ||
Line 1333... | Line 1339... | ||
1333 | end_stop: |
1339 | end_stop: |
1334 | ;ПРЕГРАДЫ |
1340 | ; |
Line 1335... | Line 1341... | ||
1335 | 1341 | ||
1336 | 1342 | ||
1337 | ;GRAVITACION |
1343 | ;GRAVITACION |
Line 1338... | Line 1344... | ||
1338 | mov ebx, [Ypl] ; Это условие позволяет добежать до позиции напротив блока |
1344 | mov ebx, [Ypl] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1339 | and ebx, 31 ; Y в позиции напротив блока |
1345 | and ebx, 31 ; Y ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1340 | 1346 | ||
1341 | mov eax, [Xpl] ; Это условие позволяет добежать до позиции напротив блока |
1347 | mov eax, [Xpl] ; â® ãá«®¢¨¥ ¯®§¢®«ï¥â ¤®¡¥¦ âì ¤® ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
1342 | and eax, 31 ; Y в позиции напротив блока |
1348 | and eax, 31 ; Y ¢ ¯®§¨æ¨¨ ¯à®â¨¢ ¡«®ª |
Line 1343... | Line 1349... | ||
1343 | or eax,ebx ; Мы четко спозиционированы по Х и У |
1349 | or eax,ebx ; ë ç¥âª® ᯮ§¨æ¨®¨à®¢ ë ¯® ¨ |
1344 | cmp eax, 0 |
1350 | cmp eax, 0 |
1345 | jne end_grav |
1351 | jne end_grav |
1346 | 1352 | ||
1347 | mov ebx, [temp2] ; |
1353 | mov ebx, [temp2] ; |
1348 | cmp ebx, 0 ; запрет на прыжки вверх |
1354 | cmp ebx, 0 ; § ¯à¥â ¯à릪¨ ¢¢¥àå |
1349 | jne end_grav ; |
1355 | jne end_grav ; |
Line 1356... | Line 1362... | ||
1356 | mov [v_mov2],ebx ; |
1362 | mov [v_mov2],ebx ; |
1357 | 1363 | ||
Line 1358... | Line 1364... | ||
1358 | dalee_gra: |
1364 | dalee_gra: |
1359 | add eax, [temp5] ; |
1365 | add eax, [temp5] ; |
1360 | cmp eax, 0 ; падение в пустоту |
1366 | cmp eax, 0 ; ¯ ¤¥¨¥ ¢ ¯ãáâ®âã |
1361 | jne dalee_g ; |
1367 | jne dalee_g ; |
1362 | mov eax, 2 ; |
1368 | mov eax, 2 ; |
1363 | mov [v_mov],eax ; |
1369 | mov [v_mov],eax ; |
1364 | mov eax, 0 ; |
1370 | mov eax, 0 ; |
1365 | mov [v_mov2],eax ; |
1371 | mov [v_mov2],eax ; |
Line 1366... | Line 1372... | ||
1366 | 1372 | ||
1367 | dalee_g: |
1373 | dalee_g: |
1368 | cmp eax, 4 ; |
1374 | cmp eax, 4 ; |
1369 | jne dalee_g2 ; падение в воду |
1375 | jne dalee_g2 ; ¯ ¤¥¨¥ ¢ ¢®¤ã |
1370 | mov eax, 2 ; |
1376 | mov eax, 2 ; |
1371 | mov [v_mov],eax ; |
1377 | mov [v_mov],eax ; |
1372 | mov eax, 0 ; |
1378 | mov eax, 0 ; |
Line 1373... | Line 1379... | ||
1373 | mov [v_mov2],eax ; |
1379 | mov [v_mov2],eax ; |
1374 | 1380 | ||
1375 | dalee_g2: |
1381 | dalee_g2: |
1376 | cmp eax, 12 ; |
1382 | cmp eax, 12 ; |
1377 | jne end_grav ; падение на алмаз |
1383 | jne end_grav ; ¯ ¤¥¨¥ «¬ § |
1378 | mov eax, 2 ; |
1384 | mov eax, 2 ; |
1379 | mov [v_mov],eax ; |
1385 | mov [v_mov],eax ; |
Line 1385... | Line 1391... | ||
1385 | 1391 | ||
Line 1386... | Line 1392... | ||
1386 | 1392 | ||
1387 | 1393 | ||
1388 | 1394 | ||
1389 | ; ПРИРОСТ КООРДИНАТ ГЕРОЯ |
1395 | ; |
1390 | mov eax,0 ; |
1396 | mov eax,0 ; |
1391 | mov eax,[v_mov] ; |
1397 | mov eax,[v_mov] ; |
Line 1429... | Line 1435... | ||
1429 | h_right: ; |
1435 | h_right: ; |
1430 | mov ebx, [Xpl] ; |
1436 | mov ebx, [Xpl] ; |
1431 | add ebx, 2 ; |
1437 | add ebx, 2 ; |
1432 | mov [Xpl], ebx ; |
1438 | mov [Xpl], ebx ; |
1433 | jmp hiro_mov_end ;прирост |
1439 | jmp hiro_mov_end ;¯à¨à®áâ |
1434 | ; ПРИРОСТ КООРДИНАТ ГЕРОЯ |
1440 | ; |
1435 | 1441 | ||
Line 1436... | Line 1442... | ||
1436 | hiro_mov_end: |
1442 | hiro_mov_end: |
Line 1437... | Line 1443... | ||
1437 | 1443 | ||
1438 | ; вычисляем положение героя в лабиринте |
1444 | ; ¢ëç¨á«ï¥¬ ¯®«®¦¥¨¥ £¥à®ï ¢ « ¡¨à¨â¥ |
1439 | mov eax, 0 ; |
1445 | mov eax, 0 ; |
1440 | mov dword eax, [Ypl] ; |
1446 | mov dword eax, [Ypl] ; |
1441 | shr eax, 5 ; |
1447 | shr eax, 5 ; |
1442 | shl eax, 4 ; |
1448 | shl eax, 4 ; |
1443 | mov ebx, 0 ; |
1449 | mov ebx, 0 ; |
1444 | mov dword ebx, [Xpl] ; |
1450 | mov dword ebx, [Xpl] ; |
1445 | shr ebx, 5 ; |
1451 | shr ebx, 5 ; |
1446 | add eax, ebx ; |
1452 | add eax, ebx ; |
1447 | mov [hiro_lab], eax ; |
1453 | mov [hiro_lab], eax ; |
1448 | ; вычисляем положение героя в лабиринте |
1454 | ; ¢ëç¨á«ï¥¬ ¯®«®¦¥¨¥ £¥à®ï ¢ « ¡¨à¨â¥ |
1449 | ret |
1455 | ret |
1450 | ;**************** |
1456 | ;**************** |
1451 | ; end Hiro mov |
1457 | ; end Hiro mov |
Line 1452... | Line 1458... | ||
1452 | ;**************** |
1458 | ;**************** |
1453 | 1459 | ||
1454 | 1460 | ||
1455 | ;******************************************* |
1461 | ;******************************************* |
1456 | ; BULLET |
1462 | ; BULLET |
1457 | ;******************************************* |
1463 | ;******************************************* |
1458 | bullet_mas: |
1464 | bullet_mas: |
1459 | mov word [Lab3], 0 ; все делать в WORD один элемент в массиве +2 следующий враг соотвтетственно 6*2= + 12 |
1465 | mov word [Lab3], 0 ; ¢á¥ ¤¥« âì ¢ WORD ®¤¨ í«¥¬¥â ¢ ¬ áᨢ¥ +2 á«¥¤ãî騩 ¢à £ á®®â¢â¥âá⢥® 6*2= + 12 |
Line 1460... | Line 1466... | ||
1460 | cycle7: |
1466 | cycle7: |
1461 | mov word bx, [Lab3] |
1467 | mov word bx, [Lab3] |
Line 1462... | Line 1468... | ||
1462 | mov word ax, [Bullet+bx] ; берет байт из Enemy + смещение |
1468 | mov word ax, [Bullet+bx] ; ¡¥à¥â ¡ ©â ¨§ Enemy + ᬥ饨¥ |
1463 | 1469 | ||
Line 1464... | Line 1470... | ||
1464 | cmp ax, 1 ; bullet ok |
1470 | cmp ax, 1 ; bullet ok |
1465 | je go_bullet |
1471 | je go_bullet |
1466 | 1472 | ||
Line 1467... | Line 1473... | ||
1467 | jmp end_bullet |
1473 | jmp end_bullet |
1468 | go_bullet: |
1474 | go_bullet: |
1469 | 1475 | ||
Line 1470... | Line 1476... | ||
1470 | add word bx, 2 ; X кооридината данного врага |
1476 | add word bx, 2 ; X ª®®à¨¤¨ â ¤ ®£® ¢à £ |
1471 | mov word ax, [Bullet + bx] |
1477 | mov word ax, [Bullet + bx] |
Line 1496... | Line 1502... | ||
1496 | ;******************************************* |
1502 | ;******************************************* |
1497 | ; BULLET MOV |
1503 | ; BULLET MOV |
1498 | ;******************************************* |
1504 | ;******************************************* |
1499 | bullet_mov: |
1505 | bullet_mov: |
1500 | mov word [Lab3], 0 ; все делать в WORD один элемент в массиве +2 следующий враг соотвтетственно 6*2= + 12 |
1506 | mov word [Lab3], 0 ; ¢á¥ ¤¥« âì ¢ WORD ®¤¨ í«¥¬¥â ¢ ¬ áᨢ¥ +2 á«¥¤ãî騩 ¢à £ á®®â¢â¥âá⢥® 6*2= + 12 |
Line 1501... | Line 1507... | ||
1501 | 1507 | ||
1502 | cycle8: |
1508 | cycle8: |
1503 | mov word bx, [Lab3] |
1509 | mov word bx, [Lab3] |
Line 1504... | Line 1510... | ||
1504 | mov word ax, [Bullet+bx] ; берет байт из Enemy + смещение |
1510 | mov word ax, [Bullet+bx] ; ¡¥à¥â ¡ ©â ¨§ Enemy + ᬥ饨¥ |
1505 | 1511 | ||
Line 1506... | Line 1512... | ||
1506 | cmp ax, 1 ; bullet ok |
1512 | cmp ax, 1 ; bullet ok |
1507 | je go_bullet_mov |
1513 | je go_bullet_mov |
Line 1508... | Line 1514... | ||
1508 | 1514 | ||
1509 | jmp end_bullet_mov |
1515 | jmp end_bullet_mov |
1510 | go_bullet_mov: |
1516 | go_bullet_mov: |
Line 1511... | Line 1517... | ||
1511 | 1517 | ||
1512 | add word bx, 2 ; X кооридината данного врага |
1518 | add word bx, 2 ; X ª®®à¨¤¨ â ¤ ®£® ¢à £ |
1513 | mov word ax, [Bullet + bx] |
1519 | mov word ax, [Bullet + bx] |
Line 1514... | Line 1520... | ||
1514 | mov word [X_bul], ax |
1520 | mov word [X_bul], ax |
1515 | 1521 | ||
Line 1538... | Line 1544... | ||
1538 | mov word [Bullet + bx], ax |
1544 | mov word [Bullet + bx], ax |
1539 | 1545 | ||
Line 1540... | Line 1546... | ||
1540 | end_bullet_mov: |
1546 | end_bullet_mov: |
Line 1541... | Line 1547... | ||
1541 | 1547 | ||
1542 | ; вычисляем положение BULLET в лабиринте |
1548 | ; ¢ëç¨á«ï¥¬ ¯®«®¦¥¨¥ BULLET ¢ « ¡¨à¨â¥ |
1543 | mov eax, 0 ; |
1549 | mov eax, 0 ; |
1544 | mov eax, [Y_bul] ; |
1550 | mov eax, [Y_bul] ; |
1545 | shr eax, 5 ; |
1551 | shr eax, 5 ; |
1546 | shl eax, 4 ; |
1552 | shl eax, 4 ; |
1547 | mov ebx, 0 ; |
1553 | mov ebx, 0 ; |
1548 | mov ebx, [X_bul] ; |
1554 | mov ebx, [X_bul] ; |
1549 | shr ebx, 5 ; |
1555 | shr ebx, 5 ; |
1550 | add eax, ebx ; |
1556 | add eax, ebx ; |
1551 | mov [lab_bullet], ax ; |
1557 | mov [lab_bullet], ax ; |
Line 1552... | Line 1558... | ||
1552 | ; вычисляем положение BULLET в лабиринте |
1558 | ; ¢ëç¨á«ï¥¬ ¯®«®¦¥¨¥ BULLET ¢ « ¡¨à¨â¥ |
1553 | 1559 | ||
1554 | mov word bx,[lab_bullet] |
1560 | mov word bx,[lab_bullet] |
1555 | mov dx, [Dangeon + bx] |
1561 | mov dx, [Dangeon + bx] |
1556 | and edx,3 |
1562 | and edx,3 |
Line 1557... | Line 1563... | ||
1557 | cmp dx, 0 |
1563 | cmp dx, 0 |
1558 | je letit_dalee |
1564 | je letit_dalee |
1559 | 1565 | ||
1560 | cmp dx, 2 |
1566 | cmp dx, 2 |
1561 | je beton |
1567 | je beton |
1562 | mov byte [Dangeon + bx], 3 ; РАЗРУШЕНИЕ КИРПИЧЕЙ |
1568 | mov byte [Dangeon + bx], 3 ; |
Line 1623... | Line 1629... | ||
1623 | mov cx, [Bullet + ebx] |
1629 | mov cx, [Bullet + ebx] |
1624 | cmp cx, 0 |
1630 | cmp cx, 0 |
1625 | jne end_fire |
1631 | jne end_fire |
1626 | pusha |
1632 | pusha |
1627 | mcall 55, eax, , , Music_bah ; звук выстрела |
1633 | mcall 55, eax, , , Music_bah ; §¢ãª ¢ëáâ५ |
1628 | popa |
1634 | popa |
1629 | 1635 | ||
Line 1630... | Line 1636... | ||
1630 | mov byte [Bullet + ebx], 1 |
1636 | mov byte [Bullet + ebx], 1 |
Line 1631... | Line 1637... | ||
1631 | 1637 | ||
1632 | add word bx, 2 ; X кооридината данного врага |
1638 | add word bx, 2 ; X ª®®à¨¤¨ â ¤ ®£® ¢à £ |
1633 | mov ax, [Xpl] |
1639 | mov ax, [Xpl] |
1634 | add ax, 8 |
1640 | add ax, 8 |
Line 1635... | Line 1641... | ||
1635 | mov word [Bullet + ebx],ax |
1641 | mov word [Bullet + ebx],ax |
1636 | 1642 | ||
1637 | add word bx, 2 ; X кооридината данного врага |
1643 | add word bx, 2 ; X ª®®à¨¤¨ â ¤ ®£® ¢à £ |
1638 | mov ax, [Ypl] |
1644 | mov ax, [Ypl] |
Line 1639... | Line 1645... | ||
1639 | add ax, 16 |
1645 | add ax, 16 |
Line 1647... | Line 1653... | ||
1647 | ret |
1653 | ret |
1648 | ;------------------------------------------------------------------------------- |
1654 | ;------------------------------------------------------------------------------- |
1649 | 1655 | ||
Line 1650... | Line 1656... | ||
1650 | 1656 | ||
1651 | ;------------------------Загрузка уровней--------------------------------------- |
1657 | ;------------------------ £à㧪 ã஢¥©--------------------------------------- |
1652 | load_level: |
1658 | load_level: |
1653 | imgtoimg img_level,32,32,canvas |
1659 | imgtoimg img_level,32,32,canvas |
Line 1654... | Line 1660... | ||
1654 | setimg 6,20,canvas |
1660 | setimg 0,0,canvas |
1655 | 1661 | ||
1656 | xor eax,eax |
1662 | xor eax,eax |
1657 | xor ebx,ebx |
1663 | xor ebx,ebx |
Line 1670... | Line 1676... | ||
1670 | mov [Y_bul], eax |
1676 | mov [Y_bul], eax |
1671 | mov [gold], eax |
1677 | mov [gold], eax |
1672 | mov dword [Xpl], 32 |
1678 | mov dword [Xpl], 32 |
1673 | mov dword [Ypl], 448 |
1679 | mov dword [Ypl], 448 |
1674 | mov dword [hiro_lab],0 ; проекция героя в лабиринт |
1680 | mov dword [hiro_lab],0 ; ¯à®¥ªæ¨ï £¥à®ï ¢ « ¡¨à¨â |
1675 | mov dword [v_mov], 0 |
1681 | mov dword [v_mov], 0 |
1676 | mov dword [v_mov2], 0 |
1682 | mov dword [v_mov2], 0 |
1677 | mov dword [v_fire], 0 |
1683 | mov dword [v_fire], 0 |
1678 | 1684 | ||
Line 1679... | Line 1685... | ||
1679 | xor eax,eax |
1685 | xor eax,eax |
Line 1687... | Line 1693... | ||
1687 | 1693 | ||
Line 1688... | Line 1694... | ||
1688 | xor ebx, ebx |
1694 | xor ebx, ebx |
1689 | mov ebx, [Lab] |
1695 | mov ebx, [Lab] |
1690 | add ebx, [delta_level] |
1696 | add ebx, [delta_level] |
1691 | mov ax,[Dangeon2 + ebx] ; берет байт из дангеон + смещение |
1697 | mov ax,[Dangeon2 + ebx] ; ¡¥à¥â ¡ ©â ¨§ ¤ £¥® + ᬥ饨¥ |
Line 1692... | Line 1698... | ||
1692 | 1698 | ||
1693 | sbb ebx, [delta_level] |
1699 | sbb ebx, [delta_level] |
1694 | mov [Dangeon + ebx], ax ; берет байт из дангеон + смещение |
1700 | mov [Dangeon + ebx], ax ; ¡¥à¥â ¡ ©â ¨§ ¤ £¥® + ᬥ饨¥ |
1695 | add word [Lab],1 |
1701 | add word [Lab],1 |
Line 1696... | Line 1702... | ||
1696 | mov eax, [Lab] |
1702 | mov eax, [Lab] |
Line 1714... | Line 1720... | ||
1714 | proverka_gold: |
1720 | proverka_gold: |
1715 | mov eax, [gold] |
1721 | mov eax, [gold] |
1716 | cmp ax, 10 |
1722 | cmp ax, 10 |
1717 | jna net_deneg |
1723 | jna net_deneg |
1718 | mov eax, [temp2] ; добежать до двери |
1724 | mov eax, [temp2] ; ¤®¡¥¦ âì ¤® ¤¢¥à¨ |
1719 | cmp ax, 16 |
1725 | cmp ax, 16 |
1720 | jne net_deneg |
1726 | jne net_deneg |
1721 | mov ax, [numer_level] ; увеличение левела |
1727 | mov ax, [numer_level] ; 㢥«¨ç¥¨¥ «¥¢¥« |
1722 | 1728 | ||
Line 1723... | Line 1729... | ||
1723 | add ax, 1 |
1729 | add ax, 1 |
1724 | mov [numer_level], ax |
1730 | mov [numer_level], ax |
1725 | mov [demon_kolvo], ax ; |
1731 | mov [demon_kolvo], ax ; |
Line 1730... | Line 1736... | ||
1730 | net_deneg: |
1736 | net_deneg: |
1731 | ret |
1737 | ret |
Line 1732... | Line 1738... | ||
1732 | 1738 | ||
1733 | ;------------------------------------------------------------------------------- |
1739 | ;------------------------------------------------------------------------------- |
1734 | ; УТОП |
1740 | ; |
1735 | potop: |
1741 | potop: |
1736 | mov eax, [temp2] ; добежать до двери |
1742 | mov eax, [temp2] ; ¤®¡¥¦ âì ¤® ¤¢¥à¨ |
1737 | cmp ax, 4 |
1743 | cmp ax, 4 |
1738 | jne jiwoy |
1744 | jne jiwoy |
Line 1739... | Line 1745... | ||
1739 | mov dword [gold], 0 ; увеличение левела |
1745 | mov dword [gold], 0 ; 㢥«¨ç¥¨¥ «¥¢¥« |
1740 | 1746 | ||
1741 | call load_level |
1747 | call load_level |
1742 | delay 100 |
1748 | delay 100 |
Line 1743... | Line 1749... | ||
1743 | jiwoy: |
1749 | jiwoy: |
1744 | ret |
1750 | ret |
1745 | 1751 | ||
1746 | ;************************************ |
1752 | ;************************************ |
1747 | ;положение врагов на новом уровне |
1753 | ;¯®«®¦¥¨¥ ¢à £®¢ ®¢®¬ ã஢¥ |
1748 | enemy_plaz: |
1754 | enemy_plaz: |
Line 1749... | Line 1755... | ||
1749 | mov word [Lab2], 0 ; все делать в WORD один элемент в массиве +2 следующий враг соотвтетственно 6*2= + 12 |
1755 | mov word [Lab2], 0 ; ¢á¥ ¤¥« âì ¢ WORD ®¤¨ í«¥¬¥â ¢ ¬ áᨢ¥ +2 á«¥¤ãî騩 ¢à £ á®®â¢â¥âá⢥® 6*2= + 12 |
1750 | mov ax, [demon_kolvo] |
1756 | mov ax, [demon_kolvo] |
Line 1768... | Line 1774... | ||
1768 | random 14, eax |
1774 | random 14, eax |
1769 | add eax, 1 |
1775 | add eax, 1 |
1770 | shl eax,5 |
1776 | shl eax,5 |
1771 | mov word bx, [Lab2] ; |
1777 | mov word bx, [Lab2] ; |
1772 | add word bx, 2 ; X кооридината данного врага |
1778 | add word bx, 2 ; X ª®®à¨¤¨ â ¤ ®£® ¢à £ |
1773 | mov word [Enemy + bx], ax ; |
1779 | mov word [Enemy + bx], ax ; |
1774 | ; |
1780 | ; |
1775 | random 12, eax |
1781 | random 12, eax |
1776 | add eax, 1 |
1782 | add eax, 1 |
1777 | shl eax,5 |
1783 | shl eax,5 |
1778 | mov word bx, [Lab2] ; |
1784 | mov word bx, [Lab2] ; |
1779 | add word bx, 4 ; Y кооридината данного врага |
1785 | add word bx, 4 ; Y ª®®à¨¤¨ â ¤ ®£® ¢à £ |
1780 | mov word [Enemy + bx], ax ; |
1786 | mov word [Enemy + bx], ax ; |
Line 1781... | Line 1787... | ||
1781 | 1787 | ||
1782 | mov word bx, [Lab2] ; |
1788 | mov word bx, [Lab2] ; |
1783 | add word bx, 8 ; направление движения |
1789 | add word bx, 8 ; ¯à ¢«¥¨¥ ¤¢¨¦¥¨ï |
1784 | mov word [Enemy + bx], 0 ; |
1790 | mov word [Enemy + bx], 0 ; |
1785 | add word bx, 2 ; жизнь |
1791 | add word bx, 2 ; ¦¨§ì |
Line 1786... | Line 1792... | ||
1786 | mov word [Enemy + bx], 500 ; |
1792 | mov word [Enemy + bx], 500 ; |
1787 | 1793 | ||
Line 1800... | Line 1806... | ||
1800 | 1806 | ||
Line 1801... | Line 1807... | ||
1801 | ret |
1807 | ret |
Line 1802... | Line 1808... | ||
1802 | 1808 | ||
Line 1803... | Line 1809... | ||
1803 | 1809 | ||
1804 | I_END: ; конец программы |
1810 | I_END: ; ª®¥æ ¯à®£à ¬¬ë |
1805 | 1811 | ||
1806 | 1812 | ||
1807 | 1813 | ||
1808 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
1814 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
1809 | Xpl: dd 32 ; координаты героя |
1815 | Xpl: dd 32 ; ª®®à¤¨ âë £¥à®ï |
1810 | Ypl: dd 448 |
1816 | Ypl: dd 448 |
1811 | hiro_lab: dd 0 ; проекция героя в лабиринт |
1817 | hiro_lab: dd 0 ; ¯à®¥ªæ¨ï £¥à®ï ¢ « ¡¨à¨â |
Line 1832... | Line 1838... | ||
1832 | mov_enemy: dw 0 |
1838 | mov_enemy: dw 0 |
1833 | lab_enemy: dw 0 |
1839 | lab_enemy: dw 0 |
1834 | life_enemy: dw 0 |
1840 | life_enemy: dw 0 |
1835 | 1841 | ||
Line 1836... | Line 1842... | ||
1836 | anime : dd 0 ; переменная для анимации героя и пр |
1842 | anime : dd 0 ; ¯¥à¥¬¥ ï ¤«ï ¨¬ 樨 £¥à®ï ¨ ¯à |
1837 | anime2 : dd 0 ; переменная для анимации героя и пр |
1843 | anime2 : dd 0 ; ¯¥à¥¬¥ ï ¤«ï ¨¬ 樨 £¥à®ï ¨ ¯à |
Line 1838... | Line 1844... | ||
1838 | 1844 | ||
1839 | temp1: dd 0 |
1845 | temp1: dd 0 |
1840 | temp2: dd 0 |
1846 | temp2: dd 0 |
1841 | temp3: dd 0 |
1847 | temp3: dd 0 |
1842 | temp4: dd 0 |
1848 | temp4: dd 0 |
Line 1843... | Line 1849... | ||
1843 | temp5: dd 0 |
1849 | temp5: dd 0 |
1844 | 1850 | ||
1845 | 1851 | ||
1846 | v_mov: dd 0 ; направления движения персонажа |
1852 | v_mov: dd 0 ; ¯à ¢«¥¨ï ¤¢¨¦¥¨ï ¯¥àá® ¦ |
1847 | v_mov2: dd 0 ; направления движения персонажа |
1853 | v_mov2: dd 0 ; ¯à ¢«¥¨ï ¤¢¨¦¥¨ï ¯¥àá® ¦ |
1848 | v_fire: dd 0 ; направления движения персонажа |
1854 | v_fire: dd 0 ; ¯à ¢«¥¨ï ¤¢¨¦¥¨ï ¯¥àá® ¦ |
1849 | Lab: dd 0 |
1855 | Lab: dd 0 |
1850 | Lab2: dw 0 |
1856 | Lab2: dw 0 |
Line 1851... | Line 1857... | ||
1851 | Lab3: dw 0 |
1857 | Lab3: dw 0 |
Line 1852... | Line 1858... | ||
1852 | perem1: dd 0 |
1858 | perem1: dd 0 |
1853 | perem2: dd 0 |
1859 | perem2: dd 0 |
1854 | 1860 | ||
1855 | timer1 dd 0 ; таймер используемый для анимации воды, врагов --- бегает от 0 до 10 |
1861 | timer1 dd 0 ; â ©¬¥à ¨á¯®«ì§ã¥¬ë© ¤«ï ¨¬ 樨 ¢®¤ë, ¢à £®¢ --- ¡¥£ ¥â ®â 0 ¤® 10 |
1856 | 1862 | ||
1857 | ;------------------------------------------------------------------------------- |
1863 | ;------------------------------------------------------------------------------- |
1858 | ;1 обычная стена, 2 непробиваемая, 4 вода, 8 лесница, 12 алмаз, 0 пустота 16 - exit |
1864 | ;1 ®¡ëç ï á⥠, 2 ¥¯à®¡¨¢ ¥¬ ï, 4 ¢®¤ , 8 «¥á¨æ , 12 «¬ §, 0 ¯ãáâ®â 16 - exit |
Line 2045... | Line 2051... | ||
2045 | dw 0,0,0,0,0,0 |
2051 | dw 0,0,0,0,0,0 |
2046 | ;------------------------------------------------------------------------------- |
2052 | ;------------------------------------------------------------------------------- |
2047 | 2053 | ||
Line 2048... | Line 2054... | ||
2048 | 2054 | ||
2049 | Enemy: dw 1,448,128,0,0,500 ;враги класс,Х,У,положение в лабиринте,направление движения,жизнь |
2055 | Enemy: dw 1,448,128,0,0,500 ;¢à £¨ ª« áá,,,¯®«®¦¥¨¥ ¢ « ¡¨à¨â¥, ¯à ¢«¥¨¥ ¤¢¨¦¥¨ï,¦¨§ì |
2050 | dw 0,32,32,0,0,0 |
2056 | dw 0,32,32,0,0,0 |
2051 | dw 0,64,32,0,0,0 |
2057 | dw 0,64,32,0,0,0 |
2052 | dw 0,416,32,0,0,0 |
2058 | dw 0,416,32,0,0,0 |
2053 | dw 0,256,256,0,0,0 |
2059 | dw 0,256,256,0,0,0 |
Line 2057... | Line 2063... | ||
2057 | dw 0,448,448,0,0,0 |
2063 | dw 0,448,448,0,0,0 |
2058 | 2064 | ||
Line 2059... | Line 2065... | ||
2059 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
2065 | ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
Line -... | Line 2066... | ||
- | 2066 | ||
- | 2067 | if lang eq ru |
|
- | 2068 | title db ' ¤«ï ®«¨¡à¨ |
|
- | 2069 | else |
|
- | 2070 | title db 'Dungeon for KolibriOS |
|
- | 2071 | endf |
|
2060 | 2072 | ||
2061 | bullet_bmp: |
2073 | bullet_bmp: |
2062 | file 'bullet.bmp' |
2074 | file 'bullet.bmp' |
Line 2063... | Line 2075... | ||
2063 | rb 1 |
2075 | rb 1 |
Line 2097... | Line 2109... | ||
2097 | door2_bmp: |
2109 | door2_bmp: |
2098 | file 'door2.bmp' |
2110 | file 'door2.bmp' |
2099 | rb 1 |
2111 | rb 1 |
Line 2100... | Line -... | ||
2100 | - | ||
Line 2101... | Line 2112... | ||
2101 | title db 'Dungeon (z/x - shoot)',0 |
2112 | |
2102 | 2113 | ||
Line 2103... | Line 2114... | ||
2103 | img_level: |
2114 | img_level: |
Line 2150... | Line 2161... | ||
2150 | db 0x09, 0x03, 0 |
2161 | db 0x09, 0x03, 0 |
2151 | 2162 | ||
Line 2152... | Line 2163... | ||
2152 | entered rd 1 |
2163 | entered rd 1 |
Line 2153... | Line 2164... | ||
2153 | 2164 | ||
2154 | imgcount rd 1 ; кол-во всего кадров в анимации |
2165 | imgcount rd 1 ; ª®«-¢® ¢á¥£® ª ¤à®¢ ¢ ¨¬ 樨 |
Line 2155... | Line 2166... | ||
2155 | img_index rd 1 ; номер текущего кадра |
2166 | img_index rd 1 ; ®¬¥à ⥪ã饣® ª ¤à |
2156 | 2167 | ||
2157 | ;hashtable rd 4096 ; рабочая область для РеадГИФ процедуры |
2168 | ;hashtable rd 4096 ; à ¡®ç ï ®¡« áâì ¤«ï ¥ ¤ ¯à®æ¥¤ãàë |
Line 2158... | Line -... | ||
2158 | workarea: |
- | |
2159 | file 'aniall.gif' |
2169 | workarea: |
2160 | 2170 | file 'aniall.gif' |
|
Line 2161... | Line 2171... | ||
2161 | 2171 | ||
2162 | ;temp rb 0x100000 ; место для ГИФ фаила |
2172 | ;temp rb 0x100000 ; ¬¥áâ® ¤«ï ä ¨« |
2163 | rb 10 |
2173 | rb 10 |