From 86f2355ff06710ae72a072177d659e7c7cf15ebc Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 5 Aug 2018 22:16:27 +0200 Subject: [PATCH 1/8] started to change screenshots for 6.0 release --- docs/graphics/commandmenu.png | Bin 3380 -> 4233 bytes docs/graphics/launcher.png | Bin 24309 -> 24867 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/graphics/commandmenu.png b/docs/graphics/commandmenu.png index 448fd61be5edc5579ff0240d05e84044c8b87c74..fdd894e2781071927f6bbda5ad51ae68cebc4c41 100644 GIT binary patch literal 4233 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 literal 3380 zcmai12{=@HA3j9Hy^0jaMPnwBiaH`GWt&5!8rPB~lrv^U;XBmr`|k7I=lPy_X6F2UXJ-EYGw=I*-}hWSb;9UJ5g8Ex z0De4XY-kPud>DTGN_ai~s6z&PKtZhNzs?HcHJ`7!kv@>uC_91|>(7}Q z83HS-kGo|LZs45_-o`e*03f<~^~ndM-jc?fLX2Z(WT7s;jS?CHJEZeB;VqCsKFu)j z^6;Q~G5`Y~>RARAA^5v8=meuAdmonBMj)m0MJ%5?6)WtHt!GIRKY5iNBDBp z1M4ekuZ@I;J_ydm*)v>QyJ~1h<@QK1MOlMHOSocbMo@@i%NX0mW{S=vb6+Jt?0$dw zAEU?8PN+)Cu>mjw)rGZ;;g^c`K74qo$BnQLM_D76Ow+^=0Vt@E7G|5QVBw4;lvNnX zzDj+bm}A=D0~POb??aO)e*}hBbsNG`?3OQMK#A;3Tm;)hD|qYe`jAggbFAw;mg-|C zyuRebpI7b4<35q!iH%KPDC$lK{B2+G9VS;$P!A5~WKmNPRwrBH3=QhOYi3)sE$%99O(F=BJk*1D)wiT=q?bsxjI^(pw3e+vS zO$BXOpd*{%=&RGU@Q{__)ANT#!PFQn~`Soq4C_?j1@DUggM z{u?_`l&BQy_r5u^uIB-=-%qpK4T_dc=JKX{NvY|Z{W;2$E>pGhsMXfi#(9*uSk~F* z3CV<|CwGLSw+!81pab;Q^J7u5x2{P9Do;rij%XK;5UZ7(ExJcD8L(Xxy1<+F-?-vZ z^yG<~9?y@blh)W7{CWL)cDTK6nppW7I7HHWB8e%^8o4{HtE&4A!f;JF)`%`lz*Z1O z*yhHMiRjp!i@uZk@LcRFJ9Nr7L@KV5BU*Vsw9uDWP;qC;A225F$LSW1;&fw#?P=6k zB}j2<$=$xNR!qyz=S)#{_+^Lpff5|S3+vWN$}O6x_VXhGWFa3uDDs}OV@(uJnXh{| z^_6H$?mCSMsaQ5yY4J6x)vM8^Vw0RYU|5n}eQ=*G{4Bk7qIlHp&2iXEq*6p^>XA~j zB{K8Bgc@$AfM1VF_*0Tgad^Ry!N*%(m-+a>QN+QwwpXVz&qxzy2T7MR?O zI0}zhRGesCDht(mRY-$zlqNrq2C}}(n;2Bnvvs!g{o&E|8FAd3opIbys8+sxy!Z^l zc&CHyy6QR<499(Jc6U1f4mbic+Kz>Dw0zODmg93-1_8sn}+gXoSwm&p1hEs3rFsn39-ZT*AYp|+DuWVxTG9MkaOib1OzDp2?u5! zyYfDDl>-Jiob(2AG%DXG@FHH6BWO#OOv0rl1=p8V%!O-)mu+uF+3Tt@6JuBpd%lA{ zguYt^{qT$kxw<@F^t(LV9e!=?qkymS=kjZeu&c|O^&eCZeNa9$_k5ve(SL}XkJU8%+ZRB z=O$N@$I^1n$L_v}cGN7IXn2}})QQtj>2(yAAC>>$UKYOt)1kHnFLLM+07{R$U?mXb zP)6H&JDZbL+%r2itC8EBqv<{9cTGj>P;C}V(B3Dn1i^}X+wxAv4lpUsfN6}MOU!ly z2}IJ}E`e3$QX+ue(J+T|zt~dXIFIPTozv+Q-jsS{n#1{l)8MR%H%YAbA>^iW&_9vV z5L&}A7`2?jXFfe&hnk=u4iT{ts5V`rs0A0aOHK%aB>XB?;XawS9qZP#Z-8)kt|w8f zOp69j-=KIF=PP45ooE83NruL6FvaQu=TQ#*b}*cBC-GNId)GxIA*_j>fj)t>oDU*x zpPJn|>TmXLbcRnpmP=>F)@!@pJ|pRRcIN4PJl915Tlj@_gps~f88V|cm?Pt&DR+Tq zIyA@Id9tJqpV*7u8>H4`{uHBexls*AaYM5A&i@d{_~|86T=kt4!JfWL)67+V_{I^j z>H~U@`}ut$ti+?J0)Xz0Z$_jKl~!z}Dc}-<3=los4m93lh^Y1JtG+u(3P>05;oDfI z&n?Ku8@li*#wrt)wdWG;aefL%i>;}~8j~supy*|*rRq-VQV_jn!Je0FQW$-rp}?(Y z8)=?qwrtXo?Q)Rofu7(%j((-K>0^jS{W9Vc26T6#r(~4fl&{$)M>3njegN@^G7D{Qh9zUmCgSA z23BdR?wV&B$gTgBVwZ~vS6|@OZQ16T5L3oHfUAQ6?4t)GhVaXQLmXWgGWv$rdkIzC zV*Zr#zR>3zhE}o0vjiEA^@?<=5$xyBC5qGu1L4QNWs*yO@r*XlTjUW*2TqiIr7!&H z@P>YV`Jkx3H;J#hB^-S{L{Z8oVh`0~Dkgm*G`oDR`n6lw<6I=9w=8US+eE28w`QS0 z=jiJa7gdv{>GoK!e&0g3w^@$HN33AQLmEL&y>eL{)C7ST^qh@rPngYO#Y|*>^oKMB zEN97&47Lw0wMR`oTQGnHtF%pFOyB%TBf|13Ad(<_)OC!myr~<;8fbM{E;<~#9N1p$ zj(NO@zj5SQ)p0nmx&-Opq~ljeoe2mINBM<*o4H%EHMS!=jbrR-p=OE`Bt~K!ZTI1m{7i9Bqc8Bz3H$8Ga z=~A?}W_1k_$uVQQUkuY!4bCa99PyQeVFF1S)Hp7EQvquc7sbEH5l(xnUc0FwD;Uo2 z_AY{CdLEJREX5fz4&Whxm1Vn=59Ge^kn~VsOK~PYFAR;Y6 z2@(VeibRpjtER<``~2Q{=iU3)9pmmX_So#|s#R5M%{jk0zxl0-)KF6-C1xbX!onhj zDM8^_Shz?mEF23$T;Pb%5%VhWA8dEHqAXVBJLVp z%LB);WQCNKv21K??CtHbu#&ljTJ5uC;e}lf1&IqKC@MrLqU6|mu&_o94YNn?jua}t zdFs2ms(gG5kBNzS^5n_L$jI8-0D7GN`_KQKf&bHHfJ}J(D)7uiE=mUOSXgAQ(Enn0 zJC|4h2N^u%^*ywltvtN$xLIPk+_81?;CHh0U=`&TODejck#86&@9JI#i=O?ejiBx9FXiBi%FHH3Sp5LZC ze!m)`@Q5WCHF-hhosPhB_&VOw{dekzGq2ig5uVP<_l&y5@%z8wwmkCi>Q>tb)#J&%{q4T+_S&7P8rTQNFBM(S+FyBP*wm?~EEHHG z6gcn4favU+WHP{9-#fkYe!z&wDomX!98b9-Olla{3w%wII5%87*Wid_fkT^j}|)YcTxh&6=)yy_h(XQ z3TxB8fZQBdDs6dR{Pdd6W$~jgmAuc_pJWx2%yb^eDk0)plvatYy^3)IligA&O4TYQVW zE3KC!%19G1c9_@_6=2_baMeA$VPt2DHbPQH%+~eNFj8IP#23O}RuXu*YyHblK8P&^ z31b1o;~oi}Jzc@Wy<^RE!Q zZwG%eUV+tcaN~s$P=G`@Q{)@v>@U*B;lBy^D&Iz74?kYCOEP^~0CP-Q4u722pUD|l zndXwT-b>wKlfy5`5xZhD@NWC9#`@co7fg=u-Nh}~T8K6xx4Qtg59^J$p|leNqhc<1 z1R>33Vy@sV5?6h^RU6tN>>lNPwKyph6%}Fy!F!C)e~gDhZiKCUmr2x>#Fp;! zW)5+bzW0L$5nfByM7XhnwU8Co7USS==RlZtR}aK7izxn!@3 zBGDJ+<|xfm3su%4gP=f4P{;!G7Za;n;>=#Z9#dDaAZK^OYM1P)Sf z*)rI`-9hA$h;0CPNl5mM_PfA{x$H%MTqr-~#OgP5A$t_A0XFGt;cNVhOr;!j=XIvu zz6aKH09eLxDa1QjyhdM4?_P!qUEdj6QhXnJV%{TRVUr`UfO^{{vl#i=Zx-`=_^@w9> zo;OpQV=3^tOHqUJfPJLYknaHe#FBUrwOovUOlj7=6y_rl&G7_g_%IWh2AE(b62IjC z$DzY%m`}S@_Rewuj^^+2laDE!I4HkmTECwpuOGPo(}1o zna#e!+$057)@^^Ui(={tTVIfMy>lT$7UJTYSQ|H5C(4-bqQbCF3fA50<5IyV4+qae zuE-hW2))j`9@JMhnTBO#+f{@-XBeLWXYb?fNLb6WMcwA|u^R|qLqSryO%IrFbOp*I zwh`LD`V^rv-4q~Y}(oD@+*qRj?q2}f;R3MjO zUQ_ngWNR&G{?u!QNV}#OeD;)R#*)X>AHHk+WH_)(I&wa@KIKH<^vz|B{v55U9YWiN zMTIvg()Tm8Cai-Np9e?HjI+QUj0#s22L)=sYDhG1y$26;T)w5Pc>5N2DOm>fuAsjd z%yrwJ)aT2U>3Xtr@vgTAk?BbPcho%5Z|ouzt`Qkg>rJf8na^FjZ1=cpLhUN3hkJ0D zy~miJ(#^bNzP!dt>-Ru*Nlp*PuVH3rZvc7tN%`Vk(m@r?j|Cyi_l7jNVj8JHB){IM z;JGQ+?$J&FCY=|}9wdGD^g+&E?{uu9JY%0{9)`n;42-x!e;>A!iT_F2l?q=;3=1Sy zK??$rkZ8k7lW?{=2pXTfYQM{@FIuXCN^2b0eK4a| zuN<(UAo*-JxA0#-?<~9T6_>)Au}|lIuN_f)H8m5-^k)(U)KRlWf1R=c;cH7dd&)^P z{^!waIc%{dy_1fnh_mI|9WRhw`~n0?`y|?FInJehM(vkp4?X7Oem(Q&UMwOovz_4q z-6eH@_pNUK@vVHs){Dc2V_2ZO;6HB#fADt4#Rptnd7ogib?oTvJp%+Dbx2##Edvoy z23&;q;#0)I?j_0G_$=f|`ba?#0Xad#y{q0axX~PdTb*;dw~TSC$rW;e@wH6Pi^i-9 zY=WXMl|H`!)5txXTXi_rmUK!wdWuWPLVP+gc8FR(u5zvL9rtiIgSvf6^=YH|8`8J) zDHOhitnL>lsfHC4Z~OAHh{Fc6@Mivb?|oR=fRQAaSSnpmf*o}}xridjB|)4hIJB@| zu$#5#QY8@lEkRf_>QAQ&`1pC*Lg0|$QPD3OUv?W|%KY1p2mi&6MVaDX3Y)Ji$Nxm&@O$xUpOtkD{Gjo3gFn~8gONDSIBz%cl6 zx-u~u@7Ka?1nc{caOE;N4tZeha*(Tdr>i!3l#$#qD%p7+Us?$lBa){rI(vxmqc^$aMgMZ9t21-Uw+^bwny|%S;(x3hSiNz3 z(MQoWC1>62zxdF9aWhP2^UpYd0|D^$$GL4)Q8+`8NvzX3!T{AjZp(55a3#Kev@5;Y z9DYGxcINItN_0^~GCNnP!ai5VOX{Okag(LJ06R?Dk*G!nS~PS%y89a>z(11w?`Q(Q zX<9B4w&O%Pj2TLGb$AG5cVuCwt|WQAtovEM(A(ms!!^rGfaWQPi|bqprF@#o>{ zU}KWW!whl@*bkVm%`D45Z@`O6bE7In{^9vJGcnZ%*{_%I!|N7 zANL9S$9U3c#s1j6i| zaF;)v=06P{w&MSGCE#_k3Kq}TMz^a%U+UC&g97-lh2^RDR2`B_Qv37;;Y}rh*OZ0& z$#nACSu&AhkMpj;LbuyrgVTE!R7LH%95f$+rv*Dmsa1*yJEu9o33fYI;1vyOJXNZG zk;{Y*+?R&g5MUMsRTSwTk5GY2SreypT8Kf}b3*u{F8}acbj8I-fCg72QbMQ#vniiQ z2ECmJvvGzQwq3Kol9IHX081qQGN1xqc~213@+VxP6Ri5AZhbjXE$Vu%e4h(s;u?ZY z2<47QX|+h*si1NBpnZ2&D22`GQ*^PUBaa{Bwws(j3Th<}#_hYJ^;QEbM3iE%OFJp# z^3Q8C_Ouq4J5{M!hq0hTRfbR~FR#X>e4b&p6fg^Vh>^_gLmAcPUkxp)O|i*Fh$=h0 z5O|_c8U*{&1Kzn_M`iq`WO+(BK6`qySa1ZR-H=UKdLSlI0^(7-lvr zxv&~~{S(jO8>Zc!uMhqL9rVxT150^d2UJj|E5WC5?7s%#i<^&EL1CSFg)~mv^(Vkm zGrsWNEir39M0J-#2GtGIaGWpM>RTGM#h4{5n&Xf^wX#|%~|dgt3WFU zT;cvk-cNZoG@cMwyXuQ5w(TxS3>x1o-fRPQ(u;V4@-xtr8|{JMCj{3ilSJP zcChKwmbhgdi#dN6dkw4Ff+>HcsHUdjPa$I?TsfZo zX^A8nGV~8d?~DBX;>))B7l>Ya+4rcmziN%;tZ&$y#t|Y8%*R&PIHD<~4`Ky}!5w*2 zQRz68>(dD;Kc26&p3Mg^keeud&_q?E^>YGWcgIPBoI;-~WboR|{!ys~V)))rW-!Uu z-ipw{2CM=(x3Zh@XN~F*GQ7aY0t(GzOwR_{5-4jC%HaKYP{xPQz{Mw;wtG^pPw|)( zyQ4ewCyi{WJXsrMuM0~k#~ll?XS9obg&Dz&QFTyRLBr{dR^NU|%6{O1*#9dAuf%Y- z8glxI;gWW^4_8bkWI^=j=I}iDHThcj=u3?ujRL84JU7@a_&g*pMC9w6M5FzGneX4@ zma4+@{RFECIX2cQ`WcChs7na(Brf&w`rboCQs^`9)E4YSZ)axQ;)}>u( zyaJzK;L{j2??LuF*o}fkjqmotmb+#1pQTrX*&q>B@~)ke*uMP{x-Y2OqK1>8jS_5z zegtf8i3yu>k!`6qBMv<5S2A=8)hgc_J{lNZHm3+{rtM3S8#db6fkhdy5grqt2KJ!< zj+J=X4SM?stEdjzOWIGFTo`oNNaU5TJbU+9|FL8+MU#??6wN{}HEn(JjN}&{i#I6- zBtL4drk(F}SB-j}7N3heUclAZ7CxQGrR@PEb=x+#6&IE)V?+r~TB*TKCVPleRF*?I zu|YxzY%XM}J}M$26u*p6B4Uf?84?8{C9m=>Z@%Cm(&o(}|G7_59lkZo!LeC zUTqASbc<3cgA#;<0{lwZgs}OQ+prNkOFc40R@wG+4YueNlpsQ_te&xk_9w*GDrs%L z-**dgI7P>Lc=t5TfM*~DT)SL9&4!Ln0(kFue8z7ieUgY5`^b>~=TA#59>mtAAMPbl zcXtfKO z(MT13?xs7V_ooI-Nrj<%xB$AxrLXKs+M|{i_P1O6aNVp}tKNdo6HWb6zm#=eUVWwM zQbQ(i(*@DBXU-T(?J#lnWbGzroZI%*6;Gj@(D`ZhR^|2KkT+2)tj-6&^m_FbUoAUNTE#8c1W_z7jx zB-W4%yydc>%cl<~#0Q$Phd#jqBK)~F-MrTFSFn<607m;Kp1D5)gU2F1qn z(_D5TBDbei`_C*;lNgH-Fi{`l+b#JqtNk}fEAO-3x%n#SdzOL_yNU7$Z;x(N7MFAx zc0|dYx)Y#Qmenbf%Jg7ETL1q1#$tOgi>DA}2CKbl6#wqaya3 zpw#kXDY!XqS#TMC%ft}vc0vxze%698#=4K8rv+{6{SOd%nRDU{0tn!M@9dH~b(ZqB=AzhdIxPRe>T7yf9}|2)4t!*A+jkCHQ6`6#gQDneWZbzF_B z>`!?1sf^T6%Y&D_UqOCa8Gp(PHr*F$d~12aWo^yF41F&yhzY3o)g=nniR7D+set3Yt zSjQ6FXN<8*G}(lN8LIMNZf}a%3Y}_oNHN_l&l)(c(^N%K{U*pxyw`NWdc47NP#wqa zRyrw#rigXkCC5C0XYQYbQVw!V#AicbJfzF4TXJWgrWZ0SvXvFQRnxl3A74v8dE&D@ zkrMV5vod3nbgK?5T5qO4-D6ivM=q-4=d%QznT{b2+kFjx_XPiXud#XT-S=#0r*)MY zRjHV5|FL~D?50%H>%!;vlM2MIC+uOLeJ@NkTmW+zI>F-L+dM*h7vHM_91_6N67BJB z(+xk2jQH4*Jg;J-fIF+m0|xgu!gCVMN!zzN#pn7F)PA1=hse)P;g~8a4T|H094o#; z7}!BS!R#_zVJxGgEmssF`+{iL*rUcrpS@55Bwc_tV3PG7x`5{N8ZTd7svPM>dcIK##ruQI`eTOhm#>~j&k z)OWIzd-3IlW4$*4#%Y0IPT=hGMZuQCVXlR`v-}o==U)*_C<*1^!P}?5qAT1J52lbb zePdb!yLXerK8p1{Z1|-K)44!j}=_jmTj&0UJ#{&G@RSl_QGm)G@C(+`8Dr#2NE-9Drl!paqB+LNlI`@C{ z!?Ye^D?ozb-!57Xi>mQrJZqr#Nk<9fM_zO!e}=V88oS#S?tZ@S+sgBIKO8GWsNCm& zqy!KMq@feyB7n2)GqL#mSd3{2Wd8yyFL%u4Ri+`#?57qhUI_cThM&suNH5Q>eiP_5Dw`0h&L~qTo zJ|%&}ddfP$cHN9r&-5XWRxc6ba6>>tP#(NH^6+X_1tuJiwyTVSfujYiGxy8*_`&A4 zly_%6)Cx}Dwl)jdf@4Zo7b-e{WgpwR5pC10SH!z?no>nEA+w8WnC z=x+2YLjKV}rLxFJLd8iMkr9dP=cB!6hj%U0AC@bmnr=ZOluc=`qv@+{o$lF_QI*A% z6!5TVhLl(F#bD}qzxyiN?K6Sp&nVb0&U+yV?H!h6B9?MiR5bO~*0AIlrDKVV9&F^+ zuU+<373--|K&UlJ+-YH@jxdHmrjV5|Pmr{tv*L5@U<)XPhRl;KQ=m}`J&EVbQix^F zG|9H@iT;wb&5cAsRHD6T0x)=!g_^voo+Fv8Up4PamdrWqr!#cy#_TvO70;O$_|XYD zg+IUGO+~C6)AVrt-@~ry0NsNl5_9ZR2m^RzZC!faRtkEeOzS|&3fAHbwFC+IJGWMA zb@148G&q6&yHfZDFZk0KrKz-dr)s@UD6dins#3gqV<&+U**hl*qACj$(LY;Q9RV5I=?&naJaN!i#m6;(5-Z^!tHi zmhV&Zp^8;HKC@K5+l40$FE!lO`f1l#9piH+-VM~tA^vlm7prHzkea&>%~atB+&@I$ z+h;u@XC!oZc#4l^xyTg}XKA`$3rpnR^bpk6tH3!-kEF1JsQ$)mGhx_Z4puwSDd6ty z0llAOflTDH=CQw!c~k}EI*D@@tJ75AcPDcRPUjxYPYYxqgAQc8UZ}eM&OXrTHc-aZ z(b7Fa( zA>L(A1KJhG)LULlb2on#)I1!cw8DkXaeSTYak~yX`qDQU1x!VD>xZ+*g6{Jpa!PzF zOBRNLbcJ=>r#@Ab^5y!U815OD z7s(lCe3_wqdetFU>v|`XcO5egA#V+#TnCGYy0F9kjE)n)HDIz0fP0>|9alt>f9{~r zEu;;6iF@~kr`Fr?C85V1UNC998?z*D(Cr{}!?jx4^n+=i#p}0Gd2nz)PQMbN0*UeG zO!RsNs9*gnBE5pdx?A?C@z|K^C7lG0K>r>)_c1#MM~-<4_l|poVr6%zd#E)#e(~)H zLwCfD#r=9<+_XT0XfpA?P72U_eIL)kl*>mF$K65rG)WpV3>6$KgvUPddo2s`Zf#z~n@K=^MJ_?UWn7usaOlGsR@PK<72A%UwPZ9%aXF*Id~}xv9Xj%3 z{9oE9;l-z807*Hl!l{%NRm-oxFK8a(ubgh-Y5^y`9a6Y$DH)3WMq9ZaVb?{cUfA|t{$xfC4aJqqv3-xqy*~xM9*T)x<6~}_z0_o); zljQUnog&|jU95gz$sz&M+xk`8{0dO#ZGQzs0YLv%fTjM4$#uF6_{D^Cgn^;pOEc$Y z;xoJipLa0`+`k4~F$(qf3t&MZCm|_bkMk(l8H2vSs&wSonu%gdQ}oG6lA=1zsg)od z;T`sJrDT^;A$&?D3*7M$qF)>c+@j-- zq0qc!^yF7K1-71HMP|`0&k%KdHU&%5?~>r4d+cD^!Fuqb#KRkf=~m%onIMQc70v?)YgoF%)lfgn7vAbW9v@@zlv=h%`HrXn+zK5r5^hHS%^?qbB7}J0 zQmeM3t!ZcX80yCVme{0;(SWPtDt8J=81OEA9JUiFpQkmfkE~TuGd+=nQu9=$Lv#iR zYn)8Bq-bV@;{`-1K@5$1X_P+obAd4UHB0bVaVFu5TZKKv8|c@F^i?+!qusB9l|@TB zF^h^{%pkjsSKIZxG#y)p9b&EhDqR=|m6S169lxB33{rHe4LSOEf^_hG^Xb}vrusD) zDJkE_GQs0ujwPKF>5krb{A!wo(3in(QGAssr5Z{M z2~e5L&QgavBUe(RioV_4yqPPqYc%5iyW~aXus6t!$v1_fUV+Atc3$a@uo?H0=fHfILU-Q|ps@0dza<+AB6Q>6KQ05t$3ia$9J*}KyJG+v$)V15jO2j=`idas_@lLEFXh&#?v%K zL(S3zB<#9)_Mk*7vbMU$sV!%^X7*Eh;x zhR-ql0MIMili4+})19xfKvjlu?=UfSDbv)y;6n@IXj~8ox7vhOkQMxOpz(}nJ< zD8R=_(e!Op_SAG zPPrg4Kh+x0iWW9If2IxtiI!@}R3UtBWC-#*(yIlud@Ftvt5~GfWis*g%H<@giA!uc zfkjp7eE~<@!UnFL3zr* zH(K*aW+O3_UYTUU2LIo5eyUla{a&qZO;UVwh=A8p-n-Ah2$(3&le7&$h) z4OFLSl^;g>04Vn`1uOcHvk(AL0mMKXX8Smga+73nwfRvj_nIr_T7aFQvgZ6A8l38x z_}xo_RtvJoiCuT;EdihpvT#llQS3<`E4yI+X0mA`_K)7qx`zx!(#;LHmPuil_bc`$ zkm|b*)u6=EeRtxZ8&quHNI1jv-MlJ&*)dP$m{d$&-0tFGuph288FQDKD-W_fH*$$D(%mOrONIWW+{bV6+4)AoD zLAKS!<*Sp_teo22sCk>_A!bmtjS*-o`@`v#1hMrZ>2+a zi(|zuJ?KSU;17y{K<&F}PSKrQZcQ>$j&ATc+GpajaXqr2Fpne8SRl7Ub2FG(>V*7! zjHpn)xucOu`22M=#p6KFMY45fw35yXd_I2)T1n;hj?V(>vT7m=_)bWh(^Q4#sQC#E zgOOGOk_Aac4(-lFVtmM>cKzpE@`RIYxwsOS3=h>p*nZS-{AKpDM{26d^FjH`3Yc{T z6V$TD82%8Qd8;hAAZG+k5#Q{BYD+yZ943L(3F)42Xj=%w-Ko*6Is={Zy>rP2;1#e6{U(PGQpWs1yc0xG+;=w ze37e$ErD>zGBE?louq*NO`m}%rk#hT3fUhfUI2wCrkIKW^dV#_nZP0=w8BnXhTbH$ zLSkbSBh>ALsGifKB{p-%6MV)VwC3i^9|kn%cWk6hfL;W>3Da7R_LmgU?l+7f0Zn*U z{RiasaaanTP#|&-bOPPCp8LbbR&3>rIur_e?Dla7_b}6w2gK=GP-4A)mpm`_B(?Y_ zU7BaCM2H?Dvum7Swuy+fm~-yu?x)s#6H(g?YL3w8ONw%1o~ie=EftT9 zu}pMZtaqN!F-ELg@nwmvcI&n$+1&`W7BgL7l1+|8YA|{Ld-b9XGyMpD3RBn{;B%fUX-|YS<)=H4R^U6`*Ymu^YKi z{zhl5N<82)#Sf!<`*9B+m$mp`ITCLE=-6vMRSC$dL_g4$!txOqq_~ld^z=By+N9t# zga+$RblT}_fS1Obm4xuk;C44wb*o|k4&QId%jov`_;Igo<`0Rs-Bp!{dQ z(^wo1q=BDseHy3J0Aqh+5Jwi}QEsD~g)hH(7j@V36KYO`VBF8OV6j^0&__&^GN1oxiNr^ zK$pNTDLb|&PJ?&$PP{noe9848pxmcfSiharyZ-sc?B-xV8`Z|DY3`I5n^8lI=HRG;I#_gQ~deJh(Xr%1fY&;M>=5K`y70{d_=(c!iH{wxS4oV7UniPa`rG}U(Bljh|uz0J&OG9hiB zpC&-*o(OCy=opQNii9SaAR8ZsBSgt0^p;p$!3CO&m6pE!O2{e8DaSye8%|T&&$uL< zWIk*=La*pPZ6k^1@SAb=Y7(?CR}yQFI0r5eqF2}4fg88?A*fZk$Y!5q-X+O;nN-<- zrS`l5#MtO%5~zW2V}mq(#SB!QZx~!Q9QmE^M2KBr11wy_7b{XvJhTcK;OEcSm3kJ^ ztmi+bIp{`KJEU_ensRxIt|V?$L4oF|Qmg>@ql;@zYvl5ymwWvzVqJ83SWU`cjk5hV9(8hDu75v1y61|AB)2TS{KJxzuvg03P1dz z>zLhim!d%!UuRj4Gxw=@>>m1bpuMf?6~5B+xZ7kPc>(_6mHib!F$V9=yn_d(K~!_J zqfG8xkw)sw+3DPMMHd|RufpnNd^?S)y29S1ysU>zswn#ihGvF@`*hxewnfP!fUNG- zP)^B{FJhgL+cHJ<+t|pV9pPjzkd~bMEB5cS`2u~h7D2TSJ3T`HJt}t{SMFuW&|;3# z7$MMz{QHQj%RV=&D3gWF^?8MZd`w!gbL7lkqj&GrlNVmsH0rjGxv53vt?-1G8W|lk z66xK$C9iT%ENbuB_Xwa0NOqN=j(;E(eh#s9yREk0zqDJfViVb; zuT-YC)TSUE5?Kx2NL;c{U$cD;IE6YjB|TwfgiP(_5_xjz^vMDk9yUkqrufpNqW zeS3|^Mi-Kleu)Li&uYZe%oHc(a}=`*|8;e_y^zJ$Q5cXK{($gZ0j%mo?_z8w;J+Z6O&a5l>mnT!wJa~<_|Z&#}|gFT!4)*=(0r( zz93J3dfS;FqPCv-;ZbwW)Ym<_Cu2$yLxV~cxbF5wtWRtFzUw9sdGh30BMFwDJ|qLS z1_>Oh5aYkDA^cJ?!@>_M6Y3me&c7gw&0cC=!Dt_pEtG>#I4_99#sMSLY3BF@w84X6 zJgtqN;)jvp)ix;WW6uUHEHU#N^Fi2@*mPfttnj!ZBZQee>inwn*A*&V;do)PRQ#6x zf=O32Gg2sGN+G^Y;_)1%eht4MBmRN5(ehglF4lLFoMd%OAFm>$B#Mk4eDc4*j5cj7k4l~2~?`g?U+3iUci0~VA~fOyQPl#UQxkSeJ)0GoaBi18Bb6R z$GQsx$741&sLrV$j6XLQjL_i*zH9XJC_>Wx_JWDU<+u8j8WcV^fiw{ip!R&`w~k9V zX>3ou0_;$A&;Mk{Tl{S=vIeqwW}}Oftt+Rw;_W}gfXbx+>(O5TfY)~=3)D5wI(vM3 zdXF4f$SbgM#i5*6Pvj)JQx(0~XV`YVF`cxIUx)3~JKV2A$y$Dduel_R1wcz(O_;k* z+=ezmw}T;v{k5NZU1$&tOYhciiD}!E{Bs-1p4)d`N8RQ_Z;l&g;2xn+F+1?Pagb8v!PuDd~NFW&ZD$fjt!%m*h$;6-O=Yh1XM_IL^I{&%~2 z>XnuhLIIJ<9|wddbdy@hH6!$C2J=#sYm*9I397tE-#JJ7rK(!*pzO9n4@>_J-Li?^sCR_6@>^Rc;W!#01#vL zD}Z}$JmH8YR}HhP?N5}J54@h%k9l#$8YxBcR*B+p|6tuk=rPFDiibZtAp(GzI&>JD zSie6vHaqK@Q=>a;LrY*N7#&lYYb#yWF2=?e>{}qOu{~S9_HHhoxY1eU7B@cNh*Pr{bgX5;Rr7`%a zt_nB!l*HJ({_ew((3H{R$MUsgQ?iQ{H^v_hRhZ_z?FZ0yKXn9wcb!^sYcW>R{wx5DD${(`6JB=v`cFMZ54JbZ!`sg5Y{GItT5lTOWuPU!3NU4AK#uEMfFqA|+R1BQAu zlp+)$%b&9kVpozr4q}4F9^xexrQ*Dtx7_~oCzpYZb9)Dno8Qw8^^VHJq>cq>J?S%R zk2*DjHn&>QfzGxim_Rc7QeV_UJyj~eE%D>hU~{f6Cp~`Aua7vet`88I5{5~opWy6= z-L(jQlH75%=Seq*D_~Jd%`DK)p?bd@hCJr*@sq^!!z71U5SS_T9Y;LW5gy+2N((x^5L7S>Y_b_!jJANHqFK)M3qMnF!>ZFI$v#)7EFnW+ZDvU{+Cl%f0>3hdu zNopInt8!_ERH>uS^>R^!382EvbEWyp*0o|J1`<6X(F1}oyDS0Zi{of@EONRo z|Ewg`UN)t;>1)pvhMU>q1gN-9R(bCYKQFE%WwglJvZEa6K+aszUq>v5j7A841Mz_X zJ|Z9n^E4UA@S1?vW;PF>pv-;_m^qvXK!7c)Kv8*hm^e@Aq>5g`2RcTa7zV@{5KwYr zxP-k_K#>K;96s5-_xE1v|8OWz93b2d-{~$r^}p${gYV_NR2SD6dHN&=bgm-TS&p7t zwvinQvBiM)j5;AYn$j{op2}z@F{5UDXINX7!c;Jd%zW1{s8_#ewtDOLL|G;k4ft3b zVmG`^pJ*nVtoDwB1n_g@nyZW2C&}Kn!2*4{=}9v=UzwAfE*C>liU(A~)-`-z{wuW~$e-v3s&V&P0sGuR|Y?Q>qAC26KUD^9~3$b0y zW;&iR@-tsPk9U03xY0O(*(!bw*qGDkMtp+Q*@!5U%vc9ynN)wiCQT3zqx#5FLuA_J(VG_TQovuw_^GIqkG zTVv|*LsrBqY2xdfocs%H%e?&s-#xh}gPcRaG>jo>b}KrQkajR9PZF+BV^dfu^8Bw( zAIBTe=*A3oJB#(z+V>Q{It%!D!p!HmHE(F&JFOuBx#X+Ryi1g2;4+&clG0Zth5FK? zZS+Fyx1NtA6L;L|tgl8h+Qrf2!@*hh>B_w>Q_f(;#W@u^5R;}s$78l1#m!s{QHcPv zJ^sfl;8E8JF}Sd#7ib|-11_C0^RcE1FYzs-0`#CL?g2L zMe3I<8>RG0#LneQfUguhL(Gsku>AD6shDI9;L@Sh|oS5zKQplG^i|C9mpC z-|wK2fgGs*wVV5f#ccX8SOI|Ic{FRyTlDd=UNw6&&E`8a@?d{F`J`fgkl% z(=mv*dNYi0oKWQVN0W^oh3e+~dJAIPy}Nw*G%qMqT>I(%(Q_;7^@AB<(@dtpIY1wA z1MKG3_??1sP2J^_Z&fji@a&OR&GOnYQ{Rsc=J1k0C}IT8*E21)^wU6Mc8kZDJ& z%{vD))s0>jOjyYBoAW#z2bggR`#Fb>L+S>-sx-SO98`#}fwb?_Anh-LxWG3NUL;@) z0N@t6lj8|HVnUe-_FUv}+o}|R?_x;IG@&RRqR~yEiFj|V+4MJNDm7h`5%6=|ok0M@ zxSEeKNVGDFo}Yh*#=FeVYh6K^G{`J+tpw$V1oA-c$^yR4w0tnmr!6+lLbrB}pEv)w zNDWssi9ddBN75Y+$^+$)v@Zq2iV01?MujQ5TFav(!7;OB`X6%FJQC0X#J!6c8WE5Z zUk&*5MQ@s$mqCHE{V5da^%(k*I04Nbk&}D*kE3*lUKJ%X{dK#Gha%isIf8fDWC1Va5c*|(GalF_<2jriooG5^yska8Feq^Smc=uC`gme?!`CQc=Oo03? z2o{{Z^s&>2__EM1Gku00WnCIS4kEL*#M20dUSe}M6(6^d=~CIeFl~%B5M=4T)qR|=zr6e#2(Dr*xB&xLCtpf9pSD(Y1y@Ev zN?yB1IGPNa(x16jqQM*Z_kNdvwirWqx1#8X*b?5EK}=`=_b31v5Elvr&nvi~*NOOB z+C53HwfQ_iwC85#8yAh={{BM3VU?8@L-m{Q6hgn_{Kse`+OA010buJ4=B<9_!M<>9 zUDOrQxL^_!M{M9D^dZ!M8SNfg>z;|zN5;$`JVs#a&EHY|9y{?(1Q@MxLDT1lL=hulm<;PE73|KphxfzqY=s- zY2p~b2DYHQd+u_rK{>#!F}_*t;Up8??&Q6A%tHdH^tvt(t5;Pph%w2zBtG50YoHpn zsj2D%#w7Qc`1DU>^MCXm5x;#v`u2;=sPNqJ*lb7|E8rk4|2RnC6_IeUjf360K%Gdj zHw*9^b0%6FLiY!P)23CKyS-cISPtQe7|Q^3HtKJ;t1}*7?=z>~1Oa#uvrD@uG#Hjdi~-3F?dmBJqV=odNs?d`gb zWw*xGQ0_O(GXYyV<&7%JhoV?D+28P^+QQBI*uL=4zP6EjSSpRQX}YXKonTk(-BHdu zoWRwNYJ05v#OZU~U;gkD6H`4A9*Ptaw>_)IC~bKMy%qlK2QBER;BkFBCs5R1O*qRv z8`dZ=B03d1URe@flGyp;gX|Y1HA&`$GJasAIy%F^1oRu?AkV!_wT~zesBFs|NPw)P z%5C}%EK4G!ulPkYt~R8wd;H52`Y>+lga+aT??t%XZejwB)J}#dUrumg zcz&|T?{?D~Ve}ZzP2Z&kK1ZD|PI*aU2z%->4sfYmTrEvk+lL?>d9=*D5|cjE9^bUR zuIl-yV{aB2ky4^Me6vEE^%Am|kKGDaLEmB|yB@9|*|ZZdKpj|N(Z55>@yu<>j=`1# zN84_XQ4_Y~hKq40Ku(%M7dNfD)XurHllJmQY&5g)H)qT}&|YvC@B*pdZN3I|lt6dZ z=6)vi!sE;>D5kE)yv~0pC;q!bdzG-gZ8Mld>q~Xht&(pyUX8Q#KE*81Fl_l)Ird;r zbRFmU+8S}}B(=QRhnU;&5tWnA7Nm{NT)yzz5uToUvi5+Ymr}jj+grsw(OF_J8BeX2 zaR$cU`>P1S=Baf0KgKL8U`Hb3Q@1d!M-|ip*~I1I9{b^5S>Sw^27BNuAIB;Pg7R-A zCMI{{p7LBrf9@k&{^WFS&QkCSTbyBZhr(<8wCz}GSMgD(_7c0qu;@fda!!x-jNjT1 zFICiwXz_(&aqf4DVoQ-{Wi0?+Q zklg5K-IOP>*!@Qph;2z%W>mkhv0j!wE2MTWtRJw_OJ7@un0m=Yip@}t0nUW)0t_+JXS?T~ z^HY52LU|TFMCG5_%%|8f$Ws9aUpRU8D(OUX2VP5e1^!I+97w>d7{=r9fXyVzc1eUE zgm~^9eMGad?NJ}@yBvtprk;3H5cp$dQd8%;Rw$mGLUGABG2CGB>inUl&hE&O#n+TC zec@1bPEMd8Kuq~$Z8H~plKDsh?MD>qPT$*;*HGoOK!Zu(U|C{~w{ok=Qp?hY&<(hw z;*BL8?&SG%A2_LsrX!yVR6 zgdPwBR=V98gTtr4Mt}g%u0}>bnupJaw-!SdLlX$9NUw0X=!u*G9XDZ2GZde7E~k7SCd!j(t9Nr!wn7Hl zjk>3Yu@ODbX)}6|D@ojiT?nl!U0wI8SYuZAdzD?pXA7K$gMWHwcc502y(IPq^=bb9 z?6lET4m`O3%-KSrcg@0G_J}_WXtfd0V zrZ)9%U(H9r0f296nowRMdh2+d3HL%`KN)tWn16<@2o?So{yf6+mS3h)bbC))x~#R# z*02mPVY1%TCB3i*f5v$AHV7+cojx+lnArQeO{F4+z0WVOsq{tk+ov_I&<+|IXK+LxVk@~mjc zJuatn_9LY@BpcJnMrG39vbU`K{p2s9UaUpzK~w)j@Yr--!`ic`l&QhsHyIpgIU&ze zp^x~oN?tHa0|UQ-@r)bABd6<5FByMJ0A0GsR!)#xHGB2;f$);_jl*iwcy|Ci95~v9 zA7sd>S&s~c7YnY{h43*9)B_<6R}@XOGm z=&07qOAgVDQ&$=f#SN8dZ;U$hgtX6{1T_S)04&m-$YBCTDX3FPni2c8Vt@-kfOE#c z2T)+V@iCFH>$&3I^P&()7E=`QXU#Z5PeO(hl#oBAi@QFjB4u`!(bahzSjl(tJIG+SGnxcEb_o7j z0jQ0cN?S>Z{%N=13!M2k3(@{eco<-s8_?(;%?dr6!9AR{ANjpIe+^Q4`HRndeNoUj zCmD7jMk}5X{KOWIWhBMYH@5>8?a%KPq5V1Wu)5i^yT^;>Uiq#yrC^m`OSc~0WCG=@ zBPyITuTn^doeB-;2E(aCVGLBqU0y(K4ghkt4#vb7r+z-*_HUnlwcjSXPxAnx-=A;o zO{?Q?a1&#c&)A39tI7WrHQJvg?xurqG#Vi~^=DNn{S(7?1-RXNYKhPCWuGafAtYRk zz-<857mR$IQYP+Z@aNht7?lpvnfX~_v;s3ZPPVXeKC{rspFTo9I-D7kQ8UOVQ1PYq z)7G}qYAe3i{xN!bfcdU6YKUYr4Z*T+%^BQpfm#nK$+{V+4ZBXW#YRNr-sucT zla}0Lt-&a#L8=B$XvD8`DtkGF9e(`0^^h|BGiFZ?!)2B^;aRujVzq?y%|cHei!Mv` z_ySuaCZQs>Ez53&>vCLld_Z6V_iC7$O*I#{3aptEvV>-g2`owj)UuZQ=j30TLkdb} z9>$i7C%l72mG-BeM#SL|1DI9Q|{ z1X0bPls@r#A+uE6U8q+?S=CtNs2@VEcU4N6#d*!bz>*QF@B-cJWE&3nIjXo6*SKf= z#HQgLkR6pI(U}mQ$4&KMS2$&ExrhffX`yb-GJb?P%J4b>b$lE5*{QXd$4R$lEJ-Uo zAgFA!t9FP4HEzBb4{dfFi>t^V>knw0TWu96xt-yX$@3-eNhE48YrRF6L#91$&WuzD z1(tJB3XK52A;c+CB^A+z83NP6w-q26n2!i?S$+RdEnqa18I;*YUebL7Sxh$9!g5vF z>azK_nsWEWRW;l4ID}hJNgk|V$cq6Y`-R2?4iW59o4La5_d6aqBQS%b``^mfChuqj zUSJ7YF95L96G#7s*ZoI*4T_(r%%gFR+SPT$urDmR*LJk_k?8An%{ur7q_O)lE)TYA z@evcuO(oe}uIq5mOj&g%Be$fm@xfASu=@K>{ZDg7KU8}B7{7PBe48I!U(v6CZ898k6tt;`@_|`?_oI_^z;P&05Pl=S|lI$)#vywa`cFI+gfwLZTle1ws!NaCb8vRi*uczkT(i&OEI`u;(f!W%O9fuwpg({yega zBT%HnPALcNr@g)LqMfMxuo5ZZmgdeBLbk3AbL!u)bvO0A_APYwf|#G=V|lVP_@O-e~VT#X6AUBV`kvKT)M~nDe&KnD%3tlk z3^*_bpYUt8A6=&lmrnad=jI9Hu;q1FOE=PvOO3^nQv9?@@iE%(ZAo*@;>fmQC3?8# zMS6f`-aJ$Uo1&P^r#6(jaZgvy-9MleH%g+F;Y73~S@FeeBPGB>GI~G-J`PdhTbTF& ztK+l}Dyt!`zk2>2^L%?Mee&g%Wy*#n#{UGB#O{H=viuGkZ>^1(Wn%30-A~zt$gT0e zZF}(miFWi4-HF+|;t$dCRQX@jZiu91G?M&g|Mf0?gDyNYbvJ*<@meYaK#$fkKox1& GhWrk3Y&(1a literal 24309 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

QC94Pc#vc+T0GbXb#bQbhrQ7ECU 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 From 4949c2c7bb410d63e0e425cb150ac8293f812c36 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 5 Aug 2018 22:46:42 +0200 Subject: [PATCH 2/8] updated more screenshots and some text --- docs/graphics/cheat.png | Bin 3639 -> 3655 bytes docs/graphics/launcher_filter.png | Bin 1660 -> 2598 bytes docs/graphics/launcher_options_files.png | Bin 5907 -> 6116 bytes docs/graphics/launcher_options_snapshots.png | Bin 4680 -> 5263 bytes docs/graphics/launcher_override.png | Bin 6859 -> 7897 bytes docs/graphics/options.png | Bin 4344 -> 3722 bytes docs/graphics/romaudit.png | Bin 3470 -> 4139 bytes docs/index.html | 6 +++--- 8 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/graphics/cheat.png b/docs/graphics/cheat.png index 9f2187653b504f6d7db3ee5ad13f09f368a5619a..63c4bc1be671ba4a65eb9f06ec9e3802527287fe 100644 GIT binary patch literal 3655 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 L?JP<$9?|~*dAvlp literal 3639 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 A>;M1& diff --git a/docs/graphics/launcher_filter.png b/docs/graphics/launcher_filter.png index e56e8bee689e9d52457394601f48339c7c763e2a..6549c986e5fa2c5275aaa44be87aa921200d8f99 100644 GIT binary patch literal 2598 zcmeHI2~$&97JkIA?}-f^LSd4gfoV z!!AdNB0MxSw8Tt_4*>b>z$fLujP=}ETm13|G8k(7>rC}#mc;nC+V z)_(dfRRm%f#A6Kd>0rkBz(^Vp5g2xgVRVYd&@?mJXJl$3)C|i60EuL0(BVk5|9rM= z(5R&xcm?0s{3%r*;h5fk`RdFqo%-eMbWJITLH#MSoXriDoev(wN+VFt2eHl&PMU?& zf^lkath%E1@fO?L8^W1^LGt~&z58LQ;zdq--ro=36BLtN1;xB79n;r@cg!NH|3LlQ zp+QfIYW>HCA2Et&_sR2-F)SIyWrA_H4^8{U5JCR|p>vh5zR@Ig^56UH;%MI~BXUM2 z{kuw*6bPFdVPs5rM}Xt7V?|U;c8cbkys+S#$pce!+n=bD)~1`LSUi zU(ahVzSk(v49G163x)=1p?aJor4qm1B2L>-v-I!S`IM(OWG}W~i%f6JF77*l)$^hm zR8r6_^iVK)>Q8#Oj07+v9YS56%XTWIOJ%A>}VK z`ETUKcy-sEP;d4;XQZz33EbfzHVMVatz#*fS{(n~jDgs*$COhe>|Yp}C{>u$j)2iC z8;{z3*_jEIW;J3t?=`G`Q^LD#o~KsP+TLo~GB`eK%Un*XIjO~!M0ICY zD%g8xHAH15#U-#>V+adiFkJ_V*UddLL(u9=B>mb-oLv|z%;OvIbnT+LJLN>YC~sM zax+Ht^1~Wp%C_=fW!tv+mIf%hP6RFhNCh%1M5)MD#WZd<)cDv(rlxpn7)6dO&r2eD zr8Mi?;%!4ryt(u{6VI0OmF<_D*r;J@fGURK!av54ce>7p3V&*RTDb{4k)ZO5Mi;x9 z9JyU-8tS5Z&0Q^AniEe4zs`#K4`1{5~T9aUvm>wv-`I!lXV+pb6nV$_N zF1V^|9_c}{Ue1@qak5rPoTZr0a5pCP=|t7<(V@->Axx$|aL z@CVl1d&?_1Ni}pN-cO+xYQ-N7yh3^Wftp@Z<5v4N$}%eu3zsqpB~zC$IK#XUhJA#& z#Dy?BMKv+p4(R=39T-AgCO+VJHhWDPVU5$i6|B}kcqQK{ZrYCh#VUugqD2md@HVIu z`6Oyb%gruZ%Itno1^wFG6hxNX7vifOU=7_j) zvdevFRqv6)26nY6y!VF-29d&_3ul5GhlWa`UAgyM9k<4aUen~fTK(0eTtAyq{OIGh zU~#wUSwofg;JbyOlUEm1Isd$Oj^%GfPHYM}0BQ1j!CHFb9GVmG*6e0X_rEmhWz{}Z zB)vR}H>Y*C7I5Q+tW>yBvEG6nJby~2Cx!h`J%704xOC9&MbOCm^im1m8UhPCx?&D; zVKOVXsA|CfdMVc)jkzEF)D~XxXg)XgNVwaFc&ZzXwQ;{4)ma@=jzphx**Uy2U-={T zc>|Iqm0dwggBqjp{V98MRz3EOB0!ivrCs{reg#9;#>oUQ04MoXY<6KKnLY-;t|&#MtbVdS+7$OC j4ZZ}Y73ZO}wzVbe#ana>70iZz{G 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 literal 5907 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 literal 4680 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 diff --git a/docs/graphics/launcher_override.png b/docs/graphics/launcher_override.png index a6c3dcfe089f685a6edd7da718a612fa7ec44da9..bd4e7a21d3f0ee144a8674b4140d01cedd9657e2 100644 GIT binary patch literal 7897 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 aCq2(VBeeOg?AI@A8g0#+8pZ1OgZ~TMOi!u+ literal 6859 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 K4>cfzQvU(=MtxfV literal 4344 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 MQX8dJs$qxz2S((%IsgCw diff --git a/docs/graphics/romaudit.png b/docs/graphics/romaudit.png index cae6dc145e9f6f60fe8e28348ff9b2bf47319252..a4017257eb11c3c0de318409656affe28540a095 100644 GIT binary patch literal 4139 zcmeHKi$7HB8XjtnacLMCwXJW$$y^`|Q1c`}_fCuitO2^{sEc-@Cr=eV^z3o|WxHu-zmg zF9Lx;Htn^;xj-O-0NCz^Z2+$TTSoxA2}HQqT0-jj6ehukje!=977)mle9={3CP zrzJ&~EGF^U$F@gZyF$g8+f8k;J=pdXPH^nlv*FsBDJ)tsw6dWMu;hob_vGWsu5eUHtl-l?_X54rlCydtzVvg#}NFK^+qzs zsmbAGKAYtuzLdAM3wbdF8ed zm)FFG_l?D<>sq~FCBD5SnAl0+E2<F8oVXkwGLSPErgyPGYRXobh_y7-dX$sG z$hV)mc&$1*9|3t2ShKxQx~eEWa%<51vZKvCYP;$;Stgbj05Lq7*=y`J>O+vrh~j$j zbE)0i#1uD?j$eVU)DbI4*ZYPcCDb=5CYC~&oT78u{g8yRl$pqoO((7p1@=9(+=4taP|oZ=08_|-sTQ=+ zpvpL?5Ly$}g-UyV_G)N(pCBOj<70ykdcBlQq1o-lX#lZtF!;#5*?wS4aiEqd{NU9c zI17G*pUy@&ceTmg6=g4*E`e0|si(iB1e*U+RL%kIouDCdoN{zq*C@2<@UU%C&Q+?2 z;?vwL5Uwe=@vPpn(*QfCIP0tf8Bw{)F$c%Vv)uTG6+X=(IT?)$xeDmE2Hl^aXI4lt)tG*szlQCHZO2FxB{N^erct& zD`*5|hbIpXxOAFd9_&PWO6irP13E3GD#fvyXw5YDq|_cPPdW{xg;L)8i>ZSXzQ>;l zbWv;GKVLS++d!?X?SN6F@5H1erRK84E>EQM1qs3J$Zv9G>(+@mt)t~~~l6g~je)Q`_tA5LO_m+uXy%*5>6pjOJa_7?n^vKuCe93 zd-f0*hm{8lJI=!lc#`E)2y)GKUH_V-wFAbToA%RL#bS&{x7wfB%A-0EpKebIw?y!Z z@?Q_2-b z@*m>gtuR@|XUnIO)=N`)k7UJc#wnj>xaZxpiHplcP}kCjmasC7#}Z1m)j{2zbyYn^ zW4oLy2Kfr*!Q57s8ltpLFI`7Nq{!XElrwR!9F@9g%$SKr2savS#RN+~NOK%%m{JPg z1Ae;ko5faNDavJ^%%G0-As*TKMK>B~=B?&f+uO$2O;2{iFTqhI5#Ulk5&Zi%?~?_q zUyF~!`<+KQ15j&aEoU1S+;gjwg8Zt!r{%p@_qE{L1gxiV^TT z^f_2oepFxDb!XsVQk6d zCJez!weY+mW*3>O*68Pf&fX6?7Gr!dg_|F6c(JF~^?<|QX?Fai$F;KR@Sc2XMfP8RD zaWcgD)qAw%b?0}0`4%($VIx09BNIABD+U{zDf6oKN5_tT1EIj%RK9XtQH*0`Jo-6U zrYto6zA^z??q3_I4hCCwg4I8~NQC({9{P->y{j(Lpk|~q�g1XJBiKQ^QRwQ zVPuV%jil!4VkE}q3T}J zB|K+lPU(ybcYQMJP}r>SD-^yDan=y!qp0aFxk%ArAm->ZwL_3^n2}dUyM=8VM z6pU##^`G*nY-19P)X+I3MdVU&V7BD&^IG^yBA*te#Vl#R{c!yGc~7R zt^qq7+1k;uE})etar&Fo3$1gaiP8gu0aeIgQLk=$#G{=-4jM{UFEJ@{u<2z`dGw+#89I5UEn+APQ>xMoj%4s+s)T@*|vM7Pav+B@q zS7K9h*a>QxEwoF_bTSiifu8`VF0~zrI}vwtX`#iW@QhBL_5)_|C1J-CXz9ymhVtAF z1xQH?Iyi-=?1Al69qaYN;oUHOH>0d^C*tCx(FY5a11>ZLEMTG+?@Ix}nli!?N~ggh zb{wIniAnrHE}o{*QP{kiG= z9du0ycVxSRcO@6Nrn@4vt)s$t*3f4+PuG%oLj+WLZ?o~%UeI6l>u(_P=K}D5fa{#l zT2jYX=~Zd7aPjh~?4_mtmO{o{yP-MJMCFg75^g&4i&~EDf)W#sjfV>v@G#*^Dc8_= z#t)y{TUq0uCvyzJGN%$#CZZ5OItcJX%BLtsyC^o|si0&Y75$*k3!ApsL1&#SJRj=# z#TRw>&6OPFVrj6aE9!7_8YA8Yj`zoQPK~kM@8)3f7jic?IeA!t4*S`}$=AxpTi5r{ zJcYy&$pug;XesJbl&X4bX`s7IN9c{QK_LD^>|KtMWdK--1IGse&zX;A%All>K3ie0 z%g^<`Sj$iXi*En@C)<`f4(#N0fNj_xIk@J)480S2$Lt|0N$RhHO??2QHOMVUy{{=WlE#CkD literal 3470 zcmeHJi$By^8z0QXj2TA8xRhIRHwGz+Fc^wLn~hw?Ozyk6jus`>V3ctwX{Zsz&!2h=gT82i7gg1mo9ym^g zK%{^#Rir1PB0#vP7(?`oIT{fZ6HAE>ghWz8!($A?17p-o4UG(q_dXk`6)M3$9JD96 z$C2I_pa1S4nPbnP;vtApaTOcP5*4lhY?cKB$H-&LDn{+YzNWAu`PvCbaik7qv~ z%^_WFC-bf6Wl^Iw$up6W7hAm7t{^{ouZ<>keJeC{H-wLGEMMfxIUc2J`}g2B97lVl z|61h;?~p$x;|Xun zdHc^Jy>mF_-TV|qcQ;$f+^MctKKN8Md><3!1!J*gZbo9sg>H&tlt%2{Z;YgU>uo%f z%N-=(XdDvA4_stQB?VEAKurm7c}ur<{kc@ViPm!Q>yAEX5U5sS@-mvzGL4cugm;aT zJWbt0(HBvVOPAZ}hZz*6SYrv-v9fV! z3-COfO=yP_v0my2qHYqrsA*BB2#NQ=F3GXxa_jCCy0oJ-#}2K!?jtUyx5sR3sB!-5Yt~ioD1t=8Q1kXz%5UFnqV6{ayNYjL zo&4B#9h_Rh&R3a{wia@>z0=FOnEWKXRFX*P84>3eEz%p@gKkiMD=4 zWQFG|GBv_NQM$R`T=qlpyoNu((?n@Ewulw`ydn!GN1B4Ihu>{zmwK;kBXM}z*7?j=g8TV;wZp*~J)%`x`Ax-R! zy$x*5(f~JFHd!MCl^p7{6<3Oq@hm!D@5b%C5DLvVegIpJu7>nKD8tF9)Ui?Hw>!7s zQ9pJv^-4JEKdlU-vu8(ar)fKDn-!dH>(JW5`Q8fElz{S6_$w_Pk6yeP(+5<^v!W5r zF={PHRb4=pg|tqd3gG+Q{2l(+d`>S9=>8=k{N3OFEmH^uT0oC9|LSMmvc->^m3x(} zN;oqf-(z>bNRN}5LyU&(%`W?779|kb(-8N0Z^VZ@a6w(qmvN$^j#aPSPRbtlB~O4G z;$sstJZkHe_DJhe&8|qj`teAqiZsN$S3z82M;XW+|# zKA#-SiZw6UQCH>U%)MOk^lMRh^GjY8Aui;eEz*5oKEH&FUBCXovUw3}M_BPPh>d%0 zN)D4(tE(pE zg=xg#P=`YAGpSv%(QJ#W9s%b_@E zK@Z2$(!Ya+okOqPAWC#2RFLk+pfFO|)~ffSgE$Fc(@~1Z3a0S z0v8QQyMGajacH8=eMJbWzd@!Gj}|0PtKf=H#BJNg^?n<5JjLC!Z-(HU+j^P9zN=vTGY=^V98Ld=DyAYwcY;6PEuU0n;jAxb)wF1qYKctKOLc$*enfSC#HbIy@vt$ zAP-%@mD~VMs{l*X2g2Yc09=-o)SvYXT74k`<2R!R1(sk2

A multi-platform Atari 2600 VCS emulator

-

Release 5.1.1

+

Release 6.0



User's Guide

@@ -61,7 +61,7 @@


-
February 1999 - February 2018
+
February 1999 - TODO 2018
The Stella Team
Stella Homepage
@@ -2736,8 +2736,8 @@ ItemBrief descriptionFor more information,
see CommandLine Save pathSpecifies where to save snapshots-snapsavedir Load pathSpecifies where to load snapshots-snaploaddir - Save snapshots according toSpecifies how to name saved snapshots-snapname Continuous snapshot intervalInterval (in seconds) between snapshots-ssinterval + Use actual ROM nameUse the actual ROM filename instead of the internal database name.-snapname Overwrite existing filesWhether to overwrite old snapshots-sssingle Ignore scaling (1x mode)Save snapshot in 1x mode without scaling-ss1x From 4013eb0e0b952f0de9f603e56d4886b6ed1059b0 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 5 Aug 2018 22:58:35 +0200 Subject: [PATCH 3/8] fixed ComboDialog --- docs/graphics/eventmapping_combo.png | Bin 2655 -> 3840 bytes src/gui/ComboDialog.cxx | 5 ++--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/graphics/eventmapping_combo.png b/docs/graphics/eventmapping_combo.png index 96eac8f6d73a7fba912d14d0d6a318b08b71dd09..5f4be9f43b151316d9499eb087c867ee5a2dd275 100644 GIT binary patch literal 3840 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 literal 2655 zcmaJ@2~-nV77Z?dG&YOnl92|CgA}6!gSd-9ngm1yEwP7v3yncrHi^*y0n}DQ!GJh| zsF>Jcnq^$l2#N#{TA|TKx7Qr=7P{`B?In@4=-@Ke)drb^)Ahz+&}O)~&`8t7=W12KKS5?e^bVg`63H-^ zxU^O^ZdnJCIxJUrx=yd|9OJJxuS+~!4^m_n-J9hU6%i2@$s#!&4hvz0eQSR704vh3p!tc2Wdm6cR;GsWpq>(ls* z!dGUGo;HYN;zc9dQiSk^AY|v%^>8Z+{H)jRrg5^f>Rvza_k1 zg931tCNHQ%ddp)>Ru5=PhN{xyX469Ngswv^4`i7eTlzy$JN~(sIYKzl8ohRfYt6mS zdFCU(q$`RZ-8`<{6YG3;T}KHA~Bl3NyOId0}x>ZYh z_Js+bM{MQ8##eiye#_sQ|NeQEs4!Y-Sa<16b6&TOiD%cJQIV3fAC*3QQ6*j@ zx!X3zXIu(JEts(@Gu%-jNt(m>6?T?*$`^FX3;NERdJez4xSG%H9>`(5A@_J4FWRi} zH@?wbf>kkZ`3VZV<3`K-FniW7wsaA9bghFS7?#lAt#v>kx*^>_KsT~aSVBkU0ZMG0 zAl1^pJi%&<%BmC*QD&72KBZ;>tx0LOrb@F0^(ZCr3t%)EMk(f~P?rbzWDD>fZsb_v zuH5^l@^UzM`N+!@3XdU{$oLrtaI*FAuso#{P(kGb;LW?yg+xa*h4LyE{R# zvJA$v=&W|qPnya}Wo%z`mV^nWBg)v_-k{!khYE}>_}R8jUV)W(l(uny*#=f@P*GJT z^o?sx0AiCn8vi)?Q>EP|O+t!9mM5|tpruNffMEca1~AM5{fJvmU?eRnm?5x(t6hN! z`)OZnYN7y234ebc!f{T~k?o5Lg44}k)gJh+AC$5UfZ~;tGtU*V1@V>(iF&ei71+v+ zzF@k(TEP~$7IuFI@uN;D{`f|0%mph8$; z;A@2fmhtB?53lP@Mw6@hChB;EP8T*AJHNgR}ss*><=Ru4U;9$ae%S@Q0wF z8uTP>h|v=sdz8}5%UA)*umwQpp2`TEpa-l2TJZW<02Aj7f9Qqh%2>sYYzZ@Zw=HOk z)37+RH%BOu{Unj`GD2{&oLbPqRZcDgZPG9SWdGEgA0`b^K%DTf|gMs;$vZH9){IuI`dLttv4 zETJ{9cr8&#`)@INAKtIC=Ms;S4A1%Rp@xrCR@;P@pAcI+`v>`NI8s(L0E>fVo8EdA zf5Euk}eyAPNE~Mk0UvSa4RfMBP@NK3Lbd*ETIv6_hYNG*aibUag|OZKMKSHJ98bWeQmF~%XuPxf`opwz zMx){y&PL)oUCDKs_4|DtylS`A@l=iw{tu~#r7y*_YMW-tFY;tlS@U`1(B#r%x8b<= za=vu2ur2=jUMOf{srud6bt0F;xD$#Rm5KPB>K|2Bqw~VE;!(SdB%ZJY%gb9fS!grB zJ~wE!8L5Y`bOt6fuFFNb-f+;8^!Z!zy*b(kYTIS!>?9TjGC%$vWp9aP6f(27<62TNxb4^By%oYYP3km3410BKfV}+P-L!!y zPxnOy*4~c(5qTFjUO=8i{M!m8wNL-Bm`+0G8GaU$-@|c-Eo)S8-0Q71)1rhigBARS Vs*RS};BOy^instance(), boss->parent(), font, ""), + : Dialog(boss->instance(), boss->parent(), font, "Add..."), myComboEvent(Event::NoType) { const int lineHeight = font.getLineHeight(), @@ -38,7 +38,7 @@ ComboDialog::ComboDialog(GuiObject* boss, const GUI::Font& font, WidgetArray wid; // Set real dimensions - _w = 35 * fontWidth + 10; + _w = 33 * fontWidth + 10*2; _h = 10 * (lineHeight + 4) + 10 + _th; xpos = 10; ypos = 10 + _th; @@ -57,7 +57,6 @@ ComboDialog::ComboDialog(GuiObject* boss, const GUI::Font& font, ypos += lineHeight + 4; }; - xpos = 10; myEvents[0] = nullptr; ADD_EVENT_POPUP(0, "Event 1 "); myEvents[1] = nullptr; ADD_EVENT_POPUP(1, "Event 2 "); myEvents[2] = nullptr; ADD_EVENT_POPUP(2, "Event 3 "); From 22dafd7508e53b4293107ec6cb6cffab0f72b759 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 5 Aug 2018 23:12:52 +0200 Subject: [PATCH 4/8] Fixed LauncherDialog buttons (right) alignment --- docs/graphics/launcher.png | Bin 24867 -> 24354 bytes src/gui/LauncherDialog.cxx | 38 +++++++++++++++++++------------------ 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/docs/graphics/launcher.png b/docs/graphics/launcher.png index 46826b1a84f53b4f71eaa8df5aef27d3db63dcf7..09dd9b1073a74762c091ebdf65719c7c016a380e 100644 GIT binary patch literal 24354 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

