Simplify RAM reset adaptation for modern

This commit is contained in:
PikalaxALT 2020-11-06 12:29:40 -05:00
parent 99dd461bef
commit c70c44fa48
2 changed files with 5 additions and 17 deletions

View File

@ -91,6 +91,10 @@ Init: @ 8000204
ldr r1, =INTR_VECTOR
adr r0, IntrMain
str r0, [r1]
.if MODERN
mov r0, #255 @ RESET_ALL
swi #1 << 16
.endif @ MODERN
ldr r1, =AgbMain + 1
mov lr, pc
bx r1

View File

@ -85,25 +85,9 @@ 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"
"\tcmp\tr1, r2\n"
"\tbcc\t.LCU0\n"
);
#else
#if !MODERN
RegisterRamReset(RESET_ALL);
#endif //MODERN
*(vu16 *)BG_PLTT = 0x7FFF;