sub_3B120

This commit is contained in:
Marcus Huderle 2025-08-10 08:20:40 -05:00
parent f188aec753
commit 98bbccde6c
3 changed files with 103 additions and 419 deletions

View File

@ -8292,422 +8292,3 @@ _0803B110: .4byte gMain+0xAE0 @gMain.spriteGroups[11]
_0803B114: .4byte 0x000001FF
_0803B118: .4byte 0xFFFFFE00
_0803B11C: .4byte gMain+0xDC0 @gMain.spriteGroups[15]
thumb_func_start sub_3B120
sub_3B120: @ 0x0803B120
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
ldr r4, _0803B158 @ =gCurrentPinballGame
ldr r1, [r4]
movs r2, #0
movs r0, #0
strh r0, [r1, #0x18]
strb r2, [r1, #0x17]
ldr r0, [r4]
strb r2, [r0, #0x13]
ldr r5, [r4]
ldr r1, _0803B15C @ =0x00000283
adds r0, r5, r1
ldrb r0, [r0]
movs r1, #5
bl __umodsi3
lsls r0, r0, #0x18
lsrs r0, r0, #0x18
mov ip, r4
cmp r0, #3
bne _0803B160
movs r2, #0xe1
lsls r2, r2, #2
adds r1, r5, r2
movs r0, #0x12
b _0803B168
.align 2, 0
_0803B158: .4byte gCurrentPinballGame
_0803B15C: .4byte 0x00000283
_0803B160:
movs r3, #0xe1
lsls r3, r3, #2
adds r1, r5, r3
movs r0, #0xf
_0803B168:
strb r0, [r1]
mov r4, ip
ldr r0, [r4]
movs r5, #0xa5
lsls r5, r5, #2
adds r0, r0, r5
movs r3, #0
strb r3, [r0]
ldr r1, [r4]
adds r5, r1, #0
adds r5, #0x6c
ldr r6, _0803B42C @ =0x00002A30
adds r0, r6, #0
ldrh r2, [r5]
adds r0, r0, r2
ldr r4, _0803B430 @ =0x00000296
adds r2, r1, r4
movs r4, #0
strh r0, [r2]
strh r3, [r5]
movs r5, #0xe2
lsls r5, r5, #2
adds r1, r1, r5
movs r2, #3
strb r2, [r1]
mov r6, ip
ldr r0, [r6]
adds r5, #0xa
adds r1, r0, r5
strh r3, [r1]
ldr r6, _0803B434 @ =0x0000132C
adds r0, r0, r6
ldr r0, [r0]
movs r1, #1
strb r1, [r0]
mov r5, ip
ldr r0, [r5]
ldr r6, _0803B438 @ =0x00000386
adds r0, r0, r6
strb r4, [r0]
ldr r0, [r5]
ldr r5, _0803B43C @ =0x00000387
adds r0, r0, r5
strb r1, [r0]
mov r6, ip
ldr r0, [r6]
ldr r1, _0803B440 @ =0x000006C4
adds r0, r0, r1
strb r2, [r0]
ldr r0, [r6]
ldr r2, _0803B444 @ =0x00000382
adds r0, r0, r2
strb r4, [r0]
ldr r0, [r6]
subs r5, #4
adds r0, r0, r5
strb r4, [r0]
ldr r0, [r6]
ldr r6, _0803B448 @ =0x00000385
adds r0, r0, r6
strb r4, [r0]
mov r1, ip
ldr r0, [r1]
adds r2, #7
adds r0, r0, r2
strb r4, [r0]
ldr r1, [r1]
adds r5, #0xb
adds r0, r1, r5
strh r3, [r0]
adds r6, #0xb
adds r0, r1, r6
strh r3, [r0]
adds r2, #0xb
adds r0, r1, r2
strh r3, [r0]
adds r5, #0x4e
adds r0, r1, r5
strb r4, [r0]
mov r6, ip
ldr r0, [r6]
ldr r1, _0803B44C @ =0x000003DD
adds r0, r0, r1
strb r4, [r0]
ldr r0, [r6]
adds r2, #0x4a
adds r0, r0, r2
strb r4, [r0]
ldr r0, [r6]
adds r5, #3
adds r0, r0, r5
strb r4, [r0]
ldr r0, [r6]
movs r6, #0xf8
lsls r6, r6, #2
adds r0, r0, r6
strb r4, [r0]
mov r1, ip
ldr r0, [r1]
adds r2, #4
adds r1, r0, r2
strh r3, [r1]
adds r5, #2
adds r0, r0, r5
strb r4, [r0]
mov r6, ip
ldr r1, [r6]
adds r2, #2
adds r0, r1, r2
strh r3, [r0]
adds r5, #5
adds r0, r1, r5
strh r3, [r0]
movs r6, #0xfa
lsls r6, r6, #2
adds r0, r1, r6
strh r3, [r0]
adds r2, #6
adds r0, r1, r2
strh r3, [r0]
adds r5, #6
adds r0, r1, r5
strh r3, [r0]
adds r6, #6
adds r0, r1, r6
strh r3, [r0]
adds r2, #6
adds r0, r1, r2
strh r3, [r0]
adds r5, #6
adds r0, r1, r5
strh r3, [r0]
adds r6, #0x64
adds r0, r1, r6
strh r3, [r0]
adds r2, #0x66
adds r0, r1, r2
strh r3, [r0]
adds r5, #0x8a
adds r1, r1, r5
strb r4, [r1]
mov r6, ip
ldr r0, [r6]
ldr r1, _0803B450 @ =0x0000047D
adds r0, r0, r1
strb r4, [r0]
ldr r0, [r6]
adds r2, #0x28
adds r0, r0, r2
strb r4, [r0]
ldr r0, [r6]
adds r5, #3
adds r0, r0, r5
strb r4, [r0]
ldr r0, [r6]
movs r6, #0x90
lsls r6, r6, #3
adds r1, r0, r6
strh r3, [r1]
adds r2, #4
adds r1, r0, r2
strh r3, [r1]
adds r5, #5
adds r1, r0, r5
strh r3, [r1]
adds r6, #6
adds r1, r0, r6
strh r3, [r1]
adds r2, #6
adds r1, r0, r2
strh r3, [r1]
adds r5, #6
adds r1, r0, r5
strh r3, [r1]
adds r6, #0x3e
adds r1, r0, r6
strh r3, [r1]
adds r2, #0x3e
adds r1, r0, r2
strh r3, [r1]
adds r5, #0x3e
adds r0, r0, r5
strb r4, [r0]
mov r6, ip
ldr r0, [r6]
adds r2, #4
adds r1, r0, r2
strh r3, [r1]
ldr r3, _0803B454 @ =0x000004C9
adds r0, r0, r3
strb r4, [r0]
movs r1, #0
mov r5, ip
movs r6, #0
movs r7, #0
_0803B2EE:
ldr r3, [r5]
lsls r2, r1, #0x10
asrs r2, r2, #0x10
lsls r4, r2, #2
adds r1, r3, r4
ldr r0, _0803B458 @ =0x0000046C
strh r7, [r0, r1]
adds r0, #2
adds r1, r1, r0
strh r7, [r1]
ldr r1, _0803B45C @ =0x0000048C
adds r3, r3, r1
adds r3, r3, r2
strb r6, [r3]
ldr r0, [r5]
movs r3, #0x92
lsls r3, r3, #3
adds r0, r0, r3
adds r0, r0, r2
strb r6, [r0]
ldr r0, [r5]
adds r1, #8
adds r0, r0, r1
adds r0, r0, r2
strb r6, [r0]
ldr r0, [r5]
adds r3, #8
adds r0, r0, r3
adds r0, r0, r2
strb r6, [r0]
ldr r0, [r5]
adds r1, #8
adds r0, r0, r1
adds r0, r0, r2
strb r6, [r0]
ldr r0, [r5]
adds r3, #8
adds r0, r0, r3
adds r0, r0, r2
strb r6, [r0]
ldr r0, [r5]
adds r1, #8
adds r0, r0, r1
adds r0, r0, r2
strb r6, [r0]
ldr r1, [r5]
lsls r3, r2, #1
mov r8, r3
ldr r3, _0803B460 @ =0x000004AC
adds r0, r1, r3
add r0, r8
strh r7, [r0]
adds r1, r1, r4
ldr r4, _0803B464 @ =0x000004B4
adds r0, r1, r4
strh r7, [r0]
ldr r0, _0803B468 @ =0x000004B6
adds r1, r1, r0
strh r7, [r1]
adds r2, #1
lsls r2, r2, #0x10
lsrs r1, r2, #0x10
asrs r2, r2, #0x10
cmp r2, #3
ble _0803B2EE
movs r1, #0
ldr r5, _0803B46C @ =gCurrentPinballGame
movs r4, #0
_0803B376:
ldr r0, [r5]
lsls r2, r1, #0x10
asrs r2, r2, #0x10
ldr r1, _0803B470 @ =0x000004CC
adds r0, r0, r1
adds r0, r0, r2
strb r4, [r0]
ldr r0, [r5]
ldr r3, _0803B474 @ =0x000004CF
adds r0, r0, r3
adds r0, r0, r2
strb r4, [r0]
ldr r0, [r5]
ldr r6, _0803B478 @ =0x000004D2
adds r0, r0, r6
adds r0, r0, r2
strb r4, [r0]
ldr r0, [r5]
adds r1, #9
adds r0, r0, r1
adds r0, r0, r2
strb r4, [r0]
ldr r1, [r5]
lsls r3, r2, #1
adds r6, #6
adds r0, r1, r6
adds r0, r0, r3
strh r4, [r0]
adds r6, #6
adds r0, r1, r6
adds r0, r0, r3
strh r4, [r0]
adds r6, #6
adds r0, r1, r6
adds r0, r0, r3
strh r4, [r0]
lsls r0, r2, #2
adds r1, r1, r0
ldr r3, _0803B47C @ =0x000004EC
adds r0, r1, r3
strh r4, [r0]
adds r6, #0xa
adds r0, r1, r6
strh r4, [r0]
adds r3, #0xc
adds r0, r1, r3
strh r4, [r0]
adds r6, #0xc
adds r1, r1, r6
strh r4, [r1]
adds r2, #1
lsls r2, r2, #0x10
lsrs r1, r2, #0x10
asrs r2, r2, #0x10
cmp r2, #2
ble _0803B376
mov r0, ip
ldr r1, [r0]
movs r0, #1
strb r0, [r1, #0x1a]
bl sub_3CBC4
bl sub_3B7C4
bl sub_3C6E0
ldr r4, _0803B480 @ =0x040000D4
ldr r0, _0803B484 @ =gUnknown_0849F1CC
str r0, [r4]
ldr r0, _0803B488 @ =0x06015800
str r0, [r4, #4]
ldr r0, _0803B48C @ =0x80001000
str r0, [r4, #8]
ldr r0, [r4, #8]
bl sub_3E644
movs r0, MUS_BONUS_FIELD_GROUDON
bl m4aSongNumStart
ldr r0, _0803B490 @ =gUnknown_081B36A4
str r0, [r4]
ldr r0, _0803B494 @ =0x05000320
str r0, [r4, #4]
ldr r0, _0803B498 @ =0x80000010
str r0, [r4, #8]
ldr r0, [r4, #8]
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0803B42C: .4byte 0x00002A30
_0803B430: .4byte 0x00000296
_0803B434: .4byte 0x0000132C
_0803B438: .4byte 0x00000386
_0803B43C: .4byte 0x00000387
_0803B440: .4byte 0x000006C4
_0803B444: .4byte 0x00000382
_0803B448: .4byte 0x00000385
_0803B44C: .4byte 0x000003DD
_0803B450: .4byte 0x0000047D
_0803B454: .4byte 0x000004C9
_0803B458: .4byte 0x0000046C
_0803B45C: .4byte 0x0000048C
_0803B460: .4byte 0x000004AC
_0803B464: .4byte 0x000004B4
_0803B468: .4byte 0x000004B6
_0803B46C: .4byte gCurrentPinballGame
_0803B470: .4byte 0x000004CC
_0803B474: .4byte 0x000004CF
_0803B478: .4byte 0x000004D2
_0803B47C: .4byte 0x000004EC
_0803B480: .4byte 0x040000D4
_0803B484: .4byte gUnknown_0849F1CC
_0803B488: .4byte 0x06015800
_0803B48C: .4byte 0x80001000
_0803B490: .4byte gUnknown_081B36A4
_0803B494: .4byte 0x05000320
_0803B498: .4byte 0x80000010

Binary file not shown.

View File

@ -137,6 +137,7 @@ extern const u16 gUnknown_086AF140[][2];
extern const u16 gUnknown_086AEF40[][31];
extern const u16 gUnknown_086AF0B4[];
extern const u8 gUnknown_0813E894[];
extern const u8 gUnknown_0849F1CC[];
struct Unk_086AFAC0
{
@ -165,6 +166,108 @@ extern u8 gUnknown_0200FBB0[];
extern u8 gUnknown_020030A0[];
void sub_3B120(void)
{
s16 i;
gCurrentPinballGame->unk18 = 0;
gCurrentPinballGame->unk17 = 0;
gCurrentPinballGame->unk13 = 0;
if (gCurrentPinballGame->numCompletedBonusStages % 5 == 3)
gCurrentPinballGame->unk384 = 18;
else
gCurrentPinballGame->unk384 = 15;
gCurrentPinballGame->unk294 = 0;
gCurrentPinballGame->eventTimer = gCurrentPinballGame->timerBonus + 10800;
gCurrentPinballGame->timerBonus = 0;
gCurrentPinballGame->unk388 = 3;
gCurrentPinballGame->unk392 = 0;
gCurrentPinballGame->ball->unk0 = 1;
gCurrentPinballGame->unk386 = 0;
gCurrentPinballGame->unk387 = 1;
gCurrentPinballGame->unk6C4 = 3;
gCurrentPinballGame->unk382 = 0;
gCurrentPinballGame->unk383 = 0;
gCurrentPinballGame->unk385 = 0;
gCurrentPinballGame->unk389 = 0;
gCurrentPinballGame->unk38E = 0;
gCurrentPinballGame->unk390 = 0;
gCurrentPinballGame->unk394 = 0;
gCurrentPinballGame->unk3DC = 0;
gCurrentPinballGame->unk3DD = 0;
gCurrentPinballGame->unk3DE = 0;
gCurrentPinballGame->unk3DF = 0;
gCurrentPinballGame->unk3E0 = 0;
gCurrentPinballGame->unk3E2 = 0;
gCurrentPinballGame->unk3E1 = 0;
gCurrentPinballGame->unk3E4 = 0;
gCurrentPinballGame->unk3E6 = 0;
gCurrentPinballGame->unk3E8 = 0;
gCurrentPinballGame->unk3EA = 0;
gCurrentPinballGame->unk3EC = 0;
gCurrentPinballGame->unk3EE = 0;
gCurrentPinballGame->unk3F0 = 0;
gCurrentPinballGame->unk3F2 = 0;
gCurrentPinballGame->unk452 = 0;
gCurrentPinballGame->unk456 = 0;
gCurrentPinballGame->unk47C = 0;
gCurrentPinballGame->unk47D = 0;
gCurrentPinballGame->unk47E = 0;
gCurrentPinballGame->unk47F = 0;
gCurrentPinballGame->unk480 = 0;
gCurrentPinballGame->unk482 = 0;
gCurrentPinballGame->unk484 = 0;
gCurrentPinballGame->unk486 = 0;
gCurrentPinballGame->unk488.x = 0;
gCurrentPinballGame->unk488.y = 0;
gCurrentPinballGame->unk4C4 = 0;
gCurrentPinballGame->unk4C6 = 0;
gCurrentPinballGame->unk4C8 = 0;
gCurrentPinballGame->unk4CA = 0;
gCurrentPinballGame->unk4C9 = 0;
for (i = 0; i < 4; i++)
{
gCurrentPinballGame->unk46C[i].x = 0;
gCurrentPinballGame->unk46C[i].y = 0;
gCurrentPinballGame->unk48C[i] = 0;
gCurrentPinballGame->unk490[i] = 0;
gCurrentPinballGame->unk494[i] = 0;
gCurrentPinballGame->unk498[i] = 0;
gCurrentPinballGame->unk49C[i] = 0;
gCurrentPinballGame->unk4A0[i] = 0;
gCurrentPinballGame->unk4A4[i] = 0;
gCurrentPinballGame->unk4AC[i] = 0;
gCurrentPinballGame->unk4B4[i].x = 0;
gCurrentPinballGame->unk4B4[i].y = 0;
}
for (i = 0; i < 3; i++)
{
gCurrentPinballGame->unk4CC[i] = 0;
gCurrentPinballGame->unk4CF[i] = 0;
gCurrentPinballGame->unk4D2[i] = 0;
gCurrentPinballGame->unk4D5[i] = 0;
gCurrentPinballGame->unk4D8[i] = 0;
gCurrentPinballGame->unk4DE[i] = 0;
gCurrentPinballGame->unk4E4[i] = 0;
gCurrentPinballGame->unk4EC[i].x = 0;
gCurrentPinballGame->unk4EC[i].y = 0;
gCurrentPinballGame->unk4F8[i].x = 0;
gCurrentPinballGame->unk4F8[i].y = 0;
}
gCurrentPinballGame->unk1A = 1;
sub_3CBC4();
sub_3B7C4();
sub_3C6E0();
DmaCopy16(3, gUnknown_0849F1CC, (void *)0x06015800, 0x2000);
sub_3E644();
m4aSongNumStart(MUS_BONUS_FIELD_GROUDON);
DmaCopy16(3, gUnknown_081B36A4, (void *)0x05000320, 0x20);
}
void sub_3B49C(void)
{
switch (gCurrentPinballGame->unk13)