;;===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' ;include '../../../system/board/trunk/debug.inc' ;;===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, 80 neg eax add [time_wait_limit], eax invoke ini.get_int, cur_dir_path, aPreferences, aDecorations, 2 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 invoke ini.get_color, cur_dir_path, aColors, aEdit_box_selection_color, 0x00aa00 or [edit1+0x10], eax mov eax, [background_color] mov [edit1+0x0C], eax mov [edit1+0x14], eax mov [edit1+0x18], eax mov eax, [game_over_hiscore_color] mov [edit1+0x1C], 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 aEdit_box_selection_color db 'Edit_box_selection_color',0 edit1 edit_box 100,397,278,0x000000,0x000000,0x000000,0x000000,0x80000000,15,hed,mouse_dd,ed_focus,hed_end-hed-1,hed_end-hed-1 hed db '',0 hed_end: rb 256 mouse_dd rd 1 i_end: cur_dir_path rb 4096 @PARAMS rb 4096 ;;---Variables------------------------------------------------------------------------------------------------------------- rb 4096 stacktop: d_end: