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 ··· 6, 7, 8, 9, 10, 11, 12, 13 Suivante
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
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

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


oui a mon avis la version de l'OS y est pour beaucoup.
Il y a peut-être une pré-analyse lors de la première boucle ?
Peut-être qu'en constatant qu'il n'y a que des entiers il utilise le mode de calcul sur les entiers qui est beaucoup plus rapide ?
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 20:04 | #


Je ne pense pas que Casio c soit amusé à faire un interpréteur aussi complexe...
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 20:21 | #


Je suis en train de tester IsKeyDown() pour voir son fonctionnement sur l’émulateur mais on dirait que les affichages ne sont pas synchro avec l’exécution du programme.
Quelle est la fonction pour mettre à jour l'affichage ?
int AddIn_main(int isAppli, unsigned short OptionNum)
{
    unsigned int key;

    Bdisp_AllClr_DDVRAM();

    locate(1,1);
    Print((unsigned char*)"Test IsKeyDown");
    locate(1,2);
    Print((unsigned char*)"Appuyer sur 0");

    while (1){
      if (IsKeyDown(KEY_CHAR_0)) break;
    }
    locate(1,3);
    Print((unsigned char*)"Merci");

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

    return 1;
}

Lors de l’exécution de ce code j'ai un écran vide et il n'y a que lorsque j’appuie sur 0 que tout s'affiche d'un coup. Alors que selon l’exécution il devrait y avoir des messages intermédiaires.
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 21:28 | #


Certaines fonctions dessinent en VRAM et il faut utiliser Bdisp_PutDisp_DD pour transférer cette VRAM à l'écran. Mais je ne sais plus si Print utilise ce fonctionnement
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

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


Merci Ziqumu.

Je viens de trouver un tuto en anglais sur l'UCF.
(pfffiuuu, heureusement que i speak english fluently)

Je vais me former avec.
Après je testerai la solution de remplacement de Casio pour voir dans quelle mesure ça remplace bien IsKeyDown.

(j'ai hate de pouvoir utiliser la Monochromelib de Pierrotll.)

Ajouté le 23/04/2013 à 11:14 :
Je viens de tester le remplacement de la fonction IsKeyDown() proposé par Casio et ça marche très bien.(Ref : fx-9860G_SDK_Announcement.pdf)

En revanche, est-ce qu\'il y a une option pour la sauvegarde automatique du source (sans incrémentation ?)



Ajouté le 23/04/2013 à 11:57 :
Oups... pour le moment je ne récupère pas le coté \"Multi-touches\" de IsKeyDown()...
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 26/04/2013 17:11 | #


Pour récupérer les différentes touches, il faut enchaîner plusieurs conditions:

TouchLib a écrit :
if(i < TL_GET_TOUCH_ROUND && IsKeyDown(KEY_CHAR_0)) { coordonnesX[ i] = 0; coordonnesY[ i] = 20; i++; }
if(i < TL_GET_TOUCH_ROUND && IsKeyDown(KEY_CHAR_DP)) { coordonnesX[ i] = 5; coordonnesY[ i] = 20; i++; }
if(i < TL_GET_TOUCH_ROUND && IsKeyDown(KEY_CHAR_EXP)) { coordonnesX[ i] = 10; coordonnesY[ i] = 20; i++; }
if(i < TL_GET_TOUCH_ROUND && IsKeyDown(KEY_CHAR_PMINUS)) { coordonnesX[ i] = 15; coordonnesY[ i] = 20; i++; }
if(i < TL_GET_TOUCH_ROUND && IsKeyDown(KEY_CTRL_EXE)) { coordonnesX[ i] = 20; coordonnesY[ i] = 20; i++; }


C'est peut être pas clair, mais ce code permet d'enregistrer quelles touches sont pressées (en partie: c'est un extrait de la fonction). Si tu fait le tout dans une boucle très rapide, tu peux avoir un "multi-GetKey"

D'ailleurs je vais sortir une release de TouchLib, pour les intéressés.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 27/04/2013 10:07 | #


@Dark storm
La fonctions IsKeyDown() est deprecatée par le SH4.
J'essaye de la remplacer par une utilisation de "GetKey" ou "Bkey_GetKeyWait" mais j'ai du mal à retrouver le coté "multi-touche" de IsKeyDown().
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 27/04/2013 18:32 | #


Si tu utilise le bout de code fourni dans le topic "rendre un add-in compatible SH4", la fonction IsKeyDown fonctionne parfaitement.

Le problème, c'est que GetKey stoppe le programme tant qu'une touche n'a pas été pressée, donc deux choses: c'est pas très pratique pour un jeu d'action par exemple, et dès qu'une touche est pressée, le programme passe à la suite, ce qui fait que les autres touches enfoncées ne sont pas prises en compte...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 28/04/2013 14:51 | #


Tu as raison Dark storm.
J'essayai de me casser la tête pour transformer automatiquement les fichiers ".G1A" sans les sources et réorienter les appels d'IsKeyDown() à un IsKeyDown() compatible SH4 que j'aurai collé en bout de fichier.
L'idée c'etait de rendre compatibles tous les anciens fichiers de jeux .G1A pour le SH4 sans avoir besoin des sources mais finalement je laisse tomber.
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 28/04/2013 14:53 | #


Ah dommage :/ C'est pas un projet simple aussi, donc ça se comprend.
Dodormeur En ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 28/04/2013 15:50 | #


si tu veux, j'ai une fonction IsKeyDown compatible SH4

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 !
Totoyo Hors ligne Membre d'honneur Points: 16102 Défis: 102 Message
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 29/04/2013 22:10 | #


J'ai commencé des essais et ça se passe bien.

Pour l'instant je travaille sur un petit source C avec deux fonctions.

La première fonction joue le rôle de la fonction IsKeyDown() de base, celle qui fonctionne avec les SH3. La seconde joue le rôle de la fonction de remplacement, un IsKeyDown() compatible SH4.

Entre l'idée de Ziqumu de mettre le code de remplacement en fin de fichier et la fonction IsKeyDown() compatible SH4 de Dodormeur j'ai déjà plus de la moitié du travail fait... Ca a du bon le travail collectif de ce forum.

Demain je devrais être en mesure de pondre une première version capable de transformer mon fichier TEST.G1A (avec une pseudo fonction "IsKeyDown SH3") en un fichier TEST_SH4.G1A "compatible" SH4 (cad ayant remplace la fonction par une pseudo fonction "IsKeyDown SH4").

Une autre grosse étape sera de pouvoir remplacer l'appel à IsKeyDown() du SH3
par un appel à une autre fonction IsKeyDown() compatible SH4 située en fin de programme...
Est-ce que le nombre d'octets sera le même ?

Suspens...
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 29/04/2013 22:14 | #


Espérons
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

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


Il y a de bonnes chances si c'est un CALL XXXX.

Est-ce qu'il y a un desassembleur du SUPERH 3 quelque part ?
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 29/04/2013 22:33 | #


Sur les communautés casio, je ne crois pas :/
Regarde ce logiciel je crois il a l'aire de gérer les Hitachi SH3 (ancien nom des renesas SH3 si je ne me trompe pas ?)
téléchargement ici
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 29/04/2013 22:36 | #


il y en a peut-être un dans le sdk...

Gagné il y en a un...

Il faut faire un click droit (avec le dos bien droit) sur une ligne, mettre un breakpoint, builder et demander Show memory, cela montre le code desassemblé.
Quand j'ai mal à la tête je prends un aspect Geek.
Casimo Hors ligne Membre Points: 141 Défis: 0 Message

Citer : Posté le 30/04/2013 16:39 | #


Ou tu achêtes IDA Pro.
http://www.hex-rays.com/products/ida/index.shtml
Axolotl Hors ligne Membre Points: 39 Défis: 0 Message

Citer : Posté le 30/04/2013 18:16 | #


Tu veux parler du produit ou de la société ?

Je vais reprendre mes comparaisons en binaire car l'exploration du code désassemblé ne donne pas ce que j'attends.

Ajouté le 03/05/2013 à 08:53 :
Le problème est beaucoup plus ardu que je ne pensais...
Même en prenant un cas très facile, cad avec juste une fonction à réorienter, la comparaison en binaire montre une différence sur 9 octets.
Assurément, ma solution au problème de compatibilité du SH4 n\'est pas la bonne.
Quand j'ai mal à la tête je prends un aspect Geek.
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 03/05/2013 20:11 | #


Au fait, c'est mieux de Faure ++i que i++. C'est plus rapide.
Précédente 1, 2, 3 ··· 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 134 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