I have to know do i need a USB Gecko to port codes
Quote from: Chaos1 on November 22, 2009, 06:56:28 PM
I have to know do i need a USB Gecko to port codes
no
1.first find a code that is in a region you do not require
2. then find the exact same code in the region you want
now find the address
3. subtract the addresses and get the offset of the regions..
4 now just subtract/add the difference to any other code in the region you want (must be same game) .
Example
Rune Factory Frontier (JPN) to (USA)
Max Gold JPN
04492690 05F5E0FF the address is 04492690 so = 80492690
Max Gold USA
04499090 05F5E0FFthe address is 04499090 so = 80499090 now subtract with a hex calculator
80499090-80492690=6A00 so in order to port to a us code in this game you must add 6A00 from most usa codes
example using above
rune factory
max hp JPN
04492688 FFFFFFFF the address is 04492688=80492688 so the usa address is 80492688+6A00=80499088 so
max hp USA
04499088 FFFFFFFF
What about codes with more than one line :smileyface:
Does it works th same way?
does this works with other games????
If you want to port a code with more than one line, life gets a lot more complicated. It depends greatly on the structure of the code itself.
Many codes of more than one line follow a pointer tree. That is, it'll start by loading a value which stores an address, then using this to find another address, using this new value to find a new one etc. Generally, in this case, from one version of a game to another, we only need to change where we start our pointer tree. (e.g. the tree is exactly the same, just in a different place). Thus, porting is still simple.
They may also refer to several distinct addresses, in which case you will have to port each of these addresses.
For Assembly Codes, generally changing where the branch is set is sufficient. I have known a few rare cases where the set of safe registers changes from region to region, but generally speaking this is unlikely.
So, porting doesn't require a USB Gecko at all, but it does require a decent understanding of codetypes. It also requires one of either a sample of the same codes from both regions of the game, or a memory dump of both regions of the game.
Oh! ok, thanks. :smileyface:
I'm new, can you help.
1. How do i find the address?
2. Do i need some kind of program?
Thanks
I second this.
Quote from: memememememe on December 10, 2009, 06:05:10 AM
I'm new, can you help.
1. How do i find the address?
2. Do i need some kind of program?
Thanks
Max HP (Rune Factory)
04492688 FFFFFFFF
1. Ok, the first 8 digits of a code is normally the address. (In our case it is 04492688) You have to take the first two digits off of the code (04 in our case) and replace them with 80, the main base address, Unless specified by a base address change. Our address is now 80492688. Now, if you were to boot up Wiird, and search for that, you would have the value of HP at your hands.
*NOTE* To tell if the code has a different base address, it will begin with 42000000 XX000000 Where XX is the base address for the code.
2. As far as I know, there are no programs which will port the codes. This process is a manual process. This is because the Memory Addresses are offset differently for each game.
If there is something that you dont understand or need help with, please tell me.
Yeah i want to port these code from sonic riders zero gravity RS9P8P from PAL to NTSC US :)
P1 Infinite GP(Gravity energy) by agrs700
48000000 80496EF0
DE000000 80008180
1400198C 42FF0000
E0000000 80008000
P1 Infinite rings(in race) by agrs700
48000000 80496EEC
DE000000 80008180
14000B3E 00000064
E0000000 80008000
P2 Infinite GP(Gravity energy) by agrs700
48000000 80496F04
DE000000 80008180
14005E0C 42FF0000
E0000000 80008000
P2 Infinite rings(in race) by agrs700
48000000 80496EF0
DE000000 80008180
14000B3E 00000064
E0000000 80008000
But i dont know how to do so :-\ ,please help.Many thanks.
Someone's gonna have to make at least one code to be able to port them.
So you can't port codes without and address?
OK so i found the offset and added it to my code giving me
8011DCCC
but i do not have a USB Gecko so i am not sure as to what to do now.
All i know is that my code will be XXXXXXXX 00000000.
If someone could help me i will be very greatfull.
You can port codes if you have a memory dump from the two regions which you want to port from. But that requires a USB Gecko.
Quote from: memememememe on December 14, 2009, 03:54:20 AM
OK so i found the offset and added it to my code giving me
8011DCCC
but i do not have a USB Gecko so i am not sure as to what to do now.
All i know is that my code will be XXXXXXXX 00000000.
If someone could help me i will be very greatfull.
Could you post the codes you're trying to convert?
The codes i want ported are:
P1 Infinite GP(Gravity energy) [agrs700]
48000000 80496EF0
DE000000 80008180
1400198C 42FF0000
E0000000 80008000
P1 Infinite rings(in race) [agrs700]
48000000 80496EEC
DE000000 80008180
14000B3E 00000064
E0000000 80008000
P1 Max GP Modifier [agrs700]
48000000 80496EEC
DE000000 80008180
14000428 xxxx0000
E0000000 80008000
Since there're a billion codes in brawl I messed with this, and as I thought it wasn't as easy as it sounds...
The games aren't identical so the offset isn't always the same, for example, the unlock codes all had the same offset, but codes that had to do with the game, like Triple Jump glitch fix and no fastfall on C-stick had a different offset (the P1 gravity modifier was had a unique offset though :confused:). So I just use my common sense right? Don't see any other way to tell.
The easiest way I found when I had my USBGecko is to have memory dumps of each region... which is easier when you have a Gecko or know someone who does...
Anyways... Using your favorite hex editor... open up the memory dump file...
You just find the address of the code you want to port... Copy a few bytes and search it in the other region...
That ALMOST always works for me... There ARE exceptions...
For example:
QuoteY.S. has many codes originally in the JPN Version of Brawl... I apologize if he already posted it for the JPN, but I couldn't find it... so I ported it ._.
From the Brawl Plusery codeset... I lliked this:
Tags in replays [Y.S]
0404B140 38A00000
So I ported it to the JPN Version
Tags in replays [Y.S, ported by shadowofchaos]
0404B11C 38A00000
Hi five, I ported that code when it came out too.
I don't know how to do this!?
File Replacement v1.3: [Phantom Wings] [NTSC]
C2[0234B8] 0000000E <-- go offset 0234B8 [80 df 00 18 7f e3 fb 78] now search for these valuen.
3C807666 6084303A PAL valuen are 02346C.
7C[042800] 41820058 <-- now go offset 042800 [fc 40 08 18 d0 21 00 80]. when I search for these valuen
3C807364 60843A2F , offset is 0433A4 WTF but in PAL its the same offset "042800" whats wrong???
7C042800 41820048
3C806E61 60846E64
7C042800 41820038
80BE0000 2C050000
4182002C 3CA0805A
60A58500 80850044
7C04F000 41820018
80850048 7C04F000
4182000C 3CC0805A
60C68700 00000000
C20224C0 00000026
7F83E378 3E60805A
62728080 62738700
3E20805B 6231FAE0
A2310002 2C110000
40820098 A2330002
2C110000 4182008C
A2330000 2C110000
40820084 82330004
82110010 2C100000
41820018 81F00084
7E107A14 3A100080
39E00001 4800000C
8211000C 39E00000
39C00000 92120388
91F2038C 91D20390
91D20394 3A1202A9
39F2032F 9DD00001
7C0F8000 4082FFF8
3A310023 3A1202A9
8DF10001 9DF00001
2C0F0000 4082FFF4
3A200010 B2330000
3A200009 92320350
48000054 2C110001
4082004C 7E729B78
86330004 A2120002
39F0FFFF B1F20002
85F30004 95F20004
3A10FFFF 2C100000
4082FFF0 3E60805B
6273FAE0 A2530002
3A120001 B2130002
5652103A 7E739214
92330004 3E60805A
62738700 A2530000
2C120000 4182000C
3A52FFFF B2530000
60000000 00000000
C201C338 00000005
38A00020 3E60805A
62738080 82530394
2C120000 4182000C
80930390 83130390
60000000 00000000
C201C384 00000006
3E60805A 62738080
82530394 2C120000
41820010 3B400000
3A400000 48000008
541A0034 60000000
60000000 00000000
It would be prudent to start with a much simpler code to port. The File Replacement code is very intricate and complex. Without a fairly thorough understanding of what it is doing, you will not be able to make a functional port. That said, if you do want to port it you should at least port the latest version.
For example the block:
C20234B8 0000000E
3C807666 6084303A
7C042800 41820058
3C807364 60843A2F
7C042800 41820048
3C806E61 60846E64
7C042800 41820038
80BE0000 2C050000
4182002C 3CA0805A
60A58500 80850044
7C04F000 41820018
80850048 7C04F000
4182000C 3CC0805A
60C68700 00000000
Is all one C2-codetype. Later versions of the FRC use static RAM writes in place of ASM inserts so that various code segments can be re-routed to the injected code blocks.