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.
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.
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.
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 :-)
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.
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.
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.
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.
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!
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.
41 comments
[ 0.20 ms ] story [ 71.2 ms ] threadhttps://twitter.com/bigevilboss/status/1142031487317020672
https://segaretro.org/Super_Magic_Drive
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)
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.
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.
https://www.youtube.com/playlist?list=PLowKtXNTBypGqImE405J2...
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.
It's a comparison I've used a lot over the years too.
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.
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.