Icon: in-game sight red, pixel-art style, for exe, window and favicon (D571)

This commit is contained in:
James Dansereau committed 2026-10-06 21:59:17 -04:00
1 parent 107f151530
commit b5f1c18152
7 files changed
+98 -89

No files matched your search

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

+1
View File
@@ -313,6 +313,7 @@ D567,FIXED,Front-end PC Options with a pad pulled the game's crosshair to the to
D568,FIXED,F10 dropdown popup drawn empty and misplaced for a long list on a mid-page row (negative top) —,FIXED 2026-10-06 (port only:
D569,?,Crosshair color follows the PD port:,CHANGED 2026-10-06 (maintainer request; old presets migrate to Custom RGB)
D570,FIXED,Scaled crosshair (Crosshair size != 100%) showed a faint copy of the top bar's tip under the bottom bar (WRAP tile flags) —,FIXED 2026-10-06 (port only:
D571,?,"Project icon restyled to the in-game sight red as pixel art (exe, window, favicon) —",CHANGED 2026-10-06 (maintainer request; make_icon.py; social preview unchanged)
D407,CLOSED,Tanks cannot be boarded/exited on PC —,CLOSED (2026-09-28 bookkeeping:
D408,FIXED,Game.SkipIntro skips the post-mission failure dossier:,FIXED 2026-09-30 (SkipIntro hook gated to first boot; live dossier check owed).
D415,FIXED,"Shooting a light fixture does not ""kill"" its flickering light (Bunker, Caverns):",FIXED (2026-09-29 bookkeeping:
1 # GENERATED by tools_pc/gen_findings_index.py -- do not hand-edit.
313 D568
314 D569
315 D570
316 D571
317 D407
318 D408
319 D415
+13
View File
@@ -721,6 +721,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121).
| D568 | **F10 dropdown popup drawn empty and misplaced for a long list on a mid-page row (negative top)** — full `## D568` entry at file tail | FIXED 2026-10-06 (port only: `ddGeom` keeps the popup on screen; 1280x800 before/after capture) |
| D569 | **Crosshair color follows the PD port: Original or Custom RGB, left/right stepper, 0-255 sliders** — full `## D569` entry at file tail | CHANGED 2026-10-06 (maintainer request; old presets migrate to Custom RGB) |
| D570 | **Scaled crosshair (Crosshair size != 100%) showed a faint copy of the top bar's tip under the bottom bar (WRAP tile flags)** — full `## D570` entry at file tail | FIXED 2026-10-06 (port only: CLAMP when scaled in `gunDrawSight` + F10 pointer; 100% unchanged, Dam gate PASS) |
| D571 | **Project icon restyled to the in-game sight red as pixel art (exe, window, favicon)** — full `## D571` entry at file tail | CHANGED 2026-10-06 (maintainer request; make_icon.py; social preview unchanged) |
| D407 | **Tanks cannot be boarded/exited on PC — the v0.4.0 use/reload split (D378/D393) removed the B-button tap the engine's tank handlers in `bondview2.c` consume (user report 2026-09-28, Runway/Streets)** — full `## D407` entry at file tail | **CLOSED (2026-09-28 bookkeeping: tank board/exit accepted by the user; shipped in v0.4.0).** Earlier: PARTIAL (fix landed in v0.4.0, port-only): present `GE_CONT_B` on the use (E / pad A) rising edge only while `g_PlayerIsInTank == 1` or `g_BondCanEnterTank != 0`; E keeps its D378 no-reload-fallback semantics elsewhere, N64 layout unaffected. D407(b) same cycle: front PC Options page-edge highlight clamp + mouse-wheel / W-S paging (wheel queue consumed on the menu, D223); its wheel mapping shipped inverted and was fixed to match W/S (wheel up = step up). D407(c): board-animation lockout, menu-accept B gate in tank states, in-tank aim routed through the legacy velocity stick + `Input.TankAimScale` knob. RESOLVED 2026-09-28: all port-only (src/game zero-diff), 10 TANKDBG probes stripped, release binary verified clean, user live tank drive signed off (board + exit OK, aim feel good). |
| D408 | **`Game.SkipIntro` skips the post-mission failure dossier: with it on, entering a level then aborting (watch Z+A) or dying (KIA) returns straight to the menus — no REPORT / "Mission status: KILLED IN ACTION / ABORTED" screen** (user report 2026-09-28; save/AllUnlocked ruled out) — full `## D408` entry at file tail | FIXED 2026-09-30 (SkipIntro hook gated to first boot; live dossier check owed). |
| D415 | **Shooting a light fixture does not "kill" its flickering light (Bunker, Caverns): the fixture takes the hit but the flicker keeps going (community report, issue #87 comment by the reporter, 2026-09-28, 00 Agent playthrough of v0.4.0).** — full `## D415` entry at file tail | FIXED (2026-09-29 bookkeeping: root-caused and fixed as D430 + D431, user-verified vs GEPD/1964 on Caverns 2026-09-29; #119). Earlier: ROOT-CAUSED as D430 (see there); fix in tree, live check owed. |
@@ -18377,3 +18378,15 @@ image-table entry with CLAMP flags to `texSelect` when the scale is not 1.0; at
100% the original call is unchanged (Dam gate PASS). The F10 crosshair pointer
(`optionsoverlay.c`, always non-integer scale) gets the same clamp.
**Verified:** 105% Custom green capture clean below the bar; Dam gate PASS.
## D571: Project icon restyled: in-game sight red, pixel-art grid — CHANGED 2026-10-06 (maintainer request)
The D550 mark (gold, smooth vector ring) is redrawn by `tools_pc/make_icon.py`
as pixel art in the in-game sight's red (core RGB 200,40,48; a lighter 225,120,130
tip texel on each bar like the sprite's anti-aliasing) on #050607: hand-tuned
16/24/32 grids (1-px ring, 2-px bars, open centre), larger sizes scaled with
NEAREST (48 = 24 grid x2, 64..512 = 32 grid). Original procedural art (no ROM or
capture data). Outputs regenerated: exe `.ico`, `docs/favicon.ico` (byte copy),
`docs/img/icon/ge007-icon.png`, `port/fast3d/ge007_icon.h` (now written with LF).
`--check` passes; two runs byte-identical. The social preview card is unchanged
(maintainer decision).
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

+32 -32
View File
@@ -10,37 +10,37 @@
#define GE007_ICON_SIZE 32
static const uint8_t ge007_icon_rgba[GE007_ICON_SIZE][GE007_ICON_SIZE][4] = {
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 7, 7,255},{ 6, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 2, 4, 6,255},{ 2, 4, 6,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 6, 7,255},{ 17, 14, 10,255},{ 17, 14, 10,255},{ 6, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 7, 7,255},{ 2, 4, 6,255},{ 16, 14, 10,255},{211,147, 53,255},{211,147, 53,255},{ 16, 14, 10,255},{ 2, 4, 6,255},{ 5, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 8, 7, 7,255},{ 5, 5, 7,255},{ 21, 17, 11,255},{226,157, 57,255},{226,157, 57,255},{ 21, 17, 11,255},{ 5, 5, 7,255},{ 8, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 8, 7, 8,255},{ 9, 8, 8,255},{ 13, 11, 9,255},{ 10, 9, 8,255},{ 17, 14, 9,255},{222,154, 56,255},{222,154, 56,255},{ 17, 14, 9,255},{ 10, 9, 8,255},{ 13, 11, 9,255},{ 9, 8, 8,255},{ 8, 7, 8,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 7, 7,255},{ 9, 8, 8,255},{ 10, 9, 8,255},{ 10, 9, 8,255},{ 0, 1, 5,255},{ 0, 0, 3,255},{ 29, 22, 12,255},{224,156, 56,255},{224,156, 56,255},{ 29, 22, 12,255},{ 0, 0, 3,255},{ 0, 1, 5,255},{ 10, 9, 8,255},{ 10, 9, 8,255},{ 9, 8, 8,255},{ 6, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 7, 7,255},{ 9, 8, 8,255},{ 12, 10, 9,255},{ 6, 6, 7,255},{ 3, 3, 6,255},{ 70, 50, 22,255},{130, 91, 35,255},{216,150, 54,255},{233,162, 58,255},{233,162, 58,255},{216,150, 54,255},{130, 91, 35,255},{ 70, 50, 22,255},{ 3, 3, 6,255},{ 6, 6, 7,255},{ 12, 10, 9,255},{ 9, 8, 8,255},{ 6, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 7, 7,255},{ 9, 8, 8,255},{ 10, 9, 8,255},{ 1, 2, 6,255},{ 20, 15, 10,255},{162,113, 42,255},{249,173, 62,255},{255,184, 66,255},{226,157, 57,255},{231,160, 58,255},{231,160, 58,255},{226,157, 57,255},{255,184, 66,255},{249,173, 62,255},{162,113, 42,255},{ 20, 15, 10,255},{ 1, 2, 6,255},{ 10, 9, 8,255},{ 9, 8, 8,255},{ 6, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 9, 8, 8,255},{ 12, 10, 9,255},{ 5, 4, 6,255},{ 74, 52, 23,255},{222,154, 56,255},{251,174, 62,255},{218,151, 55,255},{112, 78, 31,255},{ 35, 25, 14,255},{223,155, 56,255},{223,155, 56,255},{ 35, 25, 14,255},{112, 78, 31,255},{218,151, 55,255},{251,174, 62,255},{222,154, 56,255},{ 74, 52, 23,255},{ 5, 4, 6,255},{ 12, 10, 9,255},{ 9, 8, 8,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 8, 7, 8,255},{ 11, 9, 8,255},{ 6, 6, 7,255},{ 17, 13, 10,255},{223,155, 56,255},{255,180, 64,255},{164,114, 43,255},{ 20, 15, 10,255},{ 0, 0, 3,255},{ 16, 13, 10,255},{222,155, 56,255},{222,155, 56,255},{ 16, 13, 10,255},{ 0, 0, 3,255},{ 20, 15, 10,255},{164,114, 43,255},{255,180, 64,255},{223,155, 56,255},{ 17, 13, 10,255},{ 6, 6, 7,255},{ 11, 9, 8,255},{ 8, 7, 8,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 9, 8, 8,255},{ 10, 9, 8,255},{ 3, 3, 6,255},{161,112, 42,255},{251,174, 62,255},{165,115, 43,255},{ 8, 6, 7,255},{ 5, 5, 7,255},{ 10, 9, 8,255},{ 21, 17, 10,255},{226,157, 57,255},{226,157, 57,255},{ 21, 17, 10,255},{ 10, 9, 8,255},{ 5, 5, 7,255},{ 8, 6, 7,255},{165,115, 43,255},{251,174, 62,255},{161,112, 42,255},{ 3, 3, 6,255},{ 10, 9, 8,255},{ 9, 8, 8,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 7, 7,255},{ 8, 7, 7,255},{ 13, 11, 9,255},{ 3, 3, 5,255},{ 70, 50, 22,255},{248,173, 62,255},{218,152, 55,255},{ 17, 13, 10,255},{ 6, 6, 7,255},{ 14, 11, 9,255},{ 6, 6, 7,255},{ 19, 16, 10,255},{212,147, 53,255},{212,147, 53,255},{ 19, 16, 10,255},{ 6, 6, 7,255},{ 14, 11, 9,255},{ 6, 6, 7,255},{ 17, 13, 10,255},{218,152, 55,255},{248,173, 62,255},{ 70, 50, 22,255},{ 3, 3, 5,255},{ 13, 11, 9,255},{ 8, 7, 7,255},{ 6, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 2, 4, 6,255},{ 5, 5, 7,255},{ 10, 9, 8,255},{ 0, 0, 3,255},{130, 91, 35,255},{254,184, 65,255},{112, 79, 31,255},{ 0, 0, 4,255},{ 10, 9, 8,255},{ 6, 6, 7,255},{ 9, 8, 8,255},{ 10, 8, 8,255},{ 20, 16, 11,255},{ 20, 16, 11,255},{ 10, 8, 8,255},{ 9, 8, 8,255},{ 6, 6, 7,255},{ 10, 9, 8,255},{ 0, 0, 4,255},{112, 79, 31,255},{254,184, 65,255},{130, 91, 35,255},{ 0, 0, 3,255},{ 10, 9, 8,255},{ 5, 5, 7,255},{ 2, 4, 6,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 6, 7,255},{ 16, 13, 9,255},{ 21, 16, 11,255},{ 17, 14, 10,255},{ 30, 22, 12,255},{216,150, 54,255},{225,157, 57,255},{ 34, 26, 13,255},{ 17, 13, 9,255},{ 21, 17, 11,255},{ 20, 15, 10,255},{ 10, 8, 8,255},{ 9, 8, 8,255},{ 6, 6, 7,255},{ 6, 6, 7,255},{ 9, 8, 8,255},{ 10, 8, 8,255},{ 20, 15, 10,255},{ 21, 17, 11,255},{ 17, 13, 9,255},{ 34, 26, 13,255},{225,157, 57,255},{216,150, 54,255},{ 30, 22, 12,255},{ 17, 14, 10,255},{ 21, 16, 11,255},{ 16, 13, 9,255},{ 6, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 6, 7, 7,255},{ 2, 4, 6,255},{ 17, 14, 10,255},{212,147, 53,255},{226,157, 57,255},{222,154, 56,255},{224,156, 56,255},{233,162, 58,255},{231,160, 58,255},{223,155, 56,255},{223,154, 56,255},{226,157, 57,255},{212,147, 53,255},{ 21, 16, 11,255},{ 6, 6, 7,255},{ 11, 10, 8,255},{ 11, 10, 8,255},{ 6, 6, 7,255},{ 21, 16, 11,255},{212,147, 53,255},{226,157, 57,255},{223,154, 56,255},{223,155, 56,255},{231,160, 58,255},{233,162, 58,255},{224,156, 56,255},{222,154, 56,255},{226,157, 57,255},{212,147, 53,255},{ 17, 14, 10,255},{ 2, 4, 6,255},{ 6, 7, 7,255}},
{{ 6, 7, 7,255},{ 2, 4, 6,255},{ 17, 14, 10,255},{212,147, 53,255},{226,157, 57,255},{222,154, 56,255},{224,156, 56,255},{233,162, 58,255},{231,160, 58,255},{223,155, 56,255},{223,154, 56,255},{226,157, 57,255},{212,147, 53,255},{ 21, 16, 11,255},{ 6, 6, 7,255},{ 11, 10, 8,255},{ 11, 10, 8,255},{ 6, 6, 7,255},{ 21, 16, 11,255},{212,147, 53,255},{226,157, 57,255},{223,154, 56,255},{223,155, 56,255},{231,160, 58,255},{233,162, 58,255},{224,156, 56,255},{222,154, 56,255},{226,157, 57,255},{212,147, 53,255},{ 17, 14, 10,255},{ 2, 4, 6,255},{ 6, 7, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 6, 7,255},{ 16, 13, 9,255},{ 21, 16, 11,255},{ 17, 14, 10,255},{ 30, 22, 12,255},{216,150, 54,255},{225,157, 57,255},{ 34, 26, 13,255},{ 17, 13, 9,255},{ 21, 17, 11,255},{ 20, 15, 10,255},{ 10, 8, 8,255},{ 9, 8, 8,255},{ 6, 6, 7,255},{ 6, 6, 7,255},{ 9, 8, 8,255},{ 10, 8, 8,255},{ 20, 15, 10,255},{ 21, 17, 11,255},{ 17, 13, 9,255},{ 34, 26, 13,255},{225,157, 57,255},{216,150, 54,255},{ 30, 22, 12,255},{ 17, 14, 10,255},{ 21, 16, 11,255},{ 16, 13, 9,255},{ 6, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 2, 4, 6,255},{ 5, 5, 7,255},{ 10, 9, 8,255},{ 0, 0, 3,255},{130, 91, 35,255},{254,184, 65,255},{112, 79, 31,255},{ 0, 0, 4,255},{ 10, 9, 8,255},{ 6, 6, 7,255},{ 9, 8, 8,255},{ 10, 8, 8,255},{ 20, 16, 11,255},{ 20, 16, 11,255},{ 10, 8, 8,255},{ 9, 8, 8,255},{ 6, 6, 7,255},{ 10, 9, 8,255},{ 0, 0, 4,255},{112, 79, 31,255},{254,184, 65,255},{130, 91, 35,255},{ 0, 0, 3,255},{ 10, 9, 8,255},{ 5, 5, 7,255},{ 2, 4, 6,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 7, 7,255},{ 8, 7, 7,255},{ 13, 11, 9,255},{ 3, 3, 5,255},{ 70, 50, 22,255},{248,173, 62,255},{218,152, 55,255},{ 17, 13, 10,255},{ 6, 6, 7,255},{ 14, 11, 9,255},{ 6, 6, 7,255},{ 19, 16, 10,255},{212,147, 53,255},{212,147, 53,255},{ 19, 16, 10,255},{ 6, 6, 7,255},{ 14, 11, 9,255},{ 6, 6, 7,255},{ 17, 13, 10,255},{218,152, 55,255},{248,173, 62,255},{ 70, 50, 22,255},{ 3, 3, 5,255},{ 13, 11, 9,255},{ 8, 7, 7,255},{ 6, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 9, 8, 8,255},{ 10, 9, 8,255},{ 3, 3, 6,255},{161,112, 42,255},{251,174, 62,255},{165,115, 43,255},{ 8, 6, 7,255},{ 5, 5, 7,255},{ 10, 9, 8,255},{ 21, 17, 10,255},{226,157, 57,255},{226,157, 57,255},{ 21, 17, 10,255},{ 10, 9, 8,255},{ 5, 5, 7,255},{ 8, 6, 7,255},{165,115, 43,255},{251,174, 62,255},{161,112, 42,255},{ 3, 3, 6,255},{ 10, 9, 8,255},{ 9, 8, 8,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 8, 7, 8,255},{ 11, 9, 8,255},{ 6, 6, 7,255},{ 17, 13, 10,255},{223,155, 56,255},{255,180, 64,255},{164,114, 43,255},{ 20, 15, 10,255},{ 0, 0, 3,255},{ 16, 13, 10,255},{222,155, 56,255},{222,155, 56,255},{ 16, 13, 10,255},{ 0, 0, 3,255},{ 20, 15, 10,255},{164,114, 43,255},{255,180, 64,255},{223,155, 56,255},{ 17, 13, 10,255},{ 6, 6, 7,255},{ 11, 9, 8,255},{ 8, 7, 8,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 9, 8, 8,255},{ 12, 10, 9,255},{ 5, 4, 6,255},{ 74, 52, 23,255},{222,154, 56,255},{251,174, 62,255},{218,151, 55,255},{112, 78, 31,255},{ 35, 25, 14,255},{223,155, 56,255},{223,155, 56,255},{ 35, 25, 14,255},{112, 78, 31,255},{218,151, 55,255},{251,174, 62,255},{222,154, 56,255},{ 74, 52, 23,255},{ 5, 4, 6,255},{ 12, 10, 9,255},{ 9, 8, 8,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 7, 7,255},{ 9, 8, 8,255},{ 10, 9, 8,255},{ 1, 2, 6,255},{ 20, 15, 10,255},{162,113, 42,255},{249,173, 62,255},{255,184, 66,255},{226,157, 57,255},{231,160, 58,255},{231,160, 58,255},{226,157, 57,255},{255,184, 66,255},{249,173, 62,255},{162,113, 42,255},{ 20, 15, 10,255},{ 1, 2, 6,255},{ 10, 9, 8,255},{ 9, 8, 8,255},{ 6, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 7, 7,255},{ 9, 8, 8,255},{ 12, 10, 9,255},{ 6, 6, 7,255},{ 3, 3, 6,255},{ 70, 50, 22,255},{130, 91, 35,255},{216,150, 54,255},{233,162, 58,255},{233,162, 58,255},{216,150, 54,255},{130, 91, 35,255},{ 70, 50, 22,255},{ 3, 3, 6,255},{ 6, 6, 7,255},{ 12, 10, 9,255},{ 9, 8, 8,255},{ 6, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 7, 7,255},{ 9, 8, 8,255},{ 10, 9, 8,255},{ 10, 9, 8,255},{ 0, 1, 5,255},{ 0, 0, 3,255},{ 29, 22, 12,255},{224,156, 56,255},{224,156, 56,255},{ 29, 22, 12,255},{ 0, 0, 3,255},{ 0, 1, 5,255},{ 10, 9, 8,255},{ 10, 9, 8,255},{ 9, 8, 8,255},{ 6, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 8, 7, 8,255},{ 9, 8, 8,255},{ 13, 11, 9,255},{ 10, 9, 8,255},{ 17, 14, 9,255},{222,154, 56,255},{222,154, 56,255},{ 17, 14, 9,255},{ 10, 9, 8,255},{ 13, 11, 9,255},{ 9, 8, 8,255},{ 8, 7, 8,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 8, 7, 7,255},{ 5, 5, 7,255},{ 21, 17, 11,255},{226,157, 57,255},{226,157, 57,255},{ 21, 17, 11,255},{ 5, 5, 7,255},{ 8, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 7, 7,255},{ 2, 4, 6,255},{ 16, 14, 10,255},{211,147, 53,255},{211,147, 53,255},{ 16, 14, 10,255},{ 2, 4, 6,255},{ 5, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 6, 7,255},{ 17, 14, 10,255},{ 17, 14, 10,255},{ 6, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 2, 4, 6,255},{ 2, 4, 6,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 6, 7, 7,255},{ 6, 7, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}}
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{225,120,130,255},{225,120,130,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{225,120,130,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{225,120,130,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{225,120,130,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{225,120,130,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{200, 40, 48,255},{200, 40, 48,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{225,120,130,255},{225,120,130,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}},
{{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255},{ 5, 6, 7,255}}
};
#endif /* GE007_ICON_H */
+52 -57
View File
@@ -5,7 +5,9 @@ The mark is an ORIGINAL generic version of the GE default aim crosshair:
a circle with four lines (N/S/E/W) crossing the circle's edge and
extending well past it, open at the centre. Proportions are measured from
the game's own default crosshair (thin ring, long bars, open centre).
Site gold (#e8a13a) on near-black (#050607).
Drawn on a small pixel grid (32x32 master, hand-tuned 16/24) and scaled
with NEAREST, in the in-game sight red (core RGB 200,40,48; lighter edge
texels 225,120,130) on near-black (#050607). No glow/gradients/blur.
A circle-plus-ticks reticle is a generic functional shape (no logo art,
wordmark or screenshot copied, cf. tree-hygiene rule 4: repo imagery
must not be derivative game content).
@@ -45,64 +47,56 @@ OUT_FAVICON = ROOT / "docs" / "favicon.ico"
# --- palette -----------------------------------------------------------------
BG = (5, 6, 7) # site near-black
GOLD = (232, 161, 58) # site gold (#e8a13a)
RED = (200, 40, 48) # in-game sight red (core texels)
RED_EDGE = (225, 120, 130) # lighter AA-edge texel tint
# pixel-grid parameters per master grid size N:
# (ring radius, ring half-band, bar width (even), gap radius, reach radius)
# radii are in pixels from the exact centre (N/2 - 0.5 is the centre pixel
# coordinate, so every shape is mirror-symmetric by construction).
_GRIDS = {
16: (4.6, 0.6, 2, 2.0, 7.5),
24: (6.6, 0.55, 2, 3.0, 11.5),
32: (9.2, 0.55, 2, 4.0, 14.5),
}
def _master(n: int) -> Image.Image:
"""Hand-tuned low-res mark on an n x n pixel grid (no anti-aliasing:
hard pixels in the sight's red, the outermost bar texel and ring
corners get the lighter edge tint like the sprite's AA texels)."""
ring_r, band, bar_w, gap, reach = _GRIDS[n]
img = Image.new("RGBA", (n, n), BG + (255,))
px = img.load()
c = (n - 1) / 2.0
hw = bar_w / 2.0
for y in range(n):
for x in range(n):
dx, dy = abs(x - c), abs(y - c)
d = (dx * dx + dy * dy) ** 0.5
col = None
if abs(d - ring_r) <= band:
col = RED
# bars: |perp| < hw, along-axis distance in [gap, reach]
for along, perp in ((dx, dy), (dy, dx)):
if perp < hw and gap <= along <= reach:
col = RED_EDGE if along > reach - 1 else RED
if col is not None:
px[x, y] = col + (255,)
return img
def _crosshair(size: int, small: bool = False) -> Image.Image:
"""The generic GE default crosshair: a circle with N/S/E/W lines
crossing its edge and extending well past it, open centre, in site gold
(#e8a13a); proportions measured from the game's own default crosshair
(thin ring, long bars, open centre). Rendered at 2x for AA, then
downsized. small: a chunkier variant (thicker strokes, wider gap) so
the mark survives 16px in the .ico small slots (and the 32px window
icon)."""
S = size * 2
img = Image.new("RGBA", (S, S), BG + (255,))
dr = ImageDraw.Draw(img, "RGBA")
# Exact centre = the line between the two middle supersample pixels
# (continuous coordinate S/2; pixel i covers [i, i+1)). Every shape is
# drawn symmetric about it with inclusive PIL coordinates, so each size
# is pixel-exactly mirror-symmetric (checked by _symmetric()).
c = S // 2
def rr(v: float) -> int:
return int(round(S * v / 512))
def even(v: float) -> int:
return max(2, 2 * int(round(S * v / 512 / 2)))
def disc(r: int) -> list:
return [c - r, c - r, c + r - 1, c + r - 1]
# faint gold glow behind the reticle (kept very subtle: flat + calm)
glow = Image.new("RGBA", (S, S), (0, 0, 0, 0))
gd = ImageDraw.Draw(glow)
gr = rr(190 if small else 200)
for i in range(24, 0, -1):
g = gr * i // 24
if g > 0:
gd.ellipse(disc(g), fill=GOLD + (4,))
img.alpha_composite(glow)
# the reticle: a circle + four bars (N/S/E/W) crossing the circle's
# edge and extending well past it, with an open centre -- proportions
# measured off the game's own default crosshair (thin ring, long bars;
# bar reach ~1.45x the ring's outer radius, centre gap ~0.30x).
# Small sizes get the chunky variant (thicker strokes, wider gap so
# it stays open at 16px).
circle_r = rr(140 if small else 150) # outer radius of the ring
ring_w = rr(34 if small else 16) # ring stroke width
bar_w = even(30 if small else 14) # bar stroke width (even: symmetric)
reach = rr(205 if small else 218)
gap = rr(52 if small else 45)
hw = bar_w // 2
dr.ellipse(disc(circle_r), outline=GOLD + (255,), width=ring_w)
for a, b in ((c - reach, c - gap - 1), (c + gap, c + reach - 1)):
dr.rectangle([c - hw, a, c + hw - 1, b], fill=GOLD + (255,)) # vertical
dr.rectangle([a, c - hw, b, c + hw - 1], fill=GOLD + (255,)) # horizontal
return img.resize((size, size), Image.LANCZOS)
"""Retro red crosshair: the 16/24/32 hand-tuned grids are used 1:1 for
the small slots; everything else is the 32 master (24 for 48px) scaled with NEAREST
(hard pixel edges)."""
if small and size in (16, 24, 32):
return _master(size)
# integer pixel scale only (48 = 2x the 24 grid) keeps pixels square
# and the mark exactly centred.
grid = 24 if size == 48 else 32
return _master(grid).resize((size, size), Image.NEAREST)
@@ -167,7 +161,8 @@ def make_header() -> None:
# top level of the [32][32][4] initializer (1024 > first dim 32 ->
# "too many initializers").
rows.append(" {" + ",".join(row) + "}")
OUT_HEADER.write_text(
with open(OUT_HEADER, "w", newline="\n") as fh:
fh.write(
"/* Generated by tools_pc/make_icon.py -- do not edit by hand.\n"
" * The project mark (a generic version of the GE default aim\n"
" * crosshair) as a 32x32 RGBA array, row-major, plain R,G,B,A\n"