La précédente 1.1 avait un petit talon d'Achille avec le 68040, je dois l'admettre : 37 fintrz et 2 fint étaient présents dans la librairie de façon à favoriser plutôt le 060, entrainant de fait une dépendance à la 68040.library puisqu'elles sont absentes des transistors de ce CPU.
Alors, même si Wazp3D fonctionnera sur 68040 forcément plus lentement que sur son grand frère le 68060, j'ai tout de même consacré environ 5 jours à remplacer la totalité de ces 2 instructions manquantes par du code cette fois bien présent dans le cœur du 040, histoire de fignoler un peu plus l'excellente librairie de notre Maréchal Thellier...
Et comme je conseillais
ici de ne jamais utiliser les instructions absentes des 040/060, il est de bon ton de montrer l'exemple il me semble...
Peut-être qu'un talentueux développeur hardware sortira un carte 040 très rapide un jour, qui sait...
Bref, une détection du 68040 a été ajouté et redirige alors toutes les routines utilisant les fintrz et fint vers d'autres équivalentes spéciales 040, le tout de façon automatique, les utilisateurs n'ont rien à faire... De cette manière, les 68881/68882/68060 utilisent ainsi leurs fintrz et fint, et le 68040 ses propres routines sans : tous les 020+/881+ sont ainsi contents ! Et ce dans un unique fichier Warp3D.library !
La sous-routine _AntiAliasImage (ne fonctionnant qu'avec le rendu "soft68k to Image") a été entièrement refaite, entrainant un gain impressionnant de 59 fps avec la version 1.1 à maintenant 93 fps (soit +34 fps) sous la petite démo CavalleryW3D et ma config PC personnelle :
Sachez que beaucoup est encore optimisable, mais le boulot à consacrer est aussi assez important pour un speedup général à mon humble avis ensuite assez faible...
Vous comprenez tous mieux maintenant pourquoi j'avais retranscrit toute la librairie en asm68k : tout ceci est impossible à réaliser en C/C++...
Disponible
ici, et gratuit comme toujours !