Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

System language change functionality #787

Open
wants to merge 24 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
a6a16af
System language change functionality
Will-LWE Dec 1, 2020
33a0c64
System language change functionality
Will-LWE Dec 1, 2020
464ae7e
System language change functionality
Will-LWE Dec 1, 2020
6b24253
System language change functionality
Will-LWE Dec 1, 2020
4e895f9
System language change functionality
Will-LWE Dec 1, 2020
feb3d8a
System language change functionality
Will-LWE Dec 1, 2020
eeeccbe
System language change functionality
Will-LWE Dec 1, 2020
591492c
System language change functionality
Will-LWE Dec 1, 2020
3ebc50c
System language change functionality
Will-LWE Dec 1, 2020
ed8ca29
System language change functionality
Will-LWE Dec 1, 2020
306c550
System language change functionality
Will-LWE Dec 1, 2020
33da850
System language change functionality
Will-LWE Dec 1, 2020
1fcd701
System language change functionality
Will-LWE Dec 1, 2020
e01b760
System language change functionality
Will-LWE Dec 1, 2020
62f1c49
System language change functionality
Will-LWE Dec 1, 2020
d7958ab
System language change functionality
Will-LWE Dec 1, 2020
08146d4
System language change functionality
Will-LWE Dec 1, 2020
74494aa
System language change functionality
Will-LWE Dec 1, 2020
ef73ac6
System language change functionality
Will-LWE Dec 1, 2020
bb2120e
System language change functionality
Will-LWE Dec 1, 2020
4750301
System language change functionality
Will-LWE Dec 1, 2020
6382f5d
System language change functionality
Will-LWE Dec 1, 2020
2da12e7
Correction on language integration
Will-LWE Dec 5, 2020
6aaf5dc
Correction on the config file for language
Will-LWE Dec 5, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions yabause/src/android/jni/yui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1254,6 +1254,7 @@ int YabauseInit(){
yinit.cdcoretype = CDCORE_ISO;
yinit.carttype = GetCartridgeType();
yinit.regionid = 0;
yinit.syslanguageid = 0;

yinit.biospath = s_biospath;
yinit.cdpath = s_cdpath;
Expand Down
1 change: 1 addition & 0 deletions yabause/src/cocoa/YabauseController.m
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,7 @@ - (void)startEmulationWithCDCore:(int)cdcore CDPath:(const char *)fn
yinit.cdcoretype = cdcore;
yinit.carttype = [prefs cartType];
yinit.regionid = [prefs region];
yinit.syslanguageid = [prefs system language];
yinit.biospath = ([bios length] > 0 && ![prefs emulateBios]) ?
[bios UTF8String] : NULL;
yinit.cdpath = fn;
Expand Down
1 change: 1 addition & 0 deletions yabause/src/dreamcast/yui.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ int YuiInit(int sh2core) {
yinit.cdcoretype = CDCORE_ARCH;
yinit.carttype = CART_NONE;
yinit.regionid = REGION_AUTODETECT;
yinit.syslanguageid = 0;
yinit.biospath = emulate_bios ? NULL : bios;
yinit.cdpath = NULL;
yinit.buppath = NULL;
Expand Down
1 change: 1 addition & 0 deletions yabause/src/glfw/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@ int yabauseinit()
yinit.cdcoretype = CDCORE_ISO;
yinit.carttype = CART_NONE;
yinit.regionid = 0;
yinit.syslanguageid = 0;
yinit.biospath = biospath;
yinit.cdpath = cdpath;
yinit.buppath = buppath;
Expand Down
46 changes: 46 additions & 0 deletions yabause/src/gtk/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -158,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;
Expand Down Expand Up @@ -222,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);
Expand Down Expand Up @@ -490,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);
Expand Down
15 changes: 14 additions & 1 deletion yabause/src/gtk/settings.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)" },
Expand Down Expand Up @@ -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);

Expand Down
3 changes: 2 additions & 1 deletion yabause/src/ios/yui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ int start_emulation( int originx, int originy, int width, int height ){
yinit.sndcoretype = SNDCORE_AL; //SNDCORE_DEFAULT;
yinit.cdcoretype = CDCORE_ISO;
yinit.regionid = 0;
yinit.syslanguageid = 0;

yinit.biospath = s_biospath;
yinit.cdpath = s_cdpath;
Expand Down Expand Up @@ -321,4 +322,4 @@ int start_emulation( int originx, int originy, int width, int height ){
return 0;
}

}
}
21 changes: 21 additions & 0 deletions yabause/src/libretro/libretro.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ static char g_system_dir[PATH_MAX];
static char full_path[PATH_MAX];
static char bios_path[PATH_MAX];
static char bup_path[PATH_MAX];
static int system_language = 0;

static int game_width = 320;
static int game_height = 240;
Expand Down Expand Up @@ -101,6 +102,7 @@ void retro_set_environment(retro_environment_t cb)
{ "yabasanshiro_force_hle_bios", "Force HLE BIOS (restart, deprecated, debug only); disabled|enabled" },
{ "yabasanshiro_frameskip", "Auto-frameskip (prevent fast-forwarding); enabled|disabled" },
{ "yabasanshiro_addon_cart", "Addon Cartridge (restart); 4M_extended_ram|1M_extended_ram" },
{ "yabasanshiro_system_language", "System Language (restart); english|deutsch|french|spanish|italian|japanese" },
{ "yabasanshiro_multitap_port1", "6Player Adaptor on Port 1; disabled|enabled" },
{ "yabasanshiro_multitap_port2", "6Player Adaptor on Port 2; disabled|enabled" },
#ifdef DYNAREC_DEVMIYAX
Expand Down Expand Up @@ -750,6 +752,24 @@ void check_variables(void)
addon_cart_type = CART_DRAM32MBIT;
}

var.key = "yabasanshiro_system_language";
var.value = NULL;
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
{
if (strcmp(var.value, "english") == 0)
system_language = 0;
else if (strcmp(var.value, "deutsch") == 0)
system_language = 1;
else if (strcmp(var.value, "french") == 0)
system_language = 2;
else if (strcmp(var.value, "spanish") == 0)
system_language = 3;
else if (strcmp(var.value, "italian") == 0)
system_language = 4;
else if (strcmp(var.value, "japanese") == 0)
system_language = 5;
}

var.key = "yabasanshiro_multitap_port1";
var.value = NULL;
if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value)
Expand Down Expand Up @@ -1253,6 +1273,7 @@ bool retro_load_game(const struct retro_game_info *info)
yinit.cdcoretype = CDCORE_ISO;
yinit.cdpath = full_path;
yinit.biospath = (hle_bios_force ? NULL : bios_path);
yinit.syslanguageid = system_language;
yinit.carttype = addon_cart_type;
yinit.cartpath = "\0";

Expand Down
18 changes: 18 additions & 0 deletions yabause/src/nx/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,8 @@ void userAppExit()

extern "C" {
static char biospath[256] = "./yabasanshiro/bios.bin";
static char strgsyslangeid[256] = "english";
static int syslanguageid = 0;
static char cdpath[256] = "./yabasanshiro/nights.cue";
//static char cdpath[256] = "/home/pigaming/RetroPie/roms/saturn/gd.cue";
//static char cdpath[256] = "/home/pigaming/RetroPie/roms/saturn/Virtua Fighter Kids (1996)(Sega)(JP).ccd";
Expand Down Expand Up @@ -201,6 +203,11 @@ string g_keymap_filename;

#include "nanovg.h"

char* toLower(char* s) {
for(char *p=s; *p; p++) *p=tolower(*p);
return s;
}

//----------------------------------------------------------------------------------------------
NVGcontext * getGlobalNanoVGContext(){
return NULL;
Expand Down Expand Up @@ -268,6 +275,7 @@ int yabauseinit()
yinit.cdcoretype = CDCORE_ISO;
yinit.carttype = CART_NONE;
yinit.regionid = 0;
yinit.syslanguageid = syslanguageid;
if( g_emulated_bios ){
yinit.biospath = NULL;
}else{
Expand Down Expand Up @@ -421,6 +429,7 @@ int main(int argc, char** argv)
if( all_args[0] == "-h" || all_args[0] == "--h" ){
printf("Usage:\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(" -r NUMBER --resolution_mode NUMBER 0 .. Native, 1 .. 4x, 2 .. 2x, 3 .. Original\n");
printf(" -a --keep_aspect_rate\n");
Expand All @@ -436,6 +445,15 @@ int main(int argc, char** argv)
if(( x == "-b" || x == "--bios") && (i+1<all_args.size() ) ) {
g_emulated_bios = 0;
strncpy(biospath, all_args[i+1].c_str(), 256);
}
else if(( x == "-l" || x == "--language") && (i+1<all_args.size() ) ) {
strncpy(strgsyslangeid, all_args[i+1].c_str(), 256);
if (toLower(strgsyslangeid) == "english") { yinit.syslanguageid = 0; }
if (toLower(strgsyslangeid) == "deutsch") { yinit.syslanguageid = 1; }
if (toLower(strgsyslangeid) == "french") { yinit.syslanguageid = 2; }
if (toLower(strgsyslangeid) == "spanish") { yinit.syslanguageid = 3; }
if (toLower(strgsyslangeid) == "italian") { yinit.syslanguageid = 4; }
if (toLower(strgsyslangeid) == "japanese") { yinit.syslanguageid = 5; }
}
else if(( x == "-i" || x == "--iso") && (i+1<all_args.size() ) ) {
strncpy(cdpath, all_args[i+1].c_str(), 256);
Expand Down
19 changes: 16 additions & 3 deletions yabause/src/qt/Arguments.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -51,6 +52,7 @@ namespace Arguments
{ "-a", "--autostart", NULL, "Automatically start emulation.", 1, autostart },
{ NULL, "--binary=", "<FILE>[:ADDRESS]", "Use a binary file.", 1, binary },
{ "-b", "--bios=", "<BIOS>", "Choose a bios file.", 3, bios },
{ "-l", "--language=", "<language>","Choose the system language: english, deutsch, french, spanish, italian, japanese", 7, syslangid },
{ "-c", "--cdrom=", "<CDROM>", "Choose the cdrom device.", 4, cdrom },
{ "-f", "--fullscreen", NULL, "Start the emulator in fullscreen.", 5, fullscreen },
{ "-p", "--playrecord", "<DIR>", "Play play record.", 5, playRecord },
Expand All @@ -64,8 +66,8 @@ namespace Arguments

void parse()
{
QVector<Option *> choosenOptions(7);
QVector<QString> params(7);
QVector<Option *> choosenOptions(8);
QVector<QString> params(8);

QStringList arguments = QApplication::arguments();
QStringListIterator argit(arguments);
Expand All @@ -92,7 +94,7 @@ namespace Arguments
}
}

for(int i = 0;i < 7;i++)
for(int i = 0;i < 8;i++)
{
Option * option = choosenOptions[i];
if (option)
Expand Down Expand Up @@ -150,6 +152,17 @@ namespace Arguments
vs->setValue("General/Bios", param);
}

void syslangid(const QString& param)
{
VolatileSettings * vs = QtYabause::volatileSettings();
if (param.toLower() == "english") { vs->setValue("General/SystemLanguageID", 0); }
if (param.toLower() == "deutsch") { vs->setValue("General/SystemLanguageID", 1); }
if (param.toLower() == "french") { vs->setValue("General/SystemLanguageID", 2); }
if (param.toLower() == "spanish") { vs->setValue("General/SystemLanguageID", 3); }
if (param.toLower() == "italian") { vs->setValue("General/SystemLanguageID", 4); }
if (param.toLower() == "japanese") { vs->setValue("General/SystemLanguageID", 5); }
}

void cdrom(const QString& param)
{
VolatileSettings * vs = QtYabause::volatileSettings();
Expand Down
16 changes: 16 additions & 0 deletions yabause/src/qt/YabauseThread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,21 @@ void YabauseThread::reloadSettings()
case 'L': mYabauseConf.regionid = 0xD; break;
}
}
const QString r1 = vs->value( "General/SystemLanguageID", mYabauseConf.syslanguageid ).toString();
if ( r1.isEmpty() || r1 == "0" )
mYabauseConf.syslanguageid = 0;
else
{
switch ( r1[0].toLatin1() )
{
case '0': mYabauseConf.syslanguageid = 0; break;
case '1': mYabauseConf.syslanguageid = 1; break;
case '2': mYabauseConf.syslanguageid = 2; break;
case '3': mYabauseConf.syslanguageid = 3; break;
case '4': mYabauseConf.syslanguageid = 4; break;
case '5': mYabauseConf.syslanguageid = 5; break;
}
}
if (vs->value("General/EnableEmulatedBios", false).toBool())
mYabauseConf.biospath = strdup( "" );
else
Expand Down Expand Up @@ -531,6 +546,7 @@ void YabauseThread::resetYabauseConf()
mYabauseConf.cdcoretype = QtYabause::defaultCDCore().id;
mYabauseConf.carttype = CART_NONE;
mYabauseConf.regionid = 0;
mYabauseConf.syslanguageid = 0;
mYabauseConf.biospath = 0;
mYabauseConf.cdpath = 0;
mYabauseConf.mpegpath = 0;
Expand Down
14 changes: 14 additions & 0 deletions yabause/src/qt/ui/UISettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,14 @@ struct Item

typedef QList<Item> Items;

const Items mSysLanguageID = Items()
<< Item( "0", "English" )
<< Item( "1", "Deutsch" )
<< Item( "2", "French" )
<< Item( "3", "Spanish" )
<< Item( "4", "Italian" )
<< Item( "5", "Japanese" );

const Items mRegions = Items()
<< Item( "Auto" , "Auto-detect" )
<< Item( "J" , "Japan (NTSC)" )
Expand Down Expand Up @@ -373,6 +381,10 @@ void UISettings::loadCores()
foreach ( const Item& it, mRegions )
cbRegion->addItem( QtYabause::translate( it.Name ), it.id );

// System Language
foreach ( const Item& it, mSysLanguageID )
cbSysLanguageID ->addItem( QtYabause::translate( it.Name ), it.id );

// SH2 Interpreters
for ( int i = 0; SH2CoreList[i] != NULL; i++ )
cbSH2Interpreter->addItem( QtYabause::translate( SH2CoreList[i]->Name ), SH2CoreList[i]->id );
Expand Down Expand Up @@ -471,6 +483,7 @@ void UISettings::loadSettings()
cbCdDrive->setCurrentIndex(leCdRom->text().isEmpty() ? 0 : cbCdDrive->findText(leCdRom->text()));

leSaveStates->setText( s->value( "General/SaveStates", getDataDirPath() ).toString() );
cbSysLanguageID->setCurrentIndex( cbSysLanguageID->findData( s->value( "General/SystemLanguageID", mSysLanguageID.at( 0 ).id ).toString() ) );
#ifdef HAVE_LIBMINI18N
int i;
if ((i=cbTranslation->findData(s->value( "General/Translation" ).toString())) != -1)
Expand Down Expand Up @@ -579,6 +592,7 @@ void UISettings::saveSettings()
else
s->setValue( "General/CdRomISO", leCdRom->text() );
s->setValue( "General/SaveStates", leSaveStates->text() );
s->setValue( "General/SystemLanguageID", cbSysLanguageID->itemData( cbSysLanguageID->currentIndex() ).toString() );
#ifdef HAVE_LIBMINI18N
s->setValue( "General/Translation", cbTranslation->itemData(cbTranslation->currentIndex()).toString() );
#endif
Expand Down
Loading