Mise à jour
Réécriture totale pour :
AES-home_path/cache
au lieu de /var/cache/xaaes
filename.depth
au lieu de noms longsAncienne version ci-dessous
Comme j'utilise ARAnyM, j'ignore à quel point ce patch peut être efficace sur du vrai matériel
xaaes.cnf
: textures_cache = <0|1> (booléen)
. Lorsque le cache est désactivé (0), aucun nouveau code n'est exécuté. Évidemment, textures
doit être activé (non zéro)/var/cache/xaaes/
doit être créé à la main (sinon les fichiers ne sont pas ajoutés au cache). Aucun autre dossier n'est requis (pour limiter le nombre d'opérations sur le système de fichiers)Pourquoi ne pas utiliser AES-home_path/widthheight.depth
? L'utilisateur peut basculer de 1024x768x32 vers 640x480x32 mais les fichiers du cache seront les mêmes
Pourquoi /var/cache/xaaes
? 1) C'est davantage conforme à FHS
W
, 2) Pas besoin de nouvelle variable pour spécifier le chemin, 3) À mon avis, le répertoire système de MiNT n'est pas le bon endroit pour placer ce genre de fichiers
xxxxyyyyyyyyppp.zzz
.Pour créer un nom de fichier rapidement, j'utilise les champs dev (int16)
et index (int32)
de XATTR
(attributs étendus) car à eux deux ils identifient un fichier de manière unique.
Par conséquent, il n'est pas nécessaire de stocker d'index : le nom du fichier EST l'index.
Donc, la longueur du nom de fichier est au minimum 4 (xxxx) + 8 (yyyyyyyy) = 12 caractères (sans extension) ppp est le nom de la palette (sans chemin d'accès). Inutilisé si nplanes>8
Sans cette info, le résultat pourrait être faux dans les modes <= 256 couleurs. Exemple :
- définir
palette=gem
- lancer, le cache est rempli avec les bitmaps prérendus pour la palette 'gem'
- définir
palette=nvdi
- lancer, le cache renvoie les bitmaps prérendus avec la palette 'gem'
zzz est le nombre de plans afin de pouvoir mettre en cache le même fichier pour chaque profondeur de couleurs dans un même dossier
Aucun nouveau fichier, 3 modifiés :
cnf_xaaes.c
et xa_types.h
=> ajout de cfg.textures_cache
trnfm.c
=> 2 nouvelles fonctions (get et put) + 1 modifiée (load_image).
Binaires: xaaes-20220718.zip
Implémentation actuelle | Implémentation avec patch |
---|---|
+ image_cache_get. Si succès, retour. Sinon, poursuivre | |
= décompresser fichier | = décompresser fichier |
= remapper les couleurs | = remapper les couleurs |
= changer le format des pixels | = changer le format des pixels |
+ image_cache_put |
/var/cache/xaaes/<dev><index><palette>.<depth>
(s'il existe) /var/cache/xaaes/<dev><index><palette>.<depth>
<XATTR><XAMFDB><DATA>
Dans XATTR, les date et heure de dernier accès sont définis à 'XC01' (XaAES Cache v0.1) comme valeur magique
Pourquoi ? les date/heure d'accès peuvent être actualisées sans que le fichier ne change, cette info ne doit pas être contrôlée
Une valeur magique permet des évolutions futures (p.ex. si un prochain code s'attend à trouver XC02, image_cache_get va automatiquement supprimer tous les anciens XC01 et image_cache_put créera les nouveaux XC02)
xaaes.cnf
pour modifier la palette personnalisée.
J'ai essayé de mettre le nom du fichier de la palette dans le nom complet du fichier en cache, mais bien que ça marche si la palette est définie dans xaaes.cnf
, il peut y avoir des problèmes après le chargement d'une nouvelle palette avec ctrl-alt-shift-P
.
Si un .img est chargé APRÈS le changement de palette, le nom du fichier en cache contiendra le nom de la palette tel qu'il est dans xaaes.cnf
mais le bitmap sera remappé avec la palette nouvellement chargée.Article précédent Article suivant