top of page

84aa972 / 18-05-2023





average rating is 4 out of 5
average rating is 4 out of 5
average rating is 4 out of 5

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


Add description of swtrilgy patch from MAME …

  • Star Wars Trilogy will sometimes write to a JTAG register and then read it back to verify it, but this doesn't work correctly with Supermodel's current JTAG implementation; it will try again and never succeed, getting stuck in an infinite loop. This patch stops the code from branching up and trying the write/read cycle again, allowing the subroutine to continue normally.

    We need to implement shift register widths correctly for each JTAG device (Mercury, Venus, Earth, etc.) for the unpatched code to work properly... right now Supermodel implements one JTAG device with a huge 197-bit data shift register


  • Games.xml: Removed seemingly unnecessary swtrilgy and swtrilgya patches, which should re-enable JTAG configuration and fix Endor Death Star tunnel shading.

  • Fix GCC 13 build.

  • Work around to prevent I/O error after a while on fishing games with tension

  • Crosshair optimization: -create crosshairs only once in Init() instead of created them at every cycle. -use matrix scale to apply the aspect ratio


  • Makefile.Win32: fixed detection of Windows Command Prompt for rmdir command


  • Crosshair: use actual adjusted viewport resolution (configuration resolution is not the same thing). Fixes crosshair alignment for resolutions with non-Model 3 aspect.


  • Windows app manifest added to enable PerMonitorV2 DPI awareness


  • README.txt: Updated Section 5 (video settings), squeezed everything b… 

  • NetBoard: guard against freeing null pointers and INetBoard needed a … 

  • Autobuild script update following crosshair update


  • Autobuild script update following crosshair update

  • m_crosshair is not needed and the config should be checked every fram… 

  • Better optimisations

  • Change Media folder to Assets folder

  • Crosshair refactor 

  • README.txt: Fixed a typo, end-of-sentence formatting in section 10


  • README.txt: fixed typoBart Trzynadlowski

  • README.txt: Added region codes to section 10 (c/o Brian Troha)


  • Fixed window position config storage and command line parsing

  • Config nodes: added the ability to clear out node values or create them

  • -pos=<x>,<y> -> correct error when not present fixes

  • Add two video settings:  -pos=<x>,<y> & borderless

  • Allow joystick to be fetch if windows has no focus in SDL input mode. 


  • Games.xml and README.txt updated by Brian Troha (new Ocean Hunter ROM…


  • Update with macOS build details


  • Add missing filename to ErrorLog call

  • Memory allocated but not released.


  • Make sure to invalidate texture memory when going fullscreen otherwise it might not be syned correctly.

  • SDL_SetWindowFullscreen isn't needed as we call ResizeGLScreen which sets the fullscreen mode afterwards.

  • We must explicitly call SDL_SetWindowFullscreen after setting the dis… …play mode otherwise the refresh rate doesn't change.


  • Be a bit more flexible with the display frequencies we'll match


  • The model 3 (actually model 1,2 and 3) all used some crazy refresh ratete of 57.524hz. If your screen refresh rate is 60hz, supermodel will work fine, but really run too fast. Anyway if you create a custom refresh rate, supermodel will automatically pick this, and set it when the emulator is in fullscreen mode. Apparently this works with most monitors, even cheapo low end ones.

    To active set your command line to:
    -res=1920,1080 -vsync -fullscreen -true-hz

    Replace the resolution with whatever your monitor's native resolution is.

  • Better opengl resource allocation. Fixes going fullscreen and back.


  • Add FileSystemPath.cpp to Visual Studio project


  • Fixed build on macOS

  • Switched to Util::Format() to generate screenshot filename

  • First review code changes (identation and cosmetic changes)

  • Changed pathType from string var to enumcasasfernando

  • Keep Supermodel files (config, nvram, saves, etc.) in a predictable path when running on Linux


  • add undefd codepath for correct use of the 18bit DAC path


  • Fix uniform location.

  • Update Model3.cpp

  • whitespace

  • Wait until IRQ2 is acknowledged before starting IRQ40 sequence. 


  • Incomplete texture headers uploaded via FIFO are now discarded. Ski Champ sends one more 32-bit word via DMA than it should which was causing Supermodel to erroneously intepret the extra word as another texture


  • [Makefile.Win32] $MSYSTEM check never fails.


  • FIx shaders failing to build on apple h/w


  • Update makefile

  • Remove some left over depreciated opengl functions. They were basical… 

  • Merge branch 'master' of

  • Rewrite the whole project for GL4+. I figured if we removed the limit…


  • change all INT16 mixing/intermediate clamping to floats


  • 68K now uses run-time hooks for IRQ and instruction hook callbacks


  • Games.xml: Added re-dumped magtruck and retained old ROM set with patch


  • Fix build for linux (just missing header)


  • Upgrade the glsl shader class a bit. Add a const char* comparitor

  • Add a proper git ignore file...

  • And fix the legacy renderer to build...


  • after clarifications, minor cleanup

  • remove 2 dupe function calls, where ProcessLos should actually be rat

  • Fix new 3D engine texture2DLod function missing error on Linux/MESA


  • change one more place with potential aliasing issue

  • address review and move bit casts to new header

  • use correct slash

  • Harmless math warning fixes. map->unordered_map in CNew3D::CacheModel


  • 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.

--46eff8c--- 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 Spindizzi2560451

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

bottom of page