From 10d1bf2376027bb3dddc4f3c3c4d104b449eb202 Mon Sep 17 00:00:00 2001 From: Christian Semmler Date: Sun, 4 Jan 2026 09:45:50 -0700 Subject: [PATCH] Improve ReadMe page --- app.js | 32 +++++++++ callfail.webp | Bin 0 -> 9254 bytes getinfo.webp | Bin 0 -> 8626 bytes index.html | 73 +++++++++++++------ style.css | 179 +++++++++++++++++++++++++++------------------- sw.js | 2 +- sysinfo.webp | Bin 0 -> 5626 bytes workbox-config.js | 2 +- 8 files changed, 191 insertions(+), 97 deletions(-) create mode 100644 callfail.webp create mode 100644 getinfo.webp create mode 100644 sysinfo.webp diff --git a/app.js b/app.js index 82a4905..26763d2 100644 --- a/app.js +++ b/app.js @@ -211,6 +211,16 @@ document.addEventListener('DOMContentLoaded', function () { page.style.display = 'flex'; window.scroll(0, 0); + // Reset Read Me tabs to About when entering + if (pageId === '#read-me-page') { + document.querySelectorAll('.tab-btn').forEach(btn => { + btn.classList.toggle('active', btn.dataset.tab === 'about'); + }); + document.querySelectorAll('.tab-panel').forEach(panel => { + panel.classList.toggle('active', panel.id === 'tab-about'); + }); + } + if (pushState) { const newPath = pageId.replace('-page', ''); history.pushState({ page: pageId }, '', newPath); @@ -239,6 +249,28 @@ document.addEventListener('DOMContentLoaded', function () { }); }); + // --- Read Me Tabs --- + const tabButtons = document.querySelectorAll('.tab-btn'); + const tabPanels = document.querySelectorAll('.tab-panel'); + + tabButtons.forEach(button => { + button.addEventListener('click', () => { + const targetTab = button.dataset.tab; + + // Update button states + tabButtons.forEach(btn => btn.classList.remove('active')); + button.classList.add('active'); + + // Update panel visibility + tabPanels.forEach(panel => { + panel.classList.remove('active'); + if (panel.id === 'tab-' + targetTab) { + panel.classList.add('active'); + } + }); + }); + }); + window.addEventListener('popstate', (e) => { if (e.state && e.state.page && e.state.page !== 'main') { showPage(e.state.page, false); diff --git a/callfail.webp b/callfail.webp new file mode 100644 index 0000000000000000000000000000000000000000..46f26c9866bb024fac583c1ad5474bdaf80fb9e9 GIT binary patch literal 9254 zcmV+>B-z_iNk&E06sw)ibNuzp&T6#L?{FV zwg-1`)E~iC{wjUz@#omGt^HH*NA^$qKj=PB|F`WUpMTT+zi0O??r*goMZ2=9QqU>v--GW}C0!NE!?zV}qrCD=3EQ z331ZotgH&&c2V z`kCdlM~vJm5jmdepFYyFRCv}4vgw8(%Q>j-LZ483x5pPPI*6iI76J-)p%0L5r2dc$ zI*pJZQQ4mjI$CnAPNz>;Z@?(-8LwIDQ$@+tX?)QLNI~9;TDqChm*9BF9k3wPOWJq64i=tU=f1`w7G-%yC!^fu} zE;HVI7}wjm#gCTkcuI<{JH*dK2N0_Yn94uv$ZiepM1Bssz=A8DCu-Zi6Hb(PdalmZ zRTST3nr|R)jd%wl4=vUZOQ9R@SA1?)cYfWa!(XtqAgIu! zOZsqXBgO0Gc)$Yzl7f=8n-uo!K1n)5``WCoP$En48`)Opc?9F)t4lufa$z@=VgD+G zn;J$AnI;Zm_FEn`K z@hI5QeI13Rej@jI(N3J|mtz#tgj0J`==W6W+{hIKyVl(O(cJJO_a54 zExS*TY9Y68dsJF4{Cnl!qLnzs9h5 zzXG*K=8CP!4i)p^SnBeuokt9#In)dzA1C-H@(DoUWLtGK4VHNp2wQ1IGArWiQppze zFl++E!E<@?RP${}7lI3E8tfvsPz6LWK)4zVJ1&6Ui2r&EAjvJReVFk@zDP?zGk&D{ zM`-=|H7;_mAHoREgoTYuSyrvX=0C>9nu1y&*%r%hoOhg^n{{E)n2^Y+m3wtK%y%Im z6ZvuCE&xU6lo%TpX(|PXjgYz}#{>&n#LLGEQ9!s(8uP_9)}TDAgsEr?~pif3Z^=6{y;vQo+z3Cb$ZWl|$|bU-S)ALO^s zwVnVFvk5n>g>8d`V!vFuIybhQPcdBqI>FNj@Iw+K!|d#W3RNpFGa&gj1<4MD1(=J} zUlyGtS|TzHn;PaUay&S`KhX*=3T0p(H*`Ux9hOB&&Y;zD_wv1wjN(2o(`dAYD?z0X zTxFGXfwbxlgx$silvxExN`5%O>>+^~rF~d zy15T>_3JHbD9PsQ>zF4=25&3-*S_-fFj$Y||JhZ9L4dHd#3duByfIU#V%o z8X}p=nV{J1`MS7D***RcyvuiV3fH{Gn>bc;#5Uo|-tv3Jn`4}aB5tY%?jA>)E+A2} z0C4?e^;>mZL283mDEA-%+w&a)&aFf)d<`HmB%Qy^7>PbPAML7~Y%0t%!i?XfGL#Jz zr)0B|z&BmW;elb2zg*zjw7Y}_kG-UGg-6@!)t>gk-r=;?4#AT+K;oyso8nU=mg`n* zP@fzq=??G0M@p0_nr!IQ@`h@XRxEwPlY?vk(bg zQ?H+I9mDSWlGcFa{tQUAyMGu@<&Zjl2}3t0*As**Eg2w@pwP+=jvi`(ND&M&!i0+b z%#U0>fXZUkKBxi2JTR;?h$PrzuV#om#F17$Gpds_vF-@Af#E|uhzC=kk07iKa~anA zM>Gp@v1mK0ZTC4*1dPH_5&+tQY1xFfIrN0P?b*0#+N|sTFb891kag>X&Nb?86_FeF zdoP@rh`vwyt8q@sjlVLBf{pReBb6`d2g6l0mF|_go@41~7wo4+`r#zS{Rp~rG{Lvv z*0^T@LzEaIT%3M+g))XssOC4>#fJB;^#%i$ZwPuP|IRB4#LXDs&>jvH|5H8Llx`H1 zgAuWqKy^v!nNv#?p~L!!?_q?P&9e*wdu$P^T#!fF;=06Rf4-301F`$+pJ8;mS zm%ygD_hnAT^?btQJ32|@?=u0r44rMrH$EuBL+!n+|@|+;JJsL`GXD-g~M{d z%Je|w$gxa0Q0w?rm-ePPztO5vZA`AfZlMn{xFq`bou~bTk{$&6_m= zm7O-0Bemz6}QWhFaQ7{t$Xg@ca&qGgnTKu zdFG-H`$d&^wFAgBGGFpkiEHmRC@aojdn^Xen3(Ypnlio#4~(m8AKis~beEhgr}3c( zBE#-1tuH;YLLFTv@i!ott<^?8D0^WI<|^#HbmhwP~|635%O#g|k2x-fZIU-&?lPGK5bRL@nN zDGX^Ahs=sCK7+s|``)NNzs z6#GkR{K&B+lyU12!$ZiGL4q6fuXS2po|x8lnvTwMw~4Hua@T!S@m-oMXQ~#;K{Vf! zq&MhtI(FYhBM4smK1<;fU^I1HWejmb_eW2*HibJyXOACt9T-vB&nq6L!s`Uk=`;Rg zwSOzPIIfUK#yyq<+wzy;3#2OQ3Mb8Et!*O6-s;Hm`bW+`XaMAp&?)|8t-*In!Ct{> zHd!`|Fi*I4fp|ukC61QFWr&-+w(a^4JGfOC64*c4JQa<^!weyMKB1wjF@X2En}z36 zpB6)%$ys?=?^PaSedV|CJ(~evB#?v&D(i7zpgZX6wbMAq_>l7bB+sbRKDW$Ag9j~> zJU!S8TPvRQPUXFaSv~?sQ3?F*aw1C(M{s?Hn(3I=@q#!C`O|EYE7Sq(?DT8hET{@M z+%ZhMX)Go!v!1ur@i%fp;-)a1&CPuJwaV5l+OLdlf<>*1aZK@)J$ec~y2QFZZ6^!C zOm4E6-D?fZVcPmkh~)CFal5+|!O&e&zCmg@bWMTuz4=!*o0}KNj)W3nx_1h2!QYnS_X6?qsk==T2U-yK9kry^q^#IdeQdf7901cttv z?6THO%3~>|ysYYu=icg!KyS^!MQFlzmT{=YcN!p34YcF;n60%>&$iZA<2J%oRaAxa z9L;5s16pVm$sAIDq9MBT4Fn53aW;pn6rG?Hs(T}q&~7bRqjcbm#N+VlrBi*3OxV&> z68wpiGpK<3AYP!oF_^qbZ8IAET_lFEqveYclCX*z7zoD5f@Zbd3HmX{66tg?90Z zK~+&U$eU0A_I)Ujg6-r0J#EUu0#8r-K_EqSY8XZ^uCU7apbmGq2?14ZA2Gov}EoV1Gg}2eztNKOP zwzmhm5yCyTq^5&nayUXG4AX+6+_ZxesfCY}8dONOvi)`ee9;fo5I%E@kgF=A*sA4A zU2<|_JDKbJ`HZlBJ`mBd0ce1DzG?cE(EP_{_9$J3pJ+s`{!EPeP0$Dm=lzT5CouMe zq0Syh-c+U7?ky4XvBHafZnhI(>-((R_%?XrQWQ3NAG1?bxX3HqXXhBc zXk-B=p^s(*d1-+i`ZjIksyUwJgG1*%seR)SNl*>Ss&>~u34TO%6Yz(gBe;o%wUCXc zbWCCQaJ*9`>5Hze`B$zmO=eESvjd|EU0TgVIc%Fe+VtQKPXxm-wMH97|CoDvX}yy* zDI5Wr*|FFVm(V8_&(rTO64jb5Ek2DEbnEu|t~~S(#l>9V-BMTz9$cDCmjG!KkT@*_ zRY@s8liBYtFNY8?;L6yUC1Uw0~g1fu(*^REkL95G^=rZu9ztx-myq+-*ZJ^i=3 z=r3(Z9Yp6ZjM;iSPUVH{5TI(#Zc=EnMZGP@+*1{}=Ci;pMt zdJF>#;xp>9`Qh(rUWZp!dn`_l?eV zc>PomHz{0_IG}X%Mnpq03JmLF%vtRSF93plMZK$Eu=c7ywIqcsGngOThx3O=$^1hY z?Dq0D)n-n-E2)banKZX}xDn}c9;M?Zhev=t~^ za8C(AN2fc{jRUHnF?M>F9Vk*u@3Ht!+D<;OV&`zHu%r9YKt@B&hL&vxpB8R33)SM* zMhG-)%b7pC6sh7gqROOhl%)&>c?*X>a8_Cf8|&HWdqvt-A_`>U`n!RX!xnL6p$|L_ zbNo}be}rc=`DY}Vjh2UszU)t;p&;a~0M+acCaCYt)J)XLv>;SBKpi4H$%8Fa zw>t6hnd?NcPoc|0!ZaBZRJW60T6t8=y4WHz1_Gb=?^QVjy*OXzyj3Wu4o~) zL)M8pqfzkg`c2#ivX<9M<6#WQnhqFmf9K6A2yo)ex&+>NOj?P8;x=oYG64QZ>c+-= zO~wsI6U8GIBu7KcH{js>H!la?KY4C35$(+X9U^~AE|xx#YS8@-!bmnwRpW{#4xC>u z#P1uZqctpSm^OF-)UtL{%p-&vMIyS;h(piGY)w1U_Y5*=+`o?5AJlx?vwE&p*Mb=H z$JuMABYi&~T_2O|!=1gJnGe|a%Q4vp{_)D!KzHEr+_CwR| z`REul_V4u5ANiZwQff2~AI9?9bRAz25oxU*_o{&R2Sb&sKgURkn{pOX7fmoNUw|&Q zvJDgV>m0@BPEE1F3*8gKL(U>mdKhS3V$k(d6e#Kqhs6_XjK4}{)&m$IAn~{k{e7>G zrd={@F#n9@@g?8f7hxzo%ZQWV5XI1cBA)nnPfFuGa6Z~$2 z{lLfyPQ@r1Ge`?{>zf!y(EqH#GB%4Q=(?R>8#XmtY`|>Xfh^z8aLr@^#UF+IE`+GQ z8A9NYj$vxIH&AT#1m2?~FrS2(KiKoTFXb-k*V)ms^j^VM{NI@A5Yd=9m8D@39CPlq zKpUqHi|;vz0Lr1s|03*j7)F%Md*8pY0#pZ7bvQr8ofnI)ammk!d@4Q*C`iKKpsiynA(Z zICB(8!J2_pwXPdf$**!J0wKsJnw{2<&Uk%Lk!TuH0-m`3`O;Fwe!%;Qj7a}VDGNiJ zGB1zr7S^eCkjf7z1mxo(nm5lcC5PAP*=GuxmU1dz=n@u*h3F+fUT#@v!iO{P5J~BQ z8p2PrudV&V!N;yuf#MVI>(J@!$`|nHEw*^E;&^)dG9tW*P9zDBWM2wl5#Xw?!ubHx zm@r%&)JVhkd`WuDWY*uPD`6F`QIViuhdzpu%J#1Pa18!vD^k@M_XwYsfz}hJVb$0> zc1VDgi|{4FbdB8RVq9fh_Z#1s5Vr+hq?T(ddX|2KGRHqiIIVDl07Mot@2|*hXmnpA;EIn_UPebHbK0kwD-BCxd4soY^N~_fa~7bt zH|Mo9jZ|M6g{0~UyX!tDM+#Y(?LOaI+np@A~W>;Ay) zSDNAWwpA-u?x%o#Jcx#*-%oFkIA((;QnHpr4VmWRVBrGxOP}LU(SD2d@wbM(gLXm2 zPxy3a1qxqhZGxO_Q~7Dk`4%k$*{mls#?zSsTJi@F>YL5>xgCtq>}Ns9@*|87Wc=xi4j?&^_Qap9x@ag=eQ`NfkS4>_G0nWgS;@%Dl4|FEibQpJA(RQv_VX$|B@QU zQsdEii=46B6W&8$SfmB;U3>~KkS~jy`8P{7l@8bSS-B#y5E1F-2D)|if_|(LkN*dH z0F8wSh&OfzvE0B0#@+}8z1!Ah-taEXwDC2yZ!jl3$X_HSr%Kg?eNJfLtA~c)u^IJ? zx!;eS!0VAw|APoZIqWKAICPHFBjAj=r@l8W=S@l617O^07V;RMMgXv!rN%cw_&&L* z2=x)pd&q9-UwZd*Zj_nB2!$~|I!7Hc&}Qfw!)|kys2Wd$Wv+roJFd|SJ__3smI&ll zLPrYV%Me0435KJ|eT`klyf1=*wsWDz#q%jvWCJ8j?afeo{%h3d$_i{NH~tq+Ju{(6 z)zeHL?T))294xaH^(6?l2RvG4DxSyD$Y`qU-@hcUuN0egxo6jEG2AtFgKl4plIc8Wc#1Z>(fd``W*L@{%7cHVbu}KR4)hH@H#XkDY}^HKX(81+ zs?AX76))0_9d1x8s6kYfBNH2^>=6LAsm!1lZ0UwzYMTO41J5U$QcUPX_%V zeyd%h6l~q7`o*T=!X7c5a1^T?ppvTpm7Ru}ai`D8O_>QREjtyt1r9U2SZP&sYUOb4 z<4NQ_??Kmfq^Pj0B;G$97h_OjsMYJ!g$#RpcryRU65f}r?7_ge`46| ziN#JjS5}L#9go~uDB;vQwi@qFb&4}fIzQhdXspTK+@AP}yc1LWc7?mU0NH=nP4_Mn zT1*GX`(G<(ERF$rXVkq+NK1=mM4JBlf`OEO#dhk!e-^|ZX5d<67dU?B zFlYBrTy~qwuL1XQjPrMAL`^xP!{4g(OoDa0YHXjfb3qSdx;%(HiDHWT(L^Rco0D|U z;EWE7v9lp0=_hN>Df%d}zVms%6wTS4H+zkv$Rmub-XoE)3#EJ#Z}7^-ZYAA^a|YUk3mtiG zL{4{gtHp|V+Gbkn?u`rH6IZlM>;I@86s%k*`4#5U`wv#7-UZbPke#C>u474#E#hVC zoVAiL%2_{vl+Gfl%Z_i{(j)~=F&J{;@e6hLOyob9jsYDz>|1vL1;4nd#$%PK8884) zSgXDkpCeu3D?M2WU#b1kL~zj;F+cu0G*Ab)+8a5Q)9w+DSh6IX!VPBnvX*4Ct6@>y zPDY)yaz!Th*yM1LeJFGD^!)!e^?k8^WBxOMtvw)nn`(vFkY`L*YzasEJpDY5TrK*9 z@4qB1k3)u?RT*go3@HusYvQB&Fw}``!Tw!U?YW!cR4?jN%DLLVzPedvBdyrBIbHd7v|Bwk~Ow-T}46P#$V-Ac`ocNYqqsoK3dx-#!blKmozOu zQ_}dD0LrF%TCowsX|!Ju@_ZDKvf?5E!6Eo!u{^qyD9ZM*1Asb#EPTOW!7nD8OU7M^ zJ#24+^4s7dw$LBene-`GDgYC(XZa{f;cd8<=KCiRKb&K+m~c z)oxewlT_XLczEm^K{lbh?R%h6qlKBm*edn3DN<)!ONj^A2}1R zgsMQz$FjG1sOkD{e$Ny?y3bg6Ealzju!Rk4l@V765fIR+E6-za=E$WyEzI_Ff1T=A z`^(WHLW%03EyLnVEK&A59^SBDd3WjAR$iEfBD$H6Wt*W=aS&WGx#Wbhm%@>=`Ryq* z7gjCx;|WNf=1C44jx^O6I}zG_kEIhVGkIaOFN}A@QPKxRCCN8wBS8k$21GeVhC-O0 zrR-Q?9WWNv5}>r{MrhKNQ)Ijz-Ks)g(mLJ?thafokl7 zP9;R%8QQ|MmJwd7%VNl2c(2dQdm~HFkdf9fmUJGsx2_Ab;(?VtTtVSE>0pmhWBXiP z(sXLT{*|)~j69{lpdeOgkmuM4z$Q>P*wL9O81iLL)0H{`4)J-b7y6I@2PyatW$*5r zFH`5B$;3z~`R0B?8gy%vgD6-?u?b^c4RTr|gt%&R9jD`rNVvhQ%fzN$h5x%&4Cr@| z6U0z{Gr(Vfjd5CIBaM!3tDGBt?Tq651~{(LVh*zg1in#YNF49EwAjK;sP(1l-3avU z(>J)>;g^hmi!cmbO$WFE7K!RfcBE*@T`@FspWdu6J)^Ti8j;AWX4yjht>h8a`hE*F zFHx9wTI1wf@-vMLrKorJ2Vxx{-})U)tk%2vY8L0u|8ZY+S2cOQih$|!k>QngT;VA@ zwjm!M-jn+~1}3G=N5iuW{*S|9RHBYC_3R)ePb&a&4GIVIr9zBf%{Un0(&d3uX4QS> zA!8L=#MyX(-m*{=>yg}Lbi|H8TarHz{QL5SUQbUYx4p?($RbqH7Pn!`P}zOuom60r z5sVc-wB%hywDLvv2c!_y14|1RtS+oXFl;swzX(lW(uO@+O}?Sv!vFqU`17a_Dt+bE zuR0j7*VHwvi`oRk6|07XG(9?K0zPR2-TW*x-EeI@OnA+gFN~*L3|**hMifsJ?ZM`f zV@ArOHGk=Ar4pI&#VRCS9a|Z`jtfE!V|l(TnDMYu946$e>3h!~A>j37`_XKAMqbuCj}{v>;x zFVYcP9wo=hiZ*%FMNSY_C}{%P%BMtsZ$NAPwxfGP+=h>sYmm8?Mf|FO8se9bV*S#B zy(@$7fu)m=6B+c}X?g!5lG(X;{_X-XEMRS{Gc1_EekU*p48?YvHo27l@IU5Pw!t+ zf93!0|6lo??JM^$_TT#d*L(&4JpR}JC;SJtC;wmg{{264fA;&K{<#0pF{AVK#uyyY zJt?|mqfr`4v4V1cD%8syx;^ZG25_(1ZZTULJ_)PJ6L&L?Ki5PwnDbFw~L>Rat-?*H^xYB zO)A+Z>&U&b;6wUuwu)WXuuyh3WVJM;q~pROA{}P|4t}|K%p`LFPJ|i5q~e3%1aHnK z24%g0NX|w89(V^X82Yq&s2&$j~6`WfRRArD3 zYEYaTTDJk@TQUNUscV0JB`i}+cV{loqhr}@i8jP+W<)2=vCAiP-cq=2c?W_SY)fPU z37|CMOBx^wI7qn}lW3-dTJVgms>idhOC?I<%N0R3nH9KtGqBylA@3-5iAltDEd|06 zamV{X#DpF#9*%T4dn7Qe+^0ttJ{HS|8LlP3{Kb+h`Rv=f|Bxsna8K6?5$m~h5 zvJE5(9%4=>8oN;o6bL=LcOrm6maxH+_~fhASD5VPhhf%{E6IzKHFV_fx#{BWaCiGI zzW|D*f?NrByGp@of(vMw_VQk`w~+biFaZAgXt-QJG;#p|$N`xA9WWeO!3bhCFTr{(Gnz z{loq8zxyHu82EF}-{v!_rWz{xTD8;V*3S3OCKz6MMBTuqHhHNVWLt_T@Lf{ed*fLN|37+#sA22Hm%a8Grk7X z#I(gRAt25^F6$`H<9Gvzh2kdyZYvooqhvLIc-u#82r*!!hVKGF8fc+WSz`%kAi@1U z-_BI8fh8Ad0Rixj-$=(tnpeL{?7E$bIEEFJp>2JY}c;ETl~7^$)il zzTHH56mP{IdzkVo!77=bs-BV3Iu)Pft%Tkja`0Y7{6oYVgx1$Dnk2Q}gaJ#5#b>J} zu%)xfx{KVDuy=;CXhKM17!{#;!$i&rCENxQAL>imGo9iB(A%(5U#k_noAxQnuB_74 zC1bO^s!pm;bZcuGOVIAs6=Gm3?|*Lhj>+ylFd6Q-wzRjm&9Vk(kwU@&)pJW#l!RVK z(Q$d=asY9QL|ch-Y<6l8=o^rSQTZ+eGJbK#B&0 z&`C2cXbk9C3OH_Kzl75hDI-CMj3RJED#8$>kpEzHrD2j&l8eC;yo zg>5byZ(bjvqZ9i@TX=@hKlZFG9_YMx`>(PZOyH&aIW7vWi|tm3qCGN7>$68$?k?gl zu6Lg52*>ySBAdJVkyI;YT|7d48^_c|%8`x$92y2(xWq>xb&(C26F7hfmRDnRw1Su(8cWyICCX+cV5&?e->+mD zz0S5D`SzQ6@raHVSq?wh9ei8lPlfD|H8A%iiEb^L#J4$X544R!To<~wKINPRd!vAm z)D>Z=34PN__O?GsY-V+oQat(A?u#7@(b}&k61;(K;>vh=RF8H-0kd#2KiksqadyWO zF3vIsQ#!unBg%`@)YVa-_8iJ@6c`G%cm_~XGiOw@?A9)Eq|jDG3a#qKLkA||(zlE! z^<0-2`Udu+B|16|yV=d9k7b|%cvI`^%&5nZc+3?)%?Ww~8!LtcE_3h5tXrrt6)qpo zAjoM?SeYRpqxqgvu6MFP+$bq>&}gN;2bXm=9i`gB{cucWgw!kGfX+EG9XfskgXGcMmw(*8BdD1SEc4-2p+Uv?0^!YVdp3Rb zKE<#9soj#M5uG%3vjME*gTJ4Cp8g2&J;*hR;pyAa!%~^c?x$KutamYN-S4f?d;b?) zqK@>piiG6TGen8Y1ui{-5D`#dh~g_AZ;fU|2sz3i9QlaEFFDHbmamL6{T42D`aE*4 zy?yMz@3dROTXde$jos<5NV)r2wt~;`r zQKi9Js{kHJ(V)^Zo}@g*c6z;moiP2Yo#d^G`EDC%vs04p-&s;u9=B<$bV|Au|3v-V zo>T=hr1zD|5}WB%R(S#_3AkN1tkOjqbG~RCf(7}TJZ?E`B>bEGLwHIjWj2FF*;Z9V zv#}ragpTIxVtX^wvt4nL3Ri$TrY*4viOYbPn!sV>c#9U+m4Fv!q_yt;yXJwv>R$|!B{=;$ik@asu_-1TQOq4FVqgMOh+H@f=EfT3@ z9|HoPSl7$Ec{T=ik3Qsf&FFXIzX?V|j6}jz`&`Y| z8FSzq(*CEC9srv3VBo2%BVo*|!m#KXCRfEZtVaC#R0s6xUxJC7_@eKxd1t@>SO8m{ z?98>J&EM;eZPO2-Xr1V9sC@6G>j4P>o4Q`TIJ!n%)`d(c5Hz+ShRSq(?lh6oliTzT z)=(Gy9bkUj-ckQr^Xkg$eHgCrEsUJdyM8Cj@8Nz-9h9fYbHzmkwMCQwTgZG+n=JvDC>vlvS+ zsqJvhfm!vEKoIbD&I(+UINlQG=-qBdYh2^9x)&^7a_1#bASKMV$G%m7>DbWvf`666 z5A@((VU->yV6x5u#Avr^28GsPDRi{Ks;MR?LC66Oy=2i|d1RB!fS7u#{7Bf&i4*j- z^3Odu1*7*b3?+TO2*u462N<@8F1+0wFm&_T>ei|}L^ot5*R4es2O%r7L z#4Zk)4{I(8;AC~5>ml?V8YHNWjsvyC{($9_ZU1?%5j5zDnu%6+Je=V}l$68nLlt{~ zz*F#x{1bwbQ$CaO>u@^OH1pE7`BO*iQm0gPW^TcM!{u==F#G(tzH0)M4&=Ty9pb3x z!#RgF-DFV&YGUl7Wkk$ciiSW5YqR=vr{Oi5CZu8(3W#C9A^yL?!So8tBSy(JE#!A? zV572a!kfUd^^>MVl8qUEWFw{~ZYE*wW4*vBg?{vcAU}EYB1eI~5<4pH9r3EuMJl*R zk#G5t&&7Xt55d^`acTw|d4eDIWB#k+E;6>cAE@+|Ozrjbl*5zC5}Jz*q6gkKfq%MC z?;*GX6I$f{gO5qcD}J#pTkJdfm^6`>Ik8YZKGh-Lx4W7sB;v0Ep~rO2>bT9s=$kFN;3eIbfvqMP1?_G9+|zk|*QM@x27m;BxmC>W6&bj2wc zj&MQ%iBXFY2ogiw9jF?&Krw6}M%$Qw%oTV0Ny(Dy*zYJZmGq*QKi^H+@#6bF4>7@> zm#g?5bBY3NBObg2F7O{46ANwM1X*|fo%@1Ob$MUWvOcg_)E)h!AV0<)TP<> z=_|i*yEiPg5fNCq`4(!nW%E7#OO)=85^1-S3%d(8%=btbs6-m2NyW_f)g6>M

>4 zD-JuV%0-{N`KBA|gu<$1%hj49FhDRd$R8K5Ol(U8ZeKQAbXAW6CZ%1YXketAPJ6Ia z3XBO4l-d_z0QTF1knVeqm1Wibc-&ZqZRgeU-Ayp*s6@AvFlySekZ2prWr+ zg`0>zj>Y1DCU60Y?ZzQ#I&a+mSaAiqD5HF+lMz>}O#M#V<*Frbv^TB#n0;`jYdo1} zKrnwG_uZ&aN)cy&bz}pTlB~~VnT1XqzI57zJEA~eoImC8iKLW6Z?H`zK_R)XI~P)z}9Uyh4-DrdDlnwU@PA6aENX!S?mP?|FIP zhdrzSI-U~it|7;9ugVo0WnVsreF*5 z%EID0Fk51gXs5e<#qZ^A!PkHt8M1)kqjOz@1{UWwZ0|lbNjQdpcgb~XmC_@}Ir}z^ z@mv6*4M(B`l(PxDjL8GFyA(CqHO_{0l!2izyTHoiJIe5CSN#_{de`uFiY&MRDAli- zx0A07Xs=!E8w9{?BO_~960rhm@Dt4Pm|Ds#hsWyq&@y}QN}q0u#e{f5;!uJB6HKr( zq0n65?ZRV7Fw*7kL1lw(wVR1_yNKM@p5@)v?qqq~B&t?9Uq9iNs;s(%YQ(iWhiy-5 z`8;vmQTRc|+^jL92;%NO7P^!=qot95aR*UOcYK;EFo5Oiva}qxCFZMj-n(M1HldRe zfuEIj6LC1G&d-mdA16F{(*$2jk8{ey-P($JeP#PWH0(VjScP<(q*3#SPW`FFwTVr) z6=iSB_XZcm8|=Gv3ETTMmf-BVqVhv9VW1>?moJ^V9$fv`2c@}2Xwt6#CV8hO({8FhG zFdx`8J18htGwM+sZurztchmm|%)3F;`OR zDGsDWZ<_y5 zTwBe<8kN>5CDQ29>TGFC$0)}hsG;9!;jDAdj;5IZK*ua}=gf@PTSUmPuvP~<_1fT9 z|NCNToO4Ma1{ImHF+j6u8hgLC9O5cmygJ`PM}4RFawkrNmVT$VI6hCe6JDI0`w9ut zs9QA=jOTvx(xa7?R~|sUifX>Jn24$@8&ueDuGj`z*PkN5+=5zC63%uzO19FA00is| zO{+{#=AQ`&|GhxKFJ8>{yJsptW?^y7Q8g}kw!F{7n$$cSSF?9pK{R@^*({lcoReu@ zSu$cnmMpYSShEfgcu_w%CY%NoteqMZW6JRGjMiTGT z@G60iJK`Zz<*TxX%_&NM0s3IO-i-`u6Bho1C}uP6Xv}aP1L%#+zMw(WZnziXHfxy= zd|b5POcyZthiW&N+Q0P%J^W2j7n|8c^0ut4iFZQ_6VcZz{YfYlO@k}Xf2OEGw%UYO|U+iiIYg7$ULssOAoL>6R9*u zICt^&6iwgp_FxLsVv(qUI`vPGANebM?H-u2gKA@rLpqk0dEDp-^45GNg^Qc@P|#fk zK*loF1t|+FZR*0l5!_7ooW_r{S{Q5C-=w70Kn_hA*u^L?+G)Fq9JqrPjd#&PFkV-T z1v`E@X#3Z`L*dFBDuE0>D`i+wbRCiISzqzawc#wF@4z~MMY}B-%u%92zskPzA?)Ax zdzI2~cp$~81Z8V`S3{Qf3CHI5+qzqA>sEC0AU%D~C*;j%W|V<4`!3@ynD$6d895ST4y?Y{(Y%`NU?U!L zDq?3}nHf1Ixo!sImDrzY12TiM_RT$`pd4Gm^vk-x@sK2vbM%chgl2@;L4)N}+%Dab z&hFbq4Q-i&Z>4;=V*(jp(RUUq8oN&4KGORu8cZTCv)`0kSMGmz>p9YYj475ypWGT1 zQ1$H1{Ni5?;y0lQ#}^&2Lmo9rNj_pP$G1SKun+zfx=FOYurp@dR@M zXa8fAl91YYxceh?(t0XZ=&|3g0{pHcnWvKLOULDsP&x>zu|Cn;?P~0$kd36 zPB4s%P*&EyE6~%nrkTe``maVRZ<6mOGjt~vO*HSVqViNM^}Eeq=!D9l>$8aCHR;LI zy~Un5q#P@~7yow~Pk@G0k5R>Et+#Y<>`!i(Z8i8rZ&l&iE;pXz8N$7hN2miba@nE4 z5{Fv^U9EQIp();ymz#9KUv|Iwm6sEM`FhK24Fm8=$s@mm+fpvTM%NELTS;0WKB@(c zbHbwIKe-9JY5b8oGU-Hzh^?B3+xVwe?4@)H5!HkhuqY-SDgONT6qL(d zBr+<2Nv9(p`t8NrdpmOmXrx5N<{Ua4TY| z*QG_1uB}DQf*CV_s7Sm0E|rUqNQx?_?L=$PqzcA25k7`59)0j-(TC(32nL^73Yvn; zy1eJ0fa9=1=Z40Dd@edn_W2RVsPh8?GZQxcE+1{RHk61xYWl$Lh`5<7a9nvLhOPKfh8W1EggK;k%q{^P?(8tY3E3LT zCNNA{UwpOC{ZlkgfojjjP7gqL%3EpDG0D9z*sv_5bwI^(pf3%I{r%mIt8Y|ZtvCy0+!mL&#NG0mvI?kzZ{c?x3dn#7l zO4G`!Y09(_MpzjLHR(LZc>`$($UGW-<&`GGa@FUTVD$dR0a zxLNvTxfL+33Tx75C>x(PyFHz3EqZI$sR^CRbStas6h!kMU~`z#e?E!{k3X`Lq?3#E z5Y82-D_D)3W{hI8BwzFdS9WG>Jm&>`P&n5J&cW|#q@_UzclM{msDV7iYa=E~juQGZ zKKnJs`t&EEFfUOUt-jAqydN$?<;U&HBz|tw)(yB{`C81XUmvEE+B_4Ky}xjZcTXs0mo(-4y3n__0m%G>3lKPGBGlo2l^sx7KAay*nIR@eI^i$4Zug(4t~|jT-xnIn-XAyWWAo^5B??8a~Ca|k4^vc|T?a^r8T$Q+1IT-HAhEvR~bEez1Bji#+eC0v6 zSF*Y1v+#!K7|%2eLF0)~Kk+#Ca-KwoVZ=B1Exsw`;LAM6#&Nf`4HlcBgJ$Vis3i{7 z%BSiKDiKmR@gKo*vck*9%WUJCNG@sROL+}tMg0A+kN|VzsE>J0qzKpUWq2%Y(YFe? zmtx#^CFOVUaij}2FfVQTw5{~6_F!KzaL}+sO-ROsE=&kJrI@pWfpE&60<(6A0g1LD zt*=2o!`44bH(q@!ZF%m`)03#XkqStDc}QJjS}E>M){uDaLoeQ@WIfrzA(a20^)6M? zd0;^V-_~CJpsP|vh=!0kJ+Ipm*(7gjKj)F^Xa+p<#M;$?`n;F(dIn=mhe&z_Q0xEz E0I10Zga7~l literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 3600ce5..0fcd9f6 100644 --- a/index.html +++ b/index.html @@ -82,21 +82,48 @@ ← Back

Read Me

-

Welcome to the LEGO Island web port project! This is a recreation of the classic 1997 PC game, - rebuilt to run in modern web browsers using Emscripten.

-

This incredible project stands on the shoulders of giants. It was made possible by the original decompilation project, which was then adapted into a portable version. This represents a year-long effort, involving - thousands of hours of work from many awesome contributors dedicated to preserving this piece of - gaming history.

-

Our goal is to make this classic accessible to everyone. The project is still in development, so you - may encounter bugs. Your patience and feedback are greatly appreciated!

-
-

Frequently Asked Questions

-
+
+
+ + + +
+ +
+

Welcome to the LEGO Island web port project! This is a recreation of the classic 1997 PC game, + rebuilt to run in modern web browsers using Emscripten and WebAssembly.

+

This incredible project stands on the shoulders of giants. It was made possible by the original decompilation project, which achieved 100% decompilation of the + original game. This was then adapted into a portable version that eliminated all Windows dependencies and + replaced them with modern, cross-platform alternatives.

+

The technical work involved replacing Windows-specific systems with SDL for window management and input, + migrating audio from DirectSound to the miniaudio library, converting Windows Registry configuration + to INI files, and creating a modular graphics layer supporting multiple rendering backends including + WebGL. This represents years of effort from many awesome contributors dedicated to preserving this + piece of gaming history.

+

Thanks to this work, LEGO Island now runs on over 10 platforms including Windows, Linux, macOS, iOS, + Android, Nintendo Switch, PlayStation Vita, and of course, web browsers. The web version uses the + original, unmodified Interleaf streaming code, enabling progressive content loading just like the + original CD-ROM.

+

Our goal is to make this classic accessible to everyone. The project is still in development, so you + may encounter bugs. Your patience and feedback are greatly appreciated!

+
+ +
+
Is this the full, original game?

This is a complete port of the original 1997 PC game. You can select from multiple languages, including both the 1.0 and 1.1 versions of English, from the "Configure" menu before @@ -162,13 +189,12 @@ rel="noopener noreferrer">LEGO Island (portable) project, and the code for this website is also available here.

-
-
+
+
-
-

Changelog

-
- January 2026 +
+
+ January 2026
  • New: Debug menu for developers and power users. Tap the LEGO Island logo 5 times to unlock OGEL mode and access debug features like teleporting to locations, switching acts, and playing animations
@@ -264,8 +290,9 @@
  • Improved: Backface culling enabled for faster rendering
  • Improved: SIMD-optimized z-buffer clearing
  • Improved: Edge-walking triangle rasterization
  • - -
    + +
    +
    @@ -745,7 +772,7 @@ diff --git a/style.css b/style.css index 3b6e82b..5cd85fb 100644 --- a/style.css +++ b/style.css @@ -677,22 +677,86 @@ select { transition: background 0.2s ease-out; } -.faq-section { +/* Read Me Tabs */ +.readme-tabs { margin-top: 30px; - padding-top: 10px; + padding-top: 20px; border-top: 1px solid #444; width: 100%; +} + +.tab-buttons { + display: flex; + justify-content: center; + gap: 10px; + margin-bottom: 20px; +} + +.tab-btn { + display: flex; + align-items: center; + gap: 10px; + padding: 12px 24px; + background-color: #1c1c1c; + border: 2px solid #333; + border-radius: 8px; + color: #888; + font-size: 1em; + font-weight: bold; + cursor: pointer; + transition: all 0.2s ease; +} + +.tab-btn:hover { + background-color: #252525; + border-color: #555; + color: #c0c0c0; +} + +.tab-btn.active { + background-color: #2a2a00; + border-color: #FFD700; + color: #FFD700; +} + +.tab-icon { + width: 52px; + height: 52px; + object-fit: cover; + border-radius: 6px; + border: 1px solid #444; +} + +.tab-btn.active .tab-icon { + border-color: #FFD700; +} + +.tab-panel { + display: none; text-align: left; } -.faq-section h2 { - color: #FFD700; - font-size: 1.5em; - margin-bottom: 20px; - text-align: center; +.tab-panel.active { + display: block; } -.faq-section details { +.tab-panel > p { + color: #c0c0c0; + line-height: 1.6; + font-size: 1em; + margin-bottom: 15px; +} + +.tab-panel > p a { + color: #FFD700; + text-decoration: none; +} + +.tab-panel > p a:hover { + text-decoration: underline; +} + +.tab-panel details { background-color: #1c1c1c; border: 1px solid #333; border-radius: 8px; @@ -700,11 +764,11 @@ select { transition: background-color 0.2s ease; } -.faq-section details[open] { +.tab-panel details[open] { background-color: #252525; } -.faq-section summary { +.tab-panel summary { padding: 20px; cursor: pointer; font-weight: bold; @@ -716,22 +780,22 @@ select { align-items: center; } -.faq-section summary::-webkit-details-marker { +.tab-panel summary::-webkit-details-marker { display: none; } -.faq-section summary::after { +.tab-panel summary::after { content: '+'; font-size: 1.5em; color: #FFD700; transition: transform 0.2s ease-in-out; } -.faq-section details[open] summary::after { +.tab-panel details[open] summary::after { transform: rotate(45deg); } -.faq-section details p { +.tab-panel details p { padding: 0 20px 20px 20px; margin: 0; color: #b0b0b0; @@ -739,77 +803,23 @@ select { line-height: 1.5; } -.changelog-section { - margin-top: 30px; - padding-top: 10px; - border-top: 1px solid #444; - width: 100%; - text-align: left; -} - -.changelog-section h2 { - color: #FFD700; - font-size: 1.5em; - margin-bottom: 20px; - text-align: center; -} - -.changelog-section details { - background-color: #1c1c1c; - border: 1px solid #333; - border-radius: 8px; - margin-bottom: 10px; - transition: background-color 0.2s ease; -} - -.changelog-section details[open] { - background-color: #252525; -} - -.changelog-section summary { - padding: 20px; - cursor: pointer; - font-weight: bold; - color: #e0e0e0; - font-size: 1.1em; - list-style: none; - display: flex; - justify-content: space-between; - align-items: center; -} - -.changelog-section summary::-webkit-details-marker { - display: none; -} - -.changelog-section summary::after { - content: '+'; - font-size: 1.5em; - color: #FFD700; - transition: transform 0.2s ease-in-out; -} - -.changelog-section details[open] summary::after { - transform: rotate(45deg); -} - -.changelog-section details ul { +.tab-panel details ul { padding: 0 20px 20px 40px; margin: 0; } -.changelog-section details li { +.tab-panel details li { color: #b0b0b0; font-size: 0.9em; line-height: 1.6; margin-bottom: 8px; } -.changelog-section details li:last-child { +.tab-panel details li:last-child { margin-bottom: 0; } -.changelog-section details li strong { +.tab-panel details li strong { color: #FFD700; } @@ -870,6 +880,16 @@ select { .offline-play-text p { text-align: center; } + + .tab-btn { + padding: 10px 18px; + font-size: 0.9em; + } + + .tab-icon { + width: 42px; + height: 42px; + } } @media (max-width: 480px) { @@ -909,6 +929,21 @@ select { grid-template-columns: 1fr; gap: 25px; } + + .tab-buttons { + gap: 8px; + } + + .tab-btn { + padding: 8px 14px; + font-size: 0.85em; + gap: 8px; + } + + .tab-icon { + width: 36px; + height: 36px; + } } /* Debug UI Panel */ diff --git a/sw.js b/sw.js index a7a5e4a..22c1588 100644 --- a/sw.js +++ b/sw.js @@ -10,7 +10,7 @@ const { Strategy } = workbox.strategies; const { CacheableResponsePlugin } = workbox.cacheableResponse; const { RangeRequestsPlugin } = workbox.rangeRequests; -precacheAndRoute([{"revision":"0ef4d2c1ee11cc3d138d408267249252","url":"index.html"},{"revision":"013ceb7d67293d532e979dde0347f3af","url":"cancel_off.webp"},{"revision":"bfc1563be018d82685716c6130529129","url":"cancel_on.webp"},{"revision":"d282c260fd35522036936bb6faf8ad21","url":"cdspin.gif"},{"revision":"3d820bf72b19bd4e437a61e75f317b83","url":"configure_off.webp"},{"revision":"e2c0c5e6aa1f7703c385a433a2d2a519","url":"configure_on.webp"},{"revision":"88e1e81c930d8e6c24dfdc7af274e812","url":"favicon.png"},{"revision":"d16b293eca457e2fb1e7ef2caca8c904","url":"favicon.svg"},{"revision":"d2b9c2e128ef1e5e4265c603b0bc3305","url":"free_stuff_off.webp"},{"revision":"cbc6a6779897f932c3a3c8dceb329804","url":"free_stuff_on.webp"},{"revision":"05fba4ef1884cbbd6afe09ea3325efc0","url":"install_off.webp"},{"revision":"11247e92082ba3d978a2e3785b0acf51","url":"install_on.webp"},{"revision":"d23ea8243c18eb217ef08fe607097824","url":"island.webp"},{"revision":"b4754844f694858c2c08307a197c5434","url":"isle.js"},{"revision":"e66ee40529da22100b5f3d55d9aa1850","url":"isle.wasm"},{"revision":"6d4248f1a08c218943e582673179b7be","url":"poster.pdf"},{"revision":"a6fcac24a24996545c039a1755af33ea","url":"read_me_off.webp"},{"revision":"aae783d064996b4322e23b092d97ea4a","url":"read_me_on.webp"},{"revision":"766a9e6e6d890f24cef252e81753b29d","url":"run_game_off.webp"},{"revision":"70208e00e9ea641e4c98699f74100db3","url":"run_game_on.webp"},{"revision":"0a65c71d9983c9bb1bc6a5f405fd6fd9","url":"shark.webp"},{"revision":"88c1fd032e6fc16814690712a26c1ede","url":"uninstall_off.webp"},{"revision":"0118a4aca04c5fb0a525bf00b001844e","url":"uninstall_on.webp"},{"revision":"ca996b5ba6b648c6539758a669e83407","url":"app.js"},{"revision":"d2b2227044d4630c8f6f749a57b17d1d","url":"style.css"},{"revision":"060210979e13e305510de6285e085db1","url":"manifest.json"},{"revision":"4f0172bc7007d34cebf681cc233ab57f","url":"install.webp"},{"revision":"6a70d35dadf51d2ec6e38a6202d7fb0b","url":"install.mp3"},{"revision":"eac041a0b8835bfea706d997b0b7b224","url":"downloader.js"},{"revision":"6899f72755d4e84c707b93ac54a8fb06","url":"debug.js"},{"revision":"7817b36ddda9f07797c05a0ff6cacb21","url":"debug.html"},{"revision":"4ea2aac9446188b8a588811bc593919e","url":"ogel.webp"},{"revision":"c57d24598537443c5b8276c8dd5dbdc9","url":"bonus.webp"}]); +precacheAndRoute([{"revision":"4bcb2b00de15518f01e19e306fe5c427","url":"index.html"},{"revision":"013ceb7d67293d532e979dde0347f3af","url":"cancel_off.webp"},{"revision":"bfc1563be018d82685716c6130529129","url":"cancel_on.webp"},{"revision":"d282c260fd35522036936bb6faf8ad21","url":"cdspin.gif"},{"revision":"3d820bf72b19bd4e437a61e75f317b83","url":"configure_off.webp"},{"revision":"e2c0c5e6aa1f7703c385a433a2d2a519","url":"configure_on.webp"},{"revision":"88e1e81c930d8e6c24dfdc7af274e812","url":"favicon.png"},{"revision":"d16b293eca457e2fb1e7ef2caca8c904","url":"favicon.svg"},{"revision":"d2b9c2e128ef1e5e4265c603b0bc3305","url":"free_stuff_off.webp"},{"revision":"cbc6a6779897f932c3a3c8dceb329804","url":"free_stuff_on.webp"},{"revision":"05fba4ef1884cbbd6afe09ea3325efc0","url":"install_off.webp"},{"revision":"11247e92082ba3d978a2e3785b0acf51","url":"install_on.webp"},{"revision":"d23ea8243c18eb217ef08fe607097824","url":"island.webp"},{"revision":"c97d78e159b8bff44d41e56d0aa20220","url":"isle.js"},{"revision":"068bc71fd65d0d0f5b0006e3eba93f12","url":"isle.wasm"},{"revision":"6d4248f1a08c218943e582673179b7be","url":"poster.pdf"},{"revision":"a6fcac24a24996545c039a1755af33ea","url":"read_me_off.webp"},{"revision":"aae783d064996b4322e23b092d97ea4a","url":"read_me_on.webp"},{"revision":"766a9e6e6d890f24cef252e81753b29d","url":"run_game_off.webp"},{"revision":"70208e00e9ea641e4c98699f74100db3","url":"run_game_on.webp"},{"revision":"0a65c71d9983c9bb1bc6a5f405fd6fd9","url":"shark.webp"},{"revision":"88c1fd032e6fc16814690712a26c1ede","url":"uninstall_off.webp"},{"revision":"0118a4aca04c5fb0a525bf00b001844e","url":"uninstall_on.webp"},{"revision":"5c265d887349dca70d05a7a698cbc904","url":"app.js"},{"revision":"51c3e428a43da7caec47be6f88d095b3","url":"style.css"},{"revision":"060210979e13e305510de6285e085db1","url":"manifest.json"},{"revision":"4f0172bc7007d34cebf681cc233ab57f","url":"install.webp"},{"revision":"6a70d35dadf51d2ec6e38a6202d7fb0b","url":"install.mp3"},{"revision":"eac041a0b8835bfea706d997b0b7b224","url":"downloader.js"},{"revision":"6899f72755d4e84c707b93ac54a8fb06","url":"debug.js"},{"revision":"7817b36ddda9f07797c05a0ff6cacb21","url":"debug.html"},{"revision":"4ea2aac9446188b8a588811bc593919e","url":"ogel.webp"},{"revision":"c57d24598537443c5b8276c8dd5dbdc9","url":"bonus.webp"},{"revision":"d11c8c893d5525c8842555dc2861c393","url":"callfail.webp"},{"revision":"be9a89fb567b632cf8d4661cbf8afd9e","url":"getinfo.webp"},{"revision":"fe986681f41e96631f39f3288b23e538","url":"sysinfo.webp"}]); const gameFiles = [ "/LEGO/Scripts/CREDITS.SI", "/LEGO/Scripts/INTRO.SI", "/LEGO/Scripts/NOCD.SI", "/LEGO/Scripts/SNDANIM.SI", diff --git a/sysinfo.webp b/sysinfo.webp new file mode 100644 index 0000000000000000000000000000000000000000..695a4499aea3f1843c9abdf900e789d128628f64 GIT binary patch literal 5626 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 U7+HUQ#vlW)bp_Ox`tAS#0B