forked from KolibriOS/kolibrios
1067 lines
27 KiB
NASM
1067 lines
27 KiB
NASM
|
use32
|
|||
|
org 0x0
|
|||
|
db 'MENUET01' ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>ᯮ<EFBFBD><E1AFAE>塞<EFBFBD><EFA5AC><EFBFBD> 䠩<><E4A0A9> <20>ᥣ<EFBFBD><E1A5A3> 8 <20><><EFBFBD><EFBFBD>
|
|||
|
dd 0x1
|
|||
|
dd start
|
|||
|
dd i_end ;ࠧ<><E0A0A7><EFBFBD> <20>ਫ<EFBFBD><E0A8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
dd mem
|
|||
|
dd stacktop
|
|||
|
dd 0x0
|
|||
|
dd sys_path
|
|||
|
|
|||
|
include '../../../macros.inc'
|
|||
|
include '../../../proc32.inc'
|
|||
|
include '../../../develop/libraries/box_lib/load_lib.mac'
|
|||
|
include 'mem.inc'
|
|||
|
include 'dll.inc'
|
|||
|
|
|||
|
@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc, dll.Load
|
|||
|
|
|||
|
;䫠<><E4ABA0>, <20><><EFBFBD> <20>㭪樨 <20><>१<EFBFBD><E0A5A7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
BUF2D_OPT_CROP_TOP equ 1 ;<3B><>१<EFBFBD><E0A5A7> ᢥ<><E1A2A5><EFBFBD>
|
|||
|
BUF2D_OPT_CROP_LEFT equ 2 ;<3B><>१<EFBFBD><E0A5A7> <><E1ABA5>
|
|||
|
BUF2D_OPT_CROP_BOTTOM equ 4 ;<3B><>१<EFBFBD><E0A5A7> ᭨<><E1ADA8>
|
|||
|
BUF2D_OPT_CROP_RIGHT equ 8 ;<3B><>१<EFBFBD><E0A5A7> <20><>ࠢ<EFBFBD>
|
|||
|
BUF2D_BIT_OPT_CROP_TOP equ 0
|
|||
|
BUF2D_BIT_OPT_CROP_LEFT equ 1
|
|||
|
BUF2D_BIT_OPT_CROP_BOTTOM equ 2
|
|||
|
BUF2D_BIT_OPT_CROP_RIGHT equ 3
|
|||
|
|
|||
|
BUF_STRUCT_SIZE equ 21
|
|||
|
buf2d_data equ dword[edi] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
buf2d_w equ dword[edi+8] ;<3B><>ਭ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
buf2d_h equ dword[edi+12] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
buf2d_t equ word[edi+6] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ᢥ<><E1A2A5><EFBFBD>
|
|||
|
buf2d_l equ word[edi+4] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E1ABA5>
|
|||
|
buf2d_size_lt equ dword[edi+4] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E1ABA5> <20> <20><>ࠢ<EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
buf2d_color equ dword[edi+16] ;梥<> 䮭<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
buf2d_bits equ byte[edi+20] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD> <20> 1-<2D> <20><>窥 <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
struct FileInfoBlock
|
|||
|
Function dd ?
|
|||
|
Position dd ?
|
|||
|
Flags dd ?
|
|||
|
Count dd ?
|
|||
|
Buffer dd ?
|
|||
|
db ?
|
|||
|
FileName dd ?
|
|||
|
ends
|
|||
|
|
|||
|
GAME_POLE_W equ 315 ;<3B><>ਭ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
GAME_POLE_H equ 210 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
GAME_POLE_BYTES equ GAME_POLE_W*GAME_POLE_H*3 ;ࠧ<><E0A0A7><EFBFBD> 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
OFFS_SHADOW_X equ 2 ;ᤢ<><E1A4A2> ⥭<><E2A5AD> <20><> <20><><EFBFBD> 'x'
|
|||
|
OFFS_SHADOW_Y equ 2 ;ᤢ<><E1A4A2> ⥭<><E2A5AD> <20><> <20><><EFBFBD> 'y'
|
|||
|
IMAGE_FONT_SIZE equ 128*144*3
|
|||
|
|
|||
|
fn_icon0 db 'curici.png',0 ;<3B><><EFBFBD> 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﬨ
|
|||
|
fn_icon1 db 'wolf.png',0 ;<3B><><EFBFBD> 䠩<><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>楬
|
|||
|
fn_icon2 db 'eggs.png',0 ;<3B><><EFBFBD> 䠩<><E4A0A9> <20> <20><>栬<EFBFBD>
|
|||
|
fn_icon3 db 'chi.png',0 ;<3B><><EFBFBD> 䠩<><E4A0A9> <20> 樯<><E6A8AF>⠬<EFBFBD>
|
|||
|
fn_font db 'font8x9.bmp',0
|
|||
|
|
|||
|
color_fon dd 0xffffff
|
|||
|
color_shadows dd 0xd0d0d0 ;梥<> ⥭<><E2A5AD>
|
|||
|
color_trees dd 0x008000 ;梥<> <20>ࠢ<EFBFBD>
|
|||
|
color_wolf dd 0x800000 ;梥<> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
color_egg dd 0x404080 ;梥<> <20><><EFBFBD><EFBFBD>
|
|||
|
color_chick dd 0x00d0d0 ;梥<> 樯<><E6A8AF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
color_curici dd 0x8080d0 ;梥<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
color_perilo dd 0x000080 ;梥<> <20><>ਫ<EFBFBD> (<28>ॡ<EFBFBD><E0A5A1>)
|
|||
|
|
|||
|
macro load_image_file path,buf,size { ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>㧪<EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
stdcall mem.Alloc, dword size ;<3B>뤥<EFBFBD>塞 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
mov [buf],eax
|
|||
|
|
|||
|
copy_path path,sys_path,file_name,0x0 ;<3B><>ନ<EFBFBD>㥬 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> 䠩<><E4A0A9> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>, <20><><EFBFBD>ࠧ㬥<E0A0A7><E3ACA5><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20>ணࠬ<E0AEA3><E0A0AC><EFBFBD>
|
|||
|
mov eax,70 ;70-<2D> <20>㭪<EFBFBD><E3ADAA><EFBFBD> ࠡ<><E0A0A1><EFBFBD> <20> 䠩<><E4A0A9><EFBFBD><EFBFBD>
|
|||
|
mov [run_file_70.Function], 0
|
|||
|
mov [run_file_70.Position], 0
|
|||
|
mov [run_file_70.Flags], 0
|
|||
|
mov [run_file_70.Count], dword size
|
|||
|
m2m [run_file_70.Buffer], [buf]
|
|||
|
mov byte[run_file_70+20], 0
|
|||
|
mov [run_file_70.FileName], file_name
|
|||
|
mov ebx,run_file_70
|
|||
|
int 0x40 ;<3B><><EFBFBD><EFBFBD>㦠<EFBFBD><E3A6A0> 䠩<> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
cmp ebx,0xffffffff
|
|||
|
je @f
|
|||
|
;<3B><>।<EFBFBD><E0A5A4>塞 <20><><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20> <20><>ॢ<EFBFBD><E0A5A2><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> image_data
|
|||
|
stdcall dword[img_decode], dword[buf],ebx,0
|
|||
|
mov dword[image_data],eax
|
|||
|
;<3B>८<EFBFBD>ࠧ㥬 <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20> <20><>ଠ<EFBFBD><E0ACA0> rgb
|
|||
|
stdcall dword[img_to_rgb2], dword[image_data],dword[buf]
|
|||
|
;㤠<>塞 <20>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> image_data
|
|||
|
stdcall dword[img_destroy], dword[image_data]
|
|||
|
@@:
|
|||
|
}
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
bit_zaac equ 2 ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
val_zaac equ 4 ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20>⢥<EFBFBD><E2A2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bit_mig equ 3 ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
val_mig equ 8 ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20>⢥<EFBFBD><E2A2A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mask_lot_lu equ 1b ;<3B><>᪠ <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>孥<EFBFBD><E5ADA5> <20><>⪠
|
|||
|
mask_lot_ld equ 100000b ;<3B><>᪠ <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>⪠
|
|||
|
mask_lot_ru equ 10000000000b ;<3B><>᪠ <20><><EFBFBD> <20>ࠢ<EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD>孥<EFBFBD><E5ADA5> <20><>⪠
|
|||
|
mask_lot_rd equ 1000000000000000b ;<3B><>᪠ <20><><EFBFBD> <20>ࠢ<EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>⪠
|
|||
|
mask_clear_all equ 11111011111011110111101111011110b ;<3B><>᪠ <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⪨ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20>ਡ<EFBFBD><E0A8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 樯<><E6A8AF><EFBFBD>
|
|||
|
mask_fail_eggs equ 100001000010000100000b ;<3B><>᪠ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
|||
|
mask_chi_left equ 11111000000000000000000000b ;<3B><>᪠ <20><><EFBFBD><EFBFBD><EFBFBD> 樯<><E6A8AF><EFBFBD>
|
|||
|
mask_chi_right equ 11111000000000000000000000000000b ;<3B><>᪠ <20>ࠢ<EFBFBD><E0A0A2> 樯<><E6A8AF><EFBFBD>
|
|||
|
mask_chi_cr_l equ 1000000000000000000000b ;<3B><>᪠ <20><><EFBFBD> ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mask_chi_cr_r equ 1000000000000000000000000000b ;<3B><>᪠ <20><><EFBFBD> ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD> <20>ࠢ<EFBFBD><E0A0A2><EFBFBD>
|
|||
|
bit_chi_left equ 21 ;1-<2D> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>⢥砥<E2A2A5> <20><> <20><><EFBFBD><EFBFBD>饣<EFBFBD> <><E1ABA5>
|
|||
|
bit_chi_right equ 27 ;1-<2D> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>⢥砥<E2A2A5> <20><> <20><><EFBFBD><EFBFBD>饣<EFBFBD> <20>ࠢ<EFBFBD>
|
|||
|
|
|||
|
pos_wolf db 0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 0-<2D> <20><><EFBFBD> <><E1ABA5>/<2F><>ࠢ<EFBFBD>, 1-<2D> <20><><EFBFBD> ᢥ<><E1A2A5><EFBFBD>/<2F><><EFBFBD><EFBFBD>
|
|||
|
;rb 1
|
|||
|
pos_eggs dd 0 ;<3B><><EFBFBD><EFBFBD>樨 <20><>ᯮ<EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> 樯<><E6A8AF><EFBFBD>
|
|||
|
eggs_count dw 0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
|||
|
game_text db '<27><><EFBFBD><EFBFBD> _',13
|
|||
|
some_text db '0'
|
|||
|
rb 8 ;⥪<><E2A5AA> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
|||
|
count_last db 0 ;<3B><><EFBFBD><EFBFBD>稪 <20>ய<EFBFBD>饭<EFBFBD><E9A5AD><EFBFBD> <20><><EFBFBD>
|
|||
|
game_spd dd 0 ;<3B><><EFBFBD><EFBFBD>প<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>樨 <20><><EFBFBD>砩<EFBFBD><E7A0A9><EFBFBD> <20><>ᥫ
|
|||
|
rand_x dd 0
|
|||
|
|
|||
|
align 4
|
|||
|
rand_next:
|
|||
|
;x(k+1) = (a*x(k)+c) mod m
|
|||
|
; a=22695477, c=1, m=2^32
|
|||
|
push eax
|
|||
|
mov eax,dword[rand_x]
|
|||
|
imul eax,22695477
|
|||
|
inc eax
|
|||
|
mov dword[rand_x],eax
|
|||
|
pop eax
|
|||
|
ret
|
|||
|
|
|||
|
;ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 8 <20><><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD>
|
|||
|
;<3B><><EFBFBD> buf - <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20>᭮<EFBFBD><E1ADAE> <20><><EFBFBD><EFBFBD>ண<EFBFBD> <20>㤥<EFBFBD> ᮧ<><E1AEA7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
;䮭<><E4AEAD><EFBFBD><EFBFBD> 梥<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 0xffffff, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ந<EFBFBD><E0AEA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>१<EFBFBD><E0A5A7>
|
|||
|
;<3B><> 䮭<><E4AEAD><EFBFBD><EFBFBD><EFBFBD> 梥<><E6A2A5> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>㤥<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 쬭<><ECACAD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
align 4
|
|||
|
proc CreateTrapharetBuffer, buf:dword, img_data:dword
|
|||
|
push edi
|
|||
|
mov edi,dword[buf]
|
|||
|
stdcall [buf2d_create_f_img], edi,[img_data] ;ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stdcall [buf2d_conv_24_to_8], edi,1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA7>筮<EFBFBD><E7ADAE><EFBFBD> 8<><38><EFBFBD>
|
|||
|
stdcall [buf2d_crop_color], edi,buf2d_color,BUF2D_OPT_CROP_TOP+BUF2D_OPT_CROP_BOTTOM+BUF2D_OPT_CROP_RIGHT
|
|||
|
pop edi
|
|||
|
ret
|
|||
|
endp
|
|||
|
|
|||
|
align 4
|
|||
|
InitBackgroundBuffer: ;ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD> 䮭<><E4AEAD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
pushad
|
|||
|
mov edi,buf_fon
|
|||
|
mov eax,[color_fon]
|
|||
|
mov buf2d_color,eax
|
|||
|
stdcall [buf2d_clear], edi,eax
|
|||
|
mov esi,edi
|
|||
|
|
|||
|
xor eax,eax
|
|||
|
xor ebx,ebx
|
|||
|
|
|||
|
mov edi,buf_tr_fon0
|
|||
|
mov ax,buf2d_t
|
|||
|
add eax,OFFS_SHADOW_Y
|
|||
|
mov bx,buf2d_l
|
|||
|
add ebx,OFFS_SHADOW_X
|
|||
|
stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color_shadows] ;<3B><><EFBFBD>㥬 ⥭<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov edi,buf_tr_fon1
|
|||
|
mov ax,buf2d_t
|
|||
|
add eax,OFFS_SHADOW_Y
|
|||
|
mov bx,buf2d_l
|
|||
|
add ebx,OFFS_SHADOW_X
|
|||
|
stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color_shadows] ;<3B><><EFBFBD>㥬 ⥭<> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov edi,buf_tr_fon2
|
|||
|
mov ax,buf2d_t
|
|||
|
add eax,OFFS_SHADOW_Y
|
|||
|
mov bx,buf2d_l
|
|||
|
add ebx,OFFS_SHADOW_X
|
|||
|
stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color_shadows] ;<3B><><EFBFBD>㥬 ⥭<> <20><>ॢ쥢
|
|||
|
|
|||
|
mov edi,buf_tr_fon0
|
|||
|
mov ax,buf2d_t
|
|||
|
stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_perilo] ;<3B><><EFBFBD>㥬 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov edi,buf_tr_fon1
|
|||
|
mov ax,buf2d_t
|
|||
|
stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_curici] ;<3B><><EFBFBD>㥬 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov edi,buf_tr_fon2
|
|||
|
mov ax,buf2d_t
|
|||
|
stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_trees] ;<3B><><EFBFBD>㥬 <20><>ॢ<EFBFBD><E0A5A2>
|
|||
|
popad
|
|||
|
ret
|
|||
|
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⨭<EFBFBD><E2A8AD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> buf <20><> <20><><EFBFBD>ᨢ<EFBFBD> <20><><EFBFBD><EFBFBD> buf_img <20> <20><><EFBFBD><EFBFBD><EFBFBD>ᮬ ind
|
|||
|
;<3B>. <20>. buf <- buf_img[ind]
|
|||
|
align 4
|
|||
|
proc DrawArrayImg, buf:dword, buf_img:dword, ind:dword, color:dword
|
|||
|
pushad
|
|||
|
mov edi,dword[ind]
|
|||
|
imul edi,BUF_STRUCT_SIZE
|
|||
|
add edi,dword[buf_img]
|
|||
|
|
|||
|
mov esi,dword[buf]
|
|||
|
xor eax,eax
|
|||
|
mov ax,buf2d_t
|
|||
|
xor ebx,ebx
|
|||
|
mov bx,buf2d_l
|
|||
|
stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color]
|
|||
|
popad
|
|||
|
ret
|
|||
|
endp
|
|||
|
|
|||
|
align 4
|
|||
|
DrawZaac: ;<3B><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
push eax
|
|||
|
bt word[pos_wolf],bit_zaac
|
|||
|
jae .end_mig
|
|||
|
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_wolf,6,[color_wolf] ;<3B><><EFBFBD>㥬 ⥫<> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
mov eax,dword[pos_eggs]
|
|||
|
and eax,mask_chi_right+mask_chi_left
|
|||
|
cmp eax,0
|
|||
|
je .end_mig ;<3B> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 樯<><E6A8AF><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD> <20>㪮<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
bt word[pos_wolf],bit_mig
|
|||
|
jc @f
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_wolf,7,[color_wolf] ;<3B><><EFBFBD>㥬 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
jmp .end_mig
|
|||
|
@@:
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_wolf,8,[color_wolf] ;<3B><><EFBFBD>㥬 <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
.end_mig:
|
|||
|
pop eax
|
|||
|
ret
|
|||
|
|
|||
|
align 4
|
|||
|
DrawWolf: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><>২<EFBFBD><E0A7A8><EFBFBD><EFBFBD>
|
|||
|
bt word[pos_wolf],0
|
|||
|
jc @f
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_wolf,0,[color_wolf]
|
|||
|
bt word[pos_wolf],1
|
|||
|
jc .corz_ldn
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_wolf,1,[color_wolf]
|
|||
|
jmp .corz_lend
|
|||
|
.corz_ldn:
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_wolf,2,[color_wolf]
|
|||
|
.corz_lend:
|
|||
|
jmp .wolf_b
|
|||
|
@@:
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_wolf,3,[color_wolf]
|
|||
|
bt word[pos_wolf],1
|
|||
|
jc .corz_rdn
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_wolf,4,[color_wolf]
|
|||
|
jmp .corz_rend
|
|||
|
.corz_rdn:
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_wolf,5,[color_wolf]
|
|||
|
.corz_rend:
|
|||
|
.wolf_b:
|
|||
|
ret
|
|||
|
|
|||
|
align 4
|
|||
|
DrawEggs: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
pushad
|
|||
|
cld
|
|||
|
|
|||
|
mov eax,dword[pos_eggs]
|
|||
|
xor ebx,ebx
|
|||
|
mov ecx,20 ;横<> <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
|||
|
@@:
|
|||
|
bt eax,ebx
|
|||
|
jae .draw_egg
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_egg,ebx,[color_egg]
|
|||
|
.draw_egg:
|
|||
|
inc ebx
|
|||
|
loop @b
|
|||
|
|
|||
|
;mov eax,dword[pos_eggs]
|
|||
|
and eax,mask_chi_left
|
|||
|
cmp eax,0
|
|||
|
je @f
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_egg,20,[color_egg] ;ࠧ<><E0A0A7>⮥ <20><><EFBFBD><EFBFBD> <><E1ABA5>
|
|||
|
@@:
|
|||
|
mov eax,dword[pos_eggs]
|
|||
|
and eax,mask_chi_right
|
|||
|
cmp eax,0
|
|||
|
je @f
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_egg,21,[color_egg] ;ࠧ<><E0A0A7>⮥ <20><><EFBFBD><EFBFBD> <20><>ࠢ<EFBFBD>
|
|||
|
@@:
|
|||
|
|
|||
|
mov eax,dword[pos_eggs]
|
|||
|
xor edx,edx
|
|||
|
mov ebx,bit_chi_left
|
|||
|
mov ecx,5 ;横<> <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 樯<><E6A8AF><EFBFBD>
|
|||
|
@@:
|
|||
|
bt eax,ebx
|
|||
|
jae .draw_chick_l
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
|
|||
|
.draw_chick_l:
|
|||
|
inc ebx
|
|||
|
inc edx
|
|||
|
loop @b
|
|||
|
mov ebx,bit_chi_right
|
|||
|
mov ecx,5 ;横<> <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20>ࠢ<EFBFBD><E0A0A2> 樯<><E6A8AF><EFBFBD>
|
|||
|
@@:
|
|||
|
bt eax,ebx
|
|||
|
jae .draw_chick_r
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
|
|||
|
.draw_chick_r:
|
|||
|
inc ebx
|
|||
|
inc edx
|
|||
|
loop @b
|
|||
|
|
|||
|
xor eax,eax
|
|||
|
mov al,byte[count_last]
|
|||
|
mov ecx,eax ;横<> <20><><EFBFBD> <20><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>窮<EFBFBD>
|
|||
|
shr ecx,1
|
|||
|
mov edx,10 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>砫<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> buf_chi
|
|||
|
cmp ecx,0
|
|||
|
je .no_unit_last
|
|||
|
@@:
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick]
|
|||
|
inc edx
|
|||
|
loop @b
|
|||
|
.no_unit_last:
|
|||
|
|
|||
|
bt ax,0 ;<3B><EFBFBD><E0AEA2>塞 <20><><EFBFBD><EFBFBD><EFBFBD>饥 <20><> <20><>⭮<EFBFBD> <20>窮
|
|||
|
jae @f
|
|||
|
bt word[pos_wolf],bit_mig
|
|||
|
jc @f
|
|||
|
stdcall DrawArrayImg, buf_displ,buf_chi,edx,[color_chick] ;<3B><><EFBFBD><EFBFBD><EFBFBD>饥 <20><><EFBFBD><EFBFBD>䭮<EFBFBD> <20>窮
|
|||
|
@@:
|
|||
|
|
|||
|
popad
|
|||
|
ret
|
|||
|
|
|||
|
align 4
|
|||
|
CountEggsInc: ;㢥<><E3A2A5>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD><EFBFBD>稪 <20><><EFBFBD> <20><> 1
|
|||
|
push eax edi
|
|||
|
xor eax,eax
|
|||
|
inc word[eggs_count] ;㢥<><E3A2A5>稢<EFBFBD><E7A8A2><EFBFBD> <20><><EFBFBD><EFBFBD>稪 <20><><EFBFBD>
|
|||
|
cmp word[eggs_count],200 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>窨
|
|||
|
je @f
|
|||
|
cmp word[eggs_count],500 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>窨
|
|||
|
je @f
|
|||
|
jmp .no_bonus
|
|||
|
@@:
|
|||
|
mov byte[count_last],0
|
|||
|
.no_bonus:
|
|||
|
|
|||
|
mov ax,word[eggs_count]
|
|||
|
mov edi,some_text
|
|||
|
call convert_to_str ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 ⥪<>⮢<EFBFBD><E2AEA2> <20><>ப<EFBFBD>
|
|||
|
and ax,0xf ;<3B><>१ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 16 <20><><EFBFBD> 㬥<><E3ACA5>蠥<EFBFBD> <20>६<EFBFBD>
|
|||
|
cmp ax,0
|
|||
|
jne @f
|
|||
|
cmp dword[game_spd],15 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>쭠<EFBFBD> <20><><EFBFBD><EFBFBD>প<EFBFBD>
|
|||
|
jle @f
|
|||
|
dec dword[game_spd]
|
|||
|
@@:
|
|||
|
pop edi eax
|
|||
|
ret
|
|||
|
|
|||
|
;input:
|
|||
|
; eax - <20><>᪠, 㪠<>뢠<EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 㯠<><E3AFA0> <20><><EFBFBD><EFBFBD>
|
|||
|
align 4
|
|||
|
CountLastInc: ;<3B><><EFBFBD><EFBFBD><EFBFBD><E1ABA5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>窮<EFBFBD>
|
|||
|
inc byte[count_last] ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>䭮<EFBFBD><E4ADAE> <20>窠
|
|||
|
bt word[pos_wolf],bit_zaac
|
|||
|
jc @f
|
|||
|
inc byte[count_last] ;<3B> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> 1-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>䭮<EFBFBD><E4ADAE> <20>窠
|
|||
|
@@:
|
|||
|
cmp byte[count_last],6
|
|||
|
jle @f
|
|||
|
mov byte[count_last],6 ;<3B>⠢<EFBFBD><E2A0A2> <20><>࠭<EFBFBD>祭<EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>窮<EFBFBD>
|
|||
|
@@:
|
|||
|
or dword[pos_eggs],eax ;ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>饣<EFBFBD> 樯<><E6A8AF><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
ret
|
|||
|
|
|||
|
align 4
|
|||
|
MoveEggs:
|
|||
|
pushad
|
|||
|
xor byte[pos_wolf],val_mig ;<3B><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
cmp byte[count_last],6 ;<3B><><EFBFBD>ᨬ<EFBFBD><E1A8AC>쭮<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>窮<EFBFBD>
|
|||
|
je .end_fun
|
|||
|
|
|||
|
rol dword[pos_eggs],1
|
|||
|
mov ecx,dword[pos_eggs]
|
|||
|
and ecx,mask_fail_eggs
|
|||
|
cmp ecx,0
|
|||
|
je .no_fail ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
|||
|
;<3B><><EFBFBD><EFBFBD><EFBFBD><E1ABA5><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><>২<EFBFBD><E0A7A8>
|
|||
|
;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><E1ABA5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>窮<EFBFBD>
|
|||
|
xor ebx,ebx
|
|||
|
mov bl,byte[pos_wolf] ;<3B><>६ <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
and bl,3 ;<3B><> <20><>直<EFBFBD> <20><><EFBFBD>砩
|
|||
|
|
|||
|
bt ecx,5 ;<3B><EFBFBD><E0AEA2>塞 <20><><EFBFBD>孥<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ਫ<EFBFBD>
|
|||
|
jae .perilo_lu
|
|||
|
cmp bx,0 ;<3B><EFBFBD><E0AEA2>塞 <20><><EFBFBD><EFBFBD>稥 <20><>২<EFBFBD><E0A7A8>
|
|||
|
jne @f
|
|||
|
call CountEggsInc
|
|||
|
jmp .perilo_lu
|
|||
|
@@:
|
|||
|
mov eax,mask_chi_cr_l
|
|||
|
call CountLastInc
|
|||
|
.perilo_lu:
|
|||
|
bt ecx,10 ;<3B><EFBFBD><E0AEA2>塞 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ਫ<EFBFBD>
|
|||
|
jae .perilo_ld
|
|||
|
cmp bx,2 ;<3B><EFBFBD><E0AEA2>塞 <20><><EFBFBD><EFBFBD>稥 <20><>২<EFBFBD><E0A7A8>
|
|||
|
jne @f
|
|||
|
call CountEggsInc
|
|||
|
jmp .perilo_ld
|
|||
|
@@:
|
|||
|
mov eax,mask_chi_cr_l
|
|||
|
call CountLastInc
|
|||
|
.perilo_ld:
|
|||
|
bt ecx,15 ;<3B><EFBFBD><E0AEA2>塞 <20><><EFBFBD>孥<EFBFBD> <20>ࠢ<EFBFBD><E0A0A2> <20><>ਫ<EFBFBD>
|
|||
|
jae .perilo_ru
|
|||
|
cmp bx,1 ;<3B><EFBFBD><E0AEA2>塞 <20><><EFBFBD><EFBFBD>稥 <20><>২<EFBFBD><E0A7A8>
|
|||
|
jne @f
|
|||
|
call CountEggsInc
|
|||
|
jmp .perilo_ru
|
|||
|
@@:
|
|||
|
mov eax,mask_chi_cr_r
|
|||
|
call CountLastInc
|
|||
|
.perilo_ru:
|
|||
|
bt ecx,20 ;<3B><EFBFBD><E0AEA2>塞 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ࠢ<EFBFBD><E0A0A2> <20><>ਫ<EFBFBD>
|
|||
|
jae .perilo_rd
|
|||
|
cmp bx,3 ;<3B><EFBFBD><E0AEA2>塞 <20><><EFBFBD><EFBFBD>稥 <20><>২<EFBFBD><E0A7A8>
|
|||
|
jne @f
|
|||
|
call CountEggsInc
|
|||
|
jmp .perilo_rd
|
|||
|
@@:
|
|||
|
mov eax,mask_chi_cr_r
|
|||
|
call CountLastInc
|
|||
|
.perilo_rd:
|
|||
|
.no_fail:
|
|||
|
|
|||
|
and dword[pos_eggs],mask_clear_all ;<3B><><EFBFBD><EFBFBD>⪠ 㯠<><E3AFA0><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>३
|
|||
|
|
|||
|
call rand_next
|
|||
|
bt dword[rand_x],6
|
|||
|
jc @f
|
|||
|
bt dword[rand_x],8
|
|||
|
jc @f
|
|||
|
bt dword[rand_x],9
|
|||
|
jc @f
|
|||
|
xor byte[pos_wolf],val_zaac ;<3B><>ᮢ뢠<E1AEA2><EBA2A0>/<2F><>ᮢ뢠<E1AEA2><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
@@:
|
|||
|
|
|||
|
;ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
|||
|
bt dword[rand_x],4 ;<3B><EFBFBD><E0AEA2>塞 <20>㤥<EFBFBD> <20><> ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
jc .end_creat
|
|||
|
bt dword[rand_x],5 ;<3B><EFBFBD><E0AEA2>塞 <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>㤥<EFBFBD> ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
jc .creat_r
|
|||
|
bt dword[rand_x],7
|
|||
|
jc @f
|
|||
|
or dword[pos_eggs],mask_lot_lu
|
|||
|
jmp .end_creat
|
|||
|
@@:
|
|||
|
or dword[pos_eggs],mask_lot_ld
|
|||
|
jmp .end_creat
|
|||
|
.creat_r:
|
|||
|
bt dword[rand_x],7
|
|||
|
jc @f
|
|||
|
or dword[pos_eggs],mask_lot_ru
|
|||
|
jmp .end_creat
|
|||
|
@@:
|
|||
|
or dword[pos_eggs],mask_lot_rd
|
|||
|
;jmp .end_creat
|
|||
|
.end_creat:
|
|||
|
|
|||
|
.end_fun:
|
|||
|
popad
|
|||
|
ret
|
|||
|
|
|||
|
align 4
|
|||
|
proc InitGame, b:dword ;<3B><>ࢮ<EFBFBD><E0A2AE>砫<EFBFBD><E7A0AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ன<EFBFBD><E0AEA9> <20><><EFBFBD><EFBFBD>
|
|||
|
mov word[eggs_count],0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⢮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
|||
|
mov byte[some_text],'0'
|
|||
|
mov byte[some_text+1],0 ;⥪<><E2A5AA> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
|
|||
|
mov byte[count_last],0
|
|||
|
mov dword[pos_eggs],0
|
|||
|
|
|||
|
cmp dword[b],0
|
|||
|
jne @f
|
|||
|
mov byte[game_text+5],'<27>'
|
|||
|
mov dword[game_spd],65 ;<3B><><EFBFBD><EFBFBD>প<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
jmp .end_init
|
|||
|
@@:
|
|||
|
mov byte[game_text+5],'<27>'
|
|||
|
mov dword[game_spd],35 ;<3B><><EFBFBD><EFBFBD>প<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
.end_init:
|
|||
|
|
|||
|
push eax ebx
|
|||
|
mcall 26,9
|
|||
|
mov dword[rand_x],eax ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 1-<2D> <20><><EFBFBD>砩<EFBFBD><E7A0A9><EFBFBD> <20><>
|
|||
|
pop ebx eax
|
|||
|
|
|||
|
ret
|
|||
|
endp
|
|||
|
|
|||
|
align 4
|
|||
|
start:
|
|||
|
load_libraries l_libs_start,load_lib_end
|
|||
|
|
|||
|
;<3B><EFBFBD>ઠ <20><> <>쪮 㤠筮 <20><><EFBFBD>㧨<EFBFBD><E3A7A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
mov ebp,lib0
|
|||
|
cmp dword [ebp+ll_struc_size-4],0
|
|||
|
jz @f
|
|||
|
mcall -1 ;exit not correct
|
|||
|
@@:
|
|||
|
mov ebp,lib1
|
|||
|
cmp dword [ebp+ll_struc_size-4],0
|
|||
|
jz @f
|
|||
|
mcall -1 ;exit not correct
|
|||
|
@@:
|
|||
|
|
|||
|
mcall 40,0x27
|
|||
|
mcall 48,3,sc,sizeof.system_colors ;<3B><><EFBFBD><EFBFBD>砥<EFBFBD> <20><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> 梥<><E6A2A5>
|
|||
|
|
|||
|
load_image_file fn_icon0,image_data_gray,3*GAME_POLE_BYTES
|
|||
|
mov eax,[image_data_gray]
|
|||
|
stdcall CreateTrapharetBuffer,buf_tr_fon0,eax
|
|||
|
add eax,GAME_POLE_BYTES
|
|||
|
stdcall CreateTrapharetBuffer,buf_tr_fon1,eax
|
|||
|
add eax,GAME_POLE_BYTES
|
|||
|
stdcall CreateTrapharetBuffer,buf_tr_fon2,eax
|
|||
|
stdcall mem.Free,[image_data_gray] ;<3B><EFBFBD><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
stdcall [buf2d_create], buf_fon ;ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> 䮭<><E4AEAD>묨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﬨ
|
|||
|
|
|||
|
load_image_file fn_icon1,image_data_gray, 9*GAME_POLE_BYTES
|
|||
|
mov eax,[image_data_gray]
|
|||
|
mov edi,buf_wolf
|
|||
|
mov ecx,9
|
|||
|
cld
|
|||
|
@@: ;<3B><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> 9 <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>楬
|
|||
|
mov buf2d_size_lt,0
|
|||
|
mov buf2d_w,GAME_POLE_W
|
|||
|
mov buf2d_h,GAME_POLE_H
|
|||
|
mov buf2d_color,0xffffff
|
|||
|
mov buf2d_bits,24
|
|||
|
stdcall CreateTrapharetBuffer,edi,eax
|
|||
|
add eax,GAME_POLE_BYTES
|
|||
|
add edi,BUF_STRUCT_SIZE
|
|||
|
loop @b
|
|||
|
stdcall mem.Free,[image_data_gray] ;<3B><EFBFBD><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
load_image_file fn_icon2,image_data_gray, 22*GAME_POLE_BYTES
|
|||
|
mov eax,[image_data_gray]
|
|||
|
mov edi,buf_egg
|
|||
|
mov ecx,22
|
|||
|
cld
|
|||
|
@@: ;<3B><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> 22 <20><><EFBFBD><EFBFBD> <20> <20><>栬<EFBFBD>
|
|||
|
mov buf2d_size_lt,0
|
|||
|
mov buf2d_w,GAME_POLE_W
|
|||
|
mov buf2d_h,GAME_POLE_H
|
|||
|
mov buf2d_color,0xffffff
|
|||
|
mov buf2d_bits,24
|
|||
|
stdcall CreateTrapharetBuffer,edi,eax
|
|||
|
add eax,GAME_POLE_BYTES
|
|||
|
add edi,BUF_STRUCT_SIZE
|
|||
|
loop @b
|
|||
|
stdcall mem.Free,[image_data_gray] ;<3B><EFBFBD><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
load_image_file fn_icon3,image_data_gray, 13*GAME_POLE_BYTES
|
|||
|
mov eax,[image_data_gray]
|
|||
|
mov edi,buf_chi
|
|||
|
mov ecx,13
|
|||
|
cld
|
|||
|
@@: ;<3B><><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0> 13 <20><><EFBFBD><EFBFBD> <20> 樯<><E6A8AF>⠬<EFBFBD>
|
|||
|
mov buf2d_size_lt,0
|
|||
|
mov buf2d_w,GAME_POLE_W
|
|||
|
mov buf2d_h,GAME_POLE_H
|
|||
|
mov buf2d_color,0xffffff
|
|||
|
mov buf2d_bits,24
|
|||
|
stdcall CreateTrapharetBuffer,edi,eax
|
|||
|
add eax,GAME_POLE_BYTES
|
|||
|
add edi,BUF_STRUCT_SIZE
|
|||
|
loop @b
|
|||
|
stdcall mem.Free,[image_data_gray] ;<3B><EFBFBD><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
load_image_file fn_font, image_data_gray,IMAGE_FONT_SIZE
|
|||
|
stdcall [buf2d_create_f_img], buf_font,[image_data_gray] ;ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stdcall mem.Free,[image_data_gray] ;<3B><EFBFBD><E1A2AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
stdcall [buf2d_conv_24_to_8], buf_font,1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E0AEA7>筮<EFBFBD><E7ADAE><EFBFBD> 8 <20><><EFBFBD>
|
|||
|
stdcall [buf2d_convert_text_matrix], buf_font
|
|||
|
|
|||
|
;<3B><EFBFBD>ઠ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
;mov edi,buf_wolf
|
|||
|
;add edi,BUF_STRUCT_SIZE ;<3B><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>২<EFBFBD><E0A7A8>
|
|||
|
;stdcall [buf2d_clear],edi,0x808080 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> 梥⮬
|
|||
|
|
|||
|
stdcall [buf2d_create], buf_displ ;ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>뢮<EFBFBD><EBA2AE> <20><> <20><>࠭
|
|||
|
call InitBackgroundBuffer ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塞 <20><><EFBFBD><EFBFBD><EFBFBD> <20> 䮭<><E4AEAD>묨 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ﬨ
|
|||
|
stdcall InitGame,0
|
|||
|
mcall 26,9
|
|||
|
mov [last_time],ebx
|
|||
|
|
|||
|
|
|||
|
|
|||
|
align 4
|
|||
|
red_win:
|
|||
|
call draw_window
|
|||
|
|
|||
|
align 4
|
|||
|
still: ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 横<>
|
|||
|
mcall 26,9
|
|||
|
mov ebx,[last_time]
|
|||
|
add ebx,dword[game_spd] ;delay
|
|||
|
sub ebx,eax
|
|||
|
cmp ebx,dword[game_spd] ;delay
|
|||
|
ja it_is_time_now
|
|||
|
test ebx,ebx
|
|||
|
jz it_is_time_now
|
|||
|
mcall 23
|
|||
|
|
|||
|
cmp eax,0
|
|||
|
je it_is_time_now
|
|||
|
|
|||
|
;mcall 10
|
|||
|
|
|||
|
cmp al,0x1 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
jz red_win
|
|||
|
cmp al,0x2
|
|||
|
jz key
|
|||
|
cmp al,0x3
|
|||
|
jz button
|
|||
|
|
|||
|
jmp still
|
|||
|
|
|||
|
align 4
|
|||
|
it_is_time_now:
|
|||
|
mcall 26,9
|
|||
|
mov [last_time],eax
|
|||
|
|
|||
|
;...<2E><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>⢨<EFBFBD>, <20><><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> delay <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ᥪ㭤...
|
|||
|
call MoveEggs
|
|||
|
call draw_display
|
|||
|
jmp still
|
|||
|
|
|||
|
align 4
|
|||
|
key:
|
|||
|
push eax ebx
|
|||
|
mcall 2
|
|||
|
|
|||
|
cmp ah,176 ;Left
|
|||
|
jne @f
|
|||
|
and byte[pos_wolf],0xfe
|
|||
|
@@:
|
|||
|
cmp ah,179 ;Right
|
|||
|
jne @f
|
|||
|
or byte[pos_wolf],1
|
|||
|
@@:
|
|||
|
cmp ah,178 ;Up
|
|||
|
jne @f
|
|||
|
and byte[pos_wolf],0xff-2
|
|||
|
@@:
|
|||
|
cmp ah,177 ;Down
|
|||
|
jne @f
|
|||
|
or byte[pos_wolf],2
|
|||
|
@@:
|
|||
|
|
|||
|
cmp ah,97 ;a
|
|||
|
jne @f
|
|||
|
and byte[pos_wolf],0xff-3 ;00
|
|||
|
@@:
|
|||
|
cmp ah,122 ;z
|
|||
|
jne @f
|
|||
|
and byte[pos_wolf],0xff-1
|
|||
|
or byte[pos_wolf],2 ;10
|
|||
|
@@:
|
|||
|
cmp ah,39 ;'
|
|||
|
jne @f
|
|||
|
and byte[pos_wolf],0xff-2
|
|||
|
or byte[pos_wolf],1 ;01
|
|||
|
@@:
|
|||
|
cmp ah,47 ;/
|
|||
|
jne @f
|
|||
|
or byte[pos_wolf],3 ;11
|
|||
|
@@:
|
|||
|
|
|||
|
pop ebx eax
|
|||
|
jmp still
|
|||
|
|
|||
|
|
|||
|
align 4
|
|||
|
draw_window:
|
|||
|
pushad
|
|||
|
mcall 12,1
|
|||
|
|
|||
|
xor eax,eax
|
|||
|
mov ebx,20*65536+370
|
|||
|
mov ecx,20*65536+280
|
|||
|
mov edx,[sc.work]
|
|||
|
;or edx,0x33000000
|
|||
|
or edx,0x73000000
|
|||
|
mov edi,hed
|
|||
|
mcall ;ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
mcall 9,procinfo,-1
|
|||
|
mov edi,buf_displ
|
|||
|
mov eax,dword[procinfo.client_box.width]
|
|||
|
cmp eax,GAME_POLE_W
|
|||
|
jle @f
|
|||
|
sub eax,GAME_POLE_W
|
|||
|
shr eax,1
|
|||
|
mov buf2d_l,ax ;<3B><><EFBFBD>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> 業<><E6A5AD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
@@:
|
|||
|
|
|||
|
call draw_display
|
|||
|
|
|||
|
mov eax,13 ;<3B><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><>אַ㣮<EFACAE>쭨<EFBFBD><ECADA8>
|
|||
|
mov edx,[sc.work]
|
|||
|
xor esi,esi
|
|||
|
mov si,buf2d_l
|
|||
|
add esi,GAME_POLE_W
|
|||
|
mov ebx,dword[procinfo.client_box.width]
|
|||
|
inc ebx
|
|||
|
cmp esi,ebx
|
|||
|
jge @f
|
|||
|
sub ebx,esi
|
|||
|
rol ebx,16
|
|||
|
mov bx,si
|
|||
|
rol ebx,16
|
|||
|
mov ecx,dword[procinfo.client_box.height]
|
|||
|
inc ecx
|
|||
|
int 0x40 ;<3B><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20>ࠢ<EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
jmp .draw_s
|
|||
|
@@:
|
|||
|
mov esi,dword[procinfo.client_box.width] ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>ਭ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
inc esi
|
|||
|
.draw_s:
|
|||
|
|
|||
|
mov ebx,esi
|
|||
|
mov ecx,dword[procinfo.client_box.height]
|
|||
|
inc ecx
|
|||
|
mov esi,GAME_POLE_H
|
|||
|
cmp esi,ebx
|
|||
|
jge @f
|
|||
|
sub ecx,esi
|
|||
|
rol ecx,16
|
|||
|
mov cx,si
|
|||
|
rol ecx,16
|
|||
|
int 0x40 ;<3B><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
@@:
|
|||
|
|
|||
|
xor ebx,ebx
|
|||
|
mov bx,buf2d_l
|
|||
|
mov ecx,GAME_POLE_H
|
|||
|
int 0x40 ;<3B><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
mcall 12,2
|
|||
|
popad
|
|||
|
ret
|
|||
|
|
|||
|
align 4
|
|||
|
draw_display:
|
|||
|
|
|||
|
stdcall mem_copy, dword[buf_fon],dword[buf_displ],GAME_POLE_BYTES ;<3B><><EFBFBD><EFBFBD><EFBFBD><E0AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20><> 䮭<><E4AEAD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
call DrawZaac
|
|||
|
call DrawWolf ;<3B><><EFBFBD>㥬 <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
call DrawEggs
|
|||
|
|
|||
|
stdcall [buf2d_draw_text], buf_displ, buf_font,game_text,GAME_POLE_W/2,OFFS_SHADOW_X,[color_curici] ;<3B><><EFBFBD>㥬 <20><>ப<EFBFBD> <20> ⥪<>⮬
|
|||
|
|
|||
|
stdcall [buf2d_draw], buf_displ
|
|||
|
|
|||
|
;mov eax,4 ;<3B><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> ⥪<><E2A5AA><EFBFBD>
|
|||
|
;mov ebx,(GAME_POLE_W/2)*65536+OFFS_SHADOW_X
|
|||
|
;mov ecx,[color_curici]
|
|||
|
;or ecx,0x80000000
|
|||
|
;mov edx,some_text
|
|||
|
;mcall
|
|||
|
|
|||
|
ret
|
|||
|
|
|||
|
align 4
|
|||
|
button:
|
|||
|
mcall 17 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>⮩ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmp ah,1
|
|||
|
jne still
|
|||
|
.exit:
|
|||
|
stdcall [buf2d_delete],buf_fon ;㤠<>塞 <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stdcall [buf2d_delete],buf_displ ;㤠<>塞 <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
stdcall [buf2d_delete],buf_tr_fon0
|
|||
|
stdcall [buf2d_delete],buf_tr_fon1
|
|||
|
stdcall [buf2d_delete],buf_tr_fon2
|
|||
|
|
|||
|
stdcall [buf2d_delete],buf_font
|
|||
|
|
|||
|
cld
|
|||
|
mov ecx,9
|
|||
|
mov edi,buf_wolf
|
|||
|
@@: ;㤠<>塞 9 <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>楬
|
|||
|
stdcall [buf2d_delete],edi
|
|||
|
add edi,BUF_STRUCT_SIZE
|
|||
|
loop @b
|
|||
|
mov ecx,13
|
|||
|
mov edi,buf_chi
|
|||
|
@@: ;㤠<>塞 13 <20><><EFBFBD><EFBFBD>
|
|||
|
stdcall [buf2d_delete],edi
|
|||
|
add edi,BUF_STRUCT_SIZE
|
|||
|
loop @b
|
|||
|
mov ecx,22
|
|||
|
mov edi,buf_egg
|
|||
|
@@: ;㤠<>塞 22 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
stdcall [buf2d_delete],edi
|
|||
|
add edi,BUF_STRUCT_SIZE
|
|||
|
loop @b
|
|||
|
|
|||
|
mcall -1 ;<3B><>室 <20><> <20>ணࠬ<E0AEA3><E0A0AC>
|
|||
|
|
|||
|
head_f_i:
|
|||
|
head_f_l db '<27><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> <20>訡<EFBFBD><E8A8A1>',0
|
|||
|
|
|||
|
system_dir0 db '/sys/lib/'
|
|||
|
name_buf2d db 'buf2d.obj',0
|
|||
|
err_message_found_lib0 db '<27><> 㤠<><E3A4A0><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥪<EFBFBD> buf2d.obj',0
|
|||
|
err_message_import0 db '<27>訡<EFBFBD><E8A8A1> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥪<EFBFBD> buf2d.obj',0
|
|||
|
|
|||
|
system_dir1 db '/sys/lib/'
|
|||
|
name_libimg db 'libimg.obj',0
|
|||
|
err_message_found_lib1 db '<27><> 㤠<><E3A4A0><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥪<EFBFBD> libimg.obj',0
|
|||
|
err_message_import1 db '<27>訡<EFBFBD><E8A8A1> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥪<EFBFBD> libimg.obj',0
|
|||
|
|
|||
|
;library structures
|
|||
|
l_libs_start:
|
|||
|
lib0 l_libs name_buf2d, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, import_buf2d_lib, err_message_import0, head_f_i
|
|||
|
lib1 l_libs name_libimg, sys_path, file_name, system_dir1, err_message_found_lib1, head_f_l, import_libimg, err_message_import1, head_f_i
|
|||
|
load_lib_end:
|
|||
|
|
|||
|
align 4
|
|||
|
proc mem_copy, source:dword, destination:dword, len:dword
|
|||
|
push ecx esi edi
|
|||
|
cld
|
|||
|
mov esi, dword[source]
|
|||
|
mov edi, dword[destination]
|
|||
|
mov ecx, dword[len]
|
|||
|
rep movsb
|
|||
|
pop edi esi ecx
|
|||
|
ret
|
|||
|
endp
|
|||
|
|
|||
|
align 4
|
|||
|
convert_to_str:
|
|||
|
pushad
|
|||
|
;mov eax,dword[value]
|
|||
|
;mov edi,dword[text]
|
|||
|
mov dword[edi+1],0
|
|||
|
cld
|
|||
|
call .str
|
|||
|
popad
|
|||
|
ret
|
|||
|
|
|||
|
|
|||
|
align 4
|
|||
|
.str:
|
|||
|
mov ecx,0x0a ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⥬<EFBFBD> <20><><EFBFBD><EFBFBD><E1ABA5><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD> ebx,eax,ecx,edx <20>室<EFBFBD><E5AEA4><EFBFBD> <20><>ࠬ<EFBFBD><E0A0AC><EFBFBD><EFBFBD> eax - <20><>
|
|||
|
;<3B><><EFBFBD>ॢ<EFBFBD><E0A5A2> <20><> <20> ASCII <20><>ப<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ecx=<3D><><EFBFBD>⥬<EFBFBD> <20><><EFBFBD><EFBFBD><E1ABA5> edi <20><><EFBFBD><EFBFBD><EFBFBD> <20>㤠 <20><><EFBFBD><EFBFBD><EFBFBD>뢠<EFBFBD><EBA2A0>, <20>㤥<EFBFBD> <20><>ப<EFBFBD>, <20><><EFBFBD>祬 <20><><EFBFBD><EFBFBD><EFBFBD> <20><>६<EFBFBD><E0A5AC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
cmp eax,ecx ;<3B>ࠢ<EFBFBD><E0A0A2><EFBFBD><EFBFBD> <20> <20> eax <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 祬 <20> ecx <20><> <20><>३<EFBFBD><E0A5A9> <20><> @@-1 <20>.<2E>. <20><> pop eax
|
|||
|
jb @f
|
|||
|
xor edx,edx ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> edx
|
|||
|
div ecx ;ࠧ<><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD>⮪ <20> edx
|
|||
|
push edx ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>⥪
|
|||
|
;dec edi ;ᬥ饭<E1ACA5><E9A5AD> <20><><EFBFBD><EFBFBD>室<EFBFBD><E5AEA4><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><>ப<EFBFBD>
|
|||
|
call .str;<3B><>३<EFBFBD><E0A5A9> <20><> ᠬ<> ᥡ<> <20>.<2E>. <20>맢<EFBFBD><EBA7A2><EFBFBD> ᠬ<> ᥡ<> <20> ⠪ <20><> ⮣<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> eax <20><> <20>⠭<EFBFBD><E2A0AD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 祬 <20> ecx
|
|||
|
pop eax
|
|||
|
@@: ;cmp al,10 ;<3B><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>祭<EFBFBD><E7A5AD> <20> al 祬 10 (<28><><EFBFBD> <20><><EFBFBD>⥬<EFBFBD> <20><><EFBFBD><EFBFBD><E1ABA5> 10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><>譠<EFBFBD>))
|
|||
|
;sbb al,$69 ;- <20><><EFBFBD>⭮ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>⠢<EFBFBD><E2A0A2><EFBFBD><EFBFBD> <20><><EFBFBD>㬠<EFBFBD><E3ACA0><EFBFBD><EFBFBD> <20>.<2E>. <20> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> ࠡ<>⠥<EFBFBD>
|
|||
|
;das ;<3B><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20>ந<EFBFBD>室<EFBFBD><E5AEA4> 㬥<><E3ACA5>襭<EFBFBD><E8A5AD> al <20><> 66h (<28> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ᠭ<EFBFBD> <20><>㣮<EFBFBD>)
|
|||
|
or al,0x30 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 祬 <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
stosb ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> ॣ<><E0A5A3><EFBFBD><EFBFBD><EFBFBD> al <20> <20>祪<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> es:edi
|
|||
|
ret ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 祭<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 室 <20>.<2E>. <20><><EFBFBD><EFBFBD> <20> <20>⥪<EFBFBD> <20>࠭<EFBFBD><E0A0AD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20>맮<EFBFBD><EBA7AE><EFBFBD> <20><> <20>⮫쪮 ࠧ <20><> <20> <20>㤥<EFBFBD> <20><><EFBFBD>뢠<EFBFBD><EBA2A0><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
|
|||
|
last_time dd ?
|
|||
|
image_data dd 0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20>८<EFBFBD>ࠧ<EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>⨭<EFBFBD><E2A8AD> <20>㭪<EFBFBD><E3ADAA>ﬨ libimg
|
|||
|
image_data_gray dd 0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20>६<EFBFBD><E0A5AC><EFBFBD>묨 <20><><EFBFBD>묨 <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD>ﬨ <20> <20><>ଠ<EFBFBD><E0ACA0> 24-bit, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
run_file_70 FileInfoBlock
|
|||
|
hed db 'Nu pogodi 29.07.10',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
sc system_colors ;<3B><><EFBFBD>⥬<EFBFBD><E2A5AC><EFBFBD> 梥<><E6A2A5>
|
|||
|
|
|||
|
align 4
|
|||
|
buf_fon: ;䮭<><E4AEAD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
dd 0 ;㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
dw 0 ;+4 left
|
|||
|
dw 0 ;+6 top
|
|||
|
dd GAME_POLE_W ;+8 w
|
|||
|
dd GAME_POLE_H ;+12 h
|
|||
|
dd 0xffffff ;+16 color
|
|||
|
db 24 ;+20 bit in pixel
|
|||
|
|
|||
|
align 4
|
|||
|
buf_font: ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>⮬
|
|||
|
dd 0 ;㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
dw 25 ;+4 left
|
|||
|
dw 25 ;+6 top
|
|||
|
dd 128 ;+8 w
|
|||
|
dd 144 ;+12 h
|
|||
|
dd 0 ;+16 color
|
|||
|
db 24 ;+20 bit in pixel
|
|||
|
|
|||
|
align 4
|
|||
|
buf_tr_fon0: ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> ३<><E0A5A9><EFBFBD><EFBFBD>
|
|||
|
dd 0 ;㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
dw 0 ;+4 left
|
|||
|
dw 0 ;+6 top
|
|||
|
dd GAME_POLE_W ;+8 w
|
|||
|
dd GAME_POLE_H ;+12 h
|
|||
|
dd 0xffffff ;+16 color
|
|||
|
db 24 ;+20 bit in pixel
|
|||
|
align 4
|
|||
|
buf_tr_fon1: ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>栬<EFBFBD>
|
|||
|
dd 0 ;㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
dw 0 ;+4 left
|
|||
|
dw 0 ;+6 top
|
|||
|
dd GAME_POLE_W ;+8 w
|
|||
|
dd GAME_POLE_H ;+12 h
|
|||
|
dd 0xffffff ;+16 color
|
|||
|
db 24 ;+20 bit in pixel
|
|||
|
align 4
|
|||
|
buf_tr_fon2: ;<3B><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>⥭<EFBFBD>ﬨ
|
|||
|
dd 0 ;㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
dw 0 ;+4 left
|
|||
|
dw 0 ;+6 top
|
|||
|
dd GAME_POLE_W ;+8 w
|
|||
|
dd GAME_POLE_H ;+12 h
|
|||
|
dd 0xffffff ;+16 color
|
|||
|
db 24 ;+20 bit in pixel
|
|||
|
|
|||
|
align 4
|
|||
|
buf_displ:
|
|||
|
dd 0 ;㪠<><E3AAA0>⥫<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
dw 25,0
|
|||
|
dd GAME_POLE_W ;+8 w
|
|||
|
dd GAME_POLE_H ;+12 h
|
|||
|
dd 0 ;+16 color
|
|||
|
db 24 ;+20 bit in pixel
|
|||
|
|
|||
|
align 4
|
|||
|
buf_wolf:
|
|||
|
rb 9*BUF_STRUCT_SIZE
|
|||
|
|
|||
|
align 4
|
|||
|
buf_egg:
|
|||
|
rb 22*BUF_STRUCT_SIZE
|
|||
|
|
|||
|
align 4
|
|||
|
buf_chi:
|
|||
|
rb 13*BUF_STRUCT_SIZE
|
|||
|
|
|||
|
align 4
|
|||
|
import_libimg:
|
|||
|
dd alib_init1
|
|||
|
img_is_img dd aimg_is_img
|
|||
|
img_info dd aimg_info
|
|||
|
img_from_file dd aimg_from_file
|
|||
|
img_to_file dd aimg_to_file
|
|||
|
img_from_rgb dd aimg_from_rgb
|
|||
|
img_to_rgb dd aimg_to_rgb
|
|||
|
img_to_rgb2 dd aimg_to_rgb2
|
|||
|
img_decode dd aimg_decode
|
|||
|
img_encode dd aimg_encode
|
|||
|
img_create dd aimg_create
|
|||
|
img_destroy dd aimg_destroy
|
|||
|
img_destroy_layer dd aimg_destroy_layer
|
|||
|
img_count dd aimg_count
|
|||
|
img_lock_bits dd aimg_lock_bits
|
|||
|
img_unlock_bits dd aimg_unlock_bits
|
|||
|
img_flip dd aimg_flip
|
|||
|
img_flip_layer dd aimg_flip_layer
|
|||
|
img_rotate dd aimg_rotate
|
|||
|
img_rotate_layer dd aimg_rotate_layer
|
|||
|
img_draw dd aimg_draw
|
|||
|
|
|||
|
dd 0,0
|
|||
|
alib_init1 db 'lib_init',0
|
|||
|
aimg_is_img db 'img_is_img',0 ;<3B><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⥪<EFBFBD> ᤥ<><E1A4A5><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD>
|
|||
|
aimg_info db 'img_info',0
|
|||
|
aimg_from_file db 'img_from_file',0
|
|||
|
aimg_to_file db 'img_to_file',0
|
|||
|
aimg_from_rgb db 'img_from_rgb',0
|
|||
|
aimg_to_rgb db 'img_to_rgb',0 ;<3B>८<EFBFBD>ࠧ<EFBFBD><E0A0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ࠦ<EFBFBD><E0A0A6><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> RGB
|
|||
|
aimg_to_rgb2 db 'img_to_rgb2',0
|
|||
|
aimg_decode db 'img_decode',0 ;<3B><>⮬<EFBFBD><E2AEAC><EFBFBD><EFBFBD><EFBFBD>᪨ <20><>।<EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD> <20><>ଠ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>᪨<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
aimg_encode db 'img_encode',0
|
|||
|
aimg_create db 'img_create',0
|
|||
|
aimg_destroy db 'img_destroy',0
|
|||
|
aimg_destroy_layer db 'img_destroy_layer',0
|
|||
|
aimg_count db 'img_count',0
|
|||
|
aimg_lock_bits db 'img_lock_bits',0
|
|||
|
aimg_unlock_bits db 'img_unlock_bits',0
|
|||
|
aimg_flip db 'img_flip',0
|
|||
|
aimg_flip_layer db 'img_flip_layer',0
|
|||
|
aimg_rotate db 'img_rotate',0
|
|||
|
aimg_rotate_layer db 'img_rotate_layer',0
|
|||
|
aimg_draw db 'img_draw',0
|
|||
|
|
|||
|
align 4
|
|||
|
import_buf2d_lib:
|
|||
|
dd sz_lib_init
|
|||
|
buf2d_create dd sz_buf2d_create
|
|||
|
buf2d_create_f_img dd sz_buf2d_create_f_img
|
|||
|
buf2d_clear dd sz_buf2d_clear
|
|||
|
buf2d_draw dd sz_buf2d_draw
|
|||
|
buf2d_delete dd sz_buf2d_delete
|
|||
|
buf2d_line dd sz_buf2d_line
|
|||
|
buf2d_circle dd sz_buf2d_circle
|
|||
|
buf2d_img_hdiv2 dd sz_buf2d_img_hdiv2
|
|||
|
buf2d_img_wdiv2 dd sz_buf2d_img_wdiv2
|
|||
|
buf2d_conv_24_to_8 dd sz_buf2d_conv_24_to_8
|
|||
|
buf2d_conv_24_to_32 dd sz_buf2d_conv_24_to_32
|
|||
|
buf2d_bit_blt dd sz_buf2d_bit_blt
|
|||
|
buf2d_bit_blt_transp dd sz_buf2d_bit_blt_transp
|
|||
|
buf2d_bit_blt_alpha dd sz_buf2d_bit_blt_alpha
|
|||
|
buf2d_cruve_bezier dd sz_buf2d_cruve_bezier
|
|||
|
buf2d_convert_text_matrix dd sz_buf2d_convert_text_matrix
|
|||
|
buf2d_draw_text dd sz_buf2d_draw_text
|
|||
|
buf2d_crop_color dd sz_buf2d_crop_color
|
|||
|
buf2d_offset_h dd sz_buf2d_offset_h
|
|||
|
dd 0,0
|
|||
|
sz_lib_init db 'lib_init',0
|
|||
|
sz_buf2d_create db 'buf2d_create',0
|
|||
|
sz_buf2d_create_f_img db 'buf2d_create_f_img',0
|
|||
|
sz_buf2d_clear db 'buf2d_clear',0
|
|||
|
sz_buf2d_draw db 'buf2d_draw',0
|
|||
|
sz_buf2d_delete db 'buf2d_delete',0
|
|||
|
sz_buf2d_line db 'buf2d_line',0
|
|||
|
sz_buf2d_circle db 'buf2d_circle',0 ;<3B><>ᮢ<EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><><EFBFBD>㦭<EFBFBD><E3A6AD><EFBFBD><EFBFBD>
|
|||
|
sz_buf2d_img_hdiv2 db 'buf2d_img_hdiv2',0
|
|||
|
sz_buf2d_img_wdiv2 db 'buf2d_img_wdiv2',0
|
|||
|
sz_buf2d_conv_24_to_8 db 'buf2d_conv_24_to_8',0
|
|||
|
sz_buf2d_conv_24_to_32 db 'buf2d_conv_24_to_32',0
|
|||
|
sz_buf2d_bit_blt db 'buf2d_bit_blt',0
|
|||
|
sz_buf2d_bit_blt_transp db 'buf2d_bit_blt_transp',0
|
|||
|
sz_buf2d_bit_blt_alpha db 'buf2d_bit_blt_alpha',0
|
|||
|
sz_buf2d_cruve_bezier db 'buf2d_cruve_bezier',0
|
|||
|
sz_buf2d_convert_text_matrix db 'buf2d_convert_text_matrix',0
|
|||
|
sz_buf2d_draw_text db 'buf2d_draw_text',0
|
|||
|
sz_buf2d_crop_color db 'buf2d_crop_color',0
|
|||
|
sz_buf2d_offset_h db 'buf2d_offset_h',0
|
|||
|
|
|||
|
i_end:
|
|||
|
rb 1024
|
|||
|
align 16
|
|||
|
procinfo process_information
|
|||
|
stacktop:
|
|||
|
sys_path rb 4096
|
|||
|
file_name:
|
|||
|
rb 4096
|
|||
|
plugin_path:
|
|||
|
rb 4096
|
|||
|
openfile_path:
|
|||
|
rb 4096
|
|||
|
filename_area:
|
|||
|
rb 256
|
|||
|
mem:
|