M64Tool is a level exporter. It wasn't meant to be a level exporter, but that's another story and part of the reason I have lost my interest on Mario 64 modifications.
Right now, it doesn't work *really* well. Most levels and platforms export correctly, but many of the moving/alive objects don't render too well (I suspect this may have to do with some unimplemented stuff like scaling, but behaviour scripts may also play a part). Sometimes huge chunks of the levels are missing (this is probably caused by the objects which are inserted with ID=0, which I don't know what it means... any information about this will be great).
And of couse, since I'm exporting to .OBJ, there are many things that can't work, like billboards.
Anyway, if you want to use it to export levels, the usage is:
./m64tool ROM.z64
If you don't know how to use the command line, just drag&drop the ROM to the program.
You can use a normal ROM or a extended ROM. I have only tested it with a original (unmodified) ROM, but it should work with any ROM as long as it doesn't use any feature not used in the original ROM.
It will create two folders, called "M64_Levels" and "M64_Exports". "levels" will contain the whole levels (note that it will create some duplicate ones, since it'll export the whole level for any reference to it, and some are refered multiple times). "exports" will contain all textures and all collision data found.
Other random things:
- It's cross platform (tested on Windows and Linux).
- I may post an update in some days.
- I will try to implement a viewer or switch to another format to support more things.
DOWNLOAD CURRENT r3.2
download old r3
download old r3 (link broken)
download old r2 (link broken)
download old r1 (link broken)
--- *** --- *** --- *** ---
Anyway, another use you can give to this program is as documentation, as in MAME. There's not really any updated or complete documentation available, and most programs posted here don't come with source. And the ones that do (I'm talking about MariOZMAV) aren't really clean.
The source code is written in the D programming language.
My source code may not be the best, but:
- It works.
- It's pretty complete (can parse level scripts, geometry layout, display lists, animation data, behaviour scripts, collision data and textures).
- It's not really hacky (no special cases).
- It hardly uses any hardcoded data. The only hardcoded offsets are the ones of the entry point banks and the preset models table, all pretty essential in order to get level exporting working.
- It doesn't have too many boilerplate code. I (ab)used D templates in order to auto-generate most parts that would require it.
- It's pretty commented/documented, and includes references to sources and relevant documentation/discussion.
--- *** --- *** --- *** ---
This program is pretty much based on all documentation that I've found around, which is very sparse. Credits go (in no specific order) to messiaen, Nagra, VL-Tone, Cellar Dweller, dudaw, Twili, yoshiman, xdaniel, Michael Tedder and everyone else I'm probably missing.
EXTRA: Download Cellar Dweller's ROM Extender (original host is down) |