Test this one, usercheat from "DeadSkullzJr.s.Cheat.Databases.v2.2.0"
Yes but I mean using Action replay codes written by someone or yourself that arent in the code base:
Most of these types are not supported:
Description
The first commercial DS cheat code solution, this device was developed by Datel. It supports swapping out cartridges after loading the AR software. For updating, the user may either manually enter codes or use the included proprietary USB cable that comes with the device. The user has been able to manually update codes since firmware version 1.52.
Code Types
Type Description
Constant RAM Writes
Type 0x00
32-bit
0XXXXXXX YYYYYYYY Writes word YYYYYYYY to [XXXXXXX+offset].
Type 0x01
16-bit
1XXXXXXX 0000YYYY Writes halfword YYYY to [XXXXXXX+offset].
Type 0x02
8-bit
2XXXXXXX 000000YY Writes byte YY to [XXXXXXX+offset].
Conditional 32-Bit Code Types
Type 0x03
Greater Than
3XXXXXXX YYYYYYYY Checks if YYYYYYYY> (word at [XXXXXXX])
If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of thecode list is reached.
Type 0x04
Less Than
4XXXXXXX YYYYYYYY Checks if YYYYYYYY < (word at [XXXXXXX]).
If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached.
Type 0x05
Equal To
5XXXXXXX YYYYYYYY Checks if YYYYYYYY == (word at [XXXXXXX]).
If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached.
Type 0x06
Not Equal To
6XXXXXXX YYYYYYYY Checks if YYYYYYYY != (word at [XXXXXXX]).
If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached.
Conditional 16-Bit + Masking RAM Writes
Type 0x07
Greater Than
7XXXXXXX ZZZZYYYY Checks if (YYYY)> (not (ZZZZ) < halfword at [XXXX]).
If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached.
Type 0x08
Less Than
8XXXXXXX ZZZZYYYY Checks if (YYYY) < (not (ZZZZ) & halfword at [XXXXXXX]).
If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached.
Type 0x09
Equal To
9XXXXXXX ZZZZYYYY Checks if (YYYY) == (not (ZZZZ) & halfword at [XXXXXXX]).
If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached.
Type 0x0A
Not Equal To
AXXXXXXX ZZZZYYYY Checks if (YYYY) != (not (ZZZZ) & halfword at [XXXXXXX]).
If not, the code(s) following this one are not executed (ie. execution status is set to false) until a code type D0 or D2 is encountered, or until the end of the code list is reached.
Offset Codes
Type 0x0B
Load offset
BXXXXXXX 00000000 Loads the 32-bit value into the 'offset'.
Offset = word at [0XXXXXXX + offset].
Type 0xD3
Set offset
D3000000 XXXXXXXX Sets the offset value to XXXXXXXX.
Type 0xDC
Set offset
DC000000 XXXXXXXX Adds an offset to the current offset. (Dual Offset)
Loop Code
Type 0x0C
C0000000 YYYYYYYY This sets the 'Dx repeat value' to YYYYYYYY and saves the 'Dx nextcode to be executed' and the 'Dx execution status'. Repeat will be executed when a D1/D2 code is encountered.
When repeat is executed, the AR reloads the 'next code to be executed' and the 'execution status' from the Dx registers.
Special Codes
Type 0xD0
Terminator
D0000000 00000000 Loads the previous execution status. If none exists, the execution status stays at 'execute codes'.
Type 0xD1
Loop execute variant
D1000000 00000000 Executes the next block of codes 'n' times (specified by the 0x0C codetype), but doesn't clear the Dx register upon completion.
Type 0xD2
Loop Execute Variant/ Full Terminator
D2000000 00000000 Executes the next block of codes 'n' times (specified by the 0x0C codetype), and clears all temporary data. (i.e. execution status, offsets, code C settings, etc.)
This code can also be used as a full terminator, giving the same effects to any block of code.
Data Register Codes
Type 0xD4
Add Value
D4000000 XXXXXXXX Adds 'XXXXXXXX' to the data register used by codetypes 0xD6 - 0xDB.
More arithmetical/logical operations can be set using the 'NDS AR HACK #2'.
Type 0xD5
Set Value
D5000000 XXXXXXXX Set 'XXXXXXXX' to the data register used by code types 0xD6 - 0xD8.
Type 0xD6
32-Bit Incrementive Write
D6000000 XXXXXXXX Writes the 'Dx data' word to [XXXXXXXX+offset], and increments the offset by 4.
Type 0xD7
16-Bit Incrementive Write
D7000000 XXXXXXXX Writes the 'Dx data' halfword to [XXXXXXXX+offset], and increments the offset by 2.
Type 0xD8
8-Bit Incrementive Write
D8000000 XXXXXXXX Writes the 'Dx data' byte to [XXXXXXXX+offset], and increments the offset by 1.
Type 0xD9
32-Bit Load
D9000000 XXXXXXXX Loads the word at [XXXXXXXX+offset] and stores it in the'Dx data register'.
Type 0xDA
16-Bit Load
DA000000 XXXXXXXX Loads the halfword at [XXXXXXXX+offset] and stores it in the'Dx data register'.
Type 0xDB
8-Bit Load
DB000000 XXXXXXXX Loads the byte at [XXXXXXXX+offset] and stores it in the'Dx data register'.
This is a bugged code type. Check 'AR Hack #0' for the fix.
Miscellaneous Memory Manipulation Codes
Type 0x0E
Patch Code
EXXXXXXX YYYYYYYY Copies YYYYYYYY bytes from (current code location + 8) to [XXXXXXXX + offset].
Type 0x0F
Memory Copy Code
FXXXXXXX YYYYYYYY Use the code type D3, DC or B before to set the offset. D2 should be needed to clear the offset after the code.
D3000000 XXXXXXXX
FYYYYYYY ZZZZZZZZ
This should copy ZZZZZZZZ bytes from offset (=XXXXXXXX in this case) to YYYYYYYY. (YYYYYYYY if fixed, no offsets are added to it).
Code Hacks
The following codes modify the AR code handler.
As they write to a fixed address, they are not compatible with any game that uses an 'M' code (since the 'M' code changes the location of the code handler in memory).
Type Description
Hack #0
0xDB Code Type Fix
023FE4D8 0A000003 Fixes a bug in the Action Replay Code Handler.
Hack #1 - Offset Support for Conditionals
Offset support:
023FE20C E5933000
No offset support
023FE20C E5903000
For code type 0x03
Offset support:
023FE224 E5933000
No offset support:
023FE224 E5903000
For code type 0x04
Offset support:
023FE23C E5933000
No offset support:
023FE23C E5903000
For code type 0x05
Offset support:
023FE254 E5933000
No offset support:
023FE254 E5903000
For code type 0x06
Offset Support:
023FE26C E1D320B0
023FE270 E1E03004
No offset support:
023FE26C E1E03004
023FE270 E1D020B0
For code type 0x07
Offset Support:
023FE290 E1D320B0
023FE294 E1E03004
No offset support:
023FE290 E1E03004
023FE294 E1D020B0
For code type 0x08
Offset Support:
023FE2B4 E1D320B0
023FE2B8 E1E03004
No offset support:
023FE2B4 E1E03004
023FE2B8 E1D020B0
For code type 0x09
Offset Support:
023FE2D8 E1D320B0
023FE2DC E1E03004
No offset support:
023FE2D8 E1E03004
023FE2DC E1D020B0
For code type 0x0A
Offset Support:
C0000000 00000003
023FE20C E5933000
DC000000 00000018
D2000000 00000000
No offset support:
C0000000 00000003
023FE20C E5903000
DC000000 00000018
D2000000 00000000
For code types 0x03 - 0x06 all at once.
Offset Support:
C0000000 00000003
023FE26C E1D320B0
023FE270 E1E03004
DC000000 00000024
D2000000 00000000
No offset Support:
C0000000 00000003
023FE26C E1E03004
023FE270 E1D020B0
DC000000 00000024
D2000000 00000000
For code types 0x07 - 0x0A all at once.
Hack #2 - ORR/AND/ADD Codes
023FE424 E1833004 Makes the D4 code type execute a 'ORR' instruction.
023FE424 E0033004 Makes the D4 code type execute a 'AND' instruction.
023FE424 E0833004 Makes the D4 code type execute an 'ADD' instruction.
Hack #3 - Add Dx Data to Offset Codes
023FE424 E08AA003 This code changes the D4 code type to make it add the Dx Data to the offset.
It could be useful if the game's pointer's offset changes.
Hack #4 - Execute Custom ASM Routines
023FE074 012FFF11 This code changes the 0x0E code type to make it execute the data entered by the hacker.
023FE074 E3520003 Reverts code type 0x0E to normal
023FE074 012FFF11
EXXXXXXX 00000010
AAAAAAAA BBBBBBBB
CCCCCCCC E12FFF1E
When the E code type will be encountered, the code handler will jump to and execute (ie. bx to) the AAAAAAAA, BBBBBBBB, CCCCCCCC and E12FFF1E instructions (means the instructions must be in ARM, and not THUMB).