Robbo - jak to działa?

Tomek "Scrap" Michniewicz
tomko1@wp.pl

Czy pamiętasz może z C64 taką grę, jak Robbo? Nie? Nie?! Robbo to świetna (jedna z najlepszych) gier logiczno - zręcznościowych, z niesamowitą muzyką i niezłą oprawą graficzną! Grę wydało L.K Avalon w 1993 roku, a autorem jest Sebastian Nowak. Pomysł nie był jednak niczym nowym - istniała wersja tej gry na ATARI (nawiasem pisząc, jest ona lepsza niż wersja C64, ale nie o tym...). Gra składa się z 76 plansz. Poruszamy się małym robocikiem, którego zadaniem jest zebranie odpowiedniej liczby śrubek a następnie przedostanie się do wehikułu. Przeszkadzają mu w tym różne stwory, lasery, itd... No, ale nie ma sensu się rozpisywać, najlepiej samemu to zobaczyć - gra Robbo jest tutaj!

Gramy!
Uruchom Robbo. Na samym początku znajdziesz opis, mówiący na czym gra polega. Obowiązkowo trzeba przejść kilka plansz! Już? No dobrze, poczekam jeszcze chwilkę... :) Ogólnie rzecz biorąc, plansze w Robbo wersji Commodore są trudniejsze niż te z Atari. Może zdarzyć się tak, że w końcu zabraknie nam "żyć" albo naboi, nie będziemy mogli poradzić sobie z przejściem jakiejś planszy. Co zrobić, jeżeli utkniemy gdzieś w grze? Mówi się, że prawdziwy gracz nie oszukuje, nie używa kodów ani cheatów. Ale jeżeli tak w celach naukowo-dydaktycznych...? :)

Jak żyć wiecznie?
...albo strzelać w nieskończoność? :) Opiszę tu mój sposób na sprawienie, aby w Robbo mieć dowolną ilość "żyć" albo naboi. Idea jest następująca: w emulatorze Vice mamy możliwość zapisania całej pamięci. Zapisujemy więc stan pamięci na samym początku pierwszej planszy (np. w pliku first.txt). Zbieramy nabój. Mamy więc 8 żyć i 9 naboi, zgoda? Teraz tracimy życie (można np. strzelić w bombę - najlepeij wymyśl swój własny sposób na stracenie jednego ludzika :) Mamy już tylko 7 żyć. Zbierz nabój i wystrzel jeden. Mamy więc 7 żyć i 8 naboi. Teraz zrób zapis całej pamięci (np. w pliku second.txt). Wykorzystując dowolny program potrafiący porównywać dwa pliki, szukamy miejsca, w którym się różnią - takich miejsc będzie wiele, ale nas interesują tylko te, gdzie znajdują się informacje o ilości żyć i naboi.

Po kolei: zrób dwa wyżej wymienione pliki (Alt-M wchodzisz do monitora a potem komenda save "first.txt" 0 FFFF zapisujesz całą pamięć do pliku) Teraz porównujemy pliki - ja korzystałem z programiku Compare Files. Programik jest pod DOS, wiec w trybie MS-DOS przechodzimy do katalogu, gdzie jest program oraz nasze zapisy pamięci i wpisujemy: cmpfiles first.txt second.txt. Miejsca, w których pliki się różnią, są podświetlone. Przeglądamy je po kolei. Mamy szczęście - już na samym początku znajdujemy miejsca, o które nam chodzi! Ilustruje to poniższy rysunek:

Jak widać, informacja o ilości żyć jest przechowywana w komórce pamięci $A6, ilość naboi w $A5. Prawie. Ze względu na sposób zapisu pamięci do pliku w VICE od tych adresów należy odjąć $02. Czyli ilość żyć jest zapisana w $A4, ilość naboi w $A3. Podczas gry możesz wprowadzić tam dowolne wartości rozkazem monitora, np. >A4 02 (czyli dwa życia). Wprowadzone wartości nie wyświetlają się od razu na ekranie - w naszym przykładzie nowa ilość żyć pojawi się dopiero po straceniu jednego, ale cały czas jest "widziana" przez grę.

Uwaga! W tym rejonie pamięci znajdują się też inne ciekawe informacje np. komórka $A7 zawiera informację o ilości śrubek, którą należy zebrać!

Jak szybko możesz przejść planszę?
Czasem plansza jest bardzo trudna, prawie nie do przejścia. Brakuje Ci tylko jednej śrubki, ale nie można się do niej dostać. Co robić? Mój pomysł: zmienić ilość koniecznych do zebrania  śrubek na zero i gnać do wehikułu :) Wystarczy komenda >$A7 00 (patrz wyżej). To najlepszy sposób, aby opuścić planszę bez zbierania śrubek.

