summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHombreLaser <buran@silosneeded.com>2025-11-08 22:39:58 -0600
committerHombreLaser <buran@silosneeded.com>2025-11-08 22:39:58 -0600
commit2272289602a76e422e304d3e0c8014b82538ceb9 (patch)
treee4a8ad4d33a5aafb2e9064ca5f99b200cf58304c
parent736204d8167e18f053d511daa849742ef95e8984 (diff)
Publish the CRT gaming guide
-rw-r--r--_posts/en/2025-11-08-pc_crt_guide.md (renamed from _drafts/pc_crt_guide.md)118
1 files changed, 85 insertions, 33 deletions
diff --git a/_drafts/pc_crt_guide.md b/_posts/en/2025-11-08-pc_crt_guide.md
index d23e12b..94f97f0 100644
--- a/_drafts/pc_crt_guide.md
+++ b/_posts/en/2025-11-08-pc_crt_guide.md
@@ -1,7 +1,7 @@
---
layout: toc_post
title: The definitive guide on connecting your PC to a CRT TV
-date: 31-10-2025
+date: 08-11-2025
tags: ["Tutorials", "Gaming"]
toc: true
---
@@ -27,7 +27,7 @@ Just make sure they have component inputs. You know, those red, green and blue j
This is not all, however: while your TV having component inputs is a good start, there are some that have them but perform digital processing
operations on the signals they receive. In layman's terms, this means they won't be outputting the resolutions you want them to output, mainly, 240p[^1] and 480i[^2]
-These TVs are mostly late HD CRT TVs, and they are hard to come by, so chances are the TV with component inputs you found on the curve is enough. But, if you want
+These TVs are mostly late HD CRT TVs, and they are hard to come by, so chances are the TV with component inputs you found on the curb is enough. But, if you want
to be certain, make sure you discard the following:
* The TV has no digital inputs, like HDMI or DVI.
@@ -37,21 +37,21 @@ luck.
If you're wondering why this is the case, as it seems that if you found one of these mythic HD CRTs you've struck gold, is that, like modern TVs, they will try to
output everything in 480p, this means they will de-interlace[^3] the input and this will result in both poor image quality and input lag. To make matters
-more complicated, this is not the case 100% of the time, as some of these TVs do output a native 480i signal, and others, while they don't output a true 480i resolution,
-you could use 480p instead, and to play 240p games (pre-dreamcast) you'd do something called line-doubling[^4]. As you can see, this is
+more complicated, this is not the case 100% of the time, as some of these TVs do output a native 480i signal, and with others, while they don't output a true 480i
+resolution, you could use 480p instead, and to play 240p games (pre-dreamcast) you'd do something called line-doubling[^4]. As you can see, this is
getting mind numbingly complicated real fast, and those subjects are out of the scope of this post, so I'll only take into account SDTVs[^5]
## A case for RGB mods
If you've come across this article, chances are you've been researching this subject for a while. That means the probability of you coming across the concept of 'RGB
-mod' is high, and I'm here to assure you: they're not needed. As long as your TV has component inputs, that is. They do make it easier to output your computer's image
-into a TV by making the use of an adapter unnecessary, but, as we'll see, the fact you have to make this mod, or pay someone to do it, negates that simplicity, in my
-opinion.
+mods' is high, and I'm here to assure you: they're not needed. As long as your TV has component inputs, that is. They do make it easier to output your computer's image
+into a TV by making the use of an adapter unnecessary, but, as we'll see, the fact you have to make this mod, or pay someone else to do it, negates that simplicity,
+in my opinion.
RGB modding a TV for the purpose of either achieving a better image quality or making it possible for a PC to output to it is only relevant when using a
composite[^6]-only set. And even then, you probably can do an even easier mod called, yes, [component mod](https://crtdatabase.com/modding/ypbpr).
-But if you can instead just go out and ask your grandma to give you her old TV with components, just do that.
+But if you can instead just go out and ask your grandma to give you her old TV with component, just do that.
![RGB mod](/assets/images/2025/rgb_modding_component_input_tvs.jpeg)
<br><em class="caption">RGB modding a TV with component inputs be like</em>
@@ -61,7 +61,9 @@ But if you can instead just go out and ask your grandma to give you her old TV w
Yes, they're different [color spaces](https://en.wikipedia.org/wiki/Color_space), but RGB signals can be converted to component, or, more precisely, YPbPr
trivially via passive adapters[^7]. This means no input lag.
-Adding RGB capability to your TV sounds great because that's the color space that the VGA connector uses, that's why you can bypass the adapter.
+I'll concede that adding RGB capability to your TV sounds great because that's the color space that the VGA connector uses, that's why you wouldn't need an adapter. But
+I cannot testify that the image quality is drastically better than the one you'd get using component inputs, specially better in such a way that it's worth it to
+attempt this mod, which requires technical competency.
# Hardware guide
@@ -96,6 +98,21 @@ With a good CPU, and with that I mean anything better than a first gen Ryzen 5,
RAM, storage and power supply are irrelevant. Buy the cheapest you can get, and for storage, 240GB is a good start, if you want more, well, buy a bigger SSD.
+While in this guide I'll assume you're using an exclusive PC for this, you can also use your main one, via dual-booting[^10]. This is specially useful if you'll have
+your CRT TV in the same desktop as your main PC, like in those _battlestation_ threads where you can see a tiny CRT TV alongside the monitor. If this is your setup
+(i.e., you'll use the same PC you use for modern gaming, work, etc.), take these into considerations:
+
+- Use another storage drive for the operating system you'll use to play on your CRT. **Specially** if you're on windows, as every windows update likes to meddle
+with your bootloader and render the other operating systems present in different partitions on your drive unbootable. Oh, also, you won't have to bother with
+partitioning your main drive and risking data loss.
+- Connect the GPU in a different PCIe port, this seems obvious, but I mention it so you can be sure this means you can use your main OS with your more powerful, modern
+card and use the old, cheap-ass radeon you'll buy exclusively for retro gaming.
+- In **every** part of this tutorial where I mention to unplug any other non-analogue port (remember, you'll use the VGA/DVI-I port of your radeon card) I also
+mean your other GPU's ports and your motherboard's. You don't want your CRT TV ready operating system to use your nvidia card, believe me.
+- If you're on windows, tough luck. Every time you want to boot into your retro gaming OS you'll have to get into your BIOS' boot screen/setup menu (something
+you'd normally do only for installing a new operating system). If you took the red pill and are using a linux distro as the main operating system of your PC,
+you can use [GRUB to detect your gaming OS](https://wiki.archlinux.org/title/GRUB#Detecting_other_operating_systems) and make it show up in the boot menu.
+
## The adapter
This is the piece of hardware that will allow you to connect your PC, which would normally output an RGB signal, to your TV, via component.
@@ -115,19 +132,19 @@ like ghosting were noticeable with them. I ruled out the adapter by connecting t
# Software
On the software side, most people will recommend you hack your GPU by installing a special driver for your card called 'CRT Emudriver', which allows your GPU to
-be driven to the low dot-clocks[^10] needed to output CRT TV compatible signals.
+be driven to the low dot-clocks[^11] needed to output CRT TV compatible signals.
This is for use with windows. I'll take the mask off now, and tell you: I hate windows, and I would never recommend anyone to use it. But here, I wouldn't recommend
-it not only because of a matter of principles, but because the alternative is arguably easier.
+it not only because of a matter of principles, but because the alternative is arguably easier and better.
-The solution here is a linux distribution, and a linux distribution either thought from the ground up for this use case (wiring the PC to a esoteric 90's black box
+The solution here is a linux distribution, and a linux distribution either designed from the ground up for this use case (wiring the PC to a esoteric 90's black box
display) or that can acquire that feature.
What makes this easier than CRT emudriver and windows is that you don't need to install anything specific for your hardware and you don't have to go to the BIOS setup
for anything other than booting your linux usb: the linux kernel can be patched to support 15 kHz horizontal frequencies, e.g. those used by consumer TVs (computer
monitors, connected via VGA and capable of outputting higher resolutions are driven with a 31 kHz frequency instead).
-The display server we'll be using on linux can too be configured with modelines[^11] specifically for CRT TVs.
+The display server we'll be using on linux can too be configured with modelines[^12] specifically for CRT TVs.
Ok... I know that there's no universe in which that sounds easier than 'installing CRT emudriver'. Linux kernel 15 kHz patch? Modelines? What the
fuck. But the simplicity of this setup lies in the fact that the distribution we'll install already does all of that for us, out of the box, batteries included,
@@ -139,7 +156,7 @@ between your games. How can that get even comfier? It can't, this is the peak re
While I used groovyarcade at first, I've been favoring batocera lately. The difference between them is that groovyarcade is from the ground-up an operating system
for arcade machines/CRT game centers: when you install it, it prompts you to choose the setup that best fits your case (being consumer CRT TVs, we'll all choose
-the same option). It just works but I do concede that is oriented more towards power users: I'll recommend you configure retroarch as its main "front-end"[^12].
+the same option). It just works but I do concede that is oriented more towards power users: I'll recommend you configure retroarch as its main "front-end"[^13].
Batocera, on the other hand, is a more generalist distro. It is designed from the ground up to be a console basically, you can configure the theme of its menu,
download cover art, even watch movies via [kodi](https://kodi.tv/) and it is easier to play PC games, as in, non emulated ones, via lutris or specific linux binaries.
@@ -158,7 +175,7 @@ unxz groovyarcade-2024.07-x86_64.iso.xz
```
<br>
-If you're on windows, I recommend [balena etcher](https://etcher.balena.io/#download-etcher) to burn the .iso to your USB How to use it is outside the scope
+If you're on windows, I recommend [balena etcher](https://etcher.balena.io/#download-etcher) to burn the .iso to your USB. How to use it is outside the scope
of this post, and I don't have access to a windows machine, so just search for a balena etcher tutorial. You'd basically just connect your USB, open the program
and select the groovyarcade iso.
@@ -208,9 +225,9 @@ After the tests are finished, it will tell you the results:
![Groovyarcade test's results](/assets/images/2025/groovyarcade_test_results.png)
In my case I failed in every respect, as I'm using a virtual machine in QEMU to take screenshots, but if you're using a radeon card with analog out like I told
-you it'll probably say to you that your card is ideal and that you can output native resolutions.
+you it'll probably tell you that your card is ideal and that you can output native resolutions.
-If this is not the case, it then will tell you that groovyarcade will use super resolutions[^13] instead. This is fine, both standard resolutions will still be
+If this is not the case, it then will tell you that groovyarcade will use super resolutions[^14] instead. This is fine, both standard resolutions will still be
available (240p and 480i), refer to the glossary for the explanation on this. The worst case scenario is that you'll only be able to use 240p as it still is possible
that your card doesn't support interlaced resolutions, but this is rare on radeon cards, even in ones as recent as the RX500 series (via display port and a special
adapter of course -- I didn't mention it in the hardware section as I'm not familiar on using display port, and vehemently recommend to use analog outputs instead).
@@ -234,7 +251,7 @@ After installing groovyarcade, it should boot to Attract Mode, groovyarcade's de
but, for a more generalist emulation machine, I recommend setting up retroarch. Suffice to say, you need to use a keyboard, groovyarcade's menu doesn't work with a
controller. Bummer.
-For this, press escape to return to groovyarcade's main menu:
+For this, press escape inside attract mode and select `Exit Attract-Mode` to return to groovyarcade's main menu:
![Groovyarcade menu](/assets/images/2025/groovyarcade.jpg)
@@ -263,9 +280,18 @@ To do this, go to `Settings` > `Video` > `CRT Switchres`, and, in the CRT Switch
![Retroarch switchres setup](/assets/images/2025/retroarch_crt_switchres.jpg)
-Set INI in the `CRT Switchres` option. If, when installing groovyarcade it told you your GPU was compatible with low dot clocks, select Native in `Super Resolution`,
+Set INI in the `CRT Switchres` option. If, when installing groovyarcade, it told you your GPU was compatible with low dot clocks, select Native in `Super Resolution`,
if not, you will need super resolutions. Select the one that works for you. It'll work for you if it displays at all, but you can't go wrong with 2560.
+### Transferring games
+
+To transfer games to your groovyarcade system remotely, you can use SFTP. If you go back to the [screenshot of the main menu](/assets/images/2025/groovyarcade.jpg),
+in the top you can see my system's IP address; that's where yours is going to be, too. Write it down. After that, if you're on windows, install [filezilla](https://filezilla-project.org/download.php?type=client).
+When you open it, in the top left corner you'll see some fields: address, user, password and port. In address write down your groovyarcade system's local IP,
+in both user and password arcade and in port select port 22. After you click connect, in the bottom you'll see a directory called `shared`. Click on it, then roms,
+and you'll see a bunch of directories with names like 'nes', 'snes, 'psx', etc. These are the systems emulated by your machine. Transfer your roms, via filezilla,
+accordingly. (NES roms into the NES directory, playstation games in the psx one, etc.)
+
## Installing Batocera
Head on over to the [batocera project page](https://batocera.org/). Select the option for desktop PCs.
@@ -339,7 +365,16 @@ If it's preceded by a `#` character, like this:
`# system.ssh.enabled=1`
-Remove the `#` character. After this, power off the PC. Disconnect any of the video ports of your GPU and now connect it to your CRT via either DVI-I or VGA through
+Remove the `#` character and reboot your computer.
+
+Before you continue, you must first know your system's local IP address. For this, press space to bring up the menu again and go to network settings.
+You should see the following menu:
+
+![Network settings](/assets/images/2025/network_settings.jpg)
+
+Write down the IP address.
+
+After this, power off the PC. Disconnect any of the video ports of your GPU and now connect it to your CRT via either DVI-I or VGA through
the adapter. Make sure the TV is either turned off or switched to another input and then turn on the PC.
### Configure batocera for use with a CRT TV
@@ -350,15 +385,10 @@ to use the 15 kHz kernel alongside the most appropriate modeline for your TV.
Don't fret: this script is just a plain-text wizard, press enter when it prompts you and select the `Arcade 15 kHz` option when it comes up.
-To run this script on your fresh batocera system, you must first know its local IP address. For this, press space to bring up the menu again and go to network settings.
-You should see the following menu:
-
-![Network settings](/assets/images/2025/network_settings.jpg)
-
-Write down the IP address. Just as you should when transferring games to groovyarcade (and batocera too), download and install [filezilla](https://filezilla-project.org/download.php?type=client) (if you're on linx, your file manager should come with a SFTP client out of the box).
+ Just as you should when transferring games to groovyarcade (and batocera too), download and install [filezilla](https://filezilla-project.org/download.php?type=client) on your main PC (if you're on linx, your file manager should come with a SFTP client out of the box).
-When opening filezilla, in user, write `root`, the IP address of your batocera system, and in port, 22. When clicking connect, you should see a directory tree similar
-to this:
+When opening filezilla, in user, write `root`, in the address field, the IP address of your batocera system, `linux` in password and in port, 22. When clicking connect,
+you should see a directory tree similar to this:
![Batocera system directory](/assets/images/2025/batocera_system_dir.jpg)
@@ -435,7 +465,27 @@ The setup wizard will start. Press enter when prompted, go with the defaults. Wh
using a consumer CRT TV that is.
After it finishes and you reboot the computer, you can transfer games just like you would with groovyarcade. In batocera, the ROM directories can be found in
-`/userdata/roms`. In batocera, retroarch is already configured with switchres for use on a CRT TV.
+`/userdata/roms`. Retroarch is already configured with switchres for use on a CRT TV.
+
+# Conclusion
+
+I'm still hard pressed in recommending groovyarcade if you want a simple experience in both installing the operating system and using it (is just a retroarch machine,
+and with rgui. So you don't have to bother with scraping data). It has also an advantage over batocera: it doesn't abstract away linux.
+
+Batocera is more comparable to firmware in its user experience than with an operating system: it does one job and does it well, but it abstracts linux way too much:
+you can't install basic utilities like git or compilers, it just comes with what it comes with, and that's it. For me, this is... kinda bad, and although people
+could call out my bias as a linux user I don't think this is bad because I want to use linux on my games system, I think it is because having an actual linux distro
+with packages to install and utilities to use opens up a world of possibilities, **specially** on batocera, which is a distro that makes it easy to configure linux
+games. Sadly, configuring those same games can be a pain without a full linux system.
+
+Groovyarcade, on the other hand, follows a user experience philosophy that I really like: it can be as complicated as you'd like. Hell, it even provides a desktop.
+It's not something I'd normally recommend you use, but with groovyarcade you have a linux system that just so happens to be able to be hooked up to a CRT TV.
+
+If you want to keep it simple, just use it as a retroarch machine. I'll concede that having to use the desktop when wanting to play linux games is less than ideal.
+The comfiest option would be to boot those games from your frontend, using your controller. Something batocera would make possible, but as I said, the selection
+is limited by the distro's own limitations as a linux system. So no, no compiling crispy doom, you don't even have a compiler.
+
+One thing is true though: either option is miles better than using CRT emudriver, so use these, and happy gaming.
# Glossary
@@ -457,10 +507,12 @@ After it finishes and you reboot the computer, you can transfer games just like
[^9]: Run-ahead latency reduction: When the emulator executes two instances of the emulation, one ahead of the other by n frames, and splicing via save states the state of the second instance to cut the frames of input lag.
-[^10]: Dot clock: or dot frequency, the amount of pixels being displayed by your GPU per second.
+[^10]: Dual-booting: using more than one operating system on your PC, switching to one or the other when booting it up.
+
+[^11]: Dot clock: or dot frequency, the amount of pixels being displayed by your GPU per second.
-[^11]: Modeline: a line of text that describes the characteristics of a video signal to be outputted by the computer.
+[^12]: Modeline: a line of text that describes the characteristics of a video signal to be outputted by the computer.
-[^12]: In the context of groovyarcade, front-end just means the program that will be boot up by default. It normally is attract-mode, a frontend for (groovy)mame, but I recommend you use retroarch instead for a more general purpose gaming station.
+[^13]: In the context of groovyarcade, front-end just means the program that will be boot up by default. It normally is attract-mode, a frontend for (groovy)mame, but I recommend you use retroarch instead for a more general purpose gaming station.
-[^13]: Super resolutions: due to the problem some GPUs have with outputting low dot clocks required for SD resolutions, you can use super resolutions instead: this means outputting a resolution like '2560x240' instead of the usual '320x240' for example. This works because CRTs don't really care about horizontal resolutions, unlike modern displays: what matters is the _amount of lines_ shown. Because of the higher horizontal resolution, the dot clock you're actually displaying is higher than would it normally be, allowing even more GPUs to be compatible. As you can see, the horizontal 'super resolution' is normally a multiple of a lower, desired horizontal one.
+[^14]: Super resolutions: due to the problem some GPUs have with outputting low dot clocks required for SD resolutions, you can use super resolutions instead: this means outputting a resolution like '2560x240' instead of the usual '320x240' for example. This works because CRTs don't really care about horizontal resolutions, unlike modern displays: what matters is the _amount of lines_ shown. Because of the higher horizontal resolution, the dot clock you're actually displaying is higher than would it normally be, allowing even more GPUs to be compatible. As you can see, the horizontal 'super resolution' is normally a multiple of a lower, desired horizontal one.