SimTower → custom art: replacement coverage audit

Every bitmap key the OpenSkyWeb renderer can request (src/render/assets.js BITMAP manifest, 84 keys), shown next to the best candidate(s) from OpenSky's released artwork (/home/tim/Projects/OpenSky/data/SpriteSheets/originals). Hover any image to zoom; click to open the file. SimTower references come from bitmaps.hidden/ (the same composed sheets the web dumper rebuilds from SIMTOWER.EXE).
19✅ covered — art exists, needs resize/repack
27⚠️ partial — some states/frames missing
23❌ gap — no OpenSky art at all
12🔧 programmatic — trivial code-drawn
1➖ n/a — reference sheet is blank
✅ = ship by repacking  ·  ⚠️ = ship with reduced states or extra art  ·  ❌ = must commission / draw / cut a feature  ·  🔧 = a few lines of canvas code

Sky & unused root sheets0✅ 0⚠️ 0❌ 2🔧

PROGRAMMATIC simtower/sky

SimTower original

missing

OpenSky candidate

— none —
2112×360 of vertical sky bands — day/dusk/night gradients with clouds + star fields. Pure gradients; the renderer can synthesize these (it already composes textures in memory) rather than shipping art. NOTE: bands are 'smeared' 24px-wide columns — a procedural gradient + noise reproduces them 1:1.
PROGRAMMATIC simtower/speed

SimTower original

missing

OpenSky candidate

— none —
Play/fast-forward/pause button pair set (92×48). Declared in the BITMAP manifest but NOT consumed by any web src today (the DOM speed control covers it). Draw in code if ever needed.

Rooms — residential6✅ 1⚠️ 0❌ 0🔧

COVERED simtower/office

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Office/office_t0_0_0.png
160×48
SpriteSheets/originals/Office/office_t1_2_0.png
144×48
SpriteSheets/originals/Office/office_t2_4_0.png
64×48
SpriteSheets/originals/Office/damaged.png
144×48
Full tenant-type (t0/t1/t2) × mood/occupancy variant set, day+occupied states, plus damaged.png. 48px-tall (2×) per-variant files; needs downscale-to-24px and repack into the 144×168 24px-tile sheet layout item.js slices.
COVERED simtower/condo

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Condo/condo-empty1-day-0.png
256×48
SpriteSheets/originals/Condo/condo-occupied1a-day-0.png
256×48
SpriteSheets/originals/Condo/condo-empty1-night-0.png
256×48
3 empty tiers (day+night) × occupied variants (1a–3h). Day/night coverage matches the web port's diurnal occupancy (ISSUE-028). Needs 2×→1× downscale and repack into 640×72 strip.
COVERED simtower/yootcondo/empty

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Condo/HrD_condo-0-day-0.png
256×48
Plugin condo (Condo.t2p). OpenSky's HrD_condo set IS the Highrise-Developer art this plugin uses — HrD_condo-0 (empty) + occupied1–4 match. Needs resize from 256×48.
PARTIAL simtower/yootcondo/resident

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/OTSpritelistv2.png
256×256
41-frame 16×24 resident walk strip extracted from PE bitmap 1100. No dedicated walk cycle in OpenSky; OTSpritelistv2 characters are a usable base but need walk-frame derivation.
COVERED simtower/single

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Hotel/MM_Hotel-single-day-1.png
64×48
SpriteSheets/originals/Hotel/MM_Hotel-single-day-2.png
64×48
SpriteSheets/originals/Hotel/MM_Hotel-single-night-1.png
64×48
SpriteSheets/originals/Hotel/MM_Hotel-single-night-2.png
64×48
Two day variants + two night variants map 1:1 onto the 288×48 sheet's 4 columns (clean/dirty day+night states). 64×48 files, needs 2×→1×.
COVERED simtower/double

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Hotel/MM_Hotel-double-day.png
96×48
SpriteSheets/originals/Hotel/MM_Hotel-double-day-1.png
96×48
SpriteSheets/originals/Hotel/MM_Hotel-double-night.png
96×48
SpriteSheets/originals/Hotel/MM_Hotel-double-night-2.png
96×48
Same 4-state mapping as single. Bonus unused: Hotel_D_u/Hotel_K_u (single-tile 108×48 units).
COVERED simtower/suite

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Hotel/hotelSuite-day-0.png
160×48
SpriteSheets/originals/Hotel/MM_Hotel-Suite-night-1.png
160×48
SpriteSheets/originals/Hotel/familySuite-1-day-0.png
176×48
SpriteSheets/originals/Hotel/MM_Hotel-LoveSuite-night.png
160×48
hotelSuite-day + 3 night states cover the 720×48 sheet. Bonus room types OpenSky adds: familySuite, largeSuite, LoveSuite — future hotel tiers.

Rooms — commercial & services4✅ 3⚠️ 4❌ 0🔧

PARTIAL simtower/fastfood

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Commercial/MM_FastFood-burgers-night.png
256×48
SpriteSheets/originals/Commercial/MM_FastFood-pizza-night.png
256×48
SpriteSheets/originals/Commercial/MM_FastFood-sushi-night.png
256×48
SpriteSheets/originals/Commercial/MM_FastFood-coffee_shop-night.png
256×48
8 named vendors (burgers/chinese/coffee/icecream/pizza/sushi/tacos/yogurt) but night-only single-state 256×48 each. Missing: day states and the seated-diner crowd frames the sheet's later columns provide (ISSUE-037 diner overlay).
PARTIAL simtower/restaurant

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Commercial/MM_Restaurant-French-night.png
384×48
SpriteSheets/originals/Commercial/MM_Restaurant-Hibachi-night.png
384×48
SpriteSheets/originals/Commercial/MM_Restaurant-steak-night.png
384×48
SpriteSheets/originals/Commercial/MM_Restaurant-pub-HDv5.png
768×96
6 restaurants + pub (768×96 HD interior) — night-only, no day/empty/crowd states, no seated-diner frames. Restaurant background state pre-renders diners from the sheet today.
GAP simtower/shops

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Commercial/MM_shop-closed.png
192×48
SpriteSheets/originals/Commercial/MM_SodaMachines.png
48×48
SpriteSheets/originals/Commercial/OT Cigarette Vending Machine.png
48×48
BIGGEST ROOM GAP. Sheet = 12 retail types × 3 crowd frames (ForRent, boutique, bank, pet shop, pharmacy, toys, florist, gift, bookstore, jewelry, market…). OpenSky has only a closed-shutter tile + 3 vending kiosks — 10 shop interiors have no replacement. Retail variant system (retail.js rows 1..11) would need new art or feature reduction.
COVERED simtower/partyhall

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Facility/partyhall-0-day-0.png
384×144
SpriteSheets/originals/Facility/partyhall-0-night-0.png
384×144
SpriteSheets/originals/Facility/MM_PartyHall-night.png
384×120
Day + night 384×144 interiors cover the 576×60 sheet (cathedral fallback also draws from here). Cleanest-covered event room.
GAP simtower/cathedral/main

SimTower original

missing

OpenSky candidate

— none —
No cathedral in OpenSky; today the key is registered to partyhall.png as fallback. Needs bespoke art or dropping the wedding event's distinct look.
COVERED simtower/housekeeping

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Hotel/MM_housekeeping_day_0.png
240×48
SpriteSheets/originals/Hotel/MM_housekeeping_day_1.png
240×48
SpriteSheets/originals/Hotel/MM_housekeeping_night_0.png
240×48
SpriteSheets/originals/Facility/MM_PrivateHousekeeping-day.png
240×48
Day ×2 (cart positions) + night states; plus private housekeeping variants. Map onto the 120×24 2-frame sheet after downscale.
COVERED simtower/security

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Facility/security_u.png
224×48
SECOM-style security center interior, 224×48 → downscale 2×. Straight replacement for the 384×24 sheet frames.
COVERED simtower/medicalcenter

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Facility/MedicalClinic_u.png
256×48
Medical clinic with beds; single 256×48 interior vs the 624×24 multi-frame sheet (reception/beds states). Main state covered; sub-states need slicing decisions.
PARTIAL simtower/recycling

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Facility/MM_Recycle-empty.png
400×144
Only the EMPTY state (400×144). SimTower sheet 1400×60 includes filling/active states drawn as trash accumulates — fill states missing.
GAP simtower/cinema/hall

SimTower original

missing

OpenSky candidate

— none —
Theater lobby/hall interior (960×60, incl. ticket area). No OpenSky cinema interior; Icon-Cinema is a toolbox icon only.
GAP simtower/cinema/screens

SimTower original

missing

OpenSky candidate

— none —
15 movie-screen variants + red seat rows (1008×60). Nothing comparable in OpenSky — would need 15 bespoke screen paintings for the movie rotation.

Floors & lobbies4✅ 0⚠️ 0❌ 1🔧

