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
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
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
merci a tout le monde pour son soutien
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 !Citer : Posté le 22/03/2013 17:08 | #
Merci
BMPat LE lecteur d'image pour casio graph 75 85 95
Citer : Posté le 27/03/2013 21:55 | #
j'aimerais avoir une petite info:
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));
}
doit être remplacé par:
const unsigned int sc0135[] = { 0xD201D002, 0x422B0009, 0x80010070, 0x0135 };
#define ML_vram_adress (*(sc_cpv)sc0135)
pour être compatible avec les SH4...
Seulement voila, avec mon minecraft, il y a problème, si je met le code pour SH4, il devient tout simplement incompatible pour les SH3...
(le screen m'affiche un truc qui ne correspond pas vraiment a ce que je devrais voir)
-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
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 28/03/2013 07:49 | #
Et je voudrais savoir un truc: à la sortie de l'astuce, on ne pouvait pas utiliser GetKey() et IsKeyDown() en même temps. C'est réglé ?
Citer : Posté le 28/03/2013 11:46 | #
@Limachi: C'est bizarre... Essaye de remplacer
avec
@Dark Storm: Non, tu peux utiliser GetKey et IsKeyDown simultané, mais peut-être tu as puis des touches dans la mémoire de touches, alors tu as un effect comment PutKey.
J'espere tu as me compris
Code:
GetKey(&key);
Effect (peut-être):
PutKey(KEY_CTRL_EXE);
GetKey(&key);
Tu peux trouever plus d'information ici: http://www.casiopeia.net/forum/downloads.php?view=detail&df_id=72&sid=8b85e0b6186d98407cc0bac852dc22fb
Citer : Posté le 28/03/2013 17:54 | #
Ok, je teste cette solution immédiatement casimo...
cela dit, je suis pas sur que sa le rende compatible SH4 dans ce cas là...
-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
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 29/03/2013 10:02 | #
Si ca ne marche pas, tu peux ecrire
typedef char * (* sc_cpv) (void)
const unsigned int sc0135_OS2 [] = {0xD201D002, 0x422B0009, 0x80010070, 0x0135};
const unsigned int sc0135 [] = {0xD201422B, 0x60F20000, 0x80010070, 0x0135};
# define ML_vram_adress (* (sc_cpv) OS2(sc0135, sc0135_OS2))
Citer : Posté le 29/03/2013 17:36 | #
ah ouai bonne idée de rendre ton minecraft compatible SH4 limachi
Où trouve-t-on le morceau de code à remplacer pour rendre un add-in compatible?
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));
}
Projet de combat au tour par tour type DOFUS mais totalement orienté sur le PvP. Le projet va demander un peu de temps mais soyons patient...
Le titre (laby3D) en dit long sur son contenu : il s'agit d'un simple moteur de labyrinthe en "3D" (enfin on va dire juste un effet de profondeur ). il aura la particularité d'être aggrémenté de superbes petites animations sur les rotations d'angles de vue ! j'y bosse pas mal et j'espère bien le réussir !
Le jeu devrait sortir bientôt
Citer : Posté le 30/03/2013 02:07 | #
bon, j'abandonne, plus je veux que mes libs soient compatible SH4, plus elles ce corrompent...
A moins de regarder un exemple, je ne pourrais jamais trouver les erreurs correctement.
(en passant, casimo, tu as oublié un ; a ta première ligne de code que tu m'as proposé dans le post précédent)
Ajouté le 30/03/2013 à 02:34 :
bon, je vous mets les erreurs que j\\'ai, parce que la je comprend plus rien:
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(44) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(54) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(56) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(57) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(63) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(64) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(65) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(66) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(68) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(69) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(70) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(81) : C2144 (E) Type mismatch
C:\\Program Files\\CASIO\\fx-9860G Software Development Kit\\OS\\FX\\include\\fxlib.h(85) : C2144 (E) Type mismatch
et maintenant les lignes correspondantes dans fxlib (avec les lignes en commentaires):
/*(44)*/void Print(const unsigned char *str);
/*(54)*/void PopUpWin(int n);
/*(56)*/int Bfile_OpenFile(const FONTCHARACTER *filename, int mode);
/*(57)*/int Bfile_OpenMainMemory(const unsigned char *name);
/*(64)*/int Bfile_CreateFile(const FONTCHARACTER *filename, int size);
/*(65)*/int Bfile_CreateDirectory(const FONTCHARACTER *pathname);
/*(66)*/int Bfile_CreateMainMemory(const unsigned char *name);
/*(68)*/int Bfile_DeleteFile(const FONTCHARACTER *filename);
/*(69)*/int Bfile_DeleteDirectory(const FONTCHARACTER *pathname);
/*(70)*/int Bfile_DeleteMainMemory(const unsigned char *name);
/*(81)*/int GetKey(unsigned int *keycode);
/*(85)*/void Sleep(int millisecond);
Ajouté le 30/03/2013 à 02:35 :
what the heck? pourquoi mes anti slash ce sont doublés?
-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
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 30/03/2013 10:01 | #
Je ne sais pas
Est ce que tu peux me donner les sources? C'est plus facile - Je ne vais pas les vendre .
Citer : Posté le 08/04/2013 00:05 | #
je crois que j'ai trouvé un compromis qui fonctionne (actuellement, il ne présente pas d'erreur pour une SH3, et je vais le tester de ce pas sur une SH4):
char* vram_adress()
{
static const unsigned int sc0135 [] = {0xD201D002, 0x422B0009, 0x80010070, 0x0135};
static const int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
static const int (*SysCall)( int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;
if(isOS2)
{
return (char*)(* (sc_cpv) sc0135);
}
else
{
return (char*)((*SysCall)(0, 0, 0, 0, 309));
}
}
Ajouté le 08/04/2013 à 00:20 :
bon, sa ne marche pas non plus... une âme charitable pourrait me montrer le code source d\'un add-in marchant sur les SH3 et SH4 utilisant les fonctions IsKeyDown() et la MonochromeLib en guise d’exemple car le je n\'y arrive vraiment pas.
-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
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 08/04/2013 08:23 | # | Fichier joint
pourquoi les fonctions IsKeyDown?? utilise tes propres fonctions d'input qui peuvent etre beaucoup plus rapide !
je te met en fichier joint mes fonctions d'input
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
merci a tout le monde pour son soutien
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 !Citer : Posté le 08/04/2013 08:23 | # | Fichier joint
et le .h
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
merci a tout le monde pour son soutien
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 !Citer : Posté le 08/04/2013 21:09 | #
je n'ai encore jamais fait de fonctions d'input car je ne sais pas par ou passent le info de pression de touches, quant a la position de la Vram pour les SH3 et SH4, en attendant de fixer tout ça, je vais opter pour ma propre Lib graphique que j'ai développé et qui utilise des buffers de 1024 chars (autant que la Vram quoi), sa me fait perdre 1024 octets de mémoire vive (ce qui n'est pas la mort ) et je suis sur d'être compatible pour tout les modèles.
-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
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 08/04/2013 21:20 | #
perso, j'utilise une fonction d'input que j'avais récupérée dans gravity duck et que casimo m'a rendu compatible.
l'avantage de cette fonction, c'est surtout qu'elle n'occasionne aucun ralentissement a l'appui, contrairement a IsKeyDown, qui ralenti beaucoup le programme
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
merci a tout le monde pour son soutien
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 !Citer : Posté le 09/04/2013 23:56 | # | Fichier joint
J'ai utilisé tes fonctions d'input, et sa a l'air de marcher (pour une SH3 en tout cas, je n'ai pas eut le loisir de tester sur une SH4), et j'ai aussi utilisé la technique du buffer au lieu d'utiliser la vram et sa a l'air de marcher aussi.
Si quelqu'un a une SH4, j'aimerais qu'il teste l'add-in en fichier joint (si tout marche, on est censé voir un cube s'éloigner et revenir, et on doit pouvoir quitter en utilisant EXIT).
-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
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 10/04/2013 16:02 | #
Ca marche! Ca marche :aaah:
Citer : Posté le 10/04/2013 17:29 | #
Cool, je vais enfin pouvoir lâcher la compatibilité et revenir a ce que je fessais: le FOG
-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
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Citer : Posté le 12/04/2013 20:35 | #
C'est moi ou il manque la touche "KEY_CTRL_XTT" qui a le code 76 pour getkey. (la touche au dessus de fraction) ? :huh:
Ajouté le 12/04/2013 à 23:43 :
C\'est bon j\'ai compris comment fonctionnais la fonction. Donc pour cette touche, il faut rajouter la ligne suivante
Citer : Posté le 20/04/2013 13:12 | #
Bonjour,
En essayant de rendre compatible SH4 le logiciel EDITv1.60 je me suis rendu compte d'un problème : il fonctionne sur l'émulateur tel quel mais pas sur la FX-9860Gii. Bref l'incompatibilité SH4 n'est pas reproduite. J'ai donc quelques questions :
1) Est-ce qu'il y a moyen (peut-être en changeant la version de rom ou avec une directive de compilation ?) de reproduire l'incompatibilité ?
2) Si lors de mes développements je veux créer un logiciel qui soit compatible SH3 et SH4, quels sont les pièges à éviter ? Y a-t-il un paramétrage spécifique ou des bibliothèques à éviter ?
3) La société Casio a-t-elle prévue de faire évoluer le SDK pour résoudre la question du SH4 ?
Merci pour vos réponses
Citer : Posté le 20/04/2013 13:56 | #
Pourquoi ne pas créer un add-in qui rendrait les autres compatibles SH4 ?
Ou alors un add-in qui liste tout les add-ins qu'il détecte et qui les rend compatibles SH4...
C'est possible ?