2010-06-07 02:23:58 +00:00
# include "stdafx.h"
2022-09-26 02:31:54 +00:00
2015-10-25 10:50:28 +00:00
# include <Common/path.h>
2022-09-26 02:31:54 +00:00
# include <stdint.h>
# include <stdio.h>
2008-09-18 03:15:49 +00:00
2021-04-12 11:35:39 +00:00
CLanguage * g_Lang = nullptr ;
2008-09-18 03:15:49 +00:00
2015-11-14 00:16:03 +00:00
void CLanguage : : LoadDefaultStrings ( void )
2012-11-19 11:05:30 +00:00
{
2022-09-26 02:31:54 +00:00
# define DEF_STR(ID, str) m_DefaultStrings.insert(LANG_STRINGS::value_type(ID, str))
2008-09-18 03:15:49 +00:00
2015-12-23 20:04:36 +00:00
DEF_STR ( EMPTY_STRING , " " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Meta information
2015-12-23 20:04:36 +00:00
DEF_STR ( LANGUAGE_NAME , " " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Numbers
2015-12-23 20:04:36 +00:00
DEF_STR ( NUMBER_0 , " 0 " ) ;
DEF_STR ( NUMBER_1 , " 1 " ) ;
DEF_STR ( NUMBER_2 , " 2 " ) ;
DEF_STR ( NUMBER_3 , " 3 " ) ;
DEF_STR ( NUMBER_4 , " 4 " ) ;
DEF_STR ( NUMBER_5 , " 5 " ) ;
DEF_STR ( NUMBER_6 , " 6 " ) ;
DEF_STR ( NUMBER_7 , " 7 " ) ;
DEF_STR ( NUMBER_8 , " 8 " ) ;
DEF_STR ( NUMBER_9 , " 9 " ) ;
2015-10-25 10:50:28 +00:00
2021-05-25 23:00:54 +00:00
/*** Menu ***/
2021-04-02 08:15:37 +00:00
// File menu
2015-12-23 20:04:36 +00:00
DEF_STR ( MENU_FILE , " &File " ) ;
DEF_STR ( MENU_OPEN , " &Open ROM " ) ;
2021-05-25 23:00:54 +00:00
DEF_STR ( MENU_ROM_INFO , " ROM &Info... " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( MENU_START , " Start Emulation " ) ;
DEF_STR ( MENU_END , " &End Emulation " ) ;
DEF_STR ( MENU_CHOOSE_ROM , " Choose ROM Directory... " ) ;
DEF_STR ( MENU_REFRESH , " Refresh ROM List " ) ;
DEF_STR ( MENU_RECENT_ROM , " Recent ROM " ) ;
DEF_STR ( MENU_RECENT_DIR , " Recent ROM Directories " ) ;
DEF_STR ( MENU_EXIT , " E&xit " ) ;
2019-08-22 11:44:30 +00:00
DEF_STR ( MENU_OPEN_COMBO , " Open &Combo " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// System menu
2015-12-23 20:04:36 +00:00
DEF_STR ( MENU_SYSTEM , " &System " ) ;
DEF_STR ( MENU_RESET , " &Reset " ) ;
DEF_STR ( MENU_PAUSE , " &Pause " ) ;
2021-05-25 23:00:54 +00:00
DEF_STR ( MENU_BITMAP , " Capture screenshot " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( MENU_LIMIT_FPS , " Limit FPS " ) ;
DEF_STR ( MENU_SAVE , " &Save State " ) ;
DEF_STR ( MENU_SAVE_AS , " Save As... " ) ;
DEF_STR ( MENU_RESTORE , " &Load State " ) ;
DEF_STR ( MENU_LOAD , " Load... " ) ;
2021-05-25 23:00:54 +00:00
DEF_STR ( MENU_CURRENT_SAVE , " Current Saves&tate " ) ;
DEF_STR ( MENU_CHEAT , " &Cheats... " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( MENU_GS_BUTTON , " GS Button " ) ;
DEF_STR ( MENU_RESUME , " R&esume " ) ;
DEF_STR ( MENU_RESET_SOFT , " &Soft Reset " ) ;
DEF_STR ( MENU_RESET_HARD , " &Hard Reset " ) ;
2016-05-25 12:41:15 +00:00
DEF_STR ( MENU_SWAPDISK , " Swap &Disk " ) ;
2021-05-25 23:00:54 +00:00
DEF_STR ( MENU_ENHANCEMENT , " &Enhancements... " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Options menu
2015-12-23 20:04:36 +00:00
DEF_STR ( MENU_OPTIONS , " &Options " ) ;
2021-05-25 23:00:54 +00:00
DEF_STR ( MENU_FULL_SCREEN , " &Fullscreen " ) ;
DEF_STR ( MENU_ON_TOP , " &Always on &top " ) ;
2021-05-26 08:29:51 +00:00
DEF_STR ( MENU_CONFG_GFX , " &Graphic Settings " ) ;
DEF_STR ( MENU_CONFG_AUDIO , " &Audio Settings " ) ;
DEF_STR ( MENU_CONFG_CTRL , " &Input Settings " ) ;
DEF_STR ( MENU_CONFG_RSP , " &RSP Settings " ) ;
2021-05-25 23:00:54 +00:00
DEF_STR ( MENU_SHOW_CPU , " Show CPU &Stats " ) ;
DEF_STR ( MENU_SETTINGS , " Configura&tion " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Debugger menu
2015-12-23 20:04:36 +00:00
DEF_STR ( MENU_DEBUGGER , " &Debugger " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Language menu
2015-12-23 20:04:36 +00:00
DEF_STR ( MENU_LANGUAGE , " &Language " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Help menu
2015-12-23 20:04:36 +00:00
DEF_STR ( MENU_HELP , " &Help " ) ;
DEF_STR ( MENU_ABOUT_PJ64 , " &About Project64 " ) ;
2020-11-09 03:04:06 +00:00
DEF_STR ( MENU_WEBSITE , " &Website " ) ;
2020-11-09 03:49:05 +00:00
DEF_STR ( MENU_SUPPORT_PROJECT64 , " &Support Project64 " ) ;
DEF_STR ( MENU_DISCORD , " &Discord " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Current save slot menu
2015-12-23 20:04:36 +00:00
DEF_STR ( MENU_SLOT_DEFAULT , " Default " ) ;
DEF_STR ( MENU_SLOT_1 , " Slot 1 " ) ;
DEF_STR ( MENU_SLOT_2 , " Slot 2 " ) ;
DEF_STR ( MENU_SLOT_3 , " Slot 3 " ) ;
DEF_STR ( MENU_SLOT_4 , " Slot 4 " ) ;
DEF_STR ( MENU_SLOT_5 , " Slot 5 " ) ;
DEF_STR ( MENU_SLOT_6 , " Slot 6 " ) ;
DEF_STR ( MENU_SLOT_7 , " Slot 7 " ) ;
DEF_STR ( MENU_SLOT_8 , " Slot 8 " ) ;
DEF_STR ( MENU_SLOT_9 , " Slot 9 " ) ;
DEF_STR ( MENU_SLOT_10 , " Slot 10 " ) ;
DEF_STR ( MENU_SLOT_SAVE , " Save slot (%s) selected " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Pop-up menu
2015-12-23 20:04:36 +00:00
DEF_STR ( POPUP_PLAY , " Play Game " ) ;
DEF_STR ( POPUP_INFO , " ROM Information " ) ;
DEF_STR ( POPUP_SETTINGS , " Edit Game Settings " ) ;
DEF_STR ( POPUP_CHEATS , " Edit Cheats " ) ;
DEF_STR ( POPUP_GFX_PLUGIN , " Graphics Plugin " ) ;
2021-05-26 08:29:51 +00:00
DEF_STR ( POPUP_PLAYDISK , " Play Game with Disk " ) ;
2022-09-26 02:31:54 +00:00
DEF_STR ( POPUP_ENHANCEMENTS , " Pick Enhancements " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Alternate name to save slot
2015-12-23 20:04:36 +00:00
DEF_STR ( SAVE_SLOT_DEFAULT , " Save Slot - Default " ) ;
DEF_STR ( SAVE_SLOT_1 , " Save Slot - 1 " ) ;
DEF_STR ( SAVE_SLOT_2 , " Save Slot - 2 " ) ;
DEF_STR ( SAVE_SLOT_3 , " Save Slot - 3 " ) ;
DEF_STR ( SAVE_SLOT_4 , " Save Slot - 4 " ) ;
DEF_STR ( SAVE_SLOT_5 , " Save Slot - 5 " ) ;
DEF_STR ( SAVE_SLOT_6 , " Save Slot - 6 " ) ;
DEF_STR ( SAVE_SLOT_7 , " Save Slot - 7 " ) ;
DEF_STR ( SAVE_SLOT_8 , " Save Slot - 8 " ) ;
DEF_STR ( SAVE_SLOT_9 , " Save Slot - 9 " ) ;
DEF_STR ( SAVE_SLOT_10 , " Save Slot - 10 " ) ;
2015-10-25 10:50:28 +00:00
2021-05-25 23:00:54 +00:00
/*** ROM browser ***/
2021-04-02 08:15:37 +00:00
// ROM browser fields
2015-12-23 20:04:36 +00:00
DEF_STR ( RB_FILENAME , " File Name " ) ;
DEF_STR ( RB_INTERNALNAME , " Internal Name " ) ;
DEF_STR ( RB_GOODNAME , " Good Name " ) ;
DEF_STR ( RB_STATUS , " Status " ) ;
DEF_STR ( RB_ROMSIZE , " ROM Size " ) ;
DEF_STR ( RB_NOTES_CORE , " Notes (core) " ) ;
DEF_STR ( RB_NOTES_PLUGIN , " Notes (default plugins) " ) ;
DEF_STR ( RB_NOTES_USER , " Notes (user) " ) ;
DEF_STR ( RB_CART_ID , " Cartridge ID " ) ;
2021-05-25 23:00:54 +00:00
DEF_STR ( RB_MEDIA , " Media Type " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( RB_COUNTRY , " Country " ) ;
DEF_STR ( RB_DEVELOPER , " Developer " ) ;
DEF_STR ( RB_CRC1 , " CRC1 " ) ;
DEF_STR ( RB_CRC2 , " CRC2 " ) ;
DEF_STR ( RB_CICCHIP , " CIC Chip " ) ;
DEF_STR ( RB_RELEASE_DATE , " Release Date " ) ;
DEF_STR ( RB_GENRE , " Genre " ) ;
DEF_STR ( RB_PLAYERS , " Players " ) ;
DEF_STR ( RB_FORCE_FEEDBACK , " Force Feedback " ) ;
DEF_STR ( RB_FILE_FORMAT , " File Format " ) ;
2021-05-25 23:00:54 +00:00
DEF_STR ( RB_NAME , " Name " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Select ROM
2015-12-23 20:04:36 +00:00
DEF_STR ( SELECT_ROM_DIR , " Select current ROM directory " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Messages (TODO: GoodN64 is no longer maintained and perhaps should be replaced with references to something else?)
2015-12-23 20:04:36 +00:00
DEF_STR ( RB_NOT_GOOD_FILE , " Bad ROM? Use GoodN64 & check that the RDB is up-to-date. " ) ;
2015-10-25 10:50:28 +00:00
2021-05-25 23:00:54 +00:00
/*** Options ***/
2021-04-02 08:15:37 +00:00
// Options title
2021-05-25 23:00:54 +00:00
DEF_STR ( OPTIONS_TITLE , " Configura&tion " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Tabs
2015-12-23 20:04:36 +00:00
DEF_STR ( TAB_PLUGIN , " Plugins " ) ;
DEF_STR ( TAB_DIRECTORY , " Directories " ) ;
2021-05-25 23:00:54 +00:00
DEF_STR ( TAB_OPTIONS , " General settings " ) ;
DEF_STR ( TAB_ROMSELECTION , " ROM browser " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( TAB_ADVANCED , " Advanced " ) ;
2021-05-25 23:00:54 +00:00
DEF_STR ( TAB_ROMSETTINGS , " ROM settings " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( TAB_ROMNOTES , " Notes " ) ;
2021-05-25 23:00:54 +00:00
DEF_STR ( TAB_SHORTCUTS , " Hotkeys " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( TAB_ROMSTATUS , " Status " ) ;
DEF_STR ( TAB_RECOMPILER , " Recompiler " ) ;
2018-11-25 09:44:15 +00:00
DEF_STR ( TAB_DEFAULTS , " Defaults " ) ;
2019-08-12 17:55:10 +00:00
DEF_STR ( TAB_DISKDRIVE , " 64DD " ) ;
2021-01-29 22:37:27 +00:00
DEF_STR ( TAB_DISKSETTINGS , " 64DD " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Plugin dialog
2015-12-23 20:04:36 +00:00
DEF_STR ( PLUG_ABOUT , " About " ) ;
DEF_STR ( PLUG_RSP , " RSP (Reality Signal Processor) plugin: " ) ;
DEF_STR ( PLUG_GFX , " Video (graphics) plugin: " ) ;
DEF_STR ( PLUG_AUDIO , " Audio (sound) plugin: " ) ;
DEF_STR ( PLUG_CTRL , " Input (controller) plugin: " ) ;
DEF_STR ( PLUG_HLE_GFX , " Graphics HLE " ) ;
DEF_STR ( PLUG_HLE_AUDIO , " Audio HLE " ) ;
DEF_STR ( PLUG_DEFAULT , " ** Use System Plugin ** " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Directory dialog
2015-12-23 20:04:36 +00:00
DEF_STR ( DIR_PLUGIN , " Plugin directory: " ) ;
DEF_STR ( DIR_ROM , " ROM directory: " ) ;
DEF_STR ( DIR_AUTO_SAVE , " N64 native saves directory: " ) ;
DEF_STR ( DIR_INSTANT_SAVE , " Saved states directory: " ) ;
DEF_STR ( DIR_SCREEN_SHOT , " Screenshot directory: " ) ;
DEF_STR ( DIR_ROM_DEFAULT , " Last folder that a ROM was open from " ) ;
DEF_STR ( DIR_SELECT_PLUGIN , " Select plugin directory " ) ;
DEF_STR ( DIR_SELECT_ROM , " Select ROM directory " ) ;
DEF_STR ( DIR_SELECT_AUTO , " Select N64 native saves directory " ) ;
DEF_STR ( DIR_SELECT_INSTANT , " Select saved states directory " ) ;
DEF_STR ( DIR_SELECT_SCREEN , " Select screenshot directory " ) ;
DEF_STR ( DIR_TEXTURE , " Texture pack directory: " ) ;
DEF_STR ( DIR_SELECT_TEXTURE , " Select texture pack directory " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Options (general) tab
2015-12-23 20:04:36 +00:00
DEF_STR ( OPTION_AUTO_SLEEP , " Pause emulation when window is not active " ) ;
DEF_STR ( OPTION_AUTO_FULLSCREEN , " Enter full-screen mode when loading a ROM " ) ;
DEF_STR ( OPTION_BASIC_MODE , " Hide advanced settings " ) ;
DEF_STR ( OPTION_REMEMBER_CHEAT , " Remember selected cheats " ) ;
2021-05-26 08:29:51 +00:00
DEF_STR ( OPTION_DISABLE_SS , " Disable screensaver when running a ROM " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( OPTION_DISPLAY_FR , " Display speed " ) ;
DEF_STR ( OPTION_CHECK_RUNNING , " Check if Project64 is already running " ) ;
2021-05-26 08:29:51 +00:00
DEF_STR ( OPTION_UNIQUE_SAVE_DIR , " Store game saves in separate folders " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( OPTION_CHANGE_FR , " Speed display: " ) ;
2021-05-26 08:29:51 +00:00
DEF_STR ( OPTION_IPL_ROM_PATH , " Japanese retail 64DD IPL ROM path: " ) ;
DEF_STR ( OPTION_IPL_ROM_USA_PATH , " American retail 64DD IPL ROM path: " ) ;
DEF_STR ( OPTION_IPL_ROM_TOOL_PATH , " Development 64DD IPL ROM path: " ) ;
DEF_STR ( OPTION_DISKSAVETYPE , " Disk save type: " ) ;
DEF_STR ( OPTION_ENABLE_ENHANCEMENTS , " Enable enhancements " ) ;
DEF_STR ( OPTION_SHOW_STATUS_BAR , " Show status bar " ) ;
DEF_STR ( OPTION_EXIT_FULLSCREEN_ON_LOSE_FOCUS , " Exit fullscreen on lose focus " ) ;
2021-05-26 20:26:18 +00:00
DEF_STR ( OPTION_DISCORD_RPC , " Enable Discord Rich Presence " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// ROM browser tab
2015-12-23 20:04:36 +00:00
DEF_STR ( RB_MAX_ROMS , " Max # of ROMs remembered (0-10): " ) ;
DEF_STR ( RB_ROMS , " ROMs " ) ;
DEF_STR ( RB_MAX_DIRS , " Max # of ROM dirs remembered (0-10): " ) ;
DEF_STR ( RB_DIRS , " dirs " ) ;
DEF_STR ( RB_USE , " Use ROM browser " ) ;
DEF_STR ( RB_DIR_RECURSION , " Use directory recursion " ) ;
2018-12-28 11:47:09 +00:00
DEF_STR ( RB_FILEEXT , " Show file extensions " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( RB_AVALIABLE_FIELDS , " Available fields: " ) ;
DEF_STR ( RB_SHOW_FIELDS , " Order of fields: " ) ;
DEF_STR ( RB_ADD , " Add -> " ) ;
DEF_STR ( RB_REMOVE , " <- Remove " ) ;
DEF_STR ( RB_UP , " Up " ) ;
DEF_STR ( RB_DOWN , " Down " ) ;
DEF_STR ( RB_REFRESH , " Automatically refresh browser " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Advanced options
2015-12-23 20:04:36 +00:00
DEF_STR ( ADVANCE_INFO , " Most of these changes will not take effect until a new ROM is opened or current ROM is reset. " ) ;
DEF_STR ( ADVANCE_DEFAULTS , " Core Defaults " ) ;
DEF_STR ( ADVANCE_CPU_STYLE , " CPU core style: " ) ;
DEF_STR ( ADVANCE_SMCM , " Self-mod methods: " ) ;
DEF_STR ( ADVANCE_MEM_SIZE , " Default memory size: " ) ;
DEF_STR ( ADVANCE_ABL , " Advanced block linking " ) ;
DEF_STR ( ADVANCE_AUTO_START , " Start emulation when ROM is opened " ) ;
DEF_STR ( ADVANCE_OVERWRITE , " Always override default settings with ones from RDB " ) ;
DEF_STR ( ADVANCE_COMPRESS , " Automatically compress saved states " ) ;
DEF_STR ( ADVANCE_DEBUGGER , " Enable debugger " ) ;
DEF_STR ( ADVANCE_SMM_CACHE , " Cache " ) ;
DEF_STR ( ADVANCE_SMM_PIDMA , " PI DMA " ) ;
DEF_STR ( ADVANCE_SMM_VALIDATE , " Start changed " ) ;
DEF_STR ( ADVANCE_SMM_TLB , " TLB unmapping " ) ;
2021-05-26 20:26:18 +00:00
DEF_STR ( ADVANCE_ALWAYS_INTERPRETER , " Always use interpreter core " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// ROM options
2015-12-23 20:04:36 +00:00
DEF_STR ( ROM_CPU_STYLE , " CPU core style: " ) ;
DEF_STR ( ROM_VIREFRESH , " VI refresh rate: " ) ;
DEF_STR ( ROM_MEM_SIZE , " Memory size: " ) ;
DEF_STR ( ROM_ABL , " Advanced block linking " ) ;
DEF_STR ( ROM_SAVE_TYPE , " Default save type: " ) ;
DEF_STR ( ROM_COUNTER_FACTOR , " Counter factor: " ) ;
DEF_STR ( ROM_LARGE_BUFFER , " Larger compile buffer " ) ;
DEF_STR ( ROM_REG_CACHE , " Register caching " ) ;
DEF_STR ( ROM_DELAY_SI , " Delay SI interrupt " ) ;
DEF_STR ( ROM_FAST_SP , " Fast SP " ) ;
DEF_STR ( ROM_DEFAULT , " Default " ) ;
DEF_STR ( ROM_AUDIO_SIGNAL , " RSP audio signal " ) ;
DEF_STR ( ROM_FIXED_AUDIO , " Fixed audio timing " ) ;
DEF_STR ( ROM_FUNC_FIND , " Function lookup method: " ) ;
2021-05-26 08:29:51 +00:00
DEF_STR ( ROM_CUSTOM_SMM , " Custom self-mod Method " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( ROM_SYNC_AUDIO , " Sync using audio " ) ;
DEF_STR ( ROM_COUNTPERBYTE , " AI count per byte: " ) ;
DEF_STR ( ROM_32BIT , " 32-bit engine: " ) ;
DEF_STR ( ROM_DELAY_DP , " Delay DP interrupt: " ) ;
2019-04-20 03:43:30 +00:00
DEF_STR ( ROM_OVER_CLOCK_MODIFIER , " Overclock modifier: " ) ;
2022-12-26 04:45:28 +00:00
DEF_STR ( ROM_UNALIGNED_DMA , " Unaligned DMA " ) ;
2019-10-02 22:18:19 +00:00
DEF_STR ( ROM_RANDOMIZE_SIPI_INTERRUPTS , " Randomize SI/PI interrupts " ) ;
2021-05-26 08:29:51 +00:00
DEF_STR ( ROM_DISK_SEEK_TIMING , " Disk seek timing: " ) ;
2021-01-29 22:37:27 +00:00
DEF_STR ( ROM_DISK_SEEK_TIMING_TURBO , " Turbo " ) ;
DEF_STR ( ROM_DISK_SEEK_TIMING_SLOW , " Slow " ) ;
2023-01-16 10:23:48 +00:00
DEF_STR ( ROM_MEM_SIZE_KNOWN , " Memory size (Known): " ) ;
DEF_STR ( ROM_MEM_SIZE_UNKNOWN , " Memory size (Unknown): " ) ;
2023-04-17 09:17:33 +00:00
DEF_STR ( ROM_FPU_REG_CACHE , " FPU register caching " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Core styles
2015-12-23 20:04:36 +00:00
DEF_STR ( CORE_INTERPTER , " Interpreter " ) ;
DEF_STR ( CORE_RECOMPILER , " Recompiler " ) ;
DEF_STR ( CORE_SYNC , " Synchronize cores " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Self-mod methods
2015-12-23 20:04:36 +00:00
DEF_STR ( SMCM_NONE , " None " ) ;
DEF_STR ( SMCM_CACHE , " Cache " ) ;
DEF_STR ( SMCM_PROECTED , " Protect memory " ) ;
DEF_STR ( SMCM_CHECK_MEM , " Check memory & cache " ) ;
DEF_STR ( SMCM_CHANGE_MEM , " Change memory & cache " ) ;
DEF_STR ( SMCM_CHECK_ADV , " Check memory advance " ) ;
DEF_STR ( SMCM_CACHE2 , " Clear code on cache " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Function lookup method
2015-12-23 20:04:36 +00:00
DEF_STR ( FLM_PLOOKUP , " Physical lookup table " ) ;
DEF_STR ( FLM_VLOOKUP , " Virtual lookup table " ) ;
DEF_STR ( FLM_CHANGEMEM , " Change memory " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// RDRAM size
2015-12-23 20:04:36 +00:00
DEF_STR ( RDRAM_4MB , " 4 MB " ) ;
DEF_STR ( RDRAM_8MB , " 8 MB " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Advanced block linking
2015-12-23 20:04:36 +00:00
DEF_STR ( ABL_ON , " On " ) ;
DEF_STR ( ABL_OFF , " Off " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Save type
2015-12-23 20:04:36 +00:00
DEF_STR ( SAVE_FIRST_USED , " Use first-used save type " ) ;
DEF_STR ( SAVE_4K_EEPROM , " 4-kbit EEPROM " ) ;
DEF_STR ( SAVE_16K_EEPROM , " 16-kbit EEPROM " ) ;
DEF_STR ( SAVE_SRAM , " SRAM " ) ;
DEF_STR ( SAVE_FLASHRAM , " Flash RAM " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// ROM notes
2015-12-23 20:04:36 +00:00
DEF_STR ( NOTE_STATUS , " ROM status: " ) ;
DEF_STR ( NOTE_CORE , " Core note: " ) ;
DEF_STR ( NOTE_PLUGIN , " Plugin note: " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Accelerator selector
2015-12-23 20:04:36 +00:00
DEF_STR ( ACCEL_CPUSTATE_TITLE , " CPU state: " ) ;
DEF_STR ( ACCEL_MENUITEM_TITLE , " Menu item: " ) ;
DEF_STR ( ACCEL_CURRENTKEYS_TITLE , " Current keys: " ) ;
DEF_STR ( ACCEL_SELKEY_TITLE , " Select new shortcut key: " ) ;
DEF_STR ( ACCEL_ASSIGNEDTO_TITLE , " Currently assigned to: " ) ;
DEF_STR ( ACCEL_ASSIGN_BTN , " Assign " ) ;
DEF_STR ( ACCEL_REMOVE_BTN , " Remove " ) ;
DEF_STR ( ACCEL_RESETALL_BTN , " Reset all " ) ;
DEF_STR ( ACCEL_CPUSTATE_1 , " Game not playing " ) ;
DEF_STR ( ACCEL_CPUSTATE_2 , " Game playing " ) ;
DEF_STR ( ACCEL_CPUSTATE_3 , " Game playing (windowed) " ) ;
DEF_STR ( ACCEL_CPUSTATE_4 , " Game playing (full-screen) " ) ;
DEF_STR ( ACCEL_DETECTKEY , " Detect Key " ) ;
2015-10-25 10:50:28 +00:00
2021-05-25 23:00:54 +00:00
// Framerate option
2015-12-23 20:04:36 +00:00
DEF_STR ( STR_FR_VIS , " Vertical interrupts per second " ) ;
DEF_STR ( STR_FR_DLS , " Display lists per second " ) ;
DEF_STR ( STR_FR_PERCENT , " Percentage of full speed " ) ;
2018-12-20 05:38:26 +00:00
DEF_STR ( STR_FR_DLS_VIS , " VI/s & DL/s " ) ;
2015-10-25 10:50:28 +00:00
// Increase speed
2015-12-23 20:04:36 +00:00
DEF_STR ( STR_INSREASE_SPEED , " Increase Game Speed " ) ;
DEF_STR ( STR_DECREASE_SPEED , " Decrease Game Speed " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Bottom page buttons
2015-12-23 20:04:36 +00:00
DEF_STR ( BOTTOM_RESET_PAGE , " Reset Page " ) ;
DEF_STR ( BOTTOM_RESET_ALL , " Reset All " ) ;
DEF_STR ( BOTTOM_APPLY , " Apply " ) ;
DEF_STR ( BOTTOM_CLOSE , " Close " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Disk save type
2019-08-12 21:07:33 +00:00
DEF_STR ( DISKSAVE_SHADOW , " Full Disk Copy " ) ;
DEF_STR ( DISKSAVE_RAM , " Save Area Only " ) ;
2021-05-25 23:00:54 +00:00
/*** ROM information ***/
2021-04-02 08:15:37 +00:00
// ROM info title
2015-12-23 20:04:36 +00:00
DEF_STR ( INFO_TITLE , " ROM Information " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// ROM info text
2015-12-23 20:04:36 +00:00
DEF_STR ( INFO_ROM_NAME_TEXT , " ROM name: " ) ;
DEF_STR ( INFO_FILE_NAME_TEXT , " File name: " ) ;
DEF_STR ( INFO_LOCATION_TEXT , " Location: " ) ;
DEF_STR ( INFO_SIZE_TEXT , " ROM size: " ) ;
DEF_STR ( INFO_CART_ID_TEXT , " Cartridge ID: " ) ;
2021-01-11 00:58:44 +00:00
DEF_STR ( INFO_MEDIA_TEXT , " Media: " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( INFO_COUNTRY_TEXT , " Country: " ) ;
DEF_STR ( INFO_CRC1_TEXT , " CRC1: " ) ;
DEF_STR ( INFO_CRC2_TEXT , " CRC2: " ) ;
DEF_STR ( INFO_CIC_CHIP_TEXT , " CIC chip: " ) ;
DEF_STR ( INFO_MD5_TEXT , " MD5: " ) ;
2015-10-25 10:50:28 +00:00
2021-05-25 23:00:54 +00:00
/*** Cheats ***/
2021-04-02 08:15:37 +00:00
// Cheat list
2015-12-23 20:04:36 +00:00
DEF_STR ( CHEAT_TITLE , " Cheats " ) ;
DEF_STR ( CHEAT_LIST_FRAME , " Cheats: " ) ;
DEF_STR ( CHEAT_NOTES_FRAME , " Notes: " ) ;
DEF_STR ( CHEAT_MARK_ALL , " Mark All " ) ;
DEF_STR ( CHEAT_MARK_NONE , " Unmark All " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Add cheat
2015-12-23 20:04:36 +00:00
DEF_STR ( CHEAT_ADDCHEAT_FRAME , " Add Cheat " ) ;
DEF_STR ( CHEAT_ADDCHEAT_NAME , " Name: " ) ;
DEF_STR ( CHEAT_ADDCHEAT_CODE , " Code: " ) ;
DEF_STR ( CHEAT_ADDCHEAT_INSERT , " Insert " ) ;
DEF_STR ( CHEAT_ADDCHEAT_CLEAR , " Clear " ) ;
DEF_STR ( CHEAT_ADDCHEAT_NOTES , " Cheat Notes: " ) ;
DEF_STR ( CHEAT_ADD_TO_DB , " Add to DB " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Code extension
2015-12-23 20:04:36 +00:00
DEF_STR ( CHEAT_CODE_EXT_TITLE , " Code Extensions " ) ;
DEF_STR ( CHEAT_CODE_EXT_TXT , " Please choose a value to be used for: " ) ;
DEF_STR ( CHEAT_OK , " OK " ) ;
DEF_STR ( CHEAT_CANCEL , " Cancel " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Digital value
2015-12-23 20:04:36 +00:00
DEF_STR ( CHEAT_QUANTITY_TITLE , " Quantity Digit " ) ;
DEF_STR ( CHEAT_CHOOSE_VALUE , " Please choose a value for: " ) ;
DEF_STR ( CHEAT_VALUE , " &Value " ) ;
DEF_STR ( CHEAT_FROM , " from " ) ;
DEF_STR ( CHEAT_TO , " to " ) ;
DEF_STR ( CHEAT_NOTES , " &Notes: " ) ;
DEF_STR ( CHEAT_ADDCHEAT_ADD , " Add Cheat " ) ;
DEF_STR ( CHEAT_ADDCHEAT_NEW , " New Cheat " ) ;
2021-05-26 08:29:51 +00:00
DEF_STR ( CHEAT_ADDCHEAT_CODEDES , " <address> <value>:<old> " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( CHEAT_ADDCHEAT_OPT , " Options: " ) ;
DEF_STR ( CHEAT_ADDCHEAT_OPTDES , " <value> <label> " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Edit cheat
2015-12-23 20:04:36 +00:00
DEF_STR ( CHEAT_EDITCHEAT_WINDOW , " Edit Cheat " ) ;
DEF_STR ( CHEAT_EDITCHEAT_UPDATE , " Update Cheat " ) ;
DEF_STR ( CHEAT_CHANGED_MSG , " Cheat has been changed. \n \n Do you want to update? " ) ;
DEF_STR ( CHEAT_CHANGED_TITLE , " Cheat updated " ) ;
2015-10-25 10:50:28 +00:00
2021-05-18 11:51:36 +00:00
// Cheat pop-up menu
2015-12-23 20:04:36 +00:00
DEF_STR ( CHEAT_ADDNEW , " Add New Cheat... " ) ;
DEF_STR ( CHEAT_EDIT , " Edit " ) ;
DEF_STR ( CHEAT_DELETE , " Delete " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Shortcut editor
DEF_STR ( STR_SHORTCUT_RESET_TITLE , " Reset shortcuts " ) ;
DEF_STR ( STR_SHORTCUT_RESET_TEXT , " Are you sure you want to reset the shortcuts? \n \n This action cannot be undone. " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( STR_SHORTCUT_FILEMENU , " File Menu " ) ;
DEF_STR ( STR_SHORTCUT_SYSTEMMENU , " System Menu " ) ;
DEF_STR ( STR_SHORTCUT_OPTIONS , " Options " ) ;
DEF_STR ( STR_SHORTCUT_SAVESLOT , " Save Slots " ) ;
2015-10-25 10:50:28 +00:00
2021-04-02 08:15:37 +00:00
// Support window
2016-08-11 10:38:45 +00:00
DEF_STR ( MSG_SUPPORT_TITLE , " Support Project64 " ) ;
2021-04-02 08:15:37 +00:00
DEF_STR ( MSG_SUPPORT_INFO , " Project64 is a free and open-source Nintendo 64 emulator. This allows you to play real Nintendo 64 software in much the same way as it would be on the original hardware. \n \n I am sorry about the inconvenience of this prompt, but you are being asked to wait for a few seconds in order to enjoy the result of hundreds of hours of work. \n \n If you can and would like to support Project64 or you have gotten some value out of it then please support Project64 as either a thank you, or if you would like to see removal of this prompt. \n \n If you have supported Project64: " ) ;
2020-10-22 02:11:19 +00:00
DEF_STR ( MSG_SUPPORT_ENTER_CODE , " Enter/Request Notification Code " ) ;
2016-08-11 10:38:45 +00:00
DEF_STR ( MSG_SUPPORT_PROJECT64 , " Support Project64 " ) ;
DEF_STR ( MSG_SUPPORT_CONTINUE , " Continue " ) ;
DEF_STR ( MSG_SUPPORT_ENTER_SUPPORT_CODE , " Please enter the support code " ) ;
2021-04-02 08:15:37 +00:00
DEF_STR ( MSG_SUPPORT_INCORRECT_CODE , " Failed to validate the code \n \n Make sure the code matches the code in the email, which is based on your machine " ) ;
2016-08-11 10:38:45 +00:00
DEF_STR ( MSG_SUPPORT_COMPLETE , " Thank you " ) ;
2020-10-22 02:11:19 +00:00
DEF_STR ( MSG_SUPPORT_ENTER_CODE_TITLE , " Please enter your support code " ) ;
2021-04-02 08:15:37 +00:00
DEF_STR ( MSG_SUPPORT_ENTER_CODE_DESC , " Please enter the code you received in the email. \n \n This email will be sent to the email address used to support Project64. \n \n Please note that the code is will only work for a unique machine. This computer ID is: " ) ;
2016-08-11 10:38:45 +00:00
DEF_STR ( MSG_SUPPORT_OK , " OK " ) ;
DEF_STR ( MSG_SUPPORT_CANCEL , " Cancel " ) ;
2020-10-22 02:11:19 +00:00
DEF_STR ( MSG_SUPPORT_REQUESTCODE_TITLE , " Request Code " ) ;
DEF_STR ( MSG_SUPPORT_REQUESTCODE_SUCCESS , " Code has been sent to your email " ) ;
2021-04-02 08:15:37 +00:00
DEF_STR ( MSG_SUPPORT_REQUESTCODE_FAIL , " Failed to send code, please make sure it is the email you used when you supported Project64 " ) ;
2021-05-25 23:00:54 +00:00
/*** Enhancements ***/
2016-08-11 10:38:45 +00:00
2021-02-02 02:52:47 +00:00
DEF_STR ( ENHANCEMENT_TITLE , " Enhancements " ) ;
2021-05-25 23:00:54 +00:00
/*** Messages ***/
2021-04-02 08:15:37 +00:00
2015-12-23 20:04:36 +00:00
DEF_STR ( MSG_CPU_PAUSED , " *** CPU PAUSED *** " ) ;
DEF_STR ( MSG_CPU_RESUMED , " CPU resumed " ) ;
DEF_STR ( MSG_PERM_LOOP , " In a permanent loop that cannot be exited. \n Emulation will now stop. \n \n Verify ROM and its settings. " ) ;
DEF_STR ( MSG_MEM_ALLOC_ERROR , " Failed to allocate memory " ) ;
2021-04-02 08:15:37 +00:00
DEF_STR ( MSG_FAIL_INIT_GFX , " The default or selected video plugin is missing or invalid. \n \n You need to go into settings and select a video (graphics) plugin. \n Check that you have at least one compatible plugin file in your plugin folder. " ) ;
DEF_STR ( MSG_FAIL_INIT_AUDIO , " The default or selected audio plugin is missing or invalid. \n \n You need to go into settings and select a audio (sound) plugin. \n Check that you have at least one compatible plugin file in your plugin folder. " ) ;
DEF_STR ( MSG_FAIL_INIT_RSP , " The default or selected RSP plugin is missing or invalid. \n \n You need to go into settings and select an RSP (Reality Signal Processor) plugin. \n Check that you have at least one compatible plugin file in your plugin folder. " ) ;
DEF_STR ( MSG_FAIL_INIT_CONTROL , " The default or selected input plugin is missing or invalid. \n \n You need to go into settings and select an input (controller) plugin. \n Check that you have at least one compatible plugin file in your plugin folder. " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( MSG_FAIL_LOAD_PLUGIN , " Failed to load plugin: " ) ;
DEF_STR ( MSG_FAIL_LOAD_WORD , " Failed to load word. \n \n Verify ROM and its settings. " ) ;
DEF_STR ( MSG_FAIL_OPEN_SAVE , " Failed to open save file " ) ;
DEF_STR ( MSG_FAIL_OPEN_EEPROM , " Failed to open EEPROM " ) ;
DEF_STR ( MSG_FAIL_OPEN_FLASH , " Failed to open flash RAM " ) ;
DEF_STR ( MSG_FAIL_OPEN_MEMPAK , " Failed to open mempak " ) ;
DEF_STR ( MSG_FAIL_OPEN_ZIP , " Attempt to open zip file failed. \n \n Probably a corrupt zip file - try unzipping ROM manually. " ) ;
DEF_STR ( MSG_FAIL_OPEN_IMAGE , " Attempt to open file failed. " ) ;
DEF_STR ( MSG_FAIL_ZIP , " Error occurred when trying to open zip file. " ) ;
DEF_STR ( MSG_FAIL_IMAGE , " File loaded does not appear to be a valid N64 ROM. \n \n Verify your ROMs with GoodN64. " ) ;
DEF_STR ( MSG_UNKNOWN_COUNTRY , " Unknown country " ) ;
DEF_STR ( MSG_UNKNOWN_CIC_CHIP , " Unknown CIC chip " ) ;
DEF_STR ( MSG_UNKNOWN_FILE_FORMAT , " Unknown file format " ) ;
DEF_STR ( MSG_UNKNOWN_MEM_ACTION , " Unknown memory action \n \n Emulation stopped " ) ;
DEF_STR ( MSG_UNHANDLED_OP , " Unhandled R4300i opcode at " ) ;
DEF_STR ( MSG_NONMAPPED_SPACE , " Executing from non-mapped space. \n \n Verify ROM and its settings. " ) ;
DEF_STR ( MSG_SAVE_STATE_HEADER , " This saved state does not appear to match the running ROM. \n \n States must be saved & loaded between 100% identical ROMs. \n In particular, the REGION and VERSION need to be the same. \n Loading this state is likely to cause the game and/or emulator to crash. \n \n Are you sure you want to continue loading? " ) ;
2019-03-18 01:04:05 +00:00
DEF_STR ( MSG_MSGBOX_WARNING_TITLE , " Warning " ) ;
DEF_STR ( MSG_MSGBOX_ERROR_TITLE , " Error " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( MSG_PIF2_ERROR , " Copyright sequence not found in LUT. Game will no longer function. " ) ;
DEF_STR ( MSG_PIF2_TITLE , " Copy Protection Failure " ) ;
2021-04-02 08:15:37 +00:00
DEF_STR ( MSG_PLUGIN_CHANGE , " Changing a plugin requires Project64 to reset a running ROM. \n If you don't want to lose your place, answer no and save the current state first. \n \n Change plugins and reset ROM now? " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( MSG_PLUGIN_CHANGE_TITLE , " Change Plugins " ) ;
DEF_STR ( MSG_EMULATION_ENDED , " Emulation ended " ) ;
DEF_STR ( MSG_EMULATION_STARTED , " Emulation started " ) ;
DEF_STR ( MSG_UNABLED_LOAD_STATE , " Unable to load state " ) ;
DEF_STR ( MSG_LOADED_STATE , " Loaded state " ) ;
DEF_STR ( MSG_SAVED_STATE , " Saved current state to " ) ;
DEF_STR ( MSG_SAVE_SLOT , " State slot " ) ;
DEF_STR ( MSG_BYTESWAP , " Byte-swapping image " ) ;
DEF_STR ( MSG_CHOOSE_IMAGE , " Choosing N64 image " ) ;
DEF_STR ( MSG_LOADED , " Loaded " ) ;
DEF_STR ( MSG_LOADING , " Loading image " ) ;
DEF_STR ( MSG_PLUGIN_NOT_INIT , " Cannot open a ROM because plugins have not successfully initialized. " ) ;
DEF_STR ( MSG_DEL_SURE , " Are you sure you really want to delete this? " ) ;
DEF_STR ( MSG_DEL_TITLE , " Delete Cheat " ) ;
DEF_STR ( MSG_CHEAT_NAME_IN_USE , " Cheat name is already in use. " ) ;
DEF_STR ( MSG_MAX_CHEATS , " You have reached the maximum amount of cheats for this ROM. " ) ;
DEF_STR ( MSG_PLUGIN_INIT , " Plugin initializing " ) ;
DEF_STR ( MSG_NO_SHORTCUT_SEL , " You have not selected a virtual key to assign to the menu item. " ) ;
DEF_STR ( MSG_NO_MENUITEM_SEL , " You need to select a menu item to assign this key to. " ) ;
2021-04-02 08:15:37 +00:00
DEF_STR ( MSG_MENUITEM_ASSIGNED , " Shortcut has already been assigned to another menu item. " ) ;
2015-12-23 20:04:36 +00:00
DEF_STR ( MSG_NO_SEL_SHORTCUT , " No shortcut has been selected to be removed. " ) ;
DEF_STR ( MSG_WAITING_FOR_START , " ROM loaded. Waiting for emulation to start. " ) ;
DEF_STR ( MSG_INVALID_EXE , " Project64 beta versions are for members only. \n \n If you have an account at www.pj64-emu.com, you should not be seeing this error!! \n Please contact us on the site. " ) ;
DEF_STR ( MSG_INVALID_EXE_TITLE , " Program Error " ) ;
DEF_STR ( MSG_7Z_FILE_NOT_FOUND , " Failed to find filename in 7z file " ) ;
DEF_STR ( MSG_SET_LLE_GFX_TITLE , " Graphics Low-Level Emulation " ) ;
DEF_STR ( MSG_SET_LLE_GFX_MSG , " Graphics LLE is not for general use!!! \n It is advisable that you only use this for testing and not for playing games. \n \n Change to graphics LLE? " ) ;
DEF_STR ( MSG_SET_HLE_AUD_TITLE , " Audio High-Level Emulation " ) ;
DEF_STR ( MSG_SET_HLE_AUD_MSG , " Audio HLE requires a third-party plugin!!! \n If you do not use a third-party audio plugin that supports HLE, you will hear no sound. \n \n Change to audio HLE? " ) ;
2019-01-27 11:52:22 +00:00
DEF_STR ( MSG_FAIL_IMAGE_IPL , " File loaded does not appear to be a valid 64DD IPL ROM. \n \n Verify your ROMs with GoodN64. " ) ;
2021-04-02 08:15:37 +00:00
DEF_STR ( MSG_IPL_REQUIRED , " Nintendo 64DD Japanese retail IPL ROM not found. \n It is required to play Japanese region 64DD disk images. \n \n Please select the required ROM in the settings. " ) ;
DEF_STR ( MSG_USA_IPL_REQUIRED , " Nintendo 64DD American retail IPL ROM not found. \n It is required to play American region 64DD disk images. \n \n Please select the required ROM in the settings. " ) ;
DEF_STR ( MSG_TOOL_IPL_REQUIRED , " Nintendo 64DD development IPL ROM not found. \n It is required to play development 64DD disk images. \n \n Please select the required ROM in the settings. " ) ;
2021-01-17 05:45:26 +00:00
DEF_STR ( MSG_CHEAT_INVALID_MSG , " Failed to update cheat, it is invalid " ) ;
DEF_STR ( MSG_CHEAT_INVALID_TITLE , " Invalid Cheat " ) ;
2023-02-13 01:34:31 +00:00
DEF_STR ( MSG_ROM_FAILED_READ_IDENT , " Failed to read ident bytes " ) ;
DEF_STR ( MSG_ROM_INVALID_IMAGE_FILE , " Invalid image file " ) ;
DEF_STR ( MSG_ROM_FAILED_ROM_ALLOCATE , " Failed to allocate for rom " ) ;
DEF_STR ( MSG_ROM_FAILED_TO_OPEN , " Failed to open rom " ) ;
2016-12-20 07:55:28 +00:00
2021-05-25 23:00:54 +00:00
/*** Android ***/
2021-04-02 08:15:37 +00:00
2016-12-20 07:55:28 +00:00
DEF_STR ( ANDROID_SETTINGS , " Settings " ) ;
DEF_STR ( ANDROID_FORUM , " Help/Forum " ) ;
DEF_STR ( ANDROID_REPORT_BUG , " Report Issue " ) ;
DEF_STR ( ANDROID_ABOUT , " About " ) ;
DEF_STR ( ANDROID_GALLERY_RECENTLYPLAYED , " Recently played " ) ;
DEF_STR ( ANDROID_GALLERY_LIBRARY , " Games " ) ;
DEF_STR ( ANDROID_GAMEDIR , " Game Dir " ) ;
2021-04-02 08:15:37 +00:00
DEF_STR ( ANDROID_SELECTDIR , " Select a folder to scan " ) ;
2016-12-20 07:55:28 +00:00
DEF_STR ( ANDROID_INCLUDE_SUBDIRECTORIES , " Include subdirectories " ) ;
DEF_STR ( ANDROID_PARENTFOLDER , " Parent folder " ) ;
DEF_STR ( ANDROID_DIRECTORIES , " Directories " ) ;
DEF_STR ( ANDROID_INTERNAL_MEMORY , " Internal memory " ) ;
DEF_STR ( ANDROID_TITLE , " Scanning... " ) ;
DEF_STR ( ANDROID_OK , " OK " ) ;
DEF_STR ( ANDROID_CANCEL , " Cancel " ) ;
DEF_STR ( ANDROID_ABOUT_INFO , " Information " ) ;
DEF_STR ( ANDROID_ABOUT_APP_NAME , " Project64 for Android " ) ;
DEF_STR ( ANDROID_ABOUT_LICENCE , " License " ) ;
DEF_STR ( ANDROID_ABOUT_REVISION , " Revision " ) ;
2021-04-02 08:15:37 +00:00
DEF_STR ( ANDROID_ABOUT_TEXT , " Project64 for Android \u2122 is a port of the Windows version of Project64.The Android \u2122 version can play most N64 games. " ) ;
2016-12-20 07:55:28 +00:00
DEF_STR ( ANDROID_ABOUT_PJ64_AUTHORS , " Project64 Authors. " ) ;
2021-05-26 08:29:51 +00:00
DEF_STR ( ANDROID_DISCORD , " Discord " ) ;
DEF_STR ( ANDROID_SUPPORT_PJ64 , " Support Project64 " ) ;
DEF_STR ( ANDROID_REVIEW_PJ64 , " Review Project64 " ) ;
2016-12-20 07:55:28 +00:00
2021-04-02 08:15:37 +00:00
// In-game menu
2016-12-20 07:55:28 +00:00
DEF_STR ( ANDROID_MENU_SETTINGS , " Settings " ) ;
DEF_STR ( ANDROID_MENU_SAVESTATE , " Save State " ) ;
DEF_STR ( ANDROID_MENU_LOADSTATE , " Load State " ) ;
DEF_STR ( ANDROID_MENU_ENDEMULATION , " End Emulation " ) ;
DEF_STR ( ANDROID_MENU_PAUSE , " Pause " ) ;
DEF_STR ( ANDROID_MENU_RESUME , " Resume " ) ;
DEF_STR ( ANDROID_MENU_GAMESPEED , " Game Speed " ) ;
DEF_STR ( ANDROID_MENU_CURRENTSAVESTATE , " Current Save State... " ) ;
DEF_STR ( ANDROID_MENU_CURRENTSAVEAUTO , " Auto " ) ;
DEF_STR ( ANDROID_MENU_CURRENTSAVESLOT , " Slot " ) ;
DEF_STR ( ANDROID_MENU_CONSOLERESET , " Reset " ) ;
DEF_STR ( ANDROID_MENU_DEBUGGINGOPTIONS , " Debugging Options " ) ;
DEF_STR ( ANDROID_MENU_RESETFUNCTIONTIMES , " Reset Function Times " ) ;
DEF_STR ( ANDROID_MENU_DUMPFUNCTIONTIMES , " Dump Function Times " ) ;
2017-02-08 19:08:06 +00:00
2021-04-02 08:15:37 +00:00
// Video plugin
2017-02-08 19:08:06 +00:00
DEF_STR ( ANDROID_VIDEO_NATIVE_RES , " Native " ) ;
2008-09-18 03:15:49 +00:00
}
CLanguage : : CLanguage ( ) :
2016-06-04 09:07:20 +00:00
m_emptyString ( " " ) ,
m_LanguageLoaded ( false )
2008-09-18 03:15:49 +00:00
{
2015-10-25 19:20:23 +00:00
LoadDefaultStrings ( ) ;
2015-11-14 00:16:03 +00:00
if ( g_Settings )
{
2015-12-23 20:04:36 +00:00
m_SelectedLanguage = g_Settings - > LoadStringVal ( Setting_CurrentLanguage ) ;
2016-12-20 07:55:28 +00:00
g_Settings - > RegisterChangeCB ( Debugger_DebugLanguage , this , ( CSettings : : SettingChangedFunc ) StaticResetStrings ) ;
}
}
CLanguage : : ~ CLanguage ( )
{
if ( g_Settings )
{
g_Settings - > UnregisterChangeCB ( Debugger_DebugLanguage , this , ( CSettings : : SettingChangedFunc ) StaticResetStrings ) ;
2015-11-14 00:16:03 +00:00
}
2008-09-18 03:15:49 +00:00
}
2015-11-14 00:16:03 +00:00
bool CLanguage : : LoadCurrentStrings ( void )
2008-09-18 03:15:49 +00:00
{
2021-04-02 08:15:37 +00:00
// Clear all the current strings loaded
2015-10-25 10:50:28 +00:00
m_CurrentStrings . clear ( ) ;
2008-09-18 03:15:49 +00:00
2016-06-04 09:07:20 +00:00
if ( g_Settings - > LoadBool ( Debugger_DebugLanguage ) )
{
m_LanguageLoaded = true ;
return true ;
}
2016-08-10 10:03:25 +00:00
2016-06-04 09:07:20 +00:00
LanguageList LangList = GetLangList ( ) ;
2016-12-20 07:55:28 +00:00
stdstr Filename ;
2016-06-04 09:07:20 +00:00
2021-04-02 08:15:37 +00:00
// Find the file name of the current language
2015-10-25 10:50:28 +00:00
for ( LanguageList : : iterator Language = LangList . begin ( ) ; Language ! = LangList . end ( ) ; Language + + )
2015-03-04 09:36:08 +00:00
{
2015-10-25 10:50:28 +00:00
if ( g_Lang - > IsCurrentLang ( * Language ) )
{
Filename = Language - > Filename ;
break ;
}
}
2008-09-18 03:15:49 +00:00
2015-10-25 10:50:28 +00:00
if ( Filename . length ( ) = = 0 )
{
2015-10-25 19:20:23 +00:00
return false ;
2015-10-25 10:50:28 +00:00
}
2008-09-18 03:15:49 +00:00
2021-04-02 08:15:37 +00:00
// Process the file
2022-09-26 02:31:54 +00:00
FILE * file = fopen ( Filename . c_str ( ) , " rb " ) ;
2021-04-12 11:35:39 +00:00
if ( file = = nullptr )
2015-10-25 10:50:28 +00:00
{
2015-10-25 19:20:23 +00:00
return false ;
2015-10-25 10:50:28 +00:00
}
2021-04-02 08:15:37 +00:00
// Search for UTF8 file marker
2015-10-25 10:50:28 +00:00
uint8_t utf_bom [ 3 ] ;
2015-11-14 00:16:03 +00:00
if ( fread ( & utf_bom , sizeof ( utf_bom ) , 1 , file ) ! = 1 | |
2015-10-25 10:50:28 +00:00
utf_bom [ 0 ] ! = 0xEF | |
utf_bom [ 1 ] ! = 0xBB | |
utf_bom [ 2 ] ! = 0xBF )
{
fclose ( file ) ;
2015-10-25 19:20:23 +00:00
return false ;
2015-10-25 10:50:28 +00:00
}
2015-03-10 11:54:12 +00:00
2021-04-02 08:15:37 +00:00
// String
2015-10-25 10:50:28 +00:00
while ( ! feof ( file ) )
{
m_CurrentStrings . insert ( GetNextLangString ( file ) ) ;
}
fclose ( file ) ;
2015-11-14 00:16:03 +00:00
m_LanguageLoaded = true ;
return true ;
2008-09-18 03:15:49 +00:00
}
2015-11-14 00:16:03 +00:00
LanguageList & CLanguage : : GetLangList ( void )
2015-10-25 10:50:28 +00:00
{
if ( m_LanguageList . size ( ) > 0 )
{
return m_LanguageList ;
}
2008-09-18 03:15:49 +00:00
2015-11-14 00:16:03 +00:00
CPath LanguageFiles ( g_Settings - > LoadStringVal ( Setting_LanguageDir ) , " *.pj.Lang " ) ;
2024-09-05 08:24:58 +00:00
LanguageFiles . NormalizePath ( CPath ( CPath : : MODULE_DIRECTORY , " " ) ) ;
2015-10-25 10:50:28 +00:00
if ( LanguageFiles . FindFirst ( ) )
{
do
{
2021-04-02 08:15:37 +00:00
LanguageFile File ; // We temporally store the values in here to add to the list
2015-10-25 10:50:28 +00:00
2016-01-13 07:23:22 +00:00
File . Filename = ( const std : : string & ) LanguageFiles ;
2015-11-14 00:16:03 +00:00
File . LanguageName = GetLangString ( LanguageFiles , LANGUAGE_NAME ) ;
2015-10-25 10:50:28 +00:00
if ( File . LanguageName . length ( ) = = 0 )
{
continue ;
}
2021-04-02 08:15:37 +00:00
// Get the name of the language from inside the file
2015-10-25 10:50:28 +00:00
m_LanguageList . push_back ( File ) ;
} while ( LanguageFiles . FindNext ( ) ) ;
}
return m_LanguageList ;
2008-09-18 03:15:49 +00:00
}
2015-12-23 20:04:36 +00:00
const std : : string & CLanguage : : GetString ( LanguageStringID StringID )
2015-10-25 10:50:28 +00:00
{
LANG_STRINGS : : iterator CurrentString = m_CurrentStrings . find ( StringID ) ;
if ( CurrentString ! = m_CurrentStrings . end ( ) )
{
return CurrentString - > second ;
}
2008-09-18 03:15:49 +00:00
2016-06-04 09:07:20 +00:00
if ( g_Settings - > LoadBool ( Debugger_DebugLanguage ) )
{
std : : pair < LANG_STRINGS : : iterator , bool > ret = m_CurrentStrings . insert ( LANG_STRINGS : : value_type ( StringID , stdstr_f ( " #%d# " , StringID ) ) ) ;
if ( ret . second )
{
return ret . first - > second ;
}
}
2015-10-25 10:50:28 +00:00
LANG_STRINGS : : iterator DefString = m_DefaultStrings . find ( StringID ) ;
if ( DefString ! = m_DefaultStrings . end ( ) )
{
return DefString - > second ;
}
2008-09-18 03:15:49 +00:00
# ifdef _DEBUG
2015-12-09 11:37:58 +00:00
g_Notify - > BreakPoint ( __FILE__ , __LINE__ ) ;
2015-10-25 10:50:28 +00:00
# endif
return m_emptyString ;
2008-09-18 03:15:49 +00:00
}
2015-12-23 20:04:36 +00:00
std : : string CLanguage : : GetLangString ( const char * FileName , LanguageStringID ID )
2012-11-19 11:05:30 +00:00
{
2022-09-26 02:31:54 +00:00
FILE * file = fopen ( FileName , " rb " ) ;
2021-04-12 11:35:39 +00:00
if ( file = = nullptr )
2015-10-25 10:50:28 +00:00
{
2015-12-23 20:04:36 +00:00
return " " ;
2015-10-25 10:50:28 +00:00
}
2021-04-02 08:15:37 +00:00
// Search for UTF8 file marker
2015-10-25 10:50:28 +00:00
uint8_t utf_bom [ 3 ] ;
2015-11-14 00:16:03 +00:00
if ( fread ( & utf_bom , sizeof ( utf_bom ) , 1 , file ) ! = 1 | |
2015-10-25 10:50:28 +00:00
utf_bom [ 0 ] ! = 0xEF | |
utf_bom [ 1 ] ! = 0xBB | |
utf_bom [ 2 ] ! = 0xBF )
{
fclose ( file ) ;
2015-12-23 20:04:36 +00:00
return " " ;
2015-10-25 10:50:28 +00:00
}
2008-09-18 03:15:49 +00:00
2021-04-02 08:15:37 +00:00
// String
2015-10-25 10:50:28 +00:00
while ( ! feof ( file ) )
{
LANG_STR String = GetNextLangString ( file ) ;
if ( String . first = = ID )
{
fclose ( file ) ;
return String . second ;
}
}
fclose ( file ) ;
2015-12-23 20:04:36 +00:00
return " " ;
2015-10-25 10:50:28 +00:00
}
2015-03-10 11:54:12 +00:00
2015-11-14 00:16:03 +00:00
LANG_STR CLanguage : : GetNextLangString ( void * OpenFile )
2012-11-19 11:05:30 +00:00
{
2022-09-26 02:31:54 +00:00
enum
{
MAX_STRING_LEN = 800
} ;
int32_t StringID ;
char szString [ MAX_STRING_LEN ] ; // Temporarily store the string from the file
2008-09-18 03:15:49 +00:00
2015-10-25 10:50:28 +00:00
FILE * file = ( FILE * ) OpenFile ;
2015-03-10 11:54:12 +00:00
2015-10-25 10:50:28 +00:00
//while(token!='#' && !feof(file)) { fread(&token, 1, 1, file); }
if ( feof ( file ) )
{
2015-12-23 20:04:36 +00:00
return LANG_STR ( 0 , " " ) ;
2015-10-25 10:50:28 +00:00
}
2008-09-18 03:15:49 +00:00
2021-04-02 08:15:37 +00:00
// Search for token number
2015-11-14 00:16:03 +00:00
char token = 0 ;
while ( token ! = ' # ' & & ! feof ( file ) )
2015-10-25 10:50:28 +00:00
{
fread ( & token , 1 , 1 , file ) ;
}
if ( feof ( file ) )
{
2015-12-23 20:04:36 +00:00
return LANG_STR ( 0 , " " ) ;
2015-10-25 10:50:28 +00:00
}
2008-09-18 03:15:49 +00:00
2021-04-02 08:15:37 +00:00
// Get StringID after token
2015-10-25 10:50:28 +00:00
fscanf ( file , " %d " , & StringID ) ;
2021-04-02 08:15:37 +00:00
// Search for token number
2015-11-14 00:16:03 +00:00
while ( token ! = ' # ' & & ! feof ( file ) )
2015-10-25 10:50:28 +00:00
{
fread ( & token , 1 , 1 , file ) ;
}
if ( feof ( file ) )
{
2022-09-26 02:31:54 +00:00
StringID = EMPTY_STRING ;
return LANG_STR ( 0 , " " ) ;
2015-10-25 10:50:28 +00:00
}
2021-04-02 08:15:37 +00:00
// Search for start of string '"'
2015-11-14 00:16:03 +00:00
while ( token ! = ' " ' & & ! feof ( file ) )
2015-10-25 10:50:28 +00:00
{
fread ( & token , 1 , 1 , file ) ;
}
if ( feof ( file ) )
{
2022-09-26 02:31:54 +00:00
StringID = EMPTY_STRING ;
return LANG_STR ( 0 , " " ) ;
2015-10-25 10:50:28 +00:00
}
2015-11-14 20:54:55 +00:00
int32_t pos = 0 ;
2015-10-25 10:50:28 +00:00
fread ( & token , 1 , 1 , file ) ;
2015-11-14 00:16:03 +00:00
while ( token ! = ' " ' & & ! feof ( file ) )
2015-10-25 10:50:28 +00:00
{
szString [ pos + + ] = token ;
fread ( & token , 1 , 1 , file ) ;
if ( pos = = MAX_STRING_LEN - 2 )
{
token = ' " ' ;
}
}
szString [ pos + + ] = 0 ;
stdstr text ( szString ) ;
2015-11-14 00:16:03 +00:00
text . Replace ( " \\ n " , " \n " ) ;
2015-12-23 20:04:36 +00:00
return LANG_STR ( StringID , text ) ;
2008-09-18 03:15:49 +00:00
}
2015-12-23 20:04:36 +00:00
void CLanguage : : SetLanguage ( const char * LanguageName )
2008-09-18 03:15:49 +00:00
{
2015-10-25 10:50:28 +00:00
m_SelectedLanguage = LanguageName ;
2015-10-25 19:20:23 +00:00
if ( LoadCurrentStrings ( ) )
2015-11-14 00:16:03 +00:00
{
2015-12-23 20:04:36 +00:00
g_Settings - > SaveString ( Setting_CurrentLanguage , LanguageName ) ;
2015-11-14 00:16:03 +00:00
}
2008-09-18 03:15:49 +00:00
}
2015-11-14 00:16:03 +00:00
bool CLanguage : : IsCurrentLang ( LanguageFile & File )
2008-09-18 03:15:49 +00:00
{
2015-10-25 10:50:28 +00:00
if ( m_SelectedLanguage = = File . LanguageName )
{
return true ;
}
return false ;
2015-01-31 19:27:27 +00:00
}
2015-12-23 20:04:36 +00:00
2016-12-20 07:55:28 +00:00
void CLanguage : : ResetStrings ( void )
{
m_CurrentStrings . clear ( ) ;
}
2016-01-13 11:18:22 +00:00
# ifdef _WIN32
2015-12-23 20:04:36 +00:00
const std : : wstring wGS ( LanguageStringID StringID )
{
return stdstr ( g_Lang - > GetString ( StringID ) ) . ToUTF16 ( ) ;
2016-01-13 11:18:22 +00:00
}
2021-04-02 08:15:37 +00:00
# endif