From 3835a9b1a55a2d8ce6f4159bb0e7f1fecf08b7f1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 23 May 2021 17:20:38 -0400 Subject: NNS SND heap type --- arm9/lib/include/NNS_SND_arc.h | 38 +++++++++++++++++++++++++++++ arm9/lib/include/NNS_SND_arc_loader.h | 12 +++++++++ arm9/lib/include/NNS_SND_heap.h | 11 +++++++++ arm9/src/sound.c | 32 ++++++++++++------------ include/sdat.h | 46 ----------------------------------- include/sound.h | 16 ++++++------ 6 files changed, 86 insertions(+), 69 deletions(-) create mode 100644 arm9/lib/include/NNS_SND_arc.h create mode 100644 arm9/lib/include/NNS_SND_arc_loader.h create mode 100644 arm9/lib/include/NNS_SND_heap.h delete mode 100644 include/sdat.h diff --git a/arm9/lib/include/NNS_SND_arc.h b/arm9/lib/include/NNS_SND_arc.h new file mode 100644 index 00000000..656c8728 --- /dev/null +++ b/arm9/lib/include/NNS_SND_arc.h @@ -0,0 +1,38 @@ +#ifndef GUARD_NNS_SND_ARC_H +#define GUARD_NNS_SND_ARC_H + +#include "SND_main.h" + +typedef struct NNSSndArcHeader +{ + struct SNDBinaryFileHeader fileHeader; + u32 symbolDataOffset; + u32 symbolDataSize; + u32 infoOffset; + u32 infoSize; + u32 fatOffset; + u32 fatSize; + u32 fileImageOffset; + u32 fileImageSize; +} NNSSndArcHeader; + +typedef struct NNSSndArc +{ + NNSSndArcHeader header; + BOOL file_open; + FSFile file; + FSFileID fileId; + struct NNSSndArcFat* fat; + struct NNSSndArcSymbol* symbol; + struct NNSSndArcInfo* info; +} NNSSndArc; + +void NNS_SndInit(void); +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_SndHandleReleaseSeq(void); + +#endif //GUARD_NNS_SND_ARC_H diff --git a/arm9/lib/include/NNS_SND_arc_loader.h b/arm9/lib/include/NNS_SND_arc_loader.h new file mode 100644 index 00000000..851c08ab --- /dev/null +++ b/arm9/lib/include/NNS_SND_arc_loader.h @@ -0,0 +1,12 @@ +#ifndef GUARD_NNS_SND_ARC_LOADER_H +#define GUARD_NNS_SND_ARC_LOADER_H + +#include "NNS_SND_heap.h" + +BOOL NNS_SndArcLoadGroup(int groupNo, NNSSndHeapHandle * heap); +BOOL NNS_SndArcLoadSeq(int seqNo, NNSSndHeapHandle * heap); +BOOL NNS_SndArcLoadSeqEx(int seqNo, u32 loadFlag, NNSSndHeapHandle * heap); +BOOL NNS_SndArcLoadWaveArc(int waveArcNo, NNSSndHeapHandle * heap); +BOOL NNS_SndArcLoadBank(int bankNo, NNSSndHeapHandle * heap); + +#endif //GUARD_NNS_SND_ARC_LOADER_H diff --git a/arm9/lib/include/NNS_SND_heap.h b/arm9/lib/include/NNS_SND_heap.h new file mode 100644 index 00000000..9dc06a24 --- /dev/null +++ b/arm9/lib/include/NNS_SND_heap.h @@ -0,0 +1,11 @@ +#ifndef GUARD_NNS_SND_HEAP_H +#define GUARD_NNS_SND_HEAP_H + +struct NNSSndHeap; +typedef struct NNSSndHeap* NNSSndHeapHandle; + +NNSSndHeapHandle * NNS_SndHeapCreate(void *, u32); +int NNS_SndHeapSaveState(NNSSndHeapHandle *); +void NNS_SndHeapLoadState(NNSSndHeapHandle *, int); + +#endif //GUARD_NNS_SND_HEAP_H diff --git a/arm9/src/sound.c b/arm9/src/sound.c index 4927a575..95d14c64 100644 --- a/arm9/src/sound.c +++ b/arm9/src/sound.c @@ -32,9 +32,9 @@ void InitSoundData(void * a0, struct Options * a1) NNS_SndInit(); FUN_020040C8(); FUN_02004064(sdat); - sdat->unk_00090 = NNS_SndHeapCreate(sdat->unk_00094, sizeof(sdat->unk_00094)); - NNS_SndArcInit(&sdat->header, "data/sound/sound_data.sdat", sdat->unk_00090, 0); - NNS_SndArcPlayerSetup(sdat->unk_00090); + sdat->heap = NNS_SndHeapCreate(sdat->unk_00094, sizeof(sdat->unk_00094)); + 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; @@ -203,7 +203,7 @@ void * FUN_02003D38(u32 a0) int FUN_02003F3C(int * a0) { struct SoundData * sdat = GetSoundDataPointer(); - int r4 = NNS_SndHeapSaveState(sdat->unk_00090); + int r4 = NNS_SndHeapSaveState(sdat->heap); GF_ASSERT(r4 != -1); if (a0 != NULL) *a0 = r4; @@ -213,37 +213,37 @@ int FUN_02003F3C(int * a0) void FUN_02003F64(int a0) { struct SoundData * sdat = GetSoundDataPointer(); - NNS_SndHeapLoadState(sdat->unk_00090, a0); + NNS_SndHeapLoadState(sdat->heap, a0); } -BOOL FUN_02003F78(u32 * a0) +BOOL FUN_02003F78(int a0) { struct SoundData * sdat = GetSoundDataPointer(); - return NNS_SndArcLoadGroup(a0, sdat->unk_00090); + return NNS_SndArcLoadGroup(a0, sdat->heap); } -BOOL FUN_02003F90(u32 * a0) +BOOL FUN_02003F90(int a0) { struct SoundData * sdat = GetSoundDataPointer(); - return NNS_SndArcLoadSeq(a0, sdat->unk_00090); + return NNS_SndArcLoadSeq(a0, sdat->heap); } -BOOL FUN_02003FA8(u32 * a0, u32 * a1) +BOOL FUN_02003FA8(int a0, u32 a1) { struct SoundData * sdat = GetSoundDataPointer(); - return NNS_SndArcLoadSeqEx(a0, a1, sdat->unk_00090); + return NNS_SndArcLoadSeqEx(a0, a1, sdat->heap); } -BOOL FUN_02003FC4(u32 * a0) +BOOL FUN_02003FC4(int a0) { struct SoundData * sdat = GetSoundDataPointer(); - return NNS_SndArcLoadWaveArc(a0, sdat->unk_00090); + return NNS_SndArcLoadWaveArc(a0, sdat->heap); } -BOOL FUN_02003FDC(u32 * a0) +BOOL FUN_02003FDC(int a0) { struct SoundData * sdat = GetSoundDataPointer(); - return NNS_SndArcLoadBank(a0, sdat->unk_00090); + return NNS_SndArcLoadBank(a0, sdat->heap); } u32 * FUN_02003FF4(int a0) @@ -303,7 +303,7 @@ void FUN_02004088(struct SoundData * sdat) void FUN_020040A4(struct SoundData * sdat) { FUN_02003F3C(&sdat->unk_BCD1C[0]); - FUN_02003F78(NULL); + FUN_02003F78(0); FUN_02003F3C(&sdat->unk_BCD1C[1]); } diff --git a/include/sdat.h b/include/sdat.h deleted file mode 100644 index 53e0a729..00000000 --- a/include/sdat.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef GUARD_LIBSDAT_H -#define GUARD_LIBSDAT_H - -#include "SND_main.h" - -typedef struct NNSSndArcHeader -{ - struct SNDBinaryFileHeader fileHeader; - u32 symbolDataOffset; - u32 symbolDataSize; - u32 infoOffset; - u32 infoSize; - u32 fatOffset; - u32 fatSize; - u32 fileImageOffset; - u32 fileImageSize; -} NNSSndArcHeader; - -typedef struct NNSSndArc -{ - NNSSndArcHeader header; - BOOL file_open; - FSFile file; - FSFileID fileId; - struct NNSSndArcFat* fat; - struct NNSSndArcSymbol* symbol; - struct NNSSndArcInfo* info; -} NNSSndArc; - -void NNS_SndInit(void); -void * NNS_SndHeapCreate(void *, u32); -void NNS_SndArcInit(NNSSndArc *, const char *, void *, u32); -void NNS_SndArcPlayerSetup(void *); -void NNS_SndMain(void); -int NNS_SndHeapSaveState(void *); -void NNS_SndHeapLoadState(void *, int); -BOOL NNS_SndArcLoadGroup(u32 *, void *); -BOOL NNS_SndArcLoadSeq(u32 *, void *); -BOOL NNS_SndArcLoadSeqEx(u32 *, u32 *, void *); -BOOL NNS_SndArcLoadWaveArc(u32 *, void *); -BOOL NNS_SndArcLoadBank(u32 *, void *); -void NNS_SndHandleInit(u32 *); -void NNS_SndPlayerStopSeqByPlayerNo(int, int); -void NNS_SndHandleReleaseSeq(void); - -#endif //GUARD_LIBSDAT_H diff --git a/include/sound.h b/include/sound.h index d48dd9ac..9e171634 100644 --- a/include/sound.h +++ b/include/sound.h @@ -2,13 +2,15 @@ #define POKEDIAMOND_SOUND_H #include "FS_file.h" -#include "sdat.h" +#include "NNS_SND_arc.h" +#include "NNS_SND_heap.h" +#include "NNS_SND_arc_loader.h" #include "player_data.h" struct SoundData { NNSSndArc header; - void * unk_00090; + NNSSndHeapHandle * heap; // 0x00090 u8 unk_00094[0xBBC00]; u32 unk_BBC94[9]; u32 unk_BBCB8; @@ -54,11 +56,11 @@ void InitSoundData(void * a0, struct Options * a1); void * FUN_02003D38(u32 a0); int FUN_02003F3C(int * a0); void FUN_02003F64(int a0); -BOOL FUN_02003F78(u32 * a0); -BOOL FUN_02003F90(u32 * a0); -BOOL FUN_02003FA8(u32 * a0, u32 * a1); -BOOL FUN_02003FC4(u32 * a0); -BOOL FUN_02003FDC(u32 * 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); u32 FUN_02004018(u32 a0); void DoSoundUpdateFrame(void); -- cgit v1.2.3