YMZ280B: fix VGM export

This commit is contained in:
tildearrow 2022-11-21 16:12:29 -05:00
parent d943eb02ae
commit 8041173eb9
4 changed files with 17 additions and 18 deletions

View file

@ -286,6 +286,8 @@ int ymz280b_device::generate_pcm8(struct YMZ280BVoice *voice, s16 *buffer, int s
***********************************************************************************************/
// according to this core, it should be little-endian.
// but it's big-endian in VGMPlay...
int ymz280b_device::generate_pcm16(struct YMZ280BVoice *voice, s16 *buffer, int samples)
{
u32 position = voice->position;
@ -298,7 +300,7 @@ int ymz280b_device::generate_pcm16(struct YMZ280BVoice *voice, s16 *buffer, int
while (samples)
{
/* fetch the current value */
val = (s16)((m_ext_mem[position / 2 + 1] << 8) + m_ext_mem[position / 2 + 0]);
val = (s16)((m_ext_mem[position / 2 + 0] << 8) + m_ext_mem[position / 2 + 1]);
/* output to the buffer, scaling by the volume */
*buffer++ = val;
@ -321,7 +323,7 @@ int ymz280b_device::generate_pcm16(struct YMZ280BVoice *voice, s16 *buffer, int
while (samples)
{
/* fetch the current value */
val = (s16)((m_ext_mem[position / 2 + 1] << 8) + m_ext_mem[position / 2 + 0]);
val = (s16)((m_ext_mem[position / 2 + 0] << 8) + m_ext_mem[position / 2 + 1]);
/* output to the buffer, scaling by the volume */
*buffer++ = val;

View file

@ -431,7 +431,17 @@ void DivPlatformYMZ280B::renderSamples() {
unsigned char* src=(unsigned char*)s->getCurBuf();
int actualLength=MIN((int)(getSampleMemCapacity()-memPos),length);
if (actualLength>0) {
#ifdef TA_BIG_ENDIAN
memcpy(&sampleMem[memPos],src,actualLength);
#else
if (s->depth==DIV_SAMPLE_DEPTH_16BIT) {
for (int i=0; i<actualLength; i++) {
sampleMem[memPos+i]=src[i^1];
}
} else {
memcpy(&sampleMem[memPos],src,actualLength);
}
#endif
sampleOff[i]=memPos;
memPos+=length;
}