StrmnNrmn viens de mettre à jour son blog concernant Daedalus R11. Nous vous proposons une traduction intégrale de ce que StrmnNrmn a publié.
StrmnNrmn a donc dit, sur son Blog:
"Wow, ça faisait longtemps que je voulais fournir cette mise à jour. J'ai passé
du bon temps en Espagne, et après être revenu, j'ai passé de bonne soirée sur
Crackdown (jeu Xbox360). Cela m'a fait du bien de faire une petite pause pendant
quelques jours.
Depuis, j'ai travaillé sur les diverses fonctions que j'avais promis pour la
R11.
J'ai parlé un peu au sujet de la mise en tampons de textures, étant le coupable
principal pour avaler la mémoire pendant l'émulation. Quand j'ai commencé à
profiler ceci en détail, je me suis rendu compte qu'un des plus mauvais point
pour la consommation de mémoire était le support des texture miroir de 4 ou de 8
bits sur la palette de textures. Il y avait réellement deux problèmes principaux
qui aggravaient le problème.
Premièrement, je n'avais jamais pris en main une palette de texture directement
dans Daedalus. Je veux dire, au lieu de convertir une palette de texture de la
n64 sur une palette de texture sur la PSP, je l'ai convertit vers des textures
32-bit RGBA. Ce qui veux dire que sur la n64, 64x64 pixels avec une palette de
texture de 4-bit prendra 2KiB. En convertissant vers des textures 32-bit RGBA,
ça prendra 16KiB - la mémoire est utilisé 8 fois plus.
La deuxième soucis qui compliquait le problème était que la PSP ne supporte pas
des textures miroirs. Afin de supporter cette fonction, j'ai du manuellement
reproduire et faire la texture miroir. Ceci signifie qu'une texture 64x64 miroir
le long des axes S et T sur le n64 deviendra une texture 128x128 sur la PSP.
Le problème principal que j'ai rencontré dû au manque de mémoire était à cause
d'une lourde utilisation des palettes de texture miroir 4-bit dans certains
jeux. Une palette de texture 64x64 4-bit qui prend 2KiB sur la n64 consommerait
un énorme 64KiB sur la PSP - 32 fois l'augmentation ! Le problème était que
certains jeux employaient des douzaines de telles textures dans une simple liste
d'affichage, et la mémoire disponible était rapidement épuisée.
Ainsi, les couples de semaines où je travaillais à récrire les textures de
Daedalus, était pour le support des palettes de texture 4-bit et de 8 bits
directement. Ceci a pris beaucoup plus du temps que je pensais, en raison du
nombre d'endroits dans le code qui doivent communiquer avec les données de
texture directement. J'ai également passé une semaine en essayant de dépister
deux bugs horribles (dont tous les deux se sont avérés être des erreurs de
logique de ma part).
L'autre bonne nouvelle à propos de mon travail est que non seulement le support
des palettes de texture économisait beaucoup de mémoire, mais également un petit
bénéfice était visible au niveau des performances. Produire moins de données de
texture signifie généralement un peu moins de travail pour le CPU (la mémoire
cache est moins utilisée), ainsi convertir des palettes de texture se fait
maintenant un peu plus rapidement. Les palettes de textures sont également
beaucoup plus efficaces au rendu (la plupart du temps étant donné qu'ils
consomment moins de bande passante du bus et peuvent faire une meilleure
utilisation de la cache des textures de la PSP.)
L'autre grand gros morceau du travail est d'améliorer la manière dont je
manipule les préférences pour chaque ROM. Un des grands problèmes avec
l'installation actuelle de Daedalus est que le principal daedalus.ini se compose
de détails à la rom spécifique (comme le nom de la rom, type de sauvegarde,
commentaires, etc..) et des préférences définies par l'utilisateur (telle que la
synchro de vitesse, désactiver le dynarec etc..). Ceci signifie que je ne peux
pas mettre une nouvelle version de daedalus.ini sans éliminer les préférences
locales des utilisateurs.
Ce que j'ai fait maintenant est de couper daedalus.ini en deux fichier :
roms.ini contiendra les détails spécifique à chaque roms, et une version mise à
jour sera distribuée avec chaque version de Daedalus à partir de maintenant. Si
je sais que le dynarec empeche à certaine ROM de se lancer, je peux ajouter une
correction pour ceci dans roms.ini, et chacun pourra en profiter dans la
prochaine sortie. Un autre bon exemple est le SaveType ; chaque version de Super
Mario 64 emploie 4k EEPROM, et ainsi une fois que ceci est configuré dans
roms.ini, elle devrait ne jamais avoir besoin d'être modifié.
L'autre fichier que j'ai créé s'appelle preferences.ini. Ce fichier n'ira pas
avec Daedalus - l'émulateur le créera la première fois que vous changez des
paramètres en jouant à une rom, et les mettra à jour avec les changements que
vous ferez dans le futur. Ceci signifie que quand vous copiez une version "fraiche"
de Daedalus sur votre Memory Stick, la nouvelle version prendra votre fichier
existant de preferences.ini et ainsi se rappellera de tous vos paramètres.
Les paramètres que Daedalus pourra garder en mémoire pour chaque rom sont :
Vérification des mises à jour des textures
Frameskip
Limiter les Framerates
Recompilation dynamique (utilisé pour remplacer les paramètres dans roms.ini si vous avez un soucis avec le dynarec)
Audio
Ajuster la Fréquence
Contrôleur
Dans les prochains mois, encore plus
d'options seront configurables
Les autres paramètres qui seront stocké dans preferences.ini (que je n'ai pas
codé) sont toute les options depuis la page "Paramètres Globaux" - comme la
taille du viewport, montrer les zones mortes, choisir d'afficher le framerate ou
non, etc...
Donc R11 s'annonce plutôt bien, même si cela prend un peu plus de temps que je
ne l'avais prévu. J'ai encore quelques points sur lesquels travailler, mais
j'essayerais de vous tenir au courant des avancées pour la prochaine version.
-StrmnNrmn "
Tout ceci s'annonce vraiment bien, comptez sur nous pour vous tenir au courant !
Source : http://strmnnrmn.blogspot.com/
Traduction par PSPgen
Reproduction autorisée uniquement avec citation de PSPgen et
lien actif vers cet article.
Retrouvez les précédents articles récents sur ce sujet :
À
quoi s'attendre pour Deadalus R11 ?
DAEDALUS R10 traduit en français
Daedalus R10 est là !
Commentez cette news en cliquant ICI