Nå kan du for første gang laste ned en engelsk versjon av japanske Cavern 2160 for retrodatamaskinen Sharp MZ-80A.
Jeg har noen ganger sagt at japanske selskaper som Nintendo får litt for mye fokus i moderne beretninger om spillenes historie, og at det for min egen del er vanskelig å kjenne seg igjen i bildet som ofte males av hvordan spillverdenen så ut da jeg var ung. Men det samme problemet finner faktisk også sted når den japanske spillhistorien diskuteres. Japan på åtti- og nittitallet var nemlig mye mer enn bare konsoll- og arkadespill, og spesielt tidlig på åttitallet foregikk mye av utviklingen i den japanske spillscenen på ulike hjemmedatamaskiner som så godt som aldri nevnes i dag.
En av disse plattformene var Sharp MZ-80-serien, som jeg har snakket en god del om tidligere her på Spillhistorie.no. Den ble debuterte så tidlig som i 1978, og mye av den tidlige, japanske spillutviklingen foregikk nettopp her. Som i Europa og USA, var markedet for kommersielle spill for datamaskiner relativt begrenset, men til gjengjeld hadde man en rik «indie»-scene, sentrert rundt ulike datablader som hver måned publiserte en rekke dataspill i form av tekstlistinger man kunne skrive inn på egne datamaskiner.
Et spill som ble distribuert på den måten het Cavern, og ble opprinnelig laget av Takaya Arita. Det er en slags forgjenger til klassikere som Dig Dug, der du styrer en liten mann som må beskytte en underjordisk base mot slanger som angriper fra overflaten. Cavern ble nylig relansert som Cosmic Cavern 3671 på Steam av den japanske veteranutvikleren Mindware, med Mikito Ichikawa i spissen, og som en gammel Sharp MZ-80A-eier bet jeg meg umiddelbart merke i tittelen. Jeg har i ettertid publisert et stort intervju med Ichikawa her på Spillhistorie.no.
Umulig å finne på nettet
Jeg prøvde å finne en kopi av originalspillet på nettet, siden jeg hadde lyst til å teste det på min egen Sharp MZ-80A, men det viste seg vanskelig. Jeg mistenker nok at det ligger på en eller annen japansk FTP et sted, men ingen engelskspråklige nettsteder hadde noe som helst av informasjon om originalen, og mine forsøk med japanske sider strandet også. Men via Ichikawa fikk jeg tilgang på originalkoden slik den ble publisert i det japanske bladet IO Magazine i juli 1980, og jeg bestemte meg for å prøve å skrive inn koden på min egen maskin. På den måten fikk jeg ikke bare det originale spillet på (nesten) original maskinvare, men jeg fikk faktisk den autentiske opplevelsen kjøpere av IO Magazine fikk da spillet først kom ut.
Så dagen etter at jeg hadde fått tilsendt noen bilder av sidene med koden i bladet, printet den ut, lastet inn BASIC SA-5510 på min Sharp MZ-80A, og satte i gang.
I ettertid skal jeg innrømme at jobben tok litt mer tid enn forventet. Koden var veldig kompakt, blant annet fordi man hadde kuttet ut alt av mellomrom mellom kommandoene, og fordi de fleste linjene var rimelig lange. Begge disse tingene ble gjort for å spare minne – hvert tegn koden består av krever én byte med minne, og dette inkluderer også ubrukelige mellomrom. På en plattform der hver byte teller, kan det være lurt å fjerne dem. Men det har det resultatet at koden både blir vanskeligere å lese, og mer knotete å skrive inn. Så fremt det var mulig, la jeg inn mellomrom selv – min Sharp MZ-80A har enorme 48 kb med minne, så jeg ofret gladelig det ekstra minnet for økt lesbarhet av koden.
I tillegg til at det tok tid å skrive koden inn, tok det også mye tid å debugge den etterpå. De fleste feilene kom fordi jeg hadde lagt inn noen strategiske skriveleifer rundt forbi, men bare et fåtall av dem resulterte i klare feilmeldinger som pekte på det nøyaktige stedet feilen var skrevet inn. Resten av problemene måtte jeg gjette meg til hvor lå, basert på hva det var som feilet eller oppførte seg rart i spillet. Det hadde utvilsomt vært lettere om jeg var flinkere til å programmere, men jeg måtte virkelig jobbe for å forstå denne koden.
Samtidig var det noen situasjoner der problemet rett og slett lå i at spillet var skrevet for en annen versjon av BASIC, for en annen Sharp-modell og for et annet språk. Spillet brukte for eksempel POKE-kommandoen for å legge inn japansk tekst ved flere anledninger, men siden min maskin ikke har japansk tekst, ble det bare noe tull ut av det. Heldigvis var det en grei feil å rette, og takket være Mikito Ichikawas engelskspråklige Steam-versjon hadde jeg også en god idé om hva jeg skulle putte inn i stedet.
Det mest uforståelige problemet, som jeg måtte få hjelp til å fikse av Ben Coffer, kom gjennom en bit med maskinkode som var implementert i spillet for å få en spesiell lydrutine til å gå glatt. Her nektet BASIC å godta en kommando som skulle reservere en viss porsjon av minnet for maskinvarerutinene, og vi klarte ikke å skjønne hvorfor. Koden så nemlig ut til å fungere fint separat, men verken meg eller Coffer fikk det til å fungere i selve spillet. Til slutt ble problemet løst ved at vi rett og slett bare fant noen andre minneaddresser å bruke – dette var Coffers idé.
Noen små forbedringer
Selv om jeg ønsket å lage en versjon som var så trofast mot originalen som mulig, endte jeg opp med å gjøre noen endringer i koden (utover det som var nødvendig for å få spillet til å fungere på MZ-80A). For eksempel har Sharp MZ-80A et nummertastatur, noe Sharp MZ-80K ikke hadde. Ved å flytte kontrollene over fra de originale knappene til nummertastaturet, gjorde jeg spillet en god del mer komfortabelt å spille. Jeg endret også koden slik at man kan holde inne bevegelsesknappene for å kontinuerlig flytte figuren i én retning, i stedet for å trykke om og om igjen. Det var også med å gjøre spillet litt mer komfortabelt.
En ting det er vanskelig å ikke legge merke til når man spiller spillet, er den lave hastigheten. Ting skjer i sneglefart, og i starten tenkte jeg at det kanskje var feil i koden som gjorde det så treigt. Men jeg fant en video av originalen på MZ-80K, og den er like langsom, så det er nok bare det faktum at spillet er laget i BASIC som gjør at hastigheten er så lav. Men takket være et kompileringsverktøy laget av en utvikler ved navn Uwe Maxim på åttitallet, kunne jeg kompilere spillet til maskinkode, noe som økte hastigheten betraktelig. Resultatet ble faktisk rimelig spillbart!
Samtidig tok Coffer kontakt med originalskaperen Takaya Arita, som fortalte at han ikke hadde noe imot om vi la spillet ut på nettet. Ved hjelp av en Plexgear Tape Digitizer (og Audacity på PC-en), kunne jeg overføre dataen spillet består av til PC, og med et program som heter MFZ Studio kunne jeg gjøre den resulterende WAV-filen om til en fil som både kan leses av emulatorer, og overføres til WAV og dermed tilbake til kassetter og ekte maskinvare igjen. Vi valgte å gjøre både den kompilerte versjonen og BASIC-filen tilgjengelig. På den måten kan folk velge om de vil ha den mest spillbare versjonen, eller en versjon som de kan studere koden til (og modifisere selv) om de ønsker.
Nå er spillet tilgjengelig for nedlasting via Ben Coffers nettsted, og dermed har vi gjort en liten innsats for å bevare og tilgjengeliggjøre spillhistorie. Jeg har ergret meg mye over hvor vanskelig det er å finne informasjon og programvare for Sharp MZ-80-plattformene, og nå har vi i alle fall gjort det bittelitt lettere for de som eventuelt kunne tenke seg å prøve Cavern på MZ-80A i fremtiden.
Her kan du se video av den første versjonen av spillet på min Sharp MZ-80A (senere har jeg lagt til en tittelskjerm med instruksjoner):
Jeg må forresten også innrømme at det gir en ganske kul følelse å skrive inn koden til et spill selv, og etter hvert få det til å virke. Man får et helt annet forhold til det man spiller når alt som skjer på skjermen er et direkte resultat av det man tidligere har skrevet inn, tegn for tegn. Det er selvsagt enda artigere når det er snakk om et spill man har skapt helt selv – men det får vente til neste Sharp-artikkel.
Ben Coffer har forøvrig også laget et par videoer fra en 99% ferdig versjon av spillet. Her er den kompilerte utgaven:
Og her er BASIC-versjonen:
Det får man si. Kanskje det er sånn Spillhistorie kan tjene penger? Lage AAA-Sharp MZ-80A-spill?
Moro! :D