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

457 vuciv 103 9/10/2025, 2:59:48 AM joshfonseca.com ↗

Comments (103)

simonw · 1h ago
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.
diamondlove · 4m ago
Who actually did the work of finding this out, though? LLMs are not capable of thought,, so some human, somewhere, had to do this, who you are not crediting.
snet0 · 1m ago
Do you try trick your calculator by entering large sums that it might not have been programmed to answer?
wincy · 7h ago
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?
vuciv · 6h ago
yes, i'd like to try out Animal Crossing New Horizons next! :)
smt88 · 4h ago
LLMs are heavily trained on reddit, and "Tom Nook is a capitalist dictator if you think about it" is a reddit meme. Like many LLM reactions, it's less "thought" and more "regurgitating reddit jokes/opinions".
ameliaquining · 2h ago
Actually, it turns out that this particular plot arc was hardcoded by the developer and does not spontaneously arise from the LLM. https://github.com/vuciv/animal-crossing-llm-mod/blob/cc9b6b...
Topfi · 1h ago
There is something to be said for a comment talking about "regurgitating reddit jokes/opinions", whilst falling into a major bug bear many have with Reddit, commenting before reading the source...
dahcryn · 4h ago
It would be great if this evolved slowly during the progression of the game lol
Topfi · 1h ago
That's essentially what it does, being prompted with a progression from:

> "Stay normal unless prompted. Avoid overt references to debt unless it comes up naturally."

all the way to:

> "Openly agitate for change. Use fiery language (still PG) and talk about reclaiming fairness from Nook's shop and loans."

Source: https://github.com/vuciv/animal-crossing-llm-mod/blob/cc9b6b...

stavros · 2h ago
How can you tell? Either you're saying that LLMs have no "thoughts", and just regurgitate everything, which doesn't explain how they can reason in novel problems, or you're saying you can tell what's original thought and what's regurgitation, in which case I'll ask "how do we know your comment isn't you regurgitating an HN opinion"?
cheschire · 20m ago
Generative AI can reason in novel problems in an analogous way that bands continue to make new melodies even after all these years using the same instruments as all the other bands in their genre.
OtherShrezzing · 1h ago
>which doesn't explain how they can reason in novel problems

Can they?

amilios · 7h ago
Would require decompilation of the Animal Crossing game code for the Switch. I believe DRM has gotten a lot better since the Gamecube days as well. Hypothetically possible maybe but good luck haha
looperhacks · 1h ago
Switch DRM, running custom code and interacting with RAM is a solved problem on the Switch (1). There are some really impressive mods, like a multiplayer implementation for Super Mario Odyssey
vuciv · 6h ago
I actually think now that I've gone through the process, memory scanning and writing will be enough... Except, they probably have different control codes that I'd need to reverse engineer.
bigyabai · 6h ago
You should be able to run Cheat Engine on your emul*tor of choice to tweak New Leaf "and newer" titles.

And if you're a stickler for pissing Nintendo off in very specific ways, LayeredFS + Atmosphere opens up some modding opportunities right on the console itself. Not sure how easy it would be to pull something like this off though...

sterlind · 6h ago
you really don't have to self-censor "emulator" here. HN moderation is not like social media platforms.
lazide · 5h ago
Social media platforms censor emulator?!?
Gigachad · 5h ago
Probably not. But silent deranking of censored terms has everyone paranoid that anything even slightly controversial will get hidden.
bigyabai · 5h ago
I'm just covering my ass. Life is good right now and I don't want to meet any Nintendo ninjas, even for insinuated infractions.

It's not so much a condemnation of HN, but the way IP is in the US. The only website I want hosting my comments on Nintendo modding is my own.

jraph · 4h ago
I doubt a star will make Nintendo lawyers go "ow nose, they didn't spell out emulator in full, we can't attack them! Damn those star armors!". I don't think it changes anything technically.

The only thing this kind of censoring does is countering basic censor bots I think, and somehow making swear words publishable in the US.

stavros · 2h ago
The asterisk would make it so they can't just search for "Nintendo emulator" online and find their comment.

Until I typed this, I guess...

