the cutting room mirror

pl

This article has a talk page!
view on tcrf.net

To jest podstrona Proto:Sonic the Hedgehog 2 (Genesis)/Nick Arcade Prototype.

Ogólne Różnice#

  • W tym momencie rozwoju Tails jest quasi-niezależny: Gracz 2 jest w stanie kontrolować Tailsa, z wyjątkiem tego, że będzie również podążał za Sonicem. Co więcej, Tails nie może samodzielnie ukończyć poziomu, ponieważ gra ładuje znak celu tylko wtedy, gdy zbliża się do niego Sonic. Jeśli Tails zostanie ranny, może stracić pierścienie Sonica. Sztuczna inteligencja jest również znacznie prostsza: Tails kopiuje ruchy Sonica i nie próbuje nadążyć za nim.
  • Tryb 2 graczy jest jeszcze mniej kompletny ze względu na różnego rodzaju dziwne usterki i nie jest włączony dla każdej strefy.
  • Niezwyciężoność nie pokazuje efektu gwiazdy, choć muzyka jest nadal odtwarzana. Muzyka i nietykalność trwają do końca Aktu.
  • Istnieje mechanika polegająca na tym, że Sonic odbija się od ścian, jeśli wpada na nie z dużą prędkością, używając sprite'ów, które nie były używane przez prototyp Simona Wai, chociaż sprite, w którym wstawał, został później poprawiony i ponownie użyty, gdy Sonic opuści swoją animację bezczynności „leżenia na ziemi”.
  • Spin dash jest w trakcie prac nad nim, ponieważ Sonic i Tails mogą go naładować tylko raz; ponadto można usłyszeć dźwięk turlającego się Sonica z Sonic 1, ponieważ nie ma jeszcze określonego efektu dźwiękowego dla spindashu.
  • Zachowanie obrażeń od kolców działa tak samo, jak w przypadku Sonic 1.
  • Ograniczenie prędkości względem ziemi z Sonic 1 jest nadal obecne.
  • Sprite'y eksplozji są takie, jakie są w Sonic 1.
  • Tryb debugowania jest zgodny z logiką Sonic 1.
    • Szybkość i prędkość Sonica nie są resetowane podczas wychodzenia z debugowania.
    • Sonic zostanie odrzucony tylko wtedy, gdy zostanie trafiony bez pierścieni.
      • Sonic nie może wejść do debugowania, gdy jest odrzucany.
    • Sonic nie może wejść do debugowania, gdy jest w swojej animacji śmierci.
    • Wchodzenie i wychodzenie z debugowania w zanurzeniu nie spowoduje zresetowania zegara podwodnego Sonic.
    • Sonic zachowuje prędkość na lądzie, jeśli wchodzi do debugowania z wody i wychodzi na ląd.
    • Jeśli Sonic minął drogowskaz, wejście i wyjście z debugowania nie pozwoli graczowi odzyskać możliwości kontrolowania go.
  • Połącznie tego prototypu z Sonic & Knuckles odblokuje pełną grę Blue Sphere.
  • Licznik resetuje się do 9:00 przed osiągnięciem 9:59, umożliwiając graczowi testowanie etapów przez dłuższy czas.
  • Jeśli Sonic i Tails zostaną trafieni w tym samym czasie, niosąc co najmniej jeden pierścień, pojawi się duża ilość pierścieni, niezależnie od tego, ile faktycznie posiadają.
  • Ekran nie przewija się w górę ani w dół, gdy patrzysz w górę lub w dół przez określony czas.
  • Wskoczenie na sprężynę skierowaną w dół powoduje, że Sonic podczas upadku używa animacji umierania.

Kody#

  • Wybór Poziomu - Góra, Dół, Dół, Dół, Dół, Góra, A + Start.
  • 2-Player Mode - W oknie wyboru poziomu naciśnij B + Start na dowolnym poziomie.
  • Tryb Debugowania - C, C, Góra, Dół, Dół, Dół, Dół, Góra, A + Start. Debugowanie można również włączyć za pomocą kodu Pro Action Replay FFFFFA:0001. Jak w Sonic 1, C wystarczy nacisnąć dwukrotnie przed ostatecznym wprowadzeniem Góra.
  • Tryb Debugowania i Wybór Poziomu - Góra, Dół, Dół, Dół, Dół, Góra, UDLR, Góra, Dół, Dół, Dół, Dół, C, C, Góra, A + Start. "UDLR" oznacza po prostu naciśnięcie dowolnego kierunku na D-Pad, aby zresetować kod wykrywania oszustw. W przeciwieństwie do wersji finanej, w której zarówno tryb debugowania, jak i wszystkie szmaragdy można włączyć, grając 19921124126 na ekranie wyboru poziomu, ostatna Góra kodu Level Select nie może „nachodzić” na pierwszą Góra kodu trybu debugowania.

Tryb Przyciągania#

Nick Arcade do 21 Sierpień 1992

14 Wrzesień, 1992 do Beta 4

Beta 5 i dalsze

Ekran tytułowy jest inny, ze szczególnie znanym designem: nie tylko pojawia się w późniejszej wersji Simon Wai, pojawia się również w instrukcji obsługi gry, a także wersjach Master System i Game Gear. Wersja widoczna w instrukcji obsługi jest taka sama jak na drugim zdjęciu powyżej.

Demo 1

Demo 2

Watch on YouTube

Watch on YouTube

Demo 3

Demo 4

Watch on YouTube

Watch on YouTube

Gra przechodzi przez cztery wersje demonstracyjne: Chemical Plant, Emerald Hill (2 Graczy), Hidden Palace, i Hill Top. Byłby to ostatni raz, kiedy nowe dema zostały nagrane do gry przed ostateczną kompilacją; wszystkie inne prototypy używają danych wejściowych z tej kompilacji.

Zmieniona Grafika#

Sonic i Tails#

Sonic 1

Nick Arcade/Simon Wai

21 Sierpnia i później

Sprite Sonica w Nick Arcade i kompilacjach Simona Waia jest znacznie bliższy jego projektowi w Sonic 1. Jego bezczynna sylwetka jest identyczna, z wyjątkiem krótszych butów i dodatkowego połysku z boku głowy. Build z 21 sierpnia zmienia kształt oczu Sonica i dodaje trochę cieniowania w górnej części oka.

Nick Arcade/Simon Wai

21 Sierpnia i później

Migająca ramka Sonica we wcześniejszych prototypach jest nieco dziwna. Wygląda mniej jakby miał zamknięte oczy, a bardziej jakby jego źrenice były na samym dole. Ostatecznie gra na szczęście dodaje Sprite'owi powieki w kolorze cielistym.

Nick Arcade/Simon Wai

21 Sierpnia i później

Sonic2SonicLookUpEarly.png Sonic2SonicCrouchEarly.png

Sonic2SonicLookUpFinal.png Sonic2SonicCrouchFinal.png

Projekt oka Sonica nie został zaktualizowany we wszystkich klatkach: w jego animacjach patrzenia w górę i kucania po prostu dodali cieniowanie w górnej części oka, nie zmieniając jego kształtu.

Nick Arcade/Simon Wai

21 Sierpnia i później

Animacja chodzenia Sonica ma 12 klatek animacji we wcześniejszych wersjach w porównaniu z 8 klatkami widzianymi w ostatecznej wersji. Minimalna prędkość animacji jest również dwukrotnie większa niż w ostatecznej grze i pokazuje znacznie więcej amerykańskiego projektu „mohawk”.

Nick Arcade/Simon Wai

21 Sierpnia i później

Jedna z najłatwiejszych do zauważenia zmian: w kompilacji Nick Arcade i Simon Wai, gdy Sonic biegnie, jego buty i nogi zamieniają się w kreskówkową plamę. Zostało to stonowane w ostatecznej wersji, tak jak w Sonic 1, co wpłynęło tylko na jego trampki. Co dziwne, te wczesne sprite'y zostały użyte w zwiastunie Sonic 4 - Episode I. Ten rodzaj sprite'a został później ponownie użyty w Sonic Mania, gdy on lub Knuckles poruszają się z pełną prędkością.

Nick Arcade/Simon Wai

21 Sierpnia i później

Animacja poślizgu Sonica jest tutaj zupełnie inna. Zaczyna się od nowego, unikalnego początku, po czym ponownie wykorzystuje kilka klatek z Sonic 1, po czym odwraca się i zaczyna pchać w innym kierunku. Ostatnie dwie klatki będą zapętlone, aż Sonic albo całkowicie się zatrzyma, albo wykona inną akcję. Początek animacji został później ponownie wykorzystany na Sonic Mania.

Sonic 1

Nick Arcade/Simon Wai

21 Sierpnia i później

W oryginalnej grze ciało Sonica porusza się, ale jego ręce nie. We wczesnych prototypach jego ręce poruszają się, ale jego ciało pozostaje w poziomie. Końcowy sprite dzieli różnicę i porusza ciałem i rękami w różnych klatkach. Co dziwne, na jego butach jest pomarańczowe zabarwienie, ponieważ sprite'y powstały z Sonic 1 z drobnym niedopatrzeniem kolorystycznym. Ten pomarańczowy odcień byłby najciemniejszym odcieniem czerwieni, gdyby wziąć pod uwagę główną paletę pierwszej gry.

Sonic 1

Nick Arcade/Simon Wai

21 Sierpnia i później

Animacja balansowania jest po prostu szybszą wersją animacji „Sonic 1” z dodatkowym blaskiem głowy i pomarańczowymi ustami, ponieważ sprite'y są oparte na tych z Sonic 1 i podobnie jak animacja pchania, mają niedopatrzenia w swojej kolorystyce. Ostateczna gra dodaje cztery nowe animacje balansujące w oparciu o to, jak daleko Sonic jest od krawędzi i czy stoi twarzą do krawędzi.

Nick Arcade/Simon Wai

21 Sierpnia i później

Jedyna różnica w grafice Tailsa to dodatkowy blask jego wirującego sprite'a.

Badniki#

Nick Arcade/Simon Wai

21 Sierpnia i później

Sprite Buzzera został nieco poprawiony między buildem Simona Wai a 21 sierpnia: jego głowa została przeprojektowana, aby była mniej podobna do mrówki, dodano więcej szczegółów do brzucha, a dysze zostały wyprostowane.

Nick Arcade to August 21st

14 Września Prototyp

CENSOR dalej

Wczesny sprite Crawla (0xA9580 w pamięci ROM) bardzo różni się od ostatecznego projektu, brakuje mu jakiejkolwiek animacji chodzenia i jest w stanie unieść tarczę tylko w jednym kierunku.

Inne Sprite'y#

Nick Arcade

Simon Wai dalej

Wszystkie trzy drogowskazy były pierwotnie symetryczne. Ostatecznie symetryczny pizostał tylko Robotnik.

Nick Arcade

Simon Wai i dalej

Pod addressem 0xA3C16 jest sprite czegoś, co wygląda jak łamliwe klocki z Sonic 1. Jest tak ogólny, że mógłby być na każdym etapie, ale najbardziej przypomina klocki Hill Top. Były to z Sonic 1, a także tam nieużywane.

Nick Arcade

Simon Wai i dalej

Pod addressem 0xA4368 jest grafika przedstawiająca kulę ognia. Boss Hill Top w finalnej grze może strzelać ognistymi kulami, ale te kule ogniste rosną i kurczą się oraz mają trzy klatki animacji. Starszy sprite byłby prawdopodobnie ożywiony jak ogniste kule w Strefie Marble w Sonic 1: Sonic2NickFireball.gif

(Źródło‏‎: Sonic Retro, orginalne badania TCRF)

Nieużyte grafiki#

Sonic#

Grafika

ID Klatki

Opis

Sonic2proto_LookingAtYou.png Sonic2TurnAnim.gif

0A-0B

Niewykorzystane sprite'y obracania się Sonic. Deweloperzy mogli mieć zamiar by Sonic obracał się podczas zmiany kierunku zamiast natychmiastowego zwrócenia się w drugą stronę, lub być może jest to zwycięska poza podobna do znaku celu Sonica w tej wersji.

40-43
4C-4F
58-5B
64-67

Sprite'y dla Sonica poruszającego się jeszcze szybciej niż normalnie.

44-47
50-53
5C-5F
68-6B

Więcej sprite'ów dla Sonica prawdopodobnie osiągającego maksymalną prędkość. Spójrz na niego, jak tylko wystawia głowę. Tails ma animację pełnej prędkości, chociaż jedyną zmianą jest to, że jego dwa ogony używają tylko dwóch sprite'ów.

7B-7D

Niewykorzystana animacja Sonica ciągnącego lub niosącego coś. Mogły być zaplanowane elementy puzzlowe polegające na ciągnięciu lub przenoszeniu rzeczy.

8B-8C

Nieużywana animacja balansowania przez Sonica na krawędzi. Prawdopodobnie miało to być używane, gdy graczowi brakowało zaledwie kilka pikseli od upadku. Wygląda podobnie do animacji balansowania na krawędzi widzianej w Sonic the Hedgehog 3.

Pozostałe#

Grafika

Offset

Kompresja

Opis

0x27098

Żadna

Element tła przedstawiający jaskinię przesłoniętą stalagmitami (i stalaktytami), a nie dziwną fioletową plamę. Używana we wczesnej wersji tła Hidden Palace widocznego na próbnym zrzucie, ale nie w żadnym prawdziwym (znanym) prototypie.

Sonic2NickChemAnim.gif Sonic2NickChemBelt.gif

0x27798

Żadna

Animowane kafelki, które nie są ładowane w żadnej strefie, ale wydają się całkiem dobrze pasować do palety poziomu Zakładów Chemicznych. Kod źródłowy pozostawiony z wcześniejszej wersji Sonic 2 sugeruje, że miały one zostać załadowane do pamięci VRAM w Chemical Plant Act 3 dla bossa. Boss Zakładów Chemicznych był określany jako „vacume” w pozostałym kodzie źródłowym i z jakiegoś powodu został usunięty, a cały jego unikalny kod został usunięty z tej kompilacji.

Sonic2NickPropeller.gif Sonic2NickLiquid.gif

0x27DD8

Żadna

Więcej animowanych kafelków przy użyciu palety Chemical Plant. W końcowej grze nie ma żadnych śmigieł ani wody na pierwszym planie

0xA44A0

Nemesis

Coś co wygląda jak płonący kawałek czegoś. Wczesne grafiki koncepcyjne przedstawiają pszczołę podobną do Buzzera, która może niszczyć mosty, spalając je ognistymi kulami — to może być pozostałość tego pomysłu.

0xA4BCE

Nemesis

To jest jednokierunkowa brama Hill Top. Jest identyczna z tą w finalnej grze, po prostu nie została jeszcze zakodowana.

0xA5826

Nemesis

Grafika dla obiektu Hidden Palace, prawdopodobnie pływającej platformy. Nie jest jasne, w jaki sposób zostałyby zmontowane. Podobny obiekt jest widziany w reedycji z 2013 jako platforma wodna.

0xA59C0

Nemesis

Rozpraszająca się chmura, prawdopodobnie przeznaczona do źródeł pary w Strefie Metropolis.

0xA5D9E

Nemesis

Standardowy przełącznik Sonic 2 został już narysowany i zdigitalizowany w tym momencie, po prostu nie został jeszcze zakodowany.

0xA8CA0

Nemesis

Kręcąca się metalowa kulka. Widoczna na niektórych wczesnych grafikach koncepcyjnych – działałaby jako przeszkoda, stale podskakując po podłodze po wysokim łuku. Co ciekawe, kod dla tego obiektu jest zaimplementowany w kompilacji Alpha. Odbijała się w losowym kierunku raniąc gracza w przypadku dotknięcia, zmieniałby kierunek po dotknięciu ściany. Można ją znaleźć w reedycji z 2013 za pośrednictwem trybu debugowania, chociaż używa innej palety i eksploduje, gdy unosi się nad głową gracza.

Sonic2BubblerMother.gif Sonic2BubblerMotherProj.gif

0xA8F36

Nemesis

Niedokończony badnik o imieniu Bubbler's Mother. Latał po scenie, zrzucając na podłogę cząsteczki, które zamieniały się w Bubblery. Pojawiają się one również w wersji z 2013 za pośrednictwem trybu debugowania. W wersji z 21 sierpnia istnieje kod dla Bubbler's Mother, jednak pociski są niedokończone i nie tworzą Bubblerów. Zgodnie z grafiką koncepcyjną był przeznaczony dla „Chemical Factory Zone”, która ostatecznie stała się Chemical Plant Zone.

0xA9162

Nemesis

Bubbler upuszczony przez Bubbler's Mother. Przykleiłby się do podłogi, zanim eksplodował w trzy bąbelki. W kompilacji z 21 sierpnia istnieje niedokończony kod dla Bubblera. Zgodnie z grafiką koncepcyjną był przeznaczony dla „Chemical Factory Zone”, która ostatecznie stała się Chemical Plant Zone.

0xA9580

Nemesis

W duszkach Crawla jest coś, co wydaje się być skałami lub grudkami piasku. Crawl pierwotnie miał wyskoczyć z ziemi, a pod nim pojawił się piasek/skały. Pomysł został prawdopodobnie odrzucony po tym, jak Crawl został zmieniony na Strefę Casino Night. Co ciekawe, sprite jest używany w kompilacji z 21 sierpnia, jeśli zostanie przywrócona grafika Crawla. Piasek/skały były również widoczne w szkicu projektu Crawla.

Używany

Zamierzony

Badnik BBat używa palety 01, ale wygląda to trochę dziwnie. Jeśli jest ustawiony na używanie palety 00 (Paleta Sonica i Tailsa), kolory ucha i płomienia wyglądają o wiele lepiej. Nie zostało to naprawione w żadnej wersji gry, zanim jego grafika i kod zostały całkowicie usunięte z ROM-u.

(Źródło‏‎: Sonic Retro, Yawackhary, orginalne badania TCRF)

Nieużywane Obiekty#

Octus#

Sonic2Octus.png Sonic2NAOctusFloating.gif Sonic2NAOctusFiring.png
ID Obiektu: 4A

Ten badnik pojawia się w Strefie Oil Ocean w finalnej grze, choć jego zachowanie jest tutaj nieco inne:

  • W tej i wersji Simona Waia unosi 32 piksele z ziemi, wystrzeliwuje pojedynczy strzał w Sonica, a następnie szybko leci w lewo lub w prawo, aż zniknie.
  • We wszystkich innych wersjach po wystrzeleniu pocisku nie odleci, ale po prostu wyląduje na ziemi i powtórzy proces

Stego#

Sonic2StegoWalk.gif Sonic2StegoRun.gif
ID Obiektu: 4D

Badnik typu triceratops, który pojawił się na próbnym zrzucie ekranu Strefy Hidden Palace. Powoli porusza się w przód i w tył, a kiedy Sonic się do niego zbliża, aktywuje silniki i szarżuje na niego jak ślimak-badnik. Można go umieścić w Hidden Palace w trybie debugowania, ale jego grafika jest zniekształcona bez użycia kodu PAR.

Gator#

Sonic2Gator.gif
ID Obiektu: 4E

Badnik typu krokodyl, po raz pierwszy widziany na próbnym zrzucie ekranu z usuniętej strefy pustynnej, choć nie jest jasne, czy ten wróg miał się tam pojawić. Powoli porusza się w przód i w tył, otwierając szczęki, jeśli jest zwrócony w stronę Sonica i znajduje się w odległości 64 pikseli od niego. Można go umieścić używając debugowania w Strefie Hidden Palace, ale jego grafika jest zniekształcona bez użycia kodu PAR.

Aquis#

Do Zrobienia:
Uzyskaj materiał filmowy z ich zachowań.

Sonic2Aquis.png
ID Obiektu: 50, 51

Badnik konik morski ze Strefy Oil Ocean ma dwa różne warianty, z których żaden nie pasuje do tego, jak zachowuje się w końcowej grze.

Obiekt 50 ("Konik Morski"):

  • Porusza się po prostej ścieżce, od lewej do prawej iz powrotem. Zakres ruchu wynosi 16×(niższe cztery bajty podtypu) szerokości w pikselach.
  • Po upłynięciu 256×(górne cztery bajty podtypu) klatek czasu, „tryb strzelania” zostaje włączony. Jeśli Sonic zbliży się do badnika, gdy jest on w trybie strzelania, a Sonic jest w zasięgu wzroku, wystrzeli pojedynczy strzał, a następnie zeskoczy do współrzędnych Y 0398. Wydaje się, że ta wartość jest zakodowana na stałe.

:* Jeśli jego początkowa współrzędna Y jest większa niż 0398, powoli podniesie się do 0398. Następnie, gdy odda strzał, szybko wróci do swojej początkowej współrzędnej Y.

:* Jeśli górne cztery bajty podtypu to 00, zegar jest ustawiony na FFFF skutecznie uniemożliwiając strzelanie.

:* Zwróć uwagę na słowo „włączone”. Badnik może wyjść z trybu strzelania, jeśli minie wystarczająco dużo czasu.

Obiekt 51 (Konik powietrzny):

  • Porusza się jak pierwszy Aquis na ustalonej ścieżce, ale będzie również śledzić pozycję Y Sonica do pierwotnej wysokości odrodzenia.
  • Licznik odlicza czas dla każdej klatki, w której Sonic znajduje się w polu widzenia tego badnika. Jest to początkowo ustawione na 180 klatek. Gdy licznik osiągnie zero, wystrzeliwuje pojedynczy strzał w Sonica. Przed ponownym uruchomieniem timera strzału występuje dodatkowe 36 klatek opóźnienia.
  • W przeciwieństwie do finałowej gry, nie ma ograniczeń co do liczby pocisków, które ten wróg może wystrzelić.
  • Sonic2AquisAltBody.gif Wykorzystuje alternatywną grafikę ciała z rakietą zamiast płetwy. Grafika tego ciała została usunięta z jego zestawu klocków począwszy od wersji Beta 4.

BFish#

Sonic2NickBFish.gif Sonic2NickBFishJump.gif
ID Obiektu: 52

Badnik typu piranii. Poruszy się 32×(niższe cztery bajty podtypu) pikseli w prawo przed skokiem, a następnie wyskoczy wysokim łukiem. Dokładnie, jak to działa, zależy od jego początkowej i aktualnej pozycji Y:

  • Jeśli jego początkowa pozycja Y jest mniejsza lub równa 0380 (podobnie jak Aquis, wydaje się, że jest to zakodowane na sztywno), podskoczy, a następnie będzie spadać, aż osiągnie współrzędną Y 0380. Następnie wykona skoki z tej pozycji Y, aż zniknie.
  • Jeśli jego początkowa pozycja Y jest większa niż 0380, będzie animował się wolniej i podskakiwał po niższym łuku niż zwykle. Gdy osiągnie swoją początkową współrzędną Y, skacze ponownie.

Można go umieścić z pomocą debugowania w Strefie Hidden Palace, ale jego grafika jest zniekształcona bez użycia kodu PAR.

Lamppost#

Sonic2LamppostEarly.png Spr_lamppost.gif
ID Obiektu: 79

Jest to latarnia Sonic 1 o bardzo odmiennym designie niż ta widziana w ostatecznej wersji Sonic 2. Można ją umieścić w trybie debugowania w Strefach Emerald Hill i Hill Top. Pojawiają się w Emerald Hill, ale ich grafika jest zniekształcona.

Nieużywane Podtypy#

Monitory
Sonic2MonitorStatic.gif
00: Monitor statyczny. Po zniszczeniu nic nie robi. W końcowej wersji gry (gdzie również nie jest używany), zadaje obrażenia graczowi.

Sonic2MonitorEggman.png
03: Monitor Robotnik. Również nie robi nic w proto i uszkadza gracza w wersji finalnej, ale ten jest ostatecznie używany w trybie dla 2 graczy.

Sonic2MonitorQuestion.png
08: Tajemniczy monitor. Po zepsuciu nic nie robi... w tej wersji. W prototypie Simona Wai aktywuje paletę Super Sonic, a pozostałe atrybuty są później aktywowane w prototypach 21 sierpnia i przed beta, zanim zostaną zastąpione monitorem teleportacji w późniejszych wersjach.

Sonic2MonitorSpring.png
09: Sprężynowy monitor. Obecny tylko w tym prototypie i kompilacji Simona Wai, ale nie robi nic, gdy jest zniszczony. Dwa domysły, jak by mógł działać:

  • Jak monitor Pogo Spring w znacznie późniejszym Sonic the Hedgehog Triple Trouble, gdzie umieszcza Sonica/Tailsa na sprężynie pogo, która podskakuje w górę i w dół, dopóki nie odniosą obrażeń.
  • Zwiększono wysokość skoku gracza. Pomogłoby to wyjaśnić moce Super Sonica: jest niepokonany (pasuje do wzmocnienia z monitora niezwyciężoności) i ma zwiększoną prędkość (jak monitor Speed Shoes), ale nie ma monitora odpowiadającego jego zwiększonej wysokości skoku.

Platformy Chemical Plant Zone
Wydaje się, że kod w tej wersji został ponownie wykorzystany z obiektu 52 w Sonic 1, który został użyty do ruchomych bloków w strefach Marble, Labyrinth, i Scrap Brain. Podtypy 02-03 (klocek Marble Zone, który porusza się w prawo po nadepnięciu, a następnie spada, gdy uderza w solidną płytkę), 04-07 (ukryty blok w akcie 1 strefy labiryntu aktywowany przełącznikiem, który prowadzi do szybszej trasy), i 09-0A (platformy przesuwne w Strefie Scrap Brain) są nieużywane w tej kompilacji.

Boss

Watch on YouTube

00: Chemical Plant Zone boss. The code was completely removed and the pointers to it are set to 0. Leftover symbol data call the subobjects "bossvac" and "vacumeguy". Its graphics do remain in the ROM, alongside leftover entries for loading them. However, the code was rediscovered in the August prototype, and can be ported over to the Nick Arcade prototype. With just some small object ID and pointer fixes and restoration of those graphics load entries, it'll work just about right out of the box, as shown in the above video.

The behavior is different to the final, generally having slower movement.

Dziwności w Kodzie#

  • Gra ładuje układ i fragmenty Green Hill Zone z inną rutyną niż pozostałe etapy; próbuje również zastosować to do "Labyrinth Zone", ale nie działa z powodu wykorzystania danych Chemical Plant.
  • Rutyna ładowania animowanych kafelków poziomów zawiera listę etapów aż do $0F, chociaż jest tylko $06 poziomów (w tym zakończenie Sonic 1); wydaje się to sugerować, że programiści już przesuwali identyfikatory etapów, co dodatkowo potwierdza fakt, że Hidden Palace jest wymieniony jako $08, który jest jego slotem zaczynając od wersji Simona Wai i dalszych.
  • Jakoś, kompresja z Kid Chameleon znalazła się w kodzie, a nawet jest używana w kawałkach Green Hill!

Lista Obiektów/Kod Zródłowy#

Ogromną listę obiektów można znaleźć w pamięci ROM, wraz z surowym kodem źródłowym.

    addsym
    nolist
    include "equ.lib"
    include "macro.lib"
    list

    xref    colichgpat
    xref    ringpat,itempat,butapat,kanipat,hachipat,togepat
    xref    fishpat,fish2pat,mogurapat,shimapat2,jyamapat
    xref    musipat,sjumppat,kamerepat,arumapat,kagebpat,ballpat
    xref    firepat,fblockpat,signalpat,bobinpat,yoganpat,yogan2pat
    xref    usapat,yadopat,boxpat,bryukapat,daipat,break2pat,yogancpat
    xref    batpat,z5daipat,dai2pat,switch2pat,z4daipat
    xref    elevpat,pedalpat,steppat,funpat,sisoopat,hassyapat
    xref    brobopat,unipat,yaripat,udaipat,dai3pat,kazaripat,kassyapat
    xref    awapat,mizupat,boupat,benpat,fetamapat,mawarupat,hagurumapat
    xref    patapat,yukafpat,nokopat,dai4pat,doorpat,yukaepat,fire6pat
    xref    elepat,yukaipat,scolipat,imopat,savepat,bigringpat,btenpat
    xref    actionsub,actwkchk,frameout,playpat,dualmodesub
    xref    flicpat,usagipat,pengpat,azarpat,fbutapat,niwapat,risupat

    xref    kaitenpat,prodaipat,buranko0dpat
    xref    frntlitpat,gempat,wfallpat,pltfrmpat
    xref    takipat,banepat,dai00pat

    xref    redzpat,bfishpat,seahorsepat,horsepat
    xref    stegopat,wasppat,gatorpat,bbatpat,octpat,wfish2pat,snailpat

    xdef    edit

;------------------------------------------------------------------------------
edit:
    moveq   #0,d0
    move.b  editmode,d0
    move.w  edit_move_tbl(pc,d0.w),d1
    jmp edit_move_tbl(pc,d1.w)
edit_move_tbl:
    dc.w    editinit-edit_move_tbl
    dc.w    editmove-edit_move_tbl
editinit:
    addq.b  #word,editmode
    move.w  scralim_up,editstack
    move.w  scralim_n_down,editstack2
    move.w  #$0000,scralim_up
    move.w  #$0720,scralim_n_down
    andi.w  #$07ff,playerwk+yposi
    andi.w  #$07ff,scra_v_posit
    andi.w  #$03ff,scrb_v_posit
    move.b  #0,patno(a0)
    move.b  #0,mstno(a0)
    cmpi.b  #spgamemd,gmmode
    bne.b   .jump0
*   move.b  #7-1,stageno
*   move.w  #$000,rotspd
*   move.w  #$000,rotdir
    moveq   #7-1,d0
    bra.b   .jump1
.jump0:
    moveq   #0,d0
    move.b  stageno,d0
.jump1:
    lea edittbl,a2
    add.w   d0,d0
    adda.w  (a2,d0.w),a2
    move.w  (a2)+,d6
    cmp.b   editno,d6
    bhi.b   .jump
    move.b  #0,editno
.jump:
    bsr.w   editpatchg
    move.b  #12,edittimer
    move.b  #1,edittimer+1
editmove:
    moveq   #7-1,d0
    cmpi.b  #spgamemd,gmmode
    beq.b   .jump
    moveq   #0,d0
    move.b  stageno,d0
.jump:
    lea edittbl,a2
    add.w   d0,d0
    adda.w  (a2,d0.w),a2
    move.w  (a2)+,d6
    bsr.w   editwalk
*   bsr.w   dirsprset
    jmp actionsub
editwalk:
    moveq   #0,d4
    move.w  #1,d1
    move.b  swdata1+1,d4
    andi.w  #$0f,d4
    bne.b   .jump0
    move.b  swdata1,d0
    andi.w  #$0f,d0
    bne.b   .jump
    move.b  #12,edittimer
    move.b  #$0f,edittimer+1
    bra.w   .lend
.jump:
    subq.b  #1,edittimer
    bne.b   .jump1
    move.b  #1,edittimer
    addq.b  #1,edittimer+1
*   cmpi.b  #255,edittimer+1
    bne.b   .jump0
    move.b  #255,edittimer+1
.jump0:
    move.b  swdata1,d4
.jump1:
    moveq   #0,d1
    move.b  edittimer+1,d1
    addq.w  #1,d1
    swap    d1
    asr.l   #4,d1
    move.l  yposi(a0),d2
    move.l  xposi(a0),d3
    btst.l  #0,d4           *swdata+0
    beq.b   .jump2
    sub.l   d1,d2           *yposi
    bcc.b   .jump2
    moveq   #0,d2
.jump2:
    btst.l  #1,d4           *swdata+0
    beq.b   .jump3
    add.l   d1,d2           *yposi
    cmpi.l  #$7ff0000,d2
    bcs.b   .jump3
    move.l  #$7ff0000,d2
.jump3:
    btst.l  #2,d4           *swdata+0
    beq.b   .jump4
    sub.l   d1,d3           *xposi
    bcc.b   .jump4
    moveq   #0,d3
.jump4:
    btst.l  #3,d4           *swdata+0
    beq.b   .jump5
    add.l   d1,d3           *xposi
.jump5:
    move.l  d2,yposi(a0)
    move.l  d3,xposi(a0)
.lend:
    btst.b  #6,swdata1+0
    beq.b   .jump7
    btst.b  #5,swdata1+1        * c button check
    beq.b   .jump77
    subq.b  #1,editno
    bcc.b   .jump6
    add.b   d6,editno
    bra.b   .jump6
.jump77:
    btst.b  #6,swdata1+1
    beq.b   .jump7
    addq.b  #1,editno
    cmp.b   editno,d6
    bhi.b   .jump6
    move.b  #0,editno
.jump6:
    bra.w   editpatchg
.jump7:
    btst.b  #5,swdata1+1        * c button check
    beq.b   .jump8
    jsr actwkchk
    bne.b   .worknai        ;z=0:ok z=1:no
    move.w  xposi(a0),xposi(a1)
    move.w  yposi(a0),yposi(a1)
    move.b  patbase(a0),actno(a1)
    move.b  actflg(a0),actflg(a1)
    move.b  actflg(a0),cddat(a1)
    andi.b  #$7f,cddat(a1)
    moveq   #0,d0
    move.b  editno,d0
    lsl.w   #3,d0
    move.b  4(a2,d0.w),userflag(a1)
    rts
.worknai:
.jump8:
    btst.b  #4,swdata1+1        * b button check
    beq.b   .jump9
    moveq   #0,d0
    move.w  d0,editmode
    move.l  #playpat,playerwk+patbase
    move.w  #$0780,playerwk+sproffset
    tst.w   dualmode        ; dual mode check
    beq.b   .end
    move.w  #$0780/2,playerwk+sproffset
