From a6a16aff7badaf68a23c215b100c6c31a47f32e0 Mon Sep 17 00:00:00 2001 From: Will-LWE <75226748+Will-LWE@users.noreply.github.com> Date: Tue, 1 Dec 2020 23:54:14 +0100 Subject: [PATCH 01/24] System language change functionality --- yabause/src/yabause.h | 1 + 1 file changed, 1 insertion(+) diff --git a/yabause/src/yabause.h b/yabause/src/yabause.h index c0e897727c..33f9bb4a27 100644 --- a/yabause/src/yabause.h +++ b/yabause/src/yabause.h @@ -57,6 +57,7 @@ typedef struct int cdcoretype; int carttype; u8 regionid; + int syslanguageid; const char *biospath; const char *cdpath; const char *ssfpath; From 33a0c649a56f003c5a9296a094249d967a6afce4 Mon Sep 17 00:00:00 2001 From: Will-LWE <75226748+Will-LWE@users.noreply.github.com> Date: Wed, 2 Dec 2020 00:03:38 +0100 Subject: [PATCH 02/24] System language change functionality --- yabause/src/yabause.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/yabause/src/yabause.c b/yabause/src/yabause.c index d3458dcfef..1663e58010 100644 --- a/yabause/src/yabause.c +++ b/yabause/src/yabause.c @@ -143,6 +143,7 @@ void print_usage(const char *program_name) { "Usage: %s [OPTIONS]...\n", program_name); printf(" -h --help Print help and exit\n"); printf(" -b STRING --bios=STRING bios file\n"); + printf(" -l STRING --language=STRING english, deutsch, french, spanish,\n italian, japanese\n"); printf(" -i STRING --iso=STRING iso/cue file\n"); printf(" -c STRING --cdrom=STRING cdrom path\n"); printf(" -ns --nosound turn sound off\n"); @@ -325,7 +326,7 @@ int YabauseInit(yabauseinit_struct *init) return -1; } - if (SmpcInit(init->regionid, init->clocksync, init->basetime) != 0) + if (SmpcInit(init->regionid, init->syslanguageid, init->clocksync, init->basetime) != 0) { YabSetError(YAB_ERR_CANNOTINIT, _("SMPC")); return -1; From 464ae7e99a1f9a2cdc01264e2d3fff56fd5a590b Mon Sep 17 00:00:00 2001 From: Will-LWE <75226748+Will-LWE@users.noreply.github.com> Date: Wed, 2 Dec 2020 00:05:04 +0100 Subject: [PATCH 03/24] System language change functionality --- yabause/src/smpc.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/yabause/src/smpc.h b/yabause/src/smpc.h index 8363c1b179..95125f3205 100644 --- a/yabause/src/smpc.h +++ b/yabause/src/smpc.h @@ -63,6 +63,8 @@ typedef struct typedef struct { u8 dotsel; // 0 -> 320 | 1 -> 352 + int syslanguageid; + int syslngid; u8 mshnmi; u8 sndres; u8 cdres; @@ -85,7 +87,7 @@ typedef struct { extern SmpcInternal * SmpcInternalVars; -int SmpcInit(u8 regionid, int clocksync, u32 basetime); +int SmpcInit(u8 regionid, int syslanguageid, int clocksync, u32 basetime); void SmpcDeInit(void); void SmpcRecheckRegion(void); void SmpcReset(void); From 6b242533fb1bfb97ac6c341c28ba2509cf9a2709 Mon Sep 17 00:00:00 2001 From: Will-LWE <75226748+Will-LWE@users.noreply.github.com> Date: Wed, 2 Dec 2020 00:07:23 +0100 Subject: [PATCH 04/24] System language change functionality --- yabause/src/smpc.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/yabause/src/smpc.c b/yabause/src/smpc.c index e241434ef8..e133a04dc5 100644 --- a/yabause/src/smpc.c +++ b/yabause/src/smpc.c @@ -66,11 +66,12 @@ Smpc * SmpcRegs; u8 * SmpcRegsT; SmpcInternal * SmpcInternalVars = NULL; int intback_wait_for_line = 0; +int syslngid = 0; u8 bustmp = 0; ////////////////////////////////////////////////////////////////////////////// -int SmpcInit(u8 regionid, int clocksync, u32 basetime) { +int SmpcInit(u8 regionid, int syslanguageid, int clocksync, u32 basetime) { if ((SmpcRegsT = (u8 *) calloc(1, sizeof(Smpc))) == NULL) return -1; @@ -81,6 +82,7 @@ int SmpcInit(u8 regionid, int clocksync, u32 basetime) { SmpcInternalVars->regionsetting = regionid; SmpcInternalVars->regionid = regionid; + SmpcInternalVars->syslanguageid = syslanguageid; SmpcInternalVars->clocksync = clocksync; SmpcInternalVars->basetime = basetime ? basetime : time(NULL); @@ -129,7 +131,21 @@ void SmpcRecheckRegion(void) { void SmpcReset(void) { memset((void *)SmpcRegs, 0, sizeof(Smpc)); - memset((void *)SmpcInternalVars->SMEM, 0, 4); + syslngid = SmpcInternalVars->syslanguageid; + memset((void *)SmpcInternalVars->SMEM, syslngid, 4); // Language : 0=English - 1=Deutsch - 2=French - 3=Spanish - 4=Italian - 5=Japanese + memset((void *)SmpcInternalVars->SMEM, 0, 3); // Other Settings - MUST BE DECLARED! - By default : 0 = Button Labels=Enabled + Audio=Stereo + Sound Effects=Enabled + + // Other Settings Configuration Information : + // + // |-------------------------------------------------------------------------------------------------------| + // | Settings | Bit / Settings Value | + // | |---------------------------------------------------------------------------------------| + // | Name | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | + // |-------------------------------------------------------------------------------------------------------| + // | Button Labels | Enabled | Enabled | Enabled | Enabled | Disabled | Disabled | Disabled | Disabled | + // | Audio | Stereo | Stereo | Mono | Mono | Stereo | Stereo | Mono | Mono | + // | Sound Effects | Enabled | Disabled | Enabled | Disabled | Enabled | Disabled | Enabled | Disabled | + // |-------------------------------------------------------------------------------------------------------| SmpcRecheckRegion(); From 4e895f9b5873a47d73f224cb9275ced1ceacdb7d Mon Sep 17 00:00:00 2001 From: Will-LWE <75226748+Will-LWE@users.noreply.github.com> Date: Wed, 2 Dec 2020 00:08:28 +0100 Subject: [PATCH 05/24] System language change functionality --- yabause/src/gtk/main.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/yabause/src/gtk/main.c b/yabause/src/gtk/main.c index cd10adac92..c730a3d821 100644 --- a/yabause/src/gtk/main.c +++ b/yabause/src/gtk/main.c @@ -131,6 +131,11 @@ GtkWidget * yui; GKeyFile * keyfile; yabauseinit_struct yinit; +char* toLower(char* s) { + for(char *p=s; *p; p++) *p=tolower(*p); + return s; +} + static int yui_main(gpointer data) { PERCore->HandleEvents(); return TRUE; From feb3d8afce7b70626247ccea1290b4447d372f17 Mon Sep 17 00:00:00 2001 From: Will-LWE <75226748+Will-LWE@users.noreply.github.com> Date: Wed, 2 Dec 2020 00:10:16 +0100 Subject: [PATCH 06/24] System language change functionality --- yabause/src/gtk/main.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/yabause/src/gtk/main.c b/yabause/src/gtk/main.c index c730a3d821..a8d5d4ea36 100644 --- a/yabause/src/gtk/main.c +++ b/yabause/src/gtk/main.c @@ -163,6 +163,7 @@ static void yui_settings_init(void) { yinit.carttype = CART_NONE; yinit.regionid = 0; yinit.biospath = biospath; + yinit.syslanguageid = 0; yinit.cdpath = cdpath; yinit.buppath = buppath; yinit.mpegpath = mpegpath; @@ -227,6 +228,28 @@ static gboolean yui_settings_load(void) { Cs2ChangeCDCore(yinit.cdcoretype, yinit.cdpath); } + /* SystemLanguageID */ + { + char * syslang = g_key_file_get_value(keyfile, "General", "SystemLanguageID", 0); + tmp = yinit.syslanguageid; + if ((syslang == 0) || !strcmp(syslang, "0")) { + yinit.syslanguageid = 0; + } else { + switch(syslang[0]) { + case '0': yinit.syslanguageid = 0; break; + case '1': yinit.syslanguageid = 1; break; + case '2': yinit.syslanguageid = 2; break; + case '3': yinit.syslanguageid = 3; break; + case '4': yinit.syslanguageid = 4; break; + case '5': yinit.syslanguageid = 5; break; + } + } + + if ((YUI_WINDOW(yui)->state & YUI_IS_INIT) && (tmp != yinit.syslanguageid)) { + mustRestart = TRUE; + } + } + /* region */ { char * region = g_key_file_get_value(keyfile, "General", "Region", 0); @@ -495,6 +518,24 @@ int main(int argc, char *argv[]) { g_strlcpy(biospath, argv[i] + strlen("--bios="), 256); yinit.biospath = biospath; } + //set System Language + if (0 == strcmp(argv[i], "-l") && argv[i + 1]) { + g_strlcpy(strsyslangeid, argv[i + 1], 256); + if (toLower(strsyslangeid) == "english") { yinit.syslanguageid = 0; } + if (toLower(strsyslangeid) == "deutsch") { yinit.syslanguageid = 1; } + if (toLower(strsyslangeid) == "french") { yinit.syslanguageid = 2; } + if (toLower(strsyslangeid) == "spanish") { yinit.syslanguageid = 3; } + if (toLower(strsyslangeid) == "italian") { yinit.syslanguageid = 4; } + if (toLower(strsyslangeid) == "japanese") { yinit.syslanguageid = 5; } + } else if (strstr(argv[i], "--language=")) { + g_strlcpy(strsyslangeid, argv[i] + strlen("--language="), 256); + if (toLower(strsyslangeid) == "english") { yinit.syslanguageid = 0; } + if (toLower(strsyslangeid) == "deutsch") { yinit.syslanguageid = 1; } + if (toLower(strsyslangeid) == "french") { yinit.syslanguageid = 2; } + if (toLower(strsyslangeid) == "spanish") { yinit.syslanguageid = 3; } + if (toLower(strsyslangeid) == "italian") { yinit.syslanguageid = 4; } + if (toLower(strsyslangeid) == "japanese") { yinit.syslanguageid = 5; } + } //set iso else if (0 == strcmp(argv[i], "-i") && argv[i + 1]) { g_strlcpy(cdpath, argv[i + 1], 256); From eeeccbe2389ed5d7c43decaf3ea53bc2506fd05e Mon Sep 17 00:00:00 2001 From: Will-LWE <75226748+Will-LWE@users.noreply.github.com> Date: Wed, 2 Dec 2020 00:12:00 +0100 Subject: [PATCH 07/24] System language change functionality --- yabause/src/gtk/settings.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/yabause/src/gtk/settings.c b/yabause/src/gtk/settings.c index d07056e588..808c4ab750 100644 --- a/yabause/src/gtk/settings.c +++ b/yabause/src/gtk/settings.c @@ -80,6 +80,16 @@ YuiRangeItem * osdcores = NULL; YuiRangeItem * sndcores = NULL; YuiRangeItem * percores = NULL; +YuiRangeItem syslanguage[] = { + { "0" , "English" }, + { "1" , "Deutsch" }, + { "2" , "French" }, + { "3" , "Spanish" }, + { "4" , "Italian" }, + { "5" , "Japanese" }, + { 0, 0 } +}; + YuiRangeItem regions[] = { { "Auto" , "Auto-detect" }, { "J" , "Japan (NTSC)" }, @@ -324,7 +334,10 @@ GtkWidget* create_dialog1(void) { box = yui_page_add(YUI_PAGE(general), _("Save States")); gtk_container_add(GTK_CONTAINER(box), yui_file_entry_new(keyfile, "General", "StatePath", YUI_FILE_ENTRY_BROWSE | YUI_FILE_ENTRY_DIRECTORY, NULL)); - + + box = yui_page_add(YUI_PAGE(general), _("System Language")); + gtk_container_add(GTK_CONTAINER(box), yui_range_new(keyfile, "General", "SystemLanguageID", syslanguage)); + gtk_notebook_append_page(GTK_NOTEBOOK(notebook1), general, gtk_label_new (_("General"))); gtk_widget_show_all(general); From 591492c864cfe93a16b53eede846c7d1c1adda3a Mon Sep 17 00:00:00 2001 From: Will-LWE <75226748+Will-LWE@users.noreply.github.com> Date: Wed, 2 Dec 2020 00:13:31 +0100 Subject: [PATCH 08/24] System language change functionality --- yabause/src/qt/Arguments.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/yabause/src/qt/Arguments.cpp b/yabause/src/qt/Arguments.cpp index 80c897f4c0..39eb72c0cc 100644 --- a/yabause/src/qt/Arguments.cpp +++ b/yabause/src/qt/Arguments.cpp @@ -23,6 +23,7 @@ namespace Arguments void autostart(const QString& param); void binary(const QString& param); void bios(const QString& param); + void syslangid(const QString& param); void cdrom(const QString& param); void fullscreen(const QString& param); void help(const QString& param); @@ -51,6 +52,7 @@ namespace Arguments { "-a", "--autostart", NULL, "Automatically start emulation.", 1, autostart }, { NULL, "--binary=", "[:ADDRESS]", "Use a binary file.", 1, binary }, { "-b", "--bios=", "", "Choose a bios file.", 3, bios }, + { "-l", "--language=", "","Choose the system language: english, deutsch, french, spanish, italian, japanese", 7, syslangid }, { "-c", "--cdrom=", "", "Choose the cdrom device.", 4, cdrom }, { "-f", "--fullscreen", NULL, "Start the emulator in fullscreen.", 5, fullscreen }, { "-p", "--playrecord", "", "Play play record.", 5, playRecord }, @@ -64,8 +66,8 @@ namespace Arguments void parse() { - QVector