diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2021-05-24 09:31:37 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2021-05-24 09:31:37 -0400 |
commit | eb511d34eab6bdbb157a998b9aa5617b7679c242 (patch) | |
tree | 4dc10ee87beb4bb7e5d4ba761089c373fdde0d7c | |
parent | d9808a376ee20a2e6dd57d1f272886f2ad192302 (diff) |
Finish decomping sav_chatot
-rw-r--r-- | arm9/arm9.lsf | 1 | ||||
-rw-r--r-- | arm9/asm/scrcmd_3.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_02005CFC.s | 12 | ||||
-rw-r--r-- | arm9/asm/unk_02029EC4.s | 92 | ||||
-rw-r--r-- | arm9/asm/unk_020476CC.s | 12 | ||||
-rw-r--r-- | arm9/asm/unk_0206BF90.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_02080C38.s | 6 | ||||
-rw-r--r-- | arm9/asm/unk_020834D0.s | 4 | ||||
-rw-r--r-- | arm9/global.inc | 20 | ||||
-rw-r--r-- | arm9/modules/05/asm/module_05.s | 4 | ||||
-rw-r--r-- | arm9/modules/14/asm/module_14.s | 4 | ||||
-rw-r--r-- | arm9/modules/71/asm/module_71.s | 8 | ||||
-rw-r--r-- | arm9/modules/80/asm/module_80.s | 4 | ||||
-rw-r--r-- | arm9/src/main.c | 4 | ||||
-rw-r--r-- | arm9/src/sav_chatot.c | 81 | ||||
-rw-r--r-- | arm9/src/save_arrays.c | 6 | ||||
-rw-r--r-- | arm9/src/scrcmd_sound.c | 6 | ||||
-rw-r--r-- | include/sav_chatot.h | 24 |
18 files changed, 136 insertions, 156 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf index b89ac7ce..7a8f19f1 100644 --- a/arm9/arm9.lsf +++ b/arm9/arm9.lsf @@ -112,7 +112,6 @@ Static arm9 Object unk_02029CEC.o Object igt.o Object sav_chatot.o - Object unk_02029EC4.o Object unk_02029FB0.o Object unk_0202A1E0.o Object unk_0202A8F4.o diff --git a/arm9/asm/scrcmd_3.s b/arm9/asm/scrcmd_3.s index 28df2444..4568c590 100644 --- a/arm9/asm/scrcmd_3.s +++ b/arm9/asm/scrcmd_3.s @@ -173,7 +173,7 @@ FUN_0203FF10: ; 0x0203FF10 str r0, [sp, #0x30] ldr r0, [r5, #0x0] ldr r0, [r0, #0xc] - bl FUN_02029EF8 + bl Sav2_Chatot_get str r0, [sp, #0x34] add r0, sp, #0x14 bl FUN_02081214 diff --git a/arm9/asm/unk_02005CFC.s b/arm9/asm/unk_02005CFC.s index 6a601c58..7a7010b0 100644 --- a/arm9/asm/unk_02005CFC.s +++ b/arm9/asm/unk_02005CFC.s @@ -30,7 +30,7 @@ FUN_02005D20: ; 0x02005D20 bl FUN_02003D38 add r4, r0, #0x0 add r0, r5, #0x0 - bl FUN_02029F04 + bl Chatot_exists cmp r0, #0x0 bne _02005D3A mov r0, #0x0 @@ -80,10 +80,10 @@ _02005D70: lsl r0, r0, #0x10 lsr r4, r0, #0x10 add r0, r6, #0x0 - bl FUN_02029F10 + bl Chatot_GetData add r1, r0, #0x0 ldr r0, [sp, #0x0] - bl FUN_02029F14 + bl Chatot_Decode mov r0, #0xe bl FUN_02004930 str r0, [sp, #0x8] @@ -192,7 +192,7 @@ FUN_02005E6C: ; 0x02005E6C bl FUN_02004DB4 add r1, r0, #0x0 add r0, r4, #0x0 - bl FUN_02029F4C + bl Chatot_Encode pop {r4, pc} .balign 4 @@ -250,14 +250,14 @@ _02005EDC: .word 0x000001B9 FUN_02005EE0: ; 0x02005EE0 push {r4, lr} add r4, r0, #0x0 - bl FUN_02029F04 + bl Chatot_exists cmp r0, #0x0 bne _02005EF0 mov r0, #0x0 pop {r4, pc} _02005EF0: add r0, r4, #0x0 - bl FUN_02029F10 + bl Chatot_GetData mov r1, #0xf ldrsb r0, [r0, r1] sub r1, #0x2d diff --git a/arm9/asm/unk_02029EC4.s b/arm9/asm/unk_02029EC4.s deleted file mode 100644 index 2c4bdd91..00000000 --- a/arm9/asm/unk_02029EC4.s +++ /dev/null @@ -1,92 +0,0 @@ - .include "asm/macros.inc" - .include "global.inc" - - .text - - thumb_func_start FUN_02029F14 -FUN_02029F14: ; 0x02029F14 - push {r4-r7} - mov r5, #0x0 - mov r2, #0xfa - add r4, r5, #0x0 - mov r6, #0xf - lsl r2, r2, #0x2 -_02029F20: - ldrsb r7, [r1, r4] - add r3, r0, r5 - and r7, r6 - lsl r7, r7, #0x18 - lsr r7, r7, #0x18 - sub r7, #0x8 - lsl r7, r7, #0x18 - asr r7, r7, #0x14 - strb r7, [r0, r5] - ldrsb r7, [r1, r4] - add r4, r4, #0x1 - add r5, r5, #0x2 - lsl r7, r7, #0x14 - lsr r7, r7, #0x18 - sub r7, #0x8 - lsl r7, r7, #0x18 - asr r7, r7, #0x14 - strb r7, [r3, #0x1] - cmp r4, r2 - blt _02029F20 - pop {r4-r7} - bx lr - - thumb_func_start FUN_02029F4C -FUN_02029F4C: ; 0x02029F4C - push {r4-r7} - add r3, r0, #0x0 - add r2, r1, #0x0 - mov r0, #0x1 - mov r1, #0x0 - str r0, [r3, #0x0] - add r0, r1, #0x0 -_02029F5A: - ldrsb r4, [r2, r0] - add r6, r3, r1 - add r7, r2, r0 - asr r5, r4, #0x3 - lsr r5, r5, #0x1c - add r5, r4, r5 - lsl r4, r5, #0x14 - asr r4, r4, #0x18 - add r4, #0x8 - strb r4, [r6, #0x4] - mov r4, #0x4 - ldrsb r5, [r6, r4] - mov r4, #0x1 - ldrsb r4, [r7, r4] - add r0, r0, #0x2 - add r1, r1, #0x1 - asr r7, r4, #0x3 - lsr r7, r7, #0x1c - add r7, r4, r7 - lsl r4, r7, #0x14 - asr r4, r4, #0x18 - add r4, #0x8 - lsl r4, r4, #0x18 - lsr r4, r4, #0x14 - orr r4, r5 - strb r4, [r6, #0x4] - mov r4, #0x7d - lsl r4, r4, #0x4 - cmp r0, r4 - blt _02029F5A - pop {r4-r7} - bx lr - .balign 4 - - thumb_func_start FUN_02029F9C -FUN_02029F9C: ; 0x02029F9C - add r2, r0, #0x0 - add r0, r1, #0x0 - add r1, r2, #0x0 - mov r2, #0xfb - ldr r3, _02029FAC ; =MIi_CpuCopyFast - lsl r2, r2, #0x2 - bx r3 - nop -_02029FAC: .word MIi_CpuCopyFast diff --git a/arm9/asm/unk_020476CC.s b/arm9/asm/unk_020476CC.s index 7e25689f..54679259 100644 --- a/arm9/asm/unk_020476CC.s +++ b/arm9/asm/unk_020476CC.s @@ -97,7 +97,7 @@ _0204775C: add r4, r7, #0x0 _02047774: add r0, r5, #0x0 - bl FUN_02029EE4 + bl Chatot_new mov r1, #0x46 lsl r1, r1, #0x2 str r0, [r4, r1] @@ -455,11 +455,11 @@ FUN_02047A64: ; 0x02047A64 add r2, r0, r2 mov r0, #0x46 lsl r0, r0, #0x2 - ldr r3, _02047A74 ; =FUN_02029F9C + ldr r3, _02047A74 ; =Chatot_copy ldr r0, [r2, r0] bx r3 nop -_02047A74: .word FUN_02029F9C +_02047A74: .word Chatot_copy thumb_func_start FUN_02047A78 FUN_02047A78: ; 0x02047A78 @@ -480,7 +480,7 @@ FUN_02047A78: ; 0x02047A78 bl Sav2_Pokedex_get str r0, [sp, #0x4] ldr r0, [r4, #0xc] - bl FUN_02029EF8 + bl Sav2_Chatot_get str r0, [sp, #0x8] ldr r0, [r4, #0xc] bl Sav2_PlayerData_GetOptionsAddr @@ -628,7 +628,7 @@ FUN_02047BC0: ; 0x02047BC0 str r0, [sp, #0xc] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] - bl FUN_02029EF8 + bl Sav2_Chatot_get str r0, [sp, #0x8] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] @@ -795,7 +795,7 @@ FUN_02047D48: ; 0x02047D48 str r0, [sp, #0x18] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] - bl FUN_02029EF8 + bl Sav2_Chatot_get str r0, [sp, #0x14] ldr r0, [sp, #0x0] ldr r0, [r0, #0xc] diff --git a/arm9/asm/unk_0206BF90.s b/arm9/asm/unk_0206BF90.s index d672d875..acf84738 100644 --- a/arm9/asm/unk_0206BF90.s +++ b/arm9/asm/unk_0206BF90.s @@ -572,7 +572,7 @@ _0206C350: add r0, r4, #0x0 ldr r1, [r2, r1] add r0, #0x20 - bl FUN_02029F9C + bl Chatot_copy mov r0, #0x1 pop {r4, pc} .balign 4 diff --git a/arm9/asm/unk_02080C38.s b/arm9/asm/unk_02080C38.s index 0f1630ed..36539633 100644 --- a/arm9/asm/unk_02080C38.s +++ b/arm9/asm/unk_02080C38.s @@ -916,7 +916,7 @@ _020812F2: add r5, r4, #0x0 _02081304: mov r0, #0x14 - bl FUN_02029EE4 + bl Chatot_new mov r1, #0x57 lsl r1, r1, #0x2 str r0, [r5, r1] @@ -927,7 +927,7 @@ _02081304: add r0, r1, #0x0 ldr r0, [r4, r0] ldr r1, [r6, #0x20] - bl FUN_02029F9C + bl Chatot_copy ldr r0, [r6, #0x8] ldr r1, [r4, #0x0] bl CopyPokemonToPokemon @@ -1900,7 +1900,7 @@ _02081A7C: strb r0, [r4, r2] pop {r3-r7, pc} _02081A8A: - bl FUN_02029EC4 + bl Sav2_Chatot_sizeof add r2, r0, #0x0 mov r0, #0x57 lsl r0, r0, #0x2 diff --git a/arm9/asm/unk_020834D0.s b/arm9/asm/unk_020834D0.s index e86c6f2d..39062a81 100644 --- a/arm9/asm/unk_020834D0.s +++ b/arm9/asm/unk_020834D0.s @@ -830,7 +830,7 @@ FUN_02083AA8: ; 0x02083AA8 push {r3-r5, lr} add r5, r2, #0x0 add r4, r3, #0x0 - bl FUN_02029EC4 + bl Sav2_Chatot_sizeof add r2, r0, #0x0 ldrb r1, [r5, r2] add r0, r5, #0x0 @@ -854,7 +854,7 @@ FUN_02083AD4: ; 0x02083AD4 add r4, r0, #0x0 add r7, r1, #0x0 add r6, r2, #0x0 - bl FUN_02029EC4 + bl Sav2_Chatot_sizeof add r5, r0, #0x0 ldr r0, _02083B0C ; =0x00000585 add r4, r4, r0 diff --git a/arm9/global.inc b/arm9/global.inc index 6a3b9a32..e4c26196 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -1977,16 +1977,16 @@ .extern AddIGTSeconds .extern GetIGTHours .extern GetIGTMinutes -.extern FUN_02029EC4 -.extern FUN_02029ECC -.extern FUN_02029EE4 -.extern FUN_02029EF8 -.extern FUN_02029F04 -.extern FUN_02029F08 -.extern FUN_02029F10 -.extern FUN_02029F14 -.extern FUN_02029F4C -.extern FUN_02029F9C +.extern Sav2_Chatot_sizeof +.extern Sav2_Chatot_init +.extern Chatot_new +.extern Sav2_Chatot_get +.extern Chatot_exists +.extern Chatot_invalidate +.extern Chatot_GetData +.extern Chatot_Decode +.extern Chatot_Encode +.extern Chatot_copy .extern FUN_02029FB0 .extern FUN_02029FB8 .extern FUN_02029FC8 diff --git a/arm9/modules/05/asm/module_05.s b/arm9/modules/05/asm/module_05.s index ebf46a48..ffb9dbe2 100644 --- a/arm9/modules/05/asm/module_05.s +++ b/arm9/modules/05/asm/module_05.s @@ -7747,8 +7747,8 @@ _021EC544: cmp r0, #0 bne _021EC572 add r0, r7, #0 - bl FUN_02029EF8 - bl FUN_02029F08 + bl Sav2_Chatot_get + bl Chatot_invalidate _021EC572: add sp, #0x24 pop {r4, r5, r6, r7, pc} diff --git a/arm9/modules/14/asm/module_14.s b/arm9/modules/14/asm/module_14.s index b95ab0d6..65c14608 100644 --- a/arm9/modules/14/asm/module_14.s +++ b/arm9/modules/14/asm/module_14.s @@ -122,8 +122,8 @@ StoragePC_Overlay_Teardown: ; 0x021D75B8 mov r0, #0x47 lsl r0, r0, #2 ldr r0, [r4, r0] - bl FUN_02029EF8 - bl FUN_02029F08 + bl Sav2_Chatot_get + bl Chatot_invalidate _021D75DE: mov r0, #0x45 lsl r0, r0, #2 diff --git a/arm9/modules/71/asm/module_71.s b/arm9/modules/71/asm/module_71.s index b9d99cf4..4b488741 100644 --- a/arm9/modules/71/asm/module_71.s +++ b/arm9/modules/71/asm/module_71.s @@ -1161,7 +1161,7 @@ _0222DF74: b _0222E0E8 _0222DF80: ldr r0, [r4, #4] - bl FUN_02029EF8 + bl Sav2_Chatot_get bl MOD71_0222F528 ldr r0, [r4, #0x4c] add r0, r0, #1 @@ -3446,7 +3446,7 @@ MOD71_0222F264: ; 0x0222F264 cmp r0, r1 bne _0222F2AE ldr r0, [r4, #4] - bl FUN_02029EF8 + bl Sav2_Chatot_get mov r1, #0 mov r2, #0x64 add r3, r1, #0 @@ -6379,8 +6379,8 @@ _02230A40: cmp r0, #0 bne _02230A98 ldr r0, [r5, #0x10] - bl FUN_02029EF8 - bl FUN_02029F08 + bl Sav2_Chatot_get + bl Chatot_invalidate _02230A98: ldr r0, [r5, #0x10] add r1, r4, #0 diff --git a/arm9/modules/80/asm/module_80.s b/arm9/modules/80/asm/module_80.s index 9abe50f0..512cdc80 100644 --- a/arm9/modules/80/asm/module_80.s +++ b/arm9/modules/80/asm/module_80.s @@ -16126,8 +16126,8 @@ _02235590: bne _022355DC ldr r0, [r5] ldr r0, [r0, #0x20] - bl FUN_02029EF8 - bl FUN_02029F08 + bl Sav2_Chatot_get + bl Chatot_invalidate _022355DC: cmp r6, #0 beq _022355EA diff --git a/arm9/src/main.c b/arm9/src/main.c index c05fa1f3..863cb654 100644 --- a/arm9/src/main.c +++ b/arm9/src/main.c @@ -33,7 +33,7 @@ extern void GF_InitRTCWork(void); extern void FUN_02002C14(void); extern void FUN_02002C50(int, int); extern struct SaveBlock2 * SaveBlock2_new(void); -extern void * FUN_02029EF8(struct SaveBlock2 *); +extern void * Sav2_Chatot_get(struct SaveBlock2 *); extern int FUN_020337E8(int); extern void FUN_02034188(int, int); extern int FUN_020227FC(struct SaveBlock2 *); @@ -73,7 +73,7 @@ THUMB_FUNC void NitroMain(void) FUN_02002C50(3, 3); UNK_02016FA8.unk10 = -1; UNK_02016FA8.unk18 = SaveBlock2_new(); - InitSoundData(FUN_02029EF8(UNK_02016FA8.unk18), Sav2_PlayerData_GetOptionsAddr(UNK_02016FA8.unk18)); + InitSoundData(Sav2_Chatot_get(UNK_02016FA8.unk18), Sav2_PlayerData_GetOptionsAddr(UNK_02016FA8.unk18)); Init_Timer3(); if (FUN_020337E8(3) == 3) FUN_02034188(3, 0); diff --git a/arm9/src/sav_chatot.c b/arm9/src/sav_chatot.c index f2707821..7b240a99 100644 --- a/arm9/src/sav_chatot.c +++ b/arm9/src/sav_chatot.c @@ -1,49 +1,98 @@ #include "global.h"
#include "MI_memory.h"
#include "heap.h"
-#include "save_block_2.h"
+#include "sav_chatot.h"
-struct SaveChatotSoundClip
-{
- // TODO: Fill this in
- BOOL exists;
- s8 data[1000];
-};
-
-THUMB_FUNC u32 FUN_02029EC4(void)
+THUMB_FUNC u32 Sav2_Chatot_sizeof(void)
{
return sizeof(struct SaveChatotSoundClip);
}
-THUMB_FUNC void FUN_02029ECC(struct SaveChatotSoundClip * chatot)
+THUMB_FUNC void Sav2_Chatot_init(struct SaveChatotSoundClip * chatot)
{
MIi_CpuClear32(0, chatot, sizeof(struct SaveChatotSoundClip));
chatot->exists = FALSE;
}
-THUMB_FUNC struct SaveChatotSoundClip * FUN_02029EE4(u32 heap_id)
+THUMB_FUNC struct SaveChatotSoundClip * Chatot_new(u32 heap_id)
{
struct SaveChatotSoundClip * ret = (struct SaveChatotSoundClip *)AllocFromHeap(heap_id, sizeof(struct SaveChatotSoundClip));
- FUN_02029ECC(ret);
+ Sav2_Chatot_init(ret);
return ret;
}
-THUMB_FUNC struct SaveChatotSoundClip * FUN_02029EF8(struct SaveBlock2 * sav2)
+THUMB_FUNC struct SaveChatotSoundClip * Sav2_Chatot_get(struct SaveBlock2 * sav2)
{
return (struct SaveChatotSoundClip *) SavArray_get(sav2, 22);
}
-THUMB_FUNC u32 FUN_02029F04(struct SaveChatotSoundClip * chatot)
+THUMB_FUNC BOOL Chatot_exists(struct SaveChatotSoundClip * chatot)
{
return chatot->exists;
}
-THUMB_FUNC void FUN_02029F08(struct SaveChatotSoundClip * chatot)
+THUMB_FUNC void Chatot_invalidate(struct SaveChatotSoundClip * chatot)
{
chatot->exists = FALSE;
}
-THUMB_FUNC s8 * FUN_02029F10(struct SaveChatotSoundClip * chatot)
+THUMB_FUNC s8 * Chatot_GetData(struct SaveChatotSoundClip * chatot)
{
return chatot->data;
}
+
+static inline s8 transform(u8 value)
+{
+ return (s8)(value - 8);
+}
+
+THUMB_FUNC void Chatot_Decode(s8 * dest, const s8 * data)
+{
+ s32 i;
+ s32 dest_i;
+ u8 val;
+ s8 val2;
+
+ for (dest_i = 0, i = 0; i < 1000; i++, dest_i += 2)
+ {
+ val = (u8)(data[i] & 0xF);
+ val2 = transform(val);
+ dest[dest_i + 0] = (s8)(val2 << 4);
+ val = (u8)(data[i] >> 4);
+ val2 = transform(val);
+ dest[dest_i + 1] = (s8)(val2 << 4);
+ }
+}
+
+static inline u8 untransform(s8 val)
+{
+ val /= 16;
+ return (u8)(val + 8);
+}
+
+THUMB_FUNC void Chatot_Encode(struct SaveChatotSoundClip * chatot, const s8 * data)
+{
+ s32 src_i;
+ s32 i = 0;
+ u8 val2;
+ s8 val;
+ chatot->exists = TRUE;
+
+ for (src_i = 0; src_i < 2000; src_i += 2)
+ {
+ val = data[src_i + 0];
+ val2 = untransform(val);
+ chatot->data[i] = (s8)val2;
+
+ val = data[src_i + 1];
+ val2 = untransform(val);
+ chatot->data[i] |= val2 << 4;
+
+ i++;
+ }
+}
+
+THUMB_FUNC void Chatot_copy(struct SaveChatotSoundClip * dest, const struct SaveChatotSoundClip * src)
+{
+ MIi_CpuCopyFast(src, dest, sizeof(struct SaveChatotSoundClip));
+}
diff --git a/arm9/src/save_arrays.c b/arm9/src/save_arrays.c index 8520f2c1..f4b18b86 100644 --- a/arm9/src/save_arrays.c +++ b/arm9/src/save_arrays.c @@ -15,6 +15,7 @@ #include "seal.h" #include "unk_020139D8.h" #include "unk_02024E64.h" +#include "sav_chatot.h" extern u32 FUN_0202AC20(void); extern u32 FUN_02034D7C(void); @@ -26,7 +27,7 @@ extern u32 FUN_02028054(void); extern u32 FUN_02028980(void); extern u32 FUN_02029A84(void); extern u32 FUN_02029FB0(void); -extern u32 FUN_02029EC4(void); +extern u32 Sav2_Chatot_sizeof(void); extern u32 FUN_0202A89C(void); extern u32 FUN_0202A8F4(void); extern u32 FUN_0202A924(void); @@ -47,7 +48,6 @@ extern void FUN_0202805C(void *); extern void FUN_02028994(void *); extern void FUN_02029A8C(void *); extern void FUN_02029FB8(void *); -extern void FUN_02029ECC(void *); extern void FUN_0202A8A4(void *); extern void FUN_0202A8F8(void *); extern void FUN_0202A92C(void *); @@ -87,7 +87,7 @@ const struct SaveChunkHeader UNK_020EE700[] = { { 19, 0, (SAVSIZEFN)FUN_02029A84, (SAVINITFN)FUN_02029A8C }, { 20, 0, (SAVSIZEFN)FUN_02029FB0, (SAVINITFN)FUN_02029FB8 }, { 21, 0, (SAVSIZEFN)Sav2_SealCase_sizeof, (SAVINITFN)Sav2_SealCase_init }, - { 22, 0, (SAVSIZEFN)FUN_02029EC4, (SAVINITFN)FUN_02029ECC }, + { 22, 0, (SAVSIZEFN)Sav2_Chatot_sizeof, (SAVINITFN)Sav2_Chatot_init }, { 23, 0, (SAVSIZEFN)FUN_0202A89C, (SAVINITFN)FUN_0202A8A4 }, { 24, 0, (SAVSIZEFN)FUN_0202A8F4, (SAVINITFN)FUN_0202A8F8 }, { 25, 0, (SAVSIZEFN)FUN_0202A924, (SAVINITFN)FUN_0202A92C }, diff --git a/arm9/src/scrcmd_sound.c b/arm9/src/scrcmd_sound.c index 5acaae1e..df611ec7 100644 --- a/arm9/src/scrcmd_sound.c +++ b/arm9/src/scrcmd_sound.c @@ -1,6 +1,6 @@ #include "scrcmd.h" -extern void* FUN_02029EF8(struct SaveBlock2* sav2); +extern void* Sav2_Chatot_get(struct SaveBlock2* sav2); extern u32 FUN_02005D20(void *); extern void FUN_02005E6C(void *); extern void FUN_0200433C(u32, u32, u32); @@ -203,7 +203,7 @@ THUMB_FUNC BOOL ScrCmd_Unk0059(struct ScriptContext* ctx) { u16* ret_ptr = GetVarPointer(ctx->unk80, ScriptReadHalfword(ctx)); - void* unk = FUN_02029EF8(ctx->unk80->saveBlock2); + void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2); if (FUN_02005D20(unk) == 1) { *ret_ptr = 1; @@ -241,7 +241,7 @@ THUMB_FUNC BOOL ScrCmd_Unk005B(struct ScriptContext* ctx) THUMB_FUNC BOOL ScrCmd_Unk005C(struct ScriptContext* ctx) { - void* unk = FUN_02029EF8(ctx->unk80->saveBlock2); + void* unk = Sav2_Chatot_get(ctx->unk80->saveBlock2); FUN_02005E6C(unk); return TRUE; diff --git a/include/sav_chatot.h b/include/sav_chatot.h new file mode 100644 index 00000000..858423c5 --- /dev/null +++ b/include/sav_chatot.h @@ -0,0 +1,24 @@ +#ifndef POKEDIAMOND_SAV_CHATOT_H
+#define POKEDIAMOND_SAV_CHATOT_H
+
+#include "save_block_2.h"
+
+struct SaveChatotSoundClip
+{
+ // TODO: Fill this in
+ BOOL exists;
+ s8 data[1000];
+};
+
+u32 Sav2_Chatot_sizeof(void);
+void Sav2_Chatot_init(struct SaveChatotSoundClip * chatot);
+struct SaveChatotSoundClip * Chatot_new(u32 heap_id);
+struct SaveChatotSoundClip * Sav2_Chatot_get(struct SaveBlock2 * sav2);
+BOOL Chatot_exists(struct SaveChatotSoundClip * chatot);
+void Chatot_invalidate(struct SaveChatotSoundClip * chatot);
+s8 * Chatot_GetData(struct SaveChatotSoundClip * chatot);
+void Chatot_Decode(s8 * dest, const s8 * data);
+void Chatot_Encode(struct SaveChatotSoundClip * chatot, const s8 * data);
+void Chatot_copy(struct SaveChatotSoundClip * dest, const struct SaveChatotSoundClip * src);
+
+#endif //POKEDIAMOND_SAV_CHATOT_H
|