[ASM/GBA] Offsets de routines utile.

Pages: [1]

Unifag

  • Membre
  • 883 posts
29 août 2014, 12:33
Étant donné qu'on est de plus en plus à faire de l'ASM (j'en compte 3 pour le moment, peut être 4 bientôt, ça parait pas beaucoup mais sur l'ensemble des membres actifs c'est pas mal, malheureusement...) je me suis dit que ça pourrait être bien de regrouper les routines utiles. Parce-que devoir chercher à chaque fois qu'on à besoin de quelque chose c'est chiant.
Je donne des noms anglais aux routines parce-que fuck le français ça demande trop de mot pour les décrire.

Routines

Pour commencer il y à les routines trouvaient par Jambo51 (Pokécommunity) et darthatron (Pokécommunity), je les détaillerais plus tard, pour le moment je me contente de ça:
Spoiler
Pokémon Decrypter (Prend l'offset du Pokémon dans R0 et un index dans R1; Renvoie la valeur dans R0): 0x3FAC0
Pokémon Encrypter (Prend l'offset du Pokémon dans R0, un index dans R1 et l'offset de la valeur à stocker dans R2): 0x40254
0x00 - ID Pokémon
0x01 - ID Dresseur
0x02 - Surnom (r6 doit être l'offset où se trouve le surnom)
0x03 - Pays d'origine
0x04 - Sanity?
0x05 - Sanity?
0x06 - Sanity?
0x07 - Nom du dresseur d'origine
0x08 - Marques
0x09 - Checksum
0x0A - Filler?
0x0B - Espèce
0x0C - Objet tenu
0x0D - Attaque 1
0x0E - Attaque 2
0x0F - Attaque 3
0x10 - Attaque 4
0x11 - PP 1
0x12 - PP 2
0x13 - PP 3
0x14 - PP 4
0x15 - PP Bonus
0x16 - Sang-froid
0x17 - Beauté
0x18 - Grâce
0x19 - Expérience
0x1A - EV PV
0x1B - EV Attaque
0x1C - EV Défense
0x1D - EV Vitesse
0x1E - EV Atq. Spécial
0x1F - EV Def. Spécial
0x20 - Bonheur
0x21 - Intelligence
0x22 - Pokérus
0x23 - Lieu capture
0x24 - Niveau capture
0x25 -
0x26 - Hometown / Poké Ball / Sexe Dresseur
0x27 - IV PV
0x28 - IV Attaque
0x29 - IV Défense
0x2A - IV Vitesse
0x2B - IV Atq. Spécial
0x2C - IV Déf. Spécial
0x2D - Oeuf
0x2E - Capacité spécial
0x2F - Robustesse
0x30 - Shiney
0x31 -
0x32 -
0x33 -
0x34 -
0x35 -
0x36 -
0x37 - Status (Poison, etc)
0x38 - Niveau
0x39 - PV actuel
0x3A - PV max
0x3B - Attaque
0x3C - Défense
0x3D - Vitesse
0x3E - Attaque Spé.
0x3F - Défense Spé.
0x40 -
0x41 - Espèce

Générateur de pokémon sauvage: (Prend l'adresse du pokémon dans R0, l'espèce dans R1, le niveau dans R2 et un autre nombre dans R3 (généralement 0x19 or 0x20): 0x3DC70
Générateur de pokémon pour le Givepokemon: 0xA02D0

Flag Decrypter (Prend le numero du flag dans R0; Renvoie sont statut dans R0): 0x6E6F4
Flag Setter (Prend le numero du flag dans R0): 0x6E6A4
Flag Clearer (Prend le numero du flag dans R0): 0x6E6CC

Variable Decrypter (Prend le numéro de la variable dans R0; Renvoie l'adresse de la variable dans R0): 0x6E478

Flag Pokémon Vue/Capturé (Prend le numéro du Pokémon dans R0 et un index dans R1 (0: Vérifier vue, 1: Vérifier capturé, 2: Définir vue, 3: Définir capturé); Renvoie le résultat dans R0): 0x104E1C

Nombre aléatoire (Renvoie un nombre de 16-bit dans R0): 0x44E8C

QuotienDivision (Prend le numérateur dans R0 et le dénominateur dans R1;Renvoie le quotient dans R0): 0x1E243C
ResteDivision (Prend le numérateur dans R0 et le dénominateur dans R1;Renvoie le reste dans R0): 0x1E2AA8

ModifiéMétéo (Prend l'effet météo dans R0): 0x7B124

Et maintenant les trouvailles de notre chère communauté  :)

GetMoney : 0x09FF0C
Spoiler
Entrer:
r0: adresse de la clé de décryptage

Sortie:
r0: argent détenu

Attention car cette routine modifie le contenu de r1 et r2.
SetMoney: 0x09FF24
Spoiler
Entrer:
r0: adresse de la clé de décryptage
r1: Somme d'argent à affecter

Attention car cette routine modifie le contenu de r2 et r3.
AddMoney: 0x09FF54
Spoiler
Entrer:
r0: adresse de la clé de décryptage
r1: Somme d'argent à ajouter

Attention car cette routine modifie le contenu de r2 et r3.
SubMoney: 0x09FF8C
Spoiler
Entrer:
r0: adresse de la clé de décryptage
r1: Somme d'argent à déduire

Attention car cette routine modifie le contenu de r2 et r3.


GetObjFromPC: 0x10DEA8
Spoiler
Entrer:
r0: position de l'objet dans le pc

Sortie:
r0 = index de l'objet

Attention car cette routine modifie le contenu de r1.
GetObjQteFromPC: 0x10DEC0
Spoiler
Entrer:
r0: position de l'objet dans le pc

Sortie:
r0 = quantité de l'objet

Attention car cette routine modifie le contenu de r1.
AddObj2Pc: 0x09A56C
Spoiler
Entrer:
r0: index de l'objet
r1: qantité

Sortie:
r0 = 1 (si succé) ou 0 (si echec)
SubObj2Pc: 0x09A604
Spoiler
Entrer:
r0: index de l'objet
r1: qantité

GetObjFromBag: 0x09A93C
Spoiler
Entrer:
r0: sac (1=objets, 2=objets rare, 3=pokéballs, ...)
r1: position de l'objet

Sortie:
r0 = index de l'objet

Attention car cette routine modifie le contenu de r2.
GetObjQteFromBag: 0x09A958
Spoiler
Entrer:
r0: sac (1=objets, 2=objets rare, 3=pokéballs, ...)
r1: position de l'objet

Sortie:
r0 = quantité de l'objet

Attention car cette routine modifie le contenu de r2.
AddObj2Bag: 0x09A228
Spoiler
Entrer:
r0: index de l'objet
r1: qantité

Sortie:
r0 = 1 (si succé) ou 0 (si echec)
SubObj2Bag: 0x09A37C
Spoiler
Entrer:
r0: index de l'objet
r1: qantité

Sortie:
r0 = 1 (si succé) ou 0 (si echec)

CalcStats: 0x03E354
Spoiler
Entrer:
r0: adresse du pokémon dont les stats doivent être recalculé

Cette routine calcul les stats d'un pokémon à l'aide des 80 bytes qui définissent un pokémon, elle modifie les 20 bytes suivant ces 80 bytes pour leur affecter la bonne valeur. Cf ce lien si vous voyez pas de quoi je parle.

MoveBytes: 0x09FA06
Spoiler
Entrer:
r0: destination
r1: depart
r2: nombre de bytes à copier

ExecScript: 0x069B94
Spoiler
Entrer:
r0: offset du script

Number2Caract: 0x008DE4
Spoiler
Entrer:
r0: adresse où seront stocker les caractères
r1: nombre
r2: index
r3: nombre de caractères maximum

index:
0 =  normal (par exemple 324 sera affiché "324"
1 = respect du nombre de caractère avec espace (donc si r3 = 4 alors 324 sera affiché " 324", noté l'espace avant le 3)
2 = respect du nombre de caractère avec 0 (donc si r3 = 4 alors 324 sera affiché "0324")

Ok il n'y en à pas beaucoup, mais le but c'est pas de chercher le plus de routines possible mais de donner celle dont on à eu besoin, alors si vous en avez vous aussi partagé les, je mettrais le post à jour.
« Modifié: 30 août 2014, 20:37 par Unifag »

Arnik

  • Membre
  • 1812 posts
29 août 2014, 22:02
Super, ça me sera utile !

yago58

  • Invité
29 août 2014, 22:06
Tu veux que je trouve les donnés pour les version nds ?

Unifag

  • Membre
  • 883 posts
30 août 2014, 01:06
Wait? Tu comprend l'ASM?
Parce-que je crois pas que les données dont tu parle soit similaire, la c'est pas quelque-chose qu'on peut utiliser sans l'ASM. Mais si vraiment t'a des données similaire je veux bien :)
D'ailleurs j'ajouterais des DMA aussi, parce-que c'est utile ;)

Mickey`

  • Membre
  • 2746 posts
30 août 2014, 11:14
T'es au top Uni ! Faut que je te vois sur Skype d'ailleurs.

Pages: [1]    En haut ↑