Alright guys. I noticed on here that there aren't really any good tutorials for RAM Dump coding on here,and since people need to start out on the basics,I figured I'd post a good tutorial. First off,you need a couple of things:
1)HxD
2)RAM Dump For Your Specific Game and Region
3)A Good Grasp On The Common Systems of Code(Float,ASCII,Hexadecimal,Binary,and Decimal) <-Don't even think about coding if you don't know what the decimal system is...
4)A Basic Ability To Follow Instructions(And A Brain)
5)The Basic Codetypes for RAM Dumps(80 and 81)
First off,open your RAM Dump into HxD. Search for something you believe would be a good hack to make.
6)Gecko.NET
7)Modified Wii With Homebrew Channel
8)Ocarina Code Manager
9)Wii SD Card
10)Gecko OS(Wii) Modified Gecko OS(Gamecube)
11) Knowledge Of How To Make .GCT's and put them on your Wii
------------------------------------------------------------
NOTE: I forgot to place this in the post,but a default value is what becomes highlighted in Gecko.NET. It's what our value is originally before any modification.
First off,open your RAM Dump into HxD. Search for something you believe would be a good hack to make. Do a text search.
Uncheck Unicode Characters to be certain.
1)If you find something you believe that could make a good hack,continue moving on. If not,search again for other things or do multiple searches.
2)Go either to the beginning of the word after the one your searching for,or if that doesn't work,try other areas in between.
3)Right click the area on which the new word began. Copy the ending offset for that character.
4)Go To The Search Box Again. Switch it to a Hex Search and paste the offset found last. Now,do a search.
5)If this found something continue on,if not start from the beginning.
6)Right click the highlighted values,and press Select Block. Set the offset length to 8.
7)Assess the codetype we're dealing with. There will be two kinds of ones to deal with 81 and 80. We now proceed to figuring out which one it is. Some full offsets in HxD will either look like this (1XXXXXX or will have 6 or less hexadecimal characters.) For codes that have a 1 for the 7th value,we can declare the code as an 81 codetype. If not,we can fill 0's until we get to the two from values. Make one that 81 at the beginning and another that has 80 on the end. If it's a DVAR and looks like a command,we assume it's a 81 codetype.
8)Open Gecko.NET. It will give you an error,just ignore and continue. Now,go over to MemView and go to the liitle slider that says USB Gecko,switch it to Open Dump. Now,open that same dump you had open in HxD and open it. Now,near the top left hand corner,there will be a box with update beside of it. Paste your offset value into there. Press Update. If it was an existing offset,it would redirect you and show you a highlighted value.
9)Determine type of value being written. (81 Codetypes are DVAR values and 80 Codetypes are Base Game.) 80's normally use ASCII,but sometimes they'll trick you. 81's normally use Boolean,Float,Hexadecimal,and rarely use ASCII.
Let's say your value has actual typed characters in it. We automatically know it's an ASCII value. If it is a code that can be switched off and on,such as a DVAR value,it's Boolean. Boolean is declared true if the value is 01000000 and false if it's 00000000. It's basically a binary being declared off or on. These codes are obvious and easy to point out,but here comes the hard part. Deciding the difference between a Hexadecimal and a Float. Hexadecimals are just Normal numbers in Hex form. They use 16 base digits(0-9 and A-F)
(0=0 1=1 2=2 3=3 4=4 5=5 6=6 7=7 8=8 9=9 A=10 B=11 C=12 D=13 E=14 F=15)
Floats are values that are written in hexadecimal,but are converted to represent decimal values. You'll notice them if they look especially weird. Say 3F266666. I seen this on a DVAR Value that controlled bullet spread to a perk. Now I know the bullet spread default value definitely doesn't equal 1059481190,which is 3F266666 in hexadecimal,so we assume it's a float. 3F266666=0.65 in Float,which makes since considering the perk decreased the amount of spread. A Hexadecimal is easier to notice. Say we have 60 seconds as a default value before a new round started. We find a value after updating that has 3C as a default and what you found had to do with time. 3C=60 in hex,so we assume the value is hexadecimal.
10)Change the beginning of the offset based on what you were dealing with. If your codetype was 81,change it to 05 and if it was 80,change it to 04. Say our offset in Gecko.NET was 8103845C,we'd say it's really 0503845C and for 8003845C we'd turn that into 0403845C.
11)Turn this into a code. Say we had 0503845C as an offset.
Here's what it would look like as a code:0503845C XXXXXXXX
The X's are what we write to the offset. Offsets are basically a location of a value in the RAM(Random Access Memory)
12) Now,we complete the code. We would now add a terminator on the end. The most commonly used terminator is E0000000 80008000,so we use this.
Here's what our code looks like now:
0503845C XXXXXXXX
E0000000 80008000
13)We now add the specific activator for our game. I don't know what game your using,so I'll just use this:
>>Add Activator<<
0503845C XXXXXXXX
E0000000 80008000
Some games have an online activator,while others don't. Please,find these activators for your game. I'll just use MWR's Activator as an example.
Here's my code now:
2817FE0A YYYYYYYY
0503845C XXXXXXXX
E0000000 80008000
14)Replace the Y's with the value that represents the control you'll be using. You may find button values here: http://www.geckocodes.org/index.php?arsenal=2
I wanted to use Home button,so I'll substitute the Y's for 00008000.
New Code=
2817FE0A 00008000
0503845C XXXXXXXX
E0000000 80008000
15)Now,depending on what type of value was being written,use your value types. You may find a good value converter here:
http://www.geckocodes.org/index.php?arsenal=3
My code value was float,and I want it to be 50%,so I'll set it to 3F000000.
Here's what my code is now:
Perk Spread Modifier For MWR:
2817FE0A 00008000
0503845C 3F000000
E0000000 80008000
16)Now,use Ocarina,turn your codes into a .GCT,and put it in the appropriate folder on your SD Card.
17)Now,use Gecko OS to use your codes in game.
18)Profit!
Before I conclude,I'll break down the code to show you what it does and what the purpose of it is.
Perk Spread Modifier For MWR:
Navigate To Control Values For Game->2817FE0A 00008000<-Execute Upon Button Press
Target Location Of Value->0503845C 3F000000<-Write Value To Offset
E0000000 80008000<-Terminate Code
Alright guys,before I go I hope this is a comprehensive guide that you all can understand. Anyways,If requested,I can make a video over this. Enjoy this tutorial guys!
1)HxD
2)RAM Dump For Your Specific Game and Region
3)A Good Grasp On The Common Systems of Code(Float,ASCII,Hexadecimal,Binary,and Decimal) <-Don't even think about coding if you don't know what the decimal system is...
4)A Basic Ability To Follow Instructions(And A Brain)
5)The Basic Codetypes for RAM Dumps(80 and 81)
First off,open your RAM Dump into HxD. Search for something you believe would be a good hack to make.
6)Gecko.NET
7)Modified Wii With Homebrew Channel
8)Ocarina Code Manager
9)Wii SD Card
10)Gecko OS(Wii) Modified Gecko OS(Gamecube)
11) Knowledge Of How To Make .GCT's and put them on your Wii
------------------------------------------------------------
NOTE: I forgot to place this in the post,but a default value is what becomes highlighted in Gecko.NET. It's what our value is originally before any modification.
First off,open your RAM Dump into HxD. Search for something you believe would be a good hack to make. Do a text search.
Uncheck Unicode Characters to be certain.
1)If you find something you believe that could make a good hack,continue moving on. If not,search again for other things or do multiple searches.
2)Go either to the beginning of the word after the one your searching for,or if that doesn't work,try other areas in between.
3)Right click the area on which the new word began. Copy the ending offset for that character.
4)Go To The Search Box Again. Switch it to a Hex Search and paste the offset found last. Now,do a search.
5)If this found something continue on,if not start from the beginning.
6)Right click the highlighted values,and press Select Block. Set the offset length to 8.
7)Assess the codetype we're dealing with. There will be two kinds of ones to deal with 81 and 80. We now proceed to figuring out which one it is. Some full offsets in HxD will either look like this (1XXXXXX or will have 6 or less hexadecimal characters.) For codes that have a 1 for the 7th value,we can declare the code as an 81 codetype. If not,we can fill 0's until we get to the two from values. Make one that 81 at the beginning and another that has 80 on the end. If it's a DVAR and looks like a command,we assume it's a 81 codetype.
8)Open Gecko.NET. It will give you an error,just ignore and continue. Now,go over to MemView and go to the liitle slider that says USB Gecko,switch it to Open Dump. Now,open that same dump you had open in HxD and open it. Now,near the top left hand corner,there will be a box with update beside of it. Paste your offset value into there. Press Update. If it was an existing offset,it would redirect you and show you a highlighted value.
9)Determine type of value being written. (81 Codetypes are DVAR values and 80 Codetypes are Base Game.) 80's normally use ASCII,but sometimes they'll trick you. 81's normally use Boolean,Float,Hexadecimal,and rarely use ASCII.
Let's say your value has actual typed characters in it. We automatically know it's an ASCII value. If it is a code that can be switched off and on,such as a DVAR value,it's Boolean. Boolean is declared true if the value is 01000000 and false if it's 00000000. It's basically a binary being declared off or on. These codes are obvious and easy to point out,but here comes the hard part. Deciding the difference between a Hexadecimal and a Float. Hexadecimals are just Normal numbers in Hex form. They use 16 base digits(0-9 and A-F)
(0=0 1=1 2=2 3=3 4=4 5=5 6=6 7=7 8=8 9=9 A=10 B=11 C=12 D=13 E=14 F=15)
Floats are values that are written in hexadecimal,but are converted to represent decimal values. You'll notice them if they look especially weird. Say 3F266666. I seen this on a DVAR Value that controlled bullet spread to a perk. Now I know the bullet spread default value definitely doesn't equal 1059481190,which is 3F266666 in hexadecimal,so we assume it's a float. 3F266666=0.65 in Float,which makes since considering the perk decreased the amount of spread. A Hexadecimal is easier to notice. Say we have 60 seconds as a default value before a new round started. We find a value after updating that has 3C as a default and what you found had to do with time. 3C=60 in hex,so we assume the value is hexadecimal.
10)Change the beginning of the offset based on what you were dealing with. If your codetype was 81,change it to 05 and if it was 80,change it to 04. Say our offset in Gecko.NET was 8103845C,we'd say it's really 0503845C and for 8003845C we'd turn that into 0403845C.
11)Turn this into a code. Say we had 0503845C as an offset.
Here's what it would look like as a code:0503845C XXXXXXXX
The X's are what we write to the offset. Offsets are basically a location of a value in the RAM(Random Access Memory)
12) Now,we complete the code. We would now add a terminator on the end. The most commonly used terminator is E0000000 80008000,so we use this.
Here's what our code looks like now:
0503845C XXXXXXXX
E0000000 80008000
13)We now add the specific activator for our game. I don't know what game your using,so I'll just use this:
>>Add Activator<<
0503845C XXXXXXXX
E0000000 80008000
Some games have an online activator,while others don't. Please,find these activators for your game. I'll just use MWR's Activator as an example.
Here's my code now:
2817FE0A YYYYYYYY
0503845C XXXXXXXX
E0000000 80008000
14)Replace the Y's with the value that represents the control you'll be using. You may find button values here: http://www.geckocodes.org/index.php?arsenal=2
I wanted to use Home button,so I'll substitute the Y's for 00008000.
New Code=
2817FE0A 00008000
0503845C XXXXXXXX
E0000000 80008000
15)Now,depending on what type of value was being written,use your value types. You may find a good value converter here:
http://www.geckocodes.org/index.php?arsenal=3
My code value was float,and I want it to be 50%,so I'll set it to 3F000000.
Here's what my code is now:
Perk Spread Modifier For MWR:
2817FE0A 00008000
0503845C 3F000000
E0000000 80008000
16)Now,use Ocarina,turn your codes into a .GCT,and put it in the appropriate folder on your SD Card.
17)Now,use Gecko OS to use your codes in game.
18)Profit!
Before I conclude,I'll break down the code to show you what it does and what the purpose of it is.
Perk Spread Modifier For MWR:
Navigate To Control Values For Game->2817FE0A 00008000<-Execute Upon Button Press
Target Location Of Value->0503845C 3F000000<-Write Value To Offset
E0000000 80008000<-Terminate Code
Alright guys,before I go I hope this is a comprehensive guide that you all can understand. Anyways,If requested,I can make a video over this. Enjoy this tutorial guys!