Dn-Programming-Core-Management / Dn-FamiTracker

modifications and improvements for 0CC-FamiTracker (based on j0CC-FamiTracker 0.6.3)
Other
372 stars 23 forks source link

NSF export effects state corruption? #207

Open Gumball2415 opened 1 year ago

Gumball2415 commented 1 year ago

On NSF export, a channel with 2 FX columns that has an active Axy command, duty cycle command, volume command, and pitch slide command will overload(?) the channel effects state and default back to duty cycle 0, volume F, and no effects.

TODO: create test module that exhibits this bug

Gumball2415 commented 1 year ago

hypothesis: stack overflow from too many effect state variables?

Gumball2415 commented 1 year ago

test module: the second frame on NSF export has corrupted effect state eternal guilt.zip

Gumball2415 commented 6 months ago

eternal guilt exhibits bugs regarding missed delay handling. in 0CC's implementation, it only handles frame transition missed delays. in vanilla's implementation, it only handles row transition missed delays.

0CC causes delays longer than the row tick length to be excessively long, not reset upon a new row. vanilla causes command bytecodes following Gxx to be entirely ignored.

a previous fix in #156 replaced 0CC's implementation with FT 0.4.6's, but it has its own bugs as stated above.