Informations generals sur le scripting

Pages: [1]

Arthy

  • Membre
  • 8 posts
10 octobre 2018, 19:18
Bonjour a tous,

Je me lance depuis peu dans un projet de ROM Hacking d'un jeu pokemon et j'aurai besoin de quelques informations:

- J'ai lu pas mal de tutoriels disponible sur PokemonTrash, et deja je ne vois aucun tutoriel sur GBC, seulement a partir de GBA (Est ce que le Rom Hacking est identique vu de la comptabilite entre les deux ?) Je souhaiterais partir sur une version Rouge ou Bleu, peu importe la langue.

- J'ai vu que beaucoup de tutoriel parlent de logiciel pre-fait pour modifier de simple fichier de configurations (stats, pokemons, dresseurs, etc..) et que la suite se fait en scripting. Je ne connais pas ce domain mais je n'ai pas vraiment peur pour la partie code (etant programmeur de metier), je voudrais juste savoir si c'est envisageable de changer quelques mechaniques, ou si le travail est insurmontable pour un projet amateur ?

Pour donner quelques exemples (et peu etre par chance trouver quelqu'un qui connait deja) je voudrais pouvoir scripter quand :
 - le player utilise le pokecenter
 - un pokemon perd de la vie
 - un pokemon gagne un level
 - ...

Je rassure tout le monde, et je n'ai pas l'intention de changer toutes les mechaniques du jeu pour refaire un nouveau pokemon, je reste conscient de la charge de travail, je souhaiterais faire 4 a 5 modifications du genre "Une fuite d'un combat de dresseur n'est plus interdit, mais fait perdre 500$", etc..

Si quelqu'un aurait des tips pour "comment commencer a scripter" (ou trouver le trigger a changer dans le script..) je suis preneur :)

Merci a tous pour votre aide
 
« Modifié: 10 octobre 2018, 19:25 par Arthy »

yushi56

  • Membre
  • 298 posts
10 octobre 2018, 20:35
De base tout ce que tu dis est possible, vu que c'est de la prog.
Après le hackrom Gb et non Gba, il y a eu moins de travaux dessus donc moins de ressources/logiciels.

Sur trash, il me semble qu'il n'y a d'ailleurs pas de tutos pour le gb :)
Par contre, à ma connaissance, il y a Pokémon Legendary qui a des ressources pour le gb (logiciel donc). Cependant, je n'ai pas vu de tuto non plus sur ce site.
Donc pour les tutos va falloir que tu ailles très probablement sur des sites de hacking anglophones ^^.

Après dans les modifs que tu voudrais faire, j'ai l'impression que tu fonces dans quelques d'assez ardu.

mais comme tu ne dis pas ce que tu veux faire :p Je pourrais vraiment te dire si c'est facile ou non.

Pour la fuite d'un combat dresseur, ça doit pas être compliqué.
Tu regardes ce que fais le script quand tu essayes de fuir du combat, et tu lui dis de faire en sorte que c'est une défaite plutôt que de l'empêcher de fuir.

Problème, tu n'as pas battu le dresseur et tu es toujours devant lui à la fin du combat. Il va donc probablement relancer le combat ^^

Enfin bref touché, on mécanisme du jeu me parait assez casse-tête :p

XLuma

  • Membre
  • 2 posts
10 octobre 2018, 21:28
Va faire un tour sur le forum de Pokécommunity dans les sections rom hacking / game developpement, ya plusieurs topics sur le scripting
Ils ont aussi un discord si tu veux poser directement tes questions

Mickey`

  • Membre
  • 2746 posts
11 octobre 2018, 15:40
Salut,

Je réponds pour donner quelques précisions :

- Le support le plus développé est le GBA, et de loin. Il permet d'avoir un rendu très correct et offre des fonctionnalités déjà très étendues (je ne dis pas que c'est facile à faire pour débuter). Le NDS est bien sûr beaucoup plus "puissant", mais aussi plus complexe, notamment pour l'édition des maps (on n'utilise plus de simples images mais des textures), ce qui fait que le RH dans ce domaine est bien moins avancé. Le GB, sûrement "à cause" du GBA, a été moins développé car il n'offre pas grand chose. Tu auras plus de ressources GB sur le site Pokecommunity.

- Il n'y a pas de "fichier de configuration" dans le GBA, tout est écrit dans le même fichier. Cette petite précision faite, il y a en effet un très grand nombre de logiciels déjà existants pour GBA, qui peuvent éditer à peu près tout, que ce soit des maps, des scripts, ou des données diverses. "La suite se fait en scripting", oui et non. Il existe plusieurs logiciels de scripting, le plus connu étant XSE, qui te permettent de faire des scripts pour ton histoire et tes PNJ. Il y a deux tutos ici qui te permettront largement d'avoir les bases. Si tu es en plus programmeur, tu ne devrais pas avoir de soucis pour comprendre la doc de XSE et donc pousser tes scripts plus loin ;)

- En revanche, pour tes idées et "le reste", il te faudra modifier le jeu directement au niveau assembleur. C'est ce qui est le plus complexe, mais c'est ce qui te permettra de faire absolument ce que tu veux (dans la limite de ce que peut offrir le GBA). Par exemple, le centre Pokémon est un script, c'est donc facilement modifiable. En revanche, tu devras modifier les routines ASM de perte de PV ou de montée de niveau pour pouvoir écrire ton propre code.

J'espère avoir pu t'aider, n'hésite pas si tu as des questions. Essaie d'utiliser le topic d'aide la prochaine fois, merci.

Arthy

  • Membre
  • 8 posts
12 octobre 2018, 03:10
Alors deja un grand merci a vous 3 pour la rapidite et qualite de vos reponses.

Alors point par point:

yushi56, pour ce qui est de la partie anglophone ce n'est pas un soucis, j'ai du apprendre il y a bien longtemps la langue pour cette exact raison ^^ 90% des formes d'apprentissage pour la programation est en anglais donc je comprend, apres je cherche surtout des liens (ou groupe Discord, merci XLuma) car je ne connais rien dans le domain et PokemonTrash est celui avec la plus grosse communaute :p

Je suis vraiment content que tu ais parler du probleme au niveau de la fuite du dresseur (ou le player va retomber devant) et j'avais une sous question la dessus, je pensais a la base utiliser la fonction "classique" du jeu qui permet de retourner au dernier centre pokemon utiliser. Est ce que le Rom Hack permet d'utiliser des "function" comme dans d'autre langage ou c'est uniquement des modifications de GOTO en hexa a effectuer ?

 Mickey`je comprend bien que plus les jeux deviennent complexe, plus le code derriere sera evolue. J'ai deja coder plusieurs jeux video donc aucun problemes du cote des principes (tilset, map, textures, ...), mais j'ai aussi eu a faire du deassemblage pour faire des modifications dans l'hexa et connaissant, je ne me vois pas faire ca pour changer toutes les mechaniques du jeu :/

Je vais regarder vos liens dans un premier temps et faire mes premiers tentatives :)

