Fix 1 : hauteur texture depuis le footer du .256wad
L’AMOS stocke la hauteur dans les 2 derniers bytes du fichier .256wad :
WGH = Deek(Start(701+ZWGC) + T - 2) ; T = Length(bank)
WallTextureExtractor faisait une detection heuristique → textures parfois scramblees.
Fix : readHeightFromFooter(raw) + computeWidth(fileSize, texH)
→ Relancer ./gradlew convertAssets pour regenerer les PNG avec les bonnes dimensions.
Fix 2 : decalage U depuis fromTile (ZWG(A,B,0))
Le champ texIndex = ZWG(A,B,0) = fromTile = position X dans le strip de texture.
Dans le renderer AMOS : draw_FromTile_w = texIndex * 16 (decalage pixel).
Dans JME (UV normalisees) :
uOffset = fromTile * 16.0f / texWidth
uMax = wallLen / texWidth // (au lieu de wallLen / 256)
La largeur reelle texWidth est lue depuis l’image PNG chargee par JME
(mat.getTextureParam("DiffuseMap").getTextureValue().getImage().getWidth()).
Action requise pour voir le resultat :
./gradlew convertAssets # re-extrait PNG avec bonnes dimensions (footer WGH)
./gradlew buildScenes # regenere .j3o avec UV corrects (fromTile offset)
# ou tout en un :
./gradlew setupAll