mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-03-21 17:24:13 -05:00
Sub_14488, sub_3CD8: goto considered harmful... (#173)
Some checks are pending
CI / build (push) Waiting to run
Some checks are pending
CI / build (push) Waiting to run
* Sub_14488: goto considered harmful... * cleanup gotos from sub_3CD8
This commit is contained in:
parent
ea18f2f141
commit
25b605371e
|
|
@ -599,10 +599,9 @@ void sub_14074(u16 arg0, struct Vector32 *arg1, u16 arg2)
|
|||
}
|
||||
}
|
||||
|
||||
// TODO: Hopefully we can match this properly without "goto" usage in the future...
|
||||
u16 sub_14488(struct Vector16* arg0, struct Vector16 arg1) {
|
||||
struct Vector16 r8;
|
||||
|
||||
struct Vector16 r8;
|
||||
|
||||
u32 toggleShiftMode;
|
||||
s16 (*spC)(struct Vector16*, u16*);
|
||||
u16 sp0_return;
|
||||
|
|
@ -616,96 +615,84 @@ u16 sub_14488(struct Vector16* arg0, struct Vector16 arg1) {
|
|||
arg1.x = -arg1.x;
|
||||
}
|
||||
|
||||
if (arg1.y < 0)
|
||||
if (arg1.y < 0)
|
||||
{
|
||||
r8.y = -1;
|
||||
arg1.y = -arg1.y ;
|
||||
}
|
||||
|
||||
if (arg1.x > arg1.y)
|
||||
if (arg1.x > arg1.y)
|
||||
toggleShiftMode = 0;
|
||||
else
|
||||
else
|
||||
toggleShiftMode = 1;
|
||||
|
||||
|
||||
gCurrentPinballGame->unk22 = 0;
|
||||
gCurrentPinballGame->unk23 = 0;
|
||||
|
||||
spC = BoardCollisionFuncts_086ACE0C[gMain.selectedField];
|
||||
|
||||
do{
|
||||
goto Lab_144;
|
||||
|
||||
Lab_AE:
|
||||
|
||||
do
|
||||
{
|
||||
if(spC(arg0, &sp0_return) != 0)
|
||||
{
|
||||
gCurrentPinballGame->unk22 = 0;
|
||||
|
||||
if (sub_1467C(arg0, &sp0_return) != 0 ||
|
||||
(gCurrentPinballGame->unk5F2 != 0 && sub_14740(arg0, &sp0_return) != 0))
|
||||
goto Lab_1E0;
|
||||
|
||||
goto Lab_E6;
|
||||
}
|
||||
Lab_E6:
|
||||
{
|
||||
if (!(arg1.x > 0 || arg1.y > 0))
|
||||
goto Lab_1E0;
|
||||
|
||||
if (toggleShiftMode == 0)
|
||||
{
|
||||
arg0->x = r8.x + arg0->x;
|
||||
arg1.x--;
|
||||
if (arg1.y >0)
|
||||
toggleShiftMode = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
arg0->y = arg0->y + r8.y;
|
||||
arg1.y--;
|
||||
if (arg1.x > 0)
|
||||
toggleShiftMode = 0;
|
||||
}
|
||||
}
|
||||
Lab_144:
|
||||
{
|
||||
if(spC(arg0, &sp0_return) == 0)
|
||||
{
|
||||
goto Lab_AE;
|
||||
}
|
||||
else if (gCurrentPinballGame->unk22 == 1)
|
||||
if (gCurrentPinballGame->unk22 == 1)
|
||||
{
|
||||
if (gCurrentPinballGame->unk23 == 3)
|
||||
{
|
||||
u16 j;
|
||||
u16 sp2_testRes;
|
||||
struct Vector16 sp4_testPos;
|
||||
|
||||
|
||||
for(j=0; j < 4; j++)
|
||||
{
|
||||
sp4_testPos.x = arg0->x + gUnknown_086ACE60[j].x;
|
||||
sp4_testPos.y = arg0->y + gUnknown_086ACE60[j].y;
|
||||
|
||||
|
||||
spC(&sp4_testPos, &sp2_testRes);
|
||||
|
||||
if (gCurrentPinballGame->unk22 == 1 && gCurrentPinballGame->unk23 == 0)
|
||||
{
|
||||
Lab_9C:
|
||||
arg0->x = sp4_testPos.x;
|
||||
arg0->y = sp4_testPos.y;
|
||||
sp0_return = sp2_testRes;
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
goto Lab_E6;
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
gCurrentPinballGame->unk22 = 0;
|
||||
|
||||
if (sub_1467C(arg0, &sp0_return) != 0 ||
|
||||
(gCurrentPinballGame->unk5F2 != 0 && sub_14740(arg0, &sp0_return) != 0))
|
||||
break;
|
||||
}
|
||||
|
||||
if (!(arg1.x > 0 || arg1.y > 0))
|
||||
break;
|
||||
|
||||
if (toggleShiftMode == 0)
|
||||
{
|
||||
arg0->x = r8.x + arg0->x;
|
||||
arg1.x--;
|
||||
if (arg1.y >0)
|
||||
toggleShiftMode = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
arg0->y = arg0->y + r8.y;
|
||||
arg1.y--;
|
||||
if (arg1.x > 0)
|
||||
toggleShiftMode = 0;
|
||||
}
|
||||
} while(1);
|
||||
|
||||
Lab_1E0:
|
||||
|
||||
return sp0_return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -644,48 +644,43 @@ s16 sub_3CD8(void)
|
|||
s32 i;
|
||||
s32 j;
|
||||
|
||||
if (!(JOY_NEW(A_BUTTON)))
|
||||
if ((JOY_NEW(A_BUTTON)))
|
||||
{
|
||||
// TODO I can buy goto end being the actual label, but there is no way they wrote this segment like this
|
||||
goto fakematch;
|
||||
}
|
||||
if (gUnknown_0202A564 == 0)
|
||||
{
|
||||
gUnknown_0202A564 = -1;
|
||||
gUnknown_0202ADE8 = -1;
|
||||
gUnknown_0202A58C = 1;
|
||||
|
||||
fakematch:
|
||||
if (gUnknown_0202A564 == 0) {
|
||||
goto end;
|
||||
if (gUnknown_0202A564 == 0)
|
||||
{
|
||||
gUnknown_0202A564 = -1;
|
||||
gUnknown_0202ADE8 = -1;
|
||||
gUnknown_0202A58C = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (gUnknown_02019C20 == 0)
|
||||
if (gUnknown_0202A564 != 0)
|
||||
{
|
||||
if (gUnknown_0201A4D0[0][0] == 0xFEDC)
|
||||
if (gUnknown_02019C20 == 0)
|
||||
{
|
||||
gUnknown_0202BEEC = gUnknown_0201A4D0[1][0];
|
||||
gUnknown_02019C20 = -1;
|
||||
}
|
||||
else if (gUnknown_0201A4D0[0][1] == 0xFEDC)
|
||||
{
|
||||
gUnknown_0202BEEC = gUnknown_0201A4D0[1][1];
|
||||
gUnknown_02019C20 = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
if (gUnknown_0201A4D0[0][i] == 0xDFDF)
|
||||
if (gUnknown_0201A4D0[0][0] == 0xFEDC)
|
||||
{
|
||||
return -1;
|
||||
gUnknown_0202BEEC = gUnknown_0201A4D0[1][0];
|
||||
gUnknown_02019C20 = -1;
|
||||
}
|
||||
else if (gUnknown_0201A4D0[0][1] == 0xFEDC)
|
||||
{
|
||||
gUnknown_0202BEEC = gUnknown_0201A4D0[1][1];
|
||||
gUnknown_02019C20 = -1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
if (gUnknown_0201A4D0[0][i] == 0xDFDF)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
end:
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
for (j = 0; j < 8; j++)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user