mercredi 27 mai 2020

Wazp3D beta 56 1.1

Petit soucis de fichier configuration corrigé dans cette nouvelle version, il est maintenant le même que la version beta 56 sur Aminet (c'est à dire Wazp3D.cfg au lieu de Wazp3D_v10.cfg de ma version 1.0)... Je pensais qu'il était incompatible avec la dernière d'Alain mais non en fait...

J'ai sous-estimé l'Amiral Thellier, ouh là, il va m'en vouloir...

Quelques fonctions ont été légèrement oprimisées, StarShipW3D monte un peu plus haut, à 400/423 fps contants cette fois...

Disponible ici, et gratuit comme toujours !
      

samedi 16 mai 2020

miniGL 1.21

Voici une nouvelle version de l'open source miniGL 1.2 sur Aminet.

Sachant que le succès de l'Amiga à ses débuts était dû à une bonne partie de sa logithèque programmée en asm, retour donc aux fondamentaux maintenant avec pour objectif le passage total du code C de miniGL tout en assembleur 68k. Rien n'est prévu pour le PPC, ce CPU n'a plus aucun avenir de toutes les façons...

Si des codeurs veulent se joindre à moi, allez-y contactez-moi : attention, un niveau assez élevé est requis.

Bref, l'Amiga mérite du code de qualité, ras-le-bol des compilos C...
  
Voici les règles générales d'optimisations que je m'applique et que je recommande à tous :
  • utiliser le moins d'instruction possible dans presque tous les cas. Rares exceptions pour les loops importantes,
  • ne jamais utiliser les instructions manquantes des 040/060, c'est-à-dire celles émulées par la 68040.library et 68060.library,
  • n'inliner que les petites sous-routines, jamais les moyennes ni les grandes,
  • toujours utiliser les pipelines du 060 en ordonnant correctement les instructions entres elles,
  • toujours préférer le mode PC relatif, jamais ou très rarement les adressages absolues,
  • ne jamais pré-charger les datas dans les registres internes de façon à ce que le CPU utilise au mieux son datacache,
  • toujours utiliser les six registres scratchs (d0, d1, a0, a1, fp0 et fp1) le plus judicieusement possible,
  • passage des args par les registres plutôt que par la pile,
  • utilisation des boucles le plus souvent possible.

Les sources d'Aminet ont été compilé avec gcc 2.95.3-4. La librairie est compatible avec gcc 3.4.0 et le dernier gcc 6.5.0b. J'ai déjà optimisé 4 petites routines :
  1. _GLPushMatrix : 72 octets économisés par rapport à gcc
  2. _GLPopMatrix : 54 octets économisés par rapport à gcc
  3. _TMA_Check : 24 octets économisés par rapport à gcc
  4. _TMA_Start : 22 octets économisés par rapport à gcc
  
Notez que je recherche les sources de la version précédente à la 1.2 (peut-être nommée 1.15 ?) ayant servit pour la compilation du jeu commercial bien connu Quake2.

Sources et librairies compilées disponibles ici !
     

samedi 9 mai 2020

soft3d.library 53.1

La soft3d.library fait partie du package Wazp3D et sert de pont entre l'Amiga et la soft3d.dll en x86. Attention, cette dernière est maintenant à déplacer de votre répertoire WinUAE/ à WinUAE/winuae_dll/ sinon vous aurez un message d'erreur.

Là encore avec le passage en full assembleur, un sacré paxon de code inutile a été dégagé, la librairie passe de 98 032 octets à seulement 3012 !

Petite peine cependant avec le mode "Hard" : aucun speedup. Mais avec le "Soft to bitmap", les fps explosent avec les programmes comportant peu de triangles :

Regardez par vous même :
  • StarShipW3D v1.2 : 313/327 fps => 514/533 fps
  • CavalleryW3D v1.2 : 257/276 fps => 342/360 fps
  • CoW3D v5.3 : 79 fps => 79 fps 

Toujours la même déception avec la CoW3D et ses nombreux 5813 triangles. Il y a un problème quelque part, j'avais le même soucis avec les vrais drivers Warp3D sur le vrai hardware...

Disponible ici, et gratuit comme d'habitude !
     

vendredi 8 mai 2020

Wazp3D 1.0 (WinUAE)

Dans la foulée, voici la version pour WinUAE tout en assembleur 68k maintenant. Cette version de Wazp3D beta 56 spécifique à l'émulateur utilise deux spécificités des PC :
  1. utilisation du GPU de votre carte graphique ("Hard" et "Hard (overlay)")
  2. ou rendu calculé par les CPUs x86 ("Soft to bitmap")
 
Attention sur ma configuration, j'ai été obligé de sélectionner ces deux paramètres afin d'obtenir les bonnes couleurs à l'écran, sachant que le rendu "Hard" ne fonctionne qu'en 32bit :
 
Le speedup est assez décevant, en mode "Hard" :
  • StarShipW3D v1.2 : 327/342 fps => 327/342 fps
  • CavalleryW3D v1.2 : 266/276 fps => 266/288 fps
  • CoW3D v5.3 : 116/118 fps => 118/122 fps

Et en mode "Soft to bitmap" :
  • StarShipW3D v1.2 : 300/313 fps => 313/327 fps
  • CavalleryW3D v1.2 : 248/266 fps => 257/276 fps
  • CoW3D v5.3 : 77 fps => 79 fps 

Alors pour quelle(s) raison(s) ? Mon PC déjà est équipé d'une petite GT740. Ensuite, est-ce que le système RTG Picasso96 ralentirait l'affichage de la 3D ?

Disponible ici, et gratuit comme toujours !

(Le fichier de configuration est toujours le même que l'original, à savoir "Wazp3D.cfg". Je vais faire machine arrière avec la version -full, en supprimant le _v10 dans la prochaine version)
      

vendredi 1 mai 2020

Wazp3D beta 56 1.0

Wazp3D beta 56 a été complètement retranscrit en 47 600 lignes d'asm 68k : plus un seul source en C/C++, ça fait du bien... Pour ceux qui débarquent, rappelons que Wazp3D est une réécriture complète de Warp3D en n'utilisant cette fois que le CPU pour tous les calculs 3D :

Tout d'abord, saluons tous ensemble l'esprit chevaleresque de notre petit génie national cocorico Alain Thellier pour avoir diffusé son code source m'ayant beaucoup aidé. De plus, sachez que c'est mon tout premier projet software 100% professionnel avec maintenant un unique source asm 68k complet incluant toutes les structures, et même les commentaires de son auteur : mériterait la Légion d'Honneur de l'Amiga cet Alain quand même...

Le soucis majeur du C/C++ est que le programmeur se met sous la dépendance d'un compilateur dont nous ignorons tout du code qu'il va alors produire. Voilà ce qui me chagrinait avec le source C mis à disposition. Wazp3D est enfin "sauvé" des méandres d'un obscur gcc... Maintenant plus aucune surprise : le source est en pure asm 68k.

Wazp3D est surtout destiné aux CPUs puissants, car les mathématiques prennent beaucoup de temps aux processeurs et coprocesseurs : j'ignore au jour d'aujourd'hui s'il est possible d'obtenir une librairie rapide pour nos Amiga 68k originaux : sans l'aide des GPUs, la tâche est bien plus difficile pour arriver à des fps décents...

Pour cette version 1.0, tous les debugs ont été supprimé car realtime : en effet, le petit programme de préférence Wazp3D-Prefs permet de sélectionner en temps réel bon nombre d'options de débogage. Le problème est que même lorsqu'elles sont désactivées, les tests sont toujours exécutés par la librairie, donc prennent du temps CPU inutile...

Bref, si un développeur a besoin des informations de debug, il peut toujours utiliser la dernière version d'origine disponible sur Aminet, tandis que les utilisateurs s'en fichant, la mienne :
  
Nouvelle version 1.0 basée sur la béta 56 donc, un peu plus rapide sur ma configuration PC :

Avec un écran WinUAE 32 bit en RGBA sous Picasso96
  • StarShipW3D v1.2 : 360/378 fps => 378/400 fps
  • CavalleryW3D v1.2 : 184/189 fps => 189/194 fps
  • CoW3D v5.3 : 32 fps => 33 fps
  
Avec un écran WinUAE 24 bit en RGB sous Picasso96
  •  StarShipW3D v1.2 : 720 fps => 800 fps
  •  CavalleryW3D v1.2 : 248 fps => 266 fps
  •  CoW3D v5.3 : 33 fps => 34 fps

Attention, le fichier de sauvegarde des préférences de Wazp3D va être obligatoirement sauvegardé de Wazp3D.cfg en maintenant Wazp3D_v10.cfg, tout en utilisant le même Wazp3D-Prefs !

Vieux projet de fin 2018 que je mets enfin à disposition : je voulais au départ rendre le source open, mais les vampires vont utiliser mon travail pour me rendre complice de leur entreprise de pompage d'énergie afin d'achever notre machine préférée. Voilà où nous ne sommes arrivé aujourd'hui à cause de leur division AMMX... Et ils ont même infecté le 1200 dernièrement, incroyable...

Disponible ici !