78f5056 / 29-12-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.
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 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.
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
Remove some left over depreciated opengl functions. They were basical…
Merge branch 'master' of https://github.com/trzy/Supermode
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
Fix SUPERMODEL_DEBUGGER build
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
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
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
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.
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