NOTE: Pictures and screenshots redacted due to NDA
We like challenges and we like our Nintendo DS games. We also just got a new Apple TV dev kit. What came next came naturally.
What it does
We emulate the entire Nintendo DS system on the Apple TV and map the DS controls to the Siri remote. There's a fully functioning d-pad, as well as a and b button emulation. Due to hardware restrictions beyond our control, we're not able to emulate the shoulder buttons. Other than that, it will run nearly every single DS game that you load into it.
How I built it
We based NitrogenTV off the popular open source DS emulation project for PC called Desmume. Since the project is open source, we had a decent jumping off point. We then basically went through and ported over all the emulation layers, then the threaded interpreter, and finally built controller support and UI on top of it. We wanted to port the lightning JIT system over for even faster emulation but didn't have time.
Challenges I ran into
Since the Apple TV isn't even out yet, there was zero documentation for issues that we ran into. We had to figure everything out ourselves through tons of trial and error. It was literally the wild west.
Accomplishments that I'm proud of
The fact that everything seems to be working is an accomplishment. We managed to figure out the Siri controller, which had tons of weird and undocumented behavior. We managed to make basic sense of the Desmume source. We managed to get past Xcode's many issues and finally get something to build.
What I learned
Porting things is very tiresome. You might think it's easy since the source is right there, but that's not the case at all, especially when you're building for completely different architectures.
What's next for NitrogenTV