• dmantione
  • Registratie: April 2003
  • Laatst online: 00:33
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


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee