sub_4ABEC
Some checks are pending
CI / build (push) Waiting to run

This commit is contained in:
Marcus Huderle 2025-02-16 11:09:38 -06:00
parent c20457c93e
commit 4f25131f8b
5 changed files with 62 additions and 126 deletions

View File

@ -6,127 +6,6 @@
.text
thumb_func_start sub_4ABEC
sub_4ABEC: @ 0x0804ABEC
push {r4, r5, lr}
bl sub_4B280
ldr r5, _0804AC50 @ =gUnknown_020028D8
ldr r0, [r5, #0xc]
bl _call_via_r0
ldr r4, _0804AC54 @ =gMain
ldrh r1, [r4, #0xe]
ldr r0, _0804AC58 @ =0x000002FF
ands r0, r1
cmp r0, #0
bne _0804ACDE
ldr r0, [r5, #0x14]
bl _call_via_r0
ldr r0, [r5, #4]
bl _call_via_r0
ldr r0, [r5, #0x1c]
bl _call_via_r0
ldr r0, [r5, #0x24]
bl _call_via_r0
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0804AC60
ldr r0, _0804AC5C @ =gCurrentPinballGame
ldr r0, [r0]
ldrb r0, [r0, #0x1f]
cmp r0, #0
bne _0804ACD0
movs r4, #0
_0804AC30:
ldr r0, _0804AC5C @ =gCurrentPinballGame
ldr r0, [r0]
strb r4, [r0, #0x1e]
ldr r0, _0804AC50 @ =gUnknown_020028D8
ldr r0, [r0, #0x34]
bl _call_via_r0
lsls r0, r4, #0x10
movs r1, #0x80
lsls r1, r1, #9
adds r0, r0, r1
lsrs r4, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
ble _0804AC30
b _0804ACD0
.align 2, 0
_0804AC50: .4byte gUnknown_020028D8
_0804AC54: .4byte gMain
_0804AC58: .4byte 0x000002FF
_0804AC5C: .4byte gCurrentPinballGame
_0804AC60:
ldr r0, [r4, #0x50]
adds r0, #1
str r0, [r4, #0x50]
ldr r0, _0804ACA4 @ =gCurrentPinballGame
ldr r2, [r0]
movs r0, #0xa4
lsls r0, r0, #2
adds r1, r2, r0
ldr r0, [r1]
adds r0, #1
str r0, [r1]
ldrb r0, [r2, #0x1f]
cmp r0, #0
beq _0804ACAC
cmp r0, #2
beq _0804ACD0
movs r4, #0
_0804AC82:
ldr r0, _0804ACA4 @ =gCurrentPinballGame
ldr r0, [r0]
strb r4, [r0, #0x1e]
ldr r0, _0804ACA8 @ =gUnknown_020028D8
ldr r0, [r0, #0x2c]
bl _call_via_r0
lsls r0, r4, #0x10
movs r1, #0x80
lsls r1, r1, #9
adds r0, r0, r1
lsrs r4, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
ble _0804AC82
b _0804ACD0
.align 2, 0
_0804ACA4: .4byte gCurrentPinballGame
_0804ACA8: .4byte gUnknown_020028D8
_0804ACAC:
movs r4, #0
_0804ACAE:
ldr r0, _0804ACE8 @ =gCurrentPinballGame
ldr r0, [r0]
strb r4, [r0, #0x1e]
ldr r0, [r5, #0x2c]
bl _call_via_r0
ldr r0, [r5, #0x34]
bl _call_via_r0
lsls r0, r4, #0x10
movs r1, #0x80
lsls r1, r1, #9
adds r0, r0, r1
lsrs r4, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
ble _0804ACAE
_0804ACD0:
ldr r4, _0804ACEC @ =gUnknown_020028D8
ldr r0, [r4, #0x3c]
bl _call_via_r0
ldr r0, [r4, #0x44]
bl _call_via_r0
_0804ACDE:
bl sub_47030
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_0804ACE8: .4byte gCurrentPinballGame
_0804ACEC: .4byte gUnknown_020028D8
thumb_func_start sub_4ACF0
sub_4ACF0: @ 0x0804ACF0
push {r4, r5, r6, r7, lr}

Binary file not shown.

View File

@ -626,7 +626,7 @@ extern void sub_32DF8();
//extern ? sub_45E90();
//extern ? sub_467F4();
extern void sub_46FD4(s16);
//extern ? sub_47030();
extern void sub_47030(void);
//extern ? sub_47100();
//extern ? sub_47160();
extern void sub_472E4();
@ -642,13 +642,11 @@ extern void sub_472E4();
//extern ? sub_497BC();
//extern ? sub_49850();
//extern ? sub_49A34();
//extern ? sub_4ABEC();
//extern ? sub_4ACF0();
//extern ? sub_4AE8C();
//extern ? sub_4B000();
//extern ? sub_4B20C();
//extern ? nullsub_19();
//extern ? sub_4B280();
//extern ? sub_4B334();
//extern ? sub_4B654();
//extern ? sub_4B678();

View File

@ -97,7 +97,7 @@ struct PinballGame
/*0x016*/ u8 unk16;
/*0x017*/ u8 filler17[0x6];
/*0x01D*/ u8 unk1D;
/*0x01E*/ u8 filler1E[0x1];
/*0x01E*/ u8 unk1E;
/*0x01F*/ u8 unk1F;
/*0x020*/ u8 filler20[0x5];
/*0x025*/ s8 unk25;
@ -160,7 +160,9 @@ struct PinballGame
/*0x1E6*/ u8 unk1E6;
/*0x1E7*/ u8 filler1E7[0x9B];
/*0x282*/ s8 unk282;
/*0x283*/ u8 filler283[0x19];
/*0x283*/ u8 filler283[0xD];
/*0x290*/ u32 unk290;
/*0x294*/ u8 filler294[0x8];
/*0x29C*/ u16 unk29C;
/*0x29E*/ u8 filler29E[0x4];
/*0x2A2*/ u8 unk2A2;

View File

@ -31,6 +31,7 @@ void sub_47110(void);
static void sub_4A270(void);
void sub_4A518(void);
void sub_4A90C(void);
void sub_4B280(void);
void sub_4B408(u16);
void sub_4B678(u16);
@ -535,3 +536,59 @@ void sub_4ABC8(void)
gMain.subState++;
}
}
void sub_4ABEC(void)
{
s16 i;
sub_4B280();
gUnknown_020028D8[1].unk4();
if (gMain.unkE == 0 && !(gMain.unkF & 0x2))
{
gUnknown_020028D8[2].unk4();
gUnknown_020028D8[0].unk4();
gUnknown_020028D8[3].unk4();
gUnknown_020028D8[4].unk4();
if (gMain.unkF)
{
if (!gCurrentPinballGame->unk1F)
{
for (i = 0; i < 4; i++)
{
gCurrentPinballGame->unk1E = i;
gUnknown_020028D8[6].unk4();
}
}
}
else
{
gMain.fieldFrameCount++;
gCurrentPinballGame->unk290++;
if (gCurrentPinballGame->unk1F)
{
if (gCurrentPinballGame->unk1F != 2)
{
for (i = 0; i < 4; i++)
{
gCurrentPinballGame->unk1E = i;
gUnknown_020028D8[5].unk4();
}
}
}
else
{
for (i = 0; i < 4; i++)
{
gCurrentPinballGame->unk1E = i;
gUnknown_020028D8[5].unk4();
gUnknown_020028D8[6].unk4();
}
}
}
gUnknown_020028D8[7].unk4();
gUnknown_020028D8[8].unk4();
}
sub_47030();
}