You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

79 lines
1.5 KiB

#include <stdlib.h>
#include <stdio.h>
#include <3ds.h>
#include "platform/ctr/system.h"
bool isN3DS;
aptHookCookie cookie;
void aptHookFunc(APT_HookType hookType, void *param)
{
switch (hookType) {
case APTHOOK_ONSUSPEND:
ctr_lcd_backlight_on();
break;
case APTHOOK_ONSLEEP:
break;
case APTHOOK_ONRESTORE:
ctr_lcd_backlight_off();
break;
case APTHOOK_ONWAKEUP:
ctr_lcd_backlight_off();
break;
case APTHOOK_ONEXIT:
ctr_lcd_backlight_on();
break;
default:
break;
}
}
void ctr_lcd_backlight_on()
{
gspLcdInit();
GSPLCD_PowerOnBacklight(GSPLCD_SCREEN_BOTTOM);
gspLcdExit();
}
void ctr_lcd_backlight_off()
{
gspLcdInit();
GSPLCD_PowerOffBacklight(GSPLCD_SCREEN_BOTTOM);
gspLcdExit();
}
bool ctr_check_dsp()
{
FILE *dsp = fopen("sdmc:/3ds/dspfirm.cdc", "r");
if (dsp == NULL) {
fclose(dsp);
gfxInitDefault();
errorConf error;
errorInit(&error, ERROR_TEXT, CFG_LANGUAGE_EN);
errorText(&error, "Cannot find DSP firmware!\n\n\"sdmc:/3ds/dspfirm.cdc\"\n\nRun \'DSP1\' atleast once to\ndump your DSP firmware.");
errorDisp(&error);
gfxExit();
return false;
}
fclose(dsp);
return true;
}
void ctr_sys_init()
{
if (ctr_check_dsp() == false)
exit(0);
aptHook(&cookie, aptHookFunc, NULL);
APT_CheckNew3DS(&isN3DS);
if (isN3DS)
osSetSpeedupEnable(true);
ctr_lcd_backlight_off();
atexit([]() { ctr_lcd_backlight_on(); });
romfsInit();
atexit([]() { romfsExit(); });
}