- Joined
- Apr 18, 2013
- Messages
- 1,768
- Trophies
- 2
- Location
- on the cool side of the pillow
- Website
- follow-the-white-rabbit.wtf
- XP
- 3,017
- Country
Use the Cheat Code Thread for further information. Now as the code handler is working quite well this thread becomes redundant.
Introduction:
To be fixed:
Further information:
Code Type Documentation:
currently supported:
How to use:
Demonstrations:
Introduction:
Allow me to introduce the Cafe Code Types. It's the equivalent of the Wii's Gecko-, or GCN's Action Replay code types, just for the Wii U! As you will see below the scheme is very different. This is because there's no free space next to the initial address of the cheat. So each code type has its own 4Bytes which actually brings a lot of advantages compared to the Gecko- and Action Replay Code Types: No need for an extra code type to include pointers and code types can offer more options now which reduces the total amount of code types to keep a keen view about them. 8bit conditional codes will return!
Besides this there will be totally new code types (and maybe another alternative for pointers).
Besides this there will be totally new code types (and maybe another alternative for pointers).
To be fixed:
The hook is a bit unreliable. Sometimes cheats become disabled (WWHD) or pretty much never work (MK8). Going to try to fix this soon.
Further information:
Well, I have this idea for quite a few months but didn't work on it because I was waiting for Mr. Mysterio's code type design before coding a PPC based code handler. But he has been away for long time now
so I started writing down some code a few days ago.
HOWEVER: It is still in an early state of development. @BullyWiiPlaza has started developing a clone of TCP Gecko dNET, called JGecko U (written in Java) which can install my code handler
He had the idea to save the code handler in .bin files which his program can use. I'm sure that this format could be use in future projects once IOSU exploit is out and we have a sort of cheat code loader like Gecko OS.
If you're interested in how the code type works you can take a look at the PPC code here on my Git (It's PPC only because it's the only language I know).
so I started writing down some code a few days ago.
HOWEVER: It is still in an early state of development. @BullyWiiPlaza has started developing a clone of TCP Gecko dNET, called JGecko U (written in Java) which can install my code handler
He had the idea to save the code handler in .bin files which his program can use. I'm sure that this format could be use in future projects once IOSU exploit is out and we have a sort of cheat code loader like Gecko OS.
If you're interested in how the code type works you can take a look at the PPC code here on my Git (It's PPC only because it's the only language I know).
Code Type Documentation:
currently supported:
- RAM writes (pointer and pointer-in-pointer)
- patch/string writes (also pointered. No pointer-in-pointer)
- Slider/skip writes (also pointered. No pointer-in-pointer)
- If Equal, unequal, greater than, lower than, greater or equal, less than or equal (also pointered. No pointer-in-pointer)
- no operation
- termination
CC: Code Type. 00 = RAM write, 01 - Patch/String Write, 02 = Slide/Skipp Write,
P: Pointer. 0 = No pointer, 1 = Pointer, 2 = Pointer-In-Pointer
LLLLLLLL = Address/Location (If more addresses are involved the next one will be indicated by the next alphabetical letter (MMMMMMMM, ...))
VVVVVVVV = Value. 8bit/1Byte values must be written on the right. The 3 Bytes before must be 00 (000000VV). 16bit/2Byte: 0000VVVV, 32bit/4Bytes: VVVVVVVV.
The other zeros must be kept. They are used to fill unused space to ensure the codehandler works properly and/or will possibly be replaced by future functions.
QQQQQQQQ: Offset between where the pointer points at and the value you want to modify. If the offset is negative you must change it to a signless integer (-0x2130 -> 0xFFFFDED0). You can do this with any hex calculator by substracting 0 by your offset.
Pointered codes will require a defined memory range. This is used to avoid inevitable freezes while loading another level/menu/cutscene.
The beginning of the range will most likely be 10000000 and the end 4C000000. But you can pick one possible value-location of a pointer code and add and substract 0x00100000 to it to reduce the size of the range. This can enhance the avoidation of possible freezes even more.
(example: Possible final location: 3738E0CC. 3738E0CC - 00100000 = 3728E0CC; 3738E0CC + 00100000 = 3748E0CC. Range of 3738E0CC ~ 3748E0CC.
Pointer-In-Pointer are only supported in RAM writes.
RAM writes (00)
General scheme:
00PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
00000000 LLLLLLLL
000000VV 00000000
16bit:
00010000 LLLLLLLL
0000VVVV 00000000
32bit:
00020000 LLLLLLLL
VVVVVVVV 00000000
Example:
infinite health in Wind Waker HD
00000000 15073BC3
00000050 00000000
Pointered RAM Writes:
8bit:
00100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
00110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
00120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
Wind Waker HD - Stretch Link ([1097648C] + 6a30 0x43000000)
00120000 1097648C
48600000 48800000
00006A30 43000000
Pointer-In-Pointer:
8bit:
00200000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 00000000
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
00210000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 00000000
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
00220000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 00000000
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
00210000 20367528
38000000 39000000
00001250 00000000
3E000000 3F000000
0035842C 00001234
Patch/String writes (01)
01P0NNNN LLLLLLLL
VVVVVVVV VVVVVVVV
VVVV0000 000000FF
NNNN = The amount of bytes to write starting at address LLLLLLLL.
Every line must have 2 blocks consisting of 8 hex digits each. If the value (VV) does not fill a line you will have to fill the empty space with zeros and the last two with FF (VVVV0000 000000FF). If only the last byte of a line is unused simply fill it with FF (VVVVVVVV VVVVVVFF). If your value fills all 16 hex digits then but 00000000 000000FF beneath it
(VVVVVVVV VVVVVVVV
00000000 000000FF)
Example:
01000012 40232004
11221122 11221122
11221122 11221122
11220000 000000FF
This writes a hex string of
11221122 11221122 11221122 11221122 1122 starting at 0x40232004 (without spaces, duh).
Pointered:
0110NNNN LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 00000000
VVVVVVVV VVVVVVVV
VVVVVVVV VVVV00FF
Example:
01100014 13501688
20100000 20200000
00232020 00000000
11331133 11331133
11331133 11331133
11331133 000000FF
No pointer-in-pointer support
Slide/Skip (02)
02PSNNNN LLLLLLLL
VVVVVVVV XXXXXXXX
IIIIIIII 00000000
NNNN: Amount of slides/skips (first is assumed)
XXXXXXXX: Offset between each write/offset to skip/slide
IIIIIIII: Value increment for each slide. Leave it as 00000000 if not wanted.
8bit:
0200NNNN LLLLLLLL
000000VV XXXXXXXX
000000II 00000000
16bit:
0201NNNN LLLLLLLL
0000VVVV XXXXXXXX
0000IIII 00000000
32bit:
8bit:
0202NNNN LLLLLLLL
VVVVVVVV XXXXXXXX
IIIIIIII 00000000
Example:
02020064 423E0DC4
00100000 00001000
00000100 00000000
Pointered:
021PNNNN LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
XXXXXXXX IIIIIIII
8bit:
0210NNNN LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
XXXXXXXX 000000II
16bit:
0211NNNN LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
XXXXXXXX 0000IIII
32bit:
0210NNNN LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
XXXXXXXX IIIIIIII
Example:
0210012C 1987EDC8
45200000 45500000
000202EC 00000010
00002000 00000001
Terminator (DE)
This code MUST be placed behind conditional codes. So the code handler
knows which codes NOT to enable when a condition is false.
DE000000 DEADCAFE
Cinditionals
If Equal (03)
03PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
03000000 LLLLLLLL
000000VV 00000000
16bit:
03010000 LLLLLLLL
0000VVVV 00000000
32bit:
03020000 LLLLLLLL
VVVVVVVV 00000000
Example:
03010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
03100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
03110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
03120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
03120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
____________________
If Not Equal (04)
04PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
04000000 LLLLLLLL
000000VV 00000000
16bit:
04010000 LLLLLLLL
0000VVVV 00000000
32bit:
04020000 LLLLLLLL
VVVVVVVV 00000000
Example:
04010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
04100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
04110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
04120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
04120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
_________________
If Greater Than (05)
05PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
05000000 LLLLLLLL
000000VV 00000000
16bit:
05010000 LLLLLLLL
0000VVVV 00000000
32bit:
05020000 LLLLLLLL
VVVVVVVV 00000000
Example:
05010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
05100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
05110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
05120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
05120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
_________________
If Less Than (06)
06PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
06000000 LLLLLLLL
000000VV 00000000
16bit:
06010000 LLLLLLLL
0000VVVV 00000000
32bit:
06020000 LLLLLLLL
VVVVVVVV 00000000
Example:
06010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
06100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
06110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
06120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
06120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
_________________
If Greater Than or Equal (07)
07PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
07000000 LLLLLLLL
000000VV 00000000
16bit:
07010000 LLLLLLLL
0000VVVV 00000000
32bit:
07020000 LLLLLLLL
VVVVVVVV 00000000
Example:
07010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
07100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
07110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
07120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
07120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
_________________
If Greater Than or Equal (08)
08PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
08000000 LLLLLLLL
000000VV 00000000
16bit:
08010000 LLLLLLLL
0000VVVV 00000000
32bit:
08020000 LLLLLLLL
VVVVVVVV 00000000
Example:
08010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
08100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
08110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
08120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
08120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
_________________
No Operation (DF)
DFZZZZZZ DEADC0DE
Simply does nothing. Most likely used by the code handler to overwrite
cheat codes that will only be performed once. You probably won't ever
need it in a cheat code, but you could use it as a visual separator
between a lot of codes. So I decided to document it here, too! You can
write down any hexadecimal number for ZZZZZZ.
This is NOT to be confused with the Terminator
Example:
DF000001 DEADC0DE
00020000 13655ECC
3FC00000 00000000
DF000002 DEADC0DE
00020000 13655ED0
3FC00000 00000000
DF000003 DEADC0DE
00020000 13655ED4
3FC00000 00000000
________________________________
TODO:
Conditionals (&&, ||, value between), Floating point operations, Integer operations, load and store value, insert ASM, Search value and store address somewhere, Corruptor (replace values), Corruptor (add value).
P: Pointer. 0 = No pointer, 1 = Pointer, 2 = Pointer-In-Pointer
LLLLLLLL = Address/Location (If more addresses are involved the next one will be indicated by the next alphabetical letter (MMMMMMMM, ...))
VVVVVVVV = Value. 8bit/1Byte values must be written on the right. The 3 Bytes before must be 00 (000000VV). 16bit/2Byte: 0000VVVV, 32bit/4Bytes: VVVVVVVV.
The other zeros must be kept. They are used to fill unused space to ensure the codehandler works properly and/or will possibly be replaced by future functions.
QQQQQQQQ: Offset between where the pointer points at and the value you want to modify. If the offset is negative you must change it to a signless integer (-0x2130 -> 0xFFFFDED0). You can do this with any hex calculator by substracting 0 by your offset.
Pointered codes will require a defined memory range. This is used to avoid inevitable freezes while loading another level/menu/cutscene.
The beginning of the range will most likely be 10000000 and the end 4C000000. But you can pick one possible value-location of a pointer code and add and substract 0x00100000 to it to reduce the size of the range. This can enhance the avoidation of possible freezes even more.
(example: Possible final location: 3738E0CC. 3738E0CC - 00100000 = 3728E0CC; 3738E0CC + 00100000 = 3748E0CC. Range of 3738E0CC ~ 3748E0CC.
Pointer-In-Pointer are only supported in RAM writes.
RAM writes (00)
General scheme:
00PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
00000000 LLLLLLLL
000000VV 00000000
16bit:
00010000 LLLLLLLL
0000VVVV 00000000
32bit:
00020000 LLLLLLLL
VVVVVVVV 00000000
Example:
infinite health in Wind Waker HD
00000000 15073BC3
00000050 00000000
Pointered RAM Writes:
8bit:
00100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
00110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
00120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
Wind Waker HD - Stretch Link ([1097648C] + 6a30 0x43000000)
00120000 1097648C
48600000 48800000
00006A30 43000000
Pointer-In-Pointer:
8bit:
00200000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 00000000
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
00210000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 00000000
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
00220000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 00000000
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
00210000 20367528
38000000 39000000
00001250 00000000
3E000000 3F000000
0035842C 00001234
Patch/String writes (01)
01P0NNNN LLLLLLLL
VVVVVVVV VVVVVVVV
VVVV0000 000000FF
NNNN = The amount of bytes to write starting at address LLLLLLLL.
Every line must have 2 blocks consisting of 8 hex digits each. If the value (VV) does not fill a line you will have to fill the empty space with zeros and the last two with FF (VVVV0000 000000FF). If only the last byte of a line is unused simply fill it with FF (VVVVVVVV VVVVVVFF). If your value fills all 16 hex digits then but 00000000 000000FF beneath it
(VVVVVVVV VVVVVVVV
00000000 000000FF)
Example:
01000012 40232004
11221122 11221122
11221122 11221122
11220000 000000FF
This writes a hex string of
11221122 11221122 11221122 11221122 1122 starting at 0x40232004 (without spaces, duh).
Pointered:
0110NNNN LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 00000000
VVVVVVVV VVVVVVVV
VVVVVVVV VVVV00FF
Example:
01100014 13501688
20100000 20200000
00232020 00000000
11331133 11331133
11331133 11331133
11331133 000000FF
No pointer-in-pointer support
Slide/Skip (02)
02PSNNNN LLLLLLLL
VVVVVVVV XXXXXXXX
IIIIIIII 00000000
NNNN: Amount of slides/skips (first is assumed)
XXXXXXXX: Offset between each write/offset to skip/slide
IIIIIIII: Value increment for each slide. Leave it as 00000000 if not wanted.
8bit:
0200NNNN LLLLLLLL
000000VV XXXXXXXX
000000II 00000000
16bit:
0201NNNN LLLLLLLL
0000VVVV XXXXXXXX
0000IIII 00000000
32bit:
8bit:
0202NNNN LLLLLLLL
VVVVVVVV XXXXXXXX
IIIIIIII 00000000
Example:
02020064 423E0DC4
00100000 00001000
00000100 00000000
Pointered:
021PNNNN LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
XXXXXXXX IIIIIIII
8bit:
0210NNNN LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
XXXXXXXX 000000II
16bit:
0211NNNN LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
XXXXXXXX 0000IIII
32bit:
0210NNNN LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
XXXXXXXX IIIIIIII
Example:
0210012C 1987EDC8
45200000 45500000
000202EC 00000010
00002000 00000001
Terminator (DE)
This code MUST be placed behind conditional codes. So the code handler
knows which codes NOT to enable when a condition is false.
DE000000 DEADCAFE
Cinditionals
If Equal (03)
03PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
03000000 LLLLLLLL
000000VV 00000000
16bit:
03010000 LLLLLLLL
0000VVVV 00000000
32bit:
03020000 LLLLLLLL
VVVVVVVV 00000000
Example:
03010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
03100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
03110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
03120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
03120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
____________________
If Not Equal (04)
04PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
04000000 LLLLLLLL
000000VV 00000000
16bit:
04010000 LLLLLLLL
0000VVVV 00000000
32bit:
04020000 LLLLLLLL
VVVVVVVV 00000000
Example:
04010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
04100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
04110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
04120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
04120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
_________________
If Greater Than (05)
05PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
05000000 LLLLLLLL
000000VV 00000000
16bit:
05010000 LLLLLLLL
0000VVVV 00000000
32bit:
05020000 LLLLLLLL
VVVVVVVV 00000000
Example:
05010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
05100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
05110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
05120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
05120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
_________________
If Less Than (06)
06PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
06000000 LLLLLLLL
000000VV 00000000
16bit:
06010000 LLLLLLLL
0000VVVV 00000000
32bit:
06020000 LLLLLLLL
VVVVVVVV 00000000
Example:
06010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
06100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
06110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
06120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
06120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
_________________
If Greater Than or Equal (07)
07PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
07000000 LLLLLLLL
000000VV 00000000
16bit:
07010000 LLLLLLLL
0000VVVV 00000000
32bit:
07020000 LLLLLLLL
VVVVVVVV 00000000
Example:
07010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
07100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
07110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
07120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
07120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
_________________
If Greater Than or Equal (08)
08PS0000 LLLLLLLL
VVVVVVVV 00000000
8bit:
08000000 LLLLLLLL
000000VV 00000000
16bit:
08010000 LLLLLLLL
0000VVVV 00000000
32bit:
08020000 LLLLLLLL
VVVVVVVV 00000000
Example:
08010000 12364872
00001200 00000000
.
.
.
DE000000 DEADCAFE
Pointered
8bit:
08100000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 000000VV
16bit:
08110000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ 0000VVVV
32bit:
08120000 LLLLLLLL
RANGE_ST RANGE_EN
QQQQQQQQ VVVVVVVV
Example:
08120000 31549860
RANGE_ST RANGE_EN
00035480 01000000
.
.
.
DE000000 DEADCAFE
_________________
No Operation (DF)
DFZZZZZZ DEADC0DE
Simply does nothing. Most likely used by the code handler to overwrite
cheat codes that will only be performed once. You probably won't ever
need it in a cheat code, but you could use it as a visual separator
between a lot of codes. So I decided to document it here, too! You can
write down any hexadecimal number for ZZZZZZ.
This is NOT to be confused with the Terminator
Example:
DF000001 DEADC0DE
00020000 13655ECC
3FC00000 00000000
DF000002 DEADC0DE
00020000 13655ED0
3FC00000 00000000
DF000003 DEADC0DE
00020000 13655ED4
3FC00000 00000000
________________________________
TODO:
Conditionals (&&, ||, value between), Floating point operations, Integer operations, load and store value, insert ASM, Search value and store address somewhere, Corruptor (replace values), Corruptor (add value).
How to use:
(The following steps will change during development). Doesn't work with Splatoon. It freezes on boot screen.
- Launch the modified version of the kernel exploit that mirrors range 00 to A0: http://cosmocortney.ddns.net/wiiustuff
- Then run the "old_pygecko". (these exploits are not made by me. Credits go to the kexploit devs)
- Open TCP Gecko dNET.
- TCP Gecko dNET has no cheat code manager so you need to poke the cheat codes per hand.
- Change to the Memory viewer and go to address 10015000. Now poke all your cheat codes line by line starting at 10015000. (It is important not to skip 00000000 of a code). The next cheat comes without any space between the previous one. (To help you to orientate; a following cheat code will always start at XXXXXXX0 or XXXXXXX8)
- Once all cheats are stored close TCP Gecko dNET.
- Download the code handler here
- Now you will need Bully's JGecko U to install the code handler.
- Open it with Winrar and go into the folder called "codehandler"
- Delete the content and drag and drop the latest code handler into there.
- Run JGecko U and hit "connect"
Once it tells you the code handler has been installed, the cheats should be active.
- Launch the modified version of the kernel exploit that mirrors range 00 to A0: http://cosmocortney.ddns.net/wiiustuff
- Then run the "old_pygecko". (these exploits are not made by me. Credits go to the kexploit devs)
- Open TCP Gecko dNET.
- TCP Gecko dNET has no cheat code manager so you need to poke the cheat codes per hand.
- Change to the Memory viewer and go to address 10015000. Now poke all your cheat codes line by line starting at 10015000. (It is important not to skip 00000000 of a code). The next cheat comes without any space between the previous one. (To help you to orientate; a following cheat code will always start at XXXXXXX0 or XXXXXXX8)
- Once all cheats are stored close TCP Gecko dNET.
- Download the code handler here
- Now you will need Bully's JGecko U to install the code handler.
- Open it with Winrar and go into the folder called "codehandler"
- Delete the content and drag and drop the latest code handler into there.
- Run JGecko U and hit "connect"
Once it tells you the code handler has been installed, the cheats should be active.
Demonstrations:
A demo video of a jokered Moon Jump code:
https://twitter.com/CosmoCortney/status/699987611872530432
and here you can see an 8bit, a 16bit and a 32bit code being managed:
https://twitter.com/CosmoCortney/status/699987611872530432
and here you can see an 8bit, a 16bit and a 32bit code being managed:
Last edited by CosmoCortney,