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 ··· 15, 16, 17, 18, 19, 20, 21 ··· 30 ··· 40 ··· 46, 47, 48 Suivante
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 11/07/2013 19:36 | #


IsKeyDown s'active quand tu appuies sur la touche alors que IsKeyUp quand tu enlèves ton doigt de la touche.

Et je pense bien qu'un Sleep peut contenir une variable.
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 11/07/2013 20:12 | #


Le mieux si tu as besoin d'attendre qu'une touche soit pressé, c'est de faire un GetKey, car si je ne me trompe pas et si la fonction est bien faite, normalement ta calculatrice se met en "veille" en attendant qu'une touche soit pressé, elle utilise donc en principe moins d'énergie.
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 11/07/2013 20:15 | #


oui mais quand tu attends l'appuie d'une touche mais quand même temps d'autres actions se passe tu ne peux pas utiliser GetKey...
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 11/07/2013 20:22 | #


Je suis d'accord, mais dans ce cas là :
while(IsKeyDown(KEY_CTRL_EXE));

Autant utiliser un getkey.
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 11/07/2013 21:05 | #


ah oui c'est vrai que j'avais omis le mot "pause"
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 11/07/2013 22:54 | #


le gros problème vient du fait que (en tout cas chez moi) la fonction getkey buge comme c'est pas possible : elle repère parfois l'appui de touche qui viennent d’être pressée, mais qui ne le sont plus au lancement de la fonction, parfois elle me renvoie des valeurs fantaisistes, et d'autres machin comme ca... c'est pour ca que je ne l'utilise jamais, et en plus je n'ai jamais compris pourquoi il fallait passer un pointeur pour le retour au lieu de juste l'avoir mis comme retour de fonction ...
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 !
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 11/07/2013 23:05 | #


Bizzare qu'il y ai des bugs. En fait la fonction GetKey utilise le Syscall 0x90F (non documenté à ce que je sache). Sachant que le syscall a besoin d'un pointeur, ils ont fait pareil pour la fonction.

Le mieux est peut-être alors d'utiliser le syscall d'input documenté dans la "FxReverse" et qui, si je me rappel bien, permet d'être configuré comme une fonction bloquante.
Alp96 Hors ligne Membre Points: 239 Défis: 3 Message

Citer : Posté le 12/07/2013 09:59 | #


Dark Storm, j'essaie dans une semaine ou deux! là je suis pas chez moi et j'ai pas pris mon portable....
Alp96, celui qui programme n'importe quoi pourvu que ce soit inventif!!! :demon:
Calcu: graph 35+ tweaké
Transformez votre graph 35+ SH4 en graph 75!
C'est par ici!
Mes progs#Cliquez!!
Cliquez pour recouvrir

Etes vous un vrai trader???
Business

Saurez vous vaincre les puissances ennemis?
Swords and Sandals 2

Un 2048 ca vous tente??
2048
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 02/08/2013 13:57 | #


