summaryrefslogtreecommitdiff
path: root/src/libultra_code_O2/osAiSetFrequency.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libultra_code_O2/osAiSetFrequency.c')
-rw-r--r--src/libultra_code_O2/osAiSetFrequency.c23
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;
+}