Hacker News new | past | comments | ask | show | jobs | submit login

The problem with a solution like this is that you are limited to square pixels. Not all games and systems used square pixels, because CRTs didn't really _have_ pixels, only scanlines. Their vertical resolution was discrete, but their horizontal resolution was continuous as they displayed an analog signal.

For example, most SNES games ran at 256x224 (and were slightly letterboxed to fit the roughly 240 lines on a 4:3 NTSC CRT, though the border generally disappeared in the overscan area). The pixels were taller than they were wide.

Kirby's Dreamland 3 on the SNES ran at 512x224. Pixels were much wider than they were tall.

The original Doom ran at 320x200 in VGA mode 13h. It was not letterboxed but displayed in 4:3 on CRT monitors, so pixels were narrower than they were tall.




When emulating original arcade cabinet games it gets even harder to be pixel perfect. Many used custom horizontal and vertical scanning frequencies because they were speccing the specific CRT in the game's cabinet. This changed not only the frame rate but the number of scan lines.

Emulating a collection of these games precisely requires a CRT that can scan at multiple frequency ranges. Fortunately, such monitors were made by arcade monitor manufacturers both for new OEM cabinets and monitor field replacement in existing cabinets. For my custom emulation cabinet I chose a Wells Gardner D9200, widely considered one of the best such monitors ever made. Fortunately, I originally built my cabinet back in 2008 when these CRTs were still being made. Of course, the PC and software have been updated many times but IMHO, there is no better single CRT for broad-based emulation of many titles in one system.

The D9200 accepts analog RGB input and will scan at an incredibly wide range of frequencies enabling the cabinet to emulate virtually all raster CRT based arcade games. Once you acquire such a monitor, proper emulation requires feeding it a native analog signal to avoid external transcoding. The last graphics card manufactured with native analog output was the Radeon R9 280x released in 2013. It's also the fastest GPU available for a purist emulation system. Although analog retro emulation doesn't typically require a GPU that fast, it can be useful if you also want to natively emulate titles from sixth generation home consoles such as PS2, Sega Dreamcast and Nintendo Gamecube which had 3D titles but still output analog video to CRTs at 480P.

To complete a pixel perfect emulation system you'll need to run a special version of the MAME arcade emulator called GroovyMAME, which works together with a specially hacked graphics card driver called CRT EMUDriver. This driver allows precisely setting the scanning frequencies of analog graphics card output. The maintainers of GMAME release new versions monthly in sync with MAME and have been doing so for over a decade. If you really want to do it right, I recommend the active community of hardcore retro analog purists at http://forum.arcadecontrols.com/index.php/board,52.0.html. Having played, worked on and owned many analog CRT based game cabs in the 1980s, I thought I knew a lot about retro analog emulation but I always learn something new there.

So called "Pixel Perfect" retro analog emulation of original arcade cabinets and home consoles isn't necessarily easy but it is possible - and IMHO absolutely worth it.


SNES and DOS do not use standard resolutions. However, PS2, GameCube, Wii, Xbox & Xbox 360, all Sega consoles, a wide variety of arcade hardware, etc. do. Anything that runs at standard hardware, which, barring super nintendo and certain PS1 software, IS the vast majority of the retro gaming catalog, will look awesome on these.

PS1 is an oddball. Most games run at standard resolution, like the Final Fantasy games. They will look awesome on these. Some, however, do not. Spyro runs at odd resolutions, similar to SNES games.

That being said, I still think this is an awesome option for retro gaming where CRT is not permitted.


I think there was a typo. If pixels were taller than they were wide at 256x224, then they'd be even more so at 512x224


> Their vertical resolution was discrete, but their horizontal resolution was continuous as they displayed an analog signal

True, but based on the frequency and that Nyquist math, we can solve for the actual pixel size.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: