I replaced Animal Crossing's dialogue with a live LLM by hacking GameCube memory
joshfonseca.com860 points by vuciv 4 days ago
860 points by vuciv 4 days ago
https://github.com/vuciv/animal-crossing-llm-mod
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... I think it's funny how goblin mode this whole hack is. The memory scanner itself was clearly written by an LLM (using python??) and the way this person goes about hacking the game is very non-reverse engineer but instead someone equipped with very capable tools. No shade to the dude to be clear, I think it's sort of incredibly how possible this stuff is now due to LLMs and doesn't require someone to know how to use Ghidra. AND ALSO - the Gamecube did actually have networking through a barely used peripheral (though I knew and loved it through Phantasy Star Online Episode 1&2):
https://gc-forever.com/wiki/index.php?title=Broadband_Adapte... The author addresses the BBA and says he didn't use it because the game was built without networking sorry, so having that in would have been harder. Wrote up a few more notes on my blog https://simonwillison.net/2025/Sep/10/animal-crossing-llm/ > Those <Pause [0A]> tokens cause the came to pause for a few moments before ... Should be "cause the game to pause" :) [flagged] I've seen this argument plenty of times with respect to LLMs writing code, but this is the first time I've seen someone roll it out for using an LLM to answer questions about code that is being fed into it as input! Do you try trick your calculator by entering large sums that it might not have been programmed to answer? 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? I also want to overthrow Tom Nook. He traps you (and one presumes) all of the rest of the villagers in a vicious cycle of debt, and can only be satiated by millions of bells. To be fair to Tom Nook, the interest rate on those loans is 0% and there's no risk of being foreclosed upon! Tom Nook didn't need a down payment either. But also - you cannot turn down his loans. Pay off one, just showing up in his proximity saddles you with another one. That's more protection racket than bank loan. Also in real life, you make 0 dollars catching beetles and fish in Hawaii. This sounds vaguely, achingly familiar. I can't put my finger on it, but I think I've had this experience. 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". 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... 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... I read the Github landing page. I have no interest in reading the entire source of the project, especially since I don't plan to run it. It would be great if this evolved slowly during the progression of the game lol 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... > Like many [human] reactions, it's less "thought" and more "regurgitating reddit jokes/opinions" Thankfully, I am in my 30s, and I don't have to interact with anybody in real life who mostly regurgitates Reddit jokes. Either I'm lucky or I've made some good choices. Probably the former. > I am in my 30s Now I'm kinda curious what age cohort is most likely to be Reddit memers Do you think 30s is peak Reddit, yet you manged to be a lucky outlier? Or that peak Reddit skews older/younger and you're of a lucky age? As an older Millennial in my 40s, I see this a lot in my 35-43 friend group. And always figured peak Reddit was younger Millennials (now in their 30s). Might depend on what subs I suppose. 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"? > Either you're saying that LLMs have no "thoughts", and just regurgitate everything I am exactly saying that they have no thoughts or even "thoughts". > which doesn't explain how they can reason in novel problems There are many decades of pre-LLM software that can solve novel problems. Thought (or novel thought) is required to reason, but it's not required to solve a problem. For example, there are exhaustive algorithms that can solve novel equations and even complete simple mathematical proofs, but they don't need to think. > "how do we know your comment isn't you regurgitating an HN opinion"? You don't, and I don't care if you do or not. The value of my comment isn't its novelty or whether it's truly reasoned, which is why LLMs sometimes do create valuable output. In fact, the output of a reasoning machine (whether a human brain or true AGI, sometime in the future) isn't deterministic. A non-reasoning machine and a reasoning machine could create the same output. The reason I know LLMs don't have thoughts is because I use them many times every day, and they are very clearly pattern machines. They don't even begin to seem rational, human, or knowledgeable. It's sometimes possible to find near-verbatim sources for their outputs. As far as I know, no current gen model AI "thinks". It's all processes trained against a body of work generated by actual thinkers along with a bevy of smoke and mirrors to fill in the gaps. It's amazing that it's as good as it is given how far it is from thinking, but if you threw something actually novel at it, all it would do is confidently word salad a response. 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. Can you blame them when he has an iron grip on the whole town like a mafia crime lord but somehow even more evil. 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 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. 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... I think my 'old man shakes fist at clouds' thing is this. The social media platforms that censor you do it to make your content easier to sell ads against. It's actual corporate badthink correction that is rebuilding the English language. STOP VOLUNTARILY DOING IT WHEN YOU DONT HAVE TO. You should not sacrifice your free thought on the altar of quarterly results. Say the whole fucking word. you really don't have to self-censor "emulator" here. HN moderation is not like social media platforms. Social media platforms censor emulator?!? Probably not. But silent deranking of censored terms has everyone paranoid that anything even slightly controversial will get hidden. 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. 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.
simonw - 3 days ago
So the user gets a "press A to continue" button and hopefully the LLM has finished by the time they press that button. loading_text = ".<Pause [0A]>.<Pause [0A]>.<Pause [0A]><Press A><Clear Text>"
write_dialogue_to_address(loading_text, addr)
kkukshtel - 3 days ago
jdboyd - 2 days ago
simonw - 3 days ago
SpikedCola - 3 days ago
diamondlove - 3 days ago
simonw - 3 days ago
snet0 - 3 days ago
wincy - 3 days ago
RajT88 - 3 days ago
johnzim - 3 days ago
isk517 - 3 days ago
RajT88 - 3 days ago
all2 - 3 days ago
smt88 - 3 days ago
ameliaquining - 3 days ago
Topfi - 3 days ago
smt88 - 3 days ago
dahcryn - 3 days ago
Topfi - 3 days ago
ricardobeat - 3 days ago
throw4847285 - 3 days ago
jtuple - 3 days ago
stavros - 3 days ago
smt88 - 3 days ago
BizarroLand - 3 days ago
cheschire - 3 days ago
ericzawo - 3 days ago
amilios - 3 days ago
vuciv - 3 days ago
bigyabai - 3 days ago
idiotsecant - 3 days ago
sterlind - 3 days ago
lazide - 3 days ago
Gigachad - 3 days ago
bigyabai - 3 days ago
jraph - 3 days ago