diff --git a/SourceX/platform/ctr/system.cpp b/SourceX/platform/ctr/system.cpp index 0115cbd6f..d50210608 100644 --- a/SourceX/platform/ctr/system.cpp +++ b/SourceX/platform/ctr/system.cpp @@ -5,6 +5,44 @@ 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"); @@ -27,10 +65,15 @@ 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(); }); } \ No newline at end of file diff --git a/SourceX/platform/ctr/system.h b/SourceX/platform/ctr/system.h index 8e2f4b277..b70fd15d4 100644 --- a/SourceX/platform/ctr/system.h +++ b/SourceX/platform/ctr/system.h @@ -1,5 +1,8 @@ #pragma once +void ctr_lcd_backlight_on(); +void ctr_lcd_backlight_off(); + bool ctr_check_dsp(); void ctr_sys_init();