Ontwikkelaar bouwt N64-emulator in Javascript en WebGL

Een Amerikaanse ontwikkelaar heeft in JavaScript een Nintendo 64-emulator geschreven, die met hulp van WebGL in moderne browsers kan worden gedraaid. Hij was eerder al verantwoordelijk voor de cross-platform N64-emulator Daedalus.

De n64js-engine van de Nintendo 64-emulator is geschreven in Javascript en de grafische verwerking in de browser wordt verzorgd door WebGL. Het gebruik van WebGL betekent wel dat alleen de nieuwste versies van Chrome en Opera en de laatste builds van Firefox de emulator kunnen draaien. Gebruikers zouden wel zelf voor de rom-bestanden van de games moeten zorgen.

Holden kreeg naar eigen zeggen inspiratie om de emulator te schrijven toen hij een in Javascript geschreven Linux-emulator tegenkwam. De programmeur had verder al ervaring opgedaan met het schrijven van de N64-emulator Daedalus, waarvan de ontwikkeling inmiddels door anderen is overgenomen.

De ontwikkeling van de n64js-emulator verkeert nog in een vroeg stadium. "Het zal nog lang duren voordat het een bruikbaar product is", schrijft Holden op zijn blog. Er kan al met de emulator gespeeld worden, maar er zouden nog veel bugs en snelheidsproblemen zijn.

Helaas!
De video die je probeert te bekijken is niet langer beschikbaar op Tweakers.net.

Super Mario 64 in de n64js-emulator

Door Adrian Buyssens

17-08-2012 • 16:41

66

Reacties (66)

66
66
43
0
0
7
Wijzig sortering
Dit soort dingen zijn echt wel f*cking briljant.. Niet alleen het idee, maar dat je het ook daadwerkelijk gaat implementeren.. Bijzonder knap gedaan! Ik zou zo iemand wel in mijn dev-team willen hebben (tenzij hij stieken die emulator op het werk heeft gemaakt, natuurlijk :P)
Waarom precies? Een emulator is knap werk, maar dit is geenszins de eerste emulator te wereld... Ja, het is in javascript, maar dat is slechts een andere taal. Normaliter worden ze in C of C++ geschreven, dus als iemand het doet in Delphi ofzo, is het ook opeens briljanter dan de rest?

[Reactie gewijzigd door _Thanatos_ op 23 juli 2024 06:35]

Ach, het gaat om het idee denk ik.
Ouwe games spelen in je browser is vet!
Maar jammer dat het nog zo hapert en dat je zelf de roms moet zoeken.
Dus nog een lange weg te gaan voor je dat allemaal online kan spelen denk ik.
Ach, je kunt met iedere taal wel dingen van een webserver downloaden. Ook dat is niets speciaals, toch... Het feit dat je hierbij slechts een url in hoeft te tiepen is semantiek. Een appje downloaden doen we allemaal, zowel op pc als op draagbare apparaatjes. Bovendien werkt het maar in één browser, dus als je die niet hebt, moet je die toch eerst nog installeren.
Zoals ze zo mooi zeggen: "Rome was not built in a day". Het eerste stapje is gezet en met de gebruikte technologie zal de applicatie uiteindelijk cross-platform en cross-browser werken. Dat is wel degelijk interessant, al is het alleen maar als proof-of-concept. Voor niet-windows gebruikers is het zeer interessant als men dit soort technieken meer gaat toepassen, dan kunnen zij de games immers ook gewoon spelen.

Als ik me niet vergis zijn er al een aantal games die hier mee bezig zijn, zoals Settlers Online bijvoorbeeld. Als er genoeg games deze weg volgen of gewoon cross-platform ontwikkelen dan zijn we eindelijk eens van die verplichting af om Windows te gebruiken om te gamen...een mens mag toch dromen ;)
Sorry hoor, maar het idee is verre van brilliant aangezien dit niet de eerste console emulator is die in javascript is geschreven..
Dit is interessant voor de ontwikkelaars van de Chrome/FireFox/enz javascript backend. De ontwikkelaars kunnen zo precies zien waar hun systeem langzamer is dan de originele app.

Op deze manier kan bijvoorbeeld V8 (Chrome) zo worden geoptimaliseerd dat er uiteindelijk spellen kunnen worden gemaakt in HTML5 (of 6, of 7 enz) die niet meer hoeven onder te doen voor hun C++ variant. Al is die tijd waarschijnlijk nog ver weg.
Zolang de performance van javascript nog steeds ver achter ligt op de performance van native compiled C++ code wil je dat dus echt niet, leuk, maar totale verspilling van de resources van je dure snelle nieuwe computer.. En dat is toch erg jammer, kijk bv naar android, nadat de gasten van mono android hadden geport naar mono/C# draaide deze +/- 80% sneller, dus dan kun je nagaan hoeveel nu werkelijk verspilt wordt van je nieuwe hardware, IMHO is dat echt te belachelijk voor woorden.. Ik koop een nieuwe PC omdat ik daar sneller mee kan werken, niet omdat de programma's achterlijk inefficient worden geschreven tegenwoordig dat je een superduper computer nodig hebt om de nieuwe ineffeciente versie van het programma te kunnen draaien op een gelijke snelheid als de oudere efficientere programma..
die niet meer hoeven onder te doen voor hun C++ variant. Al is die tijd waarschijnlijk nog ver weg.
Die tijd gaat waarschijnlijk nooit komen ook door hoe Javascript werkt. C/C++ kunnen bizar geoptimaliseerd worden omdat ze soort van statisch zijn. Maar goed bedrijven als Intel en AMD zullen daardoor wel goede zaken doen. Om bijvoorbeeld Android enigszins te kunnen laten draaien heb je een quad-core nodig. Terwijl als het in C gebouwd was je het waarschijnlijk met een enkele core af had gekund en je langer met je batterij had gedaan.

Zo zalig makend is HTML5 dus niet.
Zou de performance beter zijn geweest als hij het in Silverlight had geschreven?
Yep, de perfomance zou vele malen beter zijn geweest..
Maar het nut om deze in silverlight te schrijven is ver te zoeken omdat zoals RevenNL het al zegt, silverlight is dead..
Nee. Silverlight is / wordt depreciated.
én het zou niet crossplatform zijn. Lang leve HTML5! Ben zelf ook druk bezig een MMORPG te schrijven in HTML5, met WebSockets en een nodejs server. Werkt super, op Android, iOS, windows en linux.
Ware het niet dat HTML5 nog steeds in ontwikkeling is EN je nog steeds te maken hebt met de verschillende browsers die niet alles ondersteunen..
Dat er snelheidsproblemen zijn, is te zien in de video. Maar dit is wel een leuk idee, zo zouden oude spellen nog steeds gespeeld worden in moderne browers.

[Reactie gewijzigd door Martindo op 23 juli 2024 06:35]

Dat kan sowieso al, het vernieuwende hieraan is dat het in een browser is en niet een standalone applicatie.
Zou het niet veel efficienter zijn als zo'n game één keer helemaal naar code vertaald wordt die niét hoeft te worden ge-emuleerd? Het lijkt nogal overkill om iedereen die dit gebruikt, exact dezelfde (relatief zware) conversieslagen te laten doen...
Een game mag je juist niet vrijgeven, zit copyright op. Dan moet je honderden spellen gaan her-coden per spel, plus dat je copyright schending maakt op elk spel d.m.v. elke persoon die het speelt. Daarnaast is de code van een spel gecompileerd en vaak niet de decompilen. Dus dat gaat helaas niet op.
Meh, wat on-the-fly kan, kan toch ook ahead-of-time :?

Maargoed, als je een spel niet mag heruitgeven, hoe kom je dan aan games om in de emulator te stoppen :? Cartridges passen niet in een pc heh ;)

[Reactie gewijzigd door _Thanatos_ op 23 juli 2024 06:35]

Zou inderdaad graag Paper Mario willen spelen op mijn MacBook (heb hier wel het origineel liggen), maar alle emulators behalve Project 64 (die alleen op Windows beschikbaar is) maken er een zooitje van (tijdje gespeeld in Sixtyforce maar de graphische glitches zijn niet om aan te zien). Meer cross platform emulators kan ik dus alleen maar toejuichen.

In de tussentijd maar even een TV zoeken om mijn N64 op aan te sluiten...

[Reactie gewijzigd door Wolfos op 23 juli 2024 06:35]

Of een TFT-scherm met een converter van Scart RGBhv naar VGA
Dat is gaaf zeg... Beter dan die slechte prank van Quake2 in WebGL. Ik hoop echt dat er wat gedaan wordt aan de performance van JS, met name voor dit soort 3D Canvas games.

Het is momenteel zo goed als onmogelijk om goede 3D games te maken in WebGL ivm de snelheid. Ik gok dat deze PC die deze emulatie draait een vrij zware bak is die staat te ploeteren om dit te renderen :)
Nette ontwikkeling.

Voor iets wat geschreven is om in webbrowsers te draaien, vind ik de performance eigenlijk al vrij aardig, het is nog niet zoals op desktops, maar ik zie wel mogelijkheden voor dit in. Voor je het weet heb je over een paar jaar een PS2 emulator in je browser :).(of een whatever console in je browser.)

Het voordeel is ook zoals hierboven dat het crossplatform is, dus je hoeft als ontwiikkelaar bijna niet over na te denken of het op een bepaalde platform werkt, tenzij je gaat kijken naar browsers...

Al met al, ik zie hier wel voordeel in, als dit kan, kan er nog :)
Kleine correctie: Opera heeft geen WebGL

Het zit wel in de layout engine verwerkt, maar standaard staat het uit, en je moet diep graven om het aan te zetten. Bijna alle Opera-gebruikers zullen het dus uit hebben staan. De feature is dan ook nog niet final/stable verklaard.
Anoniem: 407865 17 augustus 2012 18:21
bij de n64 emulator op de pc heb je de mogelijkheid om de meeste games in multiplayer te spelen( games die op 1 of andere manier toendertijd een "sofa multiplayermodus" ondersteunden. hopelijk doktert hij daar ook nog wat op:)

Op dit item kan niet meer gereageerd worden.