summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkira Akashi <rubenru09@aol.com>2021-05-24 15:01:06 +0100
committerGitHub <noreply@github.com>2021-05-24 15:01:06 +0100
commitfebbf5dc3d673ae40df7b6c545a40e945e6eda17 (patch)
tree6dee393a1ec73282ca34a0a1f0526359630c2855
parenta978faa0d8c222c5fce4db4f0dad19ed235eecfc (diff)
parent3188237ddaf9aefcbea90967a15df7b78fe8e336 (diff)
Merge pull request #386 from PikalaxALT/pikalax_work
Decompile code related to Chatot's data in the save block
-rw-r--r--arm9/arm9.lsf2
-rw-r--r--arm9/asm/scrcmd_3.s2
-rw-r--r--arm9/asm/unk_020040F4.s98
-rw-r--r--arm9/asm/unk_020051F4.s14
-rw-r--r--arm9/asm/unk_02005CFC.s12
-rw-r--r--arm9/asm/unk_02029EC4.s149
-rw-r--r--arm9/asm/unk_020476CC.s12
-rw-r--r--arm9/asm/unk_0206BF90.s2
-rw-r--r--arm9/asm/unk_02080C38.s6
-rw-r--r--arm9/asm/unk_020834D0.s4
-rw-r--r--arm9/global.inc34
-rw-r--r--arm9/lib/include/NNS_SND_arc.h2
-rw-r--r--arm9/lib/include/NNS_SND_heap.h6
-rw-r--r--arm9/modules/05/asm/module_05.s4
-rw-r--r--arm9/modules/14/asm/module_14.s4
-rw-r--r--arm9/modules/71/asm/module_71.s8
-rw-r--r--arm9/modules/80/asm/module_80.s4
-rw-r--r--arm9/src/main.c7
-rw-r--r--arm9/src/sav_chatot.c98
-rw-r--r--arm9/src/save_arrays.c6
-rw-r--r--arm9/src/scrcmd_sound.c6
-rw-r--r--arm9/src/sound.c74
-rw-r--r--include/sav_chatot.h24
-rw-r--r--include/sound.h25
24 files changed, 286 insertions, 317 deletions
diff --git a/arm9/arm9.lsf b/arm9/arm9.lsf
index 5d1426c3..7a8f19f1 100644
--- a/arm9/arm9.lsf
+++ b/arm9/arm9.lsf
@@ -111,7 +111,7 @@ Static arm9
Object seal_case.o
Object unk_02029CEC.o
Object igt.o
- Object unk_02029EC4.o
+ Object sav_chatot.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_020040F4.s b/arm9/asm/unk_020040F4.s
index 5e62cb80..86e069f9 100644
--- a/arm9/asm/unk_020040F4.s
+++ b/arm9/asm/unk_020040F4.s
@@ -203,133 +203,133 @@ _0200421A: ; jump table (using 16-bit offset)
.short _020042AE - _0200421A - 2; case 3
_02004222:
mov r0, #0x1
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200422C:
mov r0, #0x2
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004236:
mov r0, #0xd
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004240:
mov r0, #0x1
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200424A:
mov r0, #0x2
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004254:
mov r0, #0x1
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200425E:
mov r0, #0xb
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004268:
mov r0, #0x1
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004272:
mov r0, #0xe
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200427C:
mov r0, #0x3
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004286:
mov r0, #0x6
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004290:
mov r0, #0x5
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200429A:
mov r0, #0x9
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042A4:
mov r0, #0xa
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042AE:
ldr r0, _02004330 ; =0x000005E5
- bl FUN_02003FDC
+ bl GF_Snd_LoadBank
ldr r0, _02004330 ; =0x000005E5
- bl FUN_02003FC4
+ bl GF_Snd_LoadWaveArc
add r1, r0, #0x0
b _0200432C
_020042BE:
mov r0, #0xc
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042C8:
mov r0, #0x7
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042D2:
mov r0, #0x8
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042DC:
mov r0, #0xf
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042E6:
mov r0, #0x3
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042F0:
mov r0, #0x5
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_020042FA:
mov r0, #0xf
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_02004304:
mov r0, #0x4
- bl FUN_02003F78
+ bl GF_Snd_LoadGroup
add r1, r0, #0x0
b _0200432C
_0200430E:
ldr r0, _02004334 ; =0x000005ED
- bl FUN_02003FDC
+ bl GF_Snd_LoadBank
ldr r0, _02004334 ; =0x000005ED
- bl FUN_02003FC4
+ bl GF_Snd_LoadWaveArc
add r1, r0, #0x0
b _0200432C
_0200431E:
ldr r0, _02004338 ; =0x000005EC
- bl FUN_02003FDC
+ bl GF_Snd_LoadBank
ldr r0, _02004338 ; =0x000005EC
- bl FUN_02003FC4
+ bl GF_Snd_LoadWaveArc
add r1, r0, #0x0
_0200432C:
add r0, r1, #0x0
@@ -536,15 +536,15 @@ FUN_020044A8: ; 0x020044A8
mov r0, #0x17
bl FUN_02003D38
ldr r0, [r0, #0x0]
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
mov r0, #0x18
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
add r0, r4, #0x0
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
pop {r4, pc}
thumb_func_start FUN_020044D4
@@ -588,12 +588,12 @@ _02004528:
bne _02004560
mov r0, #0x2
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
mov r0, #0x4
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
cmp r4, r5
beq _02004554
mov r0, #0x1
@@ -628,17 +628,17 @@ FUN_02004568: ; 0x02004568
beq _02004594
add r0, r5, #0x0
mov r1, #0x4
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
bl ErrorHandling
b _0200459C
_02004594:
ldrh r0, [r4, #0x0]
mov r1, #0x6
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
_0200459C:
mov r0, #0x1a
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
mov r0, #0x1
mov r1, #0x0
bl FUN_020047C8
@@ -671,18 +671,18 @@ FUN_020045C4: ; 0x020045C4
_020045E4:
mov r0, #0x1
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
ldrh r0, [r4, #0x0]
mov r1, #0x2
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
mov r0, #0x18
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
mov r0, #0x4
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
ldrh r0, [r4, #0x0]
bl FUN_02004900
ldr r1, _02004644 ; =0x000003E9
@@ -693,17 +693,17 @@ _020045E4:
beq _02004630
add r0, r7, #0x0
mov r1, #0x4
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
bl ErrorHandling
b _02004638
_02004630:
ldrh r0, [r4, #0x0]
mov r1, #0x4
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
_02004638:
mov r0, #0x1a
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
_02004642:
pop {r3-r7, pc}
.balign 4
@@ -718,12 +718,12 @@ FUN_02004648: ; 0x02004648
bl FUN_020051AC
mov r0, #0x2
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
mov r0, #0x5
bl FUN_02004180
mov r0, #0x19
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
mov r0, #0x1
bl FUN_02004DBC
add r0, r4, #0x0
@@ -786,7 +786,7 @@ FUN_020046E8: ; 0x020046E8
bl FUN_02004180
mov r0, #0x1b
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
pop {r4, pc}
.balign 4
@@ -820,7 +820,7 @@ FUN_02004738: ; 0x02004738
push {r3, lr}
mov r0, #0x4
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
pop {r3, pc}
.balign 4
@@ -1824,7 +1824,7 @@ FUN_02004E98: ; 0x02004E98
add r5, r0, #0x0
mov r0, #0x5
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
lsl r0, r5, #0x10
lsr r4, r0, #0x10
ldr r0, _02004ECC ; =0x000001B9
@@ -1839,7 +1839,7 @@ _02004EBA:
mov r4, #0x1
_02004EBC:
add r0, r4, #0x0
- bl FUN_02003FC4
+ bl GF_Snd_LoadWaveArc
add r0, r4, #0x0
bl FUN_02004ED0
pop {r3-r5, pc}
diff --git a/arm9/asm/unk_020051F4.s b/arm9/asm/unk_020051F4.s
index 12b0c8cb..843ae7b6 100644
--- a/arm9/asm/unk_020051F4.s
+++ b/arm9/asm/unk_020051F4.s
@@ -81,12 +81,12 @@ FUN_02005288: ; 0x02005288
mov r0, #0x3
add r4, r2, #0x0
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
add r0, r5, #0x0
- bl FUN_02003F90
+ bl GF_Snd_LoadSeq
mov r0, #0x1a
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
add r0, r4, #0x0
bl FUN_02003FF4
add r1, r5, #0x0
@@ -148,7 +148,7 @@ _02005318:
_0200532A:
add r0, r5, #0x0
mov r1, #0x1
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
mov r0, #0x7
bl FUN_02003FF4
add r1, r5, #0x0
@@ -1232,10 +1232,10 @@ PlayBGM: ; 0x02005C28
_02005C48:
mov r0, #0x1c
bl FUN_02003D38
- bl FUN_02003F3C
+ bl GF_Snd_SaveState
add r0, r5, #0x0
mov r1, #0x3
- bl FUN_02003FA8
+ bl GF_Snd_LoadSeqEx
mov r0, #0x2
bl FUN_02003FF4
add r1, r5, #0x0
@@ -1282,7 +1282,7 @@ FUN_02005CA0: ; 0x02005CA0
bl NNS_SndPlayerStopSeq
mov r0, #0x6
bl FUN_02004748
- bl FUN_02003F64
+ bl GF_Snd_RestoreState
pop {r4, pc}
thumb_func_start FUN_02005CBC
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 03893fab..00000000
--- a/arm9/asm/unk_02029EC4.s
+++ /dev/null
@@ -1,149 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- thumb_func_start FUN_02029EC4
-FUN_02029EC4: ; 0x02029EC4
- mov r0, #0xfb
- lsl r0, r0, #0x2
- bx lr
- .balign 4
-
- thumb_func_start FUN_02029ECC
-FUN_02029ECC: ; 0x02029ECC
- push {r4, lr}
- add r4, r0, #0x0
- mov r2, #0xfb
- mov r0, #0x0
- add r1, r4, #0x0
- lsl r2, r2, #0x2
- bl MIi_CpuClear32
- mov r0, #0x0
- str r0, [r4, #0x0]
- pop {r4, pc}
- .balign 4
-
- thumb_func_start FUN_02029EE4
-FUN_02029EE4: ; 0x02029EE4
- push {r4, lr}
- mov r1, #0xfb
- lsl r1, r1, #0x2
- bl AllocFromHeap
- add r4, r0, #0x0
- bl FUN_02029ECC
- add r0, r4, #0x0
- pop {r4, pc}
-
- thumb_func_start FUN_02029EF8
-FUN_02029EF8: ; 0x02029EF8
- ldr r3, _02029F00 ; =SavArray_get
- mov r1, #0x16
- bx r3
- nop
-_02029F00: .word SavArray_get
-
- thumb_func_start FUN_02029F04
-FUN_02029F04: ; 0x02029F04
- ldr r0, [r0, #0x0]
- bx lr
-
- thumb_func_start FUN_02029F08
-FUN_02029F08: ; 0x02029F08
- mov r1, #0x0
- str r1, [r0, #0x0]
- bx lr
- .balign 4
-
- thumb_func_start FUN_02029F10
-FUN_02029F10: ; 0x02029F10
- add r0, r0, #0x4
- bx lr
-
- 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 f389ad93..e4c26196 100644
--- a/arm9/global.inc
+++ b/arm9/global.inc
@@ -269,13 +269,13 @@
.extern DoSoundUpdateFrame
.extern FUN_02003CE8
.extern FUN_02003D38
-.extern FUN_02003F3C
-.extern FUN_02003F64
-.extern FUN_02003F78
-.extern FUN_02003F90
-.extern FUN_02003FA8
-.extern FUN_02003FC4
-.extern FUN_02003FDC
+.extern GF_Snd_SaveState
+.extern GF_Snd_RestoreState
+.extern GF_Snd_LoadGroup
+.extern GF_Snd_LoadSeq
+.extern GF_Snd_LoadSeqEx
+.extern GF_Snd_LoadWaveArc
+.extern GF_Snd_LoadBank
.extern FUN_02003FF4
.extern FUN_02004018
.extern FUN_020040F4
@@ -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/lib/include/NNS_SND_arc.h b/arm9/lib/include/NNS_SND_arc.h
index 656c8728..95b33141 100644
--- a/arm9/lib/include/NNS_SND_arc.h
+++ b/arm9/lib/include/NNS_SND_arc.h
@@ -32,7 +32,7 @@ void NNS_SndArcInit(NNSSndArc *, const char *, void *, u32);
void NNS_SndArcPlayerSetup(void *);
void NNS_SndMain(void);
void NNS_SndHandleInit(u32 *);
-void NNS_SndPlayerStopSeqByPlayerNo(int, int);
+void NNS_SndPlayerStopSeqByPlayerNo(int playerNo, int fadeFrame);
void NNS_SndHandleReleaseSeq(void);
#endif //GUARD_NNS_SND_ARC_H
diff --git a/arm9/lib/include/NNS_SND_heap.h b/arm9/lib/include/NNS_SND_heap.h
index 9dc06a24..2929d1bb 100644
--- a/arm9/lib/include/NNS_SND_heap.h
+++ b/arm9/lib/include/NNS_SND_heap.h
@@ -4,8 +4,8 @@
struct NNSSndHeap;
typedef struct NNSSndHeap* NNSSndHeapHandle;
-NNSSndHeapHandle * NNS_SndHeapCreate(void *, u32);
-int NNS_SndHeapSaveState(NNSSndHeapHandle *);
-void NNS_SndHeapLoadState(NNSSndHeapHandle *, int);
+NNSSndHeapHandle * NNS_SndHeapCreate(void * start, u32 size);
+int NNS_SndHeapSaveState(NNSSndHeapHandle * heap);
+void NNS_SndHeapLoadState(NNSSndHeapHandle * heap, int level);
#endif //GUARD_NNS_SND_HEAP_H
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..314c4509 100644
--- a/arm9/src/main.c
+++ b/arm9/src/main.c
@@ -26,17 +26,12 @@ s32 UNK_02016FA4;
PMBackLightSwitch gBacklightTop;
struct UnkStruct_02016FA8 UNK_02016FA8;
-extern void InitSystemForTheGame(void);
-extern void InitGraphicMemory(void);
extern void FUN_02022294(void);
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 int FUN_020337E8(int);
extern void FUN_02034188(int, int);
-extern int FUN_020227FC(struct SaveBlock2 *);
extern void FUN_02089D90(int);
extern void FUN_0200A2AC(void);
extern void FUN_02015E30(void);
@@ -73,7 +68,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
new file mode 100644
index 00000000..7b240a99
--- /dev/null
+++ b/arm9/src/sav_chatot.c
@@ -0,0 +1,98 @@
+#include "global.h"
+#include "MI_memory.h"
+#include "heap.h"
+#include "sav_chatot.h"
+
+THUMB_FUNC u32 Sav2_Chatot_sizeof(void)
+{
+ return sizeof(struct SaveChatotSoundClip);
+}
+
+THUMB_FUNC void Sav2_Chatot_init(struct SaveChatotSoundClip * chatot)
+{
+ MIi_CpuClear32(0, chatot, sizeof(struct SaveChatotSoundClip));
+ chatot->exists = FALSE;
+}
+
+THUMB_FUNC struct SaveChatotSoundClip * Chatot_new(u32 heap_id)
+{
+ struct SaveChatotSoundClip * ret = (struct SaveChatotSoundClip *)AllocFromHeap(heap_id, sizeof(struct SaveChatotSoundClip));
+ Sav2_Chatot_init(ret);
+ return ret;
+}
+
+THUMB_FUNC struct SaveChatotSoundClip * Sav2_Chatot_get(struct SaveBlock2 * sav2)
+{
+ return (struct SaveChatotSoundClip *) SavArray_get(sav2, 22);
+}
+
+THUMB_FUNC BOOL Chatot_exists(struct SaveChatotSoundClip * chatot)
+{
+ return chatot->exists;
+}
+
+THUMB_FUNC void Chatot_invalidate(struct SaveChatotSoundClip * chatot)
+{
+ chatot->exists = FALSE;
+}
+
+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/arm9/src/sound.c b/arm9/src/sound.c
index 95d14c64..a5228dab 100644
--- a/arm9/src/sound.c
+++ b/arm9/src/sound.c
@@ -11,8 +11,8 @@ static u32 UNK_02107074;
void FUN_02003C40(void);
BOOL FUN_02003D04(void);
-void FUN_020040C8(void);
-void FUN_02004064(struct SoundData *);
+void GF_InitMic(void);
+void GF_SoundDataInit(struct SoundData *);
void FUN_02004088(struct SoundData *);
void FUN_020040A4(struct SoundData *);
void FUN_02003CE8(int);
@@ -26,20 +26,20 @@ extern void FUN_0200538C(int, int, int);
extern BOOL FUN_02005404(void);
extern void FUN_02005CFC(void);
-void InitSoundData(void * a0, struct Options * a1)
+void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options)
{
struct SoundData * sdat = GetSoundDataPointer();
NNS_SndInit();
- FUN_020040C8();
- FUN_02004064(sdat);
- sdat->heap = NNS_SndHeapCreate(sdat->unk_00094, sizeof(sdat->unk_00094));
+ GF_InitMic();
+ GF_SoundDataInit(sdat);
+ sdat->heap = NNS_SndHeapCreate(sdat->heapBuffer, sizeof(sdat->heapBuffer));
NNS_SndArcInit(&sdat->header, "data/sound/sound_data.sdat", sdat->heap, 0);
NNS_SndArcPlayerSetup(sdat->heap);
FUN_02004088(sdat);
FUN_020040A4(sdat);
UNK_02107074 = 0;
- sdat->unk_BCD4C = a0;
- FUN_02004D60(a1->soundMethod);
+ sdat->chatot = chatot;
+ FUN_02004D60(options->soundMethod);
}
void DoSoundUpdateFrame(void)
@@ -185,7 +185,7 @@ void * FUN_02003D38(u32 a0)
case 34:
return &sdat->unk_BCD48;
case 35:
- return &sdat->unk_BCD4C;
+ return &sdat->chatot;
case 36:
return &sdat->unk_BCD50;
case 37:
@@ -200,61 +200,61 @@ void * FUN_02003D38(u32 a0)
}
}
-int FUN_02003F3C(int * a0)
+int GF_Snd_SaveState(int * level_p)
{
struct SoundData * sdat = GetSoundDataPointer();
- int r4 = NNS_SndHeapSaveState(sdat->heap);
- GF_ASSERT(r4 != -1);
- if (a0 != NULL)
- *a0 = r4;
- return r4;
+ int level = NNS_SndHeapSaveState(sdat->heap);
+ GF_ASSERT(level != -1);
+ if (level_p != NULL)
+ *level_p = level;
+ return level;
}
-void FUN_02003F64(int a0)
+void GF_Snd_RestoreState(int level)
{
struct SoundData * sdat = GetSoundDataPointer();
- NNS_SndHeapLoadState(sdat->heap, a0);
+ NNS_SndHeapLoadState(sdat->heap, level);
}
-BOOL FUN_02003F78(int a0)
+BOOL GF_Snd_LoadGroup(int groupNo)
{
struct SoundData * sdat = GetSoundDataPointer();
- return NNS_SndArcLoadGroup(a0, sdat->heap);
+ return NNS_SndArcLoadGroup(groupNo, sdat->heap);
}
-BOOL FUN_02003F90(int a0)
+BOOL GF_Snd_LoadSeq(int seqNo)
{
struct SoundData * sdat = GetSoundDataPointer();
- return NNS_SndArcLoadSeq(a0, sdat->heap);
+ return NNS_SndArcLoadSeq(seqNo, sdat->heap);
}
-BOOL FUN_02003FA8(int a0, u32 a1)
+BOOL GF_Snd_LoadSeqEx(int seqNo, u32 loadFlag)
{
struct SoundData * sdat = GetSoundDataPointer();
- return NNS_SndArcLoadSeqEx(a0, a1, sdat->heap);
+ return NNS_SndArcLoadSeqEx(seqNo, loadFlag, sdat->heap);
}
-BOOL FUN_02003FC4(int a0)
+BOOL GF_Snd_LoadWaveArc(int waveArcNo)
{
struct SoundData * sdat = GetSoundDataPointer();
- return NNS_SndArcLoadWaveArc(a0, sdat->heap);
+ return NNS_SndArcLoadWaveArc(waveArcNo, sdat->heap);
}
-BOOL FUN_02003FDC(int a0)
+BOOL GF_Snd_LoadBank(int bankNo)
{
struct SoundData * sdat = GetSoundDataPointer();
- return NNS_SndArcLoadBank(a0, sdat->heap);
+ return NNS_SndArcLoadBank(bankNo, sdat->heap);
}
-u32 * FUN_02003FF4(int a0)
+u32 * FUN_02003FF4(int playerNo)
{
struct SoundData * sdat = GetSoundDataPointer();
- if (a0 >= 9)
+ if (playerNo >= (s32)NELEMS(sdat->players))
{
GF_ASSERT(0);
- a0 = 0;
+ playerNo = 0;
}
- return &sdat->unk_BBC94[a0];
+ return &sdat->players[playerNo];
}
u32 FUN_02004018(u32 a0)
@@ -283,7 +283,7 @@ u32 FUN_02004018(u32 a0)
}
}
-void FUN_02004064(struct SoundData * sdat)
+void GF_SoundDataInit(struct SoundData * sdat)
{
int i;
memset(sdat, 0, sizeof(*sdat));
@@ -296,18 +296,18 @@ void FUN_02004088(struct SoundData * sdat)
int i;
for (i = 0; i < 9; i++)
{
- NNS_SndHandleInit(&sdat->unk_BBC94[i]);
+ NNS_SndHandleInit(&sdat->players[i]);
}
}
void FUN_020040A4(struct SoundData * sdat)
{
- FUN_02003F3C(&sdat->unk_BCD1C[0]);
- FUN_02003F78(0);
- FUN_02003F3C(&sdat->unk_BCD1C[1]);
+ GF_Snd_SaveState(&sdat->unk_BCD1C[0]);
+ GF_Snd_LoadGroup(0);
+ GF_Snd_SaveState(&sdat->unk_BCD1C[1]);
}
-void FUN_020040C8(void)
+void GF_InitMic(void)
{
MIC_Init();
PM_SetAmp(1);
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
diff --git a/include/sound.h b/include/sound.h
index 9e171634..781c6b5b 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -6,13 +6,14 @@
#include "NNS_SND_heap.h"
#include "NNS_SND_arc_loader.h"
#include "player_data.h"
+#include "sav_chatot.h"
struct SoundData
{
NNSSndArc header;
NNSSndHeapHandle * heap; // 0x00090
- u8 unk_00094[0xBBC00];
- u32 unk_BBC94[9];
+ u8 heapBuffer[0xBBC00];
+ u32 players[9];
u32 unk_BBCB8;
u32 unk_BBCBC;
u8 unk_BBCC0[0x20];
@@ -44,7 +45,7 @@ struct SoundData
u32 unk_BCD3C;
u64 unk_BCD40;
u32 unk_BCD48;
- void * unk_BCD4C;
+ struct SaveChatotSoundClip * chatot;
u32 unk_BCD50;
u32 unk_BCD54;
u32 unk_BCD58;
@@ -52,16 +53,16 @@ struct SoundData
};
struct SoundData * GetSoundDataPointer(void);
-void InitSoundData(void * a0, struct Options * a1);
+void InitSoundData(struct SaveChatotSoundClip * chatot, struct Options * options);
void * FUN_02003D38(u32 a0);
-int FUN_02003F3C(int * a0);
-void FUN_02003F64(int a0);
-BOOL FUN_02003F78(int a0);
-BOOL FUN_02003F90(int a0);
-BOOL FUN_02003FA8(int a0, u32 a1);
-BOOL FUN_02003FC4(int a0);
-BOOL FUN_02003FDC(int a0);
-u32 * FUN_02003FF4(int a0);
+int GF_Snd_SaveState(int * level_p);
+void GF_Snd_RestoreState(int level);
+BOOL GF_Snd_LoadGroup(int groupNo);
+BOOL GF_Snd_LoadSeq(int seqNo);
+BOOL GF_Snd_LoadSeqEx(int seqNo, u32 loadFlag);
+BOOL GF_Snd_LoadWaveArc(int waveArcNo);
+BOOL GF_Snd_LoadBank(int bankNo);
+u32 * FUN_02003FF4(int playerNo);
u32 FUN_02004018(u32 a0);
void DoSoundUpdateFrame(void);