# Territory style and geographic contours The original-client source is pinned to `6891f70a021fa9f3a0e00458c284f48d1226e68ae7fc02ad48081aed47857e93`. Current ED5A function/global bindings are separately closed by `research/galaxy_power_territory_constants.py` and its output `artifacts/galaxy-query-research/power-outer-sources/territory-constants.json`. All work described here is offline; no current-game live counter/style validation has occurred. ## Original numeric style `3B27690` emits 32-byte records `{XYZ, radius, RGB, alpha}` only for controlled metadata (`+C != 0`) and nonzero `3B27100` colour alpha. Its radius is `3B28170(mode=1) * config[12C]`. The decompiler omits much of the float return; the complete 137-instruction assembly is retained in `power-outer-sources/assembly/asm-full-3b28170.txt`. Base constructor `3AD9FA0` copies configuration `+1C` to object `+64` (original .7). With mode bit 1, `3B28170` takes the original activity counter `c`, then calculates `(config[11C] + (config[120]-config[11C])*c) * object[64]`. Original resource values are .75 and 2.0, and configuration `+12C` is 11. Therefore inactive activity has radius 5.775; activity counter .5 has radius 10.5875; counter 1 has radius 15.4. With minimum disabled there is no additional clamp of the native counter. Activity enable and minimum enable are distinct. When both original activity `+1A0` and minimum `+198` switches are true, size uses `m=min(minimum,.99)` followed by `clamp((counter-m)/(1-m),0,1)`. The colour predicate separately hides counters below the raw minimum. Mode bit 2 adds a camera-distance size term, but territory geometry passes only mode 1, so its radius must not receive that distance multiplier. The ordinary Territory point getter differs from this geographic radius. Its original vtable `552E520+48` selects `3B27F60`, whose complete 15-instruction body passes `mode=2+(activityEnabled?1:0)` to `3B28170`. Thus activity disabled has point base size .7, whereas its geographic geometry has base .525. Activity enabled has point base size `radius/11`. Both ordinary-point branches additionally multiply `max(1,min(distance(system,cameraEye),50)/25)`: original configuration `+134`=25 and `+138`=50; constructor `3ACF4A0` saves `1/config[134]` at `+1AC`. Original update `3AF6A80` copies the camera's matrix translation `+30..3C` to `+150..15C` every frame. The distance multiplier is 1 through 25 ly, 1.5 at 37.5 ly, and 2 from 50 ly onwards. This multiplier is consumed only by `GalaxyStar.PowerTerritorySize`, using the current perspective camera eye; it never enlarges the separate geographic contour radius. Normal geometry opacity is original configuration `+130`=.15 multiplied by colour alpha 1. Original debug flags `5FDB275` (colour alpha) and `5FDB277` (geometry radius/alpha) can override these values. Their exact ED5A RIP references are verified; the adapter leaves style unknown whenever either override is nonzero rather than assuming a debug branch's state. ## Two colour representations For controlled systems, `3B2F080` selects the actual owner definition index and its original dual Power colour. Ordinary stellar getter `3B265D0` returns the second/raw triple (`+0C`). The geometry producer `3B27690` instead copies the first/linear triple (`+0`). Both are preserved as `rawRgb` and `linearRgb`. Definition colours are converted by `3AC40B0(mode=1)` and `6CC950`. With original gamma `g=2.4` and offset `a=.055`, raw cutoff is `t=a/(g-1)` and pivot `p=(a*g/((g-1)*(1+a)))^g`. Raw component `v `3AF4430` -> current visualisation+70 is a no-op for Territory (vtable552E520+70=39F0). Its64-byte callbacks belong to outer geometry and cannot stand in for this32-byte consumer. Original `GalaxyMapSimpleBillboard` DXBC directly constructs `worldCentre + cameraRight*cornerX*radius + cameraUp*cornerY*radius`, with corners±1. It has no tangent-sphere projection, minimum2px size, or camera-inside-radius rejection. PS reads `pAlphaTexture.r`, multiplies it by source alpha and linearRGB, then sharedRGB multiplier, and emits alpha0. The source material disables emissive rescaling. `GalaxyPowerGraphics.cs` now uploads the original512²/10-mip mask and draws that actual camera-axis billboard, replacing the former tool outline. With the existing premultiplied blend state, alpha0 retains additive RGB without obscuring the preceding layer. Ordinary-point activity and camera-distance size rules remain separate from this region radius. The texture is source `simplebillboardglow.palphatexture`,181248bytes including row/mip padding, payloadSHA256 `61adefceaa631e66c4015df5c06b1d9fe154de86cb2d3be693a8be4be20208f9`. Its sourceFormat101 is **BC4_UNorm**, not BC1 or DXGI101. Exact pinned reader `51D4E0` takes R9d into EAX, loads table4E2E500[EAX], and uses that native format; entry101 is80, while95 is71/BC1. `Build-OriginalGalaxyTerritoryGlow.py` checks original image hash, exact reader instruction bytes and table entry before copying all mips. A BC1 trial was visibly invalid and was discarded; the independently decoded BC4 source is a continuous monochrome glow. Core tests decode all ten padded levels and check the actual centre/middle/exterior ordering. `OriginalPowerTerritoryBillboardRestored=true` covers this geometry/mask/shader arithmetic. `OriginalPowerTerritoryFillRestored=false` remains because original prepared-frame fade, the shared RGB multiplier and final HDR output are not yet restored. The tool does not apply guessed exposure or gamma to conceal those gaps. Current perspective near/far values also remain tool parameters, shared with all map layers. Original outer Activities routine `3B064F0` does build a camera-facing contour basis and tangent apparent extent, with an additional 2.222222 allocation multiplier. Its callback UV/material is not closed, so applying that allocation multiplier directly to a visible circle radius is unsupported. Range-shell callback `3B33690` also remains a separate primitive. The current outline presentation deliberately leaves those exact material details pending and does not invent a filled sphere or XZ plane. `research/GalaxyTerritoryShaderProbe` compiles the actual production `VSPowerContour`/`PSPowerContour`, uploads the embedded BC4 mips to D3D11 WARP, and reads an R32G32B32A32Float target. Synthetic linear input(2,1,.5,.15) yields centre(.13262145,.066310726,.033155363,0); two draws equal twice every RGB value, zero source alpha produces zero output, and a camera within the radius no longer incorrectly suppresses the billboard. The512² source and final GPU PNG were actually inspected. Report and shader hash are in `artifacts/galaxy-territory-shader-validation/report.json`. Older outline-only five-style evidence remains historical and no longer describes the current renderer. Integrated app capture is a separate check; none of these fixtures is live-game parity evidence. ## Original GZM boundaries `GalaxyZoneGraphics.cs` and `GalaxyZoneRaster.cs` render the exact Core original 2048² byte-ID GZM (`raster SHA256 4f29773d81898c1889a7c7e766e09bff13df52f18d8eda57e17d6de72241272a`). It uses source transform `(pixel*4096/83)-origin`, not galaxy density scaling. The source yields 54,490 boundary pixels; twelve averaged coverage mip levels retain those same boundaries at distance. Near views use categorical ID transitions with screen-space antialiasing. Only lines are coloured, alpha at most .14; no points or fake regions are introduced. Its Y=0 annotation plane and line shader are tool presentation choices, not a claim to have restored the original GZM material. The final HLSL WARP probe rendered and inspected overview, perspective, nearest-boundary, close Sol and grazing views under `artifacts/galaxy-zone-shader-validation/images/`. Respectively 2.14%, 2.28%, .30%, 0%, and .043% of pixels changed. Close Sol appropriately has no nearby boundary. Root separately completed an actual integrated app capture at `work/visual/galaxy-full/original-data-11/original-galactic-zones-composite.png`.