I'm not really researching cheats, but save game content. Cheats are too restrictive to do some of the things you need to ensure you don't get bad items or overwritten items. Also, since the Switch supports Dynamic Memory Allocation, basically every time you load your save it could be in a different spot in memory. Computers aren't completely random though, so if you were to load your save and reboot 100 times, you may notice that the same 8 possible addresses keep showing up. For simple cheats that don't make use of pointers to find the proper address consistently you're just relying on luck that your memory layout is the one that the code maker had. I'm not really interested in doing the research to find the pointers since even if I found them the cheat codes can't do the complex stuff I need it to do.Thank you very much, that makes sense I guess though I am unsure how exactly I managed to do that although it is certainly possible. I noticed you have been doing allot of research on cheats for this game, do you have any idea why the cheats are so temperamental to activate? I have not been able to get them to work in the past couple of days, I would do the usual routine of Rebooting switch, loading game and game save, head to Edizon and activate relevant cheats, max slot for example, and the refuse to activate? I read a few pages back Meko's theory about RAM limit's, is that the case? are there any more reliable workarounds?
Here is an example:
Code:
def addToInventory(filepath, inv_addr, item_list, item_type, item_qty):
try:
with open(filepath, 'rb+') as f:
f.seek(inv_addr)
while 1:
occupied = f.read(4)
if int.from_bytes(occupied, 'little') & 1 == 1:
f.seek(20,1)
continue
f.seek(-4,1)
break
index = 0
while index < len(item_list):
occupied = f.read(4)
if int.from_bytes(occupied, 'little') & 1 == 1:
f.seek(20,1)
continue
f.seek(-4,1)
f.write(0x3F800001.to_bytes(4, 'little'))
f.seek(4,1)
f.write(int(item_type).to_bytes(4, 'little'))
f.write(item_list[index].to_bytes(4, 'little'))
f.write(item_list[index].to_bytes(4, 'little'))
f.write(int(item_qty).to_bytes(4, 'little'))
index += 1
return 0
except:
return 1
Code:
accessories = [10101, 12401, 10201, 12501, 10301, 10302, 12601,
10401, 10501, 10502, 12701, 12702, 12801,
12901, 13001, 10701, 10801, 10901, 10902,
13101, 13102, 13201, 11001, 11101, 13301,
13401, 11201, 11301, 13501, 11401, 11402,
11403, 13601, 11501, 11601, 13701, 13801,
13901, 11701, 11702, 11703, 14001, 14101,
11801, 11802, 14201, 11901, 12001, 12002,
12003, 14301, 12101, 12102, 12103, 14401,
14402, 14501, 12201, 12301, 12302, 12303]
Code:
DO NOT RUN THIS, IT IS AN EXAMPLE, UNTESTED CODE TO MAKE A POINT
11150000 0d858860 00000001
78000000 00000018
20000000
11150000 0d858860 00000000
01100000 0d858860 3f800001
01100000 0d858868 00000005
01100000 0d85886C 00002775
01100000 0d858870 00002775
01100000 0d858874 00000063
01100000 0d85887C 3f800001
01100000 0d858884 00000005
01100000 0d858888 00003071
01100000 0d85888C 00003071
01100000 0d858890 00000063
01100000 0d858894 3f800001
01100000 0d85889C 00000005
01100000 0d8588A0 000027D9
01100000 0d8588A4 000027D9
01100000 0d8588A8 00000063
01100000 0d8588AC 3f800001
01100000 0d8588B4 000030D5
01100000 0d8588B8 000030D5
01100000 0d8588BC 000030D5
01100000 0d8588C0 00000063
01100000 0d8588C4 3f800001
01100000 0d8588CC 0000283D
01100000 0d8588D0 0000283D
01100000 0d8588D4 0000283D
01100000 0d8588D8 00000063
40000000 00000000 00000000
20000000
Last edited by DocKlokMan,