.end:
    move.b  d0,playerwk+mstno
    move.w  d0,xposi+2(a0)
    move.w  d0,yposi+2(a0)
    move.w  editstack,scralim_up
    move.w  editstack2,scralim_n_down
    cmpi.b  #spgamemd,gmmode
    bne.b   .jump9
*   clr.w   rotdir
*   move.w  #$040,rotspd
*   move.l  #playpat,playerwk+patbase
*   move.w  #$0780,playerwk+sproffset
    move.b  #02,playerwk+mstno
    bset.b  #cd_ball,playerwk+cddat
    bset.b  #cd_jump,playerwk+cddat
.jump9:
    rts
editpatchg:
    moveq   #0,d0
    move.b  editno,d0
    lsl.w   #3,d0
    move.l  0(a2,d0.w),patbase(a0)
    move.w  6(a2,d0.w),sproffset(a0)
    move.b  5(a2,d0.w),patno(a0)
*   move.b  4(a2,d0.w),userflag(a0)
    bsr.w   dualmodesub
    rts

dcblw   macro   \1,\2,\3,\4,\5
    dc.l    (\1)*$1000000+(\2)
    dc.w    (\4)+(\5)*$100
    dc.w    (\3)
    endm

edittbl:
    dc.w    edit1tbl-edittbl
    dc.w    edit2tbl-edittbl
    dc.w    edit3tbl-edittbl
    dc.w    edit4tbl-edittbl
    dc.w    edit5tbl-edittbl
    dc.w    edit6tbl-edittbl
    dc.w    edit7tbl-edittbl
edit1tbl:
    dc.w    14
    dcblw   ring_act,ringpat,$26bc,0,$00        ;1:
    dcblw   item_act,itempat,$0680,0,$00        ;2:
    dcblw   kani_act,kanipat,$0400,0,$00        ;3:
    dcblw   hachi_act,hachipat,$0444,0,$00      ;4:
    dcblw   fish_act,fishpat,$0470,0,$00        ;5:
    dcblw   toge_act,togepat,$04a0,0,$00        ;6:
    dcblw   shima_act,shimapat2,$4000,0,$00     ;7:
    dcblw   jyama_act,jyamapat,$66c0,0,$00      ;8:
    dcblw   musi_act,musipat,$04e0,0,$00        ;9:
    dcblw   sjump_act,sjumppat,$04a8,0,$00      ;10:
    dcblw   kamere_act,kamerepat,$249b,0,$00    ;11:
    dcblw   kageb_act,kagebpat,$434c,0,$00      ;12:
    dcblw   save_act,savepat,$26bc,0,$01        ;13:
    dcblw   colichg_act,colichgpat,$26bc,0,$00  ;14:

edit2tbl:
edit3tbl:
;zone0d
    dc.w    07
    dcblw   ring_act,ringpat,$26bc,0,$00        ;01:
    dcblw   item_act,itempat,$0680,0,$00        ;02:
    dcblw   sjump_act,sjumppat,$04a8,0,$00      ;03:
    dcblw   colichg_act,colichgpat,$07bc,0,$00  ;04:
    dcblw   kaiten_act,kaitenpat,$e000,0,$00    ;05:
    dcblw   prodai_act,prodaipat,$e418,0,$00    ;06:
    dcblw   buranko_act,buranko0dpat,$2418,0,$08    ;07:

edit4tbl:
;zone00
    dc.w    18
    dcblw   ring_act,ringpat,$26bc,0,$00        ;1:
    dcblw   item_act,itempat,$0680,0,$00        ;2:
    dcblw   save_act,savepat,$047c,0,$01        ;3:

    dcblw   colichg_act,colichgpat,$26bc,0,$00  ;6:
    dcblw   taki_act,takipat,$23ae,0,$00        ;7:
    dcblw   taki_act,takipat,$23ae,3,$02        ;7:
    dcblw   shima_act,dai00pat,$4000,0,$01      ;8:
    dcblw   shima_act,dai00pat,$4000,1,$0a      ;8:
    dcblw   toge_act,togepat,$2434,0,$00        ;10:
    dcblw   sisoo_act,sisoopat,$03ce,0,$00      ;9:

    dcblw   sjump_act,banepat,$045c,0,$80       ;3: banev
    dcblw   sjump_act,banepat,$0470,3,$90       ;3: baneh
    dcblw   sjump_act,banepat,$045c,6,$a0       ;3: banevr
    dcblw   sjump_act,banepat,$043c,7,$30       ;3: bane45
    dcblw   sjump_act,banepat,$043c,10,$40      ;3: bane45r

    dcblw   wasp_act,wasppat,$03e6,0,$00        ;25   ""    ""
    dcblw   snail_act,snailpat,$0402,0,$00      ;25   ""    ""
    dcblw   wfish2_act,wfish2pat,$041c,0,$00    ;21   ""    ""



    dcblw   redz_act,redzpat,$0500,0,$00        ;20: will change
    dcblw   bfish_act,bfishpat,$2530,0,$00      ;21   ""    ""
    dcblw   seahorse_act,horsepat,$2570,0,$00   ;22   ""    ""
    dcblw   skyhorse_act,horsepat,$2570,0,$00   ;23   ""    ""
    dcblw   stego_act,stegopat,$23c4,0,$00      ;24   ""    ""
    dcblw   wasp_act,wasppat,$032c,0,$00        ;25   ""    ""
    dcblw   gator_act,gatorpat,$2300,0,$00      ;26   ""    ""
    dcblw   bbat_act,bbatpat,$2350,0,$00        ;27   ""    ""
    dcblw   oct_act,octpat,$238a,0,$00      ;28   ""    ""

edit5tbl:
edit6tbl:
edit7tbl:
;zone08
    dc.w    15
    dcblw   ring_act,ringpat,$26bc,0,$00        ;1:
    dcblw   item_act,itempat,$0680,0,$00        ;2:

    dcblw   bgspr_act,frntlitpat,$e485,3,$21    ;3:
    dcblw   wfall_act,wfallpat,$e415,4,$04      ;4:
    dcblw   break_act,pltfrmpat,$4475,0,$00     ;5:
    dcblw   colichg_act,colichgpat,$26bc,0,$00  ;6:

    dcblw   redz_act,redzpat,$0500,0,$00        ;20: will change
    dcblw   bfish_act,bfishpat,$2530,0,$00      ;21   ""    ""
    dcblw   seahorse_act,horsepat,$2570,0,$00   ;22   ""    ""
    dcblw   skyhorse_act,horsepat,$2570,0,$00   ;23   ""    ""
    dcblw   stego_act,stegopat,$23c4,0,$00      ;24   ""    ""
    dcblw   wasp_act,wasppat,$032c,0,$00        ;25   ""    ""
    dcblw   gator_act,gatorpat,$2300,0,$00      ;26   ""    ""
    dcblw   bbat_act,bbatpat,$2350,0,$00        ;27   ""    ""
    dcblw   oct_act,octpat,$238a,0,$00      ;28   ""    ""