A co jeśli nie można dojść do wehikułu? Proste - trzeba sprawić, żeby wehikuł przyszedł do nas! :) Poniższy tekst jest właśnie o tym, jak edytować planszę w grze Robbo. Będąc w monitorze przejrzyj (m 800) pamięć od adresu $800 i dalej. Co widać? Dużo siódemek ($37) zer, i parę innych znaków w kolejnych obszarach pamięci. Jak dla mnie to dane o każdej planszy (o ich wyglądzie, jakie przedmioty się na nich znajdują) Siódemki to nic innego jak ściany, zera to wolne miejsca. Ze względu na sposób wyświetlania danych w Vice nie wygląda to na planszę (VICE wyświetla 12 znaków w rzędzie, a plansza ma 16 znaków w rzędzie) ale nią jest. Zobacz to:

plansza wyświetlana
w VICE (12x43)


rzeczywisty wygląd
planszy (16x32)


777777777777
77777.......
..&....77..6
......&..9.7
7.....(...&&
&&&77.......
.......77<..
...........7
777777:77777
77777.......
7......77...
....7.(....7
7.......7...
...77....;..
7...>..77...
....7......7
7.......7...
...77.......
.&77777777&7
7777777....7
7....&..&...
7..77&...&.&
....7..77777
777777777.>7
7......7....
...77.9....7
.......77...
$..7..;....7
7......7....
...77......7
.......77!!!
!!!7.......7
7......7....
...77.....77
7......77...
..7(7......7
7.....7:7...
...77.(.....
.......77...
...........7
7...........
;..777777777
77777777

7777777777777777
7.........&....7
7..6......&..9.7
7.....(...&&&&&7
7..............7
7<.............7
777777:777777777
7.......7......7
7.......7.(....7
7.......7......7
7....;..7...>..7
7.......7......7
7.......7......7
7........&777777
77&77777777....7
7....&..&...7..7
7&...&.&....7..7
7777777777777.>7
7......7.......7
7.9....7.......7
7...$..7..;....7
7......7.......7
7......7.......7
7!!!!!!7.......7
7......7.......7
7.....777......7
7.....7(7......7
7.....7:7......7
7.(............7
7..............7
7...........;..7
7777777777777777

Plansze (wszystkie 76) znajdują się kolejno w blokach po $200 komórek począwszy od $900. Jeśli zmienisz te obszary, to zmienisz inne plansze, ale nie tą aktualnie wyświetlaną na ekranie. Dlaczego? Plansza, w którą aktualnie grasz znajduje się w pamięci od $C000. Przy przejściu na kolejny poziom odpowiednia plansza jest ładowana z pamięci właśnie w ten obszar. Zmiany tutaj będą widoczne również na ekranie. Skąd wiadomo, jakie wartości wstawiać? Obserwacja. Zobacz na pierwszej planszy (lub innej) jakim rzeczom na ekranie odpowiadają jakie kody. Przykład: $3B to bomba, $3D klucz, $3C naboje... i jak już wcześniej było widać $37 to ściana.

To jak szybko przejść planszę? Ustaw ilość śrubek na zero (patrz wyżej) i umieść wehikuł obok robocika.  Wehikuł umieścimy na pierwszej planszy w drugim rzędzie i trzeciej kolumnie rozkazem >C012 24. Drugi rząd, czyli $C000 + $10 (bo każdy rząd dzieli się na 16 kolumn; $10 = 16) + $02 (trzecia kolumna, bo $C010 to 1 kolumna drugiego rzędu) = $C012; $24 to kod wehikułu. Uff... gotowe :)  I to właściwie podstawowe niezbędne informacje na temat manipulowania planszą. Zachęcam do samodzielnego próbowania.

Podsumowanie.
Wiesz już jak regulować ilość żyć i naboi, wiesz jak edytować plansze w grze Robbo. Nic nie stoi na przeszkodzie, abyś stworzył swoje planety dla robocika! Niestety, ręczne edytowanie pamięci jest bardzo żmudne. Znając sposób konstrukcji planszy możesz ją edytować chociażby w Notatniku (ale nie do końca). Jeśli ktoś jest zainteresowany tą naprawdę świetną grą - proszę o kontakt. Powstaje właśnie wersja Robbo dla Windows ulepszony pod względem grafiki oraz edytor/konwerter do plansz z C64.

Ciekawostka.
Przeglądając pamięć w $B700 natrafiamy na tekst: "NO I CZEGO TUTAJ SZUKASZ??????? I TAK NIC NIE ZNAJDZIESZ !!!!!!". Myślę, że powyższy tekst pokazał, że jednak coś można w pamięci znaleźć... i zmienić!

Komendy monitora.
> [adres] [wartość] - wstawia do komórki pamięci o podanym adresie daną wartość
m [adres] - wyświetla zawartość pamięci począwszy od komórki o danym adresie

 © 1999-2020 Wszystkie prawa zastrzeżone
 Webmaster: Mariusz "Flooder" Młynek