Probleme observe
Le dump de stats [A] anim nibbles : lowNibble in 1..7 = 8, highNibble in semblait incoherent : seulement 8 entries sur 609
1..7 = 0 (sur 609 animes)
avaient un pattern index valide. Apres relecture de l’ASM hires.s:1502-1543
et newanims.s:15-21, c’est en realite normal :
- L’ASM court-circuite l’animation quand
Lb < 0(tst.b d2 ; bltligne 1505) ou quand
.justbrighthighByte == 0. Le compteur Java
brightStatsAnimatedCountne testait quehighByte != 0, gonflant le
resultat avec des entries 0xff?? (Lb=-15, points sombres statiques)
qui ne s’animent jamais au runtime. - Le compteur
brightStatsLowValid = 8mesurait correctement les entries
qui passent la condition Java equivalente (isAnimated= highByte != 0
AND Lb >= 0 AND lo in 1..7). Le label etait juste trompeur.
Verification ASM : Anim_BrightTable_vw (newanims.s:15-21) n’a que 7 entrees
actives (BrightPulse1-5, BrightFlicker1, BrightFlicker2). Les indices 8..15
sont commentes (;dc.l, lignes 28-35 et 47-54), jamais deployes en prod.
Le commentaire Java (« Les 8 dernieres sont reservees pour des extensions
custom et pointent par defaut sur BrightPulse1″) etait donc faux.
Modifications
tools/LevelSceneBuilder.java
– Ajout du compteur brightStatsRuntimeAnim qui mesure les entries qui
s’animent vraiment au runtime (= equivalent de BrightnessCalc.isAnimated).
– Renommage du printf anim nibbles :
flagSet=N runtimeAnim=N lowValid=N highValid=N. Les 4 metriques sont
affichees pour clarifier le rapport entre « drapeau leve » et « anime
vraiment ». Sur level A : flagSet=609, runtimeAnim=8 – les 601 autres sont
des entries 0xff?? sombres statiques.
world/BrightnessCalc.java
– Correction du commentaire de ANIM_BRIGHT_TABLE : la table a 7 entrees
actives, pas 15. Les indices 8..15 sont commentes dans l’ASM
(newanims.s:28-35 et 47-54), isAnimated borne defensivement a
1..ANIM_PATTERNS.length ce qui est plus strict que l’ASM mais correct
(dans l’ASM, lo in 8..15 lit hors-table = comportement non-defini).
Pas de changement de comportement runtime
Aucune modification fonctionnelle : seul le diagnostic de build est plus
lisible et un commentaire est corrige. La logique d’animation
(computeLbDynamic, isAnimated) etait deja correcte depuis la session 124.