Finally tried out the iPhoneOS 1.0 qemu build, and it really is a treat. It really was so rudimentary https://devos50.github.io/blog/2022/ipod-touch-qemu-pt2/
Steve Troughton-Smith
Finally tried out the iPhoneOS 1.0 qemu build, and it really is a treat. It really was so rudimentary https://devos50.github.io/blog/2022/ipod-touch-qemu-pt2/ 23 comments
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 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 henri gold
@stroughtonsmith Check out stevenote mode: https://hachyderm.io/@samhenrigold/110245575176907537
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? |
@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! 🎉