sub_4B000

This commit is contained in:
Marcus Huderle
2025-02-16 14:16:18 -06:00
parent 6eb9dcdbb7
commit dce87e6f7e
4 changed files with 78 additions and 244 deletions
-243
View File
@@ -6,249 +6,6 @@
.text
thumb_func_start sub_4B000
sub_4B000: @ 0x0804B000
push {r4, r5, r6, r7, lr}
bl sub_4B334
ldr r5, _0804B07C @ =gMain
ldrb r1, [r5, #0xf]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0804B014
b _0804B15A
_0804B014:
ldr r6, _0804B080 @ =gUnknown_020028D8
ldr r0, [r6, #4]
bl _call_via_r0
ldr r0, [r6, #0x14]
bl _call_via_r0
ldr r0, [r6, #0x1c]
bl _call_via_r0
ldr r0, [r6, #0x24]
bl _call_via_r0
ldrb r4, [r5, #0xf]
movs r0, #0x41
rsbs r0, r0, #0
ands r4, r0
cmp r4, #0
beq _0804B090
ldr r0, _0804B084 @ =gCurrentPinballGame
ldr r0, [r0]
ldrb r0, [r0, #0x1f]
cmp r0, #0
beq _0804B046
b _0804B14C
_0804B046:
movs r4, #0
_0804B048:
ldr r0, _0804B084 @ =gCurrentPinballGame
ldr r1, [r0]
adds r2, r1, #0
adds r2, #0x66
movs r0, #0
strh r0, [r2]
ldr r0, _0804B088 @ =0x0000132C
adds r2, r1, r0
ldr r3, _0804B08C @ =0x00001334
adds r0, r1, r3
str r0, [r2]
strb r4, [r1, #0x1e]
ldr r0, _0804B080 @ =gUnknown_020028D8
ldr r0, [r0, #0x34]
bl _call_via_r0
lsls r0, r4, #0x10
movs r4, #0x80
lsls r4, r4, #9
adds r0, r0, r4
lsrs r4, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
ble _0804B048
b _0804B14C
.align 2, 0
_0804B07C: .4byte gMain
_0804B080: .4byte gUnknown_020028D8
_0804B084: .4byte gCurrentPinballGame
_0804B088: .4byte 0x0000132C
_0804B08C: .4byte 0x00001334
_0804B090:
ldr r0, [r5, #0x50]
adds r0, #1
str r0, [r5, #0x50]
ldr r0, _0804B0C8 @ =gCurrentPinballGame
ldr r3, [r0]
movs r0, #0xa4
lsls r0, r0, #2
adds r1, r3, r0
ldr r0, [r1]
adds r0, #1
str r0, [r1]
ldrb r0, [r3, #0x1f]
cmp r0, #0
beq _0804B114
cmp r0, #2
bne _0804B0D0
adds r0, r3, #0
adds r0, #0x66
movs r2, #0
strh r4, [r0]
ldr r4, _0804B0CC @ =0x0000132C
adds r1, r3, r4
adds r4, #8
adds r0, r3, r4
str r0, [r1]
strb r2, [r3, #0x1e]
b _0804B14C
.align 2, 0
_0804B0C8: .4byte gCurrentPinballGame
_0804B0CC: .4byte 0x0000132C
_0804B0D0:
movs r4, #0
_0804B0D2:
ldr r0, _0804B104 @ =gCurrentPinballGame
ldr r1, [r0]
adds r2, r1, #0
adds r2, #0x66
movs r0, #0
strh r0, [r2]
ldr r0, _0804B108 @ =0x0000132C
adds r2, r1, r0
ldr r3, _0804B10C @ =0x00001334
adds r0, r1, r3
str r0, [r2]
strb r4, [r1, #0x1e]
ldr r0, _0804B110 @ =gUnknown_020028D8
ldr r0, [r0, #0x2c]
bl _call_via_r0
lsls r0, r4, #0x10
movs r4, #0x80
lsls r4, r4, #9
adds r0, r0, r4
lsrs r4, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
ble _0804B0D2
b _0804B14C
.align 2, 0
_0804B104: .4byte gCurrentPinballGame
_0804B108: .4byte 0x0000132C
_0804B10C: .4byte 0x00001334
_0804B110: .4byte gUnknown_020028D8
_0804B114:
movs r4, #0
adds r5, r6, #0
_0804B118:
ldr r0, _0804B194 @ =gCurrentPinballGame
ldr r1, [r0]
adds r2, r1, #0
adds r2, #0x66
movs r0, #0
strh r0, [r2]
ldr r0, _0804B198 @ =0x0000132C
adds r2, r1, r0
ldr r3, _0804B19C @ =0x00001334
adds r0, r1, r3
str r0, [r2]
strb r4, [r1, #0x1e]
ldr r0, [r5, #0x2c]
bl _call_via_r0
ldr r0, [r5, #0x34]
bl _call_via_r0
lsls r0, r4, #0x10
movs r4, #0x80
lsls r4, r4, #9
adds r0, r0, r4
lsrs r4, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
ble _0804B118
_0804B14C:
ldr r4, _0804B1A0 @ =gUnknown_020028D8
ldr r0, [r4, #0x3c]
bl _call_via_r0
ldr r0, [r4, #0x44]
bl _call_via_r0
_0804B15A:
ldr r0, _0804B1A4 @ =gMain
ldr r0, [r0, #0x4c]
movs r1, #0x1f
ands r0, r1
lsrs r0, r0, #4
cmp r0, #0
beq _0804B1B8
movs r4, #0
ldr r7, _0804B1A8 @ =gUnknown_03006240
ldr r0, _0804B1AC @ =0xFFFFF9C0
adds r6, r7, r0
ldr r5, _0804B1B0 @ =0x0000032B
ldr r1, _0804B1B4 @ =0xFFFFC156
adds r3, r1, #0
_0804B176:
lsls r0, r4, #0x10
asrs r0, r0, #0x10
adds r1, r0, r5
lsls r1, r1, #1
adds r1, r1, r6
adds r2, r0, r3
strh r2, [r1]
adds r0, #1
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #8
ble _0804B176
b _0804B1DC
.align 2, 0
_0804B194: .4byte gCurrentPinballGame
_0804B198: .4byte 0x0000132C
_0804B19C: .4byte 0x00001334
_0804B1A0: .4byte gUnknown_020028D8
_0804B1A4: .4byte gMain
_0804B1A8: .4byte gUnknown_03006240
_0804B1AC: .4byte 0xFFFFF9C0
_0804B1B0: .4byte 0x0000032B
_0804B1B4: .4byte 0xFFFFC156
_0804B1B8:
movs r4, #0
ldr r7, _0804B1F0 @ =gUnknown_03006240
ldr r3, _0804B1F4 @ =0xFFFFF9C0
adds r5, r7, r3
ldr r3, _0804B1F8 @ =0x0000032B
ldr r2, _0804B1FC @ =0x000001FF
_0804B1C4:
lsls r1, r4, #0x10
asrs r1, r1, #0x10
adds r0, r1, r3
lsls r0, r0, #1
adds r0, r0, r5
strh r2, [r0]
adds r1, #1
lsls r1, r1, #0x10
lsrs r4, r1, #0x10
asrs r1, r1, #0x10
cmp r1, #8
ble _0804B1C4
_0804B1DC:
ldr r1, _0804B200 @ =0x040000D4
str r7, [r1]
ldr r0, _0804B204 @ =0x06002640
str r0, [r1, #4]
ldr r0, _0804B208 @ =0x80000020
str r0, [r1, #8]
ldr r0, [r1, #8]
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0804B1F0: .4byte gUnknown_03006240
_0804B1F4: .4byte 0xFFFFF9C0
_0804B1F8: .4byte 0x0000032B
_0804B1FC: .4byte 0x000001FF
_0804B200: .4byte 0x040000D4
_0804B204: .4byte 0x06002640
_0804B208: .4byte 0x80000020
thumb_func_start sub_4B20C
sub_4B20C: @ 0x0804B20C
push {r4, lr}
Binary file not shown.
-1
View File
@@ -642,7 +642,6 @@ extern void sub_472E4();
//extern ? sub_497BC();
//extern ? sub_49850();
//extern ? sub_49A34();
//extern ? sub_4B000();
//extern ? sub_4B20C();
//extern ? nullsub_19();
//extern ? sub_4B654();
+78
View File
@@ -727,3 +727,81 @@ void sub_4AE8C(void)
gUnknown_020028D8[7].unk4();
gUnknown_020028D8[8].unk4();
}
void sub_4B000(void)
{
s16 i;
sub_4B334();
if (!(gMain.unkF & 0x2))
{
gUnknown_020028D8[0].unk4();
gUnknown_020028D8[2].unk4();
gUnknown_020028D8[3].unk4();
gUnknown_020028D8[4].unk4();
if (gMain.unkF & ~0x40)
{
if (!gCurrentPinballGame->unk1F)
{
for (i = 0; i < 4; i++)
{
gCurrentPinballGame->unk66 = 0;
gCurrentPinballGame->unk132c = &gCurrentPinballGame->unk1334[0];
gCurrentPinballGame->unk1E = i;
gUnknown_020028D8[6].unk4();
}
}
}
else
{
gMain.fieldFrameCount++;
gCurrentPinballGame->unk290++;
if (gCurrentPinballGame->unk1F)
{
if (gCurrentPinballGame->unk1F == 2)
{
gCurrentPinballGame->unk66 = 0;
gCurrentPinballGame->unk132c = &gCurrentPinballGame->unk1334[0];
gCurrentPinballGame->unk1E = 0;
}
else
{
for (i = 0; i < 4; i++)
{
gCurrentPinballGame->unk66 = 0;
gCurrentPinballGame->unk132c = &gCurrentPinballGame->unk1334[0];
gCurrentPinballGame->unk1E = i;
gUnknown_020028D8[5].unk4();
}
}
}
else
{
for (i = 0; i < 4; i++)
{
gCurrentPinballGame->unk66 = 0;
gCurrentPinballGame->unk132c = &gCurrentPinballGame->unk1334[0];
gCurrentPinballGame->unk1E = i;
gUnknown_020028D8[5].unk4();
gUnknown_020028D8[6].unk4();
}
}
}
gUnknown_020028D8[7].unk4();
gUnknown_020028D8[8].unk4();
}
if ((gMain.systemFrameCount % 32) / 16 > 0)
{
for (i = 0; i < 9; i++)
gUnknown_03005C00[0x32B + i] = 0xC156 + i;
}
else
{
for (i = 0; i < 9; i++)
gUnknown_03005C00[0x32B + i] = 0x1FF;
}
DmaCopy16(3, &gUnknown_03005C00[0x320], (void *)0x6002640, 0x40);
}