Topic d'aide en tout genre Rom-hacking

Pages: 1 ... 54 55 56 57 58 [59] 60 61 62 63 64 ... 291

Myst

  • Membre
  • 1870 posts
08 mai 2013, 10:24
Bonsoir,

le type d'écriture de la hack rom sur laquelle je bosse écrit les é/è/ç/à.... de manière disproportionné aux autres caractères.

Normal.

Bonjour,

je suis nouveau dans le monde du rom hacking et j'ai un léger soucis.

J'ai suivi un tuto et j'ai pas très bien compris comment assigner un script à un personnage créer.

J'ai également un autre problème, lorsque je termine d'éditer les paroles de certain personnage, après compilation des modifications, certains textes se transformé en "a". j'Utilise XSE et advanced map.

Merci pour votre aide.

Alors, le 1er truc a faire, c'est trouver un offset libre avec fsf (ou en manuel avec un éditeur hexa), la valeur de l'octet dépendant du nombre de caractère de ton script+des commandes utilisés.

XSE > F1


Mais bon, en principe, tu prends du "a peu près", genre 1000 ou 2000 pour assurer, de toute façon, les octets non utilisées par le script restent libres, et ne sont donc pas perdus.

Bref ca c’était pour trouver l' offset principal de ton script, et tu vas faire comme ci-dessous:

1/ Trouver un offset libre:
Spoiler

2/ Assigner l'offset libre avec a-map:
Spoiler

Donc pour l'instant, t'as juste assigné un offset vide à un personnage, faut donc le "remplir" avec le script de ton choix.
Sachant qu'un message simple a un pnj est souvent sous la forme:

#org 0xoffset1
lock
msgbox 0x8offset2 msg_face
release
end

'---------------
'strings
'---------------

#org 0xoffset2
= Ton message.

Il te faut donc un 2eme offset de libre, mais le truc, c'est que comme t'as pas compilé ton script une première fois, donc pas écris tes données, si tu relances une recherche classique avec fsf, tu vas retomber sur ton offset principal, logique.
Donc cette fois ci, pour ton 2eme offset, tu vas sur, fsf, tu modifie l'intervalle de recherche en fonction de ton script précédent (genre ici, on va le chercher 1000 octets plus loin que le 1er, donc on empiète pas dessus logiquement:
Spoiler
Spoiler

Pour ton test en "a" t'as du mal choisir tes offsets, donc avec ce que j'ai dit précédemment ça devrait aller.
Voila j’espère avoir été clair, sinon hésite pas a me faire savoir ou tu bloques.
« Modifié: 08 mai 2013, 11:46 par Myst »

tonanus

  • Membre
  • 177 posts
08 mai 2013, 10:44
@Myst: Ce que tu as écrit la devrait être integré dans le tutoriel de Sainior, c'est super bien expliqué et ca permet de faciliter la compréhension du repointage

Juste comme ca, on a moyen d'anticiper la taille en octet d'un script histoire de mieux organiser sa gestion de mémoire en pointant les offset ?
Je suis pas encore familiarisé au système, mais si je comprends bien, si on part du principe que le script1 ne fait pas 1Mo et que tu repointes quand même 1Mo après, ou bien quand tu réutiliseras FSF il te repointera sur un offset qui n'aura peut-être pas assez de place avant d'empieter sur celui repointé en script 2, ou bien FSF repointera vers un offset plus loin, et dans ces cas-la, y'aura des octets non-utilisés pour un rien.

Myst

  • Membre
  • 1870 posts
08 mai 2013, 11:25
Ouah, j'ai pas tout bien saisi.
Mais de ce que j'ai compris, oui tu peux anticiper en comptant les caracs, mais c'est chiant et ca sert pas a grand chose, vaut mieux ratisser large, de toute facon, les octets non utilises ne sont pas foutus, ils restent FF, donc pourront être utilisé de toute façon, même si ils sont peu, genre pour les "petits" repointages comme les events par exemple.
Et FSF ne repointe pas, il donne juste des offsets libres. Mais techniquement, il n'empiète pas sur des octets deja utilisé, hormis dans le cas d'une recherche de plusieurs octets simultanés comme ci-dessus, où il fait faire gaffe "manuellement" a pas faire de "mélange".

tonanus

  • Membre
  • 177 posts
