ann-arcana

Queen of Burgers 🍔

Writer, game designer, engineer, bisexual tranthing, FFXIV addict

OC: Anna Verde - Primal/Excalibur, Empyreum W12 P14

Mare: E6M76HDMVU
. . .



cathoderaydude
@cathoderaydude

I'm not much of a programmer or EE. I've dabbled, but I've never really done anything serious and I think the concepts are beyond me. Trouble is, I know enough to understand how things work, even though I can't make use of that knowledge, which makes me something absolutely detestable: An Ideas Guy.

Thing is, I think I have some pretty good ideas. Several of them eventually materialize when other people finally have the same thought. But then there's stuff that sits in my head for years and years and I don't see any hint that someone else is looking into those same concepts, and it's a bummer because I know exactly what needs to be done, I just can't execute any of it.

So basically I nerdsnipe myself periodically, and then I just have to sit around and fantasize about my idea existing, because it never will unless, basically, I hire someone to implement it. Which won't ever happen. Anyway, here's one of those ideas, in two parts.


Problem

In a nutshell, there is no way to get high quality, low-latency standard-def video out of a PC. All available options are awful, and this sucks, because it would be really nice to be able to start a game in an emulator on your PC, and have it seamlessly output to a television via composite, component or RGB.

"Seamlessly" here means: You aren't dragging a window onto a different desktop that's running at some miserable resolution like 720x240, and you aren't changing your desktop to that resolution and losing your primary display; no nonsense like that. There's no chance of a Windows Update popup appearing over the top of your game, or the emulator popping halfway off the TV because one of your main monitors went into powersaving mode, and you don't have to deal with all your desktop icons and windows getting shoved around and screwed up whenever you launch a game.

The emulator is running on your PC, in a window, or fullscreen, whatever you normally do - it's working exactly as it typically does, but it is also outputting to a 14" PVM sitting on your desk, looking as sharp as if it came out of a real console.

It would also be ideal to be able to author a retro-styled video at 720x480 on your PC and output it to a VCR in its native format, without having to go through three or four conversions or dredge up 25 year old adapters.

I feel that a ton of people want to be able to do these things, but the only options right now suck. It's an HDMI converter, or a raspberry pi with its terrible composite output, or that terrible hacked graphics card for arcade machines that spits out 240p VGA. They're all miserable.

Solution

My impression is that it's not all that hard to generate analog video - as in, yes, you need a skilled hardware engineer, a pricey FPGA and possibly a separate DAC, but the problem is not "unsolved" and devices like the Analogue NT can do it just fine.

You'd want a device that takes framebuffer data in one end and spits 480i or 240p video in various formats out the other. Then you need to get that data out of an emulator on your PC and into the framebuffer.

Fortunately in the last few years that's gotten simpler than it's ever been before - you don't have to get code upstreamed into 16 different emulators, half of which were abandoned years ago, because you can write a module for Retroarch and cover everything at once.

You write a driver that splits off the rendered output before it gets scaled up for display and shoves it down a USB pipe to the gadget. It synchronizes its output to the emulator so you don't get tearing, and... that's pretty much it. One plugin, one vendor-specific USB device driver, and a standard def FPGA video generator; a lot of work, but no novel problems, just things that have been done many times but never put together.

Which is the rub, of course, because none of the existing solutions are modular, so you're going to have to get at least three separate experts to reinvent all these wheels from scratch. And nowadays it's not that hard to find those experts, it's just that none of them appear to want to do this already, or it'd be done. You'd have to hire them, but nobody has the money for that since there'd be no ROI, and even if they did, this stuff only really works as a passion project - it would fizzle out after the first buggy, unusable release, and then slowly rot.

It bums me out so much, especially because once the thing was made, you could start looking for other video sources to plug into it.

A VLC plugin so you can watch Columbo on a CRT or spool off your retro styled shitposts to VHS without having to use some godforsaken HDMI scaler or a [spits] raspi. A janky screen capture utility so you can use unsupported emulators. An interface library for your language of choice so you can make algorithmic video art directly on a tube. All this shit would be great if only someone would make it.


You must log in to comment.

in reply to @cathoderaydude's post:

do you need an FPGA to do the analog video generation part? I always thought there were dedicated output chips that will wrap your RGB[24:0] digital signal into analog with appropriate vsync/vblank/etc. It's interfacing that with USB that might potentially be an FPGA problem.

I agree there may be dedicated chips you could use, but an FPGA would make it incredibly easy to prototype a working solution up, since you could just reconfigure the thing if you need to. Stuff some existing IP blocks into it, maybe later replace them with prefab parts. I don't really know.

It does seem very strange that for all the work I've seen go into retro input, I have seen almost nothing that goes the other way.

Like, where's the "reverse RetroTINK"? Even just something as simple as "I plug HDMI into it, and composite comes out the other end, seems the exclusive domain of shitty AliExpress specials at this point.

I realize regular consumer interest is mostly long past except maybe for a few aging boomers, but it's disappointing the retro scene seems less interested in preserving the experience of quality analog output.

From what I (loosely) understand, doing good composite is very device-specific. Do not quote me on this.

There are really good cheap HDMI to Component or VGA converters, and ways to use those for S-Video, I have one of the HDMI to Component converters (ironically as part of a digital output chain for very goofy reasons), but you can't just use those for all the standard SDTV you'd find in the US most of the time.