IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dev-C++ Discussion :

Dev C++ et mode VGA (13h)


Sujet :

Dev-C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Novembre 2002
    Messages : 89
    Par défaut [Résolu]Dev C++ et mode VGA (13h)
    Bonjour,
    je suis en train de réaliser un petit jeu que j'aimerais developper sous DevC++ (marre de TurboC). Or dos.h n'existe pas pour DevC++ donc pas de fonction int86, intdos... pour activer le mode 13h et les unions representant le registre ne sont pas definies. On m'a dis qu'il fallait alors l'activer en assembleur et que DevC++ ne supportait que l'assembleur AT&T. Ne connaissant pas du tout quelqu'un pourrait me donner le morceau de code dont j'ai besoin ou la syntaxte de l'assembleur?
    Merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Par défaut
    Utilise les librairies DirectX ou SDL plutôt que le bon vieux MS-Dos !
    (Dev-C++ tourne sous Windows, génère des programmes 32 bits en mode console ... pas des programmes DOS 16 bits)

    @+ Haypo

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Novembre 2002
    Messages : 89
    Par défaut Impossible
    Merci mais si ca tenait qu'a moi je le ferais avec allegro. Seulement c'est dans le cadre d'un pojet de mon ecole ou je n'ai le droit d'utiliser aucune bibliothèque externe...Donc pas trop le choix...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 235

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Novembre 2002
    Messages : 89
    Par défaut Merci cmarsc
    Apparemment on aurait le droit d'utiliser graph.h (winbgim.h sous dev-c++) donc c'est ce que je vais faire. J'ai quand même réussi à trouvé la réponse à la question de départ, je la met au cas où.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    // Mode vga (13h)
     
    void modeVGA()
     {
      asm("mov $0x13,%al\n
           mov $0x00,%ah\n
           int $0x10");
     }
     
    // Mode texte, retour à la normale
     
    void modeTXT()
     {
      asm("mov $0x03,%al\n
           mov $0x00,%ah\n
           int $0x10");
     }
    Voilà donc le code pour activer/desactiver le mode 13h sous Dev-C++.

  6. #6
    Membre averti
    Inscrit en
    Décembre 2005
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 40
    Par défaut
    En se qui me conserne il se passe un truc bisard sous visual c++ lorsque je veux passer en mode VGA.

    Voisi mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void main()
    {
          // activation du made VGA
          asm
          {
                 MOV AX, 0x13
                 INT 0x10
          }
     
     
          return;
    }

    Il me le compile corectement mais l'executable me produit une ereur fatal .

    Est ce par le fait que visual c++ est un compilateur win32.

    Comment faire en sorte ce code fonction sous visual c++

    Merci pour votre aide et dsl pour mon intrusion ou je profite impeux de la situation.
    Bay

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Par défaut
    je découvre l'asm mais en essayant avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void modeVGA()
     {
      asm("mov $0x13,%al\n
           mov $0x00,%ah\n
           int $0x10");
     }
    c'est donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void main()
    {
          // activation du made VGA
          asm
          {
                 MOV AL, 0x13
                 MOV AH, 0x00
                 INT 0x10
          }
    serrait plus logique (en terme de traduction asm at&t vers asm "x86")

    return;
    }
    d’ailleurs je suis étonné que int soit pris en compte par devcpp, j’essaie ça tout de suite !

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Par défaut
    int est en effet pris en compte et ne génère pas d'erreurs

    pas de soucis sauf si l'appli crash évidemment

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <cstdlib>
    #include <iostream>
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
       asm("mov $0x13,%al\n ");
       asm("mov $0x00,%ah\n");
       asm(" int $0x10");
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    ça compile mais ça crash, sujet à approfondir (faut dire que sous xp c'est pas super)

  10. #10
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Salut,

    Je suis surpris, ton code fonctionne vraiment avec Dev-C++ ?

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Par défaut
    oui cela est surprenant parce que c'est seulement une partie d'un code mais meme si il compile a mon avis sans les includes et tout ca derriere , ca plante ; mais il le compile bien.pour faire quelque chose d'exploitable, il faut voir le vrais code source ou ca a été pris

  12. #12
    Membre chevronné Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Par défaut
    Dev-C++ crée des exécutables "normaux" (32 bits), et de nos jours les OS ne laissent plus accéder directement au BIOS ou à la carte graphique (et niveau performance ça n'a aucun intérêt).
    Si tu utilises un compilateur 16 bits comme DJGPP ou Open Watcom Windows fera tourner tes exécutables dans une machine virtuelle qui simule une partie de l'environnement 16 bits, et apparemment les accès aux registres VGA et tout ça sont acceptés dans ce mode-là.
    Pour la syntaxe étrange avec les $ et les % c'est celle qui est utilisée par Gas, l'assembleur que GCC utilise pour compiler. Il n'y a plus besoin de s'embêter avec ça, il supporte aussi la syntaxe Intel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    asm
    (
       ".intel_syntax noprefix \n\t"
       "# commentaire \n\t"
       "/* autre commentaire */ \n\t"
       ".att_syntax prefix \n\t"
    );

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. graphique mode vga
    Par snakemetalgear dans le forum C
    Réponses: 3
    Dernier message: 04/04/2007, 09h27
  2. [Dev-Cpp] Différence mode Win32 Console / GUI
    Par Copros dans le forum Dev-C++
    Réponses: 1
    Dernier message: 08/06/2006, 21h45
  3. [DEBUG.EXE] pour un mode graphique (13h)
    Par powerpsy dans le forum Assembleur
    Réponses: 9
    Dernier message: 19/04/2006, 15h42
  4. mode VGA en visual c++
    Par sieuzac dans le forum MFC
    Réponses: 2
    Dernier message: 26/01/2006, 02h56
  5. [TP]mode vga
    Par mikoeur dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 05/07/2002, 23h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo