From 95bf3f2bb149e24ef0e5e4d4a362dad9a9bb3369 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Tue, 25 Jun 2024 16:55:47 -0500 Subject: [PATCH] S3M import: fix 16-bit mono sample loading --- src/engine/fileOps/s3m.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/engine/fileOps/s3m.cpp b/src/engine/fileOps/s3m.cpp index d91697697..8ae357991 100644 --- a/src/engine/fileOps/s3m.cpp +++ b/src/engine/fileOps/s3m.cpp @@ -487,15 +487,17 @@ bool DivEngine::loadS3M(unsigned char* file, size_t len) { } } } else { - reader.read(s->getCurBuf(),s->samples); - - if (!signedSamples) { - if (s->depth==DIV_SAMPLE_DEPTH_16BIT) { - for (unsigned int i=0; isamples; i++) { + if (s->depth==DIV_SAMPLE_DEPTH_16BIT) { + for (unsigned int i=0; isamples; i++) { + s->data16[i]=reader.readS(); + if (!signedSamples) { s->data16[i]^=0x8000; } - } else { - for (unsigned int i=0; isamples; i++) { + } + } else { + for (unsigned int i=0; isamples; i++) { + s->data8[i]=reader.readC(); + if (!signedSamples) { s->data8[i]^=0x80; } }