diff options
author | 2022-10-11 22:08:16 -0400 | |
---|---|---|
committer | 2022-10-11 22:08:16 -0400 | |
commit | 2b161343f85d657f58c1af79c659b99f723f7e32 (patch) | |
tree | b91f5fc946f4b81a40525d0520d01f445b785c53 | |
parent | 8f2beee479e7f469699f54b4ced3ad5826f67e72 (diff) |
multipcm: change which bit selects 12-bit samples, fixes MU-5 bad instruments. [Laurens Holst, R. Belmont]
-rw-r--r-- | src/devices/sound/multipcm.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/devices/sound/multipcm.cpp b/src/devices/sound/multipcm.cpp index ce1dafe95c3..e12edb1fb8f 100644 --- a/src/devices/sound/multipcm.cpp +++ b/src/devices/sound/multipcm.cpp @@ -22,8 +22,9 @@ * This sample format might be derived from the one used by the older YM7138 'GEW6' chip. * * The first 3 bytes are the offset into the file (big endian). (0, 1, 2). - * Bit 23 is the sample format flag: 0 for 8-bit linear, 1 for 12-bit linear. - * Bits 21 and 22 are used by the MU5 on some samples for as-yet unknown purposes. + * Bit 23 is unknown. + * Bit 22 is the sample format flag: 0 for 8-bit linear, 1 for 12-bit linear. + * Bit 21 is used by the MU5 on some samples for as-yet unknown purposes. * The next 2 are the loop start point, in samples (big endian) (3, 4) * The next 2 are the 2's complement negation of of the total number of samples (big endian) (5, 6) * The next byte is LFO freq + depth (copied to reg 6 ?) (7, 8) @@ -698,7 +699,7 @@ void multipcm_device::sound_stream_update(sound_stream &stream, std::vector<read int32_t csample = 0; int32_t fpart = slot.m_offset & ((1 << TL_SHIFT) - 1); - if (slot.m_format & 8) // 12-bit linear + if (slot.m_format & 4) // 12-bit linear { offs_t adr = slot.m_base + (spos >> 2) * 6; switch (spos & 3) |