mirror of
https://github.com/pret/pokepinballrs.git
synced 2026-04-25 15:49:08 -05:00
decombile sub_2C538 and sub_2C9A4 (#164)
* decombile sub_2C538 and sub_2C9A4 * cleanup --------- Co-authored-by: Marcus Huderle <huderlem@gmail.com>
This commit is contained in:
parent
07bc8eb561
commit
c6749bcf18
|
|
@ -3,680 +3,8 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_2C538
|
||||
sub_2C538: @ 0x0802C538
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
movs r0, #0
|
||||
mov sb, r0
|
||||
ldr r1, _0802C568 @ =gCurrentPinballGame
|
||||
ldr r0, [r1]
|
||||
movs r2, #0xc0
|
||||
lsls r2, r2, #2
|
||||
adds r0, r0, r2
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
adds r7, r1, #0
|
||||
cmp r0, #5
|
||||
bls _0802C55C
|
||||
b _0802C784
|
||||
_0802C55C:
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _0802C56C @ =_0802C570
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0802C568: .4byte gCurrentPinballGame
|
||||
_0802C56C: .4byte _0802C570
|
||||
_0802C570: @ jump table
|
||||
.4byte _0802C588 @ case 0
|
||||
.4byte _0802C5BC @ case 1
|
||||
.4byte _0802C614 @ case 2
|
||||
.4byte _0802C650 @ case 3
|
||||
.4byte _0802C6C0 @ case 4
|
||||
.4byte _0802C708 @ case 5
|
||||
_0802C588:
|
||||
ldr r5, [r7]
|
||||
movs r3, #0xc1
|
||||
lsls r3, r3, #2
|
||||
adds r6, r5, r3
|
||||
ldrh r4, [r6]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x24
|
||||
bl __umodsi3
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
movs r1, #0x12
|
||||
bl __udivsi3
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
mov sb, r0
|
||||
adds r4, #1
|
||||
movs r0, #0
|
||||
strh r4, [r6]
|
||||
ldr r1, _0802C5B8 @ =0x00000301
|
||||
adds r5, r5, r1
|
||||
strb r0, [r5]
|
||||
b _0802C784
|
||||
.align 2, 0
|
||||
_0802C5B8: .4byte 0x00000301
|
||||
_0802C5BC:
|
||||
ldr r6, [r7]
|
||||
movs r2, #0xc1
|
||||
lsls r2, r2, #2
|
||||
adds r5, r6, r2
|
||||
ldrh r4, [r5]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x24
|
||||
bl __umodsi3
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
movs r1, #0x12
|
||||
bl __udivsi3
|
||||
adds r0, #2
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
mov sb, r0
|
||||
adds r4, #1
|
||||
strh r4, [r5]
|
||||
ldr r2, _0802C610 @ =0x00000301
|
||||
adds r0, r6, r2
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _0802C608
|
||||
movs r3, #0xc0
|
||||
lsls r3, r3, #2
|
||||
adds r1, r6, r3
|
||||
movs r0, #2
|
||||
strb r0, [r1]
|
||||
ldr r0, [r7]
|
||||
movs r1, #0xc1
|
||||
lsls r1, r1, #2
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
strh r1, [r0]
|
||||
_0802C608:
|
||||
ldr r0, [r7]
|
||||
adds r0, r0, r2
|
||||
b _0802C780
|
||||
.align 2, 0
|
||||
_0802C610: .4byte 0x00000301
|
||||
_0802C614:
|
||||
ldr r6, [r7]
|
||||
movs r2, #0xc1
|
||||
lsls r2, r2, #2
|
||||
adds r5, r6, r2
|
||||
ldrh r4, [r5]
|
||||
adds r0, r4, #0
|
||||
movs r1, #9
|
||||
bl __umodsi3
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
movs r1, #3
|
||||
bl __udivsi3
|
||||
adds r0, #4
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
mov sb, r0
|
||||
adds r4, #1
|
||||
strh r4, [r5]
|
||||
lsls r4, r4, #0x10
|
||||
lsrs r4, r4, #0x10
|
||||
cmp r4, #9
|
||||
beq _0802C646
|
||||
b _0802C784
|
||||
_0802C646:
|
||||
movs r3, #0xc0
|
||||
lsls r3, r3, #2
|
||||
adds r1, r6, r3
|
||||
movs r0, #3
|
||||
b _0802C6F8
|
||||
_0802C650:
|
||||
ldr r6, [r7]
|
||||
movs r2, #0xc1
|
||||
lsls r2, r2, #2
|
||||
mov r8, r2
|
||||
adds r5, r6, r2
|
||||
ldrh r4, [r5]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x24
|
||||
bl __umodsi3
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
movs r1, #0x12
|
||||
bl __udivsi3
|
||||
adds r0, #2
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
mov sb, r0
|
||||
adds r4, #1
|
||||
movs r2, #0
|
||||
strh r4, [r5]
|
||||
lsls r4, r4, #0x10
|
||||
lsrs r4, r4, #0x10
|
||||
cmp r4, #0x41
|
||||
bls _0802C698
|
||||
movs r3, #0xc0
|
||||
lsls r3, r3, #2
|
||||
adds r1, r6, r3
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
ldr r0, [r7]
|
||||
movs r1, #0xc1
|
||||
lsls r1, r1, #2
|
||||
adds r0, r0, r1
|
||||
strh r2, [r0]
|
||||
_0802C698:
|
||||
ldr r1, [r7]
|
||||
mov r3, r8
|
||||
adds r0, r1, r3
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #6
|
||||
bls _0802C784
|
||||
ldr r3, _0802C6BC @ =0x00000301
|
||||
adds r0, r1, r3
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _0802C784
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #2
|
||||
adds r1, r1, r0
|
||||
movs r0, #4
|
||||
b _0802C772
|
||||
.align 2, 0
|
||||
_0802C6BC: .4byte 0x00000301
|
||||
_0802C6C0:
|
||||
ldr r6, [r7]
|
||||
movs r2, #0xc1
|
||||
lsls r2, r2, #2
|
||||
adds r5, r6, r2
|
||||
ldrh r4, [r5]
|
||||
adds r0, r4, #0
|
||||
movs r1, #9
|
||||
bl __umodsi3
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
movs r1, #3
|
||||
bl __udivsi3
|
||||
adds r0, #7
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
mov sb, r0
|
||||
adds r4, #1
|
||||
strh r4, [r5]
|
||||
lsls r4, r4, #0x10
|
||||
lsrs r4, r4, #0x10
|
||||
cmp r4, #9
|
||||
bne _0802C784
|
||||
movs r3, #0xc0
|
||||
lsls r3, r3, #2
|
||||
adds r1, r6, r3
|
||||
movs r0, #5
|
||||
_0802C6F8:
|
||||
strb r0, [r1]
|
||||
ldr r0, [r7]
|
||||
movs r1, #0xc1
|
||||
lsls r1, r1, #2
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
strh r1, [r0]
|
||||
b _0802C784
|
||||
_0802C708:
|
||||
ldr r6, [r7]
|
||||
movs r2, #0xc1
|
||||
lsls r2, r2, #2
|
||||
mov r8, r2
|
||||
adds r5, r6, r2
|
||||
ldrh r4, [r5]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x24
|
||||
bl __umodsi3
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
movs r1, #0x12
|
||||
bl __udivsi3
|
||||
adds r0, #2
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
mov sb, r0
|
||||
adds r4, #1
|
||||
movs r2, #0
|
||||
strh r4, [r5]
|
||||
lsls r4, r4, #0x10
|
||||
lsrs r4, r4, #0x10
|
||||
cmp r4, #0x41
|
||||
bls _0802C750
|
||||
movs r3, #0xc0
|
||||
lsls r3, r3, #2
|
||||
adds r1, r6, r3
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
ldr r0, [r7]
|
||||
movs r1, #0xc1
|
||||
lsls r1, r1, #2
|
||||
adds r0, r0, r1
|
||||
strh r2, [r0]
|
||||
_0802C750:
|
||||
ldr r1, [r7]
|
||||
mov r3, r8
|
||||
adds r0, r1, r3
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #6
|
||||
bls _0802C784
|
||||
ldr r3, _0802C7B8 @ =0x00000301
|
||||
adds r0, r1, r3
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _0802C784
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #2
|
||||
adds r1, r1, r0
|
||||
movs r0, #2
|
||||
_0802C772:
|
||||
strb r0, [r1]
|
||||
ldr r0, [r7]
|
||||
mov r3, r8
|
||||
adds r1, r0, r3
|
||||
strh r2, [r1]
|
||||
ldr r1, _0802C7B8 @ =0x00000301
|
||||
adds r0, r0, r1
|
||||
_0802C780:
|
||||
movs r1, #0
|
||||
strb r1, [r0]
|
||||
_0802C784:
|
||||
ldr r6, _0802C7BC @ =gMain+0x33D8 @gMain.spriteGroups[68]
|
||||
ldrh r0, [r6]
|
||||
cmp r0, #0
|
||||
beq _0802C83C
|
||||
ldr r1, [r7]
|
||||
movs r2, #0xc0
|
||||
lsls r2, r2, #2
|
||||
adds r0, r1, r2
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #2
|
||||
bgt _0802C7C4
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x58
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0xbc
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #2]
|
||||
ldr r0, [r7]
|
||||
adds r0, #0x5a
|
||||
ldrh r1, [r0]
|
||||
ldr r3, _0802C7C0 @ =0x00000119
|
||||
adds r0, r3, #0
|
||||
b _0802C7DC
|
||||
.align 2, 0
|
||||
_0802C7B8: .4byte 0x00000301
|
||||
_0802C7BC: .4byte gMain+0x33D8 @gMain.spriteGroups[68]
|
||||
_0802C7C0: .4byte 0x00000119
|
||||
_0802C7C4:
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x58
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0xc0
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #2]
|
||||
ldr r0, [r7]
|
||||
adds r0, #0x5a
|
||||
ldrh r1, [r0]
|
||||
movs r2, #0x8b
|
||||
lsls r2, r2, #1
|
||||
adds r0, r2, #0
|
||||
_0802C7DC:
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #4]
|
||||
ldr r0, [r7]
|
||||
ldr r3, _0802C95C @ =0x00000302
|
||||
adds r1, r0, r3
|
||||
ldrb r2, [r1]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
cmp r0, #0
|
||||
ble _0802C808
|
||||
subs r0, r2, #1
|
||||
strb r0, [r1]
|
||||
ldr r0, [r7]
|
||||
adds r0, r0, r3
|
||||
movs r1, #0
|
||||
ldrsb r1, [r0, r1]
|
||||
cmp r1, #0
|
||||
bne _0802C808
|
||||
ldr r0, _0802C960 @ =gMain
|
||||
ldr r2, _0802C964 @ =0x000033D8
|
||||
adds r0, r0, r2
|
||||
strh r1, [r0]
|
||||
_0802C808:
|
||||
adds r5, r6, #0
|
||||
adds r5, #8
|
||||
ldr r4, _0802C968 @ =gOamBuffer
|
||||
ldrh r2, [r6, #8]
|
||||
lsls r2, r2, #3
|
||||
adds r2, r2, r4
|
||||
movs r3, #2
|
||||
ldrsh r1, [r5, r3]
|
||||
movs r3, #2
|
||||
ldrsh r0, [r6, r3]
|
||||
adds r1, r1, r0
|
||||
ldr r3, _0802C96C @ =0x000001FF
|
||||
adds r0, r3, #0
|
||||
ands r1, r0
|
||||
ldrh r3, [r2, #2]
|
||||
ldr r0, _0802C970 @ =0xFFFFFE00
|
||||
ands r0, r3
|
||||
orrs r0, r1
|
||||
strh r0, [r2, #2]
|
||||
ldrh r1, [r6, #8]
|
||||
lsls r1, r1, #3
|
||||
adds r1, r1, r4
|
||||
ldrb r0, [r6, #4]
|
||||
ldrb r5, [r5, #4]
|
||||
adds r0, r0, r5
|
||||
strb r0, [r1]
|
||||
_0802C83C:
|
||||
ldr r2, [r7]
|
||||
movs r1, #0xc0
|
||||
lsls r1, r1, #2
|
||||
adds r0, r2, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #4
|
||||
beq _0802C852
|
||||
cmp r0, #2
|
||||
bne _0802C8C0
|
||||
_0802C852:
|
||||
ldr r4, _0802C974 @ =0x0000132C
|
||||
adds r0, r2, r4
|
||||
ldr r0, [r0]
|
||||
movs r3, #0x10
|
||||
ldrsh r1, [r0, r3]
|
||||
subs r1, #0xbe
|
||||
movs r3, #0x12
|
||||
ldrsh r0, [r0, r3]
|
||||
ldr r3, _0802C978 @ =0xFFFFFEE3
|
||||
adds r0, r0, r3
|
||||
adds r3, r1, #0
|
||||
muls r3, r1, r3
|
||||
adds r1, r3, #0
|
||||
adds r3, r0, #0
|
||||
muls r3, r0, r3
|
||||
adds r0, r3, #0
|
||||
adds r1, r1, r0
|
||||
cmp r1, #0x8c
|
||||
bhi _0802C8C0
|
||||
ldr r1, _0802C95C @ =0x00000302
|
||||
adds r0, r2, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bgt _0802C8C0
|
||||
movs r0, 0xC5 @=SE_UNKNOWN_0xC5
|
||||
bl m4aSongNumStart
|
||||
ldr r1, [r7]
|
||||
ldr r0, _0802C97C @ =0x00002710
|
||||
str r0, [r1, #0x3c]
|
||||
adds r1, r1, r4
|
||||
ldr r2, [r1]
|
||||
movs r3, #0
|
||||
ldr r0, _0802C980 @ =0x0000FDA8
|
||||
strh r0, [r2, #0x30]
|
||||
ldr r2, [r1]
|
||||
ldr r0, _0802C984 @ =0x0000FED4
|
||||
strh r0, [r2, #0x32]
|
||||
ldr r0, [r1]
|
||||
strh r3, [r0, #6]
|
||||
ldr r0, _0802C960 @ =gMain
|
||||
ldr r2, _0802C964 @ =0x000033D8
|
||||
adds r0, r0, r2
|
||||
movs r1, #1
|
||||
strh r1, [r0]
|
||||
ldr r0, [r7]
|
||||
ldr r3, _0802C95C @ =0x00000302
|
||||
adds r0, r0, r3
|
||||
movs r1, #6
|
||||
strb r1, [r0]
|
||||
movs r0, #8
|
||||
bl sub_11B0
|
||||
_0802C8C0:
|
||||
ldr r6, _0802C988 @ =gMain+0x2CA8 @gMain.spriteGroups[58]
|
||||
ldrh r0, [r6]
|
||||
cmp r0, #0
|
||||
beq _0802C94E
|
||||
ldr r2, _0802C98C @ =gCurrentPinballGame
|
||||
ldr r0, [r2]
|
||||
adds r0, #0x58
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0xb8
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #2]
|
||||
ldr r0, [r2]
|
||||
adds r0, #0x5a
|
||||
ldrh r1, [r0]
|
||||
ldr r2, _0802C990 @ =0x00000115
|
||||
adds r0, r2, #0
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #4]
|
||||
ldr r2, _0802C994 @ =0x040000D4
|
||||
mov r3, sb
|
||||
lsls r1, r3, #0x10
|
||||
asrs r1, r1, #0x10
|
||||
lsls r0, r1, #1
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #8
|
||||
ldr r1, _0802C998 @ =gUnknown_0847DF0C
|
||||
adds r0, r0, r1
|
||||
str r0, [r2]
|
||||
ldr r0, _0802C99C @ =0x06013580
|
||||
str r0, [r2, #4]
|
||||
ldr r0, _0802C9A0 @ =0x80000180
|
||||
str r0, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
movs r0, #0
|
||||
ldr r7, _0802C968 @ =gOamBuffer
|
||||
ldr r1, _0802C970 @ =0xFFFFFE00
|
||||
mov r8, r1
|
||||
_0802C90A:
|
||||
lsls r4, r0, #0x10
|
||||
asrs r4, r4, #0x10
|
||||
lsls r0, r4, #3
|
||||
adds r0, #8
|
||||
adds r5, r6, r0
|
||||
ldrh r3, [r5]
|
||||
lsls r3, r3, #3
|
||||
adds r3, r3, r7
|
||||
movs r2, #2
|
||||
ldrsh r1, [r5, r2]
|
||||
movs r2, #2
|
||||
ldrsh r0, [r6, r2]
|
||||
adds r1, r1, r0
|
||||
ldr r2, _0802C96C @ =0x000001FF
|
||||
adds r0, r2, #0
|
||||
ands r1, r0
|
||||
ldrh r2, [r3, #2]
|
||||
mov r0, r8
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strh r0, [r3, #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 r4, #1
|
||||
lsls r4, r4, #0x10
|
||||
lsrs r0, r4, #0x10
|
||||
asrs r4, r4, #0x10
|
||||
cmp r4, #2
|
||||
ble _0802C90A
|
||||
_0802C94E:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802C95C: .4byte 0x00000302
|
||||
_0802C960: .4byte gMain
|
||||
_0802C964: .4byte 0x000033D8
|
||||
_0802C968: .4byte gOamBuffer
|
||||
_0802C96C: .4byte 0x000001FF
|
||||
_0802C970: .4byte 0xFFFFFE00
|
||||
_0802C974: .4byte 0x0000132C
|
||||
_0802C978: .4byte 0xFFFFFEE3
|
||||
_0802C97C: .4byte 0x00002710
|
||||
_0802C980: .4byte 0x0000FDA8
|
||||
_0802C984: .4byte 0x0000FED4
|
||||
_0802C988: .4byte gMain+0x2CA8 @gMain.spriteGroups[58]
|
||||
_0802C98C: .4byte gCurrentPinballGame
|
||||
_0802C990: .4byte 0x00000115
|
||||
_0802C994: .4byte 0x040000D4
|
||||
_0802C998: .4byte gUnknown_0847DF0C
|
||||
_0802C99C: .4byte 0x06013580
|
||||
_0802C9A0: .4byte 0x80000180
|
||||
|
||||
thumb_func_start sub_2C9A4
|
||||
sub_2C9A4: @ 0x0802C9A4
|
||||
push {r4, r5, r6, lr}
|
||||
ldr r6, _0802C9E0 @ =gMain+0x3268 @gMain.spriteGroups[66]
|
||||
ldrh r0, [r6]
|
||||
cmp r0, #0
|
||||
beq _0802CA7A
|
||||
ldr r0, _0802C9E4 @ =gCurrentPinballGame
|
||||
ldr r2, [r0]
|
||||
ldr r3, _0802C9E8 @ =0x0000029F
|
||||
adds r1, r2, r3
|
||||
ldrb r1, [r1]
|
||||
lsls r1, r1, #0x18
|
||||
asrs r1, r1, #0x18
|
||||
adds r3, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0802C9EC
|
||||
movs r1, #0xa4
|
||||
lsls r1, r1, #2
|
||||
adds r0, r2, r1
|
||||
ldr r1, [r0]
|
||||
movs r0, #0x1f
|
||||
ands r1, r0
|
||||
lsrs r1, r1, #3
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x5a
|
||||
ldrh r0, [r0]
|
||||
subs r0, #0x34
|
||||
subs r1, r1, r0
|
||||
strh r1, [r6, #4]
|
||||
b _0802C9F0
|
||||
.align 2, 0
|
||||
_0802C9E0: .4byte gMain+0x3268 @gMain.spriteGroups[66]
|
||||
_0802C9E4: .4byte gCurrentPinballGame
|
||||
_0802C9E8: .4byte 0x0000029F
|
||||
_0802C9EC:
|
||||
movs r0, #0xb4
|
||||
strh r0, [r6, #4]
|
||||
_0802C9F0:
|
||||
ldr r2, [r3]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x58
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0x78
|
||||
subs r0, r0, r1
|
||||
strh r0, [r6, #2]
|
||||
ldr r3, _0802CA20 @ =0x0000029F
|
||||
adds r0, r2, r3
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #1
|
||||
bne _0802CA24
|
||||
movs r1, #0xa4
|
||||
lsls r1, r1, #2
|
||||
adds r0, r2, r1
|
||||
ldr r0, [r0]
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
lsrs r0, r0, #3
|
||||
adds r0, #4
|
||||
b _0802CA32
|
||||
.align 2, 0
|
||||
_0802CA20: .4byte 0x0000029F
|
||||
_0802CA24:
|
||||
movs r3, #0xa4
|
||||
lsls r3, r3, #2
|
||||
adds r0, r2, r3
|
||||
ldr r0, [r0]
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
lsrs r0, r0, #3
|
||||
_0802CA32:
|
||||
ldr r2, _0802CA80 @ =0x040000D4
|
||||
lsls r0, r0, #7
|
||||
ldr r1, _0802CA84 @ =gUnknown_084FEF0C
|
||||
adds r0, r0, r1
|
||||
str r0, [r2]
|
||||
ldr r0, _0802CA88 @ =0x06014B00
|
||||
str r0, [r2, #4]
|
||||
ldr r0, _0802CA8C @ =0x80000040
|
||||
str r0, [r2, #8]
|
||||
ldr r0, [r2, #8]
|
||||
adds r5, r6, #0
|
||||
adds r5, #8
|
||||
ldr r4, _0802CA90 @ =gOamBuffer
|
||||
ldrh r2, [r6, #8]
|
||||
lsls r2, r2, #3
|
||||
adds r2, r2, r4
|
||||
movs r0, #2
|
||||
ldrsh r1, [r5, r0]
|
||||
movs r3, #2
|
||||
ldrsh r0, [r6, r3]
|
||||
adds r1, r1, r0
|
||||
ldr r3, _0802CA94 @ =0x000001FF
|
||||
adds r0, r3, #0
|
||||
ands r1, r0
|
||||
ldrh r3, [r2, #2]
|
||||
ldr r0, _0802CA98 @ =0xFFFFFE00
|
||||
ands r0, r3
|
||||
orrs r0, r1
|
||||
strh r0, [r2, #2]
|
||||
ldrh r1, [r6, #8]
|
||||
lsls r1, r1, #3
|
||||
adds r1, r1, r4
|
||||
ldrb r0, [r6, #4]
|
||||
ldrb r5, [r5, #4]
|
||||
adds r0, r0, r5
|
||||
strb r0, [r1]
|
||||
_0802CA7A:
|
||||
pop {r4, r5, r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0802CA80: .4byte 0x040000D4
|
||||
_0802CA84: .4byte gUnknown_084FEF0C
|
||||
_0802CA88: .4byte 0x06014B00
|
||||
_0802CA8C: .4byte 0x80000040
|
||||
_0802CA90: .4byte gOamBuffer
|
||||
_0802CA94: .4byte 0x000001FF
|
||||
_0802CA98: .4byte 0xFFFFFE00
|
||||
|
||||
thumb_func_start sub_2CA9C
|
||||
sub_2CA9C: @ 0x0802CA9C
|
||||
push {r4, r5, r6, r7, lr}
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -359,7 +359,7 @@ struct PinballGame
|
|||
/*0x29A*/ u16 unk29A;
|
||||
/*0x29C*/ u16 unk29C;
|
||||
/*0x29E*/ u8 unk29E;
|
||||
/*0x29F*/ u8 unk29F;
|
||||
/*0x29F*/ s8 unk29F;
|
||||
/*0x2A0*/ u16 unk2A0;
|
||||
/*0x2A2*/ u8 unk2A2;
|
||||
/*0x2A3*/ u8 filler2A3[0x1];
|
||||
|
|
@ -413,8 +413,10 @@ struct PinballGame
|
|||
/*0x2F8*/ s8 unk2F8;
|
||||
/*0x2F9*/ u8 filler2F9[0x7];
|
||||
/*0x300*/ s8 unk300;
|
||||
/*0x301*/ u8 unk301;
|
||||
/*0x302*/ u8 filler302[0x4];
|
||||
/*0x301*/ s8 unk301;
|
||||
/*0x302*/ s8 unk302;
|
||||
/*0x303*/ s8 unk303;
|
||||
/*0x304*/ u16 unk304;
|
||||
/*0x306*/ s8 unk306;
|
||||
/*0x307*/ s8 unk307;
|
||||
/*0x308*/ u16 unk308;
|
||||
|
|
|
|||
|
|
@ -60,7 +60,8 @@ SECTIONS
|
|||
asm/rom_203CC.o(.text);
|
||||
src/rom_27E08.o(.text);
|
||||
src/rom_27F94.o(.text);
|
||||
asm/rom_2C538.o(.text);
|
||||
src/rom_2C538.o(.text);
|
||||
asm/rom_2CA9C.o(.text);
|
||||
src/rom_2E67C.o(.text);
|
||||
src/rom_30480.o(.text);
|
||||
src/rom_31BE8.o(.text);
|
||||
|
|
|
|||
176
src/rom_2C538.c
Normal file
176
src/rom_2C538.c
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
#include "global.h"
|
||||
#include "m4a.h"
|
||||
#include "main.h"
|
||||
#include "constants/bg_music.h"
|
||||
|
||||
extern const u8 gUnknown_0847DF0C[][0x300];
|
||||
extern const u8 gUnknown_084FEF0C[][0x80];
|
||||
|
||||
|
||||
void sub_2C538(void)
|
||||
{
|
||||
s16 i;
|
||||
struct OamDataSimple *oamSimple;
|
||||
struct SpriteGroup *group;
|
||||
int x, y;
|
||||
int squaredMagnitude;
|
||||
s16 index;
|
||||
|
||||
index = 0;
|
||||
switch (gCurrentPinballGame->unk300)
|
||||
{
|
||||
case 0:
|
||||
index = (gCurrentPinballGame->unk304 % 36) / 18;
|
||||
gCurrentPinballGame->unk304++;
|
||||
gCurrentPinballGame->unk301 = 0;
|
||||
break;
|
||||
case 1:
|
||||
index = (gCurrentPinballGame->unk304 % 36) / 18 + 2;
|
||||
gCurrentPinballGame->unk304++;
|
||||
if (gCurrentPinballGame->unk301)
|
||||
{
|
||||
gCurrentPinballGame->unk300 = 2;
|
||||
gCurrentPinballGame->unk304 = 0;
|
||||
}
|
||||
gCurrentPinballGame->unk301 = 0;
|
||||
break;
|
||||
case 2:
|
||||
index = (gCurrentPinballGame->unk304 % 9) / 3 + 4;
|
||||
gCurrentPinballGame->unk304++;
|
||||
if (gCurrentPinballGame->unk304 == 9)
|
||||
{
|
||||
gCurrentPinballGame->unk300 = 3;
|
||||
gCurrentPinballGame->unk304 = 0;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
index = (gCurrentPinballGame->unk304 % 36) / 18 + 2;
|
||||
gCurrentPinballGame->unk304++;
|
||||
if (gCurrentPinballGame->unk304 > 65)
|
||||
{
|
||||
gCurrentPinballGame->unk300 = 1;
|
||||
gCurrentPinballGame->unk304 = 0;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk304 > 6 && gCurrentPinballGame->unk301)
|
||||
{
|
||||
gCurrentPinballGame->unk300 = 4;
|
||||
gCurrentPinballGame->unk304 = 0;
|
||||
gCurrentPinballGame->unk301 = 0;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
index = (gCurrentPinballGame->unk304 % 9) / 3 + 7;
|
||||
gCurrentPinballGame->unk304++;
|
||||
if (gCurrentPinballGame->unk304 == 9)
|
||||
{
|
||||
gCurrentPinballGame->unk300 = 5;
|
||||
gCurrentPinballGame->unk304 = 0;
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
index = (gCurrentPinballGame->unk304 % 36) / 18 + 2;
|
||||
gCurrentPinballGame->unk304++;
|
||||
if (gCurrentPinballGame->unk304 > 65)
|
||||
{
|
||||
gCurrentPinballGame->unk300 = 1;
|
||||
gCurrentPinballGame->unk304 = 0;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk304 > 6 && gCurrentPinballGame->unk301)
|
||||
{
|
||||
gCurrentPinballGame->unk300 = 2;
|
||||
gCurrentPinballGame->unk304 = 0;
|
||||
gCurrentPinballGame->unk301 = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
group = &gMain.spriteGroups[68];
|
||||
if (group->available)
|
||||
{
|
||||
if (gCurrentPinballGame->unk300 < 3)
|
||||
{
|
||||
group->baseX = 188 - gCurrentPinballGame->unk58;
|
||||
group->baseY = 281 - gCurrentPinballGame->unk5A;
|
||||
}
|
||||
else
|
||||
{
|
||||
group->baseX = 192 - gCurrentPinballGame->unk58;
|
||||
group->baseY = 278 - gCurrentPinballGame->unk5A;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk302 > 0)
|
||||
{
|
||||
gCurrentPinballGame->unk302--;
|
||||
if (gCurrentPinballGame->unk302 == 0)
|
||||
gMain.spriteGroups[68].available = 0;
|
||||
}
|
||||
|
||||
oamSimple = &group->oam[0];
|
||||
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
|
||||
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY;
|
||||
}
|
||||
|
||||
if (gCurrentPinballGame->unk300 == 4 || gCurrentPinballGame->unk300 == 2)
|
||||
{
|
||||
x = gCurrentPinballGame->ball->positionQ0.x - 190;
|
||||
y = gCurrentPinballGame->ball->positionQ0.y - 285;
|
||||
squaredMagnitude = (x * x) + (y * y);
|
||||
if(squaredMagnitude >= 0 && squaredMagnitude <= 140)
|
||||
{
|
||||
if (gCurrentPinballGame->unk302 <= 0)
|
||||
{
|
||||
m4aSongNumStart(SE_UNKNOWN_0xC5);
|
||||
gCurrentPinballGame->unk3C = 10000;
|
||||
gCurrentPinballGame->ball->velocity.x = -600;
|
||||
gCurrentPinballGame->ball->velocity.y = -300;
|
||||
gCurrentPinballGame->ball->unk6 = 0;
|
||||
gMain.spriteGroups[68].available = 1;
|
||||
gCurrentPinballGame->unk302 = 6;
|
||||
sub_11B0(8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group = &gMain.spriteGroups[58];
|
||||
if (group->available)
|
||||
{
|
||||
group->baseX = 184 - gCurrentPinballGame->unk58;
|
||||
group->baseY = 277 - gCurrentPinballGame->unk5A;
|
||||
DmaCopy16(3, gUnknown_0847DF0C[index], (void*) 0x06013580, 0x300);
|
||||
for (i = 0; i < 3;i++)
|
||||
{
|
||||
oamSimple = &group->oam[i];
|
||||
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
|
||||
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_2C9A4(void)
|
||||
{
|
||||
struct OamDataSimple *oamSimple;
|
||||
struct SpriteGroup *group;
|
||||
s16 index;
|
||||
|
||||
group = &gMain.spriteGroups[66];
|
||||
if (group->available)
|
||||
{
|
||||
if (gCurrentPinballGame->unk29F)
|
||||
group->baseY = (gCurrentPinballGame->unk290 % 32) / 8 - (gCurrentPinballGame->unk5A - 52);
|
||||
else
|
||||
group->baseY = 180;
|
||||
|
||||
group->baseX = 120 - gCurrentPinballGame->unk58;
|
||||
if (gCurrentPinballGame->unk29F == 1)
|
||||
index = (gCurrentPinballGame->unk290 % 32) / 8 + 4;
|
||||
else
|
||||
index = (gCurrentPinballGame->unk290 % 32) / 8;
|
||||
|
||||
DmaCopy16(3, gUnknown_084FEF0C[index], (void *) 0x06014B00, 0x80);
|
||||
oamSimple = &group->oam[0];
|
||||
gOamBuffer[oamSimple->oamId].x = oamSimple->xOffset + group->baseX;
|
||||
gOamBuffer[oamSimple->oamId].y = oamSimple->yOffset + group->baseY;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user