mirror of
https://github.com/tildearrow/furnace.git
synced 2025-01-07 16:12:31 +00:00
C64: more fixes...
This commit is contained in:
parent
e29113c926
commit
7575e7a4a7
3 changed files with 22 additions and 4 deletions
|
@ -1127,9 +1127,9 @@ size | description
|
||||||
## C64 compatibility note (>=187)
|
## C64 compatibility note (>=187)
|
||||||
|
|
||||||
in Furnace dev187 the volume and cutoff macros have been separated, as noted above.
|
in Furnace dev187 the volume and cutoff macros have been separated, as noted above.
|
||||||
however, there's another change as well: a new, improved Special macro.
|
however, there are two other changes as well: **inverted relative (non-absolute) cutoff macro**; and a new, improved Special macro.
|
||||||
|
|
||||||
if version is less than 187, you must convert these:
|
if version is less than 187, you must convert the Special macro:
|
||||||
1. do not continue if ex4 is not a Sequence type macro!
|
1. do not continue if ex4 is not a Sequence type macro!
|
||||||
2. move bit 0 of ex4 macro data into bit 3.
|
2. move bit 0 of ex4 macro data into bit 3.
|
||||||
3. set bit 0 on all steps of ex4 macro to 1.
|
3. set bit 0 on all steps of ex4 macro to 1.
|
||||||
|
@ -1138,6 +1138,7 @@ if version is less than 187, you must convert these:
|
||||||
6. merge the ex3 macro (former Special) into ex4 (former Test).
|
6. merge the ex3 macro (former Special) into ex4 (former Test).
|
||||||
- use the largest size (between ex3 and ex4).
|
- use the largest size (between ex3 and ex4).
|
||||||
- if the ex3 macro is shorter than the ex4 one, use the last value of ex3, and vice-versa.
|
- if the ex3 macro is shorter than the ex4 one, use the last value of ex3, and vice-versa.
|
||||||
|
- if the ex4 macro length is 0, expand it to the largest size, and set all steps to 1.
|
||||||
|
|
||||||
don't worry about loop or release...
|
don't worry about loop or release...
|
||||||
|
|
||||||
|
|
|
@ -327,9 +327,9 @@ size | description
|
||||||
## C64 compatibility note (>=187)
|
## C64 compatibility note (>=187)
|
||||||
|
|
||||||
in Furnace dev187 the volume and cutoff macros have been separated, as noted above.
|
in Furnace dev187 the volume and cutoff macros have been separated, as noted above.
|
||||||
however, there's another change as well: a new, improved Special macro.
|
however, there are two other changes as well: **inverted relative (non-absolute) cutoff macro**; and a new, improved Special macro.
|
||||||
|
|
||||||
if version is less than 187, you must convert these:
|
if version is less than 187, you must convert the Special macro:
|
||||||
1. do not continue if ex4 is not a Sequence type macro!
|
1. do not continue if ex4 is not a Sequence type macro!
|
||||||
2. move bit 0 of ex4 macro data into bit 3.
|
2. move bit 0 of ex4 macro data into bit 3.
|
||||||
3. set bit 0 on all steps of ex4 macro to 1.
|
3. set bit 0 on all steps of ex4 macro to 1.
|
||||||
|
@ -338,6 +338,7 @@ if version is less than 187, you must convert these:
|
||||||
6. merge the ex3 macro (former Special) into ex4 (former Test).
|
6. merge the ex3 macro (former Special) into ex4 (former Test).
|
||||||
- use the largest size (between ex3 and ex4).
|
- use the largest size (between ex3 and ex4).
|
||||||
- if the ex3 macro is shorter than the ex4 one, use the last value of ex3, and vice-versa.
|
- if the ex3 macro is shorter than the ex4 one, use the last value of ex3, and vice-versa.
|
||||||
|
- if the ex4 macro length is 0, expand it to the largest size, and set all steps to 1.
|
||||||
|
|
||||||
don't worry about loop or release...
|
don't worry about loop or release...
|
||||||
|
|
||||||
|
|
|
@ -2683,6 +2683,12 @@ DivDataErrors DivInstrument::readInsDataNew(SafeReader& reader, short version, b
|
||||||
memcpy(&std.algMacro,&std.volMacro,sizeof(DivInstrumentMacro));
|
memcpy(&std.algMacro,&std.volMacro,sizeof(DivInstrumentMacro));
|
||||||
std.algMacro.macroType=DIV_MACRO_ALG;
|
std.algMacro.macroType=DIV_MACRO_ALG;
|
||||||
std.volMacro=DivInstrumentMacro(DIV_MACRO_VOL,true);
|
std.volMacro=DivInstrumentMacro(DIV_MACRO_VOL,true);
|
||||||
|
|
||||||
|
if (!c64.filterIsAbs) {
|
||||||
|
for (int i=0; i<std.algMacro.len; i++) {
|
||||||
|
std.algMacro.val[i]=-std.algMacro.val[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// <187 special/test/gate merge
|
// <187 special/test/gate merge
|
||||||
|
@ -3429,6 +3435,12 @@ DivDataErrors DivInstrument::readInsDataOld(SafeReader &reader, short version) {
|
||||||
memcpy(&std.algMacro,&std.volMacro,sizeof(DivInstrumentMacro));
|
memcpy(&std.algMacro,&std.volMacro,sizeof(DivInstrumentMacro));
|
||||||
std.algMacro.macroType=DIV_MACRO_ALG;
|
std.algMacro.macroType=DIV_MACRO_ALG;
|
||||||
std.volMacro=DivInstrumentMacro(DIV_MACRO_VOL,true);
|
std.volMacro=DivInstrumentMacro(DIV_MACRO_VOL,true);
|
||||||
|
|
||||||
|
if (!c64.filterIsAbs) {
|
||||||
|
for (int i=0; i<std.algMacro.len; i++) {
|
||||||
|
std.algMacro.val[i]=-std.algMacro.val[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// <187 special/test/gate merge
|
// <187 special/test/gate merge
|
||||||
|
@ -3483,6 +3495,10 @@ void DivInstrument::convertC64SpecialMacro() {
|
||||||
for (int i=std.ex4Macro.len; i<maxLen; i++) {
|
for (int i=std.ex4Macro.len; i<maxLen; i++) {
|
||||||
std.ex4Macro.val[i]=std.ex3Macro.val[std.ex4Macro.len-1];
|
std.ex4Macro.val[i]=std.ex3Macro.val[std.ex4Macro.len-1];
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
for (int i=0; i<maxLen; i++) {
|
||||||
|
std.ex4Macro.val[i]=1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (int i=0; i<maxLen; i++) {
|
for (int i=0; i<maxLen; i++) {
|
||||||
if (i>=std.ex3Macro.len) {
|
if (i>=std.ex3Macro.len) {
|
||||||
|
|
Loading…
Reference in a new issue