J'ai une question: savez-vous où sont stokés sur l'ordi les fichiers (de sauvegarde d'un jeu par exemple) crées par l'émulateur du SDK ?

J'aimerai vérifier leur contenu, j'ai une fonction qui bugue...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 02/08/2013 14:05 | #


J'ai jamais cherché, mais à mon avis c'est soit dans le dossier INIT de ton projet soit les fichiers "projet.dlr" ou "Com.dlw", mais dans tous les cas il y aura de nombreuses autres info et la tienne sera perdu au milieu donc je sais pas si tu pourra voir grand chose(en gros pour moi il y a un fichier qui est un dump de la mémoire flash et qui est chargé lors du lancement de l'emulateur).
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 02/08/2013 14:08 | #


j'enregistre une chaine parmi d'autres infos, donc je devrais arriver à récuper mes octets.
Je verrai bien.

Ajouté le 03/08/2013 à 21:45 :
Bon, je me suis démerdé avec FA-124 et ma calto, mais je suis confronté à un autre problème:

en faisant :
taille = sizeof(struct Player);

j'obtient l'erreur suivante :
SDK a écrit :
C2223 (E) Incomplete tag used in expression


Y'a t-il un moyen de récupérer la taille exacte d'une structure (qui est relativement grande: environ 800 octets à vue d’œil, car composée de tableaux).

C'est pour gérer une sauvegarde, pour l'instant, je fait:

void enregistrer(void *pJoueur)
{
    Player *joueur = NULL;
    int taille = 0;

    joueur = pJoueur;
    taille = [gray]?[/gray];
}


Ajouté le 03/08/2013 à 21:50 :
C'est bon, j'ai juste été con car j'utilise un typedef

Ajouté le 31/08/2013 à 18:39 :
Je cherche la fonction "key inject", ou tout du moins le sycall en question. J'ai cherché sur le forum, mais je ne l'ai pas retrouvé...
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 31/08/2013 18:43 | #


j'ai ca, mais je ne suis pas sur que ca marche (mais c'est compatible SH4)

#define PutKey (*(sc_4i)sc0248)

sinon regarde dans gravity duck
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 31/08/2013 18:44 | #


c'est pas mal, mais le passage d'argument (pour la touche) se fait comment ?
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 31/08/2013 18:46 | #


void key_inject1(int keycode)
{
(*SysCall)(keycode, 0, 0, 0, 0x248);
}


et ca c'est les define


#define K_0 71
#define K_1 72
#define K_2 62
#define K_3 52
#define K_4 73
#define K_5 63
#define K_6 53
#define K_7 74
#define K_8 64
#define K_9 54
#define K_DP 61
#define K_EXP 51
#define K_PMINUS 41
#define K_PLUS 42
#define K_MINUS 32
#define K_MULT 43
#define K_DIV 33
#define K_FRAC 75
#define K_LPAR 55
#define K_RPAR 45
#define K_COMMA 35
#define K_STORE 25
#define K_LOG 66
#define K_LN 56
#define K_SIN 46
#define K_COS 36
#define K_TAN 26
#define K_SQUARE 67
#define K_POW 57
#define K_EXE 31
#define K_DEL 44
#define K_AC 32
#define K_FD 65
#define K_EXIT 47
#define K_SHIFT 78
#define K_ALPHA 77
#define K_OPTN 68
#define K_VARS 58
#define K_UP 28
#define K_DOWN 37
#define K_LEFT 38
#define K_RIGHT 27
#define K_F1 79
#define K_F2 69
#define K_F3 59
#define K_F4 49
#define K_F5 39
#define K_F6 29
#define K_MENU 48
#define K_XT 76
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 31/08/2013 18:47 | #


c'est parfait
Compatible SH4 ?
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 31/08/2013 18:47 | #


oui, c'est casimo qui me l'a passé
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 !
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 31/08/2013 18:55 | #


Il manque une partie dans votre code, la variable nomée SysCall et si vous pouvez, evitez d'utiliser ce type d'appel de syscall, un fichier externe est bien plus propre et n'engendrera pas de bug contrairment à ce type de bidouillage. (Le bug de monochromlib sur SH4 est due à ce type d'appel)
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 31/08/2013 18:56 | #


Le code entier :


static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
static int (*SysCall)( int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;
void key_inject(int keycode)
{
(*SysCall)(keycode, 0, 0, 0, 0x248);
}

Je ferai un fichier externe si j'ai le temps
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 31/08/2013 19:12 | #


Cette methode n'est pas compatible SH4. Pour la rendre compatible SH4 fait ça plutôt, ça devrait marcher:
static [red]const [/red]int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
static int (*SysCall)( int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;
void key_inject(int keycode)
{
(*SysCall)(keycode, 0, 0, 0, 0x248);
}
Ninestars Hors ligne Membre Points: 2451 Défis: 24 Message

Citer : Posté le 07/09/2013 11:33 | #


srand() ne doit pas être appelé qu'une fois ?
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 07/09/2013 11:35 | #


ben je vois pas comment l'appeler qu'une fois dans une fonction que t'utilise plusieurs fois... Ou alors faut le faire en global
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Précédente 1, 2, 3 ··· 10 ··· 15, 16, 17, 18, 19, 20, 21 ··· 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 59 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