09-12-2020, 12:52 AM
Codice:
"Invalid Pointer to map footer"
"AdvanceMap Error(1): Try to read at pos 0! Please contakt Luhopoke@gmail.com".
Se avete incontrato questo errore e volete sapere come risolverlo, continuate a leggere.
0| COSA SONO OFFSET E POINTER
Per intenderci, una ROM si presenta così:
Spoiler (Clicca per visualizzare)
Semplice: Con un pointer (puntatore), che significa "vai là e leggi le istruzioni a quel punto". "Quel punto" è chiamato offset.
È una spiegazione molto basica, ma efficace se siete poco esperti nell'argomento.
1| COS'È IL MAP FOOTER
I dati di una mappa sono divisi in quattro posti diversi, che la ROM va a leggere mediante dei pointer:
- Map footer offset: L'offset dove sono scritti i dati della mappa (Per intenderci, i blocchetti di tiles coi quali è costruita la mappa).
- Map script offset: Gli script di mappa. Se avete dimestichezza coi level script, probabilmente sarete familiari con questo, perché ogni volta che ne inserite uno dovete andare a correggere 0xFFFF con 0x0 perché Advance Map non li compila correttamente. Pokecommunity: Having fun with level scripts è un'ottima guida a riguardo, btw.
- Event offset: L'offset dove sono scritti gli eventi: persone, calpestabili, eccetera.
- Connection offset: Le connessioni con altre mappe.
Quando voi operate con la mappa, AdvanceMap fa automaticamente un repoint degli offset coinvolti. Ad esempio, in Fire Red il Map footer offset di Pallet Town è alla posizione $2DD4C0. Se decido che 24x20 sono dimensioni troppo piccole ed espando la mappa a 30x35, Advance Map andrà in automatico a scrivere le informazioni della mappa nel prossimo spazio libero nella ROM, nel mio caso all'offset $71AA78.
2| PERCHÈ ACCADE/COME È SUCCESSO
Questo errore si presenta quando l'offset di mappa rimanda ad un punto in cui i dati non ci sono, sono stati sovrascritti o corrotti. In pratica, Advance Map cerca di leggere la mappa ma non ci riesce.
Com'è successo? A me succede spesso quando inserisco le mappe con la funzione built-in di Advance Map (File->Map->Insert map). Advance Map non fa un corretto repoint dei valori e va a sovrascrivere spazio occupato da altre mappe.
Per evitare di imbattervi in questo problema, NON inserite le mappe con la funzione inclusa in AMap. Piuttosto, ricreatela da zero. Se volete portare una mappa da una ROM all'altra, vi conviene salvare la mappa (File->Map->Save map as...), copiarla (tenete premuto Ctrl e il tasto destro e trascinate il puntatore per copiare un pezzo di mappa), dopodiché aprite la mappa in cui volete inserirla e incollate lì i tiles che avete copiato.
3| COME RISOLVERE
Quando avete una mappa che presenta questo errore, non c'è un tool o un metodo automatico per risolvere. Dovrete fare manualmente.
Aprite la mappa buggata, aprite la vista header e premete Ctrl+H (oppure andate in Settings->Professional header view).
Vedrete quattro offset, ovvero i quattro descritti precedentemente: Map footer offset, map script offset, event offset e connection offset. Quello che interessa a noi è il map footer offset. In pratica, dovremo manualmente repointare l'offset di mappa da una nuova parte.
Aprite l'Hex Editor e trovate uno spazio vuoto nella ROM. Dopodiché scrivete l'offset di quello spazio vuoto in Map footer offset. Advance Map ovviamente non riesce ancora a leggerla, perché ovviamente in quell'offset c'è solo spazio vuoto.
Pertanto, vi basterà andare all'offset di una mappa funzionante, e copiarla nell'offset che abbiamo dato alla mappa che presentava l'errore.
Ta-da! Ora la mappa funziona (Dovrebbe essere una replica della mappa che avete copiato). A questo punto potete farci quel che volete, Advance Map tornerà a leggerla correttamente e repointarla quando necessario.
FUN FACT
A volte, quando Advance Map fa un repoint in seguito alla modifica dei valori, i vecchi valori non vengono cancellati. Non so se dipenda dalla versione che si sta utilizzando (1.82, 1.92, 1.95) o se ci siano altri fattori in gioco.
Altre guide:
- Flag/ID/Var table - Lista flag e variabili libere e occupate
- Trainer AI - Guida al comportamento degli allenatori in battaglia
- Pokémon data structure - Struttura dei dati dei Pokémon in squadra, e come modificarli con un WTBO
- Cinematic event - Barre nere ai margini dello schermo
- Pokémon Ruby: Fanfare values - Valori per il comando fanfare
- Advance Map error "Invalid pointer to map footer": How to fix it
- Advance Map error "Error on compressed data" & "Access violation at address 00000000": How to fix it
- G3T - Offset per Rosso Fuoco ITA
- Hopeless Trainer Editor - Offset per Smeraldo ITA
- Cambiare impostazioni di default (velocità testo, stile lotta, etc...)