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 


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 mode

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