I’ve been working on a project recently that would use a custom Sega game cartridge to turn the Sega Genesis into an audio-reactive visual generator. What that means is you would plug the VIDEON game cartridge into the Genesis and plug your audio source into the game cartridge. The game would take the data from the audio source and translate it into visuals that would move with the music.
Here is a basic mock up of an Ultimate design I would like to acheive with an SD card function and an Audio Out headphone jack.
While the Ultimate version is a goal, right now I am just attempting to get the basic functions to work. I’ve designed a prototyping board with only Audio In and no SD Card funtion.
This board will allow me to use jumper cables to work out the embedded systems that are needed to make this project work.
I’m ordering PCBS for another project, going to add these to that order. Once I get them I can start testing. I will keep you all updated as I make progress. It’s a long journey to this project’s end, and these are just the first steps.
The EPROM was too low, it goes inside the Genesis… This is ok for the final design, but while I am prototyping I would like to add an EPROM socket so I can remove and reprogram the EPROM while working on the code. So this design will not work for now. I redesigned the PCB and came up with this:
Still waiting on my EPROM sockets to come in and some new MSGEQ7s and STM32s, but basically this is what it will kinda of look like when populated with all the pieces:
I made a mistake in thinking the STM32 would send data to the EPROM. I now believe the STM32 should be sending data directly to the Genesis CPU using game cartridge pins.
Now that I have this figured out, the next step is writing the code for the STM32. Problem is the EPROM uses these Address and Data Bus lines to send information to the Genesis. So I’ll probably be quiet on this thread for a bit while I teach myself multiplexing.
Realizing that the STM32 Blue Pill and the EPROM would be using the same Data Lines something needed to be in place to make sure they do not send Data at the same time.
Here is a very basic diagram of the workflow I figured out to solve this problem:
When the Output Enable Pin is low the EPROM sends Data. I am using the 74HC245 as gate to tell the STM32 Blue Pill when to send data. The problem is when the 74HC245 is low, it sends Data just like the EPROM. Adding a 74HC04 Inverter chip will flip the Output Enable Signal. So when the EPROM is low and sends data, the 74HC04 flips that signal and sends a high signal to the 74HC245 chips and they stop sending data. The opposite is true as well, when the Output Enable pin is high, the EPROM stops sending data, the 74HCO4 flips the signal to low and the 74HC245 chips send their data. I am feeling good about this design and I think the hardware is done enough to move on to software.
I’ll probably order new PCBs, but first I want to make sure it works. So I glued a bread board to the back of my previous PCB Prototype board and added the new chips.
Upload a basic working program to the EPROM to make sure I understand the process and that the PCB works.
Bread board and write code for a simple program that would take audio data from the MSGEQ7 module, send it to the STM32 Blue pill and then use that data to make an LED matrix move with the audio.
Write code for both the STM32 Blue pill and for the EPROM, where the EPROM will load basic visuals to the Genesis and then Blue pill will send data received from the MSGEQ7 to make those visuals move with the audio.
If I can get the last goal to work, the rest of the build would be creating about 100 different “levels” of visuals people can cycle through for different graphics. But first the goal is just trying to get this to work.
Also, I forgot to note at the beginning of this build, I got a basic Sega Genesis Game Cartridge PCB design from this website: