Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 43 reacties
Submitter: Cid Highwind

De ontwikkelaars van nullDC, een Sega Dreamcast-emulator voor Windows, hebben de broncode vrijgegeven nadat zij hebben besloten met het project te stoppen. De ontwikkelaars typeren hun eigen broncode als verre van volmaakt.

De eerste versie van nullDC verscheen in 2007 ten tonele. De emulator, die in C# is geschreven en genoegen nam met een GeForce 4, was in staat om een behoorlijk aantal games te draaien die voor de Sega Dreamcast-console waren verschenen. Het werd destijds dan ook gezien als de meest compatibele emulator. De laatste versie van nullDC verscheen in augustus 2008 en beschikte onder andere over joypad-ondersteuning. Ook kwam er een versie uit die Sega's Naomi-arcadeplatform emuleerde.

Inmiddels hebben de nullDC-ontwikkelaars de broncode van hun emulator vrijgegeven. Ook heeft een aantal van hen aangekondigd dat zij de code niet langer zullen ontwikkelen. Bovendien omschrijven de nullDC-developers hun broncode als 'ugly, hacky, buggy and often just plain wrong', maar zij stellen verder dat anderen er misschien hun voordeel mee kunnen doen. De broncode van nullDC is verkrijgbaar via Google Code.

nullDC

Moderatie-faq Wijzig weergave

Reacties (43)

Beetje ironisch als je je eigen werk al als 'ugly, hacky, buggy and often just plain wrong' beschouwd in mijn ogen..
@r-vos: Dat was gewoon een sarcastisch grapje van 'm...

nullDC heeft gewoon meerdere iteraties gehad waarbij in het begin veel werk werd gedaan met 'ZeZu'. Vervolgens is de huidige auteur (drk||Raziel) doorgegaan met de ontwikkeling en heeft hij ook een WinCE port gemaakt.

