Tools Needed
A patched rom (we are going to be using Pokemon Soul Silver for this tutorial)
An Unpatched Rom
Hex Comparison tool (HexCmp / Somthing free)
Emulator (DeSmuME)
ttdt
-- Step 1: Find out what the patcher did --
first we need to find out what the patch did to do this we will compare the patched and unpatched roms using the Hex Comparison tool
we will ignore all difference's between 0x00000000 and 0x0000015F this is the roms header and does not need to be edited whaen using extinfo.dat
Go to the first difference after the header
As you can see, the start of the difference is at 0x00004300
-- Step 2: Find the correct place in memory --
now open up the unpatched rom in DeSmuME, go to Tools>Ram Search
now we need to search for the first 4 bytes at 0x00004300
but wait, due to the way the DS work's you have to put the values in backwards like so
9A A3 17 5C >> 5C 17 A3 9A
set every thing up like so
now click search
it looks like we were lucky this time as there is only one result
but we should check that everything is correct (sometimes you will get more that one result so you will have to check them all)
Go to Tools>View Memory and close the window Titled "ARM7 memory"
Now we are going to check if we have the correct offset.
In the View address box type the offet we have just found, and click go.
It looks like we have foud the correct place so all that is left to be done is add this to extinfo.dat
Now repeat for every difference in the patched file.
There is a shortcut for the rest of the Edits but I cannot guarantee this working
Since the rom loads into memory the same as it is in the rom all we have to do is workout an offset and apply it to the patch locations in the rom
ok the next patch is at 0x00004A18 in the rom
if we take away 0x00004000 and Add 0x02000000 we get 0x02000A18
looking at the memory using DeSmuME we can see if this is correct
and it is
you may notice that I have highlighted more than the patch at the bottom
you can use the hex preceeding and following the target area to confirm that this it the correct place (very usefull if you get more than one hit)
In the next tutorial i will be showing how to convert a (J) infolib.dat / extinfo.dat into a (U) one
A patched rom (we are going to be using Pokemon Soul Silver for this tutorial)
An Unpatched Rom
Hex Comparison tool (HexCmp / Somthing free)
Emulator (DeSmuME)
ttdt
-- Step 1: Find out what the patcher did --
first we need to find out what the patch did to do this we will compare the patched and unpatched roms using the Hex Comparison tool
we will ignore all difference's between 0x00000000 and 0x0000015F this is the roms header and does not need to be edited whaen using extinfo.dat
Go to the first difference after the header
As you can see, the start of the difference is at 0x00004300
-- Step 2: Find the correct place in memory --
now open up the unpatched rom in DeSmuME, go to Tools>Ram Search
now we need to search for the first 4 bytes at 0x00004300
but wait, due to the way the DS work's you have to put the values in backwards like so
9A A3 17 5C >> 5C 17 A3 9A
set every thing up like so
now click search
it looks like we were lucky this time as there is only one result
but we should check that everything is correct (sometimes you will get more that one result so you will have to check them all)
Go to Tools>View Memory and close the window Titled "ARM7 memory"
Now we are going to check if we have the correct offset.
In the View address box type the offet we have just found, and click go.
It looks like we have foud the correct place so all that is left to be done is add this to extinfo.dat
Now repeat for every difference in the patched file.
There is a shortcut for the rest of the Edits but I cannot guarantee this working
Since the rom loads into memory the same as it is in the rom all we have to do is workout an offset and apply it to the patch locations in the rom
Code:
Patch in RomÂÂÂÂÂÂ0x00004300
Patch in MemoryÂÂ 0x02000300
Memory OffsetÂÂÂÂ 0x02000000ÂÂ(it is allways this)
DiffrenceÂÂÂÂÂÂÂÂ 0x00004000
ok the next patch is at 0x00004A18 in the rom
if we take away 0x00004000 and Add 0x02000000 we get 0x02000A18
looking at the memory using DeSmuME we can see if this is correct
and it is
you may notice that I have highlighted more than the patch at the bottom
you can use the hex preceeding and following the target area to confirm that this it the correct place (very usefull if you get more than one hit)
In the next tutorial i will be showing how to convert a (J) infolib.dat / extinfo.dat into a (U) one