At standard speed the following pattern data does not load any waveform to the N163 memory from 0.4.0 to 0.5.0 beta 5:
Code: Select all
# : Namco 1
ROW 00 : C-3 00 . G06
ROW 01 : ... .. . ...
This happens whenever the current row does not have enough ticks for the row delay to take place; CChannelHandlerN163::HandleNoteData is called twice on the same tick from CChannelHandler::PlayNote, the first of which handles the C-3 note, and the second of which handles the next blank row, clearing m_bLoadWave immediately before any wave is loaded. This bug might not appear if the pattern is created in FamiTracker then played in the same instance, since previewing any instrument loads the wave of that instrument into the N163 memory, but this can alternatively be replicated by creating another instrument with the same wave position as instrument 00, previewing instrument 00, changing the instrument index of the note to 01, then playing. Exported NSFs do not have this issue as the first wave of the N163 instrument right after reading its parameters.
EDIT: What is the correct behaviour of the 7xy tremolo on the VRC6 sawtooth channel when the volume exceeds 31? In all versions since 0.2.7, this pattern will cause the volume to drop to 2 when the tremolo causes an underflow:
Code: Select all
# : Sawtooth fx2
ROW 00 : C-3 00 6 719 V01
The reason is an integer sign mismatch in CVRC6Sawtooth::RefreshChannel():
Code: Select all
// ...
unsigned int TremVol = GetTremolo();
int Volume = (m_iSeqVolume * (m_iVolume >> VOL_COLUMN_SHIFT)) / 15 - TremVol;
// Volume could be negative here already because CChannelHandler::CalculateVolume() is not used
Volume = (Volume << 1) | ((m_iDutyPeriod & 1) << 5); // negative ints fill higher bytes with 1s
if (Volume < 0)
Volume = 0; // volume is zero, duty information is essentially discarded
// ...
if (m_iSeqVolume > 0 && m_iVolume > 0 && Volume == 0)
Volume = 2; // incorrect clipping for volumes 32 - 63 if 7xy underflows
// ...
The code above is from version 0.4.6. In the 0.5.0 betas, when using any 64-step volume sequence on the sawtooth channel, the outputted volume warps to 63 if the volume after processing the tremolo drops below 0. Exported NSFs clip the volume at 34 for 16-step volume sequences, and 1 for 64-step ones, the latter of which is clearly the correct behaviour, but the former I am not sure.