Nederlandse ontwikkelaar port Sonic the Hedgehog-game naar Commodore 64

De Nederlandse ontwikkelaar en porter die bekendstaat als Mr. SID heeft ter ere van de dertigste verjaardag van Sonic the Hedgehog in 2021 het gelijknamige spel uit 1991 voor de Sega Master System-console geport naar de Commodore 64. Dit kreeg hij voor elkaar via reverse engineering.

Mr. SID gebruikte de 8-bit versie van het spel die bestemd was voor de Sega Master System uit 1985. Omdat er geen broncode meer bestond, heeft hij de game helemaal heropgebouwd. In forumposts vermeldt Mr. SID dan ook dat hij de broncode van de game, die draaide op de Z80-architectuur van het Sega Master System, zodanig reconstrueerde zodat die zou werken met de architectuur van de Commodore 64 uit 1982. Onderaan de posts linkt Mr. SID ook naar downloadpagina voor de game.

Omdat de Sega Master System uit 1985 meer krachtige hardware bevat in vergelijking met de Commodore 64 uit 1982, was er een zogenaamde ram expansion unit (REU) voor de Commodore 64 nodig om het geporte spel te kunnen draaien. Die geheugenuitbreiding bevat ook een direct memory access-chip waardoor nieuwe spelelementen van de game snel genoeg kunnen ingeladen worden op de Commodore 64. De porter gebruikte ook een 'spritemultiplexer' waardoor er ook op de Commodore 64 ook voldoende tweedimensionale afbeeldingen vertoond konden worden die de game nodig heeft.

Mr. SID is overigens niet aan zijn proefstuk toe. In 2011 bracht hij The Prince of Persia naar Commodore 64, samen met andere hobbyisten en dit ook via reverse engineering.

Update, 21u15: het werkwoord 'vertalen' vervangen door 'reconstrueren'. Op aangeven van phYzar.

Door Jay Stout

Redacteur

23-12-2021 • 20:44

44

Submitter: dmantione

Reacties (43)

43
40
25
3
1
10
Wijzig sortering
Ik vind het echt indrukwekkend hoe snel het draait! In mijn herinnering uit m'n jeugd was de Master System een enorme sprong vooruit. Ik speelde er ook Sonic op destijds en dat was echt wel ff wat anders dan de spellen die ik op de C64 had gespeeld in de jaren ervoor.

Dus los van de memory expansion en sprite multiplexer vraag ik me af wat voor interessante performance tweaks hij uitgehaald heeft.
De REU wordt niet zozeer voor het extra geheugen gebruikt. Het extra geheugen komt van pas, maar is niet cruciaal. Cruciaal is de DMA-chip op de REU. Daarmee kun je zonder de processor te gebruiken geheugen tussen de C64 en de REU uitwisselen en als je een beetje creatief bent, dan kun je de DMA-chip inzetten om razensnel te tekenen.

Dat wordt in het spel gebruikt voor het scrollen, want Sonic kan zo snel rennen dat de processor binnen een frame een dusdanig deel van het scherm opnieuw moet kunnen tekenen dat hij te traag is. Een andere toepassing is het streamen van sprites: Als Sonic geanimeerd wordt, wordt door de REU razendsnel een nieuwe sprite in het geheugen van de C64 geschreven. Er is ongeveer 20KB aan sprites in het spel aanwezig, terwijl de videochip 16KB geheugen kan aanspreken, het streamen van sprites is de oplossing om niet teveel van die 16KB te gebruiken.

De meeste spellen die je van de C64 kent scrollen over slechts één as en vaak nog maar over een gedeelte van het scherm ook. In die spellen wordt de processor gebruikt om het scherm opnieuw te tekenen en die heeft maar beperkte capaciteit. Eind jaren '80 werd een hardwarehack ontdekt, die bekend staat als "DMA-delay", waarmee je de videochip verder in het videogeheugen kun laten beginnen met tekenen. Dat bespaart aanzienlijke hoeveelheden processorkracht en maakte het scrollen over twee assen mogelijk, vaak met het opofferen van compatibiliteit met Amerikaanse NTSC C64-machines.

