IPARR

Apps / Altmaker by RipeStore

Skate 3

andrewnakas, from Altmaker by RipeStore

Build the Skate 3 recompilation for iOS from your own disc image. Or ipa Ships no game code

Version
2.7.1
Released
Sep 24, 2026
Size
32.0 MB
Needs iOS
16.0 or later
Category
Other
Bundle ID
com.nakas.skate3

What's new in 2.7.1

Skate 3 Recompiled v2.7.1 — iOS:

iOS skipped a release. Everything Android got in v0.2.0 is here, plus two iOS-specific defaults. 24 engine commits and 17 SDK commits since v2.6.3.

Put any button anywhere:

Full controller remapping, on the Controls page under Button Mapping. Sixteen inputs — the four face buttons, both bumpers, both triggers, both stick clicks, Back, Start and the four D-pad directions — can each be moved to any of the others. Your mapping is saved and survives an update.

The sticks themselves are not remapped; Swap Sticks and Invert Camera Y already cover that.

Three bugs that were costing you frames:

Touching the frame-rate row uncapped the game. One setting's name was a prefix of another's (._fps_cap inside ._fps_cap_auto), so changing the Framerate Cap row erased the shipped cap entirely, on every launch after you touched that row. The game then ran the guest loop uncapped. On Android that also meant rendering roughly twice the frames the panel could show and dumping the rest as heat, which is what "runs at 60, drops after a few minutes" was there; iOS presents through FIFO, so the cost here is wasted work rather than heat.

"The frame rate is fine but it feels like slow motion." Skate 3 advances exactly one refresh period of simulation per rendered frame, however long that frame took, so a 33 ms frame runs the game at half speed. The ceiling that lets a frame advance more than one period (skate3_frame_advance_cap) had been compiled for Switch only — iOS and Android, the two platforms whose frames overrun the period most, never got it. It is compiled in on iOS now.

Being straight about this one: the clamp is in and reachable, but raising it was measured as changing nothing on hardware, so treat it as a lever that now exists rather than a fix you are guaranteed to feel.

A profiler was running in every build. A per-packet GPU timer took two clock reads and two atomic increments on every command packet — around 1.7 million clock reads a second on the busiest thread — whether or not anyone was profiling. It is off unless you ask for it.

First launch could come up blank:

Roughly one clean install in ten reached the setup screen with an empty options list and no way forward. Parts of a screen drawn once while their shaders were still compiling were skipped and never came back — and the difficulty prompt is drawn exactly once. Shader compilation now stays synchronous through the cold-boot frontend, so nothing can draw before it is ready.

Eleven new rows, most of them aimed at buying frames back on a phone:

• 3D Scene Resolution — Full / 75% / 67% / 50% / 40%, separate from UI sharpness.
• Draw Distance — now goes down to Quarter and Eighth.
• NPC Update Rate and World Update Rate.
• Pedestrians & Traffic, Movable Props, Other Skaters — stop the world spawning crowds you are not looking at (all three need a restart).
• Vegetation, Hair Detail, Water Effects, Draw Batching.
• Framerate Cap — 40, 45 and 50 added (40 divides 120 Hz, 45 divides 90 Hz).
• FPS Percentiles — the 1% low and p95/p99 next to the average (darchap's, see Credit).

Known limitation on the three population cuts: they remove the bodies, not the gameplay objects behind them, so you may still hear pedestrians, traffic and other skaters you cannot see. Being worked on. The average is exactly the statistic that hides a stutter: a steady 60 and a 60 that drops four frames a second read the same.

Two changed defaults on iOS:

• Draw distance now ships at Half. The static world is roughly 750 of the 765 things drawn in a frame, so it is the only content lever with real weight behind it. The trade is real: props, street furniture and foliage pop in closer than they did in 2.6.3. Settings > Video > Draw Distance > Original puts it back.This applies to new installs only. If you are updating, your existing draw distance is kept exactly as it is — the game records your video settings the first time it runs, and a new default never overwrites settings that are already on your device. To get the new one, set the row to Half yourself.
• FPS Percentiles ships on, so the 1% low is there as soon as you turn the FPS counter on. The counter itself is still off by default.

Under the hood:

• The render pass stays open when the target has not changed.
• The tonemap and HUD passes can be merged into one (off by default).
• The guest is parked while the app is in the background, instead of running on against a surface that is gone.
• The texture budget is enforced between rescans.
• Shader compilation stays synchronous through the cold-boot frontend, so the first-run setup screen cannot draw before its shaders exist.

Installing:

Bring your own copy of the game — no game content ships in this IPA. See the README for the ISO and title-update steps.

Credit:

This is a packaging of other people's work as much as my own.

• Alex McHugh — skate3recomp. The Skate 3 recompilation itself. None of this exists without it.
• portingpete — skate3-recomp. Early bring-up on ReXGlue.

• Buku313 — Skate3-Mobile. A parallel ARM64 port; the 16 KB page-alignment fix came from there.
• ReXGlue SDK and Xenia (Ben Vanik and contributors) underneath it all.

Licences: this repo's scripts are MIT; the code in the binary is under its own authors' terms. See THIRD_PARTY_NOTICES.md.

About

skate3-ios-setup:

Build the Skate 3 recompilation for iOS from your own disc image, on your own Mac, signed with your own Apple ID, installed on your own iPhone.

Runs at a locked 60fps on an iPhone 13 mini (A15): median frame 16.7ms against a 16.67ms budget, 95th percentile 16.8-17.8ms. Anything newer has more headroom than that.

Step 3 is the whole thing: it checks your tools, extracts your disc image, recompiles it, builds the app, signs it with your Apple ID, and installs it on your phone.

--recurse-submodules matters - the runtime lives in a submodule and the build will not configure without it. If you already cloned without it, run git submodule update --init --recursive inside skate3recomp-dev.

Share or follow

Add Altmaker by RipeStore to AltStore SideStore Feather KSign LiveContainer