Subversion Repositories Kolibri OS

Rev

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 'Ž„‡…Œ…‹œ… ¤«ï Š®«¨¡à¨Ž‘  z/x áâ५ïâì',0
-
 
2069
else
-
 
2070
title db 'Dungeon for KolibriOS  z/x - shoot',0
-
 
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