diff options
Diffstat (limited to 'src/libultra_code_O2/osAiSetFrequency.c')
| -rw-r--r-- | src/libultra_code_O2/osAiSetFrequency.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/libultra_code_O2/osAiSetFrequency.c b/src/libultra_code_O2/osAiSetFrequency.c new file mode 100644 index 000000000..f0606809e --- /dev/null +++ b/src/libultra_code_O2/osAiSetFrequency.c @@ -0,0 +1,23 @@ +#include "global.h" + +s32 osAiSetFrequency(u32 frequency) { + u32 dacRate; + u8 bitrate; + f32 dacRateF; + + dacRateF = ((f32)osViClock / frequency) + 0.5f; + 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; +} |
