The reason for this mod is because I wanted a way to test PSPAR codes on CFW, for me it was easier just to implement the PSPAR code types into an existing cheat device rather then try and patch the PSPAR EBOOT to run on CFW so that is exactly what I have done.
Unlike the official PSPAR cheat device a more simple code file format is utilized for loading codes, the format is much like the CWCheat cheat database format but instead of code lines being preceeded with "_L " they are preceeded with "_M ".
I also got bored and decided to implement the CWCheat code types so hopefully most CWCheat codes should work with this cheat device.
General Differences
- This cheat device does not work on OFW! (durr). However it does work on CFW which the official PSPAR does not.
- Instead of using a complex binary file for the codes a CWCheat-style file is used for simple code entry.
Code Engine Differences
- Some button press codes from the official PSPAR database may not work because the code engine seems to write the button press value to a difference address for each game.
- Fake addresses were added to allow button press codes to easily be ported over to this cheat device.
General Differences
- Codes are loaded from a single CWCheat-style file instead of using a single text file for each game. This reduces the time taken to update the cheats and save a lot of MS space. Depending on how the MS is formatted and the amount of code files on the MS it can save over 20MB!
- Real addresses are used by default for the decoder and browser as PSPAR uses real values for the address.
Code Engine Differences
- NitePR code type support was removed, lol a NitePR mod which doesn't support NitePR codes!
- SOCOM related stuff was removed.
General Differences
- A new line type _C2 has been added. Code names with this line prefix will be enabled regardless of the if the cheat engine is enabled or not.
PSPAR 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] or [offset] if [XXXXXXX] is 0) 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] or [offset] if [XXXXXXX] is 0) 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 0x05 Equal To 5XXXXXXX YYYYYYYY |
Checks if YYYYYYYY == (word at [XXXXXXX] or [offset] if [XXXXXXX] is 0) 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 0x06 Not Equal To 6XXXXXXX YYYYYYYY |
Checks if YYYYYYYY != (word at [XXXXXXX] or [offset] if [XXXXXXX] is 0) 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. |
Conditional 16-bit + Masking Code Types | |
Type 0x07 Greater Than 7XXXXXXX ZZZZYYYY |
Checks if (YYYY) > (not (ZZZZ) < halfword at [XXXXXXX] or [offset] if [XXXXXXX] is 0). 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] or [offset] if [XXXXXXX] is 0). 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] or [offset] if [XXXXXXX] is 0). 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] or [offset] if [XXXXXXX] is 0). 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 [XXXXXXX+offset]. |
Type 0xD3 Set Offset D3000000 XXXXXXXX |
Sets the offset value to XXXXXXXX. |
Type 0xDC Add Offset DC000000 XXXXXXXX |
Adds XXXXXXXX to the current offset (Dual Offset). |
Type 0xC6 Write Offset C6000000 XXXXXXXX |
Writes the offset value to [XXXXXXXX]. |
Loop Codes | |
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 'Dx data register'. |
Type 0xD5 Set Value D5000000 XXXXXXXX |
Set XXXXXXXX to the 'Dx data register'. |
Type 0xD6 32-bit Incrementive Write D6000000 XXXXXXXX |
Writes the 'Dx data register' word to [XXXXXXXX+offset], and increments the offset by 4. |
Type 0xD7 16-bit Incrementive Write D7000000 XXXXXXXX |
Writes the 'Dx data register' halfword to [XXXXXXXX+offset], and increments the offset by 2. |
Type 0xD8 8-bit Incrementive Write D8000000 XXXXXXXX |
Writes the 'Dx data register' 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'. |
Miscellaneous Codes | |
Type 0x0E Patch Code EXXXXXXX YYYYYYYY |
Copies YYYYYYYY bytes from (offset+8) to [XXXXXXXX+offset]. |
Type 0x0F Memory Copy Code FXXXXXXX YYYYYYYY |
Copy YYYYYYYY bytes from offset to XXXXXXXX (XXXXXXX is fixed, no offsets are added to it). |
Folder/Comment Codes | |
Type 0xCF Single Select Folder CF000000 XXXXXXXX |
Sets the cheat as a single select folder and the next XXXXXXXX items (codes, folders and comments) will be subitems of the current item. On TempAR all folders are treated as multi-select folders. |
Type 0xCF Comment CF000001 XXXXXXXX |
Sets the cheat as a comment and the next XXXXXXXX items will also be treated as comments. |
Type 0xCF Multi Select Folder CF000002 XXXXXXXX |
Sets the cheat as a folder and the next XXXXXXXX items (codes, folders and comments) will be subitems of the current item. |
PSPAR Enhanced Code Types | |
---|---|
Type | Description |
Conditional 32-bit Code Types | |
Type 0x03 Greater Than 3XXXXXXX YYYYYYYY |
Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. |
Type 0x04 Less Than 4XXXXXXX YYYYYYYY |
Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. |
Type 0x05 Equal To 5XXXXXXX YYYYYYYY |
Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. |
Type 0x06 Not Equal To 6XXXXXXX YYYYYYYY |
Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. |
Conditional 16-bit + Masking Code Types | |
Type 0x07 Greater Than 7XXXXXXX ZZZZYYYY |
Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. |
Type 0x08 Less Than 8XXXXXXX ZZZZYYYY |
Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. |
Type 0x09 Equal To 9XXXXXXX ZZZZYYYY |
Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. |
Type 0x0A Not Equal To AXXXXXXX ZZZZYYYY |
Same as PSPAR engine except if lowest bit of address is set the offset is added to the address. |
Data Register Codes | |
Type 0xD4 Dx Data Operation D400000Y XXXXXXXX |
Sets the 'Dx data register' to Data = ? XXXXXXXX where ? is determined by Y as follows: 0 - add 1 - or 2 - and 3 - xor 4 - logical shift left 5 - logical shift right 6 - rotate right 7 - arithmetic shift right 8 - multiply |
CWCheat Code Types | |
---|---|
Type | Description |
Constant RAM Writes | |
Type 0x00 8-bit 0XXXXXXX YYYYYYYY |
Writes byte YY to [XXXXXXX]. |
Type 0x01 16-bit 1XXXXXXX 0000YYYY |
Writes halfword YYYY to [XXXXXXX]. |
Type 0x02 32-bit 2XXXXXXX 000000YY |
Writes word YYYYYYYY to [XXXXXXX]. |
Increment and Decrement Code Types | |
Type 0x03 8-bit Increment 301000YY XXXXXXXX |
Adds YY to the byte stored at [XXXXXXXX]. |
Type 0x03 16-bit Increment 3030YYYY XXXXXXXX |
Adds YYYY to the halfword stored at [XXXXXXXX]. |
Type 0x03 32-bit Increment 30500000 XXXXXXXX YYYYYYYY 000000000 |
Adds YYYYYYYY to the word stored at [XXXXXXXX]. |
Type 0x03 8-bit Decrement 302000YY XXXXXXXX |
Subtracts YY from the byte stored at [XXXXXXXX]. |
Type 0x03 16-bit Decrement 3040YYYY XXXXXXXX |
Subtracts YYYY from the halfword stored at [XXXXXXXX]. |
Type 0x03 32-bit Decrement 30600000 XXXXXXXX YYYYYYYY 000000000 |
Subtracts YYYYYYYY from the word stored at [XXXXXXXX]. |
Conditional Code Types | |
Type 0x0D 8-bit Equal To DXXXXXXX 200000YY |
Checks if YY == (byte at [XXXXXXX]). If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 8-bit Not Equal To DXXXXXXX 201000YY |
Checks if YY != (byte at [XXXXXXX]). If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 8-bit Less Than DXXXXXXX 202000YY |
Checks if YY < (byte at [XXXXXXX]). If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 8-bit Greater Than DXXXXXXX 203000YY |
Checks if YY > (byte at [XXXXXXX]). If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 16-bit Equal To DXXXXXXX 0000YYYY |
Checks if YYYY == (halfword at [XXXXXXX]). If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 16-bit Not Equal To DXXXXXXX 0010YYYY |
Checks if YYYY != (halfword at [XXXXXXX]). If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 16-bit Less Than DXXXXXXX 0020YYYY |
Checks if YYYY < (halfword at [XXXXXXX]). If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Type 0x0D 16-bit Greater Than DXXXXXXX 0030YYYY |
Checks if YYYY > (halfword at [XXXXXXX]). If not, the following line is not executed (ie. execution status is set to false for 1 line). |
Multiple Skip Conditional Code Types | |
Type 0x0E 8-bit Equal To E1ZZYYYY 0XXXXXXX |
Checks if YY == (byte at [XXXXXXX]). If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
Type 0x0E 8-bit Not Equal To E1ZZYYYY 1XXXXXXX |
Checks if YY != (byte at [XXXXXXX]). If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
Type 0x0E 8-bit Less Than E1ZZYYYY 2XXXXXXX |
Checks if YY < (byte at [XXXXXXX]). If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
Type 0x0E 8-bit Greater Than E1ZZYYYY 3XXXXXXX |
Checks if YY > (byte at [XXXXXXX]). If not, the next ZZ are not executed (ie. execution status is set to false for ZZ lines). |
Type 0x0E 16-bit Equal To EZZZYYYY 0XXXXXXX |
Checks if YYYY == (halfword at [XXXXXXX]). If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
Type 0x0E 16-bit Not Equal To EZZZYYYY 1XXXXXXX |
Checks if YYYY != (halfword at [XXXXXXX]). If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
Type 0x0E 16-bit Less Than EZZZYYYY 2XXXXXXX |
Checks if YYYY < (halfword at [XXXXXXX]). If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
Type 0x0E 16-bit Greater Than EZZZYYYY 3XXXXXXX |
Checks if YYYY > (halfword at [XXXXXXX]). If not, the next ZZZ are not executed (ie. execution status is set to false for ZZZ lines). |
Address Conditional Code Types | |
Type 0x0D Address Equal To DXXXXXXX 4YYYYYYY ZZZZZZZZ 0000000W |
Checks if value at [XXXXXXX] == value at [YYYYYYY]. If not, the next ZZZZZZZZ lines are not executed (ie. execution status is set to false for ZZZ lines). W = Address type; 0 - 8-bit, 1 - 16-bit, 2 - 32-bit |
Type 0x0D Address Not Equal To DXXXXXXX 5YYYYYYY ZZZZZZZZ 0000000W |
Checks if value at [XXXXXXX] != value at [YYYYYYY]. If not, the next ZZZZZZZZ lines are not executed (ie. execution status is set to false for ZZZ lines). W = Address type; 0 - 8-bit, 1 - 16-bit, 2 - 32-bit |
Type 0x0D Address Less Than DXXXXXXX 6YYYYYYY ZZZZZZZZ 0000000W |
Checks if value at [XXXXXXX] < value at [YYYYYYY]. If not, the next ZZZZZZZZ lines are not executed (ie. execution status is set to false for ZZZ lines). W = Address type; 0 - 8-bit, 1 - 16-bit, 2 - 32-bit |
Type 0x0D Address Greater Than DXXXXXXX 7YYYYYYY ZZZZZZZZ 0000000W |
Checks if value at [XXXXXXX] > value at [YYYYYYY]. If not, the next ZZZZZZZZ lines are not executed (ie. execution status is set to false for ZZZ lines). W = Address type; 0 - 8-bit, 1 - 16-bit, 2 - 32-bit |
Boolean Code Types | |
Type 0x07 8-bit OR 7XXXXXXX 000000YY |
Writes byte (byte at [XXXXXXX] OR YY) to [XXXXXXX]. |
Type 0x07 8-bit AND 7XXXXXXX 000200YY |
Writes byte (byte at [XXXXXXX] AND YY) to [XXXXXXX]. |
Type 0x07 8-bit XOR 7XXXXXXX 000400YY |
Writes byte (byte at [XXXXXXX] XOR YY) to [XXXXXXX]. |
Type 0x07 16-bit OR 7XXXXXXX 000100YY |
Writes halfword (halfword at [XXXXXXX] OR YYYY) to [XXXXXXX]. |
Type 0x07 16-bit AND 7XXXXXXX 000300YY |
Writes halfword (halfword at [XXXXXXX] AND YYYY) to [XXXXXXX]. |
Type 0x07 16-bit XOR 7XXXXXXX 000500YY |
Writes halfword (halfword at [XXXXXXX] XOR YYYY) to [XXXXXXX]. |
Pointer Code Types | |
Type 0x06 8-bit ... |
TODO... |
Miscellaneous Code Types | |
Type 0x0D Joker Code D00000YY 1XXXXXXX |
Checks if (ctrl & XXXXXXX) == XXXXXXX. If not, the next YY+1 lines are not executed (ie. execution status is set to false for YY+1 lines). |
Type 0x0D Inverse Joker Code D00000YY 3XXXXXXX |
Checks if (ctrl & XXXXXXX) != XXXXXXX. If not, the next YY+1 lines are not executed (ie. execution status is set to false for YY+1 lines). |
Type 0x05 Copy Bytes 5XXXXXXX ZZZZZZZZ 0YYYYYYY 0000000 |
Copies ZZZZZZZZ bytes from [XXXXXXX] to [YYYYYYY]. |
Type 0x04 32-bit Multi Write 4XXXXXXX YYYYZZZZ VVVVVVVV WWWWWWWW |
Starting at address [XXXXXXX], this code will loop YYYY times. The next address is determined by the incrementing the current address by (ZZZZ * 4). The value written to the address is specified by VVVVVVVV+(WWWWWWWW * loop count). |
Type 0x0B Pause B0000000 XXXXXXXX |
Delays the code engine for XXXXXXXX cycles. Will delay the application of all following code lines. Simply performs sceKernelDelayThread(XXXXXXXX), hopefully this is what CWCheat does when this code type is encountered. |
Type 0x0C 32-bit Equal To CXXXXXXX YYYYYYYY |
Checks if YYYYYYYY == (word at [XXXXXXX]). If not, the remainder of the code is not executed (ie. execution status is set to false until the next cheat is reached). |
User Mode Buttons | |
---|---|
Button | Code |
PSP_CTRL_SELECT | 0x00000001 |
PSP_CTRL_START | 0x00000008 |
PSP_CTRL_UP | 0x00000010 |
PSP_CTRL_RIGHT | 0x00000020 |
PSP_CTRL_DOWN | 0x00000040 |
PSP_CTRL_LEFT | 0x00000080 |
PSP_CTRL_LTRIGGER | 0x00000100 |
PSP_CTRL_RTRIGGER | 0x00000200 |
PSP_CTRL_TRIANGLE | 0x00001000 |
PSP_CTRL_CIRCLE | 0x00002000 |
PSP_CTRL_CROSS | 0x00004000 |
PSP_CTRL_SQUARE | 0x00008000 |
Kernel Mode Buttons | |
Button | Code |
PSP_CTRL_HOME | 0x00010000 |
PSP_CTRL_HOLD | 0x00020000 |
PSP_CTRL_NOTE | 0x00800000 |
PSP_CTRL_SCREEN | 0x00400000 |
PSP_CTRL_VOLUP | 0x00100000 |
PSP_CTRL_VOLDOWN | 0x00200000 |
PSP_CTRL_WLAN_UP | 0x00040000 |
PSP_CTRL_REMOTE | 0x00080000 |
PSP_CTRL_DISC | 0x01000000 |
PSP_CTRL_MS | 0x02000000 |
Fake address are used to return system information which either can't be accessed from memory or does not have a static address. Presently these addresses can only be accessed using the exact address listed (ie. no 8/16-bit retrieval of the upper return bits).
Fake Addresses | |
---|---|
Address | Return Value |
0x0A000000 | Pressed buttons. |
0x0A000004 | X-axis of analog nub. |
0x0A000008 | Y-axis of analog nub. |
Global Hotkeys | |
---|---|
Button | Effect |
VOLUP+VOLDOWN | Show cheat engine menu. |
NOTE | Toggle cheat engine between enabled and disabled. |
SELECT+VOLDOWN | Take a screenshot. |
General Hotkeys | |
Button | Effect |
CROSS | Execute selected function. |
CIRCLE | Back/Exit cheat engine menu. |
LTRIGGER | Switch to previous tab. |
RTRIGGER | Switch to next tab. |
Cheater Hotkeys | |
Button | Effect |
DPAD | Scroll through cheat list. |
ANALOG | Scroll through cheat list. |
START | Rename selected cheat. |
SELECT | Copy selected cheat. |
CROSS | Enable selected cheat. |
SQUARE | Enable selected cheat even if cheat engine is disabled. |
TRIANGLE | Edit selected cheat. |
Browser Hotkeys | |
Button | Effect |
DPAD | Move cursor and edit value of selected address (in edit mode). |
START | Toggle between decoder and browser. |
SELECT | Toggle browser between 8 and 16 bytes per line. |
CROSS | Toggle edit mode. |
TRIANGLE | Show copier menu. |
VOLUP | Change to next browser. |
VOLDOWN | Change to previous browser. |
SQAURE+UP/DOWN | Scroll through memory without moving cursor position. |
SQAURE+ANALOG | Scroll through memory quickly without moving cursor position. |
Decoder Hotkeys | |
Button | Effect |
DPAD | Move cursor and edit value of selected address (in edit mode). |
START | Toggle between decoder and browser. |
SELECT | Toggle decoder between value and opcode view. |
CROSS | Toggle edit mode. |
TRIANGLE | Show copier menu. |
NOTE | Toggle starting and ending addresses to use by the copier when copying to new cheat/text file. |
VOLUP | Change to next decoder. |
VOLDOWN | Change to previous decoder. |
SQAURE+UP/DOWN | Scroll through memory without moving cursor position. |
SQAURE+ANALOG | Scroll through memory quickly without moving cursor position. |
SQAURE+RIGHT | Jump to address of the selected pointer. |
SQAURE+LEFT | Return to pointer. |
0xFF000000 ; Background color of the cheat engine menu.
0xFFCCCCCC ; Color of seperator lines.
0xFF0000FF ; Color of the selected menu item.
0x00000006 ; Value to be subtracted from the above line when fading selected menu items.
0xFFCCCCCC ; Color of the non-selected menu items.
0x00060606 ; Value to subtracted from the above line when fading non-selected menu items.
0xFF0000FF ; Color of the selected menu tab.
0xFFCCCCCC ; Color of the non-selected menu tab.
0xFFFF0000 ; Color of always on cheat codes.
0xFF00FF00 ; Color of normal on cheat codes.
0xFF21FF00 ; Color of multi-select code folders
0xFF21FF00 ; Color of single-select code folders
0xFFFF0000 ; Color of comments.
The searcher of TempAR is improved from the MKULTRA searcher and features a speed improvement making it more than 100 times faster.
The searcher supports 8-bit, 16-bit and 32-bit exact and unknown searches as well as text searches and user-defined search ranges.
Searcher Speed Comparison (GOW: GOS main menu, 5.50 GEN-D3) | |||
---|---|---|---|
Search Type | Old Searcher | New Searcher | Difference |
32-bit exact (0x00000000) | 1:10 for 5%, ~23:20 for 100% | 0:54 for 100% | 25x faster |
Continue 32-bit exact (0x00000001) | Skipped | 0:17 for 100% | Skipped |
8-bit exact (0x01) | 2:20 for 5%, ~46:30 for 100% | 0:11 for 100% | 253x faster |
Continue 8-bit exact (0x01) | Skipped | 0:08 for 100% | Skipped |
32-bit unknown | 0:06 for 100% | 0:06 for 100% | Same |
Continue 32-bit unknown (different) | 5:00 for 20%, 20:00+ for 100% | 0:13 for 100% | 92x faster |
Continue 32-bit unknown (different) | Skiped | 0:01 for 100% | Skipped |
8-bit unknown | 0:06 for 100% | 0:06 for 100% | Same |
Continue 8-bit unknown (different) | 5:00 for 20%, 20:00+ for 100% | 0:22 for 100% | 54x faster |
Continue 8-bit unknown (different) | Skipped | 0:02 for 100% | Same |
{external}
Thanks go out to the following people, without them this would not have been possible: