Author |
Message |
- Joined: 02 Dec 2021
- Posts: 5
|
YM2413 OPLL - Register writes causing buggy output
Posted: Sat Jan 15, 2022 7:08 pm
|
I'm turning to this community as well, as I have discovered a rare case where the chip is playing a cymbal (and possibly hihat too), when only other drums should be played.
Like, this register write [reg val]: 0x0E 0x30
... should produce bass drum only, but if you send this "command" after you have played a 9-channel tune and reset chip or set KEYs OFF -- you get an unwanted cymbal played as well (once).
Note: the playing of an 9 channel tune prior to this, is a required step. (My 9-channel "test-vgms" used for this, has been recorded from MoonBlaster. I'm not sure if this is important or not)
Video, vgm-file and additional details over at msx.org (I'm not allowed to include links as I am "recent member", but the topic on msx.org is called "ym2413-producing-buggy-output-is-that-even-possible" and is under "graphics-and-music")
Let me know if anyone knows anything about this surprising behaviour.
|
|
|
- Joined: 02 Dec 2021
- Posts: 5
|
Posted: Sat Jan 15, 2022 7:11 pm
|
Link:
msx.org/forum/msx-talk/graphics-and-music/ym2413-producing-buggy-output-is-that-even-possible
|
|
|
- Joined: 01 Feb 2014
- Posts: 888
|
Posted: Mon Jan 31, 2022 2:11 pm
|
Thank you for that link. While it doesn't address the problem at hand, at least your discussion prompted me to change the way the rhythm instruments are triggered in the SMS port of MBMPlay from the wrong method found in the original source to the (presumably) correct one.
|
|
|
- Joined: 02 Dec 2021
- Posts: 5
|
Posted: Mon Jan 31, 2022 2:44 pm
|
Yes, I got help in the other forum from people who really knows a lot of the inner workings of this chip. The problem is identified, and to some extent traced down. Short version: Even if you reset the chip/registers, there are internal states that are *not* reset, and remnants from a previous state can be heard when you start "playing another tune". A proper remedy is not yet found.
People that work with this chip should be aware.
|
|
|
- Joined: 05 Sep 2013
- Posts: 3865
- Location: Stockholm, Sweden
|
Posted: Tue Feb 01, 2022 11:22 am
|
AFAIK there's no 'chip reset' so the only way to avoid that issue seems to be to program the chip in 9 channels mode, zero all the volumes, then play a note on each channel with a (custom?) instrument that has very fast decay so as to quickly reach the end of all the envelopes and then the chip *should* be ready for a new tune.
Actually I think a trick might be to play a custom 'reset the chip' MBM tune when needed (or IF it's needed, since it seems to appear only in some specific situations) - this might hide the problem
|
|
|
- Joined: 02 Dec 2021
- Posts: 5
|
Posted: Tue Feb 01, 2022 2:24 pm
|
Yes, some custom things seems to be needed.
I read this from the manual earlier (here on smspower.org): "All registers are cleared to 0 by initialization (initial clear IC terminal = 0)."
Returning to this, I see now that it does not say that we can init by clearing registers to 0, but I recall that, that was my impression from reading it earlier :-/
|
|
|