Index      Informations     Tuteurs      Téléchargements     Liens     Productions


F A Q


Avec quoi avez-vous codé "Hypodermik"? Comment avez-vous fait?

Hypodermik a été compilé sous DJGPP. Il a été écrit en C à 100%, et les libs 2D et 3D ont entièrement été écrites par nous. Nous avons utilisé MIDAS pour jouer le module .XM. Je ne donnerai pas de code source pour ce demo! Nous avons travaillé un mois sur ce demo et nous ne voulons pas, pour l'instant, donner nos sources. Cependant, je peux expliquer en français certains effets si on me le demande.

J'aimerais convertir tes sources vers DJGPP. Comment faire?

Je n'ai pas l'intention de poursuivre mes tuteurs sous DOS, et je n'ai pas vraiment le temps de convertir mes sources vers DJGPP. Cependant, j'ai écrit un petit programme qui devrait au moins vous mettre dans la bonne piste. Il ne fait qu'afficher un pixel en mode 13h. Téléchargez-le ici! Cliquez ici!

Ton code source DOS refuse de compiler sous DJGPP/Visual C++/Watcom C ?

Mon code source compile sous Turbo C++ 3.0 et sur Borland C++ 4.x/5.0 (à condition d'avoir spécifié un projet DOS, bien entendu!). Mon code est très loin d'être certifiable ANSI C, parce que je fais de la programmation orientée vers un système précis (carte vidéo). DJGPP est un compilateur 32-bit basé sur le GNU C, donc il existe certaines petites différences dans la syntaxe, mais il fonctionne également en mode protégé, ce qui change grandement l'accès à la mémoire. La même chose s'applique pour Watcom C. Visual C++ est un compilateur fait spécialement pour développer sur l'API Win32 de Microsoft. Il est donc évident que mon code source DOS ne compilera jamais sous Windows.

L'important est que les algorithmes présentés soient indépendants du langage utilisé; avec un peu de patience, la conversion d'un langage à l'autre est très facile, et souvent vous aurez de bien meilleurs résultats qu'avec un compilateur 16-bits.

Je possède Borland Turbo C++ 3.0 mais ton code DOS refuse de compiler!

Pour pouvoir travailler en toute quiétude dans le Borland IDE (Integrated Debugging Environment), il faut d'abord bien mettre sur pied la configuration de cet environnement. Premièrement, nous utiliserons plus souvent qu'autrement le modèle mémoire Compact, pour avoir accès à + de 64k de code et + de 64k de données. Dans l'IDE, allez dans le menu Options. Ensuite, choisissez Compiler, puis Code Generation. Dans ce menu, vous avez le choix entre différents modèles mémoires. Sélectionnez alors le modèle Compact.

Ensuite, il faut pouvoir faire appel aux instructions 80286 et utiliser le coprocesseur mathématique pour les calculs à virgule fixe. Encore dans le menu Options, choisissez Advanced Code Generation. Dans ce menu, sélectionnez Instruction Set à 80286, et Floating Points à 80287. Voilà, votre compilateur peut maintenant faire appel à ces options.

Finalement, nous aurons besoins de beaucoup de mémoire pour travailler avec les différents buffers. Pour se donner plus de mémoire, allez dans le menu Options, puis dans le sous-menu Debugger. Inscrivez dans le Program Heap Size la valeur 512, ce qui nous réserve 512K de mémoire conventionelle pour notre programme, ce qui est vraiment plus que nécessaire pour ce que nous allons faire.

Je possède Borland C++ 4.x/5.x et ton code source refuse de compiler?

Quand on travaille sous Borland C++ pour Windows, il faut spécifier tout d'abord quelle plateforme vise notre programme. Dans le menu Project, on choisit New Project. Il faudra ensuite spécifier le type d'éxécutable Dos Standard, et sélectionner le modèle mémoire Compact. Le code devrait maintenant compiler sans problème.

Comment compiler un module assembleur (avec TASM) qui est intégré à du code C?

Il existe 2 façons de compiler de l'assembleur à l'intérieur d'un code source C. La première méthode consiste à  créer un fichier projet et d'inclure chaque module que l'on désire compiler. Par exemple, si on a un programme "morph.cpp", qui possède ses routines graphiques principales dans le fichier "morph.asm", il faudrait créer un fichier projet contenant ces 2 fichiers. Pour se faire, il faut sélectionner le menu Project, puis choisir Open Project. Après avoir donné un nom à notre nouveau projet, on choisit encore le menu Project. On choisit Add Item, puis on ajoute morph.cpp et morph.asm. Lors de la compilation, TASM assemblera le module morph.asm.

La deuxième méthode est pour ceux qui veulent que l'assembleur Inline soit compilé par TASM, et non BASM. Pour ce faire, on utilise la commande préprocesseur pragma. On spécifie ensuite le modèle compilateur désiré. Et voilà! Cependant, chaque ligne qui devra être assembler par TASM devra absolument être précédé du mot clef "asm". Par exemple:

// Exemple d'appel d'assembleur inline par TASM

#pragma inline
asm .386p
asm MESSAGE DB "Allo de Turbo Assembleur dans C++$",13,10

void main()
{
  asm MOV AX, 3
  asm INT 0x10
  asm MOV AH, 9
  asm XOR AL,AL
  asm MOV DX, OFFSET MESSAGE
  asm INT 0x21
}

Le compilateur fait l'erreur 'TASM not found' quand je veux appeller Turbo Assembleur?

Il faut tout d'abord s'assurer que le programme TASM se trouve dans le path du système. Si vous travaillez sous Windows, un bon choix est le répertoire c:\windows\command. Il faut ensuite vérifier dans l'IDE de Borland si dans le menu Options / Tranfer, le répertoire de TASM est bien indiqué. Modifiez-le au besoin et tout devrait fonctionner normalement.

J'obtiens le message 'TASM2MSG not found' quand je veux utiliser Turbo Assembler?

Assurez-vous que le programme tasm2msg.exe soit dans le même répertoire que tasm.exe. Par exemple, c'est une bonne idée de mettre les 2 dans votre répertoire c:\windows\command afin d'être sûr qu'ils soient tous les deux dans le "path".

Ton code source n'est pas optimisé du tout!

Premièrement, je n'écris pas ces tuteurs dans le but de montrer mes talents de programmeur. En optimisant le code, je risque de perdre beaucoup de lecteurs qui ne sont pas encore très expérimentés. De toute façon, ces trucs d'optimisations viennent souvent par la pratique et l'intuition, donc j'assume qu'éventuellement le lecteur pourra lui-même les optimiser, ou en écrire de meilleurs. Je ne fais que mettre les bases sur lesquelles on pourra bâtir quelque chose de solide.

Deuxièmement, je connais la plupart de ces optimisations, mais je suis soit trop paresseux/occupé/fatigué pour les implementer. J'ai comme politique de publier seulement ce que je comprends, donc même si je possède plusieurs algorithmes d'optimisations, je préfère les conserver tant et aussi longtemps que je n'ai pas compris l'algo en question.

J'ai un devoir à faire en C. Peux-tu m'envoyer des sources?

Étant moi-même aux études, je n'ai pas vraiment de temps libres à consacrer pour aider les autres. Au début de ce site, j'ai aidé quelques personnes mais je me suis vite retrouvé débordé par mes propres devoirs, que je négligeais dans le but d'aider les autres. Désolé.

Où puis-je me procurer le compilateur Borland Turbo C++ / Turbo Assembler?

La dernière version de ce logiciel, la 3.0, est sortie en 1992. J'avoue qu'il n'est plus très évident de se la procurer. Une bonne recherche sur le net devrait cependant vous ramener plusieurs site FTP où il est encore possible de le télécharger.