Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 1517 → Rev 1518

/programs/games/snake/trunk/build_en.bat
0,0 → 1,5
@erase lang.inc
@echo lang fix en >lang.inc
@fasm snake.asm snake
@erase lang.inc
@pause
/programs/games/snake/trunk/first_menu.asm
0,0 → 1,88
;;===First_menu_mode===========================================================================================================
 
First_menu:
 
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_window:
mcall 12,1
mcall 0,200*65536+WINDOW_WIDTH,326*65536+WINDOW_HEIGHT,[window_style], ,window_title
 
call Draw_decorations
call Draw_first_menu_picture
call Draw_menu_strings
 
mcall 12,2
 
Wait_for_event:
mcall 10 ; wait for event
; ok, what an event?
dec al ; has the window been moved or resized?
jz Redraw_window ;
dec al ; was a key pressed?
jz Is_key ;
 
 
Is_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 ; is it close button?
je Exit ; if so, jump to quit...
 
jmp Wait_for_event ; jump to wait for another event
 
 
Is_key: ; a key was pressed
mcall 2 ; get keycode
 
cmp ah, 0x1B ; Escape
je Exit
cmp ah, 0x0D ; Enter
je Level_begin
cmp ah, 0x20 ; Space
je Level_begin
 
jmp Wait_for_event ; jump to wait for another event
 
;;---First_menu_mode-----------------------------------------------------------------------------------------------------------
 
 
;;===Some_functions============================================================================================================
 
Draw_first_menu_picture:
;;===Draw_first_menu_picture================================================================================================
 
mov al, 5
mov bh, 0
mov ecx, picture_first_menu_snake
mov edx, [snake_picture_color]
call Draw_picture
 
mov al, 4
mov bh, 7
mov ecx, picture_first_menu_version
mov edx, [version_picture_color]
call Draw_picture
 
ret
;;---Draw_first_menu_picture------------------------------------------------------------------------------------------------
 
 
Draw_menu_strings:
;;===Make_menu_strings=========================================================================================
 
mcall 4,153*65536+BOTTOM_MIDDLE_STRINGS,[navigation_strings_color],press_to_start
mcall ,213*65536+TOP_STRINGS,[navigation_strings_color],press_esc_to_exit
; mcall ,406*65536+TOP_STRINGS,[navigation_strings_color],press_F2_to_options
 
ret
 
;;---Make_menu_strings-----------------------------------------------------------------------------------------
;;---Some_functions------------------------------------------------------------------------------------------------------------
/programs/games/snake/trunk/game_over.asm
0,0 → 1,137
;;===Game_over_mode============================================================================================================
 
Game_over:
 
mov ebx, [score]
cmp ebx, [hi_score]
jng Game_over_Redraw
mov [is_new_record], 1
 
mcall 40,100111b ; set events: standart + mouse
 
Game_over_Redraw:
mcall 12,1
mcall 0,200*65536+WINDOW_WIDTH,326*65536+WINDOW_HEIGHT,[window_style], ,window_title
cmp [is_new_record], 1
jnz @f
push dword edit1
call [edit_box.draw]
@@:
 
call Draw_decorations
call Draw_game_over_picture
call Draw_game_over_strings
 
mcall 12,2
 
Game_over_Wait_for_event:
mcall 10 ; wait for event
; ok, what an event?
dec al ; has the window been moved or resized?
jz Game_over_Redraw
dec al ; was a key pressed?
jz Game_over_key
dec al ; was a button pressed?
jz Game_over_button
 
 
Game_over_mouse: ; mouse event received
push dword edit1
call [edit_box.mouse]
jmp Game_over_Wait_for_event
 
 
Game_over_key: ; a key was pressed
mcall 2 ; get keycode
 
cmp [is_new_record], 1
jnz .skip
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
 
@@:
push dword edit1
call [edit_box.key]
jmp Game_over_Wait_for_event
.skip:
 
cmp ah, 0x1B ; Escape - go to menu
jne Game_over_Wait_for_event
 
mcall 40,111b ; set events: standart
jmp First_menu
 
 
Game_over_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 Exit
 
jmp Game_over_Wait_for_event
 
;;---Game_over_mode------------------------------------------------------------------------------------------------------------
 
 
;;===Some_functions============================================================================================================
 
Draw_game_over_picture:
;;===Draw_game_over_picture================================================================================================
 
mov al, 11
mov bh, 0
mov ecx, picture_game_over
mov edx, [game_over_picture_color]
call Draw_picture
 
ret
 
;;---Draw_game_over_picture------------------------------------------------------------------------------------------------
 
 
Draw_game_over_strings:
;;===Draw_game_over_strings================================================================================================
cmp [is_new_record], 1
jnz @f
 
mcall 4,40*65536+BOTTOM_TOP_STRINGS,[game_over_strings_color],string_congratulations
mcall ,244*65536+BOTTOM_BOTTOM_STRINGS, ,string_enter_your_name
mcall ,210*65536+TOP_STRINGS,[navigation_strings_color],string_apply_name_enter
mcall 47,0x00070000,[score],(399)*65536+BOTTOM_TOP_STRINGS,[game_over_hiscore_color]
 
ret
@@:
call Draw_menu_esc
 
ret
;;---Draw_game_over_strings------------------------------------------------------------------------------------------------
Score_and_name_store:
;;===Name_store============================================================================================================
 
invoke ini.set_str, cur_dir_path, aScore, aChampion_name, hed, 15
invoke ini.set_int, cur_dir_path, aScore, aHiscore, [score]
 
ret
 
