ROM Hack Noob needs help creating cheat code SXOS

MrNerf

Well-Known Member
OP
Member
Joined
Jan 18, 2020
Messages
152
Trophies
0
XP
239
Country
Canada
Help noob trying to create first cheat.

Using SXOS (latest version).

Game Luigi's Mansion 3. Can't find any cheats for my build...

I used SXOS Cheat Searcher to lookup the number of hearts (99=63 hex). It found 4 addresses after narrowing it down a couple of times; won't get lower than 4 results.

the first 3 addresses remain the same address even after restarting the game and it holds the number of hearts displayed. When i take damage, the number continues to show 99 which is not accurate and if i disable the cheat, it shows the actual number of hearts (less than 99).
HEAP 0x1975f538, 1975f61c, 1975f620

The fourth address is the good one; it holds the proper value, however that address changes every time i restart the game... Upon changing the value in this address, it updates the first 3.
e.g. HEAP 0x231ce9c0, 245e0fd8, 245195a8, etc (new address after every restart)

I don't get any results for MAIN which apparently is more stable...

I'm totally new to memory cheats and need help... Read something about pointers but not sure how they work or if it's applicable here.

Using SX Cheat Code Tool, and a youtube as an example, I created the code but the problem is with the 4th address changing after every game reload. Memory write / Write to HEAP, 32 bit.
[Inf Hearts]
041F0000 1975f538 00000063
041F0000 1975f61c 00000063
041F0000 1975f620 00000063
041F0000 231ce9c0 00000063

My code also does not look like cheats for other builds found in common sites. E.g. I see 63 hex=99 but don't know where the other addresses come from and how to find them
[[99 hearts]
580F0000 019272D0
580F1000 00000018
580F1000 00000020
580F1000 00001130
780F0000 00001EF8
640F0000 00000000 00000063

I don't understand this. I read the guide to SXOS cheat creating but don't understand the concept.

-Can you help me understand a better way to access the 4th address after restarting the game?
-Can you help me understand how to convert my 1 line of code to look similar to the other cheats?

thank you in advance.
 

masagrator

The patches guy
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,035
Country
Poland
Pointer is about finding address in main that has value containing closest address to heap address you want to edit and additionally adding offset if it's not pinpointed.

For example heap address you want to edit is 5010203040506070
In main you find at offset 0x123000 value 5010203040506000
So final address is
[main+123000] + 70

And you need to check after restarting game that this final address still works, because heap addresses can change with each run and main offset may not be consistent in this case, so you need to try different main offsets, because there will be many possible pointers in main to use. Just check tutorials how to use Noexs.
 
Last edited by masagrator,
  • Like
Reactions: H1B1Esquire

Takeru Takaishi

Member
Newcomer
Joined
Aug 27, 2016
Messages
8
Trophies
0
Location
Monterrey, N.L. México
XP
60
Country
Mexico
all base address and dynamic address need to find pointer address

# Code Type 0: Write to memory

0TMR00AA AAAAAAAA YYYYYYYY (YYYYYYYY)

T = width of write (1/2/4/8)
M = memory type (0 = main nso, 1 = heap)
R = register to be added as offset
A = address relative to (M)



I found this code:

[BASE+0x5e579a3d4] (0x121)

but, I don't understand what I should put if it's not 1 (heap) or 0 (main)


If it were HEAP it would be the following code:
[Gold Coins = 9999]
04100005 e579a3d4 0000270F


or if it was MAIN

[Gold Coins = 9999]
04000005 e579a3d4 0000270F



But it's BASE, how can I just write in memory?
 

dsrules

Well-Known Member
Member
Joined
Sep 20, 2005
Messages
8,700
Trophies
2
XP
6,264
Country
# Code Type 0: Write to memory

0TMR00AA AAAAAAAA YYYYYYYY (YYYYYYYY)

T = width of write (1/2/4/8)
M = memory type (0 = main nso, 1 = heap)
R = register to be added as offset
A = address relative to (M)



I found this code:

[BASE+0x5e579a3d4] (0x121)

but, I don't understand what I should put if it's not 1 (heap) or 0 (main)


If it were HEAP it would be the following code:
[Gold Coins = 9999]
04100005 e579a3d4 0000270F


or if it was MAIN

[Gold Coins = 9999]
04000005 e579a3d4 0000270F



But it's BASE, how can I just write in memory?
use pointer tool to find a static pointeraddress if you could use noexs and atmosphere cfw
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3Nv2 @ K3Nv2: Least they got head in the end