mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-30 08:23:01 +00:00
update format to store OPLL preset number
This commit is contained in:
parent
60688d8ddb
commit
c52258f943
4 changed files with 19 additions and 10 deletions
|
@ -25,6 +25,7 @@ furthermore, an `or reserved` indicates this field is always present, but is res
|
|||
|
||||
the format versions are:
|
||||
|
||||
- 60: Furnace dev60
|
||||
- 59: Furnace dev59
|
||||
- 58: Furnace dev58
|
||||
- 57: Furnace dev57
|
||||
|
@ -228,7 +229,11 @@ size | description
|
|||
1 | fms
|
||||
1 | ams
|
||||
1 | operator count (always 4)
|
||||
3 | reserved
|
||||
1 | OPLL preset (>=60) or reserved
|
||||
| - 0: custom
|
||||
| - 1-15: pre-defined patches
|
||||
| - 16: drums (compatibility only!)
|
||||
2 | reserved
|
||||
--- | **FM operator data** × 4
|
||||
1 | am
|
||||
1 | ar
|
||||
|
|
|
@ -37,8 +37,8 @@
|
|||
warnings+=(String("\n")+x); \
|
||||
}
|
||||
|
||||
#define DIV_VERSION "dev59"
|
||||
#define DIV_ENGINE_VERSION 59
|
||||
#define DIV_VERSION "dev60"
|
||||
#define DIV_ENGINE_VERSION 60
|
||||
|
||||
enum DivStatusView {
|
||||
DIV_STATUS_NOTHING=0,
|
||||
|
|
|
@ -40,9 +40,9 @@ void DivInstrument::putInsData(SafeWriter* w) {
|
|||
w->writeC(fm.fms);
|
||||
w->writeC(fm.ams);
|
||||
w->writeC(4); // operator count; always 4
|
||||
w->writeC(fm.opllPreset);
|
||||
w->writeC(0); // reserved
|
||||
w->writeC(0);
|
||||
w->writeC(0);
|
||||
|
||||
for (int j=0; j<4; j++) {
|
||||
DivInstrumentFM::Operator& op=fm.op[j];
|
||||
|
@ -325,7 +325,11 @@ DivDataErrors DivInstrument::readInsData(SafeReader& reader, short version) {
|
|||
fm.fms=reader.readC();
|
||||
fm.ams=reader.readC();
|
||||
fm.ops=reader.readC();
|
||||
if (version>=60) {
|
||||
fm.opllPreset=reader.readC();
|
||||
} else {
|
||||
reader.readC();
|
||||
}
|
||||
reader.readC();
|
||||
reader.readC();
|
||||
|
||||
|
|
|
@ -88,13 +88,13 @@ void DivPlatformOPLL::acquire_nuked(short* bufL, short* bufR, size_t start, size
|
|||
printf("write: %x = %.2x\n",w.addr,w.val);
|
||||
regPool[w.addr&0xff]=w.val;
|
||||
writes.pop();
|
||||
delay=84;
|
||||
delay=21;
|
||||
} else {
|
||||
//printf("busycounter: %d\n",lastBusy);
|
||||
//w.addr=rand()&0x3f;
|
||||
OPLL_Write(&fm,0,w.addr);
|
||||
w.addrOrVal=true;
|
||||
delay=12;
|
||||
delay=3;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -267,7 +267,7 @@ void DivPlatformOPLL::tick() {
|
|||
}
|
||||
if (chan[i].keyOn) {
|
||||
//immWrite(0x28,0xf0|konOffs[i]);
|
||||
immWrite(0x20+i,(chan[i].freqH)|(chan[i].active<<4));
|
||||
immWrite(0x20+i,(chan[i].freqH)|(chan[i].active<<4)|0x20);
|
||||
chan[i].keyOn=false;
|
||||
}
|
||||
}
|
||||
|
@ -657,9 +657,9 @@ void DivPlatformOPLL::setFlags(unsigned int flags) {
|
|||
} else if (flags==2) {
|
||||
chipClock=8000000.0;
|
||||
} else if (flags==1) {
|
||||
chipClock=COLOR_PAL*4.0/5.0;
|
||||
chipClock=COLOR_PAL*1.0/5.0;
|
||||
} else {
|
||||
chipClock=COLOR_NTSC;
|
||||
chipClock=COLOR_NTSC/4.0;
|
||||
}
|
||||
rate=chipClock;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue