ROM Hack Modified NTR Client with Gateshark support

Status
Not open for further replies.
Nope. The debugger do not retrieve the current key currently pressed.

Plus it'll be a lot of work for nothing to implement that kind of functions. It's best to directly code a plugin with the trigger code instead.
 
After a long time, I finally got myself to work on some stuff and improve some code.
Version 1.5 Prerelease. This update will not add anything fancy, or new. It'll be mostly just stuff updated.
As an example, this is the new auto-updater message:
605f631249aef8187cc1de18c0bfdf8b.png
 
  • Like
Reactions: Kotomine Kirei
could anyone tell me how to generate cheat.plg cheat code format from raw memory dump address code?

eg 0x002d456 0x00002f34
I have just Put this code on c file and compiled but nothing happened.

please help me.
 
You need a memory Pointer where you want to change the memory. If you have so just do WRITEUXX(Address, Value). Please note this XX, which you have to replace with the amount of Bits you need to replace. 8 is 1 Byte, 16 is 2 Bytes, 32 is 4 Bytes.
To generate a plugin using pointers simply use the demo cell9 created and edit it a bit. Then compile it.
 
  • Like
Reactions: Februarysn0w
I was using this, however for Fire Emblem IF Jap edition, everything I run the game, idle to set up the NTR debugger etc. The moment I press a button to get to the main menu, system ALWAYS crashes saying there's an error. Any ideas?
O3DSXL at 10.7 A9LH
 
It's possible to send command button like A, B DPAD, etc with this modified NTR client ? thanks
 
Last edited by junetwo,
Although the addresses for these buttons in the HID process is already known, I haven't tested sending button inputs yet. I might try this tomorrow.
 
I just took the time and got the address for the button presses and wrote 0x01 ( the a button ) to the address. It made the entire menu lag and didn't work. Sorry!
If anybody wants to play with the address, it's 0x0010C0D8 in the HID process ( pid is always 0x10 )
 
Oh I didn't understand what you meant !

I think that instead of edit the HID process, you should try by injecting the value in the shared memory of the process currently running.
Exemple:
Code:
// This is the address of the memory block allocated for the hid (do not contain the N3DS features, look for the irrst handle) I've retrieved with my plugin (game only)
vu32     *hidSharedMem = (u32 *)0x10002000;


void    setHID(u32 keys)
{
    u32 id;

    id = 0;
    id = hidSharedMem[4];
    if(id > 7)
        id = 7;
    hidSharedMem[10 + id * 4] |= keys;
}

With keys being:
Code:
#define BIT(x) (1 << x)
enum
{
    KEY_A       = BIT(0),       ///< A
    KEY_B       = BIT(1),       ///< B
    KEY_SELECT  = BIT(2),       ///< Select
    KEY_START   = BIT(3),       ///< Start
    KEY_DRIGHT  = BIT(4),       ///< D-Pad Right
    KEY_DLEFT   = BIT(5),       ///< D-Pad Left
    KEY_DUP     = BIT(6),       ///< D-Pad Up
    KEY_DDOWN   = BIT(7),       ///< D-Pad Down
    KEY_R       = BIT(8),       ///< R
    KEY_L       = BIT(9),       ///< L
    KEY_X       = BIT(10),      ///< X
    KEY_Y       = BIT(11),      ///< Y
    KEY_CPAD_RIGHT = BIT(28),   ///< Circle Pad Right
    KEY_CPAD_LEFT  = BIT(29),   ///< Circle Pad Left
    KEY_CPAD_UP    = BIT(30),   ///< Circle Pad Up
    KEY_CPAD_DOWN  = BIT(31),   ///< Circle Pad Down

};
 
Oh I didn't understand what you meant !

I think that instead of edit the HID process, you should try by injecting the value in the shared memory of the process currently running.
Exemple:
Code:
// This is the address of the memory block allocated for the hid (do not contain the N3DS features, look for the irrst handle) I've retrieved with my plugin (game only)
vu32     *hidSharedMem = (u32 *)0x10002000;


void    setHID(u32 keys)
{
    u32 id;

    id = 0;
    id = hidSharedMem[4];
    if(id > 7)
        id = 7;
    hidSharedMem[10 + id * 4] |= keys;
}

With keys being:
Code:
#define BIT(x) (1 << x)
enum
{
    KEY_A       = BIT(0),       ///< A
    KEY_B       = BIT(1),       ///< B
    KEY_SELECT  = BIT(2),       ///< Select
    KEY_START   = BIT(3),       ///< Start
    KEY_DRIGHT  = BIT(4),       ///< D-Pad Right
    KEY_DLEFT   = BIT(5),       ///< D-Pad Left
    KEY_DUP     = BIT(6),       ///< D-Pad Up
    KEY_DDOWN   = BIT(7),       ///< D-Pad Down
    KEY_R       = BIT(8),       ///< R
    KEY_L       = BIT(9),       ///< L
    KEY_X       = BIT(10),      ///< X
    KEY_Y       = BIT(11),      ///< Y
    KEY_CPAD_RIGHT = BIT(28),   ///< Circle Pad Right
    KEY_CPAD_LEFT  = BIT(29),   ///< Circle Pad Left
    KEY_CPAD_UP    = BIT(30),   ///< Circle Pad Up
    KEY_CPAD_DOWN  = BIT(31),   ///< Circle Pad Down

};
It's a part of a plugin ? cause i have some probleme with compiling with my VS2012, so i'm totaly lost
 
This is written in C so you can add it to a plugin and launch it yes, if you want a NTR Debugger command, you'll need to manually do the :
Code:
    id = hidSharedMem[4];
    if(id > 7)
        id = 7;
    hidSharedMem[10 + id * 4] |= keys;
part before using the write command.

It'll be a real pain though.
 
This is written in C so you can add it to a plugin and launch it yes, if you want a NTR Debugger command, you'll need to manually do the :
Code:
    id = hidSharedMem[4];
    if(id > 7)
        id = 7;
    hidSharedMem[10 + id * 4] |= keys;
part before using the write command.

It'll be a real pain though.
Ok, I gonna see what can I do with this.. thanks ! (i see you in french forum logic sunrise, I remember your sign "[3DS]Process memory explorer" ;)
 
Yep that's me ;)

--------------------- MERGED ---------------------------

If you tell us what you try to do, maybe we can help you further.
I want to controle the 3DS buttons with NTR Command. I have look into the source code of ntr client, added
 
Status
Not open for further replies.

Site & Scene News

Popular threads in this forum