Spider-Man: Web of Shadows Now Runs on Android as PS3 Emulator Gets 3x Performance Boost

Stephen Dove

Spider-Man Web of Shadows with Android logo bottom left

Key Highlights:

  • ARMSX3 0.5 gets the PS3 version of Spider-Man: Web of Shadows past its previous post-cutscene freeze and into gameplay on Android.
  • Developer testing on a Snapdragon 8 Gen 2 improved frame time from around 120ms to 37ms, equivalent to roughly 8 FPS rising to 27 FPS.
  • A wider Adreno Vulkan optimisation cut one recurring GPU completion check from 14.6ms to 0.03ms, meaning other PS3 games could also benefit.

Spider-Man: Web of Shadows has become the latest PlayStation 3 game to make a major leap on Android, with experimental emulator ARMSX3 now getting the open-world Spider-Man game into working gameplay.

ARMSX3 0.5 was released on August 11. Developer jpolo1224 says Web of Shadows previously took around 120 milliseconds to render each frame on a Snapdragon 8 Gen 2 device. The new build reduces that to approximately 37ms per frame.

Those timings equate to roughly 8 FPS before the optimisation and 27 FPS afterwards. That is a little over a 3.2x increase in equivalent frame rate on the developer’s test hardware.

Web of Shadows testBefore ARMSX3 0.5After
Frame time~120ms~37ms
Equivalent frame rate~8 FPS~27 FPS
Post-intro gameplayFrozeWorking

The improvement is not simply a Web of Shadows compatibility hack.

ARMSX3 was unnecessarily draining its presentation queue whenever the emulator flushed a Vulkan command buffer. On Adreno GPUs, the Vulkan call used to check whether a frame had completed was blocking execution instead of returning immediately. Desktop graphics drivers do not behave the same way.

That single operation consumed 14.6ms of every frame during testing. ARMSX3 0.5 reduces its cost to approximately 0.03ms. The developer says games that flush command buffers frequently could therefore see improvements of their own.

I think this is the real breakthrough in 0.5. Web of Shadows provides the striking demonstration, but removing a recurring 14.6ms stall from an Adreno rendering path has implications beyond one Spider-Man game.

The freeze that previously stopped Web of Shadows after its first cutscene had a separate cause.

An occlusion query could remain open when ARMSX3 ended a render pass. The Adreno driver would never complete that query, leaving the emulator waiting indefinitely for a result that could not arrive. ARMSX3 now closes queries at all 21 points where a render pass can end.

Queries that still fail to respond are also abandoned after several seconds rather than being allowed to freeze the game.

Web-slinging required another fix.

Spider-Man: Web of Shadows reads the analogue pressure value produced by the DualShock 3’s R2 button. ARMSX3 had been clearing that pressure data when a game did not explicitly enable pressure-sensitive input. As a result, the game recognised no R2 pressure and its web-sling prompt would not respond.

Version 0.5 now preserves that input correctly. The developer notes that other PS3 games which read pressure values without explicitly requesting them could benefit from the same correction.

Spider-Man Web of Shadows fight in New York City
Spider-Man: Web of Shadows originally launched on PS3 in 2008, with ARMSX3 0.5 now getting that version into working gameplay on Android (Image Credit Activision)

The result is important because this is the PS3 version of Spider-Man: Web of Shadows running through PS3 emulation on an ARM64 Android device. It is not a native Android port.

ARMSX3 itself is an Android port built from current RPCS3 code, including RPCS3’s ARM64 work. The project currently supports ARM64 Android devices and requires users to provide PlayStation 3 firmware separately.

Its progress has been unusually fast.

ARMSX3 0.1 only appeared publicly on August 6. At launch, the developer had tested Skate 3 at around 20 to 30 FPS on the same Snapdragon 8 Gen 2 hardware and warned that the emulator was not yet particularly performant.

Android Authority subsequently tested the early emulator independently. Catherine reached around 22 FPS and 3D Dot Game Heroes around 15 FPS on its hardware, while Skate 3 did not reach gameplay during that particular test. The outlet described Android PS3 emulation as experimental and warned users to expect demanding thermals.

Only four days after ARMSX3 0.1, version 0.4 delivered another substantial performance improvement.

Sonic the Hedgehog (2006) went from roughly 30 to 40 FPS to predominantly 60 FPS gameplay on the developer’s Snapdragon 8 Gen 2. Heavy scenes improved from 42ms per frame to around 24ms.

That optimisation allowed emulated CPU and GPU workloads to overlap. ARMSX3 had previously waited for the GPU to finish before the CPU began preparing the next frame. Version 0.4 lets both workloads proceed concurrently where possible.

Not every game benefited. Batman: Arkham City remained limited by other CPU and memory-readback bottlenecks during the developer’s testing.

Version 0.5 pushes compatibility further again.

Sonic Unleashed and the God of War III demo now boot after ARMSX3 fixed an ARM64 interpreter fallback problem. Previously, an SPU block that could not be compiled was handed to an interpreter path that performed no actual execution. The corrected path now interprets only the failed block before returning execution to compiled code.

The update also stops ARMSX3 from pinning six emulated SPU threads to only four CPU cores on eight-core big.LITTLE devices. Android is now allowed to handle thread placement itself instead of relying on a fixed core map.

Memory handling has received another safeguard. Running out of video memory previously killed the emulator’s RSX rendering thread while leaving audio playing, which looked like a game freeze. ARMSX3 now attempts to free safe resources and reports the allocation failure if recovery is impossible.

That issue was discovered while testing the God of War III demo.

ARMSX3 remains an early experimental emulator, and the developer’s Web of Shadows numbers come from a specific Snapdragon 8 Gen 2 device. Players should not assume that every Android phone will reach the same performance.

The wider trajectory is nevertheless notable. In five days, ARMSX3 has moved from Skate 3 running around 20 to 30 FPS to Sonic 06 approaching 60 FPS and Spider-Man: Web of Shadows reaching roughly 27 FPS after previously freezing shortly after its opening cutscene.

For Web of Shadows specifically, version 0.5 solves three separate problems at once: a major Adreno rendering stall, the post-intro freeze and the broken R2 pressure input needed for web-slinging.

The broader Vulkan optimisation may prove even more important if testing shows similar gains across other PS3 games.

Tags: , ,

Leave a Reply

Discover more from Games Latest News

Subscribe now to keep reading and get access to the full archive.

Continue reading