(~Qzt08{}) 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 G{J#Lz4&Whxm1Vn=59Ge^kn~VsOK~PYFAR;Y6 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 GhWrk3Y&(1a diff --git a/src/gui/LauncherDialog.cxx b/src/gui/LauncherDialog.cxx index c163e2a6f..6db174832 100644 --- a/src/gui/LauncherDialog.cxx +++ b/src/gui/LauncherDialog.cxx @@ -57,17 +57,19 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent, const string ELLIPSIS = "\x1d"; const GUI::Font& font = instance().frameBuffer().launcherFont(); + const int HBORDER = 10; + const int BUTTON_GAP = 8; const int fontWidth = font.getMaxCharWidth(), fontHeight = font.getFontHeight(), lineHeight = font.getLineHeight(), - bwidth = (_w - 2 * 10 - 8 * (4 - 1)) / 4, + bwidth = (_w - 2 * HBORDER - BUTTON_GAP * (4 - 1)), bheight = lineHeight + 4; - int xpos = 0, ypos = 0, lwidth = 0, lwidth2 = 0; + int xpos, ypos = 0, lwidth = 0, lwidth2 = 0; WidgetArray wid; // Show game name lwidth = font.getStringWidth("Select a ROM from the list" + ELLIPSIS); - xpos += 10; ypos += 8; + xpos = HBORDER; ypos += 8; new StaticTextWidget(this, font, xpos, ypos, lwidth, fontHeight, "Select a ROM from the list" + ELLIPSIS); @@ -131,35 +133,35 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent, // Add four buttons at the bottom xpos = 10; ypos += myDir->getHeight() + 8; #ifndef BSPF_MAC_OSX - myStartButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight, + myStartButton = new ButtonWidget(this, font, xpos, ypos, (bwidth + 0) / 4, bheight, "Select", kLoadROMCmd); wid.push_back(myStartButton); - xpos += bwidth + 8; - myPrevDirButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight, - "Go Up", kPrevDirCmd); + xpos += (bwidth + 0) / 4 + BUTTON_GAP; + myPrevDirButton = new ButtonWidget(this, font, xpos, ypos, (bwidth + 1) / 4, bheight, + "Go Up", kPrevDirCmd); wid.push_back(myPrevDirButton); - xpos += bwidth + 8; - myOptionsButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight, + xpos += (bwidth + 1) / 4 + BUTTON_GAP; + myOptionsButton = new ButtonWidget(this, font, xpos, ypos, (bwidth + 2) / 4, bheight, "Options" + ELLIPSIS, kOptionsCmd); wid.push_back(myOptionsButton); - xpos += bwidth + 8; - myQuitButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight, + xpos += (bwidth + 2) / 4 + BUTTON_GAP; + myQuitButton = new ButtonWidget(this, font, xpos, ypos, (bwidth + 3) / 4, bheight, "Quit", kQuitCmd); wid.push_back(myQuitButton); #else - myQuitButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight, + myQuitButton = new ButtonWidget(this, font, xpos, ypos, (bwidth + 0) / 4, bheight, "Quit", kQuitCmd); wid.push_back(myQuitButton); - xpos += bwidth + 8; - myOptionsButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight, + xpos += (bwidth + 0) / 4 + BUTTON_GAP; + myOptionsButton = new ButtonWidget(this, font, xpos, ypos, (bwidth + 1) / 4, bheight, "Options" + ELLIPSIS, kOptionsCmd); wid.push_back(myOptionsButton); - xpos += bwidth + 8; - myPrevDirButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight, + xpos += (bwidth + 1) / 4 + BUTTON_GAP; + myPrevDirButton = new ButtonWidget(this, font, xpos, ypos, (bwidth + 2) / 4, bheight, "Go Up", kPrevDirCmd); wid.push_back(myPrevDirButton); - xpos += bwidth + 8; - myStartButton = new ButtonWidget(this, font, xpos, ypos, bwidth, bheight, + xpos += (bwidth + 2) / 4 + BUTTON_GAP; + myStartButton = new ButtonWidget(this, font, xpos, ypos, (bwidth + 3) / 4, bheight, "Select", kLoadROMCmd); wid.push_back(myStartButton); #endif From 5bc8d2d1b094faa782186b285a03c227a9233be9 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 5 Aug 2018 19:14:07 -0230 Subject: [PATCH 5/8] When starting Stella for the first time, the first ROM chosen determines 'romdir' (fixes #324) Bumped version for upcoming release. Updated changelog, various grammatical fixes. --- Changes.txt | 25 ++++++++++++---------- src/common/Version.hxx | 4 ++-- src/gui/LauncherDialog.cxx | 43 +++++++------------------------------- src/gui/LauncherDialog.hxx | 8 ++----- 4 files changed, 26 insertions(+), 54 deletions(-) diff --git a/Changes.txt b/Changes.txt index 845bd1416..0a0fe01cc 100644 --- a/Changes.txt +++ b/Changes.txt @@ -12,29 +12,29 @@ Release History =========================================================================== -5.1.3 to 5.2: (MMM d, 2018) +5.1.3 to 6.0: (MMM d, 2018) * New cycle exact audio core based on work by Chris Brenner (crispy); greatly - improved audio emulation accuracy (i.e. E.T., Ms. Pacman) + improved audio emulation accuracy (i.e. E.T., Ms. Pacman). * Full rewrite of the audio subsystem; resample TIA output to target sample - rate directly in Stella + rate directly in Stella. - * Threading: decouple emulation from frame rendering + * Threading: decouple emulation from frame rendering. * Main loop rewritten; emulating speed and timing is now much more faithful - (i.e. speed in Pick'n'Pile) + (i.e. speed in Pick'n'Pile). - * Audio settings replaced with new audio.xxx settings + * Audio settings replaced with new 'audio.xxx' settings. - * FPS setting replaced with speed setting for adjusting emulation speed + * FPS setting replaced with speed setting for adjusting emulation speed. * Extra functionality for Time Machine dialog (start/stop recording; minor fixes; TODO button and initial key repeats...) - * Fixes for collision corner cases (during HBlank) + * Fixes for collision corner cases (during HBlank). - * UI modernization (new widget look, dialog titles added, dialogs refactored) + * UI modernization (new widget look, dialog titles added, dialogs refactored). * Changes in 'Game Properties' dialog - 'Default' button now affects only current tab like in all other dialogs. @@ -46,8 +46,11 @@ * The Linux builds now use the system-installed PNG and ZLIB libraries by default. + * When starting Stella for the first time, the first ROM selected will + determine which path to use by default for subsequent runs. + * Fixed emulator crash when starting SaveKey ROMs from commandline with - SaveKey messages enabled + SaveKey messages enabled. * Fixed missing TV format update in frame stats dialog when switching display type. @@ -57,7 +60,7 @@ * Updated included PNG library to latest stable version. * For better compatibility, the Windows 32-bit version does not requires SSE2 - anymore + anymore. -Have fun! diff --git a/src/common/Version.hxx b/src/common/Version.hxx index ef52325c7..bc1d304a5 100644 --- a/src/common/Version.hxx +++ b/src/common/Version.hxx @@ -18,7 +18,7 @@ #ifndef VERSION_HXX #define VERSION_HXX -#define STELLA_VERSION "5.2_soundtest-1" -#define STELLA_BUILD "4138" +#define STELLA_VERSION "6.0_pre1" +#define STELLA_BUILD "4409" #endif diff --git a/src/gui/LauncherDialog.cxx b/src/gui/LauncherDialog.cxx index 6db174832..fc964af32 100644 --- a/src/gui/LauncherDialog.cxx +++ b/src/gui/LauncherDialog.cxx @@ -216,31 +216,12 @@ const string& LauncherDialog::selectedRomMD5() // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void LauncherDialog::loadConfig() { + // Should we use a temporary directory specified on the commandline, or the + // default one specified by the settings? const string& tmpromdir = instance().settings().getString("tmpromdir"); const string& romdir = tmpromdir != "" ? tmpromdir : instance().settings().getString("romdir"); - // When romdir hasn't been set, it probably indicates that this is the first - // time running Stella; in this case, we should prompt the user - if(romdir == "") - { - if(!myFirstRunMsg) - { - StringList msg; - msg.push_back("This seems to be your first time running Stella."); - msg.push_back("Before you can start a game, you need to"); - msg.push_back("specify where your ROMs are located."); - msg.push_back(""); - msg.push_back("Click 'Default' to select a default ROM directory,"); - msg.push_back("or 'Browse' to browse the filesystem manually."); - myFirstRunMsg = make_unique - (this, instance().frameBuffer().font(), - msg, _w, _h, kFirstRunMsgChosenCmd, - "Default", "Browse", "ROM directory"); - } - myFirstRunMsg->show(); - } - // Assume that if the list is empty, this is the first time that loadConfig() // has been called (and we should reload the list) if(myList->getList().empty()) @@ -488,7 +469,13 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd, const string& result = instance().createConsole(romnode, myGameList->md5(item)); if(result == EmptyString) + { instance().settings().setValue("lastrom", myList->getSelectedString()); + + // If romdir has never been set, set it now based on the selected rom + if(instance().settings().getString("romdir") == EmptyString) + instance().settings().setValue("romdir", romnode.getParent().getShortPath()); + } else instance().frameBuffer().showMessage(result, MessagePosition::MiddleCenter, true); } @@ -515,20 +502,6 @@ void LauncherDialog::handleCommand(CommandSender* sender, int cmd, instance().eventHandler().quit(); break; - case kFirstRunMsgChosenCmd: - // Show a file browser, starting from the users' home directory - if(!myRomDir) - myRomDir = make_unique(this, instance().frameBuffer().font(), - _w, _h, "Select ROM directory"); - myRomDir->show("~", BrowserDialog::Directories, kStartupRomDirChosenCmd); - break; - - case kStartupRomDirChosenCmd: - { - FilesystemNode dir(myRomDir->getResult()); - instance().settings().setValue("romdir", dir.getShortPath()); - [[fallthrough]]; - } case kRomDirChosenCmd: myCurrentNode = FilesystemNode(instance().settings().getString("romdir")); if(!(myCurrentNode.exists() && myCurrentNode.isDirectory())) diff --git a/src/gui/LauncherDialog.hxx b/src/gui/LauncherDialog.hxx index 61400f461..0b60e0c2f 100644 --- a/src/gui/LauncherDialog.hxx +++ b/src/gui/LauncherDialog.hxx @@ -48,7 +48,7 @@ class LauncherDialog : public Dialog // These must be accessible from dialogs created by this class enum { kLoadROMCmd = 'STRT', // load currently selected ROM - kRomDirChosenCmd = 'romc', // rom chosen + kRomDirChosenCmd = 'romc', // rom dir chosen kReloadRomDirCmd = 'rdrl', // reload the current listing kReloadFiltersCmd = 'rlfl' // reload filtering options and current listing }; @@ -98,7 +98,6 @@ class LauncherDialog : public Dialog unique_ptr myGlobalProps; unique_ptr myFilters; unique_ptr myRomDir; - unique_ptr myFirstRunMsg; ButtonWidget* myStartButton; ButtonWidget* myPrevDirButton; @@ -122,10 +121,7 @@ class LauncherDialog : public Dialog enum { kPrevDirCmd = 'PRVD', kOptionsCmd = 'OPTI', - kQuitCmd = 'QUIT', - - kFirstRunMsgChosenCmd = 'frmc', - kStartupRomDirChosenCmd = 'rmsc' + kQuitCmd = 'QUIT' }; private: From f2f952f09b8fe1909b0e446b47b3bb2ed1e67760 Mon Sep 17 00:00:00 2001 From: Stephen Anthony Date: Sun, 5 Aug 2018 22:32:11 -0230 Subject: [PATCH 6/8] Reworking of the FSNode classes, using smart pointers. - For now, I simply use shared_ptr; long term, I will look into unique_ptr for more efficiency. --- src/common/FSNodeFactory.hxx | 8 ++++---- src/common/FSNodeZIP.cxx | 14 +++++--------- src/common/FSNodeZIP.hxx | 8 ++++---- src/emucore/FSNode.cxx | 12 ++++-------- src/emucore/FSNode.hxx | 11 ++++++----- src/unix/FSNodePOSIX.cxx | 12 ++++++------ src/unix/FSNodePOSIX.hxx | 2 +- src/windows/FSNodeWINDOWS.cxx | 6 +++--- src/windows/FSNodeWINDOWS.hxx | 2 +- 9 files changed, 34 insertions(+), 41 deletions(-) diff --git a/src/common/FSNodeFactory.hxx b/src/common/FSNodeFactory.hxx index c3b958c2e..4519c95d5 100644 --- a/src/common/FSNodeFactory.hxx +++ b/src/common/FSNodeFactory.hxx @@ -40,19 +40,19 @@ class FilesystemNodeFactory enum Type { SYSTEM, ZIP }; public: - static AbstractFSNode* create(const string& path, Type type) + static unique_ptr create(const string& path, Type type) { switch(type) { case SYSTEM: #if defined(BSPF_UNIX) || defined(BSPF_MAC_OSX) - return new FilesystemNodePOSIX(path); + return make_unique(path); #elif defined(BSPF_WINDOWS) - return new FilesystemNodeWINDOWS(path); + return make_unique(path); #endif break; case ZIP: - return new FilesystemNodeZIP(path); + return make_unique(path); break; } return nullptr; diff --git a/src/common/FSNodeZIP.cxx b/src/common/FSNodeZIP.cxx index 0528e9469..0af148608 100644 --- a/src/common/FSNodeZIP.cxx +++ b/src/common/FSNodeZIP.cxx @@ -29,8 +29,6 @@ FilesystemNodeZIP::FilesystemNodeZIP() _isDirectory(false), _isFile(false) { - // We need a name, else the node is invalid - _realNode = shared_ptr(nullptr); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -92,9 +90,7 @@ FilesystemNodeZIP::FilesystemNodeZIP(const string& p) else _isDirectory = true; - AbstractFSNode* tmp = - FilesystemNodeFactory::create(_zipFile, FilesystemNodeFactory::SYSTEM); - _realNode = shared_ptr(tmp); + _realNode = FilesystemNodeFactory::create(_zipFile, FilesystemNodeFactory::SYSTEM); setFlags(_zipFile, _virtualPath, _realNode); } @@ -102,7 +98,7 @@ FilesystemNodeZIP::FilesystemNodeZIP(const string& p) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FilesystemNodeZIP::FilesystemNodeZIP( const string& zipfile, const string& virtualpath, - shared_ptr realnode, bool isdir) + AbstractFSNodePtr realnode, bool isdir) : _error(ZIPERR_NONE), _numFiles(0), _isDirectory(isdir), @@ -114,7 +110,7 @@ FilesystemNodeZIP::FilesystemNodeZIP( // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - void FilesystemNodeZIP::setFlags(const string& zipfile, const string& virtualpath, - shared_ptr realnode) + AbstractFSNodePtr realnode) { _zipFile = zipfile; _virtualPath = virtualpath; @@ -195,7 +191,7 @@ uInt32 FilesystemNodeZIP::read(BytePtr& image) const } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AbstractFSNode* FilesystemNodeZIP::getParent() const +AbstractFSNodePtr FilesystemNodeZIP::getParent() const { if(_virtualPath == "") return _realNode ? _realNode->getParent() : nullptr; @@ -203,7 +199,7 @@ AbstractFSNode* FilesystemNodeZIP::getParent() const const char* start = _path.c_str(); const char* end = lastPathComponent(_path); - return new FilesystemNodeZIP(string(start, end - start - 1)); + return make_shared(string(start, end - start - 1)); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/common/FSNodeZIP.hxx b/src/common/FSNodeZIP.hxx index 29b51df00..56d83d378 100644 --- a/src/common/FSNodeZIP.hxx +++ b/src/common/FSNodeZIP.hxx @@ -61,16 +61,16 @@ class FilesystemNodeZIP : public AbstractFSNode ////////////////////////////////////////////////////////// bool getChildren(AbstractFSList& list, ListMode mode, bool hidden) const; - AbstractFSNode* getParent() const; + AbstractFSNodePtr getParent() const; uInt32 read(BytePtr& image) const; private: FilesystemNodeZIP(const string& zipfile, const string& virtualpath, - shared_ptr realnode, bool isdir); + AbstractFSNodePtr realnode, bool isdir); void setFlags(const string& zipfile, const string& virtualpath, - shared_ptr realnode); + AbstractFSNodePtr realnode); friend ostream& operator<<(ostream& os, const FilesystemNodeZIP& node) { @@ -91,7 +91,7 @@ class FilesystemNodeZIP : public AbstractFSNode ZIPERR_NO_ROMS }; - shared_ptr _realNode; + AbstractFSNodePtr _realNode; string _zipFile, _virtualPath; string _name, _path, _shortPath; zip_error _error; diff --git a/src/emucore/FSNode.cxx b/src/emucore/FSNode.cxx index c118ece2e..514131c4a 100644 --- a/src/emucore/FSNode.cxx +++ b/src/emucore/FSNode.cxx @@ -30,7 +30,7 @@ FilesystemNode::FilesystemNode() } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -FilesystemNode::FilesystemNode(AbstractFSNode *realNode) +FilesystemNode::FilesystemNode(AbstractFSNodePtr realNode) : _realNode(realNode) { } @@ -38,15 +38,11 @@ FilesystemNode::FilesystemNode(AbstractFSNode *realNode) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FilesystemNode::FilesystemNode(const string& p) { - AbstractFSNode* tmp = nullptr; - // Is this potentially a ZIP archive? if(BSPF::containsIgnoreCase(p, ".zip")) - tmp = FilesystemNodeFactory::create(p, FilesystemNodeFactory::ZIP); + _realNode = FilesystemNodeFactory::create(p, FilesystemNodeFactory::ZIP); else - tmp = FilesystemNodeFactory::create(p, FilesystemNodeFactory::SYSTEM); - - _realNode = shared_ptr(tmp); + _realNode = FilesystemNodeFactory::create(p, FilesystemNodeFactory::SYSTEM); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -132,7 +128,7 @@ FilesystemNode FilesystemNode::getParent() const if (_realNode == nullptr) return *this; - AbstractFSNode* node = _realNode->getParent(); + AbstractFSNodePtr node = _realNode->getParent(); return node ? FilesystemNode(node) : *this; } diff --git a/src/emucore/FSNode.hxx b/src/emucore/FSNode.hxx index 4291466ce..160274a5b 100644 --- a/src/emucore/FSNode.hxx +++ b/src/emucore/FSNode.hxx @@ -49,6 +49,7 @@ class FilesystemNode; class AbstractFSNode; +using AbstractFSNodePtr = shared_ptr; /** * List of multiple file system nodes. E.g. the contents of a given directory. @@ -144,7 +145,7 @@ class FilesystemNode * @return true if successful, false otherwise (e.g. when the directory * does not exist). */ - virtual bool getChildren(FSList &fslist, ListMode mode = kListDirectoriesOnly, + virtual bool getChildren(FSList& fslist, ListMode mode = kListDirectoriesOnly, bool hidden = false) const; /** @@ -261,8 +262,8 @@ class FilesystemNode string getShortPathWithExt(const string& ext) const; // FIXME - dead code private: - shared_ptr _realNode; - FilesystemNode(AbstractFSNode* realNode); + AbstractFSNodePtr _realNode; + FilesystemNode(AbstractFSNodePtr realNode); }; @@ -275,7 +276,7 @@ class FilesystemNode * the semantics. */ -using AbstractFSList = vector; +using AbstractFSList = vector; class AbstractFSNode { @@ -403,7 +404,7 @@ class AbstractFSNode * The parent node of this directory. * The parent of the root is the root itself. */ - virtual AbstractFSNode* getParent() const = 0; + virtual AbstractFSNodePtr getParent() const = 0; }; #endif diff --git a/src/unix/FSNodePOSIX.cxx b/src/unix/FSNodePOSIX.cxx index c9ae65112..8cdff324f 100644 --- a/src/unix/FSNodePOSIX.cxx +++ b/src/unix/FSNodePOSIX.cxx @@ -97,12 +97,11 @@ bool FilesystemNodePOSIX::getChildren(AbstractFSList& myList, ListMode mode, assert(_isDirectory); DIR* dirp = opendir(_path.c_str()); - struct dirent* dp; - if (dirp == nullptr) return false; - // loop over dir entries using readdir + // Loop over dir entries using readdir + struct dirent* dp; while ((dp = readdir(dirp)) != nullptr) { // Skip 'invisible' files if necessary @@ -137,7 +136,6 @@ bool FilesystemNodePOSIX::getChildren(AbstractFSList& myList, ListMode mode, } else { - entry._isValid = (dp->d_type == DT_DIR) || (dp->d_type == DT_REG) || (dp->d_type == DT_LNK); if (dp->d_type == DT_LNK) { struct stat st; @@ -157,6 +155,8 @@ bool FilesystemNodePOSIX::getChildren(AbstractFSList& myList, ListMode mode, if (entry._isDirectory) entry._path += "/"; + + entry._isValid = entry._isDirectory || entry._isFile; } #endif @@ -226,7 +226,7 @@ bool FilesystemNodePOSIX::rename(const string& newfile) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AbstractFSNode* FilesystemNodePOSIX::getParent() const +AbstractFSNodePtr FilesystemNodePOSIX::getParent() const { if (_path == "/") return nullptr; @@ -234,5 +234,5 @@ AbstractFSNode* FilesystemNodePOSIX::getParent() const const char* start = _path.c_str(); const char* end = lastPathComponent(_path); - return new FilesystemNodePOSIX(string(start, size_t(end - start))); + return make_unique(string(start, size_t(end - start))); } diff --git a/src/unix/FSNodePOSIX.hxx b/src/unix/FSNodePOSIX.hxx index f05720d65..d6fb7346b 100644 --- a/src/unix/FSNodePOSIX.hxx +++ b/src/unix/FSNodePOSIX.hxx @@ -72,7 +72,7 @@ class FilesystemNodePOSIX : public AbstractFSNode bool rename(const string& newfile) override; bool getChildren(AbstractFSList& list, ListMode mode, bool hidden) const override; - AbstractFSNode* getParent() const override; + AbstractFSNodePtr getParent() const override; protected: string _path; diff --git a/src/windows/FSNodeWINDOWS.cxx b/src/windows/FSNodeWINDOWS.cxx index acd948b1f..0671d1e05 100644 --- a/src/windows/FSNodeWINDOWS.cxx +++ b/src/windows/FSNodeWINDOWS.cxx @@ -296,7 +296,7 @@ bool FilesystemNodeWINDOWS::rename(const string& newfile) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -AbstractFSNode* FilesystemNodeWINDOWS::getParent() const +AbstractFSNodePtr FilesystemNodeWINDOWS::getParent() const { if(_isPseudoRoot) return nullptr; @@ -306,8 +306,8 @@ AbstractFSNode* FilesystemNodeWINDOWS::getParent() const const char* start = _path.c_str(); const char* end = lastPathComponent(_path); - return new FilesystemNodeWINDOWS(string(start, size_t(end - start))); + return make_shared(string(start, size_t(end - start))); } else - return new FilesystemNodeWINDOWS(); + return make_shared(); } diff --git a/src/windows/FSNodeWINDOWS.hxx b/src/windows/FSNodeWINDOWS.hxx index f8b601365..3a700c6b8 100644 --- a/src/windows/FSNodeWINDOWS.hxx +++ b/src/windows/FSNodeWINDOWS.hxx @@ -69,7 +69,7 @@ class FilesystemNodeWINDOWS : public AbstractFSNode bool rename(const string& newfile) override; bool getChildren(AbstractFSList& list, ListMode mode, bool hidden) const override; - AbstractFSNode* getParent() const override; + AbstractFSNodePtr getParent() const override; protected: string _displayName; From 7336e27111c9f777f2b4883391395cc9b57a3216 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 6 Aug 2018 08:10:01 +0200 Subject: [PATCH 7/8] improved dialog darkening when not on top --- src/gui/Dialog.cxx | 13 +++++++------ src/gui/Dialog.hxx | 2 ++ src/gui/EditTextWidget.cxx | 7 +++++-- src/gui/EditableWidget.cxx | 1 + src/gui/RomInfoWidget.cxx | 6 ++++-- src/gui/StringListWidget.cxx | 6 +++++- src/gui/TabWidget.cxx | 17 ++++++++++------- src/gui/Widget.cxx | 26 ++++++++++++++++++-------- src/gui/Widget.hxx | 2 ++ 9 files changed, 54 insertions(+), 26 deletions(-) diff --git a/src/gui/Dialog.cxx b/src/gui/Dialog.cxx index 3d9a76b0a..4f3ffd074 100644 --- a/src/gui/Dialog.cxx +++ b/src/gui/Dialog.cxx @@ -56,6 +56,7 @@ Dialog::Dialog(OSystem& instance, DialogContainer& parent, const GUI::Font& font _okWidget(nullptr), _cancelWidget(nullptr), _visible(false), + _onTop(true), _processCancel(false), _title(title), _th(0), @@ -331,25 +332,25 @@ void Dialog::drawDialog() cerr << COUNT++ << " Dialog::drawDialog()\n"; // Dialog is still on top if e.g a ContextMenu is opened - bool onTop = parent().myDialogStack.top() == this + _onTop = parent().myDialogStack.top() == this || (parent().myDialogStack.get(parent().myDialogStack.size() - 2) == this && !parent().myDialogStack.top()->hasTitle()); if(_flags & WIDGET_CLEARBG) { // cerr << "Dialog::drawDialog(): w = " << _w << ", h = " << _h << " @ " << &s << endl << endl; - s.fillRect(_x, _y + _th, _w, _h - _th, onTop ? kDlgColor : kBGColorLo); + s.fillRect(_x, _y + _th, _w, _h - _th, _onTop ? kDlgColor : kBGColorLo); if(_th) { - s.fillRect(_x, _y, _w, _th, onTop ? kColorTitleBar : kColorTitleBarLo); + s.fillRect(_x, _y, _w, _th, _onTop ? kColorTitleBar : kColorTitleBarLo); s.drawString(_font, _title, _x + 10, _y + 2 + 1, _font.getStringWidth(_title), - onTop ? kColorTitleText : kColorTitleTextLo); + _onTop ? kColorTitleText : kColorTitleTextLo); } } else s.invalidate(); - if(_flags & WIDGET_BORDER) - s.frameRect(_x, _y, _w, _h, onTop ? kColor : kShadowColor); + if(_flags & WIDGET_BORDER) // currently only used by Dialog itself + s.frameRect(_x, _y, _w, _h, _onTop ? kColor : kShadowColor); // Make all child widget dirty Widget* w = _firstWidget; diff --git a/src/gui/Dialog.hxx b/src/gui/Dialog.hxx index 71df684a3..444848ac1 100644 --- a/src/gui/Dialog.hxx +++ b/src/gui/Dialog.hxx @@ -55,6 +55,7 @@ class Dialog : public GuiObject void close(); bool isVisible() const override { return _visible; } + bool isOnTop() { return _onTop; } virtual void center(); virtual void drawDialog(); @@ -152,6 +153,7 @@ class Dialog : public GuiObject Widget* _cancelWidget; bool _visible; + bool _onTop; bool _processCancel; string _title; int _th; diff --git a/src/gui/EditTextWidget.cxx b/src/gui/EditTextWidget.cxx index 7223bc834..d0dcf8fa8 100644 --- a/src/gui/EditTextWidget.cxx +++ b/src/gui/EditTextWidget.cxx @@ -28,7 +28,7 @@ EditTextWidget::EditTextWidget(GuiObject* boss, const GUI::Font& font, _changed(false) { _flags = WIDGET_ENABLED | WIDGET_CLEARBG | WIDGET_RETAIN_FOCUS; - + startEditMode(); // We're always in edit mode } @@ -85,7 +85,10 @@ void EditTextWidget::drawWidget(bool hilite) if(_changed) s.fillRect(_x, _y, _w, _h, kDbgChangedColor); else if(!isEditable()) - s.fillRect(_x, _y, _w, _h, kDlgColor); + { + bool onTop = _boss->dialog().isOnTop(); + s.fillRect(_x, _y, _w, _h, onTop ? kDlgColor : kBGColorLo); + } // Draw a thin frame around us. s.frameRect(_x, _y, _w, _h, hilite && isEditable() && isEnabled() ? kWidColorHi : kColor); diff --git a/src/gui/EditableWidget.cxx b/src/gui/EditableWidget.cxx index 24790dfef..47bf5a447 100644 --- a/src/gui/EditableWidget.cxx +++ b/src/gui/EditableWidget.cxx @@ -39,6 +39,7 @@ EditableWidget::EditableWidget(GuiObject* boss, const GUI::Font& font, _bgcolor = kWidColor; _bgcolorhi = kWidColor; + _bgcolorlo = kDlgColor; _textcolor = kTextColor; _textcolorhi = kTextColor; diff --git a/src/gui/RomInfoWidget.cxx b/src/gui/RomInfoWidget.cxx index bdd6278ef..744f0e215 100644 --- a/src/gui/RomInfoWidget.cxx +++ b/src/gui/RomInfoWidget.cxx @@ -39,7 +39,8 @@ RomInfoWidget::RomInfoWidget(GuiObject* boss, const GUI::Font& font, GUI::Size(320, TIAConstants::maxViewableHeight)) { _flags = WIDGET_ENABLED; - _bgcolor = _bgcolorhi = kWidColor; + _bgcolor = kDlgColor; + _bgcolorlo = kBGColorLo; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -139,10 +140,11 @@ void RomInfoWidget::parseProperties() void RomInfoWidget::drawWidget(bool hilite) { FBSurface& s = dialog().surface(); + bool onTop = _boss->dialog().isOnTop(); const int yoff = myAvail.h + 10; - s.fillRect(_x+2, _y+2, _w-4, _h-4, kDlgColor); + s.fillRect(_x+2, _y+2, _w-4, _h-4, onTop ? _bgcolor : _bgcolorlo); s.frameRect(_x, _y, _w, _h, kColor); s.frameRect(_x, _y+yoff, _w, _h-yoff, kColor); diff --git a/src/gui/StringListWidget.cxx b/src/gui/StringListWidget.cxx index cd5a6fe9b..6ddd46dbe 100644 --- a/src/gui/StringListWidget.cxx +++ b/src/gui/StringListWidget.cxx @@ -29,6 +29,7 @@ StringListWidget::StringListWidget(GuiObject* boss, const GUI::Font& font, boss->instance().settings().getInt("listdelay") >= 300), _hilite(hilite) { + _bgcolorlo = kDlgColor; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -77,7 +78,10 @@ void StringListWidget::drawWidget(bool hilite) textColor = kTextColorInv; } else - s.frameRect(_x + 1, _y + 1 + _fontHeight * i, _w - 1, _fontHeight, kWidColorHi); + { + bool onTop = _boss->dialog().isOnTop(); + s.frameRect(_x + 1, _y + 1 + _fontHeight * i, _w - 1, _fontHeight, onTop ? kWidColorHi : kBGColorLo); + } } GUI::Rect r(getEditRect()); diff --git a/src/gui/TabWidget.cxx b/src/gui/TabWidget.cxx index 55dd450de..64fe23df7 100644 --- a/src/gui/TabWidget.cxx +++ b/src/gui/TabWidget.cxx @@ -262,6 +262,7 @@ void TabWidget::drawWidget(bool hilite) Widget::setDirtyInChain(_tabs[_activeTab].firstWidget); FBSurface& s = dialog().surface(); + bool onTop = _boss->dialog().isOnTop(); // Iterate over all tabs and draw them int i, x = _x + kTabLeftOffset; @@ -269,25 +270,27 @@ void TabWidget::drawWidget(bool hilite) { uInt32 fontcolor = _tabs[i].enabled ? kTextColor : kColor; int yOffset = (i == _activeTab) ? 0 : 1; - s.fillRect(x, _y + 1, _tabWidth, _tabHeight - 1, (i == _activeTab) - ? kDlgColor : kBGColorHi); // ? kWidColor : kDlgColor + s.fillRect(x, _y + 1, _tabWidth, _tabHeight - 1, + (i == _activeTab) + ? onTop ? kDlgColor : kBGColorLo + : onTop ? kBGColorHi : kDlgColor); // ? kWidColor : kDlgColor s.drawString(_font, _tabs[i].title, x + kTabPadding + yOffset, _y + yOffset + (_tabHeight - _fontHeight - 1), _tabWidth - 2 * kTabPadding, fontcolor, TextAlign::Center); if(i == _activeTab) { - s.hLine(x, _y, x + _tabWidth - 1, kWidColor); - s.vLine(x + _tabWidth, _y + 1, _y + _tabHeight - 1, kBGColorLo); + s.hLine(x, _y, x + _tabWidth - 1, onTop ? kWidColor : kDlgColor); + s.vLine(x + _tabWidth, _y + 1, _y + _tabHeight - 1, onTop ? kBGColorLo : kColor); } else - s.hLine(x, _y + _tabHeight, x + _tabWidth, kWidColor); + s.hLine(x, _y + _tabHeight, x + _tabWidth, onTop ? kWidColor : kDlgColor); x += _tabWidth + kTabSpacing; } // fill empty right space - s.hLine(x - kTabSpacing + 1, _y + _tabHeight, _x + _w - 1, kWidColor); - s.hLine(_x, _y + _h - 1, _x + _w - 1, kBGColorLo); + s.hLine(x - kTabSpacing + 1, _y + _tabHeight, _x + _w - 1, onTop ? kWidColor : kDlgColor); + s.hLine(_x, _y + _h - 1, _x + _w - 1, onTop ? kBGColorLo : kColor); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/gui/Widget.cxx b/src/gui/Widget.cxx index fad6d82f4..4c20e8745 100644 --- a/src/gui/Widget.cxx +++ b/src/gui/Widget.cxx @@ -38,8 +38,10 @@ Widget::Widget(GuiObject* boss, const GUI::Font& font, _hasFocus(false), _bgcolor(kWidColor), _bgcolorhi(kWidColor), + _bgcolorlo(kBGColorLo), _textcolor(kTextColor), _textcolorhi(kTextColorHi), + _textcolorlo(kBGColorLo), _shadowcolor(kShadowColor) { // Insert into the widget list of the boss @@ -77,7 +79,9 @@ void Widget::draw() FBSurface& s = _boss->dialog().surface(); - bool hasBorder = _flags & WIDGET_BORDER; + bool onTop = _boss->dialog().isOnTop(); + + bool hasBorder = _flags & WIDGET_BORDER; // currently only used by Dialog widget int oldX = _x, oldY = _y; // Account for our relative position in the dialog @@ -92,13 +96,13 @@ void Widget::draw() { x++; y++; w-=2; h-=2; } - s.fillRect(x, y, w, h, (_flags & WIDGET_HILITED) && isEnabled() ? _bgcolorhi : _bgcolor); + s.fillRect(x, y, w, h, !onTop ? _bgcolorlo : (_flags & WIDGET_HILITED) && isEnabled() ? _bgcolorhi : _bgcolor); } // Draw border if(hasBorder) { - s.frameRect(_x, _y, _w, _h, (_flags & WIDGET_HILITED) && isEnabled() ? kWidColorHi : kColor); + s.frameRect(_x, _y, _w, _h, !onTop ? kColor : (_flags & WIDGET_HILITED) && isEnabled() ? kWidColorHi : kColor); _x += 4; _y += 4; _w -= 8; @@ -203,6 +207,8 @@ Widget* Widget::setFocusForChain(GuiObject* boss, WidgetArray& arr, FBSurface& s = boss->dialog().surface(); int size = int(arr.size()), pos = -1; Widget* tmp; + bool onTop = boss->dialog().isOnTop(); + for(int i = 0; i < size; ++i) { tmp = arr[i]; @@ -226,7 +232,7 @@ Widget* Widget::setFocusForChain(GuiObject* boss, WidgetArray& arr, else tmp->_hasFocus = false; - s.frameRect(x, y, w, h, kDlgColor); + s.frameRect(x, y, w, h, onTop ? kDlgColor : kBGColorLo); tmp->setDirty(); } @@ -279,7 +285,8 @@ Widget* Widget::setFocusForChain(GuiObject* boss, WidgetArray& arr, else tmp->_hasFocus = true; - s.frameRect(x, y, w, h, kWidFrameColor, FrameStyle::Dashed); + if (onTop) + s.frameRect(x, y, w, h, kWidFrameColor, FrameStyle::Dashed); tmp->setDirty(); @@ -368,8 +375,10 @@ ButtonWidget::ButtonWidget(GuiObject* boss, const GUI::Font& font, _flags = WIDGET_ENABLED | WIDGET_CLEARBG; _bgcolor = kBtnColor; _bgcolorhi = kBtnColorHi; + _bgcolorlo = kColor; _textcolor = kBtnTextColor; _textcolorhi = kBtnTextColorHi; + _textcolorlo = kBGColorLo; _editable = false; } @@ -457,16 +466,17 @@ void ButtonWidget::setBitmap(uInt32* bitmap, int bmw, int bmh) void ButtonWidget::drawWidget(bool hilite) { FBSurface& s = _boss->dialog().surface(); + bool onTop = _boss->dialog().isOnTop(); - s.frameRect(_x, _y, _w, _h, hilite && isEnabled() ? kBtnBorderColorHi : kBtnBorderColor); + s.frameRect(_x, _y, _w, _h, !onTop ? kShadowColor : hilite && isEnabled() ? kBtnBorderColorHi : kBtnBorderColor); if (!_useBitmap) s.drawString(_font, _label, _x, _y + (_h - _fontHeight)/2 + 1, _w, - !isEnabled() ? /*hilite ? uInt32(kColor) :*/ uInt32(kBGColorLo) : + !(isEnabled() && onTop) ? _textcolorlo : hilite ? _textcolorhi : _textcolor, _align); else s.drawBitmap(_bitmap, _x + (_w - _bmw) / 2, _y + (_h - _bmh) / 2, - !isEnabled() ? /*hilite ? uInt32(kColor) :*/ uInt32(kBGColorLo) : + !(isEnabled() && onTop) ? _textcolorlo : hilite ? _textcolorhi : _textcolor, _bmw, _bmh); diff --git a/src/gui/Widget.hxx b/src/gui/Widget.hxx index a550073cd..62cb82404 100644 --- a/src/gui/Widget.hxx +++ b/src/gui/Widget.hxx @@ -142,8 +142,10 @@ class Widget : public GuiObject int _fontHeight; uInt32 _bgcolor; uInt32 _bgcolorhi; + uInt32 _bgcolorlo; uInt32 _textcolor; uInt32 _textcolorhi; + uInt32 _textcolorlo; uInt32 _shadowcolor; public: From af5eea286cc6b3138c9caadc3430867c902c5c54 Mon Sep 17 00:00:00 2001 From: Christian Speckner Date: Mon, 6 Aug 2018 09:28:56 +0200 Subject: [PATCH 8/8] Fix debugger start parameters: * Pass parameters from DispatchResult to debugger * Fix default trap type (= read) * Remove fallout from branch merge --- src/emucore/DispatchResult.hxx | 2 +- src/emucore/M6502.cxx | 15 --------------- src/emucore/M6502.hxx | 6 ------ src/emucore/OSystem.cxx | 6 +++++- 4 files changed, 6 insertions(+), 23 deletions(-) diff --git a/src/emucore/DispatchResult.hxx b/src/emucore/DispatchResult.hxx index 5579d4ede..9c86144a8 100644 --- a/src/emucore/DispatchResult.hxx +++ b/src/emucore/DispatchResult.hxx @@ -43,7 +43,7 @@ class DispatchResult void setOk(uInt64 cycles); - void setDebugger(uInt64 cycles, const string& message = "", int address = -1, bool wasReadTrap = false); + void setDebugger(uInt64 cycles, const string& message = "", int address = -1, bool wasReadTrap = true); void setFatal(uInt64 cycles); diff --git a/src/emucore/M6502.cxx b/src/emucore/M6502.cxx index 85016829a..d9497cb7d 100644 --- a/src/emucore/M6502.cxx +++ b/src/emucore/M6502.cxx @@ -238,21 +238,6 @@ bool M6502::execute(uInt64 number) return result.isSuccess(); } -bool M6502::startDebugger(const string& message, int address, bool read) { - handleHalt(); - - mySystem->tia().updateEmulation(); - mySystem->m6532().updateEmulation(); - - #ifndef DEBUGGER_SUPPORT - return false; - #endif - - if (!myDebugger) return false; - - return myDebugger->start(message, address, read); -} - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - inline void M6502::_execute(uInt64 cycles, DispatchResult& result) { diff --git a/src/emucore/M6502.hxx b/src/emucore/M6502.hxx index 4dd0e3899..5504a5366 100644 --- a/src/emucore/M6502.hxx +++ b/src/emucore/M6502.hxx @@ -333,12 +333,6 @@ class M6502 : public Serializable void updateStepStateByInstruction(); #endif // DEBUGGER_SUPPORT - /** - Make sure that the current hardware state is up to date (TIA & RIOT) and dispatch - debugger. - */ - bool startDebugger(const string& message = "", int address = -1, bool read = true); - private: /** Bit fields used to indicate that certain conditions need to be diff --git a/src/emucore/OSystem.cxx b/src/emucore/OSystem.cxx index 664c35c8b..1b8966f46 100644 --- a/src/emucore/OSystem.cxx +++ b/src/emucore/OSystem.cxx @@ -685,7 +685,11 @@ double OSystem::dispatchEmulation(EmulationWorker& emulationWorker) #ifdef DEBUGGER_SUPPORT // Break or trap? -> start debugger - if (dispatchResult.getStatus() == DispatchResult::Status::debugger) myDebugger->start(); + if (dispatchResult.getStatus() == DispatchResult::Status::debugger) myDebugger->start( + dispatchResult.getMessage(), + dispatchResult.getAddress(), + dispatchResult.wasReadTrap() + ); #endif // Handle frying