Repository navigation
game: Pokémon Pokopia builds an IPA and plays on an iPhone 17 Pro - #2514
SpookOrSpooky wants to merge 1 commit into
Conversation
build_ipa.sh copies each profile's pso_manifest.tsv into the app with its shader tables, and stopped at `copy shader tables` for Pokopia, whose profile had none (Kirby Air Riders has none either). The profile now carries the header-only list other profiles keep until one is recorded (DM_PSO_RECORD); a start then logs `0 lines` instead of a red line for a missing list. The note records the first iPhone runs: an iPhone 17 Pro (iOS 27.2.1, Xcode 27.2, a free Personal Team with Increased Memory Limit), the app prepared with --prepare-xcode on ccd834e (shader chain d24f05cf9d78) and installed from Xcode. A 19-minute playtest at 60 fps had no crash, with seconds-long stalls from pipelines built on the submit thread. A Metal 4 session had none of those, but a 12-minute first-start prebuild, starved audio on a hot phone with no CPU time on performance cores, and a Bluetooth reset under memory pressure. A short session at 30 fps (DM_PRESENT_INTERVAL=display and DM_FPS_TARGET=30 in Documents/env.txt, Metal 4 off) held its rate at thermal state 0 with no audio underrun. On the Mac the cap keeps the game's speed (it steps by elapsed time) and cut the CPU energy from 2.4 W to 0.97 W. The note's Open list keeps whether the profile should offer 30 fps as a Frame rate setting. Checked: test_docs, test_game_profile, test_launcher_settings, test_settings, test_pso_offline, test_nsp_incremental, test_nsp_mac_app and test_profile_guess. Not run: regress.py (one profile file and a note) and a shader build (the profile's shader inputs are unchanged). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Hey folks. Above is the AI summary of the PR here, which bridges from the earlier ZORCT optimizations from the 10th of Nov. As mentioned, pso_manifest was missing (and req.) to build for iPhone -- which should also be useful for Kirby Air Riders given the engine similarity. Testing concluded that while 60fps is playable, on both Metal and non-Metal runs, audio frames significantly suffer in both situations, and bluetooth when Metal is active (measured on a 17 Pro). Thermal throttling is evident in both situations, with pipeline pre-load for Metal kicking off severe throttling prior to game launch. This is without any case present, on a bare iPhone. 30 fps was the trick. Frame counting to animation conclusions matched that 30fps was the saving grace for the thermal, sound, and CPU/GPU constraints on device. Lastly, cloud saving was confirmed to be without issue. Graceful handoff between Mac and iOS runs was tested. |
Pokémon Pokopia (
0400A3A01EE4C000) now builds an IPA, and its note records the first iPhone runs, including a 30 fps cap that plays without the 60 fps stalls and audio dropouts.Profile fix
build_ipa.shcopies each profile'spso_manifest.tsvinto the app with its shader tables. It stopped atcopy shader tablesfor Pokopia, whose profile had none; Kirby Air Riders (040077201BE50000) has none either. The profile now has the header-only list that other profiles keep until one is recorded (DM_PSO_RECORD). With it, a start logs0 linesinstead of a red line for a missing list.iPhone results, in the game note
All runs were on an iPhone 17 Pro (
iPhone18,1, iOS 27.2.1), with Xcode 27.2 and a free Personal Team with Increased Memory Limit. The app was prepared with--prepare-xcodeonccd834e0(shader chaind24f05cf9d78), with all 131,426 iOS shaders, and installed from Xcode.DM_PRESENT_INTERVAL=display,DM_FPS_TARGET=30inDocuments/env.txt), Metal 4 off, about 1.5 minOn the Mac, the same two switches keep the game's speed, because it steps by elapsed time: a timed stick hold covered at least as much ground at 30 fps as at 60. CPU energy fell from 2.4 W to 0.97 W. The note's Open list asks whether the profile should offer 30 fps as a Frame rate setting; the profile has no frame step, so that would be
present_interval displaywith a 30 fps target. A longer iPhone run at 30 fps would settle it.Checks
test_docs,test_game_profile,test_launcher_settings,test_settings,test_pso_offline,test_nsp_incremental,test_nsp_mac_appandtest_profile_guesspass.regress.py, since the change is one profile file and a note, and a shader build, since the profile's shader inputs are unchanged.🤖 Generated with Claude Code