m4 is the live camera: a 20x outlier against eight controls

d4e81ba left one question: the camera's rotation is one of the nine, but which.
Answered by turning the camera in the live emulator and watching which matrix
responds. Ten captures at ~0.6s intervals; angle through which each matrix's first
row rotated, from capture 1:

    idx     1->4      1->7     1->10
     m0     0.37     0.27      0.53
     m1     1.31     1.07      1.34
     m2     3.89     1.38      1.43
     m3     2.25     1.18      1.40
     m4    30.60    18.49     37.21     <-- the camera
     m5     1.70     1.45      1.82
     m6     1.24     0.98      1.29
     m7     1.88     1.34      1.73
     m8     1.70     1.45      1.82

The eight others are the control and they sit under 4 degrees across the whole
sweep while m4 goes to 30-37. Its motion is non-monotonic, tracking the input
being turned one way then back.

The translations gave the complementary half: all nine move together by the same
few thousandths. So the nine share one camera position and carry nine different
orientations, one of which is live.

guard_band step 1 now has both operands:

    R      rows 0-2 of the matrix at 0x18ab70
    camera its fourth row, (247.1, 193.4, 50.4) on Aranos

NOT established: why there are nine. They are not nine cached frames of one camera
-- if they were, all nine would have swung by 30 degrees together. They are nine
distinct orientations about a shared point with one selected, and a table selected
by an index fits. The nine-legal-orientations-on-a-spherical-planet reading stays
plausible and unproven; what is proven is which entry is live. No reindexing was
observed, so if the index moves it does not on camera rotation alone.

294 passing with the disc and savestate present, clippy clean.
This commit is contained in:
2026-10-15 03:29:14 +02:00
parent d4e81ba977
commit e7eec01b50
2 changed files with 49 additions and 0 deletions
+8
View File
@@ -7916,6 +7916,14 @@ fn moby_classes_enrichment_survives_the_correct_mapping() {
/// The camera region is nine orthonormal affine matrices sharing a translation.
///
/// `m4` at `0x18ab70` is the live camera orientation.
///
/// Established by rotating the camera in the live emulator and measuring which
/// matrix responds: m4's first row swings 30-37 degrees while the other eight stay
/// under 4 across the whole sweep. All nine translations move together, so the nine
/// share one camera position and carry nine orientations, of which this one is live.
/// `R` for `guard_band` step 1 is rows 0-2 of this matrix.
///
/// Read live over PINE: two EE RAM dumps taken seconds apart, then the region at
/// `0x18aa70` is checked to be a 4x4 matrix whose upper 3x3 is orthonormal and
/// whose fourth row is a translation that moves smoothly between the two reads.