Forum Graph100

Forum Graph100

Vous n'êtes pas identifié.

Annonce

Bonjour et bienvenue sur le nouveau Forum Graph100 !
L'intégralité des données a été transférée sur un forum PunBB et tout les comptes sont fonctionnels avec le même nom d'utilisateur et mot de passe.
Un wiki est aussi disponible avec le même compte ! N'oubliez pas de remettre votre avatar, bon surf !
Pour plus d'informations, consultez ce post.

#1 13 Mar 2005 16:03:01

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Librairies en C

J'ai vue qu'il existait libG100.
Est ce que cette librairie apportent vraiment des avantages?
Sinon, comment l'utiliser, car je ne comprend pas grand chose a son installation avec TC3? Par ce que c'ets pas très clair pour les débutants.
Y a t'ils d'autres librairies qui proposent un scrolling de bitmaps?
Merci.

Hors ligne

 

#2 14 Mar 2005 15:26:34

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Re: Librairies en C

J'ai aussi un problème avec Draw Lib de Julien.
J'arrive pas a l'utiliser correctement et TC3 continue a me donner des massages d'erreur du type :
"Error SPRITE.C 136 : Unexpected end of file in conditional started on line 3"

Et voici mon programme :

#include "DRAWLIB.h"

#if !defined __DRAWLIB
#define __DRAWLIB

typedef unsigned char uchar;

unsigned char Sprite0[] = {................... };
unsigned char Sprite1[] = {................... };           //Avec les lignes du sprite.
unsigned char Sprite2[] = {................... };
unsigned char Sprite3[] = {................... };
unsigned char Sprite4[] = {................... };

unsigned char* sprite[] = {
    Sprite0,      //0
    Sprite1,      //1
    Sprite2,      //2
    Sprite3,      //3
    Sprite4,      //4

int main()
{

    int x;
    int y;
    int numero;

debut:    locate(9,2,"go");
    x=20;
    y=10;
    numero=0;
    getch();
    goto sprite;


sprite: while (!testkey(7,3))
    {         if(testkey(9,6)) x--;
        if(testkey(9,3)) x++;
        drawspr(x,y,Sprite[numero],MODE_MASK_NOCLIP);
        refresh();
    }
    return(0);
}


Y'a forcement quelquechose qui cloche mais je ne sais pas pourquoi. j'ai essayé de faire des tests en mettant en commentaire differentes lignes et c'est apparement les lignes d'appels de la librairie qui buggent.
Bon, je vous remercie et j'attend vos réponses pour pouvoir continuer a pprendre leC.

Hors ligne

 

#3 14 Mar 2005 15:39:54

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Re: Librairies en C

Bon j'ai aussi oublié de passer en mode DB mais je ne pense pas que cela soit le problème.
Comme vous pouvez le voir, je suis débutant beta total, pour qui aucun "lisez Moi" n'est compréhensible. (contrairement au débutant alpha qui lui réussit a comprendre les "lisez moi".
Merci de votre aide.

Hors ligne

 

#4 14 Mar 2005 15:43:34

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Re: Librairies en C

Bon sans déconner, changer tout cela si ca vous chante mais j'aimerais avoir la technique pour afficher un sprite.
(Je sais vous êtes entrain de vous dire qu'il est chiant a rajouter une réponse avant même qu'on lui ait répondu quoi que ce soit)

Hors ligne

 

#5 15 Mar 2005 00:40:45

Azor
Le Coté Obscur De La G100
Lieu: glop glop!
Date d'inscription: 04 May 2002
Messages: 5479
Site web

Re: Librairies en C

pas trop le temps de répondre immédiatement (bus à 7h) ptet demain wink


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#6 15 Mar 2005 06:26:50

mastermage
Magicien G100
Lieu: Charleville-Mézières,Compiègne
Date d'inscription: 31 Jan 2002
Messages: 1008

Re: Librairies en C

Euh pourrais-tu editer tes messages au lieu d'en poster toutes les 5 minutes ?

Enfin bon,

Code:

#if !defined __DRAWLIB
#define __DRAWLIB

Ca te sert a quoi ?

de plus si tu ne fermes pas ce bloc par un #endif c'est normal qu'il te sorte cette erreur.

Hors ligne

 

#7 15 Mar 2005 06:44:59

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Librairies en C

#if !defined __DRAWLIB
#define __DRAWLIB

C'est ça qui cloche... Ces deux lignes n'ont rien à faire là. Ce sont des lignes que j'ai placées dans drawlib.h dans un but précis, et ça ne doit pas se retrouver dans ton programme wink

Ensuite

unsigned char* sprite[] = {
Sprite0, //0
Sprite1, //1
Sprite2, //2
Sprite3, //3
Sprite4, //4

Il y a une virgule en trop après "Sprite'", par contre il manque la fin du tableau ( "};" ). Tu devrais peut-etre utiliser sprite maker et récupérer les codes qu'il te donne, tu seras alors sûr qu'ils sont corrects.

Pour afficher un sprite, je te conseille de bien lire les explications fournies avec drawlib, ainsi que l'exemple qui l'accompagne. En gros, la seule chose à faire c'est
- passer en DB au début du prog
- afficher tes sprites avec drawsprite() par exemple
- repasser en mode normal C3 à la fin.


Pensez à surveiller mes releases wink

Hors ligne

 

#8 15 Mar 2005 14:50:58

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Re: Librairies en C

Bon j'ai enlevé les lignes suspectes. Je la avais mise ici heuh, ben je sais plus pourquoi.
Je me suis arrangé pour le mode Db, pour la virgule après le tableau.
Par contre même en précisant drawlib.h au début, il ne reconnait pas les fonctions. Je met alors, #endif (a la fin du prog puis après avoir vu que cela ne marchait pas et après #include "drawlib.h" par la suite) comme indiqué par mastermage mais ou?
TC3, ne pose alors qu'une seule erreur après "misplaced endif directive". (bon vous comprenez)

Ou faut il placer cette fonction exactement?

J'utilise pour afficher la sprite :
"drawspr(x,y,sprite[numero],MODE_MASK_NOCLIP);"

Est ce que c'est la bonne fonction a utiliser?

Julien parlait de drawsprite() (et non drawspr).

Bon merci de me répondre et désolé de vous déranger.  :oops: C'est qu'il manque pas mal de tutos pour les débutants.

(désolé, j'avais pas découvert la fonction editer qui est d'ailleur bien utile big_smile )

Hors ligne

 

#9 15 Mar 2005 15:37:03

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Librairies en C

C'est bien la bonne fonction, drawsprite(x,y, char*) c'est simplement un raccourci pour drawspr(x,y,char*,MODE_MASK_CLIP) qui est utilisée le plus souvent.

Le "#endif", c'était pour fermer la condition que tu avais ouverte avec ton "#if !defined __DRAWLIB". Comme tu as supprimé cette ligne, le #endif n'est bien sûr pas à écrire.

Je te recommande encore d'utiliser les exemples fournis: prends les fichiers d'exemples fournis avec drawlib, essaie de les compiler puis de les tester, et quand tu y seras arrivé tu pourras les modifier petit à petit pour essayer différents trucs.


Pensez à surveiller mes releases wink

Hors ligne

 

#10 15 Mar 2005 16:02:18

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Re: Librairies en C

J'ai du oublié une librairie mais laquelle? Il refuse toujours de compiler certaines fonctions notamment.
-testkey
-modevideo
-refresh
-drawspr
-locate
(en fait vous l'aurez remarqué, il ne veut rien compiler de toutes les fonctions que j'ai utilisé)


#include "DRAWLIB.h"


typedef unsigned char uchar;


unsigned char mar1a[] = {.... };


unsigned char mar1b[] = { .....};


unsigned char mar1c[] = {..... };


unsigned char mar1d[] = {..... };


unsigned char mar1e[] = {...... };


unsigned char mar2a[] = {.......};


unsigned char mar2b[] = {....... };


unsigned char mar2c[] = {....... };


unsigned char mar2d[] = {........};


unsigned char mar2e[] = {.........};


unsigned char mar3[] = {.......... };


unsigned char* sprite[] = {
    mar1a,      //0
    mar1b,      //1
    mar1c,      //2
    mar1d,      //3
    mar1e,      //4
    mar2a,      //5
    mar2b,      //6
    mar2c,      //7
    mar2d,      //8
    mar2e,      //9
    mar3        //10
};


int main()
{

    int x;
    int y;
    int numero;
    modevideo(1);

debut:    locate(9,2,"go");
    x=20;
    y=10;
    numero=0;
    getch();
    goto sprite;


sprite: while (!testkey(7,3))
    {         if(testkey(9,6)) x--;
        if(testkey(9,3)) x++;
        drawspr(x,y,sprite[numero],MODE_MASK_NOCLIP);
        refresh();
    }
    modevideo(0);
    return(0);
}

Hors ligne

 

#11 15 Mar 2005 16:20:05

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Librairies en C

Ton fichier drawlib.h, il est bien placé dans le même dossier que le fichier que tu essaies de compiler?
Et est-ce que tu compiles bien drawlib.c et le fichier qui contient les fonctions utilitaires (refresh() etc) simultanément?
Normalement sous TC3 tu devrais créer un projet et intégrer tes 3 fichiers sources dedans, mais dans un premier temps tu peux écrire

Code:

#include "draw14b.c"
#include "fonx.c" // verifie qu'il s'agit bien d'un fichier .c et pas .cpp, sinon renomme-le en .c

au début où à la fin de ton code source. C'est une mauvaise habitude, mais au moins ça te permettra de compiler.

Autre chose: si tu débutes en C, impose-toi la règle suivante: les goto, ça n'existe pas. Y'a bien la commande goto, mais non, on ne peut pas l'utiliser, il faut réfléchir pour s'en passer. Ca te rendra service wink

Edit: il faut aussi que tu ajoutes

Code:

#include "fonx.h"

au début pour que le compilo comprenne avec quelles fonctions tu veux travailler (en supposant donc que ces fonctions sont déclarées dans fonx.h et définies dans fonx.c)

C'est qu'il manque pas mal de tutos pour les débutants.

En effet, mais le premier tuto qu'il faut à un débutant, c'est un bon cours ou un bouquin sur le C... et ça malheureusement je pense que personne ici n'a le temps ni l'envie d'en rédiger, surtout en voyant la quantité d'infos qu'on trouve sur le net à propos de ce langage...


Pensez à surveiller mes releases wink

Hors ligne

 

#12 15 Mar 2005 17:36:01

Superna
Ex-Trouvetou G100
Lieu: Sous Linux ^^
Date d'inscription: 01 Feb 2002
Messages: 2275
Site web

Re: Librairies en C

ben le plus grand avantage de libg100 c'est qu'il y a pas besoin de la compiler tongue

Tu fais #include <fichier_que_tu_veut.h>
et pour compiler tu fais :
tcc <options normales> ton_fichier.c libg100.obj

smile

Hors ligne

 

#13 16 Mar 2005 10:18:01

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Re: Librairies en C

Je n'arrive pas a compiler sans faire un fichier projet avec TC3. (les exemples fournis avec drawlib ou db_lib)
Comment on en cree un? Je n'ais pas vu d'option pour creer un projet juste de quoi les ouvrirs (dans project--->Open).

Hors ligne

 

#14 16 Mar 2005 15:57:15

Superna
Ex-Trouvetou G100
Lieu: Sous Linux ^^
Date d'inscription: 01 Feb 2002
Messages: 2275
Site web

Re: Librairies en C

Les projets sont obscurs dans TC3, la mailleure méthode reste la compilation a la main avec un .bat !

Hors ligne

 

#15 17 Mar 2005 12:29:45

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Re: Librairies en C

Plutôt comme l'a suggeré Julien, on vas faire simple et commencer par le commencement.
J'aimerais compiler l'exemple fournit avec Drawlib pour voir comment on fait (ce que je n'arrive pas a faire en temps normal avec TC3).
Je possède donc comme fichier pour faire cela :
-drawdemo.cpp
-fonx.cpp
-fonx.h
-sprites.h
et la librairie drawlib:
-draw14b.c
-drawlib.h

Quelle est la procédure exacte qui permet de compiler ces fichiers pour obtenir l'exemple fournit avec drawlib?
Merci.
Epi'

Hors ligne

 

#16 20 Mar 2005 05:55:49

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Re: Librairies en C

Merci de répondre a ma précedente question. (j'ai rajouté ce topic car j'avais peur que le fait d'éditer un topic ne le mette pas a jour et qu'il passe inapercu, vous comprendrez...)

Hors ligne

 

#17 20 Mar 2005 18:19:44

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Librairies en C

En fait je me rends compte que mes exemples sont peut-être difficiles à manipuler pour des novices... Ils sont surtout faits pour montrer du code, et pour les compiler il faut déjà bien connaître le fonctionnement du compilateur.

En gros, si tu veux compiler ça avec TC3, tu dois:
1 - être sur que TC3 est configuré comme il faut
2 - avoir rassemblé tous les fichiers nécessaires dans un même dossier (drawlib.h, draw14b.c, fonx.h, fonx.cpp, sprites.h, drawdemo.cpp)
3 - aller dans le menu "Project" et choisir "Open" tu choisis alors un nom de projet dans le dossier des sources et il t'en créera un nouveau s'il n'existait pas déjà
4 - lorsque l'onglet PROJECT est visible dans le bas de TC3, tu peux utiliser "Add Item" dans le menu "Project" pour choisir tes 6 fichiers.
5 - A présent, tu peux utiliser "Make" dans le menu "Compile" pour lancer la compilation. Sauf erreur, le prog généré sera dans le répertoire de sortie que tu as indiqué, avec le nom de ton projet + l'extension exe.

Et c'est là que ça coince, j'ai visiblement oublié 3 lignes dans fonx.h (me demande bien comment d'ailleurs :rouge: ), tu vas devoir rajouter ceci à la fin du fichier:

Code:

#define K_F1                10,6
#define K_F2                10,5    
#define K_F3                10,4    

Ce sont 3 déclarations qui manquent.

Voilà, normalement ça devrait marcher.
Sache cependant que très peu de personnes parmi nous utilisent encore l'éditeur de TC3, en général on utilise directement son compilateur avec une ligne de commande et on utilise des éditeurs un peu plus récents wink


Pensez à surveiller mes releases wink

Hors ligne

 

#18 21 Mar 2005 05:28:48

Superna
Ex-Trouvetou G100
Lieu: Sous Linux ^^
Date d'inscription: 01 Feb 2002
Messages: 2275
Site web

Re: Librairies en C

Alors voila, j'ai de bonnes nouvelles tongue
Pour libg100, normalement tu dois trouver TCCG100.lib dans le rep lib de l'archive que t'a téléchargé !

Donc tu copie TCCG100.lib et tout les fichiers dans le répertoire include/ dans le répertoire de ton projet.
Tu ouvre TC3, tu crée un projet dans ce répertoire, tu ajoute ton .c et TCCG100.lib
Tu fais make

Et voilou voili !!

(je savais pas qu'on pouvais ajouter des .lib dans un projet TC3 !!)

Hors ligne

 

#19 21 Mar 2005 13:53:43

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Re: Librairies en C

Bon ca me fait toujours une erreure en suivant les instructions de Julien.
J'ai definis les touches (je l'avais déja avant fait mais il se trouve que c'était pas le bon code touche :cry: )

Mais quand je fais make, il trouve moyen de m'indiquer une erreure a la ligne 65 de draw14B.C (position 11) un machin en Asm
"push 1"
ne semble pas supporté.
Le logiciel TC3 me dit
"286/287 instructions not enabled"

Il doit y avoir moyen de résoudre ce probleme?

Car je suis un peut perdu dans ces histoires de compilation.
C aprem par exemple, j'ai enfin reussit a afficher un sprite en mode Db (une premiere) sans definir de librairies en piochant dans celles ci tout de même pour definir les fonctions en asm dont j'avais besoin. Mais quand
j'ai remarqué sur mon sprite que je ne voyais jamais le coté gauche du sprite, en gros que j'étais en réalité entrain de l'afficher pixel/pixel lol.
En fait ca peux pas aller du tout, il me faudrait un beau sprite comme dans l'exemple de julien.
Ma seule solution est donc drawlib.

Je vais voir ce que je vais réussir avec libG100 sinon...

Merci[/code]

Hors ligne

 

#20 21 Mar 2005 15:44:57

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Librairies en C

Le logiciel TC3 me dit
"286/287 instructions not enabled"

Tiens c'est bizarre TCC ne bronche pas chez moi... Ca doit venir de la configuration de TC3 neutral
Essaie ce qu'a proposé Superna, ca sera sans doute plus simple. Sinon, tu peux remplacer tous ces "push 1" par

Code:

mov ax,1
push ax

mais tu vas devoir le faire pour chaque fonction...


Pensez à surveiller mes releases wink

Hors ligne

 

#21 22 Mar 2005 00:33:50

Azor
Le Coté Obscur De La G100
Lieu: glop glop!
Date d'inscription: 04 May 2002
Messages: 5479
Site web

Re: Librairies en C

ça VIENT de la config:

286/287 instructions not enabled> va voir les parametres

sinon avec un Replace ça devrait ce faire vite le truc de julien wink


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#22 24 Mar 2005 03:42:42

Superna
Ex-Trouvetou G100
Lieu: Sous Linux ^^
Date d'inscription: 01 Feb 2002
Messages: 2275
Site web

Re: Librairies en C

Voila des images :
http://naprod1.free.fr/tc3/1codegene.GIF
http://naprod1.free.fr/tc3/2codegene.GIF
http://naprod1.free.fr/tc3/3acodegene.GIF
http://naprod1.free.fr/tc3/4acodegene.GIF

Voila !!!

Mais c'est vrai que ma methode evite ça car c'est déja compilé/optimisé comme il faut tongue
(lol sous XP, NTVDM me prends 94% du proc lol)

Hors ligne

 

#23 26 Mar 2005 01:42:54

Azor
Le Coté Obscur De La G100
Lieu: glop glop!
Date d'inscription: 04 May 2002
Messages: 5479
Site web

Re: Librairies en C

(lol sous XP, NTVDM me prends 94% du proc lol)<- normal, émulateur wink


Anciennement X-thunder28
Cats shall rule teh world!

Hors ligne

 

#24 27 Mar 2005 08:18:23

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Re: Librairies en C

Hum j'ai bien parametré, tout ce qu'il faut, des milliards d'essais et ca marche pas.

Alors j'ai essayé avec context bien paramétré, tout ce qu'il faut, de milliards d'essais etc mais ca marche pas non plus. J'ai evidemment pas de messages d'erreur mais un ecran tout blanc dans l'emulateur wing100.

J'y comprend en plus rien de la librairie drawlib, c'est la seule qui soit obscure comme cela. Db-lib, c'est clair, tu copie la fonction dans ton prog, casio2.h aussi. Alors que dans drawlib y'a trop de possibilitées de paramétrages ce qui rend la chose très ardue.
Y'a pas moyen de se procurer juste la fonction a definir au debut du programme et qui t'affiche le sprite comme db-lib? Genre drawnmnc(x,y,nom) pour le mode nomask noclip ; drawmc(x,y,nom) pour le mode mask clip etc... Sans tout avoir de compliqué (et que j'arrive pas a faire marcher) sans les ifdef, ifend etc... qui certe doivent offrir des avantages.
Et qui soit compatible avec sprite maker tant qu'a faire.

Bon j'ai décidé d'utiliser dblib ou dbpaint par exemple a la place, par ce que la j'en ais mare. Mais il me faudrait quelquechose ou une technique pour coder un sprite lisible avec cette librairie 16*16 par exemple (avec gris).
Pour avoir un machin codé dans ce style :
"unsigned char sprite[3][32]={
0xff,0xff,0x1,0x80,0x5d,0x9a,0x51,0xa2,0x59,0x92,0xd1,0x8b,
0x51,0xb2,0x1,0x80,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,"
(extrait d'un exemple fournit avec db-lib)

Pour afficher un sprite comme cela, je pense que j'aurais moins de problemes car la j'arrive a compiler les exemples et a en extraire les fonctions.
J'ai pas encore compris comment empecher le clignotement mais ca vas venir en etudiant les exemples.

Voila en réalité, j'abandonne drawlib qui avait un super truc pour les sprites :cry: Mais je passe a db-lib et il me faudrait un programme du genre sprite maker pour db-lib.
Merci

P.s. : Quelles sont les fonctions les plus rapides, celles de drawlib, auquel cas, je m'y remet en essayant de faire marcher ca ou celle de db-lib, dans ce cas, j'essaye de coder les sprites.?

Hors ligne

 

#25 27 Mar 2005 14:27:51

EpiCas
Membre
Lieu: ANDRESY (Yvelines)
Date d'inscription: 16 Feb 2005
Messages: 37

Re: Librairies en C

Bon ca y est, j'ai reussit a coder mon sprite avec un logiciel ti et j'arrive a l'afficher avec db-lib.
Mais il clignote car dans la boucle je suis obligé de l'effacer constamment.
Il doit y avoir moyen comme dans l'exemple de db-lib d'afficher sans clignotement mais je ne le comprend pas.
Merci de me l'expliquer.
(Toutes les fonctions, ou la pluspart sont extraites de Db-LIb de Swifter)

#define SEG1 0x1A20
#define SEG3 0x1AA0
#define HAUT        0x0048
#define BAS        0x0050
#define ESC        0x0001

void d16_or(int x,int y,void* spr,unsigned int segm)
{
  asm{
       mov cx,x
       mov si,spr
       mov di,0x3FE
       mov ax,segm
       sub ax,y
       mov es,ax
       mov ax,cx
       shr ax,0x3
       sub di,ax
       and cl,0x7
       mov ch,0x10
     }
  loop:
  asm{
       xor dl,dl
       mov ax,ds:[si]
       mov dh,al
       shr ax,cl
       shr dx,cl
       or es:[di],ax
       or es:[di-0x1],dl
       sub di,0x10
       add si,0x2
       dec ch
       jne loop
     }
}

void contrast(int pl,int cnt)   
{int id;
for (id = 1 ; id <= cnt ; id++)
   {
      if (pl == 0) { asm { mov ah,22h;
               mov bl,1;
                           int 7Ch;} }

      if (pl == 1) { asm { mov ah,22h;
                           mov bl,0;
                           int 7Ch;} } } }

void mode(unsigned char modetype)
{
  asm{
       mov al,modetype
       out 0x2,al}}

void clearpage(short page)
{
    asm {
   pushf; push es; push di; push cx; push ax;
                mov ax,page;
                shl ax,6;
                add ax,0x1A20;
   mov es, ax;
   xor di, di;
   mov cx, 1024;
   shr cx,1;
   xor ax, ax;
   cld;
   rep stosw;
   pop ax; pop cx; pop di; pop es; popf;
    }
    return; }

void gclear(void)
{ clearpage(0);
  clearpage(2);}

unsigned char getkey() {
    return peekb(0x40,0xAF); }

char getkb(void)
{    unsigned char key;
    asm push es;asm push di;
        asm push ax;
    asm mov ax,0x40;
    asm mov es,ax;
    asm mov di,0xAF;
    asm mov al,es:[di];
    asm mov key,al;
    asm pop ax;asm pop di;
        asm pop es;
    return key;}

unsigned int sprite[3][16]= {
{0x2004,0x4002,0x8241,0x8181,0x8E71,0x9009,0x9009,0xA005,0xE3C7,0xA005,0x9009,0x9009,0x8E71,0x8181,0x4242,0x2004},
{0x2004,0x4002,0x8241,0x8181,0x8FF1,0x9FF9,0x9FF9,0xBFFD,0xFFFF,0xBFFD,0x9FF9,0x9FF9,0x8FF1,0x8181,0x4242,0x2004},
{0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0}
};

int main ()
{
        int a;
        int b;
        a=110;
    b=25;
        gotoxy(2,2);
    printf("go?");
        getch();
        wait(200);
        mode(0xdb);
        contrast(1,5);   
        while (getkey()!=ESC)
    {       if(getkb()==HAUT) b--;
        if(getkb()==BAS) b++;
        if(b>45) b=45;
        if(b<2) b=2;
                d16_or(a,b,sprite[0],SEG1);
                d16_or(a,b,sprite[1],SEG3);
                wait(500);
                gclear();
        }
        contrast(0,5);   
        mode(0xc3);
        return(0);
}

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr