docs: CT-B3 dropped by user direction — no chat word filtering
"I do not want any censoring." Recording it as a KNOWING divergence (register
row CT-2) rather than leaving it as an implicit gap, because retail does filter
and someone reading the code later would otherwise read our silence as an
oversight.
The option itself stays: FilterLanguage still stores and ships its bit to the
server exactly as retail does, so anything the SERVER gates on it behaves
normally. What acdream does not do is substitute words in the transcript.
The attempt before the decision is kept in the plan, since it establishes two
things that would otherwise be rediscovered:
- The taboo table's dat id is not readable from the decomp —
TabooTableAdaptor::CheckCensorsW @0x00682A30 reaches it through
DBObj::GetByEnum with the arguments elided by Binary Ninja. Measured the
portal master enum map (0x25000000) instead: 22 categories, with category 3
(0x0E010001 / 0x0E010002) and single-entry categories 8 and 11 as the
plausible candidates.
- Chorizite.DatReaderWriter declares a TabooTable DBObj type but does not
decode it: only DBObjType and HeaderFlags. The format would need decoding
here first.
Also sharpened CT-B4's status to research-blocked — the chat log file's path
and rotation are not in the decomp either.
Group B therefore ships B1 and B2 and is complete as scoped.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
e62aaebda0
commit
2f97052e4f
2 changed files with 27 additions and 5 deletions
|
|
@ -95,12 +95,33 @@ Nothing is user-visible until A4.
|
|||
input to `@tell {LastTeller}, ` on the space keypress
|
||||
(`HandleTextReplacements @0x004F50D0`). The commands already work; the
|
||||
visible expansion does not exist.
|
||||
- **CT-B3** `FilterLanguage`: retail runs chat text through a taboo table and
|
||||
substitutes (`PlayerModule::FilterLanguage` + `TabooTableAdaptor::
|
||||
CheckCensorsW` inside `AddTextToScroll`). We store the option, ship the bit,
|
||||
show it in Options — and never filter. A decorative toggle.
|
||||
- **CT-B3** ~~`FilterLanguage` word filtering~~ — **DROPPED by user direction
|
||||
(2026-08-21): "I do not want any censoring."** acdream keeps the option
|
||||
itself, which still stores and ships its bit to the server exactly as retail
|
||||
does, but performs no client-side substitution. Registered as CT-2 rather
|
||||
than left as an implicit gap, since it IS a knowing departure from retail
|
||||
(`PlayerModule::FilterLanguage` + `TabooTableAdaptor::CheckCensorsW
|
||||
@0x00682A30` inside `AddTextToScroll`).
|
||||
|
||||
Worth keeping on record, because the attempt established two things that
|
||||
would otherwise be rediscovered if this is ever revisited:
|
||||
|
||||
1. The table's dat id is not readable from the decomp — `CheckCensorsW`
|
||||
reaches it through `DBObj::GetByEnum` with the arguments elided by Binary
|
||||
Ninja. The portal master enum map (`0x25000000`) has 22 categories, with
|
||||
category 3 (`0x0E010001`, `0x0E010002`) and the single-entry categories 8
|
||||
and 11 the plausible candidates.
|
||||
2. Chorizite.DatReaderWriter declares a `TabooTable` type but does NOT decode
|
||||
it — only `DBObjType` and `HeaderFlags`. The format would have to be
|
||||
decoded here first.
|
||||
|
||||
And the matching is an algorithm, not a word list:
|
||||
`TabooTable::CreateCheckString @0x00681570` normalises a candidate before
|
||||
`StringMatchesFilter @0x00681600` compares it, which is how retail catches
|
||||
obfuscated spellings.
|
||||
- **CT-B4** The plain-text session chat log (`ClientSystem::s_pLogFile`). We
|
||||
write none. Path and rotation are UNKNOWN — needs research or a live check.
|
||||
write none. **Research-blocked**: path and rotation are UNKNOWN and are not
|
||||
in the decomp — needs a live check or a dat/filesystem probe.
|
||||
|
||||
### Group C — chat GUI
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue