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().