Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

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 ··· 30 ··· 37, 38, 39, 40, 41, 42, 43 ··· 46, 47, 48 Suivante
Lephenixnoir En ligne Administrateur Points: 24556 Défis: 170 Message

Citer : Posté le 28/08/2014 11:48 | #


Tu nous donnes ton code parce que là on peut rien faire.
Si, je peux au moins te dire que tu as tenté d'accéder à des données supposées être en-dehors de la mémoire physique de la machine.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darks-ninja Hors ligne Membre Points: 77 Défis: 16 Message

Citer : Posté le 28/08/2014 11:50 | #


Comme tout à l'heure :
ML_clear_screen();
    ML_clear_vram();
    while(IsKeyUp(KEY_CTRL_SHIFT)){
    ML_bmp_or(Menu,1,1,127,63);
    ML_display_vram();
    }


Edit : "code", pas "quote".
Casio Graph 35+ USB tweaké 75

Mes Projets
Mes Projets
♠ Galaxy Invader ++ ♠
♣ Jeu en BASIC CASIO ♣
Mes Passions
Mes Passions
♥ Les Mangas ♥
♥ La Programmation ♥
♥ Les Jeux Vidéo ♥
Mes Languages
Mes Languages
♠ HTML/CSS ♠
♠ JAVASCRIPT ♠
♠ JAVA ♠
♠ C ♠
♠ C# ♠
♠ PHP/MY SQL ♠
♠ BASIC CASIO ♠

* Pour la plupart de
ces languages, je ne
possède que des bases...
Mes Citations
Mes Citations
☺ Tout s'acquiert avec de la pratique :
La programmation ne fait pas exception
☺ La valeur n'attend pas le nombre des années. 8)
Images
Images

Lephenixnoir En ligne Administrateur Points: 24556 Défis: 170 Message

Citer : Posté le 28/08/2014 11:57 | #


Sans doute que t'utilises une version de ML non compatible SH4. Passe ton g1a à ça et essaie avec le nouveau fichier.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Darks-ninja Hors ligne Membre Points: 77 Défis: 16 Message

Citer : Posté le 28/08/2014 12:00 | #


A ok, j'avais déjà vu qu'il pouvait y avoir des problèmes de compatibilité avec les addins mais je ne savait pas comment ils se manifestaient.

Ajouté le 28/08/2014 à 12:03 :
Sa marche parfaitement, merci
Casio Graph 35+ USB tweaké 75

Mes Projets
Mes Projets
♠ Galaxy Invader ++ ♠
♣ Jeu en BASIC CASIO ♣
Mes Passions
Mes Passions
♥ Les Mangas ♥
♥ La Programmation ♥
♥ Les Jeux Vidéo ♥
Mes Languages
Mes Languages
♠ HTML/CSS ♠
♠ JAVASCRIPT ♠
♠ JAVA ♠
♠ C ♠
♠ C# ♠
♠ PHP/MY SQL ♠
♠ BASIC CASIO ♠

* Pour la plupart de
ces languages, je ne
possède que des bases...
Mes Citations
Mes Citations
☺ Tout s'acquiert avec de la pratique :
La programmation ne fait pas exception
☺ La valeur n'attend pas le nombre des années. 8)
Images
Images

Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 28/08/2014 13:27 | #


J'en ai profité pour ajouter un bout sur l'utilisation des variables globales, vu que la question revient fréquemment.
C'est tiré de ce site : http://www.ltam.lu/cours-c/prg-c112.htm
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 29/08/2014 19:29 | #


Est ce qu'on a une fonction pour overclocker les SH4 ?
Les Prizm ont des processeurs SH4 ou pas ?
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1243 Défis: 54 Message

Citer : Posté le 29/08/2014 19:34 | #


Oui, les Prizm ont des processeurs SH4-A, mais après, le modèle est peut-être différent de celui des monochromes (c'est un SH7305, enfin, c'est le modèle qui se rapproche le plus du proco de la calculatrice) ;).

Tu as quelques infos en plus sur l'overclocking de la Prizm, qui pourraient peut-être s'appliquer en partie aux monochromes, ici ;).
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 29/08/2014 21:29 | #


J'ai un problème d'algorithmie, de tri plus particulièrement.

J'ai une liste de taille variable organisée de la manière suivante :
0 : 35
1 : 43
2 : 12
3 : 28
...
n : xx

Je souhaite créer une autre liste qui contienne l'indice des cellules triées dans l'ordre décroissant. Exemple de la liste 2 après le tri :
0 : 1 // 43
1 : 0 // 35
2 : 3 // 28
3 : 2 // 12
...
n : xx


Comment feriez-vous ? J'ai un algo, mais il est en O(n²), ce qui est pas top, ça servira à l'affichage...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24556 Défis: 170 Message

Citer : Posté le 29/08/2014 21:31 | #


Utilise qsort(). Tu seras entre O(n^2) et O(n log n).
Et si ça te branche, j'ai une implémentation du tri fusion. Avec ça tu es en O(n log n) tout le temps.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 29/08/2014 21:35 | #


Le truc c'est que c'est pour FF3D, et j'ai pas trop envie d'inclure la stdlib dedans
Je veux bien voir ton tri fusion si ça te dérange pas
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir En ligne Administrateur Points: 24556 Défis: 170 Message

Citer : Posté le 29/08/2014 21:37 | # | Fichier joint


MP si tu as des questions, je pense pas que ce soit trop le lieu.

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 29/08/2014 21:38 | #


Ok, merci
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Silaxe Hors ligne Membre Points: 809 Défis: 12 Message

Citer : Posté le 31/08/2014 19:03 | #


Pour faire plaisir à Positon
J'ai "réussi" à faire un + ou - moins en C mais j'aimerais l'améliorer:
-Y'a t'il une fonction pour détecter pour savoir si on appuie sur une touche.
-La méthode pour détecter les touches me parait limite.
-Les constantes comme KEY_CHAR_3 sont de quel type. Peut on la mettre dans une variable.
-Je n'arrive pas a sortir de la boucle lorsque j'ai gagner(je ne comprends pas pourquoi et je suis donc obligé de mettre un break.
-Est-ce qu'on peut mettre la valeur d'une variable de type int dans une chaine de caractère?
Et pour finir qu'Est-ce que vous me conseillez à apprendre avant de réaliser de "gros jeu" (ml, les pointeurs (on sera 2 darkysun ),...).
Voila le code attention les yeux :
#include "stdlib.h"
#include "fxlib.h"
#include "stdio.h"
static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
static int (*SysCall)(int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;

int AddIn_main(int isAppli, unsigned short OptionNum)
{
   //Variable
    unsigned int key;
    int nbrAlea = 0;
    int tailleChiffre;
    char texte[1];
    int nbrUser;
    int nbrAffiche = 0;
    //Nombre aléatoire
    srand(RTC_getTicks());
nbrAlea = rand_int_ab(1,100);

    //Menu
locate(5,2);
Print("Jeu du + ou -");
Bdisp_DrawLineVRAM(23,16,103,16);
PrintMini(11,40,"Appuyer sur EXE pour jouer",0);

do{
GetKey(&key);    
}while(key != KEY_CTRL_EXE);
Bdisp_AllClr_DDVRAM();
    
    //Jeu
do{
int nbrUser =0;
int tailleChiffre = 0;
PrintMini(1,1,"Choisi un nombre entre 10~99",0);
do{
GetKey(&key);
    if (key == KEY_CHAR_0 || key == KEY_CHAR_1 || key == KEY_CHAR_2 ||key == KEY_CHAR_3 ||key == KEY_CHAR_4 ||key == KEY_CHAR_5 ||key == KEY_CHAR_6 ||key == KEY_CHAR_7 ||key == KEY_CHAR_8 ||key == KEY_CHAR_9)
    {
    if(key == KEY_CHAR_0)
        nbrAffiche = 0;
    if(key == KEY_CHAR_1)
        nbrAffiche = 1;
    if(key == KEY_CHAR_2)
        nbrAffiche = 2;
    if(key == KEY_CHAR_3)
        nbrAffiche = 3;
    if(key == KEY_CHAR_4)
        nbrAffiche = 4;
    if(key == KEY_CHAR_5)
        nbrAffiche = 5;
    if(key == KEY_CHAR_6)
        nbrAffiche = 6;
    if(key == KEY_CHAR_7)
        nbrAffiche = 7;
    if(key == KEY_CHAR_8)
        nbrAffiche = 8;
    if(key == KEY_CHAR_9)
        nbrAffiche = 9;
    
    sprintf(texte,"%d",nbrAffiche);
    PrintXY(50+tailleChiffre,20,texte,0);    
        if(tailleChiffre == 0)
            nbrUser = 10*nbrAffiche;
        else
            nbrUser = nbrUser+nbrAffiche;

    tailleChiffre+=6;
    }
}while(tailleChiffre < 12);

if(nbrUser > nbrAlea)
    PrintMini(20,40,"Le nombre est + petit",0);
if(nbrUser < nbrAlea)
    PrintMini(20,40,"Le nombre est + grand",0);
    
do{
GetKey(&key);    
}while(key != KEY_CTRL_EXE);
Bdisp_AllClr_DDVRAM();
if(nbrUser == nbrAlea){
    break;
    }
}while(nbrUser != nbrAlea);
PrintMini(20,40,"Bravo! Vous avez gagner",0);

while(1){
        GetKey(&key);
    }
return 1;
}


int RTC_getTicks(){
      return (*SysCall)(0, 0, 0, 0, 0x3B);
}

int rand_int_ab(int min, int max){
     return rand() % (max - min) + min;
}

Merci d'avance pour vos réponse. Elles me sont d'un grand aide pour apprendre le C casio

Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 31/08/2014 19:10 | #


Bon, je vais te repondre dans l'ordre :
pour detecter si une touche est enfoncée, utilise IsKeyDown(KEY_CTRL_EXE), elle renvoye un si la touche est pressée, et 0 si elle ne l'est pas.
KEY_CHAR_3 sont des unsigned int (au maximum, je pense que c'est plus du simple int, a vérifier)
c'est un machin du style 30002, donc oui tu peux le mettre dans une variable

pour les int dans un char, utilise cette fonction, qui te met le nombre dans la chaine str
void inttostring(int nombre, char* str )
{
int i, length=0;
str[0] = '0';
if(nombre)
    {
    if(nombre<0)
        {
        length++;
        str[0] = '-';
        nombre = -nombre;
        }
    for(i=nombre ; i ; i/=10) length++;
    str[length] = 0;
    for( ; nombre ; nombre/=10) str[--length] = nombre%10+'0';
    }
}


et oui, fait d'autre petits jeux et apprend a utiliser ML avant de faire quoi que ce soit de gros !
(et les pointeurs sont hyper utiles)


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 !
Silaxe Hors ligne Membre Points: 809 Défis: 12 Message

Citer : Posté le 31/08/2014 19:16 | #


Merci de ta réponse très rapide
Mais est ce que en C on peut faire ça:

Do
Getkey
Lpwhile Ans =0

Est ce que isoler le Getkey est une bonne idée?
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 31/08/2014 19:19 | #


Le getkey est bloquant : tant que l'utilisateur n’appuie pas, le programme ne continue pas. Le mieux est d'utiliser IsKeyDown : exemple :


if(IsKeyDown(KEY_CTRL_LEFT)
{
//déplacement vers la gauche
}
else if(IsKeyDown(KEY_CTRL_RIGHT)
{
//déplacement vers la droite
}


cela te donnera des programmes rapides et réactifs
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: 11641 Défis: 176 Message

Citer : Posté le 31/08/2014 19:22 | #


Le GetKey en C est stoppant : le programme ne continue pas tant que tu n'as pas appuyé sur une touche. Ensuite, tu es obligé de faire GetKey(&key); sinon tu n'aura pas la valeur.

Quitte à me répéter, le C n'a presque rien à voir avec le Basic ! Donc lisez le tuto sur le C jusqu'à au moins la partie sur la SDL, on en reparle plus tard : vous ne pouvez pas programmer sans savoir ce qu'est un pointeur, à quoi ça sert et comment ça s'utilise. Et encore, y'a plein d'autres bases à connaître avant de se lancer dans un addin.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Silaxe Hors ligne Membre Points: 809 Défis: 12 Message

Citer : Posté le 31/08/2014 20:00 | #


Est-ce que toutes les libs non officielles comme Ml, textLib sont compatibles en C++?

Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 31/08/2014 20:13 | #


Oui, mais pour textlib il faut mettre l'include dans un extern "C"
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 !
Lephenixnoir En ligne Administrateur Points: 24556 Défis: 170 Message

Citer : Posté le 31/08/2014 20:23 | #


Il faudrait que je le fasse à l'intérieur même du header, mais je me pose encore une question. Avec gcc, on teste avec
#ifdef __cplusplus

mais avec le compilo du SDK... ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 31/08/2014 20:43 | #


Regarde dans ML, il me semble que c'est écrit dans le header et/ou le .c
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 30 ··· 37, 38, 39, 40, 41, 42, 43 ··· 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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 75 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