added 3dsx support

This adds 3dsx support
I personally like to have explicit `default` in switches, even if it just asserts false so that we know something's wrong if execution ever reaches that point. I don't think everyone else agrees with me though, so we should probably see what they think of it.