flipper state naming

This commit is contained in:
Retnuhytnuob 2025-09-14 02:20:47 -05:00
parent 4cfe4de60e
commit ea6b79a536
4 changed files with 86 additions and 84 deletions

View File

@ -99,16 +99,18 @@ struct BallState
/*0x3C*/ struct Vector32 prevPositionQ8; /*0x3C*/ struct Vector32 prevPositionQ8;
}; };
struct UnkPinballGame13BC // Position rises in steps of 2 from 0 to 10.
// Releasing the button continues rising till it reaches 10, and stalls for 3 frames before falling
struct FlipperState
{ {
/*0x00*/ s8 unk0; /*0x00*/ s8 position;
/*0x01*/ s8 unk1; /*0x01*/ s8 prevPosition;
/*0x02*/ s8 unk2; /*0x02*/ s8 unk2;
/*0x03*/ s8 unk3; /*0x03*/ s8 unk3;
/*0x04*/ s8 unk4; /*0x04*/ s8 unk4;
/*0x05*/ s8 unk5; /*0x05*/ s8 unk5;
/*0x06*/ s8 unk6; /*0x06*/ s8 active;
/*0x07*/ u8 unk7; /*0x07*/ u8 stallTicks;
/*0x08*/ s8 unk8; /*0x08*/ s8 unk8;
/*0x09*/ u8 filler9[0x3]; /*0x09*/ u8 filler9[0x3];
}; };
@ -857,7 +859,7 @@ struct PinballGame
/*0x132C*/struct BallState *ball; /*0x132C*/struct BallState *ball;
/*0x1330*/struct BallState *unk1330; /*0x1330*/struct BallState *unk1330;
/*0x1334*/struct BallState unk1334[2]; /*0x1334*/struct BallState unk1334[2];
/*0x13BC*/struct UnkPinballGame13BC unk13BC[2]; /*0x13BC*/struct FlipperState flipper[2];
/*0x13D4*/u16 unk13D4[10]; /*0x13D4*/u16 unk13D4[10];
/*0x13E8*/struct Vector16 unk13E8[10]; /*0x13E8*/struct Vector16 unk13E8[10];
} /* size=0x1410 */; } /* size=0x1410 */;

View File

