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, 21, 22, 23, 24, 25, 26 ··· 30 ··· 40 ··· 46, 47, 48 Suivante
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 24/01/2014 22:54 | #


Quelqu'un sait comment faire pour qu'un timer accède à des variables globales ?

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 24/01/2014 22:58 | #


CAD? Tu peux toujours faire une fonction pour modifier cette variable globale que le timer activera
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 Hors ligne Labélisateur Points: 11571 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

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.
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 Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 24/01/2014 23:12 | #


Ah, peut être avec un "extern"
Je vais voir

Ajouté le 24/01/2014 à 23:17 :
Co***** de SdK a écrit :
** L2300 (E) Duplicate symbol "_TL_GestureTimer_PreviousOrigin" in "C:\***\Touch Lib tests\Debug\main.obj"

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

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.
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Kirafi Hors ligne Membre Points: 2179 Défis: 10 Message

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...
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)
Lancelot Hors ligne Membre Points: 1274 Défis: 160 Message

Citer : Posté le 30/01/2014 20:30 | #


Tu as fait comment ?

Je te conseille de réinstaller le SDK
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
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
Kirafi Hors ligne Membre Points: 2179 Défis: 10 Message

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à...
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)
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

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
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Kirafi Hors ligne Membre Points: 2179 Défis: 10 Message

Citer : Posté le 30/01/2014 20:54 | #


à d'accord , il y déjà merci.
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)
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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:
void transition(const unsigned char* bitmap1, const unsigned char* bitmap2){
    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:
transition(&exempleBitmap1, &exempleBitmap2);
Après je ne suis pas du tout sûr pour les pointeurs
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

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)
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 Hors ligne Labélisateur Points: 11571 Défis: 176 Message

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);
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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:
void dispElement(int x, int y, int element)
{
    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:
void dispElement(int x, int y, int element)//je mets quoi comme argument?
{
    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();
}
Bref, si quelqu'un peut m'aider, merci

Edit par Dark Storm : j'ai réduit la taille des sprites pour la mise en page du forum
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 07/02/2014 20:53 | #


void dispElement(int x, int y, int element)
{
    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();
}

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 !
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 07/02/2014 20:56 | #


Ok, merci Dodormeur! Je sens que ça va bien m'aider
Totoyo Hors ligne Membre d'honneur Points: 16065 Défis: 102 Message

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é.
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

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:
C:\Users\Lee Mach\Desktop\test 3D and other\main.cpp(20) : C5289 (E) No instance of constructor "Buffer::Buffer" matches the argument list

obtenu avec ce code si:
Buffer test(ML_vram_adress);

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
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-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


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

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
Précédente 1, 2, 3 ··· 10 ··· 20, 21, 22, 23, 24, 25, 26 ··· 30 ··· 40 ··· 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 62 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