decomp unk_0205FA2C.s

This commit is contained in:
Rémi Calixte
2021-04-03 11:57:44 +02:00
parent bbbb677b16
commit 8958487e95
3 changed files with 629 additions and 930 deletions

View File

@@ -1,930 +0,0 @@
.include "asm/macros.inc"
.include "global.inc"
.extern UNK_020F96DC
.extern UNK_020FA6E8
.section .rodata
.global UNK_020F7454
UNK_020F7454: ; 0x020F7454
.byte 0x00, 0x01, 0x02, 0x04, 0x03, 0x05, 0x06, 0x07, 0x08, 0x00, 0x00, 0x00
.text
thumb_func_start FUN_0205FA2C
FUN_0205FA2C: ; 0x0205FA2C
push {r3-r7, lr}
add r5, r0, #0x0
add r7, r1, #0x0
add r0, r2, #0x0
mov r1, #0x40
bl AllocFromHeapAtEnd
ldr r6, [r7, #0xc]
mov r1, #0x0
mov r2, #0x40
add r4, r0, #0x0
bl MI_CpuFill8
add r0, r6, #0x0
bl Sav2_PlayerData_GetOptionsAddr
str r0, [r4, #0xc]
add r0, r6, #0x0
bl SavArray_PlayerParty_get
str r0, [r4, #0x0]
add r0, r6, #0x0
bl Sav2_Bag_get
str r0, [r4, #0x4]
add r0, r4, #0x0
mov r1, #0x0
add r0, #0x21
strb r1, [r0, #0x0]
add r0, r4, #0x0
ldrb r2, [r5, #0x8]
add r0, #0x20
strb r2, [r0, #0x0]
add r0, r4, #0x0
add r0, #0x32
ldrb r0, [r0, #0x0]
mov r2, #0xf
ldrb r3, [r5, #0xa]
bic r0, r2
mov r2, #0xf
and r2, r3
orr r2, r0
add r0, r4, #0x0
add r0, #0x32
strb r2, [r0, #0x0]
add r0, r4, #0x0
add r0, #0x32
ldrb r0, [r0, #0x0]
mov r2, #0xf0
bic r0, r2
ldrb r2, [r5, #0xb]
lsl r2, r2, #0x1c
lsr r2, r2, #0x18
orr r2, r0
add r0, r4, #0x0
add r0, #0x32
strb r2, [r0, #0x0]
add r0, r4, #0x0
ldrb r2, [r5, #0xc]
add r0, #0x33
strb r2, [r0, #0x0]
add r0, r4, #0x0
ldrb r2, [r5, #0xd]
add r0, #0x22
strb r2, [r0, #0x0]
_0205FAAE:
add r0, r5, r1
ldrb r2, [r0, #0xe]
add r0, r4, r1
add r0, #0x2c
strb r2, [r0, #0x0]
add r0, r1, #0x1
lsl r0, r0, #0x18
lsr r1, r0, #0x18
cmp r1, #0x6
blo _0205FAAE
ldr r1, _0205FAD4 ; =UNK_020F96DC
add r0, r7, #0x0
add r2, r4, #0x0
bl FUN_020373D4
ldr r0, [r5, #0x14]
str r4, [r0, #0x0]
mov r0, #0x1
pop {r3-r7, pc}
.balign 4
_0205FAD4: .word UNK_020F96DC
thumb_func_start FUN_0205FAD8
FUN_0205FAD8: ; 0x0205FAD8
push {r3-r5, lr}
add r5, r0, #0x0
add r0, r1, #0x0
bl FUN_0204647C
cmp r0, #0x0
beq _0205FAEA
mov r0, #0x1
pop {r3-r5, pc}
_0205FAEA:
ldr r0, [r5, #0x14]
ldr r4, [r0, #0x0]
add r0, r4, #0x0
add r0, #0x22
ldrb r0, [r0, #0x0]
cmp r0, #0x6
beq _0205FB04
cmp r0, #0x7
bne _0205FB0C
mov r0, #0x0
str r0, [r5, #0x0]
mov r0, #0x4
pop {r3-r5, pc}
_0205FB04:
mov r0, #0x1
str r0, [r5, #0x0]
mov r0, #0x4
pop {r3-r5, pc}
_0205FB0C:
add r0, r4, #0x0
add r1, r5, #0x0
add r0, #0x2c
add r1, #0xe
mov r2, #0x6
bl MI_CpuCopy8
add r0, r4, #0x0
add r0, #0x22
ldrb r0, [r0, #0x0]
strb r0, [r5, #0xd]
add r0, r4, #0x0
bl FreeToHeap
ldr r0, [r5, #0x14]
mov r1, #0x0
str r1, [r0, #0x0]
mov r0, #0x2
pop {r3-r5, pc}
.balign 4
thumb_func_start FUN_0205FB34
FUN_0205FB34: ; 0x0205FB34
push {r3-r7, lr}
add r7, r1, #0x0
add r6, r0, #0x0
ldr r5, [r7, #0xc]
add r0, r2, #0x0
mov r1, #0x30
bl AllocFromHeapAtEnd
mov r1, #0x0
mov r2, #0x30
add r4, r0, #0x0
bl MI_CpuFill8
add r0, r5, #0x0
bl Sav2_PlayerData_GetOptionsAddr
str r0, [r4, #0x4]
add r0, r5, #0x0
bl SavArray_PlayerParty_get
str r0, [r4, #0x0]
add r0, r5, #0x0
bl FUN_0206BB28
str r0, [r4, #0x1c]
add r0, r5, #0x0
bl FUN_02079C70
str r0, [r4, #0x2c]
mov r0, #0x1
strb r0, [r4, #0x11]
ldrb r0, [r6, #0xd]
strb r0, [r4, #0x14]
ldr r0, [r4, #0x0]
bl GetPartyCount
strb r0, [r4, #0x13]
mov r0, #0x0
strh r0, [r4, #0x18]
ldrb r0, [r6, #0x9]
strb r0, [r4, #0x12]
add r0, r5, #0x0
bl FUN_0202A918
str r0, [r4, #0x20]
ldr r1, _0205FBB8 ; =UNK_020F7454
add r0, r4, #0x0
bl FUN_0207B000
add r0, r5, #0x0
bl Sav2_PlayerData_GetProfileAddr
add r1, r0, #0x0
add r0, r4, #0x0
bl FUN_0207C2A4
ldr r1, _0205FBBC ; =UNK_020FA6E8
add r0, r7, #0x0
add r2, r4, #0x0
bl FUN_020373D4
ldr r0, [r6, #0x14]
str r4, [r0, #0x0]
mov r0, #0x3
pop {r3-r7, pc}
nop
_0205FBB8: .word UNK_020F7454
_0205FBBC: .word UNK_020FA6E8
thumb_func_start FUN_0205FBC0
FUN_0205FBC0: ; 0x0205FBC0
push {r4, lr}
add r4, r0, #0x0
add r0, r1, #0x0
bl FUN_0204647C
cmp r0, #0x0
beq _0205FBD2
mov r0, #0x3
pop {r4, pc}
_0205FBD2:
ldr r0, [r4, #0x14]
ldr r0, [r0, #0x0]
ldrb r1, [r0, #0x14]
strb r1, [r4, #0xd]
bl FreeToHeap
ldr r1, [r4, #0x14]
mov r0, #0x0
str r0, [r1, #0x0]
pop {r4, pc}
.balign 4
thumb_func_start FUN_0205FBE8
FUN_0205FBE8: ; 0x0205FBE8
push {r3-r5, lr}
add r4, r0, #0x0
bl FUN_02046528
add r5, r0, #0x0
add r0, r4, #0x0
bl FUN_0204652C
add r4, r0, #0x0
ldr r1, [r4, #0x4]
cmp r1, #0x4
bhi _0205FC4A
add r1, r1, r1
add r1, pc
ldrh r1, [r1, #0x6]
lsl r1, r1, #0x10
asr r1, r1, #0x10
add pc, r1
_0205FC0C: ; jump table (using 16-bit offset)
.short _0205FC16 - _0205FC0C - 2; case 0
.short _0205FC22 - _0205FC0C - 2; case 1
.short _0205FC2C - _0205FC0C - 2; case 2
.short _0205FC38 - _0205FC0C - 2; case 3
.short _0205FC42 - _0205FC0C - 2; case 4
_0205FC16:
add r1, r5, #0x0
mov r2, #0xb
bl FUN_0205FA2C
str r0, [r4, #0x4]
b _0205FC4A
_0205FC22:
add r1, r5, #0x0
bl FUN_0205FAD8
str r0, [r4, #0x4]
b _0205FC4A
_0205FC2C:
add r1, r5, #0x0
mov r2, #0xb
bl FUN_0205FB34
str r0, [r4, #0x4]
b _0205FC4A
_0205FC38:
add r1, r5, #0x0
bl FUN_0205FBC0
str r0, [r4, #0x4]
b _0205FC4A
_0205FC42:
bl FreeToHeap
mov r0, #0x1
pop {r3-r5, pc}
_0205FC4A:
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
thumb_func_start FUN_0205FC50
FUN_0205FC50: ; 0x0205FC50
push {r3-r7, lr}
add r5, r1, #0x0
add r6, r2, #0x0
add r7, r3, #0x0
bl FUN_02046528
str r0, [sp, #0x0]
mov r0, #0xb
mov r1, #0x18
bl AllocFromHeap
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x18
bl MI_CpuFill8
strb r6, [r4, #0x8]
strb r7, [r4, #0x9]
add r0, sp, #0x8
ldrb r1, [r0, #0x10]
add r2, r4, #0x0
strb r1, [r4, #0xa]
ldrb r1, [r0, #0x14]
strb r1, [r4, #0xb]
ldrb r1, [r0, #0x18]
strb r1, [r4, #0xc]
ldrb r0, [r0, #0x1c]
ldr r1, _0205FC98 ; =FUN_0205FBE8
strb r0, [r4, #0xd]
ldr r0, [sp, #0x0]
str r5, [r4, #0x14]
ldr r0, [r0, #0x10]
bl FUN_0204640C
pop {r3-r7, pc}
nop
_0205FC98: .word FUN_0205FBE8
thumb_func_start FUN_0205FC9C
FUN_0205FC9C: ; 0x0205FC9C
push {r3-r5, lr}
add r5, r1, #0x0
add r4, r0, #0x0
ldr r0, [r5, #0xc]
bl FUN_0203384C
cmp r0, #0x0
beq _0205FCBC
ldrh r1, [r4, #0x12]
ldrh r2, [r4, #0x14]
add r0, r5, #0x0
bl FUN_02038790
str r0, [r4, #0x8]
mov r0, #0x1
pop {r3-r5, pc}
_0205FCBC:
mov r0, #0x1
str r0, [r4, #0x0]
mov r0, #0x2
pop {r3-r5, pc}
thumb_func_start FUN_0205FCC4
FUN_0205FCC4: ; 0x0205FCC4
push {r4, lr}
add r4, r0, #0x0
add r0, r1, #0x0
bl FUN_0204647C
cmp r0, #0x0
beq _0205FCD6
mov r0, #0x1
pop {r4, pc}
_0205FCD6:
ldr r0, [r4, #0x8]
ldr r0, [r0, #0x20]
str r0, [r4, #0x0]
ldr r0, [r4, #0x8]
bl FreeToHeap
mov r0, #0x2
pop {r4, pc}
.balign 4
thumb_func_start FUN_0205FCE8
FUN_0205FCE8: ; 0x0205FCE8
push {r3-r5, lr}
add r4, r0, #0x0
bl FUN_02046528
add r5, r0, #0x0
add r0, r4, #0x0
bl FUN_0204652C
add r4, r0, #0x0
ldr r1, [r4, #0x4]
cmp r1, #0x0
beq _0205FD0A
cmp r1, #0x1
beq _0205FD14
cmp r1, #0x2
beq _0205FD1E
b _0205FD34
_0205FD0A:
add r1, r5, #0x0
bl FUN_0205FC9C
str r0, [r4, #0x4]
b _0205FD34
_0205FD14:
add r1, r5, #0x0
bl FUN_0205FCC4
str r0, [r4, #0x4]
b _0205FD34
_0205FD1E:
ldrh r1, [r4, #0x10]
add r0, r5, #0x0
bl GetVarPointer
ldr r1, [r4, #0x0]
strh r1, [r0, #0x0]
add r0, r4, #0x0
bl FreeToHeap
mov r0, #0x1
pop {r3-r5, pc}
_0205FD34:
mov r0, #0x0
pop {r3-r5, pc}
thumb_func_start FUN_0205FD38
FUN_0205FD38: ; 0x0205FD38
push {r3-r7, lr}
add r5, r1, #0x0
add r6, r2, #0x0
add r7, r3, #0x0
bl FUN_02046528
str r0, [sp, #0x0]
mov r0, #0xb
mov r1, #0x18
bl AllocFromHeap
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x18
bl MI_CpuFill8
strh r5, [r4, #0x12]
strh r7, [r4, #0x14]
ldr r0, [sp, #0x0]
strh r6, [r4, #0x10]
ldr r0, [r0, #0x10]
ldr r1, _0205FD6C ; =FUN_0205FCE8
add r2, r4, #0x0
bl FUN_0204640C
pop {r3-r7, pc}
.balign 4
_0205FD6C: .word FUN_0205FCE8
thumb_func_start FUN_0205FD70
FUN_0205FD70: ; 0x0205FD70
push {r3-r7, lr}
add r4, r0, #0x0
bl FUN_02046528
add r6, r0, #0x0
add r0, r4, #0x0
bl FUN_0204652C
add r5, r0, #0x0
bl FUN_02031190
mov r1, #0x1
sub r0, r1, r0
bl FUN_020316E0
add r7, r0, #0x0
bne _0205FD96
mov r0, #0x0
pop {r3-r7, pc}
_0205FD96:
ldrh r1, [r5, #0x2]
add r0, r6, #0x0
bl GetVarPointer
add r4, r0, #0x0
ldrh r0, [r5, #0x0]
cmp r0, #0x0
beq _0205FDB0
cmp r0, #0x1
beq _0205FDBC
cmp r0, #0x2
beq _0205FDC8
b _0205FDD2
_0205FDB0:
add r0, r6, #0x0
add r1, r7, #0x0
bl MOD06_02244660
strh r0, [r4, #0x0]
b _0205FDD2
_0205FDBC:
add r0, r6, #0x0
add r1, r7, #0x0
bl MOD06_022446BC
strh r0, [r4, #0x0]
b _0205FDD2
_0205FDC8:
add r0, r6, #0x0
add r1, r7, #0x0
bl MOD06_022446E0
strh r0, [r4, #0x0]
_0205FDD2:
add r0, r5, #0x0
bl FreeToHeap
mov r0, #0x1
pop {r3-r7, pc}
thumb_func_start FUN_0205FDDC
FUN_0205FDDC: ; 0x0205FDDC
push {r3-r7, lr}
add r5, r1, #0x0
add r6, r2, #0x0
bl FUN_02046528
add r7, r0, #0x0
mov r0, #0xb
mov r1, #0x4
bl AllocFromHeap
add r4, r0, #0x0
mov r1, #0x0
mov r2, #0x4
bl MI_CpuFill8
strh r5, [r4, #0x0]
strh r6, [r4, #0x2]
ldr r0, [r7, #0x10]
ldr r1, _0205FE0C ; =FUN_0205FD70
add r2, r4, #0x0
bl FUN_0204640C
pop {r3-r7, pc}
nop
_0205FE0C: .word FUN_0205FD70
thumb_func_start FUN_0205FE10
FUN_0205FE10: ; 0x0205FE10
push {r4-r7, lr}
sub sp, #0x14
str r0, [sp, #0x0]
bl FUN_02029FC8
mov r1, #0x35
bl FUN_0202A150
lsl r0, r0, #0x10
lsr r0, r0, #0x10
str r0, [sp, #0x10]
cmp r0, #0x14
bhs _0205FE30
add sp, #0x14
mov r0, #0x0
pop {r4-r7, pc}
_0205FE30:
ldr r0, [sp, #0x0]
bl FUN_0202A8D8
mov r1, #0xd
mov r2, #0x0
add r4, r0, #0x0
bl FUN_0202A578
lsl r0, r0, #0x18
mov r1, #0x0
lsr r7, r0, #0x18
add r0, r4, #0x0
add r2, r1, #0x0
bl FUN_0202A578
lsl r0, r0, #0x18
lsr r6, r0, #0x18
add r0, r4, #0x0
mov r1, #0x1
mov r2, #0x0
bl FUN_0202A578
lsl r0, r0, #0x18
lsr r5, r0, #0x18
add r0, r4, #0x0
mov r1, #0xe
mov r2, #0x0
bl FUN_0202A578
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0xc]
add r0, r4, #0x0
mov r1, #0x2
mov r2, #0x0
bl FUN_0202A578
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x8]
add r0, r4, #0x0
mov r1, #0x3
mov r2, #0x0
bl FUN_0202A578
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x4]
cmp r7, #0x0
beq _0205FEA2
cmp r6, #0x0
beq _0205FEA2
cmp r5, #0x0
beq _0205FEA2
add sp, #0x14
mov r0, #0x0
pop {r4-r7, pc}
_0205FEA2:
ldr r0, [sp, #0x0]
bl FUN_02026CC4
cmp r7, #0x0
bne _0205FEDC
mov r1, #0x55
bl FUN_02025D94
cmp r0, #0x0
beq _0205FEC6
add r0, r4, #0x0
mov r1, #0xd
mov r2, #0x1
bl FUN_0202A578
add sp, #0x14
mov r0, #0x1
pop {r4-r7, pc}
_0205FEC6:
ldr r0, [sp, #0xc]
cmp r0, #0x0
bne _0205FED6
add r0, r4, #0x0
mov r1, #0xe
mov r2, #0x1
bl FUN_0202A578
_0205FED6:
add sp, #0x14
mov r0, #0x4
pop {r4-r7, pc}
_0205FEDC:
ldr r1, [sp, #0x10]
cmp r1, #0x32
bhs _0205FEE8
add sp, #0x14
mov r0, #0x0
pop {r4-r7, pc}
_0205FEE8:
cmp r6, #0x0
bne _0205FF1C
mov r1, #0x56
bl FUN_02025D94
cmp r0, #0x0
beq _0205FF06
add r0, r4, #0x0
mov r1, #0x0
mov r2, #0x1
bl FUN_0202A578
add sp, #0x14
mov r0, #0x2
pop {r4-r7, pc}
_0205FF06:
ldr r0, [sp, #0x8]
cmp r0, #0x0
bne _0205FF16
add r0, r4, #0x0
mov r1, #0x2
mov r2, #0x1
bl FUN_0202A578
_0205FF16:
add sp, #0x14
mov r0, #0x4
pop {r4-r7, pc}
_0205FF1C:
cmp r1, #0x64
blo _0205FF24
cmp r5, #0x0
beq _0205FF2A
_0205FF24:
add sp, #0x14
mov r0, #0x0
pop {r4-r7, pc}
_0205FF2A:
mov r1, #0x57
bl FUN_02025D94
cmp r0, #0x0
beq _0205FF44
mov r1, #0x1
add r0, r4, #0x0
add r2, r1, #0x0
bl FUN_0202A578
add sp, #0x14
mov r0, #0x3
pop {r4-r7, pc}
_0205FF44:
ldr r0, [sp, #0x4]
cmp r0, #0x0
bne _0205FF54
add r0, r4, #0x0
mov r1, #0x3
mov r2, #0x1
bl FUN_0202A578
_0205FF54:
mov r0, #0x4
add sp, #0x14
pop {r4-r7, pc}
.balign 4
thumb_func_start FUN_0205FF5C
FUN_0205FF5C: ; 0x0205FF5C
push {r4-r7, lr}
sub sp, #0xc
add r4, r0, #0x0
bl FUN_02029FC8
mov r1, #0x35
bl FUN_0202A150
lsl r0, r0, #0x10
lsr r7, r0, #0x10
cmp r7, #0x14
bhs _0205FF7A
add sp, #0xc
mov r0, #0x0
pop {r4-r7, pc}
_0205FF7A:
add r0, r4, #0x0
bl FUN_0202A8D8
mov r1, #0xd
mov r2, #0x0
str r0, [sp, #0x8]
bl FUN_0202A578
lsl r0, r0, #0x18
lsr r6, r0, #0x18
mov r1, #0x0
ldr r0, [sp, #0x8]
add r2, r1, #0x0
bl FUN_0202A578
lsl r0, r0, #0x18
lsr r4, r0, #0x18
ldr r0, [sp, #0x8]
mov r1, #0x1
mov r2, #0x0
bl FUN_0202A578
lsl r0, r0, #0x18
lsr r5, r0, #0x18
ldr r0, [sp, #0x8]
mov r1, #0xe
mov r2, #0x0
bl FUN_0202A578
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x4]
ldr r0, [sp, #0x8]
mov r1, #0x2
mov r2, #0x0
bl FUN_0202A578
lsl r0, r0, #0x18
lsr r0, r0, #0x18
str r0, [sp, #0x0]
ldr r0, [sp, #0x8]
mov r1, #0x3
mov r2, #0x0
bl FUN_0202A578
lsl r0, r0, #0x18
lsr r0, r0, #0x18
cmp r6, #0x0
beq _0205FFEA
cmp r4, #0x0
beq _0205FFEA
cmp r5, #0x0
beq _0205FFEA
add sp, #0xc
mov r0, #0x0
pop {r4-r7, pc}
_0205FFEA:
cmp r6, #0x0
bne _02060000
ldr r0, [sp, #0x4]
cmp r0, #0x0
beq _0205FFFA
add sp, #0xc
mov r0, #0x4
pop {r4-r7, pc}
_0205FFFA:
add sp, #0xc
mov r0, #0x1
pop {r4-r7, pc}
_02060000:
cmp r7, #0x32
bhs _0206000A
add sp, #0xc
mov r0, #0x0
pop {r4-r7, pc}
_0206000A:
cmp r4, #0x0
bne _02060020
ldr r0, [sp, #0x0]
cmp r0, #0x0
beq _0206001A
add sp, #0xc
mov r0, #0x5
pop {r4-r7, pc}
_0206001A:
add sp, #0xc
mov r0, #0x2
pop {r4-r7, pc}
_02060020:
cmp r7, #0x64
bhs _0206002A
add sp, #0xc
mov r0, #0x0
pop {r4-r7, pc}
_0206002A:
cmp r5, #0x0
beq _02060034
add sp, #0xc
mov r0, #0x0
pop {r4-r7, pc}
_02060034:
cmp r0, #0x0
beq _0206003E
add sp, #0xc
mov r0, #0x6
pop {r4-r7, pc}
_0206003E:
mov r0, #0x3
add sp, #0xc
pop {r4-r7, pc}
thumb_func_start FUN_02060044
FUN_02060044: ; 0x02060044
add r0, #0xa8
ldr r0, [r0, #0x0]
ldr r2, [r1, #0x0]
ldrh r3, [r0, #0x24]
add r2, r3, r2
strh r2, [r0, #0x24]
ldrh r3, [r0, #0x28]
ldr r2, [r1, #0x4]
add r2, r3, r2
strh r2, [r0, #0x28]
ldrh r2, [r0, #0x26]
ldr r1, [r1, #0x8]
add r1, r2, r1
strh r1, [r0, #0x26]
bx lr
.balign 4
thumb_func_start FUN_02060064
FUN_02060064: ; 0x02060064
ldr r1, _0206006C ; =0x02E90EDD
mul r1, r0
add r0, r1, #0x1
bx lr
.balign 4
_0206006C: .word 0x02E90EDD
thumb_func_start FUN_02060070
FUN_02060070: ; 0x02060070
ldr r1, _02060078 ; =0x5D588B65
mul r1, r0
add r0, r1, #0x1
bx lr
.balign 4
_02060078: .word 0x5D588B65
thumb_func_start FUN_0206007C
FUN_0206007C: ; 0x0206007C
push {r3-r5, lr}
add r5, r0, #0x0
bl FUN_0202881C
bl FUN_020287A4
bl FUN_02060070
add r4, r0, #0x0
add r0, r5, #0x0
bl FUN_0202A8D8
add r1, r4, #0x0
bl FUN_0202A5CC
add r0, r4, #0x0
pop {r3-r5, pc}
.balign 4
thumb_func_start FUN_020600A0
FUN_020600A0: ; 0x020600A0
push {r3-r6, lr}
sub sp, #0x4
add r5, r0, #0x0
bl FUN_0202A8D8
add r6, r0, #0x0
bl FUN_0202A5D0
bl FUN_02060070
add r4, r0, #0x0
add r0, r6, #0x0
add r1, r4, #0x0
bl FUN_0202A5CC
add r0, r4, #0x0
bl FUN_02060064
str r0, [sp, #0x0]
add r0, r5, #0x0
bl FUN_0202A8CC
mov r1, #0xa
add r2, sp, #0x0
bl FUN_0202A2C4
ldr r0, [sp, #0x0]
add sp, #0x4
pop {r3-r6, pc}
.balign 4
thumb_func_start FUN_020600DC
FUN_020600DC: ; 0x020600DC
push {r3-r6, lr}
sub sp, #0x4
add r6, r0, #0x0
bl FUN_0202A8D8
add r4, r0, #0x0
add r0, r6, #0x0
bl FUN_0202A8CC
add r5, r0, #0x0
add r0, r4, #0x0
bl FUN_0202A5D0
bl FUN_02060064
mov r1, #0x0
str r0, [sp, #0x0]
add r0, r5, #0x0
add r2, r1, #0x0
bl FUN_0202A240
add r1, r0, #0x0
lsl r1, r1, #0x10
add r0, r4, #0x0
lsr r1, r1, #0x10
mov r2, #0x0
bl FUN_0202A538
mov r1, #0x18
add r5, r0, #0x0
mul r5, r1
mov r4, #0x0
cmp r5, #0x0
ble _0206012E
ldr r0, [sp, #0x0]
_02060122:
bl FUN_02060064
add r4, r4, #0x1
str r0, [sp, #0x0]
cmp r4, r5
blt _02060122
_0206012E:
add r0, r6, #0x0
bl FUN_0202A8CC
mov r1, #0xa
add r2, sp, #0x0
bl FUN_0202A2C4
ldr r0, [sp, #0x0]
add sp, #0x4
pop {r3-r6, pc}
.balign 4
thumb_func_start FUN_02060144
FUN_02060144: ; 0x02060144
ldr r0, [r0, #0x1c]
ldr r1, [r0, #0x0]
ldr r0, _02060158 ; =0x000001ED
cmp r1, r0
bne _02060152
mov r0, #0x1
bx lr
_02060152:
mov r0, #0x0
bx lr
nop
_02060158: .word 0x000001ED

595
arm9/src/unk_0205FA2C.c Normal file
View File

@@ -0,0 +1,595 @@
#include "unk_0205FA2C.h"
extern void *UNK_020F96DC;
extern void *UNK_020FA6E8;
extern u32 FUN_02079C70(struct SaveBlock2 *sav2);
extern void FUN_0207B000(void *ptr, u8 param1[12]);
extern void FUN_0207C2A4(void *ptr, struct PlayerData *player_data);
extern u32 FUN_0203384C(u32 param0);
extern u32 FUN_02038790(u32 *param0, u16 param1, u16 param2);
extern u16 *GetVarPointer(void *arg, u16);
extern u32 FUN_02031190();
extern u32 FUN_020316E0(u32 param0);
extern u16 MOD06_02244660(struct UnkStruct_0204639C *param0, u32 param1);
extern u16 MOD06_022446BC(struct UnkStruct_0204639C *param0, u32 param1);
extern u16 MOD06_022446E0(struct UnkStruct_0204639C *param0, u32 param1);
extern void FUN_0202A5CC(u32 param0, u32 param1);
extern u32 FUN_0202A5D0(u32 param0);
extern u32 FUN_0202A150(struct UnkStruct_02029FB0 *param0, u32 param1);
extern u32 FUN_0202A8D8(struct SaveBlock2 *sav2);
extern u32 FUN_0202A578(u32 param0, u32 param1, u32 param2);
extern u32 FUN_02026CC4(struct SaveBlock2 *sav2);
extern u32 FUN_02025D94(u32 param0, u32 param1);
extern u32 FUN_0202A8CC(struct SaveBlock2 *sav2);
extern void FUN_0202A2C4(u32 param0, u32 param1, u32 *param2);
extern u32 FUN_0202A240(u32 param0, u32 param1, u32 param2);
extern int FUN_0202A538(u32 param0, u16 param1, u32 param2);
struct UnkStruct3
{
/* 0x00 */ struct PlayerParty *player_party;
/* 0x04 */ struct Bag *bag;
u32 unk08;
/* 0x0c */ struct Options *options;
u32 unk10[4];
u8 unk20;
u8 unk21;
u8 unk22;
u8 unk23;
u32 unk24[2];
u8 unk2c[6];
u8 unk32:4;
u8 unk322:4;
u8 unk33;
u32 unk34[3];
};
THUMB_FUNC u32 FUN_0205FA2C(u8 *param0, struct UnkStruct_0204639C *param1, u32 heap_id)
{
struct UnkStruct3 *ptr =
(struct UnkStruct3 *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct3));
struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC);
MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct3));
ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2);
ptr->player_party = SavArray_PlayerParty_get(sav2);
ptr->bag = Sav2_Bag_get(sav2);
ptr->unk21 = 0;
ptr->unk20 = param0[8];
ptr->unk32 = param0[10];
ptr->unk322 = param0[11];
ptr->unk33 = param0[0xc];
ptr->unk22 = param0[0xd];
for (u8 i = 0; i < 6; i++)
{
ptr->unk2c[i] = param0[i + 0xe];
}
FUN_020373D4(param1, &UNK_020F96DC, ptr);
*((u32 **)param0)[5] = ptr;
return 1;
}
THUMB_FUNC u32 FUN_0205FAD8(u8 *param0, void *param1)
{
if (FUN_0204647C(param1))
{
return 1;
}
void *ptr = *((u32 **)param0)[5];
u8 r1 = *(u8 *)(ptr + 0x22);
if (r1 != 6)
{
if (r1 == 7)
{
((u32 *)param0)[0] = 0;
return 4;
}
}
else
{
((u32 *)param0)[0] = 1;
return 4;
}
MI_CpuCopy8(ptr + 0x2c, param0 + 0xe, 6);
param0[0xd] = *(u8 *)(ptr + 0x22);
FreeToHeap(ptr);
*((u32 **)param0)[5] = 0;
return 2;
}
struct UnkStruct4 {
/* 0x00 */ struct PlayerData *player_data;
/* 0x04 */ struct Options *options;
u32 unk08;
u32 unk0c;
u8 unk10;
u8 unk11;
u8 unk12;
u8 unk13;
u8 unk14;
u8 unk15[3];
u16 unk18;
u16 unk1a;
u32 unk1c;
u32 unk20;
u32 unk24;
u32 unk28;
u32 unk2c;
};
THUMB_FUNC u32 FUN_0205FB34(u8 *param0, struct UnkStruct_0204639C *param1, u32 heap_id)
{
struct SaveBlock2 *sav2 = (struct SaveBlock2 *)(param1->unkC);
struct UnkStruct4 *ptr = (struct UnkStruct4 *)AllocFromHeapAtEnd(heap_id, sizeof(struct UnkStruct4));
MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct4));
ptr->options = Sav2_PlayerData_GetOptionsAddr(sav2);
ptr->player_data = SavArray_PlayerParty_get(sav2);
ptr->unk1c = FUN_0206BB28(sav2);
ptr->unk2c = FUN_02079C70(sav2);
ptr->unk11 = 1;
ptr->unk14 = param0[0xd];
ptr->unk13 = GetPartyCount(*(u32 *)ptr);
ptr->unk18 = 0;
ptr->unk12 = param0[9];
ptr->unk20 = FUN_0202A918(sav2);
FUN_0207B000(ptr, UNK_020F7454);
FUN_0207C2A4(ptr, Sav2_PlayerData_GetProfileAddr(sav2));
FUN_020373D4(param1, &UNK_020FA6E8, ptr);
*((u32 **)param0)[5] = ptr;
return 3;
}
THUMB_FUNC u32 FUN_0205FBC0(u8 ***param0, void *param1)
{
if (FUN_0204647C(param1))
{
return 3;
}
u8 *r0 = param0[5][0];
((u8 *)param0)[0xd] = r0[20];
FreeToHeap(r0);
param0[5][0] = 0;
return 0;
}
THUMB_FUNC int FUN_0205FBE8(struct UnkStruct_0204639C *param0)
{
struct UnkStruct_0204639C *res = FUN_02046528(param0);
struct SaveBlock2 *sav2 = (struct SaveBlock2 *)FUN_0204652C(param0);
switch (sav2->unk_00004)
{
case 0:
sav2->unk_00004 = FUN_0205FA2C((u8 *)sav2, res, 0xb);
break;
case 1:
sav2->unk_00004 = FUN_0205FAD8((u8 *)sav2, res);
break;
case 2:
sav2->unk_00004 = FUN_0205FB34((u8 *)sav2, res, 0xb);
break;
case 3:
sav2->unk_00004 = FUN_0205FBC0((u8 ***)sav2, res);
break;
case 4:
FreeToHeap(sav2);
return 1;
}
return 0;
}
struct UnkStruct1
{
u32 unk00;
u32 unk04;
u8 unk08;
u8 unk09;
u8 unk0a;
u8 unk0b;
u8 unk0c;
u8 unk0d;
u16 unk0e;
u32 unk10;
u32 unk14;
};
THUMB_FUNC void FUN_0205FC50(struct UnkStruct_0204639C *param0,
u32 param1,
u8 param2,
u8 param3,
u8 param4,
u8 param5,
u8 param6,
u8 param7)
{
struct UnkStruct_0204639C *res = FUN_02046528(param0);
struct UnkStruct1 *ptr = (struct UnkStruct1 *)AllocFromHeap(0xb, sizeof(struct UnkStruct1));
MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct1));
ptr->unk08 = param2;
ptr->unk09 = param3;
ptr->unk0a = param4;
ptr->unk0b = param5;
ptr->unk0c = param6;
ptr->unk0d = param7;
ptr->unk14 = param1;
FUN_0204640C(res->unk10, &FUN_0205FBE8, (u32 *)ptr);
}
THUMB_FUNC u32 FUN_0205FC9C(u16 *param0, u32 *param1)
{
if (FUN_0203384C(param1[3]))
{
((u32 *)param0)[2] = FUN_02038790(param1, param0[9], param0[10]);
return 1;
}
((u32 *)param0)[0] = 1;
return 2;
}
THUMB_FUNC u32 FUN_0205FCC4(u32 **param0, void *param1)
{
if (FUN_0204647C(param1))
{
return 1;
}
param0[0] = param0[2][8];
FreeToHeap(param0[2]);
return 2;
}
THUMB_FUNC int FUN_0205FCE8(struct UnkStruct_0204639C *param0)
{
struct UnkStruct_0204639C *res = FUN_02046528(param0);
struct SaveBlock2 *sav2 = (struct SaveBlock2 *)FUN_0204652C(param0);
switch (sav2->unk_00004)
{
case 0:
sav2->unk_00004 = FUN_0205FC9C((u16 *)sav2, (u32 *)res);
break;
case 1:
sav2->unk_00004 = FUN_0205FCC4((u32 **)sav2, (void *)res);
break;
case 2:
u16 *var = GetVarPointer(res, ((u16 *)sav2)[8]);
*var = sav2->flashOkay;
FreeToHeap(sav2);
return 1;
}
return 0;
}
struct UnkStruct2
{
u32 unk00;
u32 unk04;
u8 unk08;
u8 unk09;
u8 unk0a;
u8 unk0b;
u8 unk0c;
u8 unk0d;
u16 unk0e;
u16 unk10;
u16 unk12;
u16 unk14;
u16 unk16;
};
THUMB_FUNC void FUN_0205FD38(struct UnkStruct_0204639C *param0, u16 param1, u16 param2, u16 param3)
{
struct UnkStruct_0204639C *res = FUN_02046528(param0);
struct UnkStruct2 *ptr = (struct UnkStruct2 *)AllocFromHeap(0xb, sizeof(struct UnkStruct2));
MI_CpuFill8(ptr, 0, sizeof(struct UnkStruct2));
ptr->unk12 = param1;
ptr->unk14 = param3;
ptr->unk10 = param2;
FUN_0204640C(res->unk10, &FUN_0205FCE8, (u32 *)ptr);
}
THUMB_FUNC int FUN_0205FD70(struct UnkStruct_0204639C *param0)
{
struct UnkStruct_0204639C *res = FUN_02046528(param0);
u16 *res2 = (u16 *)FUN_0204652C(param0);
u32 res3 = FUN_020316E0(1 - FUN_02031190());
if (res3 == 0)
{
return 0;
}
u16 *var = GetVarPointer(res, res2[1]);
switch (res2[0])
{
case 0:
*var = MOD06_02244660(res, res3);
break;
case 1:
*var = MOD06_022446BC(res, res3);
break;
case 2:
*var = MOD06_022446E0(res, res3);
break;
}
FreeToHeap(res2);
return 1;
}
THUMB_FUNC void FUN_0205FDDC(struct UnkStruct_0204639C *param0, u16 param1, u16 param2)
{
struct UnkStruct_0204639C *res = FUN_02046528(param0);
u16 *ptr = AllocFromHeap(0xb, 2 * sizeof(u16));
MI_CpuFill8(ptr, 0, 2 * sizeof(u16));
ptr[0] = param1;
ptr[1] = param2;
FUN_0204640C(res->unk10, &FUN_0205FD70, ptr);
}
THUMB_FUNC u32 FUN_0205FE10(struct SaveBlock2 *sav2)
{
u16 res = FUN_0202A150(FUN_02029FC8(sav2), 0x35);
if (res < 20)
{
return 0;
}
u32 res2 = FUN_0202A8D8(sav2);
u8 res3 = FUN_0202A578(res2, 0xd, 0);
u8 res4 = FUN_0202A578(res2, 0, 0);
u8 res5 = FUN_0202A578(res2, 1, 0);
u8 res6 = FUN_0202A578(res2, 0xe, 0);
u8 res7 = FUN_0202A578(res2, 2, 0);
u8 res8 = FUN_0202A578(res2, 3, 0);
if (res3 != 0 && res4 != 0 && res5 != 0)
{
return 0;
}
u32 res9 = FUN_02026CC4(sav2);
if (res3 == 0)
{
if (FUN_02025D94(res9, 0x55) != 0)
{
FUN_0202A578(res2, 0xd, 1);
return 1;
}
if (res6 == 0)
{
FUN_0202A578(res2, 0xe, 1);
}
return 4;
}
if (res < 50)
{
return 0;
}
if (res4 == 0)
{
if (FUN_02025D94(res9, 0x56) != 0)
{
FUN_0202A578(res2, 0, 1);
return 2;
}
if (res7 == 0)
{
FUN_0202A578(res2, 2, 1);
}
return 4;
}
if (res < 100 || res5 != 0)
{
return 0;
}
if (FUN_02025D94(res9, 0x57) != 0)
{
FUN_0202A578(res2, 1, 1);
return 3;
}
if (res8 == 0)
{
FUN_0202A578(res2, 3, 1);
}
return 4;
}
THUMB_FUNC u32 FUN_0205FF5C(struct SaveBlock2 *sav2)
{
u16 res = FUN_0202A150(FUN_02029FC8(sav2), 0x35);
if (res < 20)
{
return 0;
}
u32 res2 = FUN_0202A8D8(sav2);
u8 res3 = FUN_0202A578(res2, 0xd, 0);
u8 res4 = FUN_0202A578(res2, 0, 0);
u8 res5 = FUN_0202A578(res2, 1, 0);
u8 res6 = FUN_0202A578(res2, 0xe, 0);
u8 res7 = FUN_0202A578(res2, 2, 0);
u8 res8 = FUN_0202A578(res2, 3, 0);
if (res3 != 0 && res4 != 0 && res5 != 0)
{
return 0;
}
if (res3 == 0)
{
if (res6 != 0)
{
return 4;
}
return 1;
}
if (res < 50)
{
return 0;
}
if (res4 == 0)
{
if (res7 != 0)
{
return 5;
}
return 2;
}
if (res < 100)
{
return 0;
}
if (res5 != 0)
{
return 0;
}
if (res8 != 0)
{
return 6;
}
return 3;
}
THUMB_FUNC void FUN_02060044(u16 **param0, u32 *param1)
{
u16 *ptr = param0[42];
ptr[18] += param1[0];
ptr[20] += param1[1];
ptr[19] += param1[2];
}
THUMB_FUNC u32 FUN_02060064(u32 param0)
{
return param0 * 0x02E90EDD + 1;
}
THUMB_FUNC u32 FUN_02060070(u32 param0)
{
return param0 * 0x5D588B65 + 1;
}
THUMB_FUNC u32 FUN_0206007C(struct SaveBlock2 *sav2)
{
u32 res = FUN_02060070(FUN_020287A4(FUN_0202881C(sav2)));
FUN_0202A5CC(FUN_0202A8D8(sav2), res);
return res;
}
THUMB_FUNC u32 FUN_020600A0(struct SaveBlock2 *sav2)
{
u32 res = FUN_0202A8D8(sav2);
u32 res2 = FUN_02060070(FUN_0202A5D0(res));
FUN_0202A5CC(res, res2);
u32 res3 = FUN_02060064(res2);
FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3);
return res3;
}
THUMB_FUNC u32 FUN_020600DC(struct SaveBlock2 *sav2)
{
u32 res = FUN_0202A8D8(sav2);
u32 res2 = FUN_0202A8CC(sav2);
u32 res3 = FUN_02060064(FUN_0202A5D0(res));
int i = 0;
int res4 = FUN_0202A538(res, FUN_0202A240(res2, 0, 0), 0) * 0x18;
for (i = 0; i < res4; i++)
{
res3 = FUN_02060064(res3);
}
FUN_0202A2C4(FUN_0202A8CC(sav2), 0xa, &res3);
return res3;
}
THUMB_FUNC BOOL FUN_02060144(u32 **param0)
{
if (param0[7][0] == 0x1ED)
{
return TRUE;
}
return FALSE;
}

34
include/unk_0205FA2C.h Normal file
View File

@@ -0,0 +1,34 @@
#ifndef POKEDIAMOND_UNK_0205FA2C_H
#define POKEDIAMOND_UNK_0205FA2C_H
#include "global.h"
#include "MI_memory.h"
#include "bag.h"
#include "heap.h"
#include "party.h"
#include "player_data.h"
#include "unk_0202A8F4.h"
#include "unk_0204639C.h"
#include "unk_0206BB28.h"
#include "unk_02029FB0.h"
#include "unk_020286F8.h"
const u8 UNK_020F7454[] = {
0x00,
0x01,
0x02,
0x04,
0x03,
0x05,
0x06,
0x07,
0x08,
0x00,
0x00,
0x00,
};
#endif //POKEDIAMOND_UNK_0205FA2C_H