Uiteraard is dit puur een hobby project voor hem (net zoals m'n PuruPuru input plugin voor nullDC). Dat het nu opensource is betekend niet dat hij er helemaal niet meer aan werkt, wel hopen we dat er andere devs bereid zijn om mee te helpen aan 't project.

@hierboven m.b.t het hobby/amateur/programmeur. De auteur zit in z'n laatste undergrad. jaar CS ...
is waarschijnlijk een hobby-projectje geweest wat nu te veel tijd kost voor deze devs...
en je kan het beter zelf van te voren alvast melden dan dat je achteraf een hoop slechte publiciteit gaat krijgen...
Hier ben ik het volledig mee eens.

Ik ben zelf ook een (hobby) programmeur en zeg soms wel eens van mijn eigen code dat het gewoon ronduit ugly, hacked, buggy, fout, verkeerd , stom en ga zo nog maar even door, is.
Maar werken de meeste programmeurs niet zo? Tenminste mijn insteek (ook hobby programmeur) is dat procedures en functies eerst maar eens moeten werken. Als het dan werkt ga ik eens kijken wat er allemaal mis kan gaan en bouw ik wat error trapping in. En daarna eens kijken of ik het kan verfijnen, nettere code van kan maken etc.

Of gaan "de echte" programmeurs het meteen volledig verfijnt uitwerken liefst nog gemixt met assembler code's om zo'n min mogelijk clock cycles te verspillen?
Een amateur programmeur gaat bezig tot dat het werkt, een professional gaat door tot er niks meer mis kan gaan. Althans, dat is de theorie...
Een amateur programmeur gaat bezig tot dat het werkt, een professional gaat door tot er niks meer mis kan gaan. Althans, dat is de theorie...
Zo hoort het inderdaad te gaan. Je hebt als hobby programmeur hooguit je reputatie te verliezen (als je bekend bent is dat ook een probleem, maar de meeste zijn dat niet), maar als professional heb je vaak veel meer belangen.

Je hebt dikwijls een keiharde verantwoordelijkheid t.o.v. je baas, je klanten en je andere collega's. 1 grove fout aan jouw kant en je kunt erg in de schulden komen vanwege reputatie schade, gemiste inkomsten en schade claims.

Elk bedrijf zal dit af en toe moeten kunnen opvangen, want ondanks alle inspanningen is niemand perfect. Als het te vaak gebeurd kan het bedrijf waarvoor je werkt erg in de problemen komen en daar is niemand bij gebaat.

In sommige sectoren heb je dan ook nog eens toezicht en regelgeving, maar dat is voor de software industrie in z'n geheel niet gebruikelijk.
Natuurlijk heb je als pro wel allerlei mechanismes die moeten voorkomen dat dat daadwerkelijk gebeurt. Betatests, testomgevingen en weet ik wat voordat er daadwerkelijk een uitrol gedaan wordt. Je kan bij een bedrijf eigenlijk nooit de schuld volledig bij één persoon leggen.

Een bedrijf dat zijn software ongetest de deur uit doet is natuurlijk ook stom bezig, maar ook een ander bedrijf dat niet eerst kijkt of er geen gaten in het nieuwe spul zitten net zo goed.
Natuurlijk heb je als pro wel allerlei mechanismes die moeten voorkomen dat dat daadwerkelijk gebeurt. Betatests, testomgevingen en weet ik wat voordat er daadwerkelijk een uitrol gedaan wordt.
Absoluut! Zonder onze testers en uitgebreide test en QA omgevingen zou ik ook zeker niet als 'profesioneel' kunnen werken. De hele organisatie erom heen is idd wat het grote verschil maakt tussen een hobby en pro programmeur.
Tsja... wat is een 'echte' programeur...

Er zijn verschillende type programeaur IMHO, sommige progremeurs zijn ontzettend slim kwa algoritmes, maar de algehele code is nooit so mooi. Erg handig als je projecten als ffmpeg wilt opzetten, dan heb je snelheid nodig boven een goed framework, anders om ook. Samen kom je er dan wel uit om het mooi en snel te maken :)

bv: Wil je iets maken als Symphonny en andere frameworks, dan zul je echt je basis heel goed moeten hebben voordat je je system erop gaat bouwen.

Ikzelf ga altijd eerst even kijekn met wat voor soort project ik te maken heb en of een programma eventueel traag kan worden in verloop van tijd.

bv: Klant wil statistieken hebben van zijn DB. DB groeit met 100K records per maand. Tsja, dan moet je aan snelheid denken en daar je code op baseren. Dan kun je goed inschatten wat het systeem doet met 2Mil of 10 Mil records. Dan is code snelheid belanrijker dan code doorzichtigheid.

Andersom, wil je een web form maken met validatie dan wil je dat je code heel doorzichtig is, en dan is snelheid minder van belang.

Bezint voordat je begint!!!
Dat is toch geen slecht iets? Zolang jij er zo over denkt (en de interesse behoud) zal je het altijd willen verbeteren
In het geval van een emulator niet. Ondanks dat er veel documentatie voor de DreamCast te vinden is, zijn er nog altijd heel veel dingen onduidelijk... timings, bus stalls, interrup timing etc etc. Zulke zaken zijn heel moeilijk om "perfect" te krijgen. Vaak wordt er dus veel met de code gespeeld om bepaalde zaken uit te testen.
Maar spelen kun je ook netjes doen, ;). Of netjes maken voordat je met het volgende verder gaat. Of om de zoveel tijd een opruimactie doorvoeren.
Er is een groot verschil tussen spel en emulator ;)

edit: Wat duidelijker... in een emulator worden vaak hacks gebruikt om spellen te laten werken. Dit zorgt ervoor dat de code dus dirty kan worden. Hacks zijn eigenlijk maar lapmiddelen voor het echte probleem: er is onduidelijk wat de DC hardware op een bepaald moment doet, of de implementatie in code hiervan is niet correct.

Maar agreed, je code regelmatig reviewen/opruimen kan nooit kwaad :)

[Reactie gewijzigd door Deurdouwer op 10 mei 2010 16:25]

Tja, zo kan je het zien. Maar als developer kijk ik om de zoveel tijd eens terug naar mijn oude projecten, en eigenlijk ieder project van ongeveer 1 jaar terug heb ik wel wat op aan te merken, ook vaak dingen als 'ugly, hacky, buggy and often just plain wrong' dat krijg je nou eenmaal als je jezelf continu probeert te verbeteren ;)

In die tijd waren de jongens waarschijnlijk enorm trots op hun code en de netheid ervan :P
Ik vindt het op zich wel grappig dat projecten open source gemaakt worden als de ontwikkelaars er geen zin meer in hebben. Geeft ook wel aan dat open source een soort van afvalbak voor afgedankte software wordt in dit soort gevallen. Ik betwijfel of er mensen zijn die dit direct op gaan pakken.
Zeker weten van wel, hoeveel software/games opensource zijn gegaan en die opgepikt worden door de community? Ontelbaar.. Zo maakte nullDC ook gebruik van de SDL-libaries (ander opensource project)

nullDC is namelijk al weer geupdate; http://nulldc.googlecode.com/files/nulldc_104_r11.rar

daarlangs heb je het pandora project, die inmiddels de code langs elkaar aan het leggen is.

Dus ja! het is zinnig een 'vervallen' project opensource te maken. Zo zal pandora niet direct code gaan copy/paste, maar kunnen zij wel dingen afkijken, technieken imiteren etc.

[Reactie gewijzigd door himlims_ op 10 mei 2010 16:17]

Het belangrijkste is dat de kennis niet verloren gaat. Door een project als NullDC openbaar te maken wordt de drempel voor amateurs verlaagd omdat er al een basis voor een emulator beschikbaar is voor ze.

We zien vaak dat een project zo goed als dood is, maar andere devvers zich er eigenlijk niet aan wagen omdat het nu niet voor iedereen motiveert om altijd maar vergeleken te moeten worden met die andere emulator die zoveel beter is. ePSXe is hier zo'n voorbeeld van. Lange tijd was Chankast het meest populair, en gezien de hacks die hiervoor uit waren was er weldegelijk interesse om verder te werken aan het project. Om van scratch te beginnen kan echter demotiverend werken. Nu kan iedereen leren van nullDC en delen hiervan gebruiken om zo daadwerkelijk iets functioneels toe te voegen, in plaats van eerst de kwaliteit van nullDC te moeten bereiken.
Al pakt niemand het op, en blijft het nog een tijd over internet zweven. Er zullen altijd mensen zijn die er een onderdeel van zoeken.

Daarnaast, is Linux een afvalbak? (je referentie naar opensource)
:X zou ik niet te hard zeggen :X
<edit> verduidelijking van opmerking naar linux.</edit>

[Reactie gewijzigd door Marathir op 10 mei 2010 16:19]

in tegendeel.
Het opensource maken zorgt er juist voor dat er veel info over de werking kan worden bekeken en biedt de potentie aan iedereen die het kan om het verbeteren.
Zeker geen afvalbak dus lijkt me, eerder een nieuw begin, als er behoefte aan is.
Nee hoor, kijk eens naar de wii emulator. Die is ook opensource en broeit van het leven, wii motes werken zelfs op de pc en kun je heel wat spellen spelen.
Zie het meer als een verzamelbak van interessante projecten waar jij de leuke dingen van kan gebruiken

Edit: Sorry refreshen voor een comment posten is wel handig :P

[Reactie gewijzigd door Mellow Jack op 10 mei 2010 16:56]

Goede zet. Nu maar hopen dat een paar goede ontwikkelaars dit oppakken en uitbereiden en verstevigen.

Zou me trouwens ook niets verbazen als je straks op WiiWare een Dreamcast Emulator tegen gaat komen dankzij deze broncode
De Wii heeft al moeite met de N64 emuleren en ik verwacht niet dat Nintendo/Sega gebruik gaat maken van deze emulator voor de Virtual Console (WiiWare zijn originele apps en geen emulators). Er zijn overigens al buggy ports voor de PSP en Wii, maar die zijn niet vooruit te branden.

Ik verwacht eerder dat we binnenkort bruikbare versies kunnen verwachten voor OSX en Linux.

@ DeEchteKwartel: dat is precies wat ik zeg ;) . PSX moet beter kunnen draaien dan de N64.
De N64 zal behelpen blijven met games die gebruik maken van custom microcode.

[Reactie gewijzigd door BarôZZa op 10 mei 2010 17:09]

De Wii kan geen Dreamcast-em aan. De Homebrew scene heeft dit meerdere malen bevestigd. N64 kan wel en PSX is zeer slecht maar draait...

Dat laatste is het interresants :P
De Dreamcast kon PSX aan, als PSX dus al niet lukt op de Wii dan kan je Dreamcast games ook wel vergeten. SEGA ziet zelf overigens meer heil in het opnieuw uitbrengen van Dreamcast games op Xbox Live.
Ik denk dat de ontwikkeling eerder verder gaat in Dolphin. Die emuleert de GameCube en de Wii en de compatibility lijst is een stuk groter.
De Compatibility is juist beter bij de dreamcast emulatoren en daarnaast heb je ook veel minder zware systemen nodig.

De Wii zou in theorie ook een dreamcast emulator moeten kunnen draaien, gezien dat er door het oude Chankast team gezegd is dat de Xbox1 in staat zou kunnen zijn DC spellen te draaien met een aangepaste versie van Chankast toen.

Naar mijn weten is de Wii ietsje krachtiger dan de oude xbox1. Maar kan me voorstellen dat de 64bit architectuur problemen met zich mee zou dragen.
Deze emulator lijkt me toch een stuk vlotter dan de Model3 emulator van Mame, terwijl deze hardware toch wat beter is.
Je vergelijkt nu appels met peren. Verder is mame's doel meer perfectie ipv performance. De naomi emulatie in mame is (was, toen ik hem laatst probeerde) in mame ook vele malen trager dan nulldc en makaron.

[Reactie gewijzigd door am2 op 10 mei 2010 16:09]

De perfectie in MAME is anders ook aardig ver te zoeken. Zodra spellen/software bepaalde hardware features niet gebruiken worden deze features dus ook niet geimplementeerd. Dat is GEEN perfectie.
Het is een zelfopgelegde regel om zo MAME een snuifje legaliteit te geven. Ik kon 85% van de spellen spelen op mijn oude dual celeron 500mhz systeempje met MAME .89 en nog maar 40% met MAME .124... Allemaal door hun zogenaamde perfectie drang, dat spellen minder goed liepen, geluiden slechter klonken en kleuren slechter werden weergegeven waren hier de dupe van.

Maar als het echt alleen voor de documentatie zou zijn van oude hardware, dan hadden ze er al die jaren geen CPS2 spellen in moeten steken omdat dat ook via een hack speelbaar werd gemaakt en zou MAMEdev alleen braaf met de spellen moeten experimenteren waar ze zelf de hardware van hebben. Tenslotte zijn ze allemaal afhankelijk van de grote dump Guru (geweest? Ik ben er een tijdje uitgeweest en er waren problemen toen).

Voor een groot deel is het dan ook een hypocriet stelletje "geworden", die iets teveel van hun populariteit genoten en ben ik blij met alternatieven zoals FBA die willen luisteren naar hun gemeenschap. Maar begrijp me niet verkeerd, ik ben wel hartstikke blij met het MAME initiatief.
Ik heb de sources op googlecode eens bekeken en kwam tot de conclusie dat het helemaal geen C# is, maar C++ (of ik ben gek)

