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

Forum Casio - Autres questions


Index du Forum » Autres questions » **Le SDK pour fx-9860/Graph85** Topic officiel
Matronix Hors ligne Ancien administrateur Points: 6058 Défis: 82 Message

**Le SDK pour fx-9860/Graph85** Topic officiel

Posté le 18/07/2007 15:08

Vu la multitude de topics sur le SDK de la 85, j'ai décidé d'en faire un seul et unique, où l'on posera nos problèmes et explications sur ce même topic, et non pas sur 50, par souci de clareté et de facilité.

Des nouveautés ? Des problèmes ? Des idées ?
Exposez les ici !

Voici une liste de commandes commencées par Muelsaco. N'hésitez pas à rajouter vos commandes dans le topic je les rajouterai pour en faire profiter tout le monde. Merci.

// Locate X,Y,"Texte"
:arrow: locate(x,y); Print("Texte");

// Text X,Y,"Texte"
:arrow: PrintMini(x,y,"Texte",0);

// F-Line x1,y1,x2,y2
:arrow: Bdisp_DrawLineVRAM(x1,y1,x2,y2);

// Tracer une ligne blanche
:arrow: Bdisp_ClearLineVRAM(x1,y1,x2,y2);

// PxlOn x,y & PxlOff x,y
:arrow: Bdisp_SetPoint_VRAM(x,y,<couleur>)
<couleur> : 0 pour le blanc, 1 pour le noir

// Cls
:arrow: Bdisp_AllClr_DDVRAM();

// Actualiser l'écran
:arrow: Bdisp_PutDisp_DD();
Fonction très importante. Elle permet d'afficher une image tracée virtuellement dans la VRAM. Toute image doit d'abord être dessinée dans la VRAM puis affichée à l'écran. Vous ne verrez donc pas votre image s'afficher tant que vous n'aurez pas appelé Bdisp_PutDisp_DD(). À noter que les fonctions GetKey() et Print() l'appellent automatiquement.

While <exp1>
<code>
WhileEnd
:arrow:
while(<exp1>)
{
  <code>
}

// StoPict x
:arrow: SaveDisp(x);
x variant de 1 à 3 uniquement.

// RclPict x
:arrow: RestoreDisp(x);
  x variant de 1 à 3 uniquement.

// Ouvrir un popup (comme les erreurs syntaxe, etc)
:arrow: PopUpWin(<taille>);
  <taille> : de 1 à 8.


Rappels sur les variables globales : Source

* Les variables globales sont à utiliser avec précaution, puisqu'elles créent des liens invisibles entre les fonctions. La modularité d'un programme peut en souffrir et le programmeur risque de perdre la vue d'ensemble.
* Il faut faire attention à ne pas cacher involontairement des variables globales par des variables locales du même nom.
* Le codex de la programmation défensive nous conseille d'écrire nos programmes aussi 'localement' que possible.

L'utilisation de variables globales est jusitifiée, si

* Plusieurs fonctions qui ne s'appellent pas ont besoin des mêmes variables, ou
* Plusieurs fonctions d'un programme ont besoin du même ensemble de variables. Ce serait alors trop encombrant de passer toutes les variables comme paramètres d'une fonction à l'autre.


Précédente 1, 2, 3 ··· 10 ··· 20 ··· 30 ··· 38, 39, 40, 41, 42, 43, 44 ··· 46, 47, 48 Suivante
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 31/08/2014 20:43 | #


Regarde dans ML, il me semble que c'est écrit dans le header et/ou le .c
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 10/09/2014 21:23 | # | Fichier joint


Salut, j'ai un problème avec une fonction d'affichage. C'est une fonction qui dessine un carré de 8*8 (ou 16*16 selon le paramètre zoom) aléatoire : chaque pixel a une chance sur deux d'être allumé.
En voici le code :
void affichage_rempart(char x,char y,Bool zoom)
{
    char j,nombre,bit,taille=8+24*zoom;
    short i;
    char *bitmap=calloc(sizeof(char),taille);
    
    for(i=0;i<taille;i++)for(j=0;j<8;j++)if(alea(0,1))bitmap[i ]|=pow_int(2,j);
        //pow fait buguer le programme, donc j'utilise cette fonction de puissance qui ne travaille qu'avec des entiers
    
    if(zoom)ML_bmp_16_or((const unsigned short *)bitmap,16*x,16*y);
    else ML_bmp_8_or(CUC bitmap,8*x,8*y);             //CUC : (const unsigned char*)
    free(bitmap);
}


Mais il y a un problème, regardez un peu l'image suivante :


Oui, ma grille est moche


Seules certaines colonnes de pixels sont concernées, les autres sont invariablement éteintes.
En d'autres termes, pour chaque octet la fonction ne prête attention qu'aux bits numéros 4,6 et 7 en partant de la gauche.
Et ça je ne comprends pas pourquoi... je sais juste que ce n'est pas lié à l'aléatoire
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 10/09/2014 23:16 | #


Mais pourquoi tu t'emmerdes a faire un code aussi compliqué? omg


unsigned char bmp[32]={0};

for(int i = 0;i<32;i++)bmp[i] = rand() & 0xFF;


Et voila ton image 16*16 générée aléatoirement

et si tu utilises une fonction d’aléatoire perso, tu peux utiliser alea(0,0xFF)

un autre petit conseil :
au lieu de
if(zoom)ML_bmp_16_or((const unsigned short *)bitmap,16*x,16*y);
    else ML_bmp_8_or(CUC bitmap,8*x,8*y);

met plutot
ML_bmp_or(CUC bitmap,x<<3<<zoom,y<<3<<zoom,8<<zoom,8<<zoom);

