Tutorial version: 20141013
For this tutorial we'll be using SC7S52 and SC7E52 MEM80 dumps.
When code porting, the only memory required to port codes is MEM80. MEM90 is used for other, more complicated things, which require a USB Gecko or for pointer codes.
So, head on over to the link below and download the dumps.
http://adf.ly/shkBy
You will also need a program called HxD Hex Editor. A Hex editor is a program that allows you to view the Hexadecimal data of a file and make changes as need be. You won't want to make any changes to a RAM dump though, as it could cause errors and mistakes in your work.
If you don't already have HxD, you can download it from the link below. Extract it to a folder somewhere on your desktop for easy access.
http://adf.ly/shkDc
Once the RAM dumps are done downloading, extract them to a folder called "RAM Dumps" somewhere easy to access, like on your desktop, as mentioned before. Inside that folder, you could even get really organized and download a shit tonne of RAM dumps and have folders that are alphabetized for easy searching. This would be unnecessary though, as there is a search function inside Windows Explorer.
Once you've done all that, it's time to open up the RAM dumps. Remember, you only need to open up the MEM80 dumps. For this tutorial we will be porting a Multiplayer code, so only open up the following RAM dumps.
Note, that when you went to the link to download the RAM dumps, you only saw SC7D52, SC7P52 and SC7S52. PAL (P) and North America (E) both have the same RAM. So, there's no need to download both. As for the other regions, they don't have the same RAM. Only PAL and North America have the same RAM. Although, this only applies to Call of Duty games and a few others.
SC7S52_MP_DUMP80
SC7P52_MP_DUMP80
If you're wondering what the two characters between the underscores mean, refer to below this sentence.
MP = Multiplayer
ZM = Zombies
SP = Single Player
For easier access to opening the dumps next time. Right click the dump and select "Open with..." and find HxD. This will tell Windows that any file with the extension of .bin or .raw it's default application handler is HxD. Now, instead of searching for HxD, just find your RAM dump and double click it to open it in HxD. Saves all the hassle of selecting HxD each and every time.
Once you have the required dumps opened, we'll search for our address that we're going to port. The address is in red. Always for F2 codes, this is where the address will be. The 6 characters after the F2 is the address.
We're going to port this code from SC7E52 to SC7S52.
Now that you know where and what the address is for this code, I want you to copy it and head over to HxD. There, you will open up the Go To box by clicking on Search, then Go To. As you can see, almost every control in HxD has a hotkey assigned to it. This allows for sometimes quicker access to the control. The hotkey for Go To is Ctrl + G.
No matter how you got the Go To box to open, we will now search for the address in the SC7P52_MP_DUMP80 RAM dump. If you have the box opened, but are in the wrong RAM dump, you will have to exit the Go To box and select the tab with the SC7P52 RAM dump, as HxD doesn't allow you to do anything else, but use the Go To box when it is opened.
Now, you will search for the address. Leave the radio buttons as is and paste in the address and click OK or press Enter on your keyboard.
You will see a whole bunch of different numbers and letters. Those numbers and letters are called Hexadecimal or Hex for short. These are important, as you will be needing to study them carefully when porting.
The key here is to find similarities in the RAM dumps to make a match to the correct address.
To do this, you will need to copy some of that Hex and search for it in the other RAM dump. To do this, study it carefully and note the obvious stuff that you can copy, but will make HxD throw a "Can not find..." error. These are usually pointers. A pointer is an address that is listed inside the RAM dump itself. For example, if you're looking through a RAM dump and you come across something like 8124BC98, make sure you don't copy this, as this is a pointer. And since the RAM is different, there will be different pointers and you'll never end up finding the address you're looking for.
Another thing to look out for is garbled up similar to below.
12CD8F69 04A8B24C 982F34EF 8921FC4D
Why should you avoid this? The reason being is because it's too random, it's not unique enough, unlike below. Below is similar to what you should be using to search, if you can.
38600000 2C300001 66FF66FF 41200000
Now what happens if you try copying over 5,000 bytes of data? You're always going to get the error that HxD couldn't find what you were looking for. Perhaps if you copy too little, you will get too many matches. Our goal is to match the data from one RAM dump to another with as little matches as possible. If you know how to do this properly, almost every time, you should end up with only one match.
It's always a good idea to copy the address's value (address + 4 bytes, inclusive from beginning value) as well. Why? The address ALWAYS has the same value as other RAM dumps from the same game. Unless the RAM dump was taken in-game (it shouldn't be), it might have a different value, therefore, making your job a little harder. This is one of the reasons why we dump the RAM at the main menu; when RAM isn't changing the good values that we use to make our codes.
So, anyways copy what you think should be the right amount of bytes to try to match, as well as what bytes to match.
Switch over to the SC7S52 tab and press Ctrl + F or click Search and then Find. Paste into the Search For text box the bytes of data you copied from the SC7P52 RAM dump. Change the Datatype to Hex Values. If you are somewhere else in the RAM dump, change Search Direction to All. If you were following along with every step in this tutorial and not playing around with the RAM dump, you wouldn't have to change the Search Direction to All. But nonetheless, it is always best to search All.
Press Enter on your keyboard or OK on the control box. If it found something, press F3 to have it search through the RAM dump again. If it says it can't find what you were looking for, then this is good! Find the exact value of the address and copy it into the new code's address placeholder.
If it finds something, you need to go back and search for different bytes of data and do the search comparison all over again. Once you found it, congratulations! You ported a code!
If you think you have the right address, post the code below and you will get credits for it.
If you have any questions or suggestions for this tutorial, please let me know!
----------------------------------------------------
Easy To Understand Tutorial With Pictures
----------------------------------------------------
For this tutorial we'll be using SC7S52 and SC7E52 MEM80 dumps.
When code porting, the only memory required to port codes is MEM80. MEM90 is used for other, more complicated things, which require a USB Gecko or for pointer codes.
So, head on over to the link below and download the dumps.
http://adf.ly/shkBy
You will also need a program called HxD Hex Editor. A Hex editor is a program that allows you to view the Hexadecimal data of a file and make changes as need be. You won't want to make any changes to a RAM dump though, as it could cause errors and mistakes in your work.
If you don't already have HxD, you can download it from the link below. Extract it to a folder somewhere on your desktop for easy access.
http://adf.ly/shkDc
Once the RAM dumps are done downloading, extract them to a folder called "RAM Dumps" somewhere easy to access, like on your desktop, as mentioned before. Inside that folder, you could even get really organized and download a shit tonne of RAM dumps and have folders that are alphabetized for easy searching. This would be unnecessary though, as there is a search function inside Windows Explorer.
Once you've done all that, it's time to open up the RAM dumps. Remember, you only need to open up the MEM80 dumps. For this tutorial we will be porting a Multiplayer code, so only open up the following RAM dumps.
Note, that when you went to the link to download the RAM dumps, you only saw SC7D52, SC7P52 and SC7S52. PAL (P) and North America (E) both have the same RAM. So, there's no need to download both. As for the other regions, they don't have the same RAM. Only PAL and North America have the same RAM. Although, this only applies to Call of Duty games and a few others.
SC7S52_MP_DUMP80
SC7P52_MP_DUMP80
If you're wondering what the two characters between the underscores mean, refer to below this sentence.
MP = Multiplayer
ZM = Zombies
SP = Single Player
For easier access to opening the dumps next time. Right click the dump and select "Open with..." and find HxD. This will tell Windows that any file with the extension of .bin or .raw it's default application handler is HxD. Now, instead of searching for HxD, just find your RAM dump and double click it to open it in HxD. Saves all the hassle of selecting HxD each and every time.
Once you have the required dumps opened, we'll search for our address that we're going to port. The address is in red. Always for F2 codes, this is where the address will be. The 6 characters after the F2 is the address.
No Health Regeneration [Bully@Wiiplaza]
F251B73C 0283CD01
60000000 00000000
F251B73C 0283CD01
60000000 00000000
We're going to port this code from SC7E52 to SC7S52.
Now that you know where and what the address is for this code, I want you to copy it and head over to HxD. There, you will open up the Go To box by clicking on Search, then Go To. As you can see, almost every control in HxD has a hotkey assigned to it. This allows for sometimes quicker access to the control. The hotkey for Go To is Ctrl + G.
No matter how you got the Go To box to open, we will now search for the address in the SC7P52_MP_DUMP80 RAM dump. If you have the box opened, but are in the wrong RAM dump, you will have to exit the Go To box and select the tab with the SC7P52 RAM dump, as HxD doesn't allow you to do anything else, but use the Go To box when it is opened.
Now, you will search for the address. Leave the radio buttons as is and paste in the address and click OK or press Enter on your keyboard.
You will see a whole bunch of different numbers and letters. Those numbers and letters are called Hexadecimal or Hex for short. These are important, as you will be needing to study them carefully when porting.
The key here is to find similarities in the RAM dumps to make a match to the correct address.
To do this, you will need to copy some of that Hex and search for it in the other RAM dump. To do this, study it carefully and note the obvious stuff that you can copy, but will make HxD throw a "Can not find..." error. These are usually pointers. A pointer is an address that is listed inside the RAM dump itself. For example, if you're looking through a RAM dump and you come across something like 8124BC98, make sure you don't copy this, as this is a pointer. And since the RAM is different, there will be different pointers and you'll never end up finding the address you're looking for.
Another thing to look out for is garbled up similar to below.
12CD8F69 04A8B24C 982F34EF 8921FC4D
Why should you avoid this? The reason being is because it's too random, it's not unique enough, unlike below. Below is similar to what you should be using to search, if you can.
38600000 2C300001 66FF66FF 41200000
Now what happens if you try copying over 5,000 bytes of data? You're always going to get the error that HxD couldn't find what you were looking for. Perhaps if you copy too little, you will get too many matches. Our goal is to match the data from one RAM dump to another with as little matches as possible. If you know how to do this properly, almost every time, you should end up with only one match.
It's always a good idea to copy the address's value (address + 4 bytes, inclusive from beginning value) as well. Why? The address ALWAYS has the same value as other RAM dumps from the same game. Unless the RAM dump was taken in-game (it shouldn't be), it might have a different value, therefore, making your job a little harder. This is one of the reasons why we dump the RAM at the main menu; when RAM isn't changing the good values that we use to make our codes.
So, anyways copy what you think should be the right amount of bytes to try to match, as well as what bytes to match.
Switch over to the SC7S52 tab and press Ctrl + F or click Search and then Find. Paste into the Search For text box the bytes of data you copied from the SC7P52 RAM dump. Change the Datatype to Hex Values. If you are somewhere else in the RAM dump, change Search Direction to All. If you were following along with every step in this tutorial and not playing around with the RAM dump, you wouldn't have to change the Search Direction to All. But nonetheless, it is always best to search All.
Press Enter on your keyboard or OK on the control box. If it found something, press F3 to have it search through the RAM dump again. If it says it can't find what you were looking for, then this is good! Find the exact value of the address and copy it into the new code's address placeholder.
If it finds something, you need to go back and search for different bytes of data and do the search comparison all over again. Once you found it, congratulations! You ported a code!
If you think you have the right address, post the code below and you will get credits for it.
If you have any questions or suggestions for this tutorial, please let me know!
- Notes:
- Always test the codes you port, especially when porting codes from one game mode / game to another. You don't necessarily need to test the codes you port from region to region, as these are usually positive matches. If you become good enough, you won't even have to test the codes.
----------------------------------------------------
Easy To Understand Tutorial With Pictures
----------------------------------------------------
- Spoiler:
- Step: 1
Download a RAM dump from both regions of the game. Click on the link below to download the dumps.
http://adf.ly/shkBy
Note: Click Skip Ad when timer runs out.
Step: 2
Download SC7P52 and SC7S52.
Note: These are the dumps we're going to use for this tutorial. See note from Step #1.
Step: 3
Click on the download button to begin downloading.
Note: Do the same for the other region.
Step 4:
Once done downloading, extract the files to a folder.
Note: I'm going to assume you already have HxD and an archive program, such as 7Zip or WinRAR.
Step 5:
Open HxD and search for the RAM dumps. Find SC7S52_MP_DUMP80 and SC7P52_MP_DUMP80 and open both of them.
Note: You can right click the RAM dumps and choose to open them in HxD and have HxD as the default application for handling RAM dumps. This makes it easier and faster to open RAM dumps, instead of having to search for them in HxD. Also, holding Ctrl and clicking files allows you to choose different files to open simultaneously.
Step: 6
Find a code to port from SC7E52 to SC7S52.
This looks like a good code:
No Mantle Hints [Bully@Wiiplaza]
F23FB0C8 022C0001
38000000 00000000
Note: The address is in red.
Step: 7
Copy the address from the code.
Step: 8
In HxD, click on the search tab and choose Go To or just press Ctrl+G. A dialog box should appear.
Step: 10
Leave all the options as-is and paste the address into the text box. Press Enter or click OK.
Step: 11
Copy some of the bytes, including the address value from right to left, left to right or both. I usually start with left to right. But you can do whatever you want.
Note: Copying too little will provide too many matches. Copying too much might result in no matches. Think carefully about how much to copy, where to copy from and what to copy. Also, you don't have to copy the address value, but it just means you'll make yourself work harder if you don't. You'll have to calculate the difference from what you copied to where the address is and use the offset result to find the address in the destination dump.
Step 12:
Take what you copied and search for it in the destination dump (dump you're porting to). But instead of using the Go To function, use the Find Text function. Do this by pressing Ctrl+F or by choosing it in the Search tab.
Step 13:
Change the Datatype to Hex-Values and you can leave everything else as it is, but it's best to always have the Search Direction set to All. Finally, paste into the text box the values you copied.
Step 14:
If it finds something, then you might be on the right track. To make sure their aren't any duplicate matches, press F3 to search forward for any other matches. If you'd like to search backwards, press F3+Shift. If it finds another match, go back to the source dump and change how much and what bytes to copy and repeat the process over again until you have one match.
Note: Sometimes you might get at least 3+ matches, but if you really know how to port codes, you can tell which one is the correct match, just by looking at it.
Step 15:
If you narrowed it down to one match, highlight the address value and press Ctrl+E. It will bring up a dialog. Copy the Start Offset.
Step 16:
Paste the Start Offset you just got into the code's previous address.
This:
No Mantle Hints [Bully@Wiiplaza]
F23FB0C8 022C0001
38000000 00000000
Becomes this:
No Mantle Hints [Bully@Wiiplaza]
F23FA340 022C0001
38000000 00000000
-------------------------------------------------------
Any suggestions or questions, please post below!
Last edited by shitnbitch@BWH on 10/12/2014, 5:13 pm; edited 2 times in total