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 ··· 5, 6, 7, 8, 9, 10, 11, 12, 13 Suivante
Ray Hors ligne Membre Points: 1338 Défis: 18 Message

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 ?
Projets que je soutiens
Masquer
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 20/04/2013 14:23 | #


@Axolotl :
1) L'emulateur émule du SH3, c'est pour ça qu'il n'y a pas de problème d'incompatibilité. Et non il n'y a pas moyen de reproduire cette incompatibilité.
2) Non pas spécialement, mais vu que tu as une SH4, tu pourras tester plus facilement s'il y a des incompatibilité. Normalmeent les problèmes viennent surtout des fonctions d'input non bloquante, mais le problème se résout grace à ce topic. Et après les syscall peuvent changer, mais j'en sais pas plus.
3)Non, je ne pense pas qu'ils veulent mettre à jour leurs SDK, ils n'en n'ont pas fait pour la prizm. Donc c'est à nous de nous débrouiller pour trouver des solutions compatibles. Mais en fait c'est pas le SDK qui est incompatible, c'est la bibliothèque qui est fournis avec qui est incompatible.

@Ray : On pourrait peut être se débrouiller pour faire un espece de debugger, qui detecte les problème sur SH4 et remplace par une solution directement dans le fichier compilé. Mais si c'est possible, il faudrait bien connaitre l'assembleur, ce qui n'est pas mon cas.
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 20/04/2013 19:33 | #


Je viens de voir que l'OS du SDK a pour numéro de version 1.03.0000 ce qui explique que je n'arrive pas à reproduire l'erreur de la version 2.02.0201 de ma FX-9680Gii USB PG2.
Le répertoire CASIO\fx-9860G SDK\Models\INIT
contient bien un fichier CasioROMInit.MEM que je pense être la rom (bien qu'on soit loin des 2,5Mo) mais de toute manière l’émulateur integré a des points d'entrée spécifiques et cela ne servirait à rien d'essayer de phaser une autre rom. C'est dommage.
Je vais regarder dans l'autre émulateur.

Ajouté le 20/04/2013 à 20:45 :
@Ziqumu
un système automatique de remplacement de code me semble beaucoup plus dur à faire (recalcul des adresses de saut par exemple) que d\'essayer de trouver les bibliothèques et de les corriger. Je pense que le sdk utilise celles qui sont dans les sous-répertoires.

Je viens de regarder les deux autres émulateurs, c\'est pareil ils ont tous une version de rom spécifique.

Aujourd\'hui j\'ai tweaké ma Graph 35+ usb et je pense qu\'elle aura le pb de compatibilité puisque c\'est une SH4...

Après j\'essayerai de faire le tour des bibliothèques pour voir la ou lesquelles génère le pb. Si on arrive à corriger les bibliothèques ce sera plus efficace que de corriger les projets.
(Si ça marche on fera un patch de ces bibliothèques à appliquer sur le SDK)
J\'espère qu\'il n\'y a pas beaucoup de bibliothèques impliquées. (ça doit être surtout celle des standard Input/output)
Quand j'ai mal à la tête je prends un aspect Geek.
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 20/04/2013 22:51 | #


Tu aura beau changer la rom, de toute façon l'emulateur en lui même emule un processeur SH3, et l'OS 2.02 est fait pour les processeurs SH4. Donc je ne pense pas que ce soit possible.

Mais on sait déjà d'ou viennent les problèmes dans la biblioteque officiel et ce sujet donne en principe la possibilité de les corriger, en remplacant une des fonctions d'input (non bloquante).
Mais j'ai pas réussi à le faire la dernière fois, le compilo était persuadé que j'avais inclus deux fois mon fichier de correction, ce fichier marche pourtant très bien sur mes projets(et pas de boucle d'inclusion ni rien). Mais bon tu m'a l'aire d'être quand même assez qualifié donc tu saura sans doute débrouiller(même si le compilo a des réactions bizzare parfois)

Concernant mon idée de remplacement de code, le but serait surtout de pouvoir rendre compatible les addins compilés. Et au passage créer un debugger onCalc. Mais je suis loin d'avoir les compétences pour ça, même si ça m’intéresserait.
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 21/04/2013 10:12 | #


Une moulinette est faisable a plusieurs conditions :
1) Dans un Addin il y a de fortes chances qu'il y ait dans le header un ou des codes de contrôles permettant de qualifier le fichier lors de transfert. Donc si on transforme ce fichier il faudra reconstituer cette qualification.
2) La séquence de code à remplacer et le code de remplacement doivent être sûrs sinon l'Addin ne fonctionnera pas.
3) Les adresses de saut absolus et relatifs devront être recalculées.
Si je peux trouver ces éléments je peux tenter de faire une moulinette sur PC dans un premier temps.

