mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-03-21 17:24:13 -05:00
deompile sub_31498 (#148)
* deompile sub_31498 * cleanup --------- Co-authored-by: Marcus Huderle <huderlem@gmail.com>
This commit is contained in:
parent
886ab9a23f
commit
f2b5e88441
804
asm/rom_11B9C.s
804
asm/rom_11B9C.s
|
|
@ -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.
|
|
@ -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
|
||||
206
src/rom_31BE8.c
206
src/rom_31BE8.c
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user