**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 24/01/2014 22:54 | #
Quelqu'un sait comment faire pour qu'un timer accède à des variables globales ?
Citer : Posté le 24/01/2014 22:58 | #
CAD? Tu peux toujours faire une fonction pour modifier cette variable globale que le timer activera
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/01/2014 23:04 | #
J'ai ma fonction void TL_gestureTimer(void); qui est appelée avec un timer : SetTimer(1, TL_TIMER_DELAY, TL_gestureTimer);
Dans mon fichier de lib, j'ai déclaré 3 variables globales que la fonction doit modifier pour pouvoir récupérer les valeurs.
Or, le timer tourne (j'ai vérifié en affichant un texte), mais ne modifie pas mes variables
Citer : Posté le 24/01/2014 23:06 | #
ben alors ça vient de la fonction, parce que moi j'ai déjà utilisé des timers+fonctions+variables globales, et tout marchait nickel.
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/01/2014 23:12 | #
Ah, peut être avec un "extern"
Je vais voir
Ajouté le 24/01/2014 à 23:17 :
** L2300 (E) Duplicate symbol "_TL_GestureTimer_PreviousOrigin" in "C:\***\Touch Lib tests\Debug\main.obj"
Citer : Posté le 25/01/2014 13:25 | #
Non, extern signifie qu'il ne faut pas allouer de mémoire pour la variable. Le mot-clé que tu cherches est volatile. Il dit au compilo de ne faire aucune optimisation sur cette variable car elle peut être modifiée par d'autres processus.
Quoique dans ton cas je ne suis pas certain que ça résolve le problème, vu que j'ai aussi déjà utilisé des globales avec SetTimer sans soucis.
Citer : Posté le 25/01/2014 13:31 | #
Au final, j'ai fait une fonction "int *TL_getVar()" qui retourne un pointeur sur une variable statique. C'est moche mais ça marche
Citer : Posté le 30/01/2014 20:18 | #
Yo tout le monde, j'ai un gros problème j'ai perdu mes librairie fxilib donc, je voulais savoir comment les retrouver...
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)
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)
Citer : Posté le 30/01/2014 20:30 | #
Tu as fait comment ?
Je te conseille de réinstaller le SDK
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Citer : Posté le 30/01/2014 20:48 | #
m**de mais un truc bizarre, je viens de tester une fonction de fxilib sans avoir la librairie dans le .c et le .h et ça fonctionne quand même j'ai monochrome et usefull c'est tout...
En fait, j'ai ouvert mon SDK avec mon projet et là, fxilib avais disparue voilà...
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)
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)
Citer : Posté le 30/01/2014 20:50 | #
Ben ajoute #include "fxlib.h" dans le main.c
Et normalement y'a pas besoin d'avoir fxlib.src dans les fichiers du projet
Citer : Posté le 30/01/2014 20:54 | #
à d'accord , il y déjà merci.
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)
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)
Citer : Posté le 06/02/2014 17:06 | #
J'ai une question:
Je veux faire une fonction qui me permet de déplacer deux sprites de 128*64 pixels avec un déplacement diagonal, mais je ne sais pas si j'utilise ML_horizontal_scroll ou ML_vertical_scroll après avoir affiché mes deux images ou je fais une fonction qui prend en paramètres les pointeurs vers mes deux tableaux de char qui contiennent mes images:
int y=64;
for(int x=128, x, x-=2){
y--;
ML_clear_vram();
ML_bmp_or_cl(bitmap1,x,y,128,64);
ML_bmp_or_cl(bitmap2,x+128,y+64,128,64);
ML_display_vram();
}
}
Et pour l’appeler:
Citer : Posté le 06/02/2014 17:31 | #
À priori c'est bon, sauf pour for(int x=128, x, x-=2), il faut mettre for(int x=128; x; x-=2)
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 06/02/2014 17:47 | #
Pour les pointeurs le nom du tableau est déjà un pointeur, donc fait transition(bitmap1, bitmap2);
Citer : Posté le 06/02/2014 18:08 | #
Ok, merci! je vais voir ça
Ajouté le 06/02/2014 à 18:34 :
Ça fonctionne parfaitement! Merci.
Ajouté le 07/02/2014 à 20:48 :
Alors, cette fois j'aimerai faire une fonction qui affiche des éléments:
Actuellement j'ai ça:
{
const unsigned char sol[]={0x0, 0x60, ...,0x0};
const unsigned char mur[]={0x0,0x60, ...,0x0};
const unsigned char bouton[]={0x0,0x60, ...,0x0};
const unsigned char sortie[]={0x0,0x60, ...,0x0};
if(element==1)ML_bmp_or_cl(sol,x,y,19,10);
if(element==2)ML_bmp_or_cl(mur,x,y,19,13);
if(element==3)ML_bmp_or_cl(bouton,x,y,19,13);
if(element==4)ML_bmp_or_cl(sortie,x,y,19,13);
ML_display_vram();
}
Je me demandais s'il était possible de créer une structure contenant ces sprites et que la fonction prennent en argument le nom d'une variable de la structure:
{
struc Elements
{
const unsigned char sol[]={0x0,0x60, ...,0x0};
const unsigned char mur[]={0x0,0x60, ...,0x0};
const unsigned char bouton[]={0x0,0x60, ...,0x0};
const unsigned char sortie[]={0x0,0x60, ...,0x0};
};
if(element==1){ML_bmp_or_cl(sol,x,y,19,10);} else {ML_bmp_or_cl(Element.element,x,y,19,13);}//ça marcherait?
ML_display_vram();
}
Edit par Dark Storm : j'ai réduit la taille des sprites pour la mise en page du forum
Citer : Posté le 07/02/2014 20:53 | #
{
const unsigned char sprites[4][19*2]={{0x0,0x60, ...,0x0},
{0x0,0x60, ...,0x0},
{0x0,0x60, ...,0x0},
{0x0,0x60, ...,0x0}};
ML_bmp_or_cl(sprites[element],x,y,19,13);
ML_display_vram();
}
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 07/02/2014 20:56 | #
Ok, merci Dodormeur! Je sens que ça va bien m'aider
Citer : Posté le 17/02/2014 09:52 | # | Fichier joint
En fouillant les fichiers, j'ai trouvé ceci (cf fichier-joint). Un petit pdf sur les incompatibilités avec certaines fonctions du SDK et nouvelles calculatrices. Désolé si ce document a déjà été posté.
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 19/02/2014 16:50 | #
petite découverte du jour: ça fait plusieurs semaines que je tourne en rond, a chercher une erreur et voilà ce que je viens de trouver:
-en C, le code suivant va nous donner le bon pointeur vers la vram (quand on utilisera ML_vram_adress):
typedef char*(*sc_cpv)(void);
const unsigned int sc0135[] = { 0xD201D002, 0x422B0009, 0x80010070, 0x0135 };
#define ML_vram_adress (*(sc_cpv)sc0135)
-en C++, le même code ne va pas donner de bon pointeur et si comme moi, vous découpez en de trop petits morceaux le code pour trouver l’erreur, vous pourrez éventuellement tomber sur ça:
obtenu avec ce code si:
Buffer est une classe qui doit avoir pour initialiseur rien ou un pointeur sur des char, hors il est dit ici que le paramètre envoyé a test est une liste (une autre classe) et non un pointeur...
Ajouté le 19/02/2014 à 16:54 :
et caster ML_vram_adress ne résout rien, le pointeur renvoyé ne pointe pas sur la vram
-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 10/03/2014 21:15 | #
Quelqu'un connaît-il un tutoriel pour créer et manipuler des fichiers on-calc ? Apparemment ce n'est pas pareil que dans les programmes en console, et je n'ai trouvé des informations ni ici ni dans le cours de Top-progcasio