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