Guerrière HD 0x6110
Comment donner aux sprites palettisés de BG2EE le modelé d'un upscale HD sans casser les couleurs choisies par le joueur. Deux recherches indépendantes, deux revues croisées, une relecture finale : tout le processus, les preuves, les chiffres et la recette retenue.
- 2 + 2 + 1études, revues croisées, relecture
- 774 BAMstock inventorié · 870 ITM
- 628 BAMpremier périmètre monde
- 12variantes de palettisation testées
- −18 % / −23 %écart palettes nouvelles, Q8 vs actuel
- 0installation · fichier du jeu modifié
Sept étapes, deux regards
Claude Code et Codex ont d'abord cherché chacun de leur côté, sans se lire. Chaque étude a ensuite été relue par l'autre, avec de nouvelles expériences et des corrections. Cette page remplace la présentation Claude du 29 septembre et suit l'ordre réel du travail.
-
0129/09 · 19:46Claude Code
Étude indépendante
Rampes des 256 gammes (E1), usage des indices sur 65 composants (E2), expérience E3 : 4 couches, repos et marche, 5 palettes, 10 méthodes de palettisation.
Propose la sous-nuance fractionnaire ajustée sur plusieurs palettes, avec mélange aux frontières (Q8), et un repli sans DLL (Q6). -
0229/09 · 20:08Claude Code
Erratum E3b
Le cycle de repos échantillonné ne contenait que 4 poses distinctes sur 12 images : le scintillement était dilué. Nouveau corpus : 20 changements de pose, 120 occurrences.
Classement des méthodes inchangé ; chiffres temporels revus ; deux conclusions retirées (Bayer « pire partout », scintillement « −50 % »). -
0329/09 · 19:52–20:10Codex
Étude indépendante
Désassemblage de
BaldurReal.exe, inventaire KEY/BIFF complet, quatre upscales réellement calculés sur 60 frames, sensibilité à la palette d'inférence, tramage, interpolation mono-palette.Le moteur lit MPALETTE, pas RANGES12 ; 774 BAM, 870 ITM, 628 BAM utiles ; refaire l'inférence sous une autre palette change 20 à 44 % des indices. -
0429/09 · 20:26Claude Code
Revue croisée + E5
Lecture complète du dossier Codex, puis rejeu des méthodes Claude sur le corpus et les palettes de Codex, avec sa propre fonction de quantification.
Sur palettes non utilisées pour le réglage : Q8 −23 % face au pipeline actuel, −20 % face à l'interpolation Codex. Six corrections acceptées. -
0529/09 · 20:30Codex
Comparaison critique
Reproduction de E3b à l'identique (écart 0), audit des frontières, arrondi réel à 3 bits, lecture ciblée du runtime.
Trouve une erreur de signe dans l'alignement temporel ; 3 bits ≈ sans perte ; 13,3 % des frontières touchent plus de 2 canaux ; Q6 possible sans changer le rendu. -
0629/09 · 21:16Codex
Synthèse « guide ultime »
Fusion des deux dossiers, déduplication de 5 102 fichiers, échelle de preuve, plan de production en phases.
Ordre Q6 → Q3m → Q8 ; x2 livré, x4 après preuve ; aucun tramage. -
0730/09Claude Code
Relecture finale
Revérification au binaire, au code runtime et aux fichiers de données de chaque affirmation qui pèse sur une décision.
9 nouvelles corrections (Catmull-Rom existe, palettes « inédites » partiellement vues, Q3m porte 77 % du gain…) ; format V6 spécifié au bit ; guide définitif.
Ce qui est établi, mesuré ou ouvert
Chaque affirmation porte son niveau de preuve. Une mesure hors jeu n'est jamais une validation en jeu.
La limite des 12 nuances ne vient pas du BAM (256 indices) mais du moteur : chaque gamme est une ligne de 12 couleurs de MPALETTE.BMP, et les indices 88 à 255 sont des moyennes entières des nuances 2 à 9 de deux gammes. Tout est recalculé à chaque image : le corps n'a aucune couleur fixe libre.
Le DLL du projet capture déjà la palette réalisée de chaque couche (corps, arme, main gauche, casque) et reconstruit la texture HD sur le processeur. C'est là qu'il faut agir : stocker une position continue dans la gamme et laisser le DLL mélanger deux nuances voisines.
Q3m (fraction 3 bits ajustée sur plusieurs palettes) réduit l'écart au modèle de 14 % sur les palettes de validation ; Q8 (Q3m + frontières) de 18 %. Q3m porte à lui seul 77 % du gain. Sur le corpus Codex, Q8 fait −23 %.
Scintillement du corps (alignement corrigé) : 14,1 % → 5,7 % avec Q3m, 4,8 % avec Q8. La diffusion d'erreur double le scintillement ; le tramage n'est pas retenu.
Les palettes dites « jamais vues » partagent 1 à 6 canaux sur 7 avec l'entraînement. Seule la palette D est quasi indépendante ; les gains y tiennent (−15,5 % et −25 %), mais il faut 10 palettes entièrement nouvelles pour conclure.
x2 ou x4 : l'essai en jeu du 26/09 trouve le x4 légèrement meilleur, même en plus proche voisin, pour +58 % de registre. La plage de zoom réelle et le filtre de réduction décideront.
Registre V6 = V5 + masque de dépendances palette + plan de fraction 3 bits (+ plan frontière optionnel). Sans plans optionnels, il redonne exactement V5 : xBR et ReboutCX passent par le même chemin.
Comment BG2EE colore la guerrière
Vérifié sur BaldurReal.exe 2.7.3.0 (SHA-256 b51093a4…) : la chaîne MPALETTE y figure une fois, RANGES12 jamais. Les deux fichiers sont identiques octet pour octet, ce qui explique que les essais hors jeu restent justes.
- 1CRE : 7 couleurs — métal, mineure, majeure, peau, cuir, armure, cheveux. Le joueur choisit cheveux, peau, majeure et mineure ; le reste vient de la classe et des objets.
- 2Objets : opcode 7,
param2 = 0xPR— P : 0 corps, 1 arme, 2 bouclier / main gauche, 3 casque ; R : gamme 0 à 6. Ex.PLAT01: armure 27, cuir 23, métal 30. - 3
SetRange(RVA0x4221C0) copie une ligne deMPALETTEvers les indices4+12r … 15+12r. - 4
Realizeapplique teinte, lumière, gris de pause, pétrification, lueurs aux 84 nuances. - 5Puis les 21 paires (RVA
0x421F7B) :P[88+8k+j] = (A[j+2] + B[j+2]) >> 1, octet par octet — ni lumière linéaire, ni OKLab. - 60 transparent (forcé à 0 par le DLL), 1 ombre à alpha partiel, 2–3 noirs réservés (2 = marqueur des frames 1×1).
- 7Le DLL IEE capture
P[256]par cellule au retour deRealize, reconstruit chaque couche en x2/x4, compose dans l'ordre natif (tout pixel non nul écrase), puis le jeu dessine une texture.
Explorateur de palette réelle
Données lues dans MPALETTE.BMP. Choisis une ligne pour chaque gamme : les 256 couleurs sont recalculées avec la formule du moteur. Survole ou touche une case.
Aucune sur le corps
Pour l'équipement seulement : les lignes 74 blanc, 75 noir, 76–78 rouge, vert, bleu sont constantes (revérifié). Un canal réellement inutilisé peut y être fixé par l'ITM. Option intrusive, hors premier prototype.
Effets de palette : oui
Choix du joueur, objets, RANDCOLR résolu, effets de palette et mélanges recalculés. Pas couverts : teinte post-palette, invisibilité, flou, sélection, occlusion. À tester séparément.
Near Infinity, GemRB
Near Infinity échantillonne les mélanges sur les nuances 0,1,3,4,6,7,9,10 ; GemRB copie des sous-gammes. Excellents pour l'inventaire et les cycles, jamais comme étalon de pixels.
Pourquoi 12 nuances ne suffisent pas en HD
Pas médian entre deux nuances voisines : 0,055 en OKLab, deux à cinq seuils de perception. Les pas sont très irréguliers : dans le métal 30, trois fois plus grands dans les clairs. Invisible en x1, ces marches deviennent des bandes quand ReboutCX produit un dégradé continu.
Ce que montre la démonstration. « 12 nuances » est le pipeline actuel. « Sous-nuances 1/8 » est le format V6 retenu : 89 positions par gamme, sans nouvelle couleur à choisir pour le joueur. Le Bayer imite le dégradé avec une trame.
Lignes à part. Non monotones : 197, 198, 199, 204, 212, 213, 221, 253, 255. RGB répétés : 74–78, 222, 225. Ce sont des cas à interpréter, pas des erreurs à corriger en masse.
Décision. Ne jamais réécrire MPALETTE : le changement serait global, pour tous les personnages, objets et mods.
Ce qu'il faut réellement produire
Deux comptages répondaient à deux questions : l'index du dépôt (656 BAM monde) et le stock vanilla complet de Codex (774 BAM). Ils se réconcilient exactement, revérifiés sur le CSV.
92 BAM
CHFB1 sans armure, CHFB2 cuir, CHFB3 mailles, CHFF4 plates (le préfixe change au niveau 4). 23 suffixes chacun.
166 + 72
Main droite et main gauche (WQN…OA7/OA8/OA9/OG1). Overlays non scindés : leur G1 regroupe les états.
60 BAM
Familles C0–C7, D1–D4. D0 (5 BAM) n'a aucun objet.
238 BAM
H0–H5, J0–JC. H6 = attaques de créature (59 ITM), ZW = ailes interdites aux humains.
774 stock vanilla = 656 index du dépôt + 85 paperdolls (4 corps CHFF*INV, 81 WPN*INV/OIN) + 33 stock monde (D0 : 5, H3/H4 : 28) 656 index = 628 utiles + 14 ZW + 14 H6 628 utiles = 92 corps + 166 armes + 72 main gauche + 60 boucliers + 238 casques frames : 178 360 (index) · 185 335 (stock) · 153 422 > 1 px
| Suffixe | Cycles | Action |
|---|---|---|
| G11 · G1 | 0–8 · 9–17 | marche · garde 1 main |
| G12 · G13 | 18–26 · 27–35 | repos · garde 2 mains |
| G14 · G15 · G16 | 36–62 | touché · mort · au sol |
| G17 · G18 · G19 | 63–98 | repos · repos · sommeil/relevé |
| A1–A9 | 0–8 | attaques 1 main, 2 mains, deux armes, lancer |
| SA · SS · SX | 0–8 | arc · fronde · arbalète |
| CA | 0–71 | 4 variantes de sort |
9 + 7 miroirs
S à N stockées, sept orientations est obtenues par miroir. Pas « 9 + 5 ».
Frames 1×1, indice 2
CHFB1G11 : 846 entrées, 90 frames réelles. Garder frame, lookup, centre, cycle ; ne sauter que l'inférence.
Router, pas remplacer
CHFB1–3 sert 6 animations, WQN* 13. Le DLL route déjà par ID d'animation → memberships → composant.
xBR et ReboutCX, en x2 et en x4
Codex a calculé les quatre variantes sur 60 vraies frames. xBR choisit la géométrie sur les couleurs « clown » et transporte les indices ; ReboutCX traite un aperçu recoloré et récupère l'alpha et les classes du guide xBR de même échelle. Affichage à 8 pixels écran par pixel source.
Témoin exact
Couleurs source exactes, contours améliorés, marches restantes. Aucune nuance nouvelle. Voie acceptée en QA pour les personnages jouables (avec Catmull-Rom).
Témoin fin
Vrai xbr4x, pas deux passes x2. Courbes plus fines, mêmes couleurs : peu d'intérêt seul.
Réseau x4 + BOX
Pas de modèle x2 : réduction BOX en flottant avant arrondi. Surfaces plus régulières, petits reflets parfois lissés.
Master de recherche
RRDBNet 64nf/23nb, 16,7 M paramètres, RGB sans alpha ni mémoire temporelle. Provenance et licence inconnues.

CHFB1A1, 100 ms par image (cadence comparative). Les couches d'équipement ont été évaluées séparément.La découverte qui oriente tout. Refaire l'inférence ReboutCX sous une autre palette, au lieu de recolorer le résultat, change 31,99 % / 44,39 % des indices du corps, 20,26 % / 36,28 % de l'armure lourde, 30,91 % / 37,04 % du casque. Le réseau n'ombre pas pareil selon les couleurs qu'il reçoit.
Conserver les classes garde la recoloration, mais pas un bon modelé sous toutes les couleurs. D'où l'ajustement multi-palettes.
Candidats limités à la frame source. Autoriser toute la classe ne gagne que 5,9 % (x2) et 6,2 % (x4) d'erreur. Le goulot est la discrétisation à 12 niveaux, pas le choix des candidats.
Ramener le modèle vers une palette vivante
Toutes partent de la même sortie ReboutCX et des mêmes classes (guide xBR). Seule change la façon de revenir aux couleurs dynamiques. Verdicts après toutes les revues.
| Code | Méthode | Stocke | Runtime | Verdict final |
|---|---|---|---|---|
| xBR | xBR direct, provenance d'indice | indice | actuel | voie acceptée · option |
| Q0 | Pipeline actuel : nuance la plus proche parmi celles de la frame x1, palette REF | indice | actuel | référence installée |
| Q1 | Idem, toute la classe | indice | masque de dépendances | gain nul en validation |
| Q2 | Bayer 4×4 ancré au centre BAM | indice | actuel | rejeté par défaut |
| Q7 | Diffusion d'erreur dans la gamme | indice | actuel | rejeté |
| Q6 | Un indice choisi sur K palettes à la fois | indice | V6 sans fraction | étape optionnelle |
| Q3 | Fraction ajustée sur REF seule (= interpolation Codex) | indice + fraction | V6 | surapprend la palette |
| Q3m | Fraction 3 bits ajustée sur K palettes | indice + fraction | V6 | cible |
| Q5 | Q3m + classe réestimée en HD | indice + fraction | V6 | aucun gain hors réglage |
| Q8 | Q3m + mélange pondéré de deux classes aux frontières | + plan frontière | V6 | après ablation, contraint |
Glisser, comparer
Composite corps en plates CHFF4 + casque HELM01 + bouclier ISHLD03 + épée BDSW1H06, face sud. Réglage sur REF, B, C ; D et E n'ont servi à aucun réglage (E ne diffère de REF que par l'armure).
- Q0 actuel sous B, D et E : liserés clairs ou orangés autour des plaques du torse et des jambières. Les mélanges 88–255 choisis sous REF deviennent voyants sous une autre palette.
- Q3m garde des volumes lisses ; Q8 fait disparaître presque tous les liserés. C'est la variante la plus proche de la sortie du modèle.
- Bayer : trame régulière sur les grandes plaques. Diffusion : grain qui change d'une image à l'autre.
- La sortie brute du modèle est recalculée pour chaque palette : une cible, jamais atteignable en jeu, où une seule version des indices sert toutes les couleurs du joueur.
Les méthodes Claude sur le terrain de Codex
Cycle d'attaque complet (14 images) de CHFB1A1, WQNS0A1, WQNC0A1, WQNJ6A1. Validation sur D et les profils Codex « contrast » et « pale ». L'interpolation Codex est exécutée avec sa propre fonction, importée en lecture seule.
Q3 et l'interpolation Codex sont la même idée : une fraction réglée sous une seule palette. Mêmes chiffres (47,2 et 47,0), excellents sous leur palette, faibles ailleurs.
Q8 : −23 % face au pipeline actuel, −20 % face à Codex ; sur D seule, 58,1 → 43,6.
sRGB ou lumière linéaire pour interpoler : 37,8 contre 38,1. Aucune différence utile : le runtime interpolera en octets sRGB, plus simple et exact au bit.
Limite : E5 ne contient pas Q3m, donc aucune ablation des frontières sur ce corpus.
En mouvement, et une erreur de signe
Codex a trouvé que l'alignement des images comparait des positions différentes dès que l'ancre bougeait : ox = (centre_b − centre_a) × échelle au lieu de (centre_a − centre_b). Test synthétique : 5 comparaisons fausses sur 5 avant, 0 sur 6 après. Les chiffres ci-dessous sont recalculés.

Part des pixels immobiles (cible Δ < 0,01) dont la sortie change de plus de 0,02. Toujours publier l'agrégation : sur les 4 couches non pondérées, Q8 fait 13,6 → 10,0 % ; pondéré par pixels, 13,2 → 4,9 %.
Décision nuance par nuance
Quand le modèle hésite entre deux nuances, une variation infime bascule des pixels entiers. Avec la fraction, la même hésitation ne coûte qu'un huitième de nuance.
Bayer : non par défaut
Erreur pixel +6 à +10 %, trame visible. Après flou σ 0,5 il fait mieux qu'aucun tramage (0,0125 contre 0,0139), mais l'interpolation fait mieux encore (0,0114). Bruit renouvelé : interdit.
Pas de suivi de surface
Pixels alignés par ancre, ombre incluse, boucles et durées ignorées. L'attaque E5 a trop peu de pixels immobiles pour conclure. Il faut un flot restreint aux classes.


x2 ou x4 à l'écran
Le jeu garde la géométrie d'origine et affiche la texture à la taille du zoom. Le runtime n'a aujourd'hui ni mipmap ni filtre de réduction : MIN et MAG partagent le même mode (Nearest, Linear ou CatmullRom), GL_TEXTURE_MAX_LEVEL = 0.
Lecture corrigée. Chaque image montre à gauche le plus proche voisin, à droite une réduction d'aire. L'écart entre les deux ne désavantage le x4 qu'au zoom entier 2, où le x2 est exact par construction. À 1,0, 1,3 et 3,0, le x4 crénelle moins que le x2. L'affirmation « x4 utile seulement dès zoom 3 » est retirée.
En jeu, le 26/09 : x4 ReboutCX sur tout 0x6110, en plus proche voisin, jugé « légèrement meilleur que x2 », 59,1–60 FPS, p95 16,8–17,3 ms, puis restauré en x2.
| Essai x4 du 26/09 | x2 | x4 |
|---|---|---|
| Indices non compressés | 947,6 Mo | 3 790,4 Mo |
| Registre compressé | 195,9 Mo | 309,6 Mo |
| Rapport | — | ×1,58 |
| Appréciation | référence | légèrement meilleur |
Les chiffres
4 couches, repos sud (20 poses) et marche sud (10), 5 palettes. Écart = ΔE OKLab moyen ×1000 par rapport à la sortie du modèle sous la même palette. Plus court = mieux. Fidélité à une cible générée, pas beauté perçue.
Taille : échantillon zlib ; méthodes fractionnaires en « classe + position 3 bits, delta horizontal ». Le plan frontière de Q8, le masque et les métadonnées ne sont pas comptés ; zlib n'est pas le codec XPRESS du DLL. Palettes : D partage 1 canal sur 7 avec le réglage, E en partage 6.
Ce que chaque relecture a corrigé
Les études d'origine restent intactes. Les erreurs sont listées ici avec leur preuve ; aucune n'inverse l'architecture, plusieurs changent l'ordre ou la portée des décisions.
| Affirmation | Source | Correction | Trouvée par |
|---|---|---|---|
| Catmull-Rom « non implémenté » | synthèse Codex | Mode CatmullRom présent (shader 4×4 prémultiplié) ; QA xBR des personnages jouables acceptée avec ce filtre le 11/09 | relecture finale |
| Palettes de validation « jamais vues » | toutes | E : 6/7 canaux communs avec l'entraînement, CX-B 5/7, CX-C 4/7, D 1/7 | relecture finale |
| Gain Q8 attribué aux frontières | présentations | 77 % du gain vient de Q3m ; frontière ≈ 5 % | relecture finale |
| « x4 crénelle plus que x2 au zoom habituel » | Claude | vrai seulement au zoom 2 exact ; en jeu, x4 jugé légèrement meilleur | relecture finale |
| « ReboutCX accepté en jeu sur 0x6100 » | revue Claude | 2 compositions acceptées + 1 non-infériorité, préférence non tranchée ; xBR reste la voie acceptée à l'échelle | relecture finale |
| Fraction « q/7 » | synthèse Codex | f/8 vers la nuance suivante, 89 positions, comme mesuré | relecture finale |
| « La 2e arme garde la sémantique arme » | synthèse Codex | non démontré ; sans effet sur l'encodage (palette capturée par cellule) ; test en jeu | relecture finale |
| « Étendre la clé de cache à la palette » | Claude | déjà le cas (reboutcx_cache_p12.py:33-39) | relecture finale |
| E5 temporel | revue Claude | même erreur de signe que E3b (e5_cross.py:237) | relecture finale |
Le moteur lit RANGES12 | Claude | MPALETTE ; fichiers identiques | Codex |
Paperdolls WPM ; H6 et ZW à produire | Claude | WPN ; H6 = attaques, ZW interdit aux humains | Codex |
| Alignement temporel | Claude E3b | signe inversé ; corps Q0 → Q8 : 14,07 → 4,82 % | Codex |
| Q8 « 3 bits » ; taille ×2–×2,3 | Claude | mesuré en 4 bits (3 bits ≈ sans perte) ; taille = celle de Q3m sans frontière | Codex |
| « Plancher 0,04 infranchissable » | Claude | résiduel de ces méthodes, pas une borne | Codex |
| Classes complètes : DLL obligatoire / aucun changement | Codex / Claude | rendu inchangé, mais le sens des dépendances change : masque explicite V6 | croisé |
| Repos échantillonné (4 poses / 12) | Claude E3 | E3b : 20 changements de pose | Claude |
Un sprite HD qui reste une palette
Le master contient la géométrie, la classe de chaque pixel et une position continue dans sa gamme ; le moteur fournit les couleurs. Le joueur garde ses choix, les effets de palette suivent sans code spécifique.
// registre V6 = V5 + ajouts optionnels plan I u8 indice de base (identique V5) plan F 0..7 fraction vers succ(I) // absent ⇒ V5 exact dep_mask 256 bits entrées de P lues // fail-closed plan B option (pixel, I2, F2, W 1..7) aux frontières // décodage bit-exact, Python = C++ succ(i) = i+1 dans la gamme ou la paire, sinon i lerp8(a,b,f) = (a·(8−f) + b·f + 4) >> 3 pixel = lerp8(P[I], P[succ(I)], F) frontière = (C(I,F)·W + C(I2,F2)·(8−W) + 4) >> 3 LUT = 2 048 entrées par palette de couche
Recherche exhaustive
Pour chaque pixel, les 89 positions de sa gamme sont décodées sous les K palettes et comparées en OKLab. On garde ce que le runtime affichera vraiment.
K = 3 à 6
REF + défaut guerrière (30 91 93 12 23 93 2) + palettes « carré latin ». Validation : 10 palettes sans aucun canal commun.
Réencoder
BOX des cibles x4 en flottant, puis encodage à x2 avec le guide xBR2. Jamais de réduction des plans déjà quantifiés.
Sous contraintes
Meilleure classe voisine (pas la première), ≤ 2 canaux, poids primaire ≥ 1/8, acceptée seulement si le gain est net sur toutes les palettes.
| Paramètre | Valeur | Preuve |
|---|---|---|
| Ressource palette | MPALETTE.BMP, jamais modifiée | confirmé |
| Modelé | ReboutCX x4, K inférences par frame (0x6110 : ≈ 282 000 pour K = 3) | mesuré |
| Sémantique | guide xBR même échelle + provenance d'indice | confirmé |
| Encodage | Q3m, fraction 3 bits | mesuré |
| Frontières | Q8 contraint, après ablation | à prouver |
| Interpolation runtime | octets sRGB, arrondi défini | mesuré |
| Tramage | aucun | mesuré |
| Échelle | x2 livré ; x4 option après étude de réduction | à mesurer |
| Reconstruction | CPU dans creature_sprite_x2.cpp | candidat |
| Alpha doux | reporté, expérience séparée | candidat |
Du banc d'essai à la guerrière complète
Des dépendances techniques, pas un rituel. Chaque phase produit de nouvelles versions ; rien d'historique n'est réécrit ; aucune validation n'est déduite d'une installation.
| Phase | Travail | On passe quand |
|---|---|---|
| P0 | Oracles : lecteur BAM complet, réalisation MPALETTE, banc d'évaluation corrigé (signe, masques séparés, agrégations) | réalisation exacte ; E3b reproduit |
| P1 | Inférence K palettes ; encodeur Q6 / Q3m ; 10 palettes disjointes ; K = 3/4/6 | Q3m bat Q0 sur chaque palette nouvelle |
| P2 | DLL : lecteur V6, masque, plan F, LUT ; golden tests Python / C++ | V6 sans plans = V5 au bit près |
| P3 | En jeu : CHFF4 + un casque, un bouclier, une épée, Q0 contre Q3m | validation explicite de l'utilisateur |
| P4 | Zoom réel ; x2 / x4 ; réduction d'aire ou mipmaps | décision datée |
| P5 | Ablation Q3m ↔ Q8 contraint | gain propre visible et mesuré |
| P6 | 0x6110 complet : 628 BAM, CHFF4 → CHFB1–3 → armes fréquentes → boucliers → casques | aucune frame manquante ; coûts mesurés |
| P7 | Paperdolls CHFF*INV, WPN*INV/OIN | mesures d'interface propres |
| P8 | Les 78 animations Character supportées ; les monstres à palette fixe n'ont pas ce problème | preuves par famille |
Commandes
C:MoveToArea("AR0700") puis C:CreateItem("PLAT01"), HELM01, ISHLD03, BDSW1H06, SW2H01, BOW01… Jeu et InfinityLoader fermés pour installer.
Recoloration et couches
Un canal à la fois ; deux guerrières aux couleurs opposées ; arme en main gauche recolorée par 0x1R puis 0x2R ; 9 directions + 7 miroirs.
Identiques au natif
Lueur pulsée de BDSW1H06, pause grise, invisibilité, pétrification, nuit, sélection, occlusion, 59–60 FPS.
Mon avis
Claude Code, après les deux revues croisées et la relecture finale.
Sûr
- Le goulot est la discrétisation à 12 niveaux, pas le choix des candidats.
- Le point d'action est le compositeur IEE existant : il a déjà la palette réelle de chaque couche.
- Toute solution reste exprimée en indices de gamme, jamais en RGB figé.
- Une recette apprise sous une seule palette ne généralise pas.
Incertain
- La tenue sur des palettes vraiment nouvelles : une seule l'est aujourd'hui.
- Le gain propre des frontières, faible sur E3b.
- Le coût réel du format sous XPRESS.
- La plage de zoom et la valeur du x4.
- Aucune mesure ne dit la beauté : tout se juge en jeu.
À faire maintenant
- Construire le banc corrigé et 10 palettes disjointes : quelques heures, et la question de généralisation est tranchée.
- Coder le lecteur V6 avec le test « V6 sans plans = V5 ».
- Montrer Q3m en jeu sur CHFF4 avant toute production large.
- Mesurer le zoom minimal et maximal.
Déconseillé
- Modifier
MPALETTEou égaliser les rampes. - Passer en BAM V2 ou en RGBA figé.
- Adopter Q8 sans ablation, ou un tramage par défaut.
- Lancer les 628 BAM avec une recette non validée en jeu.
Contenu et sources
Tout est dans sprite/Etudes_Sprite_codex_claude/. Les données sont intègres ; plusieurs scripts dépendent de chemins absolus (Bureau, Python chaiNNer) et se rejouent dans une nouvelle version d'étude.