summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lsf3
-rw-r--r--arm9/asm/scrcmd.s14
-rw-r--r--arm9/asm/scrcmd_12.s8
-rw-r--r--arm9/asm/scrcmd_9.s4
-rw-r--r--arm9/asm/unk_02023C40.s2
-rw-r--r--arm9/asm/unk_0202C144.s4
-rw-r--r--arm9/asm/unk_02035068.s4
-rw-r--r--arm9/asm/unk_020377F0.s2
-rw-r--r--arm9/asm/unk_020476CC.s4
-rw-r--r--arm9/asm/unk_0204BE14.s565
-rw-r--r--arm9/asm/unk_0206B688.s10
-rw-r--r--arm9/asm/unk_0206C700.s4
-rw-r--r--arm9/global.inc60
-rw-r--r--arm9/modules/05/asm/mod05_021E3340.s4
-rw-r--r--arm9/modules/05/asm/module_05.s12
-rw-r--r--arm9/modules/11/asm/module_11_thumb2.s2
-rw-r--r--arm9/modules/20/asm/module_20.s22
-rw-r--r--arm9/modules/26/asm/module_26.s57
-rw-r--r--arm9/modules/31/asm/module_31.s6
-rw-r--r--arm9/modules/40/asm/module_40.s6
-rw-r--r--arm9/modules/42/asm/module_42.s4
-rw-r--r--arm9/modules/44/asm/module_44.s4
-rw-r--r--arm9/modules/45/asm/module_45.s8
-rw-r--r--arm9/modules/49/asm/module_49.s4
-rw-r--r--arm9/modules/80/asm/module_80.s4
-rw-r--r--arm9/src/pokemon.c8
-rw-r--r--arm9/src/poketch.c262
-rw-r--r--arm9/src/save_arrays.c11
-rw-r--r--include/pokemon.h2
-rw-r--r--include/poketch.h95
30 files changed, 487 insertions, 708 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 39d2ed1e..7aee5d0d 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -194,7 +194,7 @@ Static arm9
Object unk_0204B0A0.o
Object unk_0204B34C.o
Object unk_0204B9EC.o
- Object unk_0204BE14.o
+ Object poketch.o
Object unk_0204C1B4.o
Object unk_0204CA80.o
Object unk_0204CB20.o
@@ -682,6 +682,7 @@ Overlay MODULE_25
Overlay MODULE_26
{
+ ##Dot Artist##
After MODULE_20
Object module_26_sinit.o
Object module_26.o
diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s
index 9e33ba2c..1a4dcdcb 100644
--- a/arm9/asm/scrcmd.s
+++ b/arm9/asm/scrcmd.s
@@ -3955,7 +3955,7 @@ FUN_0203B8A0: ; 0x0203B8A0
bl SavArray_PlayerParty_get
add r1, r6, #0x0
bl GetPartyMonByIndex
- bl FUN_020690CC
+ bl GetMonUnownLetter
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r4-r6, pc}
@@ -7129,7 +7129,7 @@ FUN_0203D248: ; 0x0203D248
add r0, #0x80
ldr r0, [r0, #0x0]
ldr r0, [r0, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
add r4, r0, #0x0
add r0, r5, #0x0
bl ScriptReadHalfword
@@ -7139,7 +7139,7 @@ FUN_0203D248: ; 0x0203D248
bl GetVarPointer
add r5, r0, #0x0
add r0, r4, #0x0
- bl FUN_0204BEC8
+ bl Sav2_Poketch_IsGiven
strh r0, [r5, #0x0]
mov r0, #0x0
pop {r3-r5, pc}
@@ -7159,9 +7159,9 @@ FUN_0203D278: ; 0x0203D278
bl VarGet
add r5, r0, #0x0
ldr r0, [r4, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
add r1, r5, #0x0
- bl FUN_0204BED8
+ bl Sav2_Poketch_UnlockApp
mov r0, #0x0
pop {r3-r5, pc}
.balign 4
@@ -7188,9 +7188,9 @@ FUN_0203D2A4: ; 0x0203D2A4
bl GetVarPointer
add r4, r0, #0x0
ldr r0, [r5, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
add r1, r6, #0x0
- bl FUN_0204BED0
+ bl Sav2_Poketch_AppIsUnlocked
strh r0, [r4, #0x0]
mov r0, #0x0
pop {r4-r6, pc}
diff --git a/arm9/asm/scrcmd_12.s b/arm9/asm/scrcmd_12.s
index 524c0006..137140a8 100644
--- a/arm9/asm/scrcmd_12.s
+++ b/arm9/asm/scrcmd_12.s
@@ -1374,12 +1374,12 @@ FUN_020437DC: ; 0x020437DC
push {r3-r5, lr}
add r5, r0, #0x0
ldr r0, [r5, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
add r4, r0, #0x0
add r0, r5, #0x0
bl FUN_02042D04
add r0, r4, #0x0
- bl FUN_0204BEC8
+ bl Sav2_Poketch_IsGiven
pop {r3-r5, pc}
.balign 4
@@ -1388,14 +1388,14 @@ FUN_020437F8: ; 0x020437F8
push {r3-r5, lr}
add r5, r0, #0x0
ldr r0, [r5, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
add r4, r0, #0x0
add r0, r5, #0x0
bl FUN_02042D04
add r1, r0, #0x0
ldr r1, [r1, #0x0]
add r0, r4, #0x0
- bl FUN_0204BED8
+ bl Sav2_Poketch_UnlockApp
pop {r3-r5, pc}
.balign 4
diff --git a/arm9/asm/scrcmd_9.s b/arm9/asm/scrcmd_9.s
index 1741c29b..ad61ab32 100644
--- a/arm9/asm/scrcmd_9.s
+++ b/arm9/asm/scrcmd_9.s
@@ -609,8 +609,8 @@ FUN_020422F4: ; 0x020422F4
FUN_02042304: ; 0x02042304
push {r3, lr}
ldr r0, [r0, #0xc]
- bl FUN_0204C1A8
- bl FUN_0204BEC8
+ bl Sav2_Poketch_get
+ bl Sav2_Poketch_IsGiven
pop {r3, pc}
.balign 4
diff --git a/arm9/asm/unk_02023C40.s b/arm9/asm/unk_02023C40.s
index a759c10a..0de40519 100644
--- a/arm9/asm/unk_02023C40.s
+++ b/arm9/asm/unk_02023C40.s
@@ -834,7 +834,7 @@ FUN_020241B8: ; 0x020241B8
cmp r4, #0xc9
bne _02024210
add r0, r2, #0x0
- bl FUN_020690CC
+ bl GetMonUnownLetter
lsl r1, r0, #0x18
lsr r3, r1, #0x18
mov r1, #0x43
diff --git a/arm9/asm/unk_0202C144.s b/arm9/asm/unk_0202C144.s
index fdda34d3..e6448c07 100644
--- a/arm9/asm/unk_0202C144.s
+++ b/arm9/asm/unk_0202C144.s
@@ -34,9 +34,9 @@ FUN_0202C144: ; 0x0202C144
add r1, r4, #0x0
bl FUN_02024AF0
add r0, r5, #0x0
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
add r1, r4, #0x0
- bl FUN_0204C104
+ bl Sav2_Poketch_PokemonHistoryAddMon
_0202C194:
pop {r3-r7, pc}
.balign 4
diff --git a/arm9/asm/unk_02035068.s b/arm9/asm/unk_02035068.s
index 9e1896cf..c03af51e 100644
--- a/arm9/asm/unk_02035068.s
+++ b/arm9/asm/unk_02035068.s
@@ -3675,7 +3675,7 @@ FUN_02036E08: ; 0x02036E08
bl FUN_02029FC8
str r0, [sp, #0x34]
ldr r0, [r4, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
ldr r1, [sp, #0x2c]
str r7, [sp, #0x0]
str r1, [sp, #0x4]
@@ -3712,7 +3712,7 @@ _02036E9E:
bl FUN_02029FC8
str r0, [sp, #0x44]
ldr r0, [r4, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
ldr r1, [sp, #0x3c]
str r7, [sp, #0x0]
str r1, [sp, #0x4]
diff --git a/arm9/asm/unk_020377F0.s b/arm9/asm/unk_020377F0.s
index 730ffea9..2a9321f1 100644
--- a/arm9/asm/unk_020377F0.s
+++ b/arm9/asm/unk_020377F0.s
@@ -1650,7 +1650,7 @@ _020382F6:
bl FUN_02029FC8
str r0, [sp, #0x2c]
ldr r0, [r5, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
str r6, [sp, #0x0]
ldr r1, [sp, #0x28]
str r7, [sp, #0x4]
diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s
index dc4d1c28..9bf1d22a 100644
--- a/arm9/asm/unk_020476CC.s
+++ b/arm9/asm/unk_020476CC.s
@@ -562,7 +562,7 @@ FUN_02047A78: ; 0x02047A78
sub r1, #0x68
str r0, [r5, r1]
ldr r0, [r4, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
mov r1, #0x4a
lsl r1, r1, #0x2
str r0, [r5, r1]
@@ -735,7 +735,7 @@ _02047C98:
str r0, [r6, r1]
ldr r0, [sp, #0x0]
ldr r0, [r0, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
mov r1, #0x4a
lsl r1, r1, #0x2
str r0, [r6, r1]
diff --git a/arm9/asm/unk_0204BE14.s b/arm9/asm/unk_0204BE14.s
deleted file mode 100644
index 3234ea05..00000000
--- a/arm9/asm/unk_0204BE14.s
+++ /dev/null
@@ -1,565 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .section .rodata
-
- .global UNK_020F486C
-UNK_020F486C: ; 0x020F486C
- .byte 0x68, 0x98, 0x78, 0x98, 0x88, 0x98, 0x98, 0x98, 0xA8, 0x98, 0xB8, 0x98
-
- .text
-
- thumb_func_start FUN_0204BE14
-FUN_0204BE14: ; 0x0204BE14
- mov r0, #0xe8
- bx lr
-
- thumb_func_start FUN_0204BE18
-FUN_0204BE18: ; 0x0204BE18
- push {r3-r5, lr}
- mov r2, #0x0
- add r3, r2, #0x0
-_0204BE1E:
- add r1, r0, r2
- add r2, r2, #0x1
- strb r3, [r1, #0x3]
- cmp r2, #0x20
- blt _0204BE1E
- strb r3, [r0, #0x1]
- strb r3, [r0, #0x2]
- ldrb r1, [r0, #0x0]
- mov r2, #0x1
- bic r1, r2
- strb r1, [r0, #0x0]
- ldrb r4, [r0, #0x0]
- mov r1, #0x38
- bic r4, r1
- strb r4, [r0, #0x0]
- ldrb r4, [r0, #0x0]
- mov r1, #0x2
- bic r4, r1
- strb r4, [r0, #0x0]
- str r3, [r0, #0x24]
- ldrh r1, [r0, #0x28]
- bic r1, r2
- strh r1, [r0, #0x28]
- ldrh r2, [r0, #0x28]
- mov r1, #0x3e
- bic r2, r1
- strh r2, [r0, #0x28]
- ldrh r2, [r0, #0x28]
- ldr r1, _0204BEB0 ; =0xFFFFF03F
- and r1, r2
- strh r1, [r0, #0x28]
- add r1, r0, #0x0
- mov r2, #0x1
- add r1, #0xa8
- strb r2, [r1, #0x0]
- add r1, r0, #0x0
- add r1, #0xa4
- str r3, [r1, #0x0]
- ldr r1, _0204BEB4 ; =UNK_020F486C
- add r2, r0, #0x0
-_0204BE6E:
- ldrb r5, [r1, #0x0]
- add r4, r2, #0x0
- add r4, #0xa9
- strb r5, [r4, #0x0]
- add r4, r2, #0x0
- ldrb r5, [r1, #0x1]
- add r4, #0xaa
- add r3, r3, #0x1
- strb r5, [r4, #0x0]
- add r1, r1, #0x2
- add r2, r2, #0x2
- cmp r3, #0x6
- blt _0204BE6E
- mov r4, #0x0
- add r3, r0, #0x0
- add r1, r4, #0x0
-_0204BE8E:
- add r2, r3, #0x0
- add r2, #0xb6
- strh r1, [r2, #0x0]
- add r2, r3, #0x0
- add r2, #0xb8
- add r4, r4, #0x1
- add r3, r3, #0x4
- strh r1, [r2, #0x0]
- cmp r4, #0xc
- blt _0204BE8E
- ldrb r3, [r0, #0x0]
- mov r2, #0x4
- bic r3, r2
- strb r3, [r0, #0x0]
- bl FUN_0204BED8
- pop {r3-r5, pc}
- .balign 4
-_0204BEB0: .word 0xFFFFF03F
-_0204BEB4: .word UNK_020F486C
-
- thumb_func_start FUN_0204BEB8
-FUN_0204BEB8: ; 0x0204BEB8
- ldrb r2, [r0, #0x0]
- mov r1, #0x1
- bic r2, r1
- mov r1, #0x1
- orr r1, r2
- strb r1, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0204BEC8
-FUN_0204BEC8: ; 0x0204BEC8
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1f
- lsr r0, r0, #0x1f
- bx lr
-
- thumb_func_start FUN_0204BED0
-FUN_0204BED0: ; 0x0204BED0
- add r0, r0, r1
- ldrb r0, [r0, #0x3]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0204BED8
-FUN_0204BED8: ; 0x0204BED8
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- bmi _0204BEE4
- cmp r4, #0x19
- blt _0204BEE8
-_0204BEE4:
- bl ErrorHandling
-_0204BEE8:
- mov r0, #0x1
- ldrsb r1, [r5, r0]
- cmp r1, #0x19
- bge _0204BF10
- add r2, r5, #0x3
- ldrb r1, [r2, r4]
- cmp r1, #0x0
- bne _0204BF10
- strb r0, [r2, r4]
- ldrsb r0, [r5, r0]
- add r0, r0, #0x1
- strb r0, [r5, #0x1]
- cmp r4, #0x3
- bne _0204BF0C
- ldrb r1, [r5, #0x0]
- mov r0, #0x2
- orr r0, r1
- strb r0, [r5, #0x0]
-_0204BF0C:
- mov r0, #0x1
- pop {r3-r5, pc}
-_0204BF10:
- mov r0, #0x0
- pop {r3-r5, pc}
-
- thumb_func_start FUN_0204BF14
-FUN_0204BF14: ; 0x0204BF14
- mov r1, #0x2
- ldrsb r0, [r0, r1]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0204BF1C
-FUN_0204BF1C: ; 0x0204BF1C
- push {r3-r4}
- mov r1, #0x2
- ldrsb r3, [r0, r1]
- mov r2, #0x0
- add r4, r3, #0x0
-_0204BF26:
- add r3, r3, #0x1
- cmp r3, #0x19
- blt _0204BF2E
- add r3, r2, #0x0
-_0204BF2E:
- cmp r3, r4
- beq _0204BF3A
- add r1, r0, r3
- ldrb r1, [r1, #0x3]
- cmp r1, #0x0
- beq _0204BF26
-_0204BF3A:
- mov r1, #0x2
- strb r3, [r0, #0x2]
- ldrsb r0, [r0, r1]
- pop {r3-r4}
- bx lr
-
- thumb_func_start FUN_0204BF44
-FUN_0204BF44: ; 0x0204BF44
- push {r4, lr}
- add r4, r0, #0x0
- bne _0204BF4E
- bl ErrorHandling
-_0204BF4E:
- ldrb r0, [r4, #0x0]
- lsl r0, r0, #0x1a
- lsr r0, r0, #0x1d
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0204BF58
-FUN_0204BF58: ; 0x0204BF58
- push {r3-r5, lr}
- add r5, r0, #0x0
- add r4, r1, #0x0
- cmp r5, #0x0
- bne _0204BF66
- bl ErrorHandling
-_0204BF66:
- cmp r4, #0x8
- blo _0204BF6E
- bl ErrorHandling
-_0204BF6E:
- ldrb r1, [r5, #0x0]
- mov r0, #0x38
- bic r1, r0
- lsl r0, r4, #0x18
- lsr r0, r0, #0x18
- lsl r0, r0, #0x1d
- lsr r0, r0, #0x1a
- orr r0, r1
- strb r0, [r5, #0x0]
- pop {r3-r5, pc}
- .balign 4
-
- thumb_func_start FUN_0204BF84
-FUN_0204BF84: ; 0x0204BF84
- ldr r0, [r0, #0x24]
- bx lr
-
- thumb_func_start FUN_0204BF88
-FUN_0204BF88: ; 0x0204BF88
- ldrb r2, [r0, #0x0]
- lsl r2, r2, #0x1e
- lsr r2, r2, #0x1f
- beq _0204BF92
- str r1, [r0, #0x24]
-_0204BF92:
- bx lr
-
- thumb_func_start FUN_0204BF94
-FUN_0204BF94: ; 0x0204BF94
- ldrh r0, [r0, #0x28]
- lsl r0, r0, #0x1f
- lsr r0, r0, #0x1f
- bx lr
-
- thumb_func_start FUN_0204BF9C
-FUN_0204BF9C: ; 0x0204BF9C
- ldrh r3, [r0, #0x28]
- lsl r3, r3, #0x1a
- lsr r3, r3, #0x1b
- str r3, [r1, #0x0]
- ldrh r0, [r0, #0x28]
- lsl r0, r0, #0x14
- lsr r0, r0, #0x1a
- str r0, [r2, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_0204BFB0
-FUN_0204BFB0: ; 0x0204BFB0
- push {r4-r5}
- ldrh r4, [r0, #0x28]
- mov r5, #0x1
- lsl r1, r1, #0x10
- bic r4, r5
- lsr r5, r1, #0x10
- mov r1, #0x1
- and r1, r5
- orr r1, r4
- strh r1, [r0, #0x28]
- lsl r2, r2, #0x10
- lsr r2, r2, #0x10
- lsl r2, r2, #0x1b
- ldrh r1, [r0, #0x28]
- mov r4, #0x3e
- lsr r2, r2, #0x1a
- bic r1, r4
- orr r1, r2
- strh r1, [r0, #0x28]
- ldrh r2, [r0, #0x28]
- ldr r1, _0204BFEC ; =0xFFFFF03F
- and r2, r1
- lsl r1, r3, #0x10
- lsr r1, r1, #0x10
- lsl r1, r1, #0x1a
- lsr r1, r1, #0x14
- orr r1, r2
- strh r1, [r0, #0x28]
- pop {r4-r5}
- bx lr
- .balign 4
-_0204BFEC: .word 0xFFFFF03F
-
- thumb_func_start FUN_0204BFF0
-FUN_0204BFF0: ; 0x0204BFF0
- push {r3-r4}
- add r3, r0, #0x0
- add r3, #0xa8
- ldrb r3, [r3, #0x0]
- cmp r3, r1
- bne _0204C016
- add r1, r0, #0x0
- add r1, #0xa4
- ldr r4, [r1, #0x0]
- mov r3, #0x1
- sub r1, r2, #0x1
- add r2, r3, #0x0
- lsl r2, r1
- add r1, r4, #0x0
- orr r1, r2
- add r0, #0xa4
- str r1, [r0, #0x0]
- pop {r3-r4}
- bx lr
-_0204C016:
- add r3, r0, #0x0
- add r3, #0xa8
- strb r1, [r3, #0x0]
- mov r3, #0x1
- sub r1, r2, #0x1
- add r2, r3, #0x0
- lsl r2, r1
- add r0, #0xa4
- str r2, [r0, #0x0]
- pop {r3-r4}
- bx lr
-
- thumb_func_start FUN_0204C02C
-FUN_0204C02C: ; 0x0204C02C
- push {r3-r4}
- add r3, r0, #0x0
- add r3, #0xa8
- ldrb r3, [r3, #0x0]
- cmp r3, r1
- bne _0204C052
- add r1, r0, #0x0
- add r1, #0xa4
- ldr r4, [r1, #0x0]
- mov r3, #0x1
- sub r1, r2, #0x1
- add r2, r3, #0x0
- lsl r2, r1
- mvn r1, r2
- and r1, r4
- add r0, #0xa4
- str r1, [r0, #0x0]
- pop {r3-r4}
- bx lr
-_0204C052:
- add r2, r0, #0x0
- add r2, #0xa8
- strb r1, [r2, #0x0]
- mov r1, #0x0
- add r0, #0xa4
- str r1, [r0, #0x0]
- pop {r3-r4}
- bx lr
- .balign 4
-
- thumb_func_start FUN_0204C064
-FUN_0204C064: ; 0x0204C064
- add r3, r0, #0x0
- add r3, #0xa8
- ldrb r3, [r3, #0x0]
- cmp r3, r1
- bne _0204C07C
- add r0, #0xa4
- ldr r1, [r0, #0x0]
- sub r0, r2, #0x1
- lsr r1, r0
- mov r0, #0x1
- and r0, r1
- bx lr
-_0204C07C:
- mov r0, #0x0
- bx lr
-
- thumb_func_start FUN_0204C080
-FUN_0204C080: ; 0x0204C080
- push {r3-r7, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r6, r2, #0x0
- add r7, r3, #0x0
- cmp r4, #0x6
- blt _0204C092
- bl ErrorHandling
-_0204C092:
- lsl r1, r4, #0x1
- add r0, r5, r1
- add r0, #0xa9
- strb r6, [r0, #0x0]
- add r0, r5, r1
- add r0, #0xaa
- strb r7, [r0, #0x0]
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0204C0A4
-FUN_0204C0A4: ; 0x0204C0A4
- push {r3-r7, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r6, r2, #0x0
- add r7, r3, #0x0
- cmp r4, #0x6
- blt _0204C0B6
- bl ErrorHandling
-_0204C0B6:
- lsl r1, r4, #0x1
- add r0, r5, r1
- add r0, #0xa9
- ldrb r0, [r0, #0x0]
- strb r0, [r6, #0x0]
- add r0, r5, r1
- add r0, #0xaa
- ldrb r0, [r0, #0x0]
- strb r0, [r7, #0x0]
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0204C0CC
-FUN_0204C0CC: ; 0x0204C0CC
- ldrb r0, [r0, #0x0]
- lsl r0, r0, #0x1d
- lsr r0, r0, #0x1f
- bx lr
-
- thumb_func_start FUN_0204C0D4
-FUN_0204C0D4: ; 0x0204C0D4
- push {r3, lr}
- ldrb r2, [r0, #0x0]
- lsl r2, r2, #0x1d
- lsr r2, r2, #0x1f
- beq _0204C0E6
- add r0, #0x2a
- mov r2, #0x78
- bl MI_CpuCopy8
-_0204C0E6:
- pop {r3, pc}
-
- thumb_func_start FUN_0204C0E8
-FUN_0204C0E8: ; 0x0204C0E8
- push {r4, lr}
- add r4, r0, #0x0
- add r0, r1, #0x0
- add r1, r4, #0x0
- add r1, #0x2a
- mov r2, #0x78
- bl MI_CpuCopy8
- ldrb r1, [r4, #0x0]
- mov r0, #0x4
- orr r0, r1
- strb r0, [r4, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_0204C104
-FUN_0204C104: ; 0x0204C104
- push {r4-r6, lr}
- add r5, r0, #0x0
- add r6, r1, #0x0
- bl FUN_0204C158
- cmp r0, #0xc
- blt _0204C138
- mov r0, #0x0
- add r1, r5, #0x0
-_0204C116:
- add r2, r1, #0x0
- add r2, #0xba
- ldrh r3, [r2, #0x0]
- add r2, r1, #0x0
- add r2, #0xb6
- strh r3, [r2, #0x0]
- add r2, r1, #0x0
- add r2, #0xbc
- ldrh r3, [r2, #0x0]
- add r2, r1, #0x0
- add r2, #0xb8
- add r0, r0, #0x1
- add r1, r1, #0x4
- strh r3, [r2, #0x0]
- cmp r0, #0xb
- blt _0204C116
- mov r0, #0xb
-_0204C138:
- lsl r4, r0, #0x2
- add r0, r6, #0x0
- mov r1, #0x5
- mov r2, #0x0
- bl GetBoxMonData
- add r1, r5, r4
- add r1, #0xb6
- strh r0, [r1, #0x0]
- add r0, r6, #0x0
- bl FUN_0206B754
- add r1, r5, r4
- add r1, #0xb8
- strh r0, [r1, #0x0]
- pop {r4-r6, pc}
-
- thumb_func_start FUN_0204C158
-FUN_0204C158: ; 0x0204C158
- mov r2, #0x0
-_0204C15A:
- add r1, r0, #0x0
- add r1, #0xb6
- ldrh r1, [r1, #0x0]
- cmp r1, #0x0
- bne _0204C168
- add r0, r2, #0x0
- bx lr
-_0204C168:
- add r2, r2, #0x1
- add r0, r0, #0x4
- cmp r2, #0xc
- blt _0204C15A
- add r0, r2, #0x0
- bx lr
-
- thumb_func_start FUN_0204C174
-FUN_0204C174: ; 0x0204C174
- push {r3-r7, lr}
- add r4, r1, #0x0
- add r5, r0, #0x0
- add r7, r2, #0x0
- str r3, [sp, #0x0]
- cmp r4, #0xc
- blt _0204C186
- bl ErrorHandling
-_0204C186:
- add r6, r5, #0x0
- lsl r4, r4, #0x2
- add r6, #0xb6
- ldrh r0, [r6, r4]
- cmp r0, #0x0
- bne _0204C196
- bl ErrorHandling
-_0204C196:
- ldrh r0, [r6, r4]
- str r0, [r7, #0x0]
- add r0, r5, r4
- add r0, #0xb8
- ldrh r1, [r0, #0x0]
- ldr r0, [sp, #0x0]
- str r1, [r0, #0x0]
- pop {r3-r7, pc}
- .balign 4
-
- thumb_func_start FUN_0204C1A8
-FUN_0204C1A8: ; 0x0204C1A8
- ldr r3, _0204C1B0 ; =SavArray_get
- mov r1, #0x5
- bx r3
- nop
-_0204C1B0: .word SavArray_get
diff --git a/arm9/asm/unk_0206B688.s b/arm9/asm/unk_0206B688.s
index 9b6e863e..c92d347d 100644
--- a/arm9/asm/unk_0206B688.s
+++ b/arm9/asm/unk_0206B688.s
@@ -59,7 +59,7 @@ FUN_0206B688: ; 0x0206B688
bl GetBoxMonData
add r6, r0, #0x0
add r0, r5, #0x0
- bl FUN_0206B754
+ bl BoxMon_GetAlternateForme
add r2, r0, #0x0
add r0, r4, #0x0
add r1, r6, #0x0
@@ -152,8 +152,8 @@ _0206B748: .word 0x000001EA
_0206B74C: .word 0x00000182
_0206B750: .word 0x000001ED
- thumb_func_start FUN_0206B754
-FUN_0206B754: ; 0x0206B754
+ thumb_func_start BoxMon_GetAlternateForme
+BoxMon_GetAlternateForme: ; 0x0206B754
push {r4, lr}
mov r1, #0xad
mov r2, #0x0
@@ -195,7 +195,7 @@ _0206B794:
b _0206B7B4
_0206B79C:
add r0, r4, #0x0
- bl FUN_020690D4
+ bl GetBoxMonUnownLetter
pop {r4, pc}
_0206B7A4:
add r0, r4, #0x0
@@ -292,7 +292,7 @@ FUN_0206B83C: ; 0x0206B83C
bl AcquireBoxMonLock
add r4, r0, #0x0
add r0, r5, #0x0
- bl FUN_0206B754
+ bl BoxMon_GetAlternateForme
add r6, r0, #0x0
add r0, r5, #0x0
mov r1, #0x5
diff --git a/arm9/asm/unk_0206C700.s b/arm9/asm/unk_0206C700.s
index 956f6263..39550e2a 100644
--- a/arm9/asm/unk_0206C700.s
+++ b/arm9/asm/unk_0206C700.s
@@ -1107,7 +1107,7 @@ _0206CFFA:
bl FUN_020690E4
add r1, r0, #0x0
ldr r0, [r4, #0x54]
- bl FUN_0204C104
+ bl Sav2_Poketch_PokemonHistoryAddMon
ldr r0, [r4, #0x28]
mov r1, #0x4d
mov r2, #0x0
@@ -2209,7 +2209,7 @@ _0206D8EA:
bl FUN_020690E4
add r1, r0, #0x0
ldr r0, [r4, #0x54]
- bl FUN_0204C104
+ bl Sav2_Poketch_PokemonHistoryAddMon
add r0, r5, #0x0
bl FreeToHeap
ldr r0, [r4, #0x4c]
diff --git a/arm9/global.inc b/arm9/global.inc
index 29501049..c1781cdc 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -3582,33 +3582,33 @@
.extern FUN_0204BAC4
.extern FUN_0204BAD4
.extern FUN_0204BAE4
-.extern FUN_0204BE14
-.extern FUN_0204BE18
-.extern FUN_0204BEB8
-.extern FUN_0204BEC8
-.extern FUN_0204BED0
-.extern FUN_0204BED8
-.extern FUN_0204BF14
-.extern FUN_0204BF1C
-.extern FUN_0204BF44
-.extern FUN_0204BF58
-.extern FUN_0204BF84
-.extern FUN_0204BF88
-.extern FUN_0204BF94
-.extern FUN_0204BF9C
-.extern FUN_0204BFB0
-.extern FUN_0204BFF0
-.extern FUN_0204C02C
-.extern FUN_0204C064
-.extern FUN_0204C080
-.extern FUN_0204C0A4
-.extern FUN_0204C0CC
-.extern FUN_0204C0D4
-.extern FUN_0204C0E8
-.extern FUN_0204C104
-.extern FUN_0204C158
-.extern FUN_0204C174
-.extern FUN_0204C1A8
+.extern Sav2_Poketch_sizeof
+.extern Sav2_Poketch_init
+.extern Sav2_Poketch_Give
+.extern Sav2_Poketch_IsGiven
+.extern Sav2_Poketch_AppIsUnlocked
+.extern Sav2_Poketch_UnlockApp
+.extern Sav2_Poketch_GetSelectedApp
+.extern Sav2_Poketch_CycleNextApp
+.extern Sav2_Poketch_GetScreenTint
+.extern Sav2_Poketch_SetScreenTint
+.extern Sav2_Poketch_GetStepCounter
+.extern Sav2_Poketch_SetStepCounter
+.extern Sav2_Poketch_GetAlarmState
+.extern Sav2_Poketch_GetAlarmSetTime
+.extern Sav2_Poketch_SetAlarm
+.extern Sav2_Poketch_CalendarDateHighlight
+.extern Sav2_Poketch_CalendarDateUnhighlight
+.extern Sav2_Poketch_CalendarDateIsHighlighted
+.extern Sav2_Poketch_MarkingMapSetPos
+.extern Sav2_Poketch_MarkingMapGetPos
+.extern Sav2_Poketch_DotArtistIsEnabled
+.extern Sav2_Poketch_DotArtistGetDrawing
+.extern Sav2_Poketch_DotArtistSetDrawingAndEnable
+.extern Sav2_Poketch_PokemonHistoryAddMon
+.extern Sav2_Poketch_PokemonHistoryGetFirstEmptySlot
+.extern Sav2_Poketch_PokemonHistoryGetSlotN
+.extern Sav2_Poketch_get
.extern FUN_0204C1B4
.extern FUN_0204C260
.extern FUN_0204C29C
@@ -4783,8 +4783,8 @@
.extern FUN_020690AC
.extern FUN_020690C4
.extern FUN_020690C8
-.extern FUN_020690CC
-.extern FUN_020690D4
+.extern GetMonUnownLetter
+.extern GetBoxMonUnownLetter
.extern FUN_020690E4
.extern FUN_020690E8
.extern GetMonEvolution
@@ -4869,7 +4869,7 @@
.extern FUN_0206B688
.extern FUN_0206B6C8
.extern FUN_0206B6D4
-.extern FUN_0206B754
+.extern BoxMon_GetAlternateForme
.extern FUN_0206B7BC
.extern FUN_0206B87C
.extern FUN_0206B888
diff --git a/arm9/modules/05/asm/mod05_021E3340.s b/arm9/modules/05/asm/mod05_021E3340.s
index 264edb7b..8fb0d143 100644
--- a/arm9/modules/05/asm/mod05_021E3340.s
+++ b/arm9/modules/05/asm/mod05_021E3340.s
@@ -57,7 +57,7 @@ _021E33A0:
cmp r0, #0
beq _021E3414
ldr r0, [r5, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
add r6, r0, #0
ldr r0, _021E341C ; =SDK_OVERLAY_MODULE_19_ID
bl UnloadOverlayByID
@@ -65,7 +65,7 @@ _021E33A0:
mov r1, #2
bl HandleLoadOverlay
add r0, r6, #0
- bl FUN_0204BEB8
+ bl Sav2_Poketch_Give
mov r0, #1
bl FUN_0200A03C
str r0, [sp]
diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s
index daf46f68..dabce6d4 100644
--- a/arm9/modules/05/asm/module_05.s
+++ b/arm9/modules/05/asm/module_05.s
@@ -21362,13 +21362,13 @@ MOD05_021EFAAC: ; 0x021EFAAC
sub sp, #4
add r5, r0, #0
ldr r0, [r5, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
add r4, r0, #0
ldr r0, [r5, #0xc]
bl SavArray_Flags_get
add r6, r0, #0
add r0, r4, #0
- bl FUN_0204BEC8
+ bl Sav2_Poketch_IsGiven
cmp r0, #0
beq _021EFAF8
add r0, r6, #0
@@ -21406,13 +21406,13 @@ MOD05_021EFB14: ; 0x021EFB14
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
add r4, r0, #0
ldr r0, [r5, #0xc]
bl SavArray_Flags_get
add r6, r0, #0
add r0, r4, #0
- bl FUN_0204BEC8
+ bl Sav2_Poketch_IsGiven
cmp r0, #0
beq _021EFB46
add r0, r6, #0
@@ -21434,13 +21434,13 @@ MOD05_021EFB50: ; 0x021EFB50
push {r4, r5, r6, lr}
add r5, r0, #0
ldr r0, [r5, #0xc]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
add r4, r0, #0
ldr r0, [r5, #0xc]
bl SavArray_Flags_get
add r6, r0, #0
add r0, r4, #0
- bl FUN_0204BEC8
+ bl Sav2_Poketch_IsGiven
cmp r0, #0
beq _021EFB94
add r0, r6, #0
diff --git a/arm9/modules/11/asm/module_11_thumb2.s b/arm9/modules/11/asm/module_11_thumb2.s
index 9c5b85ce..ba099f93 100644
--- a/arm9/modules/11/asm/module_11_thumb2.s
+++ b/arm9/modules/11/asm/module_11_thumb2.s
@@ -3805,7 +3805,7 @@ MOD11_02230F88: ; 0x02230F88
add r4, #0x98
add r1, r0, #0
ldr r0, [r4]
- bl FUN_0204C104
+ bl Sav2_Poketch_PokemonHistoryAddMon
_02230FA4:
pop {r4, pc}
.align 2, 0
diff --git a/arm9/modules/20/asm/module_20.s b/arm9/modules/20/asm/module_20.s
index fbe1a1e2..a42eeb6f 100644
--- a/arm9/modules/20/asm/module_20.s
+++ b/arm9/modules/20/asm/module_20.s
@@ -35,7 +35,7 @@ MOD20_02252448: ; 0x02252448
ldr r0, [sp]
str r6, [r4, #0x5c]
str r0, [r4, #0x54]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
str r0, [r4, #0x58]
ldr r0, [sp, #0x18]
str r7, [r4, #0x4c]
@@ -114,7 +114,7 @@ _022524FC:
pop {r4, pc}
_02252502:
ldr r0, [r4, #0x58]
- bl FUN_0204BF84
+ bl Sav2_Poketch_GetStepCounter
add r1, r0, #1
ldr r0, _02252530 ; =0x0001869F
cmp r1, r0
@@ -122,7 +122,7 @@ _02252502:
mov r1, #0
_02252512:
ldr r0, [r4, #0x58]
- bl FUN_0204BF88
+ bl Sav2_Poketch_SetStepCounter
mov r0, #1
strb r0, [r4, #7]
pop {r4, pc}
@@ -295,7 +295,7 @@ _0225262E:
cmp r0, #0
beq _02252684
ldr r0, [r4, #0x58]
- bl FUN_0204BF14
+ bl Sav2_Poketch_GetSelectedApp
add r5, r0, #0
add r0, r4, #0
add r1, r5, #0
@@ -388,7 +388,7 @@ _022526E2:
cmp r0, #0
beq _022527AA
ldr r0, [r4, #0x58]
- bl FUN_0204BF1C
+ bl Sav2_Poketch_CycleNextApp
str r0, [r4, #0x20]
ldr r0, [r4, #0xc]
cmp r0, #0
@@ -457,7 +457,7 @@ _0225276C:
bne _0225278C
_02252776:
ldr r0, [r4, #0x58]
- bl FUN_0204BF1C
+ bl Sav2_Poketch_CycleNextApp
str r0, [r4, #0x20]
mov r0, #0x1e
str r0, [r4, #0x10]
@@ -500,7 +500,7 @@ _022527C0:
mov r0, #1
strb r0, [r4, #6]
ldr r0, [r4, #0x58]
- bl FUN_0204BF14
+ bl Sav2_Poketch_GetSelectedApp
add r5, r0, #0
add r0, r4, #0
add r1, r5, #0
@@ -1363,7 +1363,7 @@ MOD20_02252D7C: ; 0x02252D7C
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD20_02252C3C
- bl FUN_0204BF44
+ bl Sav2_Poketch_GetScreenTint
mov r1, #0x62
lsl r1, r1, #2
add r5, r4, r1
@@ -1388,7 +1388,7 @@ MOD20_02252DB4: ; 0x02252DB4
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD20_02252C3C
- bl FUN_0204BF44
+ bl Sav2_Poketch_GetScreenTint
mov r1, #0x62
lsl r0, r0, #5
lsl r1, r1, #2
@@ -1416,7 +1416,7 @@ MOD20_02252DEC: ; 0x02252DEC
lsl r0, r0, #2
ldr r0, [r4, r0]
bl MOD20_02252C3C
- bl FUN_0204BF44
+ bl Sav2_Poketch_GetScreenTint
mov r1, #0x62
lsl r1, r1, #2
add r1, r4, r1
@@ -2295,7 +2295,7 @@ MOD20_022534D4: ; 0x022534D4
ldr r0, [r5, r0]
add r4, r1, #0
bl MOD20_02252C3C
- bl FUN_0204BF44
+ bl Sav2_Poketch_GetScreenTint
mov r1, #0x62
lsl r0, r0, #5
lsl r1, r1, #2
diff --git a/arm9/modules/26/asm/module_26.s b/arm9/modules/26/asm/module_26.s
index 45536bcf..6d8828a0 100644
--- a/arm9/modules/26/asm/module_26.s
+++ b/arm9/modules/26/asm/module_26.s
@@ -90,7 +90,7 @@ MOD26_022548E8: ; 0x022548E8
add r4, r1, #0
bl MOD20_02252C3C
add r6, r0, #0
- bl FUN_0204C0CC
+ bl Sav2_Poketch_DotArtistIsEnabled
cmp r0, #0
beq _0225490E
add r0, r5, #0
@@ -114,7 +114,7 @@ MOD26_02254918: ; 0x02254918
lsl r1, r1, #2
add r0, r2, #0
add r1, r5, r1
- bl FUN_0204C0D4
+ bl Sav2_Poketch_DotArtistGetDrawing
mov r3, #0
mov r7, #0x7d
mov ip, r3
@@ -207,7 +207,7 @@ _0225498A:
lsl r2, r2, #2
ldr r0, [sp]
add r1, r1, r2
- bl FUN_0204C0E8
+ bl Sav2_Poketch_DotArtistSetDrawingAndEnable
add sp, #8
pop {r3, r4, r5, r6, r7, pc}
thumb_func_end MOD26_0225496C
@@ -784,37 +784,26 @@ MOD26_02254DE4: ; 0x02254DE4
.global MOD26_02254DF0
MOD26_02254DF0: ; 0x02254DF0
- .byte 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x04, 0x04, 0x04, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x04
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x04
- .byte 0x01, 0x01, 0x04, 0x04, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x04, 0x04, 0x01, 0x04, 0x04
- .byte 0x04, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01
- .byte 0x04, 0x01, 0x04, 0x01, 0x01, 0x01, 0x04, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04
- .byte 0x01, 0x01, 0x04, 0x04, 0x04, 0x01, 0x04, 0x04, 0x04, 0x01, 0x04, 0x04, 0x04, 0x01, 0x04, 0x01
- .byte 0x04, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
- .byte 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1
+ .byte 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1
+ .byte 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 4, 1
+ .byte 1, 1, 1, 4, 1, 1, 4, 4, 4, 1, 4, 1, 4, 1, 4, 4, 4, 1, 4, 4, 4, 1, 4, 1
+ .byte 1, 1, 1, 4, 1, 1, 4, 1, 4, 1, 4, 1, 4, 1, 4, 1, 1, 1, 4, 1, 4, 1, 1, 1
+ .byte 1, 1, 1, 4, 1, 1, 4, 4, 4, 1, 4, 4, 4, 1, 4, 4, 4, 1, 4, 1, 4, 1, 4, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
+ .byte 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
.global MOD26_02254FD0
MOD26_02254FD0: ; 0x02254FD0
diff --git a/arm9/modules/31/asm/module_31.s b/arm9/modules/31/asm/module_31.s
index 8bdedda5..7dcd4e3a 100644
--- a/arm9/modules/31/asm/module_31.s
+++ b/arm9/modules/31/asm/module_31.s
@@ -52,7 +52,7 @@ MOD31_0225489C: ; 0x0225489C
mov r0, #1
str r0, [r5, #8]
ldr r0, [r5, #0x1c]
- bl FUN_0204BF84
+ bl Sav2_Poketch_GetStepCounter
str r0, [r5, #4]
add r0, r5, #0
add r0, #0xc
@@ -236,7 +236,7 @@ _022549EE:
cmp r0, #0
beq _02254A4C
ldr r0, [r4, #0x1c]
- bl FUN_0204BF84
+ bl Sav2_Poketch_GetStepCounter
str r0, [r4, #4]
ldr r0, [r4, #0xc]
mov r1, #3
@@ -263,7 +263,7 @@ _02254A24:
mov r1, #0
str r1, [r4, #4]
ldr r0, [r4, #0x1c]
- bl FUN_0204BF88
+ bl Sav2_Poketch_SetStepCounter
ldr r0, [r4, #0xc]
mov r1, #2
bl MOD31_02254BBC
diff --git a/arm9/modules/40/asm/module_40.s b/arm9/modules/40/asm/module_40.s
index 90fc4ebd..713e9ec7 100644
--- a/arm9/modules/40/asm/module_40.s
+++ b/arm9/modules/40/asm/module_40.s
@@ -50,12 +50,12 @@ MOD40_0225489C: ; 0x0225489C
add r6, r2, #0
bl MOD20_02252C3C
str r0, [r5, #0x10]
- bl FUN_0204BF94
+ bl Sav2_Poketch_GetAlarmState
strb r0, [r5, #3]
ldr r0, [r5, #0x10]
add r1, sp, #8
add r2, sp, #4
- bl FUN_0204BF9C
+ bl Sav2_Poketch_GetAlarmSetTime
ldr r0, [sp, #8]
strb r0, [r5, #6]
ldr r0, [sp, #4]
@@ -300,7 +300,7 @@ _02254A60:
ldrsb r3, [r4, r3]
ldr r0, [r4, #0x10]
mov r1, #1
- bl FUN_0204BFB0
+ bl Sav2_Poketch_SetAlarm
ldr r0, [r4, #8]
mov r1, #2
bl MOD40_02254F98
diff --git a/arm9/modules/42/asm/module_42.s b/arm9/modules/42/asm/module_42.s
index 3e0b6d71..8e41c6cc 100644
--- a/arm9/modules/42/asm/module_42.s
+++ b/arm9/modules/42/asm/module_42.s
@@ -66,7 +66,7 @@ _022548BE:
ldr r3, [sp, #8]
add r1, r6, #0
add r2, r7, #0
- bl FUN_0204C0A4
+ bl Sav2_Poketch_MarkingMapGetPos
ldrb r0, [r4, #0x10]
add r7, r7, #4
add r0, #0x10
@@ -205,7 +205,7 @@ _022549D4:
add r1, r4, #0
lsr r2, r2, #0x18
lsr r3, r3, #0x18
- bl FUN_0204C080
+ bl Sav2_Poketch_MarkingMapSetPos
add r4, r4, #1
add r5, r5, #4
cmp r4, #6
diff --git a/arm9/modules/44/asm/module_44.s b/arm9/modules/44/asm/module_44.s
index 5c50d9f1..bf007af4 100644
--- a/arm9/modules/44/asm/module_44.s
+++ b/arm9/modules/44/asm/module_44.s
@@ -49,7 +49,7 @@ MOD44_0225489C: ; 0x0225489C
add r6, r2, #0
bl MOD20_02252C3C
str r0, [r5, #0x10]
- bl FUN_0204BF44
+ bl Sav2_Poketch_GetScreenTint
str r0, [r5, #4]
strb r0, [r5, #3]
add r0, r5, #0
@@ -248,7 +248,7 @@ _02254A02:
str r1, [r4, #4]
strb r1, [r4, #3]
ldr r0, [r4, #0x10]
- bl FUN_0204BF58
+ bl Sav2_Poketch_SetScreenTint
add sp, #8
mov r0, #1
pop {r4, pc}
diff --git a/arm9/modules/45/asm/module_45.s b/arm9/modules/45/asm/module_45.s
index e3115193..d8d9bf36 100644
--- a/arm9/modules/45/asm/module_45.s
+++ b/arm9/modules/45/asm/module_45.s
@@ -173,7 +173,7 @@ _0225499A:
add r0, #0x98
ldr r0, [r0]
ldr r1, [r6]
- bl FUN_0204C064
+ bl Sav2_Poketch_CalendarDateIsHighlighted
strb r0, [r5, #0xf]
add r0, r7, r4
strb r0, [r5, #0xe]
@@ -362,7 +362,7 @@ _02254AB8:
ldr r0, [r0]
ldr r1, [r5, #4]
add r2, r4, #1
- bl FUN_0204C064
+ bl Sav2_Poketch_CalendarDateIsHighlighted
cmp r0, #0
beq _02254B08
add r0, r5, #0
@@ -370,7 +370,7 @@ _02254AB8:
ldr r0, [r0]
ldr r1, [r5, #4]
add r2, r4, #1
- bl FUN_0204C02C
+ bl Sav2_Poketch_CalendarDateUnhighlight
b _02254B16
_02254B08:
add r0, r5, #0
@@ -378,7 +378,7 @@ _02254B08:
ldr r0, [r0]
ldr r1, [r5, #4]
add r2, r4, #1
- bl FUN_0204BFF0
+ bl Sav2_Poketch_CalendarDateHighlight
_02254B16:
add r3, r5, #0
add r3, #0x13
diff --git a/arm9/modules/49/asm/module_49.s b/arm9/modules/49/asm/module_49.s
index 6527f0f7..bce289da 100644
--- a/arm9/modules/49/asm/module_49.s
+++ b/arm9/modules/49/asm/module_49.s
@@ -50,7 +50,7 @@ MOD49_0225489C: ; 0x0225489C
str r2, [sp, #8]
bl MOD20_02252C3C
str r0, [sp, #0xc]
- bl FUN_0204C158
+ bl Sav2_Poketch_PokemonHistoryGetFirstEmptySlot
mov r6, #0
str r0, [r7, #0x64]
cmp r0, #0
@@ -63,7 +63,7 @@ _022548C0:
add r1, r6, #0
add r2, r5, #0
add r3, r4, #0
- bl FUN_0204C174
+ bl Sav2_Poketch_PokemonHistoryGetSlotN
ldr r0, [r7, #0x64]
add r6, r6, #1
add r4, #8
diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s
index ca96ae65..d45b6251 100644
--- a/arm9/modules/80/asm/module_80.s
+++ b/arm9/modules/80/asm/module_80.s
@@ -17449,7 +17449,7 @@ _02235FDE:
beq _02236052
ldr r5, [r4]
ldr r0, [r5, #0x20]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
ldr r1, [r5, #0x3c]
ldr r2, [sp, #0x24]
str r1, [sp]
@@ -17540,7 +17540,7 @@ _022360B6:
beq _02236118
ldr r5, [r4]
ldr r0, [r5, #0x20]
- bl FUN_0204C1A8
+ bl Sav2_Poketch_get
ldr r1, [r5, #0x3c]
ldr r2, [sp, #0x28]
str r1, [sp]
diff --git a/arm9/src/pokemon.c b/arm9/src/pokemon.c
index 97be796b..347cb5ac 100644
--- a/arm9/src/pokemon.c
+++ b/arm9/src/pokemon.c
@@ -58,7 +58,7 @@ u16 MonEncryptionLCRNG(u32 * seed);
u16 CalcMonChecksum(u16 * datap, u32 size);
PokemonDataBlock * GetSubstruct(struct BoxPokemon * boxmon, u32 personality, u8 which_struct);
void LoadMonBaseStats_HandleAlternateForme(int species, int forme, struct BaseStats * baseStats);
-u8 FUN_020690D4(struct BoxPokemon * boxmon);
+u8 GetBoxMonUnownLetter(struct BoxPokemon * boxmon);
#define ENCRY_ARGS_PTY(mon) (u16 *)&(mon)->party, sizeof((mon)->party), (mon)->box.pid
#define ENCRY_ARGS_BOX(boxmon) (u16 *)&(boxmon)->substructs, sizeof((boxmon)->substructs), (boxmon)->checksum
@@ -2458,12 +2458,12 @@ u32 FUN_020690C8(void)
return sizeof(struct BoxPokemon);
}
-u8 FUN_020690CC(struct Pokemon * pokemon)
+u8 GetMonUnownLetter(struct Pokemon * pokemon)
{
- return FUN_020690D4(&pokemon->box);
+ return GetBoxMonUnownLetter(&pokemon->box);
}
-u8 FUN_020690D4(struct BoxPokemon * boxmon)
+u8 GetBoxMonUnownLetter(struct BoxPokemon * boxmon)
{
return (u8)GetBoxMonData(boxmon, MON_DATA_FORME, NULL);
}
diff --git a/arm9/src/poketch.c b/arm9/src/poketch.c
new file mode 100644
index 00000000..54dff12b
--- /dev/null
+++ b/arm9/src/poketch.c
@@ -0,0 +1,262 @@
+#include "global.h"
+#include "MI_memory.h"
+#include "pokemon.h"
+#include "poketch.h"
+
+#pragma thumb on
+
+extern u16 BoxMon_GetAlternateForme(struct BoxPokemon * mon);
+
+static const u8 sMarkingMapInitialPos[][2] = {
+ { 0x68, 0x98 },
+ { 0x78, 0x98 },
+ { 0x88, 0x98 },
+ { 0x98, 0x98 },
+ { 0xA8, 0x98 },
+ { 0xB8, 0x98 },
+};
+
+u32 Sav2_Poketch_sizeof(void)
+{
+ return sizeof(struct SavePoketch);
+}
+
+void Sav2_Poketch_init(struct SavePoketch * poketch)
+{
+ int i;
+
+ for (i = 0; i < 32; i++)
+ {
+ poketch->unlockedApps[i] = 0;
+ }
+ poketch->numApps = 0;
+ poketch->selectedApp = 0;
+ poketch->isGiven = 0;
+ poketch->color = 0;
+ poketch->pedometerActive = 0;
+ poketch->stepCounter = 0;
+ poketch->alarmActive = 0;
+ poketch->alarmHour = 0;
+ poketch->alarmMinute = 0;
+ poketch->calendarMonth = 1; // January
+ poketch->calendarFlags = 0;
+ for (i = 0; i < 6; i++)
+ {
+ poketch->markingMapPos[i][0] = sMarkingMapInitialPos[i][0];
+ poketch->markingMapPos[i][1] = sMarkingMapInitialPos[i][1];
+ }
+ for (i = 0; i < 12; i++)
+ {
+ poketch->pokemonHistory[i][0] = SPECIES_NONE;
+ poketch->pokemonHistory[i][1] = 0;
+ }
+ poketch->dotArtistEnabled = 0;
+ Sav2_Poketch_UnlockApp(poketch, POKETCH_DIGITAL_WATCH);
+}
+
+void Sav2_Poketch_Give(struct SavePoketch * poketch)
+{
+ poketch->isGiven = TRUE;
+}
+
+BOOL Sav2_Poketch_IsGiven(struct SavePoketch * poketch)
+{
+ return poketch->isGiven;
+}
+
+u8 Sav2_Poketch_AppIsUnlocked(struct SavePoketch * poketch, PoketchApp app)
+{
+ return poketch->unlockedApps[app];
+}
+
+BOOL Sav2_Poketch_UnlockApp(struct SavePoketch * poketch, PoketchApp app)
+{
+ GF_ASSERT(app >= FIRST_POKETCH_APP_ID && app < NUM_POKETCH_APPS);
+ if (poketch->numApps < NUM_POKETCH_APPS && !poketch->unlockedApps[app])
+ {
+ poketch->unlockedApps[app] = TRUE;
+ poketch->numApps++;
+ if (app == POKETCH_PEDOMETER) // pedometer
+ {
+ poketch->pedometerActive = TRUE;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+PoketchApp Sav2_Poketch_GetSelectedApp(struct SavePoketch * poketch)
+{
+ return (PoketchApp)poketch->selectedApp;
+}
+
+PoketchApp Sav2_Poketch_CycleNextApp(struct SavePoketch * poketch)
+{
+ PoketchApp app = (PoketchApp)poketch->selectedApp;
+ PoketchApp prev = app;
+
+ while (1)
+ {
+ if (++app >= NUM_POKETCH_APPS)
+ app = FIRST_POKETCH_APP_ID;
+ if (app == prev)
+ break;
+ if (poketch->unlockedApps[app])
+ break;
+ }
+ poketch->selectedApp = (s8)app;
+ return (PoketchApp)poketch->selectedApp;
+}
+
+u8 Sav2_Poketch_GetScreenTint(struct SavePoketch * poketch)
+{
+ GF_ASSERT(poketch != NULL);
+ return poketch->color;
+}
+
+void Sav2_Poketch_SetScreenTint(struct SavePoketch * poketch, u32 color)
+{
+ GF_ASSERT(poketch != NULL);
+ GF_ASSERT(color < 8);
+ poketch->color = (u8)color;
+}
+
+u32 Sav2_Poketch_GetStepCounter(struct SavePoketch * poketch)
+{
+ return poketch->stepCounter;
+}
+
+void Sav2_Poketch_SetStepCounter(struct SavePoketch * poketch, u32 steps)
+{
+ if (poketch->pedometerActive)
+ poketch->stepCounter = steps;
+}
+
+BOOL Sav2_Poketch_GetAlarmState(struct SavePoketch * poketch)
+{
+ return poketch->alarmActive;
+}
+
+void Sav2_Poketch_GetAlarmSetTime(struct SavePoketch * poketch, u32 * hour_p, u32 * min_p)
+{
+ *hour_p = poketch->alarmHour;
+ *min_p = poketch->alarmMinute;
+}
+
+void Sav2_Poketch_SetAlarm(struct SavePoketch * poketch, BOOL enabled, u32 hour, u32 minute)
+{
+ poketch->alarmActive = enabled;
+ poketch->alarmHour = hour;
+ poketch->alarmMinute = minute;
+}
+
+void Sav2_Poketch_CalendarDateHighlight(struct SavePoketch * poketch, u32 month, u32 day)
+{
+ if (poketch->calendarMonth == month)
+ {
+ poketch->calendarFlags |= (1u << (day - 1));
+ }
+ else
+ {
+ poketch->calendarMonth = (u8)month;
+ poketch->calendarFlags = (1u << (day - 1));
+ }
+}
+
+void Sav2_Poketch_CalendarDateUnhighlight(struct SavePoketch * poketch, u32 month, u32 day)
+{
+ if (poketch->calendarMonth == month)
+ {
+ poketch->calendarFlags &= ~(1u << (day - 1));
+ }
+ else
+ {
+ poketch->calendarMonth = (u8)month;
+ poketch->calendarFlags = 0;
+ }
+}
+
+BOOL Sav2_Poketch_CalendarDateIsHighlighted(struct SavePoketch * poketch, u32 month, u32 day)
+{
+ if (poketch->calendarMonth == month)
+ {
+ return (BOOL)((poketch->calendarFlags >> (day - 1)) & 1);
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+void Sav2_Poketch_MarkingMapSetPos(struct SavePoketch * poketch, s32 mark, u8 x, u8 y)
+{
+ GF_ASSERT(mark < 6);
+ poketch->markingMapPos[mark][0] = x;
+ poketch->markingMapPos[mark][1] = y;
+}
+
+void Sav2_Poketch_MarkingMapGetPos(struct SavePoketch * poketch, s32 mark, u8 * x_p, u8 * y_p)
+{
+ GF_ASSERT(mark < 6);
+ *x_p = poketch->markingMapPos[mark][0];
+ *y_p = poketch->markingMapPos[mark][1];
+}
+
+u32 Sav2_Poketch_DotArtistIsEnabled(struct SavePoketch * poketch)
+{
+ return poketch->dotArtistEnabled;
+}
+
+void Sav2_Poketch_DotArtistGetDrawing(struct SavePoketch * poketch, void * grid)
+{
+ if (poketch->dotArtistEnabled)
+ {
+ MI_CpuCopy8(poketch->dotArtistGrid, grid, DOT_ARTIST_SIZE);
+ }
+}
+
+void Sav2_Poketch_DotArtistSetDrawingAndEnable(struct SavePoketch * poketch, void * grid)
+{
+ MI_CpuCopy8(grid, poketch->dotArtistGrid, DOT_ARTIST_SIZE);
+ poketch->dotArtistEnabled = TRUE;
+}
+
+void Sav2_Poketch_PokemonHistoryAddMon(struct SavePoketch * poketch, struct BoxPokemon * mon)
+{
+ int i = Sav2_Poketch_PokemonHistoryGetFirstEmptySlot(poketch);
+ if (i >= 12)
+ {
+ for (i = 0; i < 11; i++)
+ {
+ poketch->pokemonHistory[i][0] = poketch->pokemonHistory[i + 1][0];
+ poketch->pokemonHistory[i][1] = poketch->pokemonHistory[i + 1][1];
+ }
+ i = 11;
+ }
+ poketch->pokemonHistory[i][0] = (u16)GetBoxMonData(mon, MON_DATA_SPECIES, NULL);
+ poketch->pokemonHistory[i][1] = BoxMon_GetAlternateForme(mon);
+}
+
+int Sav2_Poketch_PokemonHistoryGetFirstEmptySlot(struct SavePoketch * poketch)
+{
+ int i;
+ for (i = 0; i < 12; i++)
+ {
+ if (poketch->pokemonHistory[i][0] == SPECIES_NONE)
+ return i;
+ }
+ return i;
+}
+
+void Sav2_Poketch_PokemonHistoryGetSlotN(struct SavePoketch * poketch, s32 i, u32 * species_p, u32 * forme_p)
+{
+ GF_ASSERT(i < 12);
+ GF_ASSERT(poketch->pokemonHistory[i][0] != SPECIES_NONE);
+ *species_p = poketch->pokemonHistory[i][0];
+ *forme_p = poketch->pokemonHistory[i][1];
+}
+
+struct SavePoketch * Sav2_Poketch_get(struct SaveBlock2 * sav2)
+{
+ return (struct SavePoketch *)SavArray_get(sav2, 5);
+}
diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c
index 58e1ff4c..02dc4a16 100644
--- a/arm9/src/save_arrays.c
+++ b/arm9/src/save_arrays.c
@@ -4,11 +4,12 @@
#include "save_block_2.h"
#include "party.h"
#include "event_data.h"
+#include "pokemon_storage_system.h"
+#include "sav_system_info.h"
+#include "poketch.h"
extern u32 FUN_0202B034(void);
extern u32 FUN_0202AC20(void);
-extern u32 Sav2_SysInfo_sizeof(void);
-extern u32 FUN_0204BE14(void);
extern u32 FUN_02034D7C(void);
extern u32 FUN_02023D64(void);
extern u32 FUN_02023C40(void);
@@ -37,11 +38,8 @@ extern u32 FUN_02029AE0(void);
extern u32 FUN_0202BE98(void);
extern u32 FUN_0202C0E0(void);
extern u32 FUN_02013B28(void);
-extern u32 PCStorage_sizeof(void);
extern void FUN_0202B03C(void *);
extern void FUN_0202AC28(void *);
-extern void Sav2_SysInfo_init(void *);
-extern void FUN_0204BE18(void *);
extern void FUN_02034D98(void *);
extern void FUN_02024378(void *);
extern void FUN_02023C48(void *);
@@ -70,7 +68,6 @@ extern void FUN_02029AE8(void *);
extern void FUN_0202BEA0(void *);
extern void FUN_0202C0E4(void *);
extern void FUN_02013B2C(void *);
-extern void PCStorage_init(void *);
const struct SaveChunkHeader UNK_020EE6E0[] = {
{ 0, 32, (SAVSIZEFN)FUN_0202B034, (SAVINITFN)FUN_0202B03C },
@@ -83,7 +80,7 @@ const struct SaveChunkHeader UNK_020EE700[] = {
{ 2, 0, (SAVSIZEFN)SavArray_Party_sizeof, (SAVINITFN)SavArray_Party_init },
{ 3, 0, (SAVSIZEFN)Sav2_Bag_sizeof, (SAVINITFN)Sav2_Bag_init },
{ 4, 0, (SAVSIZEFN)SavArray_Flags_sizeof, (SAVINITFN)SavArray_Flags_init },
- { 5, 0, (SAVSIZEFN)FUN_0204BE14, (SAVINITFN)FUN_0204BE18 },
+ { 5, 0, (SAVSIZEFN)Sav2_Poketch_sizeof, (SAVINITFN)Sav2_Poketch_init },
{ 6, 0, (SAVSIZEFN)FUN_02034D7C, (SAVINITFN)FUN_02034D98 },
{ 7, 0, (SAVSIZEFN)FUN_02023D64, (SAVINITFN)FUN_02024378 },
{ 8, 0, (SAVSIZEFN)FUN_02023C40, (SAVINITFN)FUN_02023C48 },
diff --git a/include/pokemon.h b/include/pokemon.h
index b76bf145..591da2f4 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -263,7 +263,7 @@ void FUN_02069038(u32 a0, u32 a1, u32 a2, s32 a3, u32 a4, u32 a5, u32 a6);
void FUN_020690AC(struct SomeDrawPokemonStruct * a0, u32 a1);
u32 FUN_020690C4(void);
u32 FUN_020690C8(void);
-u8 FUN_020690CC(struct Pokemon * pokemon);
+u8 GetMonUnownLetter(struct Pokemon * pokemon);
struct BoxPokemon * FUN_020690E4(struct Pokemon * pokemon);
u16 GetMonEvolution(struct PlayerParty * party, struct Pokemon * pokemon, u32 context, u32 usedItem, u32 * method_ret);
diff --git a/include/poketch.h b/include/poketch.h
new file mode 100644
index 00000000..1dcc2bcf
--- /dev/null
+++ b/include/poketch.h
@@ -0,0 +1,95 @@
+#ifndef POKEDIAMOND_POKETCH_H
+#define POKEDIAMOND_POKETCH_H
+
+#include "save_block_2.h"
+
+#define DOT_ARTIST_SIZE (480 / 4) // 2bpp
+
+typedef enum PoketchApp
+{
+ FIRST_POKETCH_APP_ID = 0,
+ POKETCH_DIGITAL_WATCH = FIRST_POKETCH_APP_ID,
+ POKETCH_CALCULATOR,
+ POKETCH_MEMO_PAD,
+ POKETCH_PEDOMETER,
+ POKETCH_POKEMON_LIST,
+ POKETCH_FRIENDSHIP_CHECKER,
+ POKETCH_DOWSING_MACHINE,
+ POKETCH_BERRY_SEARCHER,
+ POKETCH_DAY_CARE_CHECKER,
+ POKETCH_POKEMON_HISTORY,
+ POKETCH_COUNTER,
+ POKETCH_ANALOG_WATCH,
+ POKETCH_MARKING_MAP,
+ POKETCH_LINK_SEARCHER,
+ POKETCH_COIN_TOSS,
+ POKETCH_MOVE_TESTER,
+ POKETCH_CALENDAR,
+ POKETCH_DOT_ARTIST,
+ POKETCH_ROULETTE,
+ POKETCH_TRAINER_COUNTER,
+ POKETCH_KITCHEN_TIMER,
+ POKETCH_COLOR_CHANGER,
+ POKETCH_MATCHUP_CHECKER,
+ POKETCH_STOPWATCH,
+ POKETCH_ALARM_CLOCK,
+ NUM_POKETCH_APPS
+}
+PoketchApp;
+
+struct SavePoketch
+{
+ u8 isGiven:1; // set by completing the coupon sidequest in Jubilife
+ u8 pedometerActive:1; // set when you receive the Pedometer
+ u8 dotArtistEnabled:1; // set when you access dotArtist for the first time
+ u8 color:3; // set by Color Changer
+ // Green, Yellow, Orange, Red, Purple, Blue, Turquoise, White
+ u8 padding_00_6:2; // silence warnings
+ s8 numApps;
+ s8 selectedApp;
+ u8 unlockedApps[32]; // should be 25, one for each app
+ u8 filler_23[1]; // silence warnings
+ u32 stepCounter; // increments while pedometerActive is 1
+ u16 alarmActive:1;
+ u16 alarmHour:5;
+ u16 alarmMinute:6;
+ u16 padding_28_C:4; // silence warnings
+ u8 dotArtistGrid[DOT_ARTIST_SIZE];
+ u8 filler_A2[1]; // silence warnings
+ u32 calendarFlags; // flag X set == day (X + 1) marked
+ u8 calendarMonth;
+ // X and Y coordinates for each of six markings
+ u8 markingMapPos[6][2];
+ u8 filler_B5[1]; // silence warnings
+ u16 pokemonHistory[12][2];
+};
+
+u32 Sav2_Poketch_sizeof(void);
+void Sav2_Poketch_init(struct SavePoketch * poketch);
+void Sav2_Poketch_Give(struct SavePoketch * poketch);
+BOOL Sav2_Poketch_IsGiven(struct SavePoketch * poketch);
+u8 Sav2_Poketch_AppIsUnlocked(struct SavePoketch * poketch, PoketchApp app);
+BOOL Sav2_Poketch_UnlockApp(struct SavePoketch * poketch, PoketchApp app);
+PoketchApp Sav2_Poketch_GetSelectedApp(struct SavePoketch * poketch);
+PoketchApp Sav2_Poketch_CycleNextApp(struct SavePoketch * poketch);
+u8 Sav2_Poketch_GetScreenTint(struct SavePoketch * poketch);
+void Sav2_Poketch_SetScreenTint(struct SavePoketch * poketch, u32 color);
+u32 Sav2_Poketch_GetStepCounter(struct SavePoketch * poketch);
+void Sav2_Poketch_SetStepCounter(struct SavePoketch * poketch, u32 steps);
+BOOL Sav2_Poketch_GetAlarmState(struct SavePoketch * poketch);
+void Sav2_Poketch_GetAlarmSetTime(struct SavePoketch * poketch, u32 * hour_p, u32 * min_p);
+void Sav2_Poketch_SetAlarm(struct SavePoketch * poketch, BOOL enabled, u32 hour, u32 minute);
+void Sav2_Poketch_CalendarDateHighlight(struct SavePoketch * poketch, u32 month, u32 day);
+void Sav2_Poketch_CalendarDateUnhighlight(struct SavePoketch * poketch, u32 month, u32 day);
+BOOL Sav2_Poketch_CalendarDateIsHighlighted(struct SavePoketch * poketch, u32 month, u32 day);
+void Sav2_Poketch_MarkingMapSetPos(struct SavePoketch * poketch, s32 mark, u8 x, u8 y);
+void Sav2_Poketch_MarkingMapGetPos(struct SavePoketch * poketch, s32 mark, u8 * x_p, u8 * y_p);
+u32 Sav2_Poketch_DotArtistIsEnabled(struct SavePoketch * poketch);
+void Sav2_Poketch_DotArtistGetDrawing(struct SavePoketch * poketch, void * grid);
+void Sav2_Poketch_DotArtistSetDrawingAndEnable(struct SavePoketch * poketch, void * grid);
+void Sav2_Poketch_PokemonHistoryAddMon(struct SavePoketch * poketch, struct BoxPokemon * mon);
+int Sav2_Poketch_PokemonHistoryGetFirstEmptySlot(struct SavePoketch * poketch);
+void Sav2_Poketch_PokemonHistoryGetSlotN(struct SavePoketch * poketch, s32 i, u32 * species_p, u32 * forme_p);
+struct SavePoketch * Sav2_Poketch_get(struct SaveBlock2 * sav2);
+
+#endif //POKEDIAMOND_POKETCH_H