Hacks WAD Creation Tutorial
Hacks WAD Creation Tutorial
Hacks WAD Creation Tutorial
Made by aglab2
Preparation
Tools + Data Download: Link
External Tools:
1) Simple ARMIPS GUI Link
2) cmder or any other cmdline Link
3) [optional but highly recommended] CustomizeMii Link
4) [optional] Hex Editor, I recommend HxD
Tools Description
1) blips.exe - tool to apply patches to
2) sm64compress.exe - modified version of sm64compress by queueRAM to
allow for better hacks compression, Source Code
3) ROMManagerCompress.exe - similar tool as sm64compress but for ROM
Manager roms
4) sm64wiikit.exe - injector for ROMs into WADs + configurator, Source Code
gzinject: Source Code
5) f3dfix.exe - fixer and optimizer of fast3d display lists
Data Description
1) sm64.wad - Super Mario 64 WAD, used to inject roms into it
2) patches - various patches applied to ROM
3) extscroll* - files necessary for f3dfix
ROM Modification: ASM
There are 2 reasons why ROMs might not work properly on Wii: poor custom asm
support & 32mb size limit.
To tackle the first problem, there are patches directory. Open Simple Armpis GUI
and apply needed asm patches to it, patches are explained below.
Usually no patches other than marked green are necessary for the hack to boot up.
Try launching the ROM, if rom happens to crash on one of these places, apply an
extra patch. Notice that no patches other than green ones are necessary by default!
unloader2 Patch that reduces drawing distance for objects, tbd for regular
usage
antiinvi Fix for invi wall patch, usually needed if Mario gets stuck in air
fileselect Fix for act select crash on entering the main course
mio0*, static* MIO0 and static bank loading, useless nowadays, left for history
parallel Fix for parallel lakitu cam, usually needed if game crashes after
the file select
pipes Fix for very old hack crashes, was only needed for Green Stars
This section can be skipped if your hack does not use custom levels or ROM was
made with ROM Manager
Make ROM backup, Open f3dfix.exe and Load ROM. Make sure to turn on Nerf Fog
option, Wii has heavier fog and these options make it look similar to emu.Enable all
optimization configs. Press Fix in ROM.
This will fix all the combiner issues in ROM and make transparent textures look
properly on Wii. Apply extscroll.asm and extscroll-legacy.asm patches to avoid
crashes (not needed without Rebuild options)
ROM Compression
Compressed rom will only work if its size is below or equal 32MB, if it is higher than
32MB, try passing “-s” and “-u” options to sm64compress.
Open sm64wiikit.exe, open sm64.wad file. Press “Inject” button and select the ROM.
If you use a GameCube controller without any adapters, enable “Mapping Fix” in a
Control Stick section. Enable “GC Y -> Up” if the framewalk button is necessary.
Pay attention to the “Button Mapping” section, usually GC L needs to be mapped to
N64 L. You may use any mapping you want.
Open CustomizeMii tool and select Source Wad. Go to Banner tab. In it, you can edit
VCPic.tpl to any other picture of resolution 256x192
.
Resulting WAD could be launched on Wii with a nice looking game image.
WAD Trying Out
Before trying to install WADs on real console, try it out on Dolphin emu. Press Open
and select your WAD. Allow WAD that is not signed by Nintendo. Your ROM should
be able to be playable in Dolphin.
Make sure your ROM does not crash after File Select. Do not be afraid of FPS drops
and lags, it will be working better on the real Wii hardware. WAD injection is not
covered in this tutorial but always make sure to have bricking protection on Wii!
Troubleshooting FAQ
Q: My WAD crashes on the black screen even before the Controller notice appear.
A: Make sure to apply have noerror.asm patch applied to ROM
Q: I have applied all the patches but my game is still crashing after File Select.
A: Unfortunately, asm support on Wii is terrible, please contact aglab2#6619 at
discord and maybe I can fix the issue.
There are 2 reasons why ROMs might not work properly on Wii: poor custom asm
support & 32mb size limit
Open ROM with LemAsm, press F6, F7, F3, F4. Enter address 6F34. Check if there
are any JAL 0x80402F00 instructions.
If
patch it required, apply fileselect.asm to ROM too.
OBSOLETE ROM Modification: Hex Editing 1/2
This section is not required
Open ROM & patches/level_unused.bin with Hex Editor. Select all bytes from
patches/level_unused.bin and search them in the rom as a Hex Value.
This find will search for unused Level Scripts in the ROM that you want to remove
because it helps with ROM compression later on. Make sure region you found in rom
looks like this
OBSOLETE ROM Modification: Hex Editing 2/2
This section is not required
In my case, I selected bytes from 1580000 to 5811AF. Press Edit > Fill Selection and
Fill pattern of pass Hex-Values 01. This will remove unused level script.
OBSOLETE: ROM in WAD Injection
Open cmder and navigate to dir you have files in. Execute “.\gzinject.exe -a genkey”.
It will ask you to enter string and press enter, do it. Then execute “.\gzinject.exe -a
inject --rom ROMNAME.out.z64 --wad oot.wad -i NXXE -t "HACKNAME"”. In given
command, NXXE can have any letters instead of XX and HACKNAME could be any
string less then 20 symbols.
Resulting WAD with ROM injected will be called oot-inject.wad. This WAD can be
tested on Dolphin emu and checked if ROM will be launched.
OBSOLETE: WAD Decoration 2/2
This section is not required AND IS DANGEROUS
To change Ocarina of Time name and Release Year when opening a WAD channel
on Wii, you need to edit brlyt file. Example file could be found in banner5.brlyt. Open
file with Hex Editor. Go To byte 1310
Edit Year to say the correct Release Date for each language. Do not remove 00 byte
before letters!
Next go to offset 1FF0 and edit name of game. Make sure last 2 bytes in name are
zeroed. You can use byte 0A to put a newline symbol. Set game name for each
language below.
Save resulting brlyt file and import it with CustomizeMii at Layout Tab>Banner
Replace. Save resulting WAD at Source tab.