From 8f78bbdca1e930b728f32077dafbc0f40f8727de Mon Sep 17 00:00:00 2001 From: dani <> Date: Sun, 6 Aug 2023 17:25:20 +0000 Subject: [PATCH] map edit shows border around map --- CHANGLOG.md | 5 ++- examples/basic/gfx.gif | Bin 27748 -> 27777 bytes src/mapedit.rs | 79 +++++++++++++++++++++++++++++++---------- 3 files changed, 65 insertions(+), 19 deletions(-) diff --git a/CHANGLOG.md b/CHANGLOG.md index 9f4e05b..0eeb789 100644 --- a/CHANGLOG.md +++ b/CHANGLOG.md @@ -1,3 +1,6 @@ +# 0.3.0 +- added size to backgrounds + # 0.2.1 - 2023-07-27 - fixed missing dependency in scaffolding @@ -8,4 +11,4 @@ - added gsa scaffolding tool # 0.1.0 - 2023-07-21 -initial release \ No newline at end of file +- initial release diff --git a/examples/basic/gfx.gif b/examples/basic/gfx.gif index d3561d1b9a7519fff7f19e5d20d266ae84ca7e4e..3bb85d3b61c03b8a354672153e1e691e85274128 100644 GIT binary patch delta 8730 zcmV+#BIVuW*a3mr0k8@K12r`@vke29EPo0TV~jDhE33f@J1nuq8hb3V$tt@nv&}mD zY-p|?*^#S2#&r^{EEz-?KNfAP5U;%s^lP`!ntLv~>8iUfyY0IBF1+!|JFjYY4SHjt zeeFr0W(6unsB?58S0`Whf@Tmwx*{B|xa5{gFT@c`JTb);TYNFb8Ed>T$0Zs#r+>b3 z>d0n~Y>wQWUK9TRSg?X~Eu7KI9*H~duN~WbGtN2dyfe=|`}{M|L8HsrWGPR$Cehec zr{J_9OBk?^E5G$H%puL(kHbQ1y*1Zed;K-oVT(OB*=2{dw1IjSy<>#P*_oigX$zbq zk!oYd($!g;y*J-|`~5fIfeSu3;eUmn+8N6vE2gH~Z(d7qgZE0e7Rh$k9dfK7C2UdN z%Kehz58Cav^&Ac@2za7 z1iQE7Ui~}s%{%`*^wCQ{J@wUN8GKGRUgsQvDs5ho!^>MgKKbRFe?I!@tAD>f`zp!# zFVc{^O?jKgJ^y#VzIyKa^xW5CKT`N+*1iD}uz&_UAOaJpzy)>;WR%;C)cD7vIMJ(l6p8O;zLn+EjO@A^?aD>|nuLvln z1*UtgG+5mKASk=5i7O%wyCp6wIm%t~vX{R6B`||2O!e4Ll{bXR6G>u2fXQl>v>XpV zo(WB9dT5x|ye2lYsm*P2vztKqAC3wo&f$?$js`O)Ih(1@2wsGmm5F99qp6U_B&IQy z`Hna9sn31#v!DL_r++7lX-7Rua9XTHr9dgzzhl1AA?`#BJT(=O#>n$mhMA{@0IJcA za}><36VsBKKR%|kplvhW1i9xJna=a3oY^T(7Xnf5M1PW~Ui~Uq!z$LXk~LC_ zQyd)6%Kt~TsxzD>71ZJYg;3^DHKGp7Dm@od)$Me(tbY9~U;``I!4kGUr5w;6k5X5f z-nF7ME68D@nbE>hwz8JJEM_ySS<@tTrBc+QDWAGMb}sXUE$b6#7Hic$I+ineB@8|{ zE8E%9wzjstEq`u#VyzrS^+>zjQOU4}pt;y@xc^XXO(TO<$#T)I1et7ZqbuF%Qn$L+ z^(r3YchH~IaB?GstDW-27UWv>rjCW^G-G?+^|H6U?tL$O1IkR#A`P7=y2+9YAt`?Hb7q#mB~d@F z8INIpGk=`pEay4X*+p^G-mD^bIVVFBhakzXmebniK@+;rhCVc+6Rqe)GrG}^el(;b z?ZQ&!gc7{%FE3rqF4XCZQ-oM5eaB zHLi25>s|A@*S`KWu!AjZii*0}#y&Q(ldbG!Gk^QjseU%Jqb==eUq!saRpwHG%O?wO zYX7%U95%SaE$(rXyWHkJcdu;P>~*ud-R^!jyhTmzdDFYz_P)1GqO4^68Yij!E-iiM zhbP8K_=)^25V{kt@P#wH;SR5Bydy60iBr7d$Hq6tGp_NCZydE3%&^+{%Mm=I%z_Ns zGk@E>{iBDoyyY%`Im~aZZi~~r<~F~1#5u0>o%6isao%ppU@W!Esg!m3y(0t%zFjJ+ zCFV|lI@F_n?wRAf>Q=ux)<^C0t#iHWUU%@3@9X4*c6ODpTH7-FS|O>kz3py)`_-tP z^|{l%?p6Of-t(^az3bi0Pz}l2;V$^W6Mw$ta<@C;6R&u7^S$woe>~*DI^(+atBF|u zbSlaLuWe~%zVjn5Jh~+<`q3{M^us><;#05s)pI)Xu75r3WA9C+Qhs3d!@PC0?0L>_ zexZXgy}1Jqd|?ZJ__;yxkiN7$-Ml7ct2W`FO>Vn3_to2UjPc=03ILv z9UuZOp8PE!12&)o642z?h4m%KTQL>=u+;WV#|1(MOm(1rJw^cr+xdkcRgs{~B_Il> zAl5w~3$~yOz98?=AJM(f_2HiX8GlsoWnW9kg$erF2=<^f{U8uRlnNH15mp=wCjX%l zE+G>RP6Xl!!5CHl<(>vk;SE+%O7P$i>Y5O4VJ&%K5FVizj-k6Xp&6bb8m3{-$e;v5 zVN>}T7J6R(RiO^DgcgFKt#u(DBE}xZ9U1;1AR?O@4k95Iq9KZzQ|%vUS$`oNY7y@} zV%+p$3C>K2!CWO~h6qYxEd?Scc4DU;A}EHUD2}4Bkle_9geguD|Dg;do?_Z*;+0V% zU+H1F!4^G@8!eh3@_8aJ_TnXxA}|J{Fb<=nq+-dD*(%8mm7P_=Nz^h98hv#JEM}Q3 z23{q?7G_-HHC|#h){-q|#(y?`BPCAbJNcqHo}(@iqdKl5JGNt%7~=+=A{@&9q3@xh z9g^cS6(45YB0uKUE!rYL&LSrEW88`3K=NTf1|%)zA_?vyIzHqPx}!u+Bt=$aiZI$* z9okwg<3=V9G~S+}MWbusW8CGVLV6=6O5Sw;Nv`EvvSmJ6C05?05qhOw?j>LLC2WA@ zJW}CU4yG#lk5QuKJ%1r)Vv=J`;-zD%o?k|$WKJe!K1JsJnYK|#X4Ydy2LDPa5t?Go zWN6wGJ~rlKo+jc|rfRMxYqn;-{T*TIkVnv?Xo1&fJ`!k-CTWHyLx!Mfq9$-=oofy! zaTcd>lBK}yQRn@ea&llxRm+`x25t_TZtkXH_GSV8W^isN&VL=JcYY^$uI6RhBf!BX zQQ}{BM5mw73U%rxb`Ift2B3CwCw*F6c-|*|=I2g6T1QHme?r=NV&r;4iF+1kY1Su# z+MRwbD1$aAMQV@k31(qlTW1oQbb4lW#%B*|X!*@&f_`WjI;e<_D2ak1gl?NyPN+Rr zC^QZzb!4c4GJhtB&gk8hsEytzj>6!HVq1!?qInL9qFpGhWGLwssgbV#nO)MTlGz!hf7QVelub#AHndFYaUsk}j{n2sr#<{fi}mxR^kQ9+Ir#+b^r z6%M6cLU1Xa!lIXgDV}~}neHi{_UW{}4WL=j{lU~yp?}lI1y{h#pd3BfoYtwM;^Cd< zsib0>pH`}+UMidwh!yG3a$eZ0^%gT8lVn6-)O=ULJSwVgVWdtftHu+izACK7s*1Uq zei5ZBp_H7i>5QF>rqEX>BN%xaV0^_Gx8>&@;eimqwO zJrV$}EYLb#%epL{&aBZMEz&X)$O0ui+6(yoN!fv_XpI@X2Cdcp+Rzg1mnJROcCFVM zQo{x&wV*7P=F!JB6nGux)vj&BWv$jK>DR`s+|KO@NhwMkooS^KpOEdy`D~-IE#NMk z+kd|8jMA;)9xmc0(7BFkc6qAV#>9BuW8hA1=n<~vdQReIuI6t4E((z>cSWprP_F3K z;^mgEw{kA(rmpJNPSJJXnf0u`1?Y5wEC$*a4Z3cfjIQp6+u)imeXcI>2Cwjj4!;zd zoAjq_Cg%p8Svj$(6xGqI5ZvGHF7^7L?|+u=@Mf>}ZZGhhob{<^*jZ^?)tB>f;K)>- z1|bgkvQ+i9ulZf?<#Mn5&M*D?Oz~Q1bgpj&n$x>_UyU_Uc#UuER;~MrZtub`aMrH^ zFE9gJ%)s@T6P;;tMkAB)FL6mMtMOSnZK_Nbum^`B0>5nok1z?B@Vc-XL2%9hu_plEa%l#T%K}FcCwEyn9?i-rgUtFT!;-ruvMeRB@;)*oSF9vY@=ap0E59-<14#bTZYgiz z1okZ*yYLsQZxAbSef3K!L-8uJGDOC*F&{HB!-pojRV^o7A!nq(m95YuSuD*B2(!M3$b&aYprGf^9^q^H=AQP*Rws}vunI@ zzrisQhpHIg*-)S|JZGys&vP&0GeRe{LdQnbrY$JfY*GmHKnrU@8?+}bG)8B%MuSB< z1u*}P?Z1SU-s%>ST6LEuetO~10qc)wNfwj=UVUuqHi-9>PUO0(}wgGT# zH8Mf0{D86J95Q>dC`3ndo?-RdX|*_EI!7wY0Wt;~HEWU~GG~Z3nk-WAc$XG@rc@ z?fNrd|7&{UvT^q|uzx}KLXIR=?jyq)WCw#=OSWXX!S-)|=x~R(c(ZX%f3%r>;7<2+ z499V51N7K7vlFwd;r(Nl#V2r5rW=1FkjZ3p`&#R96_jpiucJJDK|2H^__?B0tks~>XGP#!hj&?z^LB}=I%>K) zuIKv37B@6k@R{DOAhY*zV{r6}vL~0dooxE7$KsjW`hV~0IwHBEAg?*iL#S> zT{io<2j{v6yuj~iyJs-&M)mTJT`yNTvVU}E67sc|w5;y>Jk8fUgSvNlgZ#?38obZ>o9BG_ z-gLLG$-YzkIQqNHKc>wuJ=24y$4B|3|M~;l=A2Xd@dA6qpL~D8JeV7O#ix4GpJvmK zJ=yay*T1&clQ`0c{au#5+rNEZK4-8?dh6=E$$tyI%7-$A$5G1exu1(UkOO&;Z}^Wt zT&KhJ;rF}6vprtIz2iT=R=#`ApLY|(`GZIQFy>c1ge$nyhVI07If(oDpLh5@VPkz4 zHJS4`TuyiBvwoqs{@H^t&@qR9AePFY^ z)D1d^N9CtKKlC?0{7b(?6F%VI32$RKpqsn)0|Y;T0|^#1co1Pig$o%rO!yCCM2QnA zR`4ebR zp+kulHF^|jQl(3oHg)o( z%b7QK{v3LA>C>rKw|*UacJ14_clZ7se0cHWH3Ghicdl8wZrQ8=0%l7|Yv(!u*kTcdQ>rXM%6n_*AwF4dW?=%86L-4@{7mKh!3j+j@L&p3G4#W^e z9FfElO+2wS@>E=r#TH$B5ylv0oRP-=8g0B0#~gLsk;fi={1M0?h2#%Dx9D0gzWV&C z3$P~NqVK))-eXeAzN-9)!Va};Ouzys6f8o^RJ-u312G#@H6{(y(6us4V}El?CI=jI z%`NS$48=V4+>_5f{p@YXKm{F?&_WG86wyQ#U6j#A9eotiNF|+=(n@8N)6F|IeQeWC zJ^d8aJF^VcwLeWg71dN#_07^&U40eSSY@4+)>>`771vyK-Ido~ea$LAy@I`{$i9Z1 zvZ7(z+J9;Rl-AnWR^67{ZoT#M*Koxhm)vsAJr~_{)m@j}cHMm! z-tmrYucLY0v)A5?g3ULuY&pc%-~WIGwie)QKl~QqgcV-+ws;+W7~+T}o|xi_Exs7z zj5XevohuVp`ea^PrVo|$HYYkrL3oPTxRS>cX-{u$_? zg&vydqK!Tp>73x&_y4e^wO~doa@w87dhm@t={i-mStD#-mY7YyfWN%*FEfN zDaRc6;DtZP^x};_9{J>zU!M8@=AD0@Vw3%D_R40bu72>YU0=3u*K1#S>$G;?aQyPe z?w#7-hhLxl%AtQB{`lpepZ@yozaRhnz2h6C@NYtYU;s4V0DnIvKvJo%eF;?H!t~cb z2R;yj5tQHrDOf=Z&W%|=DOT0=Grhiy&w$ZVlYt-vClQ{BPML}mgGTrn$&n3#3zXpu zRdqod-Vld5)Zq?!*h3%wkUaeQUk1$svJJ8Yganh&3Q1!^3{8lHbZQM06NEx9IdO6{ z)Z!LT1w=1?5r2$f6yq4lSVl9>k3J)tUK+Kg#>Lq#c7=PR|6~^>dg*IPN%WnBR4Ar7 zy=F5lq+%2Kh#@DcurU;RV*lA-$VEp!5=Cc}DAGWeG}!q zQuoHRfKP~b!6Sb3m_9TC5=@1Bke9CI$1lZ_mYtCknSZ(zno)%iR566)Fo~&~O&$}O z$yDYtnb}NdK2s~5L}mBvlQmNYPK|cV+8sl=GGeI=m;_T|FU|C(KEl$39{M8`F{RE! zPBBAS3a6)pSxkH0b0N^w=RWz_Pk;UspaHcc{|K5vZ_-Y6Nou1s&qFwFdJ~kw!dfe* z)u2G)a(|F(QX~u86wf8*a*A+TP=(}~MSPwVr4JG4N?F=cm%bFHF_o#@j&;3;N)%b% z%M0p?c%%*X6j|kwlUXSLdO$>`$unVMp&yTmtyeZRoo#xhM%gsaPSrD|SuN&Fx!P5) zeif`?73)|XMaRP#g?~P=YDEdy)|stUQ&`pNTz?%&R=eI6uX)w$UisSBXcp_6ZiEuo zh-lCbev+_=d)?EjDY)4c)vb|DpGoOjSz`JXvzgWGW;xqg&t~?T^V(*;4BO3AezTj& z0_tBND_PeDld_hTEf+sqTif0ix4G5rZo`;Lv-*#Y!6n&Gou(uuh0I8Z6K!i>+uXRu zc7L|fl_77bTV3m37rWWjZr(x*N5!TVl&Blr>Yx_U)lO5P;@cfuo!j2aKv%l)W#4w` zTVMO$7r*({Z?Ax>z5n4dwzz_YXhZ!LzM+D*jxR&3T$t-#2SW(H@|7^~_FG{KUl_v~ z*6@Z|w7v3b(}Ueb{iU>85xH4&!qlxy5$D_={^P1V*W;efC%~GcFoEgYvJKq`4dDiou^$OV50hvf(KIqfFtIAQPHGij2 zR`jCJM`uUxjL(sl^rR_WX-hkEup*`&hz-r@hZ>H_hyHLH8C_~q3rxn3RyC?F-D+3A z8rHFvHS-RPP4RyJ`I>=i*;x|`zEl4i*auwou)j5HV;>vY$yWBVe^yhU0yuHe7WK46 znQLC_I%;M)tC)k`?NX#;V1w^?s*-y7fm z0k^pMO(J#w8{h#K_`nI?qSeCN-Eib7yS+P9LLbHz<5)6&ZBLI=jU^b#~tjo$TpBVFlXcSzL9UUsve9qq3s z?oC&jVwAYO<^S1hve)SjY_N+R?I+~ONw?9CVd_{m>>^K+N_Szjpdx9;VQbXTYK>i+yC`+e{${eS%V*Z=o9MA;+PY?xDPz7@Y0wYk{j%3p+aQ8Y8=rpkHzzKGUB?Nacatx3J`)vh-PzZ;R z2#c^fT2KNDj0R`)S81`qRa)c_F_Gf@*akq^x<3AJqke}8Yl*suyyD+(8J4vB;g zCy^Bm#u9&!6Jt>pXOR{cP!N-l5Z4e6*`x3h3>ACPBwnr+hY?yT@f97d7L!pKmysDU z&lAxw6#pNJ37wDzebENr&{-mp7`HK)j&TH=5gfx&9LKTgrg4?tZx^YN0}TgXtU@GbVxaAN%n)O)kjD zY&jFNIh`}5sM9>p6Ft+DSAKHHgwqPy^XK3*Wq*_F->oY9J^FHyZKO59R9~44`&-wfU*7Jl^f@kUe_mI6INjtHW|B<#MIF%r*B>R zks3>Exd@gR4fbG#hhaO`V?VYC_mx;(H4e8mxw5k*(e$vc5MwiTW9bZJV^(HoRt3>@ z6h{`h+Atjn^%Q&RVq2CKHTGpOhgoKe)@YAb`F6A<1Qt-S^-=?^v~m?_yG>|^)^d;* zYqM5sU(Z&FOjfILVo$Z~yaF zZ{6%{X^d^NJyG@=0ZWrKY%3yf5BG5|_j6D8b#M1~kN0`6_j}Lxeed^w5BP!KBmn^c EJ7pOi2mk;8 delta 8701 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 bZ}*mO`_^x>JyG@=0WOm?Y%2wl6A%D9rp-|^ diff --git a/src/mapedit.rs b/src/mapedit.rs index cd17007..bf28220 100644 --- a/src/mapedit.rs +++ b/src/mapedit.rs @@ -19,6 +19,26 @@ use winit::{ const SPR_CURSOR: usize = 0x01; const TILE_CURSOR: u16 = 0x7308; const TILE_MARKER: u16 = 0x7309; +const TILE_BG: u16 = 0x730a; + +struct Surface<'a> { + pub data: &'a mut [u8], + pub size: IVec2, +} + +impl<'a> Surface<'a> { + fn draw_vline(&mut self, pos: IVec2, len: i32, color: u8) { + for i in 0..len { + self.data[(pos.x + (pos.y + i) * self.size.x) as usize] = color; + } + } + + fn draw_hline(&mut self, pos: IVec2, len: i32, color: u8) { + for i in 0..len { + self.data[(pos.x + i + pos.y * self.size.x) as usize] = color; + } + } +} pub(crate) fn run_mapedit() { println!("running map edit"); @@ -54,6 +74,9 @@ pub(crate) fn run_mapedit() { }; gsa2.reset_bgs(); gsa2.reset_sprites(); + for i in 0..2 { + gsa2.bgs[i].scroll = IVec2 { x: -16, y: 0 }; + } for y in 0..TILESET_SIZE { for x in 0..TILESET_SIZE { @@ -63,6 +86,7 @@ pub(crate) fn run_mapedit() { gsa2.bgs[0].active = false; gsa2.bgs[1].active = false; gsa2.bgs[2].active = true; + gsa2.bgs[2].size = IVec2 { x: 120, y: 68 }; //enough to cover 4k monitors? <_< for y in 0..BACKGROUND_MAX_SIZE { gsa2.bgs[2].tiles[0][y] = 0x7408; @@ -238,24 +262,43 @@ pub(crate) fn run_mapedit() { let mut screen_buffer = vec![TRANSPARENT; size.width as usize * size.height as usize / 4]; let mut window_buffer = surface.buffer_mut().unwrap(); - render_to_screen( - &mut screen_buffer, - &gsa, - &tileset, - IVec2 { - x: size.width as i32 / 2, - y: size.height as i32 / 2, - }, - ); - render_to_screen( - &mut screen_buffer, - &gsa2, - &tileset, - IVec2 { - x: size.width as i32 / 2, - y: size.height as i32 / 2, - }, - ); + let screen_size = IVec2 { + x: size.width as i32 / 2, + y: size.height as i32 / 2, + }; + render_to_screen(&mut screen_buffer, &gsa, &tileset, screen_size); + render_to_screen(&mut screen_buffer, &gsa2, &tileset, screen_size); + let mut screen = Surface { + data: &mut screen_buffer, + size: screen_size, + }; + if gsa.bgs[0].active { + let xs = -gsa.bgs[0].scroll.x - 1; + let ys = -gsa.bgs[0].scroll.y - 1; + let xe = xs + gsa.bgs[0].size.x * TILE_SIZE as i32 + 1; + let ye = ys + gsa.bgs[0].size.y * TILE_SIZE as i32 + 1; + if xs >= 16 && xs < screen_size.x { + let starty = (ys + 1).max(0); + let len = ye.min(screen_size.y) - starty; + screen.draw_vline(IVec2 { x: xs, y: starty }, len, 0xfc); + } + if xe >= 16 && xe < screen_size.x { + let starty = (ys + 1).max(0); + let len = ye.min(screen_size.y) - starty; + screen.draw_vline(IVec2 { x: xe, y: starty }, len, 0xfc); + } + if ys >= 0 && ys < screen_size.y { + let startx = (xs + 1).max(16); + let len = xe.min(screen_size.x) - startx; + screen.draw_hline(IVec2 { x: startx, y: ys }, len, 0xfc); + } + if ye >= 0 && ye < screen_size.y { + let startx = (xs + 1).max(16); + let len = xe.min(screen_size.x) - startx; + screen.draw_hline(IVec2 { x: startx, y: ye }, len, 0xfc); + } + } + render_to_window( &mut window_buffer, &mut screen_buffer,