Est-ce que quelqu'un a déjà fait une comparaison en binaire d'un Addin rendu compatible avec l'Addin original ? Il serait intéressant de voir les redondances de code.

Est-ce qu'un groupe ou un représentant a demandé une date à la société Casio pour l'adaptation du sdk au SH4 ?
Quand j'ai mal à la tête je prends un aspect Geek.
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 21/04/2013 10:40 | #


1) Pour ça tu peux regarder la fxReverse. Je ne sais plus si elle contient l'entete complète des addins, mais tu auras au moins la partie commune à tous les fichiers casio (et si je me rappel bien le reste n'est pas difficile à comprendre)
2) Je ne vois pas ce que tu entend par sûr ?
3) Pour faire ça il faut que tu connaisse les opcode de toutes les instructions de saut, et leurs longueur, non ?
Si ça peut t'aider de mémoire j'avais lu que chaque instruction avait une longueur constante de 16 bit, et si je me rappel bien l'opcode faisait 4bit. De toute façon pour le reste et pour vérifier ce que je dit, je t'invite a aller chercher les documentations des processeurs équivalents aux nôtres sur le site de Renesas. (SH7705)

J'ai une question : ça serait pas plus simple de mettre a la fin du fichier la fonction compatible SH4 d'input, et de faire un jump vers elle à chaque fois qu'on appel la mauvaise ? Certes on perdrait en place, mais tu n'aurait pas à recalculer les adresses et ça me parait plus simple, mais je peux me tromper, je n'ai que de minuscules notions d'assembleur.

Je pense pas que quelqu'un à déjà fait une comparaison.

Je ne sais plus si totoyo en avait parlé lors de son interview avec la dame de casio, mais bon ne rêve pas, je ne pense pas qu'ils souhaitent le mettre à jour.
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 21/04/2013 11:51 | #


1) Je ne connaissais pas, merci pour cette piste Ziqumu.
2) A ce niveau d’exécution il n'y a plus de monitoring des erreurs. Si jamais il y a des codes erronés cela provoquera très souvent une initialisation totale. Pas dangereux mais très agaçant car perte des programmes...
3) oui. merci pour cette autre piste.

Oui ce serait plus simple tu as raison. J'ai tendance à raisonner sans tenir compte des vitesses fabuleuses actuelles. Effectivement je pense que ces allers-retours seraient transparents, bien plus surs et ne nécessiteraient pas trop de recalculs d'adresses.

[evolution du sdk]
ça m'étonne car si le marché passe en SH4 et que les Addins ne peuvent s'adapter, la FX n'a plus d’intérêt et le but d'un constructeur c'est quand même de vendre son produit et le rendre attractif par ses possibilités. Est-ce que vous avez des contacts avec des forums japonais ?
Quand j'ai mal à la tête je prends un aspect Geek.
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 21/04/2013 13:02 | #


Beaucoup de gens achètent les Graph75 pour d'autres atouts que les addins communautaires et en général ne sont pas au courant de ce problème de compatibilité. Je ne pense pas que ça touchera tant que ça leurs ventes.
Regarde l'interview d'une responsable de chez casio, elle explique pourquoi ils ne font pas d'SDK pour la prizm, et c'est sans doute sur la même raison qu'ils ne mettrons pas à jours le SDK pour les Fx9860
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 21/04/2013 13:38 | #


Oui je viens de le lire. C'est dommage. Très dommage. On ne doit pas être un public assez grand.
Quand j'ai mal à la tête je prends un aspect Geek.
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 21/04/2013 15:09 | #


Ouais :/
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 21/04/2013 17:38 | #


Dans un premier temps je vais essayer de modifier la bibliothèque (et de ne pas rencontrer le pb du doublon que tu as rencontré )

Je suppose que la bibliothèque a surveiller est la stdio.h
Est-ce que la fxlib.h est aussi à voir ?

Quelle(s) fonction(s) dois-je appeler pour être sur de déclencher l'erreur ?
printf() ? scanf() ? putchar() ? getchar() ? puts() ? gets() ? des autres ?

Je vais commencer par un tout petit source pour déclencher l'erreur et essayer de la corriger
juste en corrigeant la bibliothèque en fonction des patchs déjà existant. Si ça marche je généraliserai.
Quand j'ai mal à la tête je prends un aspect Geek.
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 21/04/2013 18:53 | #


Non c'est justement la fxlib.h, et les fonctions GetKey, isKeyDown et isKeyUp.
Et normalement tu as aussi les syscall :
0x247:kbd_GetKeyWait
0x135:Disp_GetVRAMPtr
C'est tout ce que je sais. Pour les syscall, leurs fonctionnement est expliqué dans la fxReverse au chapitre 3.

Après j'avoue qu'on a pas fait une description si précise que ça des problèmes SH4, mais bon c'est difficile quand on a pas de SH4.

HS: Sympa ta collection de calculatrices
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 21/04/2013 19:53 | #


Impeccable, ça me suffit pour attaquer le problème ce soir.

Pour le moment je n'ai pas besoin de plus d'informations, avec le source du patch existant ça devrait me suffire.

Pour avoir un SH4, il suffit de tweaker une Graph 35 d'os 2.2.2201 en 75. Je suis arrivé à avoir les mêmes messages d'erreur que sur la FX-9860Gii PUSB2.

HS:Merci. Au départ ce n'était pas une collection mais je ne me suis jamais arrivé à me résoudre à les revendre. Du coup c'est devenu une collection. Et je ne le regrette pas, à chaque fois que j'en manipule une j'ai l'impression de voyager dans le temps grâce aux souvenirs que ça m'évoque. C'est génial.
Quand j'ai mal à la tête je prends un aspect Geek.
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 21/04/2013 22:42 | #


Axolotl, t'as (environ) quel âge pour avoir des reliques du genre la FX-7000G ?
C'est cool de voir un membre de plus dans la communauté, tu pourrais te présenter ici si tu pense rester
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 22/04/2013 10:20 | # | Fichier joint


J'ai fait un essai pour déclencher l'erreur avec GetKey() mais je n'ai pas d'erreur.

Ci-jointe l'archive "Essai01.zip" contenant
Essai01.c : le source
ESSAI01.G1A : le compilé

Le programme s’exécute sur ma
FX-9860Gii SD USB Power Graphic 2
sans erreur. (c'est bien une SH4 non?)

Ajouté le 22/04/2013 à 10:40 :
@Dark storm
Tu as raison, j\'avais mis trop d\'infos.
Quand j'ai mal à la tête je prends un aspect Geek.
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 22/04/2013 12:32 | #


Ah, bah ça c'est con, j'étais persuadé que getkey faisait planter la calculatrice. Surtout que edit utilise getkey et pour moi c'est lui le problème.
Oui, c'est bien une SH4. Bon bah t'as plus qu'a tester les autres, mais c'est vrai que c'est bizarre.
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 22/04/2013 13:39 | #


Est-ce que tu saurais où on peut acheter une Graph 35+usb en SH3 ?
(si possible blanche et os 2.01.0200)
Quand j'ai mal à la tête je prends un aspect Geek.
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 22/04/2013 17:30 | #


la fonction getkey marche, c'est les fonctions IsKeyDown et IsKeyUp qui ne marchent pas

et pour edit, il me semble que les pointeurs vers la mémoire de stockage n’etaient pas bon, mais je ne suis pas sur
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 !
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 22/04/2013 17:56 | #


Pour acheter une SH3, le meilleur moyen me semble être sur Le Bon Coin ou eBay, ou tout autre site qui revend des caltos d'occasion, vu que les revendeurs "officiels" n'ont en général plus que des SH4 en stock, et ce depuis environ 1 an...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 22/04/2013 19:05 | #


Dodormeur a écrit :
c'est les fonctions IsKeyDown et IsKeyUp qui ne marchent pas

et pour edit, il me semble que les pointeurs vers la mémoire de stockage n’etaient pas bon, mais je ne suis pas sur

Est-ce que la solution proposée par Casio dans leur document n'est pas satisfaisante ? (je n'ai pas encore testé leur solution)
Pour Edit je confirme l'erreur sur les pointeurs.

@Dark storm
Merci. Pour l'instant j'ai trouvé une 75 en sh3.
Du coup je vais prendre mon temps pour une 35 en sh3. Je compte aussi sur des librairies de province.
Je suis assez surpris par la vitesse de la 75 qui sur une boucle numérique simple est plus du double de la 85.
En une minute : 46850 boucles contre 20200.
En revanche dès qu'il s'agit de déplacer un caractère sur l'écran texte ou graphique, les performances redeviennent égales.
Quand j'ai mal à la tête je prends un aspect Geek.
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 22/04/2013 19:11 | #


de plus en plus bizarre leur interpréteur...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Précédente 1, 2, 3 ··· 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 222 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