;;---Name_store------------------------------------------------------------------------------------------------------------
 
;;---Some_functions------------------------------------------------------------------------------------------------------------
/programs/games/snake/trunk/level.asm
0,0 → 1,529
;;===Level_mode================================================================================================================
 
Level_begin:
 
mov [score], 0
mov [action], 0
mov [number_of_free_dots], GRID_WIDTH*GRID_HEIGHT-3
 
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, GRID_WIDTH*GRID_HEIGHT/4
rep movsd
 
Level_body:
;;===Level_body========================================================================================================
 
mcall 26, 9
mov [time_before_waiting], eax
mov eax, [time_wait_limit]
mov [time_to_wait], eax
 
Redraw:
mcall 12,1
mcall 0,200*65536+WINDOW_WIDTH,326*65536+WINDOW_HEIGHT,[window_style], ,window_title
call Draw_decorations
call Draw_snake
call Draw_eat
call Draw_level_strings
 
mcall 12,2
Waiting:
mcall 26, 9
push eax
sub eax, [time_before_waiting]
pop [time_before_waiting]
cmp [time_to_wait], eax
jg @f
cmp [action], 0
jne Game_step
@@:
sub [time_to_wait], eax
mcall 23, [time_to_wait] ;
 
test al, al
jnz @f
cmp [action], 0
jne Game_step
mcall 26, 9
mov [time_before_waiting], eax
mov eax, [time_wait_limit]
mov [time_to_wait], eax
jmp Waiting
@@:
 
Message: ; ok, what an event?
dec al ; has the window been moved or resized?
jz Redraw ;
dec al ; was a key pressed?
jz Key ;
dec al ; was a button pressed?
jz Button ;
 
 
Key:
mcall 2 ; get keycode
cmp ah, 0x1B ; Escape
je First_menu
cmp ah, 0x20 ; Space
je Pause_mode
cmp ah, 0xB0 ; Left
je .left
cmp ah, 0xB1 ; Down
je .down
cmp ah, 0xB2 ; Up
je .up
cmp ah, 0xB3 ; Right
je .right
jmp Waiting ; jump to wait for another event
.left:
cmp [action], 0
jne @f
mov [time_to_wait], 0
@@:
mov [action], 1
mov [snake_napravlenie_next], 0
jmp Waiting
.down:
cmp [action], 0
jne @f
mov [time_to_wait], 0
@@:
mov [action], 1
mov [snake_napravlenie_next], 1
jmp Waiting
.up:
cmp [action], 0
jne @f
mov [time_to_wait], 0
@@:
mov [action], 1
mov [snake_napravlenie_next], 2
jmp Waiting
.right:
cmp [action], 0
jne @f
mov [time_to_wait], 0
@@:
mov [action], 1
mov [snake_napravlenie_next], 3
jmp Waiting
 
Button: ; ¯à®æ¥¤ãà  ®¡à ¡®ª¨ ª­®¯®ª ¢ ¯à®£à ¬¬¥
mcall 17 ; äã­ªæ¨ï 17: ¯®«ãç¨âì ­®¬¥à ­ ¦ â®© ª­®¯ª¨
 
shr eax, 8 ; ᤢ¨£ ¥¬ ॣ¨áâà eax ­  8 ¡¨â ¢¯à ¢®, çâ®¡ë ¯®«ãç¨âì ­®¬¥à ­ ¦ â®© ª­®¯ª¨
cmp eax, 1
je Exit ; ¥á«¨ íâ® ­¥ ª­®¯ª  1 (§ à¥§¥à¢¨à®¢ ­  á¨á⥬®© ª ª ª­®¯ª  § ªàëâ¨ï ¯à®£à ¬¬ë), ¯à®¯ã᪠¥¬ 2 á«¥¤ãî騥 áâà®çª¨ ª®¤ 
 
jmp Waiting
Game_step:
 
cmp [snake_napravlenie], LEFT ; are we moving to left?
jz .left
cmp [snake_napravlenie], DOWN ; ... down?
jz .down
cmp [snake_napravlenie], UP ; ... up?
jz .up
jmp .right ; then right
.left:
cmp [snake_napravlenie_next], RIGHT ; next step is to right?
jz .with_rewerse
jmp .without_rewerse
.down:
cmp [snake_napravlenie_next], UP ; next step is to up?
jz .with_rewerse
jmp .without_rewerse
.up:
cmp [snake_napravlenie_next], DOWN ; next step is to bottom?
jz .with_rewerse
jmp .without_rewerse
 
.right:
cmp [snake_napravlenie_next], LEFT ; next step is to left?
jz .with_rewerse
jmp .without_rewerse
 
 
.with_rewerse:
call Set_reverse_napravlenie
call Reverse
.without_rewerse:
; mov [time_to_wait], 0
mov edx, snake_dots-2
add edx, [snake_length_x2]
cmp [snake_napravlenie_next], LEFT
je .to_left
cmp [snake_napravlenie_next], DOWN
je .to_down
cmp [snake_napravlenie_next], UP
je .to_up
cmp [snake_napravlenie_next], RIGHT
je .to_right
.to_left:
mov [snake_napravlenie], LEFT
mov ax, [edx]
dec al
cmp al, -1
jne @f
mov al, GRID_WIDTH-1
@@:
jmp Snake_move
 
.to_down:
mov [snake_napravlenie], DOWN
mov ax, [edx]
inc ah
cmp ah, GRID_HEIGHT
jne @f
mov ah, 0
@@:
jmp Snake_move
.to_up:
mov [snake_napravlenie], UP
mov ax, [edx]
dec ah
cmp ah, -1
jne @f
mov ah, GRID_HEIGHT-1
@@:
jmp Snake_move
.to_right:
mov [snake_napravlenie], RIGHT
mov ax, [edx]
inc al
cmp al, GRID_WIDTH
jne @f
mov al, 0
@@:
jmp Snake_move
 
;;---Level_body--------------------------------------------------------------------------------------------------------
 
;;---Level_mode----------------------------------------------------------------------------------------------------------------
 
 
;;===Some_functions============================================================================================================
 
Draw_snake:
;;===Draw_snake========================================================================================================
call Draw_head_prehead
mov edx, [snake_color]
mov esi, snake_dots-6
add esi, [snake_length_x2]
 
@@:
mov bx, [esi]
sub esi, 2
call Draw_square
cmp esi, snake_dots-2
jne @b
 
ret
;;---Draw_snake--------------------------------------------------------------------------------------------------------
 
 
Draw_head_prehead:
;;===Draw_head_prehead=================================================================================================
 
mov edx, [snake_head_color]
mov esi, snake_dots-2
add esi, [snake_length_x2]
mov bx, [esi]
call Draw_square
sub esi, 2
mov bx, [esi]
mov edx, [snake_color]
call Draw_square
 
ret
 
;;---Draw_head_prehead-------------------------------------------------------------------------------------------------
 
 
Draw_level_strings:
;;===Draw_level_strings================================================================================================
 
call Draw_menu_esc
call Draw_score_string
call Draw_score_number ; Draw score (number)
call Draw_hiscore_string
call Draw_hiscore_number
call Draw_champion_string
call Draw_champion_name
 
mcall 4,225*65536+BOTTOM_MIDDLE_STRINGS,[navigation_strings_color],string_pause_space ; Draw 'PAUSE - SPACE' string
ret
 
;;---Draw_level_strings------------------------------------------------------------------------------------------------
Reverse:
;;===Reverse===========================================================================================================
 
mov ecx, [snake_length_x2]
shr ecx, 2
mov esi, snake_dots
mov edi, snake_dots-2
add edi, [snake_length_x2]
 
@@:
 
mov ax, [edi]
xchg ax, [esi]
mov [edi], ax
 
dec cx
add esi, 2
sub edi, 2
 
test cx, cx
jnz @b
 
ret
 
;;---Reverse-----------------------------------------------------------------------------------------------------------
Draw_eat:
;;===Draw_eat==========================================================================================================
mov bx, word[eat]
mov edx, [eat_color]
call Draw_square
ret
;;---Draw_eat----------------------------------------------------------------------------------------------------------
 
 
Get_eat:
;;===Get_eat===========================================================================================================
;; in :
;;
;; out :
;; ax = coord's of the eat square (al=x, ah=y)
;;
mcall 26,9
; xor eax, esp
shl eax, 1
xor edx, edx
div word[number_of_free_dots]
mov ebx, field_map
 
.loop:
cmp byte[ebx], 0
jne @f
test dx, dx
jz .place_found
dec dx
@@:
inc ebx
jmp .loop
.place_found:
sub ebx, field_map
mov eax, ebx
mov bl, GRID_WIDTH
div bl
xchg al, ah
mov word[eat], ax
 
ret
 
;;---Get_eat-----------------------------------------------------------------------------------------------------------
 
 
Sdvig:
;;===Sdvig=============================================================================================================
 
mov esi, snake_dots+2
mov edi, snake_dots
mov ecx, [snake_length_x2]
shr ecx, 1
cld
rep movsw
 
ret
 
;;---Sdvig-------------------------------------------------------------------------------------------------------------
 
 
Set_reverse_napravlenie:
;;===Set_reverse_napravlenie===========================================================================================
 
mov eax, snake_dots
mov ebx, snake_dots+2
 
mov cl, [eax] ; The last dot x_coord
mov dl, [ebx] ; The pre_last dot x_coord
 
cmp cl, dl
je .X_ravny
cmp cl, 0
jne .skip2
cmp dl, 23
jne .Normal_y_ravny
mov [snake_napravlenie_next], 3
ret
.skip2:
cmp cl, 23
jne .Normal_y_ravny
cmp dl, 0
jne .Normal_y_ravny
mov [snake_napravlenie_next], 0
ret
.Normal_y_ravny:
 
cmp cl, dl
jg .Napravlenie_to_right
mov [snake_napravlenie_next], 0
ret
 
.Napravlenie_to_right:
mov [snake_napravlenie_next], 3
ret
 
.X_ravny:
inc eax
inc ebx
mov cl, [eax]
mov dl, [ebx]
cmp cl, 0
jne .skip3
cmp dl, 10
jne .Normal_x_ravny
mov [snake_napravlenie_next], 1
ret
.skip3:
cmp cl, 10
jne .Normal_x_ravny
cmp dl, 0
jne .Normal_x_ravny
mov [snake_napravlenie_next], 2
ret
.Normal_x_ravny:
 
cmp cl, dl ; !!!
jg .Napravlenie_to_down ; 0 1 2 ...
mov [snake_napravlenie_next], 2 ; 1
ret ; 2
; .
.Napravlenie_to_down: ; .
mov [snake_napravlenie_next], 1 ; .
 
ret
 
;;---Set_reverse_napravlenie-------------------------------------------------------------------------------------------
Snake_move:
;;===Snake_move========================================================================================================
;; in :
;; ax = coord's of new head
;; edx = snake_dots+[snake_length_x2]-2 (snake head)
;;
 
add edx, 2
mov [edx], ax
cmp ax, word[eat]
jne .eat_and_new_head_are_different
 
add [snake_length_x2], 2
add [score], SCORE_EAT
dec word[number_of_free_dots]
cmp word[number_of_free_dots], 0
je Game_over
mov ax, word[eat]
mov cl, 1
call Draw_on_map
call Draw_head_prehead
call Get_eat
call Draw_eat
 
jmp Keys_done
 
 
.eat_and_new_head_are_different:
 
mov ecx, snake_dots-4
add ecx, [snake_length_x2]
 
call Get_from_map
test bl, bl
jnz Game_over
 
mov cl, 1
call Draw_on_map
mov bx, word[snake_dots]
mov edx, [background_color]
call Draw_square
 
mov ax, word[snake_dots]
mov cl, 0
call Draw_on_map
call Sdvig
call Draw_head_prehead
 
 
Keys_done:
 
cmp [score], 0
je @f
dec [score]
call Draw_score_number
@@:
mcall 26, 9
mov [time_before_waiting], eax
mov eax, [time_wait_limit]
mov [time_to_wait], eax
jmp Waiting
 
;;---Snake_move--------------------------------------------------------------------------------------------------------
 
;;---Some_functions------------------------------------------------------------------------------------------------------------
/programs/games/snake/trunk/makefile
0,0 → 1,2
snake : snake.asm first_menu.asm level.asm pause.asm game_over.asm
fasm snake.asm snake
/programs/games/snake/trunk/pause.asm
0,0 → 1,80
;;===Pause_mode================================================================================================================
 
Pause_mode:
 
mov [action], 0
mov eax, [time_wait_limit]
mov [time_to_wait], eax
 
Pause_Redraw_window:
mcall 12,1
mcall 0,200*65536+WINDOW_WIDTH,326*65536+WINDOW_HEIGHT,[window_style], ,window_title
 
call Draw_decorations
call Draw_pause_picture
call Draw_pause_strings
 
mcall 12,2
Pause_Wait_for_event:
mcall 10 ; wait for event
; ok, what an event?
dec al ; has the window been moved or resized?
jz Pause_Redraw_window
dec al ; was a key pressed?
jz Pause_Is_key
 
 
Pause_Is_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 Exit
 
jmp Pause_Wait_for_event
 
 
Pause_Is_key: ; a key was pressed
mcall 2 ; get keycode
cmp ah, 0x1B ; Escape - go to menu
je First_menu
cmp ah, 0x20 ; Space - resume game
je Level_body
jmp Pause_Wait_for_event
 
;;---Pause_mode----------------------------------------------------------------------------------------------------------------
 
 
;;===Some_functions============================================================================================================
 
Draw_pause_picture:
;;===Draw_pause_picture========================================================================================================
 
mov al, 6
mov bh, 2
mov ecx, picture_pause
mov edx, [pause_picture_color]
call Draw_picture
 
ret
;;---Draw_pause_picture--------------------------------------------------------------------------------------------------------
Draw_pause_strings:
;;===Draw_pause_strings================================================================================================
 
mcall 4,219*65536+BOTTOM_MIDDLE_STRINGS,[navigation_strings_color],string_resume_space ; Show 'RESUME - SPACE' string
call Draw_menu_esc ; Show 'MENU - ESC' string
 
 
ret
 
;;---Draw_pause_strings------------------------------------------------------------------------------------------------
;;---Some_functions------------------------------------------------------------------------------------------------------------
/programs/games/snake/trunk/snake.asm
0,0 → 1,704
;;===HEADER====================================================================================================================
 
use32
org 0x0
db 'MENUET01'
dd 0x1,start,i_end,d_end,stacktop,0x0,cur_dir_path
 
;;---HEADER--------------------------------------------------------------------------------------------------------------------
 
include '../../../proc32.inc'
include '../../../macros.inc'
include '../../../system/launch/trunk/mem.inc'
include '../../../develop/libraries/libs-dev/.test/dll.inc'
include '../../../develop/libraries/box_lib/trunk/box_lib.mac'
 
;;===Define_chapter============================================================================================================
 
WINDOW_WIDTH equ 550
WINDOW_HEIGHT equ 320
GRID_STEP equ 20
GRID_BEGIN_X equ 31
GRID_BEGIN_Y equ 31
GRID_WIDTH equ 24
GRID_HEIGHT equ 11
GRID_ENDS_WIDTH equ 13
 
BOTTOM_TOP_STRINGS equ 270
BOTTOM_MIDDLE_STRINGS equ 276
BOTTOM_BOTTOM_STRINGS equ 282
TOP_STRINGS equ 5
 
SCORE_EAT equ 100
 
LEFT equ 0
DOWN equ 1
UP equ 2
RIGHT equ 3
 
;;---Define_chapter------------------------------------------------------------------------------------------------------------
 
start:
 
stdcall dll.Load,@IMPORT
or eax, eax
jnz Exit
align 4
 
mov eax, cur_dir_path
@@:
cmp byte[eax], 0
jz @f
inc eax
jmp @b
@@:
mov dword[eax], '.ini'
 
invoke ini.get_int, cur_dir_path, aPreferences, aSpeed, 70
neg eax
add [time_wait_limit], eax
invoke ini.get_int, cur_dir_path, aPreferences, aDecorations, 1
mov [decorations], al
 
