Vous n'êtes pas connecté.
Forum : Logiciels, patchs et modding Page : 1
Auteur Message
Esnor
image du rang
Garde Shinra


Posté le 08 mai 2023 à 12:44 | Sujet : "Données perdues" au moment de lancer une sauvegarde
Bonjour à tous,

Je débute en Python et j'essaie de bricoler un petit programme pour modifier ma sauvegarde du jeu. J'arrive à modifier le fichier hexa aux bonnes adresses sans trop de soucis. J'ai même réussi à modifier le fichier metadata.xml de manière à ce que le launcher ne détecte pas que la sauvegarde a été modifiée. Par contre quand je veux lancer ma sauvegarde, j'ai l'erreur suivante :
Image

Je suis presque certains que la modification du fichier hexadécimal contenant la sauvegarde n'est pas en cause. Puisque BlackChocobo arrive à l'ouvrir sans soucis.

J'ai juste changé les niveaux des personnages (sans changer les stats pour l'instant), est-ce que c'est ça qui bloque ?
Si ce n'est pas ça, est-ce que quelqu'un a une idée de ce qui pourrait coincer ?

En vous remerciant par avance.
5 messages
Voir le profilLien du message Aller en haut de page
Quid?
image du rang
Jeune Cloud


Posté le 08 mai 2023 à 18:12 | Sujet : "Données perdues" au moment de lancer une sauvegarde
Bonjour,

Tu suis ce mapping pour t'aider?
https://wiki.ffrtt.ru/index.php/FF7/Savemap

Je n'ai jamais essayé, pas besoin de modifier des saves, mais ça me semble suivable.

Quels bytes as tu modifiés? Si tu ne vois pas sinon, est ce que tu pourrais poster ta save, avant et aprés tes modifications? Je peux toujours essayer de jeter un oeil.
622 messages
Voir le profilLien du message Aller en haut de page
Esnor
image du rang
Garde Shinra


Posté le 08 mai 2023 à 18:36 | Sujet : "Données perdues" au moment de lancer une sauvegarde
Salut !

Merci pour ta réponse.
Oui, c'est exactement ce mapping dont je me sert.

Voici les fichiers de sauvegarde :
sauvegarde non-modifiée
sauvegarde modifiée
(C'est la première fois que je me sers de Mediafire pour partager des fichiers, j'espère que ça fonctionne.)

Dans le fichier modifié j'ai uniquement changé les niveaux suivants : le leader du groupe, Cloud, Barret, Tifa, Aeris, RougeXIII, Youfie et Cid.
Ce qui correspond respectivement aux adresses : 0x0D, 0x5E, 0xE2, 0x166, 0x1EA, 0x26E, 0x2F2 et 0x47E.
J'y ai indiqué la valeur 0B (soit le niveau 11)
5 messages
Voir le profilLien du message Aller en haut de page
Quid?
image du rang
Jeune Cloud


Posté le 08 mai 2023 à 18:51 | Sujet : "Données perdues" au moment de lancer une sauvegarde
Saves récupérés, je regarde dans une heure ou deux le temps de finir ce que je fais.
622 messages
Voir le profilLien du message Aller en haut de page
Quid?
image du rang
Jeune Cloud


Posté le 08 mai 2023 à 20:40 | Sujet : "Données perdues" au moment de lancer une sauvegarde
J'arrive au même résultat que toi, data ruined\données perdues en essayant de modifier le niveau, ou d'ailleurs une autre stat du lead character.
Si je remet les bytes aux valeurs d'origine, la save marche à nouveau.

Quelque chose d'autre doit être updaté pour que ça marche, c'est peut aussi simple que de reproduire le comportement apparent de black chocobo qui update les valeurs des stats, du current exp et exp to next level sans rien oublier.
Ou c'est autre chose et dans ce cas pour comprendre quoi je comparerais une save d'abord modifiée avec black chocobo, un simple boost de strengh puisque ça corrompt aussi la save si tu change le byte de l'offset 5F sans rien faire d'autre par exemple, pour repérer exactement tous les bytes qui ont changés depuis la save originale.
622 messages
Voir le profilLien du message Aller en haut de page
Esnor
image du rang
Garde Shinra


