Main > Software Forum
CRT-MAME-ARCADE-2D Perceptual Sync 0.168 (MAJ V2.1) Auto_sync, Switchres CRT
Olivcade:
Yes, that's exactly it. ;D I like using old equipment because you get better results! I love tinkering. I'm the same age as you, 50. I can't wait to share… After some testing, I removed some options. I kept the refresh rate saver slider, but I'm now adding a "Tear Offset (Top)" option to hide the tear line in the dead zone at the top of the screen, once the timing is perfect. I'll keep you posted soon..
Olivcade:
Hello la TEAM,
I've released an update; many improvements have been made. All the details are available at the top in the readme file:
Download on GitHub:
https://github.com/HardCade/hardcade/releases
===========================================================================================
CRT-MAME-ARCADE-2D Perceptual Sync 0.168 V1.8
================================================================================================
Development Version — December 2025
© 2025 Hardcade — Olivier Mileo
===========================================================================================
DESCRIPTION
===============================================================================================================
CRT-MAME-ARCADE-2D Perceptual Sync is a specialized version of MAME 0.168 optimized for 2D arcade gaming on 15 kHz CRT monitors and modern LCD screens running WinXP-32 with an ATI or NVIDIA graphics card and crt_emu drivers or soft15khz.
This edition focuses on minimizing input lag, reducing file size, and improving video synchronization for an authentic arcade experience.
Two complementary CRT synchronization approaches are offered:
→ MANUAL MODE "Perceptual Sync": Precise adjustment of the Slider Refresh Rate to 4 decimal places (±0.0001 Hz) for total timing control. Ideal for purists who want to calibrate each game individually and achieve strictly authentic hardware timing with virtually invisible, fixed tearing.
→ AUTOMATIC MODE "Adaptive Sync" (currently being developed): VSync DirectDraw Low-Level that automatically adapts to the actual refresh rate of your CRT (like Snes9x/RetroArch). Ultra-smooth scrolling guaranteed regardless of your model (58 Hz, 60 Hz, 61 Hz...), without any manual adjustments required. MAME adjusts its speed to perfectly match your screen.
Choose your approach: absolute manual control or effortless automatic smoothness.
Both methods eliminate screen tearing and guarantee an optimal CRT experience.
// PHILOSOPHY:
Why "CRT-MAME-ARCADE-2D Perceptual Sync" when other emulators like GROOVYMAME already exist?
Whether you're emulating at 15kHz with new or older hardware, the synchronization between the emulation and the display
is never 100% perfect in practice. Even if the modelline is calculated to exactly match the original game's frame rate,
sometimes, even when adhering to the precise values of the MAME video drivers, the timing interpreted by your hardware will be more or less
off from the timing it should actually adopt to be perfectly aligned with the game's timing.
There are always discrepancies (large or small) due to:
- Hardware tolerances (CRT monitor, graphics card)
- Inaccuracies in clocks and oscillators
- Rounding in calculations, operating system
These discrepancies are random depending on your hardware, even if you use THE perfect modelline that mathematically respects
the values imposed by the MAME game system. Despite this, the synchronization drifts more or less over time,
creating that tearing line that "walks" slowly or quickly across the screen—it can take several minutes or even tens of
minutes to cross the entire screen. This is generally considered acceptable because:
The line moves so slowly that it's barely noticeable in-game.
It's infinitely better than classic tearing with multiple rapidly moving lines.
Adding V-sync eliminates it at the cost of one frame of input lag, but if our modelline is too far off
the perfect timing, we'll get choppy scrolling. Some users further refine their modellines or slightly adjust
the refresh rate to minimize this phenomenon, but micro-tearing often remains.
Perceptual Sync is the philosophy of a CRT display mode that prioritizes perceived visual stability
(zero mobile tearing, smooth scrolling) rather than the absolute accuracy of the theoretical refresh rate.
It's a CRT display doctrine based on human perception, not mathematical perfection.
Perceptual Sync prioritizes perceived smoothness and image stability on CRTs.
Slight variations in refresh rate (≤0.0001 to 0.5 Hz) are intentionally tolerated to eliminate mobile screen tearing.
🔴 What Perceptual Sync DOES NOT try to do
❌ Be mathematically exact
❌ Be “frame perfect”
❌ Imitate GroovyMAME
❌ Convince theoretical purists
👉 It stands by its choices.
In other words: “What the eye sees is more important than what the numbers say.”
// The fundamental principles:
- The refresh rate does NOT need to be exact if a variation of: ±0.0001 to 0.5 Hz (configurable) is tolerated
👉 Result: imperceptibly different refresh rate, stable image.
// Absolute priority on tearing stability:
- Tearing enabled or disabled with Vsync activated
But: fixed, stuck outside the visible area if possible, or always in the same place
👉 Static tearing is psychologically invisible.
/ // No chasing the “perfect modelline”:
- No dynamic calculations
- No mode creation
- No real-time adjustments
👉 Once the mode is chosen → and the refresh rate slider is fine-tuned, leave it alone!
// The player takes precedence over the timer:
- Emulation respects gameplay
- Not the atomic clock
- No perceptible drift in-game
Olivcade:
MAJ 01/18/2026
Download on GitHub:
(release and sources)
https://github.com/HardCade/hardcade/releases
================================================================================
CRT-MAME-ARCADE-2D Perceptual Sync 0.168 V2.1
================================================================================
Development Version — December 2025
© 2025 Hardcade — Olivier Mileo
================================================================================
DESCRIPTION
================================================================================
CRT-MAME-ARCADE-2D Perceptual Sync is a specialized version of MAME 0.168 optimized for
2D arcade on 15 kHz CRT monitors under WINXP-32 with ATI or NVIDIA graphics card +
crt_emu drivers or soft15khz.
Three complementary approaches for CRT video synchronization and selection are
offered for total control of your display:
INI Option auto_refresh_sync = 0
→ MANUAL PERFECT SYNC MODE: Precise tuning of the Refresh Rate Slider up to
4 decimals (±0.0001 Hz) for total timing control. Ideal for purists
who want to calibrate each game individually and achieve strictly
authentic hardware timing with quasi-invisible fixed tearing.
INI Option auto_refresh_sync = 1
→ AUTOMATIC PERFECT SYNC MODE (DDRAW): The real CRT refresh rate is measured automatically
at game launch, after the video screen has produced a sufficient number of stable frames.
The calculated value is applied dynamically to the video engine and user slider in memory
only (no writing to CFG file). Ultra-smooth scrolling even on atypical modelines
(57.45878 Hz, 58.25494 Hz, 60.61575 Hz…)
HARDCADE SWITCHRES CRT (Built-in)
→ OPTIMIZED 15KHZ MODE SELECTION: A deep rewrite of the DirectDraw algorithm.
Unlike standard MAME, this version prioritizes fluidity (Hz) over exact
resolution through a ±24 line vertical tolerance. It allows using your best
240p modelines for the entire catalog (224p, 239p, 256p...) to guarantee
always complete, centered display, and perfect vertical synchronization without stuttering.
Choose your philosophy: absolute manual control or automatic fluidity without effort.
Both methods eliminate mobile tearing and guarantee an optimal CRT experience.
If your modelines are close to the original game timings, activating this
option will offer you the ultimate experience.
If your modelines are far from the original timings, you will only perceive a slight
increase or decrease in game speed, while maintaining perfect timing in terms
of smooth scrolling, tearing elimination, and overall visual fidelity.
Navigation
[0] Message Index
[*] Previous page
Go to full version