Tutorial  Updated

Building NTR custom firmware cheat plugins w/ cheat menu

so thanks to @cell9 for releasing the source for NTR cheat plugins that use the cheat menu instead of the outdated button toggles method that has interference with certain games.
Today is the moment you've all been waiting for. this is some simple steps on building your own cheat plugins!
first there are some prerequisites:
you'll need python 2.7 from here
https://www.python.org/download/releases/2.7/
and devkitpro from here
https://gbatemp.net/threads/ds-programming-environment-on-windows.292386/
and you'll need a computer with Windows XP/Vista/7/8/8.1/10 edit: this also works on the Ematic tablet computer that has Windows 8.1 on it
then get @cell9 's source code here
http://gbatemp.net/threads/source-cheat-menu-plugin-demo-for-ntr-cfw.411032/
and my improvement to the gameplg.c sample file here (i put a sample of adding in more cheat entries)
http://gbatemp.net/threads/source-cheat-menu-plugin-demo-for-ntr-cfw.411032/#post-5996714

ok so here's the steps

1) extract menuCheat.zip from @cell9 's source code thread and replace the gameplg.c in /menuCheat/source/ with the improved sample gameplg.c from my post.

2) open gameplg.c from /menuCheat/sources/ with your source code editor of choice (e.g. notepad++ on Windows or DroidEdit on Android), scroll to near the bottom where the cheats are and edit them with your own found with NTR debugger/Cheat Engine or from someone requesting a cheat plugin for codes they found but dont know how to build cheat plugins. then scroll down more for the cheat entry names and edit them to match the cheats you put in. to add more entries, simply follow the pattern and format of them with proper bracketing and tab-spacing and follow the numbering for the cheats (0, 1, 2, 3, 4, etc.) and hit save in your source code editor. make sure your edited gameplg.c is in /menuCheat/sources/ ! (use FTP transfers if you used DroidEdit like I did lmao)

3) then go to the /menuCheat/ folder and doubleclick the startenv.bat (make sure python and devkitpro are installed before you do this!) and it'll open a command prompt window with the directory aimed at /menuCheat/. then type in build.bat and hit enter! at this point it will run python and build your cheat plugin, which will appear in the /menuCheat/ folder. you can then place cheat.plg in /plugin/[titleid]/ with the appropriate titleid for your game from here
http://3dsdb.com/ and test your NTR custom firmware plugin cheats!
note: @cell9 said so himself that these plugins won't work online so don't expect to ruin games online with this!

Enjoy~
 
Last edited by supermariorick,

supermariorick

Well-Known Member
OP
Member
Joined
Jun 18, 2010
Messages
640
Trophies
1
XP
816
Country
United States
Hello. Can this Spider AR code be converted to NTR? How do you convert the codes, I can't understand the +0x14000000 and what to do with it, but I'm a good learner.

Code:
StreetPass Mii Plaza NTSC-U 4.0

99 Plaza Tickets
0176CF90 00000063
027FD9F6 00000063

spider3dstools ARcode dumps the 0x14000000 range of RAM that NTR debugger can dump (perhaps a little more in one dump). NTR debugger can dump more than one range so not all codes for NTR work on ARcode. but as long as it's in the 0x14000000 range then ARcodes can potentially be ported to NTR codes if 0x14000000 appears when memlayout command is used when connecting to the 3ds with NTR debugger when your game is loaded (with the proper process id to scan that's associated with your game)
worst case if porting doesn't work then codes will have to be reverse engineered and refound in NTR debugger and put in gameplg.c for building into a cheat plugin.

here is a test conversion that i have no idea if it will work or not but is what to do with +0x14000000 from ARcode
(0x1576CF90, 0x00000063)
(0x167FD9F6, 0x00000063)
 
Last edited by supermariorick,

Silent Hell

Well-Known Member
Member
Joined
Jul 12, 2015
Messages
206
Trophies
0
Age
29
Location
Chicagoland area
XP
617
Country
United States
I meant to post this here and not in the other thread.

How would I go about using codes with pointers and storing values? For example, I made a code that uses pointers here.

How would I go about using this code?

Fire Emblem Awakening
Slot 1 Class Modifier (US)
D9000000 03CF0AF8
D4000000 0000XXXX
B3CF1100 00000000
D6000000 00000068
D2000000 00000000
 

