ref: e07088e5f65186f78681116f3337a89d9db3f5ae
parent: ee34129043d15e9cb9f980ab73585bbec8b40314
author: Chris Moeller <kode54@gmail.com>
date: Thu Nov 7 14:06:43 EST 2013
It is now possible to use both Gxx/Lxx and hx in the volume column in the same row
--- a/dumb/src/it/itrender.c
+++ b/dumb/src/it/itrender.c
@@ -3269,6 +3269,8 @@
}
}
+ channel->toneporta = 0;
+
if ((entry->mask & IT_ENTRY_VOLPAN) && entry->volpan >= 193 && entry->volpan <= 202) {
/* Tone Portamento in the volume column */
static const unsigned char slidetable[] = {0, 1, 4, 8, 16, 32, 64, 96, 128, 255};
@@ -3282,16 +3284,10 @@
v = channel->lastEF;
channel->lastEF = v;
}
- if ((entry->mask & IT_ENTRY_NOTE) || ((sigdata->flags & IT_COMPATIBLE_GXX) && (entry->mask & IT_ENTRY_INSTRUMENT))) {
- if (channel->note <= 120) {
- if (channel->sample)
- channel->destnote = channel->truenote;
- else
- channel->destnote = channel->note;
- }
- }
- channel->toneporta = v << 4;
- } else {
+ channel->toneporta += v << 4;
+ }
+
+ if ((entry->mask & IT_ENTRY_EFFECT) && (entry->effect == IT_TONE_PORTAMENTO || entry->effect == IT_VOLSLIDE_TONEPORTA)) {
/* Tone Portamento in the effect column */
unsigned char v;
if (entry->effect == IT_TONE_PORTAMENTO)
@@ -3307,16 +3303,18 @@
v = channel->lastEF;
channel->lastEF = v;
}
- if ((entry->mask & IT_ENTRY_NOTE) || ((sigdata->flags & IT_COMPATIBLE_GXX) && (entry->mask & IT_ENTRY_INSTRUMENT))) {
- if (channel->note <= 120) {
- if (channel->sample)
- channel->destnote = channel->truenote;
- else
- channel->destnote = channel->note;
- }
+ channel->toneporta += v << 4;
+ }
+
+ if ((entry->mask & IT_ENTRY_NOTE) || ((sigdata->flags & IT_COMPATIBLE_GXX) && (entry->mask & IT_ENTRY_INSTRUMENT))) {
+ if (channel->note <= 120) {
+ if (channel->sample)
+ channel->destnote = channel->truenote;
+ else
+ channel->destnote = channel->note;
}
- channel->toneporta = v << 4;
}
+
if (channel->playing) goto skip_start_note;
}