From b5f1c1815217ab1ed0f4c04520c75ff7e23be09d Mon Sep 17 00:00:00 2001 From: James Dansereau <106631954+jkdansereau@users.noreply.github.com> Date: Tue, 6 Oct 2026 21:59:17 -0400 Subject: [PATCH] Icon: in-game sight red, pixel-art style, for exe, window and favicon (D571) --- cmake/icon/ge007.ico | Bin 26183 -> 3453 bytes docs/dev/findings-index.csv | 1 + docs/dev/findings.md | 13 +++++ docs/favicon.ico | Bin 26183 -> 3453 bytes docs/img/icon/ge007-icon.png | Bin 24117 -> 2594 bytes port/fast3d/ge007_icon.h | 64 ++++++++++---------- tools_pc/make_icon.py | 109 +++++++++++++++++------------------ 7 files changed, 98 insertions(+), 89 deletions(-) diff --git a/cmake/icon/ge007.ico b/cmake/icon/ge007.ico index 4eaaad63ee009322fd65367ce85e7a916d7ef885..63d3ace7079085125e65a79f2841212ad4cbb3b3 100644 GIT binary patch literal 3453 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

GFM!dT1-CF(IFc}i97JWLXPc-x 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 diff --git a/docs/dev/findings-index.csv b/docs/dev/findings-index.csv index 0a7c629f..e02d3ed6 100644 --- a/docs/dev/findings-index.csv +++ b/docs/dev/findings-index.csv @@ -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: diff --git a/docs/dev/findings.md b/docs/dev/findings.md index d4bc84db..75c85bca 100644 --- a/docs/dev/findings.md +++ b/docs/dev/findings.md @@ -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). diff --git a/docs/favicon.ico b/docs/favicon.ico index 4eaaad63ee009322fd65367ce85e7a916d7ef885..63d3ace7079085125e65a79f2841212ad4cbb3b3 100644 GIT binary patch literal 3453 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

