Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1566 → Rev 1565

/programs/games/snake/trunk/first_menu.asm
1,12 → 1,12
;;===First_menu_mode===========================================================================================================
 
First_menu:
mcall 40,111b ; set events: standart
mov [is_new_record], 0
call Show_cursor
 
mov [score], 0
call Set_first_level_of_play_mode
mov [snake_length_x2], 6
mov word[snake_dots], 0x0303
mov dword[snake_dots+2], 0x03050304
mov [snake_napravlenie], 3
mov [snake_napravlenie_next], 3
 
.redraw:
mcall 12,1
21,7 → 21,6
call Draw_decorations
call Draw_first_menu_picture
call Draw_menu_strings
call Draw_buttons
 
mcall 12,2
 
39,28 → 38,7
shr eax, 8 ; we should do it to get the real button code
 
cmp eax, 1 ; is it close button?
je Save_do_smth_else_and_exit ; if so, jump to quit...
cmp eax, 0xD0 ; 'play' button?
je Level_begin
cmp eax, 0xD1 ; 'exit' button?
je Save_do_smth_else_and_exit
cmp eax, 0xD2 ; change play mode button?
jne @f
call Change_play_mode
call Delete_buttons
call Draw_buttons
jmp .still ; jump to wait for another event
@@:
cmp eax, 0xD3 ; '+INC+' button?
jne @f
call Increase_geometry
jmp .redraw ; jump to wait for another event
@@:
cmp eax, 0xD4 ; '-dec-' button?
jne @f
call Decrease_geometry
jmp .redraw ; jump to wait for another event
@@:
je Exit ; if so, jump to quit...
 
jmp .still ; jump to wait for another event
 
69,17 → 47,13
mcall 2 ; get keycode
 
cmp ah, 0x1B ; Escape
je Save_do_smth_else_and_exit
je Exit
cmp ah, 0x0D ; Enter
je Level_begin
cmp ah, 0x20 ; Space
jne @f
call Change_play_mode
call Delete_buttons
call Draw_buttons
je Level_begin
 
jmp .still ; jump to wait for another event
@@:
jmp .still ; jump to wait for another event
 
;;---First_menu_mode-----------------------------------------------------------------------------------------------------------
 
89,14 → 63,14
Draw_first_menu_picture:
;;===Draw_first_menu_picture================================================================================================
 
mov ax, 2*0x100+24
mov cx, 1*0x100+5
mov ax, 0*0x100+29
mov cx, 1*0x100+6
mov edx, [snake_picture_color]
mov esi, picture_first_menu_snake
call Draw_picture
 
mov ax, 3*0x100+11
mov cx, 8*0x100+5
mov ax, 9*0x100+11
mov cx, 9*0x100+5
mov edx, [version_picture_color]
mov esi, picture_first_menu_version
call Draw_picture
107,17 → 81,17
 
 
Draw_menu_strings:
;;===Make_menu_strings======================================================================================================
;;===Make_menu_strings=========================================================================================
 
mov ebx, [window_width]
shr ebx, 1
sub ebx, press_to_start.size*3+6
sub ebx, (press_esc_to_exit-press_to_start-1)*3+6
shl ebx, 16
add ebx, dword[bottom_middle_strings]
mcall 4, ,[navigation_strings_color],press_to_start
mov ebx, [window_width]
shr ebx, 1
sub ebx, press_esc_to_exit.size*3+6
sub ebx, (string_congratulations-press_esc_to_exit-1)*3+6
shl ebx, 16
add ebx, [top_strings]
mcall , ,[navigation_strings_color],press_esc_to_exit
125,176 → 99,6
 
ret
 
;;---Make_menu_strings------------------------------------------------------------------------------------------------------
;;---Make_menu_strings-----------------------------------------------------------------------------------------
 
 
Draw_buttons:
;;===Draw_buttons===========================================================================================================
 
mov ebx, [button_x_left]
shl ebx, 16
mov bx, word[button_width_short]
mov ecx, [button_y_top]
shl ecx, 16
add cx, word[button_height]
mcall 8, , ,0x000000D0,[button_color] ; top left button
shr ecx, 16
mov bx, cx
mov edx, [button_height]
shr edx, 1
sub edx, 3 ; ~half of font height
add bx, dx
ror ebx, 16
mov edx, [button_width_short]
shr edx, 1
sub edx, string_button_play.size*3
add bx, dx
ror ebx, 16
mcall 4, ,[button_text_color],string_button_play
 
mov ebx, [button_x_right]
shl ebx, 16
mov bx, word[button_width_short]
mov ecx, [button_y_top]
shl ecx, 16
add cx, word[button_height]
mcall 8, , ,0x000000D1, ; top right button
shr ecx, 16
mov bx, cx
mov edx, [button_height]
shr edx, 1
sub edx, 3 ; ~half of font height
add bx, dx
ror ebx, 16
mov edx, [button_width_short]
shr edx, 1
sub edx, string_button_exit.size*3
add bx, dx
ror ebx, 16
mcall 4, ,[button_text_color],string_button_exit
 
mov ebx, [button_x_left]
shl ebx, 16
mov bx, word[button_width_long]
mov ecx, [button_y_middle]
shl ecx, 16
add cx, word[button_height]
mcall 8, , ,0x000000D2, ; middle button
shr ecx, 16
mov bx, cx
mov edi, [button_height]
shr edi, 1
sub edi, 3 ; ~half of font height
add bx, di
ror ebx, 16
mov edi, [button_width_long]
shr edi, 1
cmp [play_mode], 0
jne @f
sub edi, string_button_pm_classic.size*3
mov edx, string_button_pm_classic
jmp .skip
@@:
sub edi, string_button_pm_levels.size*3
mov edx, string_button_pm_levels
.skip:
add bx, di
ror ebx, 16
mcall 4, ,[button_text_color],
 
mov ebx, [button_x_left]
shl ebx, 16
mov bx, word[button_width_short]
mov ecx, [button_y_bottom]
shl ecx, 16
add cx, word[button_height]
mcall 8, , ,0x000000D3, ; bottom left button
shr ecx, 16
mov bx, cx
mov edx, [button_height]
shr edx, 1
sub edx, 3 ; ~half of font height
add bx, dx
ror ebx, 16
mov edx, [button_width_short]
shr edx, 1
sub edx, string_button_inc.size*3
add bx, dx
ror ebx, 16
mcall 4, ,[button_text_color],string_button_inc
 
mov ebx, [button_x_right]
shl ebx, 16
mov bx, word[button_width_short]
mov ecx, [button_y_bottom]
shl ecx, 16
add cx, word[button_height]
mcall 8, , ,0x000000D4,
shr ecx, 16
mov bx, cx
mov edx, [button_height]
shr edx, 1
sub edx, 3 ; ~half of font height
add bx, dx
ror ebx, 16
mov edx, [button_width_short]
shr edx, 1
sub edx, string_button_dec.size*3
add bx, dx
ror ebx, 16
mcall 4, ,[button_text_color],string_button_dec
 
ret
 
;;---Draw_buttons----------------------------------------------------------------------------------------------------------
 
 
Delete_buttons:
;;===Delete_buttons========================================================================================================
 
mcall 8,,,0x800000D0
mcall ,,,0x800000D1
mcall ,,,0x800000D2
mcall ,,,0x800000D3
mcall ,,,0x800000D4
 
ret
 
;;---Delete_buttons--------------------------------------------------------------------------------------------------------
 
 
Change_play_mode:
;;===Change_play_mode======================================================================================================
 
cmp [play_mode], LEVELS_MODE
jne @f
mov [play_mode], CLASSIC_MODE
mov [cur_level_number], 0
ret
@@:
inc [play_mode]
 
call Set_first_level_of_play_mode
 
ret
 
;;---Change_play_mode------------------------------------------------------------------------------------------------------
 
 
Set_first_level_of_play_mode:
;;===Set_first_level_of_play_mode==========================================================================================
 
cmp [play_mode], CLASSIC_MODE
jne @f
mov [cur_level_number], CLASSIC_MODE_FIRST_LEVEL
@@:
cmp [play_mode], LEVELS_MODE
jne @f
mov [cur_level_number], LEVELS_MODE_FIRST_LEVEL
@@:
 
ret
 
;;---Set_first_level_of_play_mode-------------------------------------------------------------------------------------------
 
;;---Some_functions-------------------------------------------------------------------------------------------------------------
;;---Some_functions------------------------------------------------------------------------------------------------------------
/programs/games/snake/trunk/game_over.asm
2,22 → 2,11
 
Game_over:
 
call Show_cursor
 
mov ebx, [score]
cmp ebx, [hi_score]
jng .redraw
cmp [play_mode], CLASSIC_MODE
jne @f
cmp ebx, [hi_score_classic]
jng .redraw
mov [is_new_record], 1
jmp .done
@@:
cmp ebx, [hi_score_levels]
jng .redraw
mov [is_new_record], 1
jmp .done
.done:
 
mcall 40,100111b ; set events: standart + mouse
 
49,7 → 38,8
 
 
.mouse: ; mouse event received
invoke edit_box.mouse, edit1
push dword edit1
call [edit_box.mouse]
jmp .still
 
58,28 → 48,35
mcall 2 ; get keycode
 
cmp [is_new_record], 1
je .key.is_record
jnz .key.skip
 
cmp ah, 0x1B ; Escape - go to menu
jne .still
jmp First_menu
 
.key.is_record:
cmp ah, 0x0D ; Enter
jnz @f
call Score_and_name_store
mov [is_new_record], 0
mcall 40,111b ; set events: standart
jmp First_menu
 
@@:
invoke edit_box.key, edit1
push dword edit1
call [edit_box.key]
jmp .still
.key.skip:
 
cmp ah, 0x1B ; Escape - go to menu
jne .still
 
mcall 40,111b ; set events: standart
jmp First_menu
 
 
.button: ; a button was pressed
mcall 17 ; get button number
shr eax, 8 ; we should do it to get the real button code
 
cmp eax, 1
je Save_do_smth_else_and_exit
je Exit
 
jmp .still
 
91,19 → 88,10
Draw_game_over_picture:
;;===Draw_game_over_picture================================================================================================
 
cmp [is_new_record], 1
je @f
mov ax, 1*0x100+26
mov ax, 0*0x100+29
mov cx, 1*0x100+13
mov edx, [game_over_picture_color]
mov esi, picture_game_over
jmp .done
@@:
mov ax, 5*0x100+17
mov cx, 1*0x100+12
mov edx, [you_win_picture_color]
mov esi, picture_you_win
.done:
call Draw_picture
 
ret
119,33 → 107,37
 
mov ebx, [window_width]
shr ebx, 1
sub ebx, string_congratulations.size*3+6*6
sub ebx, (string_enter_your_name-string_congratulations-1+8)*3+6
shl ebx, 16
add ebx, [bottom_top_strings]
mcall 4, ,[game_over_strings_color],string_congratulations
mov ebx, [window_width]
shr ebx, 1
sub ebx, string_enter_your_name.size*3+6*6
sub ebx, (strings_end-string_enter_your_name-1+8)*3+6
; add ebx, (strings_end-string_enter_your_name)*6
shl ebx, 16
add ebx, [bottom_bottom_strings]
mcall , , ,string_enter_your_name
mov ebx, [window_width]
shr ebx, 1
sub ebx, string_apply_name_enter.size*3
sub ebx, (press_to_start-string_apply_name_enter-1)*3+6
shl ebx, 16
add ebx, [top_strings]
mcall , ,[navigation_strings_color],string_apply_name_enter
mov edx, [window_width]
shr edx, 1
add edx, string_congratulations.size*3-6*6-1
sub edx, (string_enter_your_name-string_congratulations-1+8)*3+7
add edx, (string_enter_your_name-string_congratulations)*6
shl edx, 16
add edx, dword[bottom_top_strings]
mcall 47,0x00070000,[score], ,[game_over_hiscore_color]
mov ebx, [window_width]
shr ebx, 1
add ebx, string_enter_your_name.size*3-6*6-3
mov [edit1.left], ebx
invoke edit_box.draw, edit1
sub ebx, (strings_end-string_enter_your_name-1+8)*3+9
add ebx, (strings_end-string_enter_your_name)*6
mov [edit1+0x04], ebx
push dword edit1
call [edit_box.draw]
 
ret
 
161,29 → 153,9
Score_and_name_store:
;;===Name_store============================================================================================================
 
mov esi, hed
invoke ini.set_str, cur_dir_path, aScore, aChampion_name, hed, 15
invoke ini.set_int, cur_dir_path, aScore, aHiscore, [score]
 
cmp [play_mode], CLASSIC_MODE
jne @f
mov edi, champion_name_classic
jmp .done
@@:
mov edi, champion_name_levels
.done:
 
mov ecx, CHAMPION_NAME_LENGTH
rep movsb
mov eax, [score]
 
cmp [play_mode], CLASSIC_MODE
jne @f
mov [hi_score_classic], eax
jmp .done2
@@:
mov [hi_score_levels], eax
.done2:
 
ret
 
;;---Name_store------------------------------------------------------------------------------------------------------------
/programs/games/snake/trunk/level.asm
2,13 → 2,31
 
Level_begin:
 
call Load_level
mov [score], 0
mov [action], 0
mov eax, [gw_mul_gh]
sub eax, 3
mov [number_of_free_dots], ax
 
invoke ini.get_str, cur_dir_path, aScore, aChampion_name, champion_name, 15, champion_name
invoke ini.get_int, cur_dir_path, aScore, aHiscore, 0
test eax, eax
jz @f
mov dword [hi_score], eax
@@:
 
mov esi, start_map
mov edi, field_map
mov ecx, [gw_mul_gh]
shr ecx, 2
rep movsd
 
call Get_eat
 
Level_body:
;;===Level_body========================================================================================================
 
call Hide_cursor
mcall 26, 9
mov [time_before_waiting], eax
mov eax, [time_wait_limit]
25,7 → 43,6
mcall 0, , ,[window_style], ,window_title
call Draw_decorations
call Draw_stones
call Draw_snake
call Draw_eat
call Draw_level_strings
65,16 → 82,6
jz .button ;
 
 
.button: ; ¯à®æ¥¤ãà  ®¡à ¡®ª¨ ª­®¯®ª ¢ ¯à®£à ¬¬¥
mcall 17 ; äã­ªæ¨ï 17: ¯®«ãç¨âì ­®¬¥à ­ ¦ â®© ª­®¯ª¨
 
shr eax, 8 ; ᤢ¨£ ¥¬ ॣ¨áâà eax ­  8 ¡¨â ¢¯à ¢®, çâ®¡ë ¯®«ãç¨âì ­®¬¥à ­ ¦ â®© ª­®¯ª¨
cmp eax, 1
je Save_do_smth_else_and_exit ; ¥á«¨ íâ® ­¥ ª­®¯ª  1 (§ à¥§¥à¢¨à®¢ ­  á¨á⥬®© ª ª ª­®¯ª  § ªàëâ¨ï ¯à®£à ¬¬ë), ¯à®¯ã᪠¥¬ 2 á«¥¤ãî騥 áâà®çª¨ ª®¤ 
 
jmp .still
 
 
.key:
mcall 2 ; get keycode
94,103 → 101,114
jmp .still ; jump to wait for another event
 
 
.button: ; ¯à®æ¥¤ãà  ®¡à ¡®ª¨ ª­®¯®ª ¢ ¯à®£à ¬¬¥
mcall 17 ; äã­ªæ¨ï 17: ¯®«ãç¨âì ­®¬¥à ­ ¦ â®© ª­®¯ª¨
 
shr eax, 8 ; ᤢ¨£ ¥¬ ॣ¨áâà eax ­  8 ¡¨â ¢¯à ¢®, çâ®¡ë ¯®«ãç¨âì ­®¬¥à ­ ¦ â®© ª­®¯ª¨
cmp eax, 1
je Exit ; ¥á«¨ íâ® ­¥ ª­®¯ª  1 (§ à¥§¥à¢¨à®¢ ­  á¨á⥬®© ª ª ª­®¯ª  § ªàëâ¨ï ¯à®£à ¬¬ë), ¯à®¯ã᪠¥¬ 2 á«¥¤ãî騥 áâà®çª¨ ª®¤ 
 
jmp .still
 
 
.key.left:
bts [action], 0
bts dword[action], 0
jc @f
mov [time_to_wait], 0
@@:
mov [snake_direction_next], LEFT
mov [snake_napravlenie_next], LEFT
jmp .still
.key.down:
bts [action], 0
bts dword[action], 0
jc @f
mov [time_to_wait], 0
@@:
mov [snake_direction_next], DOWN
mov [snake_napravlenie_next], DOWN
jmp .still
.key.up:
bts [action], 0
bts dword[action], 0
jc @f
mov [time_to_wait], 0
@@:
mov [snake_direction_next], UP
mov [snake_napravlenie_next], UP
jmp .still
.key.right:
bts [action], 0
bts dword[action], 0
jc @f
mov [time_to_wait], 0
@@:
mov [snake_direction_next], RIGHT
mov [snake_napravlenie_next], RIGHT
jmp .still
 
 
Game_step:
 
cmp [snake_direction], LEFT ; are we moving to left?
cmp [snake_napravlenie], LEFT ; are we moving to left?
jz .left
cmp [snake_direction], DOWN ; ... down?
cmp [snake_napravlenie], DOWN ; ... down?
jz .down
cmp [snake_direction], UP ; ... up?
cmp [snake_napravlenie], UP ; ... up?
jz .up
jmp .right ; then right
.left:
cmp [snake_direction_next], RIGHT ; next step is to right?
jz .with_reverse
jmp .without_reverse
cmp [snake_napravlenie_next], RIGHT ; next step is to right?
jz .with_rewerse
jmp .without_rewerse
.down:
cmp [snake_direction_next], UP ; next step is to up?
jz .with_reverse
jmp .without_reverse
cmp [snake_napravlenie_next], UP ; next step is to up?
jz .with_rewerse
jmp .without_rewerse
.up:
cmp [snake_direction_next], DOWN ; next step is to bottom?
jz .with_reverse
jmp .without_reverse
cmp [snake_napravlenie_next], DOWN ; next step is to bottom?
jz .with_rewerse
jmp .without_rewerse
 
