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
SmashmasterHors ligneAncien modérateurPoints: 4559 Défis: 253 Message

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


Ah, dommage :(.
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

Citer : Posté le 09/12/2013 20:57 | #


Si, normalement, il est possible de compiler en c++ même si le sdk est basé sur GCC... En revanche, il me semble que ce n'est pas toptop, enfin, que le sdk est plus adapté pour du C.

Prizm Wiki a écrit :
The PrizmSDK is a community-created SDK for writing C/C++ programs for the Casio Prizm. Casio, as of now, has shown no plans of making and releasing an official SDK. The PrizmSDK contains headers, libraries, scripts, and a build system for developing programs using GCC


Regarde là aussi : http://www.cemetech.net/forum/viewtopic.php?p=213402&switchmobile=0 , même si c'est récent, ça peut peut être t'apporter une réponse et le sujet va sans-doute être développé dans les jours qui viennent ;).



Ajouté le 15/12/2013 à 18:02 :
Je sais pas si t'as avancé sur la question, mais j'ai quelques infos en plus...

Déjà, dans le Makefile, t'as une partie qui commence comme ça :

#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------


Et c'est déjà rempli comme il faut dans le makefile standard pour du C++ apparemment (le mien qui est relativement standard et celui d'un projet en C++ étant identiques à ce niveau là)...
Ensuite, tu peux ajouter un -std=c++11 dans les Cflags .

Enfin, j'ai trouvé ça, mais n'ayant jamais fait trop de C++, je n'ai pas fait de tests, si jamais tu veux essayer ça ;).
Au pire tu peux aller chercher le makefile (ou autre) de eigenmath sur github par exemple, qui est programmé en C++ !
N'attendez pas qu'il n'y ait plus de miel : スススススススススススススススススススススススススス養蜂家スススススススススススススススススススススススススススススススススススス蜂家
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 04/06/2014 15:54 | #


ou est le copy.bat :huh:
SmashmasterHors ligneAncien modérateurPoints: 4559 Défis: 253 Message

Citer : Posté le 05/06/2014 18:29 | #


@Nemhardy : J'ai testé et ça marche très bien, merci (je n'ai pas rajouter std=c++11)
J'ai aussi dû modifier les extensions .c en .cpp
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

Citer : Posté le 05/06/2014 18:57 | #


Cool alors !
En plus si ça te rend certaines choses plus pratiques pour continuer ton Zelda 8) .
N'attendez pas qu'il n'y ait plus de miel : スススススススススススススススススススススススススス養蜂家スススススススススススススススススススススススススススススススススススス蜂家
EiyeronHors ligneAncien modérateurPoints: 5513 Défis: 57 Message

Citer : Posté le 13/06/2014 22:46 | #


Copy.bat Sur windows, renommez le disque de stockage de la prizm en PRIZM.

@echo off
REM H,I,J,K,
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 (
            REM ECHO Nom: %%B

            if "%%B" == "PRIZM" (echo FOUND
            echo Elle etait en %%i:
            xcopy  *.g3a %%i:\ /Y /Q
            pause
            exit
            )
          ) ELSE (
            
            REM ECHO Série: %%B
            
          )
          
          SET /A ligneCourante+=1
        )
    )
)

echo Prizm au Nom de PRIZM introuvable.
pause




Ajouté le 28/06/2014 à 17:34 :
Grosse mise à jour du tutoriel. (enfin!)
LancelotHors ligneMembrePoints: 1274 Défis: 160 Message

Citer : Posté le 29/06/2014 18:38 | #


Sympa

J'ai appris des choses

zh - Chinois (bonne chance pour nommer l'add-in en idéogrammes, j'ai pas testé).

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
EiyeronHors ligneAncien modérateurPoints: 5513 Défis: 57 Message

Citer : Posté le 03/07/2014 20:25 | #


J'ai envie de préciser davantage le fonctionnement du Makefile mais ça n'aurait pas sa place ici.
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 29/07/2014 22:33 | #


est ce que l'on peut modifier la version de l'addin?
LephenixnoirHors ligneAdministrateurPoints: 14125 Défis: 136 Message

Citer : Posté le 30/07/2014 08:38 | #


Je ne sais pas si tu le peux directement, mais au pire tu modifies dans le g3a les 10 octets à l'offset 0x130 sous la forme "01.00.0000" (avec les points).
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

Citer : Posté le 30/07/2014 10:44 | #


Tu peux aussi le modifier en ajoutant l'option "-V" à l'appel de mkg3a, pour en savoir plus tu peux invoquer l'aide de mkg3a (qui devrait le détailler à mon avis), ou sinon tu as la doc de mkg3a.
N'attendez pas qu'il n'y ait plus de miel : スススススススススススススススススススススススススス養蜂家スススススススススススススススススススススススススススススススススススス蜂家
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 13/08/2014 10:59 | #


Bonjour, j'ai essayé de lancer le make.bat en ne mettant pas le projet dans le dossier projet

J'ai modifié le fichier make.bat et faisant
chemin_absolu_du_make.exe %*

exemple C:\Users\Yoann\Documents\dir\make.exe %*

mais ça me donne une erreur
C:\Users\Yoann\Documents\Qt\build-SDKolor-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug>C:\Users\Yoann\Documents\Qt\build-SDKolor-Desktop_Qt_5_3_0_MinGW_32bit-Debug\debug\bin\make.exe  
make: *** No targets specified and no makefile found.  Stop.


Quelqu'un a une idée pour remédier à ça???
NemhardyHors ligneGrand maître des Traits d'EspritPoints: 1235 Défis: 54 Message

Citer : Posté le 13/08/2014 11:29 | #


Il faut que tu exécutes make en étant dans le répertoire où se situe le makefile, et donc le projet en général.

Sinon, tu peux aussi lui passer le makefile en argument, ce qui est peut être plus pratique dans ton cas (je ne sais pas comment tu t'es organisé) : regarde par ici.
N'attendez pas qu'il n'y ait plus de miel : スススススススススススススススススススススススススス養蜂家スススススススススススススススススススススススススススススススススススス蜂家
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 14/08/2014 18:41 | #


y a t'il un argument pour que certains messages comme
sh3eb-elf-gcc -MMD -MP -MF C:/Users/Yoann/Documents/Nouveaudossier/build/new.d -Os -Wall -mb -m4a-nofpu -mhitachi -nostdlib   -IC:/Users/Yoann/Documents/Nouveaudossier/build -IC:/Users/Yoann/Documents/Qt/build-SDKolor-Desktop_Qt_5_3_0_MinGW_32bit-Debug/debug/include -c C:/Users/Yoann/Documents/Nouveaudossier/src/new.c -o new.o


ne s'affichent pas
TheprogHors ligneMembrePoints: 1447 Défis: 20 Message

Citer : Posté le 16/08/2014 22:53 | #


Au fait, yaurais pas une balise [/code] ou
qui aurait pas marché ?
Sinon bon tuto  ;)

EiyeronHors ligneAncien modérateurPoints: 5513 Défis: 57 Message

Citer : Posté le 17/08/2014 11:25 | #


Merci de la remarque. J'ai corrigé.
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 23/08/2014 14:47 | #


est ce que l'on peut programmer en C++ avec la configuration standard car dans le Makefile.old

il y a
CC=$(PREFIX)bin/sh3eb-elf-gcc.exe


Mais il n'y a pas
CXX=$(PREFIX)bin/sh3eb-elf-g++.exe


LephenixnoirHors ligneAdministrateurPoints: 14125 Défis: 136 Message

Citer : Posté le 23/08/2014 14:50 | #


Ça dépend si en compilant gcc on a utilisé
./configure --enable-languages=c,c++

ou pas.
IntelligideHors ligneMembre de CreativeCalcPoints: 46 Défis: 5 Message

Citer : Posté le 23/08/2014 14:58 | #


tu aurais un idée pour faire disparaitre les messages
C:/Users/Yoann/Documents/Qt/build-SDKolor-Desktop_Qt_5_3_0_MinGW_32bit-Debug/debug/bin/sh3eb-elf-gcc.exe -MMD -MP -MF C:/Users/Yoann/Documents/Nouveaudossier/build/new.d -Wall -Os -IC:/Users/Yoann/Documents/Qt/build-SDKolor-Desktop_Qt_5_3_0_MinGW_32bit-Debug/debug/include/ -c C:/Users/Yoann/Documents/Nouveaudossier/src/new.c -o new.o

des sorties de compilation
LephenixnoirHors ligneAdministrateurPoints: 14125 Défis: 136 Message

Citer : Posté le 23/08/2014 14:59 | #


Yep, il faut ajouter un symbole particulier au début de la ligne de commade du Makefile. Je te dis dans une minute.

Ajouté le 23/08/2014 à 15:00 :
C'est le '@'
SmashmasterHors ligneAncien modérateurPoints: 4559 Défis: 253 Message

Citer : Posté le 23/08/2014 15:06 | #


Intelligide a écrit :
est ce que l'on peut programmer en C++ avec la configuration standard car dans le Makefile.old

il y a
CC=$(PREFIX)bin/sh3eb-elf-gcc.exe


Mais il n'y a pas
CXX=$(PREFIX)bin/sh3eb-elf-g++.exe


Oui, il suffit juste d'utiliser l'extension .cpp et ça compile automatiquement en C++ (je n'ai pas modifié les makefiles)
Pages : Précédente1, 2, 3, 4, 5, 6, 7Suivante

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