dev123 - store sample loop mode

This commit is contained in:
tildearrow 2022-11-07 17:22:13 -05:00
parent 15df2ed6bf
commit 184a6bd6b2
4 changed files with 18 additions and 9 deletions

View File

@ -32,6 +32,8 @@ these fields are 0 in format versions prior to 100 (0.6pre1).
the format versions are:
- 123: Furnace dev123
- 122: Furnace dev122
- 121: Furnace dev121
- 120: Furnace dev120
- 119: Furnace dev119
@ -1096,7 +1098,11 @@ size | description
| - 9: BRR (SNES)
| - 10: VOX
| - 16: 16-bit PCM
3 | reserved
1 | loop direction (>=123) or reserved
| - 0: forward
| - 0: backward
| - 0: ping-pong
2 | reserved
4 | loop start
| - -1 means no loop
4 | loop end

View File

@ -47,8 +47,8 @@
#define BUSY_BEGIN_SOFT softLocked=true; isBusy.lock();
#define BUSY_END isBusy.unlock(); softLocked=false;
#define DIV_VERSION "dev122"
#define DIV_ENGINE_VERSION 122
#define DIV_VERSION "dev123"
#define DIV_ENGINE_VERSION 123
// for imports
#define DIV_VERSION_MOD 0xff01
#define DIV_VERSION_FC 0xff02

View File

@ -2383,11 +2383,15 @@ bool DivEngine::loadFur(unsigned char* file, size_t len) {
if (isNewSample) {
sample->centerRate=reader.readI();
sample->depth=(DivSampleDepth)reader.readC();
if (ds.version>=123) {
sample->loopMode=(DivSampleLoopMode)reader.readC();
} else {
sample->loopMode=DIV_SAMPLE_LOOP_FORWARD;
}
// reserved
reader.readC();
reader.readC();
reader.readC();
sample->loopStart=reader.readI();
sample->loopEnd=reader.readI();
@ -4624,9 +4628,9 @@ SafeWriter* DivEngine::saveFur(bool notPrimary) {
w->writeI(sample->rate);
w->writeI(sample->centerRate);
w->writeC(sample->depth);
w->writeC(sample->loopMode);
w->writeC(0); // reserved
w->writeC(0);
w->writeC(0);
w->writeI(sample->loop?sample->loopStart:-1);
w->writeI(sample->loop?sample->loopEnd:-1);

View File

@ -106,10 +106,9 @@ struct DivSample {
DivSampleDepth depth;
bool loop;
// valid values are:
// - 0: No loop
// - 1: Forward loop
// - 2: Backward loop
// - 3: Pingpong loop
// - 0: Forward loop
// - 1: Backward loop
// - 2: Pingpong loop
DivSampleLoopMode loopMode;
// these are the new data structures.