Posté le 08 mai 2023 à 21:03 | Sujet : "Données perdues" au moment de lancer une sauvegarde
Merci d'avoir regardé

Ta réponse m'a donné une idée. J'ai créé une sauvegarde BlackChocobo en décochant l'option "Simulate Leveling up/down" des settings. Ce qui m'a permis de générer une sauvegarde avec Cloud lvl 20, mais des stats lvl 6. Et la sauvegarde s'est chargée correctement. Ce qui élimine un problème venant de toutes les stats à modifier.

Je pense que je vais continuer à chercher de la manière que tu as décrite quand j'aurais le temps. Encore merci.
5 messages
Voir le profilLien du message Aller en haut de page
Esnor
image du rang
Garde Shinra


Posté le 09 mai 2023 à 15:57 | Sujet : "Données perdues" au moment de lancer une sauvegarde
J'ai trouvé ce qui coince.
C'est écrit au début de la savemap : "PC header is 9 bytes, checksum @ 0x11".
Si le checksum n'est pas bon, le jeu ne charge pas le fichier. Plus qu'à se remonter les manches pour le générer correctement.

[Ce message a été édité par son auteur pour la dernière fois le 09 mai 2023 à 15:58]
5 messages
Voir le profilLien du message Aller en haut de page
Esnor
image du rang
Garde Shinra


Posté le 13 mai 2023 à 23:08 | Sujet : "Données perdues" au moment de lancer une sauvegarde
J'ai codé une fonction en Python qui génère le bon checksum pour un slot de sauvegarde. Je me dis que ça pourrait servir à quelqu'un qui tomberait sur ce sujet. Le voici :
Code :
def CalculChecksum(adresseChecksum,hexSauvegarde):
adresseChecksum *= 2
r = bin(0xFFFF)[2:].zfill(8)
len = 4336
while len > 0:
len -= 1
t = hexSauvegarde[adresseChecksum:adresseChecksum+2]
adresseChecksum += 2
t_bin = bin(int(t,16))[2:].zfill(8)+'00000000'
r = bin(int(r,2) ^ int(t_bin,2))[2:].zfill(16)
for d in range(8):
if r[:1] == '1':
r = r+'0'
r = bin(int(r,2) ^ int('00001000000100001',2))[2:].zfill(17)
r = r[1:]
else:
r = r+'0'
r = r[1:]
r = bin(int(r,2) ^ int('1111111111111111',2))[2:].zfill(16)
r = hex(int(r,2))[2:].zfill(4)
return(r)


Le paramètre adresseChecksum correspond à la première adresse de la sauvegarde dont on veut calculer le checksum en hexadécimal (Je me rends compte en l'écrivant que son nom représente mal ce qu'il contient). Attention, il ne faut pas prendre en compte le header ni l'ancien checksum. Par exemple pour le slot 1, il faut mettre 0x0D.
Le paramètre hexSauvegarde contient toutes les valeurs en hexa du fichier de sauvegarde, dans une chaîne de texte.

Attention, ce que retourne le programme est un peu à l'envers. Si le checksum à écrire est C32D, il renvoit 2DC3. Charge à vous d'écrire C3 en 0x09 et 2D en 0x0A (pour le slot 1).

[Ce message a été édité par son auteur pour la dernière fois le 14 mai 2023 à 19:14]
5 messages
Voir le profilLien du message Aller en haut de page
Quid?
image du rang
Jeune Cloud


Posté le 14 mai 2023 à 01:37 | Sujet : "Données perdues" au moment de lancer une sauvegarde
Bien joué.
Oui, sous forme hexa brut les word et dword se lisent à l'envers, quand j'ai aussi compris ça pendant mes aventures, plusieurs word\dword essentiels des fichiers battle et du world map module se sont ouvert à mes expériences.
622 messages
Voir le profilLien du message Aller en haut de page
Page : 1
Qui est en ligne ?Lecteur audio
Aucun utilisateur en ligne dans les 5 dernières minutes.
Lecteur désactivé (à activer dans le profil)
Jeux entre forumeurs
Le Tarot des Anciens



Inscrits : yuyu, Yui, RJ, Acro
Skull King



Inscrits : RJ, yuyu, Acro
Interrupted by Hanabi



SpeciNames



Inscrits : Orthello
Le Démineur de MSN