Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Programmer en C pour la Prizm, bis
EiyeronHors ligneAncien modérateurPoints: 5513 Défis: 57 Message

Programmer en C pour la Prizm, bis

Posté le 14/02/2012 13:01

Salut à tous! Dans la suite du précédent topic, voici la démarche pour installer le PrizmSDK et l'utiliser.
Honnêtement, je préfère le PrizmSDK (je l'appelle généralement PSDK), il est basé sur GCC, est portable et ne dépend pas du compilateur de Casio/Renesas. Je m'en sers pour tous mes projets sur Prizm. Voyons un peu comment on le configure.

1. Téléchargez le zip du PrizmSDK sur le site de Cemetech [ici].
2. Dézippez le PSDK dans un dossier vide de préférence pour éviter d'écraser tout fichier personnel/important.
3. Voilà ! Il est prêt à être utilisé.

Une fois le PSDK installé, on peut commencer à programmer. Voyons comment on crée un nouveau projet.

1. Dans le dossier project, copier le dossier default, et renommer ladite copie en le nom du projet (par exemple j'ai nommé mon dossier Bust-A-Move)
2. Dans le makefile, remplacer toutes les occurences du mot "defauflt" par le nom du dossier/projet.
3. Le projet est prêt à être codé, compilé et transféré.

Le Makefile est nécéssaire pour le PSDK pour lui indiquer quoi compiler et comment compiler. Observons-le de plus près

TARGET        :=    $(notdir $(CURDIR))
BUILD        :=    build
SOURCES        :=    src
DATA        :=    data  
INCLUDES    :=

On définit ici le dossier de destination du projet (le TARGET), le dossier où l'on stocke les binaires temporaires par code source (le BUILD), le/les dossiers contenant les sources (le SRC) et le data (je sais pas ce que c'est, j'ai pas fait attention pour le moment)

MKG3AFLAGS := -n basic:Bust-a-Move -i uns:../unselected.bmp -i sel:../selected.bmp

Ici, on indique au programme qui va compiler le .bin en .g3a de nommer l'addin "Bust-a-Move", d'utiliser les icônes unselected.bmp et selected.bmp pour afficher l'addin dans le menu principal (unselected quand l'addin n'est pas survolé et selected quand il l'est.)

On peut nommer l'addin en fonction de la langue désirée, ainsi

-n basic:Bust-a-Move -n fr:Puzzle-Bobble

Va nommer l'addin Puzzle-Bobble quand la calto est en français et Bust-a-Move autrement. On la la possiblité de choisir un nom pour chaque langue ci-dessous

en - Anglais
es - Espagnol
de - Allemand
fr - Cocorico
pt - Portugais
zh - Chinois (bonne chance pour nommer l'addin en idéogrammes, j'ai pas testé).

Une dernière ligne? Le reste n'est pas modifiable sauf si vous voulez casser le Makefile.
CFLAGS    = -Os -std=c99 -Wall $(MACHDEP) $(INCLUDE)

Ici, on indique quelques options pour le compilateur lui-même :

-Os = optimiser la taille du programme au détriment des éventuelles optimisations de performance
-std=c99 = utiliser le langage C en version 1999, on peut ainsi utiliser les rajouts faits pour le C99 (comme déclarer une variable plus ou moins partout).
-Wall = je l'appelle le mur mais ça veut dire Warning ALL. Affiche [b]tous[/b] les warnings. Je considère cette option comme [b]OBLIGATOIRE[/b] car elle montre toute portion de code pouvant être relativement trouble pour le compilateur.

Compiler et nettoyer.

Pour compiler, lancez le make.bat. Il va lancer la procédure de compilation en utilisant le Makefile. Ca permet par exemple de ne recompiler que les fichiers sources qui ont été modifiés. Si, pour des raisons diverses (utilisation de clé usb, changement de dossier...) ça ne compile plus, essayez d'abord de lancer clean.bat, puis make.bat


Transférer automatiquement le g3a à la Prizm.
Prérequis : On va renommer le stockage de la Prizm en "PRIZM". Pour ce faire, branchez la Prizm et entrez en mode USB. Son stockage devrait s'afficher dans l'Ordinateur/Poste de travail. Clic-droit dessus puis renommez en "PRIZM". Ca permettra ensuite à mon outil de reconnaître la calto.

J'ai conçu un petit batch windows qui permet de trouver la calto par le nom de son stockage, créez dans votre dossier de projet un fichier "copy.bat" et collez-y ce code-ci
@echo off
SET /A ligneCourante=0

for %%i in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z) do (
    if exist "%%i:" (
        FOR /F "usebackq tokens=7* delims= " %%A in (`VOL %%i:`) DO (
          IF %ligneCourante%==0 (

            if "%%B" == "PRIZM" (echo Prizm trouvée!
            echo Elle etait en %%i:
            xcopy  *.g3a %%i:\ /Y /Q
            pause
            echo "-Fin-"
            exit
            )
          
          SET /A ligneCourante+=1
        )
    )
)

echo Prizm au Nom de PRIZM introuvable. Verifiez le branchement et le nom du sotckage de la Prizm.
pause


Quand vous voudrez transférer, vous n'aurez qu'à brancher la calto et une fois qu'elle est reconnue, double-clic sur le batch pour lancer la copie!

Et voilà, vous savez le nécessaire pour créer un projet et transférer un addin automatiquement. Amusez-vous bien!


Pages : Précédente1, 2, 3, 4, 5, 6, 7Suivante
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

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


par contre fait gaffe, il faut aussi qu'elle tienne assez longtemps pour que tu puisse en faire quelque chose
(RIP ma prizm que je n'ai toujours pas envoyé au SAV )
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 stormHors ligneMembre d'honneurPoints: 10776 Défis: 174 Message

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


Pourquoi donc ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

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


je pense que je l'ai laissé connecté trop longtemps a mon ordi (dans le genre 10 minutes ><) et depuis elle ne veut plus s'allumer
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 stormHors ligneMembre d'honneurPoints: 10776 Défis: 174 Message

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


Ouch... Goto SAV

Erreur saut !


Zut, faudrait qu'il y ai quelqu'un au bout du saut XD


3500 points
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

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


de toute façon, je n'utilise jamais de goto, c'est trop sale comme code
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 !
EiyeronHors ligneAncien modérateurPoints: 5513 Défis: 57 Message

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


Dodormeur a écrit :
darky a écrit :
J'en viens à me demande si Fruit Ninja sur la Prizm ne serai pas relativement lent...


ben au pire tu baisse un peu les FPS, mais tu augmente la vitesse des fruits (tu compte l'adapter?)


Fais comme Pierrot : il adapte la vitesse du jeu en fonction des FPS. un jeu qui utilise une techno similaire est SUper Meat Boy. Quand le jeu est en dessous de 60 fps, les vecteurs de vitesses sont multipliés pour compenser le ralentissement et garder une vitesse constante. (Mais cela n'empêche pas de traverser les murs en case de trop gros ralentissement...)
SmashmasterHors ligneAncien modérateurPoints: 4559 Défis: 253 Message

Citer : Posté le 08/11/2013 11:16 | #


Les touches de la prizm me paraissent trop fragile, car le clavier de la prizm n'est pas chiclé, je ne sais pas si c'est une bonne idée de coder un fruit ninja sur la prizm.
LimachiHors ligneYoutuberPoints: 2798 Défis: 67 Message

Citer : Posté le 08/11/2013 15:16 | #


Eiyeron a écrit :
Fais comme Pierrot : il adapte la vitesse du jeu en fonction des FPS. un jeu qui utilise une techno similaire est SUper Meat Boy. Quand le jeu est en dessous de 60 fps, les vecteurs de vitesses sont multipliés pour compenser le ralentissement et garder une vitesse constante. (Mais cela n'empêche pas de traverser les murs en case de trop gros ralentissement...)

tiens, j'y avais pensé pour mon minecraft, puis j'ai opté pour une autre méthode moins propre mais un peux plus rapide (et la rapidité, c'est de l'or pour un jeu aussi lent que mon minecraft).
j'utilise la méthode des buffers qui sont copiés a l'écran régulièrement (un peux comme pour les niveaux de gris).
après, si j'utilise cette méthode d'adaptation en fonction des fps, ça me permettrais de stabiliser les fps tout en évitant les éventuels crash de la calculatrice du a un timer qui fait des siennes.
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Dark stormHors ligneMembre d'honneurPoints: 10776 Défis: 174 Message

Citer : Posté le 08/11/2013 18:19 | #


Smashmaster a écrit :
Les touches de la prizm me paraissent trop fragile, car le clavier de la prizm n'est pas chiclé, je ne sais pas si c'est une bonne idée de coder un fruit ninja sur la prizm.

Au pire, c'est juste pour dire "On est les premiers à jouer à Fruit Ninja en couleurs sur une calto "
Pas besoin d'y laisser ses touches
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
PierrotllHors ligneAncien administrateurPoints: 5488 Défis: 41 Message

Citer : Posté le 09/11/2013 14:58 | #


En fait dans mes jeux sur calto je faisais le rendering en boucle, et entre deux frames je déplaçais les éléments si le temps écoulé depuis le dernier déplacement était suffisant, mais cette technique n'est bonne qu'en cas de FPS élevé, si le rendering prend trop de temps, les déplacements seront ralentis.
Le mieux est de calculer le déplacement en fonction du temps passé depuis le dernier calcul, pour conserver une vitesse de déplacement constante quelque soit le framerate.
LancelotHors ligneMembrePoints: 1274 Défis: 160 Message

Citer : Posté le 10/11/2013 19:55 | #


Salut

Je cherche la fonction qui te renvoie quelles touches sont appuyées , j'ai cherché dans les dosier include mais je n'ai pas vu. Quelqu'un l'aurait ?
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

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


Oups, réponse un peu tardive...
Tu veux juste tester si une touche en particulier est pressée ou alors récupérer justement la touche pressée (je sais pas si mon explication fait bien ressortir la différence :/ )
Dans le premier cas, je te renvoie à la fonction de PierrotLL (cf ton post sur les fonctions utiles).
Sinon, pour la seconde solution, tu as le getkey de base, mais bloquant, et sinon, j'utilisais il y a un moment celle-ci du même appareil que le getkey de base mais non bloquante !
Aqui esta la routina
Si si señor
int GetKeyNB(void)
{
    [purple]int[/purple] key;
    key = PRGM_GetKey();
    [b][blue]if[/blue][/b] (key == KEY_PRGM_MENU)
        {
        //La tu mets de quoi safe-quit ton prog (t'es pas obligé de garder mais ça conserve le fait que appuyer sur [menu] faisait quitter le programme avec le getkey de base, enfin, plus ou moins)
    }
    [b][blue]return[/blue][/b] key;
}
[purple]int[/purple] PRGM_GetKey(void)
{
    [purple]unsigned char[/purple] buffer[12];
    PRGM_GetKey_OS( buffer );
    [b][blue]return[/blue][/b] ( buffer[1] & 0x0F ) * 10 + ( ( buffer[2] & 0xF0 ) >> 4 );
}


Perso, je préfère la première, et il me semble qu'elle peut relativement suffire pour la plupart des usages, après, je sais pas ce que tu veux faire .


Modifié par Dark Storm : les commentaires de type // sont automatiquement pris en compte
N'attendez pas qu'il n'y ait plus de miel : スススススススススススススススススススススススススス養蜂家スススススススススススススススススススススススススススススススススススス蜂家
SmashmasterHors ligneAncien modérateurPoints: 4559 Défis: 253 Message

Citer : Posté le 12/11/2013 23:10 | #


Lancelot a écrit :
fonction qui te renvoie quelles touches sont appuyées
T'as mis "quelles touches" au pluriel, donc je suppose que tu veux récupérer tous les touches qui sont appuyées au même moment.
Cette fonction n'existe pas, la fonction getkey() ne gère pas les multitouches :/ utilise la fonction keydown de pierrotll.
LancelotHors ligneMembrePoints: 1274 Défis: 160 Message

Citer : Posté le 13/11/2013 20:17 | #


Euh... (reformulation) Je cherche une fonction qui te revoie la(es) touche(s) qui est pressée mais que se soit n'importe quelles touches.
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

Citer : Posté le 13/11/2013 20:19 | #


Regarde mon post trois message au dessus .
N'attendez pas qu'il n'y ait plus de miel : スススススススススススススススススススススススススス養蜂家スススススススススススススススススススススススススススススススススススス蜂家
LancelotHors ligneMembrePoints: 1274 Défis: 160 Message

Citer : Posté le 13/11/2013 20:51 | #


Non ce n'est pas se que je cherche, je cherche une fonction qui te renvoie le nom (ou un nombre) correspondant à la touche appuyée

Exemple:
Je presse la touche alpha, il me revoit K_ALPHA, de même pour Shift (K_SHIFT).


Ajouté le 13/11/2013 à 20:52 :
oups pardon pas tout vus

C'est bon, merci
Calculatrices : Casio 35+ SH4 (modifiée 75) et fx-CG 20 PRIZM
Projets que je soutiens
Des exemples parmi tant d'autres
Pokémon Jade de Dododormeur
Zelda de Smashmaster
Super Geek Brothers de Siapran
Mes Programmes
Mes Programmes
Mes Projets
Mes Projets
ColorLib
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
SmashmasterHors ligneAncien modérateurPoints: 4559 Défis: 253 Message

Citer : Posté le 05/12/2013 22:42 | #


Est-il possible de programmer en C++ sur la Prizm? Car j'aimerai bien utiliser de la POO.
DodormeurHors ligneAncien rédacteurPoints: 3928 Défis: 82 Message

Citer : Posté le 05/12/2013 22:58 | #


tu peut essayer le meme code que sur le sdk casio, voir si sa marche
tu doit juste mettre tout le code de base/en C dans un
extern "C"{
//le code en C
}

et puis sinon peut-etre qu'il y est de base, vu qu'un code C peut etre compiler par un compilo 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 !
SmashmasterHors ligneAncien modérateurPoints: 4559 Défis: 253 Message

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


Dodormeur a écrit :
tu peut essayer le meme code que sur le sdk casio, voir si sa marche

ça me met l'erreur :

D:/Prizm/PrizmSDK-0.3/projects/XXXXXXX/src/XXXXXXX.c:1:8: error: expected identifier or '(' before string constant

à la ligne extern "C"{
EiyeronHors ligneAncien modérateurPoints: 5513 Défis: 57 Message

Citer : Posté le 06/12/2013 11:01 | #


Hum, le problème étant que c'est GCC et non G++. GCC s'occupe de uniquement du C quand G++ fait les deux (le C++ est rétrocompatible, ne l'oubliez pas).

Donc Il me semble qu'avec GCC, on ne peut compiler du C++.
SmashmasterHors ligneAncien modérateurPoints: 4559 Défis: 253 Message

Citer : Posté le 06/12/2013 21:40 | #


Ah, dommage :(.
Pages : Précédente1, 2, 3, 4, 5, 6, 7Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 23 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