giga-refactor, part 13

get rid of time base
This commit is contained in:
tildearrow 2025-11-16 15:45:24 -05:00
parent 334d8708e2
commit 663f32d9d4
9 changed files with 43 additions and 35 deletions

View file

@ -256,11 +256,11 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
bool customTempo=false;
ds.subsong[0]->timeBase=reader.readC();
unsigned char oldTimeBase=reader.readC();
ds.subsong[0]->speeds.len=2;
ds.subsong[0]->speeds.val[0]=reader.readC();
ds.subsong[0]->speeds.val[0]=(unsigned char)reader.readC();
if (ds.version>0x07) {
ds.subsong[0]->speeds.val[1]=reader.readC();
ds.subsong[0]->speeds.val[1]=(unsigned char)reader.readC();
bool pal=reader.readC();
ds.subsong[0]->hz=pal?60:50;
customTempo=reader.readC();
@ -317,7 +317,7 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
}
if (ds.system[0]==DIV_SYSTEM_YMU759) {
switch (ds.subsong[0]->timeBase) {
switch (oldTimeBase) {
case 0:
ds.subsong[0]->hz=248;
break;
@ -340,8 +340,10 @@ bool DivEngine::loadDMF(unsigned char* file, size_t len) {
ds.subsong[0]->hz=248;
break;
}
ds.subsong[0]->timeBase=0;
addWarning("Yamaha YMU759 emulation is incomplete! please migrate your song to the OPL3 system.");
} else {
ds.subsong[0]->speeds.val[0]*=(oldTimeBase+1);
ds.subsong[0]->speeds.val[1]*=(oldTimeBase+1);
}
logV("%x",reader.tell());
@ -1346,7 +1348,7 @@ SafeWriter* DivEngine::saveDMF(unsigned char version) {
int intHz=curSubSong->hz;
w->writeC(curSubSong->timeBase);
w->writeC(0);
w->writeC(curSubSong->speeds.val[0]);
w->writeC((curSubSong->speeds.len>=2)?curSubSong->speeds.val[1]:curSubSong->speeds.val[0]);
w->writeC((intHz<=53)?0:1);

View file

@ -1077,7 +1077,7 @@ bool DivEngine::loadFur(unsigned char* file, size_t len, int variantID) {
}
reader.readI();
subSong->timeBase=reader.readC();
unsigned char oldTimeBase=reader.readC();
subSong->speeds.len=2;
subSong->speeds.val[0]=(unsigned char)reader.readC();
subSong->speeds.val[1]=(unsigned char)reader.readC();
@ -1641,6 +1641,10 @@ bool DivEngine::loadFur(unsigned char* file, size_t len, int variantID) {
}
}
for (int i=0; i<16; i++) {
subSong->speeds.val[i]*=(oldTimeBase+1);
}
if (ds.version>=156) {
assetDirPtr.push_back(reader.readI());
assetDirPtr.push_back(reader.readI());

View file

@ -296,7 +296,6 @@ SafeWriter* DivEngine::saveText(bool separatePatterns) {
}
w->writeText("\n");
w->writeText(fmt::sprintf("- virtual tempo: %d/%d\n",s->virtualTempoN,s->virtualTempoD));
w->writeText(fmt::sprintf("- time base: %d\n",s->timeBase));
w->writeText(fmt::sprintf("- pattern length: %d\n",s->patLen));
w->writeText(fmt::sprintf("\norders:\n```\n"));