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 - Actualités


Index du Forum » Actualités » Rendre un add-in compatible SH4
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Rendre un add-in compatible SH4

Posté le 03/01/2013 13:37

Bonjour à tous, Casiofans. Après quelques mois de stress face aux incompatibilités entre les add-ins destinés aux anciennes calculatrices et les nouveaux modèles SH4, nous avons la joie de vous annoncer une excellente nouvelle... des anglophones ont trouvé le moyen de rendre compatibles les programmes C/C++ grâce à un morceau de code à ajouter.

La fonction qui permet l'accès au clavier de la calculatrice était en effet incompatible parce que le changement de processeur entraînait un changement d'adresses en mémoire. Le morceau de code suivant y remède :

http://pastebin.com/ApF7Z2bW

Quant à MonochromeLib, la librairie de Pierrotll, il faut remplacer :

ça
ça
static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
static int (*SysCall)( int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;
char* ML_vram_adress()
{
return (char*)((*SysCall)(0, 0, 0, 0, 309));
}

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


En espérant que les développeurs adaptent vite leurs jeux.

Source : Universal Casio Forum


Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 Suivante
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 05/02/2013 18:56 | #


Ah, ok, je savais pas

Ajouté le 05/02/2013 à 20:25 :
Ça marche pas, il me met:
** L2300 (E) Duplicate symbol \"_OSVersionAsInt\" in \"C:\Users\Usuario\Documents\programas\C\Casio\Portal2D\Debug\menus.obj\"
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
Casimo Hors ligne Membre Points: 141 Défis: 0 Message

Citer : Posté le 06/02/2013 14:29 | #


Alors, faire une nouveau source fichier (key.c):

#ifndef __KEY_C__
#define __KEY_C__
//code
#endif


Et dans gameplay.c, memory.c menus.c tu rajoutes
#include "key.c"

Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 06/02/2013 19:13 | #


Ok, j'essaierai

Ajouté le 06/02/2013 à 22:43 :
Ça change rien, mêmes erreurs dans les mêmes fichiers...
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 06/02/2013 22:53 | #


cette erreur survient quand tu déclare plusieures fois une fonction ou une variable (et il ne faut pas oublier que cette erreur vient souvent d'une mauvaise gestion des header et sources).

OSVersionAsInt est une fonction qui est sans doute présente plusieurs fois dans ton code: dans ton fichier principal mais aussi dans d'autres fichiers ("revolution.c" par exemple) le conflit doit venir d'ici.

Cela dit, je n'ai pas regardé ton code, je ne fais que des suppositions (utilise l'outil de recherche de code pour chercher dans tout tes fichiers "OSVersionAsInt" et assure toi qu'il n'est présent qu'une seule fois par .c et qu'il n'y a pas de multiple inclusion de .h contenant ce code (un .h peut en #include un autre qui rentre en conflit avec un Xème, il te faut donc chercher vraiment partout)
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)
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 06/02/2013 23:32 | #


Bon, je chercherai.

Ajouté le 06/02/2013 à 23:41 :
J\'ai cherché \"OSVersionAsInt\" avec le chercheur dans tous les fichiers du projet. Il apparait trois fois, toutes sur le fichier key.c que Casimo m\'avait recommendé. Parmis ces trois, une est la déclaration et les deux autres sont des appels à la fonction. Bref, OSVersionAsInt n\'a été déclaré qu\'une fois
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
Casimo Hors ligne Membre Points: 141 Défis: 0 Message

Citer : Posté le 07/02/2013 16:17 | #


Et decommenter ne marche pas?
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 07/02/2013 20:38 | #


décommenter? où?
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
Casimo Hors ligne Membre Points: 141 Défis: 0 Message

Citer : Posté le 08/02/2013 16:30 | #



//OSVersionAsInt...



Ajouté le 10/02/2013 à 12:37 :
Mnbd a écrit :

tu t\'en sort?


Je n\'arrive pas à faire ca :aie2: . C\'est trop dur pour moi, en ce moment .
Il y a des problèmes avec PlotPixel et des autres choses ...
Peut-être je vais plus tard essayer encore une fois.
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 10/02/2013 17:08 | #


Il y a rien de commenté dans le code, où le //OSVersionAsInt est censé d'être?
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
Casimo Hors ligne Membre Points: 141 Défis: 0 Message

Citer : Posté le 11/02/2013 16:19 | #


Pardon, j'ai voulu dire commenter .


OsVersionAsInt...





//OsVersionAsInt...

Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 12/02/2013 15:24 | #


J'ai essayé de commenter chaque OSVersionAsInt séparemment, mais avec aucun d'eux le plantage est parti. Si ça continue à ne pas marcher, je vais devoir laisser tomber
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
Casimo Hors ligne Membre Points: 141 Défis: 0 Message

Citer : Posté le 12/02/2013 19:03 | # | Fichier joint


@javierxd: I got it!
See the appendice.
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 12/02/2013 19:40 | #


Oui, ça a l'air de marcher, merci beaucoup.
Cependant je constate que les deplacements sont maintenant beaucoup plus rapides, probablement à cause du nouveau code... J'essaierai d'ajuster la vitesse et je posterai la nouvelle version. As tu déjà testé si ça marche sur les sh4?
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 12/02/2013 20:26 | #


moi quand j'ai essayé de modifier mon programme en c++ vers la SH4, il me met ca :

message d'erreur
Cliquer pour enrouler
C:\Users\Damien\prog casio\projets a finir\evasion\evasion\evasion.cpp(72) : C5167 (E) Argument of type "unsigned char *" is incompatible with parameter of type "char *"
C:\Users\Damien\prog casio\projets a finir\evasion\evasion\evasion.cpp(72) : C5167 (E) Argument of type "unsigned char *" is incompatible with parameter of type "char *"
C:\Users\Damien\prog casio\projets a finir\evasion\evasion\evasion.cpp(72) : C5167 (E) Argument of type "unsigned short *" is incompatible with parameter of type "short *"
C:\Users\Damien\prog casio\projets a finir\evasion\evasion\evasion.cpp(72) : C5167 (E) Argument of type "unsigned short *" is incompatible with parameter of type "short *"
C:\Users\Damien\prog casio\projets a finir\evasion\evasion\evasion.cpp(94) : C5020 (E) Identifier "memcpy" is undefined


mon code main.c++ (ou en tout cas le debut)
Cliquer pour enrouler
#include <iostream>
extern "C" {
#define __KEYBIOS_H__
#include "fxlib.h"


#define KEY_CHAR_0 OS2(0x30,71)
#define KEY_CHAR_1 OS2(0x31,72)
#define KEY_CHAR_2 OS2(0x32,62)
#define KEY_CHAR_3 OS2(0x33,52)
#define KEY_CHAR_4 OS2(0x34,73)
#define KEY_CHAR_5 OS2(0x35,63)
#define KEY_CHAR_6 OS2(0x36,53)
#define KEY_CHAR_7 OS2(0x37,74)
#define KEY_CHAR_8 OS2(0x38,64)
#define KEY_CHAR_9 OS2(0x39,54)
#define KEY_CHAR_DP OS2(0x2e,61)
#define KEY_CHAR_EXP OS2(0x0f,51)
#define KEY_CHAR_PMINUS OS2(0x87,41)
#define KEY_CHAR_PLUS OS2(0x89,42)
#define KEY_CHAR_MINUS OS2(0x99,32)
#define KEY_CHAR_MULT OS2(0xa9,43)
#define KEY_CHAR_DIV OS2(0xb9,33)
#define KEY_CHAR_FRAC OS2(0xbb,75)
#define KEY_CHAR_LPAR OS2(0x28,55)
#define KEY_CHAR_RPAR OS2(0x29,45)
#define KEY_CHAR_COMMA OS2(0x2c,35)
#define KEY_CHAR_STORE OS2(0x0e,25)
#define KEY_CHAR_LOG OS2(0x95,66)
#define KEY_CHAR_LN OS2(0x85,56)
#define KEY_CHAR_SIN OS2(0x81,46)
#define KEY_CHAR_COS OS2(0x82,36)
#define KEY_CHAR_TAN OS2(0x83,26)
#define KEY_CHAR_SQUARE OS2(0x8b,67)
#define KEY_CHAR_POW OS2(0xa8,57)
#define KEY_CTRL_EXE OS2(30004,31)
#define KEY_CTRL_DEL OS2(30025,44)
#define KEY_CTRL_AC OS2(30015,32)
#define KEY_CTRL_FD OS2(30046,65)
#define KEY_CTRL_EXIT OS2(30002,47)
#define KEY_CTRL_SHIFT OS2(30006,78)
#define KEY_CTRL_ALPHA OS2(30007,77)
#define KEY_CTRL_OPTN OS2(30008,68)
#define KEY_CTRL_VARS OS2(30016,58)
#define KEY_CTRL_UP OS2(30018,28)
#define KEY_CTRL_DOWN OS2(30023,37)
#define KEY_CTRL_LEFT OS2(30020,38)
#define KEY_CTRL_RIGHT OS2(30021,27)
#define KEY_CTRL_F1 OS2(30009,79)
#define KEY_CTRL_F2 OS2(30010,69)
#define KEY_CTRL_F3 OS2(30011,59)
#define KEY_CTRL_F4 OS2(30012,49)
#define KEY_CTRL_F5 OS2(30013,39)
#define KEY_CTRL_F6 OS2(30014,29)
#define KEY_CTRL_MENU OS2(30003,48)

#ifndef isOS2// This is new

typedef int(*sc_i2cp2sip)(char*, char*, short int*, short int*);
const unsigned int sc0015[] = { 0xD201D002, 0x422B0009, 0x80010070, 0x0015 };
#define GlibGetOSVersionInfo (*(sc_i2cp2sip)sc0015)

int OSVersionAsInt(void)
{
unsigned char mainversion;
unsigned char minorversion;
unsigned short release;
unsigned short build;
GlibGetOSVersionInfo( &mainversion, &minorversion, &release, &build );
return ( ( mainversion << 24 ) & 0xFF000000 ) | ( ( minorversion << 16 ) & 0x00FF0000 ) | ( release & 0x0000FFFF );
}

#define isOS2 (OSVersionAsInt() >= 0x02020000)
#define OS2(x,y) ((OSVersionAsInt() >= 0x02020000)?y:x)

#endif

const unsigned short* keyboardregister = (unsigned short*)0xA44B0000;

unsigned short key[8] = {0};

int KeyDown(int keycode)
{
if(isOS2)
{
int row, col, word, bit;
row = keycode%10;
col = keycode/10-1;
word = row>>1;
bit = col + 8*(row&1);
memcpy(key, keyboardregister, sizeof(unsigned short) << 3);

Sleep(1); //slow down, this function is faster than IsKeyDown() :-P

return (0 != (key[word] & 1<<bit));
}
else
{
return IsKeyDown(keycode);
}
}

#define IsKeyDown(x) KeyDown(x)
#define IsKeyUp(x) !KeyDown(x)

#define IsKeyDown(x) KeyDown(x)
#define IsKeyUp(x) !KeyDown(x)
#include "stdlib.h"
#include "usefull.h"
}
#include "MonochromeLib.h"
#include "heros.h"
#include "jeu.h"
#include "follower.h"
#include "wall.h"
#include "Bomb.h"
#include "score.h"
#include "trophee.h"


Ajouté le 12/02/2013 à 20:37 :
finalement, avec quelques cast et #include \"string.h\" ca passe
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 !
Casimo Hors ligne Membre Points: 141 Défis: 0 Message

Citer : Posté le 13/02/2013 17:24 | #


@javierxd: Oops. Mais compatible.
Javierxd Hors ligne Membre Points: 1899 Défis: 13 Message

Citer : Posté le 13/02/2013 20:53 | #


D'accord, merci
Calculatrices: g35+usb modifiée, PRIZM

My program is not working, I have no idea why.
My program is working, I have no idea why.

Programmes
Cliquer pour enrouler
Mnbd Hors ligne Membre Points: 155 Défis: 0 Message

Citer : Posté le 27/02/2013 13:32 | #


eh, casimo, tu avance sur la conversion du mario?
Casimo Hors ligne Membre Points: 141 Défis: 0 Message

Citer : Posté le 27/02/2013 15:49 | #


Casimo a écrit :
Je n'arrive pas à faire ca . C'est trop dur pour moi, en ce moment .
Il y a des problèmes avec PlotPixel et des autres choses ...
Peut-être je vais plus tard essayer encore une fois.


Pkplomb Hors ligne Membre Points: 87 Défis: 0 Message

Citer : Posté le 22/03/2013 16:04 | #


Juste une question

Comment on fait avec un programme en C++ pour le rendre compatible en SH4

J'ai essayé de placer le code à modifier dans un extern C mais ça ne marche pas


Dodormeur j'ai vue que tu avais le même problème mais je n'ai pas compris comment tu l'avait résolut

Tu peut me passer un fichier main déjà près remplis en SH4 stp



Can you help me please
voici un add-in que vous allez adorez :
BMPat LE lecteur d'image pour casio graph 75 85 95
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 22/03/2013 16:25 | # | Fichier joint


tiens, voila mon fichier contenant des fonctions utiles, dont une fonction d'input compatible SH4.
il te faudra peut-etre enlever deux trois fonctions qui te sont inutiles, et tu devra aussi faire un .h contenant les prototype des fonctions, et puis tu inclus ca dans le extern"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 !
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 22/03/2013 16:25 | # | Fichier joint


en fait je dois te fournir aussi le .h pour les defines, donc le voila
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 !
Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 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 108 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