I replaced Animal Crossing's dialogue with a live LLM by hacking GameCube memory

(joshfonseca.com)

Comments

simonw 10 September 2025
Here's the code: https://github.com/vuciv/animal-crossing-llm-mod

I was intrigued as to how it would intercept a conversation and then pause the game for long enough for the LLM to return a response, so I used https://gitingest.com/vuciv/animal-crossing-llm-mod to dump the 40,000 tokens into Claude Opus 4.1 and asked it: https://claude.ai/share/66c52dc8-9ebd-4db7-8159-8f694e06b381

The trick is the watch_dialogue() function which polls every 0.1 seconds and then answers with placeholder text: https://github.com/vuciv/animal-crossing-llm-mod/blob/cc9b6b...

  loading_text = ".<Pause [0A]>.<Pause [0A]>.<Pause [0A]><Press A><Clear Text>"
  write_dialogue_to_address(loading_text, addr)
So the user gets a "press A to continue" button and hopefully the LLM has finished by the time they press that button.
wincy 10 September 2025
That's hilarious that you give the villagers thought and the first thing they want to do is overthrow Tom Nook. If this works in Gamecube on an emulator, surely it'd be possible to make it work on the Switch emulators as well?
dolebirchwood 10 September 2025
This is awesome. LLM-powered NPCs is one thing I'm most excited about in the future of gaming. Characters repeating the same scripted dialog over and over again is one of the biggest immersion breakers.
famahar 10 September 2025
Extremely interesting use case. LLMs as a modding tool to recontexualize virtual spaces. I can see this being a tool used for artistic intervention in the same vein as plunderludic tools like Unity Hawk which allows you to run emulator save states in Unity3D. https://plunderludics.github.io/tools/unityhawk.html
amilios 10 September 2025
There's something about taking old games and injecting new life into them that just seems so fun and exciting! Also very interesting to know that the Animal Crossing codebase has been decompiled into readable C code. Fascinating! So many opportunities to mess with it.
shomp 10 September 2025
This is amazing. Well done figuring out the shared memory hack. That's a huge time saver and really makes sense from an engineering perspective. Ten dollars for the hammer and five thousand for knowing where to strike the machine, to paraphrase a trope on expertise applied correctly.
rybosome 10 September 2025
The idea of giving every character this sort of agency and seeing what opinion builds up about the world is incredibly fascinating.

Depending on how well we assume an LLM would do at this task, it’s an interesting way to see what “real people” would think about a very hypothetical situation.

brookman64k 10 September 2025
> The game runs on a Nintendo GameCube, a 24-year-old console with a 485 MHz PowerPC processor, 24MB of RAM, and absolutely no internet connectivity.

In fact, Nintendo did release an official add-on called the Broadband Adapter, which plugged into the bottom expansion port and provided an Ethernet jack. Only a handful of games supported it, one was Phantasy Star Online. I also used it to stream games/roms from a PC. This worked by exploiting a memory vulnerability in Phantasy Star Online to load arbitrary code over the network, though with slower load times compared to running from disc.

rgovostes 10 September 2025
Many years ago there was a project in which researchers swapped localization strings to turn The Sims and Grim Fandango into language practice experiences. Generative dialog that is contextual and skill-appropriate dialog could also be a killer application for language practice.
tantalor 10 September 2025
Am I missing something, or does this not react to any in-game events? So the generated text could have been done offline or using some batch process.

The online generation is neat... but not necessary or important?

Replacing the polling with a lookup table would significantly improve the performance, and be much simpler.

nurettin 10 September 2025
Apart from the memory hacking, I also appreciate how he fully typed his python code. (as in foo: Optional[Dict[str, int]])
aucisson_masque 11 September 2025
To me LLM are one of the greatest advancement in gaming. I don’t understand how there isn’t already any big game that’s using it to have ‘live’ npc.

It would make single player game so much more alive, even railroaded one like red dead redemption because the npc could adapt more easily to what you just did, how you behave in game and so on.

Games are already demanding on gpu, running a very tiny local LLM and only when people interact with npc wouldn’t require so much power.

I’m sure there are issues which explain why it’s not already being used but the first one to do it will be remembered.

