WonderSwan status and testing (Patreon)
Content
Last days have been great. After I struggled with getting even the first games to work, because of the relativly complex CPU, the path is now much more relaxed and I want to tell you about the status.
As last time, this is all emulator only, no HDL code yet. But this emulator is completely cyclebased: every call to a submodule like CPU or PPU advances the internal logic only 1 clock cycle ahead. This, together with compatible savestates, will make implementing in VHDL very easy.
Overall, the status is currently:
- CPU 100% (but some bugs left)
- Timers 100%
- Memory Access 100% (Cartridge, SRAM, EEPROM)
- PPU 80%
- Audio 0%
And that's it. There is nothing more inside the original Wonderswan. The Color version also got a DMA.
After I got my first game(Klonoa) running, testing of other games was needed. And this is really tedious with a system with so many japanese titles where I can only randomly try things.
So I picked up an idea from Liji, the developer of SameBoy: automatic testing. The emulator boots up every game itself, presses random buttons and looks for problems. Also the graphical output is checked: if it freezes for some seconds even with different buttons pressed, the game most likely crashed.
You can see the result in the video: it's working great. Some problems are of course not found, but it's a great help to find games still having issues. With this, I could find out that from the 117 games of the original black and white WonderSwan, 108 (92%) already boot up and get ingame.
On GBA and Lynx I started the FPGA implementation with ~80% of the games working in my emulator, so this would be by far good enough to start with the FPGA implementation and fix those few issues later on.
However, I decided to do two more things first:
- WonderSwan Color support: I want to see which parts may need a change to be prepared
- Sound: unlike other systems I did, I want to understand the sound before starting the FPGA implementation. The reason is, that the sound can access memory in parallel with the CPU and PPU and I want to have that clarified, so I don't need to redesign things later on.
That's it for now. I will report back when the next steps are done.
Have fun and a good time!