From 1f89c755017f3517a7b1ad796cd1e6206d45f6e3 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Sat, 20 Nov 2021 15:51:40 +1000 Subject: [PATCH] Attempt to decompile snd0000ee88 --- src/include/lib/snd.h | 2 +- src/include/types.h | 7 +++++++ src/lib/snd.c | 41 ++++++++++++++++++++++++++++++++++++++++- 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/include/lib/snd.h b/src/include/lib/snd.h index ef302a775..2f44682ad 100644 --- a/src/include/lib/snd.h +++ b/src/include/lib/snd.h @@ -13,7 +13,7 @@ void snd0000eadc(void); void sndLoadSfxCtl(void); void snd0000ed14(void); u32 snd0000ed68(void); -u32 snd0000ee88(void); +struct var80095210_35c *snd0000ee88(u32 segoffset, u16 arg1); u32 snd0000efa8(void); u32 snd0000f0d4(void); u32 snd0000f228(void); diff --git a/src/include/types.h b/src/include/types.h index 52e65da14..ca2cbc18e 100644 --- a/src/include/types.h +++ b/src/include/types.h @@ -7027,10 +7027,17 @@ struct mp3vars { /*0x61*/ u8 var8009c3f1; }; +struct var80095210_35c { + u8 unk00[6]; +}; + struct var80095210 { u16 *soundnums; u8 unk04[45]; u16 unk32[45]; + u8 unk90[0x2cc]; + struct var80095210_35c unk35c[1]; + u8 unk364[0x3d88]; }; struct rdptask { diff --git a/src/lib/snd.c b/src/lib/snd.c index 64894dfa7..195b1fe86 100644 --- a/src/lib/snd.c +++ b/src/lib/snd.c @@ -46,7 +46,6 @@ ALBank *var80095204; struct seqtable *g_SeqTable; u32 g_SeqBufferSize; struct var80095210 var80095210; -u8 var800952a0[0x4060]; const char g_SndGuardString[] = "RUSSES SOUND GUARD STRING"; const char var70053b3c[] = "Snd: SoundHeaderCacheInit\n"; @@ -1376,6 +1375,46 @@ glabel snd0000ee88 ); #endif +//struct var80095210_35c *snd0000ee88(u32 segoffset, u16 arg1) +//{ +//#if VERSION >= VERSION_NTSC_1_0 +// s32 i; +// s32 sum1; +// s32 sum2; +// u32 stack; +// u8 spaf[0x40]; +// u8 sp5f[0x50]; +// u32 *s2 = (u32 *)ALIGN16((u32)spaf); +// u32 *s1 = (u32 *)ALIGN16((u32)sp5f); +// u32 stack2; +// +// do { +// dmaExecHighPriority(s2, (u32)&_sfxctlSegmentRomStart + segoffset, 0x40); +// sum1 = 0; +// +// for (i = 0; i < 16U; i++) { +// sum1 += s2[i]; +// } +// +// dmaExecHighPriority(s1, (u32)&_sfxctlSegmentRomStart + segoffset, 0x40); +// sum2 = 0; +// +// for (i = 0; i < 16U; i++) { +// sum2 += s1[i]; +// } +// } while (sum1 != sum2); +//#else +// u8 sp5f[0x50]; +// u32 *s1 = (u32 *)ALIGN16((u32)sp5f); +// +// dmaExecHighPriority(s1, (u32)&_sfxctlSegmentRomStart + segoffset, 0x40); +//#endif +// +// var80095210.unk35c[arg1] = *(struct var80095210_35c *)s1; +// +// return &var80095210.unk35c[arg1]; +//} + #if VERSION >= VERSION_NTSC_1_0 GLOBAL_ASM( glabel snd0000efa8