battle tower, match sth and dumb loop instead of goto

This commit is contained in:
DizzyEggg
2018-10-24 23:14:45 +02:00
parent b330bdba51
commit 549b669f2a
15 changed files with 439 additions and 1026 deletions
+10 -74
View File
@@ -2158,13 +2158,13 @@ void sub_8139F20(void)
case 1:
case 2:
case 3:
if (gSaveBlock2Ptr->frontier.field_CE0[var][0] >= gSaveBlock2Ptr->frontier.field_CE0[var][1])
if (gSaveBlock2Ptr->frontier.winStreaks[var][0] >= gSaveBlock2Ptr->frontier.winStreaks[var][1])
{
unk = gSaveBlock2Ptr->frontier.field_CE0[var][0];
unk = gSaveBlock2Ptr->frontier.winStreaks[var][0];
}
else
{
unk = gSaveBlock2Ptr->frontier.field_CE0[var][1];
unk = gSaveBlock2Ptr->frontier.winStreaks[var][1];
}
break;
case 4:
@@ -2244,7 +2244,7 @@ void sub_813A080(void)
u16 battleMode = VarGet(VAR_FRONTIER_BATTLE_MODE);
u8 lvlMode = gSaveBlock2Ptr->frontier.lvlMode;
if (battleMode == 2 && !FlagGet(FLAG_0x152))
if (battleMode == FRONTIER_MODE_MULTIS && !FlagGet(FLAG_0x152))
{
gSpecialVar_0x8005 = 5;
gSpecialVar_0x8006 = 4;
@@ -2253,7 +2253,7 @@ void sub_813A080(void)
for (i = 0; i < 9; i++)
{
if (gUnknown_085B2CDC[i] > gSaveBlock2Ptr->frontier.field_CE0[battleMode][lvlMode])
if (gUnknown_085B2CDC[i] > gSaveBlock2Ptr->frontier.winStreaks[battleMode][lvlMode])
{
gSpecialVar_0x8005 = 4;
gSpecialVar_0x8006 = i + 5;
@@ -2733,8 +2733,6 @@ static void sub_813A46C(s32 itemIndex, bool8 onInit, struct ListMenu *list)
}
}
// stupid r5<->r6 swap
#ifdef NONMATCHING
static void sub_813A4EC(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -2752,7 +2750,11 @@ static void sub_813A4EC(u8 taskId)
default:
gSpecialVar_Result = itemId;
PlaySE(SE_SELECT);
if (!task->data[6] || itemId == task->data[1] - 1)
if (!task->data[6])
{
sub_813A570(taskId);
}
else if (itemId == task->data[1] - 1)
{
sub_813A570(taskId);
}
@@ -2765,72 +2767,6 @@ static void sub_813A4EC(u8 taskId)
break;
}
}
#else
NAKED
static void sub_813A4EC(u8 taskId)
{
asm_unified("push {r4-r6,lr}\n\
lsls r0, 24\n\
lsrs r5, r0, 24\n\
lsls r0, r5, 2\n\
adds r0, r5\n\
lsls r0, 3\n\
ldr r1, =gTasks\n\
adds r6, r0, r1\n\
ldrh r0, [r6, 0x24]\n\
lsls r0, 24\n\
lsrs r0, 24\n\
bl ListMenuHandleInputGetItemId\n\
adds r4, r0, 0\n\
movs r0, 0x2\n\
negs r0, r0\n\
cmp r4, r0\n\
beq _0813A51C\n\
adds r0, 0x1\n\
cmp r4, r0\n\
bne _0813A530\n\
b _0813A566\n\
.pool\n\
_0813A51C:\n\
ldr r1, =gSpecialVar_Result\n\
movs r0, 0x7F\n\
strh r0, [r1]\n\
movs r0, 0x5\n\
bl PlaySE\n\
b _0813A54C\n\
.pool\n\
_0813A530:\n\
ldr r0, =gSpecialVar_Result\n\
strh r4, [r0]\n\
movs r0, 0x5\n\
bl PlaySE\n\
movs r1, 0x14\n\
ldrsh r0, [r6, r1]\n\
cmp r0, 0\n\
beq _0813A54C\n\
movs r1, 0xA\n\
ldrsh r0, [r6, r1]\n\
subs r0, 0x1\n\
cmp r4, r0\n\
bne _0813A558\n\
_0813A54C:\n\
adds r0, r5, 0\n\
bl sub_813A570\n\
b _0813A566\n\
.pool\n\
_0813A558:\n\
adds r0, r5, 0\n\
bl sub_813A738\n\
ldr r0, =sub_813A600\n\
str r0, [r6]\n\
bl EnableBothScriptContexts\n\
_0813A566:\n\
pop {r4-r6}\n\
pop {r0}\n\
bx r0\n\
.pool");
}
#endif // NONMATCHING
static void sub_813A570(u8 taskId)
{