Quelques infos en provenance de Byuu au sujet de son émulateur de SNES:

Even before I started on bsnes, I always knew bit-perfect emulation of the SNES was an impossible goal. But I tried anyway. Today, I tried to reverse engineer the missing details of reading the hardware math registers without waiting the required amount of time for the operations to complete. Just testing the very basics, I’ve discovered that there are multiple intermediate calculation results for many different clock positions between the math operation beginning and completing. I also learned that the results are calculated between opcode edges, rather than in realtime. I also learned that not only is the delay different for results of multiplication and division, but also for results of the division quotient and remainder. Now, I could spend months (yes, months) logging results of reading the HW math result registers before the operations complete and RE the partial math calculations, I could probably even figure out exactly at which point calculations begin and end. All the while I would be taking massive speed hits by adding more timer checks and calculations into critical sections of code. However, this still wouldn’t be good enough. There would still be many clock positions I simply could not test due to limitations of clock-stepping between writes to the math registers and reading their results. And even if I were able to figure out every possible read result, their math calculations, and how and when the SNES internally decides to calculate these results, I’d still have yet another major hurdle to overcome: what happens if you write to the input math registers during calculations to the output registers while the calculation is currently in progress? Probably lots of fun new results to try and decipher. Easily 4+ months of work, and for what? Emulating two math register edge cases that have never been used, even unintentionally, in any commercial games ever released, to our knowledge. And I have to wonder… who’s going to spend months of their life working on something without ever seeing any results from that work?

And then there’s so many other edge cases just like this: toggling overscan enable between V=225 and V=240, writing to PPU registers during active display, S-DSP register caching between the 32khz output clock rate, etc, etc.

And ultimately, I have to concede. A fully bit-perfect emulator would take decades to create using current emulation techniques, achieve no visible improvements in virtually any games, and require absolutely astounding CPU horsepower to run at full speed. Let alone with extra features such as video filters and fast forwarding. Now, I’m not saying accuracy in any form is a bad thing. But if we know that perfection can never be achieved, where do we draw the middle ground between performance and hardware accuracy? A very tough question, that I am currently faced with, it seems…

Now, with that said: I’ve no intentions of reverting any accuracy that currently exists in bsnes. This is more about what direction to take bsnes toward in the future. I still plan to write a dot-based PPU renderer, but I think that will very likely be the last major accuracy improvement bsnes makes over existing emulators. I’m sure we’d all like to think I could keep working on bsnes forever, but we all know that isn’t going to happen. I need to start prioritizing on what needs to be done, so that I can leave this project with the most complete overall emulator possible. I honestly don’t know how much longer I will continue to work on bsnes. While I presently have no plans to stop working on it, it is absolutely inevitable that it will eventually happen. Hopefully not for at least a few more years yet…

Along those lines, I need to start working smarter instead of harder. I’m going to try getting into hardware engineering. I absolutely require more specialized hardware if I’m ever going to make any progress on emulating special chips such as the SPC7110, testing power-on behavior of the base SNES unit, etc; and as usual, no one capable seems all that interested in doing any of the work for me.

Site Officiel