invoke ini.get_color, cur_dir_path, aColors, aBackground_color, 0x000000
or [background_color], eax
or [window_style], eax
invoke ini.get_color, cur_dir_path, aColors, aDecorations_color, 0x00aaaa00
or [decorations_color], eax
invoke ini.get_color, cur_dir_path, aColors, aSnake_color, 0x1111ff
or [snake_color], eax
invoke ini.get_color, cur_dir_path, aColors, aSnake_head_color, 0x1111ff
or [snake_head_color], eax
invoke ini.get_color, cur_dir_path, aColors, aSnake_picture_color, 0x4488ff
or [snake_picture_color], eax
invoke ini.get_color, cur_dir_path, aColors, aVersion_picture_color, 0x55ff55
or [version_picture_color], eax
invoke ini.get_color, cur_dir_path, aColors, aPause_picture_color, 0x11ff11
or [pause_picture_color], eax
invoke ini.get_color, cur_dir_path, aColors, aGame_over_picture_color, 0xff1111
or [game_over_picture_color], eax
invoke ini.get_color, cur_dir_path, aColors, aEat_color, 0xffff11
or [eat_color], eax
invoke ini.get_color, cur_dir_path, aColors, aNavigation_strings_color, 0x80ff7777
or [navigation_strings_color], eax
invoke ini.get_color, cur_dir_path, aColors, aGame_over_strings_color, 0x80ff9900
or [game_over_strings_color], eax
invoke ini.get_color, cur_dir_path, aColors, aScore_string_color, 0x80ffffff
or [score_string_color], eax
invoke ini.get_color, cur_dir_path, aColors, aHiscore_string_color, 0x80ffffff
or [hiscore_string_color], eax
invoke ini.get_color, cur_dir_path, aColors, aChampion_string_color, 0x80ffffff
or [champion_string_color], eax
invoke ini.get_color, cur_dir_path, aColors, aGame_over_hiscore_color, 0x80ffdd44
or [game_over_hiscore_color], eax
invoke ini.get_color, cur_dir_path, aColors, aScore_number_color, 0xffffff
or [score_number_color], eax
invoke ini.get_color, cur_dir_path, aColors, aHiscore_number_color, 0x00ffffff
or [hiscore_number_color], eax
invoke ini.get_color, cur_dir_path, aColors, aChampion_name_color, 0x80ffffff
or [champion_name_color], eax
 
include 'first_menu.asm' ; First menu body and functions
include 'level.asm' ; Level body and functions (game process)
include 'pause.asm' ; Pause body and functions
include 'game_over.asm' ; Game_over body and functions
 
;;===Some_functions============================================================================================================
 
Exit:
;;===Exit==============================================================================================================
 
or eax, -1
int 0x40
;;---Exit--------------------------------------------------------------------------------------------------------------
Draw_decorations:
;;===Draw_decorations==================================================================================================
 
cmp [decorations], 1
je grid_lines
cmp [decorations], 2
je grid_lines_with_ends
cmp [decorations], 3
je grid_lines_with_corners
cmp [decorations], 4
je grid_dots
cmp [decorations], 5
je borders_lines
cmp [decorations], 6
je borders_lines_with_ends
cmp [decorations], 7
je borders_dots
cmp [decorations], 8
je corners_dots
cmp [decorations], 9
je corners_inner
cmp [decorations], 10
je corners_outer
cmp [decorations], 11
je corners_crosses
ret
 
 
grid_lines:
 
mov eax, 38
mov ebx, (GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1)
mov ecx, (GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1+GRID_HEIGHT*GRID_STEP)
mov edx, [decorations_color]
 
@@:
mcall
add ebx, GRID_STEP*65536+GRID_STEP
cmp ebx, (GRID_BEGIN_X-1+GRID_WIDTH*GRID_STEP)*65536+(GRID_BEGIN_X-1+GRID_WIDTH*GRID_STEP)
jng @b
 
mov ebx, (GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1+GRID_WIDTH*GRID_STEP)
mov ecx, (GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1)
@@:
mcall
add ecx, GRID_STEP*65536+GRID_STEP
cmp ecx, (GRID_BEGIN_Y-1+GRID_HEIGHT*GRID_STEP)*65536+(GRID_BEGIN_Y-1+GRID_HEIGHT*GRID_STEP)
jng @b
 
ret
 
 
grid_lines_with_ends:
 
mov eax, 38
mov ebx, (GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1)
mov ecx, (GRID_BEGIN_Y-1-GRID_ENDS_WIDTH)*65536+(GRID_BEGIN_Y-1+GRID_HEIGHT*GRID_STEP+GRID_ENDS_WIDTH)
mov edx, [decorations_color]
 
@@:
mcall
add ebx, GRID_STEP*65536+GRID_STEP
cmp ebx, (GRID_BEGIN_X-1+GRID_WIDTH*GRID_STEP)*65536+(GRID_BEGIN_X-1+GRID_WIDTH*GRID_STEP)
jng @b
 
mov ebx, (GRID_BEGIN_X-1-GRID_ENDS_WIDTH)*65536+(GRID_BEGIN_X-1+GRID_WIDTH*GRID_STEP+GRID_ENDS_WIDTH)
mov ecx, (GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1)
@@:
mcall
add ecx, GRID_STEP*65536+GRID_STEP
cmp ecx, (GRID_BEGIN_Y-1+GRID_HEIGHT*GRID_STEP)*65536+(GRID_BEGIN_Y-1+GRID_HEIGHT*GRID_STEP)
jng @b
 
ret
 
 
grid_lines_with_corners:
 
call grid_lines
call corners_outer
 
ret
 
 
grid_dots:
 
mov eax, 1
mov ebx, GRID_BEGIN_X-1
mov ecx, GRID_BEGIN_Y-1
mov edx, [decorations_color]
 
