Original galaxy service options
This is offline evidence for the pinned original executable SHA256 6891f70a021fa9f3a0e00458c284f48d1226e68ae7fc02ad48081aed47857e93, retained at artifacts/ship-model-reference/client-copy/EliteDangerous64.exe. No runtime RVA is changed by this work. Current-client compatibility and live verification remain separate.
Constructor 3AD17F0 iterates exactly ten rows. Each row takes its name from pointer table 5E9D550 + index*8 and RGBA from 5E9D5A0 + index*16. It writes the row index as the selection key. The constructor initially sets index 7, then reads integer setting slot 0x22 (34, ServicesOption); a saved value below ten replaces it. This is a table index rather than a station-service ID, public API order or market UID.
| Saved index | Exact original name | Raw RGBA |
|---|---|---|
| 0 | materialTraderRaw | 1, .41, 0, 1 |
| 1 | materialTraderManufactured | 0, .25, 1, 1 |
| 2 | materialTraderEncoded | .58, 0, 1, 1 |
| 3 | materialTraderXeno | 1, 0, 1, 1 |
| 4 | techBrokerHuman | 1, .83, 0, 1 |
| 5 | techBrokerGuardian | 0, .66, 1, 1 |
| 6 | interstellarFactors | 0, 1, .08, 1 |
| 7 | blackMarket | 1, 0, 0, 1 |
| 8 | carrierVendor | 1, .4, .7, 1 |
| 9 | modulepacks | .79, .92, .27, 1 |
Getter vtable 552DFE0+50 selects 3B26860. When the original service predicate matches, it calls 3B134E0, copying the entry's RGBA directly and multiplying only its display-alpha field. The service table does not pass through the Power-specific 3AC40B0 conversion. An unmatched original predicate copies the object's separate .5,.5,.5,.5 fallback; the tool's strict query normally hides nonmatching or unobserved targets.
Extraction script research/galaxy_service_options_evidence.py validates the pinned image hash before reading these tables. Full float32 values are retained in artifacts/galaxy-query-research/service-options/service-options.json; constructor C is filter-enums/decompiled/solo-3ad17f0.c, and getter assembly is power-outer-sources/assembly/asm-full-3b26860.txt. research/Build-GalaxyFilterColours.py generates the exact index map and service colours from this evidence.
The importer restores only an explicitly present, valid saved index; absent values preserve the current tool selection. Invalid indices remain visible in the original-options list and preserve the current selection with a limitation. Import does not write the game file. The actual original ten-service predicate is now backed by the original six-byte service-summary cache, with exact per-index matching and strict original-source priority; see service facts. Public station observations remain independent tool-extension evidence and cannot override a requested original zero/unknown or invent an original subtype.