RetroCRT :: Utility suite to configure RetroPie for a CRT
Copyright (C) 2022 Duncan Brown (https://github.com/xovox)
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
Currently there isn't an automated method for doing this.
There are two files that are used: ** low_res handles the boot & ES menu resolution ** super_res handles the emulation resolution
There are also alternate video modes in that directory that you can copy on top of what's there, or you can save your own. You're able to reset them via the RetroCRT setup system.
These are saved in the following directory:
/boot/retrocrt/video_timings/
This could help avoid bricking your RetroPie installation!
You'll need to update /boot/config.txt and set the following to 519 for RetroTink & 0 for all other platforms.
dpi_output_format=0
becomes
dpi_output_format=519
The release page has pre-built images
I'm assuming you're able to SSH in, or have a monitor & keyboard. I typically connect my Pi via Ethernet when I'm first
You can also do the initial configuration with a monitor hooked up to HDMI.
- Enabling SSH on the official Raspbian docs.
- This is best solved by putting your SD card in another machine and creating an empty file called 'ssh' in the boot
- Wireless Connectivity is an option, but
- SSH Clients
sudo apt-get update
sudo apt-get -y dist-upgrade
cd $HOME/RetroPie-Setup
sudo ./retropie_setup.sh
- Option U "Update"
- "Yes" to update installed packages
- Update underlying OS packages
- Wait for everything to finish
- DO NOT REBOOT
The install/config script is very straight forward and verbose
cd &&
git clone https://github.com/xovox/RetroCRT &&
cd RetroCRT &&
./retrocrt_setup.sh
sudo reboot
You should now be greeted by EmulationStation all ready to go!
Currently broken! See issue #29 in our issue tracker.
We check for several images to display as a splash before loading our game. In my example, we're loading mspacman.zip under FBA/FBN. These are all in descending order of preference.
/home/pi/RetroPie/media/fba/images/mspacman-splash.png <- custom splash image
/home/pi/RetroPie/media/fba/images/mspacman-splash.jpg <- custom splash image
[preview image from gamelist.xml]
/home/pi/RetroPie/fba/images/default-splash.png <- platform-wide splash
/home/pi/RetroPie/fba/images/default-splash.jpg <- platform-wide splash
/home/pi/RetroPie/splashscreens/default-splash.png <- system-wide splash
/home/pi/RetroPie/splashscreens/default-splash.jpg <- system-wide splash
This happens in two stages
- retrocrt_setup.sh
- This prompts the user for information & then generates our configuration file
- RetroCRT.yml
- This is an Ansible playbook that reads the configuration & applies changes
Browse to the RetroPie screen in EmulationStation & select RetroCRT where it will prompt you to upgrade..
This is currently not inside of RetroPie-Setup!
Some of this info is outdated & will be updated in the next major release
- /boot/retrocrt/retrocrt.txt
- This is the configuration file generated by retrocrt_setup.sh
- RetroCRT/retrocrt_resolutions.csv
- This contains per-game monitor resolution & orientation information
- RetroCRT/retrocrt_timings/
- This directory contains display resolutions that we dynamically switch to
- /boot/retrocrt/wpa_supplicant.conf(.txt)
- Define your WiFi configuration & country code, then RetroCRT will enable WiFi for you
- If the file doesn't exist, re-run RetroCRT configurator with updates
Some of this info is outdated & will be updated in the next major release
- /home/pi/scripts/runcommand-onstart.d/
- files/runcommand-onstart.d/01-splash.sh
- This displays a splash screen
- files/runcommand-onstart.d/75-set_screen_resolution.sh
- This changes the screen resolution, typically to 1920x240
- files/runcommand-onstart.d/99-retrocrtdebug.sh
- This logs debug info to /dev/shm
- files/runcommand-onstart.d/01-splash.sh
Some of this info is outdated & will be updated in the next major release
This happens before loading a game, and after the game exits.
RetroCRT/retrocrt_resolutions.csv
RetroCRT/files/runcommand-onend.d/99-set_screen_resolution.sh
RetroCRT/retrocrt_timings/
We generate a per-game configuration for RetroArch to give it the following:
- Screen horizontal & Vertical resolutions
- Screen orientation
- Any offsets for games that run > 240p
RetroCRT/files/runcommand-onstart.d/50-gen_ra_config.sh
RetroCRT/retrocrt_resolutions.csv
GitHub.com has built-in issue tracking, that's probably best.
If you don't want to sign up for GitHub.com, join our Facebook group and post questions or issues there.
Most issues can be solved by re-running the installer via the RetroPie menu. This will apply, or re-apply, all necessary changes. Simply select 'RetroCRT' from the RetroPie section of EmulationStation.
Possibly more information can be found in TROUBLESHOOTING.md.
I'm assuming you're able to SSH in, or have a monitor & keyboard. I typically connect my Pi via Ethernet when I'm first configuring it for ease.
You can also do the initial configuration with a monitor hooked up to HDMI.
- Enabling SSH on the official Raspbian docs.
- This is best solved by putting your SD card in another machine and creating an empty file called 'ssh' in the boot partition.
- Wireless Connectivity is an option, but I prefer wired for simplicity.
- SSH Clients
You can cut & paste this into your terminal.
cd &&
git clone https://github.com/xovox/RetroCRT &&
cd RetroCRT &&
/bin/bash ./retrocrt_setup.sh
If you're looking to connect your Raspberry Pi running RetroPie to an old school CRT set. You're going to need a few things.
- Facebook
- RetroPie CRT Gamers is a group I started for this very purpose
- The CRT Collective is an excellent resource on TV repair, buying, and general knowledge
NOTE: This method isn't yet supported by RetroCRT, but it will be.
You're going to need a cable with a 3.5mm (1/8th in) connector cable on one end and video/sound connectors on the other end. There are many cables that look exactly the same on the outside, but are wired differently on the inside.
-
OS Configuration Required
- Standard Raspberry Pi distros support it out of the box, with configuration
- RetroCRT will support this out of the box in the future
-
Software That Supports Connection
- All Raspberry Pi distros
-
Hardware Required
- CRT with composite input
- Zune A/V Output Cable
- Generic Pi AV Cable
-
Advantages
- Low cost of entry
- You can use 480i for menus
- You can use 240p for games
- Looks decent on small screens
- Incredibly common on most CRTs
-
Disadvantages
- Luma (light) and Chroma (color) are both carried on the same signal, so they interfere with each other
- This is the lowest quality video output you can get on the Pi
- This is prone to dot crawl
S-Video is a decent step up from Composite. You're separating Luma and Chroma which gives you far less interference, and better color depth.
-
OS Configuration Required
- Customized Raspberry Pi OSs with specific timings set for S-Video, as well as setting video output over GPIO
-
OS Support
- RetroTink Ultimate's LAKKA image.
- RetroCRT will support this in the future
-
Hardware
- CRT with S-Video input
- RetroTink Ultimate gives you 16,777,216 colors.
-
Advantages
- Better colors than composite
- Less interference
- Better clarity than component
- Fairly common on CRTs
-
Disadvantages
- Not natively supported by a Raspberry Pi
- Additional hardware is required
Component video actually encompases many video formats, but in NA it typically refers to a specific type of video called YPb/Pr... sort of the way we call all facial tissue Kleenex.
This format separates the red and blue signals from luma, and derives the green signal based on the red, blue, and luma signals.
-
OS Configuration Required
- Customized Raspberry Pi OS with specific timings set for component, as well as setting video output over GPIO
-
OS Support
- RetroCRT's RetroPie image
- RetroTink Ultimate's LAKKA image.
-
Hardware Required
- CRT with Component/YPbPr input
- RetroTink Ultimate gives you 16,777,216 colors.
-
Advantages
- Output at 240p
- Output at 480p, or 720p possible on HDTVs
- Very high color depth and clarity
- Fairly common on higher-end CRTs, which are very cheap/free by now
- Cheap cables
-
Disadvantages
- Requires moderately expensive hardware
- Stuck at 240p or lower on standard CRTs
- Fairly pricy hardware is required
-
Software Required
- Customized Raspberry Pi OS with specific timings set for RGB, as well as setting video output over GPIO
-
OS Support
- RetroCRT's RetroPie image
- RetroTink Ultimate's LAKKA image.
-
Hardware Required
- Not region specific
- RGB SCART CRT TV
- RGB monitor (typical VGA)
- RGB modded CRT TV
- Professional RGB CRTs, typically used in media creation
- The affordable Gert/VGA 666 gives you 18-bit (262,144) color.
- The more expensive RetroTink Ultimate gives you 24-bit (16,777,216) color.
- The awesome pi2jamma for a drop-in solution for RGB arcade cabinets
- The awesome pi2jscart for RGB scart connections
-
Advantages
- Fairly cheap hardware available
- Incredible color depth, accuracy, and clarity. At, or near, arcade quality.
- Inexpensive and open-sourced hardware is required
- SCART is common in many countries
- Many CRTs can be modded to accept this signal
- Not affected by PAL/NTSC/SECAM regions
- Can be used with a VGA CRT
-
Disadvantages
- CRTs with OEM RGB support can be very expensive in the Americas
- Full 24-bit color depth requires moderately expensive hardwwre
- SCART isn't generally available in the Americas
- Can be difficult to find and modify a CRT
See the troubleshooting doc.
I am not affiliated with Mike Chi & RetroTink.
.
;\
/ \
`. i ,^^--.
___ i \ / \ ,',^-_
/ \ ! \ | | / / /
\ / \ \ | ; ,__. | ,'
4 | \ `. | / ( ` __>
,_| |_. \ `-__> >. `---'\ /
/,. ..\ `. `. | |
U | | U `. \ ,--~ ~--.
--~~~~--_ _--~~~~--_ _--~~~~--_ _--~~~~--_ \ _--~~~~--_ \ /_--~~~~--_ \
`. ,' `. ,' `. ,' `. |,' `. \,' `.
\ / \ / \ / \ / \ / \
| |