aboutsummaryrefslogtreecommitdiff
path: root/docs/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/index.html')
-rw-r--r--docs/index.html101
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&nbsp;→&nbsp;speech pipeline</h1>
+<p class="lede">How <em>Animal Crossing</em> (GameCube, <code>GAFE01</code>, USA rev&nbsp;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 &amp; 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 &amp; 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&nbsp;e, magic&nbsp;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&nbsp;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 &amp; 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>