b3lvedere 10 September 2025
This is awesome! I'd love lots of screenshots with more funny dialogs. :)
vunderba 10 September 2025
Nice job! Seems like a good use-case for the random Mii avatars milling about in the Mii Plaza on the original Nintendo Wii.
Nition 10 September 2025
I've thought for a while that the ideal old game for this kind of conversion would be Starship Titanic.
foota 10 September 2025
I wonder if it supports Resetti :-)

But also, why couldn't you look at the code to find the addresses used for dialogue? If it's already disassembled I would think you could just look at the addresses used by the relevant functions/set a breakpoint etc.,?

iam_saurabh 10 September 2025
This feels like the future of gaming: community-driven mods where AI brings infinite new dialogue and quests. Imagine if Nintendo leaned into this instead of fighting mods.
hrdwdmrbl 10 September 2025
It always felt both "a cheap shot" and "valid" to express dismay that characters in video games don't react when you do things like jump up and down on their table.

While it's impossible for game developers to write code to cover every situation, AI could make general reactions possible.

It's surprising that really simple things like this haven't been tried yet (AFAIK!). Like, even if it's just the dialogue, it can still go a long way.

klaussilveira 10 September 2025
Somewhat related. Quake 3 bot chat with LLMs: https://www.youtube.com/watch?v=BeyvvQOPlhM

https://github.com/jmarshall23/Quake3LLM

jmarshall23 is a beast, with tons of interesting id tech-based projects.

bryanhogan 10 September 2025
This is amazing! Would have loved to see more gameplay!
wodenokoto 10 September 2025
What is the in-game context that decides what dialogue is used? Or do they just choose at random from a dialogue bank?
VagabundoP 10 September 2025
I love projects like this. And I love my OG Game Cube - time to dust it off from the attic and put it pride of place.

LLMs in games is something I excited about.

The evil subtext in Animal crossing:

https://lparchive.org/Animal-Crossing/

n1b0m 10 September 2025
adenta 10 September 2025
Doesn’t the GameCube already have a network interface? Like something called phantasy star online used it for internet, and you can connect multiple GameCubes for 16 player Mario kart I believe.
magic_hamster 10 September 2025
One thing I didn't quite understand from the writeup is how do you how much space you have in the memory "mailbox" for text. What is your maximum text length?
AfterHIA 10 September 2025
It'd be cooler if someone hacked the game so parents could remotely/secretly play as villagers like marionettes.
sardonyx001 10 September 2025
This is so cool. It opens up a whole new dimension to messing with old video games where AI can change things like how characters move, loot box contents etc.
brianf0 10 September 2025
This brings me such joy, thanks for sharing.
aledalgrande 10 September 2025
I love this. Great skill and also hilarious!
larodi 10 September 2025
The memory box part is the real hackers delight here. Thanks for taking the time to share this with us:)
thrance 10 September 2025
That's super cool! Really funny how quickly they turned into stereotypical country dwellers: mainly spending their times gossiping about each others or getting all worked-up on right-wing propaganda about places they'll never go to.
adammenges 10 September 2025
Great work!! Very clever.
endymion-light 10 September 2025
I love this project.
galacticaactual 10 September 2025
Very cool, nice work!
tehmillhouse 10 September 2025
Interesting and well-executed. But why does the blog post read like it was written by fucking chatgpt?!
Razengan 10 September 2025
This is what I and I'm sure many other gamers/gamedevs thought when LLMs/ChatGPT first came on the scene:

Dynamically-generated dialogue. Device-local models designed for games could be trained on the game's lore and given a different style for each NPC, and react to the player's random actions instead of blurting out canned responses each time.

I'm sure if the genre-starting veterans like Richard Garriott or Roberta Williams were still active in the industry they'd definitely want to use something like this. Imagine a King's Quest or Monkey Island where you could literally type or try anything and get a relevant response! instead of just "nope"

maxwelljoslyn 10 September 2025
This rules!
adt 10 September 2025
The kind of thing we were doing many years ago.

Here's the big one that made the rounds in Feb/2021:

OpenAI GPT-3 Powered NPCs: A Must-Watch Glimpse Of The Future (Modbox)

https://youtu.be/jH-6-ZIgmKY