sm64extend v0.3.1 - fast, compatible SM64 ROM extender
Users browsing this thread: 1 Guest(s)

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 OSX as well, but untested). I released it 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 Importer 1.9.2S/SM64 Editor 2.0.x, Toads Tool 64 v0.6.2S, and Quad64 0.1.1.

​Download sm64extend 0.3.1 (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, and Shindou ROMs (plays in emulators, but TT and level importer only work with (U) ROMs)
  • ​small: < 20KB 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

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

Options:
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.
(This post was last modified: 22-07-2017, 12:11 AM by queueRAM. Edit Reason: sm64extend 0.3.1 release )

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)

Hi! Whenever I try to run this, it says "The program can't start because MSVCR120.dll is missing from your computer." How do I fix this?
Thanks!

(14-09-2016, 06:32 AM)theguy Wrote: Hi! Whenever I try to run this, it says "The program can't start because MSVCR120.dll is missing from your computer." How do I fix this?
Thanks!


Thanks for the report. MSVCR120.DLL is definitely a dependency to run sm64extend. This is the Microsoft C Runtime library and is shipped with the Microsoft Visual C++ Redistributable. I think the 2013 version is the one that is needed for MSVCR120.DLL: Visual C++ Redistributable Packages for Visual Studio 2013. Let me know whether or not this works for you.

Update 21 June 2017: sm64extend 0.3 release
Changelog:
  • ​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 MSVCR120.dll dependency
​Download sm64extend 0.3 (win32)

Thanks to David for suggestions and helping me test.

Update 21 July 2017: sm64extend 0.3.1 release
Changelog:
  • ​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)

sm64extend v0.3.1 - fast, compatible SM64 ROM extender
Users browsing this thread: 1 Guest(s)