[Help][gba] Augmenter la taille du pokedex

Pages: [1]

Edwearth

  • Membre
  • 37 posts
04 mai 2014, 01:19
Bonjour (ou bonsoir) à tous !

Je débute juste en rom-hacking et j'en suis à ma phase de test et de bidouille pour apprendre.

Mon "problème" est que j'aurais voulu augmenter la capacité du dex. Dans le but d'ajouter de nouveaux pokemon sans en supprimer, et en avoir plus que le nombre maximal. (augmenter pour pouvoir augmenter, merci Captain Obvious !)

Je suis tombé sur ce tuto : ici

Il a l'air plutôt complet. Je n'ai pas de difficultés particulières en Anglais, mais là j'ai quand même du mal à comprendre.
Si quelqu'un qui maîtrise pouvait faire un mini-tuto ou juste donner une explication, ça serait vraiment sympa !

hremeraude

  • Membre
  • 11384 posts
04 mai 2014, 12:57
Ben tu prends emeraude US et HxD et c'est très bien expliqué...

Mickey`

  • Membre
  • 2746 posts
04 mai 2014, 19:57
Citer
A solid understanding of hacking concepts. I won't be teaching you how to use a hex editor, or how to repoint things.

Effectivement, comme il est dit, il te faut des bases dans la compréhension de l'écriture hexadécimale et du fonctionnement de celle-ci. Sans ces connaissances, il est difficile de suivre un tutoriel comme celui-ci.

Si je peux t'aider, il faut que tu fasses la même chose que dans le tuto, la seule différence réside dans le fait que les offsets à repointer ou à modifier ne seront pas les mêmes. C'est à toi de les trouver, en comparant les données inscrites aux offsets US avec celles d'une ROM française. C'est assez fastidieux, mais il n'y a pas d'autre moyen avec tes connaissances...

Edwearth

  • Membre
  • 37 posts
04 mai 2014, 22:29
Ok très bien merci, ça m'a vraiment pas l'air simple alors je regarderai ça en fin de semaine

Sinon je pense qu'un tuto là-dessus ferait un carton :)

Mickey`

  • Membre
  • 2746 posts
04 mai 2014, 22:56
Ouais mais bon, ça s'adresse vraiment à une minorité étant donné que c'est assez complexe à capter et qu'il faut pas mal de connaissances derrière. Donc, si c'est pour que le tuto tombe rapidement aux oubliettes...

hremeraude

  • Membre
  • 11384 posts
04 mai 2014, 23:09
dommage qu'ils balancent pas les offset pour rouge feu us j'aurais testé sinon

Baitot

  • Membre
  • 491 posts
05 mai 2014, 11:53
http://www.pokecommunity.com/showthread.php?t=318569
http://www.pokecommunity.com/showthread.php?t=320113

3 possibilités :
- Tu cherches les offsets et t'adaptes le JPAN Save Block pour un rom FR et tu suis le tuto.
- Tu cherches les offsets pour un rom FR et tu les adaptes au fichier .ini du logiciel.
- Tu cherches tout par toi-même.

En plus Emeraude est beaucoup plus complexe (Selon moi, Emeraude 50% plus complexe et Rubis/Saphir 200%) dans le rh, donc si quelque chose existe sur Emeraude, y a de nombreuses chances pour que ce soit fait sur Fire Red.

Edwearth

  • Membre
  • 37 posts
05 mai 2014, 21:53
Ouais mais bon, ça s'adresse vraiment à une minorité étant donné que c'est assez complexe à capter et qu'il faut pas mal de connaissances derrière. Donc, si c'est pour que le tuto tombe rapidement aux oubliettes...

Pas si sûr, si le tuto est assez simple pour être suivi à la lettre sans se poser de question, le lecteur peut apprendre progressivement au fil de la lecture. En plus je pense que la demande est assez "importante".
'fin bon je comprend tout à fait que faire un tuto c'est du boulot, donc la flemme ^^

