diff --git a/src/engine/platform/sound/su.cpp b/src/engine/platform/sound/su.cpp index a8720545..67ee153e 100644 --- a/src/engine/platform/sound/su.cpp +++ b/src/engine/platform/sound/su.cpp @@ -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; }