who's going to research things properly if it's all, apparently, documented?
Me and Nemesis ;)
Take the fact that there are now a lot of emulators based on Gens, instead of based on research, as an example of what I mean here.
That bothers me too. You almost have to be a historian to know where some of these emulators began (FCE by Bero -> FCE Ultra -> FCEU XD -> FCEU XD SP -> FCEU XD SP++ -> FCEUX).
I don't mind that others who don't have access-to / desire-to-do hardware testing instead contribute to existing emulators, but past a certain level of accuracy, it's no longer beneficial to mess with the emulator cores. At best, it results in taking ambiguous guesses about how things work -- coming from someone unfamiliar with how the system as a whole works. At worst, it spreads wrong information to all the other emulators.
I do wish all of the non-porting emulator authors would perform their own hardware tests. The NES emulator scene, with its 50+ active emulators and
maybe 3-4 people actually confirming behavior seems particularly silly to me. Still, not my place to tell others what to do with their time. So long as they're having fun, more power to them.
But at the same time I'd kinda like to see other people doing stuff like Nemesis is doing, because there are always new things to discover, and copying somebody elses work doesn't further the cause.
"If I have seen farther than others, it is because I have stood on the shoulders of giants." -- Sir Isaac Newton
My personal experience is that tech docs are almost always unclear, and assume too much pre-existing knowledge. It was because of the source code available for other emulators that I was able to catch up with them in two years, whereas it took them eight to get where they were.
And yet, for every good use, there are
hundreds of bad uses of available source code. VBA's demise stands out in my mind.
Worst case scenario: someone forks your code, adds some silly feature you neglected for whatever reason, or does something you strongly oppose (speed hack / game-specific hacks / internal ROM database / whatever). All of a sudden, 2/3rds of your userbase that you need for bug/regression testing is gone. And the rest waste your time with bug reports from the forked version that you fixed in yours years ago (ala Snes9X forks). Competing against your own work must be so incredibly disheartening.
I know how hard it can be to spend years and years working on something, and to see some asshole come along, spend five minutes on it, slap their name on it and take all the credit. Thus, it's a question of how much trust you're willing to place in others. Nobody has the right to make that decision but the author himself. If one person benefits the scene thanks to your source, is that worth ten people ripping you off? Or would those ten peoples' damage exceed the benefit of the other one?
You mention
"In the early days, Stef, Gerrie and myself were talking almost every day about this stuff, but all of us were trying to figure out things on our own", which is great; but reinventing the wheel can also be a severe waste when there are so few emulator authors around who do their own hardware research. That's a great attitude for the early days of emulation, but no single man can figure out 100% of a system alone.
That also becomes a balancing act: if a person uses others' findings as an answer-key, they will get nowhere. But if they use it as a study guide, and really try and understand the
why, and not just the
how, it can save an immeasurable amount of time.
Anyway, just food for thought. Not arguing for you to release the code -- I'd prefer you do what you feel is best with your source. I do hope you consider releasing it once you unfortunately leave the Genesis emulation scene, at least.
However, if there is something specific that I *can* answer, I'm happy to.
I'd like to hear more about KGen's commercial release history in SEGA et al's PC ports, heehee :D