forked from JourneyOver/CTRPF-AR-CHEAT-CODES
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ActionReplayCodeTypes.txt
149 lines (129 loc) · 5.25 KB
/
ActionReplayCodeTypes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
###############################
# Action Replay #
# Code Types supported by #
# CTRPluginFramework #
###############################
==============
INFO
==============
You have access to:
- 2 offset registers (not persistent)
- 2 data registers (not persistent)
- 2 storage registers (persistent)
persistent = register's value is kept between code execution
not persistent = register's value is set to default value when the code starts
Default value of offset (#1 and #2), data (#1 and #2) and storage (#1 and #2) registers is zero.
The active offset and data register is set to #1 when the code starts.
When a register index (#1 or #2) is not precised in the description, the active register is used.
==============
CODE TYPES
==============
Memory Writes:
---------------
0XXXXXXX YYYYYYYY – 32bit write to [XXXXXXX + offset]
1XXXXXXX 0000YYYY – 16bit write to [XXXXXXX + offset]
2XXXXXXX 000000YY – 8bit write to [XXXXXXX + offset]
Conditional 32bit codes:
-------------------------
3XXXXXXX YYYYYYYY – Greater Than (YYYYYYYY > [XXXXXXX + offset])
4XXXXXXX YYYYYYYY – Less Than (YYYYYYYY < [XXXXXXX + offset])
5XXXXXXX YYYYYYYY – Equal To (YYYYYYYY == [XXXXXXX + offset])
6XXXXXXX YYYYYYYY – Not Equal To (YYYYYYYY != [XXXXXXX + offset])
Conditional 16bit codes:
-------------------------
7XXXXXXX ZZZZYYYY – Greater Than (YYYY > [XXXXXXX + offset] & ~ZZZZ)
8XXXXXXX ZZZZYYYY – Less Than (YYYY < [XXXXXXX + offset] & ~ZZZZ)
9XXXXXXX ZZZZYYYY – Equal To (YYYY == [XXXXXXX + offset] & ~ZZZZ)
AXXXXXXX ZZZZYYYY – Not Equal To (YYYY != [XXXXXXX + offset] & ~ZZZZ)
Offset Codes:
--------------
BXXXXXXX 00000000 – offset = *(XXXXXXX + offset)
D3000000 XXXXXXXX – set offset to immediate value
DC000000 XXXXXXXX – Adds an value to the current offset
Loop Codes:
------------
CX000000 YYYYYYYY – Sets the repeat value to: YYYYYYYY (immediate value) if X == 0, data #1 if X == 1 or data #2 if X == 2
D2000000 0000000X - Full terminator (0: legacy one, 1: exit code directly)
D1000000 00000000 – Loop execute
D0000000 00000000 – Terminator code
Data Register Codes:
---------------------
D4000000 XXXXXXXX – Adds XXXXXXXX to the data register
D500000Z XXXXXXXX – Sets the data register #Z (0: data#1, 1: data#2) to XXXXXXXX
D6000000 XXXXXXXX – (32bit) [XXXXXXXX+offset] = data ; offset += 4
D7000000 XXXXXXXX – (16bit) [XXXXXXXX+offset] = data & 0xffff ; offset += 2
D8000000 XXXXXXXX – (8bit) [XXXXXXXX+offset] = data & 0xff ; offset++
D9000000 XXXXXXXX – (32bit) sets data to [XXXXXXXX+offset]
DA000000 XXXXXXXX – (16bit) sets data to [XXXXXXXX+offset] & 0xFFFF
DB000000 XXXXXXXX – (8bit) sets data to [XXXXXXXX+offset] & 0xFF
Patch Code:
--------------
EXXXXXXX YYYYYYYY - Copy Y bytes (Z) to [XXXXXXX + offset]
ZZZZZZZZ ZZZZZZZZ
Input Codes:
----------------
DD000000 XXXXXXXX – if KEYPAD has value XXXXXXXX execute next block (see SPECIAL KEY CODE for values)
DE000000 WWXXYYZZ - if touchpos is between WW <= posX <= XX and YY <= posY <= ZZ execute next block
Registers operations:
-----------------------
DFFFFFFF 00000000 - Conditional codes are compared to YYYY (immediate value)
DFFFFFFF 00000001 - Conditional codes are compared to active data register
DF00XXXX YYYYZZZZ - Operations:
-------------------------------
DF000000 00000000 - Set offset register #1 as active (default)
DF000000 00000001 - Set offset register #2 as active
DF000001 00000000 - Set data register #1 as active (default)
DF000001 00000001 - Set data register #2 as active
DF000000 00010000 - Copy offset #1 to offset #2
DF000000 00010001 - Copy offset #2 to offset #1
DF000001 00010000 - Copy data #1 to data #2
DF000001 00010001 - Copy data #2 to data #1
DF000002 00010000 - Copy storage #1 to data #1
DF000002 00010001 - Copy storage #2 to data #2
DF000000 00020000 - Copy offset #1 to data #1
DF000000 00020001 - Copy offset #2 to data #2
DF000001 00020000 - Copy data #1 to offset #1
DF000001 00020001 - Copy data #2 to offset #2
DF000002 00020000 - Copy data #1 to storage #1
DF000002 00020001 - Copy data #2 to storage #2
Custom Codes:
---------------
F1XXXXXX YYYYYYYY - *(XXXXXX + offset) += YYYYYYYY
F2XXXXXX YYYYYYYY - *(XXXXXX + offset) *= YYYYYYYY
F3XXXXXX YYYYYYYY - *(XXXXXX + offset) /= YYYYYYYY
F4000000 YYYYYYYY - MUL - data *= YYYYYYYY
F5000000 YYYYYYYY - DIV - data /= YYYYYYYY
F6000000 YYYYYYYY - AND - data &= YYYYYYYY
F7000000 YYYYYYYY - OR - data |= YYYYYYYY
F8000000 YYYYYYYY - XOR - data ^= YYYYYYYY
F9000000 00000000 - NOT - data = ~data
FA000000 YYYYYYYY - Left shift - data <<= YYYYYYYY
FB000000 YYYYYYYY - Right shift - data >>= YYYYYYYY
FC000000 YYYYYYYY - Copy YYYYYYYY bytes from [offset#2] to [offset#1]
FF000000 00000000 - Generate a random number, min/max can be respectively set in data#1, data#2
===================
SPECIAL KEYPAD CODE
===================
0x1 A
0x2 B
0x4 Select
0x8 Start
0x10 Right
0x20 Left
0x40 Up
0x80 Down
0x100 R
0x200 L
0x400 X
0x800 Y
0x4000 ZL (N3DS Only)
0x8000 ZR (N3DS Only)
0x100000 Touchpad (any position)
0x1000000 CStick-Right (N3DS Only)
0x2000000 CStick-Left (N3DS Only)
0x4000000 CStick-Up (N3DS Only)
0x8000000 CStick-Down (N3DS Only)
0x10000000 CPad-Right
0x20000000 CPad-Left
0x40000000 CPad-Up
0x80000000 CPad-Down