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


1, 2, 3, 4 ··· 10, 11, 12, 13 Suivante
Marmotti Hors ligne Youtuber Points: 3610 Défis: 6 Message

Citer : Posté le 03/01/2013 13:39 | #


Ah tout bon sa !
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 03/01/2013 13:50 | #


Génial, mais où met tu le premier code dans ton projet ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 03/01/2013 13:51 | #


En haut puisque t'as les define. Tu peux le casser en morceaux pour que ça passe bien dans ton projet.
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 03/01/2013 13:55 | #


J'ai un illegal token "0x02020000" à la compilation en mettant le code au tout début du fichier principal...
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 03/01/2013 13:58 | #


Casimo a écrit :
Just add this on top of your code and your game is compitable to the new calculators !
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 03/01/2013 13:59 | #


et bien c'est ce que j'ai fait, mais j'ai quand même l'erreur
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 03/01/2013 14:00 | #


en tout cas c'est une vraiment bonne nouvelle
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 03/01/2013 14:01 | #


2 sec je regarde avec mon angry birds...

Ajouté le 03/01/2013 à 14:09 :
Je galère ce n\'est pas bon chez moi non plus...

Ajouté le 03/01/2013 à 14:10 :
Je vais essayer avec un prog C comme starwars plutôt qu\'un C++

Ajouté le 03/01/2013 à 14:14 :
Pour le coup j\'ai le même problème que toi Dark storm...
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 03/01/2013 14:14 | #


Très bonne nouvelle tout ça !
Binary_man Hors ligne Ancien rédacteur Points: 1344 Défis: 19 Message

Citer : Posté le 03/01/2013 14:18 | #


Bonne nouvelle tout ça, il faut que je test tout de même en espérant ne pas avoir l’erreur de Louloux et Dark Storm.
Calculettes : Graph 75, Graph 95, classpad 330 et FX-CG20 !!
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 03/01/2013 14:21 | #


J'ai posé la question sur le forum de l'UCF
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 03/01/2013 14:27 | #


Merci d'avoir posé l question. on doit avoir loupé un truc...
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 03/01/2013 14:32 | #


Principalement, sa veut dire que nous avons une modification de l'appel des syscall et des codes correspondant aux touches?
Les syscalls précédemment trouvés pourront-ils être adaptés?

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

il suffirait donc seulement de taper notre code de syscall dans la dernière partie de la variable "const unsigned int" (remplacer 0x0135), et de sélectionner le type de format de sortie (un int pour les ticks par exemple)?

Si oui, alors mon minecraft ceras sans doute compatible avec les SH4!

(pas dit que ce que j'ai dit ait été clair, j’espère que ceux qui connaissent les syscall auront compris de quoi je parle)
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)
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 03/01/2013 14:34 | #


c'est pas con tout ça... Y'a plus qu'a faire des tests
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 03/01/2013 14:41 | #


Il me semble que ce que j'ai dit n'est pas trop faux, car 0x0135 = 309 (le syscall semble être le même pour ces deux versions, on peut donc espérer qu'il en soit de même pour les autres syscalls connus).
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)
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 03/01/2013 14:54 | #


Les syscalls sont bons il me semble, d'après ce que j'ai entendu
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 03/01/2013 15:06 | #


Génial, j'utilisais plusieurs syscall dans mon minecraft, et sa veut dire que si je le sors, il ne seras pas déjà obsolète
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)
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 03/01/2013 22:57 | #


C'est une très bonne nouvelle, il va falloir que je mette à jour MonochromeLib.
Casimo Hors ligne Membre Points: 141 Défis: 0 Message

Citer : Posté le 04/01/2013 10:05 | #


Bonjour, je suis le programmeur de ces functions. La probleme avec 0x02020000 devrait etre resoudre.

Le nouveau code:
Cliquez pour découvrir
Cliquez pour recouvrir
#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)

Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 04/01/2013 10:15 | #


Thanks a lot Casimo !
And we're happy to see you here ! 1st point

Ajouté le 04/01/2013 à 10:29 :
Zut i\'ve the same error with this code...
1, 2, 3, 4 ··· 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 71 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