summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbriaguya <70942617+briaguya-ai@users.noreply.github.com>2025-05-19 00:24:57 -0400
committerGitHub <noreply@github.com>2025-05-18 21:24:57 -0700
commit081f82875a8afbacc77d2baa1230040dc785266c (patch)
tree39241ae45d4266e9b587f90578548ecb7d54e8e3
parent4334a132e31ef12a1cccf2c77e7006ed9c54c88d (diff)
fix link voice missing when hanging off ledges (#5506)
* fix link voice missing when hanging off ledges * remove unused bitrate var * hardcoded but justified * format
-rw-r--r--soh/soh/stubs.c42
1 files changed, 41 insertions, 1 deletions
diff --git a/soh/soh/stubs.c b/soh/soh/stubs.c
index 56013e56f..118b36e72 100644
--- a/soh/soh/stubs.c
+++ b/soh/soh/stubs.c
@@ -145,7 +145,47 @@ void Audio_osWritebackDCache(void* mem, s32 size) {
}
s32 osAiSetFrequency(u32 freq) {
- return 1;
+ // this is based off the math from the original method
+ /*
+
+ s32 osAiSetFrequency(u32 frequency) {
+ u8 bitrate;
+ f32 dacRateF = ((f32)osViClock / frequency) + 0.5f;
+ u32 dacRate = dacRateF;
+
+ if (dacRate < 132) {
+ return -1;
+ }
+
+ bitrate = (dacRate / 66);
+ if (bitrate > 16) {
+ bitrate = 16;
+ }
+
+ HW_REG(AI_DACRATE_REG, u32) = dacRate - 1;
+ HW_REG(AI_BITRATE_REG, u32) = bitrate - 1;
+ return osViClock / (s32)dacRate;
+ }
+
+ */
+
+ // bitrate is unused
+
+ // osViClock comes from
+ // #define VI_NTSC_CLOCK 48681812 /* Hz = 48.681812 MHz */
+ // s32 osViClock = VI_NTSC_CLOCK;
+
+ // frequency was originally 32000
+
+ // given all of that, dacRate is
+ // (u32)(((f32)48681812 / 32000) + 0.5f)
+ // which evaluates to 1521 (which is > 132)
+
+ // this leaves us with a final calculation of
+ // 48681812 / 1521
+ // which evaluates to 32006
+
+ return 32006;
}
void osInvalDCache(void* vaddr, s32 nbytes) {