diff options
-rw-r--r-- | arm9/asm/pokedex.s | 2373 | ||||
-rw-r--r-- | arm9/asm/scrcmd.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_0206BB28.s | 2 | ||||
-rw-r--r-- | arm9/global.inc | 2 | ||||
-rw-r--r-- | arm9/modules/16/asm/module_16.s | 2 | ||||
-rw-r--r-- | arm9/src/pokedex.c | 784 | ||||
-rw-r--r-- | arm9/src/pokemon.c | 2 | ||||
-rw-r--r-- | include/pokedex.h | 86 | ||||
-rw-r--r-- | include/pokemon.h | 2 | ||||
-rw-r--r-- | include/unk_02087A1C.h | 7 |
10 files changed, 883 insertions, 2379 deletions
diff --git a/arm9/asm/pokedex.s b/arm9/asm/pokedex.s deleted file mode 100644 index 11a29cda..00000000 --- a/arm9/asm/pokedex.s +++ /dev/null @@ -1,2373 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - .include "constants/species.h" - - .section .rodata - - .global UNK_020EE940 -UNK_020EE940: ; 0x020EE940 - .short SPECIES_MANAPHY - .short SPECIES_MEW - .short SPECIES_LUGIA - .short SPECIES_HO_OH - .short SPECIES_CELEBI - .short SPECIES_JIRACHI - .short SPECIES_DEOXYS - .short SPECIES_PHIONE - .short SPECIES_MANAPHY - .short SPECIES_DARKRAI - .short SPECIES_SHAYMIN - .short SPECIES_ARCEUS - - .text - - thumb_func_start Sav2_Pokedex_sizeof -Sav2_Pokedex_sizeof: ; 0x02023D64 - mov r0, #0x4f - lsl r0, r0, #0x2 - bx lr - .balign 4 - - thumb_func_start Sav2_Pokedex_new -Sav2_Pokedex_new: ; 0x02023D6C - push {r4, lr} - mov r1, #0x4f - lsl r1, r1, #0x2 - bl AllocFromHeap - add r4, r0, #0x0 - bl Sav2_Pokedex_init - add r0, r4, #0x0 - pop {r4, pc} - - thumb_func_start Sav2_Pokedex_Copy -Sav2_Pokedex_Copy: ; 0x02023D80 - ldr r3, _02023D88 ; =MI_CpuCopy8 - mov r2, #0x4f - lsl r2, r2, #0x2 - bx r3 - .balign 4 -_02023D88: .word MI_CpuCopy8 - - thumb_func_start FUN_02023D8C -FUN_02023D8C: ; 0x02023D8C - push {r3-r5, lr} - add r5, r0, #0x0 - ldr r0, _02023DE8 ; =0x000001A6 - add r4, r1, #0x0 - cmp r4, r0 - beq _02023DA2 - add r0, r0, #0x1 - cmp r4, r0 - beq _02023DA2 - bl ErrorHandling -_02023DA2: - lsl r1, r4, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - bl FUN_020245F0 - cmp r0, #0x0 - bne _02023DB4 - mov r0, #0x0 - pop {r3-r5, pc} -_02023DB4: - ldr r0, _02023DE8 ; =0x000001A6 - cmp r4, r0 - bne _02023DBE - sub r0, #0x9e - b _02023DC0 -_02023DBE: - sub r0, #0x9d -_02023DC0: - add r0, r5, r0 - ldrb r1, [r0, #0x0] - mov r2, #0x1 - add r0, r1, #0x0 - tst r0, r2 - bne _02023DCE - mov r2, #0x0 -_02023DCE: - mov r0, #0x2 - tst r0, r1 - beq _02023DD8 - mov r0, #0x1 - b _02023DDA -_02023DD8: - mov r0, #0x0 -_02023DDA: - cmp r2, r0 - bne _02023DE2 - mov r0, #0x1 - pop {r3-r5, pc} -_02023DE2: - mov r0, #0x2 - pop {r3-r5, pc} - nop -_02023DE8: .word 0x000001A6 - - thumb_func_start FUN_02023DEC -FUN_02023DEC: ; 0x02023DEC - push {r3-r7, lr} - add r7, r0, #0x0 - ldr r0, _02023E6C ; =0x000001A6 - add r6, r1, #0x0 - add r5, r2, #0x0 - cmp r6, r0 - beq _02023E04 - add r0, r0, #0x1 - cmp r6, r0 - beq _02023E04 - bl ErrorHandling -_02023E04: - lsl r1, r6, #0x10 - add r0, r7, #0x0 - lsr r1, r1, #0x10 - bl FUN_020245F0 - cmp r0, #0x0 - bne _02023E16 - mov r0, #0x0 - pop {r3-r7, pc} -_02023E16: - ldr r0, _02023E6C ; =0x000001A6 - cmp r6, r0 - bne _02023E20 - sub r0, #0x9e - b _02023E22 -_02023E20: - sub r0, #0x9d -_02023E22: - add r4, r7, r0 - add r0, r7, #0x0 - add r1, r6, #0x0 - bl FUN_02023D8C - mov r6, #0x0 - cmp r0, #0x0 - bls _02023E66 - mov r1, #0x1 -_02023E34: - add r2, r6, #0x1 - lsl r2, r2, #0x10 - lsr r2, r2, #0x10 - sub r2, r2, #0x1 - lsl r2, r2, #0x10 - lsr r3, r2, #0x10 - add r7, r3, #0x0 - mov r2, #0x7 - asr r3, r3, #0x3 - and r7, r2 - add r2, r1, #0x0 - ldrb r3, [r4, r3] - lsl r2, r7 - tst r2, r3 - beq _02023E56 - add r2, r1, #0x0 - b _02023E58 -_02023E56: - mov r2, #0x0 -_02023E58: - cmp r2, r5 - bne _02023E60 - mov r0, #0x1 - pop {r3-r7, pc} -_02023E60: - add r6, r6, #0x1 - cmp r6, r0 - blo _02023E34 -_02023E66: - mov r0, #0x0 - pop {r3-r7, pc} - nop -_02023E6C: .word 0x000001A6 - - thumb_func_start FUN_02023E70 -FUN_02023E70: ; 0x02023E70 - push {r3-r7, lr} - add r6, r0, #0x0 - ldr r0, _02023F28 ; =0x000001A6 - add r5, r1, #0x0 - add r7, r2, #0x0 - cmp r5, r0 - beq _02023E88 - add r0, r0, #0x1 - cmp r5, r0 - beq _02023E88 - bl ErrorHandling -_02023E88: - lsl r2, r7, #0x18 - add r0, r6, #0x0 - add r1, r5, #0x0 - lsr r2, r2, #0x18 - bl FUN_02023DEC - cmp r0, #0x0 - bne _02023F26 - ldr r0, _02023F28 ; =0x000001A6 - cmp r5, r0 - bne _02023EA2 - sub r0, #0x9e - b _02023EA4 -_02023EA2: - sub r0, #0x9d -_02023EA4: - add r4, r6, r0 - add r0, r6, #0x0 - add r1, r5, #0x0 - bl FUN_02023D8C - add r5, r0, #0x0 - cmp r5, #0x2 - bge _02023F26 - add r0, r5, #0x1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x2 - blo _02023EC6 - bl ErrorHandling -_02023EC6: - sub r0, r6, #0x1 - lsl r0, r0, #0x10 - lsr r1, r0, #0x10 - add r2, r1, #0x0 - mov r0, #0x7 - and r2, r0 - asr r1, r1, #0x3 - mov r3, #0x1 - lsl r3, r2 - ldrb r0, [r4, r1] - mvn r3, r3 - and r0, r3 - strb r0, [r4, r1] - lsl r0, r7, #0x18 - lsr r6, r0, #0x18 - add r0, r6, #0x0 - ldrb r3, [r4, r1] - lsl r0, r2 - orr r0, r3 - strb r0, [r4, r1] - cmp r5, #0x0 - bne _02023F26 - add r0, r5, #0x2 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - cmp r6, #0x2 - blo _02023F00 - bl ErrorHandling -_02023F00: - sub r0, r5, #0x1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - mov r0, #0x7 - add r1, r2, #0x0 - and r1, r0 - asr r0, r2, #0x3 - mov r2, #0x1 - lsl r2, r1 - ldrb r3, [r4, r0] - mvn r2, r2 - and r2, r3 - strb r2, [r4, r0] - add r2, r6, #0x0 - ldrb r3, [r4, r0] - lsl r2, r1 - add r1, r3, #0x0 - orr r1, r2 - strb r1, [r4, r0] -_02023F26: - pop {r3-r7, pc} - .balign 4 -_02023F28: .word 0x000001A6 - - thumb_func_start FUN_02023F2C -FUN_02023F2C: ; 0x02023F2C - push {r3-r5, lr} - add r5, r0, #0x0 - mov r0, #0x67 - add r4, r1, #0x0 - lsl r0, r0, #0x2 - cmp r4, r0 - beq _02023F44 - add r0, r0, #0x1 - cmp r4, r0 - beq _02023F44 - bl ErrorHandling -_02023F44: - lsl r1, r4, #0x10 - add r0, r5, #0x0 - lsr r1, r1, #0x10 - bl FUN_020245F0 - cmp r0, #0x0 - bne _02023F56 - mov r0, #0x0 - pop {r3-r5, pc} -_02023F56: - mov r0, #0x67 - lsl r0, r0, #0x2 - cmp r4, r0 - bne _02023F62 - sub r0, #0x92 - b _02023F64 -_02023F62: - sub r0, #0x91 -_02023F64: - add r1, r5, r0 - mov r0, #0x0 - mov r3, #0x3 -_02023F6A: - lsl r2, r0, #0x10 - lsr r5, r2, #0x10 - asr r2, r5, #0x2 - ldrb r4, [r1, r2] - lsl r2, r5, #0x1e - lsr r2, r2, #0x1d - asr r4, r2 - add r2, r4, #0x0 - and r2, r3 - cmp r2, #0x3 - beq _02023F86 - add r0, r0, #0x1 - cmp r0, #0x3 - blt _02023F6A -_02023F86: - pop {r3-r5, pc} - - thumb_func_start FUN_02023F88 -FUN_02023F88: ; 0x02023F88 - push {r4-r6, lr} - add r6, r0, #0x0 - mov r0, #0x67 - add r5, r1, #0x0 - lsl r0, r0, #0x2 - add r4, r2, #0x0 - cmp r5, r0 - beq _02023FA2 - add r0, r0, #0x1 - cmp r5, r0 - beq _02023FA2 - bl ErrorHandling -_02023FA2: - lsl r1, r5, #0x10 - add r0, r6, #0x0 - lsr r1, r1, #0x10 - bl FUN_020245F0 - cmp r0, #0x0 - bne _02023FB4 - mov r0, #0x0 - pop {r4-r6, pc} -_02023FB4: - mov r0, #0x67 - lsl r0, r0, #0x2 - cmp r5, r0 - bne _02023FC0 - sub r0, #0x92 - b _02023FC2 -_02023FC0: - sub r0, #0x91 -_02023FC2: - add r1, r6, r0 - mov r0, #0x0 - mov r3, #0x3 -_02023FC8: - lsl r2, r0, #0x10 - lsr r6, r2, #0x10 - asr r2, r6, #0x2 - ldrb r5, [r1, r2] - lsl r2, r6, #0x1e - lsr r2, r2, #0x1d - asr r5, r2 - add r2, r5, #0x0 - and r2, r3 - cmp r2, r4 - bne _02023FE2 - mov r0, #0x1 - pop {r4-r6, pc} -_02023FE2: - add r0, r0, #0x1 - cmp r0, #0x3 - blt _02023FC8 - mov r0, #0x0 - pop {r4-r6, pc} - - thumb_func_start FUN_02023FEC -FUN_02023FEC: ; 0x02023FEC - push {r3-r7, lr} - add r6, r0, #0x0 - mov r0, #0x67 - add r5, r1, #0x0 - lsl r0, r0, #0x2 - add r7, r2, #0x0 - cmp r5, r0 - beq _02024006 - add r0, r0, #0x1 - cmp r5, r0 - beq _02024006 - bl ErrorHandling -_02024006: - lsl r2, r7, #0x18 - add r0, r6, #0x0 - add r1, r5, #0x0 - lsr r2, r2, #0x18 - bl FUN_02023F88 - cmp r0, #0x0 - bne _02024064 - mov r0, #0x67 - lsl r0, r0, #0x2 - cmp r5, r0 - bne _02024022 - sub r0, #0x92 - b _02024024 -_02024022: - sub r0, #0x91 -_02024024: - add r4, r6, r0 - add r0, r6, #0x0 - add r1, r5, #0x0 - bl FUN_02023F2C - add r5, r0, #0x0 - cmp r5, #0x3 - bge _02024064 - lsl r0, r7, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x4 - blo _02024040 - bl ErrorHandling -_02024040: - lsl r0, r5, #0x10 - lsr r2, r0, #0x10 - lsl r0, r2, #0x1e - lsr r1, r0, #0x1d - asr r0, r2, #0x2 - mov r2, #0x3 - lsl r2, r1 - ldrb r3, [r4, r0] - mvn r2, r2 - and r2, r3 - strb r2, [r4, r0] - lsl r2, r7, #0x18 - lsr r2, r2, #0x18 - ldrb r3, [r4, r0] - lsl r2, r1 - add r1, r3, #0x0 - orr r1, r2 - strb r1, [r4, r0] -_02024064: - pop {r3-r7, pc} - .balign 4 - - thumb_func_start FUN_02024068 -FUN_02024068: ; 0x02024068 - push {r4-r6, lr} - add r6, r2, #0x0 - add r5, r0, #0x0 - add r4, r1, #0x0 - cmp r6, #0x4 - blo _02024078 - bl ErrorHandling -_02024078: - cmp r4, #0xf - bls _02024080 - bl ErrorHandling -_02024080: - cmp r6, #0x2 - bhs _0202409E - lsl r0, r6, #0x2 - add r0, #0x18 - mov r1, #0xf - lsl r1, r0 - ldr r2, [r5, #0x40] - mvn r1, r1 - and r2, r1 - add r1, r4, #0x0 - lsl r1, r0 - add r0, r2, #0x0 - orr r0, r1 - str r0, [r5, #0x40] - pop {r4-r6, pc} -_0202409E: - sub r0, r6, #0x2 - lsl r0, r0, #0x18 - add r1, r5, #0x0 - lsr r0, r0, #0x16 - add r1, #0x80 - ldr r2, [r1, #0x0] - add r0, #0x18 - mov r1, #0xf - lsl r1, r0 - mvn r1, r1 - and r2, r1 - add r1, r5, #0x0 - add r1, #0x80 - str r2, [r1, #0x0] - add r1, r5, #0x0 - add r1, #0x80 - ldr r2, [r1, #0x0] - add r1, r4, #0x0 - lsl r1, r0 - add r0, r2, #0x0 - orr r0, r1 - add r5, #0x80 - str r0, [r5, #0x0] - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_020240D0 -FUN_020240D0: ; 0x020240D0 - push {r3-r6} - mov r3, #0xf - mov r1, #0x0 - add r4, r3, #0x0 -_020240D8: - lsl r2, r1, #0x18 - lsr r6, r2, #0x18 - cmp r6, #0x2 - bhs _020240EE - lsl r2, r6, #0x2 - ldr r5, [r0, #0x40] - add r2, #0x18 - lsr r5, r2 - add r2, r5, #0x0 - and r2, r4 - b _02024102 -_020240EE: - add r2, r0, #0x0 - add r2, #0x80 - ldr r5, [r2, #0x0] - sub r2, r6, #0x2 - lsl r2, r2, #0x18 - lsr r2, r2, #0x16 - add r2, #0x18 - lsr r5, r2 - add r2, r5, #0x0 - and r2, r3 -_02024102: - cmp r2, #0xf - beq _0202410C - add r1, r1, #0x1 - cmp r1, #0x4 - blt _020240D8 -_0202410C: - add r0, r1, #0x0 - pop {r3-r6} - bx lr - .balign 4 - - thumb_func_start FUN_02024114 -FUN_02024114: ; 0x02024114 - push {r4-r7} - mov r2, #0xf - mov r6, #0x0 - add r3, r2, #0x0 -_0202411C: - lsl r4, r6, #0x18 - lsr r5, r4, #0x18 - cmp r5, #0x2 - bhs _02024134 - ldr r7, [r0, #0x40] - lsl r4, r5, #0x2 - add r4, #0x18 - add r5, r7, #0x0 - lsr r5, r4 - add r4, r5, #0x0 - and r4, r3 - b _02024146 -_02024134: - add r4, r0, #0x0 - sub r5, r5, #0x2 - add r4, #0x80 - lsl r5, r5, #0x18 - lsr r5, r5, #0x16 - ldr r4, [r4, #0x0] - add r5, #0x18 - lsr r4, r5 - and r4, r2 -_02024146: - cmp r1, r4 - bne _02024150 - mov r0, #0x1 - pop {r4-r7} - bx lr -_02024150: - add r6, r6, #0x1 - cmp r6, #0x4 - blt _0202411C - mov r0, #0x0 - pop {r4-r7} - bx lr - - thumb_func_start FUN_0202415C -FUN_0202415C: ; 0x0202415C - push {r4-r6, lr} - add r5, r0, #0x0 - add r6, r1, #0x0 - add r0, r2, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x18 - lsr r4, r0, #0x18 - ldr r0, _02024198 ; =0x00000182 - cmp r6, r0 - bne _02024196 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02024114 - cmp r0, #0x0 - bne _02024196 - add r0, r5, #0x0 - bl FUN_020240D0 - add r2, r0, #0x0 - lsl r2, r2, #0x18 - add r0, r5, #0x0 - add r1, r4, #0x0 - lsr r2, r2, #0x18 - bl FUN_02024068 -_02024196: - pop {r4-r6, pc} - .balign 4 -_02024198: .word 0x00000182 - - thumb_func_start FUN_0202419C -FUN_0202419C: ; 0x0202419C - push {r4-r6, lr} - add r5, r0, #0x0 - mov r4, #0x0 - mov r6, #0xf -_020241A4: - lsl r2, r4, #0x18 - add r0, r5, #0x0 - add r1, r6, #0x0 - lsr r2, r2, #0x18 - bl FUN_02024068 - add r4, r4, #0x1 - cmp r4, #0x4 - blt _020241A4 - pop {r4-r6, pc} - - thumb_func_start FUN_020241B8 -FUN_020241B8: ; 0x020241B8 - push {r4-r6, lr} - add r4, r1, #0x0 - add r5, r0, #0x0 - cmp r4, #0xc9 - bne _02024210 - add r0, r2, #0x0 - bl GetMonUnownLetter - lsl r1, r0, #0x18 - lsr r3, r1, #0x18 - mov r1, #0x43 - mov r4, #0x0 - add r6, r5, #0x0 - lsl r1, r1, #0x2 -_020241D4: - ldrb r2, [r6, r1] - cmp r3, r2 - bne _020241DE - mov r1, #0x1 - b _020241E8 -_020241DE: - add r4, r4, #0x1 - add r6, r6, #0x1 - cmp r4, #0x1c - blt _020241D4 - mov r1, #0x0 -_020241E8: - cmp r1, #0x0 - bne _02024290 - mov r1, #0x43 - mov r3, #0x0 - add r4, r5, #0x0 - lsl r1, r1, #0x2 -_020241F4: - ldrb r2, [r4, r1] - cmp r2, #0xff - beq _02024202 - add r3, r3, #0x1 - add r4, r4, #0x1 - cmp r3, #0x1c - blt _020241F4 -_02024202: - cmp r3, #0x1c - bge _02024290 - mov r1, #0x43 - add r2, r5, r3 - lsl r1, r1, #0x2 - strb r0, [r2, r1] - pop {r4-r6, pc} -_02024210: - mov r6, #0x67 - lsl r6, r6, #0x2 - cmp r4, r6 - bne _0202422E - add r0, r2, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonData - add r2, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02023FEC - pop {r4-r6, pc} -_0202422E: - add r3, r6, #0x1 - cmp r4, r3 - bne _0202424A - add r0, r2, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonData - add r2, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02023FEC - pop {r4-r6, pc} -_0202424A: - add r3, r6, #0x0 - add r3, #0xa - cmp r4, r3 - bne _02024268 - add r0, r2, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonData - add r2, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02023E70 - pop {r4-r6, pc} -_02024268: - add r3, r6, #0x0 - add r3, #0xb - cmp r4, r3 - bne _02024286 - add r0, r2, #0x0 - mov r1, #0x70 - mov r2, #0x0 - bl GetMonData - add r2, r0, #0x0 - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02023E70 - pop {r4-r6, pc} -_02024286: - sub r6, #0x1a - cmp r4, r6 - bne _02024290 - bl FUN_0202415C -_02024290: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02024294 -FUN_02024294: ; 0x02024294 - push {r4-r6, lr} - add r5, r0, #0x0 - add r6, r2, #0x0 - add r0, r1, #0x0 - bl FUN_02087A50 - add r4, r0, #0x0 - add r0, r6, #0x0 - bl FUN_02087A1C - cmp r4, #0xe - beq _020242C0 - cmp r0, #0x6 - beq _020242C0 - ldr r1, _020242C4 ; =0x00000129 - add r3, r5, r1 - ldrb r2, [r3, r4] - mov r1, #0x1 - lsl r1, r0 - add r0, r2, #0x0 - orr r0, r1 - strb r0, [r3, r4] -_020242C0: - pop {r4-r6, pc} - nop -_020242C4: .word 0x00000129 - - thumb_func_start FUN_020242C8 -FUN_020242C8: ; 0x020242C8 - push {r4-r6, lr} - add r6, r1, #0x0 - add r5, r0, #0x0 - add r0, r6, #0x0 - mov r1, #0x12 ; BASE_GENDER_RATIO - add r4, r2, #0x0 - bl GetMonBaseStat - cmp r0, #0xff - bne _020242EA - cmp r4, #0x0 - bne _020242E4 - mov r0, #0x2 - pop {r4-r6, pc} -_020242E4: - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_020242EA: - sub r0, r6, #0x1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - mov r1, #0x1 - mov r0, #0x7 - add r3, r2, #0x0 - and r3, r0 - add r0, r1, #0x0 - lsl r0, r3 - asr r3, r2, #0x3 - add r3, r5, r3 - add r3, #0x84 - ldrb r3, [r3, #0x0] - tst r0, r3 - bne _0202430A - mov r1, #0x0 -_0202430A: - lsl r0, r1, #0x18 - lsr r1, r0, #0x18 - cmp r4, #0x1 - bne _0202433A - add r4, r2, #0x0 - asr r2, r2, #0x3 - add r2, r5, r2 - mov r0, #0x7 - add r2, #0xc4 - mov r3, #0x1 - and r4, r0 - add r0, r3, #0x0 - ldrb r2, [r2, #0x0] - lsl r0, r4 - tst r0, r2 - bne _0202432C - mov r3, #0x0 -_0202432C: - lsl r0, r3, #0x18 - lsr r0, r0, #0x18 - cmp r0, r1 - bne _0202433C - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_0202433A: - add r0, r1, #0x0 -_0202433C: - pop {r4-r6, pc} - .balign 4 - - thumb_func_start FUN_02024340 -FUN_02024340: ; 0x02024340 - push {r4-r5} - mov r3, #0x0 - ldr r5, _02024360 ; =UNK_020EE940 + 2 - mov r4, #0x1 - add r1, r3, #0x0 -_0202434A: - ldrh r2, [r5, #0x0] - cmp r0, r2 - bne _02024352 - add r4, r1, #0x0 -_02024352: - add r3, r3, #0x1 - add r5, r5, #0x2 - cmp r3, #0xb - blt _0202434A - add r0, r4, #0x0 - pop {r4-r5} - bx lr - .balign 4 -_02024360: .word UNK_020EE940 + 2 - - thumb_func_start FUN_02024364 -FUN_02024364: ; 0x02024364 - ldr r1, _02024374 ; =0x000001EA - mov r2, #0x1 - cmp r0, r1 - bne _0202436E - mov r2, #0x0 -_0202436E: - add r0, r2, #0x0 - bx lr - nop -_02024374: .word 0x000001EA - - thumb_func_start Sav2_Pokedex_init -Sav2_Pokedex_init: ; 0x02024378 - push {r4, lr} - mov r2, #0x4f - mov r1, #0x0 - lsl r2, r2, #0x2 - add r4, r0, #0x0 - bl memset - ldr r0, _020243C0 ; =0xBEEFCAFE - mov r1, #0x0 - str r0, [r4, #0x0] - ldr r0, _020243C4 ; =0x00000139 - mov r2, #0x1c - strb r1, [r4, r0] - sub r0, #0x2d - add r0, r4, r0 - mov r1, #0xff - bl memset - mov r1, #0xff - add r0, r1, #0x0 - add r0, #0x9 - strb r1, [r4, r0] - add r0, r1, #0x0 - add r0, #0xa - strb r1, [r4, r0] - add r0, r1, #0x0 - add r0, #0xb - strb r1, [r4, r0] - add r0, r1, #0x0 - add r0, #0xc - strb r1, [r4, r0] - add r0, r4, #0x0 - bl FUN_0202419C - pop {r4, pc} - nop -_020243C0: .word 0xBEEFCAFE -_020243C4: .word 0x00000139 - - thumb_func_start FUN_020243C8 -FUN_020243C8: ; 0x020243C8 - push {r3-r7, lr} - add r6, r0, #0x0 - ldr r1, [r6, #0x0] - ldr r0, _020243FC ; =0xBEEFCAFE - cmp r1, r0 - beq _020243D8 - bl ErrorHandling -_020243D8: - ldr r7, _02024400 ; =0x000001ED - mov r5, #0x0 - mov r4, #0x1 -_020243DE: - lsl r1, r4, #0x10 - add r0, r6, #0x0 - lsr r1, r1, #0x10 - bl FUN_02024594 - cmp r0, #0x1 - bne _020243EE - add r5, r5, #0x1 -_020243EE: - add r4, r4, #0x1 - cmp r4, r7 - ble _020243DE - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - pop {r3-r7, pc} - nop -_020243FC: .word 0xBEEFCAFE -_02024400: .word 0x000001ED - - thumb_func_start FUN_02024404 -FUN_02024404: ; 0x02024404 - push {r3-r7, lr} - add r6, r0, #0x0 - ldr r1, [r6, #0x0] - ldr r0, _02024438 ; =0xBEEFCAFE - cmp r1, r0 - beq _02024414 - bl ErrorHandling -_02024414: - ldr r7, _0202443C ; =0x000001ED - mov r5, #0x0 - mov r4, #0x1 -_0202441A: - lsl r1, r4, #0x10 - add r0, r6, #0x0 - lsr r1, r1, #0x10 - bl FUN_020245F0 - cmp r0, #0x1 - bne _0202442A - add r5, r5, #0x1 -_0202442A: - add r4, r4, #0x1 - cmp r4, r7 - ble _0202441A - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - pop {r3-r7, pc} - nop -_02024438: .word 0xBEEFCAFE -_0202443C: .word 0x000001ED - - thumb_func_start FUN_02024440 -FUN_02024440: ; 0x02024440 - push {r4, lr} - add r4, r0, #0x0 - bl Pokedex_GetNatDexFlag - cmp r0, #0x0 - beq _02024454 - add r0, r4, #0x0 - bl FUN_02024404 - pop {r4, pc} -_02024454: - add r0, r4, #0x0 - bl FUN_020244A4 - pop {r4, pc} - - thumb_func_start FUN_0202445C -FUN_0202445C: ; 0x0202445C - push {r3-r7, lr} - add r6, r0, #0x0 - ldr r1, [r6, #0x0] - ldr r0, _0202449C ; =0xBEEFCAFE - cmp r1, r0 - beq _0202446C - bl ErrorHandling -_0202446C: - ldr r7, _020244A0 ; =0x000001ED - mov r5, #0x0 - mov r4, #0x1 -_02024472: - lsl r1, r4, #0x10 - add r0, r6, #0x0 - lsr r1, r1, #0x10 - bl FUN_02024594 - cmp r0, #0x1 - bne _0202448E - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl FUN_02069B40 - cmp r0, #0x0 - beq _0202448E - add r5, r5, #0x1 -_0202448E: - add r4, r4, #0x1 - cmp r4, r7 - ble _02024472 - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - pop {r3-r7, pc} - nop -_0202449C: .word 0xBEEFCAFE -_020244A0: .word 0x000001ED - - thumb_func_start FUN_020244A4 -FUN_020244A4: ; 0x020244A4 - push {r3-r7, lr} - add r6, r0, #0x0 - ldr r1, [r6, #0x0] - ldr r0, _020244E4 ; =0xBEEFCAFE - cmp r1, r0 - beq _020244B4 - bl ErrorHandling -_020244B4: - ldr r7, _020244E8 ; =0x000001ED - mov r5, #0x0 - mov r4, #0x1 -_020244BA: - lsl r1, r4, #0x10 - add r0, r6, #0x0 - lsr r1, r1, #0x10 - bl FUN_020245F0 - cmp r0, #0x1 - bne _020244D6 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl FUN_02069B40 - cmp r0, #0x0 - beq _020244D6 - add r5, r5, #0x1 -_020244D6: - add r4, r4, #0x1 - cmp r4, r7 - ble _020244BA - lsl r0, r5, #0x10 - lsr r0, r0, #0x10 - pop {r3-r7, pc} - nop -_020244E4: .word 0xBEEFCAFE -_020244E8: .word 0x000001ED - - thumb_func_start FUN_020244EC -FUN_020244EC: ; 0x020244EC - push {r3, lr} - bl FUN_02024518 - ldr r1, _02024500 ; =0x000001E2 - cmp r0, r1 - blo _020244FC - mov r0, #0x1 - pop {r3, pc} -_020244FC: - mov r0, #0x0 - pop {r3, pc} - .balign 4 -_02024500: .word 0x000001E2 - - thumb_func_start FUN_02024504 -FUN_02024504: ; 0x02024504 - push {r3, lr} - bl FUN_02024550 - cmp r0, #0x96 - blo _02024512 - mov r0, #0x1 - pop {r3, pc} -_02024512: - mov r0, #0x0 - pop {r3, pc} - .balign 4 - - thumb_func_start FUN_02024518 -FUN_02024518: ; 0x02024518 - push {r3-r7, lr} - ldr r7, _0202454C ; =0x000001ED - add r6, r0, #0x0 - mov r5, #0x0 - mov r4, #0x1 -_02024522: - lsl r1, r4, #0x10 - add r0, r6, #0x0 - lsr r1, r1, #0x10 - bl FUN_02024594 - cmp r0, #0x1 - bne _02024542 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl FUN_02024340 - cmp r0, #0x1 - bne _02024542 - add r0, r5, #0x1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 -_02024542: - add r4, r4, #0x1 - cmp r4, r7 - ble _02024522 - add r0, r5, #0x0 - pop {r3-r7, pc} - .balign 4 -_0202454C: .word 0x000001ED - - thumb_func_start FUN_02024550 -FUN_02024550: ; 0x02024550 - push {r3-r7, lr} - ldr r7, _02024590 ; =0x000001ED - add r6, r0, #0x0 - mov r5, #0x0 - mov r4, #0x1 -_0202455A: - lsl r1, r4, #0x10 - add r0, r6, #0x0 - lsr r1, r1, #0x10 - bl FUN_020245F0 - cmp r0, #0x1 - bne _02024586 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl FUN_02069B40 - cmp r0, #0x0 - beq _02024586 - lsl r0, r4, #0x10 - lsr r0, r0, #0x10 - bl FUN_02024364 - cmp r0, #0x1 - bne _02024586 - add r0, r5, #0x1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 -_02024586: - add r4, r4, #0x1 - cmp r4, r7 - ble _0202455A - add r0, r5, #0x0 - pop {r3-r7, pc} - .balign 4 -_02024590: .word 0x000001ED - - thumb_func_start FUN_02024594 -FUN_02024594: ; 0x02024594 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldr r1, [r5, #0x0] - ldr r0, _020245E8 ; =0xBEEFCAFE - cmp r1, r0 - beq _020245A6 - bl ErrorHandling -_020245A6: - cmp r4, #0x0 - beq _020245B0 - ldr r0, _020245EC ; =0x000001ED - cmp r4, r0 - bls _020245B8 -_020245B0: - bl ErrorHandling - mov r0, #0x1 - b _020245BA -_020245B8: - mov r0, #0x0 -_020245BA: - cmp r0, #0x0 - beq _020245C2 - mov r0, #0x0 - pop {r3-r5, pc} -_020245C2: - sub r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - mov r0, #0x1 - mov r1, #0x7 - and r1, r2 - add r3, r0, #0x0 - lsl r3, r1 - asr r1, r2, #0x3 - add r2, r5, r1 - ldrb r1, [r2, #0x4] - tst r1, r3 - beq _020245E4 - add r2, #0x44 - ldrb r1, [r2, #0x0] - tst r1, r3 - bne _020245E6 -_020245E4: - mov r0, #0x0 -_020245E6: - pop {r3-r5, pc} - .balign 4 -_020245E8: .word 0xBEEFCAFE -_020245EC: .word 0x000001ED - - thumb_func_start FUN_020245F0 -FUN_020245F0: ; 0x020245F0 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldr r1, [r5, #0x0] - ldr r0, _02024640 ; =0xBEEFCAFE - cmp r1, r0 - beq _02024602 - bl ErrorHandling -_02024602: - cmp r4, #0x0 - beq _0202460C - ldr r0, _02024644 ; =0x000001ED - cmp r4, r0 - bls _02024614 -_0202460C: - bl ErrorHandling - mov r0, #0x1 - b _02024616 -_02024614: - mov r0, #0x0 -_02024616: - cmp r0, #0x0 - beq _0202461E - mov r0, #0x0 - pop {r3-r5, pc} -_0202461E: - sub r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r3, r0, #0x10 - mov r0, #0x1 - mov r1, #0x7 - and r1, r3 - add r2, r0, #0x0 - lsl r2, r1 - asr r1, r3, #0x3 - add r1, r5, r1 - add r1, #0x44 - ldrb r1, [r1, #0x0] - tst r1, r2 - bne _0202463C - mov r0, #0x0 -_0202463C: - pop {r3-r5, pc} - nop -_02024640: .word 0xBEEFCAFE -_02024644: .word 0x000001ED - - thumb_func_start FUN_02024648 -FUN_02024648: ; 0x02024648 - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldr r1, [r5, #0x0] - ldr r0, _02024670 ; =0xBEEFCAFE - cmp r1, r0 - beq _0202465A - bl ErrorHandling -_0202465A: - cmp r4, #0x0 - bne _02024666 - mov r0, #0x41 - lsl r0, r0, #0x2 - ldr r6, [r5, r0] - b _0202466A -_02024666: - bl ErrorHandling -_0202466A: - add r0, r6, #0x0 - pop {r4-r6, pc} - nop -_02024670: .word 0xBEEFCAFE - - thumb_func_start FUN_02024674 -FUN_02024674: ; 0x02024674 - push {r4-r6, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldr r1, [r5, #0x0] - ldr r0, _020246D4 ; =0xBEEFCAFE - add r6, r2, #0x0 - cmp r1, r0 - beq _02024688 - bl ErrorHandling -_02024688: - cmp r4, #0x0 - beq _02024692 - ldr r0, _020246D8 ; =0x000001ED - cmp r4, r0 - bls _0202469A -_02024692: - bl ErrorHandling - mov r0, #0x1 - b _0202469C -_0202469A: - mov r0, #0x0 -_0202469C: - cmp r0, #0x0 - beq _020246A6 - mov r0, #0x0 - mvn r0, r0 - pop {r4-r6, pc} -_020246A6: - sub r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - add r3, r2, #0x0 - asr r2, r2, #0x3 - add r2, r5, r2 - mov r0, #0x7 - add r2, #0x44 - mov r1, #0x1 - and r3, r0 - ldrb r2, [r2, #0x0] - lsl r1, r3 - tst r1, r2 - beq _020246CE - add r0, r5, #0x0 - add r1, r4, #0x0 - add r2, r6, #0x0 - bl FUN_020242C8 - pop {r4-r6, pc} -_020246CE: - sub r0, #0x8 - pop {r4-r6, pc} - nop -_020246D4: .word 0xBEEFCAFE -_020246D8: .word 0x000001ED - - thumb_func_start FUN_020246DC -FUN_020246DC: ; 0x020246DC - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldr r1, [r5, #0x0] - ldr r0, _02024718 ; =0xBEEFCAFE - cmp r1, r0 - beq _020246EE - bl ErrorHandling -_020246EE: - mov r0, #0x43 - mov r2, #0x0 - lsl r0, r0, #0x2 -_020246F4: - add r1, r5, r2 - ldrb r1, [r1, r0] - cmp r1, #0xff - beq _02024702 - add r2, r2, #0x1 - cmp r2, #0x1c - blt _020246F4 -_02024702: - cmp r2, r4 - bgt _0202470C - mov r0, #0x0 - mvn r0, r0 - pop {r3-r5, pc} -_0202470C: - mov r0, #0x43 - add r1, r5, r4 - lsl r0, r0, #0x2 - ldrb r0, [r1, r0] - pop {r3-r5, pc} - nop -_02024718: .word 0xBEEFCAFE - - thumb_func_start FUN_0202471C -FUN_0202471C: ; 0x0202471C - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _02024744 ; =0xBEEFCAFE - cmp r1, r0 - beq _0202472C - bl ErrorHandling -_0202472C: - mov r1, #0x43 - mov r0, #0x0 - lsl r1, r1, #0x2 -_02024732: - add r2, r4, r0 - ldrb r2, [r2, r1] - cmp r2, #0xff - beq _02024740 - add r0, r0, #0x1 - cmp r0, #0x1c - blt _02024732 -_02024740: - pop {r4, pc} - nop -_02024744: .word 0xBEEFCAFE - - thumb_func_start FUN_02024748 -FUN_02024748: ; 0x02024748 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldr r1, [r5, #0x0] - ldr r0, _0202479C ; =0xBEEFCAFE - cmp r1, r0 - beq _0202475A - bl ErrorHandling -_0202475A: - ldr r1, _020247A0 ; =0x000001A6 - add r0, r5, #0x0 - bl FUN_02023D8C - cmp r0, r4 - bgt _0202476C - mov r0, #0x0 - mvn r0, r0 - pop {r3-r5, pc} -_0202476C: - cmp r4, #0x2 - blt _02024774 - bl ErrorHandling -_02024774: - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - sub r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - mov r0, #0x1 - mov r1, #0x7 - and r1, r2 - add r3, r0, #0x0 - lsl r3, r1 - asr r1, r2, #0x3 - add r2, r5, r1 - mov r1, #0x42 - lsl r1, r1, #0x2 - ldrb r1, [r2, r1] - tst r1, r3 - bne _0202479A - mov r0, #0x0 -_0202479A: - pop {r3-r5, pc} - .balign 4 -_0202479C: .word 0xBEEFCAFE -_020247A0: .word 0x000001A6 - - thumb_func_start FUN_020247A4 -FUN_020247A4: ; 0x020247A4 - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _020247C0 ; =0xBEEFCAFE - cmp r1, r0 - beq _020247B4 - bl ErrorHandling -_020247B4: - ldr r1, _020247C4 ; =0x000001A6 - add r0, r4, #0x0 - bl FUN_02023D8C - pop {r4, pc} - nop -_020247C0: .word 0xBEEFCAFE -_020247C4: .word 0x000001A6 - - thumb_func_start FUN_020247C8 -FUN_020247C8: ; 0x020247C8 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldr r1, [r5, #0x0] - ldr r0, _0202481C ; =0xBEEFCAFE - cmp r1, r0 - beq _020247DA - bl ErrorHandling -_020247DA: - ldr r1, _02024820 ; =0x000001A7 - add r0, r5, #0x0 - bl FUN_02023D8C - cmp r0, r4 - bgt _020247EC - mov r0, #0x0 - mvn r0, r0 - pop {r3-r5, pc} -_020247EC: - cmp r4, #0x2 - blt _020247F4 - bl ErrorHandling -_020247F4: - add r0, r4, #0x1 - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - sub r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r2, r0, #0x10 - mov r0, #0x1 - mov r1, #0x7 - and r1, r2 - add r3, r0, #0x0 - lsl r3, r1 - asr r1, r2, #0x3 - add r2, r5, r1 - ldr r1, _02024824 ; =0x00000109 - ldrb r1, [r2, r1] - tst r1, r3 - bne _02024818 - mov r0, #0x0 -_02024818: - pop {r3-r5, pc} - nop -_0202481C: .word 0xBEEFCAFE -_02024820: .word 0x000001A7 -_02024824: .word 0x00000109 - - thumb_func_start FUN_02024828 -FUN_02024828: ; 0x02024828 - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _02024844 ; =0xBEEFCAFE - cmp r1, r0 - beq _02024838 - bl ErrorHandling -_02024838: - ldr r1, _02024848 ; =0x000001A7 - add r0, r4, #0x0 - bl FUN_02023D8C - pop {r4, pc} - nop -_02024844: .word 0xBEEFCAFE -_02024848: .word 0x000001A7 - - thumb_func_start FUN_0202484C -FUN_0202484C: ; 0x0202484C - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldr r1, [r5, #0x0] - ldr r0, _02024894 ; =0xBEEFCAFE - cmp r1, r0 - beq _0202485E - bl ErrorHandling -_0202485E: - mov r1, #0x67 - add r0, r5, #0x0 - lsl r1, r1, #0x2 - bl FUN_02023F2C - cmp r0, r4 - bgt _02024872 - mov r0, #0x0 - mvn r0, r0 - pop {r3-r5, pc} -_02024872: - cmp r4, #0x3 - blt _0202487A - bl ErrorHandling -_0202487A: - lsl r0, r4, #0x10 - lsr r2, r0, #0x10 - asr r0, r2, #0x2 - add r1, r5, r0 - ldr r0, _02024898 ; =0x0000010A - ldrb r1, [r1, r0] - lsl r0, r2, #0x1e - lsr r0, r0, #0x1d - asr r1, r0 - mov r0, #0x3 - and r0, r1 - pop {r3-r5, pc} - nop -_02024894: .word 0xBEEFCAFE -_02024898: .word 0x0000010A - - thumb_func_start FUN_0202489C -FUN_0202489C: ; 0x0202489C - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _020248B8 ; =0xBEEFCAFE - cmp r1, r0 - beq _020248AC - bl ErrorHandling -_020248AC: - mov r1, #0x67 - add r0, r4, #0x0 - lsl r1, r1, #0x2 - bl FUN_02023F2C - pop {r4, pc} - .balign 4 -_020248B8: .word 0xBEEFCAFE - - thumb_func_start FUN_020248BC -FUN_020248BC: ; 0x020248BC - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldr r1, [r5, #0x0] - ldr r0, _02024900 ; =0xBEEFCAFE - cmp r1, r0 - beq _020248CE - bl ErrorHandling -_020248CE: - ldr r1, _02024904 ; =0x0000019D - add r0, r5, #0x0 - bl FUN_02023F2C - cmp r0, r4 - bgt _020248E0 - mov r0, #0x0 - mvn r0, r0 - pop {r3-r5, pc} -_020248E0: - cmp r4, #0x3 - blt _020248E8 - bl ErrorHandling -_020248E8: - lsl r0, r4, #0x10 - lsr r2, r0, #0x10 - asr r0, r2, #0x2 - add r1, r5, r0 - ldr r0, _02024908 ; =0x0000010B - ldrb r1, [r1, r0] - lsl r0, r2, #0x1e - lsr r0, r0, #0x1d - asr r1, r0 - mov r0, #0x3 - and r0, r1 - pop {r3-r5, pc} - .balign 4 -_02024900: .word 0xBEEFCAFE -_02024904: .word 0x0000019D -_02024908: .word 0x0000010B - - thumb_func_start FUN_0202490C -FUN_0202490C: ; 0x0202490C - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _02024928 ; =0xBEEFCAFE - cmp r1, r0 - beq _0202491C - bl ErrorHandling -_0202491C: - ldr r1, _0202492C ; =0x0000019D - add r0, r4, #0x0 - bl FUN_02023F2C - pop {r4, pc} - nop -_02024928: .word 0xBEEFCAFE -_0202492C: .word 0x0000019D - - thumb_func_start FUN_02024930 -FUN_02024930: ; 0x02024930 - push {r3-r5, lr} - add r5, r0, #0x0 - add r4, r1, #0x0 - ldr r1, [r5, #0x0] - ldr r0, _0202496C ; =0xBEEFCAFE - cmp r1, r0 - beq _02024942 - bl ErrorHandling -_02024942: - lsl r0, r4, #0x18 - lsr r0, r0, #0x18 - cmp r0, #0x2 - bhs _02024958 - lsl r0, r0, #0x2 - ldr r1, [r5, #0x40] - add r0, #0x18 - lsr r1, r0 - mov r0, #0xf - and r0, r1 - pop {r3-r5, pc} -_02024958: - add r5, #0x80 - sub r0, r0, #0x2 - lsl r0, r0, #0x18 - ldr r1, [r5, #0x0] - lsr r0, r0, #0x16 - add r0, #0x18 - lsr r1, r0 - mov r0, #0xf - and r0, r1 - pop {r3-r5, pc} - .balign 4 -_0202496C: .word 0xBEEFCAFE - - thumb_func_start FUN_02024970 -FUN_02024970: ; 0x02024970 - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _02024988 ; =0xBEEFCAFE - cmp r1, r0 - beq _02024980 - bl ErrorHandling -_02024980: - add r0, r4, #0x0 - bl FUN_020240D0 - pop {r4, pc} - .balign 4 -_02024988: .word 0xBEEFCAFE - - thumb_func_start FUN_0202498C -FUN_0202498C: ; 0x0202498C - push {r3-r7, lr} - sub sp, #0x8 - add r5, r0, #0x0 - str r1, [sp, #0x0] - add r0, r1, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r0, r0, #0x10 - str r0, [sp, #0x4] - mov r1, #0x0 - ldr r0, [sp, #0x0] - add r2, r1, #0x0 - bl GetMonData - add r7, r0, #0x0 - ldr r0, [sp, #0x0] - bl GetMonGender - add r6, r0, #0x0 - ldr r1, [r5, #0x0] - ldr r0, _02024AE4 ; =0xBEEFCAFE - cmp r1, r0 - beq _020249C4 - bl ErrorHandling -_020249C4: - ldr r0, [sp, #0x4] - cmp r0, #0x0 - beq _020249D0 - ldr r1, _02024AE8 ; =0x000001ED - cmp r0, r1 - bls _020249D8 -_020249D0: - bl ErrorHandling - mov r0, #0x1 - b _020249DA -_020249D8: - mov r0, #0x0 -_020249DA: - cmp r0, #0x0 - bne _02024ADE - ldr r0, [sp, #0x4] - mov r2, #0x1 - sub r0, r0, #0x1 - lsl r0, r0, #0x10 - lsr r4, r0, #0x10 - mov r0, #0x7 - and r0, r4 - add r1, r2, #0x0 - lsl r1, r0 - asr r0, r4, #0x3 - add r3, r5, r0 - add r3, #0x44 - ldrb r3, [r3, #0x0] - tst r3, r1 - bne _02024A70 - ldr r1, _02024AEC ; =0x00000147 - ldr r0, [sp, #0x4] - cmp r0, r1 - bne _02024A08 - sub r1, #0x43 - str r7, [r5, r1] -_02024A08: - lsl r0, r6, #0x18 - lsr r6, r0, #0x18 - cmp r6, #0x2 - bls _02024A14 - bl ErrorHandling -_02024A14: - cmp r6, #0x2 - bne _02024A1A - mov r6, #0x0 -_02024A1A: - cmp r6, #0x2 - blo _02024A22 - bl ErrorHandling -_02024A22: - add r2, r5, #0x0 - mov r0, #0x7 - add r3, r4, #0x0 - and r3, r0 - mov r0, #0x1 - lsl r0, r3 - add r2, #0xc4 - asr r1, r4, #0x3 - ldrb r7, [r2, r1] - mvn r0, r0 - and r0, r7 - strb r0, [r2, r1] - add r0, r6, #0x0 - ldrb r7, [r2, r1] - lsl r0, r3 - orr r0, r7 - strb r0, [r2, r1] - cmp r6, #0x2 - blo _02024A4C - bl ErrorHandling -_02024A4C: - add r1, r5, #0x0 - mov r0, #0x7 - add r2, r4, #0x0 - and r2, r0 - mov r3, #0x1 - lsl r3, r2 - add r1, #0x84 - asr r0, r4, #0x3 - ldrb r7, [r1, r0] - mvn r3, r3 - lsl r6, r2 - and r3, r7 - strb r3, [r1, r0] - ldrb r3, [r1, r0] - add r2, r3, #0x0 - orr r2, r6 - strb r2, [r1, r0] - b _02024AC0 -_02024A70: - add r0, r5, r0 - add r0, #0x84 - ldrb r0, [r0, #0x0] - tst r0, r1 - bne _02024A7C - mov r2, #0x0 -_02024A7C: - lsl r0, r2, #0x18 - lsr r0, r0, #0x18 - cmp r0, r6 - beq _02024AC0 - lsl r0, r6, #0x18 - lsr r6, r0, #0x18 - cmp r6, #0x2 - bls _02024A90 - bl ErrorHandling -_02024A90: - cmp r6, #0x2 - bne _02024A96 - mov r6, #0x0 -_02024A96: - cmp r6, #0x2 - blo _02024A9E - bl ErrorHandling -_02024A9E: - add r1, r5, #0x0 - mov r0, #0x7 - add r2, r4, #0x0 - and r2, r0 - mov r3, #0x1 - lsl r3, r2 - add r1, #0xc4 - asr r0, r4, #0x3 - ldrb r7, [r1, r0] - mvn r3, r3 - lsl r6, r2 - and r3, r7 - strb r3, [r1, r0] - ldrb r3, [r1, r0] - add r2, r3, #0x0 - orr r2, r6 - strb r2, [r1, r0] -_02024AC0: - ldr r1, [sp, #0x4] - ldr r2, [sp, #0x0] - add r0, r5, #0x0 - bl FUN_020241B8 - mov r1, #0x7 - add r5, #0x44 - asr r0, r4, #0x3 - ldrb r3, [r5, r0] - mov r2, #0x1 - and r1, r4 - lsl r2, r1 - add r1, r3, #0x0 - orr r1, r2 - strb r1, [r5, r0] -_02024ADE: - add sp, #0x8 - pop {r3-r7, pc} - nop -_02024AE4: .word 0xBEEFCAFE -_02024AE8: .word 0x000001ED -_02024AEC: .word 0x00000147 - - thumb_func_start FUN_02024AF0 -FUN_02024AF0: ; 0x02024AF0 - push {r4-r7, lr} - sub sp, #0x14 - add r4, r0, #0x0 - str r1, [sp, #0x0] - add r0, r1, #0x0 - mov r1, #0x5 - mov r2, #0x0 - bl GetMonData - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - ldr r0, [sp, #0x0] - mov r1, #0xc - mov r2, #0x0 - bl GetMonData - str r0, [sp, #0x8] - mov r1, #0x0 - ldr r0, [sp, #0x0] - add r2, r1, #0x0 - bl GetMonData - str r0, [sp, #0x4] - ldr r0, [sp, #0x0] - bl GetMonGender - add r7, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _02024C78 ; =0xBEEFCAFE - cmp r1, r0 - beq _02024B32 - bl ErrorHandling -_02024B32: - cmp r6, #0x0 - beq _02024B3C - ldr r0, _02024C7C ; =0x000001ED - cmp r6, r0 - bls _02024B44 -_02024B3C: - bl ErrorHandling - mov r0, #0x1 - b _02024B46 -_02024B44: - mov r0, #0x0 -_02024B46: - cmp r0, #0x0 - beq _02024B4C - b _02024C72 -_02024B4C: - sub r0, r6, #0x1 - lsl r0, r0, #0x10 - lsr r5, r0, #0x10 - mov r0, #0x1 - mov r1, #0x7 - and r1, r5 - add r2, r0, #0x0 - asr r3, r5, #0x3 - lsl r2, r1 - add r1, r4, r3 - add r1, #0x44 - ldrb r1, [r1, #0x0] - tst r1, r2 - bne _02024BEA - ldr r1, _02024C80 ; =0x00000147 - cmp r6, r1 - bne _02024B74 - ldr r0, [sp, #0x4] - sub r1, #0x43 - str r0, [r4, r1] -_02024B74: - lsl r0, r7, #0x18 - lsr r7, r0, #0x18 - cmp r7, #0x2 - bls _02024B80 - bl ErrorHandling -_02024B80: - cmp r7, #0x2 - bne _02024B86 - mov r7, #0x0 -_02024B86: - cmp r7, #0x2 - blo _02024B8E - bl ErrorHandling -_02024B8E: - mov r0, #0x7 - and r0, r5 - str r0, [sp, #0x10] - add r0, r4, #0x0 - add r0, #0xc4 - asr r3, r5, #0x3 - ldrb r1, [r0, r3] - mov r2, #0x1 - str r1, [sp, #0xc] - ldr r1, [sp, #0x10] - lsl r2, r1 - ldr r1, [sp, #0xc] - mvn r2, r2 - and r1, r2 - strb r1, [r0, r3] - ldrb r1, [r0, r3] - add r2, r7, #0x0 - mov r12, r1 - ldr r1, [sp, #0x10] - lsl r2, r1 - mov r1, r12 - orr r1, r2 - strb r1, [r0, r3] - cmp r7, #0x2 - blo _02024BC4 - bl ErrorHandling -_02024BC4: - add r1, r4, #0x0 - mov r0, #0x7 - add r2, r5, #0x0 - and r2, r0 - mov r3, #0x1 - lsl r3, r2 - add r1, #0x84 - asr r0, r5, #0x3 - ldrb r5, [r1, r0] - mvn r3, r3 - and r3, r5 - strb r3, [r1, r0] - add r5, r7, #0x0 - ldrb r3, [r1, r0] - lsl r5, r2 - add r2, r3, #0x0 - orr r2, r5 - strb r2, [r1, r0] - b _02024C3C -_02024BEA: - add r1, r4, r3 - add r1, #0x84 - ldrb r1, [r1, #0x0] - tst r1, r2 - bne _02024BF6 - mov r0, #0x0 -_02024BF6: - lsl r0, r0, #0x18 - lsr r0, r0, #0x18 - cmp r0, r7 - beq _02024C3C - lsl r0, r7, #0x18 - lsr r7, r0, #0x18 - cmp r7, #0x2 - bls _02024C0A - bl ErrorHandling -_02024C0A: - cmp r7, #0x2 - bne _02024C10 - mov r7, #0x0 -_02024C10: - cmp r7, #0x2 - blo _02024C18 - bl ErrorHandling -_02024C18: - add r1, r4, #0x0 - mov r0, #0x7 - add r2, r5, #0x0 - and r2, r0 - mov r3, #0x1 - lsl r3, r2 - add r1, #0xc4 - asr r0, r5, #0x3 - ldrb r5, [r1, r0] - mvn r3, r3 - and r3, r5 - strb r3, [r1, r0] - add r5, r7, #0x0 - ldrb r3, [r1, r0] - lsl r5, r2 - add r2, r3, #0x0 - orr r2, r5 - strb r2, [r1, r0] -_02024C3C: - ldr r2, [sp, #0x0] - add r0, r4, #0x0 - add r1, r6, #0x0 - bl FUN_020241B8 - ldr r2, [sp, #0x8] - add r0, r4, #0x0 - add r1, r6, #0x0 - bl FUN_02024294 - sub r0, r6, #0x1 - lsl r0, r0, #0x10 - lsr r6, r0, #0x10 - add r1, r4, #0x4 - asr r0, r6, #0x3 - mov r2, #0x7 - ldrb r5, [r1, r0] - mov r3, #0x1 - and r2, r6 - lsl r3, r2 - add r2, r5, #0x0 - orr r2, r3 - add r4, #0x44 - strb r2, [r1, r0] - ldrb r1, [r4, r0] - orr r1, r3 - strb r1, [r4, r0] -_02024C72: - add sp, #0x14 - pop {r4-r7, pc} - nop -_02024C78: .word 0xBEEFCAFE -_02024C7C: .word 0x000001ED -_02024C80: .word 0x00000147 - - thumb_func_start Pokedex_SetNatDexFlag -Pokedex_SetNatDexFlag: ; 0x02024C84 - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _02024C9C ; =0xBEEFCAFE - cmp r1, r0 - beq _02024C94 - bl ErrorHandling -_02024C94: - ldr r0, _02024CA0 ; =0x00000139 - mov r1, #0x1 - strb r1, [r4, r0] - pop {r4, pc} - .balign 4 -_02024C9C: .word 0xBEEFCAFE -_02024CA0: .word 0x00000139 - - thumb_func_start Pokedex_GetNatDexFlag -Pokedex_GetNatDexFlag: ; 0x02024CA4 - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _02024CBC ; =0xBEEFCAFE - cmp r1, r0 - beq _02024CB4 - bl ErrorHandling -_02024CB4: - ldr r0, _02024CC0 ; =0x00000139 - ldrb r0, [r4, r0] - pop {r4, pc} - nop -_02024CBC: .word 0xBEEFCAFE -_02024CC0: .word 0x00000139 - - thumb_func_start FUN_02024CC4 -FUN_02024CC4: ; 0x02024CC4 - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _02024CDC ; =0xBEEFCAFE - cmp r1, r0 - beq _02024CD4 - bl ErrorHandling -_02024CD4: - mov r0, #0x4a - lsl r0, r0, #0x2 - ldrb r0, [r4, r0] - pop {r4, pc} - .balign 4 -_02024CDC: .word 0xBEEFCAFE - - thumb_func_start FUN_02024CE0 -FUN_02024CE0: ; 0x02024CE0 - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _02024CFC ; =0xBEEFCAFE - cmp r1, r0 - beq _02024CF0 - bl ErrorHandling -_02024CF0: - mov r0, #0x4a - mov r1, #0x1 - lsl r0, r0, #0x2 - strb r1, [r4, r0] - pop {r4, pc} - nop -_02024CFC: .word 0xBEEFCAFE - - thumb_func_start FUN_02024D00 -FUN_02024D00: ; 0x02024D00 - push {r4-r6, lr} - add r6, r2, #0x0 - add r4, r0, #0x0 - add r5, r1, #0x0 - cmp r6, #0x8 - blo _02024D10 - bl ErrorHandling -_02024D10: - ldr r1, [r4, #0x0] - ldr r0, _02024D44 ; =0xBEEFCAFE - cmp r1, r0 - beq _02024D1C - bl ErrorHandling -_02024D1C: - add r0, r5, #0x0 - bl FUN_02087A50 - add r5, r0, #0x0 - cmp r5, #0xe - bne _02024D2C - mov r0, #0x0 - pop {r4-r6, pc} -_02024D2C: - add r0, r6, #0x0 - bl FUN_02087A1C - mov r1, #0x1 - add r2, r1, #0x0 - lsl r2, r0 - ldr r0, _02024D48 ; =0x00000129 - add r1, r4, r5 - ldrb r0, [r1, r0] - and r0, r2 - pop {r4-r6, pc} - nop -_02024D44: .word 0xBEEFCAFE -_02024D48: .word 0x00000129 - - thumb_func_start FUN_02024D4C -FUN_02024D4C: ; 0x02024D4C - ldr r1, _02024D54 ; =0x00000137 - mov r2, #0x1 - strb r2, [r0, r1] - bx lr - .balign 4 -_02024D54: .word 0x00000137 - - thumb_func_start FUN_02024D58 -FUN_02024D58: ; 0x02024D58 - ldr r1, _02024D60 ; =0x00000137 - ldrb r0, [r0, r1] - bx lr - nop -_02024D60: .word 0x00000137 - - thumb_func_start FUN_02024D64 -FUN_02024D64: ; 0x02024D64 - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _02024D7C ; =0xBEEFCAFE - cmp r1, r0 - beq _02024D74 - bl ErrorHandling -_02024D74: - mov r0, #0x4e - lsl r0, r0, #0x2 - ldrb r0, [r4, r0] - pop {r4, pc} - .balign 4 -_02024D7C: .word 0xBEEFCAFE - - thumb_func_start FUN_02024D80 -FUN_02024D80: ; 0x02024D80 - push {r4, lr} - add r4, r0, #0x0 - ldr r1, [r4, #0x0] - ldr r0, _02024D9C ; =0xBEEFCAFE - cmp r1, r0 - beq _02024D90 - bl ErrorHandling -_02024D90: - mov r0, #0x4e - mov r1, #0x1 - lsl r0, r0, #0x2 - strb r1, [r4, r0] - pop {r4, pc} - nop -_02024D9C: .word 0xBEEFCAFE - - thumb_func_start FUN_02024DA0 -FUN_02024DA0: ; 0x02024DA0 - ldr r3, _02024DA8 ; =SavArray_get - mov r1, #0x7 - bx r3 - nop -_02024DA8: .word SavArray_get - - thumb_func_start FUN_02024DAC -FUN_02024DAC: ; 0x02024DAC - push {r3-r5, lr} - add r4, r2, #0x0 - ldr r2, _02024E60 ; =0x0000019D - add r5, r0, #0x0 - cmp r1, r2 - bgt _02024DD6 - sub r3, r2, #0x1 - cmp r1, r3 - blt _02024DC6 - beq _02024E24 - cmp r1, r2 - beq _02024E36 - b _02024E5A -_02024DC6: - cmp r1, #0xc9 - bgt _02024DCE - beq _02024DEE - b _02024E5A -_02024DCE: - sub r2, #0x1b - cmp r1, r2 - beq _02024E48 - b _02024E5A -_02024DD6: - add r3, r2, #0x0 - add r3, #0x9 - cmp r1, r3 - bgt _02024DE6 - add r2, #0x9 - cmp r1, r2 - beq _02024E00 - b _02024E5A -_02024DE6: - add r2, #0xa - cmp r1, r2 - beq _02024E12 - b _02024E5A -_02024DEE: - bl FUN_0202471C - cmp r4, r0 - bhs _02024E5A - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_020246DC - pop {r3-r5, pc} -_02024E00: - bl FUN_020247A4 - cmp r4, r0 - bhs _02024E5A - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02024748 - pop {r3-r5, pc} -_02024E12: - bl FUN_02024828 - cmp r4, r0 - bhs _02024E5A - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_020247C8 - pop {r3-r5, pc} -_02024E24: - bl FUN_0202489C - cmp r4, r0 - bhs _02024E5A - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_0202484C - pop {r3-r5, pc} -_02024E36: - bl FUN_0202490C - cmp r4, r0 - bhs _02024E5A - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_020248BC - pop {r3-r5, pc} -_02024E48: - bl FUN_02024970 - cmp r4, r0 - bhs _02024E5A - add r0, r5, #0x0 - add r1, r4, #0x0 - bl FUN_02024930 - pop {r3-r5, pc} -_02024E5A: - mov r0, #0x0 - pop {r3-r5, pc} - nop -_02024E60: .word 0x0000019D diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s index 3f324f9f..482f814b 100644 --- a/arm9/asm/scrcmd.s +++ b/arm9/asm/scrcmd.s @@ -9794,7 +9794,7 @@ _0203E7B6: cmp r0, #0x1 bne _0203E7DC add r0, r4, #0x0 - bl FUN_02069B40 + bl SpeciesToSinnohDexNo cmp r0, #0x0 beq _0203E7DC cmp r5, r6 diff --git a/arm9/asm/unk_0206BB28.s b/arm9/asm/unk_0206BB28.s index c460f6c3..3ddc7960 100644 --- a/arm9/asm/unk_0206BB28.s +++ b/arm9/asm/unk_0206BB28.s @@ -30,7 +30,7 @@ FUN_0206BB48: ; 0x0206BB48 bne _0206BB58 lsl r0, r1, #0x10 lsr r0, r0, #0x10 - bl FUN_02069B40 + bl SpeciesToSinnohDexNo add r1, r0, #0x0 _0206BB58: add r0, r1, #0x0 diff --git a/arm9/global.inc b/arm9/global.inc index 65ecb0e3..754dfe33 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4799,7 +4799,7 @@ .extern FUN_020699A4 .extern FUN_02069A64 .extern FUN_02069AEC -.extern FUN_02069B40 +.extern SpeciesToSinnohDexNo .extern FUN_02069B60 .extern FUN_02069B88 .extern FUN_02069BA0 diff --git a/arm9/modules/16/asm/module_16.s b/arm9/modules/16/asm/module_16.s index 14a64b6c..1448cc55 100644 --- a/arm9/modules/16/asm/module_16.s +++ b/arm9/modules/16/asm/module_16.s @@ -1261,7 +1261,7 @@ MOD16_021D7E68: ; 0x021D7E68 lsl r0, r6, #0x10 lsr r0, r0, #0x10 add r5, r1, #0 - bl FUN_02069B40 + bl SpeciesToSinnohDexNo add r7, r0, #0 cmp r7, #0 bgt _021D7E82 diff --git a/arm9/src/pokedex.c b/arm9/src/pokedex.c new file mode 100644 index 00000000..307196bc --- /dev/null +++ b/arm9/src/pokedex.c @@ -0,0 +1,784 @@ +#include "global.h" +#include "save_block_2.h" +#include "heap.h" +#include "MI_memory.h" +#include "pokemon.h" +#include "pokedex.h" +#include "unk_02087A1C.h" +#include "constants/species.h" + +#pragma thumb on + +static inline BOOL CheckDexFlag(u8 * flagArray, u16 species) +{ + species--; + return (flagArray[species >> 3] & (1 << (species & 7))) != 0; +} + +static inline void UpdateDexFlag(u8 * flagArray, u16 species, u8 state) +{ + GF_ASSERT(state < 2); + species--; + flagArray[species >> 3] &= ~(1 << (species & 7)); + flagArray[species >> 3] |= (state << (species & 7)); +} + +static inline void SetDexFlag(u8 * flagArray, u16 species) +{ + species--; + flagArray[species >> 3] |= (1 << (species & 7)); +} + +static inline s32 CheckDexFlagPair(u8 * flagArray, u16 offset) +{ + return (flagArray[offset >> 2] >> (2 * (offset & 3))) & 3; +} + +static inline void UpdateDexFlagPair(u8 * flagArray, u16 offset, u8 state) +{ + GF_ASSERT(state < 4); + flagArray[offset >> 2] &= ~(3 << (2 * (offset & 3))); + flagArray[offset >> 2] |= (state << (2 * (offset & 3))); +} + +u32 Sav2_Pokedex_sizeof(void) +{ + return sizeof(struct Pokedex); +} + +struct Pokedex * Sav2_Pokedex_new(u32 heap_id) +{ + struct Pokedex * ret = (struct Pokedex *)AllocFromHeap(heap_id, sizeof(struct Pokedex)); + Sav2_Pokedex_init(ret); + return ret; +} + +void Sav2_Pokedex_Copy(const struct Pokedex * src, struct Pokedex * dest) +{ + MI_CpuCopy8(src, dest, sizeof(struct Pokedex)); +} + +s32 FUN_02023D8C(struct Pokedex * pokedex, u32 species) +{ + GF_ASSERT(species == SPECIES_SHELLOS || species == SPECIES_GASTRODON); + if (!FUN_020245F0(pokedex, (u16)species)) + return 0; + u8 *flags = species == SPECIES_SHELLOS ? &pokedex->field_0108[0] : &pokedex->field_0108[1]; + BOOL r2 = CheckDexFlag(flags, 1); + BOOL r0 = CheckDexFlag(flags, 2); + return (r2 == r0) ? 1 : 2; +} + +BOOL FUN_02023DEC(struct Pokedex * pokedex, u32 species, u8 state) +{ + GF_ASSERT(species == SPECIES_SHELLOS || species == SPECIES_GASTRODON); + if (!FUN_020245F0(pokedex, (u16)species)) + return FALSE; + u8 *flags = species == SPECIES_SHELLOS ? &pokedex->field_0108[0] : &pokedex->field_0108[1]; + u32 r0 = (u32)FUN_02023D8C(pokedex, species); + for (int i = 0; i < r0; i++) + { + BOOL r2 = CheckDexFlag(flags, (u16)(i + 1)); + if (r2 == state) + return TRUE; + } + return FALSE; +} + +void FUN_02023E70(struct Pokedex * pokedex, u32 species, u32 state) +{ + GF_ASSERT(species == SPECIES_SHELLOS || species == SPECIES_GASTRODON); + if (FUN_02023DEC(pokedex, species, (u8)state)) + return; + u8 *flags = species == SPECIES_SHELLOS ? &pokedex->field_0108[0] : &pokedex->field_0108[1]; + s32 r5 = FUN_02023D8C(pokedex, species); + if (r5 < 2) + { + UpdateDexFlag(flags, (u16)(r5 + 1), (u8)state); + if (r5 == 0) + { + UpdateDexFlag(flags, (u16)(r5 + 2), (u8)state); + } + } +} + +s32 FUN_02023F2C(struct Pokedex * pokedex, u32 species) +{ + GF_ASSERT(species == SPECIES_BURMY || species == SPECIES_WORMADAM); + if (!FUN_020245F0(pokedex, (u16)species)) + return 0; + u8 *flags = species == SPECIES_BURMY ? &pokedex->field_010A[0] : &pokedex->field_010A[1]; + s32 i; + for (i = 0; i < 3; i++) + { + s32 r2 = CheckDexFlagPair(flags, (u16)i); + if (r2 == 3) + break; + } + return i; +} + +BOOL FUN_02023F88(struct Pokedex * pokedex, u32 species, u8 state) +{ + GF_ASSERT(species == SPECIES_BURMY || species == SPECIES_WORMADAM); + if (!FUN_020245F0(pokedex, (u16)species)) + return FALSE; + u8 *flags = species == SPECIES_BURMY ? &pokedex->field_010A[0] : &pokedex->field_010A[1]; + s32 i; + for (i = 0; i < 3; i++) + { + s32 r2 = CheckDexFlagPair(flags, (u16)i); + if (r2 == state) + return TRUE; + } + return FALSE; +} + +void FUN_02023FEC(struct Pokedex * pokedex, u32 species, s32 state) +{ + GF_ASSERT(species == SPECIES_BURMY || species == SPECIES_WORMADAM); + if (FUN_02023F88(pokedex, species, (u8)state)) + return; + u8 *flags = species == SPECIES_BURMY ? &pokedex->field_010A[0] : &pokedex->field_010A[1]; + s32 r5 = FUN_02023F2C(pokedex, species); + if (r5 >= 3) + return; + UpdateDexFlagPair(flags, (u16)r5, (u8)state); +} + +static inline void SetDeoxysFormeFlag(struct Pokedex * pokedex, u8 r4, u8 r6) +{ + GF_ASSERT(r6 < 4); + GF_ASSERT(r4 <= 15); + if (r6 < 2) + { + pokedex->field_0040 &= ~(15 << (24 + 4 * r6)); + pokedex->field_0040 |= r4 << (24 + 4 * r6); + } + else + { + r6 -= 2; + pokedex->field_0080 &= ~(15 << (24 + 4 * r6)); + pokedex->field_0080 |= r4 << (24 + 4 * r6); + } +} + +void FUN_02024068(struct Pokedex * pokedex, u8 r4, u8 r6) +{ + SetDeoxysFormeFlag(pokedex, r4, r6); +} + +static inline u32 GetDeoxysFormeFlag(struct Pokedex * pokedex, u8 r6) +{ + if (r6 < 2) + { + return (pokedex->field_0040 >> (24 + 4 * r6)) & 15; + } + else + { + r6 -= 2; + return (pokedex->field_0080 >> (24 + 4 * r6)) & 15; + } +} + +s32 FUN_020240D0(struct Pokedex * pokedex) +{ + s32 i; + for (i = 0; i < 4; i++) + { + u32 r2 = GetDeoxysFormeFlag(pokedex, (u8)i); + if (r2 == 15) + break; + } + return i; +} + +BOOL FUN_02024114(struct Pokedex * pokedex, u32 state) +{ + s32 i; + for (i = 0; i < 4; i++) + { + u32 r4 = GetDeoxysFormeFlag(pokedex, (u8)i); + if (state == r4) + return TRUE; + } + return FALSE; +} + +void FUN_0202415C(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon) +{ + u8 forme = (u8)GetMonData(pokemon, MON_DATA_FORME, NULL); + if (species == SPECIES_DEOXYS && !FUN_02024114(pokedex, forme)) + { + s32 r2 = FUN_020240D0(pokedex); + FUN_02024068(pokedex, forme, (u8)r2); + } +} + +void FUN_0202419C(struct Pokedex * pokedex) +{ + s32 i; + for (i = 0; i < 4; i++) + { + FUN_02024068(pokedex, 15, (u8)i); + } +} + +static inline BOOL HasUnownLetterBeenSeen(struct Pokedex * pokedex, u8 letter) +{ + u8 * arr; + s32 i; + for (i = 0, arr = (u8 *)pokedex; i < 28; i++, arr++) + { + u8 val = arr[0x010C]; + if (letter == val) + return TRUE; + } + return FALSE; +} + +static inline s32 FindFirstAvailableUnownLetterSlot(struct Pokedex * pokedex) +{ + u8 * arr; + s32 i; + for (i = 0, arr = (u8 *)pokedex; i < 28; i++, arr++) + { + u8 val = arr[0x010C]; + if (val == 0xFF) + break; + } + return i; +} + +static inline void SetSeenUnownLetter(struct Pokedex * pokedex, u32 species, s32 letter) +{ +#pragma unused(species) + s32 idx; + if (HasUnownLetterBeenSeen(pokedex, (u8)letter)) + return; + idx = FindFirstAvailableUnownLetterSlot(pokedex); + if (idx >= 28) + return; + pokedex->field_010C[idx] = (u8)letter; +} + +void FUN_020241B8(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon) +{ + if (species == SPECIES_UNOWN) + { + SetSeenUnownLetter(pokedex, species, GetMonUnownLetter(pokemon)); + } + else if (species == SPECIES_BURMY) + { + FUN_02023FEC(pokedex, species, (s32)GetMonData(pokemon, MON_DATA_FORME, NULL)); + } + else if (species == SPECIES_WORMADAM) + { + FUN_02023FEC(pokedex, species, (s32)GetMonData(pokemon, MON_DATA_FORME, NULL)); + } + else if (species == SPECIES_SHELLOS) + { + FUN_02023E70(pokedex, species, GetMonData(pokemon, MON_DATA_FORME, NULL)); + } + else if (species == SPECIES_GASTRODON) + { + FUN_02023E70(pokedex, species, GetMonData(pokemon, MON_DATA_FORME, NULL)); + } + else if (species == SPECIES_DEOXYS) + { + FUN_0202415C(pokedex, species, pokemon); + } +} + +void FUN_02024294(struct Pokedex * pokedex, u32 species, u32 language) +{ + s32 r4 = FUN_02087A50(species); + s32 r0 = FUN_02087A1C(language); + if (r4 != 14 && r0 != 6) + { + pokedex->field_0129[r4] |= (1 << r0); + } +} + +s32 FUN_020242C8(struct Pokedex * pokedex, u16 species, s32 r4) +{ + u8 r0; + u8 r1; + if (GetMonBaseStat(species, BASE_GENDER_RATIO) == MON_RATIO_UNKNOWN) + { + return r4 == 0 ? 2 : -1; + } + r1 = (u8)CheckDexFlag(pokedex->field_0084, species); + if (r4 == 1) + { + r0 = (u8)CheckDexFlag(pokedex->field_00C4, species); + if (r0 == r1) + return -1; + else + return r0; + } + return r1; +} + +const u16 UNK_020EE940 = SPECIES_MANAPHY; + +const u16 UNK_020EE942[] = { + SPECIES_MEW, + SPECIES_LUGIA, + SPECIES_HO_OH, + SPECIES_CELEBI, + SPECIES_JIRACHI, + SPECIES_DEOXYS, + SPECIES_PHIONE, + SPECIES_MANAPHY, + SPECIES_DARKRAI, + SPECIES_SHAYMIN, + SPECIES_ARCEUS +}; + +BOOL FUN_02024340(u16 species) +{ + s32 i; + BOOL ret = TRUE; + for (i = 0; i < (s32)NELEMS(UNK_020EE942); i++) + { + if (species == UNK_020EE942[i]) + ret = FALSE; + } + return ret; +} + +BOOL FUN_02024364(u16 a0) +{ + BOOL ret = TRUE; + if (a0 == SPECIES_MANAPHY) + ret = FALSE; + return ret; +} + +void Sav2_Pokedex_init(struct Pokedex * pokedex) +{ + memset(pokedex, 0, sizeof(struct Pokedex)); + pokedex->magic = 0xBEEFCAFE; + pokedex->field_0139 = 0; + memset(pokedex->field_010C, 0xFF, 28); + pokedex->field_0108[0] = 0xFF; + pokedex->field_0108[1] = 0xFF; + pokedex->field_010A[0] = 0xFF; + pokedex->field_010A[1] = 0xFF; + FUN_0202419C(pokedex); +} + +u16 FUN_020243C8(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + s32 i; + s32 count = 0; + for (i = 1; i <= NATIONAL_DEX_COUNT; i++) + { + if (FUN_02024594(pokedex, (u16)i) == TRUE) + count++; + } + return (u16)count; +} + +u16 FUN_02024404(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + s32 i; + s32 count = 0; + for (i = 1; i <= NATIONAL_DEX_COUNT; i++) + { + if (FUN_020245F0(pokedex, (u16)i) == TRUE) + count++; + } + return (u16)count; +} + +u16 FUN_02024440(struct Pokedex * pokedex) +{ + if (Pokedex_GetNatDexFlag(pokedex)) + return FUN_02024404(pokedex); + else + return FUN_020244A4(pokedex); +} + +u16 FUN_0202445C(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + s32 i; + s32 count = 0; + for (i = 1; i <= NATIONAL_DEX_COUNT; i++) + { + if (FUN_02024594(pokedex, (u16)i) == TRUE && SpeciesToSinnohDexNo((u16)i) != 0) + count++; + } + return (u16)count; +} + +u16 FUN_020244A4(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + s32 i; + s32 count = 0; + for (i = 1; i <= NATIONAL_DEX_COUNT; i++) + { + if (FUN_020245F0(pokedex, (u16)i) == TRUE && SpeciesToSinnohDexNo((u16)i) != 0) + count++; + } + return (u16)count; +} + +BOOL FUN_020244EC(struct Pokedex * pokedex) +{ + return FUN_02024518(pokedex) >= 482; +} + +BOOL FUN_02024504(struct Pokedex * pokedex) +{ + return FUN_02024550(pokedex) >= 150; +} + +u16 FUN_02024518(struct Pokedex * pokedex) +{ + s32 i; + u16 count = 0; + for (i = 1; i <= NATIONAL_DEX_COUNT; i++) + { + if (FUN_02024594(pokedex, (u16)i) == TRUE && FUN_02024340((u16)i) == TRUE) + count++; + } + return count; +} + +u16 FUN_02024550(struct Pokedex * pokedex) +{ + s32 i; + u16 count = 0; + for (i = 1; i <= NATIONAL_DEX_COUNT; i++) + { + if (FUN_020245F0(pokedex, (u16)i) == TRUE && SpeciesToSinnohDexNo((u16)i) != 0 && FUN_02024364((u16)i) == TRUE) + count++; + } + return count; +} + +static inline BOOL DexSpeciesIsInvalid(u16 species) +{ + if (species == SPECIES_NONE || species > NATIONAL_DEX_COUNT) + { + GF_ASSERT(0); + return TRUE; + } + return FALSE; +} + +BOOL FUN_02024594(struct Pokedex * pokedex, u16 species) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + if (DexSpeciesIsInvalid(species)) + return FALSE; + if (!CheckDexFlag(pokedex->field_0004, species) || !CheckDexFlag(pokedex->field_0044, species)) + return FALSE; + return TRUE; +} + +BOOL FUN_020245F0(struct Pokedex * pokedex, u16 species) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + if (DexSpeciesIsInvalid(species)) + return FALSE; + return CheckDexFlag(pokedex->field_0044, species); +} + +u32 FUN_02024648(struct Pokedex * pokedex, u32 a1) +{ + u32 r6; + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + if (a1 == 0) + r6 = (u32)pokedex->field_0104; + else + GF_ASSERT(0); // r6 is not initialized because execution should halt here + return r6; +} + +s32 FUN_02024674(struct Pokedex * pokedex, u16 species, s32 r6) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + if (DexSpeciesIsInvalid(species)) + return -1; + if (CheckDexFlag(pokedex->field_0044, species)) + return FUN_020242C8(pokedex, species, r6); + else + return -1; +} + +static inline s32 FindFirstAvailableUnownLetterSlot_2(struct Pokedex * pokedex) +{ + s32 i; + for (i = 0; i < 28; i++) + { + if (pokedex->field_010C[i] == 0xFF) + break; + } + return i; +} + +s32 FUN_020246DC(struct Pokedex * pokedex, s32 a1) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + s32 i; + i = FindFirstAvailableUnownLetterSlot_2(pokedex); + if (i <= a1) + return -1; + return pokedex->field_010C[a1]; +} + +s32 FUN_0202471C(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + return FindFirstAvailableUnownLetterSlot_2(pokedex); +} + +BOOL FUN_02024748(struct Pokedex * pokedex, s32 a1) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + if (FUN_02023D8C(pokedex, SPECIES_SHELLOS) <= a1) + return -1; + GF_ASSERT(a1 < 2); + return CheckDexFlag(&pokedex->field_0108[0], (u16)(a1 + 1)); +} + +s32 FUN_020247A4(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + return FUN_02023D8C(pokedex, SPECIES_SHELLOS); +} + +BOOL FUN_020247C8(struct Pokedex * pokedex, s32 a1) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + if (FUN_02023D8C(pokedex, SPECIES_GASTRODON) <= a1) + return -1; + GF_ASSERT(a1 < 2); + return CheckDexFlag(&pokedex->field_0108[1], (u16)(a1 + 1)); +} + +s32 FUN_02024828(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + return FUN_02023D8C(pokedex, SPECIES_GASTRODON); +} + +s32 FUN_0202484C(struct Pokedex * pokedex, s32 a1) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + if (FUN_02023F2C(pokedex, SPECIES_BURMY) <= a1) + return -1; + GF_ASSERT(a1 < 3); + return CheckDexFlagPair(&pokedex->field_010A[0], (u16)a1); +} + +s32 FUN_0202489C(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + return FUN_02023F2C(pokedex, SPECIES_BURMY); +} + +s32 FUN_020248BC(struct Pokedex * pokedex, s32 a1) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + if (FUN_02023F2C(pokedex, SPECIES_WORMADAM) <= a1) + return -1; + GF_ASSERT(a1 < 3); + return CheckDexFlagPair(&pokedex->field_010A[1], (u16)a1); +} + +s32 FUN_0202490C(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + return FUN_02023F2C(pokedex, SPECIES_WORMADAM); +} + +s32 FUN_02024930(struct Pokedex * pokedex, s32 a1) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + return (s32)GetDeoxysFormeFlag(pokedex, (u8)a1); +} + +s32 FUN_02024970(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + return FUN_020240D0(pokedex); +} + +static inline void SetSeenCaughtGender(struct Pokedex * pokedex, u16 species, u8 gender) +{ + GF_ASSERT(gender <= 2); + if (gender == 2) + gender = 0; + UpdateDexFlag(pokedex->field_00C4, species, gender); + UpdateDexFlag(pokedex->field_0084, species, gender); +} + +static inline void SetSeenGender(struct Pokedex * pokedex, u16 species, u8 gender) +{ + GF_ASSERT(gender <= 2); + if (gender == 2) + gender = 0; + UpdateDexFlag(pokedex->field_00C4, species, gender); +} + +void FUN_0202498C(struct Pokedex * pokedex, struct Pokemon * pokemon) +{ + u16 species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, NULL); + u32 personality = GetMonData(pokemon, MON_DATA_PERSONALITY, NULL); + u32 gender = GetMonGender(pokemon); + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + if (DexSpeciesIsInvalid(species)) + return; + if (!CheckDexFlag(pokedex->field_0044, species)) + { + if (species == SPECIES_SPINDA) + pokedex->field_0104 = personality; + SetSeenCaughtGender(pokedex, species, (u8)gender); + } + else + { + u8 seen_gender = (u8)CheckDexFlag(pokedex->field_0084, species); + if (seen_gender != gender) + { + SetSeenGender(pokedex, species, (u8)gender); + } + } + FUN_020241B8(pokedex, species, pokemon); + SetDexFlag(pokedex->field_0044, species); +} + +void FUN_02024AF0(struct Pokedex * pokedex, struct Pokemon * pokemon) +{ + u32 language; // sp08 + u32 personality; // sp04 + u32 gender; // r7 + u16 species; // r6 + + species = (u16)GetMonData(pokemon, MON_DATA_SPECIES, NULL); + language = GetMonData(pokemon, MON_DATA_GAME_LANGUAGE, NULL); + personality = GetMonData(pokemon, MON_DATA_PERSONALITY, NULL); + gender = GetMonGender(pokemon); + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + if (DexSpeciesIsInvalid(species)) + return; + if (!CheckDexFlag(pokedex->field_0044, species)) + { + if (species == SPECIES_SPINDA) + pokedex->field_0104 = personality; + SetSeenCaughtGender(pokedex, species, (u8)gender); + } + else + { + u8 seen_gender = (u8)CheckDexFlag(pokedex->field_0084, species); + if (seen_gender != gender) + { + SetSeenGender(pokedex, species, (u8)gender); + } + } + FUN_020241B8(pokedex, species, pokemon); + FUN_02024294(pokedex, species, language); + SetDexFlag(pokedex->field_0004, species); + SetDexFlag(pokedex->field_0044, species); +} + +void Pokedex_SetNatDexFlag(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + pokedex->field_0139 = 1; +} + +BOOL Pokedex_GetNatDexFlag(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + return pokedex->field_0139; +} + +BOOL FUN_02024CC4(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + return pokedex->field_0128; +} + +void FUN_02024CE0(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + pokedex->field_0128 = 1; +} + +s32 FUN_02024D00(struct Pokedex * pokedex, u32 species, u32 language) +{ + GF_ASSERT(language < 8); + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + s32 r5 = FUN_02087A50(species); + if (r5 == 14) + return 0; + s32 r0 = FUN_02087A1C(language); + return pokedex->field_0129[r5] & (1 << r0); +} + +void FUN_02024D4C(struct Pokedex * pokedex) +{ + pokedex->field_0137 = 1; +} + +BOOL FUN_02024D58(struct Pokedex * pokedex) +{ + return pokedex->field_0137; +} + +BOOL FUN_02024D64(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + return pokedex->field_0138; +} + +void FUN_02024D80(struct Pokedex * pokedex) +{ + GF_ASSERT(pokedex->magic == 0xBEEFCAFE); + pokedex->field_0138 = 1; +} + +struct Pokedex * FUN_02024DA0(struct SaveBlock2 * sav2) +{ + return (struct Pokedex *)SavArray_get(sav2, 7); +} + +s32 FUN_02024DAC(struct Pokedex * pokedex, s32 a1, u32 a2) +{ + switch (a1) + { + case SPECIES_UNOWN: + if (a2 < FUN_0202471C(pokedex)) + return FUN_020246DC(pokedex, (s32)a2); + break; + case SPECIES_SHELLOS: + if (a2 < FUN_020247A4(pokedex)) + return FUN_02024748(pokedex, (s32)a2); + break; + case SPECIES_GASTRODON: + if (a2 < FUN_02024828(pokedex)) + return FUN_020247C8(pokedex, (s32)a2); + break; + case SPECIES_BURMY: + if (a2 < FUN_0202489C(pokedex)) + return FUN_0202484C(pokedex, (s32)a2); + break; + case SPECIES_WORMADAM: + if (a2 < FUN_0202490C(pokedex)) + return FUN_020248BC(pokedex, (s32)a2); + break; + case SPECIES_DEOXYS: + if (a2 < FUN_02024970(pokedex)) + return FUN_02024930(pokedex, (s32)a2); + break; + } + return 0; +} diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c index 347cb5ac..0fb6d121 100644 --- a/arm9/src/pokemon.c +++ b/arm9/src/pokemon.c @@ -3026,7 +3026,7 @@ u8 FUN_02069AEC(struct PlayerParty * party) return ret; } -u16 FUN_02069B40(u16 species) +u16 SpeciesToSinnohDexNo(u16 species) { u16 ret; ReadFromNarcMemberByIdPair(&ret, NARC_POKETOOL_POKEZUKAN, 0, species * sizeof(u16), sizeof(u16)); diff --git a/include/pokedex.h b/include/pokedex.h new file mode 100644 index 00000000..61c051da --- /dev/null +++ b/include/pokedex.h @@ -0,0 +1,86 @@ +#ifndef POKEDIAMOND_POKEDEX_H +#define POKEDIAMOND_POKEDEX_H + +#include "global.h" + +struct Pokedex +{ + /* 0x0000 */ u32 magic; // BEEFCAFE + /* 0x0004 */ u8 field_0004[0x3C]; + /* 0x0040 */ u32 field_0040; // Deoxys forme plus top 13 dex flags + /* 0x0044 */ u8 field_0044[0x3C]; + /* 0x0080 */ u32 field_0080; // Deoxys forme plus top 13 dex flags + /* 0x0084 */ u8 field_0084[0x40]; // Genders + /* 0x00C4 */ u8 field_00C4[0x40]; // Genders + /* 0x0104 */ u32 field_0104; // spinda personality + /* 0x0108 */ u8 field_0108[2]; // Shellos/Gastrodon + /* 0x0108 */ u8 field_010A[2]; // Burmy/Wormadam + /* 0x010C */ u8 field_010C[28]; // Unown + /* 0x0128 */ u8 field_0128; + /* 0x0129 */ u8 field_0129[14]; // Meister? + /* 0x0137 */ u8 field_0137; + /* 0x0138 */ u8 field_0138; + /* 0x0139 */ u8 field_0139; + /* 0x013A */ u8 padding_013A[2]; +}; + +u32 Sav2_Pokedex_sizeof(void); +struct Pokedex * Sav2_Pokedex_new(u32 heap_id); +void Sav2_Pokedex_Copy(const struct Pokedex * src, struct Pokedex * dest); +s32 FUN_02023D8C(struct Pokedex * pokedex, u32 species); +BOOL FUN_02023DEC(struct Pokedex * pokedex, u32 species, u8 state); +void FUN_02023E70(struct Pokedex * pokedex, u32 species, u32 state); +s32 FUN_02023F2C(struct Pokedex * pokedex, u32 species); +BOOL FUN_02023F88(struct Pokedex * pokedex, u32 species, u8 state); +void FUN_02023FEC(struct Pokedex * pokedex, u32 species, s32 state); +void FUN_02024068(struct Pokedex * pokedex, u8 r4, u8 r6); +s32 FUN_020240D0(struct Pokedex * pokedex); +BOOL FUN_02024114(struct Pokedex * pokedex, u32 state); +void FUN_0202415C(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon); +void FUN_0202419C(struct Pokedex * pokedex); +void FUN_020241B8(struct Pokedex * pokedex, u16 species, struct Pokemon * pokemon); +void FUN_02024294(struct Pokedex * pokedex, u32 species, u32 language); +s32 FUN_020242C8(struct Pokedex * pokedex, u16 species, s32 r4); +BOOL FUN_02024340(u16 species); +BOOL FUN_02024364(u16 a0); +void Sav2_Pokedex_init(struct Pokedex * pokedex); +u16 FUN_020243C8(struct Pokedex * pokedex); +u16 FUN_02024404(struct Pokedex * pokedex); +u16 FUN_02024440(struct Pokedex * pokedex); +u16 FUN_0202445C(struct Pokedex * pokedex); +u16 FUN_020244A4(struct Pokedex * pokedex); +BOOL FUN_020244EC(struct Pokedex * pokedex); +BOOL FUN_02024504(struct Pokedex * pokedex); +u16 FUN_02024518(struct Pokedex * pokedex); +u16 FUN_02024550(struct Pokedex * pokedex); +BOOL FUN_02024594(struct Pokedex * pokedex, u16 species); +BOOL FUN_020245F0(struct Pokedex * pokedex, u16 species); +u32 FUN_02024648(struct Pokedex * pokedex, u32 a1); +s32 FUN_02024674(struct Pokedex * pokedex, u16 species, s32 r6); +s32 FUN_020246DC(struct Pokedex * pokedex, s32 a1); +s32 FUN_0202471C(struct Pokedex * pokedex); +BOOL FUN_02024748(struct Pokedex * pokedex, s32 a1); +s32 FUN_020247A4(struct Pokedex * pokedex); +BOOL FUN_020247C8(struct Pokedex * pokedex, s32 a1); +s32 FUN_02024828(struct Pokedex * pokedex); +s32 FUN_0202484C(struct Pokedex * pokedex, s32 a1); +s32 FUN_0202489C(struct Pokedex * pokedex); +s32 FUN_020248BC(struct Pokedex * pokedex, s32 a1); +s32 FUN_0202490C(struct Pokedex * pokedex); +s32 FUN_02024930(struct Pokedex * pokedex, s32 a1); +s32 FUN_02024970(struct Pokedex * pokedex); +void FUN_0202498C(struct Pokedex * pokedex, struct Pokemon * pokemon); +void FUN_02024AF0(struct Pokedex * pokedex, struct Pokemon * pokemon); +void Pokedex_SetNatDexFlag(struct Pokedex * pokedex); +BOOL Pokedex_GetNatDexFlag(struct Pokedex * pokedex); +BOOL FUN_02024CC4(struct Pokedex * pokedex); +void FUN_02024CE0(struct Pokedex * pokedex); +s32 FUN_02024D00(struct Pokedex * pokedex, u32 species, u32 language); +void FUN_02024D4C(struct Pokedex * pokedex); +BOOL FUN_02024D58(struct Pokedex * pokedex); +BOOL FUN_02024D64(struct Pokedex * pokedex); +void FUN_02024D80(struct Pokedex * pokedex); +struct Pokedex * FUN_02024DA0(struct SaveBlock2 * sav2); +s32 FUN_02024DAC(struct Pokedex * pokedex, s32 a1, u32 a2); + +#endif //POKEDIAMOND_POKEDEX_H diff --git a/include/pokemon.h b/include/pokemon.h index 591da2f4..196343de 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -280,7 +280,7 @@ void FUN_020698E8(struct BoxPokemon * boxmon, int slot1, int slot2); void FUN_020699A4(struct Pokemon * pokemon, u32 slot); void FUN_02069A64(struct BoxPokemon * src, struct Pokemon * dest); u8 FUN_02069AEC(struct PlayerParty * party); -u16 FUN_02069B40(u16 species); +u16 SpeciesToSinnohDexNo(u16 species); u16 FUN_02069B60(u16 sinnoh_dex); void FUN_02069B88(struct Pokemon * src, struct Pokemon * dest); void FUN_02069BA0(struct Pokemon * src, struct BoxPokemon * dest); diff --git a/include/unk_02087A1C.h b/include/unk_02087A1C.h new file mode 100644 index 00000000..28155209 --- /dev/null +++ b/include/unk_02087A1C.h @@ -0,0 +1,7 @@ +#ifndef POKEDIAMOND_UNK_02087A1C_H +#define POKEDIAMOND_UNK_02087A1C_H + +s32 FUN_02087A50(u32 species); +s32 FUN_02087A1C(u32 language); + +#endif //POKEDIAMOND_UNK_02087A1C_H |