mirror of
https://github.com/HarbourMasters/Starship.git
synced 2025-02-02 16:23:57 +03:00
osAiSetFrequency
This commit is contained in:
parent
92644c09aa
commit
af69318aa5
@ -1,3 +1,27 @@
|
||||
#include "common.h"
|
||||
#include "global.h"
|
||||
#include "hardware.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/libultra/io/aisetfreq/osAiSetFrequency.s")
|
||||
extern s32 osViClock;
|
||||
|
||||
s32 osAiSetFrequency(u32 freq) {
|
||||
register u32 a1;
|
||||
register s32 a2;
|
||||
register float ftmp;
|
||||
ftmp = osViClock / (float) freq + .5f;
|
||||
|
||||
a1 = ftmp;
|
||||
|
||||
if (a1 < 0x84) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
a2 = (a1 / 66) & 0xff;
|
||||
if (a2 > 16) {
|
||||
a2 = 16;
|
||||
}
|
||||
|
||||
HW_REG(AI_DACRATE_REG, u32) = a1 - 1;
|
||||
HW_REG(AI_BITRATE_REG, u32) = a2 - 1;
|
||||
HW_REG(AI_CONTROL_REG, u32) = 1; // enable dma
|
||||
return osViClock / (s32) a1;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user