diff --git a/src/code_80227B8.c b/src/code_80227B8.c index c40da70a..adee36a8 100644 --- a/src/code_80227B8.c +++ b/src/code_80227B8.c @@ -5,6 +5,7 @@ #include "code_801B3C0.h" #include "code_80227B8.h" #include "code_8098BDC.h" +#include "code_80118A4.h" #include "common_strings.h" #include "constants/colors.h" #include "input.h" @@ -15,6 +16,7 @@ #include "text1.h" #include "text2.h" +extern u8 gUnknown_202DEA8[]; extern u8 gUnknown_202DE58[]; extern u8 gAvailablePokemonNames[]; // 202DF98 @@ -135,7 +137,6 @@ static void sub_802293C(void) sub_800641C(sUnknown_203B294->unk148, TRUE, TRUE); } -#ifdef NONMATCHING // 90.42%. Functionally equivalent but code is placed in the wrong location: https://decomp.me/scratch/HzklC static void sub_8022A10(void) { s32 r3; @@ -180,7 +181,7 @@ static void sub_8022A10(void) sub_80141B4(sFmtGummiSatisfied, 0, 0, 0x101); break; case 10: - while (++sUnknown_203B294->unk40 < NUM_IQ_SKILLS) { + do { r5 = FALSE; r6 = FALSE; @@ -206,7 +207,8 @@ static void sub_8022A10(void) sUnknown_203B294->unk40++; break; } - } + sUnknown_203B294->unk40++; + } while (sUnknown_203B294->unk40 < NUM_IQ_SKILLS); if (sUnknown_203B294->unk40 >= NUM_IQ_SKILLS) sub_8022924(11); break; @@ -275,382 +277,6 @@ static void sub_8022A10(void) break; } } -#else -NAKED static void sub_8022A10(void) -{ - asm_unified( - "\tpush {r4-r7,lr}\n" - "\tsub sp, 0x8\n" - "\tldr r1, _08022A2C\n" - "\tldr r0, [r1]\n" - "\tldr r0, [r0]\n" - "\tadds r4, r1, 0\n" - "\tcmp r0, 0x16\n" - "\tbls _08022A22\n" - "\tb _08022D1E\n" -"_08022A22:\n" - "\tlsls r0, 2\n" - "\tldr r1, _08022A30\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.align 2, 0\n" -"_08022A2C: .4byte sUnknown_203B294\n" -"_08022A30: .4byte _08022A34\n" - "\t.align 2, 0\n" -"_08022A34:\n" - "\t.4byte _08022A90\n" - "\t.4byte _08022AAA\n" - "\t.4byte _08022AB2\n" - "\t.4byte _08022AE0\n" - "\t.4byte _08022B10\n" - "\t.4byte _08022B1A\n" - "\t.4byte _08022B24\n" - "\t.4byte _08022B34\n" - "\t.4byte _08022B44\n" - "\t.4byte _08022B54\n" - "\t.4byte _08022B64\n" - "\t.4byte _08022C28\n" - "\t.4byte _08022CA0\n" - "\t.4byte _08022CA8\n" - "\t.4byte _08022CB0\n" - "\t.4byte _08022CB8\n" - "\t.4byte _08022CC0\n" - "\t.4byte _08022CC8\n" - "\t.4byte _08022CD8\n" - "\t.4byte _08022CE8\n" - "\t.4byte _08022CF8\n" - "\t.4byte _08022D14\n" - "\t.4byte _08022D1E\n" -"_08022A90:\n" - "\tldr r0, [r4]\n" - "\tldr r0, [r0, 0x48]\n" - "\tcmp r0, 0\n" - "\tbeq _08022A9C\n" - "\tmovs r0, 0x5\n" - "\tb _08022A9E\n" -"_08022A9C:\n" - "\tmovs r0, 0x1\n" -"_08022A9E:\n" - "\tmovs r1, 0x3\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0xA\n" - "\tbl sub_801A5D8\n" - "\tb _08022D22\n" -"_08022AAA:\n" - "\tmovs r0, 0x1\n" - "\tbl sub_801A8D0\n" - "\tb _08022D22\n" -"_08022AB2:\n" - "\tbl sub_801A9E0\n" - "\tldr r0, _08022ADC\n" - "\tldr r2, [r0]\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0x54\n" - "\tadds r1, r2, 0\n" - "\tadds r1, 0xF8\n" - "\tmovs r4, 0x9C\n" - "\tlsls r4, 1\n" - "\tadds r3, r2, r4\n" - "\tadds r2, 0xF4\n" - "\tldr r2, [r2]\n" - "\tstr r2, [sp]\n" - "\tmovs r2, 0x2\n" - "\tstr r2, [sp, 0x4]\n" - "\tmovs r2, 0\n" - "\tbl sub_8012D60\n" - "\tb _08022D22\n" - "\t.align 2, 0\n" -"_08022ADC: .4byte sUnknown_203B294\n" -"_08022AE0:\n" - "\tbl sub_801A9E0\n" - "\tldr r4, _08022B08\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x54\n" - "\tmovs r1, 0\n" - "\tbl sub_8012EA4\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0xA4\n" - "\tldr r1, _08022B0C\n" - "\tmovs r2, 0x3\n" - "\tstr r2, [sp]\n" - "\tmovs r2, 0x1\n" - "\tstr r2, [sp, 0x4]\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0\n" - "\tbl sub_8012D60\n" - "\tb _08022D22\n" - "\t.align 2, 0\n" -"_08022B08: .4byte sUnknown_203B294\n" -"_08022B0C: .4byte sUnknown_80DC584\n" -"_08022B10:\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x50\n" - "\tbl sub_801B3C0\n" - "\tb _08022D22\n" -"_08022B1A:\n" - "\tldr r0, _08022B20\n" - "\tb _08022D00\n" - "\t.align 2, 0\n" -"_08022B20: .4byte sDoesNotAppearHungry\n" -"_08022B24:\n" - "\tldr r0, _08022B2C\n" - "\tldr r3, _08022B30\n" - "\tb _08022D02\n" - "\t.align 2, 0\n" -"_08022B2C: .4byte sFmtGummiBigFav\n" -"_08022B30: .4byte 0x00000101\n" -"_08022B34:\n" - "\tldr r0, _08022B3C\n" - "\tldr r3, _08022B40\n" - "\tb _08022D02\n" - "\t.align 2, 0\n" -"_08022B3C: .4byte sFmtGummiFav\n" -"_08022B40: .4byte 0x00000101\n" -"_08022B44:\n" - "\tldr r0, _08022B4C\n" - "\tldr r3, _08022B50\n" - "\tb _08022D02\n" - "\t.align 2, 0\n" -"_08022B4C: .4byte sFmtGummiOkay\n" -"_08022B50: .4byte 0x00000101\n" -"_08022B54:\n" - "\tldr r0, _08022B5C\n" - "\tldr r3, _08022B60\n" - "\tb _08022D02\n" - "\t.align 2, 0\n" -"_08022B5C: .4byte sFmtGummiSatisfied\n" -"_08022B60: .4byte 0x00000101\n" -"_08022B64:\n" - "\tldr r7, _08022B68\n" - "\tb _08022B78\n" - "\t.align 2, 0\n" -"_08022B68: .4byte sUnknown_203B294\n" -"_08022B6C:\n" - "\tldr r1, [r4]\n" - "\tldr r0, [r1, 0x40]\n" - "\tadds r0, 0x1\n" - "\tstr r0, [r1, 0x40]\n" - "\tcmp r0, 0x17\n" - "\tbgt _08022C10\n" -"_08022B78:\n" - "\tmovs r5, 0\n" - "\tmovs r6, 0\n" - "\tmovs r3, 0\n" - "\tldr r2, [r4]\n" - "\tldr r0, [r2, 0x38]\n" - "\tcmp r5, r0\n" - "\tbge _08022BA4\n" - "\tldrb r1, [r2, 0x8]\n" - "\tb _08022B9C\n" -"_08022B8A:\n" - "\tadds r3, 0x1\n" - "\tldr r2, [r4]\n" - "\tldr r0, [r2, 0x38]\n" - "\tcmp r3, r0\n" - "\tbge _08022BA4\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0x8\n" - "\tadds r0, r3\n" - "\tldrb r1, [r0]\n" -"_08022B9C:\n" - "\tldr r0, [r2, 0x40]\n" - "\tcmp r1, r0\n" - "\tbne _08022B8A\n" - "\tmovs r5, 0x1\n" -"_08022BA4:\n" - "\tmovs r3, 0\n" - "\tldr r2, [r4]\n" - "\tldr r0, [r2, 0x3C]\n" - "\tcmp r3, r0\n" - "\tbge _08022BCE\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0x20\n" - "\tb _08022BC4\n" -"_08022BB4:\n" - "\tadds r3, 0x1\n" - "\tldr r2, [r4]\n" - "\tldr r0, [r2, 0x3C]\n" - "\tcmp r3, r0\n" - "\tbge _08022BCE\n" - "\tadds r0, r2, 0\n" - "\tadds r0, 0x20\n" - "\tadds r0, r3\n" -"_08022BC4:\n" - "\tldrb r1, [r0]\n" - "\tldr r0, [r2, 0x40]\n" - "\tcmp r1, r0\n" - "\tbne _08022BB4\n" - "\tmovs r6, 0x1\n" -"_08022BCE:\n" - "\tcmp r5, r6\n" - "\tbeq _08022B6C\n" - "\tldr r1, [r7]\n" - "\tmovs r0, 0xA\n" - "\tstr r0, [r1, 0x4]\n" - "\tldr r0, [r1, 0x40]\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tbl GetIQSkillName\n" - "\tadds r1, r0, 0\n" - "\tldr r0, _08022C18\n" - "\tbl strcpy\n" - "\tmovs r0, 0xCB\n" - "\tbl PlaySound\n" - "\tldr r0, _08022C1C\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0\n" - "\tldr r3, _08022C20\n" - "\tbl sub_80141B4\n" - "\tldr r1, [r7]\n" - "\tldr r0, [r1, 0x40]\n" - "\tadds r0, 0x1\n" - "\tstr r0, [r1, 0x40]\n" - "\tldr r0, _08022C24\n" - "\tldr r0, [r0]\n" - "\tldr r0, [r0, 0x40]\n" - "\tcmp r0, 0x17\n" - "\tbgt _08022C10\n" - "\tb _08022D22\n" -"_08022C10:\n" - "\tmovs r0, 0xB\n" - "\tbl sub_8022924\n" - "\tb _08022D22\n" - "\t.align 2, 0\n" -"_08022C18: .4byte gUnknown_202DEA8\n" -"_08022C1C: .4byte sFmtIQHelpedLearn\n" -"_08022C20: .4byte 0x00000101\n" -"_08022C24: .4byte sUnknown_203B294\n" -"_08022C28:\n" - "\tldr r1, [r4]\n" - "\tmovs r0, 0x16\n" - "\tstr r0, [r1, 0x4]\n" - "\tbl nullsub_104\n" - "\tldr r0, [r4]\n" - "\tadds r0, 0x46\n" - "\tldrh r0, [r0]\n" - "\tcmp r0, 0x8\n" - "\tbhi _08022C98\n" - "\tlsls r0, 2\n" - "\tldr r1, _08022C48\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.align 2, 0\n" -"_08022C48: .4byte _08022C4C\n" - "\t.align 2, 0\n" -"_08022C4C:\n" - "\t.4byte _08022C70\n" - "\t.4byte _08022C78\n" - "\t.4byte _08022C80\n" - "\t.4byte _08022C98\n" - "\t.4byte _08022C88\n" - "\t.4byte _08022C98\n" - "\t.4byte _08022C98\n" - "\t.4byte _08022C98\n" - "\t.4byte _08022C90\n" -"_08022C70:\n" - "\tmovs r0, 0x16\n" - "\tbl sub_8022924\n" - "\tb _08022D22\n" -"_08022C78:\n" - "\tmovs r0, 0xD\n" - "\tbl sub_8022924\n" - "\tb _08022D22\n" -"_08022C80:\n" - "\tmovs r0, 0xE\n" - "\tbl sub_8022924\n" - "\tb _08022D22\n" -"_08022C88:\n" - "\tmovs r0, 0xF\n" - "\tbl sub_8022924\n" - "\tb _08022D22\n" -"_08022C90:\n" - "\tmovs r0, 0x10\n" - "\tbl sub_8022924\n" - "\tb _08022D22\n" -"_08022C98:\n" - "\tmovs r0, 0xC\n" - "\tbl sub_8022924\n" - "\tb _08022D22\n" -"_08022CA0:\n" - "\tldr r0, _08022CA4\n" - "\tb _08022D00\n" - "\t.align 2, 0\n" -"_08022CA4: .4byte sFmtPlusEverything\n" -"_08022CA8:\n" - "\tldr r0, _08022CAC\n" - "\tb _08022D00\n" - "\t.align 2, 0\n" -"_08022CAC: .4byte sFmtPlusAtk\n" -"_08022CB0:\n" - "\tldr r0, _08022CB4\n" - "\tb _08022D00\n" - "\t.align 2, 0\n" -"_08022CB4: .4byte sFmtPlusSpAtk\n" -"_08022CB8:\n" - "\tldr r0, _08022CBC\n" - "\tb _08022D00\n" - "\t.align 2, 0\n" -"_08022CBC: .4byte sFmtPlusDef\n" -"_08022CC0:\n" - "\tldr r0, _08022CC4\n" - "\tb _08022D00\n" - "\t.align 2, 0\n" -"_08022CC4: .4byte sFmtPlusSpDef\n" -"_08022CC8:\n" - "\tldr r1, [r4]\n" - "\tmovs r0, 0x16\n" - "\tstr r0, [r1, 0x4]\n" - "\tldr r0, _08022CD4\n" - "\tb _08022D00\n" - "\t.align 2, 0\n" -"_08022CD4: .4byte sNoGummis\n" -"_08022CD8:\n" - "\tldr r1, [r4]\n" - "\tmovs r0, 0x16\n" - "\tstr r0, [r1, 0x4]\n" - "\tldr r0, _08022CE4\n" - "\tb _08022D00\n" - "\t.align 2, 0\n" -"_08022CE4: .4byte sNoItem\n" -"_08022CE8:\n" - "\tldr r1, [r4]\n" - "\tmovs r0, 0x16\n" - "\tstr r0, [r1, 0x4]\n" - "\tldr r0, _08022CF4\n" - "\tb _08022D00\n" - "\t.align 2, 0\n" -"_08022CF4: .4byte sGummiGone\n" -"_08022CF8:\n" - "\tldr r1, [r4]\n" - "\tmovs r0, 0x16\n" - "\tstr r0, [r1, 0x4]\n" - "\tldr r0, _08022D0C\n" -"_08022D00:\n" - "\tldr r3, _08022D10\n" -"_08022D02:\n" - "\tmovs r1, 0\n" - "\tmovs r2, 0\n" - "\tbl sub_80141B4\n" - "\tb _08022D22\n" - "\t.align 2, 0\n" -"_08022D0C: .4byte sItemGone\n" -"_08022D10: .4byte 0x00000301\n" -"_08022D14:\n" - "\tldr r0, [r4]\n" - "\tldr r0, [r0, 0x4C]\n" - "\tbl sub_801AFA4\n" - "\tb _08022D22\n" -"_08022D1E:\n" - "\tbl sub_801A928\n" -"_08022D22:\n" - "\tadd sp, 0x8\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0"); -} -#endif // NONMATCHING static void sub_8022D2C(void) { @@ -851,4 +477,4 @@ static void sub_8023120(void) if (sub_80144A4(&temp) == 0) sub_8022924(sUnknown_203B294->fallbackState); -} \ No newline at end of file +}