From 70717cd2fab2183ce27e7eedfc03e77806d76d24 Mon Sep 17 00:00:00 2001 From: Edoardo Prezioso Date: Sat, 18 Jan 2014 02:21:49 +0100 Subject: [PATCH 1/4] - Cover the ASM_SOURCES fix for NO_ASM users too --- src/CMakeLists.txt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b83b6dae6..badd2c3b1 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -586,12 +586,13 @@ else( WIN32 ) endif( APPLE ) endif( WIN32 ) +if( NOT ASM_SOURCES ) + set( ASM_SOURCES "" ) +endif( NOT ASM_SOURCES ) + if( NO_ASM ) add_definitions( -DNOASM ) else( NO_ASM ) - if( NOT ASM_SOURCES ) - set( ASM_SOURCES "" ) - endif( NOT ASM_SOURCES ) if( X64 ) ADD_ASM_FILE( asm_x86_64 tmap3 ) else( X64 ) From 9dacc9cc8d466e53d3f946dffc1e3601d1cac120 Mon Sep 17 00:00:00 2001 From: Gaerzi Date: Mon, 24 Feb 2014 05:07:37 +0100 Subject: [PATCH 2/4] The wrong value was used here. This caused crashes on some files (notably MBELLS from Cosmo and NUBC from Body Count) in my port of this code to SLADE 3. --- src/oplsynth/opl_mus_player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oplsynth/opl_mus_player.cpp b/src/oplsynth/opl_mus_player.cpp index 43a129b14..319eb8319 100644 --- a/src/oplsynth/opl_mus_player.cpp +++ b/src/oplsynth/opl_mus_player.cpp @@ -267,7 +267,7 @@ bool OPLmusicBlock::ServiceStream (void *buff, int numbytes) { for (i = 0; i < io->NumChips; ++i) { - io->chips[i]->Update(samples1, samplesleft); + io->chips[i]->Update(samples1, numsamples); } OffsetSamples(samples1, numsamples << stereoshift); } From c7301a0fbbb738b84f4281308bdb06380ab256b8 Mon Sep 17 00:00:00 2001 From: Gaerzi Date: Sun, 23 Feb 2014 23:07:10 +0100 Subject: [PATCH 3/4] Some DOSBox Raw OPL v2 indices were off by one. This caused access violation errors on perfectly fine DRO files. For reference, scoredata[20] is the hardware type (OPL2, dual OPL2, or OPL3). --- src/oplsynth/opl_mus_player.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/oplsynth/opl_mus_player.cpp b/src/oplsynth/opl_mus_player.cpp index 335e6d66e..43a129b14 100644 --- a/src/oplsynth/opl_mus_player.cpp +++ b/src/oplsynth/opl_mus_player.cpp @@ -104,16 +104,19 @@ fail: delete[] scoredata; } else if (((DWORD *)scoredata)[2] == MAKE_ID(2,0,0,0)) { - if (scoredata[20] != 0) - { - Printf("Unsupported DOSBox Raw OPL format %d\n", scoredata[20]); - goto fail; - } + bool okay = true; if (scoredata[21] != 0) { - Printf("Unsupported DOSBox Raw OPL compression %d\n", scoredata[21]); - goto fail; + Printf("Unsupported DOSBox Raw OPL format %d\n", scoredata[20]); + okay = false; } + if (scoredata[22] != 0) + { + Printf("Unsupported DOSBox Raw OPL compression %d\n", scoredata[21]); + okay = false; + } + if (!okay) + goto fail; RawPlayer = DosBox2; SamplesPerTick = OPL_SAMPLE_RATE / 1000; int headersize = 0x1A + scoredata[0x19]; From d430c18574fd6d72c751f869c4b3cd3312990b46 Mon Sep 17 00:00:00 2001 From: Gaerzi Date: Mon, 24 Feb 2014 05:07:37 +0100 Subject: [PATCH 4/4] The wrong value was used here. This caused crashes on some files (notably MBELLS from Cosmo and NUBC from Body Count) in my port of this code to SLADE 3. --- src/oplsynth/opl_mus_player.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/oplsynth/opl_mus_player.cpp b/src/oplsynth/opl_mus_player.cpp index 43a129b14..319eb8319 100644 --- a/src/oplsynth/opl_mus_player.cpp +++ b/src/oplsynth/opl_mus_player.cpp @@ -267,7 +267,7 @@ bool OPLmusicBlock::ServiceStream (void *buff, int numbytes) { for (i = 0; i < io->NumChips; ++i) { - io->chips[i]->Update(samples1, samplesleft); + io->chips[i]->Update(samples1, numsamples); } OffsetSamples(samples1, numsamples << stereoshift); }