DMA-delay werd voor het eerst in Mayhem in Monsterland toegepast, maar dat was al in de jaren '90 toen veel mensen hun C64 al vaarwel gezegd hadden. Daarom zijn spellen die over twee assen scrollen niet karakteristiek voor de C64. Sonic gebruikt geen DMA-delay, de REU kan zo snel tekenen dat het niet meer nodig is.

[Reactie gewijzigd door dmantione op 24 juli 2024 15:16]

Leuk om te zien, en indrukwekkend voor een C64!

Ooit (rond '91) waren er officiële ports van Sonic gepland voor verschillende home computers, maar helaas zijn die nooit verschenen. Ik had deze graag gezien op de Amiga en Atari ST, waar later Zool als "onze Sonic" uitkwam.

Toevoeging voor de non-believers - zie het stukje linksonder ;)

https://lostmediawiki.com...CE-A978-55B0B13D70F2.jpeg

[Reactie gewijzigd door jamsi op 24 juli 2024 15:16]

Lijkt me niet dat dit klopt. De game werd gewoon exclusief voor Sega-consoles gehouden (waarbij de MD en MS geen poort hadden tov elkaar maar gewoon een eigen versie).
De enige optie was een PC van Amstrad die ook een Megadrive ingebouwd had zitten.

Platformers op de PC waren in die tijd zeer matig. Ik denk dat met Earthworm Jim voor het eerst een serieuze platformer naar de PC gebracht werd die gelijkwaardig (beter eigenlijk wegens het geluid) was aan de console versie.

Zool was een aardige poging, maar om de een of andere reden was die op de console ook beter dan op de PC, met name de Megadrive-versie. Misschien was het wel dat de PC weinig aandacht kreeg omdat de winstmarge te laag was door minder interesse en wellicht het kopieerprobleem.

[Reactie gewijzigd door RaJitsu op 24 juli 2024 15:16]

Het was op de PC lastig om soepele scrolling te realiseren. ID (die van Doom en Quake) is het aardig gelukt met de Commander Keen-serie, maar dat waren dan ook meesters in dat soort zaken.

Verreweg de meeste PC-platformers hielden het bij één scherm (zonder scrolling dus) of scrollden met een lagere framerate dan die waarop de sprites bewogen. Dat zag er niet uit.

Pas met de 386/486 en VGA-kaarten met voldoende VRAM werd het mogelijk om alvast meerdere objecten buiten het viewvenster van de speler klaar te zetten (en zo wat soepeler te kunnen scrollen), maar tegen die tijd wilde iedereen in 3D spelen :)

Jazz Jackrabbit (Epic, onder andere door onze eigen Arjan Brussee gecreëerd), is ook een goed voorbeeld wat je met een krachtige PC kon. Inclusief Mode7-effecten.
Je zegt "met VGA-kaarten", maar VGA bracht vooral de killerfeature 256-kleuren en een lineaire framebuffer. Het gebrek aan scrolling en sprites was op de VGA net zo pijnlijk als op de voorgangers en het waren echt de megahertzen van de processor die het uiteindelijk mogelijk maakten om alles ieder frame helemaal in software opnieuw te tekenen. Dus het is meer ondanks VGA, dan dankzij VGA.
Niet zo zeer de VGA-spec, maar het feit dat er meer VRAM op een VGA-kaart (kon) zit(ten).

Het was traag als modder door een trechter om objecten van RAM naar VRAM te kopiëren op een ISA-bus, dus als je dat in de VRAM op de videokaart kon laten had je een streepje voor. Bij het laden van het level maakte je een array aan met objecten en kopieerde je die naar het VRAM. De code van het spel hoefde (eenvoudig gezegd) alleen maar aan te geven welke objecten en in welke volgorde er voorbij moesten scrollen. De objecten waren chunks, en kostten aardig wat VRAM. Het scrollen moest door de CPU worden gedaan en hoe effienter je code, hoe soepeler dat ging. 60fps haalde maar weinig games op de PC (Jazz Jackrabbit is een voorbeeld), terwijl dat op de 16-bit consoles eerder standaard dan uitzondering was.

Op consoles* was dat dan ook veel makkelijker. Die zijn tilebased*. Ook daar heb je in feite een array, maar dan van elementen die zowel een sprite als een tile (=onderdeel van een backdrop of layer, zeg maar je spelwereld) kunnen vormen. Kleurinfo was weer in een andere array ondergebracht waardoor je de tiles van verschillende kleuren kon voorzien en kon hergebruiken, onder dat dat overhead kost op processor- en geheugengebruik. Zie het als hardwareversnelling voor 2D-scrolling.

Je kon eenvoudig tiles hergebruiken voor gras en wolken door op de horizon van kleurenpallet te wisselen.Door per scanline te wisselen kun je bovendien veel meer kleuren tonen dan de hardwarespecs doen vermoeden en gave parallax scrolleffecten toepassen die op PC allemaal in software gedaan moesten worden.

Het kanaal CodingSecrets op Youtube is interessant om te zien wat je met tiles kunt doen. Het is van één van de programmeurs van Traveller's Tails (bekend van Sonic 3D, Toy Story en Puggsy op de MegaDrive en nog een hele sloot andere beroemde games uit het 16-bit tijdperk). Hij laat je zien hoe men dit soort zaken efficient kon doen.

*althans de Mastersystem, Megadrive en SuperNES
Hier haal je best een goed punt aan. Toevallig heb ik onlangs op netflix een deel van een docuserie gezien waarin John Romero precies dit aanhaalt.
John Carmack had het voor elkaar gekregen om een mario clone werkend te krijgen, dit was cruciaal voor de ontwikkeling van o.a. Wolfenstein en later Doom.

En laten we eerlijk zijn, die games bliezen het spreekwoordelijke dak eraf.

[Reactie gewijzigd door fastbikkel op 24 juli 2024 15:16]

Ik heb mijn eerdere comment aangepast met bewijs :)
Superfrog op de Amiga was in mijn ogen ook wel een goede tegenhanger voor Sonic.
En ik vond persoonlijk SuperFrog ook nog eens leuker :)
Omdat er geen broncode meer bestond [...] hij de broncode van de game, die draaide op de Z80-architectuur van het Sega Master System, handmatig heeft vertaald
Dus hij heeft niet-bestaande broncode vertaald :?
Correct me if i’m wrong, maar doormiddel van reverse-engineering heeft hij toch de broncode als het ware achterhaald en daarna vertaald? Dus wellicht niet het origineel, maar wel door veel tijd er in te steken het zelf achterhaald?
Je moet het zien als een in elkaar gezette Ikea kast, zonder handleiding. Door hem te demonteren, weet je weer hoe je de kast ongeveer weer in elkaar moet zetten. Je hebt de originele handleiding niet, maar je kan toch weer zelf een handleiding maken.

Dus de originele broncode is hier niet aanwezig, maar door de ROM te deconstrueren, kan de broncode afgeleid worden.

Is wel een stuk moeilijker dan een Ikea kast ;)
De broncode zal best bestaan, maar is niet vrijgegeven door Sega. Intellectual property etc. Beetje rare zin.

"We're proud to announce Sonic the Hedgehog for Commodore 64/128 + REU (PAL and NTSC).

This is the first game that has exclusively been designed for the REU, to make a fast and smooth full-screen scrolling version of Sonic with little compromises.
This game is a direct port of the SEGA Master System 8-Bit version of Sonic the Hedgehog, with about 64 KB of code hand-translated from the Z80 to the 6502 architecture. "

[Reactie gewijzigd door Rinzwind op 24 juli 2024 15:16]

Ik ben enorm onder de indruk.
Zou bijna een 2e hands C64 op de kop gaan tikken.
Doen! Er is nog steeds een zeer actieve community op fora en Facebook actief. Ook wordt er nog steeds hardware en software tot op de dag van vandaag voor het systeem ontwikkeld.

Marktplaats staat vol met C64's (ik scroll er dagelijks doorheen!). Voor rond de 65 euro koop je een C64, zonder randapparatuur. Met diskdrives hoef je niet te klooien, daarvoor in de plaats koop je bijvoorbeeld een SD2IEC. Zet je favoriete games op een SD-kaartje en gaan! De C64 kan naast RF het video signaal via composit of s-video uitzenden, dus met de juiste kabel en een oude TV of beeldscherm ben je klaar.

