Ah, 3DS. I actually played mine just yesterday. It’s a great little machine and the autostereoscopic capabilities are always fun, even if they’re way too finicky in terms of angle adjustment.
Way back in 2016, when I first started my first game, I always dreamed of porting it to 3DS. Sure enough, I found that 1.2 port and added it to my master to do list… At least, to see how much I’d have to cut to make the downgrade happen.
That was five years ago now. It’s no longer the newest Nintendo system–not even the newest Nintendo handheld, if you count the Switch. The last publisher-backed release for the system was now a couple of years ago, and as far as I could tell from my thirty seconds of research just now, there are only a handful of indie titles scheduled for the system at this point.
So the question is: would there really be any interest for something like this?
Though I did find a 2021 article that indicates that the system is actually still quite well-played, ultimately it would need to be well-developed-for instead for an SDL2 port to find much use. I really kind of expected it to retain a decent-sized niche among indies who wanted to take advantage of the autostereoscopic features, or even motion control.
Long story short, let me put it this way: I, for one, would be interested in at least playing around with this, but I’m a nobody (lol). Unless you mostly want to do this for fun (which is legit!), I would make sure you can get some other developers onboard.
Now, as far as suggestions, the obvious ones that come to mind are to include additional features for stereoscopic display, motion control and mic input. I think for stereoscopic display, you have two options:
- Add additional parameter for some overloads (well, in C you can’t overload, so I guess new functions) of the Blit functions to set a depth parameter.
- Have a function that sets the depth for all blits.
I think option 2 is the better option because it has a smaller footprint in the API, because it would be easier for porting (especially if the default is zero), and because most 2D games display things in layers anyway. You would just be able to set a depth, draw all your background stuff, set another depth, draw your main stuff, set a third depth, draw all your foreground stuff.
You’ll also need to make sure you take into account the system close sensor–I don’t know how the 3DS handles it, but you may be able to detect it and generate a new SDL event type so the dev can handle it however they want. For example, on DS, Trace Memory used it for a puzzle, and New Super Mario Bros used it to play sound effects.
There are also probably a lot of other pieces of the 3DS Operating System that you could integrate, like the battery sensor and I’m not sure what else.
Hope this helps!