[SNES] Déplacer/agrandir des cadres dans Captain Tsubasa IV

Foire aux questions et tutoriels
Hiei-

[SNES] Déplacer/agrandir des cadres dans Captain Tsubasa IV

Message non lu par Hiei- » 11 janv. 2012, 10:28

Voilà le tutoriel en question : http://www.hiei-tf.fr/tutoriels-romhack/tutoriel_cadres

C'est évidemment réutilisable pour d'autres jeux, en adaptant un peu les explications.

Avatar de l’utilisateur
BahaBulle
Bub'n'Bob Pawa!
Messages : 6395
Inscription : 06 août 2002, 09:34
Localisation : Sur une bulle
Contact :

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par BahaBulle » 11 janv. 2012, 10:32

A ajouter à la TRAF ou au wiki ?

Avatar de l’utilisateur
rid
Dieu Suprême du flood
Messages : 1980
Inscription : 04 janv. 2005, 22:17
Contact :

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par rid » 11 janv. 2012, 11:13

Génial, encore un nouveau tutorial, merci Hiei- :D

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 750
Inscription : 17 juin 2004, 16:47

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par kogami » 11 janv. 2012, 19:01

Et bien j'ai tout lue, mais après une 1er lecture c'est vraiment difficile de tout comprendre, en tout cas ce tutorial risque de me servir, si tu peux expliquer comment passer des pointeur de 16 en 24 bit, je serais bien preneur !!!!

Merci en tout cas d'avoir pris le temps d'écrire ce guide.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Hiei-

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par Hiei- » 11 janv. 2012, 19:33

Si tu veux bien le comprendre, je te conseille d'essayer sur la rom "Captain Tsubasa IV" et d'essayer d'étendre un cadre au hasard.

Moi-même, je n'ai vraiment compris la méthode qu'une fois l'avoir refait moi-même sur un autre cadre :)

Passer de 16-bits à 24-bits, c'est quand même un tout autre programme. Néammoins, sans faire cela, il est possible de déplacer tout le texte d'une bank vers une autre bank.

A quoi ça sert tu me diras ? Eh bien, ça peut être très utile si ton texte original n'utilise pas toute la bank disponible.

Une bank fait 0x8000 en lowrom, et imaginons que ton texte en consomme la moitié, 0x4000 (table de pointeurs inclus), et que le reste soit utilisé par d'autres choses, comme du code pour le jeu.

Eh bien, en trouvant le pointeur (24-bits) de la table des pointeurs, tu peux alors déplacer la table des pointeurs + le texte vers une toute nouvelle bank, qui elle sera vide, et donc où tu pourras utiliser les 0x8000 octets de la bank. Ca te permet donc de doubler facilement la taille d'un texte sans reprogrammer des pointeurs 24-bits pour chaque pointeur.

Si tu veux, je pourrais faire un tutorial sur comment faire cela sur "Captain Tsubasa IV", c'est assez simple.

C'était une des méthodes que j'utilisais avant d'avoir de vrais pointeurs 24-bits pour certaines banks (certaines banks sont déjà quasiment pleines et ne contiennent que du texte, donc on était quand même assez limités pour ce jeu au final).

On utilisait aussi également la même technique pour Lufia (pour étendre les MTE), ce qui permettait d'avor des MTE de 14 caractères chacune au lieu de 5-6 caractères par exemple.

Avatar de l’utilisateur
BahaBulle
Bub'n'Bob Pawa!
Messages : 6395
Inscription : 06 août 2002, 09:34
Localisation : Sur une bulle
Contact :

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par BahaBulle » 11 janv. 2012, 19:47

Tout dépend aussi du code du jeu qui n'est jamais le même. Des fois ça peut être simple, des fois moins.

Et il faut quand même savoir un peu écrire en ASM.

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 750
Inscription : 17 juin 2004, 16:47

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par kogami » 11 janv. 2012, 19:52

Oui je comptais en effet faire quelques essais pour bien assimilé toutes tes explications, sinon en effet le coup du 16 en 24 bit peux être assez compliqué, l'idée de déplacer les textes de bank en bank est une bonne alternative, elle dois être assez simple à mettre en place sans devoir codé en asm.

Si tu peux en effet expliquer comment trouver le pointeur de la bank, j'imagine qu'il y a juste à modifier 3 octet pour déplacer tout un bloc de texte + pointeur.

J'ai justement des problèmes pour entrer mon nouveau textes sur la rom de Chrono Trigger, ca me ferais un test parfais, j'ai passé la rom de 4 à 6mo, alors si je peux mettre tout les dialogues en fin de rom, j'aurais plus aucun problème de place.

Après faut voir si c'est réalisable sur la majorité des jeux Super Nintendo.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Avatar de l’utilisateur
Lestat
céréal floddeur
Messages : 906
Inscription : 15 avr. 2004, 04:45
Localisation : France
Contact :

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par Lestat » 11 janv. 2012, 20:04

Oui, m'enfin faut aussi savoir pourquoi multiplier l'adresse par 2!

Ce genre de tutoriel est fort intéressant, mais réservé à "l'élite", enfin ceux qui savent coder en asm.

Mais pareil que pour ton tuto sur le changement de font, c'est toujours intéressant d'avoir ça sous le coude!

Merci à toi ^^

P.S : Kog, si tes pointeurs sont sur 3 octets, c'est que c'est déjà en 24bits.

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 750
Inscription : 17 juin 2004, 16:47

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par kogami » 11 janv. 2012, 20:15

Justement y'a aucun code asm à faire la dedans, y a juste à trouver les infos dans la rom et les modifier, c'est pas du codage pur asm de dingue comme ajouter de nouvelle fonction.

Les pointeurs de mes textes sont sur 2 octets justement, mais comme l'a dit Hiei-, y a 1 pointeur sur 24 bit (normalement) qui indique la tables des pointeurs + textes.

Me manque juste la démarche de comment le trouver.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Hiei-

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par Hiei- » 11 janv. 2012, 20:58

Lestat a écrit :Oui, m'enfin faut aussi savoir pourquoi multiplier l'adresse par 2!

Ce genre de tutoriel est fort intéressant, mais réservé à "l'élite", enfin ceux qui savent coder en asm.

Mais pareil que pour ton tuto sur le changement de font, c'est toujours intéressant d'avoir ça sous le coude!

Merci à toi ^^

P.S : Kog, si tes pointeurs sont sur 3 octets, c'est que c'est déjà en 24bits.
S'pa vrai :p Au contraire ! Je ny connais rien en ASM à la base et j'ai réussi à comprendre l'explication de BahaBulle, qui a donnée naissance à ce tutoriel.

@BahaBulle : Evidement, ca dépend du jeu.

Pour la méthode dont je parlais, c'est surtout utile si ton texte de base ne remplit pas déjà toute la bank. Là, je suis sur mon tel donc je verrais ca demain.

Pour le pointeur 24-bits, sache qu'il est rarement en un bloc. Souvent, tu as l'octet de la bank puis le reste quelques octets plus loin. Calcule le pointeur de la table de pointeurs avec Lunar Adress qui va te convertir l'adresse de ton premier pointeur en SNES. Ca va te donner du genre : $10:CAC0. Recherhe "C0CA" dans cet exemple (avec un 30 quelques octets avant ou apres.

Si tu trouves, fait pareil avec une autre table de pointeurs et inverse les pointeurs de ces deux tables de pointeurs entre eux . Si les textes s'inversent, bingo. Ou sinon, tu modifies juste l'octet de la bank en question et si le texte se bousille, bingo.
Dernière édition par Hiei- le 12 janv. 2012, 12:38, édité 1 fois.

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 750
Inscription : 17 juin 2004, 16:47

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par kogami » 12 janv. 2012, 07:25

Niquel !!!

Je viens de faire un essais tout simple, mon 1er pointeur ce trouve à x370000, je le convertis avec Lunar Adress ce qui me donne xF70000 pour du Hirom.

Dans un 1er temps j'ai cherché tout les F70000 que j'ai remplacé par F80000, je relance le jeu, mon texte s'affiche correctement.

Donc ce que je fais, je modifie l'ordre des octets, et donc je cherche 0000F7 que je modifie par 0000F8, et voilà ce que ça me donne in game, j'imagine que je suis sur la bonne voie ?

Image

Me reste à repérer le bon octet à modifier et je ferais la même chose avec une autres bank et j'inverserais :)
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Hiei-

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par Hiei- » 12 janv. 2012, 08:06

Ca dépend.

Où se trouve les premiers textes dans la rom ? (ceux qui s'affichent dès qu'on commence une partie, genre "Good morning").

Edit : Texte trouvé, 0x370487.

Alors, je cherchais le pointeur du texte en question dans le trace et les seuls occurrences qu'on trouve et qui ont un rapport avec la banque F7 (SNES), sont ;

Code : Tout sélectionner

$C2/57EE B7 0D       LDA [$0D],y[$F7:000A]   A:000A X:F000 Y:000A P:envmxdizc
$C2/58B2 A7 31       LDA [$31]  [$F7:0481]   A:0000 X:0000 Y:001F P:envMxdiZc
$C2/58B2 A7 31       LDA [$31]  [$F7:0482]   A:0000 X:0000 Y:001F P:envMxdiZc
$C2/58B2 A7 31       LDA [$31]  [$F7:0483]   A:0000 X:0000 Y:001F P:envMxdiZc

Code : Tout sélectionner

$C2/57EE B7 0D       LDA [$0D],y[$F7:000A]   A:000A X:F000 Y:000A P:envmxdizc
Sachant que le pointeur de la phrase en question est à 0x37000A, ce qui donne 0xF7000A en SNES, et donc ensuite j'ai cherché "$F7:000A"

Si on converti "$C2/57EE" en adresse PC, ça donne "0x0257EE", et si on change le "B7" (en "B8" par exemple) qu'on trouve à cet endroit dans la rom, on peut remarquer que les textes changent complètement.

Au lieu d'avoir :

"Crono... Crono... Good morning, Chrono !"

On obtient :

"You're the real Queen Leene, huh?!"

Donc je me demande, il est à quel endroit dans la rom ce nouveau texte en question ?

Edit :

Code : Tout sélectionner

$C2/58B2 A7 31       LDA [$31]  [$F7:0481]   A:0000 X:0000 Y:001F P:envMxdiZc
$C2/58B2 A7 31       LDA [$31]  [$F7:0482]   A:0000 X:0000 Y:001F P:envMxdiZc
$C2/58B2 A7 31       LDA [$31]  [$F7:0483]   A:0000 X:0000 Y:001F P:envMxdiZc
En relisant ça, si on converti le 0xF704xx, ça donne 0x3704xx et justement, le premier texte qui s'affiche, le nom du perso, se trouve à 0x370481, soit 0xF70481 en SNES, on retombe donc exactement là-dessus :

Code : Tout sélectionner

$C2/58B2 A7 31       LDA [$31]  [$F7:0481]   A:0000 X:0000 Y:001F P:envMxdiZc

Avatar de l’utilisateur
BahaBulle
Bub'n'Bob Pawa!
Messages : 6395
Inscription : 06 août 2002, 09:34
Localisation : Sur une bulle
Contact :

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par BahaBulle » 12 janv. 2012, 09:15

Hiei- a écrit :

Code : Tout sélectionner

$C2/57EE B7 0D       LDA [$0D],y[$F7:000A]   A:000A X:F000 Y:000A P:envmxdizc
Si on converti "$C2/57EE" en adresse PC, ça donne "0x0257EE", et si on change le "B7" (en "B8" par exemple) qu'on trouve à cet endroit dans la rom, on peut remarquer que les textes changent complètement.
Sauf que là, B7 n'a aucun lien avec le F7 de $F7:000A et il ne faut surtout pas le changer sinon, c'est toute l'instruction que tu changes.

Dans cette ligne, $F7:0000 est stoquée à l'adresse $0D en mémoire. Si tu veux savoir d'où vient le $F7:0000 (le A est ajouté par le registre Y), il faut remonter dans ta trace et voir à quel moment il écrit à l'adresse $0D, $0E et $0F.

Hiei-

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par Hiei- » 12 janv. 2012, 09:18

Ok :)

Je verrais après, là je suis en train de chercher pourquoi CT 4 me crashe l'émulateur :D

Edit : On est en train de regarder avec BahaBulle, mais visiblement, c'est un peu plus compliqué pour "Chrono Trigger" pour trouver l'octet de la bank.

Avatar de l’utilisateur
BahaBulle
Bub'n'Bob Pawa!
Messages : 6395
Inscription : 06 août 2002, 09:34
Localisation : Sur une bulle
Contact :

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par BahaBulle » 12 janv. 2012, 11:53

C'est pas compliqué, c'est juste que tu m'as donné de fausses informations... :D

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 750
Inscription : 17 juin 2004, 16:47

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par kogami » 12 janv. 2012, 12:00

Hé hé, la je suis au taff, donc je ne peux participer avec vous, mais la démarche que j'ai effectué été la bonne ? Vue que j'ai juste changer de bank.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Hiei-

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par Hiei- » 12 janv. 2012, 12:23

Le "0000F7" est à "0x3B6F19" mais il y a un problème :
[12:21] <BahaBulle> Ouais, donc c'est bien compressé
[12:22] <Hiei-> C'est à dire ?
[12:23] <BahaBulle> Ben c'est à dire que c'est un coup de "chance" que le 00 00 F7 est en clair et que s'il est modifié comme ça, cela peut poser des problèmes ailleurs
[12:23] <Hiei-> ok
[12:23] <BahaBulle> Il serait préférable de décompresser, modifier, recompresser pour être sûr que ça ne buggera pas quelque part
Plus le fait que ta rom fait déjà 4 Mo et que donc pour l'étendre, je doute que ce soit super simple (Mera parlait d'un mirroir au niveau mapping pour les roms de 3 Mo et plus, cf Lufia 2).
BahaBulle a écrit :C'est pas compliqué, c'est juste que tu m'as donné de fausses informations... :D
Tssss :P Je t'ai donné ce que tu m'as demandé (s'pa ma faute s'il y avait plusieurs instructions similaires), nanméoh :D

