It's been a while since I posted an update on Gens/GS II, so I might as well do it now.
Frameskipping is still broken. I won't be releasing 1.0_beta1 until I get this fixed, and I have no idea when it'll get fixed.
Other than that, I've been working on a new cartridge abstraction, RomCartridgeMD. The main advantage of this abstraction is it makes it easier to implement various mapper mechanisms, including SSF2 (already implemented but is now handled better), 10 MB flat addressing, and various unlicensed games that have registers at $400000. In addition, I can now completely swap out the cartridge and map the TMSS ROM in, which allows for proper TMSS emulation. (Not super important, but it's needed for a "nostalgic" feel.)
Technically, ROMs larger than 4 MB are supposed to use a mapper (e.g. SSF2), but there are some unlicensed games that use flat addressing for up to 10 MB. It's possible to do this on actual hardware, with the following limitations:
Support for >4MB ROMs not using the SSF2 mapper will only be supported by Gens/GS II in MD mode. In addition, the SSF2 mapper is currently only enabled for SSF2 based on the ROM serial number; I may add some other way to activate it via the ROM header later on.
Other miscellaneous changes:
Frameskipping is still broken. I won't be releasing 1.0_beta1 until I get this fixed, and I have no idea when it'll get fixed.
Other than that, I've been working on a new cartridge abstraction, RomCartridgeMD. The main advantage of this abstraction is it makes it easier to implement various mapper mechanisms, including SSF2 (already implemented but is now handled better), 10 MB flat addressing, and various unlicensed games that have registers at $400000. In addition, I can now completely swap out the cartridge and map the TMSS ROM in, which allows for proper TMSS emulation. (Not super important, but it's needed for a "nostalgic" feel.)
Technically, ROMs larger than 4 MB are supposed to use a mapper (e.g. SSF2), but there are some unlicensed games that use flat addressing for up to 10 MB. It's possible to do this on actual hardware, with the following limitations:
- >4MB: Sega CD cannot be connected. 32X doesn't properly support >4MB ROMs either, but it may pass the ROM through if not using 32X mode.
- >8MB: 32X cannot be connected, and the cartridge must assert the !DTACK signal after the read request is processed.
Support for >4MB ROMs not using the SSF2 mapper will only be supported by Gens/GS II in MD mode. In addition, the SSF2 mapper is currently only enabled for SSF2 based on the ROM serial number; I may add some other way to activate it via the ROM header later on.
Other miscellaneous changes:
- IoManager (the controller handling class) has been reworked to be easier to deal with programming-wise.
- Most internal VDP registers are now correctly stored in the savestate. DMA still needs work.
- DMA functions now use the actual VDP registers as counters instead of separate variables. I believe this is how the actual VDP works, and it makes it easier to implement the 128K source address wrapping limitation.
- libgenscd now works for CD-ROM drive and media identification on Windows and Linux.
- ZOMG.ini is now created in savestates. This file describes the contents of the savestate, e.g. original ROM image and system ID.
This post has been edited by GerbilSoft: 28 May 2013 - 11:44 AM


9001