diff --git a/programs/games/rstearth/death_protagonist.inc b/programs/games/rstearth/death_protagonist.inc index b3c8f00f12..d35abdf272 100644 --- a/programs/games/rstearth/death_protagonist.inc +++ b/programs/games/rstearth/death_protagonist.inc @@ -28,14 +28,18 @@ death_of_protagonist_start: jnz .still cmp ah,0xE0 - jne start_level_0 + jne .menu_still ; start_level_0 mov [extended_key],1 jmp .still ;--------------------------------------------------------------------- .extended_key: mov [extended_key],0 - jmp start_level_0 + jmp .menu_still ; start_level_0 +;--------------------------------------------------------------------- +.menu_still: + mcall 5,200 + jmp menu_still ;--------------------------------------------------------------------- .button: mcall 17 diff --git a/programs/games/rstearth/i_data.inc b/programs/games/rstearth/i_data.inc index 0c1c933049..f2da36519e 100644 --- a/programs/games/rstearth/i_data.inc +++ b/programs/games/rstearth/i_data.inc @@ -243,11 +243,6 @@ error_fs_text_9: db '9 - FAT table is destroyed',0 error_fs_text_10: db '10 - Access denied',0 error_fs_text_11: db '11 - Device error',0 ;--------------------------------------------------------------------- -lsz title,\ - ru,'Ржавая Земля (Прототип 1.4) 21.12.2014',\ - en,'Rusty Earth (Prototype 1.4) 21.12.2014' - db 0 -;--------------------------------------------------------------------- base_icons_file_name db 'base_8bpp.png',0 red_brick_icons_file_name db 'red_brick_8bpp.png',0 white_brick_icons_file_name db 'white_brick_8bpp.png',0 diff --git a/programs/games/rstearth/localization_eng.inc b/programs/games/rstearth/localization_eng.inc new file mode 100644 index 0000000000..cb5b2c076f --- /dev/null +++ b/programs/games/rstearth/localization_eng.inc @@ -0,0 +1,39 @@ +;--------------------------------------------------------------------- +title: + db 'Rusty Earth (Prototype 1.5) 23.12.2014',0 +;--------------------------------------------------------------------- +menu_game_label: + db 'GAME',0 +;-------------------------------------- +menu_settings_label: + db 'SETTINGS',0 +;-------------------------------------- +menu_credits_label: + db 'CREDITS',0 +;-------------------------------------- +menu_help_label: + db 'HELP',0 +;-------------------------------------- +menu_exit_label: + db 'EXIT',0 +;--------------------------------------------------------------------- +menu_settings_sound_label: + db 'SOUNDS',0 +;-------------------------------------- +menu_settings_music_label: + db 'MUSIC',0 +;--------------------------------------------------------------------- +menu_credits_text: + db 'Hello KolibriOS Team!',0 + db 'The game used graphics and sound material',0 + db 'under a free license, borrowed from:',0 + db 'http://untamed.wild-refuge.net/',0 + db 'http://opengameart.org',0 + db 'https://wiki.themanaworld.org',0 +;--------------------------------------------------------------------- +menu_help_text: + db 'Game control',0 + db 'Move the player:',0 + db 'WASD, Arrows or Num8462',0 + db 'Player kick : Space',0 +;--------------------------------------------------------------------- diff --git a/programs/games/rstearth/localization_rus.inc b/programs/games/rstearth/localization_rus.inc new file mode 100644 index 0000000000..a93fb2cd2d --- /dev/null +++ b/programs/games/rstearth/localization_rus.inc @@ -0,0 +1,49 @@ +;--------------------------------------------------------------------- +; Code page - Cyrillic OEM866 +;--------------------------------------------------------------------- +title: + db 'Ржавая Земля (Прототип 1.5) 23.12.2014',0 +;--------------------------------------------------------------------- +main_menu_text_pointers: + dd menu_game_label + dd menu_settings_label + dd menu_credits_label + dd menu_help_label + dd menu_exit_label + dd 0 +;--------------------------------------------------------------------- +menu_game_label: + db 'ИГРА',0 +;-------------------------------------- +menu_settings_label: + db 'НАСТРОЙКИ',0 +;-------------------------------------- +menu_credits_label: + db 'БЛАГОДАРНОСТЬ',0 +;-------------------------------------- +menu_help_label: + db 'ПОМОЩЬ',0 +;-------------------------------------- +menu_exit_label: + db 'ВЫХОД',0 +;--------------------------------------------------------------------- +menu_settings_sound_label: + db 'ЗВУКИ',0 +;-------------------------------------- +menu_settings_music_label: + db 'МУЗЫКА',0 +;--------------------------------------------------------------------- +menu_credits_text: + db 'Привет участникам команды KolibriOS Team!',0 + db 'В игре использованы графические и звуковые материалы',0 + db 'под свободными лицензиями, позаимствованные с сайтов:',0 + db 'http://untamed.wild-refuge.net/',0 + db 'http://opengameart.org',0 + db 'https://wiki.themanaworld.org',0 +;--------------------------------------------------------------------- +menu_help_text: + db 'Управление игрой',0 + db 'Перемещение игрока:',0 + db 'WASD, стрелки или Num8462',0 + db 'Удар игрока: "Пробел"',0 +;--------------------------------------------------------------------- diff --git a/programs/games/rstearth/menu.inc b/programs/games/rstearth/menu.inc new file mode 100644 index 0000000000..51215396d5 --- /dev/null +++ b/programs/games/rstearth/menu.inc @@ -0,0 +1,158 @@ +main_menu_start: + mov [main_menu_pointer],0 +.red: + call draw_main_menu_window +;--------------------------------------------------------------------- +.still: + mcall 10 + + cmp eax,1 + je .red + + cmp eax,2 + je .key + + cmp eax,3 + je .button + + jmp .still +;--------------------------------------------------------------------- +.key: + mcall 2 + cmp [extended_key],1 + je .extended_key + + test al,al + jnz .still + + cmp ah,72 ; arrow up + je .arrow_up + + cmp ah,80 ; arrow down + je .arrow_down + + cmp ah,17 ; w - arrow up + je .arrow_up + + cmp ah,31 ; s - arrow down + je .arrow_down + + cmp ah,57 ; space + je .enter_to_point + + cmp ah,28 ; enter + je .enter_to_point + + mov [extended_key],1 + jmp .still +;--------------------------------------------------------------------- +.extended_key: + mov [extended_key],0 + cmp ah,72 ; arrow up + je .arrow_up + + cmp ah,80 ; arrow down + je .arrow_down + + jmp .still +;--------------------------------------------------------------------- +.arrow_up: + cmp [main_menu_pointer],0 + je .still + + call clear_old_pointer + dec [main_menu_pointer] + call draw_new_pointer + jmp .still +;--------------------------------------------------------------------- +.arrow_down: + cmp [main_menu_pointer],4 + je .still + + call clear_old_pointer + inc [main_menu_pointer] + call draw_new_pointer + jmp .still +;--------------------------------------------------------------------- +.enter_to_point: + cmp [main_menu_pointer],0 + je start_level_0 + + cmp [main_menu_pointer],4 + je button.exit + + jmp .still +;--------------------------------------------------------------------- +.button: + mcall 17 + + cmp ah,1 + jne .still + + jmp button.exit +;--------------------------------------------------------------------- +clear_old_pointer: + movzx ecx,byte [main_menu_pointer] + imul ecx,SPRITE_SIZE_Y + add ecx,SPRITE_SIZE_Y*2 + 32 + shl ecx,16 + mov cx,SPRITE_SIZE_Y + mcall 13,,,0 + ret +;--------------------------------------------------------------------- +draw_new_pointer: +; movzx ecx,byte [main_menu_pointer] +; imul ecx,SPRITE_SIZE_Y +; add ecx,SPRITE_SIZE_Y*2 +; shl ecx,16 +; mov cx,SPRITE_SIZE_Y +; mcall 13,,,0xff0000 + + mov eax,[npc_miku_icons] + mov ebp,SPRITE_SIZE_X*SPRITE_SIZE_Y*12 + call copy_base_8bpp + + movzx edx,byte [main_menu_pointer] + imul edx,SPRITE_SIZE_Y + add edx,SPRITE_SIZE_Y*2 + 32 + add edx,SPRITE_SIZE_X*2 shl 16 + + xor ebp,ebp + mcall 65,buffer_area,,,32 + ret +;--------------------------------------------------------------------- +draw_main_menu_window: + mcall 12,1 + mcall 48,4 + mov ecx,100 shl 16 + 644 + add cx,ax + mcall 0,<100,649>,,0x74AABBCC,,title + + call clear_screen + + mov eax,4 + mov ebx,SPRITE_SIZE_X*3 shl 16 + SPRITE_SIZE_Y*3 + mov ecx,0x90ffffff + mov esi,main_menu_text_pointers +;-------------------------------------- +@@: + mov edx,[esi] + test edx,edx + jz .end + + mcall + add ebx,SPRITE_SIZE_Y + add esi,4 + jmp @b +;-------------------------------------- +.end: + call draw_new_pointer + + mcall 12,2 + ret +;--------------------------------------------------------------------- +clear_screen: + xor edx,edx + mcall 13,<0,SPRITE_SIZE_X*LEVEL_MAP_SIZE_X>,<0,SPRITE_SIZE_Y*LEVEL_MAP_SIZE_Y> + ret +;--------------------------------------------------------------------- \ No newline at end of file diff --git a/programs/games/rstearth/rstearth.asm b/programs/games/rstearth/rstearth.asm index 9814ea5bf9..b1a6895d21 100644 --- a/programs/games/rstearth/rstearth.asm +++ b/programs/games/rstearth/rstearth.asm @@ -100,6 +100,9 @@ load_libraries l_libs_start,end_l_libs mcall 51,1,snd_background_music_thread_start,snd_background_music_thread_stack ;--------------------------------------------------------------------- +menu_still: + jmp main_menu_start +;--------------------------------------------------------------------- start_level_0: mov [death_of_protagonist],0 mov [protagonist_route],2 @@ -201,6 +204,13 @@ include 'actions_white_bricks.inc' include 'random.inc' include 'snd_api.inc' include 'sound.inc' +include 'menu.inc' +;--------------------------------------------------------------------- +if lang eq ru + include 'localization_rus.inc' +else + include 'localization_eng.inc' +end if ;--------------------------------------------------------------------- include 'i_data.inc' include 'levels.inc' diff --git a/programs/games/rstearth/u_data.inc b/programs/games/rstearth/u_data.inc index f22dc8ca24..babf425542 100644 --- a/programs/games/rstearth/u_data.inc +++ b/programs/games/rstearth/u_data.inc @@ -8,6 +8,7 @@ death_of_protagonist rb 1 target_detected rb 1 sound_flag rb 1 snd_kick_flag rb 1 +main_menu_pointer rb 1 ;--------------------------------------------------------------------- align 4 N_error rd 1