Gateshark2NTR 3DS

From GameBrew
Revision as of 12:54, 19 September 2021 by HydeWing (talk | contribs)

Template:Infobox-3DS-Homebrews

This is no longer supported, consider using CTRPF with Action Replay support instead of using a converter.

With it you can simply load your text files with cheats.

Hi guys !

Today I present to you the Gateshark2NTR.

Prefer using the NTR Plugin Manager to convert your codes, it's easier to use. ;)

What is this ?

Well as the name say it this little piece of soft will allows you to "convert" a Gateshark's cheats text file in a plugin usable with NTR.

How to use it ?

This soft is almost full automatic so it should be easy to use. You just need to give the file to the soft and it'll start the plugin creation.

3 ways to pass the file:

  1. Drag & Drop the file on the soft's icon
  2. Launch the soft and a window will appear to select the file
  3. Pass the file as an argument through a shell

What do I need to use this ?


  1. DevKitPRO, Install this and be sure to add "c:\devkitPro\msys\bin" to the PATH Environment Variable
  2. You also need to have the VCRedist 2015 installed.
===The complete STD AR / Gateway codes===

0 Type Format: 0XXXXXXX YYYYYYYY Description: 32bit write of YYYYYYYY to 0XXXXXXX. Simple: Makes the value at address 0XXXXXXX equal the value YYYYYYYY. Example:

023D6B28 3B9ACA00


1 Type Format: 1XXXXXXX 0000YYYY Description: 16bit write of YYYY to 0XXXXXXX. Simple: Makes the value at address 0XXXXXXX equal the value YYYY. Example:

023D6B28 00002710


2 Type Format: 2XXXXXXX 000000YY Description: 8bit write of YY to 0XXXXXXX. Simple: Makes the value at address 0XXXXXXX equal the value YY. Example:

023D6B28 00000032


3 Type Format: 3XXXXXXXX YYYYYYYY Description: 32bit if less than. Simple: If the value at address 0XXXXXXX is less than the value YYYYYYYY. Example:

323D6B28 10000000


4 Type Format: 4XXXXXXXX YYYYYYYY Description: 32bit if greater than. Simple: If the value at address 0XXXXXXX is greater than the value YYYYYYYY. Example:

423D6B28 10000000


5 Type Format: 5XXXXXXXX YYYYYYYY Description: 32bit if equal to. Simple: If the value at address 0XXXXXXX is equal to the value YYYYYYYY. Example:

523D6B28 10000000


6 Type Format: 3XXXXXXXX YYYYYYYY Description: 32bit if not equal to. Simple: If the value at address 0XXXXXXX is not equal to the value YYYYYYYY. Example:

623D6B28 10000000


7 Type Format: 7XXXXXXXX 0000YYYY Description: 16bit if less than. Simple: If the value at address 0XXXXXXX is less than the value YYYY. Example:

723D6B28 00005400


8 Type Format: 8XXXXXXXX 0000YYYY Description: 16bit if greater than. Simple: If the value at address 0XXXXXXX is greater than the value YYYY. Example:

823D6B28 00005400


9 Type Format: 9XXXXXXXX 0000YYYY Description: 16bit if equal to. Simple: If the value at address 0XXXXXXX is equal to the value YYYY. Example:

923D6B28 00005400


A Type Format: AXXXXXXXX 0000YYYY Description: 16bit if not equal to. Simple: If the value at address 0XXXXXXX is not equal to the value YYYY. Example:

A23D6B28 00005400


B Type Format: BXXXXXXX 00000000 Description: Loads offset register. Simple: Used for pointers, the address at 0XXXXXXX is the offset for all of the following lines. Example:

B23D6B28 00000000 00002000 0001869F D2000000 00000000


C Type Format: C0000000 ZZZZZZZZ Description: Repeat following lines at specified offset. Simple: used to write a value to an address, and then continues to write that value Z number of times to all addresses at an offset determined by the (D6, D7, D8, or DC) type following it. Note: used with the D6, D7, D8, and DC types. C types can not be nested. Example:

C0000000 00000005 023D6B28 0009896C DC000000 00000010 D2000000 00000000


D0 Type Format: D0000000 00000000 Description: ends most recent conditional. Simple: type 3 through A are all "conditionals," the conditional most recently executed before this line will be terminated by it. Example:

94000130 FFFB0000 74000100 FF00000C 023D6B28 0009896C D0000000 00000000


The 7 type line would be terminated.


D1 Type Format: D1000000 00000000 Description: ends repeat block. Simple: will end all conditionals within a C type code, along with the C type itself. Example:

94000130 FFFB0000 C0000000 00000010 8453DA0C 00000200 023D6B28 0009896C D6000000 00000005 D1000000 00000000


The C line, 8 line, 0 line, and D6 line would be terminated.


D2 Type Format: D2000000 00000000 Description: ends all conditionals/repeats before it and sets offset and stored to zero. Simple: ends all lines. Example:

94000130 FEEF0000 C0000000 00000010 8453DA0C 00000200 023D6B28 0009896C D6000000 00000005 D2000000 00000000


All lines would terminate.


D3 Type Format: D3000000 XXXXXXXX Description: sets offset. Simple: loads the address X so that lines after can modify the value at address X. Note: used with the D4, D5, D6, D7, D8, and DC types. Example:

D3000000 023D6B28


D4 Type Format: D4000000 YYYYYYYY Description: adds to the stored address' value. Simple: adds to the value at the address defined by lines D3, D9, DA, and DB. Note: used with the D3, D9, DA, DB, DC types. Example:

D4000000 00000025


D5 Type Format: D5000000 YYYYYYYY Description: sets the stored address' value. Simple: makes the value at the address defined by lines D3, D9, DA, and DB to YYYYYYYY. Note: used with the D3, D9, DA, DB, and DC types. Example:

D5000000 34540099


D6 Type Format: D6000000 XXXXXXXX Description: 32bit store and increment by 4. Simple: stores the value at address XXXXXXXX and to addresses in increments of 4. Note: used with the C, D3, and D9 types. Example:

D3000000 023D6B28


D7 Type Format: D7000000 XXXXXXXX Description: 16bit store and increment by 2. Simple: stores 2 bytes of the value at address XXXXXXXX and to addresses in increments of 2. Note: used with the C, D3, and DA types. Example:

D7000000 023D6B28


D8 Type Format: D8000000 XXXXXXXX Description: 8bit store and increment by 1. Simple: stores 1 byte of the value at address XXXXXXXX and to addresses in increments of 1. Note: used with the C, D3, and DB types. Example:

D8000000 023D6B28


D9 Type Format: D9000000 XXXXXXXX Description: 32bit load. Simple: loads the value from address X. Note: used with the D5 and D6 types. Example:

D9000000 023D6B28


DA Type Format: DA000000 XXXXXXXX Description: 16bit load. Simple: loads 2 bytes from address X. Note: used with the D5 and D7 types. Example:

DA000000 023D6B28


DB Type Format: DB000000 XXXXXXXX Description: 8bit load. Simple: loads 1 byte from address X. Note: used with the D5 and D8 types. Example:

DB000000 023D6B28


DC Type Format: DC000000 VVVVVVVV Description: 32bit store and increment by V. Simple: stores the value at address(es) before it and to addresses in increments of V. Note: used with the C, D3, D5, D9, D8, DB types. Example:

DC000000 00000100


E Type Format: EXXXXXXX UUUUUUUU YYYYYYYY YYYYYYYY Description: writes Y to X for U bytes. Simple: writes the values at Y (Y can be any length) to addresses starting at X, for U. number of bytes. Example:

E23D6B28 00000010 1244F2F2 02354653 23FEDA20 542FEBC0 D2000000 00000000


Special Codes: Built outsite the ARCode format, The Gateway Team have given us a little bonus.


DD Type Format: DD000000 XXXXXXXX Description: triggers the following code on single or combined keypress. Keypress code stops when terminated with D0 Type code. These can be stacked, i.e. A(01)+Left(20) would be 00000021

Keys: 0x00000001=A 0x00000002=B 0x00000004=Select 0x00000008=Start 0x00000010=Right 0x00000020=Left 0x00000040=Up 0x00000080=Down 0x00000100=R 0x00000200=L 0x00000400=X 0x00000800=Y

Example:

DD000000 00000021 1AE40233 000000FF D0000000 00000000

Not Implemented: These codes are part of the ARCode format but have not been confirmed built by the Gateway Team.


F Type Format: FXXXXXXX UUUUUUUU Description: writes from the offset to address at X for U bytes. Simple: writes from the offset (D3 type) to the address at X for U bytes. Example:

D3000000 023D6B28 F23D6B2C 00000004 D2000000 00000000

===Custom codes===

S Type Format: S0000000 UUUUUUUU Description: Put the cheats thread in sleep for U milliseconds.

KR Type Format: KR000000 UUUUUUUU Description: Wait for the U keys to be released. Use the same values as the DD code

DIS Type Format: DIS00000 00000000 Description: This will disable the cheat. With this the cheat will only be executed once. As the execution is really fast, you might be unable to see the ON on the menu before it goes to OFF. Still the code have been executed.

LOG Type Format: LOG0X00Y ZZZZZZZZ Description: This code will create an entry in the logger. See below for further details.

Config

The soft can use a config file in order to set some preference:

  1. builder_name: Nanquitas;
  2. name_auto: 1;
  3. folder_auto: 1;
  4. log: 0;
  5. debug: 1;

Click to expand...

List of options and their meaning:

#builder_name: Will permit you to enter the name that will be used by the converter automatically for the splash menu; #name_auto: Set to 1 by default. If disabled the soft will ask you to enter a name for the resulting file; #folder_auto: Set to 1 by default, if the name of the input file is recognized as a titleID, the program will automatically create the folder tree like: plugin --> ID folder --> plugin.plg. #log: Set to 0 by default. Create a traceback file with various info. Mainly used to debug the program. #debug: Set to 0 by default. If activated, the plugin will have the Debug Menu enabled. This menu can be shown with L + Start and shows various infos. This menu also have a logger.


The plugins made with this soft have a custom menu. So to show the menu, you don't have to x + y and go in the game plugin section, but just press select ingame. Then you can change the hotkey by pressing Start.

I think I covered all the functions, if I forgot something I'll edit. :P

Oh yeah, a last point: the plugins made with this soft disable the online functionalities but the local multiplayer is still available.

Thanks

Of course this soft wouldn't exist without a lot of people so I address my sincere thanks to:

  • @cell9 for the CFW NTR
  • @chronoss for being the main beta tester. He did a really great job, and many of improvement are here because of him
  • a lot of people all over the web, particularly people helping in the 3DS Scene. Indeed, I'm not a pro programmer, and I learned "on the go" by trying and testing. But I also read a lot of github code, which was really interesting and instructive. It's always good to see how people do things to have as many possibilities as possible. So a big thanks to them.
  • I probably forgot some people, so I add them later. :P

Troubleshoot

  • If when you start the program you have this error:

The program can't start because VCRUNTIME140.dll is missing from your computer. Try reinstalling the program to fix this problem.

then install the VCRedist 2015 I linked higher.

Update

03/08/16 (V. 1.0.1)

  • Bug correction

07/08/16 (V. 1.1)

  • Add Mask support for 16 bits conditionals codes (thanks to @itsRyan for noticing it)
  • Add value truncation for the (wrong) writes codes, avoid warnings on compilation

Advertising: