I woud like to go public with my cycle accurate, open source SMS emulator TwoMbit.
TwoMbit is affected by bsnes and uses the libco threading module. One thread for each core.
The Gui is programmed in C# / WPF (compiled for .Net 4.0). The emulation core is a unmanaged c++ dll. I am using directx only, so the core depends on Windows...at time
The cpu can sync each Master to the vdp or apu, of course if it's needed only. for example before register writes.
The vdp can sync to the cpu each 2 Master.
The emulator itsself is not very speed optimised at time but I think the code readability is good.
What is emulated?
- cpu bus hold times
- interrupt recognition one cpu cycle before opcode edge.
- sprite preprocessing during active display
- background display generation is parted and timed in name, color and pattern address select and ram load
- VDP delay
- cpu access window for active display
- emulating port 3e, can load bios or combine bios with game
- switchable between SMS 1 and 2
What is missing
- Lightgun support (input is already configurable in GUI)
- savestate support
- cheat support
•SG-1000, SC-3000 emulation (vdp mode 0 and 2 are already supported)
•game gear emulation
•additional yamaha sound chip
I would like to thank following people and groups:
•blargg for his blip_buffer and ntsc filter
•byuu for bsnes, which has inspired me
•Charles MacDonald for his docs and infos
•the people from smspower.org for the countless usefull discussions about the hardware