Acties:
  • +1 Henk 'm!

  • dmantione
  • Registratie: April 2003
  • Laatst online: 21:05

dmantione

Moderator Beeld & Geluid
Topicstarter
Goedendag,

Voor de wat oudere spelfanaat :) De Amsterdammer Andreas Varga, in de gemeeschap bekend onder de naam MrSID, heeft 10 jaar geleden al eens opzien gebaard door een spel naar de Commodore 64 over te zetten, waarvan gedacht werd dat het ondoenlijk was. Die port viert dit jaar zijn 10e verjaardag.

Wie dit jaar eveneens jubileum heeft, is Sonic The Hedgehog, die is inmiddels 30 jaartjes jong. Andreas dacht kennelijk het kunstje nog eens over te doen, en heeft Sonic naar de Commodore 64 gebracht.




Waarom dacht men dat Sonic buiten bereik van de Commodore 64 lag?

Het grootste probleem is de snelheid waarmee het scherm over twee assen scrollt. De Commodore 64 heeft hardware om tot 8 pixels te scrollen, daarna moet het scherm opnieuw getekend worden. Dat opnieuw tekenen is een flinke opgave voor de 985KHz-processor van de Commodore 64. Veel C64-spellen scrollen slechts in één richting om het makkelijker te maken en vaak ook nog op maar een deel van het scherm ook.

Eind jaren '80 werd een hardwarehack ontdekt die de naam "DMA delay" heeft gekregen en gebruikt kan worden om de VIC-II-videochip later in het geheugen te laten beginnen te tekenen, wat aanzienlijke besparingen in processorlasting betekent, omdat allleen de nieuw in het scherm binnenkomende delen getekend hoeven te worden.

Dat maakte scrollen in meerdere richtingen mogelijk op het hele scherm. Deze spellen offeren vaak de compatibiliteit met NTSC C64-modellen op. Mayhem in Monsterland was het eerste spel dat deze techniek gebruikte, maar dit was al in de jaren '90, met als gevolg dat weinigen dit soort spellen gezien hebben.

DMA-delay maakt evenwel nog geen Sonic mogelijk, om dat Sonic zo snel over het scherm kan rennen dat je alsnog grote delen van het scherm opnieuw moet tekenen en in de problemen komt met de processorkracht. DMA-delay volstaat dus niet en Sonic gebruikt het ook niet.

Wat ook een probleem is, zijn sprites: De VSP van het SEGA Master System kan 64 sprites weergeven van 16x16 pixels. De Commodore 64 kan 8 sprites weergeven van 24x21 pixels. Dat is een ongelijke strijd.

Tevens vereisen de animaties van Sonic ongeveer 20KB geheugen, terwijl de VIC-II slechts 16KB geheugen kan aanspreken.


Om deze problemen op te lossen heeft Mr.SID besloten een geheugenuitbreiding verplicht te stellen. De "Ram Expansion Unit" is een klassiek stuk hardware dat gebruikt kon worden om de C64 tot 1MB geheugen te geven en werd in de jaren '80 vooral i.c.m. het GEOS-besturingssysteem gebruikt. Gebruik van de REU zou in de jaren '80 een onbegaanbare weg zijn geweest omdat te weinig gebruikers deze hadden. De moderne C64-gebruiker heeft evenwel vaak de beschikking over een REU, doordat populaire hardware zoals de 1541U2, Ultimate64, Turbo Chameleon en MiSTer de REU kunnen simuleren. Bovendien ondersteunen emulatoren de REU, evenals daarvan afgeleide hardware, zoals The64 Mini/Maxi en BMC64. Gebruik van de REU lijkt dan ook niet zo problematisch meer en dat deed Mr.SID besluiten dan maar het eerste spel dat specifiek voor de REU geschreven is te gaan maken.

Het belangrijkste voordeel van de REU is niet zozeer het geheugen, maar de DMA-chip die erop zit. Met die chip kunnen blokken geheugen razendsnel tussen REU en het hoofdgeheugen van de C64 uitgewisseld worden. Als je een beetje creatief bent, kun je de REU gebruiken om te tekenen en dat is precies wat hier gebeurt.

De REU wordt gebruikt om het scherm te scrollen, maar ook om de animatieframes, waar Sonic uit bestaat, vanuit de REU te streamen, waardoor de sprites uit grote hoeveelheden animatieframes kunnenn bestaan, meer dan wat we tot nog toe gewend zijn van C64-spellen. Tevens wordt de REU gebruikt om de zeropage, de eerste 256 byte geheugen waar de 6502-processor sneller toegang toe heeft, snel te wisselen, zodat meer variabelen in de snelle zeropage opgelagen kunnen worden.

Dan rest nog het probleem van de sprites. Dat is kleiner dan het lijkt, want de C64-hardware is erg flexibel, zo flexibel dat het mogelijk om in software een spritemultiplexer te schrijven die de hoeveelheid sprites vergroot. Die techniek is al redelijk lang bekend, hij zuipt alleen processortijd (of beter gezegd, rastertijd), omdat tijdens ieder frame alle sprites gesorteerd moeten worden. Doordat het scrollen niet zoveel processortijd meer kost, is dat evenwel niet zo'n probleem.

Het resultaat is een zeer origineelgetrouwe port. Mr.SID heeft het spel vanaf het SEGA Master System geporteerd en daarvoor de originele Z80-machinetaal gereverse-engineerd. Het spel is dus gebaseerd op de oorspronkelijke engine en code. Alle functionaliteit is behouden, er zijn nagenoeg geen compromissen gesloten. Het is resultaat is een perfecte reproductie van Sonic en een spel van een grafische geraffineerdheid wat we niet gewend zijn op de Commodore 64.

Sonic the Hedgehog voor de C64 is hier te downloaden:

https://csdb.dk/release/?id=212190

Discussie op Forum64.de: https://www.forum64.de/in...-f%C3%BCr-c64-128-mit-reu
Discussie op Lemon64.com: https://www.lemon64.com/f...topic.php?t=78945&start=0