The Mega Drive VDP was part of the System C/C2 video code and System 18 used it through file-static state and a few flags, so a change for one board could reach the others. It is now a module, vidhrdw/segavdp.c: - all its state is in one struct, cleared at every start; - each user starts it with its own configuration (struct segavdp_interface): where the CRAM writes go (paletteram16, or the 64 System 18 colors set directly at 0x1800), the initial palette bases, the scanline base of the partial updates, the initial display enable, whether register 12 resizes the screen, and the interrupt callback for writes to registers 0/1; - the boards use accessors (segavdp_get_reg, segavdp_set_palbank, ...); - vidhrdw/segac2_vidhrdw.c keeps only the C/C2, Mega-Tech, Mega Play and bootleg video glue, vidhrdw/segas18.c the System 18 one. Fixed on the way (state left over from a previous game in the same process): the display enable and the Mega Play interrupt-acknowledge/HBLANK mode (now also reset by the C/C2 machine init). The window X position/width and the VBLANK flag are now in the save states. The dead ddcrew/aquario VDP kludges of the old System 18 video are removed. Save states loaded in a new instance (netplay, RunAhead with a second instance) now continue exactly as the instance that saved them: - Mega Drive based boards (drivers/segac2.c): the Z80 RAM and bus state (running flag, bank latch) and the Mega-Tech / Mega Play BIOS registers and RAM were not saved (mp_gunhe and mp_mazin went out of sync); - sound/sn76496.c: the PSG had no save state at all; - sound/fm.c: the YM2612 postload read the DAC enable from register 0x2d instead of 0x2b (the DAC channel was lost or computed as FM after a load). Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01N3fzdsnzkQVtgYtYzqepjX
What is MAME 2003-Plus?
MAME 2003-Plus (also referred to as MAME 2003+ and mame2003-plus) is a libretro arcade system emulator core with an emphasis on high performance and broad compatibility with mobile devices, single board computers, embedded systems, and similar platforms.
In order to take advantage of the performance and lower hardware requirements of an earlier MAME architecture, MAME 2003-Plus began with the MAME 2003 codebase which is itself derived from xmame 0.78. Upon that base, MAME 2003-Plus contributors have backported support for an additional 350 games, as well as other functionality not originally present in the underlying codebase.
What games are supported?
View our live compatibility table built using datmagic, a tool created by the MAME 2003-Plus team. Datmagic auto-generates a compatibility table based on the latest XML DAT file. See an incorrect entry? Create a new issue to let us know! This allows us to keep the compatibility table as accurate as possible by fixing it at the source.
Authors: MAMEdev, MAME 2003-Plus team, et al (see LICENSE.md and CHANGELOG.md)
Documentation
User documentation for MAME 2003-Plus can be found in the libretro core documentation library.
Developer documentation can be found in the MAME 2003-Plus wiki.
Development chat
#programming channel of the libretro discord chat server.
Romsets and how to build them for this core
mame2003-plus was originally built from the MAME 0.78 codebase, meaning that 95% or more of MAME 0.78 romsets will work as-is in mame2003-plus, where they immediately benefit from its bugfixes and other improvements. In order to play the new games and games which received ROM updates in mame2003-plus, you will need to find or build the correct romsets.
Read more about rebuilding romsets in the libretro core documentation for mame2003-plus.