0eef09b / 20-08-2022






SuperModel emulates Sega's Model 3 arcade platform which uses OpenGL and SDL library to those arcade games. It's still considered to be in "alpha" stage of development, meaning it lacks many planned features and does not yet have a user-friendly graphical interface, game compatibility remains average, and all CPUs are emulated using straightforward interpretation rather than fast just-in-time translation. 

Front-end UI available are either available SuperModel 3 UI or SuperModel Assistant.

This is also a fork which adds native Sinden light gun support and it named Sega Model 3 Arcade Emulator (Sinden).


Most Recent Changes


  • Revert "port some changes from MAME/MESS

  • fix missing version GLSL compiler warnings on startup 

  • port some changes from MAME/MESS


  • Revert "port some changes from MAME/MESS"

  • Optimize quad rendering by replacing the double 

  • Port some changes from MAME/MESS




  • Revert "port some changes from MAME/MESS"

  • Port some changes from MAME/MESS

  • Equivalent optimizations, NFC

  • Port some (simple) changes from MAME/MESS


Fix some errors, fix some performance warnings, and some simple (but effective) optimizations


Games.xml: Align ROM names with MAME.


supermodel_build_bot.py: New build bot script for GitHub


Fix build with SUPERMODEL_DEBUGGER enabled. Probably last commit as source has moved to git.


njz3: Fix sound volume with new quadrophonic audio code


values must be signed, to handle negative numbers, my bad


minor fix


Added configurable refresh rate. Default is 60 but -true-hz on the command line enables 57.524 Hz mode, which some players report making Spikeout and the timing of combos in VF3 more authentic. The config key is RefreshRate and is specified as a floating point value. Should the desire arise, arbitrary refresh rates can be set in Supermodel.ini using this key but almost no validation of the value is performed. Thanks to forum user trap15 for the original code and PonMi for advocating for this ...


njz3: Proper quadrophonic audio support. Need 4+ speakers to take advantage otherwise down mixed to stereo.


Added default values for PortIn, PortOut, and AddressOut


fix: explicit specialization requires 'template <>'


Bitmap size field in the BITMAPV4HEADER was not being set correctly (the image viewers I've been using are unaffected by this but it ought to be corrected)


When dumping textures, two T1RGB5 texture maps are written: with and without contour processing. Contour processing can be disabled per-polygon and some textures intended to be used without contour processing contain pixels with T=1 that are clearly not supposed to be transparent. We now output textures_t1rgb5_contour.bmp and textures_t1rgb5_opaque.bmp.


Added a -dump-textures option (config key DumpTextures) that writes texture BMP files, one for each known format (12 in all currently)


Adjust the number of PowerPC cycles executed per frame to assume 57.524 Hz refresh rate


Double buffer the line of sight values. Should allow the correct values to be returned if GPU threading is enabled


Fixing Magical Truck Adventure bad ROM dump which was causing attract mode to stop rendering


Methods should be marked as noexcept because they cannot throw


white space


Better document real3d registers


Clear all Real3D DMA registers on reset; uninitialized values were causing issues with MSVC debug builds


Another header include fix


Include required header files in Model3GraphicsState.h - fixes potential build errors in GCC


Increase MIDI FIFO buffer size for SCSP; should prevent FIFO overflows


PowerPC IRQ line deassertion; DMA only fires interrupts when required


Getting rid of most of the includes from Supermodel.h; each file now explicitly includes the header files it needs.


Shared RAM on simulated netboard is now double-buffered; Spikeout Final Edition no longer requires a hack to work.


New JTAG patch for Sega Rally 2; linked mode now fully working.


Increase size of DSB2 FIFO buffer; fixes Sega Rally 2 music occasionally not switching or fading ou


Non-linked games no longer falsely list the net board under extra hardware


UI Update Details (06-01-2021)

  • following recent rom set name changes in Games.xml 

  • Added – list view of all the supported games

  • Added – preview of each game (snaps).

  • Added – button of the roms directories.

  • Added – check Load button (Load Rom)

  • Added – all video options

  • Added – all sound options

  • Added – all control options (for the time being it uses the supermodel configurator (accurate and will never fail)

  • Added – system link options (preliminary) will only work with the only version created by Spindizzi

Show Previous Changes


  • Fix 16-bit variables not displaying correctly in Z80 debugger (at least in MSVC builds)


  • Fix netboard resets and detection of simulated netboard linking to itself


  • Adding simulated netboard; all linked games except Sega Rally 2 working at full speed.


  • Corrected alignment issues with netboard RAM; send/receive parameters no longer need to be manipulated to work correctly. Fixes bugs including Scud Race linked car orientation.


  • Add some async network methods. Async send copies to an internal buffer and sends in another thread so doesn't block at all. Added CheckDataAvailable method to the TCPReceive class. Can check or wait for data without blocking.


  • DSB2 clock speed from 4MHz to 11MHz.


  • New dumps added:


  • Fixed cycle counting overflow that was causing DSB2 to halt execution.


  • missing header


  • DSB2 IRQ 2 now fires at 1KHz rather than once per frame, improving


  • Just a few compile warnings


  • Fix project file


  • Build bot script.


  • Introduce new config keywords.

  • In xinput mode, lets the choice to have left and right gamepad motors vibrate together.
    XInputStereoVibration = 1 (both motors) [default]
    XInputStereoVibration = 0 (separate motors)

  • In sdl input mode, new control option to set minimum strength above which a Model 3 constant force command will be simulated on an sdl gamepad device.
    SDLConstForceThreshold = 30 [default]
    note : the vibration strength can be mod with SDLConstForceMax = [val]


  • The controls of bass/getbass games were no longer good, following recent rom set name changes in Games.xml.


  • Corrected game set names & game titles (Brian Troha)


  • Added rumble skipad in Ski Champ game.


  • Service menu activated in swtrilgyp.


  • Add -O3 optimization option for OSX and Linux.


  • Cannot locate older