Skate 3 Android v0.1.15
A diagnostic release. Same engine work as v0.1.14, plus the instruments needed
to tell two devices apart — and a version number that finally distinguishes one
tester build from another.
No game content is included and none is bundled in the APK. You supply your
own Skate 3 Xbox 360 disc image. Setup is unchanged from v0.1.14: install, pick
your disc image, download the title update, press Play.
Why this exists
Two devices with the same Snapdragon — an AYN Thor and a Retroid Pocket 6 — stop
on a frontend screen and never reach the world. v0.1.14's heartbeat showed what
was happening, and it is not a hang or a crash:
alive frame=27000 items=0 draws=0 draws_2d=89491 draws_since_last=27000
Exactly 27,000 draws every thirty seconds for eight minutes — a static screen
rendered at a locked 60 fps, forever, with the world never loading. Upstream of
that, an audio codec tag read from a static table comes back 'rwar' where a
working device reads 'PFN0' from the same address, through the same code, with
an identical and healthy format registry.
Same instructions, different bytes underneath them. This release adds the checks
that say why.
What it adds
- The player's
default.xexis checked against the one the build was compiled
from. The recompiled code is generated from one specific executable and
reads all of its static data — tables, strings, constants — out of the copy
you supply. The title update has been hash-verified since it was added; the
base executable never was. It logs a warning naming the consequence and does
not refuse to run. - The title update patch result is logged at warning level. Every failure
path was already an error, but success was invisible at the shipped log level,
so its absence proved nothing about whether a device ran patched code. - The codec tag table is dumped beside any audio failure. A healthy device
reads['P6L0','PFN0','Pack','etPl','ayer',...]— entry 2 onward is the
string "PacketPlayer" — so one overwritten entry is easy to tell from a
wholly different region. - Reports identify their own build. The Build section now names the engine
version, and the app version is bumped so no two tester builds report the same
number. Six builds in one day all called themselves0.1.14 (15), two testers
ended up on different ones, and telling them apart meant grepping for the
presence of individual log lines. That was avoidable. - Game executables are hashed whole rather than by their first megabyte.
The prefix missed the disputed region by 41,744 bytes and reported a match
that had never been checked.
If the game stops on a screen for you
Launch it, let it reach the point where it stops, then save a diagnostic report
from the setup screen. Every answer above lands in the first minute — there is
no need to wait it out.
Performance
Unchanged from v0.1.14. Those notes stand, including the honest part: the four
fixes free roughly a fifth of the render thread and do not remove the hitch
when new map areas stream in. That remaining hitch is the game setting up a
zone's objects, which the Xbox 360 hitched on too.
skate3_diagnostics is worth leaving off for normal play — its per-frame
accounting runs whether or not a line is printed.