Merci encore pour votre aide !

Arthy

  • Membre
  • 8 posts
12 octobre 2018, 20:04
Je me permet de renvoyer une reponse vu que je viens de faire des tutoriels et que je comprend mieux vos reponses :)

J'ai reussi a faire de simple changement de textes grace au tutoriel sur ce site. J'ai aussi regarde le script de la meuf dans le PokeCenter qui n'est pas si complique que ca a comprendre mais j'ai quelques questions:

- J'ai note que le jeu parle souvent de function tel que `special`, `special2`, `compare` (qui n'est pas un `if` classique car le `if` exist aussi), `copyvar`, ...Je n'ai trouve nul part de documentation ou de tutoriel qui list et donne leur effet ?
 
- J'ai aussi vu qu'on parle souvent d'address (?) comme `0x800D` ou `0x169`, J'imagine que la fonction de Heal des pokemon est une de ces fonctions ?! Y a t'il moyen d'acceder a ces scripts ?

- Dans le meme genre, Mickey` tu me parlais de `routines ASM`. Est ce que c'est le meme genre ?? Et je ne vois pas comment y acceder depuis XSE ou Advance Map.

Merci a tous :)

Mickey`

  • Membre
  • 2746 posts
12 octobre 2018, 22:23
Bonsoir,

- Les commandes special(2) peuvent être perçues comme des fonctions déjà implémentées dans le jeu. Par exemple, special 0x0 soignera ton équipe. Il y a dans le jeu une table qui contient les adresses mémoires de toutes les "fonctions" pouvant être appelées avec la commande special. On ne les connaît toujours pas toutes aujourd'hui.
Tu peux en revanche créer tes propres "fonctions" à l'aide de scripts : il suffit de compiler ton script à un offset, et appeler cet offset depuis d'autres scripts via la commande call. On retrouve ainsi l'idée d'une fonction, mais on reste assez éloigné de ça (on peut difficilement passer des paramètres ou retourner quelque chose).
Pour faire simple, les scripts GBA se rapprochent un peu d'un code assembleur dans le sens où tout fonctionne plus ou moins sur des labels (qui sont représentés directement par les offsets que tu choisiras).
Comme je te l'ai dit, une très grande majorité des fonctions existantes ont été référencées et sont disponibles dans l'aide de XSE (disponible avec F1).

- Ne pas confondre adresses mémoires (offsets) et valeurs hexadécimales qui ne sont pas des adresses ! Une adresse est codée sur 4 octets (32 bits), c'est par exemple ce que tu utilises dans call 0x08C00000. En revanche, toutes les commandes de scripts ou presque prennent des arguments, qui sont passés sous forme hexadécimale (par convention seulement). Par exemple, setweather 0xA.
A noter que les valeurs comme 0x4000+, 0x8000+ sont les variables utilisables dans le jeu. Par exemple, 0x800D est la variable connue sous le nom de "LASTRESULT", et, comme son nom l'indique, contiendra souvent le résultat des fonctions appelées.

- Du coup, si tu as fait de l'assembleur, ça ne devrait pas te poser de problèmes de comprendre comment fonctionne le jeu. Il faut bien garder en tête que tout ce qui va être de l'ordre de interaction avec les éléments d'une map va être fait à l'aide des scripts, mais que tout le reste ne pourra être fait qu'en modifiant/ajoutant des routines ASM. Impossible d'y accéder depuis XSE ou AM, il te faut décompiler le jeu. Un debugger te sera très utile, mais je te conseille de commencer par des choses plus simples.

:)

Arthy

  • Membre
  • 8 posts
12 octobre 2018, 22:41
Mickey`encore milles merci.

Je suis en train de faire mes premieres modifications sur la ROM grace au different tutoriel et tu ne fais que confirmer et eclairsir ce que je comprend.

Merci pour l'aide F1 ;) Je cherchais sur le net et je ne trouvais rien. C'est vraiment utils :)

Pour les tables de fonctions et de variables, y a t il un site qui les listes toutes par version ?

Merci encore

Weby

  • Membre
  • 56564 posts
13 octobre 2018, 08:21
generals
utils
eclairsir
domain
exact
utiliser
deassemblage
list
address
milles


Mon dieu.

Arthy

  • Membre
  • 8 posts
14 octobre 2018, 20:09
Weby désolé pour les quelques fautes et les anglicismes. Et j'ai un clavier QWERTY donc aucun accents.

Par contre je ne me permettrai pas de faire ce genre de reflexion sur ce forum vu le nombre de fautes dans toutes les pages du site.

Guitoh

  • Membre
  • 5981 posts
14 octobre 2018, 20:20
weby n'a rien à voir avec la rédaction des articles, et ça serait bien plus constructif si on nous les remontait ces fautes, les articles sont vieux et on peut pas se permettre de tout relire

Arthy

  • Membre
  • 8 posts
14 octobre 2018, 21:13
Je sais que je fais de nombreuses fautes, ca a toujours ete un probleme pour moi et j'essaye pourtant de faire au mieux.
Mon message etait plus sur la forme, il y a des facons de dire les choses.

Arthy

  • Membre
  • 8 posts
14 octobre 2018, 21:26
Je pense que le sujet peut etre ferme :)
J'ai recu bien assez de reponses et je remerci encore tout le monde !

Weby

  • Membre
  • 56564 posts
15 octobre 2018, 05:34
J'ai un clavier QWERTZ également, pourtant, tu ne me vois pas écrire sans accents.

Ne cherche pas d'excuses, améliore-toi ou accepte que tu écris comme une merde, avec toutes les conséquences que cela impliquera dans ta vie.

Arthy

  • Membre
  • 8 posts
15 octobre 2018, 22:31
Je fais des erreurs et mais je pensais pourtant avoir ete claire. Je suis au courant de mes problemes de francais et je fais pourtant des efforts, je ne cherchais pas a dire que ces erreurs ne venaient pas de moi, mais de la forme de ton message.
Bref. Le sujet n'etant pas la, et le sujet non interessant, ce n'est pas la peine de continuer dessus.

Pages: [1]    En haut ↑