The NEW Build Your Own Arcade Controls

Software Support => GroovyMAME => Topic started by: lugaidster on November 06, 2016, 11:01:14 pm

Title: CRT Arcade Cabinet - My findings and issues
Post by: lugaidster on November 06, 2016, 11:01:14 pm
Hey guys, I know I'm kinda new here, but I've been lurking for years. Recently, I finally decided to build my own cabinet and this forum has been particularly useful. So first of all, thanks a lot to everyone contributing here.

Setup:

So first I'll mention my setup. I built a cabinet with spare parts and a bit of ingenuity here and there given the lack of authentic hardware here where I live (third-world country). I have collected real circuit boards throughout the years, though, but functioning monitors are impossible to find. So here's the deal, I modified a 25" CRT TV with a csync combiner circuit to plug it into a PC. Here are the details:

- Modified Sony CRT TV, 25", only supports 15.7 Khz (doesn't support extended horizontal sync range, so no 800x600 interlaced)
- Sony PVM monitor with an off the shelf sync combiner that does support 800x600 interlaced (for testing only, it's not part of the cabinet), I use this for consoles
- Self built EDID dongle chip with 640x480 interlaced EDID data burned in (the bin file I burned came from switchres)
- AMD APU A6-7400k (Dual-core)
- AMD Radeon HD 7770 (modified to add GOP driver for UEFI)
- AMD Radeon HD 6450 (modified with Atom-15 and added GOP driver for UEFI) (for testing only, it's not part of the cabinet)
- Windows 10 Pro Edition
- GroovyMame v0.171 and Attract Mode as frontend
- Cheap 120GB SSD

Reasoning:
Videocard, Emudriver and UEFI, findings and issues:

First, let me talk about what I have tried. Using the HD 6450 I booted the PC but UEFI outputs 800x600 and the TV intended for the cabinet can't sync in that mode because it requires around 16.2 KHz. The PVM monitor works fine.
Using the EDID dongle, the UEFI screen syncs to 640x480 interlaced as it should by using the UEFI GOP driver (UEFI GOP drivers will sync to whatever the EDID data indicates and will stick to that, in my particular motherboard 640x480 works but looks weird as if the resolution wasn't enough). It syncs ok, so the TV won't get damaged, but there's a lot of overscan. Windows will boot fine whether it's using the default AMD drivers or using CRT Emudrivers 2.0 beta 8. I decided against this card because I would like to use Demul to play some NAOMI games and those require a beefier GPU. The Radeon 6450 simply wasn't enough.

Using the Radeon HD 7770, things were a bit more painful. Everything works ok unless I use the EDID dongle. When using that dongle, the UEFI screen will sync properly to 640x480 interlaced (albeit with overscan), Windows will boot fine using AMD's drivers, but not with the CRT Emudriver. It'll get stuck booting Windows. If I remove the dongle, the UEFI screen will try to sync to 800x600 (non-interlaced since this videocard was not modified using ATOM-15), which will look garbled on a 15KHz TV or Monitor, and then boot fine into Windows.

Summary of my findings:
If using UEFI, a possible alternative (I don't know how other UEFI motherboards will react, though, but my Asus motherboards respect the EDID data) to ATOM-15 is to use a UEFI GOP-capable videocard (I patched mine to support UEFI GOP, there's extensive information on the net to add a GOP driver to a Radeon card, Radeon 5-series upward only) and a EDID dongle with the wanted mode burned in. However, there appears to be some compatibility issue with CRT-Emudriver when using the GOP driver and a Radeon 7770 (perhaps it happens with all Radeon 7-series cards, or perhaps it's a bug of the underlying radeon driver that was later fixed by AMD). I'm currently using the 7770 without the EDID dongle to get Windows to boot properly.

GroovyMame and Attract Mode:
When using the Attract Mode frontend and GroovyMame, the frontend freezes once exiting the game unless GroovyMame is using the BGFX mode. I don't know if there are any side effects of using this mode, but apparently it works ok. I'd love to use the D3D mode, though.

Hiding Windows 10 and building a cabinet around it
It's certainly easier to hide Windows 7 as I made a few tests using Windows 7, but Windows 7 doesn't allow me to use the UEFI GOP driver on the videocard which means that I can't force my motherboard to sync 640x480i instead of 800x600i or boot really fast. There's just one thing I haven't been able to hide in Windows 10: the "Logging in [user]" animation screen. I was able to hide the boot splash, the desktop, the mouse pointer and everything else, however, I haven't been able to hide that screen. It lasts at most 1 second, though. It's not terrible, but it breaks the otherwise great illusion afforded by this particular setup. Windows 10 supports a kiosk-mode (presumably, other versions do as well) that is similar to replacing the shell with a frontend.

CRT Emudriver and PC games
As long as the game is not newer than the drivers, I haven't had any issues. I wasn't able to play Street Fighter V, for example, but SFIV works just fine. While there aren't that many new games that I would like to play in an arcade cabinet, SFV is one that I'll be missing out on. Considering I have Steam running and available, I'd love to have the chance to play newer releases.

Current Status:
I've almost finished building the arcade, but I still have the issues mentioned above. I've had to build me a few circuits to make everything work as seamless as possible (I have one that powers on and off the TV in tandem with the PC). Since the CRT tube has a few seconds delay when warming up, I don't see the TV trying to sync to a 31khz resolution, however, it does show when rebooting or when turning on the PC and TV is already warmed up. This one bugs me, but I don't know how to solve it. I'd love to have Calamity chime in, maybe I could be of help (I'm a software developer, so I know a bit of programming, but drivers are not my area of expertise).

I feel like the driver issue with newer games and the freeze could be solved by using a newer driver as a base for EmuDriver, but I don't really know if it is feasible or easy since I don't really understand the modifications done to de driver at a low-level.

In my opinion, if these issues could get fixed, I believe that Windows 10 could replace Windows 7 as a favorite for building arcade cabinets. It boots faster and the boot process is more seamless (when booting, the TV simply doesn't flicker between resolutions, for example), but after many weekends researching and testing variations of my circuits, I simply don't know where to continue searching except here.

Sorry for the long post, I know many won't read this in it's entirety, but hopefully it helps someone else. It would've helped me by saving me a lot of hours if I had known some of this issues beforehand. Hopefully it's useful to someone else and hopefully the issues mentioned can be solved now that they're out in the open. I certainly will keep trying.

Note: When mentioning 800x600 interlaced I'm actually referring to the mode that the Atom-15 tool burns into the videocard bios which is 800x600@~53hz which ends up being around 16.2KHz.
Title: Re: CRT Arcade Cabinet - My findings and issues
Post by: buttersoft on November 07, 2016, 12:15:27 am
Well, it's not software its mechanical, but you could use a timed relay on the monitor. Set it to flick on after 15-20 seconds or so, once your frontend has loaded.
Title: Re: CRT Arcade Cabinet - My findings and issues
Post by: Calamity on November 07, 2016, 04:08:56 pm
Hi lugaidster,

Thanks a lot for your post, full of useful information.

Specially, thanks for pointing me to the UEFI-mod topic, I've been a bit out of the loop since I made ATOM-15 and it's definitely an interesting route to explore.

With regards to the 7770 not working with CRT Emudriver plus the EDID dongle, I'm wondering if you also applied the EDID emulation from VMMaker, maybe there could be a conflict there. The other possibility you're suggesting seems more likely (too old driver).

An Emudriver version based on newer drivers was indeed planned for this year. However, the last six months have been more complicated than usual and I had to put off this project.

Title: Re: CRT Arcade Cabinet - My findings and issues
Post by: R-Typer on November 07, 2016, 04:30:54 pm
Newer EmuDrivers !?!?! YAAAAAY!!!!  :D :D :D
Title: Re: CRT Arcade Cabinet - My findings and issues
Post by: K-rnivoro on November 08, 2016, 08:56:21 am

Current Status:
I've almost finished building the arcade, but I still have the issues mentioned above. I've had to build me a few circuits to make everything work as seamless as possible (I have one that powers on and off the TV in tandem with the PC). Since the CRT tube has a few seconds delay when warming up, I don't see the TV trying to sync to a 31khz resolution, however, it does show when rebooting or when turning on the PC and TV is already warmed up. This one bugs me, but I don't know how to solve it. I'd love to have Calamity chime in, maybe I could be of help (I'm a software developer, so I know a bit of programming, but drivers are not my area of expertise).



I'm electronic engineer, even though I consider there is no point trying to reinvent things... Go for a J-PAC from Andy's Ultimarc. That protects your CRT from 25-31 KHz signals, also puts your signal in the right levels for a CRT arcade monitor (which is very often overlooked).

For the power on circuit, I assume you are using a 110VAC (or 220VAC) relay controlled by a 5V or 12V rail from the PC's PSU, allowing to power the CRT, speakers amplifiers and some others devices (except the PSU itself).
Regards.
Title: Re: CRT Arcade Cabinet - My findings and issues
Post by: lugaidster on November 08, 2016, 01:19:23 pm
Hi lugaidster,

Thanks a lot for your post, full of useful information.

Specially, thanks for pointing me to the UEFI-mod topic, I've been a bit out of the loop since I made ATOM-15 and it's definitely an interesting route to explore.

With regards to the 7770 not working with CRT Emudriver plus the EDID dongle, I'm wondering if you also applied the EDID emulation from VMMaker, maybe there could be a conflict there. The other possibility you're suggesting seems more likely (too old driver).

An Emudriver version based on newer drivers was indeed planned for this year. However, the last six months have been more complicated than usual and I had to put off this project.

There's a couple of things going on that are pretty weird. The first thing is that it doesn't work with either edid emulation or without it. Once the dongle is plugged in on the 7770, the PC freezes during the boot process while using Emudriver. The other thing is that Windows simply doesn't sync properly when using the information stored on the EDID chip, and it's only Windows for certain. If no drivers are installed, then Windows will keep using the UEFI GOP driver, and then it will sync properly. This happens on both Radeons. But the weirdest thing of all is that if I plug a regular LCD screen instead, everything works just fine. Perhaps this is something that could be solved by tweaking the EDID data, maybe it has something in it that makes the driver freeze... I don't know, it's something that came to my mind now. The thing is that I created the EDID file using switchres, I have no idea how to create it otherwise with the proper timings.

I think it probably is because it's an older driver, I don't know.

As I said in the first post, I'm a software developer, but I rarely go that low-level so I'm not sure if I could be of help. However, if there's anything I could do to help you build a driver based on a newer one, let me know and I'll try.

By the way, thanks for all your contributions to the scene, I wouldn't be building an arcade if not for them.


Current Status:
I've almost finished building the arcade, but I still have the issues mentioned above. I've had to build me a few circuits to make everything work as seamless as possible (I have one that powers on and off the TV in tandem with the PC). Since the CRT tube has a few seconds delay when warming up, I don't see the TV trying to sync to a 31khz resolution, however, it does show when rebooting or when turning on the PC and TV is already warmed up. This one bugs me, but I don't know how to solve it. I'd love to have Calamity chime in, maybe I could be of help (I'm a software developer, so I know a bit of programming, but drivers are not my area of expertise).



I'm electronic engineer, even though I consider there is no point trying to reinvent things... Go for a J-PAC from Andy's Ultimarc. That protects your CRT from 25-31 KHz signals, also puts your signal in the right levels for a CRT arcade monitor (which is very often overlooked).

For the power on circuit, I assume you are using a 110VAC (or 220VAC) relay controlled by a 5V or 12V rail from the PC's PSU, allowing to power the CRT, speakers amplifiers and some others devices (except the PSU itself).
Regards.

I actually have a J-PAC installed, but I only use it for input as it is a no-go when using a modded TV for RGB rather than an arcade monitor. Arcade monitors have a different Vpp specification for colour (2-4 Vpp for each color channel) while TVs use 0.7 Vpp like a regular VGA adapter. The J-PAC has an amplifier to transform VGA voltages to something an arcade monitor would expect, which would seriously mess up the colors on my TV.

As for the Power I actually built an edge-trigger because the TV I have is digital and goes into stand-by whenever I plug it in. I couldn't find a setting that would turn it on when plugged so I wired the edge-trigger to the power button. It's a simple circuit around 3 XOR-gates and a few resistors and caps. What it basically does is have the cap with the resistor on one of the two inputs and that plugged to a voltage source from the PC. The cap+resistor combo delays the signal just enough (a few hundred millies) to actually get a pulse on the output when power is applied, then when power goes out, another pulse appears while the cap discharges. I have a transistor on the output to act as a switch and that's it. When the PC turns on it sends a pulse and turns on the TV, when the pc turns off, it sends another pulse and the TV turns off.
Title: Re: CRT Arcade Cabinet - My findings and issues
Post by: Paradroid on November 08, 2016, 03:22:10 pm
Any chance of some photos and a schematic? :)

Sent from my SM-A300Y using Tapatalk

Title: Re: CRT Arcade Cabinet - My findings and issues
Post by: lugaidster on November 15, 2016, 12:31:16 pm
Any chance of some photos and a schematic? :)

Sent from my SM-A300Y using Tapatalk

Sure thing, anything specific?