08 mai 2013, 11:32
En fait si tu as compris, désolé si ca paraissait pas fluide

Donc dans les cas-la le meilleur moyen pour les réutiliser ce serait que tous les ( en me basant sur ton tutoriel juste au-dessus ) offset1 soient les "petits" repointages ?

steakfrite

  • Membre
  • 842 posts
08 mai 2013, 11:35
XSE > F1

Tu auras la liste complète des commandes utilisable ainsi que leurs tailles en octet(s)...
Mais bon je déconseille vraiment de travailler avec des approximations

Myst

  • Membre
  • 1870 posts
08 mai 2013, 11:41
Pour ce genre de script, ouais pourquoi pas il est court, mais genre dans la semaine, j'me suis tapé des script de 150/200 lignes, donc la, faut quand même nettement plus de place, et crois moi, c'est pas une longueur si rare que ca quand tu fais des trucs un peu poussés.

Mais vraiment, te préoccupe pas de l'espace disponible, ni des octets inutilisés au début, fais juste en sorte que tout marche. Donc personnellement, je te conseillerai de toujours prendre plus grand pour assurer un maximum (sachant que même en prenant toutes les précautions nécessaires, de temps en temps ca va merder).

Si t'as d'autres questions, je suis dispo a te répondre.

Edit:
XSE > F1

Tu auras la liste complète des commandes utilisable ainsi que leurs tailles en octet(s)...
Mais bon je déconseille vraiment de travailler avec des approximations

Oui.

Badis-Dz

  • Membre
  • 5 posts
08 mai 2013, 13:48
Premièrement, explications vraiment superbes. Je t'en remercie.

Deuxiement, ceci m'a aider mais pourquoi tu a mis 8000000 dans FSF?


Ensuite au niveau de l'insertion du offset on doit faire comme ca (regarde au niveau d premier #org) :

#org 0x8000C0
lock
msgbox 0x8offset2 msg_face
release
end

'---------------
'strings
'---------------

#org 0xoffset2
= Ton message.



Merci encore pour le contenu proposé.

steakfrite

  • Membre
  • 842 posts
08 mai 2013, 14:09
XSE peut attribuer les offset adéquat de façon automatique, en utilisant le caractère "@"
#dynamic 0x800000

#org @start
lock
msgbox @msg 0x3
release
end

#org @msg
= Ton message

Sinon tu es obliger d'attribuer manuellement un offset à chaque nouvelle commande, ce qui assez barbant selon moi...
Pourquoi l'offset 800000 et pas un autre ? Parce qu'il me semble que c'est approximativement l'emplacement où les données de la rom s'achève, c'est donc l'endroit où il y a le maximum d’espace libre (les "FF" si tu visualise ta rom via un éditeur hexa)

Badis-Dz

  • Membre
  • 5 posts
08 mai 2013, 14:22
Merci pour tes réponses, j'ai justement vu un tuto à propos de trouvez de l'espace libre. J'ai également étendu la longeur de ma ROM à 32MB.

Quand tu dit qu'XSE peut attribuer les offset adéquation automatiquement, tu voudrait dire qu'il suffirait de simplement trouver l'emplacement où les données de la rom s'achève et il trouvera un offset automatiquement????

Merci encore.

tonanus

  • Membre
  • 177 posts
08 mai 2013, 14:31
Merci a vous pour les réponses bien expliquées.
Myst, par des manipulations complexes, tu penses qu'on peut réussir avec XSE a retravailler la mechanique du jeu en travaillant par exemple sur des event qui se declencheraient en combat ? De ce que j'ai vu des scripts GBA ca semble impossible en simple bidouillage, mais on peut éditer le système de combat ou est-ce qu'il faudrait le rescripter entièrement ? J'aimerais vraiment rompre avec le tour par tour simple dans certains matchs importants, et essayer de rajouter des facteurs temps comme des effets au bout d'un certain nombre de tours de jeu, ou lorsqu'un pokémon bien précis est lowlife, etc, ca pourrait rajouter un peu de valeur et si cela n'est pas faisable via XSE ca va être trèèès long a faire

Unifag

  • Membre
  • 883 posts
08 mai 2013, 14:39
Non ce n'est malheureusement pas faisable avec XSE et toucher au système de combat serait extrêmement compliqué. Donc si tu te lance la dedans la route risque d'être longue, très longue.

Commence par bien assimilés les bases en hexa et éventuellement plus avant de te lancer la dedans.

HS: D'ailleurs tu viens de me donner envie de chercher à comprendre le combat où on nous montre comment capturer un pokemon.

tonanus

  • Membre
  • 177 posts
08 mai 2013, 15:03
C'est dans ces moments-la qu'on se dit que quand même, rpg maker + psp et modifier le tout en ruby = Solution so easy

yago58

  • Invité
08 mai 2013, 15:06
Mouais, encore faut t'il savoir utiliser rpg maker correctement.

steakfrite

  • Membre
  • 842 posts
08 mai 2013, 15:11
Merci pour tes réponses, j'ai justement vu un tuto à propos de trouvez de l'espace libre. J'ai également étendu la longeur de ma ROM à 32MB.

Quand tu dit qu'XSE peut attribuer les offset adéquation automatiquement, tu voudrait dire qu'il suffirait de simplement trouver l'emplacement où les données de la rom s'achève et il trouvera un offset automatiquement????

Merci encore.

16MB est plus que raisonnable, à moins que tu lances dans un projet comprenant 2 regions, un max de script etc...
En faite le "@" indique au logiciel que c'est un pointeur, pour que ça fonctionne correctement le nom d'un pointeur ne doit pas être identique à un autre de plus les espaces ne sont pas pris en charge.
Donc si tu veux réaliser 2 dialogues dans un même script il faudra nécessairement écrire les commandes ainsi:

msgbox @msg msg_face
msgbox @msgbis msg_face

Ensuite, pour répondre à ta question tu remarqueras, qu'au début de chaque script, il y a une ligne introductive

#dynamic 0x800000

Cette ligne a une fonction précise, celle d'indiqué au logiciel à partir de quel offset la recherche d'espace libre doit démarrer afin d'attribuer un offset à chacun des pointeurs présent dans ton script.

/!\ tout ceci est relatif, parce que scripter en static ≠ dynamic

« Modifié: 08 mai 2013, 15:17 par steakfrite »

Myst

  • Membre
  • 1870 posts
08 mai 2013, 15:14
Ouais, mais rpg maker = sur pc obligatoirement, c'est un peu contraignant a mon sens.


http://www.pokecommunity.com/showthread.php?t=215644

j'ai lu en diagonale, mais c'est p-e un truc du genre que tu cherches ton'.


Ah et j'aime pas le dynamic, j'sais pas, le fait de pas choisir mes offsets, j’adhère pas.

Ah et tant que j'y suis:
'---------------
#org 0x801397
lock
checkflag 0x700
compare LASTRESULT 0x1
if 0x1 goto 0x8804E2F
checkflag 0x603
compare LASTRESULT 0x1
if 0x1 goto 0x880271F
checkflag 0x601
compare LASTRESULT 0x1
if 0x1 goto 0x8803AA7
checkflag 0x602
compare LASTRESULT 0x1
if 0x1 goto 0x8803AA7
msgbox 0x88061B7 MSG_YESNO '"
compare LASTRESULT 0x1
if 0x0 goto 0x880753F
setmaptile 0x7 0x3 0x2BD 0x1
special 0x8E
setmaptile 0x11 0xC 0x2CB 0x0
setmaptile 0x12 0xC 0x2CC 0x0
setmaptile 0x13 0xC 0x2CD 0x0
setmaptile 0x11 0xB 0x298 0x0
setmaptile 0x12 0xB 0x299 0x0
setmaptile 0x13 0xB 0x29A 0x0
special 0x8E
msgbox 0x880897C MSG_NORMAL '"
setflag 0x603
setflag 0x605
release
end

'---------------
#org 0x804E2F
lock
msgbox 0x8813BF6 MSG_NORMAL '"
release
end

'---------------
#org 0x80271F
msgbox 0x880DA4E MSG_NORMAL '"
release
end

'---------------
#org 0x803AA7
msgbox 0x88061B7 MSG_YESNO '"
compare LASTRESULT 0x1
if 0x0 goto 0x880753F
setmaptile 0x7 0x3 0x2BD 0x1
special 0x8E
setmaptile 0xA 0xE 0x2BD 0x1
special 0x8E
setmaptile 0x1E 0x8 0x2BD 0x1
special 0x8E
pause 0x28
setmaptile 0x7 0x3 0x2BC 0x1
special 0x8E
setmaptile 0xA 0xE 0x2BC 0x1
special 0x8E
setmaptile 0x1E 0x8 0x2BC 0x1
special 0x8E
special 0x136
setmaptile 0x11 0xC 0x28E 0x1
setmaptile 0x12 0xC 0x28E 0x1
setmaptile 0x13 0xC 0x28E 0x1
setmaptile 0x11 0xB 0x289 0x1
setmaptile 0x12 0xB 0x289 0x1
setmaptile 0x13 0xB 0x289 0x1
setmaptile 0x11 0xA 0x289 0x1
setmaptile 0x12 0xA 0x289 0x1
setmaptile 0x13 0xA 0x289 0x1
setmaptile 0x11 0x9 0x289 0x1
setmaptile 0x12 0x9 0x289 0x1
setmaptile 0x13 0x9 0x289 0x1
setmaptile 0x11 0x8 0x289 0x1
setmaptile 0x12 0x8 0x289 0x1
setmaptile 0x13 0x8 0x289 0x1
setmaptile 0x11 0x7 0x28B 0x1
setmaptile 0x12 0x7 0x28B 0x1
setmaptile 0x13 0x7 0x28B 0x1
special 0x8E
msgbox 0x88114E6 MSG_NORMAL '"
clearflag 0x601
clearflag 0x602
clearflag 0x603
clearflag 0x604
clearflag 0x605
release
end

'---------------
#org 0x80753F
msgbox 0x880EDD6 MSG_NORMAL '"
release
end


'---------
' Strings
'---------
#org 0x8061B7
= t1

#org 0x80897C
= t2

#org 0x813BF6
= t3

#org 0x80DA4E
= t4

#org 0x8114E6
= t5

#org 0x80EDD6
= t6.

Ca commence impec, mais quand je réactive le truc, au lieu de m’amener a l'offset 80271F, ca va a l'offset 804E2F.
Je vois pas d’où ça vient, p-e doute de l'inattention, mais je mets pas le doigt sur le blem (je précise qu’aucun flag n'est activé avant le lancement du script).
Ah et y'a plusieurs script du genre, soyez pas étonnés si des trucs semblent bizarre.
« Modifié: 08 mai 2013, 15:23 par Myst »

tonanus

  • Membre
  • 177 posts
08 mai 2013, 15:23
@Yago: Rien de plus simple, surtout pour Rpg Maker XP

@Myst: d'où le fait que je prefere aller vers la hackrom
Ca a l'air super ce que tu m'as trouvé Myst, je vais regarder

Et en fait c'est quoi l'avantage de developper en static plutot qu'en dynamic ?

yago58

  • Invité
08 mai 2013, 15:24
@Yago: Rien de plus simple, surtout pour Rpg Maker XP

Toi t'es capable de pondre un sujet là dessus.

Myst

  • Membre
  • 1870 posts
08 mai 2013, 15:25
Tu choisis tes offsets. Et c'est a peu près tout.
Ca s’écrit pas exactement pareil non plus, mais c'est pas plus difficile dans un cas ou dans l'autre.

steakfrite

  • Membre
  • 842 posts
08 mai 2013, 15:30
Oui c'est juste l'histoire des pointeurs qui change la donne...
Myst, t'as pas zapé un clearflag 0x700 ? Parce que tant que ce flag est activé c'est normal que le script dérive vers 804E2F

tonanus

  • Membre
  • 177 posts
08 mai 2013, 15:31
Toi t'es capable de pondre un sujet là dessus.

En lisant ca, je suis allé voir la rubrique des tutos en rpg maker, et j'ai pris une claque dans ma gueule. Le concept de RPG-maker a l'air de vraiment pas avoir interessé grand-monde on dirait, c'est vide par rapport à la partie hackrom.
Ouais, jvais pondre un tuto d'apprentissage du ruby, vu que y'a pas et que pourtant y'aurait bien besoin et que c'est un des langages de programmation les plus simples qu'il m'aie été donné de voir

Le manque d'information m'a presque donné envie de stop hackrom pour me consacrer au partage sur rpg-maker, ce serait si simple d'etoffer un peu cette partie

@Myst: Oui donc au final, ca change pas grand chose, si ce n'est que dans l'un tu ne repointes pas quoi. Ca change absolument rien sinon. Pas d'autres commandes, ni rien. Bouaif. Bah je vais continuer en static

Myst

  • Membre
  • 1870 posts
08 mai 2013, 15:33
Oui c'est juste l'histoire des pointeurs qui change la donne...
Myst, t'as pas zapé un clearflag 0x700 ? Parce que tant que ce flag est activé c'est normal que le script dérive vers 804E2F

Ben justement, a moins d'avoir raté un truc, je l'active pas dans le script le flag 700 (d'ailleurs, même avec un clear le problème restait le même).
J'ai p-e mal expliqué, la 1ere fois que je lace le script (pancarte, c'est un interrupteur), tout marche a la perfection, ensuite, quand je reparle au panneau, la ca merde et ca fait comme si le flag 700 était actif.
« Modifié: 08 mai 2013, 15:35 par Myst »

yago58

  • Invité
08 mai 2013, 15:35
ton' =>Si tu fais ça, simple et complet à la fois. :)
Quitte à refaire un tuto pour utiliser rpg-maker.

Si tu le sens, fonces.

tonanus

  • Membre
  • 177 posts
08 mai 2013, 15:42
jme verrais bien refaire entièrement le tuto, a la base je me voyais bien seulement le completer, mais en fait j'en trouve une partie un peu incomprehensible bien que bien developpée, mais pour reprendre comme je suivrais pas la même architecture que l'ancien auteur, je verrai, je te filerai ca au pire et tu verras quoi en modifier si tu veux le prendre

Badis-Dz

  • Membre
  • 5 posts
08 mai 2013, 16:22
J'ai encore un problème, lorsque j'ai terminer mon script (simple message), j'ai attribuer le offset, etc... mais gros problème, sur l'emulateur quand je parle au PNJ crée le jeux bug et devient tout noir avec quelques pixels de couleurs bizzares...

Si vous voulez j'ai skype : badis.meddouri

EDIT : PROBLEME RESOLU!

Je cherche un tuto pour les buffer1,buffer2 etc...

Merci d'avance.
« Modifié: 08 mai 2013, 17:39 par Badis-Dz »

steakfrite

  • Membre
  • 842 posts

Unifag

  • Membre
  • 883 posts
08 mai 2013, 21:05
Quelqu'un (Mickey?) sais comment mettre une palette en mémoire? (avec l'ASM ou autre)
Enfaite mon problème c'est que j'ai plusieurs images qui utilise une même palette mais j'aimerais les faire utiliser chacun une palette différente, sachant que je peut choisir quelle numéro de palette (en mémoire) leurs assigner. Et la palette num 13 est toujours libre donc j'aimerais utiliser ce slot pour charger les palettes de chaque image séparément.
Je sais pas si j'ai était clair mais au pire si vous avez pas compris ma question suffit.

ponytyty

  • Membre
  • 4 posts
09 mai 2013, 19:42
Bonjour, je recherche un spriteur pour un RH  sur Rubis. Je cherche aussi un scripteur et un scénariste.
Je souhaiterai des personnes ayant du temps libre, et capable de faire avancer le projet, sans abandonner à la moindre difficulté.

Merci d'avance.

Coordialement, ponytyty

yago58

  • Invité
09 mai 2013, 19:44
Et toi que sais tu faire là dedans ?
« Modifié: 09 mai 2013, 19:46 par Yago »

ponytyty

  • Membre
  • 4 posts
09 mai 2013, 19:46
Je suis mappeur, et j'ai quelque idée, mais je ne sais pas les mettre en pratique. (ajout d'arènes, changement de scénario, etc...)

Myst

  • Membre
  • 1870 posts
09 mai 2013, 20:42
Si tu veux etre chef de projet, ca serait cool que t’aies au moins des notions basiques dans tout les domaines, notamment le script.
Moi j'te conseille de faire des petits essaies, genre des petite "scènes", des fragment de scenar, sur des maps que t'aurais faites, pour appliquer et développer tes connaissances globales.
Et si "tu veux pas" être chef de projet, ben même conseil.

Pages: 1 ... 54 55 56 57 58 [59] 60 61 62 63 64 ... 291    En haut ↑