**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/04/2013 21:33 | #
Ok merci beaucoup
Par contre tu pourrais me préciser quand même pour l'histoire des headers stp.
Citer : Posté le 23/04/2013 21:43 | #
et bien, si tu veux mettre la fonction apres le main, il te faudra montrer au programme qu'elle existe. il te faudra donc copier un prototype de la fonction avant le main.
exemple :
void PrintV( int variable); // on dit au programme que la fonction existe
//****************************************************************************
// AddIn_main (Sample program main function)
//
// param : isAppli : 1 = This application is launched by MAIN MENU.
// : 0 = This application is launched by a strip in eACT application.
//
// OptionNum : Strip number (0~3)
// (This parameter is only used when isAppli parameter is 0.)
//
// retval : 1 = No error / 0 = Error
//
//****************************************************************************
int AddIn_main(int isAppli, unsigned short OptionNum)
{
unsigned int key;
int nombre;
nombre = 50;
Bdisp_AllClr_DDVRAM();
locate(4,1);
Print((unsigned char*)"Plus ou moins");
locate(3,3);
Print((unsigned char*)"Appuie sur EXE");
while(IsKeyDown(KEY_CTRL_EXE)==0){
GetKey(&key);
}
Bdisp_AllClr_DDVRAM();
locate(1,1);
Print((unsigned char*)"Fleches pour choisir");
locate(8,3);
Print((unsigned char*)"< >");
while(1){
GetKey(&key);
if (key == KEY_CTRL_LEFT) {
nombre -= 1;
}
if (key == KEY_CTRL_RIGHT) {
nombre += 1;
}
locate(7,4);
PrintV(nombre);
Bdisp_PutDisp_DD();
}
return 1;
}
void PrintV( int variable)
{
int i, length=0;
char str[12] = "0";
if (variable)
{
if (variable<0)
{
length++;
str[0] = '-';
variable = -variable;
}
for (i=variable ; i ; i/=10) length++;
str[length] = 0;
for ( ; variable ; variable/=10) str[--length] = variable%10+'0';
}
Print(str);
}
//****************************************************************************
//************** ****************
//************** Notice! ****************
//************** ****************
//************** Please do not change the following source. ****************
//************** ****************
//****************************************************************************
#pragma section _BR_Size
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
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/04/2013 21:55 | #
Sinon il me semble, on peut mettre les prototypes dans un .h c'est ça ?
Citer : Posté le 23/04/2013 22:04 | #
oui, ce que tu peut faire, c'est mettre tes prototypes dans un .h, et tes fonctions dans un .c
exemples :
main.c
#include "PrintV.h"
int AddIn_main(int isAppli, unsigned short OptionNum)
{
unsigned int key;
int nombre;
nombre = 50;
Bdisp_AllClr_DDVRAM();
locate(4,1);
Print((unsigned char*)"Plus ou moins");
locate(3,3);
Print((unsigned char*)"Appuie sur EXE");
while(IsKeyDown(KEY_CTRL_EXE)==0){
GetKey(&key);
}
Bdisp_AllClr_DDVRAM();
locate(1,1);
Print((unsigned char*)"Fleches pour choisir");
locate(8,3);
Print((unsigned char*)"< >");
while(1){
GetKey(&key);
if (key == KEY_CTRL_LEFT) {
nombre -= 1;
}
if (key == KEY_CTRL_RIGHT) {
nombre += 1;
}
locate(7,4);
PrintV(nombre);
Bdisp_PutDisp_DD();
}
return 1;
}
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
#pragma section
PrintV.h
#ifndef PRINTV
#define PRINTV //pour éviter l'inclusion multiple
void PrintV( int variable); // on dit au programme que la fonction existe
#endif
PrintV.c
#include "PrintV.h"
void PrintV( int variable)
{
int i, length=0;
char str[12] = "0";
if (variable)
{
if (variable<0)
{
length++;
str[0] = '-';
variable = -variable;
}
for (i=variable ; i ; i/=10) length++;
str[length] = 0;
for ( ; variable ; variable/=10) str[--length] = variable%10+'0';
}
Print(str);
}
et il te faut inclure les deux fichiers dans "files in project" du SDK
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/04/2013 22:09 | #
Merci
Citer : Posté le 23/04/2013 22:14 | #
de rien
j’espère que tu nous sortira de beaux add-ins
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/04/2013 22:30 | #
C'est pour ça que je commence
Citer : Posté le 23/04/2013 22:48 | #
si tu veux, j'ai une petite bibliothèque de fonctions utiles et compatible SH4, je peut te la passer si tu veux
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/04/2013 11:21 | #
Ok si ça peut m'aider
Comment on a un nombre aléatoire ?
Citer : Posté le 24/04/2013 15:45 | # | Fichier joint
tiens, j'ai mis les description des fonctions dans le .h
il y a quelques fonctions qui ne te serviront que lors des programmes graphique, mais qui te seront utiles
pour le hasard, il te faut au debut de ton programme appeler srand(time_getTicks()); pour initialiser le hasard, puis tu utilise rand() pour obtenir un nombre aleatoire. pour avoir un nombre entre 0 et 50 (exclus), tu fais rand()%50
il faut aussi rajouter #include "stdlib.h" au debut
Ajouté le 24/04/2013 à 15:59 :
tu aura sans doute un conflit entre les deux fonctions PrintV, et pour le resoudre, met la fonction et son prototype entre commentaire /* code de la fonction */
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/04/2013 16:24 | #
Par contre j'ai un problème avec srand(time_getTicks());
Je l'ai placé au début de main
Merci beaucoup, je vais étudier ce que tu m'as envoyé
Citer : Posté le 24/04/2013 16:46 | #
tu a bien mis #include "usefull.h" apres le #include "fxlib.h" dans le main.c?
et si oui, essaye de rebuild all
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/04/2013 17:54 | # | Fichier joint
J'avais pas mis ton truc, maintenant que je le mes il me dit
Je te mes le projet en pièce jointe, si ça te dérange de jeter un coup d'oeil
Citer : Posté le 24/04/2013 17:58 | #
il faut que tes fichiers sources soit dans le même fichier que ton fichier main, et que tu l'ajoute dans files in project (cliq droit et add)
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/04/2013 18:06 | #
Ah merci ça fonctionne !
Citer : Posté le 24/04/2013 18:44 | #
de rien
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/04/2013 18:51 | #
Juste une dernière (oui je sais je suis chiant :P)
Quelle est la syntaxe pour afficher des caractères spéciaux genre flèches et tout ?
J'ai essayé Print(0x9a) mais sans succès.
Citer : Posté le 24/04/2013 20:44 | #
par exemple, pour la fleche,
unsigned char fleche[]={0XE6,0x9B,0};
Print(fleche);
mais regarde dans la doc le character set
et ne t’inquiète pas pour tes questions, tout le monde doit commencer
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 01/05/2013 01:19 | #
Salut !
Je recherche une fonction de saisie de chaine de caractères. Pour la saisie de nombres j'ai trouvé une fonction "input" qui marche bien, dans libg85 :
http://www.planet-casio.com/Fr/programmes/programme824-1-libg85-muelsaco-.html
Pour la saisie de caractères il y a en fait une fonction "inputstring" dans libg85, mais je n'arrive pas à la faire marcher. Elle ne renvoie rien apparemment. Vous sauriez comment la faire marcher? ou existe-il une autre fonction dans une autre lib?
Merci
Citer : Posté le 01/05/2013 08:51 | #
c'est bizarre, j'ai un peu regarder et je ne vois pas pourquoi elle ne fonctionnerais pas...
mais le mieux et le plus simple, c'est que tu fasse toi-même ta fonction d'input de caractères (c'est plus modulable,joli et plus pratique pour l'utilisateur)
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 03/05/2013 18:47 | #
J'ai essayé de faire une fonction d'input de caractères, mais je n'arrive même pas à faire une simple fonction qui renvoie un string . Dans cet exemple ma fonction "string" ne renvoie rien (comme inputstring de libg85), et si je rajoute la ligne "strcat (str,"ajout");" ça fait planter le SDK !
#include "string.h"
#include "stdlib.h"
#include "stdio.h"
char *string(){
char str[]="test";
//strcat (str,"ajout"); //cette ligne fait planter le SDK
return str;
}
int AddIn_main(int isAppli, unsigned short OptionNum)
{
unsigned int key;
char *texte;
texte = string();
locate(1,2);
Print(texte);
while(1){
GetKey(&key);
}
return 1;
}
Quelqu'un pourrait m'expliquer ce qui ne va pas, et comment faire pour qu'une fonction renvoie une chaine de caractère? Merci