Commodore 64-spillenes mastere!

I denne artikkelen får du stifte bekjentskap med de ukjente heltene i Commodore 64-industrien.

Når man starter opp favorittspillet sitt, så blir man ofte møtt med en skjerm bestående av spillets tittel, noe musikk som er med på å bygge opp forventninger og en liste over de som har medvirket til å lage det. Ett navn er derimot veldig ofte utelatt fra denne listen, og det er gjerne personen som til syvende og sist har satt sammen «masteren» og sendt det til duplisering. En master er det ferdige produktet som alle eksemplarer produseres fra.

Gamle Commodore 64-eiere husker nok grafikken og musikken som kom mens spill lastet inn.
Gamle Commodore 64-eiere husker nok grafikken og musikken som kom mens spill lastet inn.

La meg begynne denne artikkelen med å hoppe litt tilbake i tid for å forklare hvordan dette temaet dukket opp. Jeg satt og leste igjennom en del poster på Facebook, og snublet plutselig over en post fra en som heter Rich Hinton. Han hadde noen disketter som han lurte på om kunne være av interesse. Dette var disketter som i all hovedsak så ut som disketter flest, men så fortalte han hvor de kom fra. Han hadde fått dem av en familievenn som tidligere jobbet hos softwaredistributøren US Gold. US Gold var Storbritannias desidert største utgiver av spill for flere plattformer, og som selskapets navn tilsier, fokuserte på importerte spill fra USA. Først trodde jeg det dreide seg om en US Gold-ansatt som kanskje hadde tatt noen kopier av ting internt og gitt videre til en venn, men under en samtale på Facebook fortalte Rich Hinton meg at denne familievennen het Gary Sabin.

Da jeg hørte det navnet skjønte jeg umiddelbart hva Rich Hinton potensielt satt på. Jeg husket godt navnet fra kassett-versjonen av Summer Games II der man under lasting av alle delene i spillet kunne lese teksten «CASSETTE VERSION BY GARY J. SABIN» på skjermen. Rich Hinton satt sannsynligvis ikke bare med en tilfeldig kopi av enkelte ting fra US Gold, men kanskje også disketter som inneholdt mange av programmene som genererte masteren som ble sendt videre til duplisering samt andre verktøy. Han fortalte at han for en del år tilbake fått alle diskettene og kassettene Gary Sabin hadde til Commodore 64. Det var relativt mange av dem og dette utgjorde et veldig unikt funn, og om min mistanke var riktig, så ville det trolig være første og siste gang et funn av denne størrelsen fra denne storhetstiden gjøres.

Alle som spilte Summer Games II på kassett kan takke Gary J. Sabin for den korte ventetiden mellom hver øvelse.
Alle som spilte Summer Games II på kassett kan takke Gary J. Sabin for kassettversjonens eksistens.

Etter å ha forklart for Rich Hinton hva slags unikt funn som var gjort spurte jeg om han var villig til å sende meg diskettene for preservering. Rich var positiv til å få arkivert diskettene, men var ikke villig til å sende utenfor Storbritannia. Jeg hadde naturlig nok full forståelse for dette, og jeg ville nok vært veldig skeptisk til å sende fra meg noe slikt selv også. Spesielt til tilfeldige mennesker fra internet. Vi ble etterhvert enige om at han kunne sende diskettene til en av mine samarbeidspartnere som befinner seg i Wales, Christopher Robert Taylor, mer kjent som Peepo i arkiveringsmiljøet.

Ventetiden endelig over

Etter noen uker begynte de første dumpene av disse diskettene å ramle inn hos meg, og jeg var veldig ivrig og var ikke treg med å kaste meg over innholdet. Jeg fant demoversjoner av spill samt master-data til godt kjente utgivelser som bl.a. Hardball, Desert Fox og Winter Games. Jeg lekte litt med «master makeren» (programmet som genererer masteren av spillet) til Hardball og etter litt knoting klarte jeg å generere en ny mastertape. Dessverre har ikke tiden behandlet alle diskettene like pent, så fila som inneholdt bildet som ble vist under lasting var delvis korrupt. Bortsett fra dette hadde jeg nå en «original» av Hardball, generert av den samme masterdataen som gikk til duplisering for 30 år siden. Videre i utforskingen snublet jeg over en diskett med «Novaload»-etikett med ordet «Music» skrevet på med kulepenn (Peepo scannet også selve diskettene blant annet for å få med slike etiketter).

Amerikansk nasjonalsang under lastingen av US Gold-spill.
Amerikansk nasjonalsang under lastingen av US Gold-spill.

Novaload er, som mange sikkert husker, et veldig mye brukt loadersystem for C64, og tidlige versjoner var kjennetegnet av en sort og grå skjerm med spillets tittel etterfulgt av et skikkelig spetakkel mens hovedloaderen ble lastet. En loader er et lite program som står for selve innlastingen av dataene, noe de fleste utgivere begynte med ganske tidlig siden Commodores egne rutiner for lasting av data var ekstremt trege.

