summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/crt0.s4
-rw-r--r--src/main.c18
2 files changed, 5 insertions, 17 deletions
diff --git a/src/crt0.s b/src/crt0.s
index cb7c93a6b..49f214f80 100644
--- a/src/crt0.s
+++ b/src/crt0.s
@@ -91,6 +91,10 @@ Init: @ 8000204
ldr r1, =INTR_VECTOR
adr r0, IntrMain
str r0, [r1]
+ .if MODERN
+ mov r0, #255 @ RESET_ALL
+ svc #1 << 16
+ .endif @ MODERN
ldr r1, =AgbMain + 1
mov lr, pc
bx r1
diff --git a/src/main.c b/src/main.c
index ab0c23284..9fd1d0a35 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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;