Aller au contenu principal

Session 132duodecimus — Bascule des sources assets vers `original/` local

Les assets originaux Amiga ont ete deposes dans <rootDir>/original/ (au lieu d’etre
recuperes via le projet soeur ../ab3d2-tkg-java/src/main/resources ou
../ab3d2-tkg-original/media/). Mise a jour des resolveurs de chemins des
convertisseurs pour preferer cette source locale, en gardant les anciennes en
fallback (retro-compatible).

Layout du nouveau dossier original/

  • original/walls/*.256wad — textures de murs (12 fichiers compatibles AssetConverter)
  • original/levels/LEVEL_A..P/twolev.{bin,graph.bin,clips,...} — niveaux
  • original/vectobj/ — modeles 3D vectoriels + newtexturemaps
  • original/INCLUDES/ (majuscules respectees) — palettes, alien WADs, RAW HUD includes
  • original/hqn/ — sprites aliens HQN (ashnarg, GUARD, insect, priest, triclaw)
  • original/menu/ — assets menu (font, fond, palette feu)
  • original/samples/*.fib — samples sonores (format Fibonacci, voir limitations)
  • original/256pal — palette globale (sans extension .bin)
  • original/TEST.LNK — Game Link File

build.gradle (4 emplacements modifies)

  • findSourceResources() : nouvel ordre de priorite
    1. -PassetsFrom=<chemin> (override CLI explicite)
    2. <rootDir>/original (NOUVEAU : prio par defaut)
    3. ../ab3d2-tkg-java/src/main/resources (legacy)
    4. AB3D2_ASSETS_SRC (env var)

  • extractIff : 1) -PgfxFrom → 2) <root>/original/graphics → 3) ../ab3d2-tkg-original/media/graphics.
    Note : aucun fichier IFF n’est livre dans original/graphics aujourd’hui ;
    le slot existe pour permettre l’ajout futur sans modification de build.

  • extractRaw : 1) -PrawFrom → 2) <root>/original/INCLUDES (majuscules) →
    3) <root>/original/includes (variant minuscules pour cas-insensitive) →
    4) ../ab3d2-tkg-original/media/includes. Subset des RAW classiques
    (panelraw, borderpal…) actuellement absent de original/INCLUDES/
    fallback vers media/includes necessaire jusqu’a curation complete.

  • dumpPalette : meme cascade que extractRaw, nouveau parametre -PincFrom.
    Plus de GradleException brutale si media/includes absent (au profit d’un
    message d’erreur plus explicite enumerant les chemins testes).

AssetConverter.java

  • loadPalette() : ajout de "256pal" (sans extension) a la liste des noms
    candidats. Le fichier original/256pal est byte-pour-byte identique a
    256pal.bin (1536 octets, format PALC : 256 × [R:word, G:word, B:word]
    big-endian) — seul le nom differe. Le format est detecte automatiquement
    par parsePaletteAmiga().

WadConverter.java

  • gatherWadSearchPaths() : ajout de "INCLUDES" (majuscules) et "hqn" en tete
    de la liste des sous-dossiers scannes. Necessaire car :
  • L’utilisateur a nomme le sous-dossier INCLUDES (toutes majuscules) dans
    original/, et la lookup Files.exists() est case-sensitive sous Linux.
  • Les sprites aliens HQN (ashnarg, GUARD…) sont dans original/hqn/
    plutot que dans INCLUDES/.

Limitations connues (a traiter ulterieurement)

  • convertSounds : SoundConverter attend du PCM 8-bit raw dans
    sounds/raw/, mais original/samples/ contient des .fib
    (Fibonacci-compressed). Le decompresseur n’est pas implemente cote Java.
    Le chemin source de convertSounds n’est donc PAS bascule vers original/
    pour cette session — il continue de chercher <src>/sounds/raw/ (presence
    via copyResources depuis l’ancien projet).

  • convertAssets floors : les sols PNG (floors/iff/Floor.N.png) sont
    des pre-conversions des IFF Amiga media/graphics/floors/. Aucun
    equivalent dans original/ ; convertAssets produira des damiers de
    fallback pour les sols si on lance le pipeline avec original/ comme
    seule source. La vraie passe sera un decodeur floortile (chunky 8-bit
    depuis INCLUDES/floortile) — chantier separe.

  • gradle.properties : pas de reorganisation cette session puisque aucune
    nouvelle tache Gradle n’a ete enregistree (juste modifications de
    tasks.register existantes).

Laisser un commentaire

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