30

geogeo
: Comme je te l'ai dit je n'ai jamais fait un seul prog en C sur PC et donc c'est l'occasion de mis mettre

Bon courage smile
mais je n'y connais rien à l'extraction d'arguments MS-DOS

int main(int argc, void *argv[])
{
 /*
    argc = Nombre d'argument
    argv = ptr vers les arguments 
 */

  while(argc--)
  {
   printf("Argument %d : %s\n", argc+1, argv[argc]);
  }

  return 0;
}

ouvrir un fichier et lire et écrire dedans.

Comme sur ti happy
fopen/fclose
et en général tte fonction C commencant par f

exemple :
int main(int argc, void *argv[])
{
 /*
    argv[0] = nom + chemin du programme lancé
    argv[1] = premier argument
    argv[2] = second argument
    ...
 */
 FILE *fp_in, *fp_out; /* structure de type "pointeur de fichier" */
 /*
    se programme prend 2 argrument :
 */
  if (argc != 3)
  {
    fprintf(stderr,"Nombre d'argument incorrect !\n"
                   "\tusage : foo fichier1 fichier2\n\n");
    return -1; /* erreur */
  }

  /* ouverture du fichier 1 en mode lecture binaire "rb" : r pour read, b pour binary */
  if ( ( fp_in = fopen(argv[1],"rb")) == NULL )
  {
    fprintf(stderr,"Impossible d'ouvrir le fichier %s !\n", argv[1]);
    return -1; /* erreur */
  }


  /* ouverture du fichier 2 en mode ecriture binaire "wb" : w pour write, b pour binary */
  if ( ( fp_out = fopen(argv[2],"wb")) == NULL )
  {
    fprintf(stderr,"Impossible d'ouvrir le fichier %s !\n", argv[2]);
    fclose(fp_in); /* on ferme proprement le fichier ouvert ci-dessus */
    return -1; /* erreur */
  }

/* On fait se qu'on a a faire... */


  fclose(fp_in);
  fclose(fp_out);  
  return 0;
}


Les "type" d'ouvertures sont :

t pour texte le mode texte. A n'utiliser que pour l'ouverture de fichier texte !!
b pour binaire. A utiliser dans tout les autres cas !

et les modes :

