From 61a7c821d24243a66d303218bd34bcc8d7d58228 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 19 Apr 2013 21:59:24 +0300 Subject: [PATCH] add save/load PSP parameters from ini file; --- Core/Config.cpp | 16 ++++++++++ Core/Config.h | 8 +++++ Core/HLE/sceUtility.cpp | 70 ++++++----------------------------------- Core/HLE/sceUtility.h | 63 +++++++++++++++++++++++++++++-------- 4 files changed, 83 insertions(+), 74 deletions(-) diff --git a/Core/Config.cpp b/Core/Config.cpp index e462c22ada..9975475557 100644 --- a/Core/Config.cpp +++ b/Core/Config.cpp @@ -118,8 +118,16 @@ void Config::Load(const char *iniFileName) control->Get("ForceInputDevice", &iForceInputDevice, -1); IniFile::Section *pspConfig = iniFile.GetOrCreateSection("SystemParam"); + pspConfig->Get("NickName", &sNickName, "shadow"); pspConfig->Get("Language", &ilanguage, PSP_SYSTEMPARAM_LANGUAGE_ENGLISH); pspConfig->Get("TimeFormat", &itimeformat, PSP_SYSTEMPARAM_TIME_FORMAT_24HR); + pspConfig->Get("DateFormat", &iDateFormat, PSP_SYSTEMPARAM_DATE_FORMAT_YYYYMMDD); + pspConfig->Get("TimeZone", &iTimeZone, 0); + pspConfig->Get("DayLightSavings", &bDayLightSavings, PSP_SYSTEMPARAM_DAYLIGHTSAVINGS_STD); + pspConfig->Get("ButtonPreference", &bButtonPreference, PSP_SYSTEMPARAM_BUTTON_CIRCLE); + pspConfig->Get("LockParentalLevel", &bLockParentalLevel, PSP_SYSTEMPARAM_TIME_FORMAT_24HR); + pspConfig->Get("WlanAdhocChannel", &iWlanAdhocChannel, PSP_SYSTEMPARAM_ADHOC_CHANNEL_AUTOMATIC); + pspConfig->Get("WlanPowerSave", &bWlanPowerSave, PSP_SYSTEMPARAM_WLAN_POWERSAVE_OFF); pspConfig->Get("EncryptSave", &bEncryptSave, true); CleanRecent(); @@ -187,8 +195,16 @@ void Config::Save() IniFile::Section *pspConfig = iniFile.GetOrCreateSection("SystemParam"); + pspConfig->Set("NickName", sNickName.c_str()); pspConfig->Set("Language", ilanguage); pspConfig->Set("TimeFormat", itimeformat); + pspConfig->Set("DateFormat", iDateFormat); + pspConfig->Set("TimeZone", iTimeZone); + pspConfig->Set("DayLightSavings", bDayLightSavings); + pspConfig->Set("ButtonPreference", bButtonPreference); + pspConfig->Set("LockParentalLevel", bLockParentalLevel); + pspConfig->Set("WlanAdhocChannel", iWlanAdhocChannel); + pspConfig->Set("WlanPowerSave", bWlanPowerSave); pspConfig->Set("EncryptSave", bEncryptSave); if (!iniFile.Save(iniFilename_.c_str())) { diff --git a/Core/Config.h b/Core/Config.h index 560e5ee713..ccbe048435 100644 --- a/Core/Config.h +++ b/Core/Config.h @@ -87,9 +87,17 @@ public: int iForceInputDevice; // SystemParam + std::string sNickName; int ilanguage; int itimeformat; + int iDateFormat; + int iTimeZone; + bool bDayLightSavings; + bool bButtonPreference; + bool bLockParentalLevel; bool bEncryptSave; + int iWlanAdhocChannel; + bool bWlanPowerSave; std::string currentDirectory; std::string memCardDirectory; diff --git a/Core/HLE/sceUtility.cpp b/Core/HLE/sceUtility.cpp index 72882a33ae..f5304a66f4 100644 --- a/Core/HLE/sceUtility.cpp +++ b/Core/HLE/sceUtility.cpp @@ -364,58 +364,6 @@ int sceUtilityGamedataInstallGetStatus() return retval; } -#define PSP_SYSTEMPARAM_ID_STRING_NICKNAME 1 -#define PSP_SYSTEMPARAM_ID_INT_ADHOC_CHANNEL 2 -#define PSP_SYSTEMPARAM_ID_INT_WLAN_POWERSAVE 3 -#define PSP_SYSTEMPARAM_ID_INT_DATE_FORMAT 4 -#define PSP_SYSTEMPARAM_ID_INT_TIME_FORMAT 5 -//Timezone offset from UTC in minutes, (EST = -300 = -5 * 60) -#define PSP_SYSTEMPARAM_ID_INT_TIMEZONE 6 -#define PSP_SYSTEMPARAM_ID_INT_DAYLIGHTSAVINGS 7 -#define PSP_SYSTEMPARAM_ID_INT_LANGUAGE 8 -#define PSP_SYSTEMPARAM_ID_INT_BUTTON_PREFERENCE 9 -#define PSP_SYSTEMPARAM_ID_INT_LOCK_PARENTAL_LEVEL 10 - -/** -* Return values for the SystemParam functions -*/ -#define PSP_SYSTEMPARAM_RETVAL_OK 0 -#define PSP_SYSTEMPARAM_RETVAL_FAIL 0x80110103 - - -/** -* Valid values for PSP_SYSTEMPARAM_ID_INT_ADHOC_CHANNEL -*/ -#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_AUTOMATIC 0 -#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_1 1 -#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_6 6 -#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_11 11 - -/** -* Valid values for PSP_SYSTEMPARAM_ID_INT_WLAN_POWERSAVE -*/ -#define PSP_SYSTEMPARAM_WLAN_POWERSAVE_OFF 0 -#define PSP_SYSTEMPARAM_WLAN_POWERSAVE_ON 1 - -/** -* Valid values for PSP_SYSTEMPARAM_ID_INT_DATE_FORMAT -*/ -#define PSP_SYSTEMPARAM_DATE_FORMAT_YYYYMMDD 0 -#define PSP_SYSTEMPARAM_DATE_FORMAT_MMDDYYYY 1 -#define PSP_SYSTEMPARAM_DATE_FORMAT_DDMMYYYY 2 - -/** -* Valid values for PSP_SYSTEMPARAM_ID_INT_DAYLIGHTSAVINGS -*/ -#define PSP_SYSTEMPARAM_DAYLIGHTSAVINGS_STD 0 -#define PSP_SYSTEMPARAM_DAYLIGHTSAVINGS_SAVING 1 - -/** -* Valid values for PSP_SYSTEMPARAM_ID_INT_BUTTON_PREFERENCE -*/ -#define PSP_SYSTEMPARAM_BUTTON_CIRCLE 0 -#define PSP_SYSTEMPARAM_BUTTON_CROSS 1 - //TODO: should save to config file u32 sceUtilitySetSystemParamString(u32 id, u32 strPtr) { @@ -430,7 +378,7 @@ u32 sceUtilityGetSystemParamString(u32 id, u32 destaddr, u32 unknownparam) char *buf = (char *)Memory::GetPointer(destaddr); switch (id) { case PSP_SYSTEMPARAM_ID_STRING_NICKNAME: - strcpy(buf, "shadow"); + strcpy(buf, g_Config.sNickName.c_str()); break; default: @@ -440,37 +388,37 @@ u32 sceUtilityGetSystemParamString(u32 id, u32 destaddr, u32 unknownparam) return 0; } -//TODO: Should load from config file u32 sceUtilityGetSystemParamInt(u32 id, u32 destaddr) { DEBUG_LOG(HLE,"sceUtilityGetSystemParamInt(%i, %08x)", id,destaddr); u32 param = 0; switch (id) { case PSP_SYSTEMPARAM_ID_INT_ADHOC_CHANNEL: - param = PSP_SYSTEMPARAM_ADHOC_CHANNEL_AUTOMATIC; + param = g_Config.iWlanAdhocChannel; break; case PSP_SYSTEMPARAM_ID_INT_WLAN_POWERSAVE: - param = PSP_SYSTEMPARAM_WLAN_POWERSAVE_OFF; + param = g_Config.bWlanPowerSave?PSP_SYSTEMPARAM_WLAN_POWERSAVE_ON:PSP_SYSTEMPARAM_WLAN_POWERSAVE_OFF; break; case PSP_SYSTEMPARAM_ID_INT_DATE_FORMAT: - param = PSP_SYSTEMPARAM_DATE_FORMAT_DDMMYYYY; + param = g_Config.iDateFormat; break; case PSP_SYSTEMPARAM_ID_INT_TIME_FORMAT: - param = g_Config.itimeformat; + param = g_Config.itimeformat?PSP_SYSTEMPARAM_TIME_FORMAT_12HR:PSP_SYSTEMPARAM_TIME_FORMAT_24HR; break; case PSP_SYSTEMPARAM_ID_INT_TIMEZONE: - param = 60; + param = g_Config.iTimeZone; break; case PSP_SYSTEMPARAM_ID_INT_DAYLIGHTSAVINGS: - param = PSP_SYSTEMPARAM_TIME_FORMAT_24HR; + param = g_Config.bDayLightSavings?PSP_SYSTEMPARAM_DAYLIGHTSAVINGS_SAVING:PSP_SYSTEMPARAM_DAYLIGHTSAVINGS_STD; break; case PSP_SYSTEMPARAM_ID_INT_LANGUAGE: param = g_Config.ilanguage; break; case PSP_SYSTEMPARAM_ID_INT_BUTTON_PREFERENCE: - param = PSP_SYSTEMPARAM_BUTTON_CROSS; + param = g_Config.bButtonPreference?PSP_SYSTEMPARAM_BUTTON_CROSS:PSP_SYSTEMPARAM_BUTTON_CIRCLE; break; case PSP_SYSTEMPARAM_ID_INT_LOCK_PARENTAL_LEVEL: + // TODO param = 0; break; default: diff --git a/Core/HLE/sceUtility.h b/Core/HLE/sceUtility.h index d87948e250..6570224641 100644 --- a/Core/HLE/sceUtility.h +++ b/Core/HLE/sceUtility.h @@ -19,25 +19,62 @@ class PointerWrap; -/** -* Valid values for PSP_SYSTEMPARAM_ID_INT_LANGUAGE -*/ -#define PSP_SYSTEMPARAM_LANGUAGE_JAPANESE 0 -#define PSP_SYSTEMPARAM_LANGUAGE_ENGLISH 1 -#define PSP_SYSTEMPARAM_LANGUAGE_FRENCH 2 -#define PSP_SYSTEMPARAM_LANGUAGE_SPANISH 3 -#define PSP_SYSTEMPARAM_LANGUAGE_GERMAN 4 -#define PSP_SYSTEMPARAM_LANGUAGE_ITALIAN 5 -#define PSP_SYSTEMPARAM_LANGUAGE_DUTCH 6 -#define PSP_SYSTEMPARAM_LANGUAGE_PORTUGUESE 7 -#define PSP_SYSTEMPARAM_LANGUAGE_RUSSIAN 8 -#define PSP_SYSTEMPARAM_LANGUAGE_KOREAN 9 +// Valid values for PSP_SYSTEMPARAM_ID_INT_LANGUAGE +#define PSP_SYSTEMPARAM_LANGUAGE_JAPANESE 0 +#define PSP_SYSTEMPARAM_LANGUAGE_ENGLISH 1 +#define PSP_SYSTEMPARAM_LANGUAGE_FRENCH 2 +#define PSP_SYSTEMPARAM_LANGUAGE_SPANISH 3 +#define PSP_SYSTEMPARAM_LANGUAGE_GERMAN 4 +#define PSP_SYSTEMPARAM_LANGUAGE_ITALIAN 5 +#define PSP_SYSTEMPARAM_LANGUAGE_DUTCH 6 +#define PSP_SYSTEMPARAM_LANGUAGE_PORTUGUESE 7 +#define PSP_SYSTEMPARAM_LANGUAGE_RUSSIAN 8 +#define PSP_SYSTEMPARAM_LANGUAGE_KOREAN 9 #define PSP_SYSTEMPARAM_LANGUAGE_CHINESE_TRADITIONAL 10 #define PSP_SYSTEMPARAM_LANGUAGE_CHINESE_SIMPLIFIED 11 #define PSP_SYSTEMPARAM_TIME_FORMAT_24HR 0 #define PSP_SYSTEMPARAM_TIME_FORMAT_12HR 1 +#define PSP_SYSTEMPARAM_ID_STRING_NICKNAME 1 +#define PSP_SYSTEMPARAM_ID_INT_ADHOC_CHANNEL 2 +#define PSP_SYSTEMPARAM_ID_INT_WLAN_POWERSAVE 3 +#define PSP_SYSTEMPARAM_ID_INT_DATE_FORMAT 4 +#define PSP_SYSTEMPARAM_ID_INT_TIME_FORMAT 5 +//Timezone offset from UTC in minutes, (EST = -300 = -5 * 60) +#define PSP_SYSTEMPARAM_ID_INT_TIMEZONE 6 +#define PSP_SYSTEMPARAM_ID_INT_DAYLIGHTSAVINGS 7 +#define PSP_SYSTEMPARAM_ID_INT_LANGUAGE 8 +#define PSP_SYSTEMPARAM_ID_INT_BUTTON_PREFERENCE 9 +#define PSP_SYSTEMPARAM_ID_INT_LOCK_PARENTAL_LEVEL 10 + +// Return values for the SystemParam functions +#define PSP_SYSTEMPARAM_RETVAL_OK 0 +#define PSP_SYSTEMPARAM_RETVAL_FAIL 0x80110103 + +// Valid values for PSP_SYSTEMPARAM_ID_INT_ADHOC_CHANNEL +#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_AUTOMATIC 0 +#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_1 1 +#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_6 6 +#define PSP_SYSTEMPARAM_ADHOC_CHANNEL_11 11 + +// Valid values for PSP_SYSTEMPARAM_ID_INT_WLAN_POWERSAVE +#define PSP_SYSTEMPARAM_WLAN_POWERSAVE_OFF 0 +#define PSP_SYSTEMPARAM_WLAN_POWERSAVE_ON 1 + +// Valid values for PSP_SYSTEMPARAM_ID_INT_DATE_FORMAT +#define PSP_SYSTEMPARAM_DATE_FORMAT_YYYYMMDD 0 +#define PSP_SYSTEMPARAM_DATE_FORMAT_MMDDYYYY 1 +#define PSP_SYSTEMPARAM_DATE_FORMAT_DDMMYYYY 2 + +// Valid values for PSP_SYSTEMPARAM_ID_INT_DAYLIGHTSAVINGS +#define PSP_SYSTEMPARAM_DAYLIGHTSAVINGS_STD 0 +#define PSP_SYSTEMPARAM_DAYLIGHTSAVINGS_SAVING 1 + +// Valid values for PSP_SYSTEMPARAM_ID_INT_BUTTON_PREFERENCE +#define PSP_SYSTEMPARAM_BUTTON_CIRCLE 0 +#define PSP_SYSTEMPARAM_BUTTON_CROSS 1 + void __UtilityInit(); void __UtilityDoState(PointerWrap &p); void __UtilityShutdown();