Aller au contenu principal

Session 132duodecimus (suite 13d-fix) — Phase C portes : formule UV ASM-fidele

Bug fix apres analyse des logs diagnostic

Bug observe Fix
2 chevrons cote a cote au lieu d’1 seul uM_jme = L_pixels / texW (formule ASM)

Diagnostic (logs build s13d)

[door seg_0] texW=128 texH=128 tileW=128 tileH=128 fromTile=0 yOffset=0 L_jme=2.000

Observation : la PNG wall_05_chevrondoor.png fait 128×128 et contient
2 chevrons cote a cote. Pour la porte zone 5 (la plus visible), L_jme=2.000
metres = 64 pixels en espace texture (L_pixels = L_jme * 32 = 64).

Donc l’ASM original mappait U de 0 a 64/128 = 0.5 -> on voit la moitie
gauche de la PNG = 1 chevron. C’est ca le comportement attendu !

Fix : formule ASM-fidele

// s13d (mauvais) : uM_jme = tileW/texW = 1 -> texture entiere = 2 chevrons
// s13d-fix       : uM_jme = L_pixels/texW (= longueur reelle / texture entiere)
float uM_jme = (texW>0) ? L_pixels/texW : 1f;

Effet sur les portes du level A :
– Porte 2m (zone 5) : 64 / 128 = 0.5 -> 1 chevron
– Porte 4m : 128 / 128 = 1.0 -> texture entiere (2 chevrons)
– Porte 5m : 160 / 128 = 1.25 -> texture + 1/4 (la repetition est
voulue, c’est le comportement Amiga)

C’est ASM-fidele : la longueur reelle de la porte determine la quantite de
texture vue. Pas de truc artificiel pour forcer « 1 tile par porte ».

Fichiers modifies

  • LevelSceneBuilder.java : retour a uM_jme = L_pixels/texW dans
    makeDoorSegGeo.

Tests prevus

  • Niveau A premiere porte (zone 5) : 1 chevron unique, texture qui glisse
    derriere le linteau.
  • Si une autre porte (genre 4m+ de large) montre 2 chevrons, c’est NORMAL :
    c’est le comportement ASM, la texture est faite pour. La porte est juste
    large.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *