diff options
author | Evan <eroelke@gmail.com> | 2019-11-19 16:03:35 -0700 |
---|---|---|
committer | Evan <eroelke@gmail.com> | 2019-11-19 16:03:35 -0700 |
commit | ad6d1cb73bffc5fbbf0f68d7414f6de65cff3f9d (patch) | |
tree | 3882b818c48ecb975c6047dccecc45344caf92db /src/option_menu.c | |
parent | d52bd495b142cd99ae41476a4ecb5bdf0833ebbf (diff) |
attempt to match Task_OptionMenu
Diffstat (limited to 'src/option_menu.c')
-rw-r--r-- | src/option_menu.c | 189 |
1 files changed, 25 insertions, 164 deletions
diff --git a/src/option_menu.c b/src/option_menu.c index 1729b36d1..f60669fb5 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -361,19 +361,21 @@ static bool8 LoadOptionMenuPalette(void) return FALSE; } -// I could not get this function to match. GOTO statements weren't even compiling correctly. -#ifdef NONMATCHING static void Task_OptionMenu(u8 taskId) { u8 v2, v5; - struct OptionMenu v4; + struct OptionMenu *vPtr; + struct OptionMenu *v4; switch (sOptionMenuPtr->state3) { case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); OptionMenu_SetVBlankCallback(); - sOptionMenuPtr->state3++; + vPtr = sOptionMenuPtr; + v4 = vPtr; + goto STATE_PLUS; + v2 = 1; break; case 2: if ((bool32) sub_80BF72C() == TRUE) //cast to bool32 to remove the lsl/lsr 0x18 after func call @@ -381,20 +383,27 @@ static void Task_OptionMenu(u8 taskId) switch (OptionMenu_ProcessInput()) { case 1: - sOptionMenuPtr->state3++; + vPtr = sOptionMenuPtr; + goto STATE_PLUS; + v2 = 1; break; case 2: LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA); LoadPalette(GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20); BufferOptionMenuString(sOptionMenuPtr->unkE); - sOptionMenuPtr->state3++; + + vPtr = sOptionMenuPtr; + goto GET_STRING; + v2 = 1; break; case 3: sub_8088DE0(sOptionMenuPtr->unkE); break; case 4: - BufferOptionMenuString(sOptionMenuPtr->unkE); - sOptionMenuPtr->state3++; + vPtr = sOptionMenuPtr; + + GET_STRING: + BufferOptionMenuString(vPtr->unkE); break; default: return; @@ -404,9 +413,14 @@ static void Task_OptionMenu(u8 taskId) sOptionMenuPtr->state3++; case 1: case 4: - if (gPaletteFade.active) - return; - sOptionMenuPtr->state3++; + if (!(gPaletteFade.active)) + { + STATE_PLUS: + v2 = vPtr->state3; + v2++; + vPtr->state3 = v2; + } + break; case 5: CloseAndSaveOptionMenu(taskId); break; @@ -414,159 +428,6 @@ static void Task_OptionMenu(u8 taskId) return; } } -#else -NAKED -static void Task_OptionMenu(u8 taskId) -{ - asm_unified("\tpush {r4,lr}\n" - "\tsub sp, 0x4\n" - "\tlsls r0, 24\n" - "\tlsrs r2, r0, 24\n" - "\tldr r1, _080887A0 @ =sOptionMenuPtr\n" - "\tldr r0, [r1]\n" - "\tldrb r0, [r0, 0x10]\n" - "\tadds r3, r1, 0\n" - "\tcmp r0, 0x5\n" - "\tbls _08088796\n" - "\tb _080888B6\n" - "_08088796:\n" - "\tlsls r0, 2\n" - "\tldr r1, _080887A4 @ =_080887A8\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.align 2, 0\n" - "_080887A0: .4byte sOptionMenuPtr\n" - "_080887A4: .4byte _080887A8\n" - "\t.align 2, 0\n" - "_080887A8:\n" - "\t.4byte _080887C0\n" - "\t.4byte _08088894\n" - "\t.4byte _080887E0\n" - "\t.4byte _08088878\n" - "\t.4byte _08088894\n" - "\t.4byte _080888B0\n" - "_080887C0:\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tmovs r1, 0\n" - "\tstr r1, [sp]\n" - "\tmovs r2, 0x10\n" - "\tmovs r3, 0\n" - "\tbl BeginNormalPaletteFade\n" - "\tbl OptionMenu_SetVBlankCallback\n" - "\tldr r0, _080887DC @ =sOptionMenuPtr\n" - "\tldr r1, [r0]\n" - "\tb _080888A2\n" - "\t.align 2, 0\n" - "_080887DC: .4byte sOptionMenuPtr\n" - "_080887E0:\n" - "\tbl sub_80BF72C\n" - "\tcmp r0, 0x1\n" - "\tbeq _080888B6\n" - "\tbl OptionMenu_ProcessInput\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x4\n" - "\tbhi _080888B6\n" - "\tlsls r0, 2\n" - "\tldr r1, _08088800 @ =_08088804\n" - "\tadds r0, r1\n" - "\tldr r0, [r0]\n" - "\tmov pc, r0\n" - "\t.align 2, 0\n" - "_08088800: .4byte _08088804\n" - "\t.align 2, 0\n" - "_08088804:\n" - "\t.4byte _080888B6\n" - "\t.4byte _08088818\n" - "\t.4byte _08088824\n" - "\t.4byte _08088858\n" - "\t.4byte _08088868\n" - "_08088818:\n" - "\tldr r0, _08088820 @ =sOptionMenuPtr\n" - "\tldr r1, [r0]\n" - "\tb _080888A2\n" - "\t.align 2, 0\n" - "_08088820: .4byte sOptionMenuPtr\n" - "_08088824:\n" - "\tldr r4, _08088854 @ =sOptionMenuPtr\n" - "\tldr r0, [r4]\n" - "\tldrb r0, [r0, 0xA]\n" - "\tbl GetUserFrameGraphicsInfo\n" - "\tldr r1, [r0]\n" - "\tmovs r2, 0x90\n" - "\tlsls r2, 1\n" - "\tmovs r3, 0xD5\n" - "\tlsls r3, 1\n" - "\tmovs r0, 0x1\n" - "\tbl LoadBgTiles\n" - "\tldr r0, [r4]\n" - "\tldrb r0, [r0, 0xA]\n" - "\tbl GetUserFrameGraphicsInfo\n" - "\tldr r0, [r0, 0x4]\n" - "\tmovs r1, 0x20\n" - "\tmovs r2, 0x20\n" - "\tbl LoadPalette\n" - "\tldr r0, [r4]\n" - "\tb _0808886C\n" - "\t.align 2, 0\n" - "_08088854: .4byte sOptionMenuPtr\n" - "_08088858:\n" - "\tldr r0, _08088864 @ =sOptionMenuPtr\n" - "\tldr r0, [r0]\n" - "\tldrh r0, [r0, 0xE]\n" - "\tbl sub_8088DE0\n" - "\tb _080888B6\n" - "\t.align 2, 0\n" - "_08088864: .4byte sOptionMenuPtr\n" - "_08088868:\n" - "\tldr r0, _08088874 @ =sOptionMenuPtr\n" - "\tldr r0, [r0]\n" - "_0808886C:\n" - "\tldrb r0, [r0, 0xE]\n" - "\tbl BufferOptionMenuString\n" - "\tb _080888B6\n" - "\t.align 2, 0\n" - "_08088874: .4byte sOptionMenuPtr\n" - "_08088878:\n" - "\tmovs r0, 0x1\n" - "\tnegs r0, r0\n" - "\tmovs r1, 0\n" - "\tstr r1, [sp]\n" - "\tmovs r2, 0\n" - "\tmovs r3, 0x10\n" - "\tbl BeginNormalPaletteFade\n" - "\tldr r0, _08088890 @ =sOptionMenuPtr\n" - "\tldr r1, [r0]\n" - "\tb _080888A2\n" - "\t.align 2, 0\n" - "_08088890: .4byte sOptionMenuPtr\n" - "_08088894:\n" - "\tldr r0, _080888AC @ =gPaletteFade\n" - "\tldrb r1, [r0, 0x7]\n" - "\tmovs r0, 0x80\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbne _080888B6\n" - "\tldr r1, [r3]\n" - "_080888A2:\n" - "\tldrb r0, [r1, 0x10]\n" - "\tadds r0, 0x1\n" - "\tstrb r0, [r1, 0x10]\n" - "\tb _080888B6\n" - "\t.align 2, 0\n" - "_080888AC: .4byte gPaletteFade\n" - "_080888B0:\n" - "\tadds r0, r2, 0\n" - "\tbl CloseAndSaveOptionMenu\n" - "_080888B6:\n" - "\tadd sp, 0x4\n" - "\tpop {r4}\n" - "\tpop {r0}\n" - "\tbx r0\n"); -} -#endif static u8 OptionMenu_ProcessInput(void) { |