Tu gagnes une ligne, et la perte de vitesse est vraiment dérisoire
Ou alors, si tu n'aimes pas la répétition,
int tailleSprite = 8<<zoom;
ML_bmp_or(CUC bitmap,tailleSprite*x,tailleSprite*y,tailleSprite,tailleSprite);


Ajouté le 10/09/2014 à 23:29 :
Et en fait le problème venait de calloc
Tu as inversé les arguments


http://www.cplusplus.com/reference/cstdlib/calloc/ a écrit :
void* calloc (size_t num, size_t size);
Parameters

num
Number of elements to allocate.
size
Size of each element.


Ajouté le 10/09/2014 à 23:31 :
Quoique en fait je ne sais pas si l'erreur pourrait provenir de la... Mais dans le doute, il vaut mieux quand même essayer
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 !
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 11/09/2014 06:22 | #


Si tu veux ne concerner que les bits 4,6 et 7 tu n'as qu'à passer un masque :
byte = rand() & 0x000000D0;
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 11/09/2014 12:32 | #


Lephenixnoir a écrit :
Si tu veux ne concerner que les bits 4,6 et 7 tu n'as qu'à passer un masque :
byte = rand() & 0x000000D0;

Je pense que ça c'est justement l'erreur qu'il voulait corriger
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 11/09/2014 20:09 | #


Merci pour tes conseils Dodormeur, en effet, étant trop focalisé sur mon 50% de probabilité, je suis passé à côté d'une solution aussi simple

Tu gagnes une ligne, et la perte de vitesse est vraiment dérisoire

Ça j'aurais pas cru... du coup j'avais laissé ML_bmp_or de côté :/
Louis59 Hors ligne Membre Points: 12 Défis: 0 Message

Citer : Posté le 13/09/2014 17:18 | # | Fichier joint


Bonjour,

j'ai une erreur de compilation mais je ne vois pas du tout ce qui ne va pas
voir piece jointe.

merci d'avance.
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 13/09/2014 17:22 | #


Hmm... c'est peut-être le linker.
Enfin, impossible d'être sûr.

Est-ce que ce serait possible qu'on voie le code ?
Aragorn Hors ligne Membre Points: 807 Défis: 5 Message

Citer : Posté le 13/09/2014 17:24 | #


Est-ce que tu as bien installé le sdk dans "C:\sdk\" ?
Si non, c'est normal que ça ne marche pas, j'avais le même problème avant que Legolas ne me donne la solution .
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: 22763 Défis: 149 Message

Citer : Posté le 13/09/2014 17:29 | #


Son dossier d'installation est correct. Le screen indique "C:\Program Files\SDK".
Louis59 Hors ligne Membre Points: 12 Défis: 0 Message

Citer : Posté le 13/09/2014 17:32 | # | Fichier joint


merci à tous les deux, après creation de ce dossier C:/sdk l'erreur a changé, je vous met un ficcier joint pour le nouveau screen

Phenix, tu veut TOUT le code ou seulement une partie précise ?
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 13/09/2014 17:34 | #


Au temps pour moi -- je ne savais pas que le dossier d'installation pouvait avoir une influence dans une telle mesure.
Au vu de la nouvelle erreur, je n'ai pas besoin du code -- le problème ne vient pas de là.

Pour l'instant on a un chemin incorrect.
Aragorn Hors ligne Membre Points: 807 Défis: 5 Message

Citer : Posté le 13/09/2014 17:56 | #


Est-ce que tu as bien supprimer la première installation ?
Si il y a des dossiers autres que les .c, .h et .g1w (dans le dossier de ton projet), essaie de supprimer tous les autres fichiers (ex : dossier debug, sdcard ...).

J'espère que ça résoudra ton problème .
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: 22763 Défis: 149 Message

Citer : Posté le 13/09/2014 17:57 | #


Hey, c'est juste le dossier Debug qu'il faut supprimer !
Le reste est susceptible de contenir des données importantes du projet.
Ninestars Hors ligne Membre Points: 2451 Défis: 24 Message

Citer : Posté le 20/12/2014 19:20 | #


Bonsoir, est-il possible de voir quelle quantité de mémoire on utilise ?
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 20/12/2014 19:28 | #


Ben tu comptes

... Plus sérieusement, je ne pense pas...
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 20/12/2014 20:28 | #


Si. Pour la pile, tu compares les valeurs de r15 avant et pendant l'exécution.
Pour l'allocation dynamique, tu peux avoir que la mémoire allouée dans ton propre code. Pour cela :
#define malloc(s) my_malloc(s)

void *my_malloc(size_t s)
{
    static unsigned counter = 0;
    void *ptr = malloc(s);
    if(ptr) counter += s;
    return ptr;
}
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 20/12/2014 20:50 | #


euh... il y a pas un léger problème avec ton code?
Avec le define que t'as mis, ton code devient


void *maFonction(size_t s)
{
static unsigned counter = 0;
void *ptr = maFonction(s);
if(ptr) counter += s;
return ptr;
}


Du coup, ben ça fait une récursion infinie
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 !
Ninestars Hors ligne Membre Points: 2451 Défis: 24 Message

Citer : Posté le 20/12/2014 20:51 | #


OK merci
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 20/12/2014 20:52 | #


Mais non, le define il faut le mettre que dans les fichiers concernés, pas dans celui qui contient my_malloc() >_<
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 20/12/2014 20:56 | #


Mouais, vaut mieux pas le mettre, C'est un peu crade et inutile de "réécrire" sur des fonctions standard
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 !
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 30 ··· 38, 39, 40, 41, 42, 43, 44 ··· 46, 47, 48 Suivante

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 40 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