usbloadergx/source/sys.cpp

185 lines
3.5 KiB
C++
Raw Normal View History

#include <gctypes.h>
#include <ogc/system.h>
#include <wiiuse/wpad.h>
#include "mload/mload.h"
#include "settings/CSettings.h"
#include "settings/newtitles.h"
#include "language/gettext.h"
#include "utils/ResourceManager.h"
#include "FontSystem.h"
#include "audio.h"
#include "fatmounter.h"
#include "lstub.h"
#include "menu.h"
#include "video.h"
#include "gecko.h"
#include "xml/xml.h"
extern char game_partition[6];
extern u8 load_from_fs;
//Wiilight stuff
2010-09-24 02:48:03 +02:00
static vu32 *_wiilight_reg = (u32*) 0xCD0000C0;
void wiilight(int enable) // Toggle wiilight (thanks Bool for wiilight source)
{
2010-09-24 02:48:03 +02:00
u32 val = (*_wiilight_reg & ~0x20);
if (enable && Settings.wiilight) val |= 0x20;
*_wiilight_reg = val;
}
/* Variables */
u8 shutdown = 0;
u8 reset = 0;
2010-09-24 02:48:03 +02:00
void __Sys_ResetCallback(void)
{
/* Reboot console */
reset = 1;
}
2010-09-24 02:48:03 +02:00
void __Sys_PowerCallback(void)
{
/* Poweroff console */
shutdown = 1;
}
2010-09-24 02:48:03 +02:00
void Sys_Init(void)
{
/* Initialize video subsytem */
//VIDEO_Init();
/* Set RESET/POWER button callback */
2010-09-24 02:48:03 +02:00
SYS_SetResetCallback(__Sys_ResetCallback);
SYS_SetPowerCallback(__Sys_PowerCallback);
}
void AppCleanUp(void)
{
extern u8 mountMethod;
gprintf("Exiting main GUI. mountMethod = %d\n", mountMethod);
Settings.Save();
ExitGUIThreads();
delete bgMusic;
delete btnSoundClick;
delete btnSoundOver;
delete btnSoundClick2;
delete background;
delete bgImg;
delete mainWindow;
for (int i = 0; i < 4; i++)
delete pointer[i];
delete GameRegionTxt;
delete GameIDTxt;
delete cover;
delete coverImg;
gettextCleanUp();
CloseXMLDatabase();
ClearFontData();
NewTitles::DestroyInstance();
StopGX();
ShutdownAudio();
ResourceManager::DestroyInstance();
WPAD_Flush(0);
WPAD_Disconnect(0);
WPAD_Shutdown();
}
void ExitApp(void)
{
AppCleanUp();
UnmountNTFS();
SDCard_deInit();
USBDevice_deInit();
}
2010-09-24 02:48:03 +02:00
void Sys_Reboot(void)
{
/* Restart console */
ExitApp();
STM_RebootSystem();
}
#define ShutdownToDefault 0
#define ShutdownToIdle 1
#define ShutdownToStandby 2
2010-09-24 02:48:03 +02:00
static void _Sys_Shutdown(int SHUTDOWN_MODE)
{
ExitApp();
/* Poweroff console */
2010-09-24 02:48:03 +02:00
if ((CONF_GetShutdownMode() == CONF_SHUTDOWN_IDLE && SHUTDOWN_MODE != ShutdownToStandby) || SHUTDOWN_MODE
== ShutdownToIdle)
{
s32 ret;
/* Set LED mode */
ret = CONF_GetIdleLedMode();
2010-09-24 02:48:03 +02:00
if (ret >= 0 && ret <= 2) STM_SetLedMode(ret);
/* Shutdown to idle */
STM_ShutdownToIdle();
}
else
{
/* Shutdown to standby */
STM_ShutdownToStandby();
}
}
2010-09-24 02:48:03 +02:00
void Sys_Shutdown(void)
{
2010-09-24 02:48:03 +02:00
_Sys_Shutdown(ShutdownToDefault);
}
2010-09-24 02:48:03 +02:00
void Sys_ShutdownToIdel(void)
{
2010-09-24 02:48:03 +02:00
_Sys_Shutdown(ShutdownToIdle);
}
2010-09-24 02:48:03 +02:00
void Sys_ShutdownToStandby(void)
{
2010-09-24 02:48:03 +02:00
_Sys_Shutdown(ShutdownToStandby);
}
2010-09-24 02:48:03 +02:00
void Sys_LoadMenu(void)
{
ExitApp();
/* Return to the Wii system menu */
2010-09-24 02:48:03 +02:00
SYS_ResetSystem(SYS_RETURNTOMENU, 0, 0);
}
2010-09-24 02:48:03 +02:00
void Sys_BackToLoader(void)
{
2010-09-24 02:48:03 +02:00
if (hbcStubAvailable())
{
ExitApp();
2010-09-24 02:48:03 +02:00
exit(0);
}
// Channel Version
Sys_LoadMenu();
}
void ScreenShot()
{
time_t rawtime;
struct tm * timeinfo;
2010-09-24 02:48:03 +02:00
char buffer[80];
char buffer2[80];
2010-09-24 02:48:03 +02:00
time(&rawtime);
timeinfo = localtime(&rawtime);
//USBLoader_GX_ScreenShot-Month_Day_Hour_Minute_Second_Year.png
2010-09-24 02:48:03 +02:00
strftime(buffer, 80, "USBLoader_GX_ScreenShot-%b%d%H%M%S%y.png", timeinfo);
2010-10-27 16:45:27 +02:00
sprintf(buffer2, "%s/config/%s", Settings.BootDevice, buffer);
2010-09-24 02:48:03 +02:00
TakeScreenshot(buffer2);
}