added 3dsx support

This adds 3dsx support
Why are some of these prefixed with `EM_` and others with `ER_`? If these mean something specific, be more explicit. E.g. `ERROR_READ` or something (again, not sure what the `M` represents.