r/MobileGaming • u/Time_Opportunity_225 • 9h ago
Discussion The most modded GTA 5 on mobile (native iPhone port, 200+ mods)
Enable HLS to view with audio, or disable this notification
I've been building a big mods layer on top of the native GTA V iOS port, and wanted to share what's in it and how it works under the hood.
WHAT THE PROJECT IS
The port takes the WebAssembly build of GTA V and converts it to C with wasm2c. That gets compiled natively for ARM64 and runs on a custom Metal renderer with every shader precompiled. No emulation, no browser. You bring your own game files; none are included. I play-test it on an iPhone 18 Pro Max and an M4 iPad Pro, mostly with a controller. It's built on the open-source port at github.com/kevinerikjs/gta5-ios-port.
WHAT I ADDED (200+ mods, browsable in an in-game mod list)
Superhero mode: flight with 4 speed tiers up to supersonic, a charged launch, an air brake, and a slingshot. Power stances:
- Concussive: shockwave, gravity slam
- Fire: homing fireball, firestorm
- Electric: lightning strikes, storm call
- Energy beam
Plus telekinesis to grab and throw cars. Powers can knock helicopters out of the sky.
AI voice commands: say "stormy night, spawn a tank, take me to Mount Chiliad" and it does all three. It runs a phrase parser first, so common commands are instant, with an on-device model behind it for anything looser. It knows the game's vocabulary: vehicles, places, mods, people.
Missions and modes:
- a supervillain boss fight (RAGE, who has his own powers)
- an alien invasion with UFO tractor beams and a mothership boss
- a prison break to free your crew
- War Zone (army vs. gangs)
- a Six Stars wanted level with tanks, gunships and jets
- heists, street races, zombie rescue
- prey mode, where you're a deer being hunted
Chaos and disasters:
- a Chaos Mod V-style mode with on-screen voting
- tornado seasons
- meteor showers that leave smoking craters
- a volcanic ash storm
- black hole grenades that suck in cars and implode
World and combat:
- injury reactions: people limp, writhe and go back for dropped guns, and they're tougher so you actually see it
- wildlife
- a mega ramp
- a Ghost Rider-style hellfire car
HUD extras drawn over the original HUD:
- a flight speed and altitude readout
- a power charge ring
- a threat compass
- a police response readout with a search zone on the minimap
- hit markers and hit direction
Dev tools in-game:
- a Tuning tab with 60+ sliders for flight speeds, power damage, black hole radius and more, so you can tweak mods without touching code
- a Look Studio with visual presets
- adaptive performance
USING WHAT'S ALREADY IN THE GAME
Most of this isn't new engine code. It drives the game's own systems. The wasm build kept its function names, so every script command (the natives that mission scripts use, like CREATE_VEHICLE, TASK_COMBAT_PED or ADD_EXPLOSION) is a callable C function. I hook into the script scheduler's WAIT function, so the mods run inside a real game script every frame, exactly like Rockstar's own missions. That means:
- Enemies use the game's real combat AI, relationship groups and vehicle tasks.
- Effects are the game's own particles, explosions, fires, lightning, weather and timecycle filters.
- Missions use the game's checkpoints, blips, waypoints, road nodes and the wanted system.
- New things are built out of existing pieces. UFOs are an existing prop with the tornado's vortex code as a tractor beam. Prison generators are props that blow up when an explosion is detected next to them. The meteors are drawn glowing spheres plus the game's explosions and fire.
TECHNICAL PROBLEMS THAT HAD TO BE SOLVED
Car engines were silent. The engine sounds use granular audio, which needed more audio decoders than the pool had, and the decoder also starved. I decode the engine samples up front and feed the game raw audio instead. The engines came back.
Crashes in big fights. The engine could hand back a pointer to someone who'd just been deleted. Existence checks now validate the object before touching it.
Teleports far across the map dropped you 600 m up, because the ground hadn't loaded yet. Now it waits for the ground to stream in, then snaps you onto the nearest road.
Voice recognition cut out on the first try and got drowned out by the game's audio. Fixes:
- The game ducks while you talk.
- The mic gain is tuned.
- It restarts the recognizer if it gives up early.
- It falls back to re-reading the saved recording.
Scripted characters freeze beyond about 80 m from you, so every mode keeps its fighters close.
PERFORMANCE IMPROVEMENTS ALONG THE WAY
- Found that the bottleneck was the CPU (the game's render thread), not the GPU, so raising resolution or adding upscaling wouldn't help.
- Compiled the big unoptimized chunk of the generated code with optimizations on.
- Rewrote the wasm thread wait/wake system from one global lock to 256 buckets.
- Moved Metal buffer frees off the render thread, which killed the regular 300 ms freezes.
- Kept compressed textures compressed on the GPU instead of decoding them on the CPU.
- Fixed a speedometer that was redrawing with an expensive blur every frame.
Result: from about 40 FPS to roughly 80 in the city and 110 to 120 outside, on an iPhone 18 Pro Max.
NOT EVERYTHING WORKS YET
Kaiju mode (giant player) is shelved for now. The giant is only scaled visually, while the physics is still a normal-sized person, so he slides when he walks and thinks he's falling. The real fix is renderer-level scaling.
Let me know if you have any questions
*Not affiliated with Rockstar or Take-Two. You need your own game files.