'libio' and 'libini': function 'get_color' not spoil register 'ecx'

game 'Nu_pogodi': revised

git-svn-id: svn://kolibrios.org@1573 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
IgorA
2010-08-20 10:31:17 +00:00
parent 7ea3c78d40
commit be3cceaea6
4 changed files with 113 additions and 59 deletions

View File

@@ -81,12 +81,14 @@ proc libini._.get_char _f ;/////////////////////////////////////////////////////
;;------------------------------------------------------------------------------------------------;; ;;------------------------------------------------------------------------------------------------;;
;< --- TBD --- ;; ;< --- TBD --- ;;
;;================================================================================================;; ;;================================================================================================;;
push ecx
mov ecx, [_f] mov ecx, [_f]
dec [ecx + IniFile.cnt] dec [ecx + IniFile.cnt]
jns @f jns @f
stdcall libini._.preload_block, [_f] stdcall libini._.preload_block, [_f]
dec [ecx + IniFile.cnt] dec [ecx + IniFile.cnt]
@@: lodsb @@: lodsb
pop ecx
ret ret
endp endp
@@ -99,6 +101,7 @@ proc libini._.skip_nonblanks _f ;///////////////////////////////////////////////
;;------------------------------------------------------------------------------------------------;; ;;------------------------------------------------------------------------------------------------;;
;< --- TBD --- ;; ;< --- TBD --- ;;
;;================================================================================================;; ;;================================================================================================;;
push ecx
mov ecx, [_f] mov ecx, [_f]
@@: stdcall libini._.get_char, [_f] @@: stdcall libini._.get_char, [_f]
cmp al, 32 cmp al, 32
@@ -114,6 +117,7 @@ proc libini._.skip_nonblanks _f ;///////////////////////////////////////////////
stdcall libini._.skip_line, [_f] stdcall libini._.skip_line, [_f]
jmp @b jmp @b
@@: stdcall libini._.unget_char, [_f] @@: stdcall libini._.unget_char, [_f]
pop ecx
ret ret
endp endp
@@ -126,6 +130,7 @@ proc libini._.skip_spaces _f ;//////////////////////////////////////////////////
;;------------------------------------------------------------------------------------------------;; ;;------------------------------------------------------------------------------------------------;;
;< --- TBD --- ;; ;< --- TBD --- ;;
;;================================================================================================;; ;;================================================================================================;;
push ecx
mov ecx, [_f] mov ecx, [_f]
@@: stdcall libini._.get_char, [_f] @@: stdcall libini._.get_char, [_f]
cmp al, 32 cmp al, 32
@@ -133,6 +138,7 @@ proc libini._.skip_spaces _f ;//////////////////////////////////////////////////
cmp al, 9 cmp al, 9
je @b je @b
@@: stdcall libini._.unget_char, [_f] @@: stdcall libini._.unget_char, [_f]
pop ecx
ret ret
endp endp
@@ -145,6 +151,7 @@ proc libini._.skip_line _f ;////////////////////////////////////////////////////
;;------------------------------------------------------------------------------------------------;; ;;------------------------------------------------------------------------------------------------;;
;< --- TBD --- ;; ;< --- TBD --- ;;
;;================================================================================================;; ;;================================================================================================;;
push ecx
mov ecx, [_f] mov ecx, [_f]
@@: stdcall libini._.get_char, [_f] @@: stdcall libini._.get_char, [_f]
or al, al or al, al
@@ -154,6 +161,7 @@ proc libini._.skip_line _f ;////////////////////////////////////////////////////
cmp al, 10 cmp al, 10
jne @b jne @b
@@: stdcall libini._.unget_char, [_f] @@: stdcall libini._.unget_char, [_f]
pop ecx
ret ret
endp endp
@@ -425,7 +433,7 @@ proc libini._.find_section _f, _sec_name ;//////////////////////////////////////
;< eax = -1 (fail) / 0 (ok) ;; ;< eax = -1 (fail) / 0 (ok) ;;
;< [_f.pos] = new cursor position (right after ']' char if eax = 0, at the end of file otherwise) ;; ;< [_f.pos] = new cursor position (right after ']' char if eax = 0, at the end of file otherwise) ;;
;;================================================================================================;; ;;================================================================================================;;
push ebx edi push ebx ecx edi
mov ecx, [_f] mov ecx, [_f]
invoke file.seek, [ecx + IniFile.fh], 0, SEEK_SET invoke file.seek, [ecx + IniFile.fh], 0, SEEK_SET
@@ -461,12 +469,12 @@ proc libini._.find_section _f, _sec_name ;//////////////////////////////////////
@@: @@:
cmp byte[edi], 0 cmp byte[edi], 0
jne .next_section jne .next_section
pop edi ebx pop edi ecx ebx
xor eax, eax xor eax, eax
ret ret
.exit_error: .exit_error:
pop edi ebx pop edi ecx ebx
or eax, -1 or eax, -1
ret ret
endp endp

