**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.
Citer : Posté le 15/04/2014 18:22 | #
désolé de te rembarrer encore une fois, mais le problème ne viens pas de là, delete(0) ne produit pas d'erreur, et j'ai déjà tenté en préallouant un point inutile a la création de la classe, ça n'a pas marché non plus.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 15/04/2014 18:32 | #
Mais non, tu ne me rembarres pas.
C'est aussi une occasion pour moi d'en apprendre plus.
Allez, je m'y mets sérieusement, je lis tout comme il faut et je te dis si j'ai une question.
Ajouté le 15/04/2014 à 18:44 :
J'ai une idée.
for(unsigned int i=0;i<nbPoints;++i) tmp1[i]=points[i];
[b]delete(points)[/b];
points=tmp1;
Normalement (je ne sais pas si ça passe différement), les variables allouées avec [] dans new doivent également être utilisées dans delete avec.
delete [] ptr;
Citer : Posté le 15/04/2014 18:49 | #
omg, si c'est ça, je me pends XD (en tout cas, je me souviens pas avoir lu qu'il fallait ajouter [] aux delete)
je change ça et te dis si ça a corrigé quelque chose
Ajouté le 15/04/2014 à 18:53 :
bon bah, il me reste plus qu'a me pendre... car apparemment, ça vient biens de là... merci en tout cas d'avoir pris le temps de regarder le code (je n'aurais jamais pensé a ça, il va me falloir re-jeter un coup d'oeuil aux cours pour m'assurer que je n'ai pas fait d'autres erreurs dans le même genre, j'ai l'habitude d'utiliser delete comme un free)
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed
-mon tuto sur les Str
Mes calto: G25+, G75
Mon minecraft en dévelopement
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 15/04/2014 18:55 | #
C'est moi qui suis content d'avoir pu t'aider.
Citer : Posté le 16/04/2014 09:19 | #
Bon, je vois que vous séchez sur mon problème mais c'est pas grave.
J'avais décidé de remettre sa correction à pus tard et de m'occuper d'autre chose. Et devinez quoi ? J'ai modifié mon code pour mettre en place une liste chaînée et maintenant ça marche, comme par miracle, alors que je n'ai touché à rien de ce côté-là
(enfin si, j'ai modifé la fonction Creation_etre en utilisant un pointeur sur une structure, mais de toute façon je vois pas en quoi ça aurait pu résoudre le problème)
Merci quand même à ceux qui ont cherché
Citer : Posté le 17/04/2014 16:26 | #
Bonjour,
Je débute en programmation sur le SDK de casio (je sais programmer en C). Et j'ai quelques soucis.
Comment faire un random ?
Oui j'ai cherché, oui j'ai trouve, non ca ne marche pas. Enfin,en tout cas je ne sais pas utiliser ce qu'il est ecrit.
srand((unsigned)RTCReadSecond);
[...]
oui d'ailleur il ne faut pas oublier de l'inclure et aussi de mettre ça au début du programme:
RTCStart();
Je ne sais pas comment utiliser ça
Où met-on le nombre maximum et le nombre minimum ?
Et comment utilise t-on cette fonctions car quand je tape :
J'obtiens une erreur.
J'ai aussi un problème avec mes fonction.
{
Print(plateForme1);
Print(plateForme2);
Print(plateForme2);
Print(plateForme3);
}
Quand je tape cette fonction (et celle-ci uniquement) j’obtiens une erreur ((327) : C2500 (E) Illegal token "void").
Autre (et dernière) erreur, qui je pense est liée à celle ci-dessus.
Le code générer contient une partie à ne pas modifier :
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
#pragma section
Or, le compilateur m'indique plusieurs erreurs DANS cette partie.
Lorsque je compile sans ce fameux code, il ne m'indique pas d'erreur.
Donc ma question est : puis-je supprimer ce bout de code ou pas ?
Cordialement
Citer : Posté le 17/04/2014 16:36 | #
tout d'abord, pour l'aléatoire va voir ici http://www.planet-casio.com/Fr/programmation/tutoriels.php?id=
pour RTCStart, je vois pas, je sais pas si ça existe en tout cas Simlo n'en parle pas dans sa doc
avec tes fonctions, il me faut le code complet(mais je pense que c'est du au fait que les variables ont un nom similaire)
sinon, le bout de code n'est absolument pas à modifier
met ça à la place(normalement il marche sinon il faudra réinstaller le SDK)
unsigned long BR_Size;
#pragma section
#pragma section _TOP
//****************************************************************************
// InitializeSystem
//
// param : isAppli : 1 = Application / 0 = eActivity
// OptionNum : Option Number (only eActivity)
//
// retval : 1 = No error / 0 = Error
//
//****************************************************************************
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
#pragma section
quelles erreurs te met il?(propane,méthylpropane )
Citer : Posté le 17/04/2014 17:14 | #
Selon le tutoriel de Dark Storm, il suffit d'avoir ce code au début du programme principal pour faire de l'aléatoire.
static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
static int (*SysCall)(int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;
int RTC_getTicks()
{
return (*SysCall)(0, 0, 0, 0, 0x3B);
}
Ensuite, au début du programme
Et pour générer un nombre aléatoire:
qui retourne un entier entre 0 et 2'147'483'647.
Citer : Posté le 19/04/2014 00:01 | # | Fichier joint
J'ai essayer le random, mais ca ne marche toujours pas
J'ai essayer aussi de renommer la fonction mais ca ne marche pas non plus
Je vous passe donc le fichier en téléchargement.
Ps : Le programme n'est pas fini, je suis entrain de recopier celui qui se trouve sur ma calculatrice.
Citer : Posté le 19/04/2014 00:04 | #
ça ne marche pas
Qu'est-ce qui ne marche pas : la compilation, l'utilisation de la fonction, les valeurs retournées pas rand() ?
Une question claire et précise entraîne souvent une réponse claire et précise
Le mieux pour nous, c'est de nous fournir la liste des erreurs si la compilation foire
Citer : Posté le 19/04/2014 00:49 | # | Fichier joint
Eh bien en fait, le compilateur m'indique un erreur sur la ligne :
Ainsi que sur une des mes fonctions et sur le bout de code à ne pas modifier, voici les erreurs :
(6) : C2500 (E) Illegal token "("
(6) : C2131 (E) No type nor storage class
(6) : C2139 (E) No parameter type
(6) : C2118 (E) Prototype mismatch "srand"
(6) : C2500 (E) Illegal token ")"
(338) : C2500 (E) Illegal token "int"
(338) : C2500 (E) Illegal token "int"
(339) : C2500 (E) Illegal token "{"
(340) : C2305 (E) Void function returns value
(340) : C2225 (E) Undeclared name "max"
(340) : C2225 (E) Undeclared name "min"
(343) : C2500 (E) Illegal token "void"
(344) : C2500 (E) Illegal token "{"
(351) : C2709 (E) Illegal section name declaration
(352) : C2500 (E) Illegal token "unsigned"
(352) : C2225 (E) Undeclared name "BR_Size"
(353) : C2709 (E) Illegal section name declaration
(356) : C2709 (E) Illegal section name declaration
(367) : C2500 (E) Illegal token "int"
(367) : C2500 (E) Illegal token "int"
(368) : C2500 (E) Illegal token "{"
(369) : C2305 (E) Void function returns value
(369) : C2225 (E) Undeclared name "isAppli"
(369) : C2225 (E) Undeclared name "OptionNum"
(372) : C2709 (E) Illegal section name declaration
(372) : C2500 (E) Illegal token ""
Les code utilisé est le même que dans le fichier texte joint à ce message.
Je réinstallerais quand même le SDK demain, trop fatigué pour le faire ce soir
Citer : Posté le 19/04/2014 02:38 | #
Salut, tu dois mettre srand (RTC_getTicks()); dans ton main ;).
Ajouté le 19/04/2014 à 02:40 :
{
srand (RTC_getTicks ());
...
...
}
Citer : Posté le 19/04/2014 23:58 | #
Merci beaucoup, cela ne m'indique plus d'erreur au niveau du random !
En revanche, le compilateur m'indique toujours des erreurs au niveau des troisième et quatrième fonctions.
J'ai les fonctions :
main (aucune erreur)
jeu (aucune erreur)
structure ((349) : C2709 (E) Illegal section name declaration)
random ((338) : C2305 (E) Void function returns value (alors que j'ai bien mis int)
(338) : C2225 (E) Undeclared name "max"
(338) : C2225 (E) Undeclared name "min"
(341) : C2500 (E) Illegal token "void"
La réinstallation du SDK n'a rien changer au problème
Citer : Posté le 20/04/2014 00:23 | #
Vérifie que ta fonction doit bien retourner un int, sinon c'est qu'il y a un problème dans la déclaration de ta structure. A tu bien mis un ; après sa déclaration?
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
merci a tout le monde pour son soutien
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 !Citer : Posté le 26/04/2014 11:01 | #
J'ai un problème avec les caractères spéciaux, je voudrais afficher la flèche qui va vers le haut (code: 0xE692) avec la fonction PrintXY:
if(pos>0)PrintXY(123,8,arrowT,0);
Ajouté le 26/04/2014 à 11:03 :
Non, en fait c'est bon, j'avais mal lu, le code c'est
if(pos>0)PrintXY(123,8,arrowT,0);
Citer : Posté le 26/04/2014 11:53 | #
Tu te casses la tête.
Il y a en C un moyen d'insérer n'importe quel octet dans une chaîne de caractères à l'aide d'une séquence d'échappement. Il suffit de mettre un '\' suivi du code en octal du caractère, que je te conseille de toujours écrire sur 3 caractères.
Par exemple, en octal, 0xE6 donne 346 et 0x92 donne 222. Donc simplement:
C'est simple, standard et ça fonctionne avec n'importe quel caractères, sans tableau externe ni fonction, et surtout ça se met à n'importe quel endroit de n'importe quelle chaîne de caractères.
Citer : Posté le 26/04/2014 11:57 | #
Ah, merci je ne savais pas... En tout cas ça marche
Citer : Posté le 26/04/2014 12:13 | #
Ce moment quand tu découvre que le SDK ne sait pas utiliser des entiers de 64 bits
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
merci a tout le monde pour son soutien
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 !Citer : Posté le 26/04/2014 12:19 | #
Oui et non. Les processeurs SH4 sont équipés d'un coprocesseur arithmétique de 128 bits et calculent en flottants sur 64.
Citer : Posté le 26/04/2014 12:38 | #
En tout cas, quand j'essaye de déclarer un unsigned long long, il me met un chouette erreur du style (0) : C4000 (-) Internal error: DWARF2_make_tag_base_int_type:bad base type
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
merci a tout le monde pour son soutien
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 !Citer : Posté le 26/04/2014 13:21 | #
Un unsigned long long ? Ce ne serait pas un peu comme déclaration ?
Puisque le long est déjà long ?
Ou alors tu te débrouilles avec des pointeurs, ou tu est foutu si tu veux utiliser des opérations arithmétiques, puisque la taille des registres du SH4 est de 32 bits. Inutile donc d'aller voir celle du SH3.