snake: new game

git-svn-id: svn://kolibrios.org@1518 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Ivan Baravy 2010-07-15 12:37:55 +00:00
parent 04ca8139b5
commit bec4526284
8 changed files with 1646 additions and 0 deletions

View File

@ -0,0 +1,5 @@
@erase lang.inc
@echo lang fix en >lang.inc
@fasm snake.asm snake
@erase lang.inc
@pause

View File

@ -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------------------------------------------------------------------------------------------------------------

View File

@ -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------------------------------------------------------------------------------------------------------------

View File

@ -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------------------------------------------------------------------------------------------------------------

View File

@ -0,0 +1,2 @@
snake : snake.asm first_menu.asm level.asm pause.asm game_over.asm
fasm snake.asm snake

View File

@ -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------------------------------------------------------------------------------------------------------------

View File

@ -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:

View File

@ -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=