ROM Hack [Release] MHXX Monster Info Overlay Plugin for NTR 3.4

SAIVEN

Well-Known Member
Newcomer
Joined
Feb 6, 2016
Messages
49
Trophies
0
XP
223
Country
hi, I was surprised to see the result of your work.

Using the display plug-in
I want to put subtitles in a moflex file,
Could you help me?
 

jc28735250

Well-Known Member
OP
Member
Joined
Oct 18, 2015
Messages
100
Trophies
0
Age
35
XP
121
Country
United States
hi, I was surprised to see the result of your work.

Using the display plug-in
I want to put subtitles in a moflex file,
Could you help me?

Not sure if I can be of help I'm afraid.
I don't have any experience with moflex files so I don't know how those work; I'm guessing they're some kind of video file?
What I can tell you is that this plugin works purely by reading pointers, so if you could figure out the memory scheme you could in theory draw your subtitles when you detect a certain timestamp has been reached.
That's probably the hardest part; reading a subtitle file in and displaying it is pretty easy.
 

Gurupeco

Member
Newcomer
Joined
Mar 31, 2017
Messages
11
Trophies
0
Age
32
XP
48
Country
Cote d'Ivoire
Sadly the name didnt show off, playing in a new 3dsxl with luma 6.6 11.3, trying several quest/monster
PizXFiO.png
 

SAIVEN

Well-Known Member
Newcomer
Joined
Feb 6, 2016
Messages
49
Trophies
0
XP
223
Country
Not sure if I can be of help I'm afraid.
I don't have any experience with moflex files so I don't know how those work; I'm guessing they're some kind of video file?
What I can tell you is that this plugin works purely by reading pointers, so if you could figure out the memory scheme you could in theory draw your subtitles when you detect a certain timestamp has been reached.
That's probably the hardest part; reading a subtitle file in and displaying it is pretty easy.

Moflex is a video format used by 3ds.

Is it easy to put subtitles if I can figure out when the moflex file is loaded on 3ds system?

Can I use the ntr debugger to check this?

I do not know anything, so I have a question. I'm sorry.
 

jc28735250

Well-Known Member
OP
Member
Joined
Oct 18, 2015
Messages
100
Trophies
0
Age
35
XP
121
Country
United States
Moflex is a video format used by 3ds.

Is it easy to put subtitles if I can figure out when the moflex file is loaded on 3ds system?

Can I use the ntr debugger to check this?

I do not know anything, so I have a question. I'm sorry.

You can probably use the RAM dumper (for offline searching) or the ntr debugger (for online searching) to find what you need.
But yes, coding up a ntr overlay is not that difficult. The overlay works by a callback that is called every time a new frame is needed, so you can just paint your subtitles with the callback, and at the same time read the memory to figure out if you need to advance to the next subtitle.

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

Sadly the name didnt show off, playing in a new 3dsxl with luma 6.6 11.3, trying several quest/monster
PizXFiO.png

Hmmm I did not expect this. Thanks for reporting!
Do let me know what you find.
 

xelrix

Well-Known Member
Member
Joined
Feb 13, 2017
Messages
144
Trophies
0
XP
149
Country
Malaysia
Hi @jc28735250

I like how you implement the menu (being overlays, not pausing the game), and the settings (specially the config saves).
Nothing big, Im thinking about using your source to make a cheat plugin while also having it compatible with your plugin.
Hint: im a newb coder.

