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 » Je n'arrive pas à rendre mon programme en C compatible SH4
Random Hors ligne Membre Points: 56 Défis: 0 Message

Je n'arrive pas à rendre mon programme en C compatible SH4

Posté le 17/03/2015 17:41

Je précise que quand j'ai commencé à programmer en C, j'ai voulu suivre le tutoriel et dans ce tutoriel le logiciel utilisé était Code::Blocks..

Alors je n'ai rien compris des tutoriel que j'ai vu avec le logiciel SDK pour rendre compatible et tout ça.. :/
En gros suis bloqué à l'ouverture du logiciel que je trouve chargé comparé à Code::Blocks.

Voilà un petit menu que j'ai voulu essayer sur ma calculatrice avant de faire des programmes plus gros :

Cliquez pour découvrir
Cliquez pour recouvrir

#include <stdio.h>
#include <stdlib.h>

int affichageMenu(void)
{
    int choixMenu;

    printf("---MENU---\n\n");
    printf("1.Maths\n");
    printf("2.Physique-Chimie\n");
    printf("3.SVT\n");
    printf("4.SES\n\n\n");
    printf("\nChoix?\n\n");
    scanf("%d", &choixMenu);
    return choixMenu;
int main(void)
{
    switch (affichageMenu())
    {
    case 1:
        printf("Vous avez choisis le 1");
        break;
    case 2:
        printf("Vous avez choisis le 2");
        break;
    case 3:
        printf("Vous avez choisis le 3");
        break;
    case 4:
        printf("Vous avez choisis le 4");
        break;
    default:
        printf("Choix impossible");
        break;
    }

    system("PAUSE");
    return 0;
}


Donc si quelqu'un peut m'expliquer comment faire..
Merci !


1, 2 Suivante
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

Citer : Posté le 17/03/2015 18:16 | #


Tiens regarde ici : http://www.planet-casio.com/Fr/forums/topic11897-1-Rendre-un-add-in-compatible-SH4.html
En bas dans les commentaires il y a le bon code copie le tout au début de ton programme et le tour est joué !:D
Mais attention les erreurs de ton programme ne viennent pas de la (meme si pour les corriger ce sera necessaire a la compatibilité
tu ne peux pas utiliser les fonctions printf et scanf en C casio, je te conseille de faire un tour sur le forum pour trouver les nombreux tutos donnant les fonctions semblables
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




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

Citer : Posté le 17/03/2015 18:21 | #


la librairie C standard ne fonctionne pas intégralement sur la calculatrice car ce n'est pas un pc.

Prinf et scanf sont utilisés dans des programmes consoles ,et comme les addins ne sont pas des consoles , ben ça fonctionne pas
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 17/03/2015 18:31 | #


Whoah, on va avoir un problème là.

Tu vois ce que sont les entrées/sorties ? Ce sont les éléments qui constituent l'environnement du programme, et avec lesquels il interagit.
Par exemple, lire un fichier est un entrée du système de fichiers. En écrire un est une sortie. Classiquement comme entrées, tu as le clavier, le pavé tactile et/ou la souris, et en sortie, l'écran, ou bien des leds sur la tour ou le pc.

Eh bien, sur la calculatrice, les entrées/sorties ne fonctionnent pas pareil que sur pc (ben oui, c'est pas les mêmes !). Il y a toute une API appelée « fxlib » qui permet d'utiliser ces entrées/sorties, mais avec ses propres fonctions !
Par exemple, il y a des fonctions pour dessiner à l'écran, rafraîchir l'écran, lire et écrire les fichiers, récupérer les entrées claviers...

Entre autres pour les sorties de texte à l'écran il y a quelques fonctions mais ce n'est pas très complet. Et surtout, ils ont du implémenter leur propre lib standard et certaines fonctions n'en font pas partie. Comme printf() ou scanf(), parce qu'il n'y a pas de flux standard... et system(), parce qu'il n'y a pas de processus parent pour le gérer !

Autrement dit, il faut adapter tout ton code pour répondre aux exigences de l'API de la calculatrice, et c'est le fx-9860G SDK qui va te permettre d'utiliser cette API, fxlib. Donc tu peux éditer avec Code::Blocks, mais pas compiler...
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 17/03/2015 18:40 | #


Tant qu'on y est, la doc en francais de FXlib
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 !
Random Hors ligne Membre Points: 56 Défis: 0 Message

Citer : Posté le 17/03/2015 21:38 | #


Ah d'accord merci, en gros une fois que j'ai un programme en C spécial Casio, il me suffit juste d'ajouter le petit bout de code en début et c'est tout ?

Sinon merci pour vos réponses !
Darkysun Hors ligne Membre Points: 1747 Défis: 52 Message

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


Tout a fait . Par contre si tu utilise monochrome lib (ce que tu n'est pas oblige de faire ) tu dois aussi changer un bout de son cide pour le rendre compatible
Si je ne réponds pas à un post depuis trop longtemps : envoyez-moi un message pour me le rappeler !




Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 18/03/2015 06:12 | #


Random a écrit :
Ah d'accord merci, en gros une fois que j'ai un programme en C spécial Casio [...]

C'est pas du C spécial Casio, le langage est strictement le même ; c'est juste qu'on utilise une API un peu différente et c'est comme ça sur la plupart des supports, comme l'Arduino par exemple. Avec Arduino il n'y a pas de printf(), mais une fonction de communication Serial pour afficher dans le moniteur.

[/quote=Random][...] il me suffit juste d'ajouter le petit bout de code en début et c'est tout ?[/quote]
À la fin tu veux dire.
Oui, et il faut absolument le mettre sinon tu vas pas faire tourner grand-chose.
Random Hors ligne Membre Points: 56 Défis: 0 Message

Citer : Posté le 19/03/2015 11:57 | #


Ok merci !

Mais maintenant j'ai un problème au moment de la compilation..
Cliquez pour découvrir
Cliquez pour recouvrir

Executing Hitachi SH C/C++ Compiler/Assembler phase

set SHC_INC=C:\Program Files (x86)\CASIO\fx-9860G SDK\OS\SH\include
set PATH=C:\Program Files (x86)\CASIO\fx-9860G SDK\OS\SH\bin
set SHC_LIB=C:\Program Files (x86)\CASIO\fx-9860G SDK\OS\SH\bin
set SHC_TMP=C:\Users\Admin.PC\Desktop\Début\PROG\Debug
"C:\Program Files (x86)\CASIO\fx-9860G SDK\OS\SH\bin\shc.exe" -subcommand=C:\Users\Admin~1.MAG\AppData\Local\Temp\hmkC8C9.tmp

Executing Hitachi OptLinker04 phase

"C:\Program Files (x86)\CASIO\fx-9860G SDK\OS\SH\bin\Optlnk.exe" -subcommand=C:\Users\Admin~1.MAG\AppData\Local\Temp\hmkEC22.tmp

** L2011 (E) Invalid parameter specified in option "input" : ""C:\Program Files (x86)\CASIO\fx-9860G SDK\OS\FX\lib\setup.obj""

Optimizing Linkage Editor Abort

HMAKE MAKE UTILITY Ver. 1.1
Copyright (C) Hitachi Micro Systems Europe Ltd. 1998
Copyright (C) Hitachi Ltd. 1998


    ERROR: Process failed with return code: 1
Build was not successful.


Que faire ? Sachant que j'ai suivi ce tuto : et que le programme à compiler est le programme de base comme dans le tuto.
Dark storm Hors ligne Labélisateur Points: 11579 Défis: 176 Message

Citer : Posté le 19/03/2015 13:24 | #


Y'a une règle qui est essentielle : sans le code, on ne peut rien débugguer (ou presque)
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 19/03/2015 18:11 | #


Dark storm a écrit :
Y'a une règle qui est essentielle : sans le code, on ne peut rien débugguer (ou presque)

Lis avant.

On se tue à le dire, mais faut pas installer le fx-9860g SDK dans un dossier dont le chemin contient des parenthèses -- en l'ocurrence, « Program Files (x86) ». Réinstalle-le dans un autre dossier.
Random Hors ligne Membre Points: 56 Défis: 0 Message

Citer : Posté le 20/03/2015 13:38 | #


Je viens de réinstaller le logiciel dans Program Files et j'ai toujours la même erreur.. Je vais encore essayer ce soir mais voilà.
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 20/03/2015 13:42 | #


donne le code
Random Hors ligne Membre Points: 56 Défis: 0 Message

Citer : Posté le 20/03/2015 15:02 | #


Bah le code c'est ça (code du nouveau projet comme dans le tuto) :
/*****************************************************************/
/*                                                               */
/*   CASIO fx-9860G SDK Library                                  */
/*                                                               */
/*   File name : [ProjectName].c                                 */
/*                                                               */
/*   Copyright (c) 2006 CASIO COMPUTER CO., LTD.                 */
/*                                                               */
/*****************************************************************/
#include "fxlib.h"


//****************************************************************************
//  AddIn_main (Sample program main function)
//
//  param   :   isAppli   : 1 = This application is launched by MAIN MENU.
//                        : 0 = This application is launched by a strip in eACT application.
//
//              OptionNum : Strip number (0~3)
//                         (This parameter is only used when isAppli parameter is 0.)
//
//  retval  :   1 = No error / 0 = Error
//
//****************************************************************************
int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;

    Bdisp_AllClr_DDVRAM();

    locate(1,4);
    Print((unsigned char*)"This application is");
    locate(1,5);
    Print((unsigned char*)" sample Add-In.");

    while(1){
        GetKey(&key);
    }

    return 1;
}




//****************************************************************************
//**************                                              ****************
//**************                 Notice!                      ****************
//**************                                              ****************
//**************  Please do not change the following source.  ****************
//**************                                              ****************
//****************************************************************************


#pragma section _BR_Size
unsigned long BR_Size;
#pragma section


#pragma section _TOP

//****************************************************************************
//  InitializeSystem
//
//  param   :   isAppli   : 1 = Application / 0 = eActivity
//              OptionNum : Option Number (only eActivity)
//
//  retval  :   1 = No error / 0 = Error
//
//****************************************************************************
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}

#pragma section

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

Citer : Posté le 20/03/2015 15:05 | #


et l'erreur?
Random Hors ligne Membre Points: 56 Défis: 0 Message

Citer : Posté le 20/03/2015 16:01 | #


C'est bon, je peux compiler !

Darkysun a écrit :
Tiens regarde ici : http://www.planet-casio.com/Fr/forums/topic11897-1-Rendre-un-add-in-compatible-SH4.html
En bas dans les commentaires il y a le bon code copie le tout au début de ton programme et le tour est joué !:D
Mais attention les erreurs de ton programme ne viennent pas de la (meme si pour les corriger ce sera necessaire a la compatibilité
tu ne peux pas utiliser les fonctions printf et scanf en C casio, je te conseille de faire un tour sur le forum pour trouver les nombreux tutos donnant les fonctions semblables


Je mets ce bout de code (seul bout de code en bas dans les commentaires)
typedef char*(*sc_cpv)(void);
const unsigned int sc0135[] = { 0xD201D002, 0x422B0009, 0x80010070, 0x0135 };
#define ML_vram_adress (*(sc_cpv)sc0135)
au début du programme et aucune autre manipe n'est nécessaire ?
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 20/03/2015 16:03 | #


normalement non
In Arch, I trust ! And you ?
Random Hors ligne Membre Points: 56 Défis: 0 Message

Citer : Posté le 20/03/2015 16:11 | #


Comme ça ?
typedef char*(*sc_cpv)(void);
const unsigned int sc0135[] = { 0xD201D002, 0x422B0009, 0x80010070, 0x0135 };
#define ML_vram_adress (*(sc_cpv)sc0135)

/*****************************************************************/
/*                                                               */
/*   CASIO fx-9860G SDK Library                                  */
/*                                                               */
/*   File name : [ProjectName].c                                 */
/*                                                               */
/*   Copyright (c) 2006 CASIO COMPUTER CO., LTD.                 */
/*                                                               */
/*****************************************************************/
#include "fxlib.h"


//****************************************************************************
//  AddIn_main (Sample program main function)
//
//  param   :   isAppli   : 1 = This application is launched by MAIN MENU.
//                        : 0 = This application is launched by a strip in eACT application.
//
//              OptionNum : Strip number (0~3)
//                         (This parameter is only used when isAppli parameter is 0.)
//
//  retval  :   1 = No error / 0 = Error
//
//****************************************************************************
int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;

    Bdisp_AllClr_DDVRAM();

    locate(1,4);
    Print((unsigned char*)"Test pour rendre mon addin");
    locate(1,5);
    Print((unsigned char*)" compatible SH4.");

    while(1){
        GetKey(&key);
    }

    return 1;
}




//****************************************************************************
//**************                                              ****************
//**************                 Notice!                      ****************
//**************                                              ****************
//**************  Please do not change the following source.  ****************
//**************                                              ****************
//****************************************************************************


#pragma section _BR_Size
unsigned long BR_Size;
#pragma section


#pragma section _TOP

//****************************************************************************
//  InitializeSystem
//
//  param   :   isAppli   : 1 = Application / 0 = eActivity
//              OptionNum : Option Number (only eActivity)
//
//  retval  :   1 = No error / 0 = Error
//
//****************************************************************************
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}

#pragma section



Et là après la compilation je peux l'envoyer sur ma calculatrice ? L'addin est compatible SH4 ?
-florian66- Hors ligne Ancien rédacteur Points: 2383 Défis: 20 Message

Citer : Posté le 20/03/2015 16:16 | #


tu teste ça :
/*****************************************************************/
/*                                                               */
/*   CASIO fx-9860G SDK Library                                  */
/*                                                               */
/*   File name : [ProjectName].c                                 */
/*                                                               */
/*   Copyright (c) 2006 CASIO COMPUTER CO., LTD.                 */
/*                                                               */
/*****************************************************************/
#include "fxlib.h"


//****************************************************************************
//  AddIn_main (Sample program main function)
//
//  param   :   isAppli   : 1 = This application is launched by MAIN MENU.
//                        : 0 = This application is launched by a strip in eACT application.
//
//              OptionNum : Strip number (0~3)
//                         (This parameter is only used when isAppli parameter is 0.)
//
//  retval  :   1 = No error / 0 = Error
//
//****************************************************************************
typedef char*(*sc_cpv)(void);
const unsigned int sc0135[] = { 0xD201D002, 0x422B0009, 0x80010070, 0x0135 };
#define ML_vram_adress (*(sc_cpv)sc0135)


int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;

    Bdisp_AllClr_DDVRAM();

    locate(1,4);
    Print((unsigned char*)"Test pour rendre mon addin");
    locate(1,5);
    Print((unsigned char*)" compatible SH4.");

    while(1){
        GetKey(&key);
    }

    return 1;
}




//****************************************************************************
//**************                                              ****************
//**************                 Notice!                      ****************
//**************                                              ****************
//**************  Please do not change the following source.  ****************
//**************                                              ****************
//****************************************************************************


#pragma section _BR_Size
unsigned long BR_Size;
#pragma section


#pragma section _TOP

//****************************************************************************
//  InitializeSystem
//
//  param   :   isAppli   : 1 = Application / 0 = eActivity
//              OptionNum : Option Number (only eActivity)
//
//  retval  :   1 = No error / 0 = Error
//
//****************************************************************************
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}

#pragma section



tu teste en envoyant l'addin sur ta calto et tu verra si c'est SH4 mais normalement oui
In Arch, I trust ! And you ?
Random Hors ligne Membre Points: 56 Défis: 0 Message

Citer : Posté le 20/03/2015 16:31 | #


Je ne vois pas l'addin sur ma calto, j'ai tout bien fais..
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 20/03/2015 17:10 | #


Il faut l'envoyer dans la mémoire de stockage, à la racine.

Et non, ajouter ce morceau de code ne sert, désolé, strictement à rien, sinon à générer des conflits avec la version corrigée de MonochromeLib. Par contre, il faut l'utiliser en remplacement de l'appel de syscall original.
Et en plus, il existe une version de ML déjà patchée. Alors pourquoi s'embêter ?
1, 2 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 - 2023 | 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