@Kogami : Ta démarche est bonne dans le sens ou, peu importe le jeu, si tu cherches l'octet de la bank par exemple, "F7", et que tu testes de les modifier un par un, tu vas obligatoirement tomber dessus à un moment (mais c'est juste hyper long si tu as genre 8000 fois F7 donc mieux vaut savoir directement où il se trouve avec un coup de trace).

J'essairais de refaire ça sur un autre jeu plus simple (où ça n'est pas compressé) puis de faire un petit tutorial car ça peut être bien pratique (en fait, il s'agit de la vieille technique dont me parlait Jes à l'époque, changer l'octet de la bank et déplacer tout les pointeurs+textes, même si à l'époque je n'avais pas compris l'intérêt, maintenant je l'ai compris :P Car à l'époque, je pensais qu'on était obligé de tout déplacer, le code du jeu compris, ce qui n'est pas du tout le cas au final :) )

Evidemment, comme je l'ai dit plus hier, cette technique n'est intéressante que SI ton texte ne remplit pas déjà quasiment la bank. Dans le cas de CT IV, c'était utile pour les menus, mais par contre, le texte principal remplit déjà quasiment les banks, ce qui fait que tout déplacer ailleurs n'apporte quasi rien (~3000 octets sur 32767 octets). Tu pourrais me dire, "10%", c'est déjà ça de pris, c'est certain, mais sur un jeu de ce genre tout en japonais, ça ne suffirait pas, d'ou l'obligation de faire une modification des pointeurs en 24-bits (ce qui permet de couper ces textes qui remplissent les banks en deux morceaux, et de mettre chaque morceau dans une bank différente. Au final, ces 3 blocs de textes qui tenaient dans 3 banks différentes, sont maintenant déplacés dans 6 banks, 2 banks par bloc de texte).

Par contre, si un jeu n'utilise par exemple que 0x1000 octets d'une bank (soit 1/8, ~12.5%), là ça peut être super intéressant d'étendre la rom et de déplacer table de pointeurs+texte dans une nouvelle bank, car ça te permet d'utiliser 0x8000 octets pour ton texte, soit un gain de place multiplié par 8.

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 750
Inscription : 17 juin 2004, 16:47

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par kogami » 12 janv. 2012, 15:20

J'ai un outils pour décompresser du data pour chrono trigger, par contre comment je fais pour connaitre l'adresse du bloc a décompresser ?
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Avatar de l’utilisateur
Lestat
céréal floddeur
Messages : 906
Inscription : 15 avr. 2004, 04:45
Localisation : France
Contact :

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par Lestat » 12 janv. 2012, 16:50

Un lien utile pour compléter le tuto, genre comprendre pourquoi faut multiplier l'adresse du début par 2!

Code : Tout sélectionner

vhopppcc cccccccc
v/h        = Vertical/Horizontal flip this tile.
o          = Tile priority.
ppp        = Tile palette. The number of entries in the palette depends on the Mode and the BG.
cccccccccc = Tile number.

Avatar de l’utilisateur
BahaBulle
Bub'n'Bob Pawa!
Messages : 6395
Inscription : 06 août 2002, 09:34
Localisation : Sur une bulle
Contact :

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par BahaBulle » 12 janv. 2012, 16:53

kogami a écrit :J'ai un outils pour décompresser du data pour chrono trigger, par contre comment je fais pour connaitre l'adresse du bloc a décompresser ?
0x3B6EA2

Avatar de l’utilisateur
kogami
Dieu Floodeur
Messages : 750
Inscription : 17 juin 2004, 16:47

Re: [TUTO] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par kogami » 12 janv. 2012, 17:57

Ok j'ai bien réussi à décompresser ce bloc, et j'ai trouvé une seul occurrence pour 0000F7, je l'ai modifié et ré-inséré le tout, et ca me donne le même résultat que sur la photo que j'ai posté au dessus, donc je pense que tout est Ok, l'avantage c'est que sur les 15 bloc de textes que j'ai dumpé, aucune ne prend complétement la bank en entière pour les textes.

Ca me donne une sacré marge de manœuvre, me reste à comprendre comment tu à trouvé 0x3B6EA2 et j'aurais tout les cartes en main :)

Je vais essayé de comprendre comment trouver les infos directement depuis un debugueur, ca me fera gagner du temps pour les prochaines bank.
Traduction de BS Zelda - Ancient Stone Tablets (Projet en cour)Image

Avatar de l’utilisateur
BahaBulle
Bub'n'Bob Pawa!
Messages : 6395
Inscription : 06 août 2002, 09:34
Localisation : Sur une bulle
Contact :

Re: [SNES] Déplacer/agrandir des cadres dans Captain Tsubasa

Message non lu par BahaBulle » 10 sept. 2012, 22:58

Tuto ajouté au wiki.

Manque 2 images à ajouter, que Hiei doit me passer.

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité