Can you flag specific combinations that are wrong?
Sure, we'll start with one case and continue to fix them.
In this post:
http://board.byuu.org/viewtopic.php?f=16&t=562&p=12134#p12134I have a standalone C99 (or C++98) app that will emulate only adc+sbc, and will iterate over my adc_sbc_test.zip archive files, telling you if you passed or failed.
First failure is in adc_0000-7fff-clc-sed-p. Failure is at 0x207a.
So given the code:
lda #$20; clc; sed; adc #$7a
My emulator gives: A=00, P=2F
Hardware gives: A=00, P=6F
The difference is that the overflow flag is set on hardware, but not under emulation.
It seems there's an entirely different algorithm for overflow calculation in decimal mode.
I can't speak for Retrocopy, but Kega Fusion and Regen's authors are known for sharing info if you just ask. I'd say that's an acceptable compromise to the issue.
I have written extensively on this subject:
http://byuu.org/articles/licensing/I'm very, very much in favor of giving an author full control of their own source code. I understand how insanely demotivating it is to compete with yourself (as would the MAME team with that one closed source fork), how it's not fair to put in a ton of work when nobody returns the favor but does take your ideas, and so on.
And I realize it's a philosophically hypocritical position for me to take, but I truly feel that emulation is different.
Writing the latest media player or video game, that's your creation. It's your design, and releasing the source to that I could care less about.
But writing an emulator is about recreating hardware. We have to realize that hardware does not last forever. Sega will never make another original Mega Drive. Maybe there will be some knockoff clones, maybe even official clones, but they will be hardware emulators just as the RetroDuo is.
Real hardware fails. Capacitors stop holding charges, transistors fry, circuitry fails. This hardware is already ~20 years old. It is becoming increasingly difficult to get hardware to run tests on.
I would posit that in 30 years from now, we won't be
able to run hardware tests on the Genesis any longer. Anything we failed to emulate, any behavior we weren't sure about, once that last Genesis fails ... that's it. Game over. We'll never know how it really worked.
Thus, it is absolutely imperative, for the sake of properly documenting and archiving the hardware, that we get over our petty little egos and work together to our fullest extent to preserve the hardware while we still can.
I see it as absolutely tragic that childish popularity contests are holding back reverse engineering efforts in the emulation scene.
Sharing info when someone asks is great, but words are not source code, documentation is never equal to implementation, people are hesitant to pester someone for info all of the time, authors will become annoyed if pestered too much for info, etc. It is a negative environment.
Put another way, do you think Gens or Regen would be a better emulator if Kega were open source? If these authors are willing to share
any info, then why not share the source, too?