summaryrefslogtreecommitdiff
path: root/src/option_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/option_menu.c')
-rw-r--r--src/option_menu.c189
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)
{