This project aims to enhance the gameplay experience of Animal Crossing: Wild World by enabling villagers to genuinely respond to letters sent by players. The system consists of two main components: a client (a DS homebrew application) and a server (responsible for generating responses).
The system works as follows:
- The client reads the letters sent by the player from the game's save memory.
- The server generates personalized responses based on the villager's personality and the content of the player's letter.
- The client injects the generated response into the game's memory, replacing the player's letter to prevent duplicate responses.
As a user you only need to install the client on your console. You also need to configure your client with the ac.txt file described below.
To use the server, you have to know a running Antoine server by it's address.
A DS homebrew application that:
- Reads and writes memory to interact with the game's save data.
- Communicates with the server to fetch generated responses.
- Requires configuration via a file named
ac.txtlocated alongside the homebrew on the DS's SD card. The file must be formatted as follows:<server> # Remote server address <port> # Remote server port <lang> # Language for villager responses (Supported: english, french) <launcher> # true/false - On NDS: Launch AC:WW with nds-bootstrap (required) / On 3DS: Launch the title in the ROM section below, it can be nds-bootstrap frontend or a version of the game installed via nds-forwarder <bootstrapNDS> # Path to nds-bootstrap executable (only available on NDS), set to empty line on 3ds <bootstrapINI> # Path to nds-bootstrap configuration file (only available on NDS), set to empty line on 3ds <rom> # On NDS: Path to the AC:WW ROM file on nds / On 3DS: Title id of nds-bootstrap frontend or AC:WW via nds-forwarder <save> # Path to the AC:WW save file <empty line > # The file must end with an empty line - Requires an active internet connection to communicate with the server. This connection must be configured beforehand.
- Download the
3ds.zipfile from the latest release. - Extract the archive and place the
Antoinefolder into the3dsdirectory on your console's SD card. - Place the
ac.txtconfiguration file inside theAntoinefolder. Ensure it is formatted as described above.
- Download the
nds.zipfile from the latest release. - Extract the archive and locate the
.ndsfile inside. - Place the
.ndsfile alongside your other.ndsfiles on your flashcard or SD card. - Place the
ac.txtconfiguration file inside the same folder. Ensure it is formatted as described above.
A backend system that:
- Processes requests from the client.
- Generates villager responses using a language model (currently Mistral, with plans for a local CPU-based model).
- Requires the following environment variables to function correctly:
GIN_MODE: Specifies the mode in which the server operates (release).PORT: Defines the port on which the server listens for incoming connections.API_KEY: Contains a valid Mistral API key for accessing themistral-small-latestmodel.
The server requires a file named prompt.txt located in its directory. This file contains the prompt template sent to the language model. The template must use the following placeholders in this specific order:
%s: Town name%s: Villager description%s: Receiver's name%s: Attachment name ("No package" will be inserted if there is no attachment)%s: Letter content from the player%s: Tone to use%s: Language
The placeholders will be dynamically replaced with the appropriate values during runtime. Ensure the prompt is crafted to guide the language model in generating accurate and immersive responses.

