**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 23/09/2012 11:04 | # | Fichier joint
en reprenant mon prog, je me suis apperçu que c'est la fonction ML_bmp_and qui bugue précisément ici (voir P.J)
J'ai essayé de recompiler avec une autre version de ML, rien n'y fait...
Ajouté le 23/09/2012 à 11:18 :
bon, après quelques tests, je m\'apperçois que
[green]// Initialisation des bitmaps[/green]
*unsigned char *positionsJoueurPos[NB_POSITIONS];
unsigned char *positionsJoueurNeg[NB_POSITIONS];
const unsigned char pn01[] = {0xFF, 0xFF, [...], 0xC0};
const unsigned char pp01[] = {0x00, 0x38, [...], 0x00};
//Sleep(2000);
positionsJoueurPos[0] = pp01;
positionsJoueurNeg[0] = pn01;
[...]
positionsJoueurPos[7] = pp08;
positionsJoueurNeg[7] = pn08;
//animDebut();
do [green]// BOUCLE PRINCIPALE[/green]
{
score++; [green]// augmentation du score[/green]
ML_clear_vram();
dessineFondEcran(score);
positionAffiche ++;
if(positionAffiche > 7) positionAffiche = 0;
[green]// incrementation de la position du joueur[/green]
ML_bmp_or(positionsJoueurPos[positionAffiche], 20, 21, 18, 24); [green]// toute seule, cette fonction marche[/green]
ML_bmp_and(positionsJoueurNeg[positionAffiche], 20, 21, 18, 24); [green]Par contre, celle là pose problème...[/green]
ML_display_vram();
Sleep(RAPIDITE_DEBUT);
}while(1);
Citer : Posté le 23/09/2012 11:23 | #
Qu'est-ce que tu entends par "pose problème"
J'utilise régulièrement ces fonctions et je n'ai jamais rencontré aucun problème.
Citer : Posté le 23/09/2012 11:35 | #
omg WTF ????????
Je n'ai rien touché (juste commenté/décommenté la fonction) et l'erreur est partie...
Par contre, j'ai une bande blanche qui s'affiche à droite de mon bitmap...
Citer : Posté le 23/09/2012 11:38 | #
C'est peut être parce que la largeur de ton bitmap n'est pas un multiple de 8.
Fais des test.
Citer : Posté le 23/09/2012 11:40 | #
peut être...
Je n'ai pas le tps de faire des tests actuellement, mais ML a tjr fonctionné jusque là...
Citer : Posté le 23/09/2012 13:32 | #
Si l'EBR a disparu en recompilant le code, c'est que l'erreur venait du SDK.
Pour la bande blanche, soit ton bitmap est mal encodé, soit ça vient du code. Essaye de l'afficher seul, en dehors de tout contexte. ML n'a aucun problème pour gérer les largeurs non multiples de 8.
Citer : Posté le 23/09/2012 13:38 | #
fais gaffe aussi, si une ligne de code est trop grande, le sdk supprime la fin (c'est tres embetant d'ailleurs
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 23/09/2012 15:51 | #
Peut être c'est ça la cause de mes bugs de tiles...
My program is not working, I have no idea why.
My program is working, I have no idea why.
Citer : Posté le 23/09/2012 15:56 | #
j'ai deja eu plein de fois le probleme (surtout sur les tile un peu grand (1/6 de l'ecran)
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 23/09/2012 18:09 | #
Vous utilisez l'éditeur intégré au SDK ?
Je vous conseil d'utiliser un vrai éditeur de code, comme Notepad++ par exemple.
Citer : Posté le 23/09/2012 18:13 | # | Fichier joint
C'est sur
Par contre, quoi que je fasse, j'ai toujours ma bande blanche à coté du bitmap...
Edit: le code utilisé est le même que ci-dessus...
Citer : Posté le 23/09/2012 19:20 | #
Oh la vache, il y a une erreur de ma part dans ML_bmp_and. Je vais corriger ça au plus vite.
Il n'y a pas d'erreur dans ML_bmp_and_cl.
Citer : Posté le 23/09/2012 19:23 | #
ok, merci
tu nous dis une fois que c'est corrigé
Citer : Posté le 23/09/2012 19:24 | #
c'etait quoi cette erreur?
Ajouté le 23/09/2012 à 21:00 :
j\'ai une question : pour la gestion du hasard, j\'utilise getTicks() , mais je me demande si je fais 50 fois rand() de suite , cela me donnera t il des nombres vraiment aleatoire ,ou suivant une suite logique?
et si oui, comment faire pour que non?
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 23/09/2012 23:14 | #
J'ai jamais fait de tests, mais je pense pas. En fait la fonction getTicks donnent la graine de la fonction aléatoire, mais rien ne dit que si tu lui donne 1 puis 2 les resultats se suivent puisqu'il il y a un traitement derriere qui change en fonction des nombres, même très proche.
Citer : Posté le 24/09/2012 13:01 | #
Pour les nombres aléatoires en C, je te conseille de consulter cette page.
Je ne peux pas mettre de lien, les crochets provoquent un bug avec la balise bbcode.Citer : Posté le 24/09/2012 16:44 | #
Enlève les crochet, ca n'aura aucune influence sur le lien :
http://www.planet-casio.com/Fr/forums/topic10132-1-Fx-CG-10-20-Fonctions-utiles.html#65985
Citer : Posté le 24/09/2012 17:40 | #
Ok, merci.
Citer : Posté le 24/09/2012 18:10 | #
merci
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 24/09/2012 23:35 | #
Ces fonctions sont pratiques pour la Prizm, mais sur le SDK G85 on a les fonctions standards rand et srand.
Si tu envois toujours le même entier à srand, rand te sortira toujours la même suite de nombres oui. Mais sachant que getTicks peut retourner 11059200 (24*3600*128) valeurs différentes, tu ne retomberas jamais 2 fois sur la même suite
Citer : Posté le 25/09/2012 21:23 | #
Comment on change la valeur maximal du générateur de nombre aléatoire ? (rien trouvé dans la doc...)
Parce que ça, ça ne marche pas
Edit: je suis débile, c'est juste au dessus je crois...