eeu pcl Phoneme Cluster List - krcenov/RNS510-Map-Viewer GitHub Wiki
eeu.pcl โ Phoneme Cluster List
Status: โ
Identified โ genuinely empty on this disc, real name and
purpose confirmed via the disc's own files.cfg. ยท 94 bytes
(header only, no body) ยท NOT_COMPRESSED
The file itself โ nothing left to decode
94-byte header, zero body bytes โ confirmed directly: file size is
exactly 94, and bytes[90:94] (total_size, see
Header Trailer Fields) also reads 94, an exact
match to the header's own size (this is not one of the 2 known
exceptions โ eeu.iof/eeu.mod โ that store the body size instead of
the header-inclusive total). bytes[86:88] (record_count_lo16) reads
0, consistent. bytes[84:86] (file_type) reads 48 โ confirmed
not the same numbering scheme as files.cfg's own fileId below
(e.g. eeu.rd's header file_type is 4, but files.cfg assigns it
fileId 0 โ two independent numbering schemes).
Why eeu.mod couldn't identify this file
eeu.mod's 1,605-string schema dump has no
table block for eeu.pcl at all โ re-confirmed here: every pcl
occurrence anywhere in the file is a prefix inside compound field names
โ pcl_cnt, maxPclId, pcl_dir, pcl_hndl_list, pcl_hndl,
pcl_offs, max_pcl_id, pcl_handle โ all belonging to the
unrelated "Ordinary Map File" MAP_COMPRESSED tile schema, where
"parcel" is an internal spatial-subdivision/index concept for locating
shapes inside a tile. No standalone NUL-delimited pcl token exists
anywhere in eeu.mod. This dead end is what this project's eeu.mod
write-up originally meant by "its real purpose is still unexplained."
The real answer: the disc's own files.cfg
The answer was hiding in a file this project had already partially used
(for its top-level 4-compression-type legend) but never fully read
line-by-line: files.cfg (plain text, disc root, not part of the
db/ compressed-data model) is a literal fileId โ extension โ
compressionType โ one-line-comment table for all 39 logical file
types the database format supports (numFileIds = 39) โ not just the
~30-odd this specific EU-East disc actually populates. Its entry for id
27:
27 = pcl, 0, cached # phoneme cluster list
compressionType 0 = NOT_COMPRESSED, matching the real file exactly (no
eeuz.pcl exists). The comment places it squarely in the same
phonetic/TTS-support family as eeu.abc (character repertoire),
eeuz.pca (phoneme catalog โ id 26, immediately before pcl in the
table), eeuz.pct (phoneme city list โ
id 28, immediately after), and
eeuz.prd (phoneme road list โ
id 29): a "phoneme cluster" is a standard TTS/phonetics term for a
grouped sequence of phonemes (e.g. a syllable onset/coda consonant
cluster), so this file's role was almost certainly a lookup table of
valid/known phoneme clusters for the TTS engine's own pronunciation or
syllabification rules โ conceptually adjacent to, but distinct from,
eeuz.pca's catalog of individual phonemes. Not independently
confirmed against real content โ there is none on this disc to check.
A side discovery: 3 file types that don't exist on this disc at all
Cross-checking files.cfg further surfaced 3 file-id entries this
project had never encountered on disc: 7 = ptp ("point types"),
15 = pdx ("poi index file"), 16 = pti ("point types international")
โ none of eeu.ptp/eeu.pdx/eeu.pti/eeuz.ptp/eeuz.pdx/eeuz.pti
exist anywhere under db/ on this disc, not even as empty 94-byte
placeholders like eeu.pcl/.pmp/.pol/.pot. A real distinction
between "declared by the format, file not even created this release"
(ptp/pdx/pti) and "declared, file created but left empty"
(pcl/pmp/pol/pot). Not pursued further.
Bottom line
eeu.pcl's identity is now fully established straight from the disc's
own authoring metadata, not inference โ a real, named, NOT_COMPRESSED
"phoneme cluster list" table the map-authoring tool simply never
populated for this specific EU East V17 release. There is no byte-level
format left to reverse-engineer (zero body bytes exist to examine); this
is as cracked as an empty file can get.
Reader code
research/pcl_reader.py โ read_pcl(), is_empty_placeholder().