GFM!dT1-CF(IFc}i97JWLXPc-x zFXiI{O^CK&7GE4D;b5=t>oXGo!L{DjlL*=^r_X=fJNJI&gk4H;+l;+cC&`%TYI+&P zX8kS@;hlhDED>(={`{@arzNAjS7%dr^F%{3n^9NnN6LVb=z-Li;5>>5qm&-v&J+){ zMt40>X~;TLHZW7mIpjr_U}zydW#-UArTa4_tEpW?PJffWa&wXXu(MM68->pCsf?t4 z=+9?AhzLgjtVmJm#3H%?NhgdVpRoySor$*+415J`L9 z@A|y_G7vDqj}CxK5m5d%HXA9gNV3<^TjuoJz2A7dzZ~Z1Jr2x`nK}Q2*<`M=T&>*k zMoR>WLLr9UKD#y9gbo2i(4NSSh%eE`#n$K&!n7%$xMy8>1}GCj$Mj2(>)pZo62Xl# zTmY@w;C-{$e@eI{f{zJCO`(zk4-;gc;b6Z^w6j^E@B&Zgai3kVJ)KrA2T3FsG6DrC zWGRL-4$ei?ue4X`ZqVfZwg_)}>6FtZ|CM8cr|%d;fwh*DWFy1nb@-9>A<)(KPVu_1 zqn_iJ6!Q+5D4ZY+^bzqmxg<&W%h}g60#$~zKBly5Y&oRCOa=?np@HLRmaom^_BJSC zq$qH+uy+$M`&=IlXvi}NK-2A&GxnZMF7%we33q`p?Ry!R-7p&&ZmEoccxtdY^6J~I zKI4i@Y{SQj+kq0laBtDi9vV91i9;J}+TYif<0qwZ-dCN9IOY76M^U&fQZP1^PNDm= zNypPQm-a+bT0N6YWVd<`S3evQi5uq9X1zhX^P^kOV^>gaRg3n0-BFwQq7)*N4YbUp z93$o)C9%3nz&OWyf7J8@HY8Fy3}r23zq_o`zC=k45yk+L znJAnNLAOh)D?~E?(AT%pcVThp*A&Lc;j^EJCpRsZu~=%Bn{aBCK!2SR8924DvPR(=F2E|k@jrf;hjIOTL@J!%*k-i6XjVYx(1?E0)Ax zWq&ZV1dzGm@m(6gC_)FFI(e_&;;elgG&Y-CwLi8+B2CVrHdKaVsVbmOfj z=jaKxKku486Stm+miD?^Xz=J#ntC~b8TX|)4Mj1Wg*lu>Nu0mAS$C&MN#s$Pe*;14 zju?54Dj#o3kMy}oId^>51!@5`vpjw}Mh1_ZhQyme%bxLJCP!AWYG!o>PC_}YgGS*W zd^?_Orj6ffIad9BSq^l3F>XPiBi@;dyfA{XfTTNvwNaV~z^OyaER5PPyGnb5E~qeu{yFSwCYZh8)||9Qwx&XMIV5^HVqzIz_0I*E5s9FRS%NoH zy3>9y%fSel`JH7PgeEHk9nR$j-Ikwcm$Msd$*qXc*M6Z}_p*a(*I}*o0B9{2VEQEh zBw96Lom7-NaIT zG4&W>!2m@p$tWM@)8U~>?J^vm-C#)qru(hWlPS}r79PW=!N;yLxRA2{mJ}Y`0Li72 zw_1-79axlzG$clr)A6E0@ApH(Kx^S3cIx$Yh2I8IVPZ@}3Ejk6Cfy&8g0Hu8*o|n| zjd?Kr!O}#D0u&iQr(xG2U*CQxtT4Tv)zHrTfFl<_+o>;fyF__!y;YYN%4q@p4@rS# zdPx_QK*yt72?asvde1cySmZs-+oGZ%sI+sQZj!wok4(xGr+`zuWyVn(|6LuhOyHdh zmF6G+3L{`q2TZ?HkDRvy4;WUSRNCwuS805ATM7JCZc@7MR%%TjBEo~;rER{{1_4qF zK&cInFz?HPon5^2Y;}pO+q*(SHT--V%XB^MbV~pu==JgIviKB$>iMhae<^?pNqKrA zAQ4T;p|wZio{NoF*%DKE`IX9D9}f5Y{MbvdIu!@ITSog=Lb<5b=>AVqiw;4MJ3vO& z&g*PW-Ck>C5EKGd>&AJ?`s;k&q<_$^#>l`~=n$T6!u6lmqO#Dx1_KYCF_OiMhQkP4 zS>zcI!5mn?m|TV_osW{*IPzp-z_`+usgEgVJu$_S<{q!xe!-xhks)?#vAOFedEC=i z_x{K)=-FDH<{xdE?io@yuP1q^ibk2OgRuSLxaffADG}6%P!;Tku(vm({tfx^!)gTt z6#--!9=r!=ew!2-GeA{|PjCe^tbl-S%t4py8Sng89uHZfro7YHr^@ ztgxia5QHym%sVHQ?x!rYOPk{fbiLd5oT|!FzB29&6;ELccaLVC-)F#=QtQ=SN89DR zsMjTN+mk*S4pr%xDvIpFz?S`yGy>97Dyeop&2Pl2K=VSsakUngG4NIGwA@^v;bC7M z46}#w*lzvON3gVX2xS&{wXd-ZM=6Y1jyg90pc??Q8-S`ApyNAJ9o9?ZsY+*nHWk5s zWq01Uaz9#!lu=miu{=Ryjfu?QDWcrYgnB0y$(EAXOz@B}X9r%|!711}#p|F&$ZrM< zE0(7Y4N7%X{NUmUf@$eF#RYx&*rhqcV{8}<3p}orQ3{I*;imEtL5V$Q0t#^__|12M;h{7szdA z&C5v@VA18?k@c2b!vhIj=x6bDOC5<&_KAs)7iS%bbux z{JwbK?qZz^=h8!$dsRs_7c^xaB(9e?#|7Td2Nl>JHbP)&)w9Czs!g%NLz0(lF`{_Z zNJV^AFhYB(ypPB_P0}CfBvytqLY50OFCSTi5)8a;Ppeafi~eH>S?C+mTGQUOO`(>5 zymAAoVvEs)_jBs&)-9bSg$0l=1R~QyB>rZuQS<3Xj zA}$cQ0mwHkFt!jvHB~4?F|O98x{-F?*IOpKUfi5uk_t7NLyE=#XVM;5I0lSKsldN3 zluVtBSnLff`lNjT(}ad8uKST96Nlh_?DbOAIIvhWT$CL*4?Zh{d8TDVQOqO~Xxx3u~e*)rWp_vh$%o7VlT>ayKqJCQtqG$a4ixp4mv zYNf7TEig2L|rEH-C^4t9hc$z?w~ z%g*;eIyZCY7G`$WzM&RUj!j4wI`rSs8i?d4Vuk{O0uoRG=#>FAlbu|@f^n|Y+7If~N$Jz@w4yJH37~P|$JmLl z0QT=*Dr&hD3(fbtg0M{+I;01YY4d)Gx+e))jXL)< zAUCG|M+K7L1JvY#tW61r=$O(}s+Kndm`_8UosD2%I`BbmpNrW|0{qXyU3Hmmr+v) z?u0}p5LkeU_jWz$x7|^r|Jhz|5jyv&FpGy~!|?)&9M<1d{_jK%EK@KZ&=BPf>p8#- z5!NfJF$MdS|1-#OZljIOC)~-QD%kFM!*q7WXiOBVczY@vUj>HEF zFu5evb>q5_S0pntH?2Qx>vfnF|5T7lCR-8kJHeZcuWPVMhg&d;>dhedkIYPLDJQB! zg<98GPigGtj&6IYAjjZKc%C(il@<0poB?)I4ud|jENXArG(%>ph(=fXKUm<0Ihk}a z=bAk@AeK1`R?NmY=p5?dhX(ET+l9#(DPgy)lQq1#1WAavmqI6y4r9jJrMkCZ;2#2*+ zD79W$lm?}sHxSdlJF@kDCHWyGgqmXY5MuyVl8ovS(WY{wZ~TCPHByREm?`TOf*mFG$G^+&V5`|JGeGDn_+IG(6x z@%y5ElvDK4ko(B{S+L1@MQg0X9mq|R32gKA`(ghazV_W6U%Ii$A%(=DUp5}kDTyu| z@ICP~HJ)lZLo@ZB0O5kc{loFZYBgef`D8LSOt1swOJ9o03Js?GjarKNNvi`2u?VF($) zsdJ%-VdfPkfmBe3RPe3>D_06TDgU;pd2VsjpznpuarPHG8Sw9iI3RIL_UbVg8=)62 zIXd)B2=~n;H66;$s5!1a|J~d*CVCu>b7~oO5Mbn&{rcT9hq#7YD`9_5Nkre2MeO+c?yMY6%ZEn3)eEVBU8Is_z-N(A4W1c z>-^;MHUtZsM5(vV!TAI9M$Q^^S^6x%GF;X6!BVuj>S-j?$R0B+VF*Ol=}YMe;Z-!3 z{ME{nIy3pNm+GB<`SdG@DJjh#1~t_?1Z(Wnv0co>Ke41=#BUPDxQM}7UI;t$_~fIE z8zvvDG}>FuKq19aPnZsUk2_%}XT2f^ZnRc-nJ8>IN9Q>P+0R|E1hvkG5Di47v!AFW#)DDb5cjM(GEBRM^jW3}? zaAfcp>{sMJe`zf(Sw^_ynRG8@0U!mZJO5;0$fVYK(N%Zw=;B(QwRQp*bp0%FvSiy_ zq60z%ICytaiwJjw=|kv#IG4Abc>yXOz$NJVe~KI~sUk2c+X-%$%+w^@pO{qHQ3C$} zw$}?n?x}Pd;s6E0j)&9>;_S?aWJE!7{;5x4a+SWIPW8Qhbyfisk_=Sq7S^a$tPOWY z!9H6@Xi4R32T(X7Zua{&4lI#+X?RPKv|p-7yPcu%P`IV){Udz!mFnC+r$I2IH+wT9 z0HLQuCBEqTk7tq6m7&b{zQP!qOOf-sgcfoM$(kD=xRMc%pjn=J}S_0EHnFh>$UX19u@dNrID&8UxY^ukB_dVR-af}1b^35=>`%~ShRHr0Yd7j z1H%$U!V+}=8se~6IU#`{ zL774j{RI(?|NozA2yOXy`(cJWp2nQPBJn^1^}~{dmYMKGN&qHvB`}l9gx~`$gdqvd zEF`g$7@Q-2qP#$5F`v^`T+n9#1w)2f1R436B=Dv?#p6=YrcVN`M}*|ocCF|BjoN( z6__p?JNV0>eS;AO5P{0CmFGTxPNeraLFKI(40u*j1?(MN{&LJ;{Qay0Kv&0bsr>kCp2?JzB zmm@udfNq#Q(1jvGCqfVfQ3wrvcOyd+@L3^*0dPM!eQ)PLhyn+NA@hI`haM4xL8F5a zyQTd(eeDs6Ent5D9so)UOOcSZ?UH7253s_3F;Mo|+2Ok}xNsh~3C>iUM!ng`n<%xGwX^O{8nd9DR;g5Cro2Zh$0!5hOsj zk!~_)TX9BKzv>Rd$Z)j&qJZRH#KTxt!86CVXJJU7BqAa|UP7uK;eLLwFzI3a%V$3a zP6`F3K;1AlAkm5EXGL6Mk~+@$0jTcwN#Af>%*!2?rz&o4?;fwG(4|vlQUh%86$^rh z;oCDPBWZwP?jPl5Tk>_X`rsR+EzFG@E}YHQ?OPhJIgOQXqfMys+QbozdF+b&Kz<8{XICrKdMwKq z)1I74D6yN*DMC0;&(xgdt+Y!6e;>9MyD|JX!{gGMC|oUvH#nq$^Xdb-$<zK!#e#oS-XEz^&i++c_Qk#Jh z0*bkqNCK7-{VyhKzIkyg&8kM3n^%RSc8AQLm9*;$$j|4*YmN}_vBJaNxf1MrQS4@At{BefCFa%2}Ia$ zJ+bw0Cmh(vW{z>g`H~SX8ZB+P7ZHt}(AZ%%3>{q6%z zb{TVME7MoUm#mgqpsbF83`P=P`!0A_bzPI3JXFNh8I*iF%G z(KJwENkA)?0B(f>t>R|i^^OK1nC(&dZpsek!ZSOxy}RkDoEx>RFMii{-1pX)j-3Fc zFYB8rF0Cn%@AP3iJg8Vhm;twh%YDC4Ykf=k`DN}U_u`LCip%WP^_8&zjSk|0erEl! zD#9Q8ydYV4qN=i>1GApA}0M#_0HZ#uR|$d z&R7?0n)TrOxY)R_XoFsu7rh7YTmmco7+D3thU$Su8=Th3K!Rl=#a6g74{nao?>g1n zL-~Q%sHRP~wpzE}8Qv|zx(ZJ&+0e?($Q8!-)c%kS18R0PuQZ1N_c4Clr=~IygaJ4g zt3o`3xAUt;mUAj524seyJm4f^fQkZqR(pt&?^nZN@t+MOuSby>XVO6%RIat2xLvEq z>J3_~Tvl__?m5-ZJ(RNa8BSXZKR}!t$S`=GY*YHEZ~E`6Dz=6iH(q}o-)QS?=hl4m zG(B(rn2ZuTjXmBs*O@WAhV8x>?v8}~*cnfq38wg2grNV4yYX?06a$KQysR;%&;^|l z2)ZPGCnc{(O)LUvr9BHkAyUc8rc&@zkErJSM00*o^uay2teU$Uo@ilT)}8&fD0ak+llO2b_tdEr^N*Jl*qbxV_Ro z@%x-&^P1Unsuc+POtLN!AkFm=2&_3+KqumKm(0^V*U|N3PJZUe*|4*|x^UqSqX?IG zV?8@aGI&jOX-+6q578((ZtE?EvGXCrw`2WI2(=8n$PMc5|$yLy#;ryR%# zjb#(3J?Fg-ygPzS*J;&eJ7eUDqH!@6T%lzxCSq7bC}2p>DGsz7W6?7kmg5YVrD@Hf z$GIzwoRWGmdf-LiD6C7@=HIs;X~eI+KN)7D-7fQps)ku=-G}xR_3jr**rtJQojy#3 z{qa||>0C|7gNAgN1uN_~!$Iz<8{b){lT9dc(x@CI^dlhw!_{pQMN^$t1l%UMYOPOW z+7`}(2arTZN!_&Ko`&K_P=rSX`oCXOO3WOcZ;;;a_9GV+%qu0e-S*sBEBD`UEm61+ z6sDbyx<1Xbs#jW~Gfh5)-q!|!&vhW*d8bkPC^QyU*@}E%O%rS&_?u`%U_QBjUZgLK z@W=h@^njh-fLL8RS0>DNw(Ne_mK})mS~or>IsI1SunSM4Ks>xcAFp)O-tD{lI3SaF zIW5*qwI)z3mSx{XXv zNrXrN1qNkM-LT8gbw|M>A66d#^YQjxHa4~t zl1UIA;Wp1~_mbayII8%6ZaqJ7`l(LFMNOd|n(oOqk&%Z@S-NFd?q*o`l`y^jF-m*peaZWFag!{2r#uuQV#6fNCI&C)4MK7Bkg0WoIw%}w-bc0 zvnl6waki(HR;+5f2EXaK6|HK`@P$r4Rx$9(em=JO^#GIsT|AQ$z3R8C_|ve z_CF&O8AcYUoDgv)5BLF&R~}F5Pgu~p&n-|=SaK+Jr=BVx-7LV{tL$~c*K?C+0*)n| z5=UjCZ8a)Sfy^k<50p;`XjUGdUVLUUGUR)Y#m6b_qxZ=2eS6|;Y$k79TPC(vphEc) zNw_JF$>bbO@mLu6TNrfU7g<*%4JAF@|I^r4hc)@V|8HYR!)T;K8U*QX7@(B22#k=> z0fIxMMm-;0N<1dNQac7bhn@~y1Rap_vcsN>-)#|zg@eYbD#U1-Ov4;SL}Lv zPR(EPuAWoG4>wl$rSVkPK>6FVRW;2Mg&j#P)&KNyg!uVb##pHup3fXK?hvSdrG?9# z68dDf-dzcHN$GE1vMh%=^a*=jb>oRez&RXx8O17M!FT6!yopd}Iv_1=;!qBDz;yxP z7gdj7tLY_8MbR>~=Kh@L=HPF$LCOBNDs9+}*obxzf|To2auM#A%o)@ie1uQ+06}8K za<@Jxx((NCUsGrME#V9Fc?Df>NtYwz*13V+_EZQWlv>>n1(`0A1}HF-8rhnA{XoiK zTiG{}{^-FEzoz71m{|rPgU0BH}L};8SHnfzwpTobO*}yjS3I zzoUcBdP~BZN(Vl8eeWuc(^)v5;zRit#$8M&wxtey)JHQ_oRQqjH+T=RDMFN3JD3h2 z4c@<^i!E=&8oUaWEy^hsp$Jpw`t}Q+G#|W4H&581C^YhJhUOLEqce+4r(B3TI{zt3 z<=r4Zf`mnVB4`|siV+HYM1{1CTP<&e&gY&emp0Bm~`Duf(QBbz|e9&=vU$u%D_osTy>U7V)Phg+VT|Ja<3) zD8--VQCvP?ldw%BFWeQjlJVj0ZteV#UKMEuUfenv4dCZsd*3&MSX=j7jhi^$3p%vf zznn~^Ya9>4HOs~QBgoyD>vfVkGl$A@v^ci^nYj}#j`H$hGaT=Q5-r$nror=Xs937F zy(LsXjdfsqi^RKqR-mXD%>6WGrgkW>m3jGhiQRmm^j%~;S`bUx5Juj7#Ly}DLN>|` zPz%V~aR?uGdxJEqTP9H6BTTB3CD0(aU7J?UdIut9&zmXF%98(Vds53Sqd+FOR~vv^ z4qAQQv^b_IcOM6w{tc1OUTj5*CIg-ru>-#>$2GLiOEe$r;YpyZn{wEql8Ttlu3NAD zl0I}thF|4^jy+QZuLe1AWoCx)aO!|DA%)v`U`#Cm{k#chIf+zmP)QHyZPQXJP;fx_0yaNJ(7Z^120C<P1BO2fL%7#oSMHbArK( zQ;ws!>zO@r-hXt$>$YxKMRcn#m!CG*vuB25170K2iJnKcE3pRZ-Ez~!7^#FK^tZMM)#>cbkd0_ zUuAtHWn>f_bg**j{YV$A1qo95yGT;p-4tJaA};*ID&$9JJ2{9O>4dQ?-K?wQ(y0j4 zWReavslHpm*_VzOY5pRSEc|fzk%H+RLgiPHJ-U_gxzDh(<+^wBext54kU zErgYH;*t;9Jh`V%YYTF*XGwtuH)>>j(p)KD$H4pj54PQE@ANsM8!yIEe@*PzJkAV5@9QK4K}<=*AN-BL2L*1erUKh`p0p}QjkC<^ zSiAAK^~5XF%3n6f=BkRs{aST4Fwkr{A+TJ$Ev+c2idf#45O*G6lFDu@>-u$UK~71I zZ*mVJ7i@RO!2j^B4RKsCOf##i_Qk|<{*N4TArXUkTA&1VX;nUkOB2H~roKEf|Ki$k z&wPtHf8%k|Bk`fF^C*L57vZ>otQ>~pD??7zvPmKF27A7NvpX(QRt0Yo;)Z$#CZ7#0 z0&qWE+sl^c>#-7w&im&^%xs|8(~ESx9|cqa#Rc!?O-@=@zv>h%@(I*2zS0UmMY-v$ z6`yrHdnIz$3)wHNxQe>9<1Aw>HWiuqhW#AKnQ>4Op}Z|qlwfw)z@%(ueocAh!Sn`t zV*6T#9@spLbj$axjaZukOp?M0q<&3+a&a_)ZC`K|LDReW(T*H4ia4*6ghWxEE0JPt zypJz5Yk?K`YAShfbt4;AW>O%-)vs%3)){m0&af8Gw{Zs-J@hZX+A$S-M*?v1z*bL> zh}+R0k=jK7fR}WDso=XQ<&4F_ZTaH_LtVP7&hb-Y{^Xk`WiiXx)EA!@(_09DZK<^v z`LMQzn%V6p5WL`G@BMTCf;(FJ;}iK}a;lYefTB(<_oRvVI^f=YV5XpUk7sY~To~80 z-`5K*9^u_ZdsWyg>d`G?=B#hk!lR{lZIQ71l_j_`G88oAqMt!$&W(rOEq|GL=yGlP z4Z6h}FY-LC5`U5$PFM@h3U$*YOX380Zx}mgY4$XghW*(ik#C||_h9*|b0vcQCI^6b zJoALyT)QWyba!J11;|uH#gye#vMIEr$whFRN3&*;9Ff*@!*gx?pMpbOB%^J>hC)L) z!fJ8EZfJS)Fr!JP6-|5^dW}`kT}XeyWgwt$YpdE1t3JI-f0F>MV2kYSsjJKu2e6yLAtWfD3F5Z=*O zw@U>llA_hrcnhHOxM+fy-N|{h^AN^;@VK0*ofEb%ZLZDxOk_?YoEKk3RnjYBIyQIK zq&@nV9fy`!syjoyujIVY*@I+VR3Zx-VMdk9$hEKJp^xzFD5Y-arQVa+Pe;bBc_`y8 z#^-a-00LmL8C}KV+o%`%+C}l^h&!(P%B`837_SC{GG>-+zQKmpYuXtDai0XWA9i&) zt}tb_FH+zTm5)!$>dO5xC zqa~L4B)MJb_Nv8dUM^_GF(jtTY39dPDx90CPOXXqjK<}2k}{UmXNL|(I40yU zbhc%^-RKOyxRf^=dCa=s;0FclTX`$WsvciH{n%u#=&HQu@OySTOx|^l!Q1Fij8-e&l8OyFFZ^3=Nd}% zw^ZUU1>Te2em+p`fS=~ASi`{rbA?OC0C*UiA`5e~LYHo(LL}qQ)Ep84{huh7-Az6_ z&-xeYg|nzCMR6jv7Q((qlYsAOsdFK}>G62$0ReOSE)k+0?FIAN_6FRL3lVfjpNZNz|!-J@FXb58rsgo}U+ z$If`8ZxQq_O>Feb@J?oZYzZeMVA1*;mTO?nISgfmIW4tf^A4uJ@j+BDZ4*^qSuM#q^+%dtAZ-sTSr#8|f*+-kFIi!s?LH@gP#CVYFW z(21?RW^~#e03_T~2tiX-zJAnRV(YIB_EfMw`PSzR^I5NpwbRkVZ^``}uIHj;dGHpZ z1L}Q#wc1QGR#7t-y3=N1PeIfKwhGnLq)hS?2sgC&aM|WjPpus;v>`@%O70VAm-n$-Hes;q#QC_0%2Gp;NvMsc$6gJ2PsL}uf?CQ0v}`vvlF zO9E7BA4+lpCLy@qfIkzHeobHmhVLziP;PI@;WG7$AF-Zj%APwZI;sF5e z8#@0XKB&fEe3^tR-jnHSVbH&>K@LP#$jzI6%s**13Lyk87K{~LZtm%PC|aFM2ao5x zuUY->a9)hz;*MxbSJMnrWZ|#HpA0vbAiU|6?-S3$gTRBGt#A6v9ES@$t{i#Ym;?>K zEg!J`dX!-j+6vy)DuNS?oz__i=~t4q-4CrX-F^$A_lArjuwX**W1l}%=mXWGnP zg4fBAdU{6+a;&KM!K2O;});L(M6!?Q5#8gfY~!V}ab`ig2{q zm94-`B3nN{zX~4kNWbvGS^p*1CpU@KVsZdpTg=_?AP<>A#UslVJ;BU+OUxPZ`k#D% z5DrKLe+glM|)+7&f&+NCo2f)_zn#l`BV zNpV@@#pZLt)*Z(A*jQ%tzIPO2`~l@Ij6Z7ug(*3BAcU(B0o9PU)()+2wq) z!+W0al*b7!cNon&&q>O`A;KQRGbG|`Z@^%{{#4^6c#TpKjyLvGnb1!2o#w=XY`0Xn zA|S89LjwjLgnM=*Rjn)(VR%+63?9{Me-$8`Y#h+T+w!%Kd+Qpz5iJIA45{>)YqvgF z-KWc*%-3hnt57n)9fB|qrb)Y;Sp7kXHsvlOyA@mZb1RBR@rGe|@ScP~E|g3WAP8QL z>|#>(_lq$Q+LIGCDFiamR-r7IJ8Zq}DI7mKG+js*=ySSdHVlO7Z>UG$f%yyb6YKSay0!iiqH z3d4cO-PNw2$~VXE5L}UF%3ad$l)rALLQ)v1a3-NW;H*VMtDKgvyQ+br(UM`pi22u- zjt)}nYc>!El{y?ECqu0$&|SCPocSm9Q=r#vMChpq9`Aqlu_hrwyN$P>4!nW_M=Z1Y zWpi_;#pq}Yc-h}Rf2PDe{&#E^YyQ8J@5(u~3=uX=GESK-;%nxpy}sLcs5u}$HkLN< zS5SfLS^eV&S^`TRQ{Vu+ja3itHv*3~Gnlw%W!T>dIq0r}#4^x5wciIJbOgSYa!O&; zZ>E9~U@fdJ<5McA9aBZDS+x=;XS+hHX5hhywtY%rQ_`S|p= z{bHOR@0BY(i;p2a8xzkna2}r0w4g_|d+zcsxh#MwI4)iW)?6%^=lwi5$_NWFA= za5mFA8+#n)qx+UPoCp_u+-RHwv6|XH_4w4_MCpuR?joNXcrr#`mIpBLuS=l+_M#&e znt)2yl>5EI+JH?ll}NV!oMM5N{trQr+qcF?F6W`cGkFU}((?Oi8hp)2rBZERQv#=8 z&Hg?TRURDwXxN3ql2jrBMiFvf-%7KGbyR(%`XL2j?7q7Be=;6x6BKs++rJl~GZnT{ ztdBs?1MIc=a=D)jcjqJwAG0wFOB478_UqwaZHXKgrTi`;5fem<$ONk6%!C%sgQ$rB zC0yMGU$-080w+U7!V+FCw>p6VC#G!egvg|yTocOBneM&p9^5|uhE6FaM%dqZ~-oRsqr}Y1&<$L}b5c3(3Ai zt9X~(p?$Ry!#1XlVV=J~QjPCQJq~FqeNo#c7mA}_DjLXc@UO$jR%BJs^n3Tgc)-Pb z9@Wp2Z)>slec<^XmyYQlx@-C&>0i^Z>uhrg`m%ZNyzngr(OLWIyn|#2u=UvVI@=AO zL2s^;Fh~&23+blktP4fWaTab2$}_E@U-@!ZvrGKILzI z1;kO(Xlm>&WO=E$_gR%-qJ0e08o(BY$o)e#ewh!dUUHybAb6ZB?#!#;PC&Z$7huU`S{z25%`mDYL zspF#{_Q2eYIj_CN+eS4lII*0sCUZAm+IoO?vQ$^rf%Tl$uQutj*&^*y(=G9j0KrU05v=oFd z*5zfHR$REphx+1A-mC9@qFQvrP>b}OUMfwFcpj{uQb+;;s_#wfnW+r(P5keNUhU&F zIbrD0Za}r4L8Ss;hH7LYw1cN@-*yAXK1K=pA@4I&|cv$JHe8Am<%x zo3ev%=|nX5&aHoy01n63IUH7Vs8*WL4%=uV_H;7ZG<8t1$+FVD!*D#l)@z@Nf|@AA z@GnG=QUUEN^}+`?TExw4nS-;Zs6?78wfg{7I`gMVNOMmeS-F>amOjsU1NS}13k?1V zmNl<5m0+(4iP(FXuY{9YRGku8w*MICr-7!{moDrCE+R4k?*U)_(Y%wWve32^h)-L| z> z|5aB^h3i$i6D4l~s>-*9B}a8&FYUOIXu&ekPeCtn#gIN=#5GS2^qM1|&&C@^JH4#YTjSF7KsI4W8;{wF{o zt0;@{L|I1)78QC`+2G02tFcPH&PtZ3@5r~VHVP?Ht^wmk$CoqP*sm+jt4q=qOO=S) zZWCIYu(FN!LWcgaItwS*piiqML1)7(>WB$y>ZV|8xhD^YH8_TbyhutEfhJ%~&sT+N z_Qr74;2;<2z{M2RM?TN#TgfwE_YBHh2=}`EuHY>iITvU9e}P6oiZo);C)uEeEb?|P z51_XtTwM|G4iGL(Mtw3Hxw2ZdFfjbi*SbN+xLRtZVyrImddWMyN+$nGuVVF&`1+Qw zSLk2il66i@-N9H>DVveR^5pjYpM4^`@1G;Qryu6Rj18hRdzwGS{?#s(#Sf%1YF3^s z;VUR(tji|9fBDmL#ik_ope%!?Pf2@4L=#z{t_J`dBzTSyMuTV9sl7iH;_kG1yH!d0 z^4#k9ZOqTA0N)Wvf?EmM@iC86?8W84)u*iZKvUk$biP4pDT@7UZ<&8UY#JuWN(&#c zVuW8Jla~MN0n8(_U)~e>muo(@Y+7mXqNOTnSfJ~C_xh5ENAA$=tS4_Y zRaNQcP>_{N9AT3hhCk(uCy&e@zZTvTa!9BB5ETb519 z$4xnKyWOba_+9eBj<~Uek~NI}K1NU1?vs#5$d3t%UdY(~jyQ~iM(x6KRF-+o-C&pq z_p~P>@ZNiTmDx_0*+2b&w7z4>p+O)w8>8qjG-#1sK6|2I?R{RJsN5T1s~TqILddBK zP@TXlH3l*CthDSy8?Jh0R%7;$3r7;x9F|Q{@cWcNW^nVCpj`4no%4p~wz4a?hh5;z zK#$A5F?*Pf(h9kL+JnrCy5|L{4J~T~e{8|NG`w*Jp~QAZ7| zkH(Vo%FU8-K7b&e!;PAQ@YXJ|2iz9%bqW${?`C(H$qas#6m}6S{7TTBXVU?}mU9<% zkn-a)+}gt$<3&E!r$WuYz4H&cNRA5Iw`dYV*~1=bASWP4_9-(`TdX>fd`ruiZB6>C zQ(Z>Jfsx2_sH>P&fyaV$hi28#SB2|xPOwUn+V6!jsKnZfFB^Lg-sMnACcd`J;sOOlf-}9-Sa)fCk3Lyl#BDd9`5?{*pnR^}vtt2-r;~Y8GA#3PIv$s(x`8al^^9b zb6%a#Z;-P2?F;Y#Anhg@5HHOMBcJ%j0(7El)yu59(ktS}B33rN1(kX7T?->=>pLvB zWBV0q6Nms@ilHEygT;e@ir*^_2P)-zw%zJZQs(>I{gd23KO@*=7%+Yo`!#2T1Gj-g zBEw*`x=|(7Hw)bPedQ!)VF!A)HYcABp7*y8)L7KK#YY25*X>j~&Ivf5e;~)E;7i+@ z{lC3vq3T7ihh}ndoa$h)QC?cg@$FZy$hLp>{xjcyrwpeT4(n{Rg}HRx_}LO>L1q=& zp6wLm2@79nSYhKo4{DgNN$Og(rRS@|Y7_pPp!IvduUk~07c~m7=44zMy3n1fMCZ43 zchG3LnZ=EWCOtu;+ZF7gtFm<}kw!)H{VKnE1w_p3l*{q$4aLc@M!|Lx1LP6O&ld;B z?jQ$3`6}1R1y22si)I7&`zC-!B@0HY$c6#GuDEjzMC5I6F z9#2l=gIF>kRvT0ky?8-QfPG(csep$BG4!_0Z3p?rMhc*c8Z2&k!Ne@=?}RBYXX-~J z3!1zg_SzZ+x;dZIy)meEzXs~TFVQ^`!ldY?6%A)@f^V6q#F*R~AdsNZkZ2MVODqZ%k{cj^Yd|uiwUQ}@a=5){>W6AZCL}WJj(#@6kkorD0m%Xg+p(X!(7Uw{( zC6quFZ0k8NmI)>O`pNr zN)-lew3!K@VqS7(zRrc1oWPMYRplFiO7#-(*XnnuMLNbM*BZ%+mpzO?(NCC06}A2R zfZ_Bxm|Bdm|N<`bL@z3r(MvS5#Fx_#_{g>zh)DWROnyEX8*P4+Rm5sAc zP8TGVfPU}0pL>+O{3RN9Hd6! zbfDMe)4Tm8M~^R9W8UP7IKE!|e!$Lu^ZYQ+&=e^QKV?TB(-cEAc*AF$a0_>-V zKF_j5hS|thV$yTmKQPq3TKA0N%ecpH_u1_eu{KZz@B%-vbE&mw{fLBoW!EA%;p$v- zZz-kY4XcWb5t8NYv_>_=3N+{nG|ESlW_&m>-L99X%qO-zKQ<*(akE$oq>LfmNS9Z} zA>=)}K~bbN_gWq}6XPmqs7WRr3`1tD-$ z(lpwT|D>!Ne8|!NMzJpfqJl!I?z$^JWE!Ms~ zEp#w_tCpA)$~blE{B>EKhy$6J+;Ktjvva h{g;&f`$Yfe-}1GbTvxA66`f;7|GvEC|GbCbe*xl7kp}<( diff --git a/docs/img/icon/ge007-icon.png b/docs/img/icon/ge007-icon.png index afaeb03133958a6f9da15f852330a431b4f4dd98..0f0481676a2db90814ff868b14abb839df55eed8 100644 GIT binary patch literal 2594 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe)eUwXPYhE&XXdv{~+?I;0< zi&xoIuRaJVSfq5N`C-r;tFl)?Jl_{6O_A`4ZL8xI6Sr1)XK6Wo^AeR9pHF z#<1j%xh(_3hmR}_3@n@s3>-oX3<4?)3<@3$3=R_*7#b8985kUa7B}HiupqUH;X!Hr zzFPU(n)&trB=*{Wu#zUnAh=D_UNSaZ|NHmv>Br1*Nz4SShwH-SzM-$+!ovzH`{nHo ztA0QI6;>84e_7dK8ZWug1rCnWUl=wV{abYREAyVU{jvZ5SI@8i^}pTIjMTVC30vLE z%oogR<@S8ObN|x$`q$6%Uw^&)-#(XOLpS7~b51{>_d5B@zkT*Tn;3~mlPK;&PSqJR zC($z!ST%ShkJkg?=*@^CuqKYP4* zT$GiXl$U?Na(71Q{uuMv`e^z0X58}s|84v9@AmuowVNr=ckWQ-_Fte`fQr7a7?hm91~3Kg$^${$zis`9Vu1UAVS7(8A5 KT-G@yGywo@#rZn` literal 24117 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 z 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 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"