Make sceUtility test pass (assuming the last line is wrong)

It has to be more correct than before even if its still not 100%
This commit is contained in:
kev :) 2012-11-14 23:04:40 +00:00
parent f6ebad2f81
commit d0fdd4c172

View File

@ -376,34 +376,129 @@ void sceUtilityNetconfGetStatus()
RETURN(__UtilityGetStatus());
}
#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
/**
* #9 seems to be Region or maybe X/O button swap.
* It doesn't exist on JAP v1.0
* is 1 on NA v1.5s
* is 0 on JAP v1.5s
* is read-only
*/
#define PSP_SYSTEMPARAM_ID_INT_UNKNOWN 9
void sceUtilityGetSystemParamString()
/**
* 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_TIME_FORMAT
*/
#define PSP_SYSTEMPARAM_TIME_FORMAT_24HR 0
#define PSP_SYSTEMPARAM_TIME_FORMAT_12HR 1
/**
* 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_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_KOREAN 8
u32 sceUtilityGetSystemParamString(u32 id, u32 destaddr, u32 unknownparam)
{
int id = PARAM(0);
DEBUG_LOG(HLE,"sceUtilityGetSystemParamString(%i, %08x, %i)", id, PARAM(1), PARAM(2));
char *buf = (char *)Memory::GetPointer(PARAM(1));
strcpy(buf, "FAKE");
RETURN(0);
//DEBUG_LOG(HLE,"sceUtilityGetSystemParamString(%i, %08x, %i)", id,destaddr,unknownparam);
char *buf = (char *)Memory::GetPointer(destaddr);
switch (id) {
case PSP_SYSTEMPARAM_ID_STRING_NICKNAME:
strcpy(buf, "shadow");
break;
default:
return PSP_SYSTEMPARAM_RETVAL_FAIL;
}
return 0;
}
void sceUtilityGetSystemParamInt()
u32 sceUtilityGetSystemParamInt(u32 id, u32 destaddr)
{
DEBUG_LOG(HLE,"sceUtilityGetSystemParamInt(%i, %08x)", PARAM(0), PARAM(1));
u32 *outPtr = (u32*)Memory::GetPointer(PARAM(1));
const int defaultValues[16] =
{
0,
0,
0,
0,//date notation
0,//time notation
0,//timezone offset in minutes
0,//daylight savings
1,//language (0=jap 1=eng)
0,
};
*outPtr = defaultValues[PARAM(0)];
RETURN(0);
DEBUG_LOG(HLE,"sceUtilityGetSystemParamInt(%i, %08x)", id,destaddr);
u32 *outPtr = (u32*)Memory::GetPointer(destaddr);
switch (id) {
case PSP_SYSTEMPARAM_ID_INT_ADHOC_CHANNEL:
*outPtr = PSP_SYSTEMPARAM_ADHOC_CHANNEL_AUTOMATIC;
break;
case PSP_SYSTEMPARAM_ID_INT_WLAN_POWERSAVE:
*outPtr = PSP_SYSTEMPARAM_WLAN_POWERSAVE_OFF;
break;
case PSP_SYSTEMPARAM_ID_INT_DATE_FORMAT:
*outPtr = PSP_SYSTEMPARAM_DATE_FORMAT_DDMMYYYY;
break;
case PSP_SYSTEMPARAM_ID_INT_TIME_FORMAT:
*outPtr = PSP_SYSTEMPARAM_TIME_FORMAT_24HR;
break;
case PSP_SYSTEMPARAM_ID_INT_TIMEZONE:
*outPtr = 60;
break;
case PSP_SYSTEMPARAM_ID_INT_DAYLIGHTSAVINGS:
*outPtr = PSP_SYSTEMPARAM_TIME_FORMAT_24HR;
break;
case PSP_SYSTEMPARAM_ID_INT_LANGUAGE:
*outPtr = PSP_SYSTEMPARAM_LANGUAGE_ENGLISH;
break;
case PSP_SYSTEMPARAM_ID_INT_UNKNOWN:
*outPtr = 1;
break;
default:
return PSP_SYSTEMPARAM_RETVAL_FAIL;
}
return 0;
}
u32 sceUtilityLoadNetModule(u32 module)
@ -436,8 +531,8 @@ const HLEFunction sceUtility[] =
{0xf3f76017, sceUtilityOskGetStatus, "sceUtilityOskGetStatus"},
{0x41e30674, 0, "sceUtilitySetSystemParamString"},
{0x34b78343, sceUtilityGetSystemParamString, "sceUtilityGetSystemParamString"},
{0xA5DA2406, sceUtilityGetSystemParamInt, "sceUtilityGetSystemParamInt"},
{0x34b78343, &WrapU_UUU<sceUtilityGetSystemParamString>, "sceUtilityGetSystemParamString"},
{0xA5DA2406, &WrapU_UU<sceUtilityGetSystemParamInt>, "sceUtilityGetSystemParamInt"},
{0xc492f751, 0, "sceUtilityGameSharingInitStart"},
{0xefc6f80f, 0, "sceUtilityGameSharingShutdownStart"},
{0x7853182d, 0, "sceUtilityGameSharingUpdate"},