I built my own Sega Genesis (Mega Drive) hardware dev kit from scratch(nestenius.se)
nestenius.se
I built my own Sega Genesis (Mega Drive) hardware dev kit from scratch
https://nestenius.se/2022/01/18/how-i-built-my-own-sega-mega-drive-hardware-dev-kit-from-scratch/
41 comments
This is pretty similar to hardware made by Radical Software and Accolade for professional development back in the day. Also the EA dev hardware was similar but more advanced since it contained additional hardware for capturing the bus like a logic analyzer might. For the Accolade version it was very similar to this design. I worked on the debugger and it was a lot of fun. At the time we used the Lattice C compiler and I supported C source level debugging including watches that could use a C like parser.
I never really dared to dig into electronics like this. I had a nack for breaking things when I did.
As an example, I purchased a Pentium machine back in the day. I had a feeling it was running too hot (or maybe I was trying to over-clock, I don't recall). But I decided to build a simple PCI card. So simple, in fact, that it just had a 12v case fan on it. I wired up the +12v pin and the ground pin to the 12v +/- of the fan. Then I plugged the PCI board into the PC. It worked! Except, it was now the only thing in the PC that worked.
After removing it, the machine no longer worked. I returned it to the shop I purchased it from and they informed me that I must have had a surge. Everything was destroyed. The CPU, the RAM, the Video card, it was all gone.
As an example, I purchased a Pentium machine back in the day. I had a feeling it was running too hot (or maybe I was trying to over-clock, I don't recall). But I decided to build a simple PCI card. So simple, in fact, that it just had a 12v case fan on it. I wired up the +12v pin and the ground pin to the 12v +/- of the fan. Then I plugged the PCI board into the PC. It worked! Except, it was now the only thing in the PC that worked.
After removing it, the machine no longer worked. I returned it to the shop I purchased it from and they informed me that I must have had a surge. Everything was destroyed. The CPU, the RAM, the Video card, it was all gone.
The Sega Mega drive was a very robust machine and it did survive numerous short-circuits over the years and even today it still works!. but yes, I have blown numerous PC-motherboards over the years though... I guess that comes with the trade! One time I damaged my motherboard that was powered-off by using the vacuum cleaner to get rid of the dusts from one of the fans. The spinning of the fan resulted in a power-surge that damaged my motherboard :-(
If you want to get into digital electronics and computer building, here is a really good series on building your own 8-bit computer.
https://www.youtube.com/playlist?list=PLowKtXNTBypGqImE405J2...
https://www.youtube.com/playlist?list=PLowKtXNTBypGqImE405J2...
Fantastic stuff!
There are plenty of modern flashcarts around for various systems, but most of them are designed to let you load up a bunch of (often pirated) games onto an SD card and play them, and they're not very good for development. Nobody wants to build their ROM image, copy it to an SD card, swap SD cards around, and then reboot the system. (Plenty of people do that, it just sucks.)
It goes to show that making your own cartridge for development is not as hard as you might expect.
There are some high-end cartridges out there that let you do everything, with both SD cards and USB ports, but it's less common to see pure development cartridges, which could be made much more cheaply.
There are plenty of modern flashcarts around for various systems, but most of them are designed to let you load up a bunch of (often pirated) games onto an SD card and play them, and they're not very good for development. Nobody wants to build their ROM image, copy it to an SD card, swap SD cards around, and then reboot the system. (Plenty of people do that, it just sucks.)
It goes to show that making your own cartridge for development is not as hard as you might expect.
There are some high-end cartridges out there that let you do everything, with both SD cards and USB ports, but it's less common to see pure development cartridges, which could be made much more cheaply.
Laughing out loud, cheering and clapping my hands when seeing lines such as "As I was on a very tight budget, I decided to build my own. How hard could that be?".
I wish I had that intuition and courage to build my own birdfeeder back in the day. And of course the author managed to do much cooler things.
I wish I had that intuition and courage to build my own birdfeeder back in the day. And of course the author managed to do much cooler things.
Original blog post author here! Thanks! :-) Perhaps its not to late to build that bird feeder :-)
Thanks man! Definitely working on that direction. Do you have other contemporary projects to show? I'm going to browse through your blog this weekend :D
There are a few other projects I did listed here https://nestenius.se/about/
Besides that, my biggest project so far is that I created a developer community around 1996 called Programmers Heaven that became my main living for many years :-)
Contemporary with the console, the two kits I had for development were SN System's PsyQ, and the one you could buy at a decently stocked video games store was the Super Magic Drive which used floppies.
https://twitter.com/bigevilboss/status/1142031487317020672
https://segaretro.org/Super_Magic_Drive
https://twitter.com/bigevilboss/status/1142031487317020672
https://segaretro.org/Super_Magic_Drive
Wow! Nice hardware!
I feel like this would be an inferior development experience in 2022 compared to this approach: https://hackaday.io/project/1507-usb-megadrive-devkit
Which is an fpga in the cartridge that also serves as a gdb stub over serial. You can debug with gdb directly on the hardware.
Which is an fpga in the cartridge that also serves as a gdb stub over serial. You can debug with gdb directly on the hardware.
I have a UMDK and it's a neat piece of hardware, but it sadly has some design flaws that make it hard to recommend. One problem is that it doesn't make use of the !CE0 signal (the main chip select for the cartridge) on the cart slot which means it will get into bus fights on systems with TMSS (Trademark Security Sysstem, i.e. the thing that displays the "Produced or Under License by Sega Enterprises, Ltd." text). The bigger problem is that it has issues with DMA transfers on a lot of systems resulting in severe graphical corruption in some cases.
It's probably better than what the original poster has made, however you can debug with gdb directly on the hardware with the simple design of bidirectional communication / dual port RAM and a little bit of ROM code to boot your debug code into the Genesis / MD memory. That's what we did. Single stepping is supported by using 68K trap instructions. The command set isn't very big. Mostly read memory / write memory / Run. I can't remember how we implemented stop but IIRC it was polling from an interrupt routine that was running from a timer. In any case you can get a lot of mileage out of a simple bit of hardware.
Thank you for your reply.
Yes, I'm aware you can basically link a gdb stub within your own program as well.
I want to encourage you to release your code if you still have it somewhere!
This code is from 1992. No Internet, no GitHub and many fragile hard drives ago... So much old code is lost to time.
[deleted]
I bought Ben Eater's Motorola kit and was overwhelmed, I have a whole new respect for folks that can do this.
Author of the blog post here. Thanks, it was a quite long project, but the device have a pretty simple and plain architecture that made it easy. Todays consoles are much harder to hack, due to multiple layers of encryption and protection.
I had to build an rtos (real-time operating system) for the m68k and dealing with how m68k stack pointers work with interrupts was really frustrating.
A message of appreciation, you sound very cool. I'd love to have seen this when I was a young sega mega drive obsessive
Original blog post author here! Thanks for the kind words!
One point I didn't see in the article. How complete was your dev kit? Could it actually run commercial games?
Yes, I could run games and I also wrote some simpler demos where I for example could move a player around the screen using the joystick. So, it was fully functional.
I would love to read this kind of article along with all the drawings and pictures of a similar kit for the NES, from the 1980's
A lot of those early programmers knew electronics they just built their own stuff. Crazy compared to your average developer now. A lot of guys had to build their own terminals/keyboard etc back then (especially the 70's computer clubs). At some point the hardware and software kind of split up (lucky for us that didn't have any real hardware knowledge)
A lot of those early programmers knew electronics they just built their own stuff. Crazy compared to your average developer now. A lot of guys had to build their own terminals/keyboard etc back then (especially the 70's computer clubs). At some point the hardware and software kind of split up (lucky for us that didn't have any real hardware knowledge)
Tinkering with hardware back then was much easier because the frequency of the devices was pretty low (like 1-8 MHz) and the interfaces and system bus was much easier to work with compared to todays advanced protocols like (USB, etherhet...)
Yup, I guess we can still do it today, for ourselves and for our kids, with the right tools. I'm thinking maybe it is not a huge amount of effort to build your own hardware back in the day because so may people did that. At least they had kits too back in the day.
Heh ...
For some reason I have always found a relief in programming and mixing in my native tongue randomly. Like, it gives a playlike non tryhard touch to it. And the flow is nicer.
ut:
*wait for datapacket to be stored att $FF0000
lea $ff0000,a5
I like how he slips in three Swedish spelling "friend words" there.For some reason I have always found a relief in programming and mixing in my native tongue randomly. Like, it gives a playlike non tryhard touch to it. And the flow is nicer.
Author here, never anticipated 30 years ago that someone else would actually look at the code :-)
It's great to see some new projects being wire wrapped. It's becoming some kind of lost art nowadays.
Author here, wire-wrapping is like therapy for your mind! like solving a sudoku!
Love the way you phrased that because I'm often asked by my wife and friends why I spend time on highly technical personal projects and my response is usually the same: you relax by solving sudokus and those personal projects are my equivalent of a sudoku.
It's a comparison I've used a lot over the years too.
It's a comparison I've used a lot over the years too.
[deleted]
Awesome stuff, I love reading about DIY hackery like this.