How to receive flawless Event Pokémon in RSE-FRLG

SPECIFICHE TECNICHE

Per comprendere al meglio questo ricercatissimo processo di RNG, è necessario affrontare prima alcune questioni tecniche riguardanti la struttura dei salvataggi di 3a generazione.

Ogni Savegame è diviso in due blocchi (A e B) che a loro volta sono suddivisi in Sezioni contenenti dei dati specifici, ognuna inoltre è convalidata in modo indipendente da un Checksum. Quest’ultimo è una sequenza di bit associata ad una Sezione, che viene utilizzata per verificarne l’integrità. Infatti può accadere che i dati di gioco possano subire alterazioni e danneggiarsi (ad esempio quando si spegne la console nel mezzo del salvataggio).

I due blocchi rappresentano la sessione di gioco più recente e quella precedente, che viene utilizzata come backup nel caso di corruzione dei dati. Il gioco alternerà quale regione del file verrà sovrascritta ad ogni salvataggio, cioè quale blocco usare. Ciascuno di essi è composto da 14 Sezioni e questo significa che si avranno altrettanti Checksums calcolati in modo indipendente fra loro (ricordate che questi saranno tutti valori 16-Bit).

La maggior parte dei Doni Segreti della tipologia “diretta”, ovvero quelli che prevedono l’inserimento del Pokémon tra i membri della squadra, generano l’Initial Seed operando uno XOR tra tutti i Checksums del salvataggio; gli eventi di Doel Deoxys, del 10° Anniversario e di Aura Mew utilizzano proprio questo meccanismo.

In tabella sono riassunti gli elementi che influiscono sulle singole Sezioni, e di conseguenza sui vari Checksums.

SezioneDescrizioneVariabili
0Contiene le informazioni riguardanti l'Allenatore; è facile da manipolare in modo indipendente dalle altre.Player Name, Player Gender, TID/SID, Tempo di Gioco, Options
1Comprende la squadra attuale e gli Strumenti posseduti. Può variare anche mentre si manipola la Sezione 0.Squadra (n° membri e dati dei Pokémon), Denaro, Gettoni, Strumenti nello Zaino e nel PC, Coordinate e direzione del personaggio
2Variabili d'ambiente; cambia camminando oppure lasciando un'area per entrare in un'altra.Mirage Island Value, Posizione Base Segreta, Bacche
3-4Non sembrano avere effetto sulle Sezioni 0, 1 e 2.Informazioni raccolte con lo Scambio di dati
5-12Contengono i dati dei Pokémon nei Box.-
13Riguarda le impostazioni del PC, cioé il Box attuale e gli Sfondi assegnati ad ognuno di essi.In nuovo salvataggio, non modificando le impostazioni, il valore sarà fisso a 0xF131 per RS

Prima di continuare è consigliabile avere dimestichezza con le tecniche di RNG descritte nella guida Wishmaker Jirachi, in quanto le distribuzioni dirette possono essere considerate come il suo step successivo.

RICERCA DELLE SPREADS

Aprite il Finder-ToolBox e cliccate “Stationary” sotto la voce Gen 3. Configurate la Scheda Searcher come sotto:

Profile: Non è necessario caricare i dettagli del profilo relativo al vostro salvataggio.
Method: Selezionate Shiny Locked 16Bit Event.
Caratteristiche: Specificate la Natura e le IVs, così da trovare Spreads con queste qualità.

Nota: Si potranno avere solamente Initial Seeds nell’intervallo 0x0000 – 0xFFFF perché il risultato finale dello XOR sarà sempre un dato 16-Bit. Ne discende che questi Pokémon avranno combinazioni di caratteristiche molto limitate, inoltre l’algoritmo non permette di riceverli nella forma cromatica.

Una volta compilata la finestra di dialogo cliccate su Search. Quando il PokéFinder avrà finito di cercare le possibili Spreads, sceglietene una e segnatevi il Seed su un foglio di testo.

Ora dovremo fare in modo che il risultato dello XOR tra tutti i Checksums del salvataggio sia proprio questo valore.

PREPARAZIONE

L’obiettivo per semplificare questo RNG sarà quello di avere il minor numero possibile di variabili. Il primo accorgimento sarà quello di avere un salvataggio nuovo: assicuratevi quindi di non possedere un file .sav relativo alla versione che userete. Considerate infatti che già salvando il gioco 2 volte si andranno a sovrascrivere entrambi i blocchi A e B, e avremo quindi 28 Checksums da controllare invece di 14. Inoltre, non essendo andati avanti nel gioco, potremo escludere quelli relativi ai Box del PC: ci ritroveremo così solo con quattro elementi da considerare.

Nota: È doveroso l’uso dell’emulatore VBA-RR 23.5 svn438, in quanto permette un corretto trattamento dei blocchi; altre versioni sovrascrivono già dall’inizio entrambe le partizioni. Non dimenticate di disattivare l’opzione “Real-time clock” del VBA-RR.

Adesso avviate una nuova partita e procedete fino al punto in cui riceverete il Pokédex, facendo attenzione a non incontrare Pokémon selvatici; per evitarli utilizzate i SaveStates (questo è importante ai fini di una corretta calibrazione tramite il Jirachi-Finder). Per ricevere il Dono Segreto è necessario salvare il gioco in un Pokémon Center, quindi dirigetevi a Solarosa e posizionatevi all’interno dell’edificio. Infine mettete in Pausa l’emulatore e fate un SaveState in questa schermata:

Attenzione: Ricordate di non salvare il gioco più di una volta, ma di ricaricare sempre i SaveStates altrimenti andrete a sovrascrivere anche il secondo blocco. Se quando state salvando i progressi apparirà il messaggio “Sono presenti dati di gioco salvati. Vuoi sovrascriverli?”, dovrete cancellare il file .sav e crearne uno nuovo.

RNG

Prima di procedere, modificate il file .lua con il Blocco Note per inserire manualmente alcuni valori tra i parametri. Dovrete specificare dov’è collocato il file del salvataggio all’interno del computer e il vostro Target Seed. Per il momento tralasciate le altre righe legate alla voce Play Time e Delay.

A questo punto caricate anche il Lua Script RS_Checksum. Vi ricordo che il Lua Script vi permette di visualizzare alcune variabili fondamentali. Si carica in questa maniera:

VBA-RR » Tools » Lua Scripting » New Lua Script Window » Browse

Premete Ctrl + Z + P per creare il file .sav che andremo ad analizzare (di default il tasto A è settato sulla lettera Z della tastiera); rilasciate i pulsanti immediatamente e non teneteli premuti.

Lo script effettuerà in automatico i calcoli XOR tra il Target Seed e tutti i Checksums, dando indicazioni sul valore della Sezione 0 da ottenere. Infatti esso verrà considerato come unica incognita perché facilmente manipolabile in modo indipendente dagli altri.

Nel mio caso dovrò avere il valore 0xEB3D nella Sezione 0; ora col Jirachi-Finder andremo a controllare se sarà possibile ottenerlo. Il programma è stato sviluppato in modo specifico per la calibrazione di questa sezione: a video saranno presenti tutti gli elementi che, essendo contenuti in questa regione di salvataggio, faranno variare il Checksum 0. La maggior parte sarà relativa alle Opzioni di gioco e ai dati dell’Allenatore.

Compilate la schermata facendo in modo di descrivere esattamente tutti i dettagli relativi al vostro Savegame.

Nel riquadro deve risultare lo stesso dato presente nel Lua Script alla voce Checksum Seed: in questo caso sarà D18C.

A differenza di Wishmaker Jirachi dobbiamo considerare tutti i Checksums del salvataggio, e quindi ci saranno alcune nuove strategie da poter utilizzare. Nel caso in cui non si riesca a trovare il Target, ad esempio, non ci sarà bisogno di ricominciare un nuovo salvataggio.

Attenzione: Cambiare le Opzioni di gioco a volte potrebbe influenzare anche il Checksum 1, per questo è utile verificare il Target prima di procedere. Inoltre cambiare la direzione del personaggio, uscire ed entrare dagli edifici e più in generale cambiare area, sono tutte azioni che possono portare ad un cambiamento (anche radicale) dei Checksums. Sfruttatele per fare in modo che il vostro Target Checksum 0 sia raggiungibile.

ESEMPIO PRATICO

Questo tipo di manipolazione non segue un procedimento fisso, ed è per questo che non si può elencare una soluzione univoca che possa valere per tutti. Vi introduciamo quindi il percorso seguito nella creazione di questo salvataggio.

Procedendo nella calibrazione, abbiamo avuto la sfortuna di non riuscire a trovare il Target nemmeno attraverso opportuni cambiamenti alle Opzioni di Gioco. La cosa da fare è provare a uscire e rientrare nel Pokémon Center, caricando così una nuova area e facendo variare i Checksums (potete anche entrare nei vari Percorsi che circondano Solarosa); il metodo ora non ha portato ai risultati sperati, ma è sempre possibile ripeterlo per cercare di avvicinarsi di più all’obiettivo. Dopo alcuni tentativi, arriviamo ad avere una situazione in cui ci troviamo molto vicini al nostro Target: ricarichiamo quindi il SaveState e proviamo a salvare orientando il personaggio in una diversa direzione.

Ricavati i Checksums per il salvataggio, tramite Jirachi-Finder verifichiamo che effettivamente si possa raggiungere il valore desiderato.

Apportiamo le modifiche indicate dal programma e prepariamoci a salvare sulla frase finale del dialogo: orientatevi osservando la voce “Time” del Lua Script. Non dimenticate di modificare i parametri relativi al Delay aprendo il file .lua col Blocco Note; in questo modo vi verrà indicato il momento esatto in cui avviare il salvataggio dei dati (“Base Save Time”). Troverete più informazioni nella guida Wishmaker Jirachi.

Dopo aver creato il file .sav, accertiamoci che contenga i dati corretti grazie al Lua Script, che infatti conferma il valore 0xC547 nella Sezione 0. Infine preparatevi a ricevere l’Evento sul vostro gioco:

RISULTATO

Non vi resta che avviare la ricezione del Dono Segreto sul salvataggio appena ottenuto, ed il Pokémon avrà le caratteristiche desiderate.