@@:
mcall
add ebx, GRID_STEP
cmp ebx, GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1
jng @b
add ecx, GRID_STEP
cmp ecx, GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1
jg @f
mov ebx, GRID_BEGIN_X-1
jmp @b
 
@@:
ret
 
 
borders_lines:
 
mcall 38,(GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1),17*65536+263,[decorations_color]
mcall ,(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1)*65536+(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1), ,
mcall ,17*65536+523,(GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1)
mcall ,17*65536+523,(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1)*65536+(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1)
 
ret
 
 
borders_lines_with_ends:
 
call borders_lines
call corners_outer
 
ret
 
 
borders_dots:
 
mov eax, 1
mov ebx, GRID_BEGIN_X-1
mov ecx, GRID_BEGIN_Y-1
mov edx, [decorations_color]
@@:
mcall
add ebx, GRID_STEP
cmp ebx, GRID_BEGIN_X-1+GRID_WIDTH*GRID_STEP
jng @b
 
mov ebx, GRID_BEGIN_X-1
mov ecx, GRID_BEGIN_Y-1+GRID_HEIGHT*GRID_STEP
@@:
mcall
add ebx, GRID_STEP
cmp ebx, GRID_BEGIN_X-1+GRID_WIDTH*GRID_STEP
jng @b
 
mov ebx, GRID_BEGIN_X-1
mov ecx, GRID_BEGIN_Y-1
@@:
mcall
add ecx, GRID_STEP
cmp ecx, GRID_BEGIN_Y-1+GRID_HEIGHT*GRID_STEP
jng @b
 
mov ebx, GRID_BEGIN_X-1+GRID_WIDTH*GRID_STEP
mov ecx, GRID_BEGIN_Y-1
@@:
mcall
add ecx, GRID_STEP
cmp ecx, GRID_BEGIN_Y-1+GRID_HEIGHT*GRID_STEP
jng @b
 
ret
 
 
corners_dots:
 
mcall 13,(GRID_BEGIN_X-2)*65536+2,(GRID_BEGIN_Y-2)*65536+2,[decorations_color]
mcall ,(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1)*65536+2,(GRID_BEGIN_Y-2)*65536+2,
mcall 13,(GRID_BEGIN_X-2)*65536+2,(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1)*65536+2,
mcall ,(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1)*65536+2,(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1)*65536+2,
 
ret
 
 
corners_inner:
 
mcall 38,(GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1+GRID_ENDS_WIDTH),(GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1),[decorations_color]
mcall ,(GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1+GRID_ENDS_WIDTH),(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1)*65536+(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1),
mcall ,(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-GRID_ENDS_WIDTH-1)*65536+(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1),(GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1),
mcall ,(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-GRID_ENDS_WIDTH-1)*65536+(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1),(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1)*65536+(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1),
mcall ,(GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1),(GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1+GRID_ENDS_WIDTH),
mcall ,(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1)*65536+(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1),(GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1+GRID_ENDS_WIDTH),
mcall ,(GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1),(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-GRID_ENDS_WIDTH-1)*65536+(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1),
mcall ,(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1)*65536+(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1),(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-GRID_ENDS_WIDTH-1)*65536+(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1),
 
ret
 
 
corners_outer:
 
mcall 38,(GRID_BEGIN_X-1-GRID_ENDS_WIDTH)*65536+(GRID_BEGIN_X-1),(GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1),[decorations_color]
mcall ,(GRID_BEGIN_X-1-GRID_ENDS_WIDTH)*65536+(GRID_BEGIN_X-1),(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1)*65536+(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1),
mcall ,(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1)*65536+(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1+GRID_ENDS_WIDTH),(GRID_BEGIN_Y-1)*65536+(GRID_BEGIN_Y-1),
mcall ,(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1)*65536+(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1+GRID_ENDS_WIDTH),(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1)*65536+(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1),
mcall ,(GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1),(GRID_BEGIN_Y-1-GRID_ENDS_WIDTH)*65536+(GRID_BEGIN_Y-1),
mcall ,(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1)*65536+(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1),(GRID_BEGIN_Y-1-GRID_ENDS_WIDTH)*65536+(GRID_BEGIN_Y-1),
mcall ,(GRID_BEGIN_X-1)*65536+(GRID_BEGIN_X-1),(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1)*65536+(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1+GRID_ENDS_WIDTH),
mcall ,(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1)*65536+(GRID_BEGIN_X+GRID_WIDTH*GRID_STEP-1),(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1)*65536+(GRID_BEGIN_Y+GRID_HEIGHT*GRID_STEP-1+GRID_ENDS_WIDTH),
 
ret
 
 
corners_crosses:
 
call corners_inner
call corners_outer
 
ret
 
 
;;---Draw_decorations--------------------------------------------------------------------------------------------------
 
 
Draw_square:
;;===Draw_square=======================================================================================================
;; bl - x_coord
;; bh - y_coord
;; edx - color
 
mov cl, bh
 
mov al, 20
mul bl
mov bx, ax
add bx, 31
shl ebx, 16
add ebx, 19
 
mov al, 20
mul cl
mov cx, ax
add cx, 31
shl ecx, 16
add ecx, 19
mcall 13
 
ret
 
;;---Draw_square-------------------------------------------------------------------------------------------------------
Draw_menu_esc:
;;===Draw_menu_esc=====================================================================================================
 
