From 46227e2003de28202cc4e82bca4f7f4745476c4e Mon Sep 17 00:00:00 2001 From: Alexander Kassouni Date: Sat, 5 Sep 2026 17:51:13 -0700 Subject: init --- docs/index.html | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 docs/index.html (limited to 'docs/index.html') diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..d6a0817 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,101 @@ + + + + + +Animalese pipeline — Animal Crossing (GC) + + + + +

Animalese: the text → speech pipeline

+

How Animal Crossing (GameCube, GAFE01, USA rev 0) turns a +message string into villager babble. Every claim here is traced to a function in the +ac-decomp tree.

+ +

The short version

+ +
+message text  (game charset, 1 byte/char)
+  │
+  │  1. mMsg_sound_voice_get()            256-entry table
+  ▼     char code ──► voice code (0x53–0x86)
+gating + voice selection
+  │  2. mMsg_sound_voice_mode_get()       animalese / click / silent
+  │     mNpc_GetNpcSoundSpec()            speaker ──► spec 2–9
+  ▼     Na_SpecChange()                   spec ──► sequence 243/244/245
+windowing
+  │  3. mMsg_sound_voice_entry()          collect (a, b, c) over two cursor steps
+  ▼     ~1 character per 2 game frames
+draw-time trigger
+  │  4. mFontSentence_animal_voice_se()   glyph scale ──► volume
+  ▼     sAdo_VoiceSe(a, b, c, npc, scale, mode)
+phonology
+  │  5. Na_VoiceSe()                      digraphs, long vowels, silent e
+  ▼     ──► phoneme code 0x01–0x77
+playback
+  │  6. Sou_VoiceStart()                  write port 0 of a JAudio2 subtrack
+  │     sequence dyntbl ──► instrument (code − 1)
+  ▼  7. ProgToVp(bank, inst) ──► NoteToVoice() ──► smzwavetable
+DSP  ──►  one ~190 ms VADPCM sample, 22050 Hz
+
+ +

A phoneme code is literally a soundfont instrument number plus one. The whole +"engine" is a lookup table with about fifty special cases; the character comes almost +entirely from the samples.

+ +

Pages

+ + + +

Scope

+

These pages document the runtime pipeline as decompiled. Extracting the +actual audio samples from a disc image is covered separately in +../extraction.md, which also carries the audio table-of-contents, +bank/sample formats, and VADPCM decoding notes.

+ +
+No game assets here. Everything on these pages is derived from decompiled +source. Reproducing audible animalese needs a legally dumped copy of the game. +
+ +

Verified against ac-decomp at commit 09ca8e8b (DOL and REL 100 % linked).

+ + + -- cgit v1.3.1