Mapmaking Note: You can port the level geometry from Mario Builder 64 maps to coopdx

BuckleyTim

Member
Modder
Mar 24, 2024
43
37
530
In the arena!
Note: this requires at least a basic knowledge of Blender and Fast64, but if you can follow tutorials to get at least a basic test level in the game before, then you can probably follow along with these notes.

So I've been looking into Mario Builder 64 as I think being able to use it as a base to build level geometry would be a lot more efficient to my general workflow compared to just extruding faces and vertices in blender which I find rather tedious. thankfully it's not that hard to get level geometry into blender in a form that can be exported to coopdx for level replacements/additions. Though there's some notes and oddities that I want to mention for anyone who is also interested in using the tile-based construction format to make landmasses and structures more easily.

Jeffinitup's GitHub parser works in browser and can be found at


It can output level geometry but not much else as it was never completed. Still useful just not ideal, anyways...

Firstly, YOU HAVE TO USE V1.0 OF THE ROMHACK. 1.1 level geometry will not export correctly to the parser!


This is what 1.0 geometry taken from an SD card level (you get that from following the usually mb64 level share tutorials so look those up it takes 5 minutes if using parallel launcher as you probably should be doing with Mario builder) looks like in the parser


This is what 1.1 maps look like when put into the parser. Whatever 1.1 does to make regular geometry compared to the initial version, it clearly is different enough to screw up the parser.

If the map works though, you can easily export it to blender through the parser.

Notes on getting it through fast 64:

- Fast64's material to f3d tool initially doesn't work on the imported geometry; go into the shaders and take out the superfluous mix shader node and connect the image textures for each one to the bsdf color input directly, then it'll work.

- material type need to be set manually (lava will need to be reset as lava, etc

- I don't know if scrolling textures are included in the import but if there were any take them out because you know how the coodx crashes when it tries to do them

- blender to sm64 scale in sm64 general settings tab of fast64 needs to be set to 212.77 or else that level is gonna be comedically small when exported

- if the level boundary walls or floor did not import, that's because they are made by the game on runtime. Only manually placed tiles will export so you unfortunately can't rely on autogenerated floor/wall boundary tiles

After that you can export geometry pretty cleanly to coopdx.

gyYmpzA.png


Again, the current parser isn't finished and likely won't be but as a level geometry maker this is somewhat convenient if you're already familiar with those controls, plus you can edit the result in blender to add and re-texture as needed.
 
Last edited:
  • Like
Reactions: klasky
I did a little bit of work here, but @BuckleyTim 's work is much more impressive:

1. here's a wee parser: Mario Builder 64 v1.1 Level Parser & Serializer
2. binary format (kaitai): RFC: intent to submit mario builder 64 · Issue #717 · kaitai-io/kaitai_struct_formats

My attempts have been to on boot convert the .mb64 file to geo code for .lvl compilation. Got a .a statlic lib compiled out of a refactored mb64, then tried linking it in with some mb64 bindings within coopdx, ...but it's not gone super well. I've been able to boot "into" a level, but without any of the geo rendering correctly. Don't have a crisp texture rendering strategy, but was hoping I could get MB64's linked rendering system to actually take over.

Blargh!
 

Users who are viewing this thread