SoundUnit: big-endian fix (I think)

This commit is contained in:
tildearrow 2022-11-15 22:36:19 -05:00
parent 22938d240d
commit c14e24688f
1 changed files with 11 additions and 0 deletions

View File

@ -391,7 +391,18 @@ void SoundUnit::Reset() {
memset(chan,0,sizeof(SUChannel)*8);
}
#ifdef TA_BIG_ENDIAN
const unsigned char suBERemap[16]={
0x01, 0x00, 0x02, 0x03, 0x05, 0x04, 0x07, 0x06, 0x08, 0x09, 0x0b, 0x0a, 0x0d, 0x0c, 0x0f, 0x0e
0x11, 0x10, 0x12, 0x13, 0x15, 0x14, 0x16, 0x17, 0x19, 0x18, 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x1e
};
#endif
void SoundUnit::Write(unsigned char addr, unsigned char data) {
#ifdef TA_BIG_ENDIAN
// remap
addr=(addr&0xe0)|(suBERemap[addr&0x1f]);
#endif
((unsigned char*)chan)[addr]=data;
}