6 users online:  Fernap, MarioriaM, Runic_Rain, TheJavabrew, will___, Zavok - Guests: 81 - Bots: 210
Users: 56,246 (2,274 active)
Latest user: eggyweggy

sm64extend v0.3.2 - fast, compatible SM64 ROM extender

This is a replacement for the M64ROMExtender and adds a few new features. It is written in C and compiles for Windows and Linux 32/64 bit (probably macOS as well, but untested). It is released under the MIT license so it can be included in any of your projects.

By default, it creates a 64MB extended ROM that is bit compatible with the extended ROM that M64ROMExtender1.3B generates and further extended to 64MB (before the patches are applied by SM64 Editor). I have tested the resulting extended ROMs with SM64 Editor 2.0.x and Toads Tool 64 v0.6.8S.

Download sm64extend 0.3.2 (win32)
Source Code and Project Page

New features:
- configurable extended ROM size (default 64 MB)
- configurable padding between MIO0 blocks (default 32K)
- configurable MIO0 block alignment (default 1 byte)
- option to fill original MIO0 blocks with 0x01
- built-in ROM header CRC computation (non-GPL!)
- works with US, European, Japanese, Shindou, and iQue ROMs (plays in emulators, but TT and level importer only work with (U) ROMs)
- small: 12KB binary
- fast: extends in < 0.5 seconds

M64ROMExtender compatible features:
- accepts Z64 (BE) or V64 (byte-swapped) ROMs as input
- fills extended area with fills with 0x01
- inserts 32 KB padding between MIO0 blocks
- decompresses all MIO0 blocks from ROM to extended area
- changes all 0x18 commands to 0x17
- creates MIO0 headers for all 0x1A commands
- updates assembly reference to first MIO0 block
- dumps MIO0 blocks to 'mio0files' directory

Just drag-and-drop SM64 ROM on the executable for default settings or run from the command prompt specifying these options:
sm64extend [-a ALIGNMENT] [-p PADDING] [-s SIZE] [-d] [-f] [-v] FILE [OUT_FILE]

Optional arguments:
 -a ALIGNMENT byte boundary to align MIO0 blocks (default: 1)
 -p PADDING   padding to insert between MIO0 blocks in KB (default: 32)
 -s SIZE      size of the extended ROM in MB (default: 64)
 -d           dump MIO0 blocks to files in 'mio0files' directory
 -f           fill old MIO0 blocks with 0x01
 -v           verbose progress output

File arguments:
 FILE        input ROM file
 OUT_FILE    output ROM file (default: replaces FILE extension with .ext.z64)

If you have any questions or suggestions, feel free to post them here or on the github project page. Since it is MIT licensed, I welcome you to include the source or binaries in your projects - just include a copy of the license file.
It's about time...
Your layout has been removed.
How do you configure the extended ROM size? What's the minimum and maximum sizes for extending the ROM?
I promise to never cancel my hacks
Originally posted by Blakeoramo
How do you configure the extended ROM size? What's the minimum and maximum sizes for extending the ROM?

sm64extend doesn't impose any limitations on the extended ROM size, but it won't work with anything less than 12MB or probably greater than 64MB. To set the size of the extended ROM, pass the -s flag into sm64extend. For example, to generate a 24MB ROM, run:

Unless you have some custom tools to work with ROMs that aren't 64MB, I wouldn't recommend trying anything other than this default. The SM64 Level Importer and Toad's Tool 64 both rely on the input ROMs being 64MB.
Oh. Okay.
I promise to never cancel my hacks
Update 20 October 2015: sm64extend 0.2.1 release

I've been meaning to get around to this for a while. This will probably be the final release unless any bugs surface.
- add option (-d) to dump MIO0 files to 'mio0files' directory
- add more ROM validity checks on input file

Download sm64extend 0.2.1 (win32)

So for anyone who liked the M64ROMExtender for its simple and easy to use interface, here is a GUI layer for queueRAM's extender. All you have to do is select the SM64 ROM file, choose the extended ROM size you want (default is 64MB), and then just press the "Extend ROM" button and your ROM will be extended. You can also change the MIO0 block padding and byte boundary alignment in the custom tab.

I created this GUI program because I know not everyone likes using the command line, and I want to use the better extender for any future tutorials that I want to make. Of course this program will eventually be outdated if skelux ever decides to make use of queueRAM's extender instead of the old M64ROMExtender.

Here is the download and link to the Github page. This GUI program is under the same MIT license as queueRAM's sm64extend program.

Download sm64extend v0.3 + GUI (win32)
Source code (Github)

Changelog (Version 1.02):
* Updated to sm64extend v0.3
* The basic options now align to 16 bytes for console compatibility.

I get this error when I try to extend the ROM, regardless of what size:

However, I am able to extend it fine with the command line. So what could be the problem?

Originally posted by Mayrio
I get this error when I try to extend the ROM, regardless of what size:

However, I am able to extend it fine with the command line. So what could be the problem?

That error means that sm64extend.exe had a problem with the arguments that were being passed by the GUI. I created a small update (v1.01) that will show what arguments are being passed in. Try it out and show me the results.

Download sm64extend v0.2.1 + GUI(v1.01) (win32)
It shows this:

And then creates a new rom with the extension I selected. So it's fixed I guess?
Update 21 June 2017: sm64extend 0.3 release

- add support for European and Shindou ROMs
- increase detection of level script and asm references
- detect optimized ASM references
- build win32 release with gcc and statically link to drop MSVCR dependency

Download sm64extend 0.3 (win32)

Thanks to Davideesk for suggestions and helping me test.
Update 21 July 2017: sm64extend 0.3.1 release

- add support for .n64 little-endian ROMs
- add further validation on SM64 ROM version
- restrict range of output size to between 16 and 64MB

Download sm64extend 0.3.1 (win32)
Update 21 August 2018: sm64extend 0.3.2 release

- add support for extending iQue ROM

Download sm64extend 0.3.2 (win32)