r : lecture (read) si le fichier existe pas une erreur est généré
w : ecriture (write) si le fichier n'existe pas il est cree
a : Ajout (append) cree le fichier si il n'existe pas
r+ : Lecture "augmenté" (en fait ouvre le fichier en lecture/ecriture mais genere une erreur si le fichier est inexistant)
w+ : Ecriture "augmenté" (en fait ouvre le fichier en lecture/ecriture mais cree le fichier si il n'existe pas)

Et je ne vois pas comment extraire correctement les données WAV.

reprenons l'exemple si dessus :

int main(int argc, void *argv[])
{
 /*
    argv[0] = nom + chemin du programme lancé
    argv[1] = premier argument
    argv[2] = second argument
    ...
 */
 FILE *fp_in, *fp_out; /* structure de type "pointeur de fichier" */

 char buffer[10];
 /*
    se programme prend 2 argrument :
 */
  if (argc != 3)
  {
    fprintf(stderr,"Nombre d'argument incorrect !\n"
                   "\tusage : foo fichier1 fichier2\n\n");
    return -1; /* erreur */
  }

  /* ouverture du fichier 1 en mode lecture binaire "rb" : r pour read, b pour binary */
  if ( ( fp_in = fopen(argv[1],"rb")) == NULL )
  {
    fprintf(stderr,"Impossible d'ouvrir le fichier %s !\n", argv[1]);
    return -1; /* erreur */
  }


  /* ouverture du fichier 2 en mode ecriture binaire "wb" : w pour write, b pour binary */
  if ( ( fp_out = fopen(argv[2],"wb")) == NULL )
  {
    fprintf(stderr,"Impossible d'ouvrir le fichier %s !\n", argv[2]);
    fclose(fp_in); /* on ferme proprement le fichier ouvert ci-dessus */
    return -1; /* erreur */
  }


  /* tant qu'on est pas a la fin du fichier :
     f : comme file, premiere lettre de toutes les fonctions de fichiers
     e : End
     o : Of 
     f : File
  */
  while(!feof(fp_in)) 
  {
   /*
    fread : Reads data from a stream.

    size_t fread( void *buffer, size_t size, size_t count, FILE *stream );

    Return Value :

    fread returns the number of full items actually read, which may be less than count if an error occurs
    or if the end of the file is encountered before reaching count. Use the feof or ferror function to
    distinguish a read error from an end-of-file condition. If size or count is 0, fread returns 0 and
    the buffer contents are unchanged.

    Parameters :

        buffer : Storage location for data

        size : Item size in bytes
    
        count : Maximum number of items to be read

        stream : Pointer to FILE structure
   */
   fread( buffer, 1, 1, fp_in );

   /*
    fwrite : Writes data to a stream.

    size_t fwrite( const void *buffer, size_t size, size_t count, FILE *stream );

    Return Value :

    fwrite returns the number of full items actually written, which may be less than count if an
    error occurs. Also, if an error occurs, the file-position indicator cannot be determined.

    Parameters :

        buffer : Pointer to data to be written

        size : Item size in bytes

        count : Maximum number of items to be written

        stream : Pointer to FILE structure
   */
    fwrite(buffer, 1, 1, fp_out);   
  }


  fclose(fp_in);
  fclose(fp_out);  
  return 0;
}


voila smile
j'espere avoir été compréhensible

edit: correction de qq erreurs betes #honte#
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

31

Merci pour ce petit cours. C'est vraiment presque pareil sur TI. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

32

geogeo
: C'est vraiment utile une souris?


Pas vraiment, ça ira plus vite au clavier.

33

Tu as bien résond, surtout que c'est un détail.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

34

Perso mon projet de GUI est 100% sans souris lol tout a coup de touche c'est bcp plus simple et pratique pour une TI, a la limite le truc hardvapor a faire serait un ecran tactile mais bon faut pas rever wink
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

35

lol.

Déjà j'ai quelque bug à corriger. grin

Approximation du temps écoulé était fausse à cause des opérations en ASM qui donne une marge d'erreur. C'est corrigé.

Je sais pas comment j'ai fait mais en voulant jouer une musique j'ai eux un crash.

Le moteur de fichiers ne me semble pas à 100% stable donc je vais corriger ça.
Par exemple lorsqu'une erreur ce produit (pas de fichiers audio, mauvais format...) la boîte de dialogue s'affiche mais plante, faut dire que j'utilise celle du TIOS qui doit utiliser ngetchx et come j'ai désactiver les interruptions ça fonctionne pas.

A part tout ça ça avnce bien. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

36

Je confirme: pour les dialogues du TIOS c'est mieux de laisser les ints wink
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

37

Dans mon cas je ne peux pas donc je vais faire les miennes et ça va pas prendre de mémoire puisque pour l'environnement j'ai une focntions qui fait les boîtes de dialogues.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

38

Je viens de tester à 100% mon player sur pedrom et il fonctionne parfaitement, même mieux que AMS.

Par contre sur AMS avec preos, il plante rarement mais sans preos il plante pas.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

39

C'est Kevin qui sera content smile

Comment ça, ça fonctionne mieux sur PedroM que sur AMS ?

40

geogeo: c que ton code est foireux

41

geogeo: c que ton code est foireux


C'est pas tout le code qui est foireux, ça doit être une ligne dans le moteur de selection de fichier je pense. Au final juste pour dire que la librairie PolySnd v2.0 et le player fonctionne niquel sur pedrom.

Par contre est-ce que vous pourrais m'aider sur le scrolling:

char buffer1[137];

if (peekIO_bit (0x60000E,0)==0)
{
EXT_SETPIX(buffer1,118,69);
yosc1=1;
}
else
{
EXT_SETPIX(buffer1,118,0);
yosc1=0;
}

//Affiche zone scollée
GraySpriteX8_OR(4,60,9,buffer1,buffer1,15,GetPlane(0),GetPlane(1));
//Efface buffer
memset (buffer1,0,139);
//Copie zone
SpriteX8Get(5,60,9,GetPlane(0),buffer1,15);

Voilà un code qui permet de gérer l'oscillo de la voie 1 et je voudrais un scrolling pour le faire défiler. J"'ai vu qu'il existé une fonction de scrolling avec extgraph, or elle ne fonctionne que pour des buffers égale à la taille de l'écran.

Je voudrais effectuer un scrolling de la zone 4,60,122,69 pour cela je copie la zone 5,60,122,69 et je la place en 4,60 donc c'est un scrolling de 1 pixel vers la gauche.
Avant de faire ça j'écrit dans le buffer1, si le port I/O est à 0 je met un pixel à 69 sinon à 0.

J'ai essayé plein de trucs et ça fonctionne toujours pas.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

42

Comment tu fais ta copie ?

43

jackiechan :
Comment ça, ça fonctionne mieux sur PedroM que sur AMS ?

Pas vraiment:
geogeo
: mais sans preos il plante pas.


avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

44

Toute façon il est en nostub, car pour ce genre de prog ce format est mieux.
Comment tu fais ta copie ?


Avec ça, SpriteX8Get(5,60,9,GetPlane(0),buffer1,15); je copie la zone de l'écran qui m'interesse pour la mettre dans le buffer.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

45

D'accord.
Tu n'as pas vraiment choisi la technique la plus rapide...

Tu devrais écrire une fonction ASM qui scrolle, tout simplement.
Regarde les sources des fonctions de scrolling d'ExtGraph si tu n'y arrives vraiment pas, ça t'aidera

46

Daccord, je vais voir ça. Mais j'ai pas besoin de énormément de vitesse pour ça.Normalement lma fonction devrait fonctionner, hors c'est pas le cas. sad
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

47

Oui, c'est vrai que ta technique devrait fonctionner. Tu as du te tromper dans le code...

48

EXT_SETPIX(&buffer1,0,0);
EXT_SETPIX(&buffer1,0,1);
GraySpriteX8_OR(0,0,9,buffer1,buffer1,15,GetPlane(0),GetPlane(1));

Avec ça ça fonctionne pas, c'est d'ailleurs à cause de ça que mon scrolling fonctionne pas.

Le pixel aux coordonnées 0,0 s'affiche correctement par contre le deuxième s'affiche aux coordonnées 0,2.

Le buffer fait 135 octets dont 118 pixels de largueur et 9 de hauteur donc 15 octets pour la longueur. Donc ça devrait vraiment fonctionner or ça marche pas.

C'est ma focntion qui est buggé et où? ou Extgraph?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

49

Toutes les routines de ExtGraph ne marchent qu'avec des buffers de 240 octets de largeur.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

50

Je m'en douté bien, ça m'arrange pas.

Mais pourtant EXT_SETPIX peut marcher? Si je fait ma fonction avec un memset ça marchera?

avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

51

geogeo
: Mais pourtant EXT_SETPIX peut marcher?

Non. Tes lignes font la moitié de largeur en octets, donc c'est normal de te retrouver dans la ligne 2 à la place de 1.
Regarde comment il est défini, et adapte-le. EXT_SETPIX n'est vraiment pas compliqué comme macro. roll
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

52

J'ai vus et je viens de l'adapter. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

53

Normal ça devrait fonctionner ça:
GraySpriteX8_OR(4,60,10,(void *)buffer1,(void *)buffer1,15,GetPlane(0),GetPlane(1));
SpriteX8Get(5,60,10,GetPlane(0),buffer1,15);
Car X8 Travail sur n'importe quelle buffer?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

54

Kevin Kofler :
Toutes les routines de ExtGraph ne marchent qu'avec des buffers de 240 octets de largeur.


Mais dans ton cas, tu utilises les buffers de nvg, donc ils ont la bonne taille, donc ça devrait aller.

55

Oui mais je veux scroller une zone bien précise. :.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

56

Et alors, ça devrait marcher quand même.

57

J'utilise des buffer de 149 octets donc différent des nvg.

Mais ce que je ne comprend pas c'est que les fonction X8 fonctionnent avec n'importe quel buffer car bytewidth et la hauteur est réglable.

Je suis perdus, je ne comprend rien.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

58

La fonction SpriteX8Get te permet de graber un sprite à partir d'un buffer de 240 pixles de largeur.

La fonction SpriteX8_OR te permet d'afficher un sprite sur un buffer de 240 pixels de largeur.

Après, la taille du sprite on s'en fout !
Regarde les sources ça t'aidera à comprendre.

59

Je vais les voir mais ce que je ne comprend pas, c'est que dans ce que tu dis je respect tout, puisque j'extrait le sprite à partir du buffer de niveaux de gris du plan 0 et je l'affiche sur les buffers de niveaux de gris. Donc ce que j'ai fait doit fonctionner or c'est pas le cas.

Je vais regarder les sources et faire une fonction de scrolling. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

60

C'est plus simple smile