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 - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » Programmer en C pour la Prizm, bis
Eiyeron Hors ligne Ancien modérateur Points: 5525 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!


Précédente 1, 2, 3, 4, 5, 6, 7 Suivante
Smashmaster Hors ligne Ancien modérateur Points: 4561 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)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

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


mais le make va utiliser le gcc au lieu du g++, non
Lephenixnoir Hors ligne Administrateur Points: 24231 Défis: 170 Message

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


@Smashmaster : Seulement si le compilateur sélectionné est g++
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Smashmaster Hors ligne Ancien modérateur Points: 4561 Défis: 253 Message

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


Voilà ce qui se passe si je compile avec l'extension .cpp
sh3eb-elf-g++ -MMD -MP -MF C:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/build/testcpp.d -Os -Wall -mb -m4a-nofpu -mhitachi -nostdlib -IC:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/build -IC:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/include -c C:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/src/testcpp.cpp -o testcpp.o
sh3eb-elf-g++ testcpp.o -mb -m4a-nofpu -mhitachi -nostdlib -TC:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/common/prizm.ld -Wl,-static -Wl,-gc-sections -std=c99 -LC:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/lib -lfxcg -lgcc -o C:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/testcpp.bin
mkg3a -n basic:testcpp -i uns:../unselected.bmp -i sel:../selected.bmp C:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/testcpp.bin C:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/testcpp.g3a

à la première ligne on voit que c'est g++ qui compile le code.

Et voilà ce qui se passe si je change l'extension en .c
sh3eb-elf-gcc -MMD -MP -MF C:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/build/testcpp.d -Os -Wall -mb -m4a-nofpu -mhitachi -nostdlib -IC:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/build -IC:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/include -c C:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/src/testcpp.c -o testcpp.o
C:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/src/testcpp.c:1:1: error: unknown type name 'class'
C:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/src/testcpp.c:2:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
C:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/src/testcpp.c: In function 'main':
C:/Users/Pascal/PrizmSDK/PrizmSDK-0.3/projects/testcpp/src/testcpp.c:10:2: error: unknown type name 'test'
make[1]: *** [testcpp.o] Error 1
make: *** [build] Error 2

à la première ligne on voit que c'est gcc qui compile le code (il y a des erreurs de compilation car dans mon fichier .c j'ai une class).

En gros, si j'utilise l'extension .cpp, alors c'est g++ qui compile, sinon c'est gcc
Lephenixnoir Hors ligne Administrateur Points: 24231 Défis: 170 Message

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


Ok, donc c'est le PrizmSDK qui se débrouille avec. Pas de souci alors
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 14/01/2015 17:12 | #


Je n'ai pas de .g3a omg qui apparait pourtant il n'y a pas d'erreur c'est le code d'origine
In Arch, I trust ! And you ?
Smashmaster Hors ligne Ancien modérateur Points: 4561 Défis: 253 Message

Citer : Posté le 14/01/2015 23:59 | #


A la fin du fichier .txt contenant le log de la compilation, vois-tu une ligne de ce genre ?

C:/Users/XXXXXXX/PrizmSDK/PrizmSDK-0.3/projects/testcpp/testcpp.g3a

-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 15/01/2015 20:47 | #


c'est bon ça marche mtn ça m'a créer un exemple.g3a
In Arch, I trust ! And you ?
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 28/03/2015 22:20 | #


J'ai bien tout suivi, mais ça buggue à l'inclusion de la lib "fxlib.h" et même "MonochromeLib.h". Du coup j'ai importé tout le contenu du dossier "OS" du sdk officiel, pour avoir les dépendances de "fxlib.h" mais cette fois-ci le bug est : "previous declaration of + chaque fonction et conflicting types for + chaque fonction".
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Lephenixnoir Hors ligne Administrateur Points: 24231 Défis: 170 Message

Citer : Posté le 28/03/2015 22:21 | #


T'as compilé les sources deux fois.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 28/03/2015 22:23 | #


Au moins une dizaine, mais je ne comprend pas ton commentaire ?
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Lephenixnoir Hors ligne Administrateur Points: 24231 Défis: 170 Message

Citer : Posté le 28/03/2015 22:26 | #


Mais non, je veux dire qu'au lieu que chaque fonction soit compilée une fois pour générer ton exécutable, toutes les fonctions que tu as dans tes erreurs ont été compilées deux fois, sans doute parce que tu as inclus les fichiers sources deux fois depuis deux adresses différentes, et du coup il t'insulte parce que tu les définis plus d'une fois.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 28/03/2015 22:27 | #


J'ai uniquement ce code :
#include <display_syscalls.h>
#include <keyboard_syscalls.h>
//#include <MonochromeLib.h>
#include "fxlib.h"
void main(void) {
    int key;
    PrintMini(50,50,const unsigned char "C'est un add-in ! :D",1);
    
    while (1) {
        Bdisp_AllClr_VRAM();
        GetKey(&key);
        switch (key) {
        }
    }

    return;
}

Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1242 Défis: 54 Message

Citer : Posté le 28/03/2015 22:31 | #


Non mais par contre, au delà de ces problèmes de compilation ça va pas le faire ! Tu ne peux pas utiliser fxlib ou encore MonochromeLib pour programmer sur Prizm /!\

Il faut que tu utilises la librairie fournie avec le Psdk (balade toi dans le dossier include), et des librairies extérieures faites pour la Prizm (eg ColorLib, qui est soit dit en passant, à décoder ). Le mieux c'est que tu regardes le code de quelques jeux comme GravityDuck ou... Enfin, tu en trouveras bien ^^. Si t'as des questions n'hésite pas, je n'ai pas trop développé car je suis un portable donc c'est pas ultra pratique :whistle:...
Lephenixnoir Hors ligne Administrateur Points: 24231 Défis: 170 Message

Citer : Posté le 28/03/2015 22:31 | #


Ah ouais, et ML et fxlib t'en fais quoi dans l'affaire ? C'est elles qui sont linkées deux fois, pas ton programme à toi !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 28/03/2015 22:32 | #


Ok merci j'enlève ces imports et je regarde les autres.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 29/03/2015 08:32 | #


utiliser MLib pour la prizm c'est vraiment, vraiment, vraiment, vraiment nimportenawak
Aragorn Hors ligne Membre Points: 807 Défis: 5 Message

Citer : Posté le 11/04/2015 12:27 | #


J'ai un gros problème, je n'ai pas de make.bat, mais seulement un make.exe dans le dossier /bin.
De plus, à chaque fois que je le lance la fenêtre se referme juste après.

Est-ce que quelqu'un pourrait m'aider ?
Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 11/04/2015 12:30 | #


J'aimerais bien, mais je galère autant que toi (bien que j'ai le make.bat, d'ailleurs c'est bizarre, tu parles bien du dossier PrizmSDK-<numérodeversion>/projects/TonProjet) ? Je teste pour l'instant sous Linux.
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Aragorn Hors ligne Membre Points: 807 Défis: 5 Message

Citer : Posté le 11/04/2015 12:32 | #


Ah merci Lego, je n'avais pas vu.
Je teste après manger.
Mes Programmes
Cliquer pour enrouler
The Legend of CASIO - Basic Quest ( Basic )
Notes ( logiciel qui calcule votre moyenne, basic )
Professeur Layton ( jeu d'énigme en C )
Mario & Sonic Rush ( jeu de course 3D en C )
Projets
Cliquer pour enrouler
Zelda Ancestral Relics ( projet en C )
Projets que je soutient
Cliquer pour enrouler
Pokémon jade de Dodormeur
Jetpack Joyride de Drakalex007
Arcuz de Dark Storm
Casion de Az et Darkysun




Un jeu de course en 3D pour calculatrice :
http://www.planet-casio.com/Fr/programmes/voir_un_programme_casio.php?showid=2773&page=1.
Legolas Hors ligne Ancien rédacteur Points: 3266 Défis: 104 Message

Citer : Posté le 24/04/2015 13:31 | #


J'ai ceci :



Quand je rajoute des sprites dans mon Tiles.h. Actuellement, j'en ai 20 différents de 24*24 en 16 bit soit 23 040 octets. Avez-vous déjà eu ce bug ? Car je ne peux pas faire de tile mapping si le compilateur n'accepte même pas 20 toutes petites images...
Mes programmes
Cacher les programmes
Mes défis
Cacher les défis



Précédente 1, 2, 3, 4, 5, 6, 7 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 36 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