deompile sub_31498 (#148)

* deompile sub_31498

* cleanup

---------

Co-authored-by: Marcus Huderle <huderlem@gmail.com>
This commit is contained in:
Wendy Moniuk 2025-08-10 09:12:17 -04:00 committed by GitHub
parent 886ab9a23f
commit f2b5e88441
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 223 additions and 810 deletions

View File

@ -50712,807 +50712,3 @@ _08031488: .4byte 0x80000240
_0803148C: .4byte gOamBuffer
_08031490: .4byte 0xFFFFFE00
_08031494: .4byte 0x000001FF
thumb_func_start sub_31498
sub_31498: @ 0x08031498
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
ldr r1, _080314C4 @ =gCurrentPinballGame
ldr r0, [r1]
ldr r2, _080314C8 @ =0x00000346
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r5, r1, #0
cmp r0, #6
bls _080314B8
b _080319AC
_080314B8:
lsls r0, r0, #2
ldr r1, _080314CC @ =_080314D0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080314C4: .4byte gCurrentPinballGame
_080314C8: .4byte 0x00000346
_080314CC: .4byte _080314D0
_080314D0: @ jump table
.4byte _080314EC @ case 0
.4byte _08031610 @ case 1
.4byte _080319AC @ case 2
.4byte _080316F4 @ case 3
.4byte _080317E0 @ case 4
.4byte _080318A8 @ case 5
.4byte _08031988 @ case 6
_080314EC:
ldr r4, [r5]
movs r3, #0xd1
lsls r3, r3, #2
adds r0, r4, r3
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
bne _08031500
b _080319AC
_08031500:
movs r0, #0x13
ldrsb r0, [r4, r0]
cmp r0, #2
bgt _080315A4
ldr r7, _08031528 @ =0x00000345
adds r1, r4, r7
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #2
bgt _08031530
adds r0, r2, #1
strb r0, [r1]
ldr r1, [r5]
ldr r0, _0803152C @ =0x00004E20
str r0, [r1, #0x3c]
movs r0, SE_UNKNOWN_0xDE
bl m4aSongNumStart
b _080315C2
.align 2, 0
_08031528: .4byte 0x00000345
_0803152C: .4byte 0x00004E20
_08031530:
ldr r2, _08031594 @ =gMain
ldrb r1, [r2, #0xf]
movs r0, #1
movs r3, #0
orrs r0, r1
strb r0, [r2, #0xf]
adds r0, r4, #0
adds r0, #0xea
movs r2, #0
strh r3, [r0]
adds r1, r4, #0
adds r1, #0xec
movs r0, #0xe6
lsls r0, r0, #2
strh r0, [r1]
adds r0, r4, #0
adds r0, #0xe8
strh r3, [r0]
subs r0, #2
strh r3, [r0]
adds r0, #8
strh r3, [r0]
adds r0, #4
strb r2, [r0]
ldr r0, [r5]
adds r0, #0xfa
movs r1, #1
strb r1, [r0]
ldr r0, [r5]
adds r0, #0xfb
strb r2, [r0]
ldr r0, [r5]
ldr r2, _08031598 @ =0x00000346
adds r0, r0, r2
strb r1, [r0]
ldr r0, [r5]
movs r4, #0xd2
lsls r4, r4, #2
adds r0, r0, r4
strh r3, [r0]
ldr r0, _0803159C @ =gMPlayInfo_BGM
bl m4aMPlayStop
ldr r1, [r5]
ldr r0, _080315A0 @ =0x00030D40
str r0, [r1, #0x3c]
movs r0, SE_UNKNOWN_0xDF
bl m4aSongNumStart
b _080315C2
.align 2, 0
_08031594: .4byte gMain
_08031598: .4byte 0x00000346
_0803159C: .4byte gMPlayInfo_BGM
_080315A0: .4byte 0x00030D40
_080315A4:
ldr r7, _080315F4 @ =0x00000345
adds r1, r4, r7
ldrb r2, [r1]
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #2
bgt _080315C2
adds r0, r2, #1
strb r0, [r1]
ldr r1, [r5]
ldr r0, _080315F8 @ =0x00004E20
str r0, [r1, #0x3c]
movs r0, SE_UNKNOWN_0xDE
bl m4aSongNumStart
_080315C2:
ldr r0, _080315FC @ =gCurrentPinballGame
ldr r3, [r0]
ldr r1, _080315F4 @ =0x00000345
adds r0, r3, r1
ldr r2, _08031600 @ =0x040000D4
movs r1, #0
ldrsb r1, [r0, r1]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #6
ldr r1, _08031604 @ =gUnknown_08490A4C
adds r0, r0, r1
str r0, [r2]
ldr r0, _08031608 @ =0x0600D900
str r0, [r2, #4]
ldr r0, _0803160C @ =0x80000220
str r0, [r2, #8]
ldr r0, [r2, #8]
movs r2, #0xd1
lsls r2, r2, #2
adds r3, r3, r2
movs r0, #0
strb r0, [r3]
b _080319AC
.align 2, 0
_080315F4: .4byte 0x00000345
_080315F8: .4byte 0x00004E20
_080315FC: .4byte gCurrentPinballGame
_08031600: .4byte 0x040000D4
_08031604: .4byte gUnknown_08490A4C
_08031608: .4byte 0x0600D900
_0803160C: .4byte 0x80000220
_08031610:
ldr r0, [r5]
movs r3, #0xd2
lsls r3, r3, #2
adds r2, r0, r3
ldrh r1, [r2]
ldr r0, _08031654 @ =0x0000010D
cmp r1, r0
bhi _08031668
adds r0, r1, #0
movs r1, #0x3c
bl __umodsi3
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
movs r1, #0x1e
bl __udivsi3
adds r0, #4
ldr r2, _08031658 @ =0x040000D4
lsls r0, r0, #0x10
asrs r0, r0, #0x10
lsls r1, r0, #4
adds r1, r1, r0
lsls r1, r1, #6
ldr r0, _0803165C @ =gUnknown_08490A4C
adds r1, r1, r0
str r1, [r2]
ldr r0, _08031660 @ =0x0600D900
str r0, [r2, #4]
ldr r0, _08031664 @ =0x80000220
str r0, [r2, #8]
ldr r0, [r2, #8]
b _0803168C
.align 2, 0
_08031654: .4byte 0x0000010D
_08031658: .4byte 0x040000D4
_0803165C: .4byte gUnknown_08490A4C
_08031660: .4byte 0x0600D900
_08031664: .4byte 0x80000220
_08031668:
ldr r1, _080316D8 @ =0x040000D4
movs r2, #0
ldr r0, _080316DC @ =gUnknown_08490A4C
str r0, [r1]
ldr r0, _080316E0 @ =0x0600D900
str r0, [r1, #4]
ldr r0, _080316E4 @ =0x80000220
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r0, [r5]
ldr r4, _080316E8 @ =0x00000346
adds r0, r0, r4
movs r1, #2
strb r1, [r0]
ldr r0, [r5]
ldr r7, _080316EC @ =0x00000345
adds r0, r0, r7
strb r2, [r0]
_0803168C:
ldr r0, [r5]
movs r4, #0xd2
lsls r4, r4, #2
adds r0, r0, r4
ldrh r0, [r0]
cmp r0, #0x3c
bne _080316CC
movs r0, MUS_EGG_MODE_START
bl m4aSongNumStart
ldr r0, [r5]
movs r1, #0xe5
lsls r1, r1, #3
adds r0, r0, r1
movs r2, #0
strb r2, [r0]
ldr r0, [r5]
movs r3, #0xf6
lsls r3, r3, #1
adds r0, r0, r3
movs r1, #5
strb r1, [r0]
ldr r0, [r5]
ldr r7, _080316F0 @ =0x000001ED
adds r1, r0, r7
movs r0, #0xc
strb r0, [r1]
ldr r0, [r5]
movs r1, #0xf8
lsls r1, r1, #1
adds r0, r0, r1
strh r2, [r0]
_080316CC:
ldr r1, [r5]
adds r1, r1, r4
ldrh r0, [r1]
adds r0, #1
strh r0, [r1]
b _080319AC
.align 2, 0
_080316D8: .4byte 0x040000D4
_080316DC: .4byte gUnknown_08490A4C
_080316E0: .4byte 0x0600D900
_080316E4: .4byte 0x80000220
_080316E8: .4byte 0x00000346
_080316EC: .4byte 0x00000345
_080316F0: .4byte 0x000001ED
_080316F4:
ldr r6, _0803171C @ =gUnknown_086AE5A0
ldr r2, [r5]
ldr r4, _08031720 @ =0x00000345
adds r3, r2, r4
movs r0, #0
ldrsb r0, [r3, r0]
lsls r0, r0, #2
adds r1, r6, #2
adds r0, r0, r1
movs r7, #0
ldrsh r0, [r0, r7]
movs r1, #0xd2
lsls r1, r1, #2
adds r2, r2, r1
ldrh r1, [r2]
cmp r0, r1
ble _08031724
adds r0, r1, #1
strh r0, [r2]
b _08031784
.align 2, 0
_0803171C: .4byte gUnknown_086AE5A0
_08031720: .4byte 0x00000345
_08031724:
movs r0, #0
strh r0, [r2]
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
ldr r1, [r5]
ldr r2, _080317A0 @ =0x00000345
adds r0, r1, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0xa
bne _08031746
ldr r3, _080317A4 @ =0x00000346
adds r1, r1, r3
movs r0, #4
strb r0, [r1]
_08031746:
ldr r0, [r5]
adds r0, r0, r4
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #6
bne _0803175A
movs r0, SE_UNKNOWN_0xE0
bl m4aSongNumStart
_0803175A:
ldr r0, [r5]
adds r0, r0, r4
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
lsls r0, r0, #2
adds r0, r0, r6
ldr r2, _080317A8 @ =0x040000D4
movs r4, #0
ldrsh r1, [r0, r4]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #6
ldr r1, _080317AC @ =gUnknown_08490A4C
adds r0, r0, r1
str r0, [r2]
ldr r0, _080317B0 @ =0x0600D900
str r0, [r2, #4]
ldr r0, _080317B4 @ =0x80000220
str r0, [r2, #8]
ldr r0, [r2, #8]
_08031784:
ldr r1, [r5]
ldr r7, _080317A0 @ =0x00000345
adds r0, r1, r7
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #5
bgt _080317B8
movs r0, #0x80
lsls r0, r0, #2
adds r1, r1, r0
subs r0, #0xe8
str r0, [r1]
b _080319AC
.align 2, 0
_080317A0: .4byte 0x00000345
_080317A4: .4byte 0x00000346
_080317A8: .4byte 0x040000D4
_080317AC: .4byte gUnknown_08490A4C
_080317B0: .4byte 0x0600D900
_080317B4: .4byte 0x80000220
_080317B8:
movs r2, #0x80
lsls r2, r2, #2
adds r3, r1, r2
ldr r2, [r3]
adds r0, r2, #6
str r0, [r3]
ldr r4, _080317DC @ =0x00000346
adds r0, r1, r4
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #4
beq _080317D4
b _080319AC
_080317D4:
adds r0, r2, #0
adds r0, #0x1a
str r0, [r3]
b _080319AC
.align 2, 0
_080317DC: .4byte 0x00000346
_080317E0:
ldr r5, _08031894 @ =gCurrentPinballGame
ldr r4, [r5]
ldr r7, _08031898 @ =0x00000343
adds r0, r4, r7
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
beq _08031882
movs r1, #0xd1
lsls r1, r1, #2
adds r0, r4, r1
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0
beq _08031882
ldr r2, _0803189C @ =gMain
ldrb r1, [r2, #0xf]
movs r0, #1
movs r3, #0
orrs r0, r1
strb r0, [r2, #0xf]
adds r0, r4, #0
adds r0, #0xea
movs r2, #0
strh r3, [r0]
adds r1, r4, #0
adds r1, #0xec
movs r0, #0xa0
strh r0, [r1]
adds r0, r4, #0
adds r0, #0xe8
strh r3, [r0]
subs r0, #2
strh r3, [r0]
adds r0, #8
strh r3, [r0]
adds r0, #4
strb r2, [r0]
ldr r0, [r5]
adds r0, #0xfa
movs r4, #1
strb r4, [r0]
ldr r0, [r5]
adds r0, #0xfb
strb r2, [r0]
ldr r0, [r5]
ldr r2, _080318A0 @ =0x00000346
adds r0, r0, r2
movs r1, #5
strb r1, [r0]
ldr r0, [r5]
adds r7, #5
adds r1, r0, r7
strh r3, [r1]
ldr r1, _080318A4 @ =0x00000345
adds r0, r0, r1
movs r1, #0xa
strb r1, [r0]
movs r0, SE_UNKNOWN_0xE0
bl m4aSongNumStart
ldr r0, [r5]
movs r2, #0xf6
lsls r2, r2, #1
adds r0, r0, r2
strb r4, [r0]
ldr r2, [r5]
movs r3, #0xfa
lsls r3, r3, #1
adds r1, r2, r3
movs r0, #0x82
lsls r0, r0, #4
strh r0, [r1]
movs r4, #0xfb
lsls r4, r4, #1
adds r1, r2, r4
movs r0, #0xf0
lsls r0, r0, #2
strh r0, [r1]
_08031882:
ldr r0, _08031894 @ =gCurrentPinballGame
ldr r0, [r0]
movs r7, #0xd1
lsls r7, r7, #2
adds r0, r0, r7
movs r1, #0
strb r1, [r0]
b _080319AC
.align 2, 0
_08031894: .4byte gCurrentPinballGame
_08031898: .4byte 0x00000343
_0803189C: .4byte gMain
_080318A0: .4byte 0x00000346
_080318A4: .4byte 0x00000345
_080318A8:
ldr r6, _080318D0 @ =gUnknown_086AE5A0
ldr r2, [r5]
ldr r4, _080318D4 @ =0x00000345
adds r3, r2, r4
movs r0, #0
ldrsb r0, [r3, r0]
lsls r0, r0, #2
adds r1, r6, #2
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
movs r7, #0xd2
lsls r7, r7, #2
adds r2, r2, r7
ldrh r1, [r2]
cmp r0, r1
ble _080318D8
adds r0, r1, #1
strh r0, [r2]
b _08031924
.align 2, 0
_080318D0: .4byte gUnknown_086AE5A0
_080318D4: .4byte 0x00000345
_080318D8:
movs r0, #0
strh r0, [r2]
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
ldr r1, [r5]
ldr r2, _08031968 @ =0x00000345
adds r0, r1, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0xf
bne _080318FA
ldr r3, _0803196C @ =0x00000346
adds r1, r1, r3
movs r0, #6
strb r0, [r1]
_080318FA:
ldr r0, [r5]
adds r0, r0, r4
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
lsls r0, r0, #2
adds r0, r0, r6
ldr r2, _08031970 @ =0x040000D4
movs r4, #0
ldrsh r1, [r0, r4]
lsls r0, r1, #4
adds r0, r0, r1
lsls r0, r0, #6
ldr r1, _08031974 @ =gUnknown_08490A4C
adds r0, r0, r1
str r0, [r2]
ldr r0, _08031978 @ =0x0600D900
str r0, [r2, #4]
ldr r0, _0803197C @ =0x80000220
str r0, [r2, #8]
ldr r0, [r2, #8]
_08031924:
ldr r0, _08031980 @ =gCurrentPinballGame
ldr r1, [r0]
ldr r7, _08031968 @ =0x00000345
adds r0, r1, r7
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
cmp r0, #0xe
bne _08031948
movs r2, #0xd2
lsls r2, r2, #2
adds r0, r1, r2
ldrh r0, [r0]
cmp r0, #0xa
bne _08031948
movs r0, SE_UNKNOWN_0xE1
bl m4aSongNumStart
_08031948:
ldr r0, _08031980 @ =gCurrentPinballGame
ldr r0, [r0]
movs r3, #0xfb
lsls r3, r3, #1
adds r1, r0, r3
ldrh r3, [r1]
movs r4, #0
ldrsh r0, [r1, r4]
movs r2, #0xaf
lsls r2, r2, #2
cmp r0, r2
ble _08031984
subs r0, r3, #5
strh r0, [r1]
b _080319AC
.align 2, 0
_08031968: .4byte 0x00000345
_0803196C: .4byte 0x00000346
_08031970: .4byte 0x040000D4
_08031974: .4byte gUnknown_08490A4C
_08031978: .4byte 0x0600D900
_0803197C: .4byte 0x80000220
_08031980: .4byte gCurrentPinballGame
_08031984:
strh r2, [r1]
b _080319AC
_08031988:
ldr r0, [r5]
ldr r7, _080319F8 @ =0x00000345
adds r0, r0, r7
movs r2, #0
strb r2, [r0]
ldr r0, [r5]
movs r3, #0xd2
lsls r3, r3, #2
adds r1, r0, r3
movs r3, #0
strh r2, [r1]
ldr r4, _080319FC @ =0x00000346
adds r0, r0, r4
strb r3, [r0]
ldr r0, [r5]
subs r7, #2
adds r0, r0, r7
strb r3, [r0]
_080319AC:
movs r1, #0
ldr r0, _08031A00 @ =0x040000D4
mov sb, r0
ldr r2, _08031A04 @ =gUnknown_086AE554
mov sl, r2
_080319B6:
lsls r1, r1, #0x10
asrs r4, r1, #0x10
movs r0, #0xb8
muls r0, r4, r0
ldr r3, _08031A08 @ =gMain+0x24C0 @gMain.spriteGroups[47]
adds r6, r0, r3
ldrh r0, [r6]
mov r8, r1
cmp r0, #0
bne _080319CC
b _08031AEA
_080319CC:
ldr r5, _08031A0C @ =gCurrentPinballGame
ldr r1, [r5]
ldr r7, _08031A10 @ =0x00000355
adds r0, r1, r7
adds r3, r0, r4
movs r0, #0
ldrsb r0, [r3, r0]
lsls r0, r0, #2
ldr r2, _08031A14 @ =gUnknown_086AE58A
adds r0, r0, r2
movs r7, #0
ldrsh r2, [r0, r7]
lsls r0, r4, #1
ldr r7, _08031A18 @ =0x0000035E
adds r1, r1, r7
adds r1, r1, r0
ldrh r0, [r1]
cmp r2, r0
ble _08031A1C
adds r0, #1
strh r0, [r1]
b _08031A3C
.align 2, 0
_080319F8: .4byte 0x00000345
_080319FC: .4byte 0x00000346
_08031A00: .4byte 0x040000D4
_08031A04: .4byte gUnknown_086AE554
_08031A08: .4byte gMain+0x24C0 @gMain.spriteGroups[47]
_08031A0C: .4byte gCurrentPinballGame
_08031A10: .4byte 0x00000355
_08031A14: .4byte gUnknown_086AE58A
_08031A18: .4byte 0x0000035E
_08031A1C:
movs r2, #0
strh r2, [r1]
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
ldr r0, [r5]
ldr r1, _08031B08 @ =0x00000355
adds r0, r0, r1
adds r1, r0, r4
movs r0, #0
ldrsb r0, [r1, r0]
cmp r0, #6
bne _08031A3C
strh r2, [r6]
movs r0, #5
strb r0, [r1]
_08031A3C:
ldr r2, _08031B0C @ =gCurrentPinballGame
ldr r4, [r2]
mov r7, r8
asrs r3, r7, #0x10
ldr r1, _08031B08 @ =0x00000355
adds r0, r4, r1
adds r0, r0, r3
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
lsls r0, r0, #2
ldr r2, _08031B10 @ =gUnknown_086AE588
adds r0, r0, r2
movs r7, #0
ldrsh r0, [r0, r7]
lsls r0, r0, #8
ldr r1, _08031B14 @ =gUnknown_0845A08C
adds r0, r0, r1
mov r1, sb
str r0, [r1]
lsls r0, r3, #8
ldr r2, _08031B18 @ =0x060140A0
adds r0, r0, r2
str r0, [r1, #4]
ldr r0, _08031B1C @ =0x80000080
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r7, _08031B20 @ =0x00000359
adds r2, r4, r7
adds r2, r2, r3
movs r0, #0
ldrsb r0, [r2, r0]
lsls r0, r0, #2
add r0, sl
adds r1, r4, #0
adds r1, #0x58
ldrh r0, [r0]
ldrh r1, [r1]
subs r0, r0, r1
strh r0, [r6, #2]
movs r0, #0
ldrsb r0, [r2, r0]
lsls r0, r0, #2
add r0, sl
adds r4, #0x5a
ldrh r0, [r0, #2]
ldrh r1, [r4]
subs r0, r0, r1
strh r0, [r6, #4]
movs r0, #0
ldr r7, _08031B24 @ =gOamBuffer
ldr r1, _08031B28 @ =0xFFFFFE00
mov ip, r1
_08031AA6:
lsls r3, r0, #0x10
asrs r3, r3, #0x10
lsls r5, r3, #3
adds r5, #8
adds r5, r6, r5
ldrh r2, [r5]
lsls r2, r2, #3
adds r2, r2, r7
movs r4, #2
ldrsh r1, [r5, r4]
movs r4, #2
ldrsh r0, [r6, r4]
adds r1, r1, r0
ldr r4, _08031B2C @ =0x000001FF
adds r0, r4, #0
ands r1, r0
ldrh r4, [r2, #2]
mov r0, ip
ands r0, r4
orrs r0, r1
strh r0, [r2, #2]
ldrh r1, [r5]
lsls r1, r1, #3
adds r1, r1, r7
ldrb r0, [r6, #4]
ldrb r5, [r5, #4]
adds r0, r0, r5
strb r0, [r1]
adds r3, #1
lsls r3, r3, #0x10
lsrs r0, r3, #0x10
asrs r3, r3, #0x10
cmp r3, #2
ble _08031AA6
_08031AEA:
movs r0, #0x80
lsls r0, r0, #9
add r0, r8
lsrs r1, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #3
bgt _08031AFA
b _080319B6
_08031AFA:
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_08031B08: .4byte 0x00000355
_08031B0C: .4byte gCurrentPinballGame
_08031B10: .4byte gUnknown_086AE588
_08031B14: .4byte gUnknown_0845A08C
_08031B18: .4byte 0x060140A0
_08031B1C: .4byte 0x80000080
_08031B20: .4byte 0x00000359
_08031B24: .4byte gOamBuffer
_08031B28: .4byte 0xFFFFFE00
_08031B2C: .4byte 0x000001FF

Binary file not shown.

View File

@ -268,8 +268,10 @@ struct PinballGame
/*0x1F2*/ u8 unk1F2;
/*0x1F3*/ u8 unk1F3;
/*0x1F4*/ u16 unk1F4;
/*0x1F6*/ u16 unk1F6;
/*0x1F8*/ u8 filler1F8[0xF];
/*0x1F6*/ s16 unk1F6;
/*0x1F8*/ u8 filler1F8[0x8];
/*0x200*/ u32 unk200;
/*0x204*/ u8 filler204[0x4];
/*0x208*/ u16 unk208;
/*0x20A*/ u8 unk20A;
/*0x20B*/ u8 filler20B[0x54];
@ -338,10 +340,19 @@ struct PinballGame
/*0x31E*/ s16 unk31E;
/*0x320*/ s16 unk320;
/*0x322*/ s16 unk322;
/*0x324*/ u8 filler324[0x21];
/*0x324*/ u8 filler324[0x1F];
/*0x343*/ s8 unk343;
/*0x344*/ s8 unk344;
/*0x345*/ s8 unk345;
/*0x346*/ s8 unk346;
/*0x347*/ u8 filler347[0x23];
/*0x347*/ u8 filler347[0x1];
/*0x348*/ u16 unk348;
/*0x34A*/ u8 filler34A[0xB];
/*0x355*/ s8 unk355[4];
/*0x359*/ s8 unk359[4];
/*0x35D*/ u8 filler35D[0x1];
/*0x35E*/ u16 unk35E[4];
/*0x366*/ u8 filler366[0x4];
/*0x36A*/ u8 unk36A[2];
/*0x36C*/ u8 unk36C[2];
/*0x36E*/ u16 unk36E[2];
@ -755,6 +766,6 @@ extern Unk86ACE0C gUnknown_086ACE0C[8];
extern struct Vector16 gUnknown_086ACE60[4];
extern struct Unk086ACE8C gUnknown_086ACE8C[13];
extern u16 gUnknown_086ACEF4[2];
extern s16 gUnknown_086AE68E[][2];
extern s16 gUnknown_086AE68E[][2];
#endif // GUARD_GLOBAL_H
#endif // GUARD_GLOBAL_H

View File

@ -1,7 +1,213 @@
#include "global.h"
#include "main.h"
#include "gba/gba.h"
#include "m4a.h"
#include "constants/fields.h"
#include "constants/bg_music.h"
extern const u8 gUnknown_0845A08C[][0x100];
extern const s16 gUnknown_086AE5A0[][2];
extern const s16 gUnknown_086AE58A[][2];
extern const s16 gUnknown_086AE588[][2];
extern const u8 gUnknown_08490A4C[][0x440];
extern struct Vector16 gUnknown_086AE554[];
void sub_31498(void)
{
s16 i, j;
struct SpriteGroup *group;
struct OamDataSimple *oamSimple;
s16 index;
switch (gCurrentPinballGame->unk346)
{
case 0:
if (gCurrentPinballGame->unk344)
{
if (gCurrentPinballGame->unk13 < 3)
{
if (gCurrentPinballGame->unk345 < 3)
{
gCurrentPinballGame->unk345 = gCurrentPinballGame->unk345 + 1;
gCurrentPinballGame->unk3C = 20000;
m4aSongNumStart(SE_UNKNOWN_0xDE);
}
else
{
gMain.unkF |= 0x1;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 920;
gCurrentPinballGame->unkE8 = 0;
gCurrentPinballGame->unkE6 = 0;
gCurrentPinballGame->unkEE = 0;
gCurrentPinballGame->unkF2 = 0;
gCurrentPinballGame->unkFA = 1;
gCurrentPinballGame->unkFB = 0;
gCurrentPinballGame->unk346 = 1;
gCurrentPinballGame->unk348 = 0;
m4aMPlayStop(&gMPlayInfo_BGM);
gCurrentPinballGame->unk3C = 200000;
m4aSongNumStart(SE_UNKNOWN_0xDF);
}
}
else
{
if (gCurrentPinballGame->unk345 < 3)
{
gCurrentPinballGame->unk345++;
gCurrentPinballGame->unk3C = 20000;
m4aSongNumStart(SE_UNKNOWN_0xDE);
}
}
index = gCurrentPinballGame->unk345;
DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440);
gCurrentPinballGame->unk344 = 0;
}
break;
case 1:
if (gCurrentPinballGame->unk348 < 270)
{
index = (gCurrentPinballGame->unk348 % 60) / 30 + 4;
DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440);
}
else
{
index = 0;
DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440);
gCurrentPinballGame->unk346 = 2;
gCurrentPinballGame->unk345 = 0;
}
if (gCurrentPinballGame->unk348 == 60)
{
m4aSongNumStart(MUS_EGG_MODE_START);
gCurrentPinballGame->unk728 = 0;
gCurrentPinballGame->unk1EC = 5;
gCurrentPinballGame->unk1ED = 12;
gCurrentPinballGame->unk1F0 = 0;
}
gCurrentPinballGame->unk348++;
break;
case 3:
if (gUnknown_086AE5A0[gCurrentPinballGame->unk345][1] > gCurrentPinballGame->unk348)
{
gCurrentPinballGame->unk348++;
}
else
{
gCurrentPinballGame->unk348 = 0;
gCurrentPinballGame->unk345++;
if (gCurrentPinballGame->unk345 == 10)
gCurrentPinballGame->unk346 = 4;
if (gCurrentPinballGame->unk345 == 6)
m4aSongNumStart(SE_UNKNOWN_0xE0);
index = gUnknown_086AE5A0[gCurrentPinballGame->unk345][0];
DmaCopy16(3, &gUnknown_08490A4C[index], (void *)0x600D900, 0x440);
}
if (gCurrentPinballGame->unk345 < 6)
{
gCurrentPinballGame->unk200 = 280;
}
else
{
gCurrentPinballGame->unk200 += 6;
if (gCurrentPinballGame->unk346 == 4)
gCurrentPinballGame->unk200 = gCurrentPinballGame->unk200 + 20;
}
break;
case 4:
if (gCurrentPinballGame->unk343 && gCurrentPinballGame->unk344)
{
gMain.unkF |= 0x1;
gCurrentPinballGame->unkEA = 0;
gCurrentPinballGame->unkEC = 160;
gCurrentPinballGame->unkE8 = 0;
gCurrentPinballGame->unkE6 = 0;
gCurrentPinballGame->unkEE = 0;
gCurrentPinballGame->unkF2 = 0;
gCurrentPinballGame->unkFA = 1;
gCurrentPinballGame->unkFB = 0;
gCurrentPinballGame->unk346 = 5;
gCurrentPinballGame->unk348 = 0;
gCurrentPinballGame->unk345 = 10;
m4aSongNumStart(SE_UNKNOWN_0xE0);
gCurrentPinballGame->unk1EC = 1;
gCurrentPinballGame->unk1F4 = 2080;
gCurrentPinballGame->unk1F6 = 960;
}
gCurrentPinballGame->unk344 = 0;
break;
case 5:
if (gUnknown_086AE5A0[gCurrentPinballGame->unk345][1] > gCurrentPinballGame->unk348)
{
gCurrentPinballGame->unk348++;
}
else
{
gCurrentPinballGame->unk348 = 0;
gCurrentPinballGame->unk345++;
if (gCurrentPinballGame->unk345 == 15)
gCurrentPinballGame->unk346 = 6;
index = gUnknown_086AE5A0[gCurrentPinballGame->unk345][0];
DmaCopy16(3, gUnknown_08490A4C[index], (void *)0x600D900, 0x440);
}
if (gCurrentPinballGame->unk345 == 14 && gCurrentPinballGame->unk348 == 10)
m4aSongNumStart(SE_UNKNOWN_0xE1);
if (gCurrentPinballGame->unk1F6 > 700)
gCurrentPinballGame->unk1F6 -= 5;
else
gCurrentPinballGame->unk1F6 = 700;
break;
case 6:
gCurrentPinballGame->unk345 = 0;
gCurrentPinballGame->unk348 = 0;
gCurrentPinballGame->unk346 = 0;
gCurrentPinballGame->unk343 = 0;
break;
}
for (i = 0; i < 4; i++)
{
group = &gMain.spriteGroups[47 + i];
if (group->available)
{
if (gUnknown_086AE58A[gCurrentPinballGame->unk355[i]][0] > gCurrentPinballGame->unk35E[i])
{
gCurrentPinballGame->unk35E[i]++;
}
else
{
gCurrentPinballGame->unk35E[i] = 0;
gCurrentPinballGame->unk355[i]++;
if (gCurrentPinballGame->unk355[i] == 6)
{
group->available = 0;
gCurrentPinballGame->unk355[i] = 5;
}
}
index = gUnknown_086AE588[gCurrentPinballGame->unk355[i]][0];
DmaCopy16(3, &gUnknown_0845A08C[index], (void *)0x060140a0 + i * 0x100, 0x100);
group->baseX = gUnknown_086AE554[gCurrentPinballGame->unk359[i]].x - gCurrentPinballGame->unk58;
group->baseY = gUnknown_086AE554[gCurrentPinballGame->unk359[i]].y - gCurrentPinballGame->unk5A;
for (j = 0; j < 3; j++)
{
oamSimple = &group->oam[j];
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY;
}
}
}
}
void sub_31B30(void)
{