Original galaxy visualisation settings: offline evidence
This records a read-only static analysis of the installed Odyssey client. It does not execute the game, change its settings, or establish live account/galaxy coverage.
Pinned image: artifacts/ship-model-reference/client-copy/EliteDangerous64.exe, image base 0x140000000; SHA-256 6891f70a021fa9f3a0e00458c284f48d1226e68ae7fc02ad48081aed47857e93. The installed executable has subsequently changed; these old-build addresses are RVAs, not an assertion of live compatibility. Selected Ghidra output is under artifacts/galaxy-query-research/filter-enums/decompiled.
ColourVisIndex and SizeVisIndex
These are independent visualisation identifiers, not the position of an item in the factory's presentation vector. The persistence name array at RVA 529A4B0 places ColourVisIndex at index 11 and SizeVisIndex at index 12. 3B45ED0 writes index 11 for its colour channel and 12 for its size channel and passes the stored identifier to 3B16B00. 3B3A9E0 restores both settings through 3ADFB50, which also selects via 3B16B00.
3B16B00's switch selects the following objects created by 3ACA1A0:
| Saved value | Visualisation | Constructor | Factory shared-pointer offsets |
|---|---|---|---|
| 0 | Uniform / no category | 3ACD8D0 |
2F8/300 |
| 1 | Population | 3ACF6B0 |
308/310 |
| 2 | Allegiance (faction) |
3AC56A0 |
318/320 |
| 3 | Government | 3ACBCA0 |
328/330 |
| 4 | Economy | 3AC41D0 |
348/350 |
| 5 | Star class | 3AD2C70 |
388/390 |
| 6 | Minor faction state | 3ACCD20 |
358/360 |
| 7 | Security | 3AD0BF0 |
378/380 |
| 8 | Visited | 3AD9790 |
3C8/3D0 |
| 9 | Commodity | 3AC3C20 |
3D8/3E0 |
| 10 | Civilisation / site | 3AD1F00 |
3E8/3F0 |
| 11 | Services | 3AD17F0 |
338/340 |
| 12 | Fleet carriers | 3AC5FF0 |
3B8/3C0 |
| 13 | Colonisation | 3ACEFA0 |
418/420 |
| 14 | Exploration data availability | 3AC4CF0 |
398/3A0 |
| 15 | Trade data availability | 3AD86E0 |
3A8/3B0 |
Unrecognised identifiers fall back to the uniform object in the original selector. The current GMSizeFilterComponent offers a population checkbox, not all sixteen saved identifiers. All saved size behaviours are now independently verified: twelve classified objects use the original uniform .7 leaf, population and commodity use their own formulas, and colonisation uses .7 with a .6 multiplier for raw candidate statuses5/6. See independent size evidence for the vtable/constant chain and compatibility boundary.
Outer view and politics modes
RealisticView is a multi-valued integer, not a Boolean. 3ADFB50 reads setting index 10 and chooses:
- 0: the physical stellar visualisation (
3ACF860, factory2E8/2F0). - 1: the separately selected colour and size objects.
- 2: a politics object selected using
PoliticsMode: 0 chooses territory (3ACF4A0,3F8/400), 1 chooses activity (3ACF250,408/410). - 3: the selected colour/size objects again; the user-facing identity of this branch is not proven here.
- 4: a colonisation object selected by a separate colony mode: 0 chooses
3ACEFA0, 1 chooses3AD4EB0(428/430).
3B220B0 directly reads setting index 19 (PoliticsMode). 3B462C0 writes that same setting and emits politicsViewMode. Thus PoliticsTerritoryType (index 20) must not be used to select territory versus activity. 3ACF4A0 reads index 20 into 1A8; 3B27100 accepts 0/1 there but does not establish their UI labels. Leave their names unresolved rather than infer them.
The original Chinese handbook strings in artifacts/current-system-incremental/game-text-resources/all-text-private.json establish these interaction semantics:
codex_pilotshandbook_maps_powerplaymode_description_5and_6: power selection and control-state selection are independent, combined filters. Multiple powers and states can be toggled._7and_8: activity mode first selects a power, then an activity type; the result includes systems where that power can take part in that activity._9: an optional minimum recently observed activity level further reduces those results.
Later direct predicate analysis supersedes an eligibility inference from that handbook wording: 3B27100 performs an optional recent-counter threshold, only while the minimum switch is enabled. There is no independent activity eligibility boolean in that path. With the switch off, zero activity does not hide a system; with it on, the original scoped counter is compared with the selected threshold. A public reinforcement/undermining progress value and a counter>0 guess are neither substitutes for the exact original counter. See research/galaxy-original-power-activity-cache-evidence.md for the complete read-only cache layout and selected/All branch table.
3B27100 corroborates independent power and state bit masks (178/17C and 180/184), combined with the optional activity constraint (188..1A0). 3ACF4A0 restores settings indices 21/22 as these masks, 23 as an optional activity power (-1 disabled, -2 special/all), 24 as action, 25 as the minimum-level enable flag, plus float setting 0 as the minimum activity value. Direct DS 3AA1840 and 3B1CFA0 close the action IDs: 1 Undermining, 2 Reinforcing, 3 Acquiring, 4 Being Undermined, 5 Total. Named power selectors must resolve through the original current definition table; public list order is insufficient. The persisted named-power selector namespace and raw power/state mask import still need their own exact mapping evidence.
The outer Activities object (552E5C8, factory 408) is distinct from Territory's optional counter threshold: derived predicate 3B42700 tests distance from the actual current system against a service-provided radius, after its ready flag is set; derived colour 3B264B0 reads original controlling metadata. Uniform base getter 108B2A0 does not establish that outer view's complete display or eligibility.
Population units and appearance
Population settings are stored at VisibilityValues/population/min and .../max. 3ACF6B0 reads them as floats; 3B8BDF0 writes the supplied floats directly under those keys. 3B27FA0 and 3B26600 retrieve the system's unsigned 64-bit population field and compare it directly with those bounds. These values are absolute population counts, not logarithms or predefined population bands.
With p=population, lo=min, hi=max, the stable appearance is:
- If
p < lo, size is 0 (552D7E8float zero), and colour is transparent black (552D7F0..552D7FF, four zero floats). - Otherwise,
t=clamp((float(p)-lo)/max(hi-lo,1e-5),0,1). - Size is
sizeMin + t*(sizeMax-sizeMin)(3B27FA0). - Colour is the linear RGBA interpolation between two configured endpoints (
3B26600, alpha endpoints both 1 in the constructor).
Above the maximum is clamped to the upper appearance endpoint, rather than hidden. Below the minimum is hidden through zero size and/or zero alpha. 3AF6D40 interpolates the current bounds during changes; this does not change their saved units.
The original resource record has now been recovered: frozen pool286, offset6144, file offset10612424 in resource 86ec03fba621526059fc6812faca6f10adcb63cb (SHA256 29a90189d0bb238c88d09dcc0f15ff751ea29aa208b1a90894ef3b47f8942e5f). sizeMin/sizeMax at 70/74 are .3 and2; RGB minimum at 7C/80/84 is (.07,.17,.26), RGB maximum at 88/8C/90 is (.53,.93,.26). The maximum allowed population float at 14 is 99999997952 (approximately1e11), and uniform default size at 1C is .7. Exact float encodings and extraction paths are recorded in artifacts/galaxy-query-research/palette-resources/original-appearance.json and research/galaxy-original-appearance-evidence.md; GalaxyOriginalAppearance uses those recovered values. These raw parameters are not pixel radii and do not by themselves prove visual equivalence.
Remaining unresolved details
RealisticView=3's user-facing mode identity.- Politics territory-type labels and persisted power/state mask mappings; original five action IDs are established separately.
- Geometry and coverage of rendered political territory regions; classifying system points alone is not the same display.
These findings only establish the listed mappings/formulas. They do not establish that public data duplicates all private account state or the original live catalogue.