mirror of
https://github.com/pret/pokeheartgold.git
synced 2024-12-11 22:57:18 +00:00
633 lines
11 KiB
ArmAsm
633 lines
11 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.rodata
|
|
|
|
_020F56C0:
|
|
.byte 0x00, 0x00
|
|
_020F56C2:
|
|
.byte 0x00, 0x00
|
|
_020F56C4:
|
|
.byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00
|
|
.byte 0x04, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00
|
|
_020F56D8:
|
|
.byte 0x0B
|
|
_020F56D9:
|
|
.byte 0x10
|
|
_020F56DA:
|
|
.byte 0x00
|
|
_020F56DB:
|
|
.byte 0x00
|
|
_020F56DC:
|
|
.byte 0x00
|
|
_020F56DD:
|
|
.byte 0x01
|
|
_020F56DE:
|
|
.byte 0x0F
|
|
_020F56DF:
|
|
.byte 0x02
|
|
.byte 0x0B, 0x10, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x02, 0x0B, 0x10, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x02
|
|
.byte 0x0B, 0x10, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x02, 0x0B, 0x10, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x02
|
|
.byte 0x0A, 0x10, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
|
|
.bss
|
|
|
|
_0211188C:
|
|
.space 4
|
|
|
|
_02111890:
|
|
.space 0xBC
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_02002CA8
|
|
sub_02002CA8: ; 0x02002CA8
|
|
push {r4, lr}
|
|
ldr r0, _02002CE0 ; =_02111890
|
|
ldr r4, _02002CE4 ; =_0211188C
|
|
mov r1, #0
|
|
str r0, [r4]
|
|
add r2, r1, #0
|
|
add r0, r1, #0
|
|
_02002CB6:
|
|
ldr r3, [r4]
|
|
add r3, r3, r2
|
|
add r3, #0x84
|
|
str r0, [r3]
|
|
ldr r3, [r4]
|
|
add r3, r3, r2
|
|
add r3, #0x9c
|
|
str r0, [r3]
|
|
ldr r3, [r4]
|
|
add r2, r2, #4
|
|
add r3, r3, r1
|
|
add r3, #0xb4
|
|
add r1, r1, #1
|
|
strb r0, [r3]
|
|
cmp r1, #6
|
|
blo _02002CB6
|
|
ldr r0, _02002CE8 ; =_020F56D8
|
|
bl sub_0201FFE0
|
|
pop {r4, pc}
|
|
nop
|
|
_02002CE0: .word _02111890
|
|
_02002CE4: .word _0211188C
|
|
_02002CE8: .word _020F56D8
|
|
thumb_func_end sub_02002CA8
|
|
|
|
thumb_func_start sub_02002CEC
|
|
sub_02002CEC: ; 0x02002CEC
|
|
push {r3, r4, r5, lr}
|
|
add r5, r0, #0
|
|
ldr r0, _02002D34 ; =_0211188C
|
|
lsl r4, r5, #2
|
|
ldr r0, [r0]
|
|
add r2, r0, r4
|
|
add r2, #0x9c
|
|
ldr r2, [r2]
|
|
cmp r2, #0
|
|
bne _02002D28
|
|
str r1, [sp]
|
|
ldr r1, _02002D38 ; =_020F56C0
|
|
ldr r3, _02002D3C ; =_020F56C2
|
|
ldrh r1, [r1, r4]
|
|
ldrh r3, [r3, r4]
|
|
mov r0, #0x10 ; graphic/font.narc
|
|
mov r2, #1
|
|
bl FontData_new
|
|
ldr r2, _02002D34 ; =_0211188C
|
|
ldr r1, [r2]
|
|
add r1, r1, r4
|
|
add r1, #0x9c
|
|
str r0, [r1]
|
|
ldr r0, [r2]
|
|
mov r1, #1
|
|
add r0, r0, r5
|
|
add r0, #0xb4
|
|
strb r1, [r0]
|
|
pop {r3, r4, r5, pc}
|
|
_02002D28:
|
|
add r0, #0xb4
|
|
ldrsb r1, [r0, r5]
|
|
add r1, r1, #1
|
|
strb r1, [r0, r5]
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_02002D34: .word _0211188C
|
|
_02002D38: .word _020F56C0
|
|
_02002D3C: .word _020F56C2
|
|
thumb_func_end sub_02002CEC
|
|
|
|
thumb_func_start sub_02002D40
|
|
sub_02002D40: ; 0x02002D40
|
|
push {r3, r4, r5, lr}
|
|
add r4, r0, #0
|
|
add r5, r1, #0
|
|
cmp r4, #6
|
|
blt _02002D4E
|
|
bl GF_AssertFail
|
|
_02002D4E:
|
|
ldr r0, _02002D78 ; =_0211188C
|
|
lsl r4, r4, #2
|
|
ldr r0, [r0]
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _02002D62
|
|
bl GF_AssertFail
|
|
_02002D62:
|
|
ldr r0, _02002D78 ; =_0211188C
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
add r2, r5, #0
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl FontData_ModeSwitch
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_02002D78: .word _0211188C
|
|
thumb_func_end sub_02002D40
|
|
|
|
thumb_func_start sub_02002D7C
|
|
sub_02002D7C: ; 0x02002D7C
|
|
push {r4, lr}
|
|
add r4, r0, #0
|
|
cmp r4, #6
|
|
blt _02002D88
|
|
bl GF_AssertFail
|
|
_02002D88:
|
|
ldr r0, _02002DB0 ; =_0211188C
|
|
lsl r4, r4, #2
|
|
ldr r0, [r0]
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _02002D9C
|
|
bl GF_AssertFail
|
|
_02002D9C:
|
|
ldr r0, _02002DB0 ; =_0211188C
|
|
mov r1, #1
|
|
ldr r0, [r0]
|
|
mov r2, #0
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl FontData_ModeSwitch
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
_02002DB0: .word _0211188C
|
|
thumb_func_end sub_02002D7C
|
|
|
|
thumb_func_start sub_02002DB4
|
|
sub_02002DB4: ; 0x02002DB4
|
|
push {r3, r4, r5, r6, r7, lr}
|
|
add r4, r0, #0
|
|
cmp r4, #6
|
|
blt _02002DC0
|
|
bl GF_AssertFail
|
|
_02002DC0:
|
|
ldr r0, _02002E74 ; =_0211188C
|
|
ldr r0, [r0]
|
|
add r1, r0, r4
|
|
mov r0, #0xb4
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, #0
|
|
bne _02002DD2
|
|
bl GF_AssertFail
|
|
_02002DD2:
|
|
ldr r0, _02002E74 ; =_0211188C
|
|
ldr r1, [r0]
|
|
add r1, #0xb4
|
|
ldrsb r0, [r1, r4]
|
|
cmp r0, #0
|
|
ble _02002DE2
|
|
sub r0, r0, #1
|
|
strb r0, [r1, r4]
|
|
_02002DE2:
|
|
ldr r0, _02002E74 ; =_0211188C
|
|
ldr r6, [r0]
|
|
mov r0, #0xb4
|
|
add r1, r6, r4
|
|
ldrsb r0, [r1, r0]
|
|
cmp r0, #0
|
|
bne _02002E70
|
|
lsl r7, r4, #2
|
|
add r0, r6, r7
|
|
add r0, #0x84
|
|
ldr r0, [r0]
|
|
mov ip, r0
|
|
cmp r0, #0
|
|
beq _02002E50
|
|
ldr r2, _02002E78 ; =_020F56C0
|
|
mov r1, #0
|
|
ldrh r0, [r2, r7]
|
|
add r3, r6, #0
|
|
_02002E06:
|
|
cmp r1, r4
|
|
beq _02002E26
|
|
ldrh r5, [r2]
|
|
cmp r5, r0
|
|
bne _02002E26
|
|
add r5, r3, #0
|
|
add r5, #0x9c
|
|
ldr r5, [r5]
|
|
cmp r5, #0
|
|
beq _02002E26
|
|
lsl r0, r1, #2
|
|
add r2, r6, r0
|
|
add r2, #0x84
|
|
mov r0, ip
|
|
str r0, [r2]
|
|
b _02002E30
|
|
_02002E26:
|
|
add r1, r1, #1
|
|
add r2, r2, #4
|
|
add r3, r3, #4
|
|
cmp r1, #6
|
|
blo _02002E06
|
|
_02002E30:
|
|
cmp r1, #6
|
|
bne _02002E50
|
|
ldr r0, _02002E74 ; =_0211188C
|
|
lsl r5, r4, #2
|
|
ldr r0, [r0]
|
|
add r0, r0, r5
|
|
add r0, #0x84
|
|
ldr r0, [r0]
|
|
bl FreeToHeap
|
|
ldr r0, _02002E74 ; =_0211188C
|
|
mov r1, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, r5
|
|
add r0, #0x84
|
|
str r1, [r0]
|
|
_02002E50:
|
|
ldr r0, _02002E74 ; =_0211188C
|
|
ldr r0, [r0]
|
|
add r0, r0, r7
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
beq _02002E70
|
|
bl FontData_delete
|
|
ldr r0, _02002E74 ; =_0211188C
|
|
mov r2, #0
|
|
ldr r1, [r0]
|
|
lsl r0, r4, #2
|
|
add r0, r1, r0
|
|
add r0, #0x9c
|
|
str r2, [r0]
|
|
_02002E70:
|
|
pop {r3, r4, r5, r6, r7, pc}
|
|
nop
|
|
_02002E74: .word _0211188C
|
|
_02002E78: .word _020F56C0
|
|
thumb_func_end sub_02002DB4
|
|
|
|
thumb_func_start sub_02002E7C
|
|
sub_02002E7C: ; 0x02002E7C
|
|
push {r3, lr}
|
|
ldr r2, _02002E94 ; =_0211188C
|
|
lsl r0, r0, #2
|
|
ldr r2, [r2]
|
|
add r0, r2, r0
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl TryLoadGlyph
|
|
ldr r0, _02002E94 ; =_0211188C
|
|
ldr r0, [r0]
|
|
pop {r3, pc}
|
|
.balign 4, 0
|
|
_02002E94: .word _0211188C
|
|
thumb_func_end sub_02002E7C
|
|
|
|
thumb_func_start sub_02002E98
|
|
sub_02002E98: ; 0x02002E98
|
|
push {r4, lr}
|
|
add r3, r1, #0
|
|
add r3, #0x20
|
|
ldrb r2, [r3, #1]
|
|
lsl r2, r2, #0x18
|
|
lsr r2, r2, #0x1f
|
|
bne _02002EC0
|
|
ldrb r2, [r3]
|
|
mov r4, #0xf
|
|
lsl r0, r0, #0x18
|
|
bic r2, r4
|
|
lsr r4, r0, #0x18
|
|
mov r0, #0xf
|
|
and r0, r4
|
|
orr r0, r2
|
|
strb r0, [r3]
|
|
ldrb r2, [r3, #1]
|
|
mov r0, #0x80
|
|
orr r0, r2
|
|
strb r0, [r3, #1]
|
|
_02002EC0:
|
|
add r0, r1, #0
|
|
bl RenderText
|
|
pop {r4, pc}
|
|
thumb_func_end sub_02002E98
|
|
|
|
thumb_func_start sub_02002EC8
|
|
sub_02002EC8: ; 0x02002EC8
|
|
push {r4, r5, r6, lr}
|
|
lsl r4, r0, #2
|
|
ldr r0, _02002EF8 ; =_0211188C
|
|
add r5, r1, #0
|
|
ldr r0, [r0]
|
|
add r6, r2, #0
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _02002EE2
|
|
bl GF_AssertFail
|
|
_02002EE2:
|
|
ldr r0, _02002EF8 ; =_0211188C
|
|
add r1, r5, #0
|
|
ldr r0, [r0]
|
|
add r2, r6, #0
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl GetStringWidth
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_02002EF8: .word _0211188C
|
|
thumb_func_end sub_02002EC8
|
|
|
|
thumb_func_start sub_02002EFC
|
|
sub_02002EFC: ; 0x02002EFC
|
|
push {r4, r5, r6, lr}
|
|
lsl r4, r0, #2
|
|
ldr r0, _02002F2C ; =_0211188C
|
|
add r5, r1, #0
|
|
ldr r0, [r0]
|
|
add r6, r2, #0
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _02002F16
|
|
bl GF_AssertFail
|
|
_02002F16:
|
|
ldr r0, _02002F2C ; =_0211188C
|
|
add r1, r5, #0
|
|
ldr r0, [r0]
|
|
add r2, r6, #0
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl GetStringWidthFirstLine
|
|
pop {r4, r5, r6, pc}
|
|
nop
|
|
_02002F2C: .word _0211188C
|
|
thumb_func_end sub_02002EFC
|
|
|
|
thumb_func_start sub_02002F30
|
|
sub_02002F30: ; 0x02002F30
|
|
push {r4, r5, r6, lr}
|
|
lsl r4, r0, #2
|
|
ldr r0, _02002F64 ; =_0211188C
|
|
add r5, r1, #0
|
|
ldr r0, [r0]
|
|
add r6, r2, #0
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _02002F4A
|
|
bl GF_AssertFail
|
|
_02002F4A:
|
|
add r0, r5, #0
|
|
bl String_c_str
|
|
add r1, r0, #0
|
|
ldr r0, _02002F64 ; =_0211188C
|
|
add r2, r6, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl GetStringWidth
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
_02002F64: .word _0211188C
|
|
thumb_func_end sub_02002F30
|
|
|
|
thumb_func_start sub_02002F68
|
|
sub_02002F68: ; 0x02002F68
|
|
push {r4, r5, r6, lr}
|
|
lsl r4, r0, #2
|
|
ldr r0, _02002FA8 ; =_0211188C
|
|
add r6, r1, #0
|
|
ldr r0, [r0]
|
|
add r5, r2, #0
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _02002F82
|
|
bl GF_AssertFail
|
|
_02002F82:
|
|
add r0, r5, #0
|
|
bl StringSetEmpty
|
|
add r0, r5, #0
|
|
add r1, r6, #0
|
|
bl StringCat_HandleTrainerName
|
|
add r0, r5, #0
|
|
bl String_c_str
|
|
add r1, r0, #0
|
|
ldr r0, _02002FA8 ; =_0211188C
|
|
ldr r0, [r0]
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl StringAllCharsValid
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
_02002FA8: .word _0211188C
|
|
thumb_func_end sub_02002F68
|
|
|
|
thumb_func_start GetFontAttribute
|
|
GetFontAttribute: ; 0x02002FAC
|
|
mov r2, #0
|
|
cmp r1, #7
|
|
bhi _0200300C
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_02002FBE: ; jump table
|
|
.short _02002FCE - _02002FBE - 2 ; case 0
|
|
.short _02002FD6 - _02002FBE - 2 ; case 1
|
|
.short _02002FDE - _02002FBE - 2 ; case 2
|
|
.short _02002FE6 - _02002FBE - 2 ; case 3
|
|
.short _02002FEE - _02002FBE - 2 ; case 4
|
|
.short _02002FF6 - _02002FBE - 2 ; case 5
|
|
.short _02002FFE - _02002FBE - 2 ; case 6
|
|
.short _02003006 - _02002FBE - 2 ; case 7
|
|
_02002FCE:
|
|
lsl r1, r0, #3
|
|
ldr r0, _02003010 ; =_020F56D8
|
|
ldrb r2, [r0, r1]
|
|
b _0200300C
|
|
_02002FD6:
|
|
lsl r1, r0, #3
|
|
ldr r0, _02003014 ; =_020F56D9
|
|
ldrb r2, [r0, r1]
|
|
b _0200300C
|
|
_02002FDE:
|
|
lsl r1, r0, #3
|
|
ldr r0, _02003018 ; =_020F56DA
|
|
ldrb r2, [r0, r1]
|
|
b _0200300C
|
|
_02002FE6:
|
|
lsl r1, r0, #3
|
|
ldr r0, _0200301C ; =_020F56DB
|
|
ldrb r2, [r0, r1]
|
|
b _0200300C
|
|
_02002FEE:
|
|
lsl r1, r0, #3
|
|
ldr r0, _02003020 ; =_020F56DC
|
|
ldrb r2, [r0, r1]
|
|
b _0200300C
|
|
_02002FF6:
|
|
lsl r1, r0, #3
|
|
ldr r0, _02003024 ; =_020F56DD
|
|
ldrb r2, [r0, r1]
|
|
b _0200300C
|
|
_02002FFE:
|
|
lsl r1, r0, #3
|
|
ldr r0, _02003028 ; =_020F56DE
|
|
ldrb r2, [r0, r1]
|
|
b _0200300C
|
|
_02003006:
|
|
lsl r1, r0, #3
|
|
ldr r0, _0200302C ; =_020F56DF
|
|
ldrb r2, [r0, r1]
|
|
_0200300C:
|
|
add r0, r2, #0
|
|
bx lr
|
|
.balign 4, 0
|
|
_02003010: .word _020F56D8
|
|
_02003014: .word _020F56D9
|
|
_02003018: .word _020F56DA
|
|
_0200301C: .word _020F56DB
|
|
_02003020: .word _020F56DC
|
|
_02003024: .word _020F56DD
|
|
_02003028: .word _020F56DE
|
|
_0200302C: .word _020F56DF
|
|
thumb_func_end GetFontAttribute
|
|
|
|
thumb_func_start sub_02003030
|
|
sub_02003030: ; 0x02003030
|
|
push {r4, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
add r3, r1, #0
|
|
str r2, [sp, #4]
|
|
mov r0, #0x10
|
|
mov r1, #7
|
|
add r2, r4, #0
|
|
bl GfGfxLoader_GXLoadPal
|
|
add sp, #8
|
|
pop {r4, pc}
|
|
thumb_func_end sub_02003030
|
|
|
|
thumb_func_start sub_0200304C
|
|
sub_0200304C: ; 0x0200304C
|
|
push {r4, lr}
|
|
sub sp, #8
|
|
add r4, r0, #0
|
|
mov r0, #0x20
|
|
str r0, [sp]
|
|
add r3, r1, #0
|
|
str r2, [sp, #4]
|
|
mov r0, #0x10
|
|
mov r1, #8
|
|
add r2, r4, #0
|
|
bl GfGfxLoader_GXLoadPal
|
|
add sp, #8
|
|
pop {r4, pc}
|
|
thumb_func_end sub_0200304C
|
|
|
|
thumb_func_start sub_02003068
|
|
sub_02003068: ; 0x02003068
|
|
push {r4, r5, r6, lr}
|
|
lsl r4, r0, #2
|
|
ldr r0, _0200309C ; =_0211188C
|
|
add r5, r1, #0
|
|
ldr r0, [r0]
|
|
add r6, r2, #0
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _02003082
|
|
bl GF_AssertFail
|
|
_02003082:
|
|
add r0, r5, #0
|
|
bl String_c_str
|
|
add r1, r0, #0
|
|
ldr r0, _0200309C ; =_0211188C
|
|
add r2, r6, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl GetStringWidthMultiline
|
|
pop {r4, r5, r6, pc}
|
|
.balign 4, 0
|
|
_0200309C: .word _0211188C
|
|
thumb_func_end sub_02003068
|
|
|
|
thumb_func_start sub_020030A0
|
|
sub_020030A0: ; 0x020030A0
|
|
push {r4, lr}
|
|
add r4, r3, #0
|
|
bl sub_02002F30
|
|
cmp r0, r4
|
|
bhs _020030B2
|
|
sub r0, r4, r0
|
|
lsr r0, r0, #1
|
|
pop {r4, pc}
|
|
_020030B2:
|
|
mov r0, #0
|
|
pop {r4, pc}
|
|
.balign 4, 0
|
|
thumb_func_end sub_020030A0
|
|
|
|
thumb_func_start FontI_GetGlyphWidth
|
|
FontI_GetGlyphWidth: ; 0x020030B8
|
|
push {r3, r4, r5, lr}
|
|
lsl r4, r0, #2
|
|
ldr r0, _020030E4 ; =_0211188C
|
|
add r5, r1, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
cmp r0, #0
|
|
bne _020030D0
|
|
bl GF_AssertFail
|
|
_020030D0:
|
|
ldr r0, _020030E4 ; =_0211188C
|
|
add r1, r5, #0
|
|
ldr r0, [r0]
|
|
add r0, r0, r4
|
|
add r0, #0x9c
|
|
ldr r0, [r0]
|
|
bl GetGlyphWidth
|
|
pop {r3, r4, r5, pc}
|
|
nop
|
|
_020030E4: .word _0211188C
|
|
thumb_func_end FontI_GetGlyphWidth
|