theross

Active Member
Newcomer
Joined
Nov 20, 2015
Messages
33
Trophies
0
XP
114
Country
Gambia, The
Oh, crap :/
I though you were as people have stated over the interwebs.
I'm terribly sorry for blaming you. I'll edit my post.
 

Lyomak

Well-Known Member
Member
Joined
Jun 24, 2009
Messages
436
Trophies
1
Age
39
Location
Bogotá
Website
twitch.tv
XP
389
Country
Colombia
spider3dstools ARcode dumps the 0x14000000 range of RAM that NTR debugger can dump (perhaps a little more in one dump). NTR debugger can dump more than one range so not all codes for NTR work on ARcode. but as long as it's in the 0x14000000 range then ARcodes can potentially be ported to NTR codes if 0x14000000 appears when memlayout command is used when connecting to the 3ds with NTR debugger when your game is loaded (with the proper process id to scan that's associated with your game)
worst case if porting doesn't work then codes will have to be reverse engineered and refound in NTR debugger and put in gameplg.c for building into a cheat plugin.

here is a test conversion that i have no idea if it will work or not but is what to do with +0x14000000 from ARcode
(0x1576CF90, 0x00000063)
(0x167FD9F6, 0x00000063)

Thank you, it didn't work though. Seems that I have to learn about NTR debugger.
 

Silent Hell

Well-Known Member
Member
Joined
Jul 12, 2015
Messages
206
Trophies
0
Age
29
Location
Chicagoland area
XP
617
Country
United States
I am not the author of that one, I can only share the code written by myself.
You could not blame me for not sharing things I didn't own.
Is there some sort of pastebin or something that shows you how to make cheat plugins? More specifically I just need help understanding how to store an offset given by a pointer? The equivalent of a D9000000 and D4000000 command for ARcodes.
 

supermariorick

Well-Known Member
OP
Member
Joined
Jun 18, 2010
Messages
640
Trophies
1
XP
816
Country
United States
Is there some sort of pastebin or something that shows you how to make cheat plugins? More specifically I just need help understanding how to store an offset given by a pointer? The equivalent of a D9000000 and D4000000 command for ARcodes.
a-are you serious? there's a template gameplg.c that you can edit the values and put in whatever codes you want and this thread has a tutorial on building the plugin from it. and you can dump RAM with NTR and cross compare to find codes. the only thing i am having trouble with is multiple lines in one code. how are you not able to figure this out at this point? the format is there and the steps are there except the obviously unknown method for putting more than one line in for one code.

edit: oh i think you're looking for more advanced things than simple methods for the plugin provide here. either ask @cell9 or @speedfly on how to put in pointer codes. pretty sure there's no pastebin on it unless @speedfly has it.
 
Last edited by supermariorick,

julian20

Well-Known Member
Member
Joined
Jan 10, 2015
Messages
352
Trophies
0
XP
648
Country
Germany
Can i load a plugin independently of the game. So I can use a plugin while no game is loaded and that it is loaded for all games.
I am creating something right now and that would be a good feature
 

theross

Active Member
Newcomer
Joined
Nov 20, 2015
Messages
33
Trophies
0
XP
114
Country
Gambia, The
Can i load a plugin independently of the game. So I can use a plugin while no game is loaded and that it is loaded for all games.
I am creating something right now and that would be a good feature
Since you have such feature if you put the plg-file in the root of the plg-directory of your sd-card (example = custom CPU-Speed editor plugin for n3ds) i presume that putting the plugin in the root of the plg-directory shall be enough.
What exactly are you trying to achieve?
 

julian20

Well-Known Member
Member
Joined
Jan 10, 2015
Messages
352
Trophies
0
XP
648
Country
Germany
Since you have such feature if you put the plg-file in the root of the plg-directory of your sd-card (example = custom CPU-Speed editor plugin for n3ds) i presume that putting the plugin in the root of the plg-directory shall be enough.
What exactly are you trying to achieve?
Use a controller connected to my pc on the 3ds via socket. Some neat tricks and it will work(but i want that it doesnt only work for selected games)
 

gamer4lif3

Well-Known Member
Member
Joined
Dec 31, 2015
Messages
495
Trophies
0
XP
464
Country
United States
how would i write codes with multiple pointers like this for cheat.plg

Infinite Max Hearts
2058799A 000000F0
2058799B 00000050
2058799C 00000040
2058799D 00000001


i keep getting these errors when i run build.bat and when i put them in game the menu only shows this infinit rupees code that i never even added?

D:\3ds\menuCheat>build.py
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x60E90000, RegionSize 0x340000, State 0x10000
F:\devkitPro\msys\bin\rm.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x60E90000, RegionSize 0x340000, State 0x10000
F:\devkitPro\msys\bin\rm.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
'arm-none-eabi-gcc' is not recognized as an internal or external command,
operable program or batch file.
'arm-none-eabi-gcc' is not recognized as an internal or external command,
operable program or batch file.
'arm-none-eabi-ld' is not recognized as an internal or external command,
operable program or batch file.
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x60E90000, RegionSize 0x340000, State 0x10000
F:\devkitPro\msys\bin\cp.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x60E90000, RegionSize 0x340000, State 0x10000
F:\devkitPro\msys\bin\cp.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
'arm-none-eabi-objcopy' is not recognized as an internal or external command,
operable program or batch file.
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x60E90000, RegionSize 0x340000, State 0x10000
F:\devkitPro\msys\bin\rm.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487
AllocationBase 0x0, BaseAddress 0x60E90000, RegionSize 0x340000, State 0x10000
F:\devkitPro\msys\bin\rm.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
1 file(s) copied.
 
Last edited by gamer4lif3,

Ailuros27

Well-Known Member
Member
Joined
Apr 7, 2015
Messages
732
Trophies
0
XP
421
Country
United States
Is there any way to decompile a plugin? I have plenty downloaded from various sites, but they're often written in the button combo format, and I'm willing to do the work updating them to menu plugins, but I don't have the source.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • Veho @ Veho:
    The fuuuuu---
  • Veho @ Veho:
    I thought it was an actual xBox at that price.
  • Sicklyboy @ Sicklyboy:
    I wanna grab a 360 Slim and a 360 E one of these days. Missed the boat of getting them at their lowest though, once they were discontinued. Could've got them for cheap back when I was a broke 20 something working at Target, but then again, I was a broke 20 something working at Target
  • Veho @ Veho:
    Being broke is no fun.
  • K3Nv2 @ K3Nv2:
    @Sicklyboy, $150 isn't that bad for a jtag slim on ebay
  • Veho @ Veho:
    I only wish it was actually playable.
  • Veho @ Veho:
    There's a guy on the Tube of You that makes playable mechanical arcade games out of Lego. This could work on the same principle.
  • Veho @ Veho:
    Just a couple of guys taking their manatee out for some fresh air, why you have to molest them?
  • Veho @ Veho:
    Stupid Chinese shop switched their shipping company and this one is slooooooow.
  • LeoTCK @ LeoTCK:
    STOP BUYING CHINESE CRAP THEN
  • LeoTCK @ LeoTCK:
    SUPPORT LOCAL PRODUCTS, MAKE REVOLUTION
  • LeoTCK @ LeoTCK:
    THEY KEEP REMOVING LOCAL SHIt AND REPLACING WItH INFERIOR CHINESE CRAP
  • LeoTCK @ LeoTCK:
    THATS WHY MY PARTNER CANT GET A GOOTWEAR HIS SIZE ANYMORE
  • LeoTCK @ LeoTCK:
    HE HAS BIG FOOT AND BIG DUCK
  • LeoTCK @ LeoTCK:
    d*ck i mean*
  • LeoTCK @ LeoTCK:
    lol
  • Veho @ Veho:
    Mkay.
  • Veho @ Veho:
    I just ordered another package from China just to spite you.
  • SylverReZ @ SylverReZ:
    Communism lol
  • SylverReZ @ SylverReZ:
    OUR products
  • The Real Jdbye @ The Real Jdbye:
    @LeoTCK actually good quality products are dying out because they can't compete with dropshipped chinese crap
    +1
    The Real Jdbye @ The Real Jdbye: @LeoTCK actually good quality products are dying out because they can't compete with dropshipped... +1