sub_25808

This commit is contained in:
Marcus Huderle 2025-08-24 15:22:20 -05:00
parent 64095fbd0b
commit 4c59c14481
5 changed files with 225 additions and 891 deletions

View File

@ -632,890 +632,3 @@ _080257F8: .4byte 0x000006CC
_080257FC: .4byte gUnknown_086B53E4
_08025800: .4byte 0x000001FF
_08025804: .4byte 0xFFFFFE00
thumb_func_start sub_25808
sub_25808: @ 0x08025808
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
ldr r1, _08025834 @ =gCurrentPinballGame
ldr r0, [r1]
ldr r2, _08025838 @ =0x00000602
adds r0, r0, r2
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r7, r1, #0
cmp r0, #8
bls _08025828
b _08025F36
_08025828:
lsls r0, r0, #2
ldr r1, _0802583C @ =_08025840
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08025834: .4byte gCurrentPinballGame
_08025838: .4byte 0x00000602
_0802583C: .4byte _08025840
_08025840: @ jump table
.4byte _08025864 @ case 0
.4byte _080258A8 @ case 1
.4byte _0802592C @ case 2
.4byte _08025A7C @ case 3
.4byte _08025AF8 @ case 4
.4byte _08025C18 @ case 5
.4byte _08025C78 @ case 6
.4byte _08025D60 @ case 7
.4byte _08025DD0 @ case 8
_08025864:
ldr r1, [r7]
ldr r3, _08025878 @ =0x00000604
adds r2, r1, r3
ldrh r0, [r2]
cmp r0, #0x3b
bhi _0802587C
adds r0, #1
strh r0, [r2]
b _08025890
.align 2, 0
_08025878: .4byte 0x00000604
_0802587C:
ldr r4, _0802589C @ =0x00000602
adds r1, r1, r4
ldrb r0, [r1]
adds r0, #1
movs r2, #0
strb r0, [r1]
ldr r0, [r7]
ldr r6, _080258A0 @ =0x00000604
adds r0, r0, r6
strh r2, [r0]
_08025890:
ldr r0, _080258A4 @ =gMain
ldrh r1, [r0, #0x38]
movs r1, #0xce
strh r1, [r0, #0x38]
b _08025F36
.align 2, 0
_0802589C: .4byte 0x00000602
_080258A0: .4byte 0x00000604
_080258A4: .4byte gMain
_080258A8:
ldr r0, [r7]
adds r0, #0xe4
movs r5, #0
movs r1, #5
strb r1, [r0]
ldr r1, _08025900 @ =0x040000D4
ldr r0, _08025904 @ =gUnknown_083A07CC
str r0, [r1]
ldr r0, _08025908 @ =0x06015800
str r0, [r1, #4]
ldr r0, _0802590C @ =0x80001000
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r0, _08025910 @ =gUnknown_083A27EC
str r0, [r1]
ldr r0, _08025914 @ =0x050003C0
str r0, [r1, #4]
ldr r0, _08025918 @ =0x80000010
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r0, _0802591C @ =gMain
ldr r0, [r0, #0x44]
adds r0, #0x8c
ldr r1, [r0]
movs r4, #0
movs r0, #1
strh r0, [r1]
movs r0, 0x8D @=SE_UNKNOWN_0x8D
bl m4aSongNumStart
ldr r1, [r7]
ldr r0, _08025920 @ =0x00000602
adds r1, r1, r0
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ldr r0, [r7]
ldr r2, _08025924 @ =0x00000604
adds r1, r0, r2
strh r5, [r1]
ldr r3, _08025928 @ =0x00000603
adds r0, r0, r3
strb r4, [r0]
b _08025F36
.align 2, 0
_08025900: .4byte 0x040000D4
_08025904: .4byte gUnknown_083A07CC
_08025908: .4byte 0x06015800
_0802590C: .4byte 0x80001000
_08025910: .4byte gUnknown_083A27EC
_08025914: .4byte 0x050003C0
_08025918: .4byte 0x80000010
_0802591C: .4byte gMain
_08025920: .4byte 0x00000602
_08025924: .4byte 0x00000604
_08025928: .4byte 0x00000603
_0802592C:
ldr r2, _08025954 @ =gUnknown_086AE0C0
ldr r1, [r7]
ldr r4, _08025958 @ =0x00000603
adds r3, r1, r4
movs r0, #0
ldrsb r0, [r3, r0]
lsls r0, r0, #1
adds r0, r0, r2
movs r6, #0
ldrsh r0, [r0, r6]
ldr r2, _0802595C @ =0x00000604
adds r1, r1, r2
ldrh r2, [r1]
cmp r0, r2
ble _08025964
adds r0, r2, #1
strh r0, [r1]
ldr r3, _08025960 @ =gMain
b _08025996
.align 2, 0
_08025954: .4byte gUnknown_086AE0C0
_08025958: .4byte 0x00000603
_0802595C: .4byte 0x00000604
_08025960: .4byte gMain
_08025964:
movs r2, #0
strh r2, [r1]
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
ldr r0, [r7]
ldr r3, _08025A60 @ =0x00000603
adds r1, r0, r3
movs r0, #0
ldrsb r0, [r1, r0]
ldr r3, _08025A64 @ =gMain
cmp r0, #7
ble _08025996
movs r0, #7
strb r0, [r1]
ldr r1, [r7]
ldr r4, _08025A68 @ =0x00000602
adds r1, r1, r4
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ldr r0, [r3, #0x44]
adds r0, #0x8c
ldr r0, [r0]
strh r2, [r0]
_08025996:
ldr r2, [r7]
ldr r6, _08025A60 @ =0x00000603
adds r0, r2, r6
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
ldr r0, [r3, #0x44]
adds r0, #0x8c
ldr r6, [r0]
adds r0, r2, #0
adds r0, #0x58
ldrh r1, [r0]
movs r0, #0x7c
subs r0, r0, r1
strh r0, [r6, #2]
adds r2, #0x5a
ldrh r1, [r2]
movs r0, #0xf4
subs r0, r0, r1
strh r0, [r6, #4]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xc7
ble _080259CE
movs r0, #0xc8
strh r0, [r6, #4]
_080259CE:
movs r2, #0
lsls r0, r5, #0x10
ldr r7, _08025A6C @ =gOamBuffer
mov r8, r7
ldr r1, _08025A70 @ =gUnknown_086B50AE
mov ip, r1
asrs r1, r0, #0x10
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
mov sl, r0
ldr r3, _08025A74 @ =0xFFFFFE00
mov sb, r3
_080259E8:
lsls r3, r2, #0x10
asrs r3, r3, #0x10
lsls r0, r3, #3
adds r0, #8
adds r5, r6, r0
ldrh r0, [r5]
lsls r0, r0, #3
mov r4, r8
adds r2, r0, r4
lsls r1, r3, #1
adds r1, r1, r3
lsls r0, r1, #1
add r0, sl
add r0, ip
ldrh r0, [r0]
strh r0, [r2]
adds r2, #2
adds r0, r1, #1
lsls r0, r0, #1
add r0, sl
add r0, ip
ldrh r0, [r0]
strh r0, [r2]
adds r1, #2
lsls r1, r1, #1
add r1, sl
add r1, ip
ldrh r0, [r1]
strh r0, [r2, #2]
ldrh r2, [r5]
lsls r2, r2, #3
add r2, r8
ldrh r4, [r2, #2]
lsls r1, r4, #0x17
lsrs r1, r1, #0x17
movs r7, #2
ldrsh r0, [r6, r7]
adds r1, r1, r0
ldr r7, _08025A78 @ =0x000001FF
adds r0, r7, #0
ands r1, r0
mov r0, sb
ands r0, r4
orrs r0, r1
strh r0, [r2, #2]
ldrh r1, [r5]
lsls r1, r1, #3
add r1, r8
ldrb r0, [r6, #4]
ldrb r2, [r1]
adds r0, r0, r2
strb r0, [r1]
adds r3, #1
lsls r3, r3, #0x10
lsrs r2, r3, #0x10
asrs r3, r3, #0x10
cmp r3, #5
ble _080259E8
b _08025F36
.align 2, 0
_08025A60: .4byte 0x00000603
_08025A64: .4byte gMain
_08025A68: .4byte 0x00000602
_08025A6C: .4byte gOamBuffer
_08025A70: .4byte gUnknown_086B50AE
_08025A74: .4byte 0xFFFFFE00
_08025A78: .4byte 0x000001FF
_08025A7C:
ldr r0, [r7]
adds r0, #0xe4
movs r3, #0
movs r1, #6
strb r1, [r0]
ldr r1, _08025AD0 @ =0x040000D4
ldr r0, _08025AD4 @ =gUnknown_083A29EC
str r0, [r1]
ldr r0, _08025AD8 @ =0x06015800
str r0, [r1, #4]
ldr r0, _08025ADC @ =0x80000400
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r0, _08025AE0 @ =gUnknown_083A320C
str r0, [r1]
ldr r0, _08025AE4 @ =0x050003C0
str r0, [r1, #4]
ldr r0, _08025AE8 @ =0x80000010
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r0, _08025AEC @ =gMain
ldr r0, [r0, #0x44]
adds r0, #0x90
ldr r1, [r0]
movs r2, #1
movs r0, #1
strh r0, [r1]
ldr r1, [r7]
ldr r4, _08025AF0 @ =0x00000602
adds r1, r1, r4
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ldr r0, [r7]
ldr r6, _08025AF4 @ =0x00000604
adds r1, r0, r6
strh r3, [r1]
movs r7, #0x88
lsls r7, r7, #5
adds r0, r0, r7
strb r2, [r0]
b _08025F36
.align 2, 0
_08025AD0: .4byte 0x040000D4
_08025AD4: .4byte gUnknown_083A29EC
_08025AD8: .4byte 0x06015800
_08025ADC: .4byte 0x80000400
_08025AE0: .4byte gUnknown_083A320C
_08025AE4: .4byte 0x050003C0
_08025AE8: .4byte 0x80000010
_08025AEC: .4byte gMain
_08025AF0: .4byte 0x00000602
_08025AF4: .4byte 0x00000604
_08025AF8:
ldr r1, [r7]
ldr r0, _08025B10 @ =0x00000604
adds r2, r1, r0
ldrh r0, [r2]
lsrs r5, r0, #1
cmp r0, #0xe
bhi _08025B18
adds r0, #1
strh r0, [r2]
ldr r3, _08025B14 @ =gMain
b _08025B3E
.align 2, 0
_08025B10: .4byte 0x00000604
_08025B14: .4byte gMain
_08025B18:
ldr r3, _08025BFC @ =gMain
ldr r0, [r3, #0x44]
adds r0, #0x90
ldr r0, [r0]
movs r4, #0
movs r2, #0
strh r2, [r0]
ldr r6, _08025C00 @ =0x00000602
adds r1, r1, r6
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ldr r0, [r7]
adds r6, #2
adds r1, r0, r6
strh r2, [r1]
ldr r1, _08025C04 @ =0x00000603
adds r0, r0, r1
strb r4, [r0]
_08025B3E:
ldr r0, [r3, #0x44]
adds r0, #0x90
ldr r6, [r0]
ldr r1, [r7]
adds r0, r1, #0
adds r0, #0x58
ldrh r2, [r0]
movs r0, #0x60
subs r0, r0, r2
strh r0, [r6, #2]
adds r1, #0x5a
ldrh r1, [r1]
movs r2, #0x96
lsls r2, r2, #1
adds r0, r2, #0
subs r0, r0, r1
strh r0, [r6, #4]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xc7
ble _08025B6C
movs r0, #0xc8
strh r0, [r6, #4]
_08025B6C:
movs r2, #0
lsls r0, r5, #0x10
ldr r3, _08025C08 @ =gOamBuffer
mov r8, r3
ldr r4, _08025C0C @ =gUnknown_086B4F6A
mov ip, r4
asrs r1, r0, #0x10
lsls r0, r1, #3
adds r0, r0, r1
lsls r0, r0, #2
mov sl, r0
ldr r7, _08025C10 @ =0xFFFFFE00
mov sb, r7
_08025B86:
lsls r3, r2, #0x10
asrs r3, r3, #0x10
lsls r0, r3, #3
adds r0, #8
adds r5, r6, r0
ldrh r0, [r5]
lsls r0, r0, #3
mov r1, r8
adds r2, r0, r1
lsls r1, r3, #1
adds r1, r1, r3
lsls r0, r1, #1
add r0, sl
add r0, ip
ldrh r0, [r0]
strh r0, [r2]
adds r2, #2
adds r0, r1, #1
lsls r0, r0, #1
add r0, sl
add r0, ip
ldrh r0, [r0]
strh r0, [r2]
adds r1, #2
lsls r1, r1, #1
add r1, sl
add r1, ip
ldrh r0, [r1]
strh r0, [r2, #2]
ldrh r2, [r5]
lsls r2, r2, #3
add r2, r8
ldrh r4, [r2, #2]
lsls r1, r4, #0x17
lsrs r1, r1, #0x17
movs r7, #2
ldrsh r0, [r6, r7]
adds r1, r1, r0
ldr r7, _08025C14 @ =0x000001FF
adds r0, r7, #0
ands r1, r0
mov r0, sb
ands r0, r4
orrs r0, r1
strh r0, [r2, #2]
ldrh r1, [r5]
lsls r1, r1, #3
add r1, r8
ldrb r0, [r6, #4]
ldrb r2, [r1]
adds r0, r0, r2
strb r0, [r1]
adds r3, #1
lsls r3, r3, #0x10
lsrs r2, r3, #0x10
asrs r3, r3, #0x10
cmp r3, #5
ble _08025B86
b _08025F36
.align 2, 0
_08025BFC: .4byte gMain
_08025C00: .4byte 0x00000602
_08025C04: .4byte 0x00000603
_08025C08: .4byte gOamBuffer
_08025C0C: .4byte gUnknown_086B4F6A
_08025C10: .4byte 0xFFFFFE00
_08025C14: .4byte 0x000001FF
_08025C18:
ldr r0, [r7]
adds r0, #0xe4
movs r1, #7
strb r1, [r0]
ldr r1, _08025C58 @ =0x040000D4
ldr r0, _08025C5C @ =gUnknown_083A340C
str r0, [r1]
ldr r0, _08025C60 @ =0x06015800
str r0, [r1, #4]
ldr r0, _08025C64 @ =0x80001000
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r0, _08025C68 @ =gUnknown_083A542C
str r0, [r1]
ldr r0, _08025C6C @ =0x050003C0
str r0, [r1, #4]
ldr r0, _08025C70 @ =0x80000010
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r1, [r7]
ldr r3, _08025C74 @ =0x00000602
adds r1, r1, r3
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
bl sub_29924
movs r0, 0x8E @=SE_UNKNOWN_0x8E
bl m4aSongNumStart
b _08025F36
.align 2, 0
_08025C58: .4byte 0x040000D4
_08025C5C: .4byte gUnknown_083A340C
_08025C60: .4byte 0x06015800
_08025C64: .4byte 0x80001000
_08025C68: .4byte gUnknown_083A542C
_08025C6C: .4byte 0x050003C0
_08025C70: .4byte 0x80000010
_08025C74: .4byte 0x00000602
_08025C78:
ldr r2, _08025CB0 @ =gMain
ldrh r0, [r2, #0x3c]
movs r0, #0
strh r0, [r2, #0x3c]
movs r0, #0x80
lsls r0, r0, #0x13
ldrh r1, [r0]
movs r0, #0xf8
lsls r0, r0, #5
ands r0, r1
lsrs r0, r0, #8
movs r1, #0xa0
ldrh r3, [r2, #0x38]
orrs r0, r1
strh r0, [r2, #0x38]
ldr r0, [r7]
ldr r4, _08025CB4 @ =0x00000604
adds r0, r0, r4
ldrh r0, [r0]
adds r3, r2, #0
cmp r0, #0x48
bhi _08025CF2
cmp r0, #7
bhi _08025CB8
ldrh r0, [r3, #0x3c]
movs r0, #0x10
b _08025CF0
.align 2, 0
_08025CB0: .4byte gMain
_08025CB4: .4byte 0x00000604
_08025CB8:
movs r2, #0
adds r6, r7, #0
ldr r5, _08025D04 @ =0x000006D3
movs r4, #0xd
_08025CC0:
ldr r1, [r6]
lsls r0, r2, #0x10
asrs r0, r0, #0x10
adds r1, r1, r5
adds r1, r1, r0
strb r4, [r1]
adds r0, #1
lsls r0, r0, #0x10
lsrs r2, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #5
ble _08025CC0
ldr r0, [r7]
ldr r6, _08025D08 @ =0x00000604
adds r0, r0, r6
ldrh r1, [r0]
movs r0, #8
subs r0, r0, r1
cmp r0, #0
bge _08025CEA
adds r0, #3
_08025CEA:
asrs r0, r0, #2
adds r0, #0x10
ldrh r1, [r3, #0x3c]
_08025CF0:
strh r0, [r3, #0x3c]
_08025CF2:
ldr r1, [r7]
ldr r0, _08025D08 @ =0x00000604
adds r2, r1, r0
ldrh r0, [r2]
cmp r0, #0x47
bhi _08025D0C
adds r0, #1
strh r0, [r2]
b _08025D28
.align 2, 0
_08025D04: .4byte 0x000006D3
_08025D08: .4byte 0x00000604
_08025D0C:
ldr r2, _08025D4C @ =0x00000602
adds r1, r1, r2
ldrb r0, [r1]
adds r0, #1
movs r3, #0
strb r0, [r1]
ldr r0, [r7]
ldr r4, _08025D50 @ =0x00000604
adds r1, r0, r4
movs r2, #0
strh r3, [r1]
ldr r6, _08025D54 @ =0x00000603
adds r0, r0, r6
strb r2, [r0]
_08025D28:
ldr r1, [r7]
ldr r7, _08025D50 @ =0x00000604
adds r0, r1, r7
ldrh r0, [r0]
cmp r0, #8
bhi _08025D36
b _08025F36
_08025D36:
ldr r2, _08025D58 @ =0x000006CA
adds r0, r1, r2
ldrh r1, [r0]
ldr r0, _08025D5C @ =0x00006FFF
cmp r1, r0
bls _08025D44
b _08025F36
_08025D44:
bl sub_29A6C
b _08025F36
.align 2, 0
_08025D4C: .4byte 0x00000602
_08025D50: .4byte 0x00000604
_08025D54: .4byte 0x00000603
_08025D58: .4byte 0x000006CA
_08025D5C: .4byte 0x00006FFF
_08025D60:
ldr r0, [r7]
adds r0, #0xe4
movs r1, #8
strb r1, [r0]
ldr r1, _08025DAC @ =0x040000D4
ldr r0, _08025DB0 @ =gUnknown_083A562C
str r0, [r1]
ldr r0, _08025DB4 @ =0x06015800
str r0, [r1, #4]
ldr r0, _08025DB8 @ =0x80000C00
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r0, _08025DBC @ =gUnknown_083A6E4C
str r0, [r1]
ldr r0, _08025DC0 @ =0x050003C0
str r0, [r1, #4]
ldr r0, _08025DC4 @ =0x80000010
str r0, [r1, #8]
ldr r0, [r1, #8]
ldr r0, _08025DC8 @ =gMain
ldr r0, [r0, #0x44]
adds r0, #0x94
ldr r1, [r0]
movs r2, #0
movs r0, #1
strh r0, [r1]
ldr r1, [r7]
ldr r3, _08025DCC @ =0x00000602
adds r1, r1, r3
ldrb r0, [r1]
adds r0, #1
strb r0, [r1]
ldr r0, [r7]
movs r4, #0x88
lsls r4, r4, #5
adds r0, r0, r4
strb r2, [r0]
b _08025F36
.align 2, 0
_08025DAC: .4byte 0x040000D4
_08025DB0: .4byte gUnknown_083A562C
_08025DB4: .4byte 0x06015800
_08025DB8: .4byte 0x80000C00
_08025DBC: .4byte gUnknown_083A6E4C
_08025DC0: .4byte 0x050003C0
_08025DC4: .4byte 0x80000010
_08025DC8: .4byte gMain
_08025DCC: .4byte 0x00000602
_08025DD0:
ldr r2, _08025DF8 @ =gUnknown_086AE0D0
ldr r1, [r7]
ldr r5, _08025DFC @ =0x00000603
adds r3, r1, r5
movs r0, #0
ldrsb r0, [r3, r0]
lsls r0, r0, #1
adds r0, r0, r2
movs r6, #0
ldrsh r0, [r0, r6]
ldr r2, _08025E00 @ =0x00000604
adds r1, r1, r2
ldrh r2, [r1]
cmp r0, r2
ble _08025E08
adds r0, r2, #1
strh r0, [r1]
ldr r3, _08025E04 @ =gMain
b _08025E6C
.align 2, 0
_08025DF8: .4byte gUnknown_086AE0D0
_08025DFC: .4byte 0x00000603
_08025E00: .4byte 0x00000604
_08025E04: .4byte gMain
_08025E08:
movs r4, #0
movs r2, #0
strh r2, [r1]
ldrb r0, [r3]
adds r0, #1
strb r0, [r3]
ldr r1, [r7]
ldr r3, _08025F44 @ =0x00000603
adds r0, r1, r3
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldr r3, _08025F48 @ =gMain
cmp r0, #0xa
ble _08025E6C
ldrb r0, [r1, #0x17]
adds r0, #1
strb r0, [r1, #0x17]
ldr r0, [r3, #0x44]
adds r0, #0x94
ldr r0, [r0]
strh r2, [r0]
ldr r0, [r7]
ldr r6, _08025F4C @ =0x000006C6
adds r0, r0, r6
strb r4, [r0]
ldr r0, [r7]
ldr r1, _08025F50 @ =0x000006C7
adds r0, r0, r1
strb r4, [r0]
ldr r0, [r7]
subs r6, #0xa1
adds r0, r0, r6
strb r4, [r0]
ldrh r0, [r3, #0x38]
movs r0, #0xce
strh r0, [r3, #0x38]
ldrh r0, [r3, #0x3c]
strh r2, [r3, #0x3c]
ldr r0, [r3, #0x44]
adds r0, #0x94
ldr r0, [r0]
strh r2, [r0]
ldr r0, [r7]
adds r0, r0, r5
movs r1, #0xa
strb r1, [r0]
ldr r0, [r7]
adds r0, #0xe4
strb r4, [r0]
_08025E6C:
ldr r2, [r7]
ldr r7, _08025F44 @ =0x00000603
adds r0, r2, r7
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
ldr r0, [r3, #0x44]
adds r0, #0x94
ldr r6, [r0]
adds r0, r2, #0
adds r0, #0x58
ldrh r1, [r0]
movs r0, #0x60
subs r0, r0, r1
strh r0, [r6, #2]
adds r2, #0x5a
ldrh r1, [r2]
movs r2, #0x96
lsls r2, r2, #1
adds r0, r2, #0
subs r0, r0, r1
strh r0, [r6, #4]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xc7
ble _08025EA8
movs r0, #0xc8
strh r0, [r6, #4]
_08025EA8:
movs r2, #0
lsls r0, r5, #0x10
ldr r3, _08025F54 @ =gOamBuffer
mov r8, r3
ldr r4, _08025F58 @ =gUnknown_086B4E62
mov ip, r4
asrs r1, r0, #0x10
lsls r0, r1, #1
adds r0, r0, r1
lsls r0, r0, #3
mov sl, r0
ldr r7, _08025F5C @ =0xFFFFFE00
mov sb, r7
_08025EC2:
lsls r3, r2, #0x10
asrs r3, r3, #0x10
lsls r0, r3, #3
adds r0, #8
adds r5, r6, r0
ldrh r0, [r5]
lsls r0, r0, #3
mov r1, r8
adds r2, r0, r1
lsls r1, r3, #1
adds r1, r1, r3
lsls r0, r1, #1
add r0, sl
add r0, ip
ldrh r0, [r0]
strh r0, [r2]
adds r2, #2
adds r0, r1, #1
lsls r0, r0, #1
add r0, sl
add r0, ip
ldrh r0, [r0]
strh r0, [r2]
adds r1, #2
lsls r1, r1, #1
add r1, sl
add r1, ip
ldrh r0, [r1]
strh r0, [r2, #2]
ldrh r2, [r5]
lsls r2, r2, #3
add r2, r8
ldrh r4, [r2, #2]
lsls r1, r4, #0x17
lsrs r1, r1, #0x17
movs r7, #2
ldrsh r0, [r6, r7]
adds r1, r1, r0
ldr r7, _08025F60 @ =0x000001FF
adds r0, r7, #0
ands r1, r0
mov r0, sb
ands r0, r4
orrs r0, r1
strh r0, [r2, #2]
ldrh r1, [r5]
lsls r1, r1, #3
add r1, r8
ldrb r0, [r6, #4]
ldrb r2, [r1]
adds r0, r0, r2
strb r0, [r1]
adds r3, #1
lsls r3, r3, #0x10
lsrs r2, r3, #0x10
asrs r3, r3, #0x10
cmp r3, #3
ble _08025EC2
_08025F36:
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
_08025F44: .4byte 0x00000603
_08025F48: .4byte gMain
_08025F4C: .4byte 0x000006C6
_08025F50: .4byte 0x000006C7
_08025F54: .4byte gOamBuffer
_08025F58: .4byte gUnknown_086B4E62
_08025F5C: .4byte 0xFFFFFE00
_08025F60: .4byte 0x000001FF

Binary file not shown.

View File

@ -520,8 +520,8 @@ extern void sub_293D8(void);
extern void sub_29624(void);
//extern ? sub_29664();
//extern ? sub_2971C();
//extern ? sub_29924();
//extern ? sub_29A6C();
extern void sub_29924(void);
extern void sub_29A6C(void);
//extern ? sub_29D9C();
//extern ? sub_2A054();
extern void sub_2A354();

View File

@ -658,8 +658,9 @@ struct PinballGame
/*0x5FC*/ s16 unk5FC;
/*0x5FE*/ s16 unk5FE;
/*0x600*/ u16 unk600;
/*0x602*/ u8 unk602;
/*0x603*/ u8 filler603[0x3];
/*0x602*/ s8 unk602;
/*0x603*/ s8 unk603;
/*0x604*/ u16 unk604;
/*0x606*/ u16 unk606;
/*0x608*/ u8 filler608[0xC];
/*0x614*/ u16 unk614;

View File

@ -19,12 +19,232 @@ extern const s16 gUnknown_08137928[];
extern const u16 gUnknown_086B51CE[][27];
extern const u8 gUnknown_083A8AAC[];
extern const u8 gUnknown_084FA20C[];
extern const u8 gUnknown_083A07CC[];
extern const u8 gUnknown_083A27EC[];
extern const s16 gUnknown_086AE0C0[];
extern const u16 gUnknown_086B50AE[][18];
extern const u8 gUnknown_083A29EC[];
extern const u8 gUnknown_083A320C[];
extern const u16 gUnknown_086B4F6A[][18];
extern const u8 gUnknown_083A340C[];
extern const u8 gUnknown_083A542C[];
extern const u8 gUnknown_083A562C[];
extern const u8 gUnknown_083A6E4C[];
extern const s16 gUnknown_086AE0D0[];
extern const u16 gUnknown_086B4E62[][12];
extern struct SongHeader gUnknown_0869F58C;
extern struct SongHeader gUnknown_0869F5C8;
extern struct SongHeader gUnknown_0869F618;
void sub_25808(void)
{
s16 i;
struct SpriteGroup *group;
struct OamDataSimple *oamSimple;
u16 *dst;
s16 var0;
switch (gCurrentPinballGame->unk602)
{
case 0:
if (gCurrentPinballGame->unk604 < 60)
{
gCurrentPinballGame->unk604++;
}
else
{
gCurrentPinballGame->unk602++;
gCurrentPinballGame->unk604 = 0;
}
gMain.blendControl = 0xCE;
break;
case 1:
gCurrentPinballGame->unkE4 = 5;
DmaCopy16(3, gUnknown_083A07CC, (void *)0x06015800, 0x2000);
DmaCopy16(3, gUnknown_083A27EC, (void *)0x050003C0, 0x20);
gMain.unk44[35]->available = 1;
m4aSongNumStart(SE_UNKNOWN_0x8D);
gCurrentPinballGame->unk602++;
gCurrentPinballGame->unk604 = 0;
gCurrentPinballGame->unk603 = 0;
break;
case 2:
if (gUnknown_086AE0C0[gCurrentPinballGame->unk603] > gCurrentPinballGame->unk604)
{
gCurrentPinballGame->unk604++;
}
else
{
gCurrentPinballGame->unk604 = 0;
gCurrentPinballGame->unk603++;
if (gCurrentPinballGame->unk603 > 7)
{
gCurrentPinballGame->unk603 = 7;
gCurrentPinballGame->unk602++;
gMain.unk44[35]->available = 0;
}
}
var0 = gCurrentPinballGame->unk603;
group = gMain.unk44[35];
group->baseX = 124 - gCurrentPinballGame->unk58;
group->baseY = 244 - gCurrentPinballGame->unk5A;
if (group->baseY >= 200)
group->baseY = 200;
for (i = 0; i < 6; i++)
{
oamSimple = &group->oam[i];
dst = (u16 *)&gOamBuffer[oamSimple->oamId];
*dst++ = gUnknown_086B50AE[var0][i * 3 + 0];
*dst++ = gUnknown_086B50AE[var0][i * 3 + 1];
*dst++ = gUnknown_086B50AE[var0][i * 3 + 2];
gOamBuffer[oamSimple->oamId].x += group->baseX;
gOamBuffer[oamSimple->oamId].y += group->baseY;
}
break;
case 3:
gCurrentPinballGame->unkE4 = 6;
DmaCopy16(3, gUnknown_083A29EC, (void *)0x06015800, 0x800);
DmaCopy16(3, gUnknown_083A320C, (void *)0x050003C0, 0x20);
gMain.unk44[36]->available = 1;
gCurrentPinballGame->unk602++;
gCurrentPinballGame->unk604 = 0;
gCurrentPinballGame->unk1100 = 1;
break;
case 4:
var0 = gCurrentPinballGame->unk604 / 2;
if (gCurrentPinballGame->unk604 < 15)
{
gCurrentPinballGame->unk604++;
}
else
{
gMain.unk44[36]->available = 0;
gCurrentPinballGame->unk602++;
gCurrentPinballGame->unk604 = 0;
gCurrentPinballGame->unk603 = 0;
}
group = gMain.unk44[36];
group->baseX = 96 - gCurrentPinballGame->unk58;
group->baseY = 300 - gCurrentPinballGame->unk5A;
if (group->baseY >= 200)
group->baseY = 200;
for (i = 0; i < 6; i++)
{
oamSimple = &group->oam[i];
dst = (u16 *)&gOamBuffer[oamSimple->oamId];
*dst++ = gUnknown_086B4F6A[var0][i * 3 + 0];
*dst++ = gUnknown_086B4F6A[var0][i * 3 + 1];
*dst++ = gUnknown_086B4F6A[var0][i * 3 + 2];
gOamBuffer[oamSimple->oamId].x += group->baseX;
gOamBuffer[oamSimple->oamId].y += group->baseY;
}
break;
case 5:
gCurrentPinballGame->unkE4 = 7;
DmaCopy16(3, gUnknown_083A340C, (void *)0x06015800, 0x2000);
DmaCopy16(3, gUnknown_083A542C, (void *)0x050003C0, 0x20);
gCurrentPinballGame->unk602++;
sub_29924();
m4aSongNumStart(SE_UNKNOWN_0x8E);
break;
case 6:
gMain.blendBrightness = 0;
gMain.blendControl = ((REG_DISPCNT & (DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON)) >> 8) | 0xA0;
if (gCurrentPinballGame->unk604 < 73)
{
s16 var1;
if (gCurrentPinballGame->unk604 < 8)
{
gMain.blendBrightness = 16;
}
else
{
for (i = 0; i < 6; i++)
gCurrentPinballGame->unk6D3[i] = 13;
gMain.blendBrightness = ((8 - gCurrentPinballGame->unk604) / 4) + 16;
}
}
if (gCurrentPinballGame->unk604 < 72)
{
gCurrentPinballGame->unk604++;
}
else
{
gCurrentPinballGame->unk602++;
gCurrentPinballGame->unk604 = 0;
gCurrentPinballGame->unk603 = 0;
}
if (gCurrentPinballGame->unk604 > 8U)
{
if (gCurrentPinballGame->unk6CA < 0x7000)
sub_29A6C();
}
break;
case 7:
gCurrentPinballGame->unkE4 = 8;
DmaCopy16(3, gUnknown_083A562C, (void *)0x06015800, 0x1800);
DmaCopy16(3, gUnknown_083A6E4C, (void *)0x050003C0, 0x20);
gMain.unk44[37]->available = 1;
gCurrentPinballGame->unk602++;
gCurrentPinballGame->unk1100 = 0;
break;
case 8:
if (gUnknown_086AE0D0[gCurrentPinballGame->unk603] > gCurrentPinballGame->unk604)
{
gCurrentPinballGame->unk604++;
}
else
{
gCurrentPinballGame->unk604 = 0;
gCurrentPinballGame->unk603++;
if (gCurrentPinballGame->unk603 > 10)
{
gCurrentPinballGame->unk17++;
gMain.unk44[37]->available = 0;
gCurrentPinballGame->unk6C6 = 0;
gCurrentPinballGame->unk6C7 = 0;
gCurrentPinballGame->unk625 = 0;
gMain.blendControl = 0xCE;
gMain.blendBrightness = 0;
gMain.unk44[37]->available = 0;
gCurrentPinballGame->unk603 = 10;
gCurrentPinballGame->unkE4 = 0;
}
}
var0 = gCurrentPinballGame->unk603;
group = gMain.unk44[37];
group->baseX = 96 - gCurrentPinballGame->unk58;
group->baseY = 300 - gCurrentPinballGame->unk5A;
if (group->baseY >= 200)
group->baseY = 200;
for (i = 0; i < 4; i++)
{
oamSimple = &group->oam[i];
dst = (u16 *)&gOamBuffer[oamSimple->oamId];
*dst++ = gUnknown_086B4E62[var0][i * 3 + 0];
*dst++ = gUnknown_086B4E62[var0][i * 3 + 1];
*dst++ = gUnknown_086B4E62[var0][i * 3 + 2];
gOamBuffer[oamSimple->oamId].x += group->baseX;
gOamBuffer[oamSimple->oamId].y += group->baseY;
}
break;
}
}
void sub_25F64(void)
{
s16 i;