@ -17,7 +17,7 @@ void sub_1931C(struct Vector16 arg0)
struct Unk086ACE8C *line; struct Unk086ACE8C *line;
struct Vector16 point1, point2; struct Vector16 point1, point2;
line = &gUnknown_086ACE8C[gCurrentPinballGame->unk13BC[0].unk0]; line = &gUnknown_086ACE8C[gCurrentPinballGame->flipper[0].position];
point1.x = line->unk0 + 0x53; point1.x = line->unk0 + 0x53;
point1.y = line->unk2 + gUnknown_02031520.unk14.unk1C; point1.y = line->unk2 + gUnknown_02031520.unk14.unk1C;
@ -27,11 +27,11 @@ void sub_1931C(struct Vector16 arg0)
check = (point2.y - point1.y) * (arg0.x - point1.x) * 30 / (point2.x - point1.x) + (point1.y - arg0.y) * 30; check = (point2.y - point1.y) * (arg0.x - point1.x) * 30 / (point2.x - point1.x) + (point1.y - arg0.y) * 30;
if (check >= 0) if (check >= 0)
gCurrentPinballGame->unk13BC[0].unk8 = 1; gCurrentPinballGame->flipper[0].unk8 = 1;
else else
gCurrentPinballGame->unk13BC[0].unk8 = -1; gCurrentPinballGame->flipper[0].unk8 = -1;
line = &gUnknown_086ACE8C[gCurrentPinballGame->unk13BC[1].unk0]; line = &gUnknown_086ACE8C[gCurrentPinballGame->flipper[1].position];
point1.x = 0x9C - line->unk0; point1.x = 0x9C - line->unk0;
point1.y = line->unk2 + gUnknown_02031520.unk14.unk1C; point1.y = line->unk2 + gUnknown_02031520.unk14.unk1C;
@ -42,9 +42,9 @@ void sub_1931C(struct Vector16 arg0)
check = (point2.y - point1.y) * (arg0.x - point1.x) * 30 / (point2.x - point1.x) + (point1.y - arg0.y) * 30; check = (point2.y - point1.y) * (arg0.x - point1.x) * 30 / (point2.x - point1.x) + (point1.y - arg0.y) * 30;
if (check >= 0) if (check >= 0)
gCurrentPinballGame->unk13BC[1].unk8 = 1; gCurrentPinballGame->flipper[1].unk8 = 1;
else else
gCurrentPinballGame->unk13BC[1].unk8 = -1; gCurrentPinballGame->flipper[1].unk8 = -1;
} }
void MainBoardProcess_4B_19490(void) void MainBoardProcess_4B_19490(void)
@ -58,10 +58,10 @@ void MainBoardProcess_4B_19490(void)
{ {
struct SpriteGroup *spriteGroup; struct SpriteGroup *spriteGroup;
if (gCurrentPinballGame->unk13BC[i].unk0 > 10) if (gCurrentPinballGame->flipper[i].position > 10)
gCurrentPinballGame->unk13BC[i].unk0 = 10; gCurrentPinballGame->flipper[i].position = 10;
else if (gCurrentPinballGame->unk13BC[i].unk0 < 0) else if (gCurrentPinballGame->flipper[i].position < 0)
gCurrentPinballGame->unk13BC[i].unk0 = 0; gCurrentPinballGame->flipper[i].position = 0;
spriteGroup = &gMain.spriteGroups[10 + i]; spriteGroup = &gMain.spriteGroups[10 + i];
if (spriteGroup->available) if (spriteGroup->available)
@ -69,7 +69,7 @@ void MainBoardProcess_4B_19490(void)
s8 unk0; s8 unk0;
struct OamDataSimple *oamData; struct OamDataSimple *oamData;
unk0 = gCurrentPinballGame->unk13BC[i].unk0 / 2; unk0 = gCurrentPinballGame->flipper[i].position / 2;
spriteGroup->baseX = gUnknown_086ACEF4[i] - gCurrentPinballGame->unk58; spriteGroup->baseX = gUnknown_086ACEF4[i] - gCurrentPinballGame->unk58;
spriteGroup->baseY = gUnknown_02031520.unk14.unk1C - gCurrentPinballGame->unk5A; spriteGroup->baseY = gUnknown_02031520.unk14.unk1C - gCurrentPinballGame->unk5A;
@ -91,34 +91,34 @@ void sub_195C4(void)
for (i = 0; i < 2; i++) for (i = 0; i < 2; i++)
{ {
s16 dir; s16 dir;
struct UnkPinballGame13BC *unk13BC; struct FlipperState *flipper;
unk13BC = &gCurrentPinballGame->unk13BC[i]; flipper = &gCurrentPinballGame->flipper[i];
unk13BC->unk1 = unk13BC->unk0; flipper->prevPosition = flipper->position;
unk13BC->unk2 = 0; flipper->unk2 = 0;
if (gCurrentPinballGame->heldButtonActions[i]) if (gCurrentPinballGame->heldButtonActions[i])
{ {
if (unk13BC->unk6 == 0 && gCurrentPinballGame->unk25 == 0) if (flipper->active == 0 && gCurrentPinballGame->unk25 == 0)
m4aSongNumStart(SE_UNKNOWN_0x72); m4aSongNumStart(SE_UNKNOWN_0x72);
unk13BC->unk6 = 1; flipper->active = 1;
unk13BC->unk7 = 0; flipper->stallTicks = 0;
} }
else else
{ {
if (unk13BC->unk0 == 10) if (flipper->position == 10)
{ {
if (unk13BC->unk7 > 2) if (flipper->stallTicks > 2)
unk13BC->unk6 = gCurrentPinballGame->heldButtonActions[i]; flipper->active = gCurrentPinballGame->heldButtonActions[i];
unk13BC->unk7++; flipper->stallTicks++;
} }
} }
dir = 0; dir = 0;
if (unk13BC->unk6 != 0) if (flipper->active != 0)
{ {
if (unk13BC->unk0 != 10) if (flipper->position != 10)
{ {
dir = 1; dir = 1;
} }
@ -129,14 +129,14 @@ void sub_195C4(void)
gCurrentPinballGame->unk5C = 0; gCurrentPinballGame->unk5C = 0;
sub_11B0(7); sub_11B0(7);
} }
unk13BC->unk2 = unk13BC->unk0 / 2 + 1; flipper->unk2 = flipper->position / 2 + 1;
unk13BC->unk0 += 4; flipper->position += 4;
} }
else else
{ {
if (unk13BC->unk0 != 0) if (flipper->position != 0)
{ {
unk13BC->unk2 = unk13BC->unk0 / 2 + 6; flipper->unk2 = flipper->position / 2 + 6;
dir = -1; dir = -1;
} }
else if (gCurrentPinballGame->unk5C != 0) else if (gCurrentPinballGame->unk5C != 0)
@ -146,12 +146,12 @@ void sub_195C4(void)
gCurrentPinballGame->unk5C = 0; gCurrentPinballGame->unk5C = 0;
sub_11B0(7); sub_11B0(7);
} }
unk13BC->unk0 -= 2; flipper->position -= 2;
} }
unk13BC->unk3 = unk13BC->unk3 * dir; flipper->unk3 = flipper->unk3 * dir;
if (unk13BC->unk3 <= 0) if (flipper->unk3 <= 0)
unk13BC->unk4 = 0; flipper->unk4 = 0;
unk13BC->unk3 = dir; flipper->unk3 = dir;
} }
} }
@ -169,10 +169,10 @@ void BonusBoardProcess_4B_19734(void)
{ {
struct SpriteGroup *spriteGroup; struct SpriteGroup *spriteGroup;
if (gCurrentPinballGame->unk13BC[i].unk0 > 10) if (gCurrentPinballGame->flipper[i].position > 10)
gCurrentPinballGame->unk13BC[i].unk0 = 10; gCurrentPinballGame->flipper[i].position = 10;
else if (gCurrentPinballGame->unk13BC[i].unk0 < 0) else if (gCurrentPinballGame->flipper[i].position < 0)
gCurrentPinballGame->unk13BC[i].unk0 = 0; gCurrentPinballGame->flipper[i].position = 0;
spriteGroup = &gMain.spriteGroups[3 + i]; spriteGroup = &gMain.spriteGroups[3 + i];
if (spriteGroup->available) if (spriteGroup->available)
@ -180,7 +180,7 @@ void BonusBoardProcess_4B_19734(void)
s8 unk0; s8 unk0;
struct OamDataSimple *oamData; struct OamDataSimple *oamData;
unk0 = gCurrentPinballGame->unk13BC[i].unk0 / 2; unk0 = gCurrentPinballGame->flipper[i].position / 2;
spriteGroup->baseX = gUnknown_086ACEF4[i] - gCurrentPinballGame->unk58; spriteGroup->baseX = gUnknown_086ACEF4[i] - gCurrentPinballGame->unk58;
spriteGroup->baseY = gUnknown_02031520.unk14.unk1C - gCurrentPinballGame->unk5A; spriteGroup->baseY = gUnknown_02031520.unk14.unk1C - gCurrentPinballGame->unk5A;
@ -206,35 +206,35 @@ void sub_19894(void)
for (i = 0; i < 2; i++) for (i = 0; i < 2; i++)
{ {
s16 dir; s16 dir;
struct UnkPinballGame13BC *unk13BC; struct FlipperState *flipper;
unk13BC = &gCurrentPinballGame->unk13BC[i]; flipper = &gCurrentPinballGame->flipper[i];
unk13BC->unk1 = unk13BC->unk0; flipper->prevPosition = flipper->position;
unk13BC->unk2 = 0; flipper->unk2 = 0;
if (gCurrentPinballGame->heldButtonActions[i] && gMain.unkF == 0) if (gCurrentPinballGame->heldButtonActions[i] && gMain.unkF == 0)
{ {
if (unk13BC->unk6 == 0 && gCurrentPinballGame->unk25 == 0 && gCurrentPinballGame->unk1A == 0) if (flipper->active == 0 && gCurrentPinballGame->unk25 == 0 && gCurrentPinballGame->unk1A == 0)
{ {
m4aSongNumStart(SE_UNKNOWN_0x72); m4aSongNumStart(SE_UNKNOWN_0x72);
} }
unk13BC->unk6 = 1; flipper->active = 1;
unk13BC->unk7 = 0; flipper->stallTicks = 0;
} }
else else
{ {
if (unk13BC->unk0 == 10) if (flipper->position == 10)
{ {
if (unk13BC->unk7 > 2) if (flipper->stallTicks > 2)
unk13BC->unk6 = 0; flipper->active = 0;
unk13BC->unk7++; flipper->stallTicks++;
} }
} }
dir = 0; dir = 0;
if (unk13BC->unk6 != 0) if (flipper->active != 0)
{ {
if (unk13BC->unk0 != 10) if (flipper->position != 10)
{ {
dir = 1; dir = 1;
} }
@ -245,14 +245,14 @@ void sub_19894(void)
gCurrentPinballGame->unk5C = 0; gCurrentPinballGame->unk5C = 0;
sub_11B0(7); sub_11B0(7);
} }
unk13BC->unk2 = unk13BC->unk0 / 2 + 1; flipper->unk2 = flipper->position / 2 + 1;
unk13BC->unk0 += 4; flipper->position += 4;
} }
else else
{ {
if (unk13BC->unk0 != 0) if (flipper->position != 0)
{ {
unk13BC->unk2 = unk13BC->unk0 / 2 + 6; flipper->unk2 = flipper->position / 2 + 6;
dir = -1; dir = -1;
} }
else if (gCurrentPinballGame->unk5C != 0) else if (gCurrentPinballGame->unk5C != 0)
@ -262,11 +262,11 @@ void sub_19894(void)
gCurrentPinballGame->unk5C = 0; gCurrentPinballGame->unk5C = 0;
sub_11B0(7); sub_11B0(7);
} }
unk13BC->unk0 -= 2; flipper->position -= 2;
} }
unk13BC->unk3 = unk13BC->unk3 * dir; flipper->unk3 = flipper->unk3 * dir;
if (unk13BC->unk3 <= 0) if (flipper->unk3 <= 0)
unk13BC->unk4 = 0; flipper->unk4 = 0;
unk13BC->unk3 = dir; flipper->unk3 = dir;
} }
} }

