# Original galaxy UI icon evidence The imported assets are original frames from the installed game's local current `mapui`, older `galaxymapui`, and `galaxymaplabels` movies, exported with JPEXS 26.4.0. They were not drawn, traced, recoloured or obtained by interacting with the running game. Per-file SHA-256, resource hashes, movie hashes and original sprite/frame names are in `XFEEDToolBox/Assets/GalaxyIcons/source.json`. ## Current unified map UI The current resource is `Win64/0b/b07939840732555d1c406de6aba3652c6199197d`, SHA-256 `4a474ed00edf94e5c235be66e8238f11cdb0cf0e454a6755b723422f3a04bbbe`. Its 1609 ActionScript classes include modern Colonisation, Powerplay, carriers, and `SystemClaimability`. The current marker legend is `components.itemRenderers.GMMarkerLegendItemRenderer`: it creates `Asset(linkage="Icons")` and directly sets its frame from the bound datastore `icon` string. `Icons` is sprite 662, with 170 named segments over 2009 frames. The importer includes 169 non-empty named segments and the original `assets.CurrentLocationMarker` sprite 1617. `GalaxyOriginalIcons.Map(frameName)` returns the matching source frame, or null for an absent name. The source manifest records every name and exact frame; names are ordinal, with no category or numeric-ID inference. Examples include: | Actual current timeline name | Original symbol | | --- | --- | | GM_DisplayOptions_Bookmarks | Orange bookmark flag in square frame | | GM_DisplayOptions_BookmarksSquadron | Green bookmark flag in square frame | | GM_DisplayOptions_Engineers | Orange hexagon and centre dot | | GM_DisplayOptions_Missions | Blue globe | | GM_Marker_NestedBookmark | Orange arrow and bookmark flag | | GM_Marker_SquadronNestedBookmark | Green arrow and bookmark flag | | GM_Marker_RescueMegaship | Green rescue symbol | | GM_Marker_PowerplayAttacking | Blue crosshair | | GM_Marker_ColonisationBeacon | White beacon symbol | | GM_Marker_Construction | White construction crane | The source symbols already include their original colours and frame backgrounds. The app should not uniformly recolour their rendered PNGs orange. `assets.CurrentLocationMarker` is the original cyan three-dimensional arrow; its direct observed AS use includes route-setting buttons. Category glyphs from the current marker legend are reliable original symbols, but this alone does not prove the world's projection, grouping, stacking, animation or position rules. ## Native bookmark icon identifiers The original bookmark JSON decoder `261F820` reads **integer** `iconName` and stores it in the 0x60-byte bookmark record at `+4C`. The original conversion function `26020A0` maps that integer to a frame name. These are independent of native navigation catalogue kinds or the cockpit's location-icon timeline. | Native iconName | Original frame name | BookmarkButtonIcon frame | | --- | --- | --- | | 2 | station_bernal | 31 | | 3 | station_coriolis | 21 | | 4 | station_orbis | 41 | | 5 | station_outpost | 51 | | 6 | surface_port | 61 | | 7 | surface_settlement | 71 | | 8 | planet_landable | 81 | | 9 | planet | 1 | | 10 | star | 101 | | 11 | asteroid | 111 | | 12 | system | 11 | | 13 | megaShip_dockable | 121 | | 14 | megaShip_undockable | 130 | | 17 | station_dodec | absent in this movie | | other | default | 91 | `station_dodec` is recognised by the native converter but has no frame in the installed `BookmarkButtonIcon` timeline. `GalaxyOriginalIcons.Bookmark(17)` explicitly reports `UsesFallback=true` and references the original default frame. It must not be relabelled as a Coriolis icon. The movie also contains `installation` at frame 140; the native function examined here does not return that name, so no numeric identifier was invented for it. Older UI resource: `Win64/07/79a752f20cbfb28917345f272b01292ceede1e1f`, original file SHA-256 `25bd5749dc1e179f07026fb7ed536c907e06e9110b298ca53ac436cc9634eb82`. Linkage `BookmarkButtonIcon` is sprite 304. Its timeline labels and original geometry are in `artifacts/galaxy-marker-research/ui.xml` and `ui-svg/DefineSprite_304_BookmarkButtonIcon`. `BookmarkEditionWindow.as` assigns the data's `icon` to `BookmarkButtonIcon.frame`; generic bookmark buttons use the same original frame mechanism through `iconFrame`. This older resource still implements three legacy view modes. It must not override current native `GalaxyMap3` settings evidence or be presented as proof of the current world bookmark symbol. The current map UI's `skins.BookmarkButtonSkin` instead sets its `Image.source` from `data.image`, and `BookmarkLocationDetails` also reads the bound `image` string. Their actual dynamic image source names have not been recovered from this static resource. ## Item label markers are another namespace The labels movie's `components.ItemMarker.setType` establishes: | ItemMarker type | Label | Stop frame | Thin label | Thin stop frame | | --- | --- | --- | --- | --- | | 0 | focused | 9 | focusedThin | 58 | | 1 | selection | 19 | selectionThin | 68 | | 2 | location | 29 | locationThin | 78 | | 3 | conflictZones | 39 | conflictZonesThin | 88 | | 4 | taxi | 49 | taxiThin | 98 | The original ActionScript picks thin variants when its icon width exceeds 100 and starts the nested `play` animation. The parent `components.ItemMarker` sprite 42 places its `icon` at approximately 0.2 scale (`0.20019531/0.19998169`) and translates it to `(45,45)` pixels. Parent selector stop frames do not stop the nested 55-frame pulse: nested `frame55()` calls `gotoAndPlay(2)`. Two bitmap instances are used, with separate alpha and scale changes. The imported 444x444 PNGs are only static snapshots at a selected outer selector frame; they omit parent scale and continuing child animation. They are glow rings, not category pin icons or a verified replacement for the current world selection ring. No claim is made that their raw unscaled appearance matches the screenshot's cursor/arrow. `GalaxyOriginalIcons.ItemMarker` returns null for unknown types instead of interpreting them as bookmark identifiers. Labels resource: `Win64/00/09dae208be9a2d0f360ff77bcacbeab20993e90b`, original SHA-256 `1536e0362606c17adcd2323c8d1cad7a9a1e09d669f76d2f0b89005e02a7e8b7`. The marker selector is sprite 41. `ItemMarker_Graphics_8.as` records the stop frames. ## Raster dependencies and extraction The labels movie uses two external 256x256 subimages from the original `GalaxyMapLabels_I5` atlas. Exporting its FWS tags without those images produces red bitmap placeholders; those SVGs are **not** imported. The original 2048x256 BC7 buffer is the last 524288 bytes of the decoded resource body (offset 47519). It is decoded through the same Pillow BC7 path already used by `Build-GameIconAssets.py`. Its GPU-buffer and decoded RGBA hashes are recorded in the manifest. For JPEXS rendering, a private offline copy changes only the external image filename to the lossless decoded PNG atlas, avoiding JPEXS's BC7 DDS decoder limitation. Geometry, transforms, animation frames, colours and image pixels are unchanged. The resulting original stop-frame PNG exports are copied byte for byte into the app assets. The current map resource's two marker/icon atlases are `MapUI_I139` (2048x2048, GPU offset 876937) and `MapUI_I191` (2048x1948, GPU offset 5071241). `research/Restore-GalaxyUiTextures.py` validates its 19 buffer groups and 36 buffer records and extracts their original BC7 blocks, recording raw and decoded hashes. A private rendering copy only changes those external filenames to their decoded PNGs; all original movie content is retained. Bitmap-backed named frames are rendered with these dependencies; pure vector frames are imported directly as SVG. `research/Extract-GalaxyUiResources.py` extracts the three original CFX movies. `research/Build-GalaxyIconAssets.py` imports 198 frames in total and generates `GalaxyOriginalIcons.Map.cs` from the current movie's labels. It rejects unresolved SVG bitmap dependencies. CFX-to-FWS extraction only changes the container signature and decompresses the body; original declared lengths are recorded without modifying tags. Raw `.gfx` files are retained for proper Scaleform image interpretation. ## Validation and limits `GalaxyOriginalIconsTests` verifies every packaged file's SHA-256, the native mapping against the source manifest, the absent dodec frame fallback, independent item-marker identifiers, all 170 current named icons, and rejection of SVG bitmap placeholders. All four tests passed using an isolated artifacts directory. The offline contact sheet at `work/visual/galaxy-original-icons/original-icons.png` was visually inspected: all 15 older bookmark vector symbols are complete and recognisable; all ten restored ring snapshots contain actual white/orange/cyan pixels with no red placeholder rectangles. The original full-resolution location PNG and its RGBA samples were also inspected. `current-map-markers.png` was inspected against the user's screenshot: the engineer hexagon, blue mission globe, green rescue symbol and blue attack crosshair match the referenced symbol shapes and colours. This checks source symbols only. Their final size, placement, overlap and animation in the app remain a separate integration check.