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 ··· 16, 17, 18, 19, 20, 21, 22 ··· 30 ··· 40 ··· 46, 47, 48 Suivante
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
Ninestars Hors ligne Membre Points: 2451 Défis: 24 Message

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


Je viens de tester ça ne fait rien, je croyais que ça pouvait buger.

Sdz a écrit :
L'instruction srand ne doit être exécutée qu'une seule fois (au début du programme). Il faut obligatoirement faire un srand une fois, et seulement une fois.
Vous pouvez ensuite faire autant de rand() que vous voulez pour générer des nombres aléatoires, mais il ne faut PAS que l'ordinateur lise l'instruction srand deux fois par programme, ne l'oubliez pas.
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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


C'est 100% compatible SH4 ou je dois changer quelque chose?
@Dark-Storm: merci en tout cas, je vais pouvoir tester
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

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


@ 9* : Ca bugue pas ?
Bizarre, j'étais persuadé que le SdK était pas au top dessus.

Bref, théoriquement, c'est compatible SH4 (enfin, on m'a dit que Fruit Ninja l'était, et j'utilise ces fonctions)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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


Ok, je teste ça
Ninestars Hors ligne Membre Points: 2451 Défis: 24 Message

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


Non aucun bug.
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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


Petit problème: je me suis servit de la fonction de Dark-Storm pour afficher un int et le compilateur me met "Type mismatch" à la ligne de code:
void PrintInt(int x, int y, int n){

Et "Argument mismatch" à la ligne
for( ; n; n/=10) str[--lenght] = n%10 + '0';

Quelqu'un pourrait m'aider?
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

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


t'as déclaré ta fonction correctement dans son header ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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


Euh...
Voici le code complet:
code
Cliquer pour enrouler
int AddIn_main(int isAppli, unsigned short OptionNum)
{

    int val=randInt_a_b(1,10);
    unsigned int key;
    PrintInt(1,1,val);
    while(1){
        GetKey(&key);
    }

    return 1;
}
int randInt_a_b(int a, int b){
    int ini = 123456789;
    srand(ini);
    ini = rand();
    return ini%(b-a)+a;
}
void PrintInt(int x, int y, int n){
    int i, lenght = 0;
    char str[12] = "0";
    if(n)
    {
        if(n < 0)
        {
            lenght ++;
            str[0] = '-';
            n = - n;
        }
        
        for(i=n; i; i/=10) lenght++ ;
        str[lenght] = 0;
        for(; n; n/=10) str[--lenght] = n%10 + '0';
    }
    PrintXY(x,y,str,0);
}


Ajouté le 07/09/2013 à 12:39 :
Ah! c'est bon, je l'ai déclarée et ça fonctionne, merci!

Ajouté le 07/09/2013 à 12:44 :
Par contre ça affiche tout le temps 9
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

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


faut mettre le "ini" en dehors de la fonction


[green][b]int ini = 123456789;[/b][/green]

int AddIn_main(int isAppli, unsigned short OptionNum)
{

    int val=randInt_a_b(1,10);
    unsigned int key;
    PrintInt(1,1,val);
    while(1){
        GetKey(&key);
    }

    return 1;
}
int randInt_a_b(int a, int b){
    [red][strike]int ini = 123456789;[/strike][/red]
    srand(ini);
    ini = rand();
    return ini%(b-a)+a;
}
void PrintInt(int x, int y, int n){
    int i, lenght = 0;
    char str[12] = "0";
    if(n)
    {
        if(n < 0)
        {
            lenght ++;
            str[0] = '-';
            n = - n;
        }
        
        for(i=n; i; i/=10) lenght++ ;
        str[lenght] = 0;
        for(; n; n/=10) str[--lenght] = n%10 + '0';
    }
    PrintXY(x,y,str,0);
}

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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


ah ok

Ajouté le 07/09/2013 à 12:58 :
nan, c'est pareil, ça affiche toujours 9, et même si je change, ça affiche un chiffre différent mais il reste le même à chaque fois
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 07/09/2013 18:13 | #


Si tu initialises le générateur de nombres aléatoires avec une constante, c'est plutôt normal que la sortie soit également constante.
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 07/09/2013 18:20 | #


je fais comment alors?
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 07/09/2013 18:41 | #


CHerches dans les sources à PierrotLL le syscall "RTC_GetTicks()", RTC = Real Time Clock. Il sort une valeur qui augmente toutes les 1/128e de seconde, donc un seed *différent* à chaque initialisation du générateur...
Ninestars Hors ligne Membre Points: 2451 Défis: 24 Message

Citer : Posté le 07/09/2013 18:42 | #


Est-ce que ça t'affiche toujours le même nombre une seule fois ?

Sinon prend la première version que t'as donné DarkStorm, celle là fonctionne.
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 07/09/2013 18:44 | #


Non, mais la valeur que la fonction retourne augmente d'un toutes les 1/128e de seconde. Sauf si tu initialises plusieurs fois le générateur dans ton programme, ce qui est un peu stupide, tu ne devrais pas avoir plusieurs fois le résultat.

Ajouté le 07/09/2013 à 18:45 :
EN fait, la calto inclut un crystal qui vibre périodiquement (toutes les 1/128), et le processeur, à la détéection d'une vibration, augmente un compteur à chaque fois. C'est le principe même d'un RTC.
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 07/09/2013 19:41 | #


Je vais essayer
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 07/09/2013 22:04 | #


cette question d'initialisation pour obtenir des nombres aléatoires revient extremement souvent, je trouve...
Personne n'aurait envie de faire un sujet juste pour ça dans lequel il explique les différentes méthodes qu'il connait. Ou au moins celle qu'il connait et la communauté rajoutera le reste
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
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 07/09/2013 22:34 | #


Je connais un bon article sur l'aleatoire. Je vais voir avec l'auteur si je peux le traduire...
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

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


bon, voila get-ticks en version SH4

#define SCA 0xD201D002
#define SCB 0x422B0009
#define SCE 0x80010070

typedef int(*sc_i2cp2sip) (char*, char*, short int*, short int*);
typedef int(*sc_iv) (void);
typedef int(*sc_4i) (int, int, int);

const unsigned int sc003b[] = {SCA, SCB, SCE, 0x3B};
const unsigned int sc0015[] = {SCA, SCB, SCE, 0x15};
const unsigned int sc0248[] = {SCA, SCB, SCE, 0x248};

#define RTC_GetTicks (*(sc_iv)sc003b)


int OSVersionAsInt(void)
{
    unsigned char mainversion;
    unsigned char minorversion;
    unsigned short release;
    unsigned short build;
    GlibGetOSVersionInfo( &mainversion, &minorversion, &release, &build );
    return ( ( mainversion << 24 ) & 0xFF000000 ) | ( ( minorversion << 16 ) & 0x00FF0000 ) | ( release & 0x0000FFFF );
}
#define isOS2 (OSVersionAsInt() >= 0x02020000)
#define OS2(x,y) ((OSVersionAsInt() >= 0x02020000)?y:x)
static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
static int (*SysCall)( int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;



int time_getTicks()
{
    return RTC_GetTicks();
}


et pour le hasard, a chaque fois que rand() est appelé, le nombre va etre changé.
mais si vous preferez avoir votre fonction de hasard, celle ci fonctionne bien (pour l'initialisation, envoyer -getTicks, et sinon envoyer le max)

int random(int max)
{
static unsigned int seed = 0x12345678;
if(max<1)seed=-max;
seed = (0x41C64E6D * seed) + 0x3039;
if(max>0)return ((seed >> 16) % max);

}


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 08/09/2013 08:33 | #


j'ai une erreur lors de la compilation:
** L2310 (E) Undefined external symbol "_GlibGetOSVersionInfo" referenced in "C:\Users\..."
Précédente 1, 2, 3 ··· 10 ··· 16, 17, 18, 19, 20, 21, 22 ··· 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