41 comments

[ 0.20 ms ] story [ 71.2 ms ] thread
Really cool read. Am I right in thinking it works like a flash cart, but with volatile memory?
Author of the blog post here. Yes, I basically emulated the cartridge rom using static memory. That was the simplest at the time.
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.
What's the sponge for?
Blog post author here. I used it just to reduce the stress on the vertical circuit board.
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)

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.
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.

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 :-)
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 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.

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 :-(
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.
Heh ...

    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.

(comment deleted)
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.

Original author here, wow! What a cool project!
If you haven't implemented a debugger and want to you may contact me if you want to hear more about how we did it 'back in the day' if you are interested.
(comment deleted)
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.
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.

Awesome stuff, I love reading about DIY hackery like this.