**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 07/04/2012 13:06 | #
En fait j'ai testé d'autres chiffres, et ça marche.
Mais je ne sais pas si c'est très "sécurité".
Ajouté le 08/04/2012 à 23:40 :
Comment peut on faire pour \"surécrire\" dans un fichier ?
Ajouté le 14/04/2012 à 20:17 :
C\'est bon, j\'ai la solution pour les fichiers.
Par contre est-ce qu\'il existe une fonction pour retourner au menu principal.
Escape prison
Bloxorz
Free wheel
QR code
Nombre en or
RayCasting Engine
Mario Party
Zelda
et Planète Casio
Citer : Posté le 14/04/2012 21:28 | #
Non.
Il n'y a que la fonction GetKey qui fait retourner au menu lorsqu'on appuie sur la touche [MENU] justement :\
Calculatrice: Graph 35+ (modifiée 75) + graph 75
Dead Labs est sorti ! N'hésitez pas à l'essayer et à voter !!!
Citer : Posté le 15/04/2012 01:17 | #
Il n'existe pas à ma connaissance d'implémentation de la fonction exit. On avait eu un petit débat à ce sujet ici.
Comme dit Adbook, tu peux utiliser GetKey, et même utiliser le syscall PutKey pour faire comme si MENU avait été enfoncée.
Ajouté le 15/04/2012 à 01:36 :
J'en avais marre de toujours zapper les messages "fusionnés", maintenant ils seront signalé comme les nouveaux messages
Citer : Posté le 20/04/2012 17:50 | #
cette question a surement deja ete posee, mais je la pose quand mem (la flemme de chercher dans 33 page de ce forum )
il y a-t-il moyen d'executer un programme en basic dans un add-ins? et si oui, comment?
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 20/04/2012 17:59 | #
Oui et non. On peut lancer l'application PRGM (et simuler l'appui de plusieurs touches pour qu'un programme soit lancé), mais à partir de ce moment là, notre application perd le contrôle des évènements.
Citer : Posté le 20/04/2012 18:02 | #
donc en clair, l'add-in lance le menu prgm, et apres, c'est a ll'utilisateur de se débrouillé?
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 20/04/2012 18:08 | #
Quoi que, je pense à un truc. Il serait possible de démarrer un timer avant de lancer un programme Basic (comme je fais dans PRGM2), puis reprendre la main grâce à ce timer à un évènement donné, par exemple le changement de valeur d'une variable Basic.
Donc si, ce que tu demandes est faisable. Mais l'utilisateur pourra toujours interrompre le programme Basic.
C'est pour faire quoi exactement ?
Citer : Posté le 20/04/2012 18:25 | #
a la base, je voulais faire un genre de 2 os , et pour les jeux dedans, j'aurais aime pouvoir utiliser les programmes que j'avait deja fait en basic. mais a la limite, il suffirait de mettre un choix "quitter" dans le menu de base et de changer une variable pour revenir vers l'add-in?
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 22/04/2012 17:20 | #
je cherche à afficher les fps, j'ai consulté les sources de Man vs Rocks, etc, mais j'ai pas tout compris...
Qqun pour m'expliquer le principe du calcul ?
Thanks
Citer : Posté le 22/04/2012 18:36 | #
@Dodormeur, oui, c'est ça.
@Dark Storm : Tu fais une variable "fps" contenant le nombre d'image/secondes qu'il y a eu pendant la secondes précédente. Une autre "fps_count" qui servira de compteur, pour compter les fps dans la seconde actuelle.
Le syscall RTC_GetTicks retourne le nombre de "ticks" actuel, sachant qu'il y a 128 ticks par seconde, et que ce compteur est réinitialisé à minuit (heure du RTC de la calculette). Il te faut donc une variable "time" pour mémoriser le moment du début de la seconde courante.
fps = fps_count = time = 0;
[green]// compteur, à exécuter à chaque rafraîchissement de l'écran[/green]
if( RTC_GetTicks() - time >= 128) [green]// si le temps écoulé est supérieur ou égal à 128 ticks (1 seconde)[/green]
{
fps = fps_count; [green]// on mémorise le nombre de frame qu'il y a eu pendant la seconde qui vient de s'écouler[/green]
fps_count = 1; [green]// on ré-initialise le compteur[/green]
time = RTC_GetTicks(); [green]// on sauvegarde le temps du début de la seconde actuelle[/green]
} else fps_count++; [green]//une image de plus[/green]
Il te suffit ensuite d'afficher la valeur de la variable "fps".
Citer : Posté le 22/04/2012 18:49 | #
je vois...
Merci pour l'astuce
Ajouté le 22/04/2012 à 19:11 :
dans quel fichier se trouve le syscall ?
j\'ai essayé avec les syscalls que tu fournit dans ton tuto, mais il ne s\'y trouve pas...
Citer : Posté le 22/04/2012 22:58 | #
C'est le syscall 0x3B
(le fichier time.c dans Man vs Rock sert à l'appeler)
Citer : Posté le 23/04/2012 07:02 | #
ok, thanks
Citer : Posté le 25/04/2012 21:41 | #
Quand j'affiche un bmp et que ses coordonnées ne sont pas des nombres entiers, j'obtiens une ligne qui clignote au dessus du sprite.
Y a-t-il un moyen pour remédier à cela ou bien ses coordonnées doivent être entières...
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
Citer : Posté le 25/04/2012 21:45 | #
afficher_sprite((int)x,(int)y);
Change la fonction comme tu vuex, masi garde le cast (type)
Citer : Posté le 26/04/2012 00:06 | #
Avec une fonction de MonochromeLib ?
Si oui, elles demandent des entiers, donc le cast sera fait automatiquement, et l'erreur d'affichage ne peut pas venir de là.
Citer : Posté le 29/04/2012 18:10 | # | Fichier joint
Est-ce normal qu'en utilisant Monochromelib et tiles creator j'obtienne ceci (ci-joint) lors de l'affichage ?
Ajouté le 29/04/2012 à 18:11 :
je me demandai si ca peut venir de l\'hexadecimal
Citer : Posté le 29/04/2012 19:13 | #
Quelles sont les dimensions du sprite? As-tu bien pensé à mettre les dimension du sprite, et non de l'écran?
Citer : Posté le 29/04/2012 19:17 | #
ben oui, c'est du 128*64, pour un menu
Citer : Posté le 29/04/2012 19:33 | #
Est-ce normal qu'en utilisant Monochromelib et sprite maker j'obtienne ceci (ci-joint) lors de l'affichage ?
Si ton image ressemble à ça oui, sinon c'est que tu t'es planté quelque part. Soit dans l'encodage du bitmap, soit dans l'utilisation de la fonction d'affichage.
Citer : Posté le 29/04/2012 20:08 | #
ben oui, c'est du 128*64, pour un menu
Il faut alors mieux utiliser memcpy
Escape prison
Bloxorz
Free wheel
QR code
Nombre en or
RayCasting Engine
Mario Party
Zelda
et Planète Casio