Email or username:

Password:

Forgot your password?
Steve Troughton-Smith

Finally tried out the iPhoneOS 1.0 qemu build, and it really is a treat. It really was so rudimentary devos50.github.io/blog/2022/ip

23 comments
Tyler McGee

@stroughtonsmith I remember when I got my iPod touch and it didn’t even have a way to add calendar items (screenshot 4).

That came in a later update and was a revelation! 🎉

Agee Springer

@stroughtonsmith that 1.1 build also showed Apple had not yet realized people might use a multitouch iPod for more things than a click wheel iPod. You couldn’t even add a calendar event on device. You still had to go do it on your Mac and sync via a cable.

Konrad Kołakowski

@stroughtonsmith I would love this emulation to evolve for the next iOS versions (probably with some emulated server components? 🤔)

Emulating it under iPhone at one point would be a nice touch as well 😎🤓

Григорий Клюшников

Konrad, running iOS on Android, lol. Should be reasonably fast too because Android allows apps to JIT.

Steve Troughton-Smith

OK it took me a while, but I worked out I have to manually patch SpringBoard to enable third-party app icons. I figured I’d see if Lights Off runs, based on the code @chockenberry released — but that's all iPhoneOS 2.0 code, for the SDK, and needs a ton of work to backport it to iPhoneOS 1.0 😔

Pierre

@stroughtonsmith @chockenberry where's that Cidya icon? 😜 more seriously, amazing work and threads. Thanks for sharing those explorations, nice trip down memory lane (esp reposting the old thread on Mac OS X 10.0 and theming 🤘)

Steve Troughton-Smith

Luckily data-hoarder-me had a copy of my iPhoneOS 1.0 toolchain, so I installed it into a Mac OS X v10.5 VM and fixed up the port 😄

It's alive! /cc @chockenberry

Steve Troughton-Smith

Video of the original Lights Off for iPhone running mostly as intended on iPhoneOS 1.1 in qemu

Steve Troughton-Smith

And with a fixed-up icon to complete the experience

Steve Troughton-Smith

And if for some reason you ever need to install iPhoneOS 1.0 in an emulator and use third-party apps from the home screen, my SpringBoard patch was to SBIconModel _addItemsToIconList:fromPath:withTags: where I bypass a [[[SBPlatformController sharedInstance] allowedDisplayIdentifiers] containsObject:] and change the beq from an 0A to a 00.

If there's an easier way of doing this, I couldn't find it after 16 years of link rot 😅

Steve Troughton-Smith

Re-learning a lot today; the iPhoneOS 1.0 SDK is *very* different from iPhoneOS 2.0 and everything after it. Simple things like UIColor, UIScreen don't exist. Even UITableView was 'just’ UITable. UILabel was UITextLabel. QuartzCore was 'LayerKit’. There is no UIApplicationDelegate either, you subclassed UIApplication instead.

Really shows the longevity of a public API contract; almost everything in iPhoneOS 2.0 is very familiar to modern UIKit development

Steve Troughton-Smith

@collin most things I emulate don't correspond to a shipping qemu, so aren't really UTM-able

Sam Steele 🏳️‍🌈 🎮 📸 👨‍💻

@stroughtonsmith I still have the iPhoneOS 1.x source for MobileScrobbler, though not really useful anymore since the Last.fm radio service no longer exists.

I suppose it can still scrobble your iTunes music to Last.fm with a new API key, though.

Here's the source zips for every release, and the final deb file for Cydia too: c99.org/projects/source/Mobile

The scrobbler runs as a daemon launched by LaunchServices, so you would have to put everything into the right folders yourself without the Cydia install scripts.

@stroughtonsmith I still have the iPhoneOS 1.x source for MobileScrobbler, though not really useful anymore since the Last.fm radio service no longer exists.

I suppose it can still scrobble your iTunes music to Last.fm with a new API key, though.

Here's the source zips for every release, and the final deb file for Cydia too: c99.org/projects/source/Mobile

Steve Troughton-Smith

@samhenrigold I was trying app reveal earlier to see if it affected third party icons, but it did not

sam henri gold

@stroughtonsmith I don’t think it even affects some first party icons, right? It had to be that specific set of internet-based apps?

Steve Troughton-Smith

@samhenrigold you can tag an app as revealable in its Info plist

Go Up