mcall 4,234*65536+TOP_STRINGS,[navigation_strings_color],string_menu_esc
ret
;;---Draw_menu_esc-----------------------------------------------------------------------------------------------------
 
 
Draw_score_string:
;;===Draw_score_string=================================================================================================
mcall 4,56*65536+BOTTOM_TOP_STRINGS,[score_string_color],string_score
ret
;;---Draw_score_string-------------------------------------------------------------------------------------------------
Draw_score_number:
;;===Draw_score_number=================================================================================================
mcall 47,0x00070000,[score],104*65536+BOTTOM_TOP_STRINGS,[score_number_color],[background_color]
ret
;;---Draw_score_number-------------------------------------------------------------------------------------------------
 
 
Draw_hiscore_string:
;;===Draw_hiscore_string===============================================================================================
 
mcall 4,376*65536+BOTTOM_TOP_STRINGS,[hiscore_string_color],string_hi_score
ret
;;---Draw_hiscore_string-----------------------------------------------------------------------------------------------
 
Draw_hiscore_number:
;;===Draw_hiscore_number===============================================================================================
 
mcall 47,0x00070000,[hi_score],442*65536+BOTTOM_TOP_STRINGS,[hiscore_number_color]
ret
;;---Draw_hiscore_number-----------------------------------------------------------------------------------------------
Draw_champion_string:
;;===Draw_champion_string==============================================================================================
 
mcall 4,376*65536+BOTTOM_BOTTOM_STRINGS,[champion_string_color],string_champion
 
ret
 
;;---Draw_champion_string----------------------------------------------------------------------------------------------
 
 
Draw_champion_name:
;;===Draw_champion_name================================================================================================
 
mcall 4,442*65536+BOTTOM_BOTTOM_STRINGS,[champion_name_color],champion_name
 
ret
 
;;---Draw_champion_name------------------------------------------------------------------------------------------------
 
 
Draw_picture:
;;===Draw_picture======================================================================================================
;; in :
;; al = picture height (in squares)
;; bh = number of top square
;; ecx = pointer to picture data
;; edx = picture color
;;
 
.draw:
xor bl, bl
.loop:
cmp byte[ecx], 0
jz @f
push eax ebx ecx
call Draw_square
pop ecx ebx eax
@@:
inc ecx
inc bl
cmp bl, GRID_WIDTH
jne .loop
dec al
test al, al
jnz @f
ret
@@:
inc bh
jmp .draw
 
;;---Draw_picture------------------------------------------------------------------------------------------------------
 
 
Draw_on_map:
;;===Draw_on_map=======================================================================================================
;; in :
;; al = x coord
;; ah = y coord
;; cl = value to draw
;;
 
and eax, 0x0000ffff
xor bx, bx
mov bl, al
shr ax, 8
mov dx, 24
mul dx
add ax, bx
mov edi, field_map
add edi, eax
mov [edi], cl
 
ret
 
;;---Draw_on_map-------------------------------------------------------------------------------------------------------
 
 
Get_from_map:
;;===Get_from_map======================================================================================================
;; in :
;; al = x coord
;; ah = y coord
;; out :
;; al = value on map
;;
 
push eax
and eax, 0x0000ffff
xor bx, bx
mov bl, al
shr ax, 8
mov dx, 24
mul dx
add ax, bx
mov edi, field_map
add edi, eax
mov bl, [edi]
 
pop eax
 
ret
 
;;---Get_from_map------------------------------------------------------------------------------------------------------
 
 
;;---Some_functions--------------------------------------------------------------------------------------------------------
 
 
;;===Variables=============================================================================================================
 
window_title db 'Snake',0
window_style dd 0x34000000
time_before_waiting dd 0x0
time_to_wait dd 0x0
time_wait_limit dd 101
decorations db 0x0
number_of_free_dots dw 0x0
 
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,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
 
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
 
champion_name db 'dunkaist',0x20,0x20,0x20,0x20,0x20,0x20,0x20,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
 
snake_dots db 3,3, 4,3, 5,3, 522 dup (0) ; 264 dots
snake_napravlenie db 3
snake_napravlenie_next db 3
snake_length_x2 dd 6
 
eat db 0,0
 
score dd 0
hi_score dd 777
is_new_record db 0
 
action db 0
 
string_congratulations db 'Congratulations!!! You are the champion!! New hi-score is :',0
string_enter_your_name db 'Enter your name, please :',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_version db 0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,1,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,\
0,0,0,0,0,0,0,0,1,1,1,0,1,0,0,1,0,0,0,0,0,0,0,0
 
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,0,\
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_game_over db 0,0,1,1,1,0,0,0,1,0,0,0,1,0,0,0,1,0,1,1,1,1,1,0,\
0,1,0,0,1,0,0,1,0,1,0,0,1,1,0,1,1,0,1,0,0,0,0,0,\
1,0,0,0,0,0,1,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,0,0,\
1,0,0,1,0,0,1,1,1,1,1,0,1,0,0,0,1,0,1,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,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,1,1,1,0,0,1,0,0,0,1,0,1,1,1,1,1,0,1,1,1,1,0,\
0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,0,0,0,1,0,0,0,1,\
0,1,0,0,0,1,0,1,0,0,0,1,0,1,1,1,1,0,0,1,0,0,0,1,\
0,1,0,0,0,1,0,0,1,0,1,0,0,1,0,0,0,0,0,1,1,1,1,0,\
0,0,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,0,1,0,0,0,1
 
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,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
 
