tildearrow / furnace

a multi-system chiptune tracker compatible with DefleMask modules
GNU General Public License v2.0
2.08k stars 188 forks source link

S3M import F1xx F2xx command don't work at all, if there's a KON command. #1964

Closed gtr3qq closed 2 days ago

gtr3qq commented 1 week ago

I noticed this issue with F1xx F2xx command for quite sometimes now. That it won't work if there's a key on command.

For example, image

The F207 next to D-4 won't take effect.

To mitigate this.... I almost never use F1/F2 command and only uses E5xx.

As a result, A s3m file using (on OpenMPT) EFx FEx commands converted to F1 F2 command don't work at all.

Here the beat difference. OpenMPT 1.29.14.00 Furnace v0.6.5

https://youtu.be/IOGlcwFZUDQ video's too big....

here's the file, it's workingprogress. ZARDOZtag.7z.zip

Thank you for your amazing tracker and all your helps!

tildearrow commented 4 days ago

Oh no, this seems to be an issue with the ES5506 dispatch code...

gtr3qq commented 2 days ago

Here's some idea of how to patch it.

a. Let F1xx F2xx command work with the KON command. ......idk if this behaviour is yet another DM leftover like non-presis 03xx command, or a amazing 'bug' got away from many many reversions, haven't check the codes yet.

But it's kinda counter intuitive that I think this would be a better choice to change this behaviour to that of similar to ADT2 MPT....

b. Convert the F1xx F2xx next to a KON command, to E5(80+- xx), every line, with duplicated E5xx command cleared.

The logic behind is that these F1xx F2xx next to a KON is essentiality acting as channel detuned '+-xx'. Isn't that what E5xx is doing anyways?

To better illustrate this idea, here the same .s3m import.

image

at current commit, all these F207 won't take effect. (gloss over the F103, I'm not sure if it'd work...had to take a look debug info to see if it works with KOFF).

now, wouldn't it be better to notate it like so? using E5(80-07) command

image

As you can see, it saves too many next-to-KON-F207 commands.

This approach is compatible with the current F1xx F2xx behaviour.

c. leave it be.

gtr3qq commented 2 days ago

a example manually patched with idea.b

ZARDOZ_patched.7z.zip

Now 100% the same as the source file.

ZARDOZ.zip

tildearrow commented 2 days ago

Oh no, it's even worse:

tildearrow commented 2 days ago

Moving F1/F2 to post effects fixes the issue, but it still is broken in ES5506.

tildearrow commented 2 days ago

Issue now fixed.

gtr3qq commented 1 day ago

Tried latest commit! That's a fix! thanks!