Edwearth

  • Membre
  • 37 posts
06 mai 2014, 17:54
Bon pour en revenir au sujet principal, j'ai presque réussi l'étape 1...

0x152E98 correspond à 0x152B64
0x15284E correspond à 0x15251A
0x15288C correspond à 0x152558
0x0D9CC6 correspond à 0x0D993E
0x0D9D04 correspond à 0x0D997C
0x0DA284 correspond à 0x0DA5B8 <-- c'est ici je pense qu'est l'erreur, l'offset ne correspond surement pas. mais lequel ?
0x5CDC00 correspond à 0x5D20FC

Si quelqu'un qui gère bien le tout peut jeter un rapide coup d'oeil, ça serait sympa
Merci

Mickey`

  • Membre
  • 2746 posts
06 mai 2014, 19:02
Je suis d'accord avec tous tes offsets, sauf avec celui que tu as mentionné. Je pense plutôt à l'offset 0x0DA03C, mais je ne suis vraiment pas certain, il y a pas mal de possibilités...

Edwearth

  • Membre
  • 37 posts
06 mai 2014, 19:44
Merci d'avoir répondu aussi rapidement ! :)
J'ai essayé de faire sans cette offset, histoire de voir comment le jeu allait réagir. Ca démarre par un message qui indique que la sauvegarde a été effacé. Et dans le jeu, impossibilité de sauvegarder. Pareil avec l'offset que tu m'as indiqué.
Est-ce normal ? (après ça se reglera avec la suite du tuto ?)
Je vais essayer avec d'autres offset dans la foulée

Edit : Bon ok maintenant après l'affichage de nintendo sur fond noir, ben j'ai plus que le fond noir...
Edit2 : Peut être qu'il y a aussi un conflit lorsque l'on copie la "save size table"...
« Modifié: 06 mai 2014, 22:45 par Edwearth »

Baitot

  • Membre
  • 491 posts
07 mai 2014, 10:53
Personnellement comme Mickey', je suis d'accord avec tous tes offsets mais pas 0x0DA284 ; j'ai trouvé 0x0D9EFC et je suis quasiment sûr de cet offset.
Ensuite, oui, il faut modifier le Save Block mais pas les modifications que t'apporte à la taille des Pokémon vus/capturés (Le "save size table"). Y a juste 2 petits pointeurs servant en ldr qui faut modifier. Si tu veux le code, tiens :
21 68 FF 23 1B 01 5B 18 98 88 00 28 09 D0 04 28 0A D0 0D 28 0C D0 0D 2D 1C DD 01 20 08 BC 98 46 F0 BD C4 21 08 4A 06 E0 8E 21 89 00 07 4A 02 E0 BA 21 09 01 06 4A 04 3B 18 68 10 60 04 3A 04 39 00 29 F8 D1 E7 E7 C0 46 C0 D8 03 02 F8 DA 03 02 98 E6 03 02 00 48 00 47 2D 2E 15 08 FF FF FF FF FF 27 3F 01 CF 19 F8 80 BE 88 00 2E 08 D0 04 2E 09 D0 0D 2E 0B D0 00 00 00 48 00 47 53 28 15 08 C4 23 08 4A 06 E0 8E 23 9B 00 07 4A 02 E0 BA 23 1B 01 06 4A 04 3F 10 68 38 60 04 3A 04 3B 00 2B F8 D1 E9 E7 C0 D8 03 02 F8 DA 03 02 98 E6 03 02
Pour finir, c'est tout à fait normal que ton ancienne sauvegarde s'efface car, tu modifies la taille des Pokémon que tu as vus/capturés ce qui provoque un bug qui s'autocorrige en supprimant la sauvegarde. Cependant, quand t'auras fini l'étape 2, si tu recommences une partie avec cette rom et que tu sauvegardes, ça devrait fonctionner car les données des Pokémon vus/capturés sont refaites automatiquement (enfin, pas vraiment) dans la nouvelle sauvegarde.
« Modifié: 07 mai 2014, 10:57 par Baitot »

Edwearth

  • Membre
  • 37 posts
07 mai 2014, 15:03
Merci beaucoup !
Bon j'ai (enfin) fini l'étape une !
Par contre j'ai l'écran noir après l"affichage du "nintendo" sur fond noir...
Et je ne comprends pas bien ce qu'est un flag pour les "SEEN flags" et les "CAUGHT flags". Enfin plutôt, où se trouvent-ils en vanilla, et devrai-je placer les nouveaux ?

Encore une fois, merci.

Baitot

  • Membre
  • 491 posts
07 mai 2014, 18:53
Pour ton écran noir, compare ta rom avec une rom clean d'Émeraude. Regarde bien si t'as pas modifié quelque chose qui n'était pas demandé.
Sinon, les flags des Pokémon vus/capturés ce sont les données qui permettent au jeu de se rappeler si t'as vu ou capturé tel ou tel autre Pokémon.
Sans modification, il y a une limite à ces données. Donc, il faut que tu déplaces et agrandisses ses données pour pouvoir savoir si t'as capturé ou vu un Pokémon que t'ajouteras (= la partie la plus difficile).
C'est utile car sans ça, tu peux pas afficher un Pokémon dans le dex.
En fait, le Save Block va libérer un espace (d'où son nom) et cet espace libéré servira à placer les nouveaux et anciens Pokémon vus/capturés.
« Modifié: 07 mai 2014, 18:55 par Baitot »

Edwearth

  • Membre
  • 37 posts
07 mai 2014, 20:22
Merci Baitot !
Voici mon fichier, j'ai checké, mais n'ai pas trouvé où se trouvait l'erreur...
Si tu veux bien jeter un p'tit coup d'oeil
Le Flags correspondent donc à des offset particuliers ?

Baitot

  • Membre
  • 491 posts
07 mai 2014, 20:56
Oui, les Pokémon vus/capturés se situent à l'offset IRAM 300500C (Ancienne recherche de Jambo). Enfin, 300500C c'est la "base".
Si tu veux une explication plus approfondie (car ça sert à rien que je répète la même chose que lui), voici un lien : http://www.pokecommunity.com/showthread.php?t=249530
C'est le spoil "Seen/Caught Flags".

Sinon, au niveau de la rom, t'as fait des erreurs au niveau de tous les pointeurs. T'as soit mal pointé (j'sais plus ce que t'as mis exactement mais t'avais écrit XX XX 51 08 au lieu de XX XX 61 08) ou soit t'as confondu le Save Block avec le Save Size Table. Sinon, c'est bon.
J'ai aussi fait une erreur sur le Save Block que j'ai envoyé ; je t'ai donné le mauvais (celui de base).

Si tu veux le lien de la rom corrigé : http://up.levert.ch/60cb2d-PokemonVersionEmeraude.gba
« Modifié: 07 mai 2014, 20:58 par Baitot »

Edwearth

  • Membre
  • 37 posts
08 mai 2014, 00:03
Excellent merci !

Qu'est-ce qu'un offset IRAM ? (un offset qui gère les données dans la RAM ?) Comment y accède-t-on ?
J'ai surement dû inverser le save block et le save size table...

(Chose étrange : j'ai un écran blanc avec VBA (j'ai bien coché 128 pour la memoire) mais ça marche avec no$gba et gameboid)
Mais bon ça c'est très secondaire.

Je dois un peu te soûler avec mes questions (et c'est pas fini) mais je découvre petit à petit, donc encore merci

Baitot

  • Membre
  • 491 posts
08 mai 2014, 11:00
Oui, ça fait partie de la RAM et tu peux le voir avec le Memory Viewer de VBA ou No$GBA Debugger, par exemple, mais c'est pas vraiment important.
Pour ton problème avec VBA, supprime la sauvegarde, peut-être ça pourrait marcher.

PS: Et ça sert à rien de me remercier, hein.

Edwearth

  • Membre
  • 37 posts
08 mai 2014, 14:40
Ok le petit souci avec VBA, c'est du passé.

donc pour "C06EC: point to new SEEN flags" je peux mettre un offset de libre que je veux à la place du "new SEEN flags" ?
Je vois pas bien comment je peux augmenter la longueur de la liste des seen et caught. (Enfin si ! En suivant le tuto...)

Une question en passant : les codes ar, ça modifie la ram en fait ?

Baitot

  • Membre
  • 491 posts
08 mai 2014, 15:19
Oui, faut mettre un espace inutilisé dans la RAM mais y en a presque pas, voir pas. C'est à ça que sert le Save Block. Il va libérer de la place pour ensuite placer les flags.
Donc faut que tu mettes l'offset que le Save Block à libérer. Si tu vois pas ce que tu dois mettre, lis ça : 
Citer
In all honesty the only area I’m 100% sure of is safe to use for the new dex flags is 0203D800. So we are going to use that area.
Citer
I used 0203D800 for the SEEN flags and 0203D860 for the CAUGHT flags.

Pour les codes AR, oui ça modifie la RAM de la GBA. Lien plus complet : http://www.pokepedia.fr/index.php/Action_Replay

Edit: Mauvais lien.
« Modifié: 08 mai 2014, 15:40 par Baitot »

Edwearth

  • Membre
  • 37 posts
09 mai 2014, 17:52
Ok cool, je pense avoir compris comment je dois faire.
Je regarde rapidement mais comme j'ai des concours, je te répondrai que demain soir ou dimanche

Edit :
US            FR

C06EC --> C04D0
C06AC --> C0490
C0702 --> C04E6

C0744 --> 1B688 <-- erreur
C06FE --> C04E2
C0700 --> C04E4
C0702 --> C04E6 <-- bizarre
C0710 --> C04F4

C0720 --> C0504
C07C8 --> C0528
C079E --> C0582
C07A0 --> C0584
C07AC --> C0590

C07F0 --> C05D4
C07DA --> C05BE
C07DC --> C05C0

8439A --> 8438A

Pour la suite je verrai après.
« Modifié: 09 mai 2014, 22:14 par Edwearth »

Baitot

  • Membre
  • 491 posts
10 mai 2014, 13:26
Pour C0744, c'est C0528.
Pour C0702, c'est bien ce que t'as mis. Mais je comprends pas pourquoi t'as mis deux fois "C0702 --> C04E6".

Edwearth

  • Membre
  • 37 posts
10 mai 2014, 19:18
Surement parce que j'était fatigué :)

Edit : Petite erreur :

US            FR

C07C8 --> C05AC (et pas C0528, si tu ne t'es pas trompé :))

Edit 2 : La suite :

US            FR

843A0 --> DAA5E4 <-- C'est pas ça !!
843A6 --> 843B6
843A8 --> 843B8
843AC --> 843BC

Pour XX et YY. Admettons que je veuille 1000 entrées dans le dex, XX = 1000/8 = 125 ??? YY = XX (pour pas se compliquer?)
« Modifié: 12 mai 2014, 20:53 par Edwearth »

Edwearth

  • Membre
  • 37 posts
13 mai 2014, 23:56
Je me permet un petit double post, histoire de up. Je ne sais pas si ça up lorsque j'édit un ancien message. Voilà

Baitot

  • Membre
  • 491 posts
21 mai 2014, 14:02
(Désolé pour le retard)
Pour XX, oui c'est bien 125 mais attention, faut que ce soit en hex (soit 7D).
Pour "YY is probably the same as XX, but it doesn't have to be".

Ensuite, 843A0 -> 843B0 et C07C8 -> C0A58.
Ah et pour C0744, j'ai vérifié mais je me suis trompé --', c'est C09D4.

Pages: [1]    En haut ↑