jraph · 1h ago
Few results include "Nintendo emulator". Did you mean "Nintendo emul*tor"?
0points · 4h ago
That's hilarious.

That modder who had to pay 2M sold drm circumvention kits for the Switch. That's a pretty clear case.

You pretending that saying "emulator" on a forum qualifies just makes you a extra special snowflake.

rl3 · 1h ago
>You pretending that saying "emulator" on a forum qualifies just makes you a extra special snowflake.

Says the person going out of their way to attack another person over a single-character asterisk substitution.

Seems fairly understandable to not want to piss off rabid lawyers, however remote the chances of angering them may be.

perching_aix · 4h ago
Yes. Facebook at some point filtered links to them from private messaging. I know this from personal experience. Not sure if they still do.

Also fairly common on Reddit and Discord for communities to ban discussions of them, or even falsely claim they're blanket illegal outright.

dolebirchwood · 6h ago
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.
beckthompson · 4h ago
I'm unsure how useful they'll really be honestly! In many situations its very useful to know when your "done" talking with an NPC when they start repeating lines etc...

There could probably be cool uses but I don't think it will be a pure "upgrade" as the repeating dialog is kind of a feature honestly.

We'll have to see how it pans out xD

mgaunard · 2h ago
It would require a completely different design to video games.

Current video games are designed around streamlining content. As a player, your job is to extract all content from an area before going to the next. That's why most areas are designed as linear corridors so that there is a straightforward progression, and most NPCs interactions are meant to offer something meaningful so as to not waste the player's time.

But imagine if interaction with NPCs wasn't just a content delivery mechanism, but instead could sometimes be rewarding, sometimes useless, dynamically adjusted in how you interact with the world in non-predictable ways.

The player would just waste their time in their usual approach of canvasing each new area, which would become unsustainable. There would be no reliable way of ensuring you've extracted all the content. All he/she could do is roam around more naturally, hoping the glimpses they catch are engaging and interesting enough.

Maybe a new player skill would be to be able to identify the genuine threads of exciting content, be it designed or emergent, within the noise of an AI-generated world.

Realistically though, how do you build an exciting player experience with this framework? A starting point might be to approach it as something more akin to LARP or improvisation theater, you'd give each NPC and player a role they need to fulfill. Whether players actually enjoy this is another thing entirely.

latexr · 37m ago
> But imagine if interaction with NPCs (…) instead could sometimes be rewarding, sometimes useless, dynamically adjusted in how you interact with the world in non-predictable ways.

That’s a slot machine, and the same mechanism which also gets us hooked on social media. Sounds like something which would immediately be exploited by vapid addiction-as-a-feature games à la FarmVille.

> The player would just waste their time in their usual approach of canvasing each new area, which would become unsustainable. There would be no reliable way of ensuring you've extracted all the content.

Sounds frustrating. Ultimately games should be rewarding and fun. Constraints are a feature.

> All he/she could do is roam around more naturally, hoping the glimpses they catch are engaging and interesting enough.

Good reminder to go take a walk outside. Take a train to somewhere we haven’t been. Pick a road we’ve never crossed. We don’t even need a mini map, and sucks that we don’t have teleportation back to base, but we do have a special device which always points the way back.

> Realistically though, how do you build an exciting player experience with this framework? (…) Whether players actually enjoy this is another thing entirely.

Agreed. Though not enjoying it and abandoning it is fine, I’m more worried about people not enjoying it but feeling unable to quit (which already happens today, but I think the proposed system would make it worse).

vidarh · 2h ago
There are many different types of NPCs. Consider e.g. Minecraft villagers, that doesn't have a story-purpose, but do serve functions such as trading that could also be augmented by dialogue details.

But even for story-driven games, you can signal when you're "done" extracting story-related details in various ways, by e.g. prompt the NPC to include dialogue element A,B,C when it fits the conversation, keep track of which were output (you can make it output a marker to ensure it's easy to track even if the dialogue element has been worded differently), and have it get annoyed and tell you it doesn't have more to tell you or similar as the repetition adds up.

heckelson · 4h ago
I guess you could just introduce a Symbol that marks the NPC as "I said everything I have" or gray out their text, or some other visual marker
Terr_ · 3h ago
> a Symbol that marks the NPC

That seems a bit like deck-chairs on the Titanic. The hard part isn't icon design, the hard part is (A) ensuring a clear list exists of what the NPC is supposed to ensure the user knows and (B) determining whether those goals were received successfully.

For example, imagine a mystery/puzzle game where the NPC needs to inform the user of a clue for the next puzzle, but the LLM-layer botches it, either by generating dialogue that phrases it wrong, or by failing to fit it into the first response, so that the user must always do a few "extra" interactions anyway "just in case."

I suppose you could... Feed the output into another document of "Did this NPC answer correctly" and feed it to another LLM... but down that path lies [more] madness.

vidarh · 2h ago
You prompt the LLM to point out that the clue will be added as is to the conversation, but for the LLM to include a marker instead of the actual text to ensure that actual critical details are included unchanged.

EDIT: Also, having the LLM botch a clue occasionally could be a feature. E.g. a bumbling character that you might need to "interrogate" a bit before you actually get the clue in a way that makes sense, and can't be sure it's entirely correct. That could make some characters more realistic.

madaxe_again · 2h ago
No, this is the Einstein/student model that has been proposed for improving LLM output quality.

Basically you have your big clever LLM generating the outputs, and then you have your small dumb LLM reading them and going “did I understand that? Did it make sense?” - basically emulating the user before the response actually gets to the user. If it’s good, on it goes to the user, if not, the student queries Einstein with feedback to have another crack.

https://openai.com/index/prover-verifier-games-improve-legib...

anticrymactic · 3h ago
Or they could just tell you. Imagine talking to someone over and over again. They would tell u to get on with wherever you promised them.
heckelson · 3h ago
oh yeah that's much smarter than what I suggested
Unai · 40m ago
Repeating the last line of dialogue is not just a way to indicate that there's no more dialog, it often also works as a remainder, giving you the most important kernel of information ("You should go to [place] and talk with [npc]"), in case you come some time later and forgot what you were supposed to do. You can indicate there's no more dialog in many ways, but you'd lose that secondary feature. Same thing if the NPC just keeps babbling generated drivel.
ehnto · 6h ago
I would say local LLMs are already good enough for this. It might be an issue that the GPU is already quite busy at the time it's needed for LLM inference, but not an insurmountable issue.

I wouldn't ever want a game to use it for the core story writing, because it's pretty important that it is consistent and unable to be derailed. But for less serious NPC interactions or like an RPG scenario it is such a great fit.

I also wouldn't want a single player game to rely on remote inference, because that will get turned off eventually and then your game doesn't work.

azernik · 16m ago
I think generally, games should move to using the GPU less for graphics and more for computation. Not just AI computation - those fancy GPUs are a big resource that simulation games could be taking advantage of and just... aren't.

(Yes, this is a Paradox callout. Give me less fancy particle effects in Vic3 and use the GPU for computing pop updates faster!)

