12 ms·
Yup that's me, and thanks, I didn't know I had fans :) Another little thing I'm currently working on is a Nintendo DS emulator written 100% in Go: https://gith
by giovannibajo1 11y ago
Yup that's me, and thanks, I didn't know I had fans :)
Another little thing I'm currently working on is a Nintendo DS emulator written 100% in Go:
https://github.com/rasky/ndsemu https://github.com/rasky/ndsemu
This is very early stage, it boots the BIOS but barely boots any game and they're all very garbled.
The nice thing is that I'm emulating graphics fully in parallel with goroutines, so the GPU runs in parallel with CPU. They even potentially access the same memory (VRAM) and I didn't put any mutex/lock there, as theoretically the undefined behavior is similar to what happens in the real hardware... :) I'm curious to see if the strategy pays and I'm able to complete the emulator like this. I'm going to also emulate sound in this way.
As for optimizations go, the approach is a little bit different: I had to optimize things here and there to work around (many) Go compiler deficiencies and achieve decent speed. So the code is less "barebone" than Genesis, and that adds up to the fact that the hardware is vastly more complex per-se.
I've also factored out generic code in the "emu" sub-package, that is a collection of generic emulation-related classes/packages that could be reused for different emulators in Go.
- voltagex_ 11y agoIs there a (legal) way to try out this emulator? Say, with a homebrew ROM?
- giovannibajo1 11y agoI didn't have time to implement support for homebrew ROMs (in fact, I don't even know how they work -- I'm not into the NDS homebrew scene so I know close to nothing on how they are developed). I would expect at least the BIOS to be needed, maybe the firmware is custom; it is certainly possible to emulate the BIOS via HLE (I know some emulators do it), but I find it a little outside of the scope of my projects. I might get to it, eventually. I also dispute that owning a dump of a game/BIOS of a console you own is illegal, but that's a large discussion for lawyers :)