mirror of
https://github.com/ApacheThunder/EZP_Bootstrap.git
synced 2025-06-18 19:25:31 -04:00

* Requires unlocked flash. (aka EZP cart has not had fw1.06 run on it yet). EZP flash can be unlocked with EZP_Recovery_Tool however requires desoldering WP# win on flash chip to do this.
72 lines
1.6 KiB
C
72 lines
1.6 KiB
C
#include <nds.h>
|
|
|
|
volatile bool switchedMode = false;
|
|
volatile bool exitflag = false;
|
|
|
|
// libnds messed up the original SWI bios call ASM.
|
|
// They used r0 instead of r2. This reimplementation fixes that issue for now.
|
|
extern void swiSwitchToGBAModeFixed();
|
|
|
|
void powerButtonCB() { exitflag = true; }
|
|
|
|
void gbaMode() {
|
|
vu32 vr;
|
|
|
|
REG_IME = IME_DISABLE;
|
|
for(vr = 0; vr < 0x1000; vr++); // Wait ARM9
|
|
|
|
// writePowerManagement(PM_BACKLIGHT_LEVEL, (backlightLevel & 0x03));
|
|
writePowerManagement(PM_BACKLIGHT_LEVEL, (PersonalData->defaultBrightness & 0x03));
|
|
|
|
if (PersonalData->gbaScreen) {
|
|
writePowerManagement(PM_CONTROL_REG, PM_BACKLIGHT_BOTTOM | PM_SOUND_AMP);
|
|
} else {
|
|
writePowerManagement(PM_CONTROL_REG, PM_BACKLIGHT_TOP | PM_SOUND_AMP);
|
|
}
|
|
swiSwitchToGBAModeFixed();
|
|
while(1);
|
|
}
|
|
|
|
void fifoCheckHandler() {
|
|
if (!switchedMode) {
|
|
if (fifoCheckValue32(FIFO_USER_01)) {
|
|
switchedMode = true;
|
|
gbaMode();
|
|
}
|
|
}
|
|
}
|
|
|
|
void VblankHandler() { fifoCheckHandler(); }
|
|
void VcountHandler() { inputGetAndSend(); }
|
|
|
|
int main(void) {
|
|
readUserSettings();
|
|
ledBlink(0);
|
|
|
|
irqInit();
|
|
|
|
initClockIRQ();
|
|
fifoInit();
|
|
touchInit();
|
|
|
|
SetYtrigger(80);
|
|
|
|
installSystemFIFO();
|
|
|
|
irqSet(IRQ_VCOUNT, VcountHandler);
|
|
irqSet(IRQ_VBLANK, VblankHandler);
|
|
|
|
irqEnable(IRQ_VBLANK | IRQ_VCOUNT);
|
|
|
|
setPowerButtonCB(powerButtonCB);
|
|
|
|
/*if (REG_SNDEXTCNT != 0) {
|
|
i2cWriteRegister(0x4A, 0x12, 0x00); // Press power-button for auto-reset
|
|
i2cWriteRegister(0x4A, 0x70, 0x01); // Bootflag = Warmboot/SkipHealthSafety
|
|
}*/
|
|
|
|
while(1)swiWaitForVBlank();
|
|
return 0;
|
|
}
|
|
|