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.
Di NO CARRIER

Revisione: 2.1E (English)
Versione: 01202000

English | Español | Français

1. Introduzione
2. Cose da sapere
3. Sonic 3 and Knuckles
4. Sonic 2 and Knuckles
5. Sonic 1 and Knuckles
6. Sonic and Knuckles con tutto
A Contributi
 

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

Semplicemente mettendo qualsiasi gioco di Sonic nella porta Lock-On della cartuccia S&K, sarà possibile giocare con Knuckles in quel gioco. Inserisci Sonic 2 e sfrutta le mosse speciali di Knuckles per trovare power up segreti e passaggi nascosti. Inserisci Sonic 3 per trasformare S&K in un enorme epopea a 32-Megabit con una storia più complessa e dozzine di zone da esplorare!

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 perchè funziona su un emulatore, dobbiamo guardare l'hardware dalla prospettiva del programmatore. Per permettere al programma di accedere a qualsiasi dato, deve specificare gli indirizzi. Quindi, se un programmatore richiede i dati nella cartuccia di Sonic 3, il programmatore deve solo chiamare l'indirizzo corrispondente a quella parte di ROM. Non ha bisogno di sapere come tutto è gestito dall'hardware, solo che le memorie delle due cartucce sono trattate dal Mega Drive come "un unico continuo segmento di memoria". Ecco perchè la tecnica funziona bene su un emulatore senza il bisogno di patch o altre aggiunte all0emulatore stesso: non c'è hardware extra da programmare!

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.
Salvate i cambiamenti e il vostro emulatore preferito dovrebbe ora riconoscere che la vostra ROM S&K3 usa una SRAM. Come sfida, vedete se riuscite a scoprire da soli come le cartucce di Sonic 3 e S&K3 non sovrascrivono a vicenda i dati SRAM quando usati su un emulatore.
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
La nuova immagine della ROM che avete generato lavorerà su tutti gli emulatori, eccetto KGen98. La ragione è che KGen98 è un emulatore più curato di altri a livello harware. Questo significa che KGen98 è più preciso su cosa legge ed esegue. Ancora, questo bug è attribuito alla sindrome della "ROM difettosa" menzionata precedentemente. semplicemente modificate questo byte per abilitare la ROM su KGen98.


000003B5: 01->02
Nota: Questo byte può essere modificato senza curarsi di quale desiderate usare.
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
La ROM mostrerà una schermata bianca. Ora modificate il byte seguente come prima:


00000433: 00->2C
e la ROM funziona. Ciò che rende questo così strano è il fatto che i primi due byte (42Dh e 42Fh) si trovano prima della poszione del terzo byte (433h). Verrebbe da pensare che alterare il terzo byte non avrebbe effetto sui cambiamenti dei primi due, ma lo fa! E' anche strano il fatto che invece di mostrare l'animazione introduttiva di S&K, questa modifica causa il blocco della ROM su una schermata bianca. Quindi, cosa rappresentano i primi due byte? Potrebbero essere indirizzi, un'istruzione di macchina, o una variabile. In ogni caso, sembrano essere in realzione... o forse no.
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)
Walah! Invece di un livello a caso, ora avete tutto il gioco 3D associato con Sonic 1 & Knuckles.

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:
diagram


Contributi:
Chaos Emerald: Scoperte 3D in S&K1.
Cherry: Rilascio della ROM S&K2 corretta.
Jan Abaza: Suggerimanti.
Rizzo: Scoperta iniziale di S&K2, suggerimenti per S&K1.
Thomas Rodriguez: Mirror francese.
Stealth: Primo aggiustamento dell'SRAM di Sonic 3&K, suggerimenti per S&K2, suggerimenti per S&K1 e il supporto nel corso degli anni.
Wiseman: Mirror spagnolo di questo documento e i carini diagrammi GIF per sostituire i miei schifosi diagrammi ascii.
Andy Wolan: scoperta iniziale di S&K3, questo documento, per aver chiuso i "buchi" nelle teorie e per aver mantenuto viva la speranza per quasi 3 anni!

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
Sonic è un marchio registrato da Sega1991. Tutti gli altri marchi sono copyright delle rispettive compagnie.

Copyright 1999-2000 Andy Wolan