nothingtosay wrote:I know that overall Nintendulator is less accurate than Mesen, at least according to the existing test ROMs
Test ROMs only test for very specific things, though. If there's no test ROM for something yet, it's probably a relatively unknown behaviour still, and any emulator, even one that seems "more accurate" than others, is liable to have arbitrary/random decisions applied to that grey area.
For example, NSFPlay
seems to implement a free-running clock divider, but it implemented the 8-step sequence as a 16-step sequence instead of an additional division of the clock by 2, so it seems to be semi-correct, reducing the potential phase shift by half? When this was written there was no deliberate attempt here to get that particular behaviour correct, because it was unknown to the author. These were just decisions made to fill the "gaps" between the things that are known.
There's always more than one way to implement anything, and in terms of emulation "unknown" often means "doesn't appear to matter". You have to find a test case, ideally a test ROM, that can show you what the true behaviour should be.
Like, the 16-step sequence in NSFPlay is apparently wrong, but the original implementer did it that way, and it's taken many years to finally notice a case where it matters. Because I don't tend to change code that was already passing all of my own tests, I saw no reason to change it. Now I have a reason.
nothingtosay wrote:Nintendulator handles this particular edge case better.
Not necessarily. My point was that variation of SMB3 over time could easily be caused accidentally by something else, and it's possible that there are stable timings where it shouldn't
change over time. This particular effect is very sensitive to a lot of things that SMB3 isn't any kind of control for.
Anyhow, just be wary of just looking at one particular example doing what you expect, and presuming this is correct. SMB3 was a good example for noticing this subtle effect exists, but it's not the proper tool to figure out exactly how to implement it correctly.
rainwarrior wrote:(You mentioned a test case by Blargg, but I'm not certain if it's supposed to be a test of this specific thing either.)
I assume you were talking to me in this paragraph, but Sour was the one who brought up the APU test ROM.
Sorry for the confusion, I'm probably just conflating the whole conversation into one big "You".
nothingtosay wrote:I don't know the first thing about programming so I have no capability of making a test ROM for this. If I were able, it's definitely the kind of project I'd devote some time to.
I'll write my own test for it when I get back to NSFPlay, if someone else doesn't do it before then.