Posté le 06/11/2014 20:37
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 91 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
Citer : Posté le 08/11/2014 20:03 | #
Merci beaucoup je suis tellement un boulet (l'émul était lancé )
-> Si tout va bien, mon prochain message sera la prééécieuse adresse .
- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Citer : Posté le 08/11/2014 20:09 | #
[...] la prééécieuse adresse.
T'inquiète, tu l'auras
ton précieuxton adresse.Sinon, c'est pas sûr que tu la trouves... j'ai des doutes. Je regarderai sinon si toute la mémoire de la machine est accessible en lecture.
Citer : Posté le 08/11/2014 20:17 | #
Voilà !
-> 0x8800238E (sur le SDK en tout cas)
(par contre, je suis un peu débutant et comme les lettres composant le username sont pas les premières valeurs composant la ligne à coté de l'adresse :/ -> j'aimerai savoir comment accéder seulement à ces lettres -> sauf si prendre toute la ligne fonctionne aussi )
- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Citer : Posté le 08/11/2014 20:20 | #
Je comprends pas la dernière remarque. Tu pourrais détailler ?
Ajouté le 08/11/2014 à 20:21 :
Sinon c'est cool, c'est dans la RAM. Accessible dans restriction donc !
Citer : Posté le 08/11/2014 20:42 | #
voilà la ligne de l'adresse :
8800238E B2 0E 00 01 01 00 00 00 02 D0 00 00 00 00 59 4F 4C 4F 53 57 41 47 00 00 00 00 00 ²........Ð....YOLOSWAG.....
...et les lettres du username sont "59 4F 4C 4F 53 57 41 47" ... je voudrais savoir si il est possible de les extraire du reste (et si c'est utile de le faire ) ...
- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Citer : Posté le 08/11/2014 20:44 | #
Bien sûr.
0x8800238E est l'adresse du premier octet, ici B2.
Donc, à moins que je ne sache plus compter, l'adresse du nom complet est 0x8800239C.
Citer : Posté le 08/11/2014 22:53 | #
Ah ! je vient de comprendre la logique (j'avais pas remarqué que les nombres ne se suivaient pas d'une ligne à l'autre )
Bon bah je continuerais mes recherches demain (tester avec d'autres OS et d'autres caltos)
Si ça fonctionne je fournirais les fonctions pour obtenir/modifier le username plus facilement (au cas ou certains en auraient besoin )
En tous cas, merci beaucoup ! j'ai l'impression d'avoir bien progressé en très peu de temps .
Ajouté le 09/11/2014 à 13:07 :
Zut ! Je n'avais jamais pensé à la manière dont je pourrais récupérer cette adresse(et la valeur) en C et je vient de passer 1/2 heure à tester des trucs avec des pointeurs sans succès
Voilà le code (au cas ou j'ai juste fait une faute débile ) :
username = [maroon]0[/maroon]x8800239C;
locate(1,[maroon]1[/maroon]);
Print(*username);
ML_display_vram();
(pour le moment, ce code est juste sensé afficher la première lettre du username)
- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Citer : Posté le 09/11/2014 13:22 | #
Print() prend il me semble en argument une chaîne de caractères (donc un pointeur), là tu envoies directement la valeur d'un caractère, ça ne fonctionnera pas comme voulu je pense :oops:.
Ce que tu peux faire c'est passer directement username en argument dans ce cas pour voir déjà ce qu'il se passe ;).
Citer : Posté le 09/11/2014 13:31 | #
Le prog me renvoie : Type not compatible for "=" sur la ligne "username = 0x8800239C" donc dans tous les cas, il n'arrive pas à la ligne du Print
- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Citer : Posté le 09/11/2014 13:31 | #
Et accessoirement, la même adresse que vous avez trouvée figure dans la doc souveraine ! C'est bon signe, bon travail de recherche, c'est intéressant ce genre d'investigation.
Ajouté le 09/11/2014 à 13:33 :
Tu peux essayer de caster ton adresse :
Citer : Posté le 09/11/2014 13:39 | #
MERCI !
j'ai enfin ce fichu username sur mon écran (si seulement j'avais eu cette doc miraculeuse avant ...)
Bon bah j'ai plus qu'a faire les fonctions pour gérer le username plus facilement
- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Citer : Posté le 09/11/2014 14:07 | #
Et accessoirement, la même adresse que vous avez trouvée figure dans la doc souveraine !
J'ai téléchargé cette la partie du site en local sur mon PC, c'est la première chose que j'ai regardée
Mais c'était plus intéressant pour Theernest570 de le laisser chercher tranquillement plutôt que de lui donner la réponse.
Citer : Posté le 09/11/2014 14:11 | #
Assurément :p. C'est pour ça que je dis que c'est intéressant comme boulot de recherche (et puis quand tu vois que ça fonctionne et que tu t'es aidé de presque rien, t'es un peu content), et que j'ai pas mis le lien tout de suite non plus ^^.
En plus ça montre que l'adresse à l'air d'être "toujours" la même, donc qu'à priori on peut essayer de s'en servir pour l'instant comme d'une adresse fixe.
Citer : Posté le 09/11/2014 14:15 | #
Faudrait faire des tests.
Oh, voilà quelque chose qui serait utile, je pense : une catégorie de topics qu'on utiliserait lorsqu'on veut faire tester des programmes simples à un maximum de personnes, pour confirmer qu'une adresse ou autre information informelle, soit la même pour tout le monde.
Citer : Posté le 09/11/2014 14:49 | #
Rooh ! quelle bande de méchants vous saviez tout
Enfin bon, ça m'a quand même permis d'apprendre plein de choses ^^.
(voilà les fonctions pour les fainéants ) :
-> ces fonctions fonctionnent grâce à la library "usefull.h" de Dodormeur
[green]//a ajouter en debut de code[/green]
[brown]#include [gray]"usefull.h"[/gray][/brown]
#define isOS2 (OSVersionAsInt() >= [maroon]0[/maroon]x02020000)
[green]//prototypes[/green]
char* getUserName(void);
void setUserName(char* newUserName);
[green]//functions[/green]
char* getUserName() {
[purple]char[/purple] *username = (char*) 0x8800239C, *copy;
copy = username;
[b][blue]return[/blue][/b] copy;
}
void setUserName(char* newUserName) { [green]//seul les 8 premiers char sont copiés[/green]
[purple]char[/purple] *username = (char*) 0x8800239C;
[purple]int[/purple] i;
[b][blue]for[/blue][/b](i = [maroon]0[/maroon] ; i<8 ; i++) {
*(username+i) = newUserName[i ];
}
}
(je les test immédiatement sur les SH4)
sinon, bonne idée Phenix pour le test de programmes
Ajouté le 09/11/2014 à 14:57 :
Oups , ça ne fonctionne pas sur SH4 (du coup j'ai un "ERNEST" qui se promène dans ma RAM )
-> je vais faire un programme pour rechercher le username sur ma 35++ et je vous prévient quand j'ai trouvé
Ajouté le 09/11/2014 à 16:10 :
C'est bon ! j'ai trouvé la fameuse adresse pour SH4
(grâce à un petit programme que voici -> votre username doit être "UNAME" pour que ça puisse fonctionner):
{
long *address = NULL, str[30];
address = (long*) 0x88000000;
[b][blue]while[/blue][/b](1){
ML_clear_vram();
sprintf(str, [gray]"0x%x : %x"[/gray], address,*address);
PrintMini(1, [maroon]1[/maroon], str, [maroon]0[/maroon]);
PrintMini(50, [maroon]50[/maroon], [gray]"finding ..."[/gray], [maroon]0[/maroon] );
ML_display_vram();
[b][blue]if[/blue][/b](*address==[maroon]0[/maroon]x554e414d) {
[b][blue]while[/blue][/b](1){if(key_down(31)) [b][blue]break[/blue][/b];}
}
address++;
[b][blue]if[/blue][/b](key_down(31)) [b][blue]break[/blue][/b];
}
ML_clear_vram();
[b][blue]return[/blue][/b] 1;
}
-> J'ai testé sur un 35++SH4 et une 75+SH4 et j'obtient : 0x88006F98
(j'ai plus qu'a me renseigner pour savoir comment détecter une calto SH4 )
- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Citer : Posté le 09/11/2014 16:22 | #
Il y a une routine pour détecter le proco, elle traîne à quelques endroits sur le site.
Sinon, fais attention avec getUserName() : d'une, si on veut modifier la chaîne après, on fait des conneries, et de deux, je suis pas sûr qu'il y ait forcément un NULL à la fin donc fais un copie.
Citer : Posté le 09/11/2014 17:53 | #
J'ai modifié le getUserName() -> en espérant avoir réglé des problèmes mais je galère toujours à trouver le moyen de détecter le processeur ... (par contre, je ne suis pas sur mais je crois que justement, le début de la library "usefull" de Dodormeur permet de le détecter).
Ajouté le 09/11/2014 à 18:32 :
Bon bah du coup, j'utiliserais directement usefull.h (ça m'évite d'avoir 2 fois le même morceau de code dans le projet )
- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Citer : Posté le 09/11/2014 18:38 | #
Il y a une routine pour détecter le proco, elle traîne à quelques endroits sur le site.
Sinon, fais attention avec getUserName() : d'une, si on veut modifier la chaîne après, on fait des conneries, et de deux, je suis pas sûr qu'il y ait forcément un NULL à la fin donc fais un copie.
Ah bon ? Il me semblait que finalement elle ne fonctionnait pas
Coïncidence ? Je ne pense pas.
Citer : Posté le 09/11/2014 18:49 | #
par contre, je ne suis pas sur mais je crois que justement, le début de la library "usefull" de Dodormeur permet de le détecter
Bien vu !
Il y a une routine pour détecter le proco, elle traîne à quelques endroits sur le site.
Sinon, fais attention avec getUserName() : d'une, si on veut modifier la chaîne après, on fait des conneries, et de deux, je suis pas sûr qu'il y ait forcément un NULL à la fin donc fais un copie.
Ah bon ? Il me semblait que finalement elle ne fonctionnait pas
Ben si, elle fonctionne. Pourquoi pas ?
Citer : Posté le 09/11/2014 23:39 | #
Elle fonctionne, je l'utilise pour mon Fourmizzz et en général pour les syscalls RTC (c'est a la fin du deuxième spoiler http://www.planet-casio.com/Fr/forums/topic12884-3-Horloge.html#113942)
C'est pas mal intéressant et ça me permet de continuer mon système de convois Merci Ernest
Citer : Posté le 10/11/2014 08:30 | #
Voilà le code (plus simple).
{
int mpu;
unsigned char s[30];
unsigned int key;
unsigned char savevalue;
mpu = 0;
savevalue = *(unsigned short*)0xA4000114;
*(unsigned short*)0xA4000114 = 0xFFFF;
switch ( *(unsigned short*)0xA4000114 ){
case 0x0FFF :
mpu = 1;
break;
case 0x00FF :
mpu = 2;
break;
default :
switch ( *(unsigned int*)0xFF000030 & 0xFFFFFF00 ){
case 0x10300B00 :
switch ( *(unsigned int*)0xFF000044 & 0xFFFFFFF0 ){
case 0x00002C00 :
mpu = 3;
break;
case 0x00002200 :
mpu = 4; // just for reference
break;
};
break;
};
break;
};
*(unsigned short*)0xA4000114 = savevalue;
return mpu;
}