Partage
  • Partager sur Facebook
  • Partager sur Twitter

plasma qui bug

    5 novembre 2006 à 13:13:41

    salut

    voila mon code (mon premier vrais programme graphique depuis que j'ai découvert TurboC ilya quelques jours), c'ets un effet plasma sous VGA, comme en qbasic :)

    #include <stdlib.h>
    #include <stdio.h>
    #include <dos.h>
    #include <io.h>

    static char Palette[4*3] = {0,0,0,0,0,63,0,63,0,63,0,0};
    union REGS regset;
    struct SREGS sregs;

    void load13h()
    {
            regset.x.ax = 0x0013;
            int86(0x10, &regset, &regset);
    }
    void exit13h()
    {
            getch();
            regset.x.ax = 0x0003;
            int86(0x10, &regset, &regset);
    }
    void drawpx(int x, int y, int coul)
    {
            int ptr = (320*y+x);
            poke(0xA000,ptr,coul);
    }
    int getpx(int x, int y)
    {
            int ptr = (320*y+x);
            return peek(0xA000,ptr);
    }
    void pal( unsigned char i, unsigned char r, unsigned char v, unsigned char b)
    {

            outp(0x3c8, i);
            outp(0x3c9, r);
            outp(0x3c9, v);
            outp(0x3c9, b);
    }

    int main()
    {

    int color;
    int CA,CB,CC,CD,CE,CF,CG,CH,CI;
    long ptr;
    load13h();
            for(ptr=0; ptr<=64000;ptr++)
            {
                    color=rand()%255;
                    poke(0xA000,ptr,color);
            }
            for(ptr=0; ptr<=63679;ptr++)
            {
                    CA=peek(0xA000,ptr+321);
                    CB=peek(0xA000,ptr+320);
                    CC=peek(0xA000,ptr-321);
                    CD=peek(0xA000,ptr-320);
                    CE=peek(0xA000,ptr+319);
                    CF=peek(0xA000,ptr-319);
                    CG=peek(0xA000,ptr+1);
                    CH=peek(0xA000,ptr-1);
                    CI=peek(0xA000,ptr);
                    color = (CA+CB+CC+CD+CE+CF+CG+CH+CI)/9;
                    poke(0xA000,ptr,color);
            }
    exit13h();

    }


    mais voila, il me plante windows avec une opération non conforme.

    voyez vous une erreur ?

    merci, ++ Tix.
    • Partager sur Facebook
    • Partager sur Twitter
      5 novembre 2006 à 13:27:40

      Citation : Tix.

      voila mon code (mon premier vrais programme graphique depuis que j'ai découvert TurboC ilya quelques jours), c'ets un effet plasma sous VGA, comme en qbasic :)

      <snip paléontocode>

      mais voila, il me plante windows avec une opération non conforme.


      C'est de la programmation pour PC en MS-DOS (mode réel 16 bits). Ca ne fonctionne pas sous Windows NT. (Les interruptions BIOS n'existent plus, et on est en mode protégé 386).

      Tu veux faire quoi exactement ? Ce genre de manipulations relève de l'archéologie, on n'en fait plus depuis 10 ans...

      De plus, tu auras du mal à trouver quelqu'un qui a un MS-DOS chez lui sur une machine annexe pour faire l'essai...

      En plus, niveau C, avec des globales dans tous les coins, c'est douteux. C != BASIC
      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        5 novembre 2006 à 13:28:37

        Umm ou t'a appris a programmer tout sa toi o_O

        et ehh c'a fait quoi?
        • Partager sur Facebook
        • Partager sur Twitter
          5 novembre 2006 à 13:34:24

          Citation : blackshadow153

          Umm ou t'a appris a programmer tout sa toi o_O

          et ehh c'a fait quoi?


          C'est du bricolage sur PC dans le plus pur style des années 80/90, avant le mode protégé. Malgré les mises en gardes répétées de IBM et de Microsoft, certains (dont moi !) se croyaient malins en allant bricoler dans le matériel directement.

          Sur les systèmes modernes, ce travail est maintenant fait par les drivers du système. L'utilisateur n'a absolument pas le droit d'intervenir sur le matériel directement. (de toutes façons, les adresses physiques sont inconnues grâce à la MMU).
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            5 novembre 2006 à 13:59:14

            hm

            Citation : blackshadow153

            Umm ou t'a appris a programmer tout sa toi o_O


            C'est surtout l'horreur de ne pas savoir ce que je fait qui me pousse a faire des trucs comme ca :-°


            pour ce que fait ce programme, il génere sur la surface de l'écran des points de couleurs aléatoire. ensuite, il scanne chaque pixel et ses alentours affin de réecrir a la place de celui ci un pixel de couleur moyenne, a la longue, il finira par faire ce genre de choses :

            Image utilisateur


            la manipullation en Qbasic détaillée est ici, mais elle ne se sert pas de la memoire vidéo, d'iu sa lenteur, je compte en refaire une version plus rapide utilisant le C++.

            en ce qui me concerne, je ne fait pas ca par autoflaterie intellectuelle, mais par nécessité, je vous parlerai de darxHigher si vous souhaitez en savoir plus.

            Lol, pi ya pas de globales dans tout les coins ^^ enfin, a moin que je ne sachent pas ce que je pense avoir apris o_O

            une petite redéfinition histoire de ne pas me fourvoyer ?

            au cas ou dezs personnes ayant MsDos dans un coin passent par ici et me tirent de ma mélasse a base de VGA et de code scabreu ^^

            ++ Tix. ;)
            • Partager sur Facebook
            • Partager sur Twitter
              5 novembre 2006 à 17:00:11

              Citation : Tix.

              Lol, pi ya pas de globales dans tout les coins ^^ enfin, a moin que je ne sachent pas ce que je pense avoir apris o_O


              static char Palette[4*3] = {0,0,0,0,0,63,0,63,0,63,0,0};
              union REGS regset;
              struct SREGS sregs;

              Trois globales dont au moins 2 injustifiées. (la palette, faut voir...)

              Citation : Pas de titre

              une petite redéfinition histoire de ne pas me fourvoyer ?


              variables persistantes de portée globale ou limitée à l'unité de compilation courante. Ces variables sont définies hors de toute fonction.

              Citation : Pas de titre


              au cas ou dezs personnes ayant MsDos dans un coin passent par ici et me tirent de ma mélasse a base de VGA et de code scabreu ^^


              A part moi, le papy, la moyenne d'age ici, c'est 15/16 ans. Il n'étaient pas nés du temps de MS-DOS...

              Essaye plutôt developpez.com ou hardware.fr
              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                5 novembre 2006 à 17:13:36

                Citation : -ed-

                A part moi, le papy,


                Mais non -ed-, il y a sûrement plus vieux que toi sur le forum ^^:D


                Pour ton code, c'est vrai que c'est ... bizarre ! J'ai j'avais jamais vu ça :o:p
                • Partager sur Facebook
                • Partager sur Twitter
                  5 novembre 2006 à 17:32:37

                  Moi jveux bien tenter sur du DOS pur pour voir ce que ca donne, mais tu me compile tout ca alors jveux pas me lancer là dedans ^^

                  Edit : il faut du DOS pur ou un environnement Win 9x/Me suffit ?

                  Tu codes ça sur quoi toi ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 novembre 2006 à 17:53:29

                    désolé mon PS/2 est mort...paix à son âme :'(
                    j'ai bien un 486DX33 (oula la bête de course là) mais là aussi va falloir que tu me fournisse un disque dur parce que je pense pas que les 40 Giga que j'ai dans mes tiroires tourne la dessus ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 novembre 2006 à 18:28:10

                      lol, j'ai essayé sous dos, ca plante
                      mais le probleme c'est le code, t'a raison ed, je vais voir sur harware et fevellopez.com, y'aura surement plus de tetes brulées ^^

                      merci, ++ Tix.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      plasma qui bug

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown