eeuz pca Country Phoneme Catalog - krcenov/RNS510-Map-Viewer GitHub Wiki
eeuz.pca โ Country/Continent Phoneme Catalog
Status: ๐ก Partially cracked ยท 7.5 KB decompressed ยท FLAT_COMPRESSED ยท Record framing cracked and validated at full file scale; 2 of 4 trailer fields decoded.
A phonetic pronunciation catalog for country and continent names โ
the same self-delimiting record family as
eeuz.pct (city phonetics) and
eeuz.prd (road phonetics).
Previously only "decompresses to a clean phoneme/name catalog" was
known โ content was never actually parsed.
Record format โ cracked, validated at full scale (188 records)
Standard FLAT_COMPRESSED container (see
container format). Same
self-delimiting record shape as eeuz.pct/eeuz.prd:
uint8 name_len
bytes name -- name_len bytes, e.g. "EUROPE", "AUSTRIA"
uint8 phon_len
bytes phon -- phon_len bytes, same phonetic alphabet as eeuz.prd
bytes[16] trailer -- see below
Validated at full scale: parsing the entire 7,451-byte body this way consumes every byte with zero leftover at EOF, producing exactly 188 well-formed records.
The 16-byte trailer
eeu.mod names this table phCatalog, with
4 real per-record fields after graphem(=name)/phonem(=phon):
clusterOffset, clusterCount, cityOffset, cityCount โ read as 4
consecutive uint32 LE values (16 bytes, matching the trailer width
exactly).
clusterOffset/clusterCount (first 8 bytes) โ cracked (identity)
Always zero on every one of the 188 records, checked exhaustively.
Fully consistent with โ and cross-validates โ
eeu.pcl ("phoneme cluster list") being
confirmed genuinely empty on this disc: there is no real phoneme-cluster
data for this catalog to point into.
cityOffset/cityCount (last 8 bytes) โ position cracked, meaning not cracked
A real, non-trivial value pair, constant across every name-variant of
one country (all 11 AUSTRIA/AUTRICHE/OOSTENRIJK/RAKOUSKO/...
variants share cityOffset=14379305/cityCount=10712), monotonically
increasing in file order as new countries appear:
| Country | cityOffset |
cityCount |
|---|---|---|
EUROPE |
0 | 295201 |
AUSTRIA |
14,379,305 | 10,712 |
SCHWEIZ |
15,096,780 | 6,821 |
CECHIA |
15,351,594 | 14,353 |
ALEMANHA |
16,004,066 | 73,209 |
ITALIA |
20,445,379 | 38,006 |
20 distinct (offset, count) groups across the 188 records โ one per real country/continent entry.
Tested against eeu.cty (the obvious candidate given the field
name): neither a raw byte offset (lands on unrelated Hungarian content
for Austria's value) nor the reversed field assignment (lands on
unrelated Greek content) produces Austrian place names at the expected
position. The "contiguous per-country block" model this would require
also doesn't fit eeu.cty's own real layout: a full-file scan of
eeu.cty's own bytes[57:59] country tag (see
eeu.cty) finds 441,325 tag-change
transitions across 939,351 records โ the tag interleaves at fine
granularity (consistent with a spatial/tile ordering), not one
contiguous block per country as previously summarized.
A direct byte-offset test into eeuz.pct
(city phonetics) โ the next most plausible candidate, by analogy with
that file's own phonemeRoadOffset pointer into eeuz.prd โ also
failed (lands on unrelated Turkish content). eeuz.cl/eeuz.ct and
eeuz.fea were not tested. Left open for a future session.
Reader code
research/pca_reader.py โ iter_pca_records(), parse_trailer().