mirror of
https://github.com/pret/pokeheartgold.git
synced 2024-12-01 09:00:44 +00:00
913 lines
16 KiB
ArmAsm
913 lines
16 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_02015DDC
|
|
sub_02015DDC: ; 0x02015DDC
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0xc]
|
|
mov r1, #0x18
|
|
bl AllocFromHeap
|
|
add r4, r0, #0
|
|
bne _02015DF0
|
|
bl GF_AssertFail
|
|
_02015DF0:
|
|
ldr r0, [r5]
|
|
ldr r1, [r5, #0xc]
|
|
bl sub_0201605C
|
|
str r0, [r4]
|
|
ldr r0, [r5]
|
|
str r0, [r4, #4]
|
|
ldr r0, [r5, #4]
|
|
ldr r1, [r5, #0xc]
|
|
bl sub_0201608C
|
|
str r0, [r4, #8]
|
|
ldr r0, [r5, #4]
|
|
str r0, [r4, #0xc]
|
|
ldr r0, [r5, #8]
|
|
ldr r1, [r5, #0xc]
|
|
bl sub_020160BC
|
|
str r0, [r4, #0x10]
|
|
ldr r0, [r5, #8]
|
|
str r0, [r4, #0x14]
|
|
add r0, r4, #0
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02015DDC
|
|
|
|
thumb_func_start sub_02015E20
|
|
sub_02015E20: ; 0x02015E20
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
bne _02015E2A
|
|
bl GF_AssertFail
|
|
_02015E2A:
|
|
ldr r0, [r4]
|
|
cmp r0, #0
|
|
bne _02015E34
|
|
bl GF_AssertFail
|
|
_02015E34:
|
|
ldr r0, [r4, #8]
|
|
cmp r0, #0
|
|
bne _02015E3E
|
|
bl GF_AssertFail
|
|
_02015E3E:
|
|
ldr r0, [r4, #0x10]
|
|
cmp r0, #0
|
|
bne _02015E48
|
|
bl GF_AssertFail
|
|
_02015E48:
|
|
ldr r0, [r4]
|
|
bl FreeToHeap
|
|
ldr r0, [r4, #8]
|
|
bl FreeToHeap
|
|
ldr r0, [r4, #0x10]
|
|
bl FreeToHeap
|
|
add r0, r4, #0
|
|
bl FreeToHeap
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02015E20
|
|
|
|
thumb_func_start sub_02015E64
|
|
sub_02015E64: ; 0x02015E64
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
ldr r0, _02015E98 ; =0x04000444
|
|
mov r6, #0
|
|
str r6, [r0]
|
|
ldr r0, [r5, #4]
|
|
cmp r0, #0
|
|
ble _02015E8E
|
|
add r4, r6, #0
|
|
_02015E76:
|
|
ldr r0, [r5]
|
|
add r0, r0, r4
|
|
ldr r1, [r0, #0x20]
|
|
cmp r1, #0
|
|
beq _02015E84
|
|
bl sub_020161CC
|
|
_02015E84:
|
|
ldr r0, [r5, #4]
|
|
add r6, r6, #1
|
|
add r4, #0x40
|
|
cmp r6, r0
|
|
blt _02015E76
|
|
_02015E8E:
|
|
ldr r0, _02015E9C ; =0x04000448
|
|
mov r1, #1
|
|
str r1, [r0]
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_02015E98: .word 0x04000444
|
|
_02015E9C: .word 0x04000448
|
|
thumb_func_end sub_02015E64
|
|
|
|
thumb_func_start sub_02015EA0
|
|
sub_02015EA0: ; 0x02015EA0
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5]
|
|
bl sub_02016118
|
|
add r4, r0, #0
|
|
bne _02015EB2
|
|
bl GF_AssertFail
|
|
_02015EB2:
|
|
ldr r0, [r5, #4]
|
|
ldr r0, [r0, #8]
|
|
cmp r0, #0
|
|
beq _02015EBE
|
|
bl GF_AssertFail
|
|
_02015EBE:
|
|
ldr r0, [r5, #4]
|
|
bl sub_02016170
|
|
str r0, [r4]
|
|
cmp r0, #0
|
|
bne _02015ECE
|
|
bl GF_AssertFail
|
|
_02015ECE:
|
|
ldr r0, [r5, #4]
|
|
ldr r1, [r4]
|
|
add r2, r4, #4
|
|
bl sub_02016198
|
|
add r0, r4, #0
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end sub_02015EA0
|
|
|
|
thumb_func_start sub_02015EDC
|
|
sub_02015EDC: ; 0x02015EDC
|
|
push {r4, lr}
|
|
ldr r1, _02015EF0 ; =NNS_GfdDefaultFuncFreeTexVram
|
|
add r4, r0, #0
|
|
ldr r0, [r4]
|
|
ldr r1, [r1]
|
|
blx r1
|
|
add r0, r4, #0
|
|
bl sub_02016044
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_02015EF0: .word NNS_GfdDefaultFuncFreeTexVram
|
|
thumb_func_end sub_02015EDC
|
|
|
|
thumb_func_start sub_02015EF4
|
|
sub_02015EF4: ; 0x02015EF4
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0xc]
|
|
mov r6, #0
|
|
cmp r0, #0
|
|
ble _02015F1A
|
|
add r4, r6, #0
|
|
_02015F02:
|
|
ldr r1, [r5, #8]
|
|
ldr r0, [r1, r4]
|
|
cmp r0, #0
|
|
beq _02015F10
|
|
add r0, r1, r4
|
|
bl sub_02015EDC
|
|
_02015F10:
|
|
ldr r0, [r5, #0xc]
|
|
add r6, r6, #1
|
|
add r4, #0x28
|
|
cmp r6, r0
|
|
blt _02015F02
|
|
_02015F1A:
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end sub_02015EF4
|
|
|
|
thumb_func_start sub_02015F1C
|
|
sub_02015F1C: ; 0x02015F1C
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5]
|
|
bl sub_02016144
|
|
add r4, r0, #0
|
|
bne _02015F2E
|
|
bl GF_AssertFail
|
|
_02015F2E:
|
|
ldr r0, [r5, #8]
|
|
bl sub_02016184
|
|
str r0, [r4]
|
|
cmp r0, #0
|
|
bne _02015F3E
|
|
bl GF_AssertFail
|
|
_02015F3E:
|
|
ldr r0, [r5, #4]
|
|
ldr r1, [r4]
|
|
add r2, r4, #4
|
|
bl sub_020161A8
|
|
add r0, r4, #0
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end sub_02015F1C
|
|
|
|
thumb_func_start sub_02015F4C
|
|
sub_02015F4C: ; 0x02015F4C
|
|
push {r4, lr}
|
|
ldr r1, _02015F60 ; =NNS_GfdDefaultFuncFreePlttVram
|
|
add r4, r0, #0
|
|
ldr r0, [r4]
|
|
ldr r1, [r1]
|
|
blx r1
|
|
add r0, r4, #0
|
|
bl sub_02016050
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_02015F60: .word NNS_GfdDefaultFuncFreePlttVram
|
|
thumb_func_end sub_02015F4C
|
|
|
|
thumb_func_start sub_02015F64
|
|
sub_02015F64: ; 0x02015F64
|
|
push {r4, r5, r6, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5, #0x14]
|
|
mov r6, #0
|
|
cmp r0, #0
|
|
ble _02015F8A
|
|
add r4, r6, #0
|
|
_02015F72:
|
|
ldr r1, [r5, #0x10]
|
|
ldr r0, [r1, r4]
|
|
cmp r0, #0
|
|
beq _02015F80
|
|
add r0, r1, r4
|
|
bl sub_02015F4C
|
|
_02015F80:
|
|
ldr r0, [r5, #0x14]
|
|
add r6, r6, #1
|
|
add r4, #0x18
|
|
cmp r6, r0
|
|
blt _02015F72
|
|
_02015F8A:
|
|
pop {r4, r5, r6, pc}
|
|
thumb_func_end sub_02015F64
|
|
|
|
thumb_func_start sub_02015F8C
|
|
sub_02015F8C: ; 0x02015F8C
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, [r5]
|
|
bl sub_020160EC
|
|
add r4, r0, #0
|
|
bne _02015F9E
|
|
bl GF_AssertFail
|
|
_02015F9E:
|
|
add r0, r4, #0
|
|
add r1, r5, #0
|
|
bl sub_0201630C
|
|
mov r0, #1
|
|
str r0, [r4, #0x1c]
|
|
str r0, [r4, #0x20]
|
|
add r0, r4, #0
|
|
pop {r3, r4, r5, pc}
|
|
thumb_func_end sub_02015F8C
|
|
|
|
thumb_func_start sub_02015FB0
|
|
sub_02015FB0: ; 0x02015FB0
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
add r4, r1, #0
|
|
cmp r5, #0
|
|
bne _02015FBE
|
|
bl GF_AssertFail
|
|
_02015FBE:
|
|
str r4, [r5, #0x20]
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_02015FB0
|
|
|
|
thumb_func_start sub_02015FC4
|
|
sub_02015FC4: ; 0x02015FC4
|
|
strh r1, [r0]
|
|
strh r2, [r0, #2]
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_02015FC4
|
|
|
|
thumb_func_start sub_02015FCC
|
|
sub_02015FCC: ; 0x02015FCC
|
|
ldrh r1, [r0, #2]
|
|
ldrh r0, [r0]
|
|
lsl r1, r1, #0x10
|
|
orr r0, r1
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_02015FCC
|
|
|
|
thumb_func_start sub_02015FD8
|
|
sub_02015FD8: ; 0x02015FD8
|
|
strh r1, [r0, #4]
|
|
strh r2, [r0, #6]
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_02015FD8
|
|
|
|
thumb_func_start sub_02015FE0
|
|
sub_02015FE0: ; 0x02015FE0
|
|
strh r1, [r0, #8]
|
|
strh r2, [r0, #0xa]
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_02015FE0
|
|
|
|
thumb_func_start sub_02015FE8
|
|
sub_02015FE8: ; 0x02015FE8
|
|
ldrh r1, [r0, #0xa]
|
|
ldrh r0, [r0, #8]
|
|
lsl r1, r1, #0x10
|
|
orr r0, r1
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_02015FE8
|
|
|
|
thumb_func_start sub_02015FF4
|
|
sub_02015FF4: ; 0x02015FF4
|
|
str r1, [r0, #0x14]
|
|
bx lr
|
|
thumb_func_end sub_02015FF4
|
|
|
|
thumb_func_start sub_02015FF8
|
|
sub_02015FF8: ; 0x02015FF8
|
|
ldr r0, [r0, #0x14]
|
|
bx lr
|
|
thumb_func_end sub_02015FF8
|
|
|
|
thumb_func_start sub_02015FFC
|
|
sub_02015FFC: ; 0x02015FFC
|
|
add r0, #0x3e
|
|
strb r1, [r0]
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_02015FFC
|
|
|
|
thumb_func_start sub_02016004
|
|
sub_02016004: ; 0x02016004
|
|
str r1, [r0, #0x24]
|
|
bx lr
|
|
thumb_func_end sub_02016004
|
|
|
|
thumb_func_start sub_02016008
|
|
sub_02016008: ; 0x02016008
|
|
str r1, [r0, #0x28]
|
|
bx lr
|
|
thumb_func_end sub_02016008
|
|
|
|
thumb_func_start sub_0201600C
|
|
sub_0201600C: ; 0x0201600C
|
|
str r1, [r0, #0x2c]
|
|
bx lr
|
|
thumb_func_end sub_0201600C
|
|
|
|
thumb_func_start sub_02016010
|
|
sub_02016010: ; 0x02016010
|
|
str r1, [r0, #0x30]
|
|
bx lr
|
|
thumb_func_end sub_02016010
|
|
|
|
thumb_func_start sub_02016014
|
|
sub_02016014: ; 0x02016014
|
|
cmp r1, #0
|
|
bne _0201601C
|
|
str r2, [r0, #0x34]
|
|
bx lr
|
|
_0201601C:
|
|
str r2, [r0, #0x38]
|
|
bx lr
|
|
thumb_func_end sub_02016014
|
|
|
|
thumb_func_start sub_02016020
|
|
sub_02016020: ; 0x02016020
|
|
str r1, [r0, #0x18]
|
|
bx lr
|
|
thumb_func_end sub_02016020
|
|
|
|
thumb_func_start sub_02016024
|
|
sub_02016024: ; 0x02016024
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
mov r1, #0
|
|
mov r2, #0x40
|
|
bl memset
|
|
add r0, r4, #0
|
|
mov r1, #0x1f
|
|
add r0, #0x3e
|
|
strb r1, [r0]
|
|
ldr r0, _02016040 ; =0x00007FFF
|
|
strh r0, [r4, #0x3c]
|
|
pop {r4, pc}
|
|
nop
|
|
_02016040: .word 0x00007FFF
|
|
thumb_func_end sub_02016024
|
|
|
|
thumb_func_start sub_02016044
|
|
sub_02016044: ; 0x02016044
|
|
ldr r3, _0201604C ; =NNS_G2dInitImageProxy
|
|
mov r1, #0
|
|
stmia r0!, {r1}
|
|
bx r3
|
|
.balign 4, 0
|
|
_0201604C: .word NNS_G2dInitImageProxy
|
|
thumb_func_end sub_02016044
|
|
|
|
thumb_func_start sub_02016050
|
|
sub_02016050: ; 0x02016050
|
|
ldr r3, _02016058 ; =NNS_G2dInitImagePaletteProxy
|
|
mov r1, #0
|
|
stmia r0!, {r1}
|
|
bx r3
|
|
.balign 4, 0
|
|
_02016058: .word NNS_G2dInitImagePaletteProxy
|
|
thumb_func_end sub_02016050
|
|
|
|
thumb_func_start sub_0201605C
|
|
sub_0201605C: ; 0x0201605C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
add r0, r1, #0
|
|
lsl r1, r6, #6
|
|
bl AllocFromHeap
|
|
add r7, r0, #0
|
|
bne _02016070
|
|
bl GF_AssertFail
|
|
_02016070:
|
|
mov r4, #0
|
|
cmp r6, #0
|
|
ble _02016086
|
|
add r5, r7, #0
|
|
_02016078:
|
|
add r0, r5, #0
|
|
bl sub_02016024
|
|
add r4, r4, #1
|
|
add r5, #0x40
|
|
cmp r4, r6
|
|
blt _02016078
|
|
_02016086:
|
|
add r0, r7, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_0201605C
|
|
|
|
thumb_func_start sub_0201608C
|
|
sub_0201608C: ; 0x0201608C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
add r0, r1, #0
|
|
mov r1, #0x28
|
|
mul r1, r6
|
|
bl AllocFromHeap
|
|
add r7, r0, #0
|
|
bne _020160A2
|
|
bl GF_AssertFail
|
|
_020160A2:
|
|
mov r4, #0
|
|
cmp r6, #0
|
|
ble _020160B8
|
|
add r5, r7, #0
|
|
_020160AA:
|
|
add r0, r5, #0
|
|
bl sub_02016044
|
|
add r4, r4, #1
|
|
add r5, #0x28
|
|
cmp r4, r6
|
|
blt _020160AA
|
|
_020160B8:
|
|
add r0, r7, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end sub_0201608C
|
|
|
|
thumb_func_start sub_020160BC
|
|
sub_020160BC: ; 0x020160BC
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r6, r0, #0
|
|
add r0, r1, #0
|
|
mov r1, #0x18
|
|
mul r1, r6
|
|
bl AllocFromHeap
|
|
add r7, r0, #0
|
|
bne _020160D2
|
|
bl GF_AssertFail
|
|
_020160D2:
|
|
mov r4, #0
|
|
cmp r6, #0
|
|
ble _020160E8
|
|
add r5, r7, #0
|
|
_020160DA:
|
|
add r0, r5, #0
|
|
bl sub_02016050
|
|
add r4, r4, #1
|
|
add r5, #0x18
|
|
cmp r4, r6
|
|
blt _020160DA
|
|
_020160E8:
|
|
add r0, r7, #0
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
thumb_func_end sub_020160BC
|
|
|
|
thumb_func_start sub_020160EC
|
|
sub_020160EC: ; 0x020160EC
|
|
push {r3, r4}
|
|
ldr r4, [r0, #4]
|
|
mov r1, #0
|
|
cmp r4, #0
|
|
ble _02016110
|
|
ldr r3, [r0]
|
|
add r2, r3, #0
|
|
_020160FA:
|
|
ldr r0, [r2, #0x1c]
|
|
cmp r0, #0
|
|
bne _02016108
|
|
lsl r0, r1, #6
|
|
add r0, r3, r0
|
|
pop {r3, r4}
|
|
bx lr
|
|
_02016108:
|
|
add r1, r1, #1
|
|
add r2, #0x40
|
|
cmp r1, r4
|
|
blt _020160FA
|
|
_02016110:
|
|
mov r0, #0
|
|
pop {r3, r4}
|
|
bx lr
|
|
.balign 4, 0
|
|
thumb_func_end sub_020160EC
|
|
|
|
thumb_func_start sub_02016118
|
|
sub_02016118: ; 0x02016118
|
|
push {r3, r4}
|
|
ldr r4, [r0, #4]
|
|
mov r1, #0
|
|
cmp r4, #0
|
|
ble _0201613E
|
|
ldr r3, [r0, #8]
|
|
add r2, r3, #0
|
|
_02016126:
|
|
ldr r0, [r2]
|
|
cmp r0, #0
|
|
bne _02016136
|
|
mov r0, #0x28
|
|
mul r0, r1
|
|
add r0, r3, r0
|
|
pop {r3, r4}
|
|
bx lr
|
|
_02016136:
|
|
add r1, r1, #1
|
|
add r2, #0x28
|
|
cmp r1, r4
|
|
blt _02016126
|
|
_0201613E:
|
|
mov r0, #0
|
|
pop {r3, r4}
|
|
bx lr
|
|
thumb_func_end sub_02016118
|
|
|
|
thumb_func_start sub_02016144
|
|
sub_02016144: ; 0x02016144
|
|
push {r3, r4}
|
|
ldr r4, [r0, #4]
|
|
mov r1, #0
|
|
cmp r4, #0
|
|
ble _0201616A
|
|
ldr r3, [r0, #0x10]
|
|
add r2, r3, #0
|
|
_02016152:
|
|
ldr r0, [r2]
|
|
cmp r0, #0
|
|
bne _02016162
|
|
mov r0, #0x18
|
|
mul r0, r1
|
|
add r0, r3, r0
|
|
pop {r3, r4}
|
|
bx lr
|
|
_02016162:
|
|
add r1, r1, #1
|
|
add r2, #0x18
|
|
cmp r1, r4
|
|
blt _02016152
|
|
_0201616A:
|
|
mov r0, #0
|
|
pop {r3, r4}
|
|
bx lr
|
|
thumb_func_end sub_02016144
|
|
|
|
thumb_func_start sub_02016170
|
|
sub_02016170: ; 0x02016170
|
|
push {r3, lr}
|
|
ldr r3, _02016180 ; =NNS_GfdDefaultFuncAllocTexVram
|
|
mov r1, #0
|
|
ldr r0, [r0, #0x10]
|
|
ldr r3, [r3]
|
|
add r2, r1, #0
|
|
blx r3
|
|
pop {r3, pc}
|
|
.balign 4, 0
|
|
_02016180: .word NNS_GfdDefaultFuncAllocTexVram
|
|
thumb_func_end sub_02016170
|
|
|
|
thumb_func_start sub_02016184
|
|
sub_02016184: ; 0x02016184
|
|
push {r3, lr}
|
|
ldr r3, _02016194 ; =NNS_GfdDefaultFuncAllocPlttVram
|
|
mov r1, #0
|
|
ldr r3, [r3]
|
|
lsl r0, r0, #5
|
|
add r2, r1, #0
|
|
blx r3
|
|
pop {r3, pc}
|
|
.balign 4, 0
|
|
_02016194: .word NNS_GfdDefaultFuncAllocPlttVram
|
|
thumb_func_end sub_02016184
|
|
|
|
thumb_func_start sub_02016198
|
|
sub_02016198: ; 0x02016198
|
|
push {r3, lr}
|
|
lsl r1, r1, #0x10
|
|
add r3, r2, #0
|
|
lsr r1, r1, #0xd
|
|
mov r2, #0
|
|
bl NNS_G2dLoadImage2DMapping
|
|
pop {r3, pc}
|
|
thumb_func_end sub_02016198
|
|
|
|
thumb_func_start sub_020161A8
|
|
sub_020161A8: ; 0x020161A8
|
|
push {r3, r4, r5, lr}
|
|
add r3, r2, #0
|
|
ldr r2, _020161C8 ; =0xFFFF0000
|
|
add r5, r0, #0
|
|
and r2, r1
|
|
lsr r2, r2, #0x10
|
|
lsl r1, r1, #0x10
|
|
ldr r4, [r5, #8]
|
|
lsl r2, r2, #3
|
|
str r2, [r5, #8]
|
|
lsr r1, r1, #0xd
|
|
mov r2, #0
|
|
bl NNS_G2dLoadPalette
|
|
str r4, [r5, #8]
|
|
pop {r3, r4, r5, pc}
|
|
.balign 4, 0
|
|
_020161C8: .word 0xFFFF0000
|
|
thumb_func_end sub_020161A8
|
|
|
|
thumb_func_start sub_020161CC
|
|
sub_020161CC: ; 0x020161CC
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
sub sp, #0x18
|
|
ldr r7, _020162EC ; =0x04000444
|
|
mov r6, #0
|
|
add r5, r0, #0
|
|
str r6, [r7]
|
|
ldrh r1, [r5, #0x3c]
|
|
ldr r0, _020162F0 ; =0x7FFF8000
|
|
orr r0, r1
|
|
str r0, [r7, #0x7c]
|
|
add r0, r7, #0
|
|
ldr r1, _020162F4 ; =0x00004210
|
|
add r0, #0x80
|
|
str r1, [r0]
|
|
ldr r3, [r5, #0x24]
|
|
ldr r4, [r3, #8]
|
|
ldr r2, [r3, #0x10]
|
|
ldr r1, [r3, #4]
|
|
ldr r0, [r3]
|
|
lsl r3, r2, #0x1d
|
|
lsl r2, r1, #0x17
|
|
lsl r1, r0, #0x14
|
|
ldr r0, [r5, #0x28]
|
|
lsl r4, r4, #0x1a
|
|
lsr r0, r0, #3
|
|
orr r4, r0
|
|
mov r0, #1
|
|
lsl r0, r0, #0x1e
|
|
orr r0, r4
|
|
orr r0, r1
|
|
orr r0, r2
|
|
orr r0, r3
|
|
str r0, [r7, #0x64]
|
|
ldr r0, [r5, #0x24]
|
|
ldr r0, [r0, #8]
|
|
cmp r0, #2
|
|
bne _02016218
|
|
mov r6, #1
|
|
_02016218:
|
|
ldr r0, [r5, #0x30]
|
|
ldr r1, [r5, #0x2c]
|
|
lsl r0, r0, #5
|
|
add r1, r1, r0
|
|
mov r0, #4
|
|
sub r0, r0, r6
|
|
lsr r1, r0
|
|
ldr r2, _020162F8 ; =0x040004AC
|
|
add r0, r5, #0
|
|
str r1, [r2]
|
|
add r0, #0x3e
|
|
ldrb r0, [r0]
|
|
sub r2, #8
|
|
lsl r1, r0, #0x10
|
|
mov r0, #0xc0
|
|
orr r0, r1
|
|
str r0, [r2]
|
|
ldr r0, [r5, #0x34]
|
|
cmp r0, #0
|
|
beq _0201624A
|
|
mov r0, #8
|
|
ldrsh r0, [r5, r0]
|
|
mov r7, #0
|
|
str r0, [sp, #0x14]
|
|
b _02016252
|
|
_0201624A:
|
|
mov r0, #8
|
|
ldrsh r7, [r5, r0]
|
|
mov r0, #0
|
|
str r0, [sp, #0x14]
|
|
_02016252:
|
|
ldr r0, [r5, #0x38]
|
|
cmp r0, #0
|
|
beq _02016260
|
|
mov r0, #0xa
|
|
ldrsh r6, [r5, r0]
|
|
mov r4, #0
|
|
b _02016266
|
|
_02016260:
|
|
mov r0, #0xa
|
|
ldrsh r4, [r5, r0]
|
|
mov r6, #0
|
|
_02016266:
|
|
ldr r0, [r5, #0x14]
|
|
mov r1, #6
|
|
lsl r2, r0, #0xc
|
|
mov r0, #2
|
|
ldrsh r0, [r5, r0]
|
|
ldrsh r1, [r5, r1]
|
|
mov r3, #4
|
|
ldrsh r3, [r5, r3]
|
|
add r0, r0, r1
|
|
lsl r1, r0, #0xc
|
|
mov r0, #0
|
|
ldrsh r0, [r5, r0]
|
|
add r0, r0, r3
|
|
ldr r3, _020162FC ; =0x04000470
|
|
lsl r0, r0, #0xc
|
|
str r0, [r3]
|
|
str r1, [r3]
|
|
str r2, [r3]
|
|
ldr r0, [r5, #0x18]
|
|
ldr r1, _02016300 ; =FX_SinCosTable_
|
|
asr r0, r0, #4
|
|
lsl r2, r0, #1
|
|
lsl r0, r2, #1
|
|
add r2, r2, #1
|
|
lsl r2, r2, #1
|
|
ldrsh r0, [r1, r0]
|
|
ldrsh r1, [r1, r2]
|
|
bl G3_RotZ
|
|
ldr r2, [r5, #0x10]
|
|
ldr r0, [r5, #0xc]
|
|
ldr r1, _02016304 ; =0x0400046C
|
|
mov r3, #8
|
|
str r0, [r1]
|
|
str r2, [r1]
|
|
lsr r0, r1, #0xe
|
|
str r0, [r1]
|
|
mov r2, #4
|
|
mov r0, #6
|
|
ldrsh r2, [r5, r2]
|
|
ldrsh r0, [r5, r0]
|
|
neg r2, r2
|
|
neg r0, r0
|
|
lsl r2, r2, #0xc
|
|
lsl r0, r0, #0xc
|
|
str r2, [r1, #4]
|
|
str r0, [r1, #4]
|
|
mov r0, #0
|
|
str r0, [r1, #4]
|
|
mov r1, #0xa
|
|
ldrsh r1, [r5, r1]
|
|
add r2, r0, #0
|
|
str r1, [sp]
|
|
ldr r1, [sp, #0x14]
|
|
str r1, [sp, #4]
|
|
str r6, [sp, #8]
|
|
str r7, [sp, #0xc]
|
|
str r4, [sp, #0x10]
|
|
ldrsh r3, [r5, r3]
|
|
add r1, r0, #0
|
|
bl NNS_G2dDrawSpriteFast
|
|
ldr r0, _02016308 ; =0x04000448
|
|
mov r1, #1
|
|
str r1, [r0]
|
|
add sp, #0x18
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
_020162EC: .word 0x04000444
|
|
_020162F0: .word 0x7FFF8000
|
|
_020162F4: .word 0x00004210
|
|
_020162F8: .word 0x040004AC
|
|
_020162FC: .word 0x04000470
|
|
_02016300: .word FX_SinCosTable_
|
|
_02016304: .word 0x0400046C
|
|
_02016308: .word 0x04000448
|
|
thumb_func_end sub_020161CC
|
|
|
|
thumb_func_start sub_0201630C
|
|
sub_0201630C: ; 0x0201630C
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r5, r1, #0
|
|
ldr r1, [r5, #4]
|
|
add r7, r0, #0
|
|
ldr r2, [r1, #0x10]
|
|
mov r6, #8
|
|
mov r0, #0
|
|
cmp r2, #0
|
|
ble _0201632A
|
|
_0201631E:
|
|
ldr r2, [r5, #4]
|
|
add r0, r0, #1
|
|
ldr r2, [r2, #0x10]
|
|
lsl r6, r6, #1
|
|
cmp r0, r2
|
|
blt _0201631E
|
|
_0201632A:
|
|
ldr r1, [r1, #0x14]
|
|
mov r4, #8
|
|
mov r0, #0
|
|
cmp r1, #0
|
|
ble _02016340
|
|
_02016334:
|
|
ldr r1, [r5, #4]
|
|
add r0, r0, #1
|
|
ldr r1, [r1, #0x14]
|
|
lsl r4, r4, #1
|
|
cmp r0, r1
|
|
blt _02016334
|
|
_02016340:
|
|
mov r1, #0xc
|
|
mov r2, #0xe
|
|
ldrsh r1, [r5, r1]
|
|
ldrsh r2, [r5, r2]
|
|
add r0, r7, #0
|
|
bl sub_02015FC4
|
|
lsr r1, r6, #0x1f
|
|
lsr r2, r4, #0x1f
|
|
add r1, r6, r1
|
|
add r2, r4, r2
|
|
lsl r1, r1, #0xf
|
|
lsl r2, r2, #0xf
|
|
add r0, r7, #0
|
|
asr r1, r1, #0x10
|
|
asr r2, r2, #0x10
|
|
bl sub_02015FD8
|
|
mov r0, #1
|
|
lsl r0, r0, #0xc
|
|
str r0, [r7, #0xc]
|
|
str r0, [r7, #0x10]
|
|
add r0, r7, #0
|
|
add r1, r6, #0
|
|
add r2, r4, #0
|
|
bl sub_02015FE0
|
|
ldr r1, [r5, #0x18]
|
|
add r0, r7, #0
|
|
bl sub_02015FF4
|
|
ldr r1, [r5, #0x14]
|
|
add r0, r7, #0
|
|
lsl r1, r1, #0x18
|
|
lsr r1, r1, #0x18
|
|
bl sub_02015FFC
|
|
ldr r1, [r5, #4]
|
|
add r0, r7, #0
|
|
add r1, #0x10
|
|
bl sub_02016004
|
|
ldr r0, [r5, #4]
|
|
mov r1, #0
|
|
add r0, r0, #4
|
|
bl NNS_G2dGetImageLocation
|
|
add r1, r0, #0
|
|
add r0, r7, #0
|
|
bl sub_02016008
|
|
ldr r0, [r5, #8]
|
|
mov r1, #0
|
|
add r0, r0, #4
|
|
bl NNS_G2dGetImagePaletteLocation
|
|
add r1, r0, #0
|
|
add r0, r7, #0
|
|
bl sub_0201600C
|
|
ldrh r1, [r5, #0x1c]
|
|
add r0, r7, #0
|
|
bl sub_02016010
|
|
mov r1, #0
|
|
add r0, r7, #0
|
|
add r2, r1, #0
|
|
bl sub_02016014
|
|
add r0, r7, #0
|
|
mov r1, #1
|
|
mov r2, #0
|
|
bl sub_02016014
|
|
ldrh r1, [r5, #0x10]
|
|
add r0, r7, #0
|
|
bl sub_02016020
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_0201630C
|