Actualité
daedaluskz0

DAEDALUS: encore plus de vitesse...

par
Source: 0635425

StrmnNrmn, auteur de Daedalus, poursuit son travail exemplaire. Au menu : un autre gain de vitesse considérable grâce à l'amélioration du code.


Nous vous parlions des quatre dernières optimisations intégrées dans Daedalus et prévues pour la prochaine version dans cette news :  Daedalus avance encore et toujours

Rappelons-nous que ces modifications mèneront à une vitesse d’émulation accrue de 10 à 15%, en fonction du jeu et de ces caractéristiques propres.

Aujourd’hui, StrmnNrmn explique, qu’en relisant son code, il a eu une révélation. En modifiant "simplement" quelques lignes de code, il pourra obtenir un gain sérieux de vitesse.

Sans rentrer dans les détails, voici ce que StrmnNrmn donne comme exemple:
 

Citation: ADDIU a0 = s1 + 0x0024 # add offset to base register
SLT t0 = (a0
BEQ t0 != r0 --> _Trampoline_XYZ123 # branch to trampoline if invalid
ADDU a1 = a0 + s7 # add offset to emulated ram
LW s0

Commenter 15 commentaires

hlide_1
j'ai lu la version anglaise qui est très claire pour quelqu'un qui s'entend à merveille avec le monde MIPS et qui n'a pas peur de la technique. Bref, ce blog serait plutôt destiné aux dévelopeurs à vrai dire.

Concrètement, il vient de découvrir une technique qui lui permettrait d'émuler les accès en mémoire vive de la N64 par le biais de la paire d'instruction SLT/BEQ et qui lui permet de détecter quand il n'accède pas à la mémoire vive émulée de la N64. Autrement dit, TANT que ce code accède à de la mémoire vive (généralement toutes les données du jeu N64 s'y trouvent), la lecture/écriture en mémoire se fait instantanément sans émulation.

Cette technique a été implémentée aussi dans gpSP dans sa révision 9 (la denière en date) mais en mieux.

sinon il a quelque vague idée pour réduire le code généré. Pour vous donner une idée, c'est comme si vous appercevez que vous faites une addition :

x = y + 100

puis

x = x + 200

ben vous avez envie d'écrire :

x = y + 300 à la place

il aimerait faire quelque chose d'approchant pour le code généré où on a des situations qui se rapprochent de ça.

note à l'auteur, synthétise, synthétise ! la traduction de la partie technique n'a aucun sens.
Signaler Citer
Avatar de l’utilisateur
Tom Vivares
Je suis impatient de pouvoir tester la prochaine release.
Ca va me choquer tout ce gain de vitesse , je m'etais arrété à la V6 de l'emu... :lol:
Signaler Citer