Pokémon sur GameBoy Advance, la troisième génération à l'essai

(14/15)

Astuces et bricolages - suite (2/2)

 

FAIRE FONCTIONNER L'HORLOGE INTERNE AVEC UNE SAUVEGARDE D'EMULATEUR

 
On parle ici beaucoup de vrai matériel, mais on est sur un site d’émulation après tout. On peut très bien vouloir commencer une partie sur émulateur puis transférer sa partie sur une vraie cartouche pour goûter au « vrai jeu »… ou transférer ses Pokémon sur une génération ultérieure.
 
NOTE: la plupart des images sont ici aussi cliquables.
 
 
Symptômes :
 
Lorsqu’on injecte une sauvegarde d’émulateur directement une cartouche avec une pile fonctionnelle, on observe des problèmes similaires à une cartouche avec une sauvegarde existante sur laquelle on aurait changé la pile, même après avoir initialisé l’horloge en commençant une nouvelle partie. Les causes suivent d’ailleurs la même logique. On va regarder cela de plus près.
 
 
Voyons la structure d’une sauvegarde brute faite avec VisualBoy Advance-M :
 
Dans le logiciel A-Save, ça donne :
 
Vous saurez tout de cette fenêtre dans quelques lignes.
 
La date initiale est indiqué entre nombre de jours à partir du 01/01/2000… calculable mais pas très pratique. Pas de panique, j’explique le fonctionnement du logiciel un peu plus loin.
 
On va utiliser ce site pour lire la sauvegarde (qui marche aussi pour Pokémon Version Emeraude comme il ne l’indique pas) :
 
 
Le site permet de lire clairement la date initiale.
 
 
On voit que la sauvegarde a utilisé l’horloge du PC pour régler le temps initial ce qui nous donne la date initiale de la RTC en 2015. L’horloge de la cartouche n’est a priori pas prévue pour monter aussi haut dans le temps, rappelons que les jeux sont sortis en 2003.
 
Vérifions la RTC de la cartouche. L’horloge interne est réglée en 2000. Un nouvelle partie a été lancée avec la pendule de la chambre réglée la RTC au préalable puis enregistrée.
 
L'horloge interne dans son état naturel.
 
 
Jusqu’à présent, vous n’avez pu que me croire sur parole. Mais prouvons-le en images !
 
L’homme qui donne des CT à Pacifiville demande d’attendre 8 jours après m’avoir remis sa CT. On a déjà un petit problème car c’est au maximum 7 jours dans une partie normale.
 
8 jours? Y'a un truc qui cloche.
 
 
Plantons des baies pour ce qui se passe. Des baies CERIZ en l’occurrence.
 
Test avec des baies.
 
 
Vérifions l’écoulement du temps en avançant la RTC d’une journée :
 
L'horloge interne est avancée de plus de 24h.
 
L’homme demande toujours d’attendre 8 jours.
 
Aucun changement...
 
 
Les baies n’ont pas poussé, on devrait avoir au moins une tige et des feuilles : les événements liés au nombre de jours passés ne fonctionnent pas.
 
Allons voir la marée de la Grotte Tréfonds.
 
On est clairement à marée basse.
 
 
On laisse passer quelques heures...
 
Marée haute. Là, ça fonctionne.
 
 
Là, on voit bien qu’il y a eu un changement de marée : les événements purement liés à l’heure fonctionnent.
 
 
Il va donc falloir se remettre au boulot !
 
 
Matériel nécessaire :
 
-          Une Nintendo DS originale ou une Nintendo DS Lite.
-          Un Linker pour Nintendo DS.
-          Le logiciel GBA Backup Tool ; le lien possède des explications détaillées pour son fonctionnement, je ne m’attarderai donc pas dessus.
-          Le logiciel A-Save de KazoWAR, trouvable ici.
-          Le logiciel RTC Read dans sa version Nintendo DS pour votre linker ou sa version GameBoy Advance avec une flashcart et un GameBoy Advance pour lire l’horloge interne (RTC) de la cartouche et l’éditer.
 
 
Le matériel nécessaire pour l'édition.
 
 
Comprendre A-Save :
 
