From 8f59ceb6a6914e111b9da37c3b6883a0fcf2927b Mon Sep 17 00:00:00 2001 From: tildearrow Date: Mon, 21 Nov 2022 04:04:26 -0500 Subject: [PATCH] dev127 - experiment with new ins on .fur --- src/engine/engine.h | 4 +- src/engine/fileOps.cpp | 3 +- src/engine/instrument.cpp | 148 +++++++++++++++++++------------------- 3 files changed, 80 insertions(+), 75 deletions(-) diff --git a/src/engine/engine.h b/src/engine/engine.h index 80dfe67a8..e187ba7b9 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -47,8 +47,8 @@ #define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock(); #define BUSY_END isBusy.unlock(); softLocked=false; -#define DIV_VERSION "dev126" -#define DIV_ENGINE_VERSION 126 +#define DIV_VERSION "dev127" +#define DIV_ENGINE_VERSION 127 // for imports #define DIV_VERSION_MOD 0xff01 #define DIV_VERSION_FC 0xff02 diff --git a/src/engine/fileOps.cpp b/src/engine/fileOps.cpp index 15bb77113..d37028afd 100644 --- a/src/engine/fileOps.cpp +++ b/src/engine/fileOps.cpp @@ -4503,7 +4503,8 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) { for (int i=0; itell()); - ins->putInsData(w); + logV("writing instrument %d...",i); + ins->putInsData2(w,false); } /// WAVETABLE diff --git a/src/engine/instrument.cpp b/src/engine/instrument.cpp index 867d25640..1c2ddbf0a 100644 --- a/src/engine/instrument.cpp +++ b/src/engine/instrument.cpp @@ -213,6 +213,7 @@ bool DivInstrumentSNES::operator==(const DivInstrumentSNES& other) { #undef _C #define FEATURE_BEGIN(x) \ + logV("- %s",x); \ w->write(x,2); \ size_t featStartSeek=w->tell(); \ w->writeS(0); @@ -1878,7 +1879,7 @@ void DivInstrument::readFeatureMA(SafeReader& reader) { unsigned short macroHeaderLen=reader.readS(); - DivInstrumentMacro& target=std.volMacro; + DivInstrumentMacro* target=&std.volMacro; while (reader.tell()len=reader.readC(); + target->loop=reader.readC(); + target->rel=reader.readC(); + target->mode=reader.readC(); unsigned char wordSize=reader.readC(); - target.open=wordSize&7; + target->open=wordSize&7; wordSize>>=6; - target.delay=reader.readC(); - target.speed=reader.readC(); + target->delay=reader.readC(); + target->speed=reader.readC(); reader.seek(endOfMacroHeader,SEEK_SET); // read macro switch (wordSize) { case 0: - for (int i=0; ilen; i++) { + target->val[i]=(unsigned char)reader.readC(); } break; case 1: - for (int i=0; ilen; i++) { + target->val[i]=(signed char)reader.readC(); } break; case 2: - for (int i=0; ilen; i++) { + target->val[i]=reader.readS(); } break; default: - for (int i=0; ilen; i++) { + target->val[i]=reader.readI(); } break; } @@ -2082,7 +2086,7 @@ void DivInstrument::readFeatureOx(SafeReader& reader, int op) { unsigned short macroHeaderLen=reader.readS(); - DivInstrumentMacro& target=std.opMacros[op].amMacro; + DivInstrumentMacro* target=&std.opMacros[op].amMacro; while (reader.tell()len=reader.readC(); + target->loop=reader.readC(); + target->rel=reader.readC(); + target->mode=reader.readC(); unsigned char wordSize=reader.readC(); - target.open=wordSize&7; + target->open=wordSize&7; wordSize>>=6; - target.delay=reader.readC(); - target.speed=reader.readC(); + target->delay=reader.readC(); + target->speed=reader.readC(); reader.seek(endOfMacroHeader,SEEK_SET); // read macro switch (wordSize) { case 0: - for (int i=0; ilen; i++) { + target->val[i]=(unsigned char)reader.readC(); } break; case 1: - for (int i=0; ilen; i++) { + target->val[i]=(signed char)reader.readC(); } break; case 2: - for (int i=0; ilen; i++) { + target->val[i]=reader.readS(); } break; default: - for (int i=0; ilen; i++) { + target->val[i]=reader.readI(); } break; }