Jeroen Domburg Miniaturizes A Mac

His name may not ring a bell, but his handle will — Sprite_tm, a regular to these pages and to Hackaday events around the world. Hailing from The Netherlands by way of Shanghai, Jeroen Domburg dropped by the Hackaday Superconference 2017 to give a talk on a pet project of his: turning a Macintosh into, well, a pet.

You could say this is Jeroen’s second minification of vintage hardware. At last year’s Hackaday Superconference, he brought out the tiniest Game Boy ever made. This incredible hardware and software hack stuffs a complete Game Boy into something you can lose in your pocket. How do you top a miniature version of the most iconic video game system ever made? By creating a miniature version of the most iconic computer ever made, of course.

The tiny object in front of Jeroen in the title image is, in fact, a working Macintosh Plus that he built. Recreating mid-80’s technology using 2017 parts seems like it would be easy, and while it’s obviously easier than breaking the laws of physics to go the other direction, Jeroen faced some serious challenges along the way, which he goes into some detail about in his talk.

Jeroen, aka Sprite_tm, shows off his “disembiggened” Mac Plus at the Hackaday Superconference 2017.

Chief among these was recreating the look and feel of the revolutionary Mac GUI, which required a diminutive display. Shrinking the original 9″ CRT display with its 512 x 342-pixel resolution down to (literally) thumbnail size was no mean feat, and Jeroen details all the design choices that led him to a 320 x 320-pixel smartwatch display. To put the MIPI interface display to work in his build, Jeroen capitalized on some reverse engineering efforts by Mike Harrison, designer of the Hackaday Superconference 2017 badge.

Given Jeroen’s current employment at Espressif, it’s no wonder that he chose the ESP32 as the chip to run his mini-Mac, although as he mentions, the SoC only barely has enough horsepower to do it. With the Mac emulation running on one core and the display scaling running on the other, and with barely enough GPIO to interface the display and the tiny mouse he also built, this mini-Mac really pushes the envelope. To be honest, it would have been great to hear more about the software side of this build, which Jeroen didn’t go into great detail about. To be fair, though, this was a huge project and he only had 30 minutes to talk, and after all, the Superconference is all about the hardware.

[wpvideo Q793DVUE]

We have to give Jeroen props for having the guts to do a live demo on his tiny Mac. With a webcam to watch the proceedings, the Mac booted into the familiar monochrome Finder screen. The display was surprisingly readable and all the classic Mac UI elements, like window opening animations, are there to behold. The look and feel are remarkably Mac-ish, and the reaction from the crowd when Jeroen opened the iconic MacPaint application for a couple of token scribbles, not to mention the gasps at the squadron of flying toasters, was precious.

That Jeroen was able to evoke a palpable nostalgia from the audience was a testament to how well he nailed the look and feel of the original. That he was able to execute all this on a seemingly impossible scale was a real treat to watch, and we can’t wait to see what Sprite_tm brings to Superconference 2018. If there’s a unifying theme to his hacks, we’d have to say it’s “hacking for the joy of it”, so whatever he brings, it’ll be fun.

20 thoughts on “Jeroen Domburg Miniaturizes A Mac

  1. This reminds me of something I ponder from time to time when I should be working. How does the size of an intelligent species effect it’s technological development? Would smaller or larger people naturally produce smaller or larger parts? For example if William Shockley and Gerald Pearson had belonged to a species of 1 foot tall aliens would their first transistor have been somewhere around 1/5 to /6th the size? What if the dinosaurs never went extinct and developed intelligence instead of us. Would there have been 10 foot tall transistors?

    IF the universe is full of intelligent life is there a maximum size above which personal vehicles do not become popular because of the fuel required to move them? Is there a minimum size below which they do not develop the personal computer and consequently the internet because the smallest computer they can build fills what to them is the equivalent of a large server room to us?

    Are we lucky to be in the sweet-spot where we get to develop a technological society like our own? Are we actually unlucky, hindered by our size, too large or too small to have developed some better technology more quickly that we have?

      1. Yeah but didn’t they fail to document it or fail to publish or something like that thus making Shockly and Pierce’s transistor the granddaddy of all our transistors today and the Brattain/Bardeen one a dead end?

        Perhaps there was some other microscopic life or pre-life that predated that which evolved into us but it was crowded out by our ancestors. If so then it isn’t of much consequence today.

  2. The video has some interesting details. “One core on the ESP32 is juuust enough to emulate the 68000 CPU at 7.2MHz… the other core handles the display scaling.” Also appreciated the MIPI interface explanation at the beginning. Such an amazing hack!

      1. Hi Jeroen I was thinking of vintage Mac emulation on ESP32 (and even more after WROVER was announced) since it seemed to have enough horsepower to do it , so it is great to see that was just enough. As usual, nice job, congrats !

        On the video we can see the Mac’s startup memory test, I suppose it is kind of slow because of the PSRAM access time via QSPI ? And did you looked a lot at Mini Vmac source code while doing it ?

    1. Mouse freeze bug is most likely because I brought the wrong USB-cable. While developing, I had a shorter and thicker one and I had no issues at all. At the Con, I brought a longer and thinner one, and I think that lead to brownouts… the mouse sensor probably is one of the components that is most sensitive to that, and it needs some initialization to work after a reset, so if it resets during a session, it won’t come back until the Mac is rebooted.

      ‘Random pixels’ – my guess is that there’s a race condition between the thread that reads the screen memory and re-scales and displays it and the main CPU thread. (They’re two different threads because this way, one can run on the first core of the ESP32 while the other one simultaneously runs on the second core.) This can lead the first thread to sometimes not pick up on changes made by the CPU. You can see it happen every now and then during operation as well, but it’s most pronounced at the startup screen.

      1. First of all, I’m amazed by this miniature Mac and the miniature Game Boy.

        The one negative point I do have to bring up, however, is the displays. I’m wondering if there is displays available with better fitting resolutions? Not getting the full resolution of the original hardware is both a disappointing and creates more work for you and the emulating system.

Leave a Reply to OstracusCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.