XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8

Original ten-service query facts

This is an offline source/own-memory implementation. No game function, network request, settings setter or live process is invoked.

Source and exact meaning

Services is saved visualisation ID11, constructor old3AD17F0 and vtable552DFE0. Its classification getter+50=3B26860 resolves type global5F856E8 from the original registry and calls that service's +50 with the exact system address. It does not take station observations from a public catalogue. The unrelated 3AD1F00 is Civilization ID10.

The actual service provider is old constructor1DD2560, main/secondary/typed vtables5242418/5242460/5242560, with typed interface at component+58. Registration1E2A6F0 returns that interface; the actual type leaf is1E11180. Typed+50=1E22170 looks up an existing dense hash map at interface+118. The map header has count+8, capacity+10, storage+18; occupied bits precede sixteen-byte records at storage+(((capacity>>3)+7)&~7). Records hold the full64-bit address at0 and six service bytes at8. 644BD0 performs linear probing with the same low-bit address hash. No getter or loader is called by the port.

The original classifier's ten-entry jump table at3B269D4 proves:

Explicit original index Original key Six-byte condition
0 materialTraderRaw byte2 ==1
1 materialTraderManufactured byte2 ==2
2 materialTraderEncoded byte2 ==3
3 materialTraderXeno byte2 ==4
4 techBrokerHuman byte3 ==1
5 techBrokerGuardian byte3 ==2
6 interstellarFactors byte1 !=0
7 blackMarket byte0 !=0
8 carrierVendor byte4 !=0
9 modulepacks byte5 !=0

The adapter returns all ten bits at once, independent of the game's previous ServicesOption setting. Tool selection and multi-selection use these exact indices. Unknown trader/broker byte values match no subtype, exactly as the original equality comparisons do. Nonzero boolean bytes are accepted, not restricted to1.

Initialization, absence and ownership

1E22170 explicitly writes six zero bytes when its key is absent. Its typed+8 readiness method is a constant true leaf, not a network-completion flag. This port conservatively keeps the constructor's all-zero count/capacity/storage state unknown. It recognizes an absent row only after a structurally valid initialized table and stable repeated header/occupancy checks, returning mask=0,defaulted=true. This is the original cached predicate's default, not a claim that a complete survey has proved the galaxy contains no such service. No global completeness is exposed.

Positive rows retain defaulted=false; actual zero summaries are distinct from missing-key defaults. Typed owner/vtable/getter checks, owning-thread/context/PID/image/entity/origin gates, registry re-resolution, copied-byte/key re-reads and bounded probing reject stale, malformed or moved sources. Missing/invalid sources remain null. The initialized map is read without calling its lazy path or original getter.

Current client pairing

research/Trace-GalaxyServiceFacts.py pins the old6891 and currentED5A image hashes, uniquely matches the complete constructor1163B, summary getter141B and classifier372B, and derives current vtables from paired constructor operands. It then verifies actual typed slots0/8/50 and their complete leaf bodies. Current vtables are52423E8/5242430/5242530, type leaf1E110C0, getter1E220B0, constructor1DD24A0; the type global remains5F856E8. Proof is artifacts/galaxy-query-research/service-facts/compatibility.json. A normalized registration leaf is nonunique, so no standalone match for that short helper is published; current ownership instead comes from the uniquely paired constructor and actual typed table.

Integration and tests

Native API: TryReadGalaxyServiceFacts(GalaxyFilterContext,nuint registry,ulong address,out GalaxyServiceFact?), with GalaxyServiceFact(ushort mask,bool defaulted). Requested wire data is either services:null or services:{mask,defaulted}. Core uses ServiceMask, ServicesRequested and ServicesDefaulted; explicit original unknown cannot fall back to an older public positive. A known zero cannot be restored by IncludeUnknown or a public query receipt. Explicit tool-only service choices keep independent positive public observations; an original mask never invents their absence. No selection uses the game's saved index.

GalaxyServiceFactsSelfTest expects255 and exercises every actual field/selection, boolean bytes, initialized absence, uninitialized unknown, unknown subtype codes, typed owner guards, malformed tables,64-bit keys/collisions and no-write behavior. The source-linked research/GalaxyServiceFactsProbe executes only own-allocation copies with a bounded memory host: eight consecutive runs returned255, with no AOT build or game access. Four focused GalaxyOriginalServicesTests cover all ten indices, OR selections, aliases, original positive/zero/unknown precedence and tool-extension separation. Live runtime and UI acceptance remain separate.