Just run the game. You don't have to do anything.
EDIT:
I know my problem now... Im using an EUr rom
Just run the game. You don't have to do anything.
Now I haven't played ALTTP a whole lot but I found some of the mobs in Lorule to be pretty hard. Some of them can kill you within just a few hits and are very persistant and hard to kill (and also frequently encountered)
So in any case I wouldn't say ALBW is easy. It's rather hard compared to other Zelda games.
NTR CFW is required.
Usage:
Copy plugins folder to sd card, the plugin will be loaded in the game.
Hearts and rupees will freeze at maximum values.
Works on USA region game only.
https://www.sendspace.com/file/yeekc4
void SetByte (u32 addr, u8 value)
{
u32 handle = 0;
svc_openProcess (& amp; handle, 0x25); // pid = 0x25
svc_writeProcessMemory (handle, & amp; value, addr, 1);
}
u8 CheatOn_HP = 0;
u32 CheatUi () {
u8 buf [200];
acquireVideo ();
while (1) {
blank (0, 0, 320, 240);
xsprintf (buf, "Cheat:% 02d", CheatOn_HP);
print (buf, 10, 10, 255, 0, 0);
updateScreen ();
u32 key = waitKey ();
if (key == BUTTON_DU)
{
CheatOn_HP = 1;
SetByte (0x168b5fa8, 99);
}
if (key == BUTTON_DD) {
CheatOn_HP = 0;
SetByte (0x168b5fa8, 10);
}
if (key == BUTTON_B) {
break;
}
}
releaseVideo ();
return 0;
}
void Run_Cheat (u32 addr, u8 value)
{
while (1)
{
if (CheatOn_HP)
SetByte (0x168b5fa8, 99);
}
}
u64 Stack_buf [0x200 / 8];
int main () {
u32 retv;
Handle thread;
initSharedFunc ();
nsDbgPrint ("initializing Cheat plugin \ n");
plgRegisterMenuEntry (1, "CheatContro", CheatUi);
plgGetSharedServiceHandle ("fs: USER", & amp; fsUserHandle);
nsDbgPrint ("fsUserHandle:% 08x \ n", fsUserHandle);
// Svc_createThread (& amp; thread, Run_Cheat, 0, (u32) Stack_buf, 0x18, 1);
}
EDIT:
any chance u can make it work for the EUR version.
i'm sure i said this to you before, it looks so silly for you to call it triforce of the godsWhen my European version of Triforce of the Gods 2 arrives, I could dump the cart and edit this for you...if I can figure out how to edit it at all.
This is a great progress and working well when I tried it (fighting shadow link and others).
Here are the screenshots (using the plugin as well):
![]()
![]()
I also saw some codes (see below) posted in speedfly.cn perhaps related to this plug-in? It would be great if you could share the process and example of codes in your code repository so more and more players could contribute to the community cheat database for various games by using NTR CFW.
Code:void SetByte (u32 addr, u8 value) { u32 handle = 0; svc_openProcess (& amp; handle, 0x25); // pid = 0x25 svc_writeProcessMemory (handle, & amp; value, addr, 1); } u8 CheatOn_HP = 0; u32 CheatUi () { u8 buf [200]; acquireVideo (); while (1) { blank (0, 0, 320, 240); xsprintf (buf, "Cheat:% 02d", CheatOn_HP); print (buf, 10, 10, 255, 0, 0); updateScreen (); u32 key = waitKey (); if (key == BUTTON_DU) { CheatOn_HP = 1; SetByte (0x168b5fa8, 99); } if (key == BUTTON_DD) { CheatOn_HP = 0; SetByte (0x168b5fa8, 10); } if (key == BUTTON_B) { break; } } releaseVideo (); return 0; } void Run_Cheat (u32 addr, u8 value) { while (1) { if (CheatOn_HP) SetByte (0x168b5fa8, 99); } } u64 Stack_buf [0x200 / 8]; int main () { u32 retv; Handle thread; initSharedFunc (); nsDbgPrint ("initializing Cheat plugin \ n"); plgRegisterMenuEntry (1, "CheatContro", CheatUi); plgGetSharedServiceHandle ("fs: USER", & amp; fsUserHandle); nsDbgPrint ("fsUserHandle:% 08x \ n", fsUserHandle); // Svc_createThread (& amp; thread, Run_Cheat, 0, (u32) Stack_buf, 0x18, 1); }
Did you see https://github.com/44670/libntrplg
But the memory of those codes (health and rupees) are inside in one place of game (those info like in EBOOT of ps3 games...). For 3ds where to look? If someone want to patch permanently the game (like infinite ammo or money) how can see? RomFS.bin? I think not (here file folder, for models, animation etc...) Maybe in ExeFS.bin??
1. Play 3ds with NTR CFW for the game ACNL (with wireless switch on)
2. Check the IP address of the 3ds (e.g. 192.168.1.10)
3. Run ntrclient application on Windows PC
4. Execute the following command:
connect('192.168.1.10', 8000)
5. After the connection is establish, you could see the list of process by using command:
listprocess()
6. One of them is the ACNL game of interest (in this case the process name is GARDEN, and has pid # 0x25)
7. Then you could check the memory layout, for example:
> memlayout(0x25)
null
valid memregions:
00100000 - 00b6efff , size: 00a6f000
08000000 - 08073fff , size: 00074000
0ffc0000 - 10000fff , size: 00041000
10002000 - 10002fff , size: 00001000
14000000 - 174dcfff , size: 034dd000
1f000000 - 1f5fffff , size: 00600000
1ff50000 - 1ff57fff , size: 00008000
1ff70000 - 1ff77fff , size: 00008000
1ff80000 - 1ff81fff , size: 00002000
1ffad000 - 1ffaefff , size: 00002000
end of memlayout.
8. I could dump the biggest one and see whether the savegame file is in that part (i.e. finding
garden.dat file (extracted by using savefiler 3ds application) content inside this memory data
dump file, data.bin):
> data(0x14000000, 0x34DD000, filename='data.bin', pid=0x25)
9. garden.dat actually starts at offset 0x01FB7E80 in that data.bin file, so now we could try finding
the location of the pocket slots of the first player by changing the content in the first slot of the
pocket multiple times and dump those data.bin for each change. In this case, I could see the offset
is 0x1FBEAD0 (or 0x15FBEAD0 after taking into consideration that data.bin starts at 0x14000000 in
the memory of pid 0x25).
10. Now, we could use command to put a bag of 99,000 bells in that first slot of pocket:
write(0x15FBEAD0, (0x12, 0x21, 0x00, 0x00), pid=0x25)
11. Profit
Oh... and what the difference? I only want to mod the game with hack like cheats, as armax or codebreaker, but permanently and inside the game (change equipment, inf health and so on...) so this is changing data or program code? Changing data, right? XD
You can write here a small tut for find something in exefs? What are you doing? Decrypt then hex editor or other way?