En av melodiene som gikk igjen veldig ofte hos US Gold var selvsagt den amerikanske nasjonalsangen, og inntil nå nylig har ingen visst hvem som har laget dette arrangementet. Men på Novaload-disketten som var merket «Music» fant jeg en del halvferdige versjoner med kildekode av denne musikken samt noen andre låter. Kildekoden var signert med dato og «G. J. Sabin» og det var derfor ingen tvil om hvem som sto bak.

De som husker musikken, husker den nok som veldig enkel lydmessig. Da jeg så kildekoden til Gary, så skjønte jeg imidlertid også hvorfor. Man har et veldig begrenset sett med det som så ut å være predefinerte lyder, og musikken måttes skrives inn via BASIC i et bestemt format som på mange måter kan minne om formatene man har sett i ymse musikktrackere i ettertid. Å skulle redigere noe på denne måten for dermed å måtte laste et eget demoprogram for å høre resultatet, må ha satt enhver musikers tålmodighet på prøve. Det kan nok tenkes at det er en veldig god grunn til at det ikke finnes så fryktelig mye forskjellig musikk til denne loaderen.

Slik måtte Sabin skrive inn musikken som spilte under lastingen.
Slik måtte Sabin skrive inn musikken som spilte under lastingen.

Dessverre døde Gary Sabin for noen år siden, så det var derfor ikke mulig å hente noe mer informasjon annet enn det som faktisk var på diskettene. For å finne ut mer om hva som foregikk bak kulissene, tok jeg kontakt med Paul Hughes, tidligere ansatt i Ocean Software Ltd. I den tiden han var ansatt var en av oppgavene hans å produsere mastere til spill. Han er også mannen bak systemet Freeload, som ble brukt internt i Ocean i mange år. Paul Hughes er en veldig engasjert fyr som gjerne snakker om gamle dager, og det er tydelig at han har gode minner knyttet til tiden i Ocean. Når jeg spør om han vil svare på noen spørsmål rundt jobben han gjorde på dette feltet, er han ikke sen med å svare og sier det bare er å fyre løs.

Den hektiske siste steget

Jeg får høre at snitt-tiden på utvikling av et spill for Commodore 64 var mellom 3-6 måneder, men at det fantes noen «mercy missions» som han selv kalte det, der alt arbeidet ble gjort i løpet av et par uker. Av slike nevnes spillene Total Recall og Operation Thunderbolt. Når det gjelder selve mastringen forteller han at det hos Ocean i praksis ble gjort i løpet av én dag, og det kunne gjerne bli veldig hektisk. Noen ganger kunne utviklerne sitte hos firmaet som dupliserte masteren sammen med en tester for å gjøre ferdig spillet mens Paul satt og laget «master makeren». Han ville etter det få et testeksemplar som de kontrollerte og bekreftet for produksjonen at de var fornøyd med, og gikk ofte ut for å ta en matbit mens produksjonen av det første opplaget var i gang slik at de kunne ta det med seg tilbake samme kveld.

Freeload i aksjon.
Freeload i aksjon.

For å generere mastertapen hadde Paul i all hovedsak én metode han benyttet seg av. For det som kalles en «single loader» (et spill der all data tilhørende spillet kan lastes inn i minnet uten behov for mer lasting i ettertid), så hadde han laget små programmer som delte opp minnet i segmenter og deretter lagret det i separate filer. Det han oppnådde med dette var full kontroll på rekkefølgen data ble lastet inn i minnet, og dermed ha musikk i bakgrunnen og vise et bilde mens resten av spillet lastet og dermed kunne fylle minnet «rundt». Når det nærmet seg slutten kunne man avslutte musikkavspillingen og fjerne bildet for å laste siste rest. I spill som bestod av flere deler, måtte i tillegg en loader installeres i spillet for å laste inn data underveis. Spill som ble utviklet internt fikk gjerne installert loaderen av programmererne selv, men i spill som kom fra eksterne partnere måtte man lete etter plass i programkoden til å installere en loader, noen ganger uten å i det hele tatt ha kildekoden til spillet.

Dette med manglende kildekode var et problem Paul ofte støtte på da han satte sammen spillsamlinger, spesielt når de kun hadde kjøpt distribusjonsretten fra andre selskaper. Det førte til at noen ganger var alt Paul fikk å jobbe med en kasettoriginal av spillet. Løsningen da var, ironisk nok, at han først måtte knekke kopibeskyttelsen på spillet for å kunne installere sitt eget loader-system, noe som av og til kunne være en utfordring siden mange av loader-systemene hadde begynt å bli veldig sikre (etter datidens standarder).

Den første versjonen av det som skulle bli Freeload ble brukt til å laste inn klassiske Uridium.
Den første versjonen av det som skulle bli Freeload ble brukt til å laste inn klassiske Uridium.

Paul fokuserte også mye på at Freeload-systemet hans skulle være sikkert. Selv om det ikke var noen fast kontakt med crackerne, hendte det at Paul fikk meldinger fra dem om hvordan de likte utfordringene med hans stadig nye triks for å forsøke og holde dem ute. I mange datablader fantes det dessuten en egen jukseseksjon med koder eller programmer for å installere såkalte «cheats» i spillene (dette kunne være juks i form av udødelighet, uendelig med liv, osv). Noen av de mer omfattende programmene for dette måtte på samme måte som en cracker bryte seg igjennom mekanismene som skulle beskytte programmet fra kopiering. Dette var nødvendig for å kunne installere koden som gjorde jukset mulig, og i følge Paul var det også der mye kreative triks som han holdt seg oppdatert på, og fant løsninger for å blokkere i fremtidige versjoner av Freeload. Dette ser han tilbake på som en morsom utfordring.

Oooops!

Siden alt som har med mennesker å gjøre på noe tidspunkt feiler, så var jo selvsagt ikke denne bransjen noe unntak. Litt overrasket finner jeg ut at fadesen med Robocop til C64 er noe Paul aldri har hørt om. For de som ikke er klar over hva jeg snakker om, så er det altså et brett et stykke ut i spillet som mildt sagt har litt ødelagt grafikk. Vi snakker ikke om en liten korrupsjon, men hele brettet er fullt av skrot. Om man likevel vet hvor man skal gå, så er det likevel mulig å fullføre brettet siden selve plattformstrukturen er intakt. Denne korrupsjonen er å finne i alle europeiske utgivelser av spillet både på diskett og kassett. Hvordan dette har passert uten at QA-teamet reagerte kan man jo alltids spørre seg, men det er jo helt tydelig noen som ikke har gjort jobben sin.

Fra 6:57 i denne videoen kan du se hvordan det ser ut:

Av andre flauser kunne Paul fortelle om den første utgivelsen av spillet Gilligan’s Gold. En vanlig måte for crackere å knekke beskyttelser på før de ble mer avanserte var å tvinge maskinen til en reset, noe som kunne gjøres for eksempel ved å kortslutte to pinner i seriellporten. Forenklet sagt så førte dette til at en reset-rutine ble kalt opp og utførte en varmstart av maskinen. Hvilken minnelokasjon maskinen hoppet til ved et reset-signal kunne dessuten endres.

Ikke bare virket ikke spillet, men kjøperne fikk denne beskjeden i trynet.
Ikke bare virket ikke spillet, men kjøperne fikk denne lite hyggelige beskjeden i tillegg.

I dette tilfellet var det gjort så at en slik reset ville medføre at en full skjerm med lite flatterende ord for en eventuell crackers øyne ville komme til syne. Det var imidlertid ett ørlite problem med dette, og det var at dersom loadersystemet oppdaget datafeil under lastingen så ville det avbryte lastingen og kalle den samme reset-rutinen for varmstart.

For å gjøre marerittet komplett hadde de i tillegg fått sendt ut et parti med kassetter der dupliseringen delvis hadde feilet, noe som førte til at mange lovlydige kjøpere fikk denne skjermen med alskens banneord og drittslenging i trynet når de forsøkte å laste spillet. Praksisen med å legge igjen skjulte beskjeder og hilsener i spillene var på ingen måte uvanlig, men de færreste gikk så langt som dette. Paul informerer om at dette skjedde noen år før han begynte i Ocean Software, men at dette var en historie som jevnlig ble gjentatt til skrekk og advarsel. Det vanligste var å legge igjen slike meldinger i minnet slik at de kun var synlige for de som snoket mens den gjennomsnittlige spilleren ikke ante noen ting om dem.

Skjult melding i koden.
Skjult melding i koden.

Avslutningsvis har jeg lyst til å trekke frem en slik melding fra selveste Paul Hughes, selv om jeg vet han skulle ønske både spillet og meldingen forsvant fra jordens overflate. Spillet vi snakker om er Mag Max, og hvis man avbryter lastingen av spillet etter en liten stund, så kan man finne følgende melding i minnet (adresse $0990 for de som kan nok om C64-en og har lyst til å sjekke det ut selv):

«HELLO THERE HACKER ! … WHAT ARE YOU DOING ? TRYING TO BREAK IN … THIS PROGRAM ISN’T GULLABLE TO YOUR LIMITED 6502 CAPABILITIES !!! LOTSALUV PAUL H, MASTER OF THE CIA !»

PS! CIA i dette tilfellet betyr Complex Interface Adapter… får vi håpe!

De fleste skjermbildene i denne saken er tatt av artikkelforfatter Tom Roger Skauen. Toppbildet og Summer Games-bildet er tatt av Joachim Froholt. Takk til Paul Hughes for hans hjelp med denne artikkelen. Den er også tilgjengelig på engelsk.

Flere Commodore 64-saker på Spillhistorie.no:

En kommentar om “Commodore 64-spillenes mastere!”

Legg inn en kommentar

Dette nettstedet bruker Akismet for å redusere spam. Lær om hvordan dine kommentar-data prosesseres.