0.271-2.21d / 01-11-2024
GroovyMAME
Accuracy
Performance
Features
GroovyMAME is a fork of MAME aimed at CRT monitors, with a strong focus on CRT preservation since they argue its the only display technology that accurately replicates the genuine video game experience. However you can use GroovyMAME to alleviate some of the annoyances associated to emulation on LCD displays, specially for models that are capable of refreshing at custom rates.
GroovyMAME's main features:
- Improved video and audio synchronization that achieves truly smooth scrolling, tearing-free video and hiccup-free audio.
- Automatic generation of custom video timings for CRT monitors.
- Reduced input latency
While the improved synchronization feature is system independent, you are going to need special hardware and software setups in order to get the full experience. For more information, follow this link
--
Windows: XP+ (7+ recommended)
CPU: Intel Core series CPU or equivalent, at least 2.0 GHz
GPU: modern card with Direct3D 9.0c+ / OpenGL
RAM: 4 GB
Most Recent Changes
--0.271-2.21d--
Sync with mame v0.271
--0.270-2.21d--
Sync with mame v0.270
--0.269-2.21d--
Sync with mame v0.269
--0.268-2.21d--
Sync with mame v0.268
--0.267-2.21d--
Sync with mame v0.267
--0.266-2.21d--
[nogpu] Support for analog joysticks connected to the MiSTer.
[nogpu] New input backend keyboardprovider mister: allows using one keyboard connected to the MiSTer.
[nogpu] New input backend mouseprovider mister: allows using one mouse connected to the MiSTer.
Sync with mame v0.266
--0.265-2.220c--
Fix wrong speed on certain games (crusnusa, etc.), always update screen when syncrefresh is on (bypass frameskip).
Sync with mame v0.265
--0.264-2.220b--
Sync with mame v0.264
For GroovyMiSTer users
[nogpu] New option mister_interlaced_fb: if enabled, odd and even fields of interlaced modes are sent separately (as in previous releases). If disabled, both fields are sent together and the fpga will pick the correct one based on its current raster status (this avoids field synchronization issues, but requires higher bandwidth).
[nogpu] New input backend joystickprovider mister: allows using gamepads connected to the MiSTer (2 players).
--0.263-2.220a--
Sync with mame v0.263
--0.262-2.220a--
Sync with mame v0.262
For GroovyMiSTer users
Download the correct package (Windows or Linux) and unzip it.
Download
mame_mister.ini
, rename it asmame.ini
, and replace the default one in GroovyMAME's folder.Edit mame.ini with your ip address (
mister_ip
option).
--0.261zz--
[nogpu]
Add audio support.
Various fixes to allow building on Mac [djfumberger]
Fix blinking on internal FE with lz4
Avoid modes bigger than RGB buffer (force 640x480)
Add bilinear filterning, linked to -autofilterAdd audio support.
--0.261z--
[nogpu] Properly compute pixel aspect ratio of nogpu(MiSTer) screen.
--0.261y--
[nogpu] First release with GroovyMiSTer support. New video backend
-video mister
for RGB video through network.Add support for Linux
Make sleeping optional by linking it to option -sleep
Add option -mister_fd_margin, in ms, to set a secury margin for automatic frame delay, in ms. Default is 1.5 ms
--0.261x--
[Linux] Add new option -dri_device. Use to force vsync on a specific gpu, e.g. "card0", "card1", etc., or "auto" for automatic selection (currently it will pick the first device with a valid connector.
[Windows] Raw input improvements. Workaround for devices with buggy drivers. PlayStation triggers hack removed. Should now be compatible with most existing gamepads. [star69rem]
Sync with mame v0.261
--0.260w--
Sync with mame v0.260
--0.259w--
Sync with mame v0.259
[Linux] Added Switchres fixes to drmkms backend to properly poll dri devices.
--0.258v--
Sync with mame v0.258
--0.257v--
Sync with mame v0.257
Also save Screen Refresh Rate slider.
--0.256u--
Sync with mame v0.256
Only save certain sliders: frame delay, vsync-offset, overclock and CRT geometry sliders. This avoids the problem with vector games not responding to ini settings.
--0.255t--
Sync with mame v0.255
[Windows] Fix rawinput for joysticks for certain devices [star69rem].
--0.254t--
Update to upstream Switchres (fixes lcd_range)
--0.254s--
Fix popup error with custom preset (switchres: error trying to fill monitor range with).
Sync with mame v0.254
--0.253r--
Improve rendering of UI frames and lines in low resolutions.
Correctly apply rotation after modeline adjustment (using the geometry sliders with rotated games now works).
Correctly apply syncrefresh (it wasn't applied automatically since v_scale was changed from int to float).
Sync with mame v0.253
-0.252q--
New attempt to fix overflow with average scaler.
Sync with mame v0.252
--0.251q--
Implement integer scaled fonts. Finally clear fonts for CRTs at low resolutions. Set
uifont uismall.bdf
in mame.ini to enable it. [Oomek & Calamity]Force 2-line step for -v_shift (option & slider) on interlaced modes. This way it preserves vertical field parity which is required for correct timings and some hardware. Maybe you need to readjust your previous -v_shift settings.
[Windows] Make rawinput for joysticks not the default option. Set
joystickprovider rawinput
manually in mame.ini if you want to use it. It doesn't work for UltraStick and probably other controllers yet.Sync with mame v0.251
--0.251n--
Update to upstream Switchres (fixes rotated desktop in X)
Sync with mame v0.251
--0.250n--
Attempt at fixing Linux build.
Sync with mame v0.250
--0.249m--
Sync with mame v0.249
--0.248m--
Sync with mame v0.248
[Windows] Add rawinput support for joysticks. Split global inputs settings for keyboards, mice and joysticks. [Chester C. Rumpled]
Extend h-size slider to 2.00 maximum.
--0.247l--
Sync with mame v0.247
--0.246l--
Sync with mame v0.246
Added controls for geometry adjustment. These are available both as command-line/.ini options and in-game sliders for interactive adjustment:
* H-size [0.5 - 1.5]: option -h_size
* H-shift [positive or negative, in pixels]: option -h_shift
* V-shift [positive or negative, in lines]: option -v_shift
As a reminder: V-size is not possible from software.
--0.245k--
Sync with mame v0.245
[Linux] Add low latency (drm) vsync to sdl2 video backend (-video accel).
Properly apply -keepaspect on rotated targets with -autostretch.
--0.244j--
Improve UI text drawing performance. [Oomek]
Another fix to the scaling algorithm (hopefully the last needed).
--0.244i--
Sync with mame v0.244
--0.243i--
Sync with mame v0.243
Fixed wrong scaling of vertical games in certain cases
[Linux] Internal changes to support libdrm hook (experimental feature).
--0.242h--
Sync with mame v0.242
New option -switchres_ini. If enabled, GroovyMAME will try to parse switchres.ini and use it for its configuration. Options priorities, in increasing order: mame.ini < switchres.ini < display#.ini < orientation.ini < ..... < command line.
[Linux] Improved support for mode switching on KMS.
[Linux] Fixes toggling fullscreen on/off (still imperfect but functional).
--0.241g--
Sync with mame v0.241
Attempt at fixing github builds (docs)
--0.240g--
Sync with mame 0.240
Starting with this release, a source patch for GroovyMAME will be available along with the binaries on Github's releases. It will hopefully make life easier for those who keep alternative builds.
New option -switchres_ini. If enabled, GroovyMAME will try to parse switchres.ini and use it for its configuration. Options priorities, in increasing order: mame.ini < switchres.ini < display#.ini < orientation.ini < ..... < command line.
[Linux] Improved support for mode switching on KMS.
[Linux] Fixes toggling fullscreen on/off (still imperfect but functional).
--0.239g--
Sync with mame 0.239
[windows] Adapt window code to the new add/init display methods.
--0.238f--
Sync with mame 0.238
[Linux] First release ever to support mode switching on KMS. It needs Substring's patched kernel and SDL2 (>=2.0.16) available on GroovyArcade's repository.
--0.237e--
Sync with mame 0.237
Properly fix configuration saving from the ui.
-0.237d--
Sync with mame 0.236
Fix locale mess with floats.
[Windows] Fix bug that caused interlaced modes to lock screen updates.
Fix bug that caused an exception when saving configuration after doing changes from the ui.
Make -vsync_offset slider setting not propagate between different games when launched from the ui.
--0.236c--
Sync with mame 0.236
--0.235c--
Sync with mame 0.235
[Windows] Fixed bug that caused games using interlaced modes run at dobble speed.
--0.234--
Sync with mame 0.234
Correctly apply -keepaspect after implementation overhaul in baseline.
--0.230--
New option -[no]syncaudio: Make audio synchronization (resampling) optional. Default is enabled. Disable to avoid sound wobble with erratic emulation speeds (like that caused by frame delay on some systems).
- New option -[no]autostretch: Make auto stretching feature optional. Default is enabled, so GM will apply the scaling mode (fractional or integer) that best fits the situation.
- New option -[no]autofilter: Make auto filter optional. Default is enabled, so GM will apply bilinear filtering when fractional scaling or an interlaced mode are used.
- New option -[no]interlace_force_even: Calculate all vertical values of interlaced modes as even numbers. Required by AMD APU hardware on Linux
- [Windows] Implement asynchronous rendering through native D3D9ex api (replace for old multithreaded -triplebuffer). This mode is selected automatically by -autosync. You can force it manually with -waitvsync -nosyncrefresh.
- [Linux] New option -sync_mode <0-4>: In combination with -syncrefresh, select the synchronization mode that offers the lowest latency based for the specific video driver. The default value is 2, which gives good results for both amdgpu and radeon on X11 and kms mode. Other modes are provided that could be useful with other hardware/driver combination.
Sync mode
sync algorithm amdgpu radeon radeon/kms amdgpu/kms
mode
0 -Swap(1) perfect(1) perfect smooth smooth
-glFinish lag 1 frame lag 1 frame
1 -Swap(0) tearing tearing perfect tearing/
-drmWaitVBlank perfect w/fd stuttering
-glFinish
2 -Swap(1) perfect(1) perfect perfect perfect(1)
-drmWaitVBlank
-glFinish
3 -drmWaitVBlank tearing perfect(2) tearing tearing
-Swap(0)
-glFinish
4 -drmWaitVBlank half speed half speed smooth smooth
-Swap(1) lag 1 frame lag 1 frame
-glFinish
- Swap(x), x = Opegl swap interval (0 = immediate, 1 = v-sync)
(1) Low frame delay performance
(2) GM's pre-0.232 implementation
perfect = smooth + subframe latency
--0.229--
sync with mame v0.229
Fixed crash on emulated systems with 2 or more screens.
Correctly update game video information after machine initialization.
Properly account for refresh scaling & black frame insertion with frame delay.
--0.228--
sync with mame v0.228
This is the first public release of GM based on Switchres 2.0, a major redesign of our custom video library we’ve been working on for the whole last year. It has important new features that I’ll talk about in the new thread I’m preparing. Although this version is intended to completely replace current GM based on Switchres 0.xxx, we know that bugs may exist, so we’ll probably keep releasing the « legacy » GM here for some versions yet, depending on how things go.
Slider enhancements (as requested by schmerzkaufen):
Increased vsync_offset slider limit to 1024
Added 1-decimal precision to CPU overclock slider