;------------------------------------------------------------------------------
    align
;------------------------------------------------------------------------------
    end


edit2tbl:
    dc.w    25
    dcblw   ring_act,ringpat,$26bc,0,$00        ;1:
    dcblw   item_act,itempat,$0680,0,$00        ;2:
    dcblw   sjump_act,sjumppat,$0523,0,$00      ;3:
    dcblw   fish2_act,fish2pat,$2486,0,$08      ;4:
    dcblw   mogura_act,mogurapat,$84a6,2,$00    ;5:
    dcblw   yari_act,yaripat,$03cc,0,$00        ;6:
    dcblw   yari_act,yaripat,$03cc,3,$02        ;7:
    dcblw   box_act,boxpat,$43de,0,$00      ;8:
    dcblw   switch2_act,switch2pat,$0513,0,$00  ;9:
    dcblw   toge_act,togepat,$051b,0,$00        ;10:
    dcblw   dai_act,udaipat,$43bc,0,$04     ;11:
    dcblw   dai3_act,dai3pat,$43e6,0,$01        ;12:
    dcblw   dai3_act,dai3pat,$43e6,1,$13        ;13:
    dcblw   dai3_act,dai3pat,$43e6,0,$05        ;14:
    dcblw   kazari_act,kazaripat,$443e,0,$00    ;15:
    dcblw   dai3_act,dai3pat,$43e6,2,$27        ;16:
    dcblw   dai3_act,dai3pat,$43e6,3,$30        ;17:
    dcblw   kassya_act,kassyapat,$03f6,0,$7f    ;18:
    dcblw   uni_act,unipat,$0467,0,$00      ;19:
    dcblw   awa_act,awapat,$8348,19,$84     ;20:
    dcblw   mizu_act,mizupat,$c259,2,$02        ;21:
    dcblw   mizu_act,mizupat,$c259,9,$09        ;22:
    dcblw   bou_act,boupat,$43de,0,$00      ;23:
    dcblw   ben_act,benpat,$4328,0,$02      ;24:
    dcblw   save_act,savepat,$26bc,0,$01        ;25:

*   dcblw   dai4_act,dai4pat,$41f0,4,$80        ;25:
edit3tbl:
    dc.w    18
    dcblw   ring_act,ringpat,$26bc,0,$00        ;1:
    dcblw   item_act,itempat,$0680,0,$00        ;2:
    dcblw   hachi_act,hachipat,$0444,0,$00      ;3:
    dcblw   toge_act,togepat,$051b,0,$00        ;4:
    dcblw   sjump_act,sjumppat,$0523,0,$00      ;5:
    dcblw   mfire_act,firepat,$0345,0,$00       ;6:
    dcblw   fblock_act,fblockpat,$4000,0,$00    ;7:
    dcblw   myogan_act,yoganpat,$63a8,0,$00     ;8:
    dcblw   yogan2_act,yogan2pat,$63a8,0,$00    ;9:
    dcblw   box_act,boxpat,$42b8,0,$00      ;10:
    dcblw   yado_act,yadopat,$247b,0,$00        ;11:
    dcblw   bryuka_act,bryukapat,$42b8,0,$00    ;12:
    dcblw   dai_act,daipat,$02b8,0,$00      ;13:
    dcblw   break2_act,break2pat,$62b8,0,$00    ;14:
    dcblw   yoganc_act,yogancpat,$8680,0,$00    ;15:
    dcblw   bat_act,batpat,$04b8,0,$00      ;16:
    dcblw   imo_act,imopat,$24ff,0,$00      ;17:
    dcblw   save_act,savepat,$26bc,0,$01        ;18:
edit4tbl:
    dc.w    15
    dcblw   ring_act,ringpat,$26bc,0,$00        ;1:
    dcblw   item_act,itempat,$0680,0,$00        ;2:
    dcblw   elev_act,elevpat,$4000,0,$00        ;3:
    dcblw   break2_act,break2pat,$44e0,2,$00    ;4:
    dcblw   shima_act,z4daipat,$4000,0,$00      ;5:
    dcblw   pedal_act,pedalpat,$4000,0,$00      ;6:
    dcblw   step_act,steppat,$4000,0,$00        ;7:
    dcblw   fun_act,funpat,$43a0,0,$00      ;8:
    dcblw   sisoo_act,sisoopat,$0374,0,$00      ;9:
    dcblw   sjump_act,sjumppat,$0523,0,$00      ;10:
    dcblw   mfire_act,firepat,$0480,0,$00       ;11:
    dcblw   bgspr_act,hassyapat,$44d8,0,$00     ;12:
    dcblw   brobo_act,brobopat,$0400,0,$00      ;13:
    dcblw   uni_act,unipat,$2429,0,$00      ;14:
    dcblw   save_act,savepat,$26bc,0,$01        ;15:
edit5tbl:
    dc.w    15
    dcblw   ring_act,ringpat,$26bc,0,$00        ;1:
    dcblw   item_act,itempat,$0680,0,$00        ;2:
    dcblw   toge_act,togepat,$051b,0,$00        ;3:
    dcblw   sjump_act,sjumppat,$0523,0,$00      ;4:
    dcblw   aruma_act,arumapat,$04b8,0,$00      ;5:
    dcblw   signal_act,signalpat,$0000,0,$00    ;6:
    dcblw   bobin_act,bobinpat,$0380,0,$00      ;7:
    dcblw   kani_act,kanipat,$0400,0,$00        ;8:
    dcblw   hachi_act,hachipat,$0444,0,$00      ;9:
    dcblw   yado_act,yadopat,$247b,0,$00        ;10:
    dcblw   shima_act,z5daipat,$4000,0,$00      ;11:
    dcblw   dai2_act,dai2pat,$4000,0,$00        ;12:
    dcblw   switch2_act,switch2pat,$0513,0,$00  ;13:
    dcblw   imo_act,imopat,$24ff,0,$00      ;14:
    dcblw   save_act,savepat,$26bc,0,$01        ;15:
edit6tbl:
    dc.w    29
    dcblw   ring_act,ringpat,$26bc,0,$00        ;1:
    dcblw   item_act,itempat,$0680,0,$00        ;2:
    dcblw   brobo_act,brobopat,$0400,0,$00      ;3:
    dcblw   uni_act,unipat,$0429,0,$00      ;4:
    dcblw   imo_act,imopat,$22b0,0,$00      ;5:
    dcblw   buranko_act,fetamapat,$4391,2,$07   ;6:
    dcblw   haguruma_act,hagurumapat,$c344,00,$e0   ;7:
    dcblw   dai_act,daipat,$22c0,2,$28      ;8:
    dcblw   switch2_act,switch2pat,$0513,0,$00  ;9:
    dcblw   pata_act,patapat,$4492,0,$03        ;10:
    dcblw   pata_act,yukafpat,$04df,0,$83       ;11:
    dcblw   noko_act,nokopat,$43b5,0,$02        ;12:
    dcblw   break2_act,break2pat,$43f5,0,$00    ;13:
    dcblw   dai_act,daipat,$4460,3,$39      ;14:
    dcblw   dai4_act,dai4pat,$22c0,0,$00        ;15:
    dcblw   door_act,doorpat,$42e8,0,$00        ;16:
    dcblw   dai4_act,dai4pat,$22c0,1,$13        ;17:
    dcblw   noko_act,nokopat,$43b5,0,$01        ;18:
    dcblw   dai4_act,dai4pat,$22c0,1,$24        ;19:
    dcblw   noko_act,nokopat,$43b5,2,$04        ;20:
    dcblw   dai4_act,dai4pat,$22c0,1,$34        ;21:
    dcblw   yukae_act,yukaepat,$44c3,0,$00      ;22:
    dcblw   fire6_act,fire6pat,$83d9,0,$64      ;23:
    dcblw   fire6_act,fire6pat,$83d9,11,$64     ;24:
    dcblw   ele_act,elepat,$047e,0,$04      ;25:
    dcblw   yukai_act,yukaipat,$42f0,0,$00      ;26:
    dcblw   scoli_act,scolipat,$8680,0,$11      ;27:
    dcblw   buta_act,butapat,$2302,0,$04        ;28:
    dcblw   save_act,savepat,$26bc,0,$01        ;29:

*   dcblw   ring_act,playpat,$0780,50,$00       ;28:
*   dcblw   usa_act,usapat,$0448,0,$00      ;5:
*   dcblw   mawaru_act,mawarupat,$4348,16,$00   ;7:

edit7tbl:
    dc.w    02  *13
    dcblw   ring_act,ringpat,$26bc,0,$00        ;1:
    dcblw   ring_act,ringpat,$26bc,8,$00        ;2:
*   dcblw   bobin_act,bobinpat,$0380,0,$00      ;2:
*   dcblw   usagi_act,flicpat,$05a0,0,$0a       ;3
*   dcblw   usagi_act,flicpat,$05a0,0,$0b       ;4
*   dcblw   usagi_act,flicpat,$05a0,0,$0c       ;5
*   dcblw   usagi_act,usagipat,$0553,0,$0d      ;6
*   dcblw   usagi_act,usagipat,$0553,0,$0e      ;7
*   dcblw   usagi_act,pengpat,$0573,0,$0f       ;8
*   dcblw   usagi_act,pengpat,$0573,0,$10       ;9
*   dcblw   usagi_act,azarpat,$0585,0,$11       ;10
*   dcblw   usagi_act,fbutapat,$0593,0,$12      ;11
*   dcblw   usagi_act,niwapat,$0565,0,$13       ;12
*   dcblw   usagi_act,risupat,$05b3,0,$14       ;13

Warto zwrócić uwagę na tę grupę kodu:

   dcblw   redz_act,redzpat,$0500,0,$00        ;20: will change
    dcblw   bfish_act,bfishpat,$2530,0,$00      ;21   ""    ""
    dcblw   seahorse_act,horsepat,$2570,0,$00   ;22   ""    ""
    dcblw   skyhorse_act,horsepat,$2570,0,$00   ;23   ""    ""
    dcblw   stego_act,stegopat,$23c4,0,$00      ;24   ""    ""
    dcblw   wasp_act,wasppat,$032c,0,$00        ;25   ""    ""
    dcblw   gator_act,gatorpat,$2300,0,$00      ;26   ""    ""
    dcblw   bbat_act,bbatpat,$2350,0,$00        ;27   ""    ""
    dcblw   oct_act,octpat,$238a,0,$00      ;28   ""    ""

Te wiersze kodu znajdują się w bloku, który tworzy listę debugowania Strefy Hidden Palace z wcześniejszej kompilacji. Zawartość listy wydaje się być identyczna z faktycznie skompilowaną wersją w pamięci ROM; jednak daje nam informacje o obiektach w Strefie, które mogły być wcześniej nieznane:

  • Redz to czerwony badnik T-rex, który pojawia się w Hidden Palace.
  • Bfish to skaczący rybny badnik, którego nie używał prototyp Simona Wai.
  • Seahorse to Aquis, morski badnik, który ostatecznie był w Strefie Oil Ocean.
  • Skyhorse jest najprawdopodobniej drugim obiektem Aquis na liście debugowania Hidden Palace (wersja, która wystrzeliwuje nieszkodliwy pocisk).
  • Stego to badnik triceratops, którego nie używał prototyp Simona Wai.
  • Wasp to Buzzer, pszczoła badnik, która znajduje się w Emerald Hill we wszystkich znanych wersjach „Sonic 2”. W tym prototypie ma również miejsce na liście debugowania Hidden Palace.
  • Gator to aligator/krokodyl badnik, którego nie używa prototyp Simona Wai.
  • Bbat to nietoperz bombardujący, który pojawia się w Strefie Hidden Palace.
  • Oct to Octus, ośmiornicowy badnik, który ostatecznie był w Strefie Oil Ocean.

Te same wiersze są zduplikowane na liście debugowania Emerald Hill, ale nie są używane, ponieważ gra jest poinformowana, że lista debugowania Emerald Hill będzie zawierała 18 wpisów, a wszyscy wrogowie z Hidden Palace znajdują się po wpisie numer 18.

Ten fragment nieskompilowanego kodu wskazuje również, że kolejność stref obecna w tej kompilacji zostanie zmieniona nawet na tym wczesnym etapie. Lista debugowania Emerald Hill jest oznaczona jako Strefa 00, co oznacza Zielone Wzgórze w tej kompilacji, ale Emerald Hill w późniejszych kompilacjach. Podobnie Hidden Palace jest oznaczony jako Strefa 08, gdzie znajduje się w późniejszych kompilacjach i finalnie.

Drugi zestaw etykiet editXtbl wydaje się odpowiadać listom debugowania „Sonic 1”, ale nie pasuje dokładnie do żadnej istniejącej wersji. Warto zauważyć, że listy edit2tbl i edit6tbl mają wpisy poprzedzone gwiazdkami, które nie pojawiają się w ostatecznej wersji gry. Wpisy oznaczone gwiazdką w edit7tbl istnieją tylko w Sonic 1 REV00.

Misc. Leftovers/Earlier Versions of Objects#

Inside the ROM, mixed in with the symbol tables and debug mode source code is what appears to be leftover RAM contents from the assembler that includes additional symbols, and also assembled code. What should be noted is that the data is from a previous build, and some objects do indeed have different code.

Emerald Hill Zone Boss#

Watch on YouTubeDifferences include different positioning, a lack of hitbox for the drill, and a weird bobbing movement for the ship's body. The wheels also do not detect floor collision until they fall off the body.

References#


  1. https://segaretro.org/index.php?title=File:Famitsu_JP_0184.pdf&page=8↩︎