Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [bibliotheque C]usefull.h : plein de fonctions utiles !
Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

[bibliotheque C]usefull.h : plein de fonctions utiles !

Posté le 04/09/2014 20:04

Bonjour à tous !

Ne vous est-il jamais arrivé de vous dire, en commençant un projet en C(++), qu'il vous manquait plein de fonctions, que vous devrez piocher a droite a gauche, inclure 14 libraires externes pour 2 fonctions simples, pour un total d'une heure de boulot inutile?
Et bien maintenant, vous n'aurez plus a faire cela, grâce a usefull, une bibliothèque qui contient toutes les fonctions hyper-utilisée dans les jeux !

voici une liste de toutes les fonctions :


unsigned char key_down(unsigned char code); // fonction plus rapide et compatible SH4 de IsKeyDown()
int time_getTicks(); //renvoye le nombre de ticks (1/128 de seconde) depuis minuit selon le processeur de la calto
int getFps(); //renvoye le nombre de FPS
void setFps(int fpsWish); //regle le nombre de fps : 1 pour 128 FPS,2 pour 64, 4 pour 32, 5 pour 25 => 128/fpsWish
void PrintV(int X,int Y , int  variable); // affiche un nombre en X et Y en pixels
int max(int a,int b);  //renvoye le max
int writeFile(unsigned char* name,unsigned char* extension,unsigned char* source,int taille);
/*
fonction de sauvegarde
ecrit taille octets du tableau source dans le fichier name.extension
Pour ecrire un tableau d'int, castez simplement le tableau (unsigned char*)tableauDInt
Pour ecrire un int simple, faites writeFile(name,extension,(unsigned char*)&variable,4);
*/
int readFile(unsigned char* name,unsigned char* extension,unsigned char* reception);
/*
fonction de chargement de sauvegarde
ecrit le contenu du fichier name.extension dans le tableau reception
pour lui passer un tableau d'int, castez simplement le tableau (unsigned char*)tableauDInt
Pour ecrire dans un int simple, faites writeFile(name,extension,(unsigned char*)&variable); mais faites attention a ce que le fichier ne soit pas >4 octets
*/


Avec toutes ces fonctions très utiles, vous pourrez démarrer un projet sans avoir a recoder des choses que vous connaissez par cœur !


PS : je tiens également a préciser que je suis l'auteur de toutes ces fonctions (sauf PrintV, qui est la propriété de PierrotLL et key_down qui est l’œuvre de casimo), mais comme la bibliothèque existe depuis longtemps sans que je prenne le temps de la partager, certaines fonctions se sont répandues dans divers tutoriels

PS2 : Si vous l'utilisez dans un projet, vous n’êtes pas obligé de me créditer, ne vous inquiétez pas de ce coté la



Fichier joint


Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 31/12/2014 14:33 | #


Theprog a écrit :
Le probleme c'est que le mappage change selon SH3/SH4 je crois, donc j'ai fait comme ca

Le mappage au niveau matériel ! mais vu que la lib ne change pas, les #define dans les .h ne changent (normalement) pas non plus...
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

Citer : Posté le 31/12/2014 14:35 | #


Oups LePhe j'avais oublié de les virer au debut
Ca cahnge avec le "patch" de compatibilité je crois (je suis pas sur de moi).
Lephenixnoir Hors ligne Administrateur Points: 21355 Défis: 149 Message

Citer : Posté le 31/12/2014 14:41 | #


@Drac0300
Oui mais si les valeurs changent tu peux rien faire... tout simplement parce que t'es pas sûr que les define se suivent.
Smashmaster Hors ligne Ancien modérateur Points: 4561 Défis: 253 Message

Citer : Posté le 31/12/2014 19:36 | #


Dodormeur a écrit :
[bibliotheque C]usefull.h : plein de fonctions utiles !:
Attention, il n'y a qu'un 'l' dans useful
Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

Citer : Posté le 01/01/2015 11:37 | #


Oui, Lephénixnoir l'a déjà fait remarqué Mais bon, vu que la lib est déjà distribuée, j'ai pas envie de changer et d'avoir la même lib sous deux nom différents qui se ballade dans la nature

Sinon, @theprog : vire moi tous ces switch/case et met moi deux tableaux !
C'est beaucoup plus propre, lisible et même plus rapide a écrire (et cela évite d'avoir une fonction de 30 lignes )
Et je sais ce qu'on va me dire, que les tableaux utilisent plus de RAM que le switch/label, mais dans les projets classiques, la RAM on s'en fout un peu, donc il vaut mieux optimiser au niveau de la taille de l'add-in.
Un petit exemple de fonction corrigée :


unsigned char name[][] = {"[0]","[1]","[2]","[3]"};
unsigned int keys[] = {KEY_CHAR_0,KEY_CHAR_1,KEY_CHAR_2,KEY_CHAR_3};
int i = 0;
for(;i<4;i++)if(key == keys[i])return name[i]

Certes, la complexité passe de O(ln i) en O(i), mais je ne pense pas que cela fasse une énorme différence
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 14/01/2015 11:13 | #



const static unsigned char name[][] = {"[0]","[1]","[2]","[3]"};
const static unsigned int keys[] = {KEY_CHAR_0,KEY_CHAR_1,KEY_CHAR_2,KEY_CHAR_3};
int i = 0;
for(;i<4;i++)if(key == keys[i])return name[i]


Ajout des const static pour être sur que ça soit stocké dans la ROM.
Lephenixnoir Hors ligne Administrateur Points: 21355 Défis: 149 Message

Citer : Posté le 14/01/2015 11:57 | #


Eiyeron a écrit :

const static unsigned char name[][] = {"[0]","[1]","[2]","[3]"};
const static unsigned int keys[] = {KEY_CHAR_0,KEY_CHAR_1,KEY_CHAR_2,KEY_CHAR_3};
int i = 0;
for(;i<4;i++)if(key == keys[i])return name[i]


Ajout des const static pour être sur que ça soit stocké dans la ROM.

C'est standardisé ça ?
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 14/01/2015 11:59 | #


Astuce de PierrotLL, le coup du const static.

Ajouté le 14/01/2015 à 12:03 :
En fait, const fait le truc et static est en c a deux utilités :
- en dehors d'une fonction, ça fait une fonction/variable qui ne peut être appelée en dehors de son fichier
- dans une fonction cela créé une variable unique et initialisée qu'une fois. Du coup ça aide pour éviter d'avoir le tableau stocké en RAM.
Aragorn Hors ligne Membre Points: 807 Défis: 5 Message

Citer : Posté le 05/03/2015 19:31 | #


J'aurais 3 questions à te poser :
- writefile() fonctionne avec un tableau d'int, fonctionne-t-il aussi avec un tableau de char ?
- comment sauvegarder dans un dossier ?
- Peut-on mettre une variable en nom de fichier ? exemple : "readFile(NbMap,"zel",Map,128);"

Si ce n'est pas possible, est-ce qu'on peut résoudre ces erreurs en modifiant la librairie ?
Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

Citer : Posté le 05/03/2015 22:16 | #


writefile fonctionne justement avec un tableau de char mais sinon il suffit de caster le tableau, cela donnera la même chose (par contre faut penser à quadrupler la taille du tableau que tu passes en argument)

Pour sauvegarder dans un dossier, je sais pas Il me semble qu'il devrait y avoir moyen, il suffirait de modifier la fonction et de faire joujou avec Bfile (elle est pas compliquée )

Si c'est un tableau de char, sans problème (faudra peut-être le caster si il est pas unsigned )
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Aragorn Hors ligne Membre Points: 807 Défis: 5 Message

Citer : Posté le 05/03/2015 22:24 | #


Merci pour ta réponse rapide.

Comment fait-on pour caster en unsigned ?
J'ai un system error à cette ligne de code :
readFile(NumMap,"zel",Map,128);

NumMap est un char
Map est un tableau : char[16][8]
Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Dodormeur Hors ligne Ancien rédacteur Points: 3964 Défis: 82 Message

Citer : Posté le 05/03/2015 22:48 | #


C'est un peu bizarre d'essayer de passer un double tableau de char, tu veux sans doute spécifier la première case
et il ne faut pas spécifier la taille du fichier pour la lecture, c'est déduis automatiquement.
Le tableau qui reçoit les données est a la fin aussi (par contre fait gaffe, si le fichier fait plus qu'un octet et que tu ne passe qu'un char, il se peut que d'autres variables soient affectées, donc fait attention)(et pour passer une variable qui n'est pas un tableau, faut rajouter & pour passer l'adresse de la variable (ce qui n'est pas nécessaire avec un tableau, vu que le nom du tableau est aussi son adresse )


readFile("zel",(unsigned char*)Map[0],(unsigned char* )&NumMap);

Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Dark storm En ligne Labélisateur Points: 11549 Défis: 176 Message

Citer : Posté le 05/03/2015 23:37 | #


Va falloir finir par comprendre que char et char* sont deux entités totalement différentes !
On te demande une chaîne, tu envoie un char. Normal que ça ne marche pas

Bref, pour convertir un char en chaîne de caractère, je te laisse chercher (au choix) du côté de sprintf, itoa, ou PrintV (cf ci dessus pour ce dernier).
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Aragorn Hors ligne Membre Points: 807 Défis: 5 Message

Citer : Posté le 06/03/2015 19:59 | #


Merci, je vais essayer de me débrouiller avec vos réponses.

Je pense en effet qu'une erreur vient du fait que j'ai inversé char et char*. Maintenant je ne ferais plus l'erreur.

En fait, ce que j'aimerais faire, c'est un éditeur de niveau. Les niveaux s’appelleront #.zel ou zelda.# (# est le numéro du niveau). Chacune des cases du niveau sont stockées dans le tableau "char Map[16][8];". Ce que j'aimerais faire, c'est stocker l'intégralité du niveau (tableau) dans un fichier de sauvegarde. Puis pouvoir recharger l'intégralité du niveau dans char Map[16][8], à partir du fichier de sauvegarde.
Comme tu l'as fait dans pokemon editor.

Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Lephenixnoir Hors ligne Administrateur Points: 21355 Défis: 149 Message

Citer : Posté le 06/03/2015 20:44 | #


Tu peux faire ça alors.
char filename[20];
unsigned char map[16][8];
const int lvl_id = 14;

sprintf(filename,"%d",lvl_id);
readfile(filename,"zel",128,map);
Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 26/01/2016 21:25 | #


J'ai inclus usefull.h au projet, bien add le .c sur le côté et lorsque j'essaie de build le compilateur ne veut pas et m'indique ceci :
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(25) : C1016 (W) Argument mismatch
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(25) : C1016 (W) Argument mismatch
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(25) : C1016 (W) Argument mismatch
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(25) : C1016 (W) Argument mismatch
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(184) : C2225 (E) Undeclared name "FONTCHARACTER"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(184) : C2500 (E) Illegal token "filename"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(184) : C2225 (E) Undeclared name "filename"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(184) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(184) : C2500 (E) Illegal token "{"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(184) : C2500 (E) Illegal token "{"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(184) : C2500 (E) Illegal token "}"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(185) : C2500 (E) Illegal token "int"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(185) : C2225 (E) Undeclared name "a"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(185) : C2220 (E) Modifiable lvalue required for "="
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(186) : C2500 (E) Illegal token "int"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(186) : C2225 (E) Undeclared name "handle"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(189) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(192) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(193) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(194) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(195) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(196) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(200) : C2225 (E) Undeclared name "_OPENMODE_WRITE"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(215) : C2500 (E) Illegal token "filename"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(215) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(215) : C2500 (E) Illegal token "{"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(215) : C2500 (E) Illegal token "{"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(215) : C2500 (E) Illegal token "}"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(216) : C2500 (E) Illegal token "int"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(217) : C2500 (E) Illegal token "int"
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(220) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(223) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(224) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(225) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(226) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(227) : C2233 (E) Illegal array reference
G:\Programmation\Moteur de déplacement d'un personnage\usefull.c(230) : C2225 (E) Undeclared name "_OPENMODE_READ"


Comment ce fait-ce ?
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 28/01/2016 15:39 | #


Argument mismatch ca veut dire que ta oublie de preciser un argument dans une fonction :
Ex si ta fonction cest pow (int X, int puissance) et que tu lappelle par pow (2) ca va donner ca
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Matt36230 Hors ligne Membre Points: 1888 Défis: 0 Message

Citer : Posté le 28/01/2016 18:46 | #


C'est pas trop ça le problème, c'est surtout le reste car je ne peux pas utiliser la lib
Lephenixnoir Hors ligne Administrateur Points: 21355 Défis: 149 Message

Citer : Posté le 30/01/2016 13:38 | #


Je suis prêt à parier que usefull.c oublie d'inclure fxlib.h. Ajoute un include au début du fichier, ça résoudra certaines erreurs.
Kirafi Hors ligne Membre Points: 2175 Défis: 10 Message

Citer : Posté le 30/01/2016 13:42 | #


Bah moi il n'y a pas le include de fxlib.h et ça fonctionne très bien .
iPod
Pour des parties rapides
Jusqu'où pourras-tu aller dans ce jeu "partie rapide" qu'est Dextris (élu Jeu Du Mois)
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
Autres
Franchement ils valent le coups
Deviens l'amiral de la marine dans SeaRush (jeu concours) (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Lephenixnoir Hors ligne Administrateur Points: 21355 Défis: 149 Message

Citer : Posté le 30/01/2016 13:43 | #


Si les include sont placés de manière fortuite (notamment fxlib d'abord), le compilateur pour trouver les symboles par magie...

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 94 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd