Thread with 17 posts

jump to expanded post

Let me tell you a little story about technology, games, me, and… ridiculous passion projects.

Early in 2008, Apple were about to release the long-awaited iPhone SDK. For the first time, 3rd-party developers would be able to write native apps for the iPhone.

Open thread at this post

Sometime in late 2008, I saw that game (…and other Apple marketing…), and became convinced that iPhone OS apps were the future of gaming. The difference from the DS was just… night and day. I wanted to play games like that, with smooth high-res graphics and tilt controls!

Open thread at this post

I was 12 or 13 when all this was happening. In early 2009 I was was lucky enough to be able to buy an iPod touch (2nd generation), and of course, Super Monkey Ball was one of the first things I downloaded. It was fantastic! The music on the first levels stuck with me especially.

Open thread at this post

Eventually, of course, the iPhone would prove that it was not the future of gaming. The marketplace evolved into a swamp of cynical cash-grabs…

But I remembered those gems. Gems like Super Monkey Ball! Many years later, I got a new iPhone and could re-download it.

Open thread at this post

But then in 2017, Apple released iOS 11: the first iOS version not to support 32-bit apps.

All those ancient games became unplayable on modern hardware. Nobody could buy them any more, either. Locked away with DRM, they might die with the devices that could still run them.

Open thread at this post

Weird mobile game or not, it was what “Super Monkey Ball” meant to me. Anyway, I wanted to play it again.

But of course, I couldn’t, not without an ancient device, which I didn’t have.

And I thought, oh no, I love this game, but nobody coming after me will have the chance to.

Open thread at this post

…So uh, people familiar with this kind of game preservation problem may be familiar with emulation. But, to my knowledge, there was no way to emulate old iOS games.

…I wondered, well, how hard could it be?

…I opened Ghidra and imported the Super Monkey Ball binary………

Open thread at this post

…and it looked… doable… if at some point in the future I would have a lot of free time, and energy, and Determination.

oh, and my friend happened to have written a dynamic recompiler for ARM binaries which had a super simple API…

…but surely I wouldn’t do this, right.

Open thread at this post

well. i’ve recently had a lot more free time than usual, and…

… I should have taken more breaks and paced myself, but …

touchhle.org

yeah. enjoy!

also, a huge thanks to my friends cassie, erin, puck and mary for help at various points.

https://youtube.com/watch?v=Blz7qJrZ-s8 (video of gameplay — sorry, my instance doesn’t support direct video uploads yet ^^;)

Open thread at this post