View File

@@ -179,7 +179,7 @@ locals
loc_buf rb 40 loc_buf rb 40
endl endl
push ebx esi edi push ebx ecx esi edi
xor ebx, ebx xor ebx, ebx
invoke mem.alloc, sizeof.InternalFileInfo invoke mem.alloc, sizeof.InternalFileInfo
@@ -212,7 +212,7 @@ endl
jne .exit_error.ex jne .exit_error.ex
@@: @@:
mov eax, ebx mov eax, ebx
pop edi esi ebx pop edi esi ecx ebx
ret ret
.exit_error.ex: .exit_error.ex:
@@ -233,7 +233,7 @@ endl
.exit_error: .exit_error:
invoke mem.free, ebx invoke mem.free, ebx
xor eax, eax xor eax, eax
pop edi esi ebx pop edi esi ecx ebx
ret ret
endp endp

View File

@@ -50,27 +50,24 @@ ends
displ_w dd ? ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD> displ_w dd ? ;<3B><><EFBFBD> <20><><EFBFBD><EFBFBD>
displ_h dd ? ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> displ_h dd ? ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
displ_bytes dd ? ;ࠧ<><E0A0A7><EFBFBD> 1-<2D><><><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD><EFBFBD> displ_bytes dd ? ;ࠧ<><E0A0A7><EFBFBD> 1-<2D><><><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><E0A0A6><EFBFBD><EFBFBD><EFBFBD>
;displ_bytes equ 315*210*3 ;ࠧ<><EFBFBD><EFBFBD> 1-<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> offs_shadow_x dd ? ;ᤢ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <20><><EFBFBD> 'x'
offs_shadow_y dd ? ;ᤢ<><E1A4A2><><E2A5AD> <20><> <20><><EFBFBD> 'y'
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 IMAGE_FONT_SIZE equ 128*144*3
use_but equ 1
if use_but eq 1
BUT1_T equ 10 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A2A5><EFBFBD> BUT1_T equ 10 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1A2A5><EFBFBD>
BUT1_L equ 15 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1ABA5> BUT1_L equ 15 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1ABA5>
BUT1_W equ 50 ;<3B><><EFBFBD> BUT1_W equ 50 ;<3B><><EFBFBD>
BUT1_H equ 20 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BUT1_H equ 20 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BUT1_NEXT_TOP equ (BUT1_T+BUT1_H)*65536 BUT1_NEXT_TOP equ (BUT1_T+BUT1_H)*65536
end if
FILE_NAME_MAX equ 20 ;<3B><><EFBFBD><EFBFBD><E1A8AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><><E4A0A9> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD><E2ADAE>⥫쭮 ⥪<>饩) FILE_NAME_MAX equ 20 ;<3B><><EFBFBD><EFBFBD><E1A8AC><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><><E4A0A9> (<28><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><EFBFBD><E2ADAE>⥫쭮 ⥪<>饩)
;<3B><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD> <20><><><EFBFBD><E7A0AD> ;<3B><><EFBFBD><EFBFBD><E7A5AD> <20><><EFBFBD><EFBFBD> <20><><><EFBFBD><E7A0AD>
ini_def_decorat_file db 'curici.png',0
ini_def_unit_file db 'wolf.png',0 ini_def_unit_file db 'wolf.png',0
;<3B><><EFBFBD><EFBFBD><EFBFBD><><E4A0A9><EFBFBD> ;<3B><><EFBFBD><EFBFBD><EFBFBD><><E4A0A9><EFBFBD>
fn_icon0 db 'curici.png',0 ;<3B><><EFBFBD><><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> fn_icon0 rb FILE_NAME_MAX ;<3B><><EFBFBD><><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
fn_icon1 rb FILE_NAME_MAX ;<3B><><EFBFBD><><E4A0A9> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> fn_icon1 rb FILE_NAME_MAX ;<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_icon2 db 'eggs.png',0 ;<3B><><EFBFBD><><E4A0A9> <20> <20><><EFBFBD>
fn_icon3 db 'chi.png',0 ;<3B><><EFBFBD><><E4A0A9> <20><><E6A8AF><EFBFBD> fn_icon3 db 'chi.png',0 ;<3B><><EFBFBD><><E4A0A9> <20><><E6A8AF><EFBFBD>
@@ -78,22 +75,31 @@ fn_font db 'font8x9.bmp',0
ini_name db 'nu_pogod.ini',0 ini_name db 'nu_pogod.ini',0
ini_sec_files db 'Files',0 ini_sec_files db 'Files',0
key_file_decorat db 'file_decorat',0
key_file_unit db 'file_unit',0 key_file_unit db 'file_unit',0
key_displ_w db 'displ_w',0 key_displ_w db 'displ_w',0
key_displ_h db 'displ_h',0 key_displ_h db 'displ_h',0
key_shadow_x db 'offs_shadow_x',0
key_shadow_y db 'offs_shadow_y',0
ini_sec_color db 'Colors',0 ini_sec_color db 'Colors',0
;<3B><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD> 梥⮢ <20><> *.ini 䠩<><E4A0A9>
key_color_fon db 'background',0
key_color_shadows db 'shadows',0
key_color_egg db 'objects',0
key_color_chick db 'lost',0
key_color_decorat: db 'dec'
.ind: db '?',0
key_color_unit db 'unit',0 key_color_unit db 'unit',0
;梥<><E6A2A5> <20> <20><><EFBFBD><EFBFBD> ;梥<><E6A2A5> <20> <20><><EFBFBD><EFBFBD>
color_fon dd 0xffffff color_fon dd ? ;梥<><>
color_shadows dd 0xd0d0d0 ;梥<><><E2A5AD> color_shadows dd ? ;梥<><><E2A5AD>
color_trees dd 0x008000 ;梥<> <20><EFBFBD> color_wolf dd ? ;梥<> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
color_wolf dd 0x800000 ;梥<> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD> color_egg dd ? ;梥<> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
color_egg dd 0x404080 ;梥<> <20><><EFBFBD><EFBFBD> color_chick dd ? ;梥<> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
color_chick dd 0x00d0d0 ;梥<><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> color_decorat dd ?,?,? ;梥<><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>権 (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>, ...)
color_curici dd 0x8080d0 ;梥<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
color_perilo dd 0x000080 ;梥<> <20><><EFBFBD> (<28><EFBFBD><E0A5A1>)
;梥<><E6A2A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4A5A9> ;梥<><E6A2A5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E4A5A9>
color_but_sm dd 0x808080 ;梥<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> color_but_sm dd 0x808080 ;梥<> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
color_but_te dd 0xffffff ;梥<><><E2A5AA><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> color_but_te dd 0xffffff ;梥<><><E2A5AA><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -136,6 +142,7 @@ mask_lot_ld equ 100000b ;
mask_lot_ru equ 10000000000b ;<3B><><20><><EFBFBD> <20><EFBFBD><E0A0A2><EFBFBD> <20><><EFBFBD><EFBFBD><E5ADA5> <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_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_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_move_eggs equ 11111111111111111111b ;<3B><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
mask_fail_eggs equ 100001000010000100000b ;<3B><><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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_left equ 11111000000000000000000000b ;<3B><><20><><EFBFBD><EFBFBD><EFBFBD><><E6A8AF><EFBFBD>
mask_chi_right equ 11111000000000000000000000000000b ;<3B><><20><EFBFBD><E0A0A2><><E6A8AF><EFBFBD> mask_chi_right equ 11111000000000000000000000000000b ;<3B><><20><EFBFBD><E0A0A2><><E6A8AF><EFBFBD>
@@ -149,7 +156,7 @@ val_zaac_time_n equ 7 ;
txt_game_a db '<27><><EFBFBD><EFBFBD> <20>',0 txt_game_a db '<27><><EFBFBD><EFBFBD> <20>',0
txt_game_b db '<27><><EFBFBD><EFBFBD> <20>',0 txt_game_b db '<27><><EFBFBD><EFBFBD> <20>',0
zaac_status db 0 zaac_status db 0 ;<3B><>᫮ ⠪⮢, <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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> 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 ;rb 1
pos_eggs dd 0 ;<3B><><EFBFBD><EFBFBD><20><><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><E6A8AF><EFBFBD> pos_eggs dd 0 ;<3B><><EFBFBD><EFBFBD><20><><EFBFBD><E1AFAE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><E6A8AF><EFBFBD>
@@ -211,36 +218,35 @@ InitBackgroundBuffer: ;ᮧ
mov esi,edi mov esi,edi
xor eax,eax xor eax,eax
xor ebx,ebx cld
cmp dword[offs_shadow_x],0
jne @f
cmp dword[offs_shadow_y],0
jne @f
jmp .end_shadows
@@:
mov edi,buf_decor
xor ebx,ebx
mov ecx,3
@@:
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>
add edi,BUF_STRUCT_SIZE
loop @b
.end_shadows:
mov edi,buf_decor mov edi,buf_decor
mov ax,buf2d_t mov ebx,color_decorat
add eax,OFFS_SHADOW_Y mov ecx,3
mov bx,buf2d_l @@:
add ebx,OFFS_SHADOW_X mov ax,buf2d_t
stdcall [buf2d_bit_blt_alpha], esi, ebx,eax, edi,[color_shadows] ;<3B><><EFBFBD><EFBFBD> <20><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[ebx] ;<3B><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
add edi,BUF_STRUCT_SIZE add edi,BUF_STRUCT_SIZE
mov ax,buf2d_t add ebx,4
add eax,OFFS_SHADOW_Y loop @b
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>
add edi,BUF_STRUCT_SIZE
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_decor
mov ax,buf2d_t
stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_perilo] ;<3B><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
add edi,BUF_STRUCT_SIZE
mov ax,buf2d_t
stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_curici] ;<3B><><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
add edi,BUF_STRUCT_SIZE
mov ax,buf2d_t
stdcall [buf2d_bit_blt_alpha], esi, 0,eax, edi,[color_trees] ;<3B><><EFBFBD><20><><EFBFBD><E0A5A2>
popad popad
ret ret
@@ -510,6 +516,14 @@ MoveEggs:
.no_zaac_move: .no_zaac_move:
;ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> ;ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
cmp word[eggs_count],5 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 5 <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> 1-<2D><>
jge @f
mov ecx,dword[pos_eggs]
and ecx,mask_move_eggs
;cmp ecx,0
jnz .end_creat
@@:
bt dword[rand_x],4 ;<3B><EFBFBD><E0AEA2><20><EFBFBD> <20><><><E1AEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><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 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> 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>
@@ -610,10 +624,34 @@ start:
mov dword[displ_w],eax mov dword[displ_w],eax
stdcall dword[ini_get_int],file_name,ini_sec_files,key_displ_h,140 stdcall dword[ini_get_int],file_name,ini_sec_files,key_displ_h,140
mov dword[displ_h],eax mov dword[displ_h],eax
stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_decorat,fn_icon0,FILE_NAME_MAX,ini_def_decorat_file
stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_unit,fn_icon1,FILE_NAME_MAX,ini_def_unit_file
stdcall dword[ini_get_int],file_name,ini_sec_files,key_shadow_x,2
mov dword[offs_shadow_x],eax
stdcall dword[ini_get_int],file_name,ini_sec_files,key_shadow_y,2
mov dword[offs_shadow_y],eax
stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_fon,0xffffff
mov dword[color_fon],eax
stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_shadows,0xd0d0d0
mov dword[color_shadows],eax
stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_unit,0 stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_unit,0
mov dword[color_wolf],eax mov dword[color_wolf],eax
stdcall dword[ini_get_str],file_name,ini_sec_files,key_file_unit,fn_icon1,FILE_NAME_MAX,ini_def_unit_file stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_egg,0x404080
mov dword[color_egg],eax
stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_chick,0x00d0d0
mov dword[color_chick],eax
mov ebx,color_decorat
mov byte[key_color_decorat.ind],'0'
mov ecx,3
cld
@@:
stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_decorat,0x000080
mov dword[ebx],eax
add ebx,4
inc byte[key_color_decorat.ind]
loop @b
mov edx,dword[displ_w] mov edx,dword[displ_w]
imul edx,dword[displ_h] imul edx,dword[displ_h]
@@ -790,7 +828,6 @@ draw_window:
inc esi inc esi
.draw_s: .draw_s:
if use_but eq 1
; *** <20><><EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *** ; *** <20><><EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ***
push esi push esi
mov eax,8 mov eax,8
@@ -828,7 +865,6 @@ pop esi
; *** <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AC>஢ *** ; *** <20><><EFBFBD><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><E0A0AC>஢ ***
mov eax,13 ;<3B><><EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><>אַ㣮<EFACAE><EFBFBD><ECADA8> mov eax,13 ;<3B><><EFBFBD><E1AEA2><EFBFBD><EFBFBD> <20><>אַ㣮<EFACAE><EFBFBD><ECADA8>
mov edx,[sc.work] mov edx,[sc.work]
end if
mov ebx,esi mov ebx,esi
mov ecx,dword[procinfo.client_box.height] mov ecx,dword[procinfo.client_box.height]
@@ -863,7 +899,7 @@ draw_display:
push eax push eax
mov eax,dword[displ_w] mov eax,dword[displ_w]
shr eax,1 shr eax,1
stdcall [buf2d_draw_text], buf_displ, buf_font,game_text,eax,OFFS_SHADOW_X,[color_curici] ;<3B><><EFBFBD><20><><EFBFBD> <20><> stdcall [buf2d_draw_text], buf_displ, buf_font,game_text,eax,[offs_shadow_x],[color_wolf] ;<3B><><EFBFBD><20><><EFBFBD> <20><>
pop eax pop eax
stdcall [buf2d_draw], buf_displ stdcall [buf2d_draw], buf_displ
ret ret
@@ -871,7 +907,7 @@ pop eax
align 4 align 4
button: button:
mcall 17 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> mcall 17 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if use_but eq 1
cmp ah,5 cmp ah,5
jne @f jne @f
stdcall InitGame,0 stdcall InitGame,0
@@ -879,7 +915,7 @@ button:
cmp ah,6 cmp ah,6
jne @f jne @f
stdcall InitGame,1 stdcall InitGame,1
@@: end if @@:
cmp ah,1 cmp ah,1
jne still jne still
.exit: .exit:
@@ -990,7 +1026,7 @@ image_data dd 0 ;
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> 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 run_file_70 FileInfoBlock
hed db 'Nu pogodi 03.08.10',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> hed db 'Nu pogodi 20.08.10',0 ;<3B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
sc system_colors ;<3B><><EFBFBD><EFBFBD><E2A5AC><EFBFBD><><E6A2A5> sc system_colors ;<3B><><EFBFBD><EFBFBD><E2A5AC><EFBFBD><><E6A2A5>
align 4 align 4

View File

@@ -1,6 +1,16 @@
[Files] [Files]
displ_w=315 displ_w=315
displ_h=210 displ_h=210
file_decorat=curici.png
file_unit=wolf.png file_unit=wolf.png
offs_shadow_x=2
offs_shadow_y=2
[Colors] [Colors]
unit=128,0,0 background=255,255,255 ;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
shadows=200,200,200 ;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
unit=64,0,0 ;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
objects=64,64,128 ;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
lost=0,208,208 ;<3B><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
dec0=0,0,128
dec1=128,128,208
dec2=0,128,0