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