Repository navigation
CyPort v1.2
Run your own copy of Cyberpunk 2077 for Mac natively on iPhone and iPad – no emulation, no streaming.
Not affiliated with CD PROJEKT RED.
This release is about heat and frame times. On an iPhone the limit isn't raw speed, it's heat: the phone used to throttle within a minute or two of open-world play, and then the frame rate jumped around.
New
❄️ Cool mode (always on)
- The engine's 5 job worker threads ask for the highest thread priority, which kept them all on the A18 Pro's 2 performance cores next to the game and render threads – that is what made the phone hot so fast.
- CyPort now runs 3 of them on the 4 efficiency cores, which do the same work for far less power. 2 stay on the performance cores, so the game thread doesn't wait on slow cores every frame (all 5 on the efficiency cores felt stuttery).
- Tunable in
macshim.plist:CoolFastWorkers(default 2),CoolMode = NOturns it off.
🏙️ Steadier frame rate in the open world
- The engine streams the city in on the game thread, by default up to 12 ms and 300 objects per frame – desktop values. At 30 FPS a frame only has 33 ms, so on a phone that showed up as frame drops while driving.
- CyPort now writes
engine/config/platform/mac/user.iniat every start with 6 ms / 200 objects per frame: the work is spread over more frames. Things may appear a moment later. StreamingTweaks = NOrestores the engine defaults;StreamingMsPerFrame/StreamingNodesPerFrameset your own values. If you edituser.iniyourself, remove its first line and CyPort leaves it alone.
🧹 Fewer hitches from CyPort itself
- The worker-thread profiler from v1.1 paused all job workers for 2 s every minute – a regular hitch. Now off by default (
WorkerSampler = YESto turn on). - The log no longer forces a disk flush after every line (that blocked game threads). Crash reports are still written in full.
- Periodic statistics lines are only logged with
Diagnostics = YES. - With the performance overlay set to Off, its window is now removed completely, so iOS no longer has to composite it over the game.
🛠️ Other
- The start screen marks the resolutions that make the phone hot quickly.
- The log now shows how busy the GPU is (1 s sample every 30 s), to tell GPU heat from CPU heat.
GPUSampler = NOturns it off. - Optional frame pacing for testing:
FrameRate = 30 / 40 / 60inmacshim.plist. By default the frame rate is the game's own setting (Settings → Graphics → VSync / Maximum FPS). CPUCountnow also reports a matching number of performance cores.
Performance tips
- Resolution 1434 × 660 on the start screen – at 1912 × 880 an iPhone 16 Pro Max still throttles within about 1.5 minutes of driving.
- Maximum FPS 30 in the game's graphics settings: a steady 30 looks smoother than a rate that jumps between 25 and 50, and the phone stays cool much longer.
- Leave frame generation off.
- A clip-on phone cooler helps more than any setting.
Upgrading
Rebuild the IPA with this version (./build.sh, see the README), then reinstall. Your game data, saves and settings stay in place.
Known issues
- The phone still throttles in long open-world sessions; expect ~20–30 FPS while driving once it's hot.
- The streaming change and the 2-fast/3-efficient worker split are new and have only had short tests – please report pop-in or stutter.
- The free Apple ID route (SideStore + GetMoreRam, compact memory layout) is still untested on a device.