libsm64-godot
Addon that binds the libsm64 to godot via GDExtention, allowing to integrate mario into any Godot 4 project.
Current Godot Compatibility
Currently compatible with Godot 4.2.x, with binaries compiled for Windows and Linux (untested) 64 bits. Check the releases for the files.
How to
This add-on consists of two main components:
SM64Global
: Singleton that exposes theinit()
andterminate()
functions of the libsm64 library.SM64Mario
: Extends Node3D; can have multiple in any scene.
It also adds two helper nodes:
SM64StaticSurfaceHandler
: Extends Node; provides helper functions to load all the meshes under thelibsm64_static_surfaces
group into thelibsm64
world.SM64SurfaceObjectsHandler
: Extends Node; provides helper functions to load and update all the meshes under thelibsm64_surface_objects
group into thelibsm64
world.
This add-on requires a Super Mario 64 (USA) ROM file (for legal reasons, steps to get a ROM will not be disclosed). Make sure the ROM file has the following SHA256 hash:
17ce077343c6133f8c9f2d6d6d9a4ab62c8cd2aa57c40aea1f490b4c8bb21d91
If the SHA256 doesn't match, it will be rejected and the addon will fail to initialize.
Simple steps for basic use
When creating the scene:
- Add a
SM64StaticSurfaceHandler
node to the scene. - Add the meshes that compose the world to the
libsm64_static_surfaces
group (NOTICE: use simple, low-polycount meshes for best results). - Add a
SM64Mario
node (or as many as you want) and set its camera property with anCamera3D
node. - Create the action names that are in the
SM64Mario
node'sInput Actions
export group in the project's Input Map and bind them to the appropriate axes/buttons/keys.
Then do the following on the scene's main script:
- Feed the
SM64Global
singleton the file path to the Super Mario 64 ROM file (SM64Global.rom_filepath = "path/to/rom/file"
). - Configure the
SM64.Global.scale_factor
property if necessary (try default value first). - Call the
SM64Global.global_init()
function. - Call
StaticSurfaceHandler.load_static_surfaces()
on your instancedSM64StaticSurfaceHandler
node. - Call
SM64Mario.create()
on your instancedSM64Mario
node(s).
For more detailed instructions refer to the manual.