Let op: als je een echte C64 koopt om Sonic te gaan spelen heb je dus een REU nodig. Die zijn redelijk onbetaalbaar aan het worden (op eBay rond de 250 euro). Een alternatief is de 1541 Ultimate 2+, gemaakt door een Nederlander.
Nu heb ik er zeker een zwak voor, maar ik heb ook nog 2 amiga's staan en de ruimte in mn mancave wordt er niet beter op ;-)
Die 1541 U2+ is ook 250 euro en door chiptekorten niet leverbaar.
€139, niet overdrijven. Dat is 'ie dubbel en dwars waard, want hij fungeert als fastloadcartridge, diskettestation, REU, printer, stereo-SID, Wifi-modem en meer. Als je ook maar een gedeelte daarvan met losse apparaten wilt realiseren ben je meer kwijt.

Voor degene met een beperkt budget kan ik meedelen dat het team achter de Kung Fu Flash naar aanleiding van Sonic begonnen is om de REU te implementeren en daar enkele weken voor nodig denkt te hebben,
De link was naar de Elite van 250, niet naar de goedkopere plus. Dat had ik niet gezien.
Hij is overigens ook naar de MSX geport, een ander 8-bit systeem uit de jaren '80:
https://homebrew.file-hunter.com/index.php?id=sonyc

[Reactie gewijzigd door TFHfony op 24 juli 2024 15:16]

Dussss game is geport naar MSX en ik speel hem smooth via de browser op mijn telefoon. Crazy times.
Ja, en je kan waarschijnlijk ook playstation 3 games nog zeer soepel spelen op je telefoon
Nee, dit dus niet :Y)
Je hebt een erg zware PC nodig voor PS3 emulatie
Klopt, die Cell processor is een ramp. Maar een port van zo'n game zal op een deftige telefoon van vandaag de dag best lekker lopen hoor, maar je moet inderdaad niet gaan emuleren.
Waarschijnlijk een iets kleinere uitdaging, omdat de MSX Z80 gebaseerd is, net als de master system. De C64 heeft daarentegen MOS 6510.
Het is ook voor de MSX2-hardware. De MSX1 had inferieure hardware t.o.v. de C64, de MSX2 was veruit superieur. Maar MSX2 kwam dan ook uit toen we al lang en breed in het 16-bit tijdperk zaten. Dus inderdaad technisch een stuk eenvoudiger, Sonic integraal op de C64 realiseren zonder grote compromissen heeft een hoge stuntfactor. Maar, we moeten het ook niet te veel omlaag praten: Ook de MSX2-versie is een keurig nette portering door hobbyisten.
Mooi om te zien op de Commodore 64
Gaaf! Ik ben de gelukkige bezitter van een REU (1764), dus deze ga ik zeker spelen!
Hier de link naar de juiste post op het forum voor je eerst 23 pagina's gaat lezen (met of zonder translate).

https://www.forum64.de/in...ostID=1767410#post1767410

Heb je geen C64, draai een emulator. Vice is een zeer geschikte. Zorg dat je die REU in de config regelt.
Waar hardware van 1982 toe in staat is, blijft me regelmatig nog verbazen.
Senior Principal Tech Programmer bij guerrilla games

Altijd mooi als je van je hobby je werk kunt maken, of andersom :)
Zal geen eenvoudige taak zijn geweest om voor elkaar te krijgen, maar altijd mooi als mensen dit doen. Ook een aanrader om te bekijken is het kanaal Coding Secrets, de eigenaar hiervan heeft Sonic op de SEGA ontwikkeld en legt in meerdere filmpjes uit hoe hij bepaalde dingen voor elkaar heeft gekregen op de hardware. Als hij het uitlegt klinkt het logisch, maar om dat zelf te bedenken in die tijd moest je erg creatief zijn met de beperkte mogelijkheden die je hebt. Maar dat zie je bij zoveel spellen uit de 'begintijd', de beperkingen zorgden juist voor vernieuwing op een hoop punten.

Op dit item kan niet meer gereageerd worden.