0.234 - Switchres 2.002b / 31-07-2021
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
Sync with mame 0.234
Correctly apply -keepaspect after implementation overhaul in baseline.
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 algorithm amdgpu radeon radeon/kms amdgpu/kms
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
2 -Swap(1) perfect(1) perfect perfect perfect(1)
3 -drmWaitVBlank tearing perfect(2) tearing tearing
4 -drmWaitVBlank half speed half speed smooth smooth
-Swap(1) lag 1 frame lag 1 frame
- 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
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.
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
Check Previous Changes