Skip to content

Skate 3 Android v0.1.17

Choose a tag to compare

@andrewnakas andrewnakas released this 07 Sep 21:23
· 8 commits to main since this release

A diagnostic step. v0.1.16's table repair works — on a Retroid Pocket 6 the
codec tags were restored and audio decoders that had been failing began to
resolve — but those devices still do not reach the world, and this release
closes the last gap in what a report can check.

No game content is included and none is bundled in the APK. Setup is
unchanged: install, pick your disc image, download the title update, press Play.

What v0.1.16 established

The repair fired and did its job. What it exposed underneath is a parser
producing negative buffer sizes:

buffer setup asked to zero -12 bytes (size=FFFFFFF4) ... from lr=82B7F970

and, moments later, the game's own assert firing with another negative size on a
neighbouring buffer. Reading the guest code, the caller validates two fields of
that struct for negative values and errors out — and never checks the one that
arrives negative.

A negative size read as unsigned by a copy is exactly what writes a sentence
over static data, which is the corruption the table repair has been papering
over. The failing devices' executables are now confirmed byte-identical to
the one this build was compiled from, by full-file hash. So the bad values are
being parsed out of data, not code.

What this release adds

  • Every game file is hashed in full, including the 430 MB of .mus audio
    streams. Those were sampled at one megabyte on the reasoning that they were
    being identified rather than verified. That was wrong: the identical
    reasoning had already hidden a disputed region of default.xex by 41,744
    bytes, and the audio streams are the input feeding the parser that is
    producing the garbage. A report takes a few seconds longer and answers the
    question instead of assuming it.
  • The buffer guard reports its neighbouring arguments, so the shape of the
    bad parse is identifiable rather than just its symptom.

If it fails for you

Launch it, let it reach the point where it stops or crashes, then save a
diagnostic report from the setup screen. Crackling audio before a crash is a
useful detail to mention — it is consistent with buffers built from these sizes.

Performance

Unchanged since v0.1.14. Leave skate3_diagnostics off for normal play.