added 3dsx support

This adds 3dsx support
Recommend to use a `std::vector` instead of manually managing memory.