Explication du code source de "Fli"


Table des matières

Comment compiler la version DOS
Comment compiler la version Windows
Pages apparentées


Comment compiler la version DOS

Cette version est prévue pour être compilée avec TASM 3.2, qui était fourni il y a longtemps avec le Turbo Pascal de Borland.
Vous devez bien entendu modifier dans le fichier MakeDOS.bat les chemins d:\tasm32\tasm et d:\tasm32\tlink, avant de lancer l'exécution de ce makefile. Une fois l'exe créé, il est compressé par lzexe.exe, ce qui permet d'atteindre la taille finale de 4087 octets (rappel : dans les démo-parties, la compétition réservée aux programmeurs impose une limite maximale de 4ko, soit 4096 octets).

Bien qu'il s'agisse d'une intro sous DOS, elle fonctionne correctement sous Windows 98 et Windows 2000 : double-cliquez sur l'exe, puis (sous Windows 98) répondez "non" à la question "voulez-vous modifier les propriétés de son raccourci pour qu'il s'exécute toujours en mode MS DOS". Après le texte, l'écran doit passer tout seul dans la résolution 320*200 256 couleurs, si ce n'est pas le cas essayez la combinaison ALT+ENTREE.
A tout instant de l'intro vous pouvez passer à la partie suivante en appuyant sur ENTREE, ou quitter avec ECHAP.


Comment compiler la version Windows

Cette version est conçue pour être compilée avec MASM 6.14. Si vous ne l'avez pas, procurez-vous ce fichier, et procédez à l'installation. Copiez ensuite dans le répertoire \include les sous-répertoires \OpenGL et \WinExtra qui sont dans le \Masm32_Include de mes sources. Remplacez ensuite dans le fichier MakeGL.bat les chemins d:\masm32 par celui qui correspond à l'emplacement où vous avez installé Masm. Lancez l'exécution de MakeGL.bat, une fois l'exe créé il est compressé par upx et passe d'une taille de 10ko à 7ko.

Quelques informations sur cette version Windows :

- elle utilise OpenGL uniquement pour afficher à l'écran les images de l'intro, mais tous les calculs sont effectués par le CPU comme pour la version DOS. Il ne s'agit pas d'un programme accéléré par la carte 3D.
- si jamais l'intro est lente et dure plus de 2 minutes, c'est que vous avez un problème avec vos drivers graphiques ou qu'ils sont mauvais, et que la copie vers l'écran est effectuée en software. Cela m'est arrivé une fois, l'installation de drivers plus récents a résolu le problème. Cette intro a été testée avec succès sur GeForce 1/2/3 et Radéon, sous Windows 98 et 2000.
- l'intro s'exécute dans une fenêtre non redimensionnable de 640*400 pixels. En fait les calculs sont toujours effectués en 320*200, et l'image est agrandie au moment de l'affichage. Certains drivers ne semblant pas apprécier d'avoir à transférer un gros buffer en une fois (via glDrawPixels), la fenêtre est découpée en 4 parties égales.
- le passage à Windows nécessite évidemment un peu de code supplémentaire, d'où la taille de 7ko au lieu de 4. Mais je n'ai pas non plus spécialement essayé d'optimiser la taille de cette conversion. Mis à part l'utilisation d'OpenGL, les plus grosses modifications ont consisté à passer d'un modèle mémoire segment+offset 16 bits à un modèle 32 bits, et à supprimer le code auto-modifié (il est possible sous Windows d'écrire dans les pages de code, mais ce n'est pas recommandable).
- les touches ENTREE et ECHAP ont le même effet que dans la version DOS (respectivement partie suivante, et quitter).

Quelques liens utiles pour faire de l'assembleur sous Windows :

Iczelion's Win32 Assembly Homepage
Hutch's home page
UPX (outil de compression pour les exécutables au format PE)


Pages apparentées

télécharger les démos "à l'ancienne"
images des démos "à l'ancienne"
la scène démos


haut de la page