diff --git a/programs/games/almaz/ALMAZ.ASM b/programs/games/almaz/ALMAZ.ASM index 23dad76646..0ce338d519 100644 --- a/programs/games/almaz/ALMAZ.ASM +++ b/programs/games/almaz/ALMAZ.ASM @@ -1,2190 +1,2177 @@ - -WND_COLOR equ 0x02aa00FF - -use32 - org 0x0 - db 'MENUET01' - dd 0x01 - dd START - dd I_END - dd 0x300000 - dd 0x27fff0 - dd 0x0 - dd 0x0 - -include 'lang.inc' -include '..\..\macros.inc' ; ᥬ騪! - -include 'ASCL.INC' -include 'ASCGL.INC' - - - -gif_hash_offset = gif_hash_area -COLOR_ORDER equ MENUETOS - -DELAY equ 2 ; প । 室 ᫥饬 ᥪ - -START: -;**************** -; 뢠 䠨 -;**************** -openfile: -; and [entered],0 -; mov ecx,499*3*4 ;at start - xor ecx,ecx - mov ecx,1 - - ; Convert gif to animation format - giftoani workarea,Image,ecx - bmptoimg bullet_bmp, img_bullet - bmptoimg level_bmp, img_level - bmptoimg kirpich, img_area - bmptoimg kirpich2, img_area2 - bmptoimg kirpich3, img_area3 - bmptoimg lest_bmp, img_lestniza - bmptoimg water1_bmp, img_water1 - bmptoimg water2_bmp, img_water2 - bmptoimg door1_bmp, img_door1 - bmptoimg door2_bmp, img_door2 - - -red: - call timer - call draw_window -; call load_level -; delay 200 - -still: - timeevent DELAY,no_event, red, key, button - -no_event: - call draw_subimage - jmp still - - key: - ; ᮭ - mov eax,2 - int 0x40 - cmp ah, 179 ; ࠢ 4 - je go_mov - cmp ah, 176 ; 1 - je go_mov - cmp ah, 178 ; 3 - je go_mov - cmp ah, 177 ; 2 - je go_mov - cmp ah, 120 ; 2 - je go_fire - cmp ah, 122 ; 2 - je go_fire - cmp ah, 239 ; 2 - je go_fire_left - cmp ah, 231 ; 2 - je go_fire - - - jmp no_mov ; if not left, right, up, down, then go NO MOV - - go_mov: - ;mov ebx, [v_mov2] - mov [v_mov2], ah - sub word [v_mov2], 175 ; ⭨ 175 ⠥ 1,2,3 4 ᮮ⢥⢥ ࠢ ᮭ - jmp no_mov ; if not left, right, up, down, then go NO MOV - - go_fire_left: - xor eax,eax - mov ah, 122 - call fire - jmp no_mov - go_fire: - call fire - no_mov: - ; ᮭ - jmp still - - button: - mov eax, 17 - int 0x40 - - cmp ah,1 - jne noclose - _close: - or eax,-1 - int 0x40 - noclose: - jmp still - -; ********************************************* -; ******* ******* -; ********************************************* - -draw_window: - startwd - - mov eax,0 - mov ebx,50*65536+522 - mov ecx,50*65536+536 - mov edx,WND_COLOR - mov esi,0x8050FFd0 - mov edi,0x005080d0 - int 0x40 - - label 8,6,' <<>> z/x ५',cl_White+font_Big - - mov eax,8 - mov ebx,(500)*65536+12 - mov ecx,5*65536+12 - mov edx,1 - mov esi,0x000000 - int 0x40 - - xor ecx,ecx - call draw_subimage - cmp [imgcount],1 - je .enddraw - - mov ecx,[img_index] - - call draw_subimage - - .enddraw: - - endwd - - -ret - -;******************************************* -; LABIRINT -;******************************************* - - labirint: - - ; 뢮 ਭ - cycle: - - mov eax, [Lab] - shl eax, 5 ; ᤢ ॣ ࠢ 5 樨 ࠢ 㬭 32 - mov [perem1], eax - mov eax, [Lab] - shr eax, 4 ; ᤢ ॣ - shl eax, 5 ; ᤢ ⭮ ( ࠢ 楫᫥ 256) - mov [perem2], eax - shl eax, 4 ; ࠢ ⭨ न 㦭 -> -256*X - sbb dword [perem1], eax; - - mov ebx, [Lab] - sbb ebx, 1 - mov eax,[Dangeon + ebx] ; + ᬥ饭 - - cmp ah, 1 ; - je go_block - - cmp ah, 0 ; - je back_block - - cmp ah, 12 ; ᪠ 䮭 - je back_block - - cmp ah, 3 ; - je boom_block - - cmp ah, 16 ; - je door_block - - cmp ah, 2 ; ᪠ 䮭 - je cool_block - - jmp end_block - go_block: - imgtoimg img_area,dword [perem1],dword [perem2],canvas - jmp end_block - - cool_block: - imgtoimg img_area3,dword [perem1],dword [perem2],canvas - jmp end_block - - - back_block: - imgtoimg img_area2,dword [perem1],dword [perem2],canvas - jmp end_block - - door_block: - imgtoimg img_door1,dword [perem1],dword [perem2],canvas - - mov eax, [gold] - cmp ax, 10 ; ᫨ ᮡ࠭ 10 - jna end_block - imgtoimg img_door2,dword [perem1],dword [perem2],canvas - jmp end_block - - - boom_block: - imgtoimg img_area,dword [perem1],dword [perem2],canvas - mov ebp,18 ; - mov eax, dword [perem1] - mov dword [X_anime], eax - mov eax, dword [perem2] - mov dword [Y_anime], eax - call animashka - - mov ecx, [timer1] ; - and ecx, 15 - cmp ecx, 0 - jne end_block - - mov ebx, [Lab] - mov byte [Dangeon + ebx], 0 ; + ᬥ饭 - - - end_block: - - add word [Lab],1 - mov eax, [Lab] - - cmp eax, 256 ; if eax == 0 - je cycle_end ; jump to cycle_end: - jmp cycle ; - - cycle_end: - - mov eax, 0 - mov [Lab],eax - - ret ; END labirint - - -;******************************************* -; -;******************************************* - lestniza: - ; 뢮 ਭ - cycle2: - - mov eax, [Lab] - shl eax, 5 ; ᤢ ॣ ࠢ 5 樨 ࠢ 㬭 32 - mov [perem1], eax - mov eax, [Lab] - shr eax, 4 ; ᤢ ॣ - shl eax, 5 ; ᤢ ⭮ ( ࠢ 楫᫥ 256) - mov [perem2], eax - shl eax, 4 ; ࠢ ⭨ न 㦭 -> -256*X - sbb dword [perem1], eax; - - - mov ebx, [Lab] - sbb ebx, 1 - mov eax,[Dangeon + ebx] ; + ᬥ饭 - - cmp ah, 8 ; - je go_lestniza - - jmp end_lestniza - go_lestniza: - - imgtoimg img_lestniza,dword [perem1],dword [perem2],canvas - end_lestniza: - - add word [Lab],1 - mov eax, [Lab] - - cmp eax, 256 ; if eax == 0 - je cycle2_end ; jump to cycle_end: - jmp cycle2 ; - - cycle2_end: - - mov eax, 0 - mov [Lab],eax - - - ret ; END lestniza - - - -;******************************************* -; -;******************************************* - water: - - ; 뢮 ਭ - cycle3: - - mov eax, [Lab] - shl eax, 5 ; ᤢ ॣ ࠢ 5 樨 ࠢ 㬭 32 - mov [perem1], eax - mov eax, [Lab] - shr eax, 4 ; ᤢ ॣ - shl eax, 5 ; ᤢ ⭮ ( ࠢ 楫᫥ 256) - mov [perem2], eax - shl eax, 4 ; ࠢ ⭨ न 㦭 -> -256*X - sbb dword [perem1], eax; - - - mov ebx, [Lab] - sbb ebx, 1 - mov eax,[Dangeon + ebx] ; + ᬥ饭 - - cmp ah, 4 ; - je go_water - - cmp ah, 12 ; ᮢ - je go_almaz - - jmp end_water - go_water: - mov eax,0 ; - mov eax, [timer1]; - and eax, 15 - cmp eax, 7 ; - jb go_water2 - - imgtoimg img_water1,dword [perem1],dword [perem2],canvas - jmp end_water - - go_water2: - imgtoimg img_water2,dword [perem1],dword [perem2],canvas - - jmp end_water - go_almaz: - - mov eax,0 ; - mov eax, [timer1]; - and eax, 31 - - cmp eax, 10 - ja almaz2 - - mov ebp,14 ; - mov eax, dword [perem1] - mov dword [X_anime], eax - mov eax, dword [perem2] - mov dword [Y_anime], eax - call animashka - jmp end_water - - almaz2: - cmp eax, 20 - ja almaz3 - - mov ebp,15 ; - mov eax, dword [perem1] - mov dword [X_anime], eax - mov eax, dword [perem2] - mov dword [Y_anime], eax - call animashka - jmp end_water - - almaz3: - mov ebp,16 ; - mov eax, dword [perem1] - mov dword [X_anime], eax - mov eax, dword [perem2] - mov dword [Y_anime], eax - call animashka - - - end_water: - - add word [Lab],1 - mov eax, [Lab] - - cmp eax, 256 ; if eax == 0 - je cycle3_end ; jump to cycle_end: - jmp cycle3 ; - - cycle3_end: - - mov eax, 0 - mov [Lab],eax - - - ret ; END water - - -;******************************************* -; 뢮 ᫥騩 ᯨ᪠ ⨭ -;******************************************* -draw_subimage: - ;aframetoimg Image,32, 32,canvas,0x00ffffff ; , ஧ - - call labirint - call lestniza - call enemy_mas - call enemy_mov -;------------------------------------------------------------------------------- - mov ebx, [gold] - cmp bx, 5 ;㢥祭 ᪮ ࠣ ᫨ ࠫ 9 - jna lov_velo - call enemy_mas - call enemy_mov - lov_velo: -;------------------------------------------------------------------------------- -;------------------------------------------------------------------------------- - mov ebx, [gold] - cmp bx, 9 ;㢥祭 ᪮ ࠣ ᫨ ࠫ 9 - jna lov_velo2 - call enemy_mas - call enemy_mov - lov_velo2: -;------------------------------------------------------------------------------- -; call enemy_mas -; call enemy_mov - call hiro - call hiro_mov - call water - - call bullet_mov - call bullet_mov - call bullet_mov - call bullet_mas - call bullet_mov - call bullet_mov - call bullet_mov - call bullet_mas - call proverka_gold - call potop - - setimg 6,20,canvas - - call timer - call tablo -ret - -;@@@@@@@@@@@@@@@@@@ -animashka: -;!!! । 맮 楤 ⠭ ebx[ ] x,y - - mov edi,coords - mov esi, Image ; 誠 -; -; mov ebp, dword [edi+8] ;ecx 뢮 -; inc ebp ; 㢥祭 -; cmp ebp,3 ; ᨬ쭮 ⢮ ஢ !!!!!!! -; jna ok_fr ; ᫨ 뢮 ᨬ쭮 ⢠ ஢ -;!!!!!!!!! mov ebp,2 ;㫥 - -ok_fr: - mov dword [edi+8], ebp ; 뢮 -loo: - cmp ebp,0 ; ᫨ 㫥 ࠧ 뢮 ? - je setpic - movzx eax,word [esi+4] ; ᫨ 㢥稢 ? - movzx ebx,word [esi+6] - mul ebx ;dword [esi+4] 㬭 ebx eax १ eax edx - mov ebx,3 ; ⢮ ஢ ??? - mul ebx - add eax,8 - add esi,eax - dec ebp - jmp loo -setpic: - - pushad -; aframetoimg esi,dword [edi], dword [edi+4],canvas,0x00ffffff ; , ஧ -; aframetoimg esi,32, 32,canvas,0x00ffffff ; , ஧ - aframetoimg esi,dword [X_anime],dword [Y_anime],canvas,0x00ffffff ; , ஧ - ;call enemy_mas - popad -ret -;@@@@@@@@@@@@@@ - - - ;-------------- TIMER -------------- - timer: - mov eax,0 ; - mov eax,[timer1] ; - add eax, 1; - mov [timer1], eax - - cmp eax, 64 ; ⠩ 0 64 - je nul_timer - jmp timer_dalee - nul_timer : - mov [timer1], 0 - timer_dalee: - ret - ;-------------- TIMER -------------- - - - - - -;******************************************* -; ENEMY -;******************************************* - - enemy_mas: ; 뢮 ENEmy ENEMYYYYYYYYYYYYYYY ENEMYYYYYYYYYYYYYY !!! - - mov word [Lab2], 0 ; WORD ᨢ +2 ᫥騩 ࠣ ᮮ⢥ 6*2= + 12 - - cycle4: - - mov ebx, 0 - mov ecx, 0 - mov edx, 0 - mov esi, 0 - - mov word bx, [Lab2] - mov word ax,[Enemy+bx] ; Enemy + ᬥ饭 - - cmp ax, 1 ; ࠣ 1 - je go_enemy - - jmp end_enemy - go_enemy: - - add word bx, 2 ; X ਤ ࠣ - mov word ax, [Enemy + bx] - mov word [X_enemy], ax - - add word bx, 2 ; Y ਤ ࠣ - mov word ax, [Enemy + ebx] - mov word [Y_enemy], ax - - add word bx, 2 ; ᨢ ࠣ - mov word ax, [Enemy + ebx] - mov word [lab_enemy], ax - - add word bx, 2 ; ࠢ ࠣ - mov word ax, [Enemy + ebx] - mov word [mov_enemy], ax - - add word bx, 2 ; enemy LIFE - mov word ax, [Enemy + ebx] - mov word [life_enemy], ax - - cmp ax, 499; ; ஦ ࠣ - ja enemy_dalee - mov ebp,2 ; - mov eax, dword [X_enemy] - mov dword [X_anime], eax - mov eax, dword [Y_enemy] - mov dword [Y_anime], eax - call animashka - jmp enemy_bmp_end - - - - enemy_dalee: - xor eax,eax ; - mov eax, [X_enemy] ; - and eax, 15 - cmp ax, 7; - ja enemy_1 - - jmp enemy_2 - - enemy_1: - - mov ebp,0 ; - mov eax, dword [X_enemy] - mov dword [X_anime], eax - mov eax, dword [Y_enemy] - mov dword [Y_anime], eax - call animashka - - jmp enemy_bmp_end - - enemy_2: - mov ebp,1 ; - mov eax, dword [X_enemy] - mov dword [X_anime], eax - mov eax, dword [Y_enemy] - mov dword [Y_anime], eax - call animashka - enemy_bmp_end: - - end_enemy: - - mov eax, 0 - mov word ax, [Lab2] - - cmp ax, 96 ; if eax == 0 - je cycle4_end ; jump to cycle_end: - - add word [Lab2],12 - - jmp cycle4 ; - - cycle4_end: - - ret ; END eNEMYYYYYYYYYYYYYYY ENEMYYYYYYYYYYYYYY !!! - -;$$$$$$$$$$$$$$$$$$$$$$$$$$ -; ENEMY MOV -;$$$$$$$$$$$$$$$$$$$$$$$$$$ -enemy_mov: - mov word [Lab2], 0 ; WORD ᨢ +2 ᫥騩 ࠣ ᮮ⢥ 6*2= + 12 - - cycle5: - - mov ebx, 0 - mov ecx, 0 - mov edx, 0 - mov esi, 0 - - mov word bx, [Lab2] - mov word ax,[Enemy+bx] ; Enemy + ᬥ饭 - - cmp ax, 1 ; ࠣ 1 - je go_mov_enemy - - jmp end_mov_enemy - go_mov_enemy: - - add word bx, 2 ; X ਤ ࠣ - mov word ax, [Enemy + bx] - mov word [X_enemy], ax - - add word bx, 2 ; Y ਤ ࠣ - mov word ax, [Enemy + ebx] - mov word [Y_enemy], ax - - add word bx, 2 ; ᨢ ࠣ - mov word ax, [Enemy + ebx] - mov word [lab_enemy], ax - - add word bx, 2 ; ࠢ ࠣ - mov word ax, [Enemy + ebx] - mov word [mov_enemy], ax - - add word bx, 2 ; enemy LIFE - mov word ax, [Enemy + ebx] - mov word [life_enemy], ax - - cmp ax, 499; ; ஦ ࠣ - ja dalee_enemy_mov - add ax, 1 - - mov word [Enemy + ebx], ax - - jmp end_mov_enemy - - dalee_enemy_mov: - ; - mov ax, [Xpl] - add ax, 23 - cmp ax, [X_enemy] - jna ne_em - sbb ax, 45 - cmp ax, [X_enemy] - ja ne_em - mov ax, [Ypl] - add ax, 23 - cmp ax, [Y_enemy] - jna ne_em - sbb ax, 45 - cmp ax, [Y_enemy] - ja ne_em - call load_level ; DEAD HIRO - delay 150 - - ne_em: - ; 1 㫨 - - mov word bx, 0 - mov word ax,[Bullet + ebx] - cmp ax, 0 - je no_bullet - - add word bx, 2 ; [Xpl] - mov word cx, [Bullet + ebx] - - add word bx, 2 ; [Ypl] - mov word dx, [Bullet + ebx] - - cmp dx, [Y_enemy] - jna no_bullet - sbb dx, 32 - cmp dx, [Y_enemy] - ja no_bullet - cmp cx, [X_enemy] - jna no_bullet - sbb cx, 32 - cmp cx, [X_enemy] - ja no_bullet - mov word bx, [Lab2] - add word bx, 10 ; enemy LIFE - mov word [Enemy + ebx],0 - - mov byte [Bullet], 0 ; - - no_bullet: - - - ; - mov word ax, [mov_enemy] ; - cmp ax, 1 ; left ; - jne next_2 ; - sbb word [X_enemy], 1 ; - mov word ax, [X_enemy] ; - mov word bx, [Lab2] ; - add word bx, 2 ; X ਤ ࠣ - mov word [Enemy + bx], ax ; - ; - next_2: ; - cmp ax, 2 ; down ; - jne next_3 ; - add word [Y_enemy], 1 ; - mov word ax, [Y_enemy] ; - mov word bx, [Lab2] ; - add word bx, 4 ; Y ਤ ࠣ - mov word [Enemy + bx], ax ; - ; - next_3: ; - cmp ax, 3 ; up ; - jne next_4 ; - sbb word [Y_enemy], 1 ; - mov word ax, [Y_enemy] ; - mov word bx, [Lab2] ; - add word bx, 4 ; Y ਤ ࠣ - mov word [Enemy + bx], ax ; - ; - next_4: ; - cmp ax, 4 ; right ; - jne next_end - - ;ࠢ樮 ⪠ ࠡ - ࠣ ᫥ ࠢ ஫⠥ ⮩ - mov word bx, [X_enemy] ; ᫮ 樨 ⨢ - and ebx, 31 ; X 樨 ⨢ - cmp bx, 0 ; - jne n4_dalee ; - mov bx,[lab_enemy] - add bx,16 - mov ax, [Dangeon + bx] - and eax,15 - cmp word ax, 0 - je next_end - cmp word ax, 4 - je next_end - ; ⪨ - - n4_dalee: - ; - add word [X_enemy], 1 ; - mov word ax, [X_enemy] ; - mov word bx, [Lab2] ; - add word bx, 2 ; X ਤ ࠣ - mov word [Enemy + bx], ax ; - ; - next_end: - ;END - - ; - - ; 롮 ᭨ - mov word bx, [X_enemy] ; ᫮ 樨 ⨢ - and ebx, 31 ; X 樨 ⨢ - cmp bx, 0 ; - jne end_les ; - mov word bx, [Y_enemy] ; ᫮ 樨 ⨢ - and ebx, 31 ; X 樨 ⨢ - cmp bx, 0 ; - jne end_les ; - - random 300, eax - - cmp eax, 150 - ja les2 - jmp end_up_or_down - les2: - - mov eax, [Ypl] - cmp eax, [Y_enemy] - jna bolee - mov word [mov_enemy],2 ; - mov word ax, [mov_enemy] ; - mov word bx, [Lab2] ; - add word bx, 8 ; ࠢ ࠣ - mov word [Enemy + bx], ax ; - jmp end_les - - bolee: - mov word [mov_enemy],3 ; up - mov word ax, [mov_enemy] ; - mov word bx, [Lab2] ; - add word bx, 8 ; ࠢ ࠣ - mov word [Enemy + bx], ax ; - jmp end_les - - end_up_or_down: - - random 300, eax - cmp eax, 150 - ja les22 - jmp end_les - les22: - - mov eax, [Xpl] - cmp eax, [X_enemy] - jna bolee2 - mov word [mov_enemy],4 ; - mov word ax, [mov_enemy] ; - mov word bx, [Lab2] ; - add word bx, 8 ; ࠢ ࠣ - mov word [Enemy + bx], ax ; - jmp end_les - - bolee2: - mov word [mov_enemy],1 ; up - mov word ax, [mov_enemy] ; - mov word bx, [Lab2] ; - add word bx, 8 ; ࠢ ࠣ - mov word [Enemy + bx], ax ; - - end_les: - ; end 롮 ᭨ - - ;ࠢ - mov word bx, [X_enemy] ; ᫮ 樨 ⨢ - and ebx, 31 ; X 樨 ⨢ - cmp bx, 0 ; - jne end_grava ; - - mov bx,[lab_enemy] - add bx,16 - mov ax, [Dangeon + bx] - - and eax,15 - cmp word ax, 0 - je grava - cmp word ax, 4 - je grava - jmp end_grava - grava: - mov word [mov_enemy], 2 ; padenie - mov word ax, [mov_enemy] ; - mov word bx, [Lab2] ; - add word bx, 8 ; ࠢ ࠣ - mov word [Enemy + bx], ax ; - - end_grava: - ; ࠢ樨 - - ; ࠣ ਭ - mov eax, 0 ; - mov eax, [Y_enemy] ; - shr eax, 5 ; - shl eax, 4 ; - mov ebx, 0 ; - mov ebx, [X_enemy] ; - shr ebx, 5 ; - add eax, ebx ; - mov [lab_enemy], eax ; - mov word bx, [Lab2] ; - add word bx, 6 ; ࠢ ࠣ - mov word [Enemy + bx], ax ; - ; ࠣ ਭ - - - - - - - ; - mov word bx, [Y_enemy] ; ᫮ 樨 ⨢ - and bx, 31 ; Y 樨 ⨢ - cmp bx, 0 ; - jne end_zapret ; - mov word ax, [X_enemy] ; ᫮ 樨 ⨢ - and ax, 31 ; X 樨 ⨢ - cmp ax, 0 ; - jne end_zapret ; - - mov word ax, [mov_enemy] ; ᫮ 樨 ⨢ - - cmp ax, 0 - jne duma1 - ; 롮 - mov eax, [timer1] - and eax, 3 - cmp eax, 0 - jne dalee_duma1 - add eax, 4 - dalee_duma1: - - mov word [mov_enemy], ax ; - mov word ax, [mov_enemy] ; - mov word bx, [Lab2] ; - add word bx, 8 ; ࠢ ࠣ - mov word [Enemy + bx], ax ; - - - - duma1: - cmp ax, 4 - jne duma2 ; ࢥઠ ࠢ - mov bx,[lab_enemy] - add bx,1 - mov ax, [Dangeon + bx] - and eax,3 - cmp ax, 0 - jne duma_stop - jmp duma_end - - duma2: - cmp ax, 1 - jne duma3 ; ᫥ - mov bx,[lab_enemy] - sbb bx,1 - mov ax, [Dangeon + bx] - and eax,3 - cmp ax, 0 - jne duma_stop - jmp duma_end - - duma3: - cmp ax, 2 - jne duma4 ; ᭨ - mov bx,[lab_enemy] - add bx,16 - mov ax, [Dangeon + bx] - and eax,3 - cmp ax, 0 - jne duma_stop - jmp duma_end - - duma4: - cmp ax, 3 - jne duma_stop ; ᢥ - - mov bx,[lab_enemy] ; ᫨ ௨ - sbb bx,16 - mov ax, [Dangeon + bx] - and eax,3 - cmp ax, 0 ; ᫨ ௨ - jne duma_stop - - mov bx,[lab_enemy] ; ᫨ ࠣ ᭨ - mov ax, [Dangeon + bx] - and eax,15 - cmp ax, 8 - jne duma_stop - - jmp duma_end - - duma_stop: - - mov word [mov_enemy], 0 ; - mov word ax, [mov_enemy] ; - mov word bx, [Lab2] ; - add word bx, 8 ; ࠢ ࠣ - mov word [Enemy + bx], ax ; - - duma_end: - - end_zapret: - ; - - end_mov_enemy: - - mov eax, 0 - mov word ax, [Lab2] - - cmp ax, 96 ; if eax == 0 - je cycle5_end ; jump to cycle_end: - - add word [Lab2],12 - - jmp cycle5 ; - - cycle5_end: - - -ret - -;***************************** -; HIRO -;***************************** - - hiro: - - mov ecx, [v_fire] ;५졠 - cmp ecx, 0 - je next_anima - cmp ecx, 1 - je wprawo - mov ebp,12 ; - mov eax, dword [Xpl] - mov dword [X_anime], eax - mov eax, dword [Ypl] - mov dword [Y_anime], eax - call animashka - mov ecx, [timer1] ;५졠 - and ecx, 15 - cmp ecx, 0 - jne end_hiro - mov dword [v_fire], 0 - jmp end_hiro - - wprawo: - mov ebp,11 ; - mov eax, dword [Xpl] - mov dword [X_anime], eax - mov eax, dword [Ypl] - mov dword [Y_anime], eax - call animashka - mov ecx, [timer1] ;५졠 - and ecx, 15 - cmp ecx, 0 - jne end_hiro - mov dword [v_fire], 0 - jmp end_hiro - - ;५졠 - jmp end_hiro - - next_anima: - mov eax, [v_mov] - cmp eax, 1 - jne next_r - mov eax,0 ; - mov eax, [Xpl]; - and eax, 15 - cmp eax, 7 ; - ja next_l1 - - mov ebp,3 ; - mov eax, dword [Xpl] - mov dword [X_anime], eax - mov eax, dword [Ypl] - mov dword [Y_anime], eax - call animashka - jmp end_hiro - - next_l1: - mov ebp,5 ; - mov eax, dword [Xpl] - mov dword [X_anime], eax - mov eax, dword [Ypl] - mov dword [Y_anime], eax - call animashka - pusha - mcall 55, eax, , , Music_mov ; ५ - popa - - jmp end_hiro - - next_r: - cmp eax, 4 - jne next_d - - mov eax,0 ; - mov eax, [Xpl]; - and eax, 15 - cmp eax, 7 ; - ja next_d1 - - mov ebp,4 ; - mov eax, dword [Xpl] - mov dword [X_anime], eax - mov eax, dword [Ypl] - mov dword [Y_anime], eax - call animashka - - pusha - mcall 55, eax, , , Music_mov ; ५ - popa - jmp end_hiro - - next_d1: - mov ebp,6 ; - mov eax, dword [Xpl] - mov dword [X_anime], eax - mov eax, dword [Ypl] - mov dword [Y_anime], eax - call animashka - - jmp end_hiro - - next_d: - cmp eax, 2 - jne next_u - mov ebp,13 ; - mov eax, [temp2] - cmp eax, 8 - jne padaem - mov ebp,10 ; - padaem: - mov eax, [temp5] - cmp eax, 8 - jne padaem2 - mov ebp,10 ; - padaem2: - mov eax, dword [Xpl] - mov dword [X_anime], eax - mov eax, dword [Ypl] - mov dword [Y_anime], eax - call animashka - jmp end_hiro - - next_u: - cmp eax, 3 - jne next_s - mov eax,0 ; - mov eax, [Ypl]; - and eax, 15 - cmp eax, 7 ; - ja next_u1 - - mov ebp,10 ; - mov eax, dword [Xpl] - mov dword [X_anime], eax - mov eax, dword [Ypl] - mov dword [Y_anime], eax - call animashka - jmp end_hiro - - next_u1: - mov ebp,9 ; - mov eax, dword [Xpl] - mov dword [X_anime], eax - mov eax, dword [Ypl] - mov dword [Y_anime], eax - call animashka - - jmp end_hiro - - next_s: - cmp eax, 0 - jne next_s - mov ebp,17; - mov eax, dword [Xpl] - mov dword [X_anime], eax - mov eax, dword [Ypl] - mov dword [Y_anime], eax - call animashka - jmp end_hiro - - end_hiro: - - ret ; END Hiro -;************** -; end HIRO -;************** - - -;**************** -; Hiro MOV -;**************** -hiro_mov: - - ; - - ; ᫥ ᥤ - mov ebx, [hiro_lab] - sbb ebx,2 - mov eax,[Dangeon + bx] ; up - mov [temp1], ah ; temp4 - ; - add ebx,1 ; left hiro right - mov eax,[Dangeon + bx] ; temp1 temp2 temp3 - mov [temp2], ah ; - -;------------------------------------------------------------------------------- -; -;------------------------------------------------------------------------------- - mov ecx, [Ypl] ; ᫮ 樨 ⨢ - and ecx, 31 ; Y 樨 ⨢ - - mov edx, [Xpl] ; ᫮ 樨 ⨢ - and edx, 31 ; Y 樨 ⨢ - or edx,ecx ; ⪮ ᯮ樮஢ - cmp edx, 0 - jne no_almaz - - cmp ah, 12 - jne no_almaz - xor cx, cx - add ebx,1 ; !!! 祬 ᥤ - mov [Dangeon + bx], ch - sbb ebx, 1 ; !!! - mov ecx, [gold] - add ecx, 1 - mov [gold], ecx - pusha - mcall 55, eax, , , Music_almaz ; Almaz - popa - no_almaz: -;------------------------------------------------------------------------------- -; -;------------------------------------------------------------------------------- - ; down - add ebx,1 ; temp5 - mov eax,[Dangeon + bx] ; - mov [temp3], ah - - sbb ebx,17 ; !!!!!!!!!!!! - mov eax,[Dangeon + bx] ; ⢨ ⥪ MACROS.INC ebx=17 , ⢨ ebx=16 - mov [temp4], ah - - add ebx,32 ; - mov eax,[Dangeon + bx] ; - mov [temp5], ah - ; ᫥ ᥤ - - - - - - ;ࠧ襭 - mov eax,0 ; - mov eax,[v_mov2] ; - and eax,7 - and eax,2 - cmp eax, 2 - je smena - - mov ebx, [Ypl] ; ᫮ 樨 ⨢ - and ebx, 31 ; Y 樨 ⨢ - cmp ebx, 0 ; - jne end_tamgna ; - smena: - - mov eax,0 ; - mov eax,[v_mov2] ; - and eax,7 - and eax,2 - cmp eax, 0 - je smena2 - - mov ebx, [Xpl] ; ᫮ 樨 ⨢ - and ebx, 31 ; X 樨 ⨢ - cmp ebx, 0 ; - jne end_tamgna ; - - smena2: - mov eax, [v_mov2] - and eax, 7 - mov [v_mov], eax - end_tamgna: - ;ࠧ襭 - - - ; - mov ebx, [Ypl] ; - and ebx, 31 ; Y 樨 ⨢ - cmp ebx, 0 ; - jne end_stop ; - mov eax, [Xpl] ; ⮣ 뫮 㯨࠭ - and eax, 31 ; X 樨 ⨢ - cmp eax, 0 ; - jne end_stop ; - mov eax, [v_mov] - - cmp eax, 2 - je stop_d - jmp stop_u - - stop_d: - mov ebx, [temp5] - ;⪠ 2 ࠢ 1 ᫨ ⮭ ௨, ன 室 ᪢ ⮭ - - cmp ebx, 2 - jne no_zaplat1 - - sbb ebx,1 - - no_zaplat1: - - and ebx,3 - or eax, ebx - - cmp eax, 2 - je end_stop - mov ebx, 0 - mov [v_mov], ebx - - stop_u: - cmp eax, 3 - jne stop_l - - mov ebx, [temp4] - and ebx,3 - and eax, ebx - - ; mov ebx, [Ypl] ; ᫮ 樨 ⨢ - ; and ebx, 31 ; Y 樨 ⨢ - ; cmp ebx, 0 ; - ; jne end_stop ; - - - cmp eax, 0 - je end_stop - mov ebx, 0 - mov [v_mov], ebx - - stop_l: - cmp eax, 1 - jne stop_r - - mov ebx, [temp1] - and ebx,3 - - ; mov eax, [Xpl] ; ᫮ 樨 ⨢ - ; and eax, 31 ; Y 樨 ⨢ - ; cmp eax, 0 ; - ; jne end_stop ; - - cmp ebx, 0 - je end_stop - mov ebx, 0 - mov [v_mov], ebx - - stop_r: - cmp eax, 4 - jne end_stop - - mov ebx, [temp3] - and ebx,3 - - cmp ebx, 0 - je end_stop - mov ebx, 0 - mov [v_mov], ebx - - end_stop: - ; - - - ;GRAVITACION - mov ebx, [Ypl] ; ᫮ 樨 ⨢ - and ebx, 31 ; Y 樨 ⨢ - - mov eax, [Xpl] ; ᫮ 樨 ⨢ - and eax, 31 ; Y 樨 ⨢ - or eax,ebx ; ⪮ ᯮ樮஢ - cmp eax, 0 - jne end_grav - - mov ebx, [temp2] ; - cmp ebx, 0 ; 릪 - jne end_grav ; - mov ebx, [v_mov] ; - cmp ebx, 3 ; - jne dalee_gra ; - mov ebx, 0 ; - mov [v_mov],ebx ; - mov ebx, 0 ; - mov [v_mov2],ebx ; - - dalee_gra: - add eax, [temp5] ; - cmp eax, 0 ; - jne dalee_g ; - mov eax, 2 ; - mov [v_mov],eax ; - mov eax, 0 ; - mov [v_mov2],eax ; - - dalee_g: - cmp eax, 4 ; - jne dalee_g2 ; - mov eax, 2 ; - mov [v_mov],eax ; - mov eax, 0 ; - mov [v_mov2],eax ; - - dalee_g2: - cmp eax, 12 ; - jne end_grav ; - mov eax, 2 ; - mov [v_mov],eax ; - mov eax, 0 ; - mov [v_mov2],eax ; - - end_grav: - ;end GRAVITACION - - - - - ; - mov eax,0 ; - mov eax,[v_mov] ; - cmp eax, 2 ; - je h_down ; - jmp proverka2 ; - jmp hiro_mov_end ; - h_down: ; - mov ebx, [Ypl] ; - add ebx, 2 ; 3 - mov [Ypl], ebx ; 1 4 - jmp hiro_mov_end ; - ; - proverka2: ; - cmp eax, 3 ; ; - je h_up ; PRIROST X Y - jmp proverka3 ; - jmp hiro_mov_end ; - h_up: ; - mov ebx, [Ypl] ; - sbb ebx, 2 ; - mov [Ypl], ebx ; - jmp hiro_mov_end ; - ; - proverka3: ; - cmp eax, 1 ; ; - je h_left ; - jmp proverka4 ; - jmp hiro_mov_end ; - h_left: ; - mov ebx, [Xpl] ; - sbb ebx, 2 ; - mov [Xpl], ebx ; - jmp hiro_mov_end ; - ; - proverka4: ; - cmp eax, 4 ; - je h_right ; - jmp hiro_mov_end ; - jmp hiro_mov_end ; - h_right: ; - mov ebx, [Xpl] ; - add ebx, 2 ; - mov [Xpl], ebx ; - jmp hiro_mov_end ; - ; - - hiro_mov_end: - - ; 塞 ਭ - mov eax, 0 ; - mov dword eax, [Ypl] ; - shr eax, 5 ; - shl eax, 4 ; - mov ebx, 0 ; - mov dword ebx, [Xpl] ; - shr ebx, 5 ; - add eax, ebx ; - mov [hiro_lab], eax ; - ; 塞 ਭ -ret -;**************** -; end Hiro mov -;**************** - - -;******************************************* -; BULLET -;******************************************* - bullet_mas: - mov word [Lab3], 0 ; WORD ᨢ +2 ᫥騩 ࠣ ᮮ⢥ 6*2= + 12 - cycle7: - mov word bx, [Lab3] - mov word ax, [Bullet+bx] ; Enemy + ᬥ饭 - - cmp ax, 1 ; bullet ok - je go_bullet - - jmp end_bullet - go_bullet: - - add word bx, 2 ; X ਤ ࠣ - mov word ax, [Bullet + bx] - mov word [X_bul], ax - - add word bx, 2 ; X ਤ ࠣ - mov word ax, [Bullet + bx] - mov word [Y_bul], ax - - imgtoimg img_bullet, dword [X_bul], dword [Y_bul],canvas - end_bullet: - - mov eax, 0 - mov word ax, [Lab3] - - cmp ax, 36 ; if eax == 0 - je cycle7_end ; jump to cycle_end: - - add word [Lab3],12 - - jmp cycle7 ; - - cycle7_end: - ret ; end BULLET -;------------------------------------------------------------------------------- - - -;******************************************* -; BULLET MOV -;******************************************* - bullet_mov: - mov word [Lab3], 0 ; WORD ᨢ +2 ᫥騩 ࠣ ᮮ⢥ 6*2= + 12 - - cycle8: - mov word bx, [Lab3] - mov word ax, [Bullet+bx] ; Enemy + ᬥ饭 - - cmp ax, 1 ; bullet ok - je go_bullet_mov - - jmp end_bullet_mov - go_bullet_mov: - - add word bx, 2 ; X ਤ ࠣ - mov word ax, [Bullet + bx] - mov word [X_bul], ax - - add word bx, 2 ; X ਤ ࠣ - mov word ax, [Bullet + bx] - mov word [Y_bul], ax - - add word bx, 2 ; - mov word ax, [Bullet + bx] - mov word [mov_bullet], ax - - cmp ax, 1 - jne bul_muv_left - mov word ax, [X_bul] - sbb ax, 2 - mov word bx, [Lab3] - add word bx, 2 - mov word [Bullet + bx], ax - - jmp end_bullet_mov - bul_muv_left: - mov word ax, [X_bul] - add ax, 2 - mov word bx, [Lab3] - add word bx, 2 - mov word [Bullet + bx], ax - - end_bullet_mov: - - ; 塞 BULLET ਭ - mov eax, 0 ; - mov eax, [Y_bul] ; - shr eax, 5 ; - shl eax, 4 ; - mov ebx, 0 ; - mov ebx, [X_bul] ; - shr ebx, 5 ; - add eax, ebx ; - mov [lab_bullet], ax ; - ; 塞 BULLET ਭ - - mov word bx,[lab_bullet] - mov dx, [Dangeon + bx] - and edx,3 - cmp dx, 0 - je letit_dalee - - cmp dx, 2 - je beton - mov byte [Dangeon + bx], 3 ; - beton: - mov bx, [Lab3] - mov byte [Bullet + ebx], 0 ; Enemy + ᬥ饭 - - - - - - letit_dalee: - mov eax, 0 - mov word ax, [Lab3] - - cmp ax, 36 ; if eax == 0 - je cycle8_end ; jump to cycle_end: - - add word [Lab3],12 - - jmp cycle8 ; - - cycle8_end: - - -ret ; end BULLET -;------------------------------------------------------------------------------- - -;------------------------------------------------------------------------------- -; TABLO TABLO TABLO TABLO TABLO TABLO -;***************************************** - tablo: - ; WIWOD CIFR - ;; mov eax, 13 - ; mov ebx, 140*65536 + 18 - ; mov ecx, 10*65536 + 8 - ; mov edx, 0x00ffffff - ; int 0x40 - ; outcount [numer_level],140,10,0x224466,3*65536 - - ; WIWOD CIFR - ; mov eax, 13 - ; mov ebx, 160*65536 + 18 - ; mov ecx, 10*65536 + 8 - ; mov edx, 0x00ffffff - ; int 0x40 - ; outcount [delta_level],160,10,0x224466,3*65536 - - ; WIWOD CIFR - ; mov eax, 13 - ; mov ebx, 180*65536 + 18 - ; mov ecx, 10*65536 + 8 - ; mov edx, 0x00ffffff - ; int 0x40 - ; outcount [delta_level_end],180,10,0x224466,3*65536 - - ret -;------------------------------------------------------------------------------- -fire: - sbb ah, 121 - mov [v_fire], ah - - mov word bx, 0 - mov cx, [Bullet + ebx] - cmp cx, 0 - jne end_fire - pusha - mcall 55, eax, , , Music_bah ; ५ - popa - - mov byte [Bullet + ebx], 1 - - add word bx, 2 ; X ਤ ࠣ - mov ax, [Xpl] - add ax, 8 - mov word [Bullet + ebx],ax - - add word bx, 2 ; X ਤ ࠣ - mov ax, [Ypl] - add ax, 16 - mov word [Bullet + ebx],ax - - add word bx, 2 ; - mov ax,[v_fire] - mov word [Bullet + ebx],ax - - end_fire: -ret -;------------------------------------------------------------------------------- - - -;------------------------㧪 ஢--------------------------------------- -load_level: - imgtoimg img_level,32,32,canvas - setimg 6,20,canvas - - xor eax,eax - xor ebx,ebx - xor edx,edx - xor ecx,ecx - mov dword [Bullet], eax - mov dword [Bullet+2], eax - mov dword [Bullet+4], eax - mov dword [Bullet+6], eax - mov dword [Bullet+8], eax - mov dword [Bullet+10], eax - mov byte [Lab], 1 - mov [lab_bullet], eax - mov [mov_bullet], eax - mov [X_bul], eax - mov [Y_bul], eax - mov [gold], eax - mov dword [Xpl], 32 - mov dword [Ypl], 448 - mov dword [hiro_lab],0 ; ஥ ਭ - mov dword [v_mov], 0 - mov dword [v_mov2], 0 - mov dword [v_fire], 0 - - xor eax,eax - mov eax, [numer_level] - shl eax, 8 - mov dword [delta_level], eax - add eax, 256 - mov dword [delta_level_end], eax - - cycleL: - - xor ebx, ebx - mov ebx, [Lab] - add ebx, [delta_level] - mov ax,[Dangeon2 + ebx] ; + ᬥ饭 - - sbb ebx, [delta_level] - mov [Dangeon + ebx], ax ; + ᬥ饭 - add word [Lab],1 - mov eax, [Lab] - - - cmp eax, [delta_level_end] ; if eax == 0 - je cycleL_end ; jump to cycle_end: - jmp cycleL ; - cycleL_end: - - mov eax, 0 - mov [Lab],eax - - call enemy_plaz - -ret -;------------------------------------------------------------------------------- - -;************************************ -;GOLD -proverka_gold: -mov eax, [gold] - cmp ax, 10 - jna net_deneg - mov eax, [temp2] ; - cmp ax, 16 - jne net_deneg - mov ax, [numer_level] ; 㢥祭 - - add ax, 1 - mov [numer_level], ax - mov [demon_kolvo], ax ; - - call load_level - delay 100 - - net_deneg: -ret - -;------------------------------------------------------------------------------- -; -potop: - mov eax, [temp2] ; - cmp ax, 4 - jne jiwoy - mov dword [gold], 0 ; 㢥祭 - - call load_level - delay 100 - jiwoy: -ret - -;************************************ -; ࠣ ஢ -enemy_plaz: - mov word [Lab2], 0 ; WORD ᨢ +2 ᫥騩 ࠣ ᮮ⢥ 6*2= + 12 - mov ax, [demon_kolvo] - mov [demon], ax - - cycle55: - mov ebx, 0 - mov ecx, 0 - mov edx, 0 - mov esi, 0 - - mov cx, [demon] - cmp cx, 0 - je end_demon - mov word bx, [Lab2] ; - mov word [Enemy + bx], 1 ; - sbb cx, 1 - mov [demon], cx - end_demon: - - random 14, eax - add eax, 1 - shl eax,5 - mov word bx, [Lab2] ; - add word bx, 2 ; X ਤ ࠣ - mov word [Enemy + bx], ax ; - ; - random 12, eax - add eax, 1 - shl eax,5 - mov word bx, [Lab2] ; - add word bx, 4 ; Y ਤ ࠣ - mov word [Enemy + bx], ax ; - - mov word bx, [Lab2] ; - add word bx, 8 ; ࠢ - mov word [Enemy + bx], 0 ; - add word bx, 2 ; - mov word [Enemy + bx], 500 ; - - - mov eax, 0 - mov word ax, [Lab2] - - cmp ax, 96 ; if eax == 0 - je cycle55_end ; jump to cycle_end: - - add word [Lab2],12 - - jmp cycle55 ; - - cycle55_end: - -ret - - -I_END: ; ணࠬ - - - -;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - Xpl: dd 32 ; न - Ypl: dd 448 - hiro_lab: dd 0 ; ஥ ਭ - numer_level: dd 0 - delta_level: dd 0 - delta_level_end: dd 256 - demon: dd 0 - demon_kolvo: dd 1 - - gold: dd 0 - - X_enemy: dd 0 - Y_enemy: dd 0 - - - X_bul: dd 0 - Y_bul: dd 0 - - X_anime: dd 0 - Y_anime: dd 0 - - mov_bullet: dw 0 - lab_bullet: dw 0 - mov_enemy: dw 0 - lab_enemy: dw 0 - life_enemy: dw 0 - - anime : dd 0 ; ६ 樨 - anime2 : dd 0 ; ६ 樨 - - temp1: dd 0 - temp2: dd 0 - temp3: dd 0 - temp4: dd 0 - temp5: dd 0 - - - v_mov: dd 0 ; ࠢ ᮭ - v_mov2: dd 0 ; ࠢ ᮭ - v_fire: dd 0 ; ࠢ ᮭ - Lab: dd 0 - Lab2: dw 0 - Lab3: dw 0 - perem1: dd 0 - perem2: dd 0 - - timer1 dd 0 ; ⠩ ᯮ㥬 樨 , ࠣ --- 0 10 - -;------------------------------------------------------------------------------- -;1 筠 ⥭, 2 ஡, 4 , 8 ᭨, 12 , 0 16 - exit -;------------------------------------------------------------------------------- -Dangeon: - db 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 - db 2,1,1,1,1,1,1,0,12,0,0,0,0,0,0,2 - db 2,0,12,12,0,0,0,8,1,8,1,1,1,0,0,2 - db 2,8,1,1,1,1,1,8,1,8,0,0,0,0,0,2 - db 2,8,0,0,0,0,0,8,1,8,2,4,4,2,0,2 - db 2,8,2,4,4,4,2,8,1,8,2,2,2,2,0,2 - db 2,0,2,2,2,2,2,8,1,8,0,0,0,0,0,2 - db 2,0,1,0,0,0,0,8,1,1,1,1,1,1,8,2 - db 2,0,1,1,8,1,1,1,0,0,0,0,0,0,8,2 - db 2,12,1,1,8,0,12,0,1,8,1,1,8,1,1,2 - db 2,0,0,0,8,8,1,8,0,8,0,0,0,0,0,2 - db 2,12,1,8,1,8,1,1,8,1,1,1,1,1,1,2 - db 2,0,1,8,12,12,0,0,0,0,0,0,0,0,0,2 - db 2,0,1,1,1,1,1,8,1,1,1,0,0,0,0,2 - db 2,0,0,0,12,0,0,8,0,0,0,16,0,12,12,2 - db 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 - -Dangeon2: - db 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 - db 2,1,1,0,1,1,1,0,12,0,0,0,0,0,0,2 - db 2,0,12,12,0,0,0,8,1,8,1,1,1,0,0,2 - db 2,8,1,1,1,1,1,8,1,8,0,0,0,0,0,2 - db 2,8,0,0,0,0,0,8,1,8,2,4,4,2,0,2 ;0 - db 2,8,2,4,4,4,2,8,1,8,2,2,2,2,0,2 - db 2,0,2,2,2,2,2,8,1,8,0,0,0,0,0,2 - db 2,0,1,0,0,0,0,8,1,1,1,1,1,1,8,2 - db 2,0,1,1,8,1,1,1,0,0,0,0,0,0,8,2 - db 2,12,1,1,8,0,12,0,1,8,1,1,8,1,1,2 - db 2,0,0,0,8,8,1,8,0,8,0,0,0,0,0,2 - db 2,12,1,8,1,8,1,1,8,1,1,1,1,1,1,2 - db 2,0,1,8,12,12,0,0,0,0,0,0,0,0,0,2 - db 2,0,1,1,1,1,1,8,1,1,1,0,0,0,0,2 - db 2,0,0,0,12,0,0,8,0,0,0,16,0,12,12,2 - db 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- - db 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2 - db 2,0,0,0,0,0,0,0,0,0,0,16,0,0,0,2 - db 2,12,1,8,1,0,0,0,0,0,0,1,8,0,0,2 - db 2,0,1,8,1,0,0,0,0,0,0,1,0,8,0,2 ;1 - db 2,12,1,8,1,1,0,0,0,0,1,1,0,8,0,2 - db 2,0,1,8,1,0,12,12,12,12,0,1,8,8,0,2 - db 2,12,1,8,1,0,1,1,1,1,0,1,8,0,0,2 - db 2,0,1,8,0,0,0,0,0,0,0,0,8,0,0,2 - db 2,0,1,1,1,1,8,1,8,1,1,1,1,1,8,2 - db 2,0,0,0,12,0,8,0,8,0,0,0,12,0,8,2 - db 2,0,1,1,1,1,1,0,1,8,1,1,8,1,1,2 - db 2,0,0,0,0,0,0,0,0,8,1,0,8,0,0,2 - db 2,0,1,1,1,1,1,8,1,1,1,1,1,1,8,2 - db 2,0,0,12,0,0,0,8,0,0,12,0,0,0,8,2 - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 - db 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2 - db 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2 - db 2,0,0,0,0,0,0,0,0,12,0,12,0,0,0,2 - db 2,0,0,0,0,0,0,8,1,1,1,1,1,1,0,2 ;2 - db 2,0,8,0,12,12,0,8,0,0,0,0,0,2,4,2 - db 2,0,8,1,1,1,1,0,0,0,0,0,0,2,2,2 - db 2,0,8,0,0,0,0,12,1,1,1,1,0,0,0,2 - db 2,0,8,1,0,1,0,12,0,0,0,0,0,0,0,2 - db 2,0,8,0,1,1,12,12,0,0,0,8,1,1,1,2 - db 2,0,8,0,12,0,0,12,0,0,0,8,0,12,0,2 - db 2,0,8,0,0,0,8,1,8,0,0,1,8,1,8,2 - db 2,0,8,0,0,8,1,1,1,8,0,0,8,0,8,2 - db 2,0,1,1,1,1,1,1,1,1,1,1,1,1,8,2 - db 2,0,0,0,0,0,0,0,16,0,0,0,0,0,8,2 - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 - db 2,0,0,0,0,12,0,0,0,0,0,0,16,0,0,2 - db 2,0,8,1,1,1,1,1,1,1,1,1,1,1,0,2 - db 2,0,8,0,0,0,0,0,12,0,0,0,0,0,0,2 - db 2,0,8,0,0,0,0,1,8,1,0,0,0,0,0,2 - db 2,0,8,0,0,0,1,1,8,1,1,0,0,0,0,2 - db 2,0,8,0,12,1,1,1,8,1,1,1,12,0,0,2 - db 2,0,8,0,1,1,12,1,8,1,12,1,1,0,0,2 - db 2,0,0,1,1,1,1,1,8,1,1,1,1,0,0,2 ;3 - db 2,0,1,0,0,0,0,0,8,1,0,0,0,1,0,2 - db 2,0,1,0,1,1,1,1,8,1,1,1,0,1,0,2 - db 2,0,1,1,12,1,12,1,8,1,1,1,0,1,0,2 - db 2,0,1,1,1,1,1,1,8,1,1,1,0,1,0,2 - db 2,0,1,1,12,1,12,1,8,1,1,1,12,1,0,2 - db 2,0,0,0,0,0,0,0,8,0,0,0,0,0,0,2 - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 - db 2,0,12,0,0,0,0,0,0,0,0,0,16,0,0,2 - db 2,0,1,8,1,1,1,1,1,1,8,1,1,1,8,2 - db 2,0,0,8,0,0,0,0,0,0,8,0,0,0,8,2 - db 2,0,1,1,1,1,1,8,1,1,1,1,1,1,0,2 - db 2,0,0,12,0,0,12,8,0,0,12,0,0,0,0,2 - db 2,12,1,1,1,8,1,1,1,1,8,1,1,1,8,2 - db 2,0,0,0,0,8,0,0,0,0,8,0,0,0,8,2 - db 2,8,1,1,1,1,1,1,8,1,1,1,1,1,0,2 ;4 - db 2,8,0,0,0,12,0,0,8,0,0,12,0,0,0,2 - db 2,0,1,8,1,1,1,1,1,1,1,1,8,1,0,2 - db 2,0,0,8,12,0,0,0,0,12,0,0,8,0,0,2 - db 2,8,1,1,1,1,1,1,8,1,1,1,1,1,8,2 - db 2,8,12,0,0,0,0,0,0,0,0,0,0,12,8,2 - db 2,8,2,4,4,4,4,4,4,4,4,4,4,2,8,2 - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 - db 2,8,1,8,12,8,1,8,1,8,1,8,1,8,1,2 - db 2,8,2,8,1,8,1,8,1,8,1,8,12,8,12,2 - db 2,8,1,8,1,8,2,8,12,8,1,8,1,8,1,2 - db 2,8,12,8,0,8,0,8,0,8,0,8,0,8,0,2 - db 2,1,8,1,1,1,1,1,8,1,1,1,1,1,8,2 - db 2,0,8,0,0,0,0,0,8,0,0,12,0,0,8,2 - db 2,0,8,12,0,2,12,0,8,1,1,1,1,1,8,2 - db 2,0,1,1,8,1,1,1,8,0,0,0,0,0,8,2 ;5 - db 2,0,1,0,8,0,0,0,8,0,0,12,0,0,8,2 - db 2,0,1,0,8,0,0,0,8,1,1,1,1,1,8,2 - db 2,0,1,12,8,0,0,2,8,0,0,0,0,0,8,2 - db 2,8,1,1,1,1,8,1,1,1,1,8,1,1,1,2 - db 2,8,0,0,0,0,8,2,0,0,2,8,0,0,0,2 - db 2,0,8,0,12,8,8,2,4,4,2,8,0,0,16,2 - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 - db 2,0,8,0,8,0,8,0,8,0,0,8,0,8,16,2 - db 2,1,8,1,8,1,8,1,8,1,1,8,1,8,1,2 - db 2,0,8,0,8,0,8,0,8,8,0,8,0,8,0,2 - db 2,1,1,8,1,1,1,1,1,8,1,1,8,1,1,2 - db 2,0,0,8,8,0,12,8,0,8,8,12,8,8,0,2 - db 2,1,1,1,8,1,1,8,1,1,8,1,1,8,1,2 - db 2,0,8,0,8,0,12,8,0,0,8,0,12,8,0,2 ;6 - db 2,1,8,1,1,1,1,1,8,1,1,1,1,1,1,2 - db 2,0,8,0,12,8,0,0,8,12,0,8,0,0,0,2 - db 2,1,8,1,1,8,1,1,8,1,1,8,1,1,1,2 - db 2,0,0,8,0,8,8,0,8,8,0,8,8,0,0,2 - db 2,1,1,8,1,1,8,1,1,8,1,1,8,1,1,2 - db 2,0,0,8,12,0,8,0,12,8,0,12,8,12,12,2 - db 2,8,8,1,1,1,1,1,1,1,1,1,1,1,1,2 - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 - db 2,0,12,0,12,0,12,12,0,12,0,12,0,0,0,2 - db 2,1,1,1,8,1,1,1,1,1,1,8,1,1,1,2 - db 2,0,0,0,8,0,0,12,0,0,0,8,0,0,0,2 - db 2,1,1,1,1,1,1,1,8,1,1,1,1,1,1,2 - db 2,0,0,0,12,0,0,0,8,12,0,0,0,0,0,2 - db 2,1,1,1,8,1,1,1,1,1,1,8,1,1,1,2 - db 2,0,0,0,8,0,0,0,0,0,0,8,0,0,0,2 ; 7 - db 2,1,1,1,1,1,1,1,1,1,1,1,1,8,1,2 - db 2,0,0,0,0,0,0,0,0,0,0,0,0,8,0,2 - db 2,1,1,1,1,1,1,8,1,1,1,1,1,8,1,2 - db 2,0,0,0,0,0,0,8,0,0,0,0,0,8,0,2 - db 2,1,1,8,1,8,1,1,8,1,8,1,1,1,1,2 - db 2,0,0,8,0,8,12,0,8,0,8,12,0,0,16,2 - db 2,8,1,1,1,1,1,1,1,1,1,1,1,1,1,2 - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 - db 2,0,0,12,0,0,0,0,0,0,0,0,0,16,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,0,8,0,8,0,12,0,0,8,0,8,0,0,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,0,0,8,12,0,0,8,0,0,8,0,0,0,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,0,0,0,0,0,0,0,0,8,0,0,0,12,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,0,8,0,0,0,8,12,0,0,8,0,8,12,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,0,0,8,0,0,0,0,12,8,0,12,8,0,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,0,0,8,0,8,12,0,0,8,12,0,8,12,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 - db 2,0,0,16,0,0,0,0,0,16,0,0,0,16,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,8,8,8,8,8,12,8,8,8,8,8,8,8,8,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,8,8,8,12,8,8,8,8,8,8,8,8,0,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,12,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,0,8,8,8,8,8,12,8,8,8,8,8,12,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,8,0,8,8,8,8,8,12,8,0,12,8,8,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,0,8,8,8,8,12,0,0,8,12,0,8,12,0,2 - db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 - db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- - - -;------------------------------------------------------------------------------- -Bullet: dw 0,0,0,0,0,0 - dw 0,0,0,0,0,0 - dw 0,0,0,0,0,0 - dw 0,0,0,0,0,0 -;------------------------------------------------------------------------------- - - -Enemy: dw 1,448,128,0,0,500 ;ࠣ ,,, ਭ,ࠢ , - dw 0,32,32,0,0,0 - dw 0,64,32,0,0,0 - dw 0,416,32,0,0,0 - dw 0,256,256,0,0,0 - dw 0,256,224,0,0,0 - dw 0,320,192,0,0,0 - dw 0,32,256,0,0,0 - dw 0,448,448,0,0,0 - -;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -bullet_bmp: -file 'bullet.bmp' -rb 1 - -level_bmp: -file 'level2.bmp' -rb 1 - -kirpich: -file 'kirpich.bmp' -rb 1 - -kirpich3: -file 'kirpich2.bmp' -rb 1 - -kirpich2: -file 'oldkirpich.bmp' -rb 1 - -lest_bmp: -file 'lestnica.bmp' -rb 1 - -water1_bmp: -file 'water1.bmp' -rb 1 - -water2_bmp: -file 'water2.bmp' -rb 1 - -door1_bmp: -file 'door1.bmp' -rb 1 - -door2_bmp: -file 'door2.bmp' -rb 1 - - -img_level: -rb 448*448*3+8 - -;img_ded1: -;rb 448*448*3+8 - -img_area: -rb 32*32*3+8 - -img_area2: -rb 32*32*3+8 - -img_area3: -rb 32*32*3+8 - -img_bullet: -rb 4*8*3+8 - -img_lestniza: -rb 32*32*3+8 - -img_water1: -rb 32*32*3+8 - -img_water2: -rb 32*32*3+8 - -img_door1: -rb 32*32*3+8 - -img_door2: -rb 32*32*3+8 - -img_enemy1: -rb 32*32*3+8 - -img_enemy2: -rb 32*32*3+8 - - -Music_bah: - db 0x0f, 0x09, 0 - -Music_mov: - db 0x00, 0x00, 0 - -Music_almaz: - db 0x09, 0x03, 0 - -entered rd 1 - -imgcount rd 1 ; - ᥣ ஢ 樨 -img_index rd 1 ; ⥪饣 - -;hashtable rd 4096 ; ࠡ 楤 -workarea: -file 'aniall.gif' - - -;temp rb 0x100000 ; 䠨 -rb 10 - -canvas: -xs dd 512 -ys dd 512 - rb 512*512*3 - -gif_hash_area: -rd 4096+1 - -coords: -rd 2 - -Image: + +WND_COLOR equ 0x54000000 + +use32 + org 0x0 + db 'MENUET01' + dd 0x01 + dd START + dd I_END + dd 0x300000 + dd 0x27fff0 + dd 0x0 + dd 0x0 + +include 'lang.inc' +include '..\..\macros.inc' ; макросы облегчают жизнь ассемблерщиков! + +include 'ASCL.INC' +include 'ASCGL.INC' + + + +gif_hash_offset = gif_hash_area +COLOR_ORDER equ MENUETOS + +DELAY equ 2 ; Задержка перед переходом к следующему кадру в мсек + +START: +;**************** +; Открываем фаил +;**************** +openfile: +; and [entered],0 +; mov ecx,499*3*4 ;at start + xor ecx,ecx + mov ecx,1 + + ; Convert gif to animation format + giftoani workarea,Image,ecx + bmptoimg bullet_bmp, img_bullet + bmptoimg level_bmp, img_level + bmptoimg kirpich, img_area + bmptoimg kirpich2, img_area2 + bmptoimg kirpich3, img_area3 + bmptoimg lest_bmp, img_lestniza + bmptoimg water1_bmp, img_water1 + bmptoimg water2_bmp, img_water2 + bmptoimg door1_bmp, img_door1 + bmptoimg door2_bmp, img_door2 + + +red: + call timer + call draw_window +; call load_level +; delay 200 + +still: + timeevent DELAY,no_event, red, key, button + +no_event: + call draw_subimage + jmp still + + key: + ; блока движения персонажа + mov eax,2 + int 0x40 + cmp ah, 179 ; право 4 + je go_mov + cmp ah, 176 ; лево 1 + je go_mov + cmp ah, 178 ; верх 3 + je go_mov + cmp ah, 177 ; низ 2 + je go_mov + cmp ah, 120 ; низ 2 + je go_fire + cmp ah, 122 ; низ 2 + je go_fire + cmp ah, 239 ; низ 2 + je go_fire_left + cmp ah, 231 ; низ 2 + je go_fire + + + jmp no_mov ; if not left, right, up, down, then go NO MOV + + go_mov: + ;mov ebx, [v_mov2] + mov [v_mov2], ah + sub word [v_mov2], 175 ; отнимаем от кода клавиши 175 и остается 1,2,3 или 4 соответственно направления движения персонажа + jmp no_mov ; if not left, right, up, down, then go NO MOV + + go_fire_left: + xor eax,eax + mov ah, 122 + call fire + jmp no_mov + go_fire: + call fire + no_mov: + ; конец блока движения персонажа + jmp still + + button: + mov eax, 17 + int 0x40 + + cmp ah, 1 + jne still + mcall -1 + +; ********************************************* +; ******* ОПРЕДЕЛЕНИЕ И ОТРИСОВКА ОКНА ******* +; ********************************************* + +draw_window: + startwd + + xor eax, eax ; more optimized "mov eax, 0" + mov ebx, 50*65536+522 + mov ecx, 50*65536+536 + mov edx, WND_COLOR + mov edi, title + int 0x40 + + xor ecx,ecx + call draw_subimage + cmp [imgcount],1 + je .enddraw + + mov ecx,[img_index] + + call draw_subimage + + .enddraw: + + endwd + + +ret + +;******************************************* +; LABIRINT +;******************************************* + + labirint: + + ; вывод блоков лабиринта + cycle: + + mov eax, [Lab] + shl eax, 5 ; сдвиг регистра в право на 5 позиции все равно что умножили на 32 + mov [perem1], eax + mov eax, [Lab] + shr eax, 4 ; сдвиг регистра в лево + shl eax, 5 ; сдвиг обратно (все равно что целочисленное делениена 256) + mov [perem2], eax + shl eax, 4 ; все равно что отнимаем от координат ненужный прирост -> У-256*X + sbb dword [perem1], eax; + + mov ebx, [Lab] + sbb ebx, 1 + mov eax,[Dangeon + ebx] ; берет байт из дангеон + смещение + + cmp ah, 1 ; + je go_block + + cmp ah, 0 ; + je back_block + + cmp ah, 12 ; закраска фона за алмазом + je back_block + + cmp ah, 3 ; + je boom_block + + cmp ah, 16 ; + je door_block + + cmp ah, 2 ; закраска фона за алмазом + je cool_block + + jmp end_block + go_block: + imgtoimg img_area,dword [perem1],dword [perem2],canvas + jmp end_block + + cool_block: + imgtoimg img_area3,dword [perem1],dword [perem2],canvas + jmp end_block + + + back_block: + imgtoimg img_area2,dword [perem1],dword [perem2],canvas + jmp end_block + + door_block: + imgtoimg img_door1,dword [perem1],dword [perem2],canvas + + mov eax, [gold] + cmp ax, 10 ; если собрано более 10 алмазов дверь открыта + jna end_block + imgtoimg img_door2,dword [perem1],dword [perem2],canvas + jmp end_block + + + boom_block: + imgtoimg img_area,dword [perem1],dword [perem2],canvas + mov ebp,18 ; кадр + mov eax, dword [perem1] + mov dword [X_anime], eax + mov eax, dword [perem2] + mov dword [Y_anime], eax + call animashka + + mov ecx, [timer1] ; + and ecx, 15 + cmp ecx, 0 + jne end_block + + mov ebx, [Lab] + mov byte [Dangeon + ebx], 0 ; берет байт из дангеон + смещение + + + end_block: + + add word [Lab],1 + mov eax, [Lab] + + cmp eax, 256 ; if eax == 0 + je cycle_end ; jump to cycle_end: + jmp cycle ; + + cycle_end: + + mov eax, 0 + mov [Lab],eax + + ret ; END labirint + + +;******************************************* +; ЛЕСТНИЦА +;******************************************* + lestniza: + ; вывод блоков лабиринта + cycle2: + + mov eax, [Lab] + shl eax, 5 ; сдвиг регистра в право на 5 позиции все равно что умножили на 32 + mov [perem1], eax + mov eax, [Lab] + shr eax, 4 ; сдвиг регистра в лево + shl eax, 5 ; сдвиг обратно (все равно что целочисленное делениена 256) + mov [perem2], eax + shl eax, 4 ; все равно что отнимаем от координат ненужный прирост -> У-256*X + sbb dword [perem1], eax; + + + mov ebx, [Lab] + sbb ebx, 1 + mov eax,[Dangeon + ebx] ; берет байт из дангеон + смещение + + cmp ah, 8 ; + je go_lestniza + + jmp end_lestniza + go_lestniza: + + imgtoimg img_lestniza,dword [perem1],dword [perem2],canvas + end_lestniza: + + add word [Lab],1 + mov eax, [Lab] + + cmp eax, 256 ; if eax == 0 + je cycle2_end ; jump to cycle_end: + jmp cycle2 ; + + cycle2_end: + + mov eax, 0 + mov [Lab],eax + + + ret ; END lestniza + + + +;******************************************* +; ВОДА и АЛМАЗЫ +;******************************************* + water: + + ; вывод воды лабиринта + cycle3: + + mov eax, [Lab] + shl eax, 5 ; сдвиг регистра в право на 5 позиции все равно что умножили на 32 + mov [perem1], eax + mov eax, [Lab] + shr eax, 4 ; сдвиг регистра в лево + shl eax, 5 ; сдвиг обратно (все равно что целочисленное делениена 256) + mov [perem2], eax + shl eax, 4 ; все равно что отнимаем от координат ненужный прирост -> У-256*X + sbb dword [perem1], eax; + + + mov ebx, [Lab] + sbb ebx, 1 + mov eax,[Dangeon + ebx] ; берет байт из дангеон + смещение + + cmp ah, 4 ; + je go_water + + cmp ah, 12 ; рисование алмазов + je go_almaz + + jmp end_water + go_water: + mov eax,0 ; + mov eax, [timer1]; + and eax, 15 + cmp eax, 7 ; + jb go_water2 + + imgtoimg img_water1,dword [perem1],dword [perem2],canvas + jmp end_water + + go_water2: + imgtoimg img_water2,dword [perem1],dword [perem2],canvas + + jmp end_water + go_almaz: + + mov eax,0 ; + mov eax, [timer1]; + and eax, 31 + + cmp eax, 10 + ja almaz2 + + mov ebp,14 ; кадр + mov eax, dword [perem1] + mov dword [X_anime], eax + mov eax, dword [perem2] + mov dword [Y_anime], eax + call animashka + jmp end_water + + almaz2: + cmp eax, 20 + ja almaz3 + + mov ebp,15 ; кадр + mov eax, dword [perem1] + mov dword [X_anime], eax + mov eax, dword [perem2] + mov dword [Y_anime], eax + call animashka + jmp end_water + + almaz3: + mov ebp,16 ; кадр + mov eax, dword [perem1] + mov dword [X_anime], eax + mov eax, dword [perem2] + mov dword [Y_anime], eax + call animashka + + + end_water: + + add word [Lab],1 + mov eax, [Lab] + + cmp eax, 256 ; if eax == 0 + je cycle3_end ; jump to cycle_end: + jmp cycle3 ; + + cycle3_end: + + mov eax, 0 + mov [Lab],eax + + + ret ; END water + + +;******************************************* +; Выводим следующий кадр из списка картинок +;******************************************* +draw_subimage: + ;aframetoimg Image,32, 32,canvas,0x00ffffff ; НЕВИДИМЫЙ, прозрачный ЦВЕТ ИЛИ НЕ РИСУЕМЫЙ + + call labirint + call lestniza + call enemy_mas + call enemy_mov +;------------------------------------------------------------------------------- + mov ebx, [gold] + cmp bx, 5 ;увеличение скорости врагов если украл более 9 + jna lov_velo + call enemy_mas + call enemy_mov + lov_velo: +;------------------------------------------------------------------------------- +;------------------------------------------------------------------------------- + mov ebx, [gold] + cmp bx, 9 ;увеличение скорости врагов если украл более 9 + jna lov_velo2 + call enemy_mas + call enemy_mov + lov_velo2: +;------------------------------------------------------------------------------- +; call enemy_mas +; call enemy_mov + call hiro + call hiro_mov + call water + + call bullet_mov + call bullet_mov + call bullet_mov + call bullet_mas + call bullet_mov + call bullet_mov + call bullet_mov + call bullet_mas + call proverka_gold + call potop + + setimg 6,20,canvas + + call timer + call tablo +ret + +;@@@@@@@@@@@@@@@@@@ +animashka: +;!!!ВАЖНО перед вызовом процедуры должен быть установлен ebx[номер кадра] и x,y + + mov edi,coords + mov esi, Image ; гиф анимашка в памяти +; +; mov ebp, dword [edi+8] ;ecx здесь конкретный номер выводимого кадра +; inc ebp ; увеличение кадра +; cmp ebp,3 ; максимальное количество кадров !!!!!!! +; jna ok_fr ; если выводимы кадр меньше максимального количества кадров +;!!!!!!!!! mov ebp,2 ;обнуление кадра + +ok_fr: + mov dword [edi+8], ebp ;номер выводимого кадра +loo: + cmp ebp,0 ; если кадр нулевой то сразу на вывод ? + je setpic + movzx eax,word [esi+4] ; если нет то увеличиваем х у ? + movzx ebx,word [esi+6] + mul ebx ;dword [esi+4] умножает ebx на eax и результат в eax edx + mov ebx,3 ; количество кадров ??? + mul ebx + add eax,8 + add esi,eax + dec ebp + jmp loo +setpic: + + pushad +; aframetoimg esi,dword [edi], dword [edi+4],canvas,0x00ffffff ; НЕВИДИМЫЙ, прозрачный ЦВЕТ ИЛИ НЕ РИСУЕМЫЙ +; aframetoimg esi,32, 32,canvas,0x00ffffff ; НЕВИДИМЫЙ, прозрачный ЦВЕТ ИЛИ НЕ РИСУЕМЫЙ + aframetoimg esi,dword [X_anime],dword [Y_anime],canvas,0x00ffffff ; НЕВИДИМЫЙ, прозрачный ЦВЕТ ИЛИ НЕ РИСУЕМЫЙ + ;call enemy_mas + popad +ret +;@@@@@@@@@@@@@@ + + + ;-------------- TIMER -------------- + timer: + mov eax,0 ; + mov eax,[timer1] ; + add eax, 1; + mov [timer1], eax + + cmp eax, 64 ; таймер от 0 до 64 + je nul_timer + jmp timer_dalee + nul_timer : + mov [timer1], 0 + timer_dalee: + ret + ;-------------- TIMER -------------- + + + + + +;******************************************* +; ENEMY +;******************************************* + + enemy_mas: ; вывод ENEmy ENEMYYYYYYYYYYYYYYY ENEMYYYYYYYYYYYYYY !!! + + mov word [Lab2], 0 ; все делать в WORD один элемент в массиве +2 следующий враг соотвтетственно 6*2= + 12 + + cycle4: + + mov ebx, 0 + mov ecx, 0 + mov edx, 0 + mov esi, 0 + + mov word bx, [Lab2] + mov word ax,[Enemy+bx] ; берет байт из Enemy + смещение + + cmp ax, 1 ; обычный враг номер 1 + je go_enemy + + jmp end_enemy + go_enemy: + + add word bx, 2 ; X кооридината данного врага + mov word ax, [Enemy + bx] + mov word [X_enemy], ax + + add word bx, 2 ; Y кооридината данного врага + mov word ax, [Enemy + ebx] + mov word [Y_enemy], ax + + add word bx, 2 ; положение в массиве данного врага + mov word ax, [Enemy + ebx] + mov word [lab_enemy], ax + + add word bx, 2 ; направление движения данного врага + mov word ax, [Enemy + ebx] + mov word [mov_enemy], ax + + add word bx, 2 ; enemy LIFE + mov word ax, [Enemy + ebx] + mov word [life_enemy], ax + + cmp ax, 499; ; замороженные враги + ja enemy_dalee + mov ebp,2 ; кадр + mov eax, dword [X_enemy] + mov dword [X_anime], eax + mov eax, dword [Y_enemy] + mov dword [Y_anime], eax + call animashka + jmp enemy_bmp_end + + + + enemy_dalee: + xor eax,eax ; + mov eax, [X_enemy] ; + and eax, 15 + cmp ax, 7; + ja enemy_1 + + jmp enemy_2 + + enemy_1: + + mov ebp,0 ; кадр + mov eax, dword [X_enemy] + mov dword [X_anime], eax + mov eax, dword [Y_enemy] + mov dword [Y_anime], eax + call animashka + + jmp enemy_bmp_end + + enemy_2: + mov ebp,1 ; кадр + mov eax, dword [X_enemy] + mov dword [X_anime], eax + mov eax, dword [Y_enemy] + mov dword [Y_anime], eax + call animashka + enemy_bmp_end: + + end_enemy: + + mov eax, 0 + mov word ax, [Lab2] + + cmp ax, 96 ; if eax == 0 + je cycle4_end ; jump to cycle_end: + + add word [Lab2],12 + + jmp cycle4 ; + + cycle4_end: + + ret ; END eNEMYYYYYYYYYYYYYYY ENEMYYYYYYYYYYYYYY !!! + +;$$$$$$$$$$$$$$$$$$$$$$$$$$ +; ENEMY MOV +;$$$$$$$$$$$$$$$$$$$$$$$$$$ +enemy_mov: + mov word [Lab2], 0 ; все делать в WORD один элемент в массиве +2 следующий враг соотвтетственно 6*2= + 12 + + cycle5: + + mov ebx, 0 + mov ecx, 0 + mov edx, 0 + mov esi, 0 + + mov word bx, [Lab2] + mov word ax,[Enemy+bx] ; берет байт из Enemy + смещение + + cmp ax, 1 ; обычный враг номер 1 + je go_mov_enemy + + jmp end_mov_enemy + go_mov_enemy: + + add word bx, 2 ; X кооридината данного врага + mov word ax, [Enemy + bx] + mov word [X_enemy], ax + + add word bx, 2 ; Y кооридината данного врага + mov word ax, [Enemy + ebx] + mov word [Y_enemy], ax + + add word bx, 2 ; положение в массиве данного врага + mov word ax, [Enemy + ebx] + mov word [lab_enemy], ax + + add word bx, 2 ; направление движения данного врага + mov word ax, [Enemy + ebx] + mov word [mov_enemy], ax + + add word bx, 2 ; enemy LIFE + mov word ax, [Enemy + ebx] + mov word [life_enemy], ax + + cmp ax, 499; ; замороженные враги + ja dalee_enemy_mov + add ax, 1 + + mov word [Enemy + ebx], ax + + jmp end_mov_enemy + + dalee_enemy_mov: + ; блок поедания героя + mov ax, [Xpl] + add ax, 23 + cmp ax, [X_enemy] + jna ne_em + sbb ax, 45 + cmp ax, [X_enemy] + ja ne_em + mov ax, [Ypl] + add ax, 23 + cmp ax, [Y_enemy] + jna ne_em + sbb ax, 45 + cmp ax, [Y_enemy] + ja ne_em + call load_level ; DEAD HIRO + delay 150 + + ne_em: + ;Блок попадания 1 пули + + mov word bx, 0 + mov word ax,[Bullet + ebx] + cmp ax, 0 + je no_bullet + + add word bx, 2 ; [Xpl] + mov word cx, [Bullet + ebx] + + add word bx, 2 ; [Ypl] + mov word dx, [Bullet + ebx] + + cmp dx, [Y_enemy] + jna no_bullet + sbb dx, 32 + cmp dx, [Y_enemy] + ja no_bullet + cmp cx, [X_enemy] + jna no_bullet + sbb cx, 32 + cmp cx, [X_enemy] + ja no_bullet + mov word bx, [Lab2] + add word bx, 10 ; enemy LIFE + mov word [Enemy + ebx],0 + + mov byte [Bullet], 0 ; + + no_bullet: + + + ;БЛОК ПРИРОСТА ДВИЖЕНИЯ ВРАГОВ + mov word ax, [mov_enemy] ; + cmp ax, 1 ; left ; + jne next_2 ; + sbb word [X_enemy], 1 ; + mov word ax, [X_enemy] ; + mov word bx, [Lab2] ; + add word bx, 2 ; X кооридината данного врага + mov word [Enemy + bx], ax ; + ; + next_2: ; + cmp ax, 2 ; down ; + jne next_3 ; + add word [Y_enemy], 1 ; + mov word ax, [Y_enemy] ; + mov word bx, [Lab2] ; + add word bx, 4 ; Y кооридината данного врага + mov word [Enemy + bx], ax ; + ; + next_3: ; + cmp ax, 3 ; up ; + jne next_4 ; + sbb word [Y_enemy], 1 ; + mov word ax, [Y_enemy] ; + mov word bx, [Lab2] ; + add word bx, 4 ; Y кооридината данного врага + mov word [Enemy + bx], ax ; + ; + next_4: ; + cmp ax, 4 ; right ; + jne next_end + + ;Гравитационная заплатка лечит трабл - когда враг двигается слева на право то пролетает один пустой блок + mov word bx, [X_enemy] ; Это условие позволяет добежать до позиции напротив блока + and ebx, 31 ; X в позиции напротив блока + cmp bx, 0 ; + jne n4_dalee ; + mov bx,[lab_enemy] + add bx,16 + mov ax, [Dangeon + bx] + and eax,15 + cmp word ax, 0 + je next_end + cmp word ax, 4 + je next_end + ;конец заплатки + + n4_dalee: + ; + add word [X_enemy], 1 ; + mov word ax, [X_enemy] ; + mov word bx, [Lab2] ; + add word bx, 2 ; X кооридината данного врага + mov word [Enemy + bx], ax ; + ; + next_end: + ;END БЛОК ПРИРОСТА ДВИЖЕНИЯ ВРАГ + + ; + + ; Рандомный выбор на леснице + mov word bx, [X_enemy] ; Это условие позволяет добежать до позиции напротив блока + and ebx, 31 ; X в позиции напротив блока + cmp bx, 0 ; + jne end_les ; + mov word bx, [Y_enemy] ; Это условие позволяет добежать до позиции напротив блока + and ebx, 31 ; X в позиции напротив блока + cmp bx, 0 ; + jne end_les ; + + random 300, eax + + cmp eax, 150 + ja les2 + jmp end_up_or_down + les2: + + mov eax, [Ypl] + cmp eax, [Y_enemy] + jna bolee + mov word [mov_enemy],2 ; вниз + mov word ax, [mov_enemy] ; + mov word bx, [Lab2] ; + add word bx, 8 ; направление движения данного врага + mov word [Enemy + bx], ax ; + jmp end_les + + bolee: + mov word [mov_enemy],3 ; up + mov word ax, [mov_enemy] ; + mov word bx, [Lab2] ; + add word bx, 8 ; направление движения данного врага + mov word [Enemy + bx], ax ; + jmp end_les + + end_up_or_down: + + random 300, eax + cmp eax, 150 + ja les22 + jmp end_les + les22: + + mov eax, [Xpl] + cmp eax, [X_enemy] + jna bolee2 + mov word [mov_enemy],4 ; вниз + mov word ax, [mov_enemy] ; + mov word bx, [Lab2] ; + add word bx, 8 ; направление движения данного врага + mov word [Enemy + bx], ax ; + jmp end_les + + bolee2: + mov word [mov_enemy],1 ; up + mov word ax, [mov_enemy] ; + mov word bx, [Lab2] ; + add word bx, 8 ; направление движения данного врага + mov word [Enemy + bx], ax ; + + end_les: + ; end Рандомный выбор на леснице + + ;Гравитация + mov word bx, [X_enemy] ; Это условие позволяет добежать до позиции напротив блока + and ebx, 31 ; X в позиции напротив блока + cmp bx, 0 ; + jne end_grava ; + + mov bx,[lab_enemy] + add bx,16 + mov ax, [Dangeon + bx] + + and eax,15 + cmp word ax, 0 + je grava + cmp word ax, 4 + je grava + jmp end_grava + grava: + mov word [mov_enemy], 2 ; padenie ВРАГА + mov word ax, [mov_enemy] ; + mov word bx, [Lab2] ; + add word bx, 8 ; направление движения данного врага + mov word [Enemy + bx], ax ; + + end_grava: + ;конец гравитации + + ;блок расчета положения врага в лабиринте + mov eax, 0 ; + mov eax, [Y_enemy] ; + shr eax, 5 ; + shl eax, 4 ; + mov ebx, 0 ; + mov ebx, [X_enemy] ; + shr ebx, 5 ; + add eax, ebx ; + mov [lab_enemy], eax ; + mov word bx, [Lab2] ; + add word bx, 6 ; направление движения данного врага + mov word [Enemy + bx], ax ; + ;блок расчета положения врага в лабиринте + + + + + + + ;БЛОК ЗПАПРЕТА ДВижения + mov word bx, [Y_enemy] ; Это условие позволяет добежать до позиции напротив блока + and bx, 31 ; Y в позиции напротив блока + cmp bx, 0 ; + jne end_zapret ; + mov word ax, [X_enemy] ; Это условие позволяет добежать до позиции напротив блока + and ax, 31 ; X в позиции напротив блока + cmp ax, 0 ; + jne end_zapret ; + + mov word ax, [mov_enemy] ; Это условие позволяет добежать до позиции напротив блока + + cmp ax, 0 + jne duma1 + ; Рандомный выбор движения + mov eax, [timer1] + and eax, 3 + cmp eax, 0 + jne dalee_duma1 + add eax, 4 + dalee_duma1: + + mov word [mov_enemy], ax ; + mov word ax, [mov_enemy] ; + mov word bx, [Lab2] ; + add word bx, 8 ; направление движения данного врага + mov word [Enemy + bx], ax ; + + + + duma1: + cmp ax, 4 + jne duma2 ; прверка справа + mov bx,[lab_enemy] + add bx,1 + mov ax, [Dangeon + bx] + and eax,3 + cmp ax, 0 + jne duma_stop + jmp duma_end + + duma2: + cmp ax, 1 + jne duma3 ; слева + mov bx,[lab_enemy] + sbb bx,1 + mov ax, [Dangeon + bx] + and eax,3 + cmp ax, 0 + jne duma_stop + jmp duma_end + + duma3: + cmp ax, 2 + jne duma4 ; снизу + mov bx,[lab_enemy] + add bx,16 + mov ax, [Dangeon + bx] + and eax,3 + cmp ax, 0 + jne duma_stop + jmp duma_end + + duma4: + cmp ax, 3 + jne duma_stop ; сверху + + mov bx,[lab_enemy] ; если кирпич над головой + sbb bx,16 + mov ax, [Dangeon + bx] + and eax,3 + cmp ax, 0 ; если кирпич над головой + jne duma_stop + + mov bx,[lab_enemy] ; если враг не на леснице + mov ax, [Dangeon + bx] + and eax,15 + cmp ax, 8 + jne duma_stop + + jmp duma_end + + duma_stop: + + mov word [mov_enemy], 0 ; ОСТАНОВКА ВРАГА + mov word ax, [mov_enemy] ; + mov word bx, [Lab2] ; + add word bx, 8 ; направление движения данного врага + mov word [Enemy + bx], ax ; + + duma_end: + + end_zapret: + ;конец запрета + + end_mov_enemy: + + mov eax, 0 + mov word ax, [Lab2] + + cmp ax, 96 ; if eax == 0 + je cycle5_end ; jump to cycle_end: + + add word [Lab2],12 + + jmp cycle5 ; + + cycle5_end: + + +ret + +;***************************** +; HIRO +;***************************** + + hiro: + + mov ecx, [v_fire] ;стрельба + cmp ecx, 0 + je next_anima + cmp ecx, 1 + je wprawo + mov ebp,12 ; кадр + mov eax, dword [Xpl] + mov dword [X_anime], eax + mov eax, dword [Ypl] + mov dword [Y_anime], eax + call animashka + mov ecx, [timer1] ;стрельба + and ecx, 15 + cmp ecx, 0 + jne end_hiro + mov dword [v_fire], 0 + jmp end_hiro + + wprawo: + mov ebp,11 ; кадр + mov eax, dword [Xpl] + mov dword [X_anime], eax + mov eax, dword [Ypl] + mov dword [Y_anime], eax + call animashka + mov ecx, [timer1] ;стрельба + and ecx, 15 + cmp ecx, 0 + jne end_hiro + mov dword [v_fire], 0 + jmp end_hiro + + ;стрельба + jmp end_hiro + + next_anima: + mov eax, [v_mov] + cmp eax, 1 + jne next_r + mov eax,0 ; + mov eax, [Xpl]; + and eax, 15 + cmp eax, 7 ; + ja next_l1 + + mov ebp,3 ; кадр + mov eax, dword [Xpl] + mov dword [X_anime], eax + mov eax, dword [Ypl] + mov dword [Y_anime], eax + call animashka + jmp end_hiro + + next_l1: + mov ebp,5 ; кадр + mov eax, dword [Xpl] + mov dword [X_anime], eax + mov eax, dword [Ypl] + mov dword [Y_anime], eax + call animashka + pusha + mcall 55, eax, , , Music_mov ; звук выстрела + popa + + jmp end_hiro + + next_r: + cmp eax, 4 + jne next_d + + mov eax,0 ; + mov eax, [Xpl]; + and eax, 15 + cmp eax, 7 ; + ja next_d1 + + mov ebp,4 ; кадр + mov eax, dword [Xpl] + mov dword [X_anime], eax + mov eax, dword [Ypl] + mov dword [Y_anime], eax + call animashka + + pusha + mcall 55, eax, , , Music_mov ; звук выстрела + popa + jmp end_hiro + + next_d1: + mov ebp,6 ; кадр + mov eax, dword [Xpl] + mov dword [X_anime], eax + mov eax, dword [Ypl] + mov dword [Y_anime], eax + call animashka + + jmp end_hiro + + next_d: + cmp eax, 2 + jne next_u + mov ebp,13 ; кадр + mov eax, [temp2] + cmp eax, 8 + jne padaem + mov ebp,10 ; кадр + padaem: + mov eax, [temp5] + cmp eax, 8 + jne padaem2 + mov ebp,10 ; кадр + padaem2: + mov eax, dword [Xpl] + mov dword [X_anime], eax + mov eax, dword [Ypl] + mov dword [Y_anime], eax + call animashka + jmp end_hiro + + next_u: + cmp eax, 3 + jne next_s + mov eax,0 ; + mov eax, [Ypl]; + and eax, 15 + cmp eax, 7 ; + ja next_u1 + + mov ebp,10 ; кадр + mov eax, dword [Xpl] + mov dword [X_anime], eax + mov eax, dword [Ypl] + mov dword [Y_anime], eax + call animashka + jmp end_hiro + + next_u1: + mov ebp,9 ; кадр + mov eax, dword [Xpl] + mov dword [X_anime], eax + mov eax, dword [Ypl] + mov dword [Y_anime], eax + call animashka + + jmp end_hiro + + next_s: + cmp eax, 0 + jne next_s + mov ebp,17; кадр + mov eax, dword [Xpl] + mov dword [X_anime], eax + mov eax, dword [Ypl] + mov dword [Y_anime], eax + call animashka + jmp end_hiro + + end_hiro: + + ret ; END Hiro +;************** +; end HIRO +;************** + + +;**************** +; Hiro MOV +;**************** +hiro_mov: + + ;ПРЕГРАД + + ; вычисление соседних блоков + mov ebx, [hiro_lab] + sbb ebx,2 + mov eax,[Dangeon + bx] ; up + mov [temp1], ah ; temp4 + ; + add ebx,1 ; left hiro right + mov eax,[Dangeon + bx] ; temp1 temp2 temp3 + mov [temp2], ah ; + +;------------------------------------------------------------------------------- +; Сбор алмазов +;------------------------------------------------------------------------------- + mov ecx, [Ypl] ; Это условие позволяет добежать до позиции напротив блока + and ecx, 31 ; Y в позиции напротив блока + + mov edx, [Xpl] ; Это условие позволяет добежать до позиции напротив блока + and edx, 31 ; Y в позиции напротив блока + or edx,ecx ; Мы четко спозиционированы по Х и У + cmp edx, 0 + jne no_almaz + + cmp ah, 12 + jne no_almaz + xor cx, cx + add ebx,1 ; ЗАПЛАТКА !!! без нее почемуто обнуляет не алмазы а соседние блоки + mov [Dangeon + bx], ch + sbb ebx, 1 ; ЗАПЛАТКА !!! + mov ecx, [gold] + add ecx, 1 + mov [gold], ecx + pusha + mcall 55, eax, , , Music_almaz ; звук Almaz + popa + no_almaz: +;------------------------------------------------------------------------------- +; Сбор алмазов +;------------------------------------------------------------------------------- + ; down + add ebx,1 ; temp5 + mov eax,[Dangeon + bx] ; + mov [temp3], ah + + sbb ebx,17 ; !!!!!!!!!!!! + mov eax,[Dangeon + bx] ; при отсутствии библиотеки MACROS.INC ebx=17 , при ее присутствии ebx=16 + mov [temp4], ah + + add ebx,32 ; + mov eax,[Dangeon + bx] ; + mov [temp5], ah + ; вычисление соседних блоков + + + + + + ;разрешение на движение + mov eax,0 ; + mov eax,[v_mov2] ; + and eax,7 + and eax,2 + cmp eax, 2 + je smena + + mov ebx, [Ypl] ; Это условие позволяет добежать до позиции напротив блока + and ebx, 31 ; Y в позиции напротив блока + cmp ebx, 0 ; + jne end_tamgna ; + smena: + + mov eax,0 ; + mov eax,[v_mov2] ; + and eax,7 + and eax,2 + cmp eax, 0 + je smena2 + + mov ebx, [Xpl] ; Это условие позволяет добежать до позиции напротив блока + and ebx, 31 ; X в позиции напротив блока + cmp ebx, 0 ; + jne end_tamgna ; + + smena2: + mov eax, [v_mov2] + and eax, 7 + mov [v_mov], eax + end_tamgna: + ;разрешение на движение + + + ;УПИРАНИЕ В ПРЕГРАДУ + mov ebx, [Ypl] ; + and ebx, 31 ; Y в позиции напротив блока + cmp ebx, 0 ; + jne end_stop ; + mov eax, [Xpl] ; без макроса этого блока не было он был внутри блока упираний + and eax, 31 ; X в позиции напротив блока + cmp eax, 0 ; + jne end_stop ; + mov eax, [v_mov] + + cmp eax, 2 + je stop_d + jmp stop_u + + stop_d: + mov ebx, [temp5] + ;заплатка 2 равно 1 если бетон то это как кирпич, иначе герой проходит сквозь бетон + + cmp ebx, 2 + jne no_zaplat1 + + sbb ebx,1 + + no_zaplat1: + + and ebx,3 + or eax, ebx + + cmp eax, 2 + je end_stop + mov ebx, 0 + mov [v_mov], ebx + + stop_u: + cmp eax, 3 + jne stop_l + + mov ebx, [temp4] + and ebx,3 + and eax, ebx + + ; mov ebx, [Ypl] ; Это условие позволяет добежать до позиции напротив блока + ; and ebx, 31 ; Y в позиции напротив блока + ; cmp ebx, 0 ; + ; jne end_stop ; + + + cmp eax, 0 + je end_stop + mov ebx, 0 + mov [v_mov], ebx + + stop_l: + cmp eax, 1 + jne stop_r + + mov ebx, [temp1] + and ebx,3 + + ; mov eax, [Xpl] ; Это условие позволяет добежать до позиции напротив блока + ; and eax, 31 ; Y в позиции напротив блока + ; cmp eax, 0 ; + ; jne end_stop ; + + cmp ebx, 0 + je end_stop + mov ebx, 0 + mov [v_mov], ebx + + stop_r: + cmp eax, 4 + jne end_stop + + mov ebx, [temp3] + and ebx,3 + + cmp ebx, 0 + je end_stop + mov ebx, 0 + mov [v_mov], ebx + + end_stop: + ;ПРЕГРАДЫ + + + ;GRAVITACION + mov ebx, [Ypl] ; Это условие позволяет добежать до позиции напротив блока + and ebx, 31 ; Y в позиции напротив блока + + mov eax, [Xpl] ; Это условие позволяет добежать до позиции напротив блока + and eax, 31 ; Y в позиции напротив блока + or eax,ebx ; Мы четко спозиционированы по Х и У + cmp eax, 0 + jne end_grav + + mov ebx, [temp2] ; + cmp ebx, 0 ; запрет на прыжки вверх + jne end_grav ; + mov ebx, [v_mov] ; + cmp ebx, 3 ; + jne dalee_gra ; + mov ebx, 0 ; + mov [v_mov],ebx ; + mov ebx, 0 ; + mov [v_mov2],ebx ; + + dalee_gra: + add eax, [temp5] ; + cmp eax, 0 ; падение в пустоту + jne dalee_g ; + mov eax, 2 ; + mov [v_mov],eax ; + mov eax, 0 ; + mov [v_mov2],eax ; + + dalee_g: + cmp eax, 4 ; + jne dalee_g2 ; падение в воду + mov eax, 2 ; + mov [v_mov],eax ; + mov eax, 0 ; + mov [v_mov2],eax ; + + dalee_g2: + cmp eax, 12 ; + jne end_grav ; падение на алмаз + mov eax, 2 ; + mov [v_mov],eax ; + mov eax, 0 ; + mov [v_mov2],eax ; + + end_grav: + ;end GRAVITACION + + + + + ; ПРИРОСТ КООРДИНАТ ГЕРОЯ + mov eax,0 ; + mov eax,[v_mov] ; + cmp eax, 2 ; + je h_down ; + jmp proverka2 ; + jmp hiro_mov_end ; + h_down: ; + mov ebx, [Ypl] ; + add ebx, 2 ; 3 + mov [Ypl], ebx ; 1 4 + jmp hiro_mov_end ; + ; + proverka2: ; + cmp eax, 3 ; ; + je h_up ; PRIROST X Y + jmp proverka3 ; + jmp hiro_mov_end ; + h_up: ; + mov ebx, [Ypl] ; + sbb ebx, 2 ; + mov [Ypl], ebx ; + jmp hiro_mov_end ; + ; + proverka3: ; + cmp eax, 1 ; ; + je h_left ; + jmp proverka4 ; + jmp hiro_mov_end ; + h_left: ; + mov ebx, [Xpl] ; + sbb ebx, 2 ; + mov [Xpl], ebx ; + jmp hiro_mov_end ; + ; + proverka4: ; + cmp eax, 4 ; + je h_right ; + jmp hiro_mov_end ; + jmp hiro_mov_end ; + h_right: ; + mov ebx, [Xpl] ; + add ebx, 2 ; + mov [Xpl], ebx ; + jmp hiro_mov_end ;прирост + ; ПРИРОСТ КООРДИНАТ ГЕРОЯ + + hiro_mov_end: + + ; вычисляем положение героя в лабиринте + mov eax, 0 ; + mov dword eax, [Ypl] ; + shr eax, 5 ; + shl eax, 4 ; + mov ebx, 0 ; + mov dword ebx, [Xpl] ; + shr ebx, 5 ; + add eax, ebx ; + mov [hiro_lab], eax ; + ; вычисляем положение героя в лабиринте +ret +;**************** +; end Hiro mov +;**************** + + +;******************************************* +; BULLET +;******************************************* + bullet_mas: + mov word [Lab3], 0 ; все делать в WORD один элемент в массиве +2 следующий враг соотвтетственно 6*2= + 12 + cycle7: + mov word bx, [Lab3] + mov word ax, [Bullet+bx] ; берет байт из Enemy + смещение + + cmp ax, 1 ; bullet ok + je go_bullet + + jmp end_bullet + go_bullet: + + add word bx, 2 ; X кооридината данного врага + mov word ax, [Bullet + bx] + mov word [X_bul], ax + + add word bx, 2 ; X кооридината данного врага + mov word ax, [Bullet + bx] + mov word [Y_bul], ax + + imgtoimg img_bullet, dword [X_bul], dword [Y_bul],canvas + end_bullet: + + mov eax, 0 + mov word ax, [Lab3] + + cmp ax, 36 ; if eax == 0 + je cycle7_end ; jump to cycle_end: + + add word [Lab3],12 + + jmp cycle7 ; + + cycle7_end: + ret ; end BULLET +;------------------------------------------------------------------------------- + + +;******************************************* +; BULLET MOV +;******************************************* + bullet_mov: + mov word [Lab3], 0 ; все делать в WORD один элемент в массиве +2 следующий враг соотвтетственно 6*2= + 12 + + cycle8: + mov word bx, [Lab3] + mov word ax, [Bullet+bx] ; берет байт из Enemy + смещение + + cmp ax, 1 ; bullet ok + je go_bullet_mov + + jmp end_bullet_mov + go_bullet_mov: + + add word bx, 2 ; X кооридината данного врага + mov word ax, [Bullet + bx] + mov word [X_bul], ax + + add word bx, 2 ; X кооридината данного врага + mov word ax, [Bullet + bx] + mov word [Y_bul], ax + + add word bx, 2 ; + mov word ax, [Bullet + bx] + mov word [mov_bullet], ax + + cmp ax, 1 + jne bul_muv_left + mov word ax, [X_bul] + sbb ax, 2 + mov word bx, [Lab3] + add word bx, 2 + mov word [Bullet + bx], ax + + jmp end_bullet_mov + bul_muv_left: + mov word ax, [X_bul] + add ax, 2 + mov word bx, [Lab3] + add word bx, 2 + mov word [Bullet + bx], ax + + end_bullet_mov: + + ; вычисляем положение BULLET в лабиринте + mov eax, 0 ; + mov eax, [Y_bul] ; + shr eax, 5 ; + shl eax, 4 ; + mov ebx, 0 ; + mov ebx, [X_bul] ; + shr ebx, 5 ; + add eax, ebx ; + mov [lab_bullet], ax ; + ; вычисляем положение BULLET в лабиринте + + mov word bx,[lab_bullet] + mov dx, [Dangeon + bx] + and edx,3 + cmp dx, 0 + je letit_dalee + + cmp dx, 2 + je beton + mov byte [Dangeon + bx], 3 ; РАЗРУШЕНИЕ КИРПИЧЕЙ + beton: + mov bx, [Lab3] + mov byte [Bullet + ebx], 0 ; берет байт из Enemy + смещение + + + + + + letit_dalee: + mov eax, 0 + mov word ax, [Lab3] + + cmp ax, 36 ; if eax == 0 + je cycle8_end ; jump to cycle_end: + + add word [Lab3],12 + + jmp cycle8 ; + + cycle8_end: + + +ret ; end BULLET +;------------------------------------------------------------------------------- + +;------------------------------------------------------------------------------- +; TABLO TABLO TABLO TABLO TABLO TABLO +;***************************************** + tablo: + ; WIWOD CIFR + ;; mov eax, 13 + ; mov ebx, 140*65536 + 18 + ; mov ecx, 10*65536 + 8 + ; mov edx, 0x00ffffff + ; int 0x40 + ; outcount [numer_level],140,10,0x224466,3*65536 + + ; WIWOD CIFR + ; mov eax, 13 + ; mov ebx, 160*65536 + 18 + ; mov ecx, 10*65536 + 8 + ; mov edx, 0x00ffffff + ; int 0x40 + ; outcount [delta_level],160,10,0x224466,3*65536 + + ; WIWOD CIFR + ; mov eax, 13 + ; mov ebx, 180*65536 + 18 + ; mov ecx, 10*65536 + 8 + ; mov edx, 0x00ffffff + ; int 0x40 + ; outcount [delta_level_end],180,10,0x224466,3*65536 + + ret +;------------------------------------------------------------------------------- +fire: + sbb ah, 121 + mov [v_fire], ah + + mov word bx, 0 + mov cx, [Bullet + ebx] + cmp cx, 0 + jne end_fire + pusha + mcall 55, eax, , , Music_bah ; звук выстрела + popa + + mov byte [Bullet + ebx], 1 + + add word bx, 2 ; X кооридината данного врага + mov ax, [Xpl] + add ax, 8 + mov word [Bullet + ebx],ax + + add word bx, 2 ; X кооридината данного врага + mov ax, [Ypl] + add ax, 16 + mov word [Bullet + ebx],ax + + add word bx, 2 ; + mov ax,[v_fire] + mov word [Bullet + ebx],ax + + end_fire: +ret +;------------------------------------------------------------------------------- + + +;------------------------Загрузка уровней--------------------------------------- +load_level: + imgtoimg img_level,32,32,canvas + setimg 6,20,canvas + + xor eax,eax + xor ebx,ebx + xor edx,edx + xor ecx,ecx + mov dword [Bullet], eax + mov dword [Bullet+2], eax + mov dword [Bullet+4], eax + mov dword [Bullet+6], eax + mov dword [Bullet+8], eax + mov dword [Bullet+10], eax + mov byte [Lab], 1 + mov [lab_bullet], eax + mov [mov_bullet], eax + mov [X_bul], eax + mov [Y_bul], eax + mov [gold], eax + mov dword [Xpl], 32 + mov dword [Ypl], 448 + mov dword [hiro_lab],0 ; проекция героя в лабиринт + mov dword [v_mov], 0 + mov dword [v_mov2], 0 + mov dword [v_fire], 0 + + xor eax,eax + mov eax, [numer_level] + shl eax, 8 + mov dword [delta_level], eax + add eax, 256 + mov dword [delta_level_end], eax + + cycleL: + + xor ebx, ebx + mov ebx, [Lab] + add ebx, [delta_level] + mov ax,[Dangeon2 + ebx] ; берет байт из дангеон + смещение + + sbb ebx, [delta_level] + mov [Dangeon + ebx], ax ; берет байт из дангеон + смещение + add word [Lab],1 + mov eax, [Lab] + + + cmp eax, [delta_level_end] ; if eax == 0 + je cycleL_end ; jump to cycle_end: + jmp cycleL ; + cycleL_end: + + mov eax, 0 + mov [Lab],eax + + call enemy_plaz + +ret +;------------------------------------------------------------------------------- + +;************************************ +;GOLD +proverka_gold: +mov eax, [gold] + cmp ax, 10 + jna net_deneg + mov eax, [temp2] ; добежать до двери + cmp ax, 16 + jne net_deneg + mov ax, [numer_level] ; увеличение левела + + add ax, 1 + mov [numer_level], ax + mov [demon_kolvo], ax ; + + call load_level + delay 100 + + net_deneg: +ret + +;------------------------------------------------------------------------------- +; УТОП +potop: + mov eax, [temp2] ; добежать до двери + cmp ax, 4 + jne jiwoy + mov dword [gold], 0 ; увеличение левела + + call load_level + delay 100 + jiwoy: +ret + +;************************************ +;положение врагов на новом уровне +enemy_plaz: + mov word [Lab2], 0 ; все делать в WORD один элемент в массиве +2 следующий враг соотвтетственно 6*2= + 12 + mov ax, [demon_kolvo] + mov [demon], ax + + cycle55: + mov ebx, 0 + mov ecx, 0 + mov edx, 0 + mov esi, 0 + + mov cx, [demon] + cmp cx, 0 + je end_demon + mov word bx, [Lab2] ; + mov word [Enemy + bx], 1 ; + sbb cx, 1 + mov [demon], cx + end_demon: + + random 14, eax + add eax, 1 + shl eax,5 + mov word bx, [Lab2] ; + add word bx, 2 ; X кооридината данного врага + mov word [Enemy + bx], ax ; + ; + random 12, eax + add eax, 1 + shl eax,5 + mov word bx, [Lab2] ; + add word bx, 4 ; Y кооридината данного врага + mov word [Enemy + bx], ax ; + + mov word bx, [Lab2] ; + add word bx, 8 ; направление движения + mov word [Enemy + bx], 0 ; + add word bx, 2 ; жизнь + mov word [Enemy + bx], 500 ; + + + mov eax, 0 + mov word ax, [Lab2] + + cmp ax, 96 ; if eax == 0 + je cycle55_end ; jump to cycle_end: + + add word [Lab2],12 + + jmp cycle55 ; + + cycle55_end: + +ret + + +I_END: ; конец программы + + + +;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + Xpl: dd 32 ; координаты героя + Ypl: dd 448 + hiro_lab: dd 0 ; проекция героя в лабиринт + numer_level: dd 0 + delta_level: dd 0 + delta_level_end: dd 256 + demon: dd 0 + demon_kolvo: dd 1 + + gold: dd 0 + + X_enemy: dd 0 + Y_enemy: dd 0 + + + X_bul: dd 0 + Y_bul: dd 0 + + X_anime: dd 0 + Y_anime: dd 0 + + mov_bullet: dw 0 + lab_bullet: dw 0 + mov_enemy: dw 0 + lab_enemy: dw 0 + life_enemy: dw 0 + + anime : dd 0 ; переменная для анимации героя и пр + anime2 : dd 0 ; переменная для анимации героя и пр + + temp1: dd 0 + temp2: dd 0 + temp3: dd 0 + temp4: dd 0 + temp5: dd 0 + + + v_mov: dd 0 ; направления движения персонажа + v_mov2: dd 0 ; направления движения персонажа + v_fire: dd 0 ; направления движения персонажа + Lab: dd 0 + Lab2: dw 0 + Lab3: dw 0 + perem1: dd 0 + perem2: dd 0 + + timer1 dd 0 ; таймер используемый для анимации воды, врагов --- бегает от 0 до 10 + +;------------------------------------------------------------------------------- +;1 обычная стена, 2 непробиваемая, 4 вода, 8 лесница, 12 алмаз, 0 пустота 16 - exit +;------------------------------------------------------------------------------- +Dangeon: + db 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 + db 2,1,1,1,1,1,1,0,12,0,0,0,0,0,0,2 + db 2,0,12,12,0,0,0,8,1,8,1,1,1,0,0,2 + db 2,8,1,1,1,1,1,8,1,8,0,0,0,0,0,2 + db 2,8,0,0,0,0,0,8,1,8,2,4,4,2,0,2 + db 2,8,2,4,4,4,2,8,1,8,2,2,2,2,0,2 + db 2,0,2,2,2,2,2,8,1,8,0,0,0,0,0,2 + db 2,0,1,0,0,0,0,8,1,1,1,1,1,1,8,2 + db 2,0,1,1,8,1,1,1,0,0,0,0,0,0,8,2 + db 2,12,1,1,8,0,12,0,1,8,1,1,8,1,1,2 + db 2,0,0,0,8,8,1,8,0,8,0,0,0,0,0,2 + db 2,12,1,8,1,8,1,1,8,1,1,1,1,1,1,2 + db 2,0,1,8,12,12,0,0,0,0,0,0,0,0,0,2 + db 2,0,1,1,1,1,1,8,1,1,1,0,0,0,0,2 + db 2,0,0,0,12,0,0,8,0,0,0,16,0,12,12,2 + db 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 + +Dangeon2: + db 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 + db 2,1,1,0,1,1,1,0,12,0,0,0,0,0,0,2 + db 2,0,12,12,0,0,0,8,1,8,1,1,1,0,0,2 + db 2,8,1,1,1,1,1,8,1,8,0,0,0,0,0,2 + db 2,8,0,0,0,0,0,8,1,8,2,4,4,2,0,2 ;0 + db 2,8,2,4,4,4,2,8,1,8,2,2,2,2,0,2 + db 2,0,2,2,2,2,2,8,1,8,0,0,0,0,0,2 + db 2,0,1,0,0,0,0,8,1,1,1,1,1,1,8,2 + db 2,0,1,1,8,1,1,1,0,0,0,0,0,0,8,2 + db 2,12,1,1,8,0,12,0,1,8,1,1,8,1,1,2 + db 2,0,0,0,8,8,1,8,0,8,0,0,0,0,0,2 + db 2,12,1,8,1,8,1,1,8,1,1,1,1,1,1,2 + db 2,0,1,8,12,12,0,0,0,0,0,0,0,0,0,2 + db 2,0,1,1,1,1,1,8,1,1,1,0,0,0,0,2 + db 2,0,0,0,12,0,0,8,0,0,0,16,0,12,12,2 + db 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2 + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- + db 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2 + db 2,0,0,0,0,0,0,0,0,0,0,16,0,0,0,2 + db 2,12,1,8,1,0,0,0,0,0,0,1,8,0,0,2 + db 2,0,1,8,1,0,0,0,0,0,0,1,0,8,0,2 ;1 + db 2,12,1,8,1,1,0,0,0,0,1,1,0,8,0,2 + db 2,0,1,8,1,0,12,12,12,12,0,1,8,8,0,2 + db 2,12,1,8,1,0,1,1,1,1,0,1,8,0,0,2 + db 2,0,1,8,0,0,0,0,0,0,0,0,8,0,0,2 + db 2,0,1,1,1,1,8,1,8,1,1,1,1,1,8,2 + db 2,0,0,0,12,0,8,0,8,0,0,0,12,0,8,2 + db 2,0,1,1,1,1,1,0,1,8,1,1,8,1,1,2 + db 2,0,0,0,0,0,0,0,0,8,1,0,8,0,0,2 + db 2,0,1,1,1,1,1,8,1,1,1,1,1,1,8,2 + db 2,0,0,12,0,0,0,8,0,0,12,0,0,0,8,2 + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + db 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2 + db 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2 + db 2,0,0,0,0,0,0,0,0,12,0,12,0,0,0,2 + db 2,0,0,0,0,0,0,8,1,1,1,1,1,1,0,2 ;2 + db 2,0,8,0,12,12,0,8,0,0,0,0,0,2,4,2 + db 2,0,8,1,1,1,1,0,0,0,0,0,0,2,2,2 + db 2,0,8,0,0,0,0,12,1,1,1,1,0,0,0,2 + db 2,0,8,1,0,1,0,12,0,0,0,0,0,0,0,2 + db 2,0,8,0,1,1,12,12,0,0,0,8,1,1,1,2 + db 2,0,8,0,12,0,0,12,0,0,0,8,0,12,0,2 + db 2,0,8,0,0,0,8,1,8,0,0,1,8,1,8,2 + db 2,0,8,0,0,8,1,1,1,8,0,0,8,0,8,2 + db 2,0,1,1,1,1,1,1,1,1,1,1,1,1,8,2 + db 2,0,0,0,0,0,0,0,16,0,0,0,0,0,8,2 + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + db 2,0,0,0,0,12,0,0,0,0,0,0,16,0,0,2 + db 2,0,8,1,1,1,1,1,1,1,1,1,1,1,0,2 + db 2,0,8,0,0,0,0,0,12,0,0,0,0,0,0,2 + db 2,0,8,0,0,0,0,1,8,1,0,0,0,0,0,2 + db 2,0,8,0,0,0,1,1,8,1,1,0,0,0,0,2 + db 2,0,8,0,12,1,1,1,8,1,1,1,12,0,0,2 + db 2,0,8,0,1,1,12,1,8,1,12,1,1,0,0,2 + db 2,0,0,1,1,1,1,1,8,1,1,1,1,0,0,2 ;3 + db 2,0,1,0,0,0,0,0,8,1,0,0,0,1,0,2 + db 2,0,1,0,1,1,1,1,8,1,1,1,0,1,0,2 + db 2,0,1,1,12,1,12,1,8,1,1,1,0,1,0,2 + db 2,0,1,1,1,1,1,1,8,1,1,1,0,1,0,2 + db 2,0,1,1,12,1,12,1,8,1,1,1,12,1,0,2 + db 2,0,0,0,0,0,0,0,8,0,0,0,0,0,0,2 + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + db 2,0,12,0,0,0,0,0,0,0,0,0,16,0,0,2 + db 2,0,1,8,1,1,1,1,1,1,8,1,1,1,8,2 + db 2,0,0,8,0,0,0,0,0,0,8,0,0,0,8,2 + db 2,0,1,1,1,1,1,8,1,1,1,1,1,1,0,2 + db 2,0,0,12,0,0,12,8,0,0,12,0,0,0,0,2 + db 2,12,1,1,1,8,1,1,1,1,8,1,1,1,8,2 + db 2,0,0,0,0,8,0,0,0,0,8,0,0,0,8,2 + db 2,8,1,1,1,1,1,1,8,1,1,1,1,1,0,2 ;4 + db 2,8,0,0,0,12,0,0,8,0,0,12,0,0,0,2 + db 2,0,1,8,1,1,1,1,1,1,1,1,8,1,0,2 + db 2,0,0,8,12,0,0,0,0,12,0,0,8,0,0,2 + db 2,8,1,1,1,1,1,1,8,1,1,1,1,1,8,2 + db 2,8,12,0,0,0,0,0,0,0,0,0,0,12,8,2 + db 2,8,2,4,4,4,4,4,4,4,4,4,4,2,8,2 + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + db 2,8,1,8,12,8,1,8,1,8,1,8,1,8,1,2 + db 2,8,2,8,1,8,1,8,1,8,1,8,12,8,12,2 + db 2,8,1,8,1,8,2,8,12,8,1,8,1,8,1,2 + db 2,8,12,8,0,8,0,8,0,8,0,8,0,8,0,2 + db 2,1,8,1,1,1,1,1,8,1,1,1,1,1,8,2 + db 2,0,8,0,0,0,0,0,8,0,0,12,0,0,8,2 + db 2,0,8,12,0,2,12,0,8,1,1,1,1,1,8,2 + db 2,0,1,1,8,1,1,1,8,0,0,0,0,0,8,2 ;5 + db 2,0,1,0,8,0,0,0,8,0,0,12,0,0,8,2 + db 2,0,1,0,8,0,0,0,8,1,1,1,1,1,8,2 + db 2,0,1,12,8,0,0,2,8,0,0,0,0,0,8,2 + db 2,8,1,1,1,1,8,1,1,1,1,8,1,1,1,2 + db 2,8,0,0,0,0,8,2,0,0,2,8,0,0,0,2 + db 2,0,8,0,12,8,8,2,4,4,2,8,0,0,16,2 + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + db 2,0,8,0,8,0,8,0,8,0,0,8,0,8,16,2 + db 2,1,8,1,8,1,8,1,8,1,1,8,1,8,1,2 + db 2,0,8,0,8,0,8,0,8,8,0,8,0,8,0,2 + db 2,1,1,8,1,1,1,1,1,8,1,1,8,1,1,2 + db 2,0,0,8,8,0,12,8,0,8,8,12,8,8,0,2 + db 2,1,1,1,8,1,1,8,1,1,8,1,1,8,1,2 + db 2,0,8,0,8,0,12,8,0,0,8,0,12,8,0,2 ;6 + db 2,1,8,1,1,1,1,1,8,1,1,1,1,1,1,2 + db 2,0,8,0,12,8,0,0,8,12,0,8,0,0,0,2 + db 2,1,8,1,1,8,1,1,8,1,1,8,1,1,1,2 + db 2,0,0,8,0,8,8,0,8,8,0,8,8,0,0,2 + db 2,1,1,8,1,1,8,1,1,8,1,1,8,1,1,2 + db 2,0,0,8,12,0,8,0,12,8,0,12,8,12,12,2 + db 2,8,8,1,1,1,1,1,1,1,1,1,1,1,1,2 + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + db 2,0,12,0,12,0,12,12,0,12,0,12,0,0,0,2 + db 2,1,1,1,8,1,1,1,1,1,1,8,1,1,1,2 + db 2,0,0,0,8,0,0,12,0,0,0,8,0,0,0,2 + db 2,1,1,1,1,1,1,1,8,1,1,1,1,1,1,2 + db 2,0,0,0,12,0,0,0,8,12,0,0,0,0,0,2 + db 2,1,1,1,8,1,1,1,1,1,1,8,1,1,1,2 + db 2,0,0,0,8,0,0,0,0,0,0,8,0,0,0,2 ; 7 + db 2,1,1,1,1,1,1,1,1,1,1,1,1,8,1,2 + db 2,0,0,0,0,0,0,0,0,0,0,0,0,8,0,2 + db 2,1,1,1,1,1,1,8,1,1,1,1,1,8,1,2 + db 2,0,0,0,0,0,0,8,0,0,0,0,0,8,0,2 + db 2,1,1,8,1,8,1,1,8,1,8,1,1,1,1,2 + db 2,0,0,8,0,8,12,0,8,0,8,12,0,0,16,2 + db 2,8,1,1,1,1,1,1,1,1,1,1,1,1,1,2 + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + db 2,0,0,12,0,0,0,0,0,0,0,0,0,16,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,0,8,0,8,0,12,0,0,8,0,8,0,0,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,0,0,8,12,0,0,8,0,0,8,0,0,0,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,0,0,0,0,0,0,0,0,8,0,0,0,12,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,0,8,0,0,0,8,12,0,0,8,0,8,12,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,0,0,8,0,0,0,0,12,8,0,12,8,0,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,0,0,8,0,8,12,0,0,8,12,0,8,12,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 + db 2,0,0,16,0,0,0,0,0,16,0,0,0,16,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,8,8,8,8,8,12,8,8,8,8,8,8,8,8,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,8,8,8,12,8,8,8,8,8,8,8,8,0,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,12,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,0,8,8,8,8,8,12,8,8,8,8,8,12,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,8,0,8,8,8,8,8,12,8,0,12,8,8,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,0,8,8,8,8,12,0,0,8,12,0,8,12,0,2 + db 2,8,8,8,8,8,8,8,8,8,8,8,8,8,8,2 + db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2;------------------------------------------------------------------------------- + + +;------------------------------------------------------------------------------- +Bullet: dw 0,0,0,0,0,0 + dw 0,0,0,0,0,0 + dw 0,0,0,0,0,0 + dw 0,0,0,0,0,0 +;------------------------------------------------------------------------------- + + +Enemy: dw 1,448,128,0,0,500 ;враги класс,Х,У,положение в лабиринте,направление движения,жизнь + dw 0,32,32,0,0,0 + dw 0,64,32,0,0,0 + dw 0,416,32,0,0,0 + dw 0,256,256,0,0,0 + dw 0,256,224,0,0,0 + dw 0,320,192,0,0,0 + dw 0,32,256,0,0,0 + dw 0,448,448,0,0,0 + +;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +bullet_bmp: +file 'bullet.bmp' +rb 1 + +level_bmp: +file 'level2.bmp' +rb 1 + +kirpich: +file 'kirpich.bmp' +rb 1 + +kirpich3: +file 'kirpich2.bmp' +rb 1 + +kirpich2: +file 'oldkirpich.bmp' +rb 1 + +lest_bmp: +file 'lestnica.bmp' +rb 1 + +water1_bmp: +file 'water1.bmp' +rb 1 + +water2_bmp: +file 'water2.bmp' +rb 1 + +door1_bmp: +file 'door1.bmp' +rb 1 + +door2_bmp: +file 'door2.bmp' +rb 1 + +title db 'Dungeon (z/x - shoot)',0 + +img_level: +rb 448*448*3+8 + +;img_ded1: +;rb 448*448*3+8 + +img_area: +rb 32*32*3+8 + +img_area2: +rb 32*32*3+8 + +img_area3: +rb 32*32*3+8 + +img_bullet: +rb 4*8*3+8 + +img_lestniza: +rb 32*32*3+8 + +img_water1: +rb 32*32*3+8 + +img_water2: +rb 32*32*3+8 + +img_door1: +rb 32*32*3+8 + +img_door2: +rb 32*32*3+8 + +img_enemy1: +rb 32*32*3+8 + +img_enemy2: +rb 32*32*3+8 + + +Music_bah: + db 0x0f, 0x09, 0 + +Music_mov: + db 0x00, 0x00, 0 + +Music_almaz: + db 0x09, 0x03, 0 + +entered rd 1 + +imgcount rd 1 ; кол-во всего кадров в анимации +img_index rd 1 ; номер текущего кадра + +;hashtable rd 4096 ; рабочая область для РеадГИФ процедуры +workarea: +file 'aniall.gif' + + +;temp rb 0x100000 ; место для ГИФ фаила +rb 10 + +canvas: +xs dd 512 +ys dd 512 + rb 512*512*3 + +gif_hash_area: +rd 4096+1 + +coords: +rd 2 + +Image: