Thread with 20 posts
jump to expanded postLet 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.
Prior to the launch event, Apple gave a few third-party devs early access to the SDK, to see what they could make in a few weeks. One of those devs was SEGA (or possibly a subcontractor of SEGA), who decided to port Super Monkey Ball from the Nintendo DS:
Amazing demo, right? Despite being based originally on code from the DS game, it was on a completely different planet on every technical level.
A few weeks later, they’d made a finished game: https://youtube.com/watch?v=6hgnrOW5SkA
It was a launch title for the iPhone App Store!
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!
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.
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.
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.
Anyway, fast forward to sometime last year, when I happened to see a trailer for a new Super Monkey Ball game. It had a timeline of all the games in it! Except… oh, the only Super Monkey Ball game I’d played… wasn’t there. That made me upset.
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.
…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………
…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.
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 ^^;)
ugh sorry, https://touchhle.org
I’m streaming the game on twitch right now btw! https://twitch.tv/hikari_no_yume
so uhh one of the original devs of the demo came on my stream and I just learned a ton about the history of that project??? holy shit. thank you…
anyway I’m still streaming, come watch!
still streaming! https://twitch.tv/hikari_no_yume
I collected, cleaned up and corrected the main posts in this thread, and compiled them into a blog post:
Please link to that instead of this thread from this point onwards, especially as I might lock this account for a while (I already locked my Twitter… I just need a break.)
@hikari This is incredible!
I found your project while looking for a way to play the game “Song Summoner” that was a big part of my childhood. I looked into iPod Classic emulation, then loaded the iOS 3 version up in Ghidra with the thought of maybe reimplementing the game. Then I stumbled onto touchHLE and was amazed by the technology and how quickly you got it to work! Even just seeing the first screen of Song Summoners pop up before the emulator crashed got me excited :)
Great work!
@ChH1999 thank you!!
wow, an entire RPG on an iPod Classic… that must have been a fun time.
given it’s ported from that and it’s for iOS 3, getting it running in touchHLE is probably a realistic prospect!
@hikari yeah, that was my first ever RPG and I keep looking for ways to make it run again every 6 months or so 😅
That’s really exciting! I’m truly amazed by what you’ve accomplished. Once I finish my thesis in a few months I’ll hopefully have some time to look into the code and make some contributions myself 😊