Subversion Repositories Kolibri OS

Rev

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,'Ž„‡…Œ…‹œ… ¤«ï Š®«¨¡à¨ Ž‘ <<>> z/x áâ५ïâì',cl_White+font_Big
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 ; место для ГИФ фаила