summaryrefslogtreecommitdiff
path: root/src/field_specials.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/field_specials.c')
-rw-r--r--src/field_specials.c212
1 files changed, 16 insertions, 196 deletions
diff --git a/src/field_specials.c b/src/field_specials.c
index 043945a2f..f9ae911c8 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1142,8 +1142,9 @@ void sub_810E984(u8 taskId)
}
}
-// This function, as written, swaps the roles of r4 and r5 throughout.
-#ifdef NONMATCHING
+/* Removing the NONMATCHING block will swap the roles of r4 and r5 throughout.
+Could possibly be fixed by writing code which increases the amount of references to newPos,
+or decreasing the amount of references to i.*/
bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput)
{
u8 i;
@@ -1176,116 +1177,15 @@ bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput)
for (i=0; i<5 && gUnknown_03000760[newPos].var0 != 16; newPos++, i++)
{
Menu_PrintText(gUnknown_083F8380[gUnknown_03000760[newPos].var0], 1, i * 2 + 1);
+#ifndef NONMATCHING
+ asm(""::"r"(newPos));
+ asm(""::"r"(newPos));
+ asm(""::"r"(newPos));
+#endif
}
}
return flag;
}
-#else
-NAKED
-bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tmov r7, r8\n"
- "\tpush {r7}\n"
- "\tlsls r0, 24\n"
- "\tlsrs r2, r0, 24\n"
- "\tadds r5, r2, 0\n"
- "\tlsls r1, 24\n"
- "\tlsrs r1, 24\n"
- "\tadds r3, r1, 0\n"
- "\tmovs r7, 0\n"
- "\tmovs r4, 0\n"
- "\tldr r0, _0810EAEC @ =gUnknown_0203925A\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x4\n"
- "\tbhi _0810EAF0\n"
- "\tmovs r0, 0\n"
- "\tb _0810EB78\n"
- "\t.align 2, 0\n"
- "_0810EAEC: .4byte gUnknown_0203925A\n"
- "_0810EAF0:\n"
- "\tcmp r1, 0x40\n"
- "\tbne _0810EB04\n"
- "\tcmp r2, 0\n"
- "\tbne _0810EB18\n"
- "\tldr r0, _0810EB00 @ =gUnknown_0203925B\n"
- "\tldrb r4, [r0]\n"
- "\tmovs r7, 0x1\n"
- "\tb _0810EB1C\n"
- "\t.align 2, 0\n"
- "_0810EB00: .4byte gUnknown_0203925B\n"
- "_0810EB04:\n"
- "\tcmp r3, 0x80\n"
- "\tbne _0810EB18\n"
- "\tcmp r5, 0x4\n"
- "\tbne _0810EB18\n"
- "\tldr r0, _0810EB84 @ =gUnknown_0203925B\n"
- "\tldrb r0, [r0]\n"
- "\tsubs r0, 0x4\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tmovs r7, 0x1\n"
- "_0810EB18:\n"
- "\tcmp r7, 0\n"
- "\tbeq _0810EB76\n"
- "_0810EB1C:\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0x5\n"
- "\tbl sub_810EB90\n"
- "\tmovs r0, 0x2\n"
- "\tmovs r1, 0x1\n"
- "\tmovs r2, 0x7\n"
- "\tmovs r3, 0xA\n"
- "\tbl Menu_BlankWindowRect\n"
- "\tmovs r5, 0\n"
- "\tldr r2, _0810EB88 @ =gUnknown_03000760\n"
- "\tlsls r1, r4, 2\n"
- "\tadds r0, r1, r2\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x10\n"
- "\tbeq _0810EB76\n"
- "\tldr r0, _0810EB8C @ =gUnknown_083F8380\n"
- "\tmov r8, r0\n"
- "\tadds r6, r2, 0\n"
- "_0810EB44:\n"
- "\tadds r0, r1, r6\n"
- "\tldrb r0, [r0]\n"
- "\tlsls r0, 2\n"
- "\tadd r0, r8\n"
- "\tldr r0, [r0]\n"
- "\tlsls r2, r5, 1\n"
- "\tadds r2, 0x1\n"
- "\tlsls r2, 24\n"
- "\tlsrs r2, 24\n"
- "\tmovs r1, 0x1\n"
- "\tbl Menu_PrintText\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r5, r0, 24\n"
- "\tcmp r5, 0x4\n"
- "\tbhi _0810EB76\n"
- "\tlsls r1, r4, 2\n"
- "\tadds r0, r1, r6\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x10\n"
- "\tbne _0810EB44\n"
- "_0810EB76:\n"
- "\tadds r0, r7, 0\n"
- "_0810EB78:\n"
- "\tpop {r3}\n"
- "\tmov r8, r3\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.align 2, 0\n"
- "_0810EB84: .4byte gUnknown_0203925B\n"
- "_0810EB88: .4byte gUnknown_03000760\n"
- "_0810EB8C: .4byte gUnknown_083F8380");
-}
-#endif
void sub_810EB90(u8 newPos, u8 maxItems)
{
@@ -1600,8 +1500,9 @@ void sub_810F118(u8 taskId)
}
}
-// Second verse, same as the first
-#ifdef NONMATCHING
+/* Removing the NONMATCHING block will swap the roles of r4 and r5 throughout.
+Could possibly be fixed by writing code which increases the amount of references to newPos,
+or decreasing the amount of references to i.*/
bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput)
{
u8 i;
@@ -1634,96 +1535,15 @@ bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput)
for (i=0; i<5; newPos++, i++)
{
Menu_PrintText(gUnknown_083F83C0[newPos], 1, 2 * i + 1);
+#ifndef NONMATCHING
+ asm(""::"r"(newPos));
+ asm(""::"r"(newPos));
+ asm(""::"r"(newPos));
+#endif
}
}
return flag;
}
-#else
-NAKED
-bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput)
-{
- asm_unified("\tpush {r4-r7,lr}\n"
- "\tlsls r0, 24\n"
- "\tlsrs r2, r0, 24\n"
- "\tadds r5, r2, 0\n"
- "\tlsls r1, 24\n"
- "\tlsrs r1, 24\n"
- "\tadds r3, r1, 0\n"
- "\tmovs r6, 0\n"
- "\tmovs r4, 0\n"
- "\tldr r0, _0810F214 @ =gUnknown_0203925A\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0x4\n"
- "\tbhi _0810F218\n"
- "\tmovs r0, 0\n"
- "\tb _0810F282\n"
- "\t.align 2, 0\n"
- "_0810F214: .4byte gUnknown_0203925A\n"
- "_0810F218:\n"
- "\tcmp r1, 0x40\n"
- "\tbne _0810F22C\n"
- "\tcmp r2, 0\n"
- "\tbne _0810F240\n"
- "\tldr r0, _0810F228 @ =gUnknown_0203925B\n"
- "\tldrb r4, [r0]\n"
- "\tmovs r6, 0x1\n"
- "\tb _0810F244\n"
- "\t.align 2, 0\n"
- "_0810F228: .4byte gUnknown_0203925B\n"
- "_0810F22C:\n"
- "\tcmp r3, 0x80\n"
- "\tbne _0810F240\n"
- "\tcmp r5, 0x4\n"
- "\tbne _0810F240\n"
- "\tldr r0, _0810F288 @ =gUnknown_0203925B\n"
- "\tldrb r0, [r0]\n"
- "\tsubs r0, 0x4\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tmovs r6, 0x1\n"
- "_0810F240:\n"
- "\tcmp r6, 0\n"
- "\tbeq _0810F280\n"
- "_0810F244:\n"
- "\tadds r0, r4, 0\n"
- "\tmovs r1, 0x5\n"
- "\tbl GlassWorkshopUpdateScrollIndicators\n"
- "\tmovs r0, 0x2\n"
- "\tmovs r1, 0x1\n"
- "\tmovs r2, 0x9\n"
- "\tmovs r3, 0xA\n"
- "\tbl Menu_BlankWindowRect\n"
- "\tmovs r5, 0\n"
- "\tldr r7, _0810F28C @ =gUnknown_083F83C0\n"
- "_0810F25C:\n"
- "\tlsls r0, r4, 2\n"
- "\tadds r0, r7\n"
- "\tldr r0, [r0]\n"
- "\tlsls r2, r5, 1\n"
- "\tadds r2, 0x1\n"
- "\tlsls r2, 24\n"
- "\tlsrs r2, 24\n"
- "\tmovs r1, 0x1\n"
- "\tbl Menu_PrintText\n"
- "\tadds r0, r4, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r4, r0, 24\n"
- "\tadds r0, r5, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r5, r0, 24\n"
- "\tcmp r5, 0x4\n"
- "\tbls _0810F25C\n"
- "_0810F280:\n"
- "\tadds r0, r6, 0\n"
- "_0810F282:\n"
- "\tpop {r4-r7}\n"
- "\tpop {r1}\n"
- "\tbx r1\n"
- "\t.align 2, 0\n"
- "_0810F288: .4byte gUnknown_0203925B\n"
- "_0810F28C: .4byte gUnknown_083F83C0");
-}
-#endif
void sub_810F290(void)
{