(Probably the biggest barrier to this is the lack of a convenient C++/C#-level cross-manufacturer compute API. Vulkan is a bit too low-level for game devs to work with, OpenCL kind of sucks, and CUDA is NVIDIA-only.)

mungoman2 · 5h ago
For story writing you generate into the framework of https://news.ycombinator.com/item?id=45134144
malfist · 6h ago
I used to care about repeat scripted dialogue like you, until I took an arrow to the knee
Arisaka1 · 4h ago
Yep. I can see how relying on non-repetitive dialogue generated by LLM's will inevitably make us lose common ground scenarios that end up being memorable moments, like the arrow to the knee from Skyrim or "such devastation! this was not my intention" from Final Fantasy 14. A way to bypass this problem is to keep the important dialogue fixed, but this only one of the problems.

Another issue would be emphasizing the meaninglessness of the dialogue. For example, playing Trails in the Sky has lots of NPC dialogue that's repetitive, but at least the dialogue is relevant with how the NPC's life progresses in the grander scheme of things, such as having difficulty with her entrance exams, or having an argument with his fiancé. It's not main dialogue but adds flavor for anyone who cares about the world enough to interact with the citizens.

I don't think I'd like to interact with characters that I know whatever it is they have to say is generated on the fly and adds nothing other than random tidbits. The novelty would quickly wear off.

vidarh · 2h ago
It doesn't need to be random tidbits. You can add "life events" for the character to the prompt, and steer the responses heavily toward the character wanting to talk about those. With an LLM in the picture, you can even have the character remember past interactions with you, and expand on it different ways depending on how you interacted with them.
maplethorpe · 3h ago
Instead of generating truly random dialogue, you could choose to only generate random seeds within a certain number range, so that the probability that two players seeing the same line of dialogue increases, while still having enough variety for it to feel "random" to a solo user.
latexr · 1h ago
> will inevitably make us lose common ground scenarios that end up being memorable moments, like the arrow to the knee from Skyrim or "such devastation! this was not my intention" from Final Fantasy 14.

GLaDOS from Portal would offer one player pudding and another one a steak. You get to a wall which says “the ravioli is a fraud” and become utterly confused.

ares623 · 3h ago
I agree. An important aspect would be lost. It would be as interesting and relatable as sharing that dream you had last night with your friends. “Uh huh. Cool story bro.”
cubefox · 3h ago
A better application of LLMs could be merely using them as a text parser in text adventures. NPCs could continue to have some hidden, hard coded information or abilities, here stored in the context window, and the LLM is used to provide that information to the the player he (or she) puts in roughly the right words. Rather than exactly the right words.
arkh · 2h ago
> Characters repeating the same scripted dialog over and over again is one of the biggest immersion breakers.

The real immersion breaker and the holy grail of RPG is the fact NPC have no life or goal outside of what the player does. Imagine a game where NPCs have wants and goals and do things to get those done. Where you could leave it running for 10 years and things would have happened without you.

latexr · 1h ago
That’s a nice experiment, but it’s a life simulator and not really a game. There’s little fun in working your way through the first two dungeons and then getting out and being told “no need to go on your epic quest anymore, someone else from the last town beat God and now we’re at peace. Oh, and they got all the powerful artefacts along the way, so there’s literally nothing of interest for you to do anymore. Unless you want to help us plant our crops. That’s what you wanted when you picked Final Fantasy, right? To play a poor version of Harvest Moon instead.”
serp002 · 5h ago
Agreed, this AI-ran DnD campaign is an example of how good/funny it can be.

https://www.youtube.com/watch?v=TpYVyJBmH0g&ab_channel=DougD...

hoskdoug · 3h ago
Imagine finally hearing further dialogue from the Bucket Mouse after all these years.
famahar · 6h ago
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
shomp · 5h ago
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.
eric-burel · 4h ago
Technical question: what guarantees that the memory address is stable? It means that allocations always happen in the same order in the game ?
jbreckmckye · 3h ago
Console games of that era don't usually malloc; they have globals. Entities go into pools / buffers that are allocated ahead of time
mschuster91 · 4h ago
It needs to be a global variable in C. A variable in a function scope or runtime malloc'd spot? No chance of finding a stable spot.

Thankfully, a lot of old games love to use global variables because you can't run out of stack space or allocatable memory. Modern games shy away from that because even the tiniest consoles these days come with gigabytes worth of RAM, even a memory leak has to be a gigantic firehose to bring the system to a halt.

a_t48 · 2h ago
This is a fairly "common" technique for doing multiplayer randomizers. Typically on a smaller region, but you end up with some sort of scratch memory being used as a buffer for messages sent back and forth between the emulator and the network layer (or your flash cart's RAM and the network layer, in the case of FXPakPro!). It's super useful.
rybosome · 6h ago
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.

No comments yet

brookman64k · 4h ago
> 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.

b3lvedere · 4h ago
This is mentioned in the article:

"What About the GameCube Broadband Adapter?

Yes, the GameCube had an official Broadband Adapter (BBA). But Animal Crossing shipped without networking primitives, sockets, or any game-layer protocol to use it. Using the BBA here would have required building a tiny networking stack and patching the game to call it. That means: hooking engine callsites, scheduling async I/O, and handling retries/timeouts, all inside a codebase that never expected the network to exist."

brookman64k · 4h ago
I didn't finish reading the article before commenting. Mea culpa! Maybe it would be possible to use Phantasy Star Online's network stack via the streaming exploit. But that would leave the hooking part.
LeoPanthera · 4h ago
I wonder if you can bitbang an ethernet interface to abuse it into being a serial port.
mrheosuper · 2h ago
At that point why not bit bang any spare GPIO ? like GPIO for 2nd player controller ?
klaussilveira · 1h ago
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.

rgovostes · 4h ago
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.
KeplerBoy · 3h ago
Duolingo has already gone all in on AI.
amilios · 7h ago
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.
adenta · 1h ago
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.
simonw · 1h ago
That's mentioned half way down the article - search for "What About the GameCube Broadband Adapter?".
wodenokoto · 2h ago
What is the in-game context that decides what dialogue is used? Or do they just choose at random from a dialogue bank?
Cyphus · 2h ago
Outside of holidays and special events, they do indeed choose randomly from a dialogue bank. There’s actually multiple dialogue banks, one for each villager personality type.
VagabundoP · 2h ago
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/

larodi · 1h ago
The memory box part is the real hackers delight here. Thanks for taking the time to share this with us:)
Nition · 6h ago
I've thought for a while that the ideal old game for this kind of conversion would be Starship Titanic.
b3lvedere · 5h ago
That's a game name i haven't heard in ages. :)
vunderba · 6h ago
Nice job! Seems like a good use-case for the random Mii avatars milling about in the Mii Plaza on the original Nintendo Wii.
b3lvedere · 5h ago
This is awesome! I'd love lots of screenshots with more funny dialogs. :)
foota · 6h ago
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.,?

bryanhogan · 5h ago
This is amazing! Would have loved to see more gameplay!
sardonyx001 · 7h ago
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.
Master_Odin · 5h ago
In terms of changing loot box contents, that has been going on for at least the past like 7+ years through "randomizers", though I think mostly used by speed runners.
aledalgrande · 6h ago
I love this. Great skill and also hilarious!
nurettin · 7h ago
Apart from the memory hacking, I also appreciate how he fully typed his python code. (as in foo: Optional[Dict[str, int]])
tehmillhouse · 1h ago
Interesting and well-executed. But why does the blog post read like it was written by fucking chatgpt?!
_joel · 1h ago
Maybe it was, given the context of the post.
adt · 5h ago
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

endymion-light · 2h ago
I love this project.
adammenges · 7h ago
Great work!! Very clever.
galacticaactual · 6h ago
Very cool, nice work!
maxwelljoslyn · 7h ago
This rules!
Razengan · 1h ago
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"

loliver666 · 3h ago
'A woman was killed in a blue city' disgusting tbh why involve this?
ameliaquining · 2h ago
Presumably the author encountered it by accident and then thought it was an amusing contrast with the Animal Crossing setting.
loliver666 · 2h ago
Yes I get it the LLM is trained on current news. But it's in very poor taste for the author to post that screenshot.
thrance · 2h ago
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.
hrdwdmrbl · 7h ago
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.

lmm · 6h ago
Many games have tried for more "realistic" simulated NPCs, but usually it turns out they don't make the game any more fun, quite the opposite.
ehnto · 6h ago
The cost benefit is really poor, but I also wonder if it's just never been done well.

Old text adventures honestly did this heaps better than modern games do, but the reality is there was a more finite action space for them and it wasn't surprising when something wasn't catered for.

theshackleford · 5h ago
Which games are these? I’d be interested in checking them out.

I’m only aware of experimentation in making more “difficult” NPC AI which was found less enjoyable for obvious reasons, so would be interested to see why similar but different attempts down another path also failed.

anon7000 · 6h ago
Kingdom Come Deliverance 2 is one of the closer attempts, NPCs will react to lots of things about you and behavior, like if you smell bad or stare at them for too long
dclowd9901 · 5h ago
I was so surprised in BotW and TotK to see NPCs duck, huddle, gasp and otherwise react to odd shit you might be doing. Also in dialogue, do contextual things like talk about the weather and time.

I would love to see a Zelda game implement LLM dialogue for random inconsequential dialogue or relating dialogue to the game context.