On ne va l’utiliser que pour lire et éditer les informations d’horloge des sauvegardes. Pour cela, on charge la sauvegarde de votre partie émulée (fichier .sav correspondant à une sauvegarde "classique" pas les save states) dans le logiciel (bouton Open) puis on fait Trainer info => RTC Edit.
 
Différenciez bien les deux colonnes.
 
 
On remarque 2 colonnes distinctes : Initial time (cadre 1 rouge) et Time passed (cadre 2 bleu):
-          Initial time correspond à la date et l’heure à laquelle la partie a été initialisée. La date initiale n’est pas indiquée en clair mais correspond au nombre de jours passés depuis le 01/01/2000.
-          Time passed donne le nombre de jours passés depuis le début de la partie et l’heure au dernier enregistrement de la partie.
 
 
 
Réparation :
 
Mise à jour du 19/12/2016:
 
Grâce à la sortie d'un port Nintendo DS de RTC Read, cette partie de l'article a été grandement simplifiée. Cependant, le fonctionnement et l'interface des versions Nintendo DS et GameBoy Advance du logiciel étant identiques, les captures d'écran de la version GameBoy Advance ont été conservées.

 

-          Ouvrez la sauvegarde de l'émulateur avec A-Save et accédez aux informations d'horloge.
-          La date d'initialisation dans un jeu sur émulateur correspondant à la date de votre PC, elle est beaucoup trop élevée pour l'horloge interne de la cartouche. Il va falloir sérieusement la baisser. Début des années 2000 devrait convenir.
-          Surtout si vous utilisez Pokémon Version Rubis ou Pokémon Version Saphir, je ne conseille pas cependant de mettre une date inférieure au 01/01/2001 (soit 366 jours) sinon vous tomberez dans la zone calendaire du bug de l'horloge corrigée par la mise à jour du Programme Baie.
-          Il est temps d'aller régler l'horloge interne de la cartouche avec RTC Edit.
-          Réglage de la date:
 
Editez les valeurs de l'horloge interne.
 
 
 
o   L'idéal est qu'elle corresponde à la date d'initialisation de la partie + le nombre de jour depuis le début de la partie (à lire dans la colonne Time passed de A-Save).
o   Si vous avez du mal à faire la correspondance entre le nombre de jours et la date, vous pouvez lire votre sauvegarde avec ce site.
o   Par exemple, si la date d'initialisation est au 02/02/2002 et que 35 jours se sont écoulés depuis le début de la partie, il faudrait que l'horloge interne soit sur le 09/03/2002. Si votre partie date de plusieurs années, il ne faudra pas oublier les années bissextiles pour tomber sur la bonne date.
o   Pour les flemmards, une feuille Excel ou Open Office peut faire l'affaire pour le calcul.
 
-          Réglage de l’heure:
o   Comme d'habitude, Heure pendule de la chambre = Heure horloge interne - Heure d’initialisation. Servez-vous en pour déduire l'heure à régler dans l'horloge interne.
o   Les flemmards peuvent aussi régler l'heure d'initialisation à 00h00mn00s dans A-Save et régler l'horloge interne sur l'heure réelle.
 
La date initiale a été réglée sur le 01/01/2000. Le reste est inchangé.
 
 
-          Vous n'avez plus qu'à injecter la sauvegarde de l'émulateur dans la cartouche grâce à GBA Backup Tool.

 

Testons !

 
Une fois la sauvegarde injectée, on va faire le même test avec l’homme de Pacifiville et planter des baies. Inutile de réessayer la Grotte Tréfonds vu que l’événement se base sur l’heure.
 
Dans l’exemple, l’homme de Pacifiville m’a donné une CT puis m’a demandé d’attendre 7 jours (ce qui est le nombre normal). Des baies CERIZ ont été plantées.
 
 
L'horloge interne a été réglée en fonction du nombre
de jours passés depuis le début de la partie.
  Ca va mieux déjà: une durée normale d'attente
est demandée.
 
 
Avançons la RTC d’une journée.
 
 
On avance encore l'horloge de plus de 24 heures.   Plus que 6 jours à attendre! Le temps a avancé.
Les baies ont poussé.
 
 
Cette fois, l’homme demande d’attendre 6 jours et les baies ont poussé : l’horloge interne est parfaitement fonctionnelle !