Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » [G35++/G75] Comment récupérer le nom d'utilisateur ?
Theernest570 Hors ligne Membre Points: 64 Défis: 5 Message

[G35++/G75] Comment récupérer le nom d'utilisateur ?

Posté le 06/11/2014 20:37

Bonjour à tous,
je suis actuellement en train de programmer un jeu en multijoueur (3pin) et je voudrais savoir si il est possible grâce à une fonction (une sorte de SysCall ) de récupérer le "user name" de la calto (modifiable dans MENU>SYSTEM>F1).
ça me permettrait de l'afficher à côté des scores (sans avoir à demander un pseudo )...

Merci d'avance


Theernest570 Hors ligne Membre Points: 64 Défis: 5 Message

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 .

Calto : Graph 35+(tweaké)
Projets
Fermer

- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 08/11/2014 20:09 | #


Theernest570 a écrit :
[...] la prééécieuse adresse.

T'inquiète, tu l'auras ton précieux ton 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.
Theernest570 Hors ligne Membre Points: 64 Défis: 5 Message

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 )
Calto : Graph 35+(tweaké)
Projets
Fermer

- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

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 !
Theernest570 Hors ligne Membre Points: 64 Défis: 5 Message

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 ) ...
Calto : Graph 35+(tweaké)
Projets
Fermer

- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

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.
Theernest570 Hors ligne Membre Points: 64 Défis: 5 Message

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 ) :

char *username = NULL;
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)
Calto : Graph 35+(tweaké)
Projets
Fermer

- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1241 Défis: 54 Message

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 ;).
Theernest570 Hors ligne Membre Points: 64 Défis: 5 Message

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
Calto : Graph 35+(tweaké)
Projets
Fermer

- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1241 Défis: 54 Message

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 :

username=(char*)0x8800239C;

Theernest570 Hors ligne Membre Points: 64 Défis: 5 Message

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
Calto : Graph 35+(tweaké)
Projets
Fermer

- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 09/11/2014 14:07 | #


Nemhardy a écrit :
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.
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1241 Défis: 54 Message

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.
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

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.
Theernest570 Hors ligne Membre Points: 64 Défis: 5 Message

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):
int AddIn_main(int isAppli, unsigned short OptionNum)
{
    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 )
Calto : Graph 35+(tweaké)
Projets
Fermer

- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

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.
Theernest570 Hors ligne Membre Points: 64 Défis: 5 Message

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 )
Calto : Graph 35+(tweaké)
Projets
Fermer

- Un pong multijoueur avec le cable 3pin
- Communication IR entre caltos (Arduino)
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

Citer : Posté le 09/11/2014 18:38 | #


Lephenixnoir a écrit :
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
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 09/11/2014 18:49 | #


Theernest570 a écrit :
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 !

Drac0300 a écrit :
Lephenixnoir a écrit :
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 ?
Theprog Hors ligne Membre Points: 1447 Défis: 20 Message

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
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 10/11/2014 08:30 | #


Voilà le code (plus simple).
int GetMPU()
{
    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;
}

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 v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 125 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