EasyP
patching's never been easier
DOWNLOAD
I get the feeling I'm making too many tools...
Anyway. before you go and post "We don't need" please read the whole thing (I've had this discussion with Vitor already).
Also, this is the first release, please tell me about any errors if you encounter one.
Also, backup your ROM. Even if errors occur during the usage of this tool, your ROM should remain unedited but backing up is never wrong
In a Nutshell:
EasyP is a GUI based tool, which uses xkas/asar to patch. The aim of this tool is:
- to make patching easier (and thus more appealing for beginers)
- to make it more organized (as it keeps a list of all inserted patches as well as the addresses and the size of changes).
- to make removing off single patches a simple task.
Alcaro's asar already makes pathing a whole lot easier. However, it doesn't change the fact, that (as of September 2013) less then 7% of all the patches hosted at this site or for asar... which concludes, that still more than 93% are for xkas.
This tool is especially meant to easen the task of using xkas. It calculates the size of the patch, looks for freespace in your ROM, set's the freespace and then patches it.
After having setup the xkas patch once, you never have to edit it (set freespace by hand) again.
Offnote: this tool only differes between hijacks and freespaces. Simply said, everything that isn't inserted into freespace, is viewed as a hijack...
Don't Use:
A word of warning. There are a few things (patches) you should entrust EasyP with just yet. (It's being worked on)
Those are patches which need 0x8000 bytes or more (that's 32kb) per one freespace (like Ladida's 32x32 player patch)
Or patches using macros (or other shenanigans) for determing the freepsace (like p4plus2's uberASM)
Please note though, that EasP has an option, that allows for patching "without EasyP" which basicly just measn it will call the assamblers and just insert the patch. It won't calculate the sizes or set freespace for xkas patches. It's save to use this methode for ANY patch. Just make you you've set up everything necessary yourself.
Requirement:
- Windows operationg system
- .NET Framework 4.0 or higher installed
- A clean SMW-ROM
- Lunar Expand by FuSoYa
- Asar by Alcaro
- xkas by Romi, byuu
- Slogger by smkdan
the later 4 are included in the download
Setup / How to use:
- Use Lunar Expand on the clean ROM and change it's size to 64 MBit (8 MB).
Lunar Expand is now no longer needed. - Rename the ROM to "clean.smc", case sensitive
- Dragdrop clean.smc on slogger.exe, it should create a file called "clean.txt"
It should look exaxtly like compare.txt which came along with the download.
If they look alike, (that is, that they both start at 0x108000 and end at 0x6F8000
(excluding the ones with (!) at the end) and the all have a size of 0x8000 - If so, both, clean.txt and Compare.txt are no longer needed.
- Make sure that the following are in one folder:
- EasyP.exe
- asar.exe
- xkas.exe
- slogger.exe
- clean.smc
- asar (folder)
- xkas (folder)
- Move the patch you want to install into the respective folder (depending on which assambler
they were made for).
Even if asar is capable of inserting xkas patches, please DO NOT put xkas patches into the asar
folder, as patches in the asar foder do not search for freespace and other horrible things. - Open EasyP.exe, go to File - Open ROM, search for your ROM (which doesn't need to be in the same
directory) and either doubleclick on the patch in the list to the right, or go to the menu
Patch - Apply Patch after selecting one. - After opening your ROM, the tool will inform you, that it created a file called <ROMname>.pdb
This file keeps track of all the patches you have inserted. Deleting it will not cause failure but it will make you unable to remove the patches with EasyP
Preparing xkas patches:
Patches which don't require freespace can be inserted without doing anything.
For patches which need freespace however, you need to tell EasyP where said freespace is. The line in the patch that is, not the address.
You use:
Code
;@freespace_blw
Place this above the "ORG $xxxxxx" line where you usually put the freespace. The address that is written behind the ORG now no longer matters.
In case the patch uses a definition instead of a direct ORG like this:
Code
!Freespace = $xxxxx . ORG !Freespace
You put the command line above the definition, like this:
Code
;@freespace_blw !Freespace = $xxxxx . ORG !Freespace
Have a few examples:
DOING IT RIGHT Code ;@freespace_blw !Freespace = $xxxxx ;@freespace_blw ORG $xxxxxx NOP #4 . . . ORG !Freespace NOP #10 ORG $xxxxxx ;Hijack, no freespace JSL Mycode | DOING IT WRONG Code !Freespace = $xxxxx ;@freespace_blw ;don't put anything between ;the command and the actuall line. ORG $xxxxxx NOP #4 . . . ;@freespace_blw ORG !Freespace ;Command at definition NOP #10 ;not at the ORG ORG $xxxxxx ;Hijack, no freespace JSL Mycode |
HEX-Editor:
I implemented a simeple hex-editor. If you're gonna ask me why... then probably because I was bored + curious if I could do it.
Anyway, the hex-editor also keeps track of any changes you do. Also you can search for places in the ROM using both, the PC offset and the SNES address.
Mulitpatch Files
EasyP has an implemented system, which allows the usage of Multipatch files. Those are files which make EasyP patch more than one file in one go. It's also possible to use these for patches which require other files to be in the same folder as xkas/asar.
To make a Multipatch file, just create a new .asm file in either the xkas or asar folder (depending on which assambler should be used for all the patches listed in the file). Name the file whatever you want.
Now in the file add this to the first line:
Code
@multipatch
This will tell EasyP, that you're using a multipatch file
duh...
Next you need to tell it, which files you want to import and which patches to patch.
We use @files for the files and @patchlist for the patches.
below the command you write the patch to the file you want to import or the patch you want to apply.
As an example, here is how I wrote the Multipatch file for the Seperate Luigi Graphics Patch
First I created a new folder in the xkas folder called Seperate Luigi(the patch uses xkas, though it doesn't matter where the files are)
I exctracted the downloaded files into the folder. It now had thses files in it:
Next I created the file "Seperate_Luigi.asm" in the xkas folder.
this is what the file looks like:
Code
@multipatch @patchlist .\xkas\Seperate Luigi\luigi.asm @files .\xkas\Seperate Luigi\Luigi.bin .\xkas\Seperate Luigi\Mario.bin
Now, if you open EasyP.exe and open a ROM with it, you'll see Seperate_Luigi in the xkas list. Just patch it and it will do the rest.
NOTES OR IMPORTANCE:
In the example, I used a relative path, that means it starts with .\ and the compiler replaces that with the path for EasyP.exe.
It's more efficient to use those, as you can move the EasyP folder without changing the files, though you can also use am abslotue path like "C:\Users\<Username>\Desktop\EasyP\xkas\Seperate Luigi\luigi.asm
It also doesn't matter in which order you use the @file and @patchlist command. You don't even need to use the @files command. However, it's necessary to have at least one patch in a multipatch file (what good would it do, without patching anything?)
The programm copies the files you list in the EasyP folder and the patches either in the xkas or asar folder (depending on where the multipatch.asm is) if you already have a file by the same name in there, they could be overwritten (you'll be asked).
DOWNLOAD