diff options
author | Akira Akashi <rubenru09@aol.com> | 2021-05-24 15:01:06 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-24 15:01:06 +0100 |
commit | febbf5dc3d673ae40df7b6c545a40e945e6eda17 (patch) | |
tree | 6dee393a1ec73282ca34a0a1f0526359630c2855 | |
parent | a978faa0d8c222c5fce4db4f0dad19ed235eecfc (diff) | |
parent | 3188237ddaf9aefcbea90967a15df7b78fe8e336 (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.lsf | 2 | ||||
-rw-r--r-- | arm9/asm/scrcmd_3.s | 2 | ||||
-rw-r--r-- | arm9/asm/unk_020040F4.s | 98 | ||||
-rw-r--r-- | arm9/asm/unk_020051F4.s | 14 | ||||
-rw-r--r-- | arm9/asm/unk_02005CFC.s | 12 | ||||
-rw-r--r-- | arm9/asm/unk_02029EC4.s | 149 | ||||
-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 | 34 | ||||
-rw-r--r-- | arm9/lib/include/NNS_SND_arc.h | 2 | ||||
-rw-r--r-- | arm9/lib/include/NNS_SND_heap.h | 6 | ||||
-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 | 7 | ||||
-rw-r--r-- | arm9/src/sav_chatot.c | 98 | ||||
-rw-r--r-- | arm9/src/save_arrays.c | 6 | ||||
-rw-r--r-- | arm9/src/scrcmd_sound.c | 6 | ||||
-rw-r--r-- | arm9/src/sound.c | 74 | ||||
-rw-r--r-- | include/sav_chatot.h | 24 | ||||
-rw-r--r-- | include/sound.h | 25 |
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); |