Guida all'Hacking
della Tecnologia Lock-On
La guida di riferimento completa per aggiungere la
"Tecnologia Lock-On" a Sonic the Hedgehog 2 & 3 e altri.
Revisione: 2.1E (English)
|
Questo documento è inteso
a fornire una documentazione tecnica completa della Tecnologia Lock-On
trovata nel gioco SEGA "Sonic and Knuckles". Le informazioni riportate
sono frutto di anni di ricerca da parte di vari collaboratori, incluso
me stesso. Speriamo che troverete utili queste informazioni!
1.) Introduzione |
Cosa la SEGA vuole che sappiate
|
Tutto ciò è possibile usando una nuova tecnologia chiamata "Tecnologia Lock-On".
Cosa la SEGA NON vuole che sappiate
Non c'è nulla di magico o rivoluzionario nella Tecnologia Lock-On.
Si diceva che Sonic 1 avesse un errore che modificava il gioco se Knuckles
planava su un nastro trasportatore, creando un livello bonus 3D. Sonic
2 aveva una patch per abilitare Knuckles usando una ROM nascosta di 256K
con la cartuccia di S&K. Sonic 3 era stato progettato con S&K in
mente. Infatti, si crede che i livelli in S&K3 fossero stati creati
per Sonic 3.
Non di meno, implementare questo concetto con Sonic 2, un gioco che
era già sul mercato, non era un'impresa facile. Questa idea innovativa
portò nuova vita alla serie di Sonic in una maniera che nessuno
aveva mai visto prima!
2.) Cose da Sapere |
Solo Formato Binario
Assicuratevi che le ROM che usate in questo prigetto siano in formato
binario (.bin). Gli altri formati di file, come .smd e .md, non funzioneranno.
La ragione di ciò è che quei formati di file collocano i
dati in una maniera diversa dall'originale. Chiaramente parlando, piazza
blocchi di byte in locazioni differenti che ne alterano gli indirizzi corrispondenti.
Un formato binario, d'altro canto, è un flusso diretto di dati dalla
ROM originale. Questo significa che i dati che vedete sono collocati nelle
stesse locazioni della loro controparte fisica. Per una spiegazione completa
dei formati di file .smd e .md e per capire meglio perchè non possono
essere usati, riferitevi a questo documento. Documentazioni
sulle ROM per Mega Drive di Lanchtool.
Se avete ROM in formato .smd o .md, non disperate. Possono essere facilmente comvertite in formato .bin usando un programma di conversione delle ROM. Io preferisco Lanchtool per questa operazione perchè è il più veloce ed è facile da usare. homepage di Lanchtool. Se state usando un MAC, allora dovreste provare l'SMD to BIN converter che ha scritto il curatore del nostro mirror francese.
ROM difettose
Mi sono accorto dopo mesi di esperimenti che alcune copie della ROM
di S&K in giro sulla Rete sono "difettose". Quello che voglio dire
con difettoso è che alcuni byte nell'immagine della ROM non coincidono
con gli originali. Ci sono molte possibili spiegazioni sul perchè
alcuni bytes possono essere mancanti, come un segnale diretto assorbito
durante la copiatura della ROM, ma abbastanza bizzarro, solo alcuni byte
mancano e nelle stesse locazioni.
Come può essere? Be', non sono un esperto in programmi di copiatura delle ROM, potrebbe essere un baco nel meccanismo stesso. I byte che mancano si trovano non lontano dalla testina, quindi se mancano, non dovrebbe essere troppo cruciale per le normali operazioni della ROM. Comunque, i byte in questione si trovano proprio attorno all'area della ROM dove si crede ci siano i dati che indicano cos'è quella ROM alla porta di espansione. Quindi, è giusto pensare che una versione finale diversa della ROM S&K esista e si trovi in giro per la Rete insieme a quella normale.
Non di meno, se avete una ROM S&K difettosa, dovrete semplicemente fare un passo in più con un editor hex e correggere i byte alterati. Se il pensiero di usare un editor hex vi dà la nausea, potete provare una delle patch IPS che ho preparato apposta. In ogni caso, questo passo può essere effettuato prima o dopo che la cartuccia S&K è stata combinata con un'altra cartuccia.
Combinare le ROM
Questo passo è molto semplice, davvero. Dovete sapere che quando
combinate un altro gioco alla porta di espansione, il SEGA Mega Drive tratterà
le memorie delle due cartucce come un unico continuo segmento di memoria.
Quindi, non c'è da sorprendersi se per creare una cartuccia che
contenga, diciamo S&K combinato con Sonic 3, dobbiamo semplicemente
concatenare le immagini delle due ROM insieme per generare l'"unico continuo
segmento di memoria" che vedrà il Mega Drive.
Questo passo si può svolgere facilmente prendendo i dati di Sonic 3, byte per byte, dall'inizio della cartuccia di Sonic 3 alla fine della cartuccia di S&K. Questa operazione può diventare frustrante se fatta a mano in un editor hex. Si può scrivere un programma che faccia il lavoro per noi, ma la maniera più semplice è di usare il comando COPY del DOS. Possiamo impostare il comando COPY per fare una copia binaria e concatenare insieme i due file binari in uno più grande. La sintassi per eseguire questa operazione è quella che segue:
COPY /B S&K.BIN + SONIC3.BIN SONIC4.BIN | | | | | - Output name (Can be anything you wish.) | | | - Name of ROM to Lock-On | - Sonic and Knuckles ROM name
Per capire ancora meglio com'è implementato l'hardware, dovrete
esaminare il circuito extra della ROM e immaginare cosa fa. Scaricate questo
schema della chiave del circuito nella ROM e leggete questa
spiegazione tecnica che ho scritto. Per abbreviare la storia a quelli
esperti di harware, il circuito extra sicomporta come una banca di meccanismi
switch, che abilitano/disabilitano la giusta cartuccia ROM basandosi sui
bit superiori di ogni richiesta di indirizzo. Il circuito incorporato è
più complesso di quello per passare tra, diciamo 4-64k di chip ROM,
così potreste volerci dare un'occhiata. Nulla di più.
3.) Sonic 3 & Knuckles |
Sonic 3 and Knuckles (S&K3)
Stealth, Tom, e alcuni altri hanno chiamato la Tecnologia Lock-On una
finzione. La ragione di ciò è che è evidente che Sonic
3 era stato programmato per essere associato alla ROM di S&K in futuro.
Un esempio è la possibilità di selezionare Knuckles dallo
schermo di selezionedei personaggi in Sonic 3. Questo si può ottenere
usando un editor hex su un save associato con una locazione nel gioco.
Altro corpo del reato è l'esistenza di alcuni livelli di S&K
dentro Sonic 3. Per maggiori informazioni su come ottenere questi livelli
nascosti, visitate la
stazione di Sonic Hacking di Tom.
Il più evidente corpo del reato è come il chip SRAM nella cartuccia di Sonic 3 è utilizzata da Sonic 3 e S&K. Se salvate un gioco in Sonic 3 e poi provate a salvare il gioco nella stessa locazione con Sonic 3 combinato con S&K, scoprirete che la locazione in questione è vuota o contiene diversi salvataggi insieme. Il fatto che i save non si sovrascrivono tra di loro prova che uno è stato prorgrammato con l'altro in mente. (Date un'occhiata con le cartucce reali e con un emulatore!)
Ma oltretutto, c'è un problema! Se cercate di salvare un gioco con una ROM S&K3 generata su un emulatore: non salva effettivamente il gioco su disco. Questo problema è attribuito al fatto che la testina della ROM S&K non specifica esplicitamente che la SRAM esiste. Per capire perchè è un problema, e come trovare una soluzione, dobbiamo capire come funziona una SRAM.
Se esaminate il circuito della cartuccia S&K, noterete che la cartuccia S&K passa tutti i suoi dati e linee di indirizzi alla cartuccia nella porta di espansione. Il circuito assicura che quando c'è una richiesta per accedere all'SRAM, la cartuccia nella porta di espansione, chiamiamola la cartuccia di Sonic 3, la riceve.
Dalla prospettiva del programmatore, ogni hardware Mega Drive, sia un registro, sistema RAM, ROM, VRAM, o anche SRAM, è accessibile da un indirizzo di memoria con una certa banda di memoria. Questa tecnica è chiamata I/O mapping. Un emulatore registrerà ogni dato scritto da/a ogni banda di memoria e lo registra nella sua memoria, l'SRAM non fa ecezione. Quindi se un gioco richiede di scrivere una parte di dati nell'SRAM, l'emulatore lo registrerà nella memoria dell'emulatore. Diventa un'operazione dell'emulatore per assicurarsi che i nuovi dati scritti funzionino con l'emulatore, sia che si tratti di dispositivi per controllare un I/O o semplici dati.
Una volta che chiudete l'emulatore, i dati nella memoria dell'emulatore sono persi, il chè significa che i dati nel sistem RAM, VRAM, ecc, sono persi anch'essi. Siccome l'emulatore non sa che la SRAM esiste, non emula l'SRAM salvando i dati su disco. Sembra sciocco da parte di un autore di emulatori non definire una banda di memoria da usare per SRAM. Comunque, non tutte le cartucce usano l'SRAM, e i dati messi lì potrebbero essere insignificanti come un mumbo-jumbo casuale.
Ora, come potete immaginare, la soluzione è far sapere all'emulatore che l'SRAM esiste nella cartuccia S&K. Questo passaggio richiede delle modifiche hex della testina dell'immagine della ROM combinata S&K3.
I dati da 01B0h a 1BBh della testina della ROM specificano se è disponibile o no una mamoria esterna (p.es., SRAM). Se c'è, specifica anche la banda di memoria nella forma di un indirizzo I/O iniziale e finale. Mi piace pensarli come un "registro minimo" e un "registro massimo", che si trovano nella maggior parte delle moderne CPU.
Se non esiste memoria esterna, questo spazio della testina è riempito con un carattere di spazio vuoto (20h). Se guardate la testina di una ROM S&K, vi accorgerete com'è veramente settata. Ora, dobbiamo cambiare questi bits per informare l'emulatore che l'SRAM esiste. Ciò si ottiene inserendo i dati dell'SRAM dalla testina di Sonic 3 a quella della cartuccia di S&K3.
Replace data from 1B0h to 1BCh with 5241 F820 0020 0001 0020 03FF
Where: 1B0h to 1B3h: -> Inform unit external memory exists. A "RA" code is used. 1B4h to 1B7h: -> External Ram Starting I/O Address 1B8h to 1BBh: -> External Ram Ending I/O Address.
4.) Sonic 2 & Knuckles |
Sonic 2 and Knuckles
Il modo per abilitare S&K2 ha richiesto molti mesi di ricerca.
Molte teorie furono scritte su come abilitare questa ROM e sono state proposte
molte complesse soluzioni. Alla fine, la soluzione a questo problema era
semplice come aggiungere un parametro extra alla linea di comando.
Ciò che fece questa ricerca così problematica per molti versi era il fatto che la ROM S&K conteneva in memoria patch 256K nascosto. Se si tentava la copia dei conetnuti di S&K2 da un copiatore di ROM, esso falliva nel riconoscere e leggere questo chip ROM. Questa speciale ROM nascosta da 256K è abilitata solo se la cartuccia S&K lo abilita; altrimenti è inaccessibile. Riferitevi al mio documento tecnico menzionato prima per informazioni su come si effettua questo scambio. Per informazioni su come scovare questo chip ROM nascosto, riferitevi al documento tecnico di Rizzo su questo argomento. Se non vi sentite abbastanza ambiziosi da attivare da soli la ROM, potete prendere la ROM da questo sito.
Notate che la grandezza corretta del modulo ROM nascosto è 256K, non 512K come sospettato prima. Apparenttemente, il pin associato con l'Indirizzo 18 è veramente un pin vuoto, a significare che non è connesso al chip stesso. Inoltre, la testina della ROM di Sonic and Knuckles ci dice che è di 256K.
C'è in realtà una sezione non documentata dentro la testina che specifica l'esistenza di un modulo ROM secondario costruito nella cartuccia. La locazione in questione è stata documentata per essere usata come "memo". (Identificata tra 1C8h a 1EEh) Apparentemente, sembra che questa locazione di memoria fosse riservata per usi futuri.
Questa sezione nascosta comincia al 0x1E0 con "RO", (per ROM), e poi ha gli indirizzi $300000 e $33FFFF (l'inizio e la fine degli indirizzi I/O). Questo implica che la ROM è lunga $33FFFF meno $300000, ovvero 256K.
Ci sono molte ragioni credibili sul perchè dell'uso della ROM nascosta. Per capirle, bisogna esaminare le teorie che le accompagnano su come il controllo è passato dalla cartuccia S&K alla cartuccia di Sonic 2. Discuterò l'unica teoria che sento essere più esplicativa.
Alcuni sospettano che la ROM stessa sia una patch alla grafica e ai livelli in Sonic 2. (Inoltre, sembrerebbe la ragione delle due date di copyright che appaiono nello schermo del titolo di S2&K). Questo significherebbe che la ROM S&K ha completo controllo della cartuccia di Sonic 2 e semplicemente usa la cartuccia orginale di Sonic 2 per i dati. Se questo è vero, perchè non immagazzinare questa "patch" dentro la ROM stessa di S&K? La ragione è semplicemente che non c'è abbastanza spazio nella ROM di S&K.
Quindi, perchè non usare un chip ROM più grande? I chip di memoria che la SEGA usa nelle sue cartucce sono a 4Mbit, 8Mbit, o 32Mbit. Quindi, per 256K extra avrebbero dovuto espandere la ROM principale di almeno altri 4Mbit, che sarebbero stati più costosi. Avrebbe anche complicato il circuito e la programmazione in molti modi. E siccome i dati che avrebbe immagazzinato dovevano essere accessibili solo da una ROM, era una cattiva soluzione.
Torniamo a noi. Se esaminate lo schema di Rizzo della cartuccia di S&K e riguardate il mio documento tecnico sui meccanismi della cartuccia, scoprirete che il modo di concatenare le tre immagini delle ROM è praticamente lo stesso di prima. Semplice, i comandi sono i seguenti:
COPY /B S&K.BIN + SONIC2.BIN + S2KUPMEM.BIN SONIC4.BIN | | | | | | | - Output name | | | | | - "Patch" or hidden ROM | | | - Name of Sonic 2 ROM | - Sonic and Knuckles ROM name
000003B5: 01->02
5.) Sonic 1 & Knuckles |
Sonic 1 & Knuckles
Si diceva che la Sega intendesse inizialmente incorporare Knuckles
come personaggio giocabile in Sonic 1. Comunque, un errore con l'engine
faceva sì che il gioco si interrompesse ogni volta che Knuckles
planava su un nastro trasportatore. Questo portò alla non apparizione
di Knuckles in Sonic 1... be' è solo una voce.
Per me, anche se erano sotto pressione per le scadenze, sembra sciocco eliminare un'opzione così incredibile solo a causa di un errore di programmazione. Una circostanza più logica sarebbe che ci sono locazioni nel gioco che sono irraggiungibili a Knuckles, come rocce troppo alte da saltare o boss che non possono essere sconfitti dalle mosse normali di Knuckles. In ogni caso, Knuckles non è un personaggio giocabile in Sonic 1.
Se combinate Sonic 1 (versione americana o giapponese), con la cartuccia S&K, appare una schermata che mostra Sonic e compagni con il testo "impossibile" che scrorre in alto. Premete tutti i bottoni del controller insieme per attivare i 134,217,728 (2^27) livelli bonus 3D segreti. Funziona nello stesso modo di quelli trovati in Sonic 3 e S&K, eccetto che si avanza in un nuovo schema un volta completato il precedente. E' importante notare che non dovete veramente giocare tutti e 134,217,728 livelli. Se siete bravi, potete passare 10 livelli alla volta invece di uno con un "perfect on the rings", o in altre parole, collezionando tutti gli anelli e toccando tutte le sfere blu del livello (riferitevi alle icone in alto nello schermo per controllare i vostri progressi).
Una volta che avete completato l'ultimo livello del gioco, il gioco riprende daccapo al livello 0, che porta al livello 1, ecc.. Come potete immaginare, questo gioco è piuttosto insignificante (a meno che non stiate cercando di fare pratica), quindi ecco alcuni codici nel caso vogliate avventurarvi in questa sfida 3D da soli.
Ora, torniamo a noi. Assumendo che abbiate una copia buona della ROM S&K sotto mano, dovreste essere in grado di combinare le due cartucce proprio come prima senza nessun problema. Se tutto va bene, dovreste vedere una schermata con la scritta "impossibile" in alto. Comunque, se la vostra ROM S&K è difettosa, vedrete invece la normale animazione d'inizio della cartuccia S&K. Per corregge questo problema, avrete bisogno di modificare la ROM come segue:
00000433: 00->2C
Ancora, questo byte è collocato vicino all'area della ROM dove sembra venga deciso su quale ROM si trova la porta di espansione.
Qui c'è qualcosa che ho scoperto ma non so spiegare. Avete bisogno di una ROM S&K difettosa, ma potete sempre "contaminarla" cosicchè non funzioni con Sonic 1. Combinate la cartuccai difettosa S&K con Sonic 1 e sostituite i seguenti byte:
0000042D: FF->00 0000042F: AE->A1
00000433: 00->2C
6.) Sonic & Knuckles con qualsiasi altro gioco (S1&K Part 2) |
Sonic & Knuckles con qualsiasi altro gioco. (Parte 2 di Sonic
1 and Knuckles)
Non è così difficile immaginare che un possessore di
una cartuccia S&K certamente cercherà di combinare ogni cartuccia
per Mega Drive che ha per le mani. Come premio per i loro esperimenti,
la cartuccia S&K sceglierà un livello a caso basato sul numero
seriale della cartuccia inserita nella porta Lock-On (di espansione).
Se combinate una cartuccia S&K buona con qualsiasi cartuccai Mega Drive, vi verrà mostrato la stessa schermata "impossibile" come prima con Sonic 1. Comunque, ci saranno delle differenze importanti. Per iniziare, la palette di colori per Sonic e gli altri sarà più scura, e i loro movimenti resteranno bloccati. anche se il livello a caso può sembrarvi un buon inizio, è importante notare che quando lo finirete, verrete portati indietro allo stesso livello con cui avete cominciato.
Quindi ora, la questione è spontanea, "come fa la cartuccia S&K a determinare quale livello scegliere?" Per iniziare, spieghiamo come si determina se è combinata con la cartuccia di Sonic 1. Se richiamate i dati/istruzioni, l'indirizzo 3C0h sembra essere dove il codice determina quale ROM risiede nella porta di espansione. Se cercate intorno, vedrete i numeri di serie per Sonic 2 e Sonic 3, ma non per Sonic 1. Come può essere? Facile. Si trova in una locazione differente. Andate all'indirizzo 4CD00h e scoprirete i numeri di serie sia della versione giapponese che americana di Sonic 1.
Come verifica, provate a cambiare il numero di serie della ROM che intendete combinare con quello di Sonic 1. Il numero di serie si trova a 180h:
GM 00001009-00 (US Sonic 1) GM 00004049-00 (Jap Sonic 1)
Ora torniamo alla domanda originale, "come genera un livello a caso?"
Come potete immaginare, il numero di serie della cartuccia nella porta
di espansione gioca il ruolo chiave. Se provate a giocare con i numeri
di serie, potete davvero generare un livello differente. Non ho fatto molte
investigazioni su questo argomento, così forse qualcuno riempirà
i vuoti per me.
Ex:
Saluti:
Jarred, KidAlex, TC, DC, Sir Lamer, Stark, Sir James, Spector, Ruski,
The G-Funks, T-Boy, Andy Watts, il Team SSRG e tutti coloro che hanno seguito
questo progetto.
Disclaimer
L'autore di questa pagina non è responsabile di nessun danno
causato da queste procedure in nessuna forma di qualsiasi tipo. L'autore
non ha inoltr alcuna relazione con Sega o Sega of America. USA A TUO RISCHIO.
This Site is Sonic 2 Hacking Approved |
Copyright 1999-2000 Andy Wolan