Bug 1 : floorIdx() formule incorrecte
Le whichTile dans le binaire est l’OFFSET MEMOIRE dans la banque floortile,
pas un index direct. Format AMOS (_FLOOR2SCREEN) :
S = ADR + (NR mod 4) + ((NR/4) and 3)*256
Donc l’inverse : NR = (whichTile >> 8) * 4 + (whichTile & 3)
Verification avec level_A.json :
| whichTile | hex | NR calcule | Texture |
|———–|——-|————|—————-|
| 513 | 0x201 | 9 | floor_10.png |
| 257 | 0x101 | 5 | floor_06.png |
| 769 | 0x301 | 13 | floor_14.png |
| 1 | 0x001 | 1 | floor_02.png |
| 0 | 0x000 | 0 | floor_01.png |
Bug 2 : murs de marche et linteaux non rendus
Avant : si oz!=0 et abs(botH) > 8 -> sl++ (saut, rien rendu)
Avant : si oz!=0 et abs(botH) <= 8 -> portail/porte (toujours, meme step)
Apres : distinction porte reelle / mur de marche par la HAUTEUR :
– abs(botH) <= 8 et wallHeight >= 64 -> porte (panneau animable)
– Tout le reste -> rendu comme geometrie statique
Exemples corrects :
– Zone 131-132 chevrondoor h=192 -> porte (ajoute a dg) OK
– Zone 7-6 step h=24 -> mur de marche (rendu geometrie) OK
– Zone 34-35 step h=16 -> mur de marche (rendu geometrie) OK
– Zone 34-35 linteau abs(bot)=160 -> linteau (rendu geometrie) OK
Workflow :
./gradlew buildScenes # pas besoin de convertAssets si deja fait
./gradlew run