Skip to content

Commit

Permalink
merge all commits
Browse files Browse the repository at this point in the history
  • Loading branch information
israpps committed Aug 14, 2022
1 parent 7d786b3 commit e78b4cf
Show file tree
Hide file tree
Showing 15 changed files with 291 additions and 12 deletions.
3 changes: 3 additions & 0 deletions ee_core/include/ee_core.h
Expand Up @@ -40,6 +40,9 @@ extern int iop_reboot_count;

extern int padOpen_hooked;

extern int enforceLanguage;
extern int LanguageToEnforce;

enum ETH_OP_MODES {
ETH_OP_MODE_AUTO = 0,
ETH_OP_MODE_100M_FDX,
Expand Down
6 changes: 5 additions & 1 deletion ee_core/include/syshook.h
Expand Up @@ -11,6 +11,9 @@
#define SYSHOOK_H

#include <tamtypes.h>
#include <osd_config.h>

extern ConfigParam CustomOSDConfigParam;

void Install_Kernel_Hooks(void);
void Remove_Kernel_Hooks(void);
Expand All @@ -20,7 +23,8 @@ extern int (*Old_SifSetReg)(u32 register_num, int register_value);
extern int (*Old_ExecPS2)(void *entry, void *gp, int num_args, char *args[]);
extern int (*Old_CreateThread)(ee_thread_t *thread_param);
extern void (*Old_Exit)(s32 exit_code);

extern void (*Old_SetOsdConfigParam)(ConfigParam *config);
extern void (*Old_GetOsdConfigParam)(ConfigParam *config);
void sysLoadElf(char *filename, int argc, char **argv);
void sysExit(s32 exit_code);

Expand Down
18 changes: 17 additions & 1 deletion ee_core/src/main.c
Expand Up @@ -41,6 +41,9 @@ int PadMacroSettings;
int EnableDebug;
int *gCheatList; // Store hooks/codes addr+val pairs

int enforceLanguage;
int LanguageToEnforce;

// This function is defined as weak in ps2sdkc, so how
// we are not using time zone, so we can safe some KB
void _ps2sdk_timezone_update() {}
Expand Down Expand Up @@ -109,7 +112,20 @@ static int eecoreInit(int argc, char **argv)

PadMacroSettings = _strtoi(_strtok(NULL, " "));
#endif

CustomOSDConfigParam.spdifMode = _strtoi(_strtok(NULL, " "));
CustomOSDConfigParam.screenType = _strtoi(_strtok(NULL, " "));
CustomOSDConfigParam.videoOutput = _strtoi(_strtok(NULL, " "));
CustomOSDConfigParam.japLanguage = _strtoi(_strtok(NULL, " "));
CustomOSDConfigParam.ps1drvConfig = _strtoi(_strtok(NULL, " "));
CustomOSDConfigParam.version = _strtoi(_strtok(NULL, " "));
CustomOSDConfigParam.language = _strtoi(_strtok(NULL, " "));
CustomOSDConfigParam.timezoneOffset = _strtoi(_strtok(NULL, " "));
enforceLanguage = _strtoi(_strtok(NULL, " "));

if (enforceLanguage)
DPRINTF("Enforcing language...\n\tCustomOSDConfig2Param: %d %d %d %d %d %d %d %d\n", PARAM.spdifMode, PARAM.screenType, PARAM.videoOutput, PARAM.japLanguage, PARAM.ps1drvConfig, PARAM.version, PARAM.language, PARAM.timezoneOffset);
else
DPRINTF("Language will not be manipulated\n");
i++;

eeloadCopy = (void *)_strtoui(_strtok(argv[i], " "));
Expand Down
41 changes: 41 additions & 0 deletions ee_core/src/syshook.c
Expand Up @@ -20,6 +20,8 @@
#include <ee_regs.h>
#include <ps2_reg_defs.h>

ConfigParam CustomOSDConfigParam;

int set_reg_hook;
int set_reg_disabled;
int iop_reboot_count = 0;
Expand All @@ -37,6 +39,8 @@ int (*Old_SifSetReg)(u32 register_num, int register_value);
int (*Old_ExecPS2)(void *entry, void *gp, int num_args, char *args[]);
int (*Old_CreateThread)(ee_thread_t *thread_param);
void (*Old_Exit)(s32 exit_code);
void (*Old_SetOsdConfigParam)(ConfigParam *config);
void (*Old_GetOsdConfigParam)(ConfigParam *config);

/*----------------------------------------------------------------------------------------*/
/* This function is called when SifSetDma catches a reboot request. */
Expand Down Expand Up @@ -159,12 +163,45 @@ void sysExit(s32 exit_code)
IGR_Exit(exit_code);
}

void hook_SetOsdConfigParam(ConfigParam *config)
{
DPRINTF(__func__ ": called\n");
CustomOSDConfigParam.spdifMode = config->spdifMode;
CustomOSDConfigParam.screenType = config->screenType;
CustomOSDConfigParam.videoOutput = config->videoOutput;
CustomOSDConfigParam.japLanguage = config->japLanguage;
CustomOSDConfigParam.ps1drvConfig = config->ps1drvConfig;
CustomOSDConfigParam.version = config->version;
CustomOSDConfigParam.language = config->language;
CustomOSDConfigParam.timezoneOffset = config->timezoneOffset;
}

void hook_GetOsdConfigParam(ConfigParam *config)
{
DPRINTF(__func__ ": called\n");
config->spdifMode = CustomOSDConfigParam.spdifMode;
config->screenType = CustomOSDConfigParam.screenType;
config->videoOutput = CustomOSDConfigParam.videoOutput;
config->japLanguage = CustomOSDConfigParam.japLanguage;
config->ps1drvConfig = CustomOSDConfigParam.ps1drvConfig;
config->version = CustomOSDConfigParam.version;
config->language = CustomOSDConfigParam.language;
config->timezoneOffset = CustomOSDConfigParam.timezoneOffset;
}

/*----------------------------------------------------------------------------------------*/
/* Replace SifSetDma, SifSetReg, LoadExecPS2 syscalls in kernel. (Game Loader) */
/* Replace CreateThread and ExecPS2 syscalls in kernel. (In Game Reset) */
/*----------------------------------------------------------------------------------------*/
void Install_Kernel_Hooks(void)
{
if (enforceLanguage) {
Old_SetOsdConfigParam = GetSyscallHandler(__NR_SetOsdConfigParam);
SetSyscall(__NR_SetOsdConfigParam, &hook_SetOsdConfigParam);
Old_GetOsdConfigParam = GetSyscallHandler(__NR_GetOsdConfigParam);
SetSyscall(__NR_GetOsdConfigParam, &hook_GetOsdConfigParam);
}

Old_SifSetDma = GetSyscallHandler(__NR_SifSetDma);
SetSyscall(__NR_SifSetDma, &Hook_SifSetDma);

Expand All @@ -190,6 +227,10 @@ void Install_Kernel_Hooks(void)
/*----------------------------------------------------------------------------------------------*/
void Remove_Kernel_Hooks(void)
{
if (enforceLanguage) {
SetSyscall(__NR_SetOsdConfigParam, Old_SetOsdConfigParam);
SetSyscall(__NR_GetOsdConfigParam, Old_GetOsdConfigParam);
}
SetSyscall(__NR_SifSetDma, Old_SifSetDma);
SetSyscall(__NR_SifSetReg, Old_SifSetReg);
SetSyscall(__NR_KExit, Old_Exit);
Expand Down
4 changes: 4 additions & 0 deletions include/config.h
Expand Up @@ -38,6 +38,10 @@ enum CONFIG_INDEX {
#define CONFIG_ITEM_DNAS "$DNAS"
#define CONFIG_ITEM_CONFIGSOURCE "$ConfigSource"

#define CONFIG_ITEM_OSDLNG "$CustomLanguageValue"
#define CONFIG_ITEM_OSDLNG_SOURCE "$CustomLanguageSource"
#define CONFIG_ITEM_OSDLNG_ENABLE "$CustomLanguageEnable"

// Per-Game GSM keys. -Bat-
#define CONFIG_ITEM_GSMSOURCE "$GSMSource"
#define CONFIG_ITEM_ENABLEGSM "$EnableGSM"
Expand Down
6 changes: 6 additions & 0 deletions include/dialogs.h
Expand Up @@ -134,6 +134,11 @@ enum UI_ITEMS {
NETUPD_PROGRESS,
NETUPD_BTN_START,
NETUPD_BTN_CANCEL,

OSD_LANGUAGE_SOURCE,
OSD_LANGUAGE_ENABLE,
OSD_LANGUAGE_VALUE,

#ifdef PADEMU
PADEMU_GLOBAL_BUTTON,
PADCFG_PADEMU_SOURCE,
Expand Down Expand Up @@ -212,4 +217,5 @@ extern struct UIItem diaNetCompatUpdate[];
extern struct UIItem diaParentalLockConfig[];
extern struct UIItem diaBlockDevicesConfig[];

extern struct UIItem diaOSDConfig[];
#endif
4 changes: 3 additions & 1 deletion include/guigame.h
Expand Up @@ -19,9 +19,11 @@ void guiGameShowPadEmuConfig(int forceGlobal);
void guiGameShowPadMacroConfig(int forceGlobal);
void guiGameSavePadEmuGlobalConfig(config_set_t *configGame);
void guiGameSavePadMacroGlobalConfig(config_set_t *configGame);

#endif

void guiGameShowOSDLanguageConfig(int forceGlobal);
void guiGameSaveOSDLanguageGlobalConfig(config_set_t *configGame);

void guiGameLoadConfig(item_list_t *support, config_set_t *configSet);
int guiGameSaveConfig(config_set_t *configSet, item_list_t *support);
void guiGameTestSettings(int id, item_list_t *support, config_set_t *configSet);
Expand Down
4 changes: 4 additions & 0 deletions include/opl.h
Expand Up @@ -143,6 +143,10 @@ extern int gCheatSource;
extern int gGSMSource;
extern int gPadEmuSource;

extern int gOSDLanguageValue;
extern int gOSDLanguageEnable;
extern int gOSDLanguageSource;

extern int showCfgPopup;

#ifdef IGS
Expand Down
31 changes: 31 additions & 0 deletions lng_tmpl/_base.yml
Expand Up @@ -632,3 +632,34 @@ gui_strings:
string: While button pressed
- label: ACT_TOGGLED
string: Toggled by button
- label: LANGUAGE_JAPANESE
string: JAPANESE
- label: LANGUAGE_ENGLISH
string: ENGLISH
- label: LANGUAGE_FRENCH
string: FRENCH
- label: LANGUAGE_SPANISH
string: SPANISH
- label: LANGUAGE_GERMAN
string: GERMAN
- label: LANGUAGE_ITALIAN
string: ITALIAN
- label: LANGUAGE_DUTCH
string: DUTCH
- label: LANGUAGE_PORTUGUESE
string: PORTUGUESE
- label: LANGUAGE_RUSSIAN
string: RUSSIAN
- label: LANGUAGE_KOREAN
string: KOREAN
- label: LANGUAGE_TRAD_CHINESE
string: TRADITIONAL CHINESE
- label: LANGUAGE_SIMPL_CHINESE
string: SIMPLIFIED CHINESE
- label: OSD_SETTINGS
string: OSD settings
- label: OSD_SETTINGS_LNG
string: OSD Language
- label: ENABLE_LNG
string: Change language

26 changes: 26 additions & 0 deletions src/dialogs.c
Expand Up @@ -1012,3 +1012,29 @@ struct UIItem diaControllerConfig[] = {
{UI_BREAK},
// end of dialog
{UI_TERMINATOR}};

struct UIItem diaOSDConfig[] = {
{UI_LABEL, 0, 1, 1, -1, 0, 0, {.label = {NULL, _STR_OSD_SETTINGS}}},
{UI_SPLITTER},

{UI_LABEL, 0, 1, 1, -1, -50, 0, {.label = {NULL, _STR_SETTINGS_SOURCE}}},
{UI_SPACER},
{UI_ENUM, OSD_LANGUAGE_SOURCE, 1, 1, -1, 0, 0, {.intvalue = {0, 0}}},
{UI_BREAK},
{UI_BREAK},

{UI_LABEL, 0, 1, 1, -1, -40, 0, {.label = {NULL, _STR_ENABLE_LNG}}},
{UI_SPACER},
{UI_BOOL, OSD_LANGUAGE_ENABLE, 1, 1, -1, 0, 0, {.intvalue = {0, 0}}},
{UI_BREAK},

{UI_LABEL, 0, 1, 1, -1, -40, 0, {.label = {NULL, _STR_OSD_SETTINGS_LNG}}},
{UI_SPACER},
{UI_ENUM, OSD_LANGUAGE_VALUE, 1, 1, -1, 0, 0, {.intvalue = {0, 0}}},
{UI_BREAK},

// buttons
{UI_OK, 0, 1, 1, -1, 0, 0, {.label = {NULL, _STR_OK}}},
{UI_BREAK},
// end of dialog
{UI_TERMINATOR}};

0 comments on commit e78b4cf

Please sign in to comment.