System 6 Pocket - A Classic Macintosh "Simulator"

Fonts

There are something like 12+ fonts in the original classic Macintosh OS systems 1 through 7. So, as in the original System 6, Pocket is using Chicago 12 for the menus, Geneva 9 for icons and other text, and New York 12 for Note Pad. There's also a mysterious/hideous "outlined" font that the Puzzle uses its numbers from, which I just made from scratch. The fonts are all pixel-perfect recreations (and debatably legal to use, which means this definitely won't ever be up for sale), and big shout out to Susan Kare for her beautiful original fonts. Pocket has no "bold" variations of the fonts; those styles were algorithmically generated in the Macintosh OS itself. I'm likely not going to recreate those styles by hand, and mimicking the style generation in code is (probably) beyond me, so those styles Pocket will go without for now.

Also included is a famously fun font, Cairo 13, which has all the charming glyphs in it, including Moof the Dogcow. I'm not sure what the best way would be to give a user access to seeing all of these (for now, only Moof shows up in new Finder windows), maybe in the Scrapbook program eventually. Also, the Cairo font itself yet needs a full manual cleanup, it couldn't convert well unfortunately.

Controls

Cursor control is something I considered a lot. Ultimately for now, I've decided to adapt the controls to work without a cursor. The control scheme has gone through quite a few iterations (if I had a dollar for every time I wished the Playdate had just ONE more button on it...). I did want to include the cursor in some way though, so you'll see it show up when closing windows, moving windows, and in the Puzzle game.

I would still consider adding it, but it would require a lot of rework for hit-box detection. If I did, I may do something vaguely similar to how it seems @dustin is doing his cursor for Playmaker, in that the crank would dictate the direction of the cursor, and some other button would "drive" it that way. It would be an interesting way to control a "computer" to be sure!

I'd also love to hear feedback on if pressing A+B to open the menu bar is too awkward or not preferred for many. There are other ways I could approach this, but this was the best for now.

Sound

There's very little going on here in the original OS. I recreated the original startup chime from scratch (testing the limits of my music theory chord deconstruction skills...), because believe it or not I couldn't find that source file anywhere. The only other sound is the beep that happens when you win the Puzzle game, which was also recreated in Logic Pro.

Animations

Some of this was a little bit tricky to replicate, since a lot of the animations run at whatever internal frame rate of the Macintosh it was originally running on, and so they sometimes look "slow" in ways that are a little unpredictable. I focused on getting it visually identical, and then getting the animations themselves looking as close as possible to "feel" right. Some of it I didn't even bother to do, as it was diminishing returns for the scope of this project. For example, originally when you open a Finder window, the text inside of it "loads" haphazardly after the window opening animation finishes.

Finder/Desktop

I didn't recreate much about the system's ability to open and select files. It's not really my intention to create a file management application, nor do I see much of a use case for that on the Playdate. Some of the presentational internals are in place to do it though, and I did create the Trash and Disk icons from scratch.

Puzzle

This part of the build was trying on my patience. The irony of it of course is that "slide puzzle" style games are something I personally avoid like the plague. :face_with_spiral_eyes: In the end though, it was satisfying and interesting to build an algorithm that checks whether the slide puzzle is solvable or not and then regenerates if not. I didn't dive into any A* stuff to actually have the system solve the puzzle once its generated. It could be useful potentially to make varying "difficulty" levels of puzzle. I may port this into its own project and release it that way, in case there are any diehard slide puzzle fans out there on itch jonesing for that...

As for the controls, I couldn't decide which was more intuitive so I included both for now. Pressing B will cycle clockwise through all the adjacent tiles around the empty tile, or you can press the up/down/left/right d-pad button to select the corresponding tile around the empty space. Let me know which feels better (or some other better option).

Also, I only completed an actual generated puzzle once to test it, but it is plausible that my generation code isn't perfect, and it'd be hard to know without developing some A* code, so please let me know if you aren't able to solve it.

Note Pad

Adding this was primarily an excuse for me to learn how to use the SDK's built-in keyboard functions. It led me to the request linked below, which I think would make the Note Pad significantly more usable (but... still this is not really a practical way to keep notes...)! Be sure to press "OK" when exiting the Playdate keyboard if you want your text changes to save. There's no real reason that it's limited to 8 pages, other than that's what the original OS program had.

Differences / Challenges

One of the trickiest parts of this was that I don't have easy access to a computer with System 6 running on it, and there are (believe it or not!) very limited videos of this on YouTube.

Generally though, everything was done with as much pixel-perfect accuracy as possible, aside from the following:

  • Since there is no direct cursor control, "disabled" menu items can be highlighted in Pocket, creating a visual style that doesn't quite exist in the original OS. In theory, I suppose I could have the gridview just skip these items when selecting through the menus...
    Screen Shot 2022-07-30 at 19.37.14

  • In the original OS, the clock comes with some additional "alarm" functions and such. I didn't bother creating these, due to the massive rabbit hole that would have been. Plus, nothing could compete with @AdamsImmersive 's wonderful Playtime clocks anyway :slight_smile:

  • As mentioned in the Fonts section, there's no "bold" styles available

  • Originally, the Puzzle game doesn't have that visual "selection" stroke. This was added for ease of viewing and control, although it could probably be removed and the cursor alone would suffice

  • In the Puzzle game, it's supposed to be possible to move an entire row or column of three tiles at a time. I didn't include this, it made much more sense for only the adjacent tiles to be selectable when using a button-only interface

  • The aspect ratio of the Playdate obviously doesn't match that of any of the machines that originally ran System 6

  • Probably some bugs left that I didn't squash in there... it was my first time using a complex and extensive setup for input handlers, and it feels a little bit messy...

  • The floppy disk icon, in screenshots I've seen, sometimes it's colored in black in the top part, and sometimes it's open like I have it... it's not clear when or why the difference there. It might have something to do with the emulator that a lot of the screenshots I found are pulled from, or that some of them are from System 5 or 4 which have some subtle differences sometimes

Performance

Things run relatively well, it's all built in a way that keeps screen updates to a bare minimum. That said, Note Pad runs a bit slow for some reason that I haven't yet figured out (is accessing data store slow?), and is best to use with nothing else open. And, if you have more than a handful windows open total, the whole system starts to chug a bit. I'll chalk it up to adding to the charm of it for now, but if others think it's too detrimental, I can do some more focused performance testing to see how to fix some of it.

Future...

I'm not sure if more time will get put into this in its System 6 "simulation" form. It's been a ton of fun to work on, but I don't see a lot of reason to push it further than this. And to be clear, as someone who always finishes what's started, that's hard to say!

If others are VERY into this for some reason, I'd consider putting it up on GitHub for the community to collaborate on, although I'm under no impressions that the code is up to the quality it needs to be for that to be a good idea...

Similarly, if anyone wants to use the menu bar UX, let me know and I can share that code. It's not perfectly detached, but it is relatively reusable and maintainable/readable. I've been interested in creating a "UI Kit" for Playdate, so maybe some of this will go into the framework for that.

Most importantly, moving forward, I am pretty curious about playing around with what this idea could look like if it were used as a basis for a game concept. With some different fonts and a few small tweaks, I think it could look Legally Distinctâ„¢ from Mac OS. Some initial influences for game style that came to mind are below, although I think I'd explore something still pretty distinct from these:

Hypnospace Outlaw
Kingsway
Digital A Love Story
Emily Is Away


Thanks for reading ! Please leave any feedback if you'd like.

10 Likes