**UPDATED 1/30 11:07pm GMT -5**
Game Name: Advance Wars: Dual Strike
Game Code: AWRE
Game ID: bc9ee732
Region: U
This is a simple technique that can be applied to most games with a little modification. What we are going to do is map out the block of memory that Advance Wars uses to store information for our units. This technique can be used on games where you have a code for two or more "Units" in a contiguous block of memory. For example, in any of the Pokemon games, the Pokemon in your party are in a contiguous memory block because if you find a health code for the first two Pokemon and find the difference between the addresses in hex you can add that number to your current health address to get the health address of the next Pokemon. If you don't understand what I am saying, just keep reading and it should become a lot more clear after the examples.
Ok, we are going to start with the codes that Datel have been so kind to hack for us. Open up your Action Replay Code Manager and browse through the USA games until you come to "Advance Wars: Dual Strike" (should be the first in the list). Expand the tab and browse to
the "SQUAD 1 CODES" folder. Expand the tab and you should see
UNIT 1: Press Y To Move Again
UNIT 2: Press Y To Move Again
UNIT 3: Press Y To Move Again etc....
Open up the "UNIT 1: Press Y To Move Again" code and you will see
9216e594 f7ff0800 - Joker "If Code"
22188473 00000000 - Address we are modifying
d0000000 00000000 - "end if" code
we are interested in the address 22188473 because it holds the bit for whether or not our first unit has moved. (1=moved 0= not moved)
Now open up the "UNIT 2: Press Y To Move Again" code and you will see
9216e594 f7ff0800 - Joker "If Code"
22188481 00000000 - Address we are modifying
d0000000 00000000 - "end if" code
once again we are interested in the address in the middle 22188481. Now since we suspect that the units should all be in a contiguous block of memory we are going to subtract the UNIT 1 code FROM the UNIT 1 code like this
(NOTE: When using the Windows Calc goto view->Scientific and make sure to set it to HEX)
22188481
- 22188473
__________
E
You should come up with E. If not, check that you are in fact in Hex mode. To easily convert this to decimal, all you have to do is switch the calc back into decimal mode and it will display 14. What this means is that each Unit is made up of 14 bytes or "addresses" containing information on them. Now for your first easy hack. Datel only gave us codes to move the first 25 Units again, but Advance Wars allows up to 50 units per game. To extend this to all 50 units, start with the "UNIT 25: Press Y To Move Again" address and add 14 which in hex is E
221885c3
+ E
________
221885d1
Did you come up with 221885d1? if so, good job. Now your code to move UNIT 26 again is 221885d1 00000000. If you wanted them to all be "Press Y" cheats make sure to add the Joker code in like so
UNIT 26: Press Y To Move Again
9216e594 f7ff0800
221885d1 00000000
d0000000 00000000
Now all you have to do is repeat the steps until you get to UNIT 50!
**SECTION 2**
Are you ready to learn how to make more exciting cheats? good, here we go. Remember earlier when I mention that the Units take up 14 bytes of memory? Well, those 14 bytes hold information on our units health, gas, and other stuff. Lets find out what they are.
The First step is to take a look at our "Base Address" which is the "UNIT 1: Press Y To Move Again" code 22188473. For the sake of simplicity I will tell you that the units memory actually starts one byte up at 22188472. So our 14 byte block of memory looks like this
address effect
______________________________
22188472--------????
22188473--------move again
22188474--------????
22188475--------????
22188476--------????
22188477--------????
22188478--------????
22188479--------????
2218847A--------????
2218847B--------????
2218847C--------????
2218847D--------????
2218847E--------????
2218847F--------????
To find out what these address are for, simply use a code with a value that you think could be easy to spot. For example, try using 17 (11h) and looking at the ammo or health of your first unit to see what has a value of 17 or has been affected or something different. If say your gas changes to 17 then you know what the address does.
after poking around I have been able to almost completely map out a units memory area
address effect
______________________________
22188472--------Unit Modifier
22188473--------move again - 0 = Has not moved, 1 = Has moved
22188474--------X Position
22188475--------Y Position
22188476--------Unit # Loaded in slot 1
22188477--------Unit # Loaded in slot 2
22188478--------Health
22188479--------Ammo and Some Status flags are stored here
2218847A--------Gas
2218847B--------????
2218847C--------????
2218847D--------????
2218847E--------????
2218847F--------????
*Unit # Loaded in slot 1 and 2 means the unit number used for the cheat will be loaded into unit 1 like on a Boat or APC Ex.
22188476 00000003 - Unit 3 is loaded into Unit 1
22188477 0000000a - Unit 10 is loaded into Unit 1
This code could be used with a Button activator or "Joker Code"
May also need to modify the Units position to match the Unit it will be loaded into
*Health ranges from 0 to 100. 10 health points is worth 100, 8 is 80, 4 is 40 etc.
22188478 00000064 will give Unit 1 full health (100 health or 10 health points).
*Ammo shares an address with the flags that let the game know if your unit is currently capturing, low ammo, low gas, etc. To have infinity ammo you have to know what bits the ammo use and use a bitwise and type code to "and" your ammo into the address without affecting the other bits. I will come back to this later...
Unit Modifier Values
_____________________
00--------------No Unit
01--------------Infantry
**Check back for Update**
**To tired to finish**
**NEXT UPDATES**
-finish the unit modifier value list
-how to find the ammo bit and create an "and" cheat
|