fix loop logic
This commit is contained in:
parent
173bb1b11b
commit
7d0567d8a2
|
|
@ -155,7 +155,12 @@ int opm_requantize(opm_convert_context_t* ctx) {
|
||||||
// flush delays
|
// flush delays
|
||||||
delay_rate = 0;
|
delay_rate = 0;
|
||||||
|
|
||||||
if (it == ctx->vgm.vgmfile.begin() + ctx->vgm.loop_pos) loopFrame = true;
|
if (it == ctx->vgm.vgmfile.begin() + ctx->vgm.loop_pos) {
|
||||||
|
loopFrame = true;
|
||||||
|
for (int i = 0; i < 9 + 1; i++) {
|
||||||
|
oplchans[i].frame = currentFrame;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// first, do OPL cases
|
// first, do OPL cases
|
||||||
switch ((VGM_Stream_Opcode)*it) {
|
switch ((VGM_Stream_Opcode)*it) {
|
||||||
|
|
@ -249,8 +254,8 @@ int opm_requantize(opm_convert_context_t* ctx) {
|
||||||
ctx->oplchan[ch].push_back(oplchans[ch]);
|
ctx->oplchan[ch].push_back(oplchans[ch]);
|
||||||
oplchans[ch].data.clear();
|
oplchans[ch].data.clear();
|
||||||
oplchans[ch].frame = -1;
|
oplchans[ch].frame = -1;
|
||||||
loopFrame = false;
|
|
||||||
}
|
}
|
||||||
|
loopFrame = false;
|
||||||
// and increment current frame
|
// and increment current frame
|
||||||
currentFrame += ratio;
|
currentFrame += ratio;
|
||||||
}
|
}
|
||||||
|
|
@ -326,7 +331,7 @@ int opm_write_file(opm_convert_context_t* ctx) {
|
||||||
memcpy(ctx->opmfile.header.magic, "OPM\x1A", 4);
|
memcpy(ctx->opmfile.header.magic, "OPM\x1A", 4);
|
||||||
ctx->opmfile.header.version.v = 0x0001;
|
ctx->opmfile.header.version.v = 0x0001;
|
||||||
ctx->opmfile.header.flags = 0;
|
ctx->opmfile.header.flags = 0;
|
||||||
ctx->opmfile.header.callstack_depth = 0;
|
ctx->opmfile.header.callstack_depth = ctx->flags.max_stack_depth;
|
||||||
ctx->opmfile.header.frame_rate = ((double)0x1234DD / (double)(44100 / ctx->delay));
|
ctx->opmfile.header.frame_rate = ((double)0x1234DD / (double)(44100 / ctx->delay));
|
||||||
ctx->opmfile.header.reserved = 0;
|
ctx->opmfile.header.reserved = 0;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue