G1 card C02 - _player_effect_add_continuous_effect: the periodic value as a named local (NOT a parenthesis change)
Written 2026-09-26 01:52:12 -0700 (clock-read), BEFORE any compile of this card. Never edited.

C01 OUTCOME THAT MOTIVATES THIS CARD (facts): C01A (decorative '(1.0f - w)' stripped) and C01B (sibling spelling
P*w + (1.0f - w)) are BOTH keyed-identical to HEAD (0 changed / 0 added / 0 removed). The paren group is inert here;
every in-expression spelling tried (HEAD, A, B: 3 of 3, sampled evidence) evaluates call*w first.

OBSERVED DISCREPANCY (J): after the periodic_function_evaluate call January evaluates (1 - w) FIRST (fld 1; fsub w),
then brings the call result back with fxch st(1) and multiplies by w, adds, multiplies by scale. That is the shape of a
value that was materialised BEFORE the expression began and is then consumed in left-to-right operand order.

EVIDENCE (separated per the owner ruling of 2026-09-26):
  D (/Od 0x57b490): the call result is stored by 'fstp dword ptr [ebp-0x14]' right after the call (+0x148) and read
    once in the magnitude expression (+0x165). [ebp-0x14] lies in the USER-local area between scale ([ebp-0x10]) and
    magnitude ([ebp-0x18]); the compiler temps (PIN [ebp-0x1c]/[ebp-0x20], MAX [ebp-0x24]/[ebp-0x28]) sit below
    magnitude. Declaration order therefore reads: definition, effect, continuous, scale, <periodic value>, magnitude.
    CAVEAT (disclosed): the 2020 revision also stores the periodic value in a local at the camera-matrix site
    (/Od 0x57ba70 +0x70c, vbc between scale vb8 and magnitude vc0) and uses a distributed formula at both sites, so D
    alone does not establish January's text (ruling item 2).
  J (January bytes, per site): add_continuous_effect shows the materialised-value order (1-w first + fxch);
    get_camera_effect_matrix shows the in-expression order (call*w first, no fxch) and our in-expression spelling is
    byte-equal there. So J discriminates the two January sites and corroborates a separately computed value at THIS
    site only. The arithmetic (one SUB(1,w), one MUL(value,w), one ADD, one final multiply by scale) is unchanged.
  S (meaningful source): 'real periodic_value = periodic_function_evaluate(...);' then
    'magnitude = ((1.0f - w) + periodic_value * w) * scale;' is ordinary code (name the intermediate). The NAME is
    descriptive, NOT attested (no scalar RTC; HCEX.pdb enregisters all locals of this function and lists only the
    params local_player_index / effect_index / distance). Disclosed as inferred.

SHAPES (all keep the tree and the operand order of HEAD's expression; the change is statement structure):
  C02a  periodic_value declared after scale (per /Od slot order), expression text otherwise unchanged (keeps HEAD's
        existing '(1.0f - w)' group).
  C02b  strip test of C02a: '(1.0f - w + periodic_value * w) * scale' (the decorative group removed).
  C02c  DIAGNOSTIC CONTROL ONLY (never a candidate): the same local at get_camera_effect_matrix's site with its
        existing operand order (periodic_value * w + (1.0f - w)) * scale. Tests whether 'local' alone moves a site
        whose January order is call*w-first.

PREDICTIONS (recorded before compiling):
  C02a: _player_effect_add_continuous_effect EXACT (320 padded / 110 insns incl. the fxch) p ~ 0.7; the other 26 exact
        rows byte-identical; 0 added/removed sections.
  C02b: identical bytes to C02a (the decorative group inert, as in C01A) p ~ 0.75.
  C02c: camera-matrix site unchanged in order (P*w first), i.e. the function's bytes identical to HEAD or differing
        only by frame/slot effects of the new local; p(identical) ~ 0.5.
COLLATERAL: a new local changes the slot pool of this function only; other functions untouched (no header change).
DECISIVE TEST: gate --all; keyed_diff vs build/base (0 losses); alndiff; /W3 census; fake_match_scan.
