Skip to content

uncharted-android 0.3.1 (beta)

Choose a tag to compare

@revvv991 revvv991 released this 09 Nov 22:21
· 1 commit to main since this release

uncharted-android 0.3.1 (base: uncharted_pc 0.3.14) - beta: the three games are playable on the Retroid Pocket G2 and on Adreno 8xx phones; expect bugs, and please attach the log to a report (Saves and logs > Copy the log). No game files are included: you need your own decrypted dump of the collection (version 1.02 of the executables).

Why beta: since 0.3.0 the port does what it set out to do on both GPU families it was tested on, and the app covers setting up, playing and updating. What is left is bugs and speed, not missing parts. This is the first release that is not marked as a pre-release. Our numbers are not uncharted_pc's: this is uncharted-android 0.3.1 on top of uncharted_pc 0.3.14.

Fixed

  • Adreno 8xx phones (Snapdragon 8 Elite, 8 Elite Gen 5, 8s Gen 4): the device loss in Uncharted 3's Cartagena market. On 0.3.0 a Nothing Phone 3 (Adreno 825) lost the device there after three and a half minutes. The bundled driver now keeps the GPU's command buffers where the GPU can still read them: it reaches them through an alias it unbinds before the memory goes, and it reuses retired command buffers instead of freeing them (the idea of WinNative's Adreno 8xx patches, written anew). On the same phone: 24 minutes in the market and its rooftop chase without a fault.
  • Uncharted 3's characters no longer sink into the ground, float or twitch their legs (uncharted_pc 0.3.13, drakolordx7's fix): the game's ray-cast results are read back once the GPU is done. On by default for Uncharted 3, at no measured cost on the G2.
  • A crash in Uncharted 3's market chase with the default settings: a shader the port could not translate stopped the game; now that one draw is skipped. A memory read that faulted once no longer feeds zeros to the shader translator for the rest of the session.
  • Flickering surfaces with FSR 3.1 or TAA (Uncharted 1's boat details, Uncharted 3's London bar): three full-screen passes that rebuild positions from the scene's depth now follow the temporal jitter as the geometry does (uncharted_pc 0.3.12's list); the app had set only the first of them, the sun shadows.

Merged from upstream (uncharted_pc 0.3.12 to 0.3.14)

  • Uncharted 1: physics bodies behave as at 60 FPS at any frame rate.
  • Uncharted 2: Elena's truck in the convoy no longer sinks after bumps; Chapter Select gives each chapter its own weapons.
  • Fewer freezes and crashes: the engine's job runner skips a job whose data is not set yet (the 1.02 executables of all three games), invalid sampler settings the game writes mid-frame, effect shaders whose loop bounds come from memory (GPU hangs), two command-processor guards from shadPS4, an unsupported audio codec, the texture cache and the draw pipe's bookkeeping.
  • Continue and New Game go straight into the game: the "friends' stats are not available" notice is skipped (nothing goes online).

For developers

  • Mesa patches 0026 and 0027 (android/scripts/port-arm64/patches/): the Adreno 8xx command buffer alias and cache. TU_KGSL_IB_ALIAS=0 and TU_KGSL_IB_CACHE=0 turn its two parts off, TU_KGSL_IB_GUARD=0 drops the 64 KiB guard range after each buffer, TU_IB_LOW4G=1 puts the aliases below 4 GB (which stalls the Adreno 825).
  • BB_COPY64_EOP_READBACK=0 turns Uncharted 3's ray-cast read-back off.
  • Opt-in, measured without a frame rate gain on the G2: BB_SWAPCHAIN_SIZE=WxH (the swapchain at the render size, scaled by the compositor), BB_SKIN_BATCH_U3=1 (Uncharted 3's skinning dispatches batched: 0.5 ms of GPU a frame).
  • Diagnostics: the frame statistics name the draw pipe's drains by source; BB_TAX_A_NS and BB_TAX_B_NS add a delay per draw on the command thread or per packet on the recording thread, to measure a stage's share of the frame.
  • android/scripts/np3/dumps.py and atrace_timeline.py: where a stalled game waits, on a phone without root and without stopping the game (BB_DUMP_REQUEST thread dumps and an atrace timeline).

Known issues

  • Adreno 8xx: tested on one phone (an Adreno 825); the 830 and 840 may behave differently. Reports with the log are welcome.
  • Uncharted 3 crashes right after it is chosen in the collection's menu on an Odin 3 (Adreno 830, #33): the game's HUD setup reads an entry that is not there. The Retroid Pocket G2 and the Nothing Phone 3 do not show it; under investigation.
  • Uncharted 3 can still crash once in a while in long sessions (the game's job code reads memory that was reused; under investigation). Save often.
  • Without the frame rate limit the GPU is the limit in Uncharted 3's heaviest places (the market chase at about 30 FPS on the Retroid Pocket G2). A phone without a fan heats up fast in Uncharted 3: keep the 60 limit there and let it cool between long sessions.
  • Uncharted 2 still moves a little unevenly at the frame rate limit: its view does not follow the game's frame clock.
  • The sizes below 1080p need version 1.02 of the executables (#3).

0.2.7 to 0.3.0 offer this release in the app (Update); or install uncharted-android-0.3.1.apk over the previous version (same signing key; settings and saves stay). Building from source: see the README.

Checksums

  • uncharted-android-0.3.1.apk SHA-256: d0a6f5ef17ac654461b186c33b7bda587cb1993a2f6dc6c6bfef78e6d8a74860
  • Signing certificate SHA-256: e9f4c3735869e415fbf21647eafb7991b05d6e926f9daf0eea0f88fc3e7bc60b