diff options
| author | briaguya <70942617+briaguya-ai@users.noreply.github.com> | 2025-05-19 00:24:57 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-18 21:24:57 -0700 |
| commit | 081f82875a8afbacc77d2baa1230040dc785266c (patch) | |
| tree | 39241ae45d4266e9b587f90578548ecb7d54e8e3 | |
| parent | 4334a132e31ef12a1cccf2c77e7006ed9c54c88d (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.c | 42 |
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) { |
