diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/main.c b/src/main.c index be025c79f..e2c96c78f 100644 --- a/src/main.c +++ b/src/main.c @@ -28,11 +28,15 @@ const u8 gGameVersion = GAME_VERSION; const u8 gGameLanguage = GAME_LANGUAGE; +#if MODERN +const char BuildDateTime[] = __DATE__ " " __TIME__; +#else #if REVISION == 0 const char BuildDateTime[] = "2004 04 26 11:20"; #else const char BuildDateTime[] = "2004 07 20 09:30"; -#endif +#endif //REVISION +#endif //MODERN const IntrFunc gIntrTableTemplate[] = { @@ -84,7 +88,34 @@ void EnableVCountIntrAtLine150(void); void AgbMain() { +#if MODERN + // Modern compilers are liberal with the stack on entry to this function, + // so RegisterRamReset may crash if it resets IWRAM. + RegisterRamReset(RESET_ALL & ~RESET_IWRAM); + asm("mov\tr1, #0xC0\n" + "\tlsl\tr1, r1, #0x12\n" + "\tmov r2, #0xFC\n" + "\tlsl r2, r2, #0x7\n" + "\tadd\tr2, r1, r2\n" + "\tmov\tr0, #0\n" + "\tmov\tr3, r0\n" + "\tmov\tr4, r0\n" + "\tmov\tr5, r0\n" + ".LCU0:\n" + "\tstmia r1!, {r0, r3, r4, r5}\n" + "\tstmia r1!, {r0, r3, r4, r5}\n" + "\tstmia r1!, {r0, r3, r4, r5}\n" + "\tstmia r1!, {r0, r3, r4, r5}\n" + "\tstmia r1!, {r0, r3, r4, r5}\n" + "\tstmia r1!, {r0, r3, r4, r5}\n" + "\tstmia r1!, {r0, r3, r4, r5}\n" + "\tstmia r1!, {r0, r3, r4, r5}\n" + "\tcmp\tr1, r2\n" + "\tbcc\t.LCU0\n" + ); +#else RegisterRamReset(RESET_ALL); +#endif //MODERN *(vu16 *)BG_PLTT = RGB_WHITE; InitGpuRegManager(); REG_WAITCNT = WAITCNT_PREFETCH_ENABLE | WAITCNT_WS0_S_1 | WAITCNT_WS0_N_3; |