.right:
cmp [snake_direction_next], LEFT ; next step is to left?
jz .with_reverse
jmp .without_reverse
cmp [snake_napravlenie_next], LEFT ; next step is to left?
jz .with_rewerse
jmp .without_rewerse
 
 
.with_reverse:
call Set_reverse_direction
.with_rewerse:
call Set_reverse_napravlenie
call Reverse
.without_reverse:
.without_rewerse:
; mov [time_to_wait], 0
mov edx, snake_dots-2
add edx, [snake_length_x2]
cmp [snake_direction_next], LEFT
cmp [snake_napravlenie_next], LEFT
je .to_left
cmp [snake_direction_next], DOWN
cmp [snake_napravlenie_next], DOWN
je .to_down
cmp [snake_direction_next], UP
cmp [snake_napravlenie_next], UP
je .to_up
cmp [snake_direction_next], RIGHT
cmp [snake_napravlenie_next], RIGHT
je .to_right
.to_left:
mov [snake_direction], LEFT
mov [snake_napravlenie], LEFT
mov ax, [edx]
dec al
cmp al, -1
jne @f
mov al, GRID_WIDTH
mov al, byte[g_w]
dec al
@@:
jmp Snake_move
 
.to_down:
mov [snake_direction], DOWN
mov [snake_napravlenie], DOWN
mov ax, [edx]
inc ah
cmp ah, GRID_HEIGHT
cmp ah, byte[g_h]
jne @f
mov ah, 0
@@:
197,21 → 215,21
jmp Snake_move
.to_up:
mov [snake_direction], UP
mov [snake_napravlenie], UP
mov ax, [edx]
dec ah
cmp ah, -1
jne @f
mov ah, GRID_HEIGHT
mov ah, byte[g_h]
dec ah
@@:
jmp Snake_move
.to_right:
mov [snake_direction], RIGHT
mov [snake_napravlenie], RIGHT
mov ax, [edx]
inc al
cmp al, GRID_WIDTH
cmp al, byte[g_w]
jne @f
mov al, 0
@@:
267,7 → 285,7
 
mov ebx, [window_width]
shr ebx, 1
sub ebx, string_pause_space.size*3+6
sub ebx, (string_resume_space-string_pause_space-1)*3+6
shl ebx, 16
add ebx, [top_strings]
mcall 4, ,[navigation_strings_color],string_pause_space ; Draw 'PAUSE - SPACE' string
280,26 → 298,6
call Draw_hiscore_string
call Draw_hiscore_number
 
cmp [play_mode], LEVELS_MODE
jne @f
 
mov ebx, [window_width]
shr ebx, 3
sub ebx, 5
shl ebx, 16
add ebx, [bottom_bottom_strings]
mcall 4, ,[level_string_color],string_level
 
mov edx, [window_width]
shr edx, 3
sub edx, 5+1
add edx, string_level.size*6
shl edx, 16
add edx, [bottom_bottom_strings]
mcall 47,0x00020000,[cur_level_number], ,[level_number_color],[background_color]
 
@@:
 
ret
 
;;---Draw_level_strings------------------------------------------------------------------------------------------------
370,7 → 368,7
.place_found:
sub ebx, field_map
mov eax, ebx
mov bl, GRID_WIDTH
mov bl, byte[g_w]
div bl
xchg al, ah
397,8 → 395,8
;;---Sdvig-------------------------------------------------------------------------------------------------------------
 
 
Set_reverse_direction:
;;===Set_reverse_direction==================================================================================================
Set_reverse_napravlenie:
;;===Set_reverse_napravlenie===========================================================================================
 
mov eax, snake_dots
mov ebx, snake_dots+2
412,21 → 410,21
cmp cl, 0
jne .skip2
mov dl, GRID_WIDTH
mov dl, byte[g_w]
dec dl
cmp ch, dl
jne .Normal_y_ravny
mov [snake_direction_next], RIGHT
mov [snake_napravlenie_next], RIGHT
ret
.skip2:
mov dl, GRID_WIDTH
mov dl, byte[g_w]
dec dl
cmp cl, dl
jne .Normal_y_ravny
cmp ch, 0
jne .Normal_y_ravny
mov [snake_direction_next], LEFT
mov [snake_napravlenie_next], LEFT
ret
.Normal_y_ravny:
433,11 → 431,11
 
cmp cl, ch
jg .Napravlenie_to_right
mov [snake_direction_next], LEFT
mov [snake_napravlenie_next], LEFT
ret
 
.Napravlenie_to_right:
mov [snake_direction_next], RIGHT
mov [snake_napravlenie_next], RIGHT
ret
 
.X_ravny:
449,21 → 447,21
cmp cl, 0
jne .skip3
mov dl, GRID_HEIGHT
mov dl, byte[g_h]
dec dl
cmp ch, dl
jne .Normal_x_ravny
mov [snake_direction_next], DOWN
mov [snake_napravlenie_next], DOWN
ret
.skip3:
mov dl, GRID_HEIGHT
mov dl, byte[g_h]
dec dl
cmp ch, dl
jne .Normal_x_ravny
cmp ch, 0
jne .Normal_x_ravny
mov [snake_direction_next], UP
mov [snake_napravlenie_next], UP
ret
.Normal_x_ravny:
470,19 → 468,19
 
cmp cl, ch ; !!!
jg .Napravlenie_to_down ; 0 1 2 ...
mov [snake_direction_next], UP ; 1
mov [snake_napravlenie_next], UP ; 1
ret ; 2
; .
.Napravlenie_to_down: ; .
mov [snake_direction_next], DOWN ; .
mov [snake_napravlenie_next], DOWN ; .
 
ret
 
;;---Set_reverse_direction--------------------------------------------------------------------------------------------------
;;---Set_reverse_napravlenie-------------------------------------------------------------------------------------------
Snake_move:
;;===Snake_move=============================================================================================================
;;===Snake_move========================================================================================================
;; in :
;; ax = coord's of new head
;; edx = snake_dots+[snake_length_x2]-2 (snake head)
495,8 → 493,8
 
add [snake_length_x2], 2
add [score], SCORE_EAT
dec [number_of_free_dots]
cmp [number_of_free_dots], 0
dec word[number_of_free_dots]
cmp word[number_of_free_dots], 0
je Game_over
mov ax, word[eat]
mov cl, 1
541,13 → 539,6
dec [score]
call Draw_score_number
@@:
 
cmp [play_mode], LEVELS_MODE
jne @f
cmp [snake_length_x2], (EAT_TO_END_LEVEL+3)*2
je Do_smth_between_levels
@@:
 
mcall 26, 9
mov [time_before_waiting], eax
mov eax, [time_wait_limit]
556,112 → 547,4
 
;;---Snake_move------------------------------------------------------------------------------------------------------------
 
 
Do_smth_between_levels:
;;===Do_smth_between_levels================================================================================================
 
inc [cur_level_number]
cmp [cur_level_number], LAST_LEVEL_NUMBER+1
jne @f
mov [cur_level_number], LEVELS_MODE_FIRST_LEVEL
@@:
 
call Draw_splash
 
@@:
mcall 2
cmp eax, 1
jne @b
 
jmp Level_begin
 
;;---Do_smth_between_levels------------------------------------------------------------------------------------------------
 
 
Draw_splash:
;;===Draw_splash===========================================================================================================
 
mov al, 0
mov cl, GRID_WIDTH-1
mov edx, [splash_background_color]
 
.draw:
mov bh, GRID_HEIGHT-1
mov bl, al
@@:
call Draw_square
sub bh, 2
cmp bh, 0
jg @b
inc al
mov bh, GRID_HEIGHT-2
mov bl, cl
@@:
call Draw_square
sub bh, 2
cmp bh, 0
jnl @b
 
dec cl
cmp cl, 0
jl @f
 
push eax ebx
mcall 5,PAUSE_WHILE_DRAWING_SPLASH
pop ebx eax
 
jmp .draw
@@:
 
 
mov ax, 2*0x100+24
mov cx, 1*0x100+5
mov edx, [splash_level_string_color]
mov esi, picture_level
call Draw_picture
 
mov eax, [cur_level_number]
mov dl, 10
div dl
push ax
mov esi, digits_font
@@:
test al, al
jz @f
add esi, 20
dec al
jmp @b
@@:
mov ax, 9*0x100+4
mov cx, 8*0x100+5
mov edx, [splash_level_number_color]
call Draw_picture
pop ax
mov esi, digits_font
@@:
test ah, ah
jz @f
add esi, 20
dec ah
jmp @b
@@:
 
mov ax, 15*0x100+4
mov cx, 8*0x100+5
mov edx, [splash_level_number_color]
call Draw_picture
 
mcall 5,PAUSE_BETWEEN_LEVELS
 
ret
 
;;---Draw_splash-----------------------------------------------------------------------------------------------------------
 
 
;;---Some_functions------------------------------------------------------------------------------------------------------------
/programs/games/snake/trunk/pause.asm
2,7 → 2,6
 
Pause_mode:
 
call Show_cursor
mov [action], 0
mov eax, [time_wait_limit]
mov [time_to_wait], eax
38,7 → 37,7
shr eax, 8 ; we should do it to get the real button code
 
cmp eax, 1
je Save_do_smth_else_and_exit
je Exit
 
jmp .still
 
61,7 → 60,7
Draw_pause_picture:
;;===Draw_pause_picture========================================================================================================
 
mov ax, 2*0x100+24
mov ax, 0*0x100+29
mov cx, 4*0x100+6
mov edx, [pause_picture_color]
mov esi, picture_pause
77,7 → 76,7
 
mov ebx, [window_width]
shr ebx, 1
sub ebx, string_resume_space.size*3+6
sub ebx, (string_menu_esc-string_resume_space-1)*3+6
shl ebx, 16
add ebx, dword[bottom_middle_strings]
mcall 4, ,[navigation_strings_color],string_resume_space ; Show 'RESUME - SPACE' string
/programs/games/snake/trunk/snake.asm
3,7 → 3,7
use32
org 0x0
db 'MENUET01'
dd 0x01,start,i_end,d_end,stacktop,0x0,cur_dir_path
dd 0x1,start,i_end,d_end,stacktop,0x0,cur_dir_path
 
;;---HEADER--------------------------------------------------------------------------------------------------------------------
 
16,11 → 16,6
 
;;===Define_chapter============================================================================================================
 
GRID_WIDTH equ 28
GRID_HEIGHT equ 14
 
MIN_SQUARE_SIDE_LENGTH equ 9
 
SCORE_EAT equ 100
 
LEFT equ 0
28,27 → 23,6
UP equ 2
RIGHT equ 3
 
struct LEVEL
field db GRID_WIDTH*GRID_HEIGHT dup (?)
snake_dots db 6 dup (?)
snake_direction dd ?
snake_direction_next dd ?
number_of_stones dd ?
ends
 
CLASSIC_MODE equ 0
LEVELS_MODE equ 1
 
CLASSIC_MODE_FIRST_LEVEL equ 0
LEVELS_MODE_FIRST_LEVEL equ 1
 
EAT_TO_END_LEVEL equ 12
PAUSE_BETWEEN_LEVELS equ 250
PAUSE_WHILE_DRAWING_SPLASH equ 4
 
CHAMPION_NAME_LENGTH equ 15
LAST_LEVEL_NUMBER equ 12
 
;;---Define_chapter------------------------------------------------------------------------------------------------------------
 
start:
71,18 → 45,22
invoke ini.get_int, cur_dir_path, aPreferences, aSpeed, 80
neg eax
add [time_wait_limit], eax
invoke ini.get_int, cur_dir_path, aPreferences, aSquare_side_length, 19
mov [square_side_length], eax
invoke ini.get_int, cur_dir_path, aPreferences, aSpace_between_squares, 1
mov [space_between_squares], eax
invoke ini.get_str, cur_dir_path, aPreferences, aTheme, aTheme_name, 31, aTheme_name
 
invoke ini.get_int, cur_dir_path, aTheme_name, aDecorations, 2
mov [decorations], eax
mov [decorations], al
invoke ini.get_color, cur_dir_path, aTheme_name, aBackground_color, 0x000000
or [background_color], eax
or [window_style], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aDecorations_color, 0xAAAA00
invoke ini.get_color, cur_dir_path, aTheme_name, aDecorations_color, 0x00aaaa00
or [decorations_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aSnake_color, 0x1111ff
or [snake_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aSnake_head_color, 0x6B6Bff
invoke ini.get_color, cur_dir_path, aTheme_name, aSnake_head_color, 0x1111ff
or [snake_head_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aSnake_picture_color, 0x4488ff
or [snake_picture_color], eax
92,8 → 70,6
or [pause_picture_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aGame_over_picture_color, 0xff1111
or [game_over_picture_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aYou_win_picture_color, 0xffff11
or [you_win_picture_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aEat_color, 0xffff11
or [eat_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aNavigation_strings_color, 0x80ff7777
102,8 → 78,6
or [game_over_strings_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aScore_string_color, 0x80ffffff
or [score_string_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aLevel_string_color, 0xffffff
or [level_string_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aHiscore_string_color, 0x80ffffff
or [hiscore_string_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aChampion_string_color, 0x80ffffff
112,46 → 86,20
or [game_over_hiscore_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aScore_number_color, 0xffffff
or [score_number_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aLevel_number_color, 0xffffff
or [level_number_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aHiscore_number_color, 0x00ffffff
or [hiscore_number_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aChampion_name_color, 0x80ffffff
or [champion_name_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aEdit_box_selection_color, 0x00aa00
or [edit1.shift_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aButton_color, 0xDDDDDD
or [button_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aButton_text_color, 0x000000
or [button_text_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aStone_color, 0x5f8700
or [stone_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aSplash_background_color, 0xAAAA00
or [splash_background_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aSplash_level_number_color, 0x000000
or [splash_level_number_color], eax
invoke ini.get_color, cur_dir_path, aTheme_name, aSplash_level_string_color, 0x000000
or [splash_level_string_color], eax
or [edit1+0x10], eax
 
invoke ini.get_int, cur_dir_path, aReserved, aSquare_side_length, 19
mov [square_side_length], eax
invoke ini.get_str, cur_dir_path, aReserved, aChampion_name_classic, champion_name_classic, CHAMPION_NAME_LENGTH, champion_name_classic
invoke ini.get_int, cur_dir_path, aReserved, aHiscore_classic, 777
or [hi_score_classic], eax
invoke ini.get_str, cur_dir_path, aReserved, aChampion_name_levels, champion_name_levels, CHAMPION_NAME_LENGTH, champion_name_levels
invoke ini.get_int, cur_dir_path, aReserved, aHiscore_levels, 777
or [hi_score_levels], eax
 
mov eax, [background_color]
mov [edit1.color], eax
mov [edit1.focus_border_color], eax
mov [edit1.blur_border_color], eax
mov [edit1+0x0C], eax
mov [edit1+0x14], eax
mov [edit1+0x18], eax
mov eax, [game_over_hiscore_color]
mov [edit1.text_color], eax
mov [edit1+0x1C], eax
 
mcall 37,4,cursor_data,2 ; load empty cursor (for "hiding" cursor while level_mode)
mov [cursor_handle], eax
 
call Set_geometry
 
include 'first_menu.asm' ; First menu body and functions
161,37 → 109,6
 
;;===Some_functions============================================================================================================
 
 
Save_do_smth_else_and_exit:
;;===Save_do_smth_else_and_exit============================================================================================
 
mcall 37,6,[cursor_handle] ; delete cursor
 
invoke ini.set_int, cur_dir_path, aReserved, aSquare_side_length, [square_side_length]
 
mov edi, champion_name_classic
xor al, al
mov ecx, CHAMPION_NAME_LENGTH+1
cld
repne scasb
neg ecx
add ecx, CHAMPION_NAME_LENGTH
invoke ini.set_str, cur_dir_path, aReserved, aChampion_name_classic, champion_name_classic, ecx
invoke ini.set_int, cur_dir_path, aReserved, aHiscore_classic, [hi_score_classic]
 
mov edi, champion_name_levels
xor al, al
mov ecx, CHAMPION_NAME_LENGTH+1
cld
repne scasb
neg ecx
add ecx, CHAMPION_NAME_LENGTH
invoke ini.set_str, cur_dir_path, aReserved, aChampion_name_levels, champion_name_levels, ecx
invoke ini.set_int, cur_dir_path, aReserved, aHiscore_levels, [hi_score_levels]
 
;;---Save_do_smth_else_and_exit--------------------------------------------------------------------------------------------
 
 
Exit:
;;===Exit==================================================================================================================
 
204,8 → 121,8
Set_geometry:
;;===Set_geometry==========================================================================================================
 
mov eax, [square_side_length]
inc eax ; space between squares
mov eax, [space_between_squares]
add eax, [square_side_length]
mov [g_s], eax
 
mov eax, [g_s]
223,12 → 140,16
add eax, 25
mov [gbym1], eax
 
mov edx, GRID_WIDTH
mov eax, [g_w]
mul word[g_h]
mov [gw_mul_gh], eax
 
mov edx, [g_w]
mov eax, [g_s]
mul dx
mov [gw_mul_gs], eax
 
mov edx, GRID_HEIGHT
mov edx, [g_h]
mov eax, [g_s]
mul dx
mov [gh_mul_gs], eax
263,12 → 184,11
add eax, 5*2 ; skin width
mov [window_width], eax
 
mcall 48,4 ; get skin header height
add eax, [gh_mul_gs]
mov eax, [gh_mul_gs]
add eax, [gbym1]
add eax, [g_e]
add eax, 30
add eax, 5 ; skin height (bottom part)
add eax, 22+5 ; skin height
mov [window_height], eax
 
mcall 48, 5
278,6 → 198,12
cmp dx, word[window_width] ; does window fit to work area width?
jnl @f
dec [square_side_length]
; dps 'snake: Window does not fit to screen.'
; newline
; dps 'Square_side_length was decreased.'
; newline
; dps 'Check you config file! (snake.ini)'
; newline
jmp Set_geometry
@@:
 
287,6 → 213,12
cmp cx, word[window_height] ; does window fit to work area height?
jnl @f
dec [square_side_length]
; dps 'snake: Window does not fit to screen.'
; newline
; dps 'Square_side_length was decreased.'
; newline
; dps 'Check you config file! (snake.ini)'
; newline
jmp Set_geometry
@@:
 
310,95 → 242,17
mov [bottom_bottom_strings], eax
 
sub eax, 4
mov [edit1.top], eax
mov [edit1+0x08], eax
 
 
mov eax, [g_s]
shl eax, 2
sub eax, 2
mov [button_width_short], eax
mov eax, [g_s]
shl eax, 3
add eax, [g_s]
sub eax, 2
mov [button_width_long], eax
mov eax, [g_s]
sub eax, 2
mov [button_height], eax
 
mov bl, 0x10
mov cl, 0x08
 
mov al, byte[g_s]
mul bl
mov bx, ax
add bx, word[gbxm1]
inc bx
 
mov al, byte[g_s]
mul cl
mov cx, ax
add cx, word[gbym1]
inc cx
mov [button_x_left], ebx
mov [button_y_top], ecx
add ebx, [g_s]
add ebx, [g_s]
add ebx, [g_s]
add ebx, [g_s]
add ebx, [g_s]
mov [button_x_right], ebx
add ecx, [g_s]
add ecx, [g_s]
mov [button_y_middle], ecx
add ecx, [g_s]
add ecx, [g_s]
mov [button_y_bottom], ecx
 
 
ret
 
;;---Set_geometry------------------------------------------------------------------------------------------------------
 
 
Increase_geometry:
;;===Increase_geometry=================================================================================================
 
inc [square_side_length]
call Set_geometry
mcall 67,[wp_x],[wp_y],[window_width],[window_height]
 
ret
 
;;---Increase_geometry-------------------------------------------------------------------------------------------------
 
 
Decrease_geometry:
;;===Decrease_geometry=================================================================================================
 
cmp [square_side_length], MIN_SQUARE_SIDE_LENGTH
je @f
dec [square_side_length]
call Set_geometry
mcall 67,[wp_x],[wp_y],[window_width],[window_height]
 
@@:
ret
 
;;---Decrease_geometry-------------------------------------------------------------------------------------------------
 
 
Draw_decorations:
;;===Draw_decorations==================================================================================================
 
mov al, byte[decorations]
mov al, [decorations]
dec al
jz grid_lines
dec al
433,7 → 287,7
mov ecx, [gbym1_shl16_gbym1]
add ecx, [gh_mul_gs]
mov edx, [decorations_color]
mov esi, GRID_WIDTH
mov esi, [g_w]
add esi, 1
 
@@:
446,7 → 300,7
mov ebx, [gbxm1_shl16_gbxm1]
add ebx, [gw_mul_gs]
mov ecx, [gbym1_shl16_gbym1]
mov esi, GRID_HEIGHT
mov esi, [g_h]
add esi, 1
@@:
468,7 → 322,7
add ecx, [gbym1_plus_gh_mul_gs]
add ecx, [g_e]
mov edx, [decorations_color]
mov esi, GRID_WIDTH
mov esi, [g_w]
add esi, 1
 
@@:
483,7 → 337,7
add ebx, [gbxm1_plus_gw_mul_gs]
add ebx, [g_e]
mov ecx, [gbym1_shl16_gbym1]
mov esi, GRID_HEIGHT
mov esi, [g_h]
add esi, 1
@@:
742,8 → 596,6
;; bh - y_coord
;; edx - color
 
push eax ebx ecx edx
 
mov cl, bh
 
mov al, byte[g_s]
766,8 → 618,6
 
mcall 13
 
pop edx ecx ebx eax
 
ret
 
;;---Draw_square-------------------------------------------------------------------------------------------------------
778,7 → 628,7
 
mov ebx, [window_width]
shr ebx, 1
sub ebx, string_menu_esc.size*3+6
sub ebx, (string_apply_name_enter-string_menu_esc-1)*3+6
shl ebx, 16
add ebx, dword[top_strings]
mcall 4, ,[navigation_strings_color],string_menu_esc
808,8 → 658,8
 
mov edx, [window_width]
shr edx, 3
sub edx, 5+1
add edx, string_score.size*6
sub edx, 6
add edx, (string_hi_score-string_score)*6
shl edx, 16
add edx, dword[bottom_top_strings]
mcall 47,0x00070000,[score], ,[score_number_color],[background_color]
826,7 → 676,7
shr ebx, 3
neg ebx
add ebx, [window_width]
sub ebx, string_hi_score.size*6+7*6+5
sub ebx, (string_player-string_hi_score)*6+7*6+5
shl ebx, 16
add ebx, dword[bottom_top_strings]
mcall 4, ,[hiscore_string_color],string_hi_score
837,7 → 687,7
 
 
Draw_hiscore_number:
;;===Draw_hiscore_number===================================================================================================
;;===Draw_hiscore_number===============================================================================================
 
mov edx, [window_width]
shr edx, 3
846,30 → 696,21
sub edx, 7*6+6
shl edx, 16
add edx, dword[bottom_top_strings]
mcall 47,0x00070000,[hi_score], ,[hiscore_number_color]
cmp [play_mode], CLASSIC_MODE
jne @f
mov ecx, [hi_score_classic]
jmp .done
@@:
mov ecx, [hi_score_levels]
 
.done:
mcall 47,0x00070000, , ,[hiscore_number_color]
ret
;;---Draw_hiscore_number---------------------------------------------------------------------------------------------------
;;---Draw_hiscore_number-----------------------------------------------------------------------------------------------
 
 
Draw_champion_string:
;;===Draw_champion_string==================================================================================================
;;===Draw_champion_string==============================================================================================
 
mov ebx, [window_width]
shr ebx, 3
neg ebx
add ebx, [window_width]
sub ebx, string_champion.size*6+7*6+5
sub ebx, (string_level-string_champion)*6+7*6+5
shl ebx, 16
add ebx, dword[bottom_bottom_strings]
mcall 4, ,[champion_string_color],string_champion
886,21 → 727,12
shr ebx, 3
neg ebx
add ebx, [window_width]
sub ebx, CHAMPION_NAME_LENGTH/2*6+7*6+6 ; there is no difference between length of champion names for other play_modes
add ebx, CHAMPION_NAME_LENGTH/2*6
sub ebx, (press_to_start-champion_name)*6+7*6+6
add ebx, (press_to_start-champion_name)*6
shl ebx, 16
add ebx, dword[bottom_bottom_strings]
mcall 4, ,[champion_name_color],champion_name
 
cmp [play_mode], CLASSIC_MODE
jne @f
mov edx, champion_name_classic
jmp .done
@@:
mov edx, champion_name_levels
 
.done:
mcall 4, ,[champion_name_color],
 
ret
 
;;---Draw_champion_name------------------------------------------------------------------------------------------------
951,28 → 783,24
;; cl = value to draw
;;
 
push eax ebx edx
 
and eax, 0x0000ffff
xor bx, bx
mov bl, al
shr ax, 8
mov dx, GRID_WIDTH
mov dx, word[g_w]
mul dx
add ax, bx
mov edx, field_map
add edx, eax
mov [edx], cl
mov edi, field_map
add edi, eax
mov [edi], cl
pop edx ebx eax
 
ret
 
;;---Draw_on_map-----------------------------------------------------------------------------------------------------------
;;---Draw_on_map-------------------------------------------------------------------------------------------------------
 
 
Get_from_map:
;;===Get_from_map==========================================================================================================
;;===Get_from_map======================================================================================================
;; in :
;; al = x coord
;; ah = y coord
986,7 → 814,7
xor bx, bx
mov bl, al
shr ax, 8
mov dx, GRID_WIDTH
mov dx, word[g_w]
mul dx
add ax, bx
mov edi, field_map
997,113 → 825,14
 
ret
 
;;---Get_from_map-----------------------------------------------------------------------------------------------------------
;;---Get_from_map------------------------------------------------------------------------------------------------------
 
 
Load_level:
;;===Load_level=============================================================================================================
;; in :
;; cur_level_number = level number to load
;;
;;---Some_functions--------------------------------------------------------------------------------------------------------
 
mov eax, [cur_level_number]
mov edx, stage_00
@@:
test al, al
jz @f
add edx, 410
dec al
jmp @b
@@:
mov [cur_level], edx
;;===Variables=============================================================================================================
 
mov esi, edx
add esi, LEVEL.field
mov edi, field_map
mov ecx, GRID_WIDTH*GRID_HEIGHT/4
rep movsd
 
mov esi, edx
add esi, LEVEL.snake_dots
mov edi, snake_dots
mov ecx, 3
rep movsw
mov esi, edx
add esi, LEVEL.snake_direction
mov eax, [esi]
mov [snake_direction], eax
mov esi, edx
add esi, LEVEL.snake_direction_next
mov eax, [esi]
mov [snake_direction_next], eax
 
mov esi, edx
add esi, LEVEL.number_of_stones
mov eax, [esi]
mov [number_of_free_dots], GRID_WIDTH*GRID_HEIGHT-3
sub [number_of_free_dots], eax
mov ax, word[snake_dots]
mov cl, 1
call Draw_on_map
mov ax, word[snake_dots+2]
mov cl, 1
call Draw_on_map
mov ax, word[snake_dots+4]
mov cl, 1
call Draw_on_map
 
mov [action], 0
mov [snake_length_x2], 6
 
ret
 
;;---Load_level-------------------------------------------------------------------------------------------------------------
 
 
Draw_stones:
;;===Draw_stones============================================================================================================
 
mov ax, 0*0x100+GRID_WIDTH
mov cx, 0*0x100+GRID_HEIGHT
mov edx, [stone_color]
mov esi, [cur_level]
add esi, LEVEL.field
call Draw_picture
 
ret
 
;;---Draw_stones------------------------------------------------------------------------------------------------------------
 
 
Hide_cursor:
;;===Hide_cursor===========================================================================================================
 
mcall 37,5,[cursor_handle]
 
ret
 
;;---Show_cursor-----------------------------------------------------------------------------------------------------------
 
 
Show_cursor:
;;===Hide_cursor===========================================================================================================
 
mcall 37,5,0
 
ret
 
;;---Show_cursor-----------------------------------------------------------------------------------------------------------
 
 
;;---Some_functions-------------------------------------------------------------------------------------------------------------
 
 
;;===Variables==================================================================================================================
 
window_title db 'Snake',0
window_style dd 0x34000000
time_before_waiting dd 0x0
1110,427 → 839,107
time_to_wait dd 0x0
time_wait_limit dd 101
 
play_mode dd 0x0
 
square_side_length dd 19
 
gbxm1 dd 30
gbym1 dd 30
g_w dd 29
g_h dd 15
g_e dd 13
 
szZ string_score ,'SCORE : '
szZ string_hi_score ,'HI-SCORE : '
;szZ string_player ,'PLAYER :'
szZ string_champion ,'CHAMPION : '
szZ string_level ,'LEVEL : '
;szZ string_hi_level ,'HI-LEVEL :'
szZ string_pause_space ,'PAUSE - ',0x27,'SPACE',0x27
szZ string_resume_space ,'RESUME - ',0x27,'SPACE',0x27
szZ string_menu_esc ,'MENU - ',0x27,'ESC',0x27
szZ string_apply_name_enter ,'APPLY NAME - ',0x27,'ENTER',0x27
szZ press_to_start ,'PRESS ',0x27,'ENTER',0x27,' TO START'
szZ press_esc_to_exit ,'PRESS ',0x27,'ESC',0x27,' TO EXIT'
field_map db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
string_score db 'SCORE :',0
string_hi_score db 'HI-SCORE :',0
string_player db 'PLAYER :',0
string_champion db 'CHAMPION :',0
string_level db 'LEVEL :',0
string_pause_space db 'PAUSE - ',0x27,'SPACE',0x27,0
string_resume_space db 'RESUME - ',0x27,'SPACE',0x27,0
string_menu_esc db 'MENU - ',0x27,'ESC',0x27,0
string_apply_name_enter db 'APPLY NAME - ',0x27,'ENTER',0x27,0
press_to_start db 'PRESS ',0x27,'SPACE',0x27,' OR ',0x27,'ENTER',0x27,' TO START',0
press_esc_to_exit db 'PRESS ',0x27,'ESC',0x27,' TO EXIT',0
;press_F2_to_options db 'PRESS ',0x27,'F2',0x27,' TO OPTIONS',0
 
szZ string_congratulations ,' Congratulations!!! New hi-score is : '
szZ string_enter_your_name ,'You are the champion! Enter your name : '
string_congratulations db ' Congratulations!!! New hi-score is :',0
string_enter_your_name db 'You are the champion! Enter your name :',0
strings_end:
 
szZ string_button_play ,'PLAY'
szZ string_button_exit ,'EXIT'
szZ string_button_inc ,'+INC+'
szZ string_button_dec ,'-dec-'
szZ string_button_pm_classic,'CLASSIC mode'
szZ string_button_pm_levels ,'LEVELS mode'
snake_dots db 3,3, 4,3, 5,3, 865 dup (0)
snake_napravlenie db 3
snake_napravlenie_next db 3
snake_length_x2 dd 6
 
is_new_record dd 0
score dd 0
hi_score dd 777
is_new_record db 0
 
action dd 0
action db 0
 
picture_first_menu_snake db 1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,1,1,1,1,\
1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,0,1,\
1,1,1,1,0,1,0,1,1,0,1,0,0,1,0,1,1,0,0,0,1,1,1,1,\
0,0,0,1,0,1,0,1,1,0,1,1,1,1,0,1,0,1,0,0,1,0,0,0,\
1,1,1,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1
picture_first_menu_snake db 1,1,1,1,1,0,1,0,0,0,1,0,0,1,1,1,0,0,1,0,0,1,0,0,1,1,1,1,1,\
1,0,0,0,0,0,1,1,0,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,\
1,0,0,0,0,0,1,0,1,0,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,\
1,1,1,1,1,0,1,0,1,0,1,0,1,1,1,1,1,0,1,1,0,0,0,0,1,1,1,1,0,\
0,0,0,0,1,0,1,0,0,1,1,0,1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,0,\
1,1,1,1,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,1,1,0,1,1,1,1,1
 
picture_first_menu_version db 1,1,1,1,0,0,0,1,1,1,1,\
1,0,0,1,0,0,0,1,0,0,0,\
1,0,0,1,0,0,0,1,1,1,1,\
1,0,0,1,0,0,0,0,0,0,1,\
1,0,0,1,0,0,0,0,1,1,1,\
1,0,0,1,0,0,0,0,0,0,1,\
1,1,1,1,0,1,0,1,1,1,1
 
picture_pause db 1,1,1,0,0,0,1,1,0,0,1,0,0,1,0,1,1,1,1,0,1,1,1,1,\
1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,\
1,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,\
1,1,1,0,0,1,1,1,1,0,1,0,0,1,0,1,1,1,1,0,1,1,1,1,\
1,0,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,\
1,0,0,0,0,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,1,1,1,1
picture_pause db 0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,1,0,0,0,1,0,0,1,1,0,0,1,0,0,1,0,1,1,1,1,0,1,1,1,1,0,0,\
0,0,1,0,0,0,1,0,1,0,0,1,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,\
0,0,1,1,1,1,0,0,1,0,0,1,0,1,0,0,1,0,1,1,1,1,0,1,1,1,0,0,0,\
0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,0,\
0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0
 
picture_game_over db 0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,0,1,0,1,1,1,1,0,0,0,0,\
1,0,0,0,0,0,1,0,0,0,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,\
1,0,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,1,1,0,0,0,0,0,\
1,0,0,0,1,0,1,1,1,1,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,\
0,1,1,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,1,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,1,0,1,1,1,1,0,\
0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,\
0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,1,\
0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,1,1,1,0,\
0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,0,1,0,0,0,1
picture_game_over db 0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,1,0,0,1,0,0,1,1,1,0,0,1,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,\
1,0,0,0,0,0,1,0,0,0,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,\
1,0,0,1,1,0,1,0,0,0,1,0,1,0,1,0,1,0,1,1,1,0,0,0,0,0,0,0,0,\
1,0,0,0,1,0,1,1,1,1,1,0,1,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,\
0,1,1,1,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,1,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,1,0,1,1,1,1,0,0,\
0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,\
0,0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,0,0,1,0,0,0,1,0,\
0,0,0,0,0,0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,1,1,1,1,0,0,\
0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,0,1,0,0,0,1,0
 
picture_you_win db 1,0,0,0,1,0,0,1,1,1,0,0,1,0,0,0,1,\
1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,1,\
0,1,0,1,0,0,1,0,0,0,1,0,1,0,0,0,1,\
0,0,1,0,0,0,1,0,0,0,1,0,1,0,0,0,1,\
0,0,1,0,0,0,0,1,1,1,0,0,0,1,1,1,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,1,0,0,0,1,0,0,1,0,0,1,0,0,0,1,0,\
0,1,0,1,0,1,0,0,1,0,0,1,1,0,0,1,0,\
0,1,0,1,0,1,0,0,1,0,0,1,0,1,0,1,0,\
0,1,0,1,0,1,0,0,1,0,0,1,0,0,1,1,0,\
0,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,0
start_map db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
picture_level db 1,0,0,0,0,1,1,1,1,0,1,0,0,1,0,1,1,1,1,0,1,0,0,0,\
1,0,0,0,0,1,0,0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0,0,\
1,0,0,0,0,1,1,1,0,0,1,0,0,1,0,1,1,1,0,0,1,0,0,0,\
1,0,0,0,0,1,0,0,0,0,1,0,1,0,0,1,0,0,0,0,1,0,0,0,\
1,1,1,1,0,1,1,1,1,0,1,1,0,0,0,1,1,1,1,0,1,1,1,1
 
digits_font db 1,1,1,1,\
1,0,0,1,\
1,0,0,1,\
1,0,0,1,\
1,1,1,1,\
\
0,0,1,0,\
0,1,1,0,\
0,0,1,0,\
0,0,1,0,\
0,0,1,0,\
\
1,1,1,1,\
0,0,0,1,\
1,1,1,1,\
1,0,0,0,\
1,1,1,1,\
\
1,1,1,1,\
0,0,0,1,\
0,1,1,1,\
0,0,0,1,\
1,1,1,1,\
\
1,0,0,1,\
1,0,0,1,\
1,1,1,1,\
0,0,0,1,\
0,0,0,1,\
\
1,1,1,1,\
1,0,0,0,\
1,1,1,1,\
0,0,0,1,\
1,1,1,1,\
\
1,1,1,1,\
1,0,0,0,\
1,1,1,1,\
1,0,0,1,\
1,1,1,1,\
\
1,1,1,1,\
0,0,0,1,\
0,0,0,1,\
0,0,0,1,\
0,0,0,1,\
\
1,1,1,1,\
1,0,0,1,\
1,1,1,1,\
1,0,0,1,\
1,1,1,1,\
\
1,1,1,1,\
1,0,0,1,\
1,1,1,1,\
0,0,0,1,\
1,1,1,1
 
stage_00:
.field db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
.snake_dots db 3,3, 4,3, 5,3
.snake_direction dd RIGHT
.snake_direction_next dd RIGHT
.number_of_stones dd 0
 
stage_01:
.field db 2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,\
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,\
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,\
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,\
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,\
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,\
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,\
2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,\
2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2
 
.snake_dots db 3,3, 4,3, 5,3
.snake_direction dd RIGHT
.snake_direction_next dd RIGHT
.number_of_stones dd 36
 
stage_02:
.field db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0,\
0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,\
0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,\
0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,\
0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,\
0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,\
0,0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
.snake_dots db 7,5, 8,5, 9,5
.snake_direction dd RIGHT
.snake_direction_next dd RIGHT
.number_of_stones dd 40
 
stage_03:
.field db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
.snake_dots db 23,0, 22,0, 21,0
.snake_direction dd LEFT
.snake_direction_next dd LEFT
.number_of_stones dd 44
 
stage_04:
.field db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,\
0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,\
0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,\
0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,\
0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,\
0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0,0,\
0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,\
0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,\
0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,\
0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
.snake_dots db 19,6, 19,7, 19,8
.snake_napravlenie dd DOWN
.snake_napravlenie_next dd DOWN
.number_of_stones dd 40
 
stage_05:
.field db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,\
0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,\
0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
.snake_dots db 0,0, 0,1, 1,1
.snake_direction dd RIGHT
.snake_direction_next dd RIGHT
.number_of_stones dd 112
 
stage_06:
.field db 0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,\
0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,\
0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,\
0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,\
0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0
 
.snake_dots db 0,0, 0,1, 1,1
.snake_direction dd RIGHT
.snake_direction_next dd RIGHT
.number_of_stones dd 128
 
stage_07:
.field db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,\
0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,0,0,0,0,0,\
0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,\
0,0,0,0,0,0,2,0,2,2,2,2,2,2,2,2,2,2,0,2,0,2,0,0,0,0,0,0,\
0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,\
0,0,0,0,0,0,2,0,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,0,0,0,0,0,\
0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,\
0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
.snake_dots db 8,1, 9,1, 10,1
.snake_direction dd RIGHT
.snake_direction_next dd RIGHT
.number_of_stones dd 83
 
stage_08:
.field db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,\
0,0,0,0,2,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,2,0,2,0,0,2,0,0,2,0,0,0,0,0,2,0,2,0,0,0,0,\
0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,\
0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,\
0,0,0,0,0,2,2,2,0,0,2,0,0,0,0,0,2,0,0,0,0,0,2,0,2,0,0,0,\
0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,\
0,0,0,2,0,0,0,0,2,2,0,0,0,0,0,0,0,2,2,2,0,0,2,0,0,0,0,0,\
0,0,0,2,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
.snake_dots db 0,0, 1,0, 2,0
.snake_direction dd RIGHT
.snake_direction_next dd RIGHT
.number_of_stones dd 40
 
stage_09:
.field db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,1,1,1,1,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,1,1,1,1,0,0,\
0,0,1,0,0,0,0,1,1,0,1,0,1,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,\
0,0,1,1,1,1,0,1,0,1,1,0,0,0,0,1,0,1,1,0,0,0,1,1,1,0,0,0,\
0,0,0,0,0,1,0,1,0,1,1,0,0,1,1,1,0,1,0,1,0,0,1,0,0,0,0,0,\
0,0,1,1,1,1,0,1,0,0,1,0,0,0,0,1,0,1,0,0,1,0,1,1,1,1,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
.snake_dots db 12,6, 12,7, 12,8
.snake_direction dd DOWN
.snake_direction_next dd DOWN
.number_of_stones dd 59
 
stage_10:
.field db 2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,\
2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,\
2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,\
2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,\
2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,\
2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,\
2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,\
2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0,2,2,2,0
 
.snake_dots db 3,2, 3,3, 4,3
.snake_direction dd RIGHT
.snake_direction_next dd RIGHT
.number_of_stones dd 231
 
stage_11:
.field db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,2,2,2,0,0,0,0,0,2,2,2,0,0,0,0,0,2,2,2,0,0,0,0,\
0,0,0,0,2,2,0,2,2,0,0,0,2,2,0,2,2,0,0,0,2,2,0,2,2,0,0,0,\
0,0,0,2,2,0,0,0,2,2,0,2,2,0,0,0,2,2,0,2,2,0,0,0,2,2,0,0,\
0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2,0,0,\
0,0,0,2,2,0,0,0,2,2,0,2,2,0,0,0,2,2,0,2,2,0,0,0,2,2,0,0,\
0,0,0,0,2,2,0,2,2,0,0,0,2,2,0,2,2,0,0,0,2,2,0,2,2,0,0,0,\
0,0,0,0,0,2,2,2,0,0,0,0,0,2,2,2,0,0,0,0,0,2,2,2,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 
.snake_dots db 3,12, 4,12, 5,12
.snake_direction dd RIGHT
.snake_direction_next dd RIGHT
.number_of_stones dd 69
 
stage_12:
.field db 0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,\
0,2,2,0,2,2,2,0,0,0,0,2,0,0,0,0,0,0,0,0,2,0,2,0,0,2,0,2,\
0,2,0,0,2,0,2,2,2,2,0,2,2,0,0,2,2,2,0,0,0,0,0,0,0,2,2,2,\
0,2,2,0,0,0,0,2,0,2,0,0,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,\
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,0,0,\
0,2,0,2,0,0,2,2,0,0,0,0,2,2,0,0,2,0,2,0,0,2,2,0,0,0,2,2,\
0,2,2,2,0,0,2,0,0,0,0,0,2,0,0,0,2,2,2,0,0,2,0,0,0,0,0,2,\
0,0,0,0,0,0,2,2,0,0,0,0,2,2,0,0,0,0,0,0,0,2,2,0,0,0,2,2,\
0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\
0,0,0,2,0,2,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,\
2,2,0,2,2,2,0,0,0,0,0,0,0,2,2,0,2,0,2,0,0,2,0,0,0,0,0,0,\
0,2,0,0,0,0,2,2,2,0,0,0,0,0,2,0,2,2,2,0,0,2,2,0,2,0,2,0,\
2,2,0,0,0,0,2,0,2,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,2,2,2,0
 
.snake_dots db 27,0, 26,0, 25,0
.snake_direction dd LEFT
.snake_direction_next dd LEFT
.number_of_stones dd 110
 
background_color dd 0x000000
decorations_color dd 0x00000000
snake_color dd 0x000000
1539,7 → 948,6
version_picture_color dd 0x000000
pause_picture_color dd 0x000000
game_over_picture_color dd 0x000000
you_win_picture_color dd 0x000000
eat_color dd 0x000000
navigation_strings_color dd 0x80000000
game_over_strings_color dd 0x80000000
1550,16 → 958,7
score_number_color dd 0x40000000
hiscore_number_color dd 0x00000000
champion_name_color dd 0x80000000
button_color dd 0x000000
button_text_color dd 0x80000000
stone_color dd 0x000000
splash_background_color dd 0x000000
splash_level_string_color dd 0x000000
splash_level_number_color dd 0x000000
level_string_color dd 0x80000000
level_number_color dd 0x00000000
 
 
align 4
@IMPORT:
 
1583,6 → 982,8
 
aPreferences db 'Preferences',0
aSpeed db 'Speed',0
aSquare_side_length db 'Square_side_length',0
aSpace_between_squares db 'Space_between_squares',0
aTheme db 'Theme',0
 
aTheme_name db 32 dup (0)
1595,7 → 996,6
aVersion_picture_color db 'Version_picture_color',0
aPause_picture_color db 'Pause_picture_color',0
aGame_over_picture_color db 'Game_over_picture_color',0
aYou_win_picture_color db 'You_win_picture_color',0
aEat_color db 'Eat_color',0
aNavigation_strings_color db 'Navigation_string_color',0
aGame_over_strings_color db 'Game_over_string_color',0
1607,21 → 1007,10
aHiscore_number_color db 'Hiscore_number_color',0
aChampion_name_color db 'Champion_name_color',0
aEdit_box_selection_color db 'Edit_box_selection_color',0
aButton_color db 'Button_color',0
aButton_text_color db 'Button_text_color',0
aStone_color db 'Stone_color',0
aSplash_background_color db 'Splash_background_color',0
aSplash_level_string_color db 'Splash_level_string_color',0
aSplash_level_number_color db 'Splash_level_number_color',0
aLevel_string_color db 'Level_string_color',0
aLevel_number_color db 'Level_number_color',0
 
aReserved db 'Reserved',0
aSquare_side_length db 'Square_side_length',0
aHiscore_classic db 'Hiscore_classic',0
aChampion_name_classic db 'Champion_name_classic',0
aHiscore_levels db 'Hiscore_levels',0
aChampion_name_levels db 'Champion_name_levels',0
aScore db 'Score',0
aHiscore db 'Hiscore',0
aChampion_name db 'Champion_name',0
 
edit1 edit_box 65,397,0x0,0x000000,0x000000,0x000000,0x000000,0x80000000,15,hed,mouse_dd,ed_focus,hed_end-hed-1,hed_end-hed-1
 
1632,29 → 1021,14
rb 256
mouse_dd rd 1
 
cur_level rd 1
cur_level_number rd 1
hi_level rd 1
decorations rb 1
number_of_free_dots rw 1
 
score rd 1
hi_score_classic rd 1
hi_score_levels rd 1
eat rb 1
 
champion_name_classic rb CHAMPION_NAME_LENGTH
champion_name_levels rb CHAMPION_NAME_LENGTH
 
snake_dots rb GRID_WIDTH*GRID_HEIGHT*2+3 ; +3 bytes for faster dword copying
snake_direction rd 1
snake_direction_next rd 1
snake_length_x2 rd 1
 
decorations rd 1
number_of_free_dots rd 1
 
eat rw 1
 
square_side_length rd 1
space_between_squares rd 1
g_s rd 1
g_e rd 1
 
window_width rd 1
window_height rd 1
1661,6 → 1035,7
wp_x rd 1
wp_y rd 1
 
gw_mul_gh rd 1
gw_mul_gs rd 1
gh_mul_gs rd 1
gbxm1_plus_gw_mul_gs rd 1
1674,23 → 1049,11
bottom_bottom_strings rd 1
top_strings rd 1
 
button_x_left rd 1
button_x_right rd 1
button_y_top rd 1
button_y_middle rd 1
button_y_bottom rd 1
button_width_short rd 1
button_width_long rd 1
button_height rd 1
champion_name rb 16
 
cursor_data rb 32*32*4
cursor_handle rd 1
 
cur_dir_path rb 4096
@PARAMS rb 4096
 
field_map rb GRID_WIDTH*GRID_HEIGHT*2
 
rb 4096
stacktop:
d_end:
/programs/games/snake/trunk/snake.ini
2,9 → 2,13
[Preferences]
Speed=80
; SLOW == 0 <= Speed <= 100 == FAST
Square_side_length=19
; in pixels
; recommended minimum is 8 (strings don't overlap)
; for nice look at low Square_side_length try Theme_ultra_black
Theme=Theme_standard
; Theme name to use
; See [Theme_*] sections below for available themes
; See [Theme_*] below for available themes
; Name of any theme must be shorter than 30 chars
;;---Common_preferences-------------------------------------------------
 
27,7 → 31,7
Background_color = 0,0,0
Decorations_color = 170,170,0
Snake_color = 17,17,255
Snake_head_color = 107,107,255
Snake_head_color = 17,17,255
; by default Snake_head_color is equal to Snake_color, so the snake has no head
Snake_picture_color = 68,136,255
; color of big 'SNAKE' label at start menu
34,9 → 38,6
Version_picture_color = 85,255,85
Pause_picture_color = 17,255,17
Game_over_picture_color = 255,17,17
; ... if you end game without new record
You_win_picture_color = 255,255,17
; ... if you end game with new record
Navigation_string_color = 255,119,119
; color of 'PRESS * to *' and like this strings
Game_over_string_color = 255,153,0
45,60 → 46,34
; color of new hiscore and champion name on game_over screen
Eat_color = 255,255,17
Score_number_color = 255,255,255
; color of "SCORE : " string at the left bottom screen part
Score_string_color = 255,255,255
; color of digits after "SCORE : "
Level_string_color = 255,255,255
; color of "LEVEL : " string at the left bottom screen part
Level_number_color = 255,255,255
; color of digits after "LEVEL : "
Hiscore_number_color = 255,255,255
Hiscore_string_color = 255,255,255
Champion_string_color = 255,255,255
Champion_name_color = 255,255,255
Edit_box_selection_color= 0,176,0
Button_color = 221,221,221
; color of buttons 'play', 'exit' etc at start menu
Button_text_color = 0,0,0
; color of the text on these buttons
Stone_color = 95,135,0
Splash_background_color = 170,170,0
; background color for "LEVEL ??" label between levels
Splash_level_string_color= 0,0,0
; color of "LEVEL" label
Splash_level_number_color= 0,0,0
; color of two level number digits on splash between levels
 
[Theme_light]
Decorations = 2
Background_color = 245,245,245
Decorations_color = 55,55,55
Snake_color = 225,125,225
Snake_head_color = 255,125,55
Snake_color = 215,115,215
Snake_head_color = 215,115,215
Snake_picture_color = 105,155,205
Version_picture_color = 155,255,0
Pause_picture_color = 75,255,75
Game_over_picture_color = 225,125,105
You_win_picture_color = 55,255,155
Navigation_string_color = 205,105,105
Game_over_string_color = 205,105,105
Game_over_hiscore_color = 205,75,75
Eat_color = 225,225,25
Game_over_hiscore_color = 205,85,85
Eat_color = 255,255,55
Score_number_color = 100,100,255
Score_string_color = 100,100,255
Level_string_color = 100,100,255
Level_number_color = 100,100,255
Hiscore_number_color = 100,100,255
Hiscore_string_color = 100,100,255
Champion_string_color = 100,100,255
Champion_name_color = 100,100,255
Edit_box_selection_color= 0,176,0
Button_color = 221,221,221
Button_text_color = 0,0,0
Stone_color = 105,185,255
Splash_background_color = 185,255,185
Splash_level_string_color= 165,165,255
Splash_level_number_color= 255,165,165
 
[Theme_ultra_white]
Decorations = 10
110,7 → 85,6
Version_picture_color = 70,70,70
Pause_picture_color = 30,30,30
Game_over_picture_color = 30,30,30
You_win_picture_color = 105,105,105
Navigation_string_color = 255,255,255
Game_over_string_color = 30,30,30
Game_over_hiscore_color = 0,0,0
117,19 → 91,11
Eat_color = 0,255,0
Score_number_color = 0,0,0
Score_string_color = 255,255,255
Level_string_color = 255,255,255
Level_number_color = 255,255,255
Hiscore_number_color = 0,0,0
Hiscore_string_color = 255,255,255
Champion_string_color = 255,255,255
Champion_name_color = 255,255,255
Edit_box_selection_color= 176,176,176
Button_color = 221,221,221
Button_text_color = 0,0,0
Stone_color = 145,145,145
Splash_background_color = 205,205,205
Splash_level_string_color= 255,255,255
Splash_level_number_color= 255,255,255
 
[Theme_ultra_black]
Decorations = 6
141,7 → 107,6
Version_picture_color = 225,225,225
Pause_picture_color = 225,225,225
Game_over_picture_color = 225,225,225
You_win_picture_color = 255,255,255
Navigation_string_color = 0,0,0
Game_over_string_color = 225,225,225
Game_over_hiscore_color = 225,225,225
148,28 → 113,19
Eat_color = 255,0,0
Score_number_color = 255,255,255
Score_string_color = 255,255,255
Level_string_color = 0,0,0
Level_number_color = 0,0,0
Hiscore_number_color = 255,255,255
Hiscore_string_color = 255,255,255
Champion_string_color = 0,0,0
Champion_name_color = 0,0,0
Edit_box_selection_color= 100,100,100
Button_color = 221,221,221
Button_text_color = 0,0,0
Stone_color = 145,145,145
Splash_background_color = 30,30,30
Splash_level_string_color= 255,255,255
Splash_level_number_color= 255,255,255
 
[Theme_your_theme_name]
[Theme_your_theme_here]
 
;;---Visual_themes------------------------------------------------------
 
;;===Reserved_Section===================================================
[Reserved]
Square_side_length=19
Champion_name_classic=
Hiscore_classic=777
Champion_name_levels=
Hiscore_levels=222
; !!! DON'T WRITE ANYTHING AFTER THIS LINE: 'Score' SECTION IS WRITABLE AND YOU WILL LOST THIS DATA !!!
 
;;===Section_of_results=================================================
[Score]
Hiscore=777
Champion_name=