Zie de bestanden die gecommit zijn: http://code.google.com/p/nulldc/source/detail?r=3
En dit kom van het forum(die momenteel plat ligt)
There is no uniform coding style
(nullDC was my first project using C/C++, and it began as a C# project)
Verder.. het zou natuurlijk mooi zijn als andere developers de boel oppakken en verder ontwikkelen/verbeteren.

[Reactie gewijzigd door Steffannnn op 10 mei 2010 16:00]

Idd, geen C#... en wat ik er zo van zie is het niet eens C++ maar C... hoewel het waarschijnlijk niet puur Ansi-C is (niet specifiek naar gekeken maar de extensie zegt al genoeg).

[Reactie gewijzigd door HerrPino op 10 mei 2010 16:04]

't Is niet allemaal puur Ansi-C inderdaad, aangezien er op sommige plekken wel gebruikt gemaakt wordt van C++-'dingen' als classes en vectoren.
Als je Engels zou kunnen lezen, is dat ook exact wat de persoon daar zegt.
zou shenmue nog wel een keer willen spelen. Ik heb een dreamcast staan maar de helft van mn games werkt niet meer. De dreamcast had een sega/yamaha eigen systeem voor de CD's en zodra er een kras opzit werkt de game niet meer.
Het is inderdaad jammer dat de CD's, of beter gezegd GD-ROMs, niet kunnen worden gelezen door een DVD speler. Er zijn wel een zeer beperkt aantal drives die dit kunnen na zware modificatie, maar ook die zijn zo goed als onvindbaar. De DC is aardig gevoelig voor krassen, maar je zou ook kunnen kijken of het niet helpt om je laser beetje bij beetje te calibreren door een potmetertje aan te draaien. Onthoud wel de beginwaarde, anders kan je problemen krijgen ;)
hmmm intressant het klinkt of je verstand heb van electra mooi :D
heb al 6jaar mijn gecasemodde Dreamcast niet meer normaal kunnen gebruiken :(
mijn gameport 1 is defect, 2/3/4 doen het wel..
getest met oa. Stone nogwat 4x multipalyer
maar hierdoor werkt Shenmue 1 en 2 niet meer, die ik origineel heb!
want de checken alleen of er een controller in port 1 zit...
denk je dat je mij zou kunnen/willen helpen?
offtopic:
Om eerlijk te zijn ben ik verder niet zo bekend met de hardware, en heb ik dit ook alleen maar een keer opgegoogled omdat ik wat leesproblemen had. Verder waag ik me absoluut niet aan ingrepen die permanent zijn, zoals soldeerwerk. In dit geval zou natuurlijk de draadjes om kunnen leggen, maar dat zal vast wel soldeerwerk vereisen. Ik kan je het beste verwijzen naar
http://www.dreamcast-scene.com/community/
Mochten zij jou zelf niet verder kunnen helpen weten ze vast wel een ander forum waar dat dan wel weer kan, het zijn in ieder geval lui met een passie voor het systeem, die ook zeker benieuwd zullen zijn naar je casemod.
Ik kan je helaas niet helpen met je case mod, maar je kunt wel een opgelapte Dreamcast kopen voor een paar tientjes bij www.gameplayer.nl en als je game discs/dvd's op wilt lappen, dan zijn er winkels zoals Game Mania die een poets machine hebben en je disc weer zo goed als nieuw kunnen oplappen.

Zo maar even een paar suggesties, hoop dat je er wat aan hebt...
Deze emulator heeft nooit echt kunnen tippen aan Chankast helaas.

Screenshot roept wel goede herinneringen op, wat was Super Magnetic Neo toch een moeilijk spel :)
NullDC? Nooit van gehoord.
Zal het eens bekijken hoe dat werkt etc. :)

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True