Welcome dear guest! Very Happy

To start posting and being part of the community, you simply need to register an account or log into an existing one.

Be sure to check out disposable e-mail services, in case you prefer using one for this site instead of your legit address: http://10minutemail.com/10MinuteMail/

If you do not wish to register at all, that's fine but there will be more advertisements. :/

You can see and download all content provided for regular members even without an account!

Your contributions will be greatly appreciated though, give it a shot and register today! thumbsup

Gaming, Modding & Programming

Important reminders:

- Click *HERE* for advanced forum search or check out the text field below on the front page for Google before posting
- NO support via private message (use the forum)
- Write meaningful topic titles
Site Translation

Display results as :

Rechercher Advanced Search

July 2019

Calendar Calendar

Country Statistics
Free counters!

You are not connected. Please login or register

Porting Wii Codes

Go down  Message [Page 1 of 1]

1Porting Wii Codes Empty Porting Wii Codes on 10/7/2014, 4:31 pm


Admin & Writer
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.


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.


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.


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

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!  Smile

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!

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

Step: 1

Download a RAM dump from both regions of the game. Click on the link below to download the dumps.


Note: Click Skip Ad when timer runs out.

Porting Wii Codes Screen42

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.

Porting Wii Codes Screen43

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.

Porting Wii Codes Screen45

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.

Porting Wii Codes Screen47

Step: 10

Leave all the options as-is and paste the address into the text box. Press Enter or click OK.

Porting Wii Codes Screen46

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.

Porting Wii Codes Screen48

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.

Porting Wii Codes Screen49

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.

Porting Wii Codes Screen50

Step 16:

Paste the Start Offset you just got into the code's previous address.


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

Porting Wii Codes Simple10

2Porting Wii Codes Empty Re: Porting Wii Codes on 10/9/2014, 5:34 am


Admin & Writer
UPDATE - 20141009

Added a notes section.
Added some more info to a few things.
Fixed a couple of grammatical errors.

Porting Wii Codes Simple10

3Porting Wii Codes Empty Re: Porting Wii Codes on 10/12/2014, 1:40 am


I read everything. Not bad, but your writing style is quite confusing. If I didn't know how to do it I wouldn't be too sure how it needs to be done xD

Besides, I made a program which tries to port a code over. It does a good job most of the time but eventually returns wrong results. I'm not quite sure why that happens. Maybe I should look into this again. By hand I can do way better x.x


Porting Wii Codes Lejx87ba

4Porting Wii Codes Empty Re: Porting Wii Codes on 10/12/2014, 1:57 am


Admin & Writer
Thanks and yeah, I've noticed that my writing style is... somewhat different than most people's, but I guess that's just how I like to explain things.  lol Later today, I'll keep this version and make a simple step-by-step tutorial. Thanks for the suggestion!

I noticed that when you port codes from CoD NTSC to PAL Deutsche, you only need to add +1 to the 7th char.


When porting codes from other games, I think it can change. Perhaps you can incorporate something to accommodate this in your program.

Porting Wii Codes Simple10

5Porting Wii Codes Empty Re: Porting Wii Codes on 10/12/2014, 4:23 am


shitnbitch@BWH wrote:When porting codes from other games, I think it can change. Perhaps you can incorporate something to accommodate this in your program.
Yeah, it's supposed to be universal. The program figures the offsets out by itself just like you would pick templates and check if they work and whatnot but it's more convenient. Twisted Evil

I re-coded it today with a graphical user interface. Take a look what it does to your tutorial example:

Porting Wii Codes Wii_co11

Porting Wii Codes Lejx87ba

6Porting Wii Codes Empty Re: Porting Wii Codes on 10/12/2014, 5:13 pm


Admin & Writer
Updated with an easy to understand tutorial with pictures.

Porting Wii Codes Simple10

7Porting Wii Codes Empty Re: Porting Wii Codes on 10/12/2014, 8:37 pm


Here's an example execution flow of my porting program for this BO multiplayer code from the P/ E version to S (for learning purposes):

No Mantling [Bully@Wiiplaza]
F2381624 022C0001
38000000 00000000
Current search template: 880400182C000000
Search templates offset: 0 bytes
Is source file offset (381624) plus search template offset (0) equal to first match of search template in source dump (370E7C)? No

Current search template: 2C00000041820154
Search templates offset: 4 bytes
Is source file offset (381624) plus search template offset (4) equal to first match of search template in source dump (77354)? No

Current search template: 4182015483630000
Search templates offset: 8 bytes
Is source file offset (381624) plus search template offset (Cool equal to first match of search template in source dump (38162C)? Yes, applying template to destination dump...
Can template be found in destination dump? No

Current search template: 836300007F63DB78
Search templates offset: C bytes
Is source file offset (381624) plus search template offset (C) equal to first match of search template in source dump (381630)? Yes, applying template to destination dump...
Can template be found in destination dump? Yes, comparing default values...
Is default value from source dump (88040018) equal to default value from destination dump (88040018)? Yes, file offset most likely successfully ported (37E5CC)...
Ported code:

No Mantling [Bully@Wiiplaza]
F237E5CC 022C0001
38000000 00000000

This is the debugger mode I coded into my application. It's disabled by default though, only I need it. By printing these out it slows down the program also.

Porting Wii Codes Lejx87ba

Sponsored content

Back to top  Message [Page 1 of 1]

Permissions in this forum:
You cannot reply to topics in this forum