COVERED simtower/floor

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Facility/floor.png
64×48
SpriteSheets/originals/Lobbies/emptyfloor.png
16×48
SpriteSheets/originals/Lobbies/carpeted hallway.png
16×48
SpriteSheets/originals/Lobbies/carpeted_hallway-modern.png
16×48
Blank floor tile + three carpeted-hallway colorways + reinforcedspace/spacebetweenfloors for structural tiles. Rich coverage for the 8×36 strip.
COVERED simtower/lobby/normal

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Lobbies/MM_GrandLobby-1star.png
624×216
SpriteSheets/originals/Lobbies/MM_Grandlobby-2star.png
624×216
1★/2★ grand lobbies (624×216 each) replace the 312×108 standard lobby. Star-tiered like the original system; 2× downscale + possible height trim (216 vs 108×2=216 ✓ exactly 2×).
COVERED simtower/lobby/sky

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Lobbies/MM_SkyLobby-1star.png
624×48
SpriteSheets/originals/Lobbies/MM_SkyLobby-3star.png
624×48
SpriteSheets/originals/Lobbies/MM_SkyLobby-5star.png
624×48
SpriteSheets/originals/Lobbies/MM_SkyLobby-tower.png
624×48
Sky lobbies for 1–5★ + tower tier (624×48 each = exact 2× of a 312×24 row; sheet's taller 108px rows include multi-floor variants — trim/slice needed).
COVERED simtower/lobby/high

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Lobbies/MM_lobbyandMezz-3star.png
624×360
SpriteSheets/originals/Lobbies/MM_lobbyandMezz-5star.png
624×360
SpriteSheets/originals/Lobbies/MM_lobbyandMezz-tower.png
624×360
Lobby+mezzanine 3/4/5★/tower (624×360 vs original 312×324 ≈ 2×, 18px height delta to reconcile). Full star-tier coverage.
PROGRAMMATIC simtower/lobby/fountain

SimTower original

missing

OpenSky candidate

— none —
Already synthesized at runtime (dumper paints the 624×36 blue fountain band from a palette) — not a SimTower bitmap at all. No art needed.

Transport4✅ 7⚠️ 2❌ 1🔧

COVERED simtower/stairs

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Transport/MM_stairs_1story.png
128×88
SpriteSheets/originals/Transport/Stairwell.png
64×48
SpriteSheets/originals/Transport/Stairwell-hidden.png
64×48
1-story stairs incl. white 'hidden' stairwell tiles. 128×88 → downscale for the 896×60 climb-frame strip; frame layout must be re-cut.
COVERED simtower/stairs/spiral_2

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Transport/OT stairs 2 v2.png
112×156
Named match — OT stairs 2 v2 (112×156) is the 2-story spiral. Needs frame-by-frame recut into the 11×64×60 strip.
COVERED simtower/stairs/spiral_3

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Transport/OT stairs 3 v2.png
112×244
Named match — OT stairs 3 v2 (112×244) is the 3-story spiral. Same recut work.
COVERED simtower/escalator

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Transport/MM_Escalator.png
118×84
SpriteSheets/originals/Transport/OT-2storyescalator.png
124×152
SpriteSheets/originals/Transport/OT-3storyescalator.png
126×228
1/2/3-story escalators. The SimTower 512×72 sheet holds rise-descent frames; OT gives static per-height art — motion frames need derivation or the 2/3-story pieces used directly.
PARTIAL simtower/elevator/standard

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Transport/MM_Elevator-local.png
52×56
SpriteSheets/originals/Transport/MM_Elevator-hydrolic.png
52×56
SpriteSheets/originals/Transport/elevatorshafts.png
368×364
Car interiors exist (local/hydrolic 52×56) but only as single empty cars: missing the 5 crowd-fill states and red 'F' full indicator. Shaft art (elevatorshafts.png, 368×364 vertical) doesn't match the horizontal 140×30 shaft+machinery strip layout.
PARTIAL simtower/elevator/service

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Transport/MM_Elevator-service.png
52×56
Service car exists (52×56); crowd states + F indicator missing, same as standard.
PARTIAL simtower/elevator/express

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Transport/MM_Elevator-express.png
84×56
SpriteSheets/originals/Transport/MM_Elevator-large.png
84×56
Express/large glass cars (84×56) match; crowd states + F indicator missing.
PARTIAL simtower/elevator/narrow

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Transport/elevatorshafts.png
368×364
Narrow shaft strip (224×36, motor/pulley frames) — elevatorshafts.png is a vertical composition; needs recut/redraw of the horizontal machinery band.
PARTIAL simtower/elevator/wide

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Transport/elevatorshafts.png
368×364
Wide shaft strip (336×36) — same vertical-vs-horizontal mismatch as narrow.
PROGRAMMATIC simtower/elevator/digits

SimTower original

missing

OpenSky candidate

— none —
LCD floor digits 0–9+B (two colorways). Trivially redrawn with canvas text or a tiny handmade strip — low-value pixel art to commission.
N/A (blank ref) simtower/elevator/people

SimTower original

missing

OpenSky candidate

— none —
Queue-crowd sheet is BLANK in the reference dump (fully transparent after unmasking) — nothing to replace; web port renders queues from walker sprites instead.
PARTIAL simtower/parking/space

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Transport/OT-parking.png
64×48
Single empty space tile (64×48). Missing: parked-car color variants and the red-X blocked marker (20 frames in the original 480×24 strip).
PARTIAL simtower/parking/ramp

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Transport/opentowerparkingramp2.png
256×192
Ramp corridor art exists (256×192 composed w/ EXIT signage) but original 384×24 is 16 animated car-transit frames incl. blocked-X — animation frames missing.
GAP simtower/metro/station

SimTower original

missing

OpenSky candidate

— none —
Subway station platform (720×96, art-deco columns, stair wells). No OpenSky metro art; Icon-Subway is an icon only. Public-transport feature would need bespoke art.
GAP simtower/metro/tracks

SimTower original

missing

OpenSky candidate

— none —
Track tile strip (32×36). Same — no OpenSky equivalent.

People & animation0✅ 8⚠️ 1❌ 0🔧

PARTIAL simtower/people

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/OTSpritelistv2.png
256×256
Generic 4-colorway walker sheet (96×120, 16×24 frames). OTSpritelistv2.png (256×256) is the key lead: ~60 character sprites at 2× (guests, families w/ strollers, bellhops w/ luggage, waiters, guards, doormen, kids, dogs). They are mostly 1–2 POSED frames, not walk cycles — deriving 6-frame walks (item.js generic cycle) and activity pair-frames is the work. Cut + downscale to 16×24 frames.
PARTIAL simtower/animpeple/office

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/OTSpritelistv2.png
256×256
Office worker multi-activity pairs (sit/type/idle). White-collar seated poses absent from OTSpritelist; business-suit standing figures usable for idle/walk only. OTSpritelistv2.png (256×256) is the key lead: ~60 character sprites at 2× (guests, families w/ strollers, bellhops w/ luggage, waiters, guards, doormen, kids, dogs). They are mostly 1–2 POSED frames, not walk cycles — deriving 6-frame walks (item.js generic cycle) and activity pair-frames is the work. Cut + downscale to 16×24 frames.
PARTIAL simtower/animpeple/condo

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/OTSpritelistv2.png
256×256
Resident walk strip; fallback today = people.png. Casual-clothes sprites available in OTSpritelist.
PARTIAL simtower/animpeple/hotel

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/OTSpritelistv2.png
256×256
Guest activity pairs; bellhop/suitcase sprites exist in OTSpritelist (perfect fit), sleep/bed poses missing (see ISSUE-037).
PARTIAL simtower/animpeple/restaurant

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/OTSpritelistv2.png
256×256
Waiter + diner activity frames; OTSpritelist has waiter-with-tray poses ✓, seated diners ✗.
PARTIAL simtower/animpeple/housekeeper

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/OTSpritelistv2.png
256×256
Maid activity frames; closest OTSpritelist figures are apron dresses — usable but not a maid uniform. Icon-Housekeeping exists for the toolbox.
PARTIAL simtower/animpeple/guard

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/OTSpritelistv2.png
256×256
Security guard pairs; OTSpritelist HAS guard-with-flashlight figures ✓ (red + dark uniforms). Best-covered staff type.
PARTIAL simtower/animpeple/event

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/OTSpritelistv2.png
256×256
Party/event guests; party-dress figures exist, dancing pairs don't.
GAP simtower/animpeple/construction

SimTower original

missing

OpenSky candidate

— none —
Construction crew activity frames — no construction-worker art anywhere in OpenSky (only the worker strip in SimTower's own construction/worker.png, which is itself a gap).

Events, fire & alerts0✅ 0⚠️ 11❌ 2🔧

GAP simtower/fire/small

SimTower original

missing

OpenSky candidate

— none —
Small flame animation (4 frames). No fire art in OpenSky.
GAP simtower/fire/large

SimTower original

missing

OpenSky candidate

— none —
Large flame animation (4 frames, 384×36). No equivalent.
GAP simtower/fire/chopper

SimTower original

missing

OpenSky candidate

— none —
Red fire-crew helicopter (96×36). No equivalent.
GAP simtower/fire/destroyed

SimTower original

missing

OpenSky candidate

— none —
Burned-out rubble strip (248×24). No equivalent — charred-tile variants could be derived from office/condo art with a scorch filter as a shortcut.
GAP simtower/alerts/fire

SimTower original

missing

OpenSky candidate

— none —
News-alert popup (burning tower photo, 76×60). No equivalent.
GAP simtower/alerts/terrorist

SimTower original

missing

OpenSky candidate

— none —
Bomber portrait alert (76×67) for ISSUE-033's terrorist event. No equivalent.
GAP simtower/alerts/chopper

SimTower original

missing

OpenSky candidate

— none —
Chopper-with-banner alert (124×67). No equivalent.
GAP simtower/alerts/vip

SimTower original

missing

OpenSky candidate

— none —
VIP limousine + red carpet alert (100×41). No equivalent.
GAP simtower/alerts/treasure

SimTower original

missing

OpenSky candidate

— none —
Buried-treasure chest alert (84×80) for ISSUE-034. No equivalent.
GAP simtower/alerts/starup

SimTower original

missing

OpenSky candidate

— none —
Gold star + NEW! ribbon alert (100×100) for rating increases. No equivalent (GUI_Highrise bar has a static star, not this popup).
PROGRAMMATIC simtower/construction/grid

SimTower original

missing

OpenSky candidate

— none —
Scaffold lattice strip (328×36) — a regular X-lattice pattern; trivially generated procedurally (the renderer already composes textures in memory).
PROGRAMMATIC simtower/construction/solid

SimTower original

missing

OpenSky candidate

— none —
Solid scaffold variant (328×24) — same, procedural.
GAP simtower/construction/worker

SimTower original

missing

OpenSky candidate

— none —
6-frame hard-hat worker animation (96×24). No construction-worker art in OpenSky.

Decorations1✅ 2⚠️ 3❌ 4🔧

PROGRAMMATIC simtower/deco/cloud/0

SimTower original

missing

OpenSky candidate

— none —
Soft white cloud puffs (96×164 … 292×152). Trivial procedural (the dumper already masks them from a white fill).
PROGRAMMATIC simtower/deco/cloud/1

SimTower original

missing

OpenSky candidate

— none —
See cloud/0.
PROGRAMMATIC simtower/deco/cloud/2

SimTower original

missing

OpenSky candidate

— none —
See cloud/0.
PROGRAMMATIC simtower/deco/cloud/3

SimTower original

missing

OpenSky candidate

— none —
See cloud/0.
GAP simtower/deco/crane

SimTower original

missing

OpenSky candidate

— none —
Yellow excavator/crane icon (36×36) — construction-site deco + basis of the noroute marker. No equivalent; 36px icon, cheap to hand-draw.
COVERED simtower/deco/fireladder

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Facility/fire_escape_r.png
96×144
X-brace fire-escape stairs — fire_escape_r (96×144) is the same structure at 2×. Downscale or keep 2× and scale draw.
PARTIAL simtower/deco/skyline

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/OT_skyline.png
1024×629
OT_skyline.png (1024×629) is a full backdrop scene incl. ground band; the game needs a 96×55 tiling strip — crop/retile from the upper building band.
PARTIAL simtower/deco/entrances

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/Lobbies/MM_awning-blue.png
108×62
Entrance awning strip ('OPEN' canopies, 112×36). MM_awning-blue (108×62, red+blue awnings) is a close cousin; recut into 2-tile segments.
GAP simtower/deco/santa

SimTower original

missing

OpenSky candidate

— none —
Santa + sleigh + reindeer team (140×48) for the Christmas event (santa.wav exists in the sound set). No equivalent — seasonal event would ship without art.
GAP noroute.png

SimTower original

missing

OpenSky candidate

Yellow crane 'no route' marker (36×36; same art as deco/crane). No OpenSky icon; tiny — reuse a hand-drawn icon or the toolbox warning glyph.

UI chrome0✅ 6⚠️ 2❌ 2🔧

PARTIAL simtower/ui/toolbox/items

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/Icon-Office.png
48×48
SpriteSheets/originals/UI/Icon-Hotel-Single.png
48×48
SpriteSheets/originals/UI/Icon-Elevator.png
48×48
SpriteSheets/originals/UI/Icon-FastFood.png
48×48
SpriteSheets/originals/UI/Icon_Cinema.png
48×48
SpriteSheets/originals/UI/Icon-Subway.png
48×48
~40 named 48×48 item icons cover nearly every buildable (incl. OT-only extras). Work = downscale to the 32×24 grid cells, add the hand/magnifier hover+selected states items.png carries, and fill missing ones (housekeeping ✓, recycling ✓…).
PARTIAL simtower/ui/toolbox/tools

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/Icon-Bar.png
48×48
SpriteSheets/originals/UI/Icon-Garbage.png
48×48
6 micro-icons (pointer/open-hand/magnifier×2, drag, bulldoze). Icon-Bar (arrow/hand/magnify) + Icon-Garbage cover the semantics at 48×48; needs 32×21 recut + states.
PROGRAMMATIC simtower/ui/toolbox/speed

SimTower original

missing

OpenSky candidate

— none —
Play/fast-forward/pause glyphs (256×32, 4 buttons) — trivial vector/canvas redraw; also mostly superseded by the DOM speed controls.
PARTIAL simtower/ui/time/bg

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/GUI_Highrise-Developer.png
1280×150
Time/status bar (431×41: clock, date, Fund/Pop). GUI_Highrise-Developer.png is a full 1280×150 top bar with the same fields (12:00 AM, star row, date, funds, population, announcements) — re-slice or adopt as HUD redesign source.
PARTIAL simtower/ui/time/rating

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/GUI_Highrise-Developer.png
1280×150
Star-grid rating faces (108×132, 6 tiers × half-star steps). The GUI bar's star row gives static stars only; half-star/filled grid needs redraw.
PROGRAMMATIC simtower/ui/map/sky

SimTower original

missing

OpenSky candidate

— none —
4 minimap sky squares (200×54 region) — gradients; trivial procedural.
PARTIAL simtower/ui/map/ground

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/OT_skyline.png
1024×629
Minimap dirt/ground band (200×24). Croppable from OT_skyline's ground band or OT_textures-2.
GAP simtower/ui/map/buttons

SimTower original

missing

OpenSky candidate

— none —
Edit/Eval/Pricing/Hotel minimap toggle buttons (200×54, 3 states). Text buttons — easy to rebuild in DOM/canvas, but no art source.
GAP simtower/ui/map/overlays

SimTower original

missing

OpenSky candidate

— none —
Minimap rating overlays: Excellent/Good/Terrible, High/Average/Low/VeryLow, DirtyRooms (200×60). Text chips — DOM/canvas rebuild is the natural route.
PARTIAL simtower/ui/menubg

SimTower original

missing

OpenSky candidate

SpriteSheets/originals/UI/GUI_mainmenu3.png
127×66
SpriteSheets/originals/UI/OcramCorpv2.png
200×210
SpriteSheets/originals/UI/opentower3_2.png
180×180
SpriteSheets/originals/UI/OT_Skyscraper_logo_v3.png
309×800
640×480 main-menu background with SimTower branding. OpenSky offers menu bar + 3 logos (Ocram Corp / OpenTower / Skyscraper) — a redesign, not a 1:1 swap. Web menu is DOM-based so this may simply be retired.

Appendix — OpenSky art with no SimTower counterpart (feature leads)

UI/GUI_Highrise-Developer.pngFull HUD bar redesign source
Hotel/CheckInDesk-*.pngHotel front desk (no SimTower counterpart in web port yet)
Hotel/MM_Hotel-LoveSuite-*.pngLove suite room type
Hotel/familySuite-*.png / largeSuite-*.pngSuite tiers
Apartment/*Studio + deluxe studio apartments (residential tier above condo)
Facility/Restrooms-empty-day-0.pngRestroom facility (SimTower's toilet sound exists, no room)
Lobbies/MM_awning-blue.pngEntrance canopies
Transport/OT-2storyescalator.png / OT-3storyescalator.pngMulti-floor escalators
UI/Icon-*.png~40 toolbox icons incl. items the web port doesn't build yet (mezzanine, penthouse, overpass, electricity)
originals root office.png + office.plist/.tpsTexturePacker-composed office sheet — an example of the target packing format