Over the last year or so I've been squeezing individual fps's of performance out of the PSX emulator and it's been some of the most fun hobby programming I've done in a long time.
Plus you can write for a platform with a 3D screen! How cool is that?
Over the last year or so I've been squeezing individual fps's of performance out of the PSX emulator and it's been some of the most fun hobby programming I've done in a long time.
Plus you can write for a platform with a 3D screen! How cool is that?
That sounds really cool. Do you have any pointers for getting started?
For the basic stuff you can use the usual C libraries. I picked up a lot by reading and tweaking the examples, which are installed along with the toolchain: https://github.com/devkitPro/3ds-examples
libctru, installed with devkitpro (https://libctru.devkitpro.org/) is where a lot of the platform-specific APIs live. There are also some higher-level libraries built on top of it
A good understanding of ARM will take you a long way. A lot of what documentation there is (especially on 3dbrew.org) assumes you understand the terms and general architecture of an older ARM platform. This book https://www.brucesmith.info/arm-a32-assembly-language/ was great for building enough understanding that I could understand most of the official reference manuals. From those, I found the ARMv7 reference manual and the ARM11 MPCore Technical Reference Manual to be the most useful, and I refer back to the ARM instruction set reference card a lot.
Besides that, it's reading and modifying the source of other projects, and trying things out. If you look at homebrew apps like ctrQuake (https://github.com/masterfeizz/ctrQuake), you'll notice there's usually not a lot of platform-specific code -- most is just standard C / C++.
Hope that helps. Just like anything, it's knowing enough to get started (a toolchain, some C, and some examples) and using your questions and ideas to draw you into the next thing to learn.