Cached at:
06/03/26, 03:37 AM
### TL;DR
The author successfully encoded Sega Genesis game data as audio, played it through a vinyl record, decoded it with a Raspberry Pi Pico, and loaded it onto the console, completing a proof of concept.
## Project Motivation & Required Hardware
The initial idea for this project sounds absurd: playing Sega Genesis games using a vinyl record player. But "yet another crazy idea, just my style." The author had never used a record player before, nor had they ever recorded onto vinyl — but that's where the fun lies.
### Sega Genesis (Mega Drive)
- The author jokes that "the Sega Genesis was designed by Mark Twain in 1967." The console has two controller ports, power and reset buttons, and uses a cartridge system.
- An RGB upgrade kit was used, connecting via component cables to a capture card and then to a monitor. However, initial issues with 16:9 stretching and flickering took half an hour to fix.
### Vinyl Record Player: P record factory
This is a record player and recorder that can create custom 5-inch vinyl records. The kit includes plastic casing, screws, gears, belts, and other parts, but no manual was included (the manual was hidden under the lid inside the box).
## Setting Up the Custom Software Environment
To load games from vinyl, the first step was to run custom ROMs on the Genesis. The author used a Mega Everdrive Pro (flash cart), loading homebrew games via SD card.
### Installing the SDK
Using SGDK (Sega Genesis Development Kit), written in C. The author ran it in Docker and eventually compiled a test ROM (a sound test: cross key moves cursor, A/B buttons change background color and play a 440Hz tone).
## Loading Games via USB
The Everdrive Pro's USB interface provides a communication channel with the console. The author used a Raspberry Pi Pico 2 as an intermediary:
- Flashed the Pico with specific firmware (everdrive.h, etc.), enabling it to send ROM data to the Everdrive via USB.
- Connected the Pico to the Genesis USB port using a USB OTG cable, allowing ROM deployment from the Pico.
## Testing Audio Data Transfer from Tape
Before tackling vinyl, the author first verified the audio decoding workflow using cassette tape.
### Data Encoding Method
Digital data must be converted to analog audio waveforms. The author adopted a modem-like approach: bits → audio waveforms, with sampling during playback to recover bits. Recorded onto tape and transmitted at approximately 1200 baud (150 bytes/sec).
### Practical Process
- Used an old-school FC data recorder (similar to a cassette tape recorder).
- Recorded pure tone tests on tape, then used the Pico's audio input pin to receive the signal, decode it, and send it via USB to the Genesis.
- Result: Successfully loaded a fractal plasma demo program.
## Making the Vinyl Record and Loading It
Since the tape worked, the next step was vinyl.
### Assembling the P record factory
After some effort finding the manual (hidden inside the box), the author assembled the DIY kit. The process included installing the belt, gears, tonearm, etc., and finally succeeded in recording.
### Recording Game Data to Vinyl
The game ROM (compressed and optimized for size) was encoded as audio and cut onto a blank vinyl record. The audio track consisted of a series of modulated beeps.
### Playing and Loading
- Connected the record player's audio output to the Pico's audio input (via a resistor divider for noise reduction).
- The author says: "Used this P record factory thing to record game data onto vinyl, then played it on the Sega Genesis."
- Pressed play, the vinyl spun, emitting "pleasant beeps." The Pico decoded the data, pushed it via USB to the Everdrive, and finally the game appeared on the TV screen.
## Conclusion
Although the whole idea is "completely useless and stupid," the author proved the concept: vinyl records can simultaneously carry sound and game data, demodulated as audio and loaded onto a Sega Genesis. It's a nostalgic and hilarious tribute to the Sega CD.
> Source: [Loading Sega Games Off a Vinyl Record [video] - YouTube](https://www.youtube.com/watch?v=c744iD0_fWU)