content search

Action Replay V3 Code Types

in article > Faqs: Gameboy Advanced

-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------
This document is an explanation on how to create AR V3 codes using the AR Crypt Program Beta8.
-------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------


Check \"Expert Mode\" in the Main menu, and check \"AR V3\" in the \"Create...\" Menu.

Enter the \"numbers separated by periods\" found in this document in the \"Data Size\", \"Code Type\",
\"Code Subtype\", \"Unknown 1\" and \"Unknown 2\" spinedit boxes.

Then Type in the 1st line of the left memo your RAW codes on ONE LINE.

Press the \"Create\" Button.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Exemple :
*********
\"----------------------------------------------------------------------------------------------
11) 2 Lines Special Codes (= starting with \'00000000\' and padded (if needed) with \"00000000\").
----------------------------------------------------------------------------------------------
You have to add the 0es manually, after clicking the \"create\" button.

1.2.0.x.x
XXXXXXXX : (02024EA4 -> 14224EA4)
0000ZZZZ : Writes Halfword ZZZZ to adress XXXXXXXX.\"



Set \"Data Size\" to 1, \"Code Type\" to 2, \"Code Subtype\" to 0, \"Special\" to x (=any value, for exemple 0)
and \"Unused\" to x (=any value, for exemple 0).

Type in the left memo your RAW adress (for exemple \"02024ea4\") and your value (8 digits, padded with
0es at the start if needed ; for exemple \"00001234\"). (That gives 02024ea400001234).

Now press the Create button. Ar Crypt will compute the ARV3 Raw (= unencrypted) code, will display it
on the 2nd line of the left memo, and will encrypt it in the right memo.

Left memo : Right memo:
02024ea000000001
12224EA0 00000001 C0CDA2A4 03ED8BB8


Now this code is one of the \"2 lines special codes\" that need to be padded with 0es.
So break the ARV3 Raw code in two lines, add 0es before the 1st line and after the 2nd line,
and press proceed. The lines 2 and 3 of the right memo will have the encrypted (working) ARV3
code you wanted:

Left memo : Right memo:
02024ea000000001 BD7C6C50 0F9E2D72
00000000 12224EA0 A81467EF C2D5BB2A
00000001 00000000 7FD49BC1 DBCF6C10



The good ARV3 Code is then:
A81467EF C2D5BB2A
7FD49BC1 DBCF6C10

(One day, AR Crypt will pad the codes with 0es automatically. Until then, you\'ll have to do it manually).

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~






================================================================================================
================================================================================================
WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
================================================================================================

All adresses gotten by decrypting V3 codes are in V3 RAW Format.
Let\'s say the decrypted V3 code is : XXXXXXXX YYYYYYYY

\"Data Size\" = (XXXXXXXX >> $19) AND 3
\"Code Type\" = (XXXXXXXX >> $1B) AND 7
\"Code Subtype\" = (XXXXXXXX >> $1E) AND 3
\"Unknown 2\" = (XXXXXXXX >> $18) AND 1
\"Unknown 1\" = (XXXXXXXX >> $12) AND 3

\"Unknown 1\" seems to never be used. It\'s not even calculated by the AR. The data is just trashed.
But it isn\'t useless. It might be used to create codes that will have some kind of signature,
so you might know if someone steal your codes...

Morevover, you an also change the \"x\" to any allowed value to create even more \"signatures\".
For exemple :
0.0.0.x.x will give you 4*2=8 different encryptions for the very same code.
x.1.0.x.x will give you 4*4*2=32 different encryptions for the very same code.



Then, to get the the real RAW Adress, you need to do :

XXXXXXXX = (XXXXXXXX AND $01FFFFFF)
RAW Adress = ((XXXXXXXX << 4) AND $0F000000) + (XXXXXXXX AND $0003FFFF)





================================================================================================
WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
================================================================================================
================================================================================================





----------------
AR V3 Codes Type
----------------
----------------


---------------------------
1) Normal RAM Write Codes :
---------------------------

Type 00
0.0.0.x.x
XXXXXXXX : (02024EA4 -> 00224EA4)
YYYYYYZZ : Fill area (XXXXXXXX) to (XXXXXXXX+YYYYYY) with Byte ZZ.

Type 01
1.0.0.x.x :
XXXXXXXX : (02024EA4 -> 02224EA4)
YYYYZZZZ : Fill area (XXXXXXXX) to (XXXXXXXX+YYYY*2) with Halfword ZZZZ.

Type 02
2.0.0.x.x :
XXXXXXXX : (02024EA4 -> 04224EA4)
ZZZZZZZZ : Write the Word ZZZZZZZZ to address XXXXXXXX.




----------------------------
2) Pointer RAM Write Codes :
----------------------------

Type 20
0.0.1.x.x
XXXXXXXX : (02024EA4 -> 40224EA4)
YYYYYYZZ : Writes Byte ZZ to ([the adress kept in XXXXXXXX]+[YYYYYY]).

Type 21
1.0.1.x.x
XXXXXXXX : (02024EA4 -> 4224EA4)
YYYYZZZZ : Writes Halfword ZZZZ ([the adress kept in XXXXXXXX]+[YYYY*2]).

Type 22
2.0.1.x.x
XXXXXXXX : (02024EA4 -> 4424EA4)
ZZZZZZZZ : Writes the Word ZZZZZZZZ to [the adress kept in XXXXXXXX].




--------------
3) Add Codes :
--------------

Type 40
0.0.2.x.x
XXXXXXXX : (02024EA4 -> 80224EA4)
000000ZZ : Add the Byte ZZ to the Byte stored in XXXXXXXX.

Type 41
1.0.2.x.x
XXXXXXXX : (02024EA4 -> 82224EA4)
0000ZZZZ : Add the Halfword ZZZZ to the Halfword stored in XXXXXXXX.

Type 42
2.0.2.x.x
XXXXXXXX : (02024EA4 -> 84224EA4)
ZZZZZZZZ : Add the Word ZZZZ to the Halfword stored in XXXXXXXX.




--------------------------------------
4) Write to $4000000 (IO Registers!) :
--------------------------------------

Type 63
3.0.3.0.x
00XXXXXX : (00000130 -> C6000130)
0000ZZZZ : Write the Halfword ZZZZ to the adress $4XXXXXX

Type E3
3.0.3.1.x :
00XXXXXX : (00000130 -> C7000130)
ZZZZZZZZ : Write the Word ZZZZZZZZ to the adress $4XXXXXX





--------------------------------
5) If Equal Code (= Joker Code) :
--------------------------------

Type 04
0.1.0.x.x
XXXXXXXX : (02024EA4 -> 08224EA4)
000000ZZ : If Byte at XXXXXXXX = ZZ then execute next code.

Type 24
0.1.1.x.x
XXXXXXXX : (02024EA4 -> 48224EA4)
000000ZZ : If Byte at XXXXXXXX = ZZ then execute next 2 codes.

Type 44
0.1.2.x.x
XXXXXXXX : (02024EA4 -> 88224EA4)
000000ZZ : If Byte at XXXXXXXX = ZZ execute all the codes below this one in the same row (else execute
none of the codes below).
Type 64
0.1.3.x.x
XXXXXXXX : (02024EA4 -> C8224EA4)
000000ZZ : While Byte at XXXXXXXX <> ZZ turn off all codes.


Type 05
1.1.0.x.x
XXXXXXXX : (02024EA4 -> 0A224EA4)
0000ZZZZ : If Halfword at XXXXXXXX = ZZZZ then execute next code.

Type 25
1.1.1.x.x
XXXXXXXX : (02024EA4 -> 4A224EA4)
0000ZZZZ : If Halfword at XXXXXXXX = ZZZZ then execute next 2 codes.

Type 45
1.1.2.x.x
XXXXXXXX : (02024EA4 -> 8A224EA4)
0000ZZZZ : If Halfword at XXXXXXXX = ZZZZ execute all the codes below this one in the same row (else execute
none of the codes below).
Type 65
1.1.3.x.x
XXXXXXXX : (02024EA4 -> CA224EA4)
0000ZZZZ : While Halfword at XXXXXXXX <> ZZZZ turn off all codes.


Type 06
2.1.0.x.x
XXXXXXXX : (02024EA4 -> 0C224EA4)
ZZZZZZZZ : If Word at XXXXXXXX = ZZZZZZZZ then execute next code.

Type 26
2.1.1.x.x
XXXXXXXX : (02024EA4 -> 4C224EA4)
ZZZZZZZZ : If Word at XXXXXXXX = ZZZZZZZZ then execute next 2 codes.

Type 46
2.1.2.x.x
XXXXXXXX : (02024EA4 -> 8C224EA4)
ZZZZZZZZ : If Word at XXXXXXXX = ZZZZZZZZ execute all the codes below this one in the same row (else execute
none of the codes below).
Type 66
2.1.3.x.x
XXXXXXXX : (02024EA4 -> CC224EA4)
ZZZZZZZZ : While Word at XXXXXXXX <> ZZZZZZZZ turn off all codes.




----------------------
6) If Different Code :
----------------------

Type 08
0.2.0.x.x
XXXXXXXX : (02024EA4 -> 10224EA4)
000000ZZ : If Byte at XXXXXXXX <> ZZ then execute next code.

Type 28
0.2.1.x.x
XXXXXXXX : (02024EA4 -> 50224EA4)
000000ZZ : If Byte at XXXXXXXX <> ZZ then execute next 2 codes.

Type 48
0.2.2.x.x
XXXXXXXX : (02024EA4 -> 90224EA4)
000000ZZ : If Byte at XXXXXXXX <> ZZ execute all the codes below this one in the same row (else execute
none of the codes below).
Type 68
0.2.3.x.x
XXXXXXXX : (02024EA4 -> D0224EA4)
000000ZZ : While Byte at XXXXXXXX = ZZ turn off all codes.


Type 09
1.2.0.x.x
XXXXXXXX : (02024EA4 -> 12224EA4)
0000ZZZZ : If Halfword at XXXXXXXX <> ZZZZ then execute next code.

Type 29
1.2.1.x.x
XXXXXXXX : (02024EA4 -> 52224EA4)
0000ZZZZ : If Halfword at XXXXXXXX <> ZZZZ then execute next 2 codes.

Type 49
1.2.2.x.x
XXXXXXXX : (02024EA4 -> 92224EA4)
0000ZZZZ : If Halfword at XXXXXXXX <> ZZZZ disable all the codes below this one.

Type 69
1.2.3.x.x
XXXXXXXX : (02024EA4 -> D2224EA4)
0000ZZZZ : While Halfword at XXXXXXXX = ZZZZ turn off all codes.



Type 0A
2.2.0.x.x
XXXXXXXX : (02024EA4 -> 14224EA4)
ZZZZZZZZ : If Word at XXXXXXXX <> ZZZZZZZZ then execute next code.

Type 2A
2.2.1.x.x
XXXXXXXX : (02024EA4 -> 54224EA4)
ZZZZZZZZ : If Word at XXXXXXXX <> ZZZZZZZZ then execute next 2 codes.

Type 4A
2.2.2.x.x
XXXXXXXX : (02024EA4 -> 94224EA4)
ZZZZZZZZ : If Word at XXXXXXXX <> ZZZZZZZZ disable all the codes below this one.

Type 6A
2.2.3.x.x
XXXXXXXX : (02024EA4 -> D4224EA4)
ZZZZZZZZ : While Word at XXXXXXXX = ZZZZZZZZ turn off all codes.




-------------------------------------------------------
7) [If Byte at adress XXXXXXXX is lower than ZZ] Code :
-------------------------------------------------------


Type 0C
0.3.0.x.x , 0.5.0.x.x
XXXXXXXX : (02024EA4 -> 18224EA4 or 28224EA4)
000000ZZ : If ZZ > Byte at XXXXXXXX then execute next code.

Type 2C
0.3.1.x.x , 0.5.1.x.x
XXXXXXXX : (02024EA4 -> 58224EA4 or 68224EA4)
000000ZZ : If ZZ > Byte at XXXXXXXX then execute next 2 codes.

Type 4C
0.3.2.x.x , 0.5.2.x.x
XXXXXXXX : (02024EA4 -> 98224EA4 or A8224EA4)
000000ZZ : If ZZ > Byte at XXXXXXXX then execute all following codes in the same row (else execute
none of the codes below).

Type 6C
0.3.3.x.x , 0.5.3.x.x
XXXXXXXX : (02024EA4 -> D8224EA4 or E8224EA4)
000000ZZ : While ZZ <= Byte at XXXXXXXX turn off all codes.




---------------------------------------------------------
8) [If Byte at adress XXXXXXXX is higher than ZZ] Code :
---------------------------------------------------------


Type 10
0.4.0.x.x , 0.6.0.x.x
XXXXXXXX : (02024EA4 -> 20224EA4 or 30224EA4)
000000ZZ : If ZZ < Byte at XXXXXXXX then execute next code.

Type 30
0.4.1.x.x , 0.6.1.x.x
XXXXXXXX : (02024EA4 -> 60224EA4 or 70224EA4)
000000ZZ : If ZZ < Byte at XXXXXXXX then execute next 2 codes.

Type 50
0.4.2.x.x , 0.6.2.x.x
XXXXXXXX : (02024EA4 -> A0224EA4 or B0224EA4)
000000ZZ : If ZZ < Byte at XXXXXXXX then execute all following codes in the same row (else execute none of the codes below).

Type 70
0.4.3.x.x , 0.6.3.x.x
XXXXXXXX : (02024EA4 -> E0224EA4 or F0224EA4)
000000ZZ : While ZZ => Byte at XXXXXXXX turn off all codes.




-----------------
9) If AND Code :
-----------------


Type 1C
0.7.0.x.x
XXXXXXXX : (02024EA4 -> 38224EA4)
000000ZZ : If ZZ AND Byte at XXXXXXXX <> 0 (= True) then execute next code.

Type 3C
0.7.1.x.x
XXXXXXXX : (02024EA4 -> 78224EA4)
000000ZZ : If ZZ AND Byte at XXXXXXXX <> 0 (= True) then execute next 2 codes.

Type 5C
0.7.2.x.x
XXXXXXXX : (02024EA4 -> B8224EA4)
000000ZZ : If ZZ AND Byte at XXXXXXXX <> 0 (= True) then execute all following codes in the same row (else execute
none of the codes below).

Type 7C
0.7.3.x.x
XXXXXXXX : (02024EA4 -> F8224EA4)
000000ZZ : While ZZ AND Byte at XXXXXXXX = 0 (= False) then turn off all codes.


Type 1D
1.7.0.x.x
XXXXXXXX : (02024EA4 -> 3A224EA4)
0000ZZZZ : If ZZZZ AND Halfword at XXXXXXXX <> 0 (= True) then execute next code.

Type 3D
1.7.1.x.x
XXXXXXXX : (02024EA4 -> 7A224EA4)
0000ZZZZ : If ZZZZ AND Halfword at XXXXXXXX <> 0 (= True) then execute next 2 codes.

Type 5D
1.7.2.x.x
XXXXXXXX : (02024EA4 -> BA224EA4)
0000ZZZZ : If ZZZZ AND Halfword at XXXXXXXX <> 0 (= True) then execute all following codes in the same row (else execute none of the codes below).

Type 7D
1.7.3.x.x
XXXXXXXX : (02024EA4 -> FA224EA4)
0000ZZZZ : While ZZZZ AND Halfword at XXXXXXXX = 0 (= False) then turn off all codes.


Type 1E
2.7.0.x.x
XXXXXXXX : (02024EA4 -> 3C224EA4)
ZZZZZZZZ : If ZZZZZZZZ AND Word at XXXXXXXX <> 0 (= True) then execute next code.

Type 3E
2.7.1.x.x
XXXXXXXX : (02024EA4 -> 7C224EA4)
ZZZZZZZZ : If ZZZZZZZZ AND Word at XXXXXXXX <> 0 (= True) then execute next 2 codes.

Type 5E
2.7.2.x.x
XXXXXXXX : (02024EA4 -> BC224EA4)
ZZZZZZZZ : If ZZZZZZZZ AND Word at XXXXXXXX <> 0 (= True) then execute all following codes in the same row (else execute none of the codes below).

Type 7E
2.7.3.x.x
XXXXXXXX : (02024EA4 -> FC224EA4)
ZZZZZZZZ : While ZZZZZZZZ AND Word at XXXXXXXX = 0 (= False) then turn off all codes.




------------------------------------------------------
10) 1 Line Special Codes (= starting with \"00000000\").
------------------------------------------------------


One Line codes :

Type z00
0.0.0.0.0
00000000 : End of the code list (even if you put values in the 2nd line).

Type z04
x.1.0.x.x
0800XX00 : AR Slowdown : loops the AR XX times



----------------------------------------------------------------------------------------------
11) 2 Lines Special Codes (= starting with \'00000000\' and padded (if needed) with \"00000000\").
----------------------------------------------------------------------------------------------
You have to add the 0es manually, after clicking the \"create\" button.


Type z08
0.2.0.x.x
XXXXXXXX : (02024EA4 -> 10224EA4)
000000ZZ : Writes Byte ZZ to adress XXXXXXXX when AR button is pushed .

Type z09
1.2.0.x.x
XXXXXXXX : (02024EA4 -> 12224EA4)
0000ZZZZ : Writes Halfword ZZZZ to adress XXXXXXXX.

Type z0A
2.2.0.x.x
XXXXXXXX : (02024EA4 -> 14224EA4)
ZZZZZZZZ : Writes Word ZZZZZZZZ to adress XXXXXXXX.



Type z0C
0.3.0.x.x
XXXXXXXX : (02024EA4 -> 18224EA4)
0000ZZZZ : Patches ROM Adress (XXXXXXXX << 1) with Halfword ZZZZ.

Type z0D
1.3.0.x.x (Does not work on V1/2 upgraded to V3. Only for a real V3 Hardware?)
XXXXXXXX : (02024EA4 -> 1A224EA4)
0000ZZZZ : Patches ROM Adress (XXXXXXXX << 1) with Halfword ZZZZ.

Type z0E
2.3.0.x.x (Does not work on V1/2 upgraded to V3. Only for a real V3 Hardware?)
XXXXXXXX : (02024EA4 -> 1C224EA4)
0000ZZZZ : Patches ROM Adress (XXXXXXXX << 1) with Halfword ZZZZ.

Type z0F
3.3.0.x.x (Does not work on V1/2 upgraded to V3. Only for a real V3 Hardware?)
XXXXXXXX : (02024EA4 -> 1E224EA4)
0000ZZZZ : Patches ROM Adress (XXXXXXXX << 1) with Halfword ZZZZ.



Type z20
x.0.1.x.x
00000000 : (00000000 -> 40000000)
00000000 : (SP = 0) (means : stops the \"then execute all following codes in the same row\"
and stops the \"else execute none of the codes below)\".



Type z30
x.4.1.x.x
00000000 : (00000000 -> 60000000)
00000000 : (If SP <> 2 -> SP = 1) (means : start to execute all codes until end of codes or SP = 0).
(bypass the number of codes to executes set by the master code).



Type z40
0.0.2.x.x
XXXXXXXX : (02024EA4 -> 80224EA4)
000000YY : Writes Byte YY at Adress XXXXXXXX. Then makes YY = YY + Z1, XXXXXXXX = XXXXXXXX + Z3Z3,
Z1Z2Z3Z3 : Z2 = Z2 - 1, and repeats until Z2<0.

Type z41
1.0.2.x.x
XXXXXXXX : (02024EA4 -> 82224EA4)
0000YYYY : Writes Halfword YYYY at Adress XXXXXXXX. Then makes YYYY = YYYY + Z1, XXXXXXXX = XXXXXXXX + Z3Z3*2,
Z1Z2Z3Z3 : Z2 = Z2 - 1, and repeats until Z2<0.

Type z42
2.0.2.x.x
XXXXXXXX : (02024EA4 -> 84224EA4)
YYYYYYYY : Writes Word YYYYYYYY at Adress XXXXXXXX. Then makes YYYYYYYY = YYYYYYYY + Z1, XXXXXXXX = XXXXXXXX + Z3Z3*4,
Z1Z2Z3Z3 : Z2 = Z2 - 1, and repeats until Z2<0.

WARNING : There is a BUG on the REAL AR (v2 upgraded to v3, and maybe on real v3) with the 32Bits Increment Slide code.
You HAVE to add a code (best choice is 80000000 00000000 : add 0 to value at adress 0) right after it,
else the AR will erase the 2 last 8 digits lines of the 32 Bits Inc. Slide code when you enter it !!!





-------------------
12) Special Codes :
-------------------

-Master Code :

Type 62
2.0.3.x.x
XXXXXXXX : (Adress to patch -> Adress to patch AND $1FFFFFE)
0000YYYY : Master Code settings.


-ID Code :

XXXXXXXX : word at adress 080000AC
001DC0DE : Must always be 001DC0DE


-DEADFACE Code :

DEADFACE : Must always be DEADFACE
0000XXXX : New Encryption seed.







-------------
Final Notes :
-------------

SP = 0 : normal (execute n codes before giving back the hand to the game).
SP = 1 : execute all codes until SP <>1 (or end of codes).
SP = 2 : don\'t execute anymore codes.

Each time the GSA starts to execute codes (= each time \"it has the hand\"), SP = 0.

The \'execute all the codes below this one in the same row\' makes SP = 1.
The \'(else execute none of the codes below)\' makes SP = 2.
The \'turn off all codes\' makes an infinite loop (that can\'t be broken, unless the condition becomes True).
All trademarks are copyright their respective owners, all other content is copyright Codemasters Project
Date / Time
 
Select Theme


Google AdSense
Online
Guests: 2
Team Members: 0
Team Login
Username:

Password:


Remember me

[ Forgot password? ]
Render time: 0.1247 second(s); 0.0563 of that for queries. DB queries: 159. Memory Usage: 3mb