View File

@ -78,10 +78,10 @@ void AllBoardProcess_6B_1333C()
sub_13934(&var0, &var1, r7); sub_13934(&var0, &var1, r7);
var0.x -= (gUnknown_02031520.unk14.unk22 * 2); var0.x -= (gUnknown_02031520.unk14.unk22 * 2);
var0.y -= (gUnknown_02031520.unk14.unk20 * 2); var0.y -= (gUnknown_02031520.unk14.unk20 * 2);
if (gCurrentPinballGame->unk13BC[0].unk4 == 0) if (gCurrentPinballGame->flipper[0].unk4 == 0)
{ {
sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2);
gCurrentPinballGame->unk13BC[0].unk4 = 1; gCurrentPinballGame->flipper[0].unk4 = 1;
} }
else else
{ {
@ -110,10 +110,10 @@ void AllBoardProcess_6B_1333C()
sub_13934(&var0, &var1, r7); sub_13934(&var0, &var1, r7);
var0.x -= (gUnknown_02031520.unk14.unk24 * 2); var0.x -= (gUnknown_02031520.unk14.unk24 * 2);
var0.y -= (gUnknown_02031520.unk14.unk20 * 2); var0.y -= (gUnknown_02031520.unk14.unk20 * 2);
if (gCurrentPinballGame->unk13BC[1].unk4 == 0) if (gCurrentPinballGame->flipper[1].unk4 == 0)
{ {
sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2); sub_13D24(r7, &gCurrentPinballGame->ball->velocity, &var2);
gCurrentPinballGame->unk13BC[1].unk4 = 1; gCurrentPinballGame->flipper[1].unk4 = 1;
} }
else else
{ {
@ -276,14 +276,14 @@ void sub_13B28(struct Vector16* arg0, struct Vector16* arg1, s16 arg2)
for (;;) for (;;)
{ {
sp12 = gCurrentPinballGame->unk13BC[arg2].unk0 - gCurrentPinballGame->unk13BC[arg2].unk1; sp12 = gCurrentPinballGame->flipper[arg2].position - gCurrentPinballGame->flipper[arg2].prevPosition;
if ((sp12 *= gCurrentPinballGame->unk13BC[arg2].unk8) > 0) if ((sp12 *= gCurrentPinballGame->flipper[arg2].unk8) > 0)
{ {
if (gCurrentPinballGame->unk13BC[arg2].unk2 < 7) if (gCurrentPinballGame->flipper[arg2].unk2 < 7)
r4 = gUnknown_086ACD84[gCurrentPinballGame->unk13BC[arg2].unk5 - 1][0] + 0x4000; r4 = gUnknown_086ACD84[gCurrentPinballGame->flipper[arg2].unk5 - 1][0] + 0x4000;
else else
r4 = gUnknown_086ACD84[gCurrentPinballGame->unk13BC[arg2].unk5 + 1][1] + -0x4000; // This changes compilation, apparently r4 = gUnknown_086ACD84[gCurrentPinballGame->flipper[arg2].unk5 + 1][1] + -0x4000; // This changes compilation, apparently
} }
else else
{ {
@ -896,7 +896,7 @@ void sub_1493C(void)
} }
u16 sub_14AF4(struct Vector16 r0, s16 r1, u16 *r2, s16 r3) { u16 sub_14AF4(struct Vector16 r0, s16 r1, u16 *r2, s16 r3) {
struct UnkPinballGame13BC* unk13BC; struct FlipperState* flipper;
u16 res; u16 res;
int new_var; int new_var;
unsigned short ix; unsigned short ix;
@ -904,13 +904,13 @@ u16 sub_14AF4(struct Vector16 r0, s16 r1, u16 *r2, s16 r3) {
res = 0; res = 0;
ix = (r0.y * 96) + r0.x; ix = (r0.y * 96) + r0.x;
unk13BC = &gCurrentPinballGame->unk13BC[r3]; flipper = &gCurrentPinballGame->flipper[r3];
unk13BC->unk5 = gUnknown_086ACDB8[r1 + (unk13BC->unk2 * 5)]; flipper->unk5 = gUnknown_086ACDB8[r1 + (flipper->unk2 * 5)];
if (0xF & (&gUnknown_02031520.unk68[unk13BC->unk5 * 0x2400])[ix]) if (0xF & (&gUnknown_02031520.unk68[flipper->unk5 * 0x2400])[ix])
{ {
*r2 = 0xFFF0 & (&gUnknown_02031520.unk68[unk13BC->unk5 * 0x2400])[ix]; *r2 = 0xFFF0 & (&gUnknown_02031520.unk68[flipper->unk5 * 0x2400])[ix];
if (r3 == 1) if (r3 == 1)
{ {
new_var = 0x8000; new_var = 0x8000;
@ -926,9 +926,9 @@ void sub_14B84(s32 arg0, s16 arg1, struct Vector16* arg2, u16 arg3)
{ {
u16 angle; u16 angle;
angle = gCurrentPinballGame->unk13BC[arg1].unk5; angle = gCurrentPinballGame->flipper[arg1].unk5;
if (gCurrentPinballGame->unk13BC[arg1].unk8 > 0) if (gCurrentPinballGame->flipper[arg1].unk8 > 0)
{ {
if (gCurrentPinballGame->unk5C == 0) if (gCurrentPinballGame->unk5C == 0)
{ {
@ -937,7 +937,7 @@ void sub_14B84(s32 arg0, s16 arg1, struct Vector16* arg2, u16 arg3)
s16 temp_r2; s16 temp_r2;
s16 temp_r5; s16 temp_r5;
temp_r2 = gCurrentPinballGame->unk13BC[arg1].unk5; temp_r2 = gCurrentPinballGame->flipper[arg1].unk5;
temp_r5 = (temp_r2 - 2) * 25; temp_r5 = (temp_r2 - 2) * 25;
arg0 -= temp_r5; arg0 -= temp_r5;

View File

@ -1364,7 +1364,7 @@ void sub_4C290(void)
for (i = 0; i <= 1; i++) for (i = 0; i <= 1; i++)
{ {
var0 = gCurrentPinballGame->unk13BC[i].unk0 / 2; var0 = gCurrentPinballGame->flipper[i].position / 2;
DmaCopy16(3, gUnknown_083FE44C[var0], ((i * 0x200) + 0x06010000), 0x200); DmaCopy16(3, gUnknown_083FE44C[var0], ((i * 0x200) + 0x06010000), 0x200);
} }