Repository navigation
Releases: XHYN-PH/pt4droid
Release list
pt4droid v0.2.1-test.15
What changed
- Optional phone vibration follows the game’s controller rumble, including the ending puzzle cue. Enable game rumble and Settings → Controls → Phone vibration.
- The supplied teaser plays before the launcher, with Skip and Replay teaser controls. GitHub (XHYN) is in the bottom-right footer. Existing launcher shortcuts are preserved.
- Free camera, photo mode, third-person view, Shutter and height controls are beside touch Settings. Hide/Camera folds the toolbar; Panel toggles the photo panel.
- Configurable on-screen button timeout; layout editing is under Controls. Graphics driver management appears only in the launcher.
- Mali safe-lighting safeguards, bounded texture preparation retries, collision retirement fixes, earlier ending preparation, reusable particle storage and archive bounds validation.
- Bounded diagnostic exports and clearer source/display information. Your selected FPS limit is preserved when changing unrelated options.
Install
Download pt4droid-v0.2.1-test.15-arm64.apk below. Android 10+ ARM64 and a compatible Vulkan 1.3 phone are required. Game files are not included. The package remains com.ptport.app.test, version code 57, signed with the existing test key. Install over Test 14 without uninstalling to retain app data.
Validation and remaining checks
Built from commit 1599655. Native and Java/DEX builds, zero-error Android lint, shader validation, settings/graphics/touch/editor regression tests, texture queue, collision and archive tests passed. See the attached verification report and SHA256SUMS.
This is a prerelease, not stable. Mali darkness/black-square comparisons, ending puzzle phone vibration timing, camera/teaser behavior and a full phone playthrough still need device testing. No phone benchmark or FPS-gain claims are made. Mali/Xclipse custom-driver support remains experimental; no bundled driver was upgraded. The 27 ending texture failures need the actual game dump to diagnose.
The launcher’s FSR page uses the existing game fields. The current FSR 3 backend requires Windows and is unavailable on Android; SGSR1 remains available. No FSR 1 implementation was added. Save/update continuity and broad lifecycle/recovery work remain excluded as requested.
pt4droid 0.2.1-test.14
Test 14 adds simpler settings, third-person view and loading feedback, with further performance improvements for Android. This is still a test release.
What’s changed
- Settings are grouped into clearer pages, including Graphics & camera and Controls.
- Added an experimental third-person toggle that you can reach with touch controls. Scripted scenes may still use first person.
- Applying controls or logging changes now keeps your graphics settings and FPS limit.
- Delete saves is available only on the main menu.
- Graphics preparation and area loading show progress, with priority given to files needed next.
- Improved shadow and particle processing while preserving your selected effects and shadow quality.
- Improved recovery when Android changes the display refresh rate. Your selected FPS limit is preserved, including Unlimited.
- Added Retry with system driver after a graphics startup failure.
- Mali has a separate lighting option. Snapdragon/Adreno keeps its existing lighting shaders and native texture support.
Install or update
Download pt4droid-v0.2.1-test.14-arm64.apk from Assets below. Install over Test 13 to keep your game files, saves and settings.
Game files are not included; you need your own P.T. game dump. Android 10 or newer and a compatible 64-bit phone with Vulkan 1.3 support are required.
Settings and compatibility
- Open Settings → Graphics & camera for FPS, shadows, effects and third-person view.
- Open Settings → Performance & advanced for scene resolution, frame pacing and the Mali lighting option. Restart after changing Mali lighting or compatibility texture size.
- For Mali, start with Automatic or System Vulkan. PanVK remains experimental. Turn off the Mali lighting option to compare with Test 13.
Please test lighting, mirrors, shadows, loading, pause/resume and longer sessions. Report problems with your phone model, driver, settings and a log if possible. Performance improvements still need device testing; Test 14 is not labeled stable.
pt4droid 0.2.1-test.13
Test 13 improves texture support, loading and display settings. It is still a test release, so please report problems on your phone.
What's changed
- Improved texture support for Mali phones, including some missing surfaces and effects.
- Added Compatibility texture size options for phones that need to use less texture memory. Smaller settings may look less sharp; restart after changing them.
- Improved loading of new areas and cutscenes.
- Improved recovery of FPS and screen refresh settings after returning to the game, including Unlimited mode.
- Performance improvements for lighting and visual effects.
- Added clearer messages when a graphics driver cannot start the game.
Install or update
Download pt4droid-v0.2.1-test.13-arm64.apk from Assets below and install it.
Install over Test 12 to keep your game files, saves and settings. Game files are not included; you need your own P.T. game dump.
Compatibility
- Android 10 or newer on a compatible 64-bit phone, with Vulkan 1.3 support.
- For Mali and Xclipse, start with Automatic or System Vulkan driver. Support is experimental.
- If a Mali phone runs out of texture memory, try Compatibility texture size → 1024 or 512, then restart.
- The optional PanVK driver needs Android 15 or newer and compatible hardware. If it cannot start the game, switch to System Vulkan driver and restart.
Please report crashes, missing textures or other problems with your phone model and selected driver.
pt4droid 0.2.1-test.12
Pacing recovery, earlier loading, and experimental Mali compatibility.
- Connects Android frame pacing to the game window. Uses the native limiter if presentation repeatedly blocks the requested rate despite GPU headroom.
- Requests a compatible display mode from the combined FPS / display refresh setting and updates the observed rate after display changes.
- Prepares player models, skeletons, and simulation during loading. Prepares cutscene models on two CPU workers, with a bounded cache.
- Starts stage requests earlier and overlaps the first texture wave with model and collision preparation, within the existing texture memory budget.
- Reduces VFX scratch clearing and repeated light calculations. Skips probe-map generation for small views and specializes composition without changing graphics settings.
- Adds fragment clipping for drivers without
shaderClipDistance; removes the unusedfillModeNonSolidrequirement. Mirrors and point shadows keep their clipping. - Uses the system driver when bundled Turnip is selected on a known non-Adreno GPU.
Mali on Android 14: start with Automatic or System Vulkan driver. Other Vulkan requirements still apply. Bundled PanVK still needs Android 15+ and compatible hardware.
Install over Test 11 to keep game files, saves, and settings. ARM64, Android 10+, version code 54. Sustained performance preserves the selected FPS limit and graphics settings.
Focused checks cover pacing fallback, display lifecycle, memory limits and cancellation, VFX output and generation wrap, shadow invalidation, and shader validity. Hardware performance, Mali startup, and visuals still need phone testing.
pt4droid 0.2.1-test.11
Performance refinements for rendering and loading, plus simpler frame-rate settings.
- Reuses unchanged shadow poses and static backgrounds under stable lights.
- Precomputes probe lighting maps and caches shared VFX work.
- Uploads textures asynchronously and consumes prepared textures individually.
- Removes an unnecessary composition depth load and separates submission/presentation timings in logs.
- Combines FPS limit / display refresh in Game graphics. Requests a matching rate or a supported multiple; Unlimited requests the highest display rate.
- Sustained performance keeps your selected FPS limit and graphics settings. Removes the old automatic 45/30/20 FPS thermal caps.
Install over Test 10 to keep game files, saves and settings. ARM64, Android 10+, version code 53.
Focused checks cover shadow invalidation, VFX output/order, texture readiness and upload lifetimes, and display selection. Phone performance and visual behavior still need device testing. Android may override display requests or sustained performance hints. Existing Mali/driver requirements still apply.
pt4droid 0.2.1-test.10
Download the ARM64 APK under Assets below. Android 10+; your own game files are required.
Test 10 adds refinements 1–6 on top of Test 9. Existing graphics settings and render scale are retained.
- Shadow reuse: prepares caster metadata once per frame while keeping moving geometry and alpha changes correct.
- Lighting: restricts probe-volume work to conservative screen bounds and logs AO, probe and direct-light timings separately.
- Particles: batches first-use texture uploads and prepares constant expressions once, preserving simulation and transparency order.
- Loading: overlaps bounded texture preparation with model uploads, reclaims prepared data sooner and skips empty work on cached stages.
- Composition and buffers: specializes common composition and tonemap modes with the same equations and pass order.
- Diagnostics: adds frame-interval percentiles, hitch counts and CPU timing splits. Logs remain Off by default.
Compatibility
The Test 8/9 texture fallback remains included. Mali and Xclipse support is experimental. Vulkan 1.3 and required features still apply; the Mali Android 14 missing-feature startup failure is not fixed. Bundled PanVK requires Android 15+ and compatible hardware.
Updating
Install over the matching previous test app to retain game files, saves, settings and layouts. The existing signing key is reused.
Verification
All 23 host regression scripts, ASan/UBSan, ARM64 compilation and signed APK verification passed. Phone rendering and sustained performance still need testing. A SHA-256 checksum file is included below.
pt4droid 0.2.1-test.9
pt4droid 0.2.1-test.9
This release implements refinements 1–4 from the Test 8 review and fixes the Android data-folder startup error. It builds on Test 8: the lighting, fog, effect-target and texture-compatibility improvements remain included. Resolution stays fixed and existing graphics options remain available.
- Shadow reuse: Test 8's stable atlas slots and unchanged alpha-tested shadow reuse remain included. Test 9 adds adaptive atlas clearing when most tiles change and keeping a cheap cached tile would save little work. Equivalent main/mirror light maps can share a capture after exact projection and accepted-caster checks; point lights share both hemispheres together. Moving geometry, light transforms, alpha dependencies and animated skin still update correctly.
- Lighting: retained from Test 8. Conservative spot-cone bounds restrict the light's screen rectangle, and deferred lighting rejects pixels outside the original range, cone or area before fetching normal and material data. Camera/near-plane crossings keep the full rectangle; the light equations remain the same.
- Particles: Test 9 uses compact depth/index entries with separate reusable quad storage. Conservatively rejected offscreen rain skips payload and UV-animation preparation, while retaining its depth entry to preserve equal-depth alpha ordering. Test 8's rain constants and texture-lookup refinements remain included. Simulation, random values, emitted lights, shared lighting boxes, liquids, flares and screen effects are preserved.
- Loading: Test 9 prepares only textures selected by materials and checks the 96 MiB preparation budget before reading streams or inflating data. Prepared compressed data can serve both raw/linear and sRGB uploads without archive rereads or flag changes. Test 8's two bounded workers, overlapping geometry preparation and batched uploads remain included.
- Composition and buffers: retained from Test 8. Fog coefficients shared across pixels are computed once per frame. AO, depth-of-field and motion-blur targets allocate only when needed; motion data required by temporal upscaling is retained. Allocated targets persist until resize to avoid repeated allocation when settings change.
- Startup fix: Android records migration completion using an atomic empty directory, avoiding the unsupported rename/hard-link operation that caused the reported
Operation not permittederror. Existing valid markers, settings and saves are retained. Failed data imports remain retryable, and deleting a save after migration does not restore it from the old folder.
Experimental texture compatibility
Test 9 retains Test 8's fallback for unsupported BC1, BC2, BC3, BC4, BC5 and BC7 formats. Game FTEX textures, generated BC7 replacements, mip chains and cubemaps can decode into supported RGBA/R/RG formats. sRGB interpretation, alpha and BC5's two normal-map channels are preserved.
Supported Adreno formats keep their native compressed uploads. Compatibility decoding and memory-budget queries execute only for unsupported formats. The regression checks confirm zero conversion calls and byte-identical native uploads on the supported-format path.
The existing limits remain 128 MiB per converted texture and 2 GiB per session, with the device-budget check and reserve when available. No mip levels are silently dropped. The bundled drivers and driver-selection defaults are unchanged.
Mali/PanVK and Xclipse compatibility remain experimental. Bundled PanVK requires Android 15+ and compatible hardware; the renderer still requires Vulkan 1.3 and its other required features. The upstream Mali Vulkan 1.1 pull request is incomplete and is not part of this release.
Updating and verification
Install over Test 8 to retain game files, saves, settings and layouts. Package: com.ptport.app.test; version code: 51; ARM64. The existing test signing key is reused. The startup fix does not require clearing app data or reinstalling game files. Game files and the private signing key are not included.
Phone comparisons should use the same save, camera position, driver, preset, render scale and FPS cap after warmup. Check slow turns, doors, the flashlight, mirror, rain and later scripted scenes, then compare timing logs and longer sessions. Physical-phone rendering, sustained FPS and thermals still need testing.
Verified release APK
- ARM64, Android 10+, package
com.ptport.app.test, version code 51. - APK size: 90,250,654 bytes.
- SHA-256:
6c8da1f12b8456ef673461ae3bb90cc9f032319cd53060c1ce99005310c09dd5. - Uses the Test 8 signing certificate. Install over Test 8 to retain game files, saves, settings and layouts.
- All 22 host regression scripts, native ARM64 compilation and signed Android release compilation/package passed. Release lint: 0 errors, 73 existing warnings.
- Signature, package/version, ZIP integrity, all 19 staged native libraries and 99 staged assets, and 16 KB ELF/APK alignment passed.
- See the implementation and regression details and verified build record for the build evidence and testing limits. No physical-phone FPS gain is claimed.
pt4droid 0.2.1-test.8
pt4droid 0.2.1-test.8
This release implements refinements 1–5 from the test.7 audit. Resolution stays fixed and existing graphics options remain available.
- Shadow reuse: selected lights keep stable atlas slots. Unchanged alpha-tested casters can reuse their shadows. Material flags, texture redirects, enhanced replacements and filtering changes invalidate their dependencies. Moving geometry, light transforms and animated skin still update correctly; skinned casters retain per-frame rendering. Selection limits and mirror caster sets are preserved.
- Lighting: conservative spot-cone bounds restrict the light's screen rectangle. Camera/near-plane crossings keep the full rectangle. Deferred lighting rejects pixels outside the original range, cone or area before fetching their normal and material data; the light equations and forward rendering remain.
- Particles: rain constants and texture lookups move out of the particle loop. Sorting moves small indices instead of full quad payloads. Offscreen rain quads can be omitted after sorting, using all four corners and a generous edge margin. Simulation, random values, emitted lights, shared lighting boxes, liquids, flares and screen effects are preserved.
- Loading: stage texture reads use two bounded workers and overlap geometry preparation. Uploads share up to 16 MiB of staging storage and 64 textures per submission, with synchronous completion before rendering. Oversized textures use the original individual path. Prepared compressed texture data is capped at 96 MiB.
- Composition and buffers: fog coefficients shared by every pixel are computed once per frame. AO, depth-of-field and motion-blur targets allocate only when enabled; motion data required by temporal upscaling is retained. Once allocated, targets persist until resize to avoid repeated allocation when settings change.
Experimental texture compatibility
Unsupported BC1, BC2, BC3, BC4, BC5 and BC7 formats can decode into supported RGBA/R/RG formats. The entry point covers game FTEX textures, generated BC7 replacements, mip chains and cubemaps. sRGB interpretation, alpha and BC5's two normal-map channels are preserved. Other Vulkan requirements and driver/API restrictions still apply.
Supported Adreno formats keep their native compressed uploads. Compatibility decoding and memory-budget queries execute only for unsupported formats. The tests explicitly check zero conversion calls and byte-identical native uploads on the supported-format path. This does not establish an FPS result for the other renderer refinements.
Decoded textures are retained by the existing session texture cache. Expansion is bounded to 128 MiB per texture and 2 GiB per session, with an additional device-budget check and reserve when the driver exposes memory budgets. If conversion cannot fit or a format remains unsupported, the renderer logs the reason and refuses that texture. No mip levels are silently dropped. There is no new persistent disk conversion cache.
Mali/PanVK and other unsupported-BC devices remain experimental. The bundled PanVK driver is unchanged and requires Android 15+. A device must still provide the renderer's other Vulkan capabilities. No actual Mali or Xclipse gameplay benchmark was available.
Updating and verification
Install over test.7 to retain game files, saves, settings and layouts. Package: com.ptport.app.test; version code: 50; ARM64. The existing test signing key is reused. Game files and the private key are not included in the source kit.
The build record and audit accompany the APK. Phone comparisons should use the same save, driver, preset, render scale and FPS cap. Check slow turns, doors, the flashlight, mirror, rain and later scripted scenes, then compare timing logs and longer sessions. Dynamic resolution and the separate tile-memory renderer experiment are not included.
Verified release APK
- ARM64, Android 10+, package
com.ptport.app.test, version code 50. - APK size: 90,244,894 bytes.
- SHA-256:
1d90b5f3bc9123a256320e39b96da8706b352fa42c845e5a3a40a5ff65cb6f4f. - Uses the Test 7 signing certificate. Install over Test 7 to retain game files, saves, settings and layouts.
- All 19 host regression suites, native ARM64 compilation and Android release compilation/package passed. Release lint: 0 errors, 73 warnings. Signature, package/version, staged library/asset equality and 16 KB ELF/APK alignment passed.
- See
docs/android-test8-build-validation.mdanddocs/android-test8-audit.mdfor the build record and testing limits. No physical-phone FPS claim is made.
pt4droid 0.2.1-test.7
This update targets repeated rendering work while retaining your existing graphics settings and fixed render resolution.
- Improved GPU scheduling: Replaced broad render-target barriers with dependencies for the stages that actually use each image. Repeated read-only uses avoid redundant barriers; write dependencies and the conservative fallback for general/unknown layouts remain.
- Shadow-map reuse: Unchanged shadow tiles can keep their previous contents. Moving lights or objects, changes in the selected geometry, atlas resizing and mesh destruction invalidate reuse. Skinned characters and alpha-tested textures retain per-frame updates. Partial updates clear only their dirty tiles; fully dirty frames keep the original whole-area clear.
- More precise shadow culling: Static submeshes use bounds computed from their indexed triangles. Animated or invalid bounds retain the existing fallback. This culls in the light's view, preserving shadows from objects outside the camera view.
- Smarter mirror rendering: A mirror capture can be skipped when its entire padded bounds lie behind an active scene occluder. Partly visible mirrors still update. Checks use the current scene's occluders without GPU queries or readback waits.
- Less particle CPU work: Particle lighting selects the best three lights and probes with fixed storage, preserving the original tie order and probe weights. Temporary light and preload lists retain their capacity between frames.
- Reduced buffer traffic: Fully overwritten AO, reflection, composition and upscale outputs can discard their old contents. Partial mirror outputs and passes that blend or resume rendering preserve their needed contents. Empty offscreen particle passes skip depth downsampling and effect-buffer clears/stores.
- More useful diagnostics: GPU totals and individual passes now use the same completed samples and averaging window. Ray-tracing structure preparation is reported separately from shadow-map rendering. Logs include average shadow reuse, draw counts, mirror occlusion and active graphics settings. Corrected doubled shadow draw counters.
Updating
Install the ARM64 APK over test.6 to keep your game files, saves, settings and touch layouts. The package is still com.ptport.app.test, version code 49, with the same signing certificate.
Game files are not included. Mali/PanVK support remains experimental with its existing Android/driver requirements.
APK checksum
SHA-256: 90c1626558a18353c045f3abd1098006a69546ec2bdfddb9fe90f70a749b7603
pt4droid 0.2.1-test.6
This update fixes an extra frame-limit wait that could make Balanced and other capped settings feel much slower than expected, and improves direct touch look.
Smoother looking and frame limits
- Fixed the software frame limiter adding another full frame interval when rendering was already late. A slow frame now continues immediately; faster frames wait only for the unused part of their frame budget.
- Fixed direct swipe and gyro look depending on keyboard button prompts. Touch controls can keep their gamepad prompts while the camera follows direct look at the render rate.
- Direct look no longer inherits the previous tick's interpolation delay. Controller look keeps its existing interpolation, including when mixed with gyro or swipe input.
- Camera locks, cutscenes, menus, pitch limits and sensitivity options remain respected. Resolution and graphics quality stay under your control.
Launcher and import flow
- Renamed the launcher's Continue button to Start.
- After a PKG import, Enter menu opens the launcher so you can change settings before starting.
- Delete the .pkg and enter menu also returns to the launcher. A refused deletion still leaves Enter menu available.
- Finding extracted files after granting storage access now opens the launcher instead of starting the game automatically.
Diagnostics and build fixes
- Corrected GPU timing labels: the mirror and G-buffer timings were previously reported as G-buffer and occlusion.
- Fixed dependency setup on CMake 3.28, which previously requested a policy available only in newer CMake versions.
- All 14 host regression suites passed, including 13,715 frame/look cases, post-import navigation, touch layouts, saves, drivers, presets, storage, logging and display refresh selection.
Install over a matching test.5 installation to retain your game files, saves, settings and imported drivers. Please compare Balanced and Original in the same scene on your phone. Physical-device FPS gains have not been measured for this build. Mali/PanVK support remains experimental; dynamic resolution is not included.