Question:
Ive been reading through files in sources folder but cant seem to find a way to change the L+ SELECT. May i ask how to change it (let's say, R+SELECT instead)? Derp. It's in menu.h

Im having trouble compiling the source. It said the devkit environment not set up. Manage to pass that error (manually set it in build.py).
Now there seems to be a bunch of errors with random undeclared functions and conflicting types.
May i know the version of python and devkitpro being used here?
My devkitpro is in D: and ive already change that in the build.bat btw

Edit: Does this only compiles in linux?
 
Last edited by xelrix,

jc28735250

Well-Known Member
OP
Member
Joined
Oct 18, 2015
Messages
100
Trophies
0
Age
35
XP
121
Country
United States
Hi @jc28735250

I like how you implement the menu (being overlays, not pausing the game), and the settings (specially the config saves).
Nothing big, Im thinking about using your source to make a cheat plugin while also having it compatible with your plugin.
Hint: im a newb coder.

Question:
Ive been reading through files in sources folder but cant seem to find a way to change the L+ SELECT. May i ask how to change it (let's say, R+SELECT instead)? Derp. It's in menu.h

Im having trouble compiling the source. It said the devkit environment not set up. Manage to pass that error (manually set it in build.py).
Now there seems to be a bunch of errors with random undeclared functions and conflicting types.
May i know the version of python and devkitpro being used here?
My devkitpro is in D: and ive already change that in the build.bat btw

Edit: Does this only compiles in linux?

My bad, missed 3 files that I changed. Now committed.
Try redownloading the repo; it should compile now.

PS. I build on Windows

RE: menu
I actually WANTED a paused menu in the beginning, thinking that I could just register an entry in the generic NTR menu and go from there. It would have saved me a lot of effort if I could just use that API. Alas, it was not to be, so I had to cook up something myself. The end result, to my surprise, worked much better than my original idea.
 
Last edited by jc28735250,
  • Like
Reactions: xelrix

scionae

*clicking circles*
Member
Joined
Dec 28, 2016
Messages
667
Trophies
0
XP
2,153
Country
Italy
Thanks for letting me know.
May I ask what's your machine region and are you using the english patch? If so, how is it applied (plugin, or patched CIA)?
Plugin patch!
English, cheats and your hp bar.
N3DSXL on latest firmware 11.4(E) with everything updated
 

xelrix

Well-Known Member
Member
Joined
Feb 13, 2017
Messages
144
Trophies
0
XP
149
Country
Malaysia
Hello @jc28735250
For your menu, i noticed that youve used some sort of timer/sleep for your button bounce/rapidfire prevention.
May i suggest an actual key release for more reliable bounce prevention?

Code:
static inline int any_is_pressed(u32 keys)
{
    if (pad_base != NULL)
    {
        if (((hidKeysDown() & keys)))
            return (1);
    }
    else
        if (((((*(vu32*)(IoBasePad) ^ 0xFFF) & 0xFFF) & keys)))
            return (1);
    return (0);
}

static inline void wait_keys_released(u32 keys)
{
    while (1)
        if (!(any_is_pressed(keys)))
            return;
}

Code sampled from blankcheatmenu source. Ive attempted to port it to your base but failed miserably.

Regarding the name, was it because of different id read compared to whats in the database, or unable to read due to the offset shifted by the patch?
If its the former, im guessing adding the changed id into the database would do, no?
If the latter, then maybe add an option in the menu to notify the plugin whether the game is patched or not. From there, have the plugin change the address it gets the id from accordingly?
 
Last edited by xelrix,

jc28735250

Well-Known Member
OP
Member
Joined
Oct 18, 2015
Messages
100
Trophies
0
Age
35
XP
121
Country
United States
Hello @jc28735250
For your menu, i noticed that youve used some sort of timer/sleep for your button bounce/rapidfire prevention.
May i suggest an actual key release for more reliable bounce prevention?

Code:
static inline int any_is_pressed(u32 keys)
{
    if (pad_base != NULL)
    {
        if (((hidKeysDown() & keys)))
            return (1);
    }
    else
        if (((((*(vu32*)(IoBasePad) ^ 0xFFF) & 0xFFF) & keys)))
            return (1);
    return (0);
}

static inline void wait_keys_released(u32 keys)
{
    while (1)
        if (!(any_is_pressed(keys)))
            return;
}

Code sampled from blankcheatmenu source. Ive attempted to port it to your base but failed miserably.

Regarding the name, was it because of different id read compared to whats in the database, or unable to read due to the offset shifted by the patch?

The way the current bounce prevention works is by checking the current tick count against a pre-defined timeout based on when the button was first pressed. Every frame the overlay callback is called and the drawMenu function does it job and draws the text onto the screen, but if the aforementioned timeout is active it simply skips checking the buttons, until eventually the system tick count exceeds the timeout value. This technically isn't a timer, and I don't know if one is available. As for the bounce prevention using a busy loop, I'm not sure if it will work with the way I did the menu since I'm not familiar with the threading model of the overlay callback; but if you can get it to work feel free to submit a pull request on github :)

The English patch doesn't cause shifts in memory as far as I'm aware (otherwise the cheat plugin won't work either), but it does patch out a unique byte value I rely on to differentiate between monsters. Fixing this may simply mean recording new byte values for the patched-version, assuming its uniqueness hasn't changed; if it has, then I've got a bigger problem on my hands.
 
Last edited by jc28735250,

xelrix

Well-Known Member
Member
Joined
Feb 13, 2017
Messages
144
Trophies
0
XP
149
Country
Malaysia
can anyone point me to a good tutorial on how to install ntr plugins? thank you in advance
Go to fbi, look in the main menu for titledb. Then look for bootntrselector, install that. Open up, the newly installed app\cia (bootntrselector), choose default settings. Choose ntr 3.5 when the app ask which ntr version you want to boot up. Then quit the app and close your 3ds. Pop your sd into your computer, make a new folder named "plugin", then another folder inside the plugin folder named "0004000000197100". Copy the mhxx.plg you get from first post into that folder. Copy the whole "plugin" folder (along with it's subfolder) into the root of your sd card.

And youre done. Open up the bootntr before starting up mhxx.
 
  • Like
Reactions: jc28735250

cyb3ritachi

Well-Known Member
Newcomer
Joined
Sep 14, 2009
Messages
54
Trophies
0
XP
165
Country
United States
Go to fbi, look in the main menu for titledb. Then look for bootntrselector, install that. Open up, the newly installed app\cia (bootntrselector), choose default settings. Choose ntr 3.5 when the app ask which ntr version you want to boot up. Then quit the app and close your 3ds. Pop your sd into your computer, make a new folder named "plugin", then another folder inside the plugin folder named "0004000000197100". Copy the mhxx.plg you get from first post into that folder. Copy the whole "plugin" folder (along with it's subfolder) into the root of your sd card.

And youre done. Open up the bootntr before starting up mhxx.


thank you very much
 

pramzam

New Member
Newbie
Joined
Apr 28, 2017
Messages
2
Trophies
0
Age
33
XP
44
Country
United States
Was working fine on the v2.1 of the English patch, but updating to 3.0 completely broke it. If I have this enabled at all, the game crashes when I hit Continue in the menu. Not having it enabled, be that from not using ntr or simply disabling the overlay in the plugins config, will let me play as normal.

I've been using ntr 3.5 from ntr selector, because you can no longer pick 3.4...3.3/3.2 don't work with this plugin, so it means i either have to disable this plugin or not play XX. It might work with 3.4? Either way it totally crashes the game with the 3.0 english patch. considering downgrading back to 2.1 so i can keep using this lol

edit: forgot to mention was using 1.4.1 of this plugin

downgrading to v1.3 of this plugin fixed it, which is fine by me
 
Last edited by pramzam,

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: By the power of Florida Man, I have the power!!! *Lifts up meth pipe* Meth Man!!! lol