Code: Select all
void write_fm(uchar reg, uchar val)
{
uchar* ctrl = (uchar*)0xA04000;
uchar* data = (uchar*)0xA04001;
while(*ctrl & 0x80);
*ctrl = reg;
while(*ctrl & 0x80);
*data = val;
while(*ctrl & 0x80);
}
Code: Select all
void test_fm()
{
write_fm(0x22, 0);
write_fm(0x27, 0);
write_fm(0x28, 0);
write_fm(0x28, 1);
write_fm(0x28, 2);
write_fm(0x28, 4);
write_fm(0x28, 5);
write_fm(0x28, 6);
write_fm(0x2B, 0);
write_fm(0x30, 0x71);
write_fm(0x34, 0x0D);
write_fm(0x38, 0x33);
write_fm(0x3C, 0x01);
write_fm(0x40, 0x23);
write_fm(0x44, 0x2D);
write_fm(0x48, 0x26);
write_fm(0x4C, 0x00);
write_fm(0x50, 0x5F);
write_fm(0x54, 0x99);
write_fm(0x58, 0x5F);
write_fm(0x5C, 0x94);
write_fm(0x60, 0x05);
write_fm(0x64, 0x05);
write_fm(0x68, 0x05);
write_fm(0x6C, 0x07);
write_fm(0x70, 0x02);
write_fm(0x74, 0x02);
write_fm(0x78, 0x02);
write_fm(0x7C, 0x02);
write_fm(0x80, 0x11);
write_fm(0x84, 0x11);
write_fm(0x88, 0x11);
write_fm(0x8C, 0xA6);
write_fm(0x90, 0x00);
write_fm(0x94, 0x00);
write_fm(0x98, 0x00);
write_fm(0x9C, 0x00);
write_fm(0xB0, 0x32);
write_fm(0xB4, 0xC0);
write_fm(0x28, 0x00);
write_fm(0xA4, 0x22);
write_fm(0xA0, 0x69);
write_fm(0x28, 0xF0);
}
Why am I not getting any sound?