ROM Hack Discussion Animal Crossing: New Horizons -- Reverse Engineering, Glitches, Bugs, etc. thread!

SciresM

Developer
Developer
Joined
Mar 21, 2014
Messages
973
Trophies
3
Age
33
XP
8,294
Country
United States
I updated the mystery island villager cheats.

I tested and it works for me on 1.2.0.

Examples:
[Press L to turn mystery island villager into Audie]
80000040
08100000 3F292AC4 00000032 316C6F77
04100000 3F292BD4 00000022
20000000

[Press L to turn mystery island villager into Raymond]
80000040
08100000 3F292AC4 00000033 32746163
04100000 3F292BD4 00000004
20000000

The format for arbitrary villager is:
[Press L to turn mystery island villager into ?]
80000040
08100000 3F292AC4 000000XX XXXXXXXX
04100000 3F292BD4 000000YY
20000000

XX = Villager identifier. This can be found in NHSE, for example raymond is "cat23".

cat23 is ascii string 63 61 74 32 33, but the cheat stores the value backwards (due to endianness), so the XX becomes
00000033 32746163.

The YY is the species value, also visible in NHSE. Cat is species 4, so YY is 04.
 

iViperz

Well-Known Member
Member
Joined
Jan 7, 2015
Messages
221
Trophies
0
Age
29
XP
340
Country
(Still laughing at people calling it the Curt code; I basically picked him at random.)

Would you be able to explain breakdown of your X-Villager in place of Curt (Amiibo) code?
I gathered this breakdown but how would I change Curt's Amiibo?

Code:
[Animal in place of Curt (Amiibo)]
08100000 474856C4 0000XXXX XXXXXX01
 
Last edited by iViperz,

Mopquill

Grumpy Developer
Developer
Joined
Oct 16, 2011
Messages
283
Trophies
0
XP
566
Country
United States
I updated the mystery island villager cheats.

I tested and it works for me on 1.2.0.

The format for arbitrary villager is:
[Press L to turn mystery island villager into ?]
80000040
08100000 3F292AC4 000000XX XXXXXXXX
04100000 3F292BD4 000000YY
20000000

XX = Villager identifier. This can be found in NHSE, for example raymond is "cat23".

cat23 is ascii string 63 61 74 32 33, but the cheat stores the value backwards (due to endianness), so the XX becomes
00000033 32746163.

The YY is the species value, also visible in NHSE. Cat is species 4, so YY is 04.

This is a text snippet I have saved:
Code:
For example I wanted Audie and she's a wolf, wolves are species ID 22 from the github, I checked in the save editor that Audie is "wol12", 1low is the first part which comes out as 316C6F77, 2 is just 32, so all together it's:

04100000 3F9DBBBC 00000022 "Species ID"
04100000 3F9DBAAC 316C6F77 "Villager ID 1"
04100000 3F9DBAB0 00000032 "Villager ID 2"

I made codes for multiple different villagers and it works perfectly.
Is that first line entirely unnecessary / things are safe without it? Let me know if you're sure. In the meantime, I'm updating my generator to generate just the second and third lines.


EDIT: Never mind, I'm a dope. Just noticed the extra 4 bytes.
 
Last edited by Mopquill,

SciresM

Developer
Developer
Joined
Mar 21, 2014
Messages
973
Trophies
3
Age
33
XP
8,294
Country
United States
This is a text snippet I have saved:
Code:
For example I wanted Audie and she's a wolf, wolves are species ID 22 from the github, I checked in the save editor that Audie is "wol12", 1low is the first part which comes out as 316C6F77, 2 is just 32, so all together it's:

04100000 3F9DBBBC 00000022 "Species ID"
04100000 3F9DBAAC 316C6F77 "Villager ID 1"
04100000 3F9DBAB0 00000032 "Villager ID 2"

I made codes for multiple different villagers and it works perfectly.
Is that first line entirely unnecessary / things are safe without it? Let me know if you're sure. In the meantime, I'm updating my generator to generate just the second and third lines.

EDIT: Never mind, I'm a dope. Just noticed the extra 4 bytes.

The old cheat used two 32-bit writes to write a 64 bit value.

The cheat I posted uses a single 64-bit write instead, yeah.
 

Mopquill

Grumpy Developer
Developer
Joined
Oct 16, 2011
Messages
283
Trophies
0
XP
566
Country
United States
The old cheat used two 32-bit writes to write a 64 bit value.

The cheat I posted uses a single 64-bit write instead, yeah.
Awesome, thanks so much for updating the code. I've updated my generator accordingly, and I've redone the logic to use a proper 64-bit code for the first line. I didn't even notice last time that two of the addresses were sequential 4-byte addresses. :rofl2:

For anyone else reading this, I've also added key activators for the villager cheats. :D

Threw you in the credits, as well. :)

Sample: https://mpql.net/tools/acnh/codes/?code=villager&villager-id=cat23&villager-keys[l]=y
 

SciresM

Developer
Developer
Joined
Mar 21, 2014
Messages
973
Trophies
3
Age
33
XP
8,294
Country
United States
Awesome, thanks so much for updating the code. I've updated my generator accordingly, and I've redone the logic to use a proper 64-bit code for the first line. I didn't even notice last time that two of the addresses were sequential 4-byte addresses. :rofl2:

For anyone else reading this, I've also added key activators for the villager cheats. :D

Threw you in the credits, as well. :)

Sample: https://mpql.net/tools/acnh/codes/?code=villager&villager-id=cat23&villager-keys[l]=y

No problem, glad the generator's updated :)

An irl friend wanted raymond so I figured I'd update the cheat while helping them.
 
  • Like
Reactions: Mopquill

OblivionReign

Developer
Developer
Joined
Apr 23, 2016
Messages
2,548
Trophies
2
XP
7,741
Country
Japan
Can someone tell me why non of the cheats in this file work?
well the second or third code for sure with the nook mile codes is completely missing one of the characters on every single line... Just from first glance

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

Can someone tell me why non of the cheats in this file work?
And the rest all seem to have too many characters in each line lol
 

zenoobishgamer

Member
Newcomer
Joined
May 10, 2016
Messages
12
Trophies
0
Age
25
XP
102
Country
well the second or third code for sure with the nook mile codes is completely missing one of the characters on every single line... Just from first glance

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


And the rest all seem to have too many characters in each line lol
i used the code generator for it.. ill have a look at code anatomy and see if it works but some of the later codes are from this thread so no clue why they dont work. Thank you!
 

OblivionReign

Developer
Developer
Joined
Apr 23, 2016
Messages
2,548
Trophies
2
XP
7,741
Country
Japan
i used the code generator for it.. ill have a look at code anatomy and see if it works but some of the later codes are from this thread so no clue why they dont work. Thank you!
Well you can see the entire third column on the first code has 9 characters when it should have 8

The second code has 9 characters when it should have 8 in the fourth column.

The third code on the last column also has nine characters and not even the right item ID.
 

FabioCapela

Well-Known Member
Member
Joined
Jul 12, 2007
Messages
309
Trophies
1
XP
1,259
Country
Brazil
These are great! thanks for the code and the hard work :)

Quick question: do i have to use the Curt amiibo?

For that specific code? Yes. You would need to change the address (474856C4 in the heap) in order to replace a different Amiibo. In any case it would need to be an Animal Crossing Amiibo (the only ones that seem to be properly read by the game), and preferably one of the Villager ones (as I'm not sure making a non-villager Amiibo summon a villager won't cause issues).

I can find the address for a different Animal Crossing Amiibo if you want. Just don't expect a quick response.

Another way would be to make a code that writes that value 473 times, spaced 0x1C bytes apart, starting at HEAP+0x474852F0 and ending at HEAP+0x47488690; this would make every single Animal Crossing Amiibo summon the code-defined villager, but it's such a blunt approach I can't guarantee it won't have side-effects. For starters, you would need to restart the game in order to use any other Amiibo.
 

Mopquill

Grumpy Developer
Developer
Joined
Oct 16, 2011
Messages
283
Trophies
0
XP
566
Country
United States
At any time before you scan the amiibo; if the villager has already been summoned, then it's too late to use the code for that day. The code remains active until you restart the game (or overwrite it with a different code swapping Curt).

It's a packed structure, so there's more data around; I could either include bytes from before the ID or after the ID, so I went with the option that allowed me to align the code to the nearest 4-bytes multiple.

BTW, if anyone wants to know how I made the code: I extracted the game files (using NXDumpTool as it allows me to navigate the already patched RomFS and only dump what I need), opened Bcsv/AmiiboData.bcsv in Toolbox, picked a villager amiibo at random, used SXOS to find where in memory it was, and created a code to replace the villager ID string for that amiibo.

(Still laughing at people calling it the Curt code; I basically picked him at random.)
If you're not opposed, I can add a "Curt code" bit to my villager generator. :)
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
    SylverReZ @ SylverReZ: @K3Nv2, Lol K3N1.