(3DS) Implement frontend rating - will return 6 for New 3DS/2DS,
and 3 for Old 3DS/2DS
This commit is contained in:
parent
6254ddecf2
commit
b788bf71bd
|
@ -21,6 +21,9 @@
|
||||||
#include <boolean.h>
|
#include <boolean.h>
|
||||||
|
|
||||||
#include <3ds.h>
|
#include <3ds.h>
|
||||||
|
#include <3ds/svc.h>
|
||||||
|
#include <3ds/os.h>
|
||||||
|
#include <3ds/services/cfgu.h>
|
||||||
|
|
||||||
#include <file/file_path.h>
|
#include <file/file_path.h>
|
||||||
|
|
||||||
|
@ -99,10 +102,14 @@ static void frontend_ctr_get_environment_settings(int *argc, char *argv[],
|
||||||
|
|
||||||
static void frontend_ctr_deinit(void *data)
|
static void frontend_ctr_deinit(void *data)
|
||||||
{
|
{
|
||||||
extern PrintConsole* currentConsole;
|
|
||||||
Handle lcd_handle;
|
Handle lcd_handle;
|
||||||
|
u32 parallax_layer_reg_state;
|
||||||
u8 not_2DS;
|
u8 not_2DS;
|
||||||
|
|
||||||
|
extern PrintConsole* currentConsole;
|
||||||
|
|
||||||
(void)data;
|
(void)data;
|
||||||
|
|
||||||
#ifndef IS_SALAMANDER
|
#ifndef IS_SALAMANDER
|
||||||
verbosity_enable();
|
verbosity_enable();
|
||||||
|
|
||||||
|
@ -115,16 +122,17 @@ static void frontend_ctr_deinit(void *data)
|
||||||
wait_for_input();
|
wait_for_input();
|
||||||
|
|
||||||
CFGU_GetModelNintendo2DS(¬_2DS);
|
CFGU_GetModelNintendo2DS(¬_2DS);
|
||||||
|
|
||||||
if(not_2DS && srvGetServiceHandle(&lcd_handle, "gsp::Lcd") >= 0)
|
if(not_2DS && srvGetServiceHandle(&lcd_handle, "gsp::Lcd") >= 0)
|
||||||
{
|
{
|
||||||
u32 *cmdbuf = getThreadCommandBuffer();
|
u32 *cmdbuf = getThreadCommandBuffer();
|
||||||
cmdbuf[0] = 0x00110040;
|
cmdbuf[0] = 0x00110040;
|
||||||
cmdbuf[1] = 2;
|
cmdbuf[1] = 2;
|
||||||
svcSendSyncRequest(lcd_handle);
|
svcSendSyncRequest(lcd_handle);
|
||||||
svcCloseHandle(lcd_handle);
|
svcCloseHandle(lcd_handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
u32 parallax_layer_reg_state = (*(float*)0x1FF81080 == 0.0)? 0x0 : 0x00010001;
|
parallax_layer_reg_state = (*(float*)0x1FF81080 == 0.0)? 0x0 : 0x00010001;
|
||||||
GSPGPU_WriteHWRegs(0x202000, ¶llax_layer_reg_state, 4);
|
GSPGPU_WriteHWRegs(0x202000, ¶llax_layer_reg_state, 4);
|
||||||
|
|
||||||
cfguExit();
|
cfguExit();
|
||||||
|
@ -144,6 +152,7 @@ static void frontend_ctr_exec(const char *path, bool should_load_game)
|
||||||
char args[0x300 - 0x4];
|
char args[0x300 - 0x4];
|
||||||
}param;
|
}param;
|
||||||
int len;
|
int len;
|
||||||
|
uint64_t app_ID;
|
||||||
Result res;
|
Result res;
|
||||||
extern char __argv_hmac[0x20];
|
extern char __argv_hmac[0x20];
|
||||||
|
|
||||||
|
@ -164,7 +173,6 @@ static void frontend_ctr_exec(const char *path, bool should_load_game)
|
||||||
RARCH_LOG("content path: [%s].\n", path_get(RARCH_PATH_CONTENT));
|
RARCH_LOG("content path: [%s].\n", path_get(RARCH_PATH_CONTENT));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
uint64_t app_ID;
|
|
||||||
if(!path || !*path)
|
if(!path || !*path)
|
||||||
{
|
{
|
||||||
APT_GetProgramID(&app_ID);
|
APT_GetProgramID(&app_ID);
|
||||||
|
@ -191,12 +199,13 @@ static void frontend_ctr_exec(const char *path, bool should_load_game)
|
||||||
RARCH_LOG("APP_ID [%s] -- > 0x%016llX.\n", app_ID_str, app_ID);
|
RARCH_LOG("APP_ID [%s] -- > 0x%016llX.\n", app_ID_str, app_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(R_SUCCEEDED(res = APT_PrepareToDoApplicationJump(0, app_ID, 0x1)))
|
res = APT_PrepareToDoApplicationJump(0, app_ID, 0x1);
|
||||||
|
if(R_SUCCEEDED(res))
|
||||||
res = APT_DoApplicationJump(¶m, sizeof(param.argc) + len, __argv_hmac);
|
res = APT_DoApplicationJump(¶m, sizeof(param.argc) + len, __argv_hmac);
|
||||||
|
|
||||||
if(res)
|
if(res)
|
||||||
{
|
{
|
||||||
RARCH_LOG("Failed to load core\n");
|
RARCH_ERR("Failed to load core\n");
|
||||||
dump_result_value(res);
|
dump_result_value(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,6 +379,28 @@ static void frontend_ctr_init(void *data)
|
||||||
|
|
||||||
static int frontend_ctr_get_rating(void)
|
static int frontend_ctr_get_rating(void)
|
||||||
{
|
{
|
||||||
|
u8 device_model = 0xFF;
|
||||||
|
CFGU_GetSystemModel(&device_model);/*(0 = O3DS, 1 = O3DSXL, 2 = N3DS, 3 = 2DS, 4 = N3DSXL, 5 = N2DSXL)*/
|
||||||
|
|
||||||
|
switch (device_model)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 1:
|
||||||
|
case 3:
|
||||||
|
/*Old 3/2DS*/
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
case 5:
|
||||||
|
/*New 3/2DS*/
|
||||||
|
return 6;
|
||||||
|
|
||||||
|
default:
|
||||||
|
/*Unknown Device Or Check Failed*/
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
return 3;
|
return 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue