diff options
| author | Alexander Kassouni <alex@kassouni.net> | 2026-09-05 17:51:13 -0700 |
|---|---|---|
| committer | Alexander Kassouni <alex@kassouni.net> | 2026-09-05 17:51:13 -0700 |
| commit | 46227e2003de28202cc4e82bca4f7f4745476c4e (patch) | |
| tree | fe450ac33ffa13747613c3cfdf36ea24b3036c46 /docs/index.html | |
init
Diffstat (limited to 'docs/index.html')
| -rw-r--r-- | docs/index.html | 101 |
1 files changed, 101 insertions, 0 deletions
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 @@ +<!doctype html> +<html lang="en"> +<head> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<title>Animalese pipeline — Animal Crossing (GC)</title> +<link rel="stylesheet" href="style.css"> +</head> +<body> + +<h1>Animalese: the text → speech pipeline</h1> +<p class="lede">How <em>Animal Crossing</em> (GameCube, <code>GAFE01</code>, USA rev 0) turns a +message string into villager babble. Every claim here is traced to a function in the +<a href="https://github.com/Prakxo/ac-decomp">ac-decomp</a> tree.</p> + +<h2>The short version</h2> + +<pre> +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 +</pre> + +<p>A phoneme code is literally a <strong>soundfont instrument number plus one</strong>. The whole +"engine" is a lookup table with about fifty special cases; the character comes almost +entirely from the samples.</p> + +<h2>Pages</h2> + +<ul class="toc"> + <li><a href="gating.html">1. Gating & voice selection</a> + <span>When animalese plays at all, and which of the three voices you hear. + Specs 2–9, the click fallback, and the player's own voice.</span></li> + + <li><a href="encoding.html">2. Text → voice code</a> + <span>The game's character set, the 256-entry voice table, case folding, + accent folding, and the eight punctuation codes.</span></li> + + <li><a href="scheduling.html">3. Windowing & timing</a> + <span>How three characters get bundled into one call, why it fires from the + font renderer, and the every-other-frame cursor.</span></li> + + <li><a href="phonology.html">4. The phonology engine</a> + <span><code>Na_VoiceSe</code> in full: the 55-entry digraph table, short/long + vowel tables, silent e, magic e, and punctuation flush.</span></li> + + <li><a href="playback.html">5. Playback</a> + <span>Sequences, banks, the two alternating subtracks, per-spec timbre, + the emotion LFO, and the deferred second syllable.</span></li> + + <li><a href="soundfont.html">6. The soundfont lookup</a> + <span>Sequences, banks and instruments as data: the four archive tables, the + bank blob, load-time relocation, and where the PCM actually lives.</span></li> + + <li><a href="editor.html">7. The editor path</a> + <span>Mode 1 — an undocumented third calling convention that bypasses + phonology entirely, and what it says about samples 0x53–0x76.</span></li> + + <li><a href="quirks.html">8. Quirks, dead code & corrections</a> + <span>The dead volume store, the tautological dedup, vestigial mouth-shape + tracking, and corrections to earlier notes.</span></li> + + <li><a href="reference.html">9. Reference tables</a> + <span>Everything in one place: voice codes, digraphs, phoneme tables, + control codes, source line index.</span></li> +</ul> + +<h2>Scope</h2> +<p>These pages document the <em>runtime</em> pipeline as decompiled. Extracting the +actual audio samples from a disc image is covered separately in +<code>../extraction.md</code>, which also carries the audio table-of-contents, +bank/sample formats, and VADPCM decoding notes.</p> + +<div class="note"> +<strong>No game assets here.</strong> Everything on these pages is derived from decompiled +source. Reproducing audible animalese needs a legally dumped copy of the game. +</div> + +<p class="src">Verified against ac-decomp at commit <code>09ca8e8b</code> (DOL and REL 100 % linked).</p> + +</body> +</html> |