mirror of
https://github.com/pret/pokediamond.git
synced 2026-03-21 17:54:29 -05:00
571 lines
9.8 KiB
ArmAsm
571 lines
9.8 KiB
ArmAsm
.include "asm/macros.inc"
|
|
.include "global.inc"
|
|
|
|
.text
|
|
|
|
thumb_func_start sub_02027E30
|
|
sub_02027E30: ; 0x02027E30
|
|
mov r0, #0x8
|
|
bx lr
|
|
|
|
thumb_func_start sub_02027E34
|
|
sub_02027E34: ; 0x02027E34
|
|
ldrb r0, [r0, #0x0]
|
|
cmp r0, #0x1e
|
|
beq _02027E3E
|
|
mov r0, #0x1
|
|
bx lr
|
|
_02027E3E:
|
|
mov r0, #0x0
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02027E44
|
|
sub_02027E44: ; 0x02027E44
|
|
mov r1, #0x1e
|
|
strb r1, [r0, #0x0]
|
|
mov r1, #0x0
|
|
strb r1, [r0, #0x1]
|
|
strb r1, [r0, #0x2]
|
|
strb r1, [r0, #0x3]
|
|
strb r1, [r0, #0x4]
|
|
strb r1, [r0, #0x5]
|
|
strb r1, [r0, #0x6]
|
|
strb r1, [r0, #0x7]
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start Poffin_New
|
|
Poffin_New: ; 0x02027E5C
|
|
push {r4, lr}
|
|
mov r1, #0x8
|
|
bl Heap_AllocAtEnd
|
|
add r4, r0, #0x0
|
|
bl sub_02027E44
|
|
add r0, r4, #0x0
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02027E70
|
|
sub_02027E70: ; 0x02027E70
|
|
ldrb r2, [r0, #0x0]
|
|
strb r2, [r1, #0x0]
|
|
ldrb r2, [r0, #0x1]
|
|
strb r2, [r1, #0x1]
|
|
ldrb r2, [r0, #0x2]
|
|
strb r2, [r1, #0x2]
|
|
ldrb r2, [r0, #0x3]
|
|
strb r2, [r1, #0x3]
|
|
ldrb r2, [r0, #0x4]
|
|
strb r2, [r1, #0x4]
|
|
ldrb r2, [r0, #0x5]
|
|
strb r2, [r1, #0x5]
|
|
ldrb r2, [r0, #0x6]
|
|
strb r2, [r1, #0x6]
|
|
ldrb r0, [r0, #0x7]
|
|
strb r0, [r1, #0x7]
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02027E94
|
|
sub_02027E94: ; 0x02027E94
|
|
cmp r1, #0x6
|
|
bhi _02027ECA
|
|
add r1, r1, r1
|
|
add r1, pc
|
|
ldrh r1, [r1, #0x6]
|
|
lsl r1, r1, #0x10
|
|
asr r1, r1, #0x10
|
|
add pc, r1
|
|
_02027EA4: ; jump table (using 16-bit offset)
|
|
.short _02027EB2 - _02027EA4 - 2; case 0
|
|
.short _02027EB6 - _02027EA4 - 2; case 1
|
|
.short _02027EBA - _02027EA4 - 2; case 2
|
|
.short _02027EBE - _02027EA4 - 2; case 3
|
|
.short _02027EC2 - _02027EA4 - 2; case 4
|
|
.short _02027EC6 - _02027EA4 - 2; case 5
|
|
.short _02027ECA - _02027EA4 - 2; case 6
|
|
_02027EB2:
|
|
ldrb r0, [r0, #0x0]
|
|
bx lr
|
|
_02027EB6:
|
|
ldrb r0, [r0, #0x1]
|
|
bx lr
|
|
_02027EBA:
|
|
ldrb r0, [r0, #0x2]
|
|
bx lr
|
|
_02027EBE:
|
|
ldrb r0, [r0, #0x3]
|
|
bx lr
|
|
_02027EC2:
|
|
ldrb r0, [r0, #0x4]
|
|
bx lr
|
|
_02027EC6:
|
|
ldrb r0, [r0, #0x5]
|
|
bx lr
|
|
_02027ECA:
|
|
ldrb r0, [r0, #0x6]
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02027ED0
|
|
sub_02027ED0: ; 0x02027ED0
|
|
push {r3-r7, lr}
|
|
add r5, r0, #0x0
|
|
str r1, [sp, #0x0]
|
|
mov r4, #0x0
|
|
mov r6, #0x2
|
|
mov r7, #0x5
|
|
_02027EDC:
|
|
bl LCRandom
|
|
add r1, r7, #0x0
|
|
bl _s32_div_f
|
|
lsl r0, r1, #0x18
|
|
lsr r0, r0, #0x18
|
|
add r1, r5, r0
|
|
ldrb r0, [r1, #0x1]
|
|
cmp r0, #0x0
|
|
bne _02027EF6
|
|
strb r6, [r1, #0x1]
|
|
add r4, r4, #0x1
|
|
_02027EF6:
|
|
cmp r4, #0x3
|
|
blt _02027EDC
|
|
mov r0, #0x1b
|
|
strb r0, [r5, #0x0]
|
|
ldr r0, [sp, #0x0]
|
|
strb r0, [r5, #0x6]
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_02027F04
|
|
sub_02027F04: ; 0x02027F04
|
|
push {r3-r7, lr}
|
|
sub sp, #0x8
|
|
mov r12, r2
|
|
mov r2, #0x0
|
|
add r6, r2, #0x0
|
|
mov r5, #0x1b
|
|
cmp r3, #0x0
|
|
beq _02027F20
|
|
mov r1, r12
|
|
bl sub_02027ED0
|
|
add sp, #0x8
|
|
add r0, r5, #0x0
|
|
pop {r3-r7, pc}
|
|
_02027F20:
|
|
add r4, r2, #0x0
|
|
add r7, sp, #0x0
|
|
_02027F24:
|
|
ldrb r3, [r1, r4]
|
|
cmp r3, #0x0
|
|
beq _02027F34
|
|
cmp r3, #0x32
|
|
blo _02027F30
|
|
mov r6, #0x1
|
|
_02027F30:
|
|
strb r4, [r7, r2]
|
|
add r2, r2, #0x1
|
|
_02027F34:
|
|
add r4, r4, #0x1
|
|
cmp r4, #0x5
|
|
blt _02027F24
|
|
cmp r2, #0x5
|
|
bhi _02027F9C
|
|
add r2, r2, r2
|
|
add r2, pc
|
|
ldrh r2, [r2, #0x6]
|
|
lsl r2, r2, #0x10
|
|
asr r2, r2, #0x10
|
|
add pc, r2
|
|
_02027F4A: ; jump table (using 16-bit offset)
|
|
.short _02027F56 - _02027F4A - 2; case 0
|
|
.short _02027F62 - _02027F4A - 2; case 1
|
|
.short _02027F70 - _02027F4A - 2; case 2
|
|
.short _02027F96 - _02027F4A - 2; case 3
|
|
.short _02027F9A - _02027F4A - 2; case 4
|
|
.short _02027F9A - _02027F4A - 2; case 5
|
|
_02027F56:
|
|
mov r1, r12
|
|
bl sub_02027ED0
|
|
add sp, #0x8
|
|
mov r0, #0x1b
|
|
pop {r3-r7, pc}
|
|
_02027F62:
|
|
add r2, sp, #0x0
|
|
ldrb r3, [r2, #0x0]
|
|
mov r2, #0x6
|
|
mul r2, r3
|
|
lsl r2, r2, #0x18
|
|
lsr r5, r2, #0x18
|
|
b _02027F9C
|
|
_02027F70:
|
|
add r2, sp, #0x0
|
|
ldrb r3, [r2, #0x1]
|
|
ldrb r2, [r2, #0x0]
|
|
ldrb r4, [r1, r3]
|
|
ldrb r5, [r1, r2]
|
|
cmp r5, r4
|
|
blo _02027F8A
|
|
lsl r4, r2, #0x2
|
|
add r2, r2, r4
|
|
add r2, r3, r2
|
|
lsl r2, r2, #0x18
|
|
lsr r5, r2, #0x18
|
|
b _02027F9C
|
|
_02027F8A:
|
|
lsl r4, r3, #0x2
|
|
add r3, r3, r4
|
|
add r2, r2, r3
|
|
lsl r2, r2, #0x18
|
|
lsr r5, r2, #0x18
|
|
b _02027F9C
|
|
_02027F96:
|
|
mov r5, #0x19
|
|
b _02027F9C
|
|
_02027F9A:
|
|
mov r5, #0x1a
|
|
_02027F9C:
|
|
cmp r6, #0x0
|
|
beq _02027FA2
|
|
mov r5, #0x1c
|
|
_02027FA2:
|
|
mov r4, #0x0
|
|
_02027FA4:
|
|
ldrb r3, [r1, r4]
|
|
add r2, r0, r4
|
|
add r4, r4, #0x1
|
|
strb r3, [r2, #0x1]
|
|
cmp r4, #0x5
|
|
blt _02027FA4
|
|
strb r5, [r0, #0x0]
|
|
mov r1, r12
|
|
strb r1, [r0, #0x6]
|
|
add r0, r5, #0x0
|
|
add sp, #0x8
|
|
pop {r3-r7, pc}
|
|
|
|
thumb_func_start sub_02027FBC
|
|
sub_02027FBC: ; 0x02027FBC
|
|
ldrb r2, [r0, #0x0]
|
|
strb r2, [r1, #0x0]
|
|
ldrb r2, [r0, #0x1]
|
|
strb r2, [r1, #0x1]
|
|
ldrb r2, [r0, #0x2]
|
|
strb r2, [r1, #0x2]
|
|
ldrb r2, [r0, #0x3]
|
|
strb r2, [r1, #0x3]
|
|
ldrb r2, [r0, #0x4]
|
|
strb r2, [r1, #0x4]
|
|
ldrb r2, [r0, #0x5]
|
|
strb r2, [r1, #0x5]
|
|
ldrb r0, [r0, #0x6]
|
|
strb r0, [r1, #0x6]
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02027FDC
|
|
sub_02027FDC: ; 0x02027FDC
|
|
push {r4, lr}
|
|
add r4, r0, #0x0
|
|
ldrb r0, [r4, #0x0]
|
|
mov r1, #0x5
|
|
bl _s32_div_f
|
|
lsl r0, r0, #0x18
|
|
lsr r0, r0, #0x18
|
|
cmp r0, #0x5
|
|
bhi _0202801C
|
|
add r0, r0, r0
|
|
add r0, pc
|
|
ldrh r0, [r0, #0x6]
|
|
lsl r0, r0, #0x10
|
|
asr r0, r0, #0x10
|
|
add pc, r0
|
|
_02027FFC: ; jump table (using 16-bit offset)
|
|
.short _02028008 - _02027FFC - 2; case 0
|
|
.short _0202800C - _02027FFC - 2; case 1
|
|
.short _02028010 - _02027FFC - 2; case 2
|
|
.short _02028014 - _02027FFC - 2; case 3
|
|
.short _02028018 - _02027FFC - 2; case 4
|
|
.short _0202801C - _02027FFC - 2; case 5
|
|
_02028008:
|
|
ldrb r0, [r4, #0x1]
|
|
b _0202803E
|
|
_0202800C:
|
|
ldrb r0, [r4, #0x2]
|
|
b _0202803E
|
|
_02028010:
|
|
ldrb r0, [r4, #0x3]
|
|
b _0202803E
|
|
_02028014:
|
|
ldrb r0, [r4, #0x4]
|
|
b _0202803E
|
|
_02028018:
|
|
ldrb r0, [r4, #0x5]
|
|
b _0202803E
|
|
_0202801C:
|
|
ldrb r0, [r4, #0x1]
|
|
ldrb r1, [r4, #0x2]
|
|
cmp r0, r1
|
|
bhs _02028026
|
|
add r0, r1, #0x0
|
|
_02028026:
|
|
ldrb r1, [r4, #0x3]
|
|
cmp r0, r1
|
|
bhs _0202802E
|
|
add r0, r1, #0x0
|
|
_0202802E:
|
|
ldrb r1, [r4, #0x4]
|
|
cmp r0, r1
|
|
bhs _02028036
|
|
add r0, r1, #0x0
|
|
_02028036:
|
|
ldrb r1, [r4, #0x5]
|
|
cmp r0, r1
|
|
bhs _0202803E
|
|
add r0, r1, #0x0
|
|
_0202803E:
|
|
cmp r0, #0x63
|
|
bls _02028044
|
|
mov r0, #0x63
|
|
_02028044:
|
|
pop {r4, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start Save_PoffinData_Get
|
|
Save_PoffinData_Get: ; 0x02028048
|
|
ldr r3, _02028050 ; =SaveArray_Get
|
|
mov r1, #0x10
|
|
bx r3
|
|
nop
|
|
_02028050: .word SaveArray_Get
|
|
|
|
thumb_func_start sub_02028054
|
|
sub_02028054: ; 0x02028054
|
|
mov r0, #0x32
|
|
lsl r0, r0, #0x4
|
|
bx lr
|
|
.balign 4
|
|
|
|
thumb_func_start sub_0202805C
|
|
sub_0202805C: ; 0x0202805C
|
|
push {r3-r5, lr}
|
|
add r5, r0, #0x0
|
|
mov r4, #0x0
|
|
_02028062:
|
|
add r0, r5, #0x0
|
|
bl sub_02027E44
|
|
add r4, r4, #0x1
|
|
add r5, #0x8
|
|
cmp r4, #0x64
|
|
blt _02028062
|
|
pop {r3-r5, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02028074
|
|
sub_02028074: ; 0x02028074
|
|
mov r2, #0x0
|
|
_02028076:
|
|
lsl r1, r2, #0x3
|
|
ldrb r1, [r0, r1]
|
|
cmp r1, #0x1e
|
|
bne _02028082
|
|
add r0, r2, #0x0
|
|
bx lr
|
|
_02028082:
|
|
add r1, r2, #0x1
|
|
lsl r1, r1, #0x10
|
|
lsr r2, r1, #0x10
|
|
cmp r2, #0x64
|
|
blo _02028076
|
|
ldr r0, _02028090 ; =0x0000FFFF
|
|
bx lr
|
|
.balign 4
|
|
_02028090: .word 0x0000FFFF
|
|
|
|
thumb_func_start sub_02028094
|
|
sub_02028094: ; 0x02028094
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
add r6, r1, #0x0
|
|
bl sub_02028074
|
|
ldr r1, _020280B4 ; =0x0000FFFF
|
|
add r4, r0, #0x0
|
|
cmp r4, r1
|
|
beq _020280B2
|
|
lsl r1, r4, #0x3
|
|
add r0, r6, #0x0
|
|
add r1, r5, r1
|
|
bl sub_02027E70
|
|
add r0, r4, #0x0
|
|
_020280B2:
|
|
pop {r4-r6, pc}
|
|
.balign 4
|
|
_020280B4: .word 0x0000FFFF
|
|
|
|
thumb_func_start sub_020280B8
|
|
sub_020280B8: ; 0x020280B8
|
|
push {r3, lr}
|
|
cmp r1, #0x64
|
|
blo _020280C2
|
|
mov r0, #0x0
|
|
pop {r3, pc}
|
|
_020280C2:
|
|
lsl r1, r1, #0x3
|
|
add r0, r0, r1
|
|
bl sub_02027E44
|
|
mov r0, #0x1
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_020280D0
|
|
sub_020280D0: ; 0x020280D0
|
|
cmp r1, #0x64
|
|
bhs _020280EA
|
|
_020280D4:
|
|
lsl r2, r1, #0x3
|
|
ldrb r2, [r0, r2]
|
|
cmp r2, #0x1e
|
|
beq _020280E0
|
|
add r0, r1, #0x0
|
|
bx lr
|
|
_020280E0:
|
|
add r1, r1, #0x1
|
|
lsl r1, r1, #0x10
|
|
lsr r1, r1, #0x10
|
|
cmp r1, #0x64
|
|
blo _020280D4
|
|
_020280EA:
|
|
ldr r0, _020280F0 ; =0x0000FFFF
|
|
bx lr
|
|
nop
|
|
_020280F0: .word 0x0000FFFF
|
|
|
|
thumb_func_start sub_020280F4
|
|
sub_020280F4: ; 0x020280F4
|
|
push {r4-r7, lr}
|
|
sub sp, #0xc
|
|
add r5, r0, #0x0
|
|
mov r0, #0x0
|
|
mov r7, #0x64
|
|
str r0, [sp, #0x4]
|
|
_02028100:
|
|
ldr r0, [sp, #0x4]
|
|
lsl r0, r0, #0x3
|
|
ldrb r0, [r5, r0]
|
|
cmp r0, #0x1e
|
|
bne _0202815C
|
|
ldr r6, [sp, #0x4]
|
|
add r0, r5, #0x0
|
|
add r1, r6, #0x0
|
|
bl sub_020280D0
|
|
add r4, r0, #0x0
|
|
ldr r0, _02028170 ; =0x0000FFFF
|
|
cmp r4, r0
|
|
beq _0202816A
|
|
ldr r0, [sp, #0x4]
|
|
sub r0, r4, r0
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp, #0x0]
|
|
cmp r4, r7
|
|
bhs _02028154
|
|
cmp r4, r7
|
|
bhs _02028154
|
|
_0202812E:
|
|
lsl r0, r4, #0x3
|
|
lsl r1, r6, #0x3
|
|
str r0, [sp, #0x8]
|
|
add r0, r5, r0
|
|
add r1, r5, r1
|
|
bl sub_02027E70
|
|
ldr r0, [sp, #0x8]
|
|
add r0, r5, r0
|
|
bl sub_02027E44
|
|
add r0, r6, #0x1
|
|
lsl r0, r0, #0x10
|
|
lsr r6, r0, #0x10
|
|
add r0, r4, #0x1
|
|
lsl r0, r0, #0x10
|
|
lsr r4, r0, #0x10
|
|
cmp r4, r7
|
|
blo _0202812E
|
|
_02028154:
|
|
ldr r0, [sp, #0x0]
|
|
sub r0, r7, r0
|
|
lsl r0, r0, #0x10
|
|
lsr r7, r0, #0x10
|
|
_0202815C:
|
|
ldr r0, [sp, #0x4]
|
|
add r0, r0, #0x1
|
|
lsl r0, r0, #0x10
|
|
lsr r0, r0, #0x10
|
|
str r0, [sp, #0x4]
|
|
cmp r0, r7
|
|
blo _02028100
|
|
_0202816A:
|
|
add sp, #0xc
|
|
pop {r4-r7, pc}
|
|
nop
|
|
_02028170: .word 0x0000FFFF
|
|
|
|
thumb_func_start sub_02028174
|
|
sub_02028174: ; 0x02028174
|
|
push {r3, lr}
|
|
cmp r1, #0x64
|
|
blo _02028182
|
|
add r0, r2, #0x0
|
|
bl sub_02027E44
|
|
pop {r3, pc}
|
|
_02028182:
|
|
lsl r1, r1, #0x3
|
|
add r0, r0, r1
|
|
add r1, r2, #0x0
|
|
bl sub_02027E70
|
|
pop {r3, pc}
|
|
.balign 4
|
|
|
|
thumb_func_start sub_02028190
|
|
sub_02028190: ; 0x02028190
|
|
push {r4-r6, lr}
|
|
add r5, r0, #0x0
|
|
add r0, r2, #0x0
|
|
add r4, r1, #0x0
|
|
bl Poffin_New
|
|
add r6, r0, #0x0
|
|
cmp r4, #0x64
|
|
blo _020281AA
|
|
bl sub_02027E44
|
|
mov r0, #0x0
|
|
pop {r4-r6, pc}
|
|
_020281AA:
|
|
lsl r0, r4, #0x3
|
|
add r0, r5, r0
|
|
add r1, r6, #0x0
|
|
bl sub_02027E70
|
|
add r0, r6, #0x0
|
|
pop {r4-r6, pc}
|
|
|
|
thumb_func_start sub_020281B8
|
|
sub_020281B8: ; 0x020281B8
|
|
push {r4-r6, lr}
|
|
mov r4, #0x0
|
|
add r6, r0, #0x0
|
|
add r5, r4, #0x0
|
|
_020281C0:
|
|
lsl r0, r5, #0x3
|
|
add r0, r6, r0
|
|
bl sub_02027E34
|
|
cmp r0, #0x0
|
|
beq _020281D2
|
|
add r0, r4, #0x1
|
|
lsl r0, r0, #0x10
|
|
lsr r4, r0, #0x10
|
|
_020281D2:
|
|
add r0, r5, #0x1
|
|
lsl r0, r0, #0x10
|
|
lsr r5, r0, #0x10
|
|
cmp r5, #0x64
|
|
blo _020281C0
|
|
add r0, r4, #0x0
|
|
pop {r4-r6, pc}
|