Building my own Sega Genesis Mini

It’s been several years since I posted Building a own custom retro console running RetroPie. That project was a lot of fun at the time, but I haven’t built another custom system since.

I just wanna play Sega Genesis

My original intent was to build something that focused on playing Sega Genesis games. The Genesis remains my favorite childhood console, and my dream was to build an emulation machine that looked like a Sega Genesis externally, but loaded with the entire library of games.

However the Raspberry Pi was still in its infancy back then, and I couldn’t bring myself to cannibalize an actual Genesis for its shell. Instead I settled on building my custom console with a generic case and (Xbox 360) controllers featuring a similar six-button layout. But that build just didn’t hold my interest for very long and I ended up digging out my original Sega Genesis, picking up one of Krikzz’s EverDrive flashcarts, and never looking back.

Fast forward to 2019, and Sega released the Sega Genesis Mini, which I happily picked up. It was my favorite of the official mini consoles, and it earned its spot on my desk at work. Despite the quick availability of hacks to add more games (and systems), I appreciated having such a tight, curated experience, even if I didn’t agree with every game choice.

Home office plans

Now it’s 2022 and that mini has mostly sat unused while I worked from home. As our offices have reopened, I’ve decided to split my time and to finally build myself a proper home office. And while I’ve kept a spot on my desk earmarked for a small “retro hardware setup”, I also have nice large TV and couch just begging for its own game system.

My first thought was to bring the Genesis Mini home, but it’s nice to have a self-contained setup at work for the days I go in. My second thought was to just pick up a Xbox Series S, giving me access to my modern digital library instead.

Then the Genesis Mini 2 was announced, so that became a contender. I looked at the game list, but unfortunately it doesn’t really excite me. However, in the process of watching various YouTubers’ opinions on the system, I stumbled upon some other projects that I’d completely missed before.

Blast 16 and the RetroFlag MEGAPi case

Blast 16 is a Raspberry Pi image designed to help you build your own Genesis mini console. Rather than just another RetroArch and Emulation Station setup, designed to host the full library of every retro console ever, Blast 16 is very Sega-oriented, and only supports the Genesis, Sega CD, 32X, Master System, and Game Gear. More than that, the beautiful, box-art-focused UI can’t handle more than a couple hundred entries without slowing down. So it’s meant to make you curate your experience, and only put on games you really want to play.

On top of that, and the real icing on the cake for me, is it’s easy to pair the Blast 16 software with the RetroFlag MEGAPi Case, which looks just like an actual Model 1 Sega Genesis. Seeing the two together in this video, my original dream was rekindled, and building my own Genesis Mini jumped to the top of my to-do list.

Getting the parts

My first concern was the age of these projects – they’d all come to market years ago, in response to the official Genesis Mini release. And if there’s one problem with these kinds of niche retro products, is that they’re often impossible to get if you didn’t buy them on day one.

Thankfully the Blast 16 website was still up and running, and I was happy to find that the MEGAPi case is still available on Amazon. I put in my order, and it’s quite lovely:

Next I gathered up two 8Bitdo M30 Bluetooth controllers (which I already had). The only thing missing was a Raspberry Pi.

I almost had a heart-attack seeing my (lack of) options. The MEGAPi case supports the Raspberry Pi 2B, 3B, or 3B+, but almost no one carries them anymore. I’d have to shell out $120 just for the low-end 2B, which is three times its original retail price of $40, and doesn’t even have Bluetooth.

Thankfully, past me had me covered. Checking my Amazon order history, I saw I’d picked up a 3B back in 2017 (who knows for what), and sure enough I there it was in my parts bin, still in the box. Bingo!

Building the hardware

Installing the Raspberry Pi into the MEGAPi case was simple and straight-forward – just plug in the two USB plugs, the single plug for the GPIO, and screw the board down:

Finally I flipped on the switch labeled “Smart Shutdown” (more on that later), closed the case and screwed it shut:

Initial software setup

With the hardware done, the next part was setting up a Micro SD card with Blast 16. I used a 16 GB card (no reason to waste anything bigger), and following the excellent instructions on the Blast 16 website, got the card imaged.

After that, I installed the card through the little lift door on the side of the MEGAPi:

After running the device once for the initial setup, and pairing the M30 controllers, it was time to install some games!

Installing games

Doing so was super easy. All you have to do is copy your ROMs (with matching box-art) onto a USB flash drive in a particular folder structure. Then if you boot the system with flash drive plugged in, Blast 16 will automatically install them onto the system. Note: if you want to remove games later, you can do so from within the Blast 16 menus.

I installed a little over a hundred games, mostly Genesis favorites, but also select few 32X, Sega CD, and Master System titles. It may not be the forever list, but it’s a great start.

Installing the safe shutdown scripts

One of the biggest gotchas with building a Pi-based anything is that the board doesn’t have a power switch. Out of the box, you’re expected to plug in the power to turn it on, and make sure to safely shutdown from within the running software to turn it off. If you don’t, and just pull the power, you risk corrupting the SD card and breaking your system.

Thankfully, the MEGAPi case wires its power switch and reset button to the Pi’s GIPO pins, and RetroFlag provides scripts you can install on your system to trigger a safe shutdown or restart when they’re used.

Update: Whoops! Apparently the base Blast 16 image already includes a working safe shutdown script that I completely missed. My version is unnecessary and installing it may give you some random error messages.

Unfortunately, RetroFlag hasn’t touched their code in a while, so the scripts have bugs and the install instructions didn’t work for me with Blast 16. I ended up forking their code and fixing the scripts myself for the Blast 16 / MEGAPi combo. I’ve written up revised instructions here, but long story short, if you want to copy my work, once you’ve gotten your Pi’s network configured, you just need to run the following from a terminal:

wget --no-check-certificate -O - "" | sudo bash

After it reboots the power switch and reset button will work as expected.

Final thoughts

I really love how well this project turned out. It looks so nice under my TV:

The UI is beautiful, and while I normally like the clean, pixel-perfect look when emulating, I’ve found I really like simulating an old CRT on this setup by setting the scaling to 4:3, turning on scan lines, and enabling the NTSC composite filter. Note: that last option meant going into RetroArch’s menus, so while that isn’t strictly necessary, I like that it’s still available.

In fact, having access to RetroArch’s menus meant I was also able to enable RetroAchievements, which was listed in Blast 16’s FAQ as unsupported. It works great, and I find adds a whole new level of fun when playing these old games.

Overall I’m thrilled to finally fulfill this old dream of mine, and while it doesn’t have literally every single game, I expect to spend plenty of hours playing my custom Sega Genesis Mini.


Adventures in Macintosh restoration Part I

I have a lot of fond childhood memories with classic macs and after watching a variety of restoration videos on YouTube, playing around with some emulators, and needing a new project, I’ve decided that it might be fun to try and restore a classic mac on my own.

My history with Macintosh

Growing up in the 90’s, my family was an Apple family, and my first computer was a Macintosh IIfx with its Motorola 68030 processor and 20MB of RAM. When my father eventually made the switch to Windows for work, I inherited his Centris 650, which was my main computer for many years.

On that machine I learned to program in C with Metrowerks CodeWarrior and created my first web sites writing HTML in BBEdit. Before that, I bought a book on HyperTalk, and spent hours making black and white cartoons and little games in HyperCard to share with my friends.

While I never owned one of the classic B&W “compact” macs, I used them often enough at school. Even though I had a better System 7 machine at home, I still loved playing with those old System 6 machines, limitations and all.

Eventually I built my first Intel PC, jumping to Windows 98 instead of following Apple into PowerPC and Mac OS 8. That was in 1999, and I’ve never really looked back, in fact the only Apple product I’ve bought since then was a single iPod around maybe 2008.

Fascination with 68k

It wasn’t until I started getting back into retro games and consoles that realized that the Sega Genesis, my favorite childhood gaming console, ran on a Motorola 68000 processor – the same architecture as my old macs. It blew my mind that both systems, which couldn’t have been more different in my childhood mind, were more or less running the same CPU under the hood.

Wanting to try my hand at writing a Genesis game, I even started looking into programming in 68k assembly a few years ago, though I eventually abandoned the effort when I started costing out how long it would take me to actually make something, versus spending that time on my other hobbies. But the idea to do something with a 68k-based machine has gnawed at me ever since.

Emulators and disk format problems

Last year I started playing around with Mini vMac, an excellent classic mac emulator. Turns out there’s a lot of the old mac software still floating around online. Then I started thinking around buying and setting up some vintage hardware myself. I began researching and learned a lot about the various options for doing so, especially how to overcome the hurdle of actually getting files onto old hardware.

Getting bootstrapped isn’t easy. Basically, the primary option for getting data onto/off classic macs are floppy disks, and unfortunately, old mac floppies are just different. Even if you can get installers or disk images of all the old software online, you can’t just write them to a floppy from a PC. The disks are physically formatted differently, and you need an actual working classic mac with an original floppy drive to write them.

Once you have a classic mac up and running you can read PC-formatted disks with the right software, but the trick is getting the classic mac set up and working in the first place. A real chicken and egg problem.

The easiest thing to do is simply pay someone with a working classic mac to make a set of setup floppies for you, but even after that, you need to make sure the mac you’re using can read 1.4MB floppies (not just the older 400k/800k floppies) otherwise you still won’t be able to transfer data to/from a modern PC.

The crossover solution

The other (better?) option is to get a newer, but still old, classic mac as a “crossover” machine. Usually something from the PowerPC-era with a CD-ROM drive, Ethernet, even USB, with that special Apple floppy drive, as a staging ground for reading/writing old floppies. Then you transfer files from your modern PC to the crossover machine, then write floppies.

Now, and I’ll get into these later, there are also modern products that emulate floppy and hard drives that use SD cards, which you can read from / write to from any machine. But not only are they pricey, there are nuances to using them that don’t make it as simple as drag-and-drop.

Then there’s the question in any restoration: how original are you going to keep it? Every person, and every build is different, and the journey is just as important as the destination with a project like this. I mean, the emulators really are excellent – if I just want a quick rush of nostalgia, I can run all of this stuff in a window on my desktop.

Anyway, at the time I decided I didn’t want to invest either the time or the money to start such a project, and filed what I’d learned for later.

Now is later, looking for a new project

That’s where I left things last year: some emulator configs, setup disk images, and bookmarks saved off on my computer, in my perpetual project backlog.

Now it’s 2020, and while cleaning out a closet I found an old laptop I’d forgotten about. Not a powerful machine, but small and tough, and I thought “this would make a good emulator machine”. Now I’ve made my share of “emulator machines” and mini arcade-cabs, but I’d been watching a lot of videos on old 8-bit computers, and I thought, since the laptop is small and obviously has a keyboard, it might be fun to set it up as an old 8-bit computer emulator, specifically the Apple II and Commodore 64.

It was easy to set up, and I spent a few evenings exploring the old Apple II library. I never owned an Apple II, but like many 90’s kids I used them in elementary school, and it was fun to play through The Oregon Trail and Odell Lake again. But it was almost too easy to set up, and it only reminded me of the macs I used to have and all the research I did planning to restore one.

So I dug out my old notes and start trolling eBay. While it might be more “nostalgic” to try to rebuild my original IIfx or Centris, both are fairly large and would require an external monitor. I do have a home office now that I didn’t have last year, but there’s not a ton of space, and I don’t really want to add a big period-correct CRT onto my desk.

A laptop might work, but that’s a whole another layer of problems sourcing replacement hardware. And really, deep down, I want one of those classic compact macs. So I start working on a plan.

My goal is to take a 40-year old computer and give it a full overhaul – not just getting it up and running, but cleaning it inside and out, replacing components on the motherboard, fixing dead drives with new grease and gears, bleaching the case plastics back to the original color.

I don’t just want a working compact mac, I want to learn new skills, to get down and dirty in the hardware. Something that’s gonna take time and sweat to finish. Something that I can proudly display on my desk. Then, after all that, do what I always do with my hobbies, write some software for it. Finally scratch that itch to write something for a 68k machine.

Of course, I want to document my progress along the way. I’ve already gotten started, but this post is getting long in the tooth, so I’ll save that for Part II.

Stay tuned!


Introducing the RomSort utility


About a year ago I wrote a little command-line tool for sorting ROM files into alphabetical sub-directories. The main feature was it could intelligently combine the smaller sub-directories, which is useful when you’re browsing on low-resolution screens. However after I got the code working I never got around to sharing it.

So I took some time to re-package the code into a small .NET 2.0 WinForms app. It is pretty straightforward to use, and even gives you a live preview of what the end result will be before you use it. Note that filename collisions will be marked in red and it won’t let you perform the sort if there are any.

Source and binaries (under releases) @ RomSort on GitHub.



Building a custom retro console running RetroPie

Ever since I first heard about Raspberry Pi and the RetroPie project, I’ve wanted to build a retro console. Something with all my favorite old game systems emulated in a compact classy box, with nice controllers and fully customizable.

Back in the day I used to have a soft-modded Xbox original to play retro games, but it was loud, bulky, and the controllers weren’t great. When I got my first Raspberry Pi, I tried to make my custom console, but I ran into several problems:

  1. Power issues: A non-clean shutdown meant corrupting the SD card, which isn’t user-friendly, and no power switch
  2. Weak ports: Connecting straight to the light-weight Pi meant it was often left hovering in the air, which would strain the HDMI and USB connections
  3. Available cases: Raspberry Pi cases all seem to fall into the category of tight as possible, giving no internal room to address 1 and 2 above

My first successful attempt was of course building the Picade, but it has two major limitations:

  1. One player only
  2. Kind of heavy to play on a couch

Since then I’ve been planning a new machine. The goal has been a small, two-player console that connects to modern TVs. Then after I discovered this lovely Polycase ZN-40 electronics enclosure, I new it was time to get to work. Yesterday was Pi Day, and I’d just cloned my Picade SD card, so I decided to finally try putting a console together.

It went together way faster than I anticipated! Now I can’t wait to make a couple more: one for home, one for work, one for the game room… the opportunities are endless.

Okay, enough typing, time to play!


P.S. Here’s a quick video and some development pics:


retroconsole01 retroconsole02 retroconsole03 retroconsole04 retroconsole05 retroconsole06 retroconsole07 retroconsole08 retroconsole09 retroconsole10 retroconsole11

Building the Picade Mini Part V, final touches

In Part I I put together the cabinet, in Part II I got the main electronics installed, in Part III I created a custom rear jack panel, and in Part IV I got everything up and running 95% how I wanted.

After that last post, I took the machine to work to show off. Got lots of people to try it out, and the biggest bit of feedback was people wanted their MAME games. I also really wanted to play six-button Sega Genesis games. So I spent some time updating my secondary RetroPie build to the latest version, which gave me a much more functional Genesis emulator, including save state support and six-button controls. Then I switched to mame4all-pi, and put the correct MAME roms on the box, which finally gave me working MAME games.

Once I was sure the update would improve things without breaking my Picade, I went ahead and switched back to that build. I updated the Picade, and when that was done, it turns out I was using the wrong resolution before. The Picade Mini has a 4:3 screen, and I was outputting widescreen before. Once I fixed that, I changed the splashscreen to use the official Picade art from the Kickstarter.

The last bit of work was getting MAME working. It involved making all of the requisite folders mame4all-pi needs to save configs and high scores. Once that was done, I spent the time to go into MAME and reconfigure all of the controls to use what I have on my joystick. Everything I’ve done is in the updated configs file I’ve attached at the bottom of this post.

Here’s an updated video of the build in action:

And the original video if you missed it:



My Picade Configs [184k ZIP] Updated 02-JUL-2014

I’ve configured my build to use as much screen real estate as possible without compromising on aspect ratios. The buttons are set up such 1-6 on the top map to playing buttons (Y X L B A R), the front are for Start and Select, and the side buttons are Escape and Control. Holding the right side button while I hit another button performs various emulator commands:

  • Left side – exit the emulator and return to the menu
  • B (bottom row, first button) – lower volume
  • A (bottom row, 2nd button) – raise volume
  • R (bottom row, last button) – hits Ctrl+C to forcefully exit any game
  • Y (top row, first button) – load state
  • X (top row, 2nd button) – save state
  • Select – bring up emulator menu

Includes configs for all of the RetroArch emulators, and for mame4all-pi. Feel free to change the configs to support your own needs.