dimanche 5 février 2017

CyberPatcher 1.154

Une nouvelle version de CyberPatcher de Phase5 est disponible !

J'ai en effet trouvé de nombreux bugs, toujours les mêmes d'ailleurs : des movem.l vides... Encore un coup du SAS/C...

Rappelons que cet astucieux programme permet de remplacer dans les programmes une partie des instructions absentes du 68060 et donc prisent en charge par la 68060.library...

Si j'ai bien compris, voici en résumant pour faire simple comment il fonctionne. Je rappel que ce blog est d'abord destiné aux débutants :
  1. une instruction absente est rencontrée, comme par exemple un fcos dans Quake,
  2. une exception "instruction non-implantée" est générée par le CPU,
  3. CyberPatcher dévie l'appel à la 68060.library,
  4. CyberPatcher scanne toute sa liste d'instructions émulées jusqu'à rencontrer le fcos en question,
  5. CyberPatcher remplace alors le fcos dans Quake et redirige vers ses routines à lui,
  6. si Quake exécute une nouvelle fois ce fcos, et bien aucune exception ne sera plus déclenchée,
  7. la routine de CyberPatcher sera ensuite toujours utilisée par Quake, et non plus le fameux fcos.

Il existe aussi OxyPatcher plus complet et qui fonctionne sur toutes les configurations 040/060. Alors que CyberPatcher a été développé uniquement pour les cartes Phase5, et ne supporte qu'une partie de toutes les instructions absentes du 060...

Regardons mon petit programme trigoSpeedTest qui est alors bien plus rapide :

Le SMul64 tout en bas est plus lent avec CyberPatcher car c'est un muls.l d0,d0:d1 qui est absent de sa scan liste... Plus lent car lorsque cette instruction est utilisée, et bien CyberPatch scanne toute sa liste à chaque fois et ne trouve rien, d'où la perte de temps...

J'ai donc rajouté ce fameux muls.l d0,d0:d1 dans ma nouvelle version 1.154, et tout est ok maintenant :

OxyPatcher semble être toutefois plus intéressant, je recherche son code source original...
  

Aucun commentaire:

Publier un commentaire

Posté vos remarques :