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

This commit is contained in:
Marcus Huderle 2025-07-27 15:51:05 -05:00
parent 24cba6301f
commit 06f1d310bc
5 changed files with 142 additions and 350 deletions

View File

@ -24110,348 +24110,3 @@ _08043218: .4byte 0x05000220
_0804321C: .4byte 0x80000010
_08043220: .4byte gUnknown_081B36A4
_08043224: .4byte 0x05000320
thumb_func_start sub_43228
sub_43228: @ 0x08043228
push {r4, r5, lr}
ldr r1, _08043248 @ =gCurrentPinballGame
ldr r0, [r1]
ldrb r0, [r0, #0x13]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r5, r1, #0
cmp r0, #5
bls _0804323C
b _080434BA
_0804323C:
lsls r0, r0, #2
ldr r1, _0804324C @ =_08043250
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08043248: .4byte gCurrentPinballGame
_0804324C: .4byte _08043250
_08043250: @ jump table
.4byte _08043268 @ case 0
.4byte _080432CE @ case 1
.4byte _08043342 @ case 2
.4byte _080433D4 @ case 3
.4byte _08043470 @ case 4
.4byte _080434A2 @ case 5
_08043268:
ldr r0, [r5]
ldr r1, _080432B0 @ =0x000005F7
adds r0, r0, r1
movs r3, #0
movs r2, #1
strb r2, [r0]
ldr r4, [r5]
ldrh r1, [r4, #0x18]
ldr r0, _080432B4 @ =0x00000153
cmp r1, r0
bhi _080432C0
subs r0, #0x13
cmp r1, r0
bhi _08043296
adds r0, r1, #0
movs r1, #5
bl __udivsi3
ldr r2, _080432B8 @ =0x0000FFC0
adds r0, r0, r2
adds r1, r4, #0
adds r1, #0xe6
strh r0, [r1]
_08043296:
ldr r2, [r5]
ldrh r1, [r2, #0x18]
ldr r0, _080432BC @ =0x00000145
cmp r1, r0
bne _080432AA
movs r3, #0xa5
lsls r3, r3, #2
adds r1, r2, r3
movs r0, #2
strb r0, [r1]
_080432AA:
ldr r1, [r5]
ldrh r0, [r1, #0x18]
b _0804331C
.align 2, 0
_080432B0: .4byte 0x000005F7
_080432B4: .4byte 0x00000153
_080432B8: .4byte 0x0000FFC0
_080432BC: .4byte 0x00000145
_080432C0:
adds r0, r4, #0
adds r0, #0xe6
strh r3, [r0]
strb r2, [r4, #0x13]
ldr r0, [r5]
strh r3, [r0, #0x18]
b _080434BA
_080432CE:
ldr r1, [r5]
ldr r4, _08043324 @ =0x00000296
adds r0, r1, r4
ldrh r4, [r0]
cmp r4, #0
beq _080432DC
b _080434BA
_080432DC:
movs r0, #0xa5
lsls r0, r0, #2
adds r1, r1, r0
movs r0, #3
strb r0, [r1]
ldr r0, [r5]
ldrh r0, [r0, #0x18]
cmp r0, #0
bne _08043314
bl m4aMPlayAllStop
ldr r0, _08043328 @ =gMPlayInfo_SE1
ldr r1, _0804332C @ =gUnknown_086A2E90
bl MPlayStart
ldr r1, _08043330 @ =gMain
movs r0, #0x80
strb r0, [r1, #0xf]
ldr r0, [r5]
movs r1, #0xe2
lsls r1, r1, #2
adds r0, r0, r1
movs r1, #2
strb r1, [r0]
ldr r0, [r5]
ldr r2, _08043334 @ =0x00000392
adds r0, r0, r2
strh r4, [r0]
_08043314:
ldr r1, [r5]
ldrh r0, [r1, #0x18]
cmp r0, #0x3b
bhi _08043338
_0804331C:
adds r0, #1
strh r0, [r1, #0x18]
b _080434BA
.align 2, 0
_08043324: .4byte 0x00000296
_08043328: .4byte gMPlayInfo_SE1
_0804332C: .4byte gUnknown_086A2E90
_08043330: .4byte gMain
_08043334: .4byte 0x00000392
_08043338:
movs r0, #2
strb r0, [r1, #0x13]
ldr r0, [r5]
strh r4, [r0, #0x18]
b _080434BA
_08043342:
ldr r0, [r5]
ldrh r0, [r0, #0x18]
cmp r0, #0
bne _08043354
bl m4aMPlayAllStop
movs r0, MUS_SUCCESS3
bl m4aSongNumStart
_08043354:
ldr r2, [r5]
ldrh r0, [r2, #0x18]
cmp r0, #0x13
bhi _08043362
adds r0, #1
strh r0, [r2, #0x18]
b _080434BA
_08043362:
movs r1, #0
movs r0, #3
strb r0, [r2, #0x13]
ldr r0, [r5]
strh r1, [r0, #0x18]
ldr r2, _080433B0 @ =gMain
movs r3, #0x80
lsls r3, r3, #4
adds r0, r2, r3
movs r3, #1
movs r1, #1
strh r1, [r0]
ldr r4, _080433B4 @ =0x000008B8
adds r0, r2, r4
strh r1, [r0]
adds r4, #0xb8
adds r0, r2, r4
strh r1, [r0]
ldr r0, _080433B8 @ =0x00000A28
adds r2, r2, r0
strh r1, [r2]
ldr r1, _080433BC @ =0x040000D4
ldr r0, _080433C0 @ =gUnknown_084B77EC
str r0, [r1]
ldr r0, _080433C4 @ =0x06015800
str r0, [r1, #4]
ldr r0, _080433C8 @ =0x80000400
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r0, [r5]
movs r1, #0xe5
lsls r1, r1, #2
adds r2, r0, r1
ldr r1, _080433CC @ =0x0000FF82
strh r1, [r2]
ldr r2, _080433D0 @ =0x000005FA
adds r0, r0, r2
strb r3, [r0]
b _080434BA
.align 2, 0
_080433B0: .4byte gMain
_080433B4: .4byte 0x000008B8
_080433B8: .4byte 0x00000A28
_080433BC: .4byte 0x040000D4
_080433C0: .4byte gUnknown_084B77EC
_080433C4: .4byte 0x06015800
_080433C8: .4byte 0x80000400
_080433CC: .4byte 0x0000FF82
_080433D0: .4byte 0x000005FA
_080433D4:
bl sub_45E90
ldr r1, _08043444 @ =gCurrentPinballGame
ldr r2, [r1]
ldrb r0, [r2, #0x1c]
cmp r0, #0
beq _080433E6
movs r0, #0xb5
strh r0, [r2, #0x18]
_080433E6:
ldr r2, [r1]
ldrh r0, [r2, #0x18]
cmp r0, #0xb4
bne _08043408
ldr r3, _08043448 @ =0x00000544
adds r0, r2, r3
ldr r0, [r0]
cmp r0, #0
beq _08043408
movs r0, #1
strb r0, [r2, #0x1c]
ldr r1, [r1]
ldr r0, _0804344C @ =0x00061A80
str r0, [r1, #0x38]
adds r0, r1, r3
ldr r0, [r0]
str r0, [r1, #0x3c]
_08043408:
ldr r0, _08043444 @ =gCurrentPinballGame
ldr r2, [r0]
ldrh r1, [r2, #0x18]
adds r5, r0, #0
cmp r1, #0xbd
bls _08043426
ldr r0, _08043450 @ =gMain
ldrh r1, [r0, #0x18]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08043426
movs r0, #0x87
lsls r0, r0, #2
strh r0, [r2, #0x18]
_08043426:
ldr r1, [r5]
ldrh r2, [r1, #0x18]
ldr r0, _08043454 @ =0x0000021B
cmp r2, r0
bhi _08043458
cmp r2, #4
bne _0804343A
movs r0, SE_UNKNOWN_0xA4
bl m4aSongNumStart
_0804343A:
ldr r1, [r5]
ldrh r0, [r1, #0x18]
adds r0, #1
strh r0, [r1, #0x18]
b _08043460
.align 2, 0
_08043444: .4byte gCurrentPinballGame
_08043448: .4byte 0x00000544
_0804344C: .4byte 0x00061A80
_08043450: .4byte gMain
_08043454: .4byte 0x0000021B
_08043458:
movs r0, #0
strh r0, [r1, #0x18]
movs r0, #4
strb r0, [r1, #0x13]
_08043460:
ldr r0, [r5]
ldr r4, _0804346C @ =0x000005FA
adds r0, r0, r4
movs r1, #1
b _080434B8
.align 2, 0
_0804346C: .4byte 0x000005FA
_08043470:
bl sub_45E90
ldr r0, _08043494 @ =gCurrentPinballGame
ldr r1, [r0]
ldrh r0, [r1, #0x18]
cmp r0, #0x1d
bhi _08043498
adds r0, #1
strh r0, [r1, #0x18]
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #2
bne _080434BA
movs r0, SE_UNKNOWN_0xA4
bl m4aSongNumStart
b _080434BA
.align 2, 0
_08043494: .4byte gCurrentPinballGame
_08043498:
movs r0, #0
strh r0, [r1, #0x18]
movs r0, #5
strb r0, [r1, #0x13]
b _080434BA
_080434A2:
bl sub_45E90
ldr r2, _080434F4 @ =gCurrentPinballGame
ldr r0, [r2]
ldr r1, _080434F8 @ =0x00000386
adds r0, r0, r1
movs r1, #1
strb r1, [r0]
ldr r0, [r2]
ldr r2, _080434FC @ =0x000005FA
adds r0, r0, r2
_080434B8:
strb r1, [r0]
_080434BA:
bl sub_4387C
bl sub_43500
bl sub_44D58
bl sub_45E08
ldr r0, _080434F4 @ =gCurrentPinballGame
ldr r1, [r0]
ldr r3, _080434F8 @ =0x00000386
adds r0, r1, r3
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
beq _080434E8
ldr r4, _080434FC @ =0x000005FA
adds r1, r1, r4
movs r0, #1
strb r0, [r1]
bl sub_350F0
_080434E8:
bl sub_472E4
pop {r4, r5}
pop {r0}
bx r0
.align 2, 0
_080434F4: .4byte gCurrentPinballGame
_080434F8: .4byte 0x00000386
_080434FC: .4byte 0x000005FA

Binary file not shown.

Binary file not shown.

View File

@ -615,14 +615,14 @@ extern void sub_3E5D0(void);
//extern ? sub_423D8();
//extern ? sub_42E48();
//extern ? sub_43228();
//extern ? sub_43500();
//extern ? sub_4387C();
//extern ? sub_44D58();
extern void sub_43500(void);
extern void sub_4387C(void);
extern void sub_44D58(void);
extern void sub_44F3C(void);
extern void sub_45164(void);
extern void sub_455D0(void);
//extern ? sub_45E08();
//extern ? sub_45E90();
extern void sub_45E08(void);
extern void sub_45E90(void);
extern void sub_467F4(void);
extern void sub_46FD4(s16);
extern void sub_47030(void);

View File

@ -101,6 +101,7 @@ extern const u16 gUnknown_086B56D8[][4][3];
extern const u16 gUnknown_086AFAE2[][2];
extern const u16 gUnknown_086AFAE0[][2];
extern const u8 gUnknown_084B47EC[][0x800];
extern const u8 gUnknown_084B77EC[];
struct Unk_086AFAC0
{
@ -115,6 +116,7 @@ extern struct SongHeader gUnknown_086A2D94;
extern struct SongHeader gUnknown_086A2E70;
extern struct SongHeader gUnknown_086A2D28;
extern struct SongHeader gUnknown_086A2EAC;
extern struct SongHeader gUnknown_086A2E90;
extern s16 gUnknown_02030750[];
extern s16 gUnknown_02031500[];
@ -123,6 +125,141 @@ extern u8 gUnknown_0200FBB0[];
extern u8 gUnknown_020030A0[];
void sub_43228(void)
{
switch (gCurrentPinballGame->unk13)
{
case 0:
gCurrentPinballGame->unk5F7 = 1;
if (gCurrentPinballGame->unk18 < 340)
{
if (gCurrentPinballGame->unk18 < 321)
gCurrentPinballGame->unkE6 = (gCurrentPinballGame->unk18 / 5) + 0xFFC0;
if (gCurrentPinballGame->unk18 == 325)
gCurrentPinballGame->unk294 = 2;
gCurrentPinballGame->unk18++;
}
else
{
gCurrentPinballGame->unkE6 = 0;
gCurrentPinballGame->unk13 = 1;
gCurrentPinballGame->unk18 = 0;
}
break;
case 1:
if (gCurrentPinballGame->eventTimer == 0)
{
gCurrentPinballGame->unk294 = 3;
if (gCurrentPinballGame->unk18 == 0)
{
m4aMPlayAllStop();
MPlayStart(&gMPlayInfo_SE1, &gUnknown_086A2E90);
gMain.unkF = 0x80;
gCurrentPinballGame->unk388 = 2;
gCurrentPinballGame->unk392 = 0;
}
if (gCurrentPinballGame->unk18 < 60)
{
gCurrentPinballGame->unk18++;
}
else
{
gCurrentPinballGame->unk13 = 2;
gCurrentPinballGame->unk18 = 0;
}
}
break;
case 2:
if (gCurrentPinballGame->unk18 == 0)
{
m4aMPlayAllStop();
m4aSongNumStart(MUS_SUCCESS3);
}
if (gCurrentPinballGame->unk18 < 20)
{
gCurrentPinballGame->unk18++;
}
else
{
gCurrentPinballGame->unk13 = 3;
gCurrentPinballGame->unk18 = 0;
gMain.spriteGroups[7].available = 1;
gMain.spriteGroups[8].available = 1;
gMain.spriteGroups[9].available = 1;
gMain.spriteGroups[10].available = 1;
DmaCopy16(3, gUnknown_084B77EC, (void *)0x06015800, 0x800);
gCurrentPinballGame->unk394 = -126;
gCurrentPinballGame->unk5FA = 1;
}
break;
case 3:
sub_45E90();
if (gCurrentPinballGame->unk1C)
gCurrentPinballGame->unk18 = 181;
if (gCurrentPinballGame->unk18 == 180 && gCurrentPinballGame->unk544 != 0)
{
gCurrentPinballGame->unk1C = 1;
gCurrentPinballGame->unk38 = 400000;
gCurrentPinballGame->unk3C = gCurrentPinballGame->unk544;
}
if (gCurrentPinballGame->unk18 > 189 && JOY_NEW(A_BUTTON))
gCurrentPinballGame->unk18 = 540;
if (gCurrentPinballGame->unk18 < 540)
{
if (gCurrentPinballGame->unk18 == 4)
m4aSongNumStart(SE_UNKNOWN_0xA4);
gCurrentPinballGame->unk18++;
}
else
{
gCurrentPinballGame->unk18 = 0;
gCurrentPinballGame->unk13 = 4;
}
gCurrentPinballGame->unk5FA = 1;
break;
case 4:
sub_45E90();
if (gCurrentPinballGame->unk18 < 30)
{
gCurrentPinballGame->unk18++;
if (gCurrentPinballGame->unk18 == 2)
m4aSongNumStart(SE_UNKNOWN_0xA4);
}
else
{
gCurrentPinballGame->unk18 = 0;
gCurrentPinballGame->unk13 = 5;
}
break;
case 5:
sub_45E90();
gCurrentPinballGame->unk386 = 1;
gCurrentPinballGame->unk5FA = 1;
break;
}
sub_4387C();
sub_43500();
sub_44D58();
sub_45E08();
if (gCurrentPinballGame->unk386)
{
gCurrentPinballGame->unk5FA = 1;
sub_350F0();
}
sub_472E4();
}
void sub_43500(void)
{
s16 i;