background_color dd 0x000000
decorations_color dd 0x00000000
snake_color dd 0x000000
snake_head_color dd 0x000000
snake_picture_color dd 0x000000
version_picture_color dd 0x000000
pause_picture_color dd 0x000000
game_over_picture_color dd 0x000000
eat_color dd 0x000000
navigation_strings_color dd 0x80000000
game_over_strings_color dd 0x80000000
score_string_color dd 0x80000000
hiscore_string_color dd 0x80000000
champion_string_color dd 0x80000000
game_over_hiscore_color dd 0x80000000
score_number_color dd 0x40000000
hiscore_number_color dd 0x00000000
champion_name_color dd 0x80000000
 
align 4
@IMPORT:
 
library \
libini , 'libini.obj' ,\
box_lib , 'box_lib.obj'
 
import libini,\
ini.get_str , 'ini_get_str' ,\
ini.get_int , 'ini_get_int' ,\
ini.set_str , 'ini_set_str' ,\
ini.set_int , 'ini_set_int' ,\
ini.get_color , 'ini_get_color'
 
import box_lib,\
edit_box.draw , 'edit_box' ,\
edit_box.key , 'edit_box_key' ,\
edit_box.mouse , 'edit_box_mouse'
 
bFirstDraw db 0
 
aScore db 'Score',0
aHiscore db 'Hiscore',0
aChampion_name db 'Champion_name',0
 
aPreferences db 'Preferences',0
aSpeed db 'Speed',0
aDecorations db 'Decorations',0
 
aColors db 'Colors',0
aBackground_color db 'Background_color',0
aDecorations_color db 'Decorations_color',0
aSnake_color db 'Snake_color',0
aSnake_head_color db 'Snake_head_color',0
aSnake_picture_color db 'Snake_picture_color',0
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
aEat_color db 'Eat_color',0
aNavigation_strings_color db 'Navigation_string_color',0
aGame_over_strings_color db 'Game_over_string_color',0
aScore_string_color db 'Score_string_color',0
aHiscore_string_color db 'Hiscore_string_color',0
aChampion_string_color db 'Champion_string_color',0
aGame_over_hiscore_color db 'Game_over_hiscore_color',0
aScore_number_color db 'Score_number_color',0
aHiscore_number_color db 'Hiscore_number_color',0
aChampion_name_color db 'Champion_name_color',0
 
edit1 edit_box 100,397,278,0x000000,0x00aa00,0x000000,0x000000,0x80ffdd44,15,hed,mouse_dd,ed_focus,hed_end-hed-1,hed_end-hed-1
 
hed db '',0
hed_end:
rb 256
ed_buffer rb 100
 
mouse_dd rd 1
 
i_end:
cur_dir_path rb 4096
@PARAMS rb 4096
;;---Variables-------------------------------------------------------------------------------------------------------------
 
rb 4096
stacktop:
d_end:
/programs/games/snake/trunk/snake.ini
0,0 → 1,101
[Preferences]
Speed=80
; SLOW == 0 <= Speed <= 100 == FAST
Decorations=2
; 0 = nothing
; 1 = grid_lines
; 2 = grid_lines_with_ends
; 3 = grid_lines_with_corners
; 4 = grid_dots
; 5 = borders_lines
; 6 = borders_lines_with_ends
; 7 = borders_dots
; 8 = corners_dots
; 9 = corners_inner
; 10 = corners_outer
; 11 = corners_crosses
 
[Colors]
 
; Standard color scheme
Background_color = 0,0,0
Decorations_color = 170,170,0
Snake_color = 17,17,255
Snake_head_color = 17,17,255
Snake_picture_color = 68,136,255
Version_picture_color = 85,255,85
Pause_picture_color = 17,255,17
Game_over_picture_color = 255,17,17
Navigation_string_color = 255,119,119
Game_over_string_color = 255,153,0
Game_over_hiscore_color = 255,221,68
Eat_color = 255,255,17
Score_number_color = 255,255,255
Score_string_color = 255,255,255
Hiscore_number_color = 255,255,255
Hiscore_string_color = 255,255,255
Champion_string_color = 255,255,255
Champion_name_color = 255,255,255
 
; Light scheme
;Background_color = 245,245,245
;Decorations_color = 55,55,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
;Navigation_string_color = 205,105,105
;Game_over_string_color = 255,255,255
;Game_over_hiscore_color = 255,255,255
;Eat_color = 255,255,55
;Score_number_color = 100,100,255
;Score_string_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
 
; Ultra white scheme
;Background_color = 0,0,0
;Snake_color = 30,30,30
;Snake_head_color = 30,30,30
;Snake_picture_color = 30,30,30
;Version_picture_color = 70,70,70
;Pause_picture_color = 30,30,30
;Game_over_picture_color = 30,30,30
;Navigation_string_color = 255,255,255
;Game_over_string_color = 255,255,255
;Game_over_hiscore_color = 255,255,255
;Eat_color = 0,255,0
;Score_number_color = 0,0,0
;Score_string_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
 
; Ultra black scheme
;Background_color = 0,0,0
;Decorations_color = 255,255,255
;Snake_color = 255,255,255
;Snake_head_color = 255,255,255
;Snake_picture_color = 255,255,255
;Version_picture_color = 225,225,225
;Pause_picture_color = 225,225,225
;Game_over_picture_color = 225,225,225
;Navigation_string_color = 0,0,0
;Game_over_string_color = 0,0,0
;Game_over_hiscore_color = 0,0,0
;Eat_color = 255,0,0
;Score_number_color = 255,255,255
;Score_string_color = 255,255,255
;Hiscore_number_color = 255,255,255
;Hiscore_string_color = 255,255,255
;Champion_string_color = 0,0,0
;Champion_name_color = 0,0,0
 
[Score]
Hiscore=777
Champion_name=