From 0e1e35c7cb46ce3d526a9b42d215c843a714e5ac Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Fri, 12 Feb 2021 17:31:30 -0500 Subject: [PATCH] Lots of updates to the readme. Add some bars along the left and the right to delineate the play area. --- ACKNOWLEDGEMENTS.md | 1 + BuGS.xcodeproj/project.pbxproj | 2 + BuGS/genData.pl | 25 +++++++- BuGS/globals.s | 12 ++-- BuGS/make/BuGS.2mg | Bin 819264 -> 819264 bytes BuGS/make/createDiskImage | 39 +++++++++--- BuGS/make/tar | Bin 0 -> 43982 bytes BuGS/sprites/solid.s | 110 +++++++++++++++++++++++++++++++++ 8 files changed, 175 insertions(+), 14 deletions(-) create mode 100644 BuGS/make/tar diff --git a/ACKNOWLEDGEMENTS.md b/ACKNOWLEDGEMENTS.md index 77c6ad7..cda4903 100644 --- a/ACKNOWLEDGEMENTS.md +++ b/ACKNOWLEDGEMENTS.md @@ -14,6 +14,7 @@ This project would not have been a success without help from the Apple // commun * Kelvin Sherlock for GoldenGate and Profuse which are the fundamental tools I used for building this project. * Ken Gagne and Juiced.GS for making tools like ORCA and GoldenGate available. * Stephen Heumann for NetDisk which I used to transfer my latest build to my real GS for testing. +* Ewen Wannop (Speccie) for his great network tools, especially Versions which I am using to assist in pushing out fixes and new versions of BuGS. I had a problem with the Check File Finder extension but very quickly he found the problem. I very much appreciate his support getting that problem fixed. ## Apple // Forever! diff --git a/BuGS.xcodeproj/project.pbxproj b/BuGS.xcodeproj/project.pbxproj index f98063b..05b2379 100644 --- a/BuGS.xcodeproj/project.pbxproj +++ b/BuGS.xcodeproj/project.pbxproj @@ -99,6 +99,7 @@ 9D47CBE02547BEDB00CDA5CB /* gameMushroom.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gameMushroom.s; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.asm.orcam; }; 9D47CC14254A698900CDA5CB /* gamePlayer.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gamePlayer.s; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.asm.orcam; }; 9D47CCBA25525C1A00CDA5CB /* genData.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = genData.pl; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.perl; }; + 9D4EF43E25D7006A001BEDB0 /* tar */ = {isa = PBXFileReference; lastKnownFileType = file; path = tar; sourceTree = ""; }; 9D53E5B32562320300E10169 /* gameShot.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = gameShot.s; sourceTree = ""; }; 9D53E6472565939300E10169 /* BUGS.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = BUGS.md; sourceTree = ""; }; 9D62AF3B249871A300348F45 /* colour.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = colour.s; sourceTree = ""; }; @@ -230,6 +231,7 @@ 9D1716962491C49300C83148 /* config.txt */, 9D1716982491C49300C83148 /* createDiskImage */, 9D17169A2491C49300C83148 /* head.mk */, + 9D4EF43E25D7006A001BEDB0 /* tar */, 9D17169C2491C49300C83148 /* launchEmulator */, 9D6DB18625A411DA00CDBF05 /* BuGS.2mg */, 9D17169E2491C49300C83148 /* orca-asm */, diff --git a/BuGS/genData.pl b/BuGS/genData.pl index b2ee871..b05b55f 100755 --- a/BuGS/genData.pl +++ b/BuGS/genData.pl @@ -132,11 +132,19 @@ sub gameXYToTileOffset } +sub rhsXYToTileNum +{ + my ($x, $y) = @_; + + return $gEquates{"RHS_FIRST_TILE"} + ($y * $gEquates{"RHS_NUM_TILES_WIDE"}) + $x; +} + + sub rhsXYToTileOffset { my ($x, $y) = @_; - return ($gEquates{"RHS_FIRST_TILE"} + ($y * $gEquates{"RHS_NUM_TILES_WIDE"}) + $x) * $gEquates{"SIZEOF_TILE_INFO"}; + return rhsXYToTileNum($x, $y) * $gEquates{"SIZEOF_TILE_INFO"}; } @@ -181,6 +189,15 @@ sub addLhsGameTile } +sub addRhsGameTile +{ + my ($x, $y, $tileType) = @_; + my $tileNum = rhsXYToTileNum($x, $y); + $gTileType[$tileNum] = $tileType; + addDirtyNonGameTile($tileNum); +} + + sub addLhsGameString { my ($x, $y, $string) = @_; @@ -468,6 +485,12 @@ sub initNonGameTiles $x = 2; $y = 21; addLhsGameString($x, $y, "LIVES:"); + + for (my $tileY = 0; $tileY < $gEquates{"TOTAL_TILES_TALL"}; $tileY++) + { + addLhsGameTile($gEquates{"LHS_NUM_TILES_WIDE"} - 1, $tileY, "TILE_RIGHT_BAR"); + addRhsGameTile(0, $tileY, "TILE_LEFT_BAR"); + } } diff --git a/BuGS/globals.s b/BuGS/globals.s index 742cb27..ed0244d 100644 --- a/BuGS/globals.s +++ b/BuGS/globals.s @@ -104,11 +104,13 @@ TILE_NUMBER_9 gequ 48*4 TILE_SOLID1 gequ 49*4 TILE_SOLID2 gequ 50*4 TILE_SOLID3 gequ 51*4 +TILE_RIGHT_BAR gequ 52*4 +TILE_LEFT_BAR gequ 53*4 -TILE_PLAYER gequ 52*4 -TILE_LETTER_WHITE_U gequ 53*4 -TILE_LETTER_GREEN_G gequ 54*4 -TILE_LETTER_GREEN_S gequ 55*4 +TILE_PLAYER gequ 54*4 +TILE_LETTER_WHITE_U gequ 55*4 +TILE_LETTER_GREEN_G gequ 56*4 +TILE_LETTER_GREEN_S gequ 57*4 TILE_POISON_A_MUSHROOM gequ TILE_POISON_MUSHROOM4-TILE_MUSHROOM4 @@ -245,6 +247,8 @@ tileJumpTable dc a4'solid0' dc a4'solid1' dc a4'solid2' dc a4'solid3' + dc a4'rightBar' + dc a4'leftBar' dc a4'drawPlayer' dc a4'letterWhiteU' dc a4'letterGreenG' diff --git a/BuGS/make/BuGS.2mg b/BuGS/make/BuGS.2mg index 3f40a1cc6af70b4057a22b97437d7e74a432a6a1..8744f0ba71d05097cbfb426c2c289ac81696b6a7 100644 GIT binary patch delta 8257 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 abQkm*=o_HBp?jcvq1T=}e98CWFa8bTh~ZcO diff --git a/BuGS/make/createDiskImage b/BuGS/make/createDiskImage index 59828c6..2c0d3ab 100755 --- a/BuGS/make/createDiskImage +++ b/BuGS/make/createDiskImage @@ -1,10 +1,5 @@ #!/bin/sh - -MOUNTDIR=/tmp/a2gs_mount.$$ -TMPDISKIMAGE=/tmp/a2gs_diskimage_$$.2mg -TEMPLATEDISKIMAGE=make/BuGS.2mg - if [ $# -lt 3 ] then echo USAGE: $0 diskimage file directory @@ -19,10 +14,18 @@ shift DISKIMAGEDEST="$1" shift -DEST="${MOUNTDIR}/${DISKIMAGEDEST}" COPYDIRS=$* +PROGRAM=`basename "$FILE"` +TMPDIR=/tmp/a2gs_mount.$$ +MOUNTDIR="${TMPDIR}/$PROGRAM" +TMPDISKIMAGE=/tmp/a2gs_diskimage_$$.2mg +TMPARCHIVE=/tmp/s2gs_archive_$$.shk +TEMPLATEDISKIMAGE="make/${PROGRAM}.2mg" +ARCHIVE=`dirname "$DISKIMAGE"`/"${PROGRAM}.shk" +DEST="${MOUNTDIR}/${DISKIMAGEDEST}" + cleanupAndExit() { umount "$MOUNTDIR" 2> /dev/null @@ -45,6 +48,7 @@ then cleanupAndExit fi +mkdir "$TMPDIR" mkdir "$MOUNTDIR" if [ $? != 0 ] then @@ -86,9 +90,17 @@ do cp "$FILEORDIR" "${MOUNTDIR}/$FILEORDIR" fi done - cd "$OLDDIR" done +cd "$TMPDIR" +$ORCA "$OLDDIR/make/tar" cf "$TMPARCHIVE" "$PROGRAM" +if [ $? != 0 ] +then + echo Unable to create archive. + cleanupAndExit +fi +cd "$OLDDIR" + RETRIES=0 while [ $RETRIES -lt 5 ] do @@ -115,14 +127,23 @@ then cleanupAndExit fi +cp "$TMPARCHIVE" "$ARCHIVE" +if [ $? != 0 ] +then + echo Unable to copy the archive to the destination. + cleanupAndExit +fi + # This is a special case for my personal build environment. If I can find my home directory # and the Sites directory in it, then also put a copy of the build there also. This makes it # available over http to my real GS so I can test it there also. if [ -d /Users/jrand/Sites ] then - cp "$TMPDISKIMAGE" /Users/jrand/Sites/BuGS.2mg + cp "$TMPDISKIMAGE" "/Users/jrand/Sites/$PROGRAM.2mg" + cp "$TMPARCHIVE" "/Users/jrand/Sites/$PROGRAM.shk" fi rm -f "$TMPDISKIMAGE" -rmdir "$MOUNTDIR" +rm -f "$TMPARCHIVE" +rm -rf "$TMPDIR" exit 0 diff --git a/BuGS/make/tar b/BuGS/make/tar new file mode 100644 index 0000000000000000000000000000000000000000..3e14264d330ec8347fd75ccd1c4f9193f3e0bb2b GIT binary patch literal 43982 zcmeFa34DxK+dqD0%VcIU*(YL_bc{8%G(u!SDzs36 z_jRtbpL-eO{|0a%7BVJa0+Y*=0|EEjigjc9+CQ&Z@iQh&N}D{n*Z7pw+dMA?lXGDi z6S6C~+PZ+T58q|1O+)hL<8}pb0g}UCD;8fTZh37gdKR{p4@fcns~Ex%1N}W>trN>_ z;x+`%XVrmh?OKD!OlCOk!3+;(u<{Ml?B&zWBvdn29mWiYr?651OECO7iDgcmoH8mc zMn5HGl78@rNmFJF9XWW~P<_gz5$PGz()5EzW{gQ|)27W(IqMj8)t6}$gTZN**zZj; zOYQ9fl@Wo?X71R_BLd-dCV}F2`%#MC0`kGto52}smas}-R<076ebUXcbhCo@ma&AY z;Hn@umtpD*S9sho?3`3DIzK+TcmdBUL5KkpSydoCj?Ld3Z1XcWXxTA1BZz4-WAqIF zk#&DA>x`MDW|>)GR@#EXB$Z6KL6R!Si4mmw*nBGAV;dTl_*5Jun972;AkzPQ2 zR_35AY-QZ_hQaQjWs|;gB3P2=t3O5K%6gr<(DXU0w)gop%Zeb8(x>-qn zHovH=VI(?{XtpSw`{C{(wPhtro8q9*VXJe5^n0waK{J(=Ii#hY z%q%c9B|i`De!+nr@ilVzdGhpZ5FHKh9V&ZKw0d>$Iaz0%$+3NX#6O# z;(CcmN&}fmR0j7JUpi;$H1{;e3jINh$PG0Re=HtCwJz7UF8 zVN*bVLT!r580Pc_yuh4Nzz`^0DTT##8|Dy`NG?lFpV?%UH8q?rE?_p zl{0FG=-!nxX5V{r{prcCh^zdod<{R3;}nH7z%-ovf2rrsDNs-Hzg^GYm%@jW|8MpD z>HV10$KT-M_2JaQA-Bm&6lTF(5u~lmmD!Z^APK~R@+b?=5V9f?VS-`Q zR7jQ&YV$P*+I-9bB_cjGn5V^=)&86&-&c`6gN1b}Ng{tpss+q2kg;+}kX;mXR2t+E z{UQtEZ;CwVX7M@amz>4Qi8l znTrX@*rh>`g`j0t-6*RAxUAg?ua~ujZl3a*aQlPsqk?wGny4M0wGV5v_S&S3DQQp7 zTXhf@uciJYA9Kf>nVgoE>Egt@fJKKPQHM!lVq$#71{Gr{ZkEtMOWQ!p3xSsAftJ>R z%f;;Q;jLP;EH4kg(o~d#HCv@rA_8my4pEMok-0K;KsAQYrb&d&15Kj|UkEe}Cu|#N z8bsJK(A1AGG|<$OQZvQbR8dz)u*x93($XL%FWWOk$`Xb(m%fI7J-A=Gs{ii=xFe-6 zNc#X^0$o<*jIOb_4h$aK9P|RHZD6GU){T;|w+wV}7t1~CJx7(SO3G_sWsQid2>i&4 z6l9pfr2{slr6R=byC=jjVmd=IcpE}a$kKM)%WEF!45{|udFWY*?^^suc1 z!306=U|gC`5m%2nYLlB(o172i7*^`REZqXF@qyMJfuRrLEnW%)gvr1E+x z6Iw(;R!Pv~1?o{IDr%#U1|=9C!bGCo@JM`LxW#8(sIo3nSr@1bTB3uRAv>C9KS~M_1Z0e}1csJ@)Kk%t?gaUAx{YW8hDH6ye`c5r)_0zCJI}vLcMsKfZgo5R52U+mT+V6} z8Y|t&=lv&q=G5^??}ad?$$a{F9-hfG{Be(@M;<&&7ng1Yl5Pc(Zuu*qTM6>JGB3GC z{u=Okd9-{EaHM>y{Ab`{`Dyu9;6k|#ztw@9UL57D9GZ~=Td+CA*1)XejkK1Gbl;RI z>G~<-$Lq(8A2%vS-*hq?FfL^{8Qk&u)U+vSlg4I@ORH@^PnkIZjq7@WModbBS+4Il zenQ$f@_A&$A7lELF;AX4VZ!)HF!lQJ6Q*R0A4d%uv~OT4ebJbss?8LRmVxg1ei$wgevbUFGI8GTz$@k^+0prE7ZAiR8cZ>K%EN8T^-shLd??APnjh) zkV=}n_?Ie~B{48nma4Gt384mE40A-5$SP_b;>$AAO}7Wy;7YVm@Jr#SMJzM@0559b zK0rljR=7jb{lCR3%BcXO>oG++8{mjBD_|5Kw|CCgup2OX&Za=FSF|UDZ%}`!tnGt{ zCo^g&2}~30DXK~z=4?cT%N_9QQv&v=Z=YbAo`|1$KN-I-CkRoFyv8O)W>W>c$kFmx zoY^C73RUNc<3^5$O0;=?a*V!7)3Ek4T0FIo^jwIHaii+qsTEJX z+LD)ye;vtqkYr3l?O&>(_~j>5_T#GgJpxhR*-xsV{`Oy0$~!7lHWDff|J7qT{>#Vu zuQR+{#I|~&xRp7my;%B&uUU|87MZ%Z{ev^cND~foLDVjk%gc5xQB@SH264(i%$Hv6 z9)qFDG*-IDU=~m>Mg#-kjbf;Dw^7l}Se(h4PS!UKPu1(2wok3?IN9XX$!L)(fnhi( z;f#!?M8cQ*gK~$WL~>DI8nbjy$bS80iRlcP4~b3U3_OJ2vRd=t6qt0+4g8~ukx+(#yyMytSPwismLK({HXvBB{-6vUf`6M_}aYZUk?YTs}1l& zZKGJ{PBrX_^rWU_yO|;{zZGu38SaXJZ&g1ff^JWVz(307ef?%QUW)JaTj6HkoE|mQ z!kHc7s=Q$5 z-j-yy>=SEc-+)u55c(AcauPuorRz9O+^55>--eTvPlVfFreBu~kGo|^9TTBx2-uul zTSi$o2A;9}T)6#g`226fEvLg>{gPUCo++>{Q!oOjNibw}E<6n*I;LFoy=10vQ=&~0 z`Zi0fsfo%kF|)5J8txk2jWHZwbmrg|aQB%I?uIs*^9Xv$CgwZ{U;^hc0-^Ji&DS}& zRM`&tGXGS#xREN(WpW~=DCjuoBASK8TqyjYr=|GJ@O+lfc)}Xea2v9VrGbk1m4@v~R0!ji601X5U1*L$} zKpCL1poyTVpqU^eC>vx3<%2As1)xQsC7`9C6(Ad^6l4c&1Z@Uw2UURffewNyK}SKy zK_@|{L1#f1K$k#QLDxaIKzBfQK@UKJC_Fz%22z6jKq^o}kPg%c)D#p7Y7J@&iU37} zI)h?C@t{P|E1)FM0MJ0tP*4ge4U_>I3z`U;3YrNrg0ewoP(H{4S^!!ES^`=MS^=_w zNr`7xVxmh{p4SWFRHT z52OM$1nEGHKutlRpw^(apa@Vj$OlI4KWo)dYl1lWY4Lx@Ho7^5{|?i$u+Jp$Oajj& z@Js^FB=AfE&m{0n0?#DyOajj&@Js^FB=AfE&m{0n0?#DyOalK4CGg~|=HKxV{D-5S z{|g2DKlqV*ri^3V(}uHGu(~03!X)5K)^qAO&=?jwbrefZo51>vn1Z!*(^y>E2-dq# zZ`L(7jx`Aj2eo7UU+)i$U|kb?10z9EplDDms4J)&h{DISxWs;}N!u_`TM+o$wga^X zMXnKV!5_Qe+Te)0DlMYcL09} z@OJ=z2k>_Qe+Te)0DlMYcL09}@JE6_68w?ij|6`t_#?p|3I0g%M}j{R{E^^~1b-y> zBf%dD{z&jgfj@JE9`8vN1V zj|P7<_@lue4gP5GM}r^JGEJhv9}WI!@JE9`8vN1Vj|G1$_+!Bz3;tN}$AUi={ITGV z1%E8~V`HJG$*g}|cNQ1hA8zo+c4x``y0Jc8d$L}MU0HJ54y<4QUM&9gc-A+uJL?bX z9T&^Gf%^C9#p3$C%9?cT#=0kizbo{&PdC=LcYlOMp1L9ZZb-iy((i`!yCMBwe;oMZkpDR3KMwgv9-5#W zG>HR$9QfnFk7wy0--|VgZ_8r)zYGL_Jow|m9}oU`@W+Ec9{lm(j|YD|_~XGJk7tBD znsi6{-I0EGq~9I<-ND}-{N2IdJ(Bh6{W6|2nI+;m6JPDe$?(a;3e2{fmDX!2>vfgs1s68A`CwI=54H?CzW}sl&dY#s<~#?8V9sv<*hlzL z^$W}}#+PB~bp&&G(Yo!EDq6|?rOFoQ@W4(hfoXibOb*~ONgJN36jd@_28Lew%o$f| z+OV?eTfu3vH3eykvc(i6ffkjz!<|#D6h&fD(gn-CN$Kgt$?rKl#|i9|iW3SF#Lmq? zEV+Mdxj8lzDh8+eV3!2HU4r&X)b7DB_|8pNfV&X>ask7dO+jA4 zry{3lIb-SRiyhqlve?e`R)W%k_nf-|em^3XfS$*uQX#h;3=5!nj-;n>d?v7m1}fVI zCK&ofGqbGxy2^e{MQO9LHMC+>SZBc~mu%`&BFPbyE>xNQXsvC)av|I5m$2F|ID-lK z-D0Z*xqk3nB`WqyPk$7U3zZO@KK7a_VU=j?b=7PUg?wtT;EWo%y@F=@?WOef5tv!1J>4?f**0stAFQpinPw{!g{x{&YD)6`x?~VC;>KQ7}gDA ze`{kyv=8TY__-5D0*3S01Xvp=XZHi_#gRbdCK0zW!WLxK+Eiu@zfx9BE1c`^o|Ch# z*jI-&_Twj|>eI2DGHnv?HIg>jP0q+lle4B_;WPBKC|}<+dQ7UmY1?qDk)8~H7r6~c zs*LtHW23U;ADje73;2x%5ay*C5(X1;zpQ%6OJrT_%Am?re%EgR-S7#b-vKWfJSVc8 zPij)72;kc6(6~fe;S)r*!-sZDNJ?M8Rf+VX-sZD($xB#vjV&Fn#5lR~WpLC>6ybxH zs0^Cg&^7Nrp^ks~+bX*ex=nXya{j6=v`(DdCeAJCLOadKoy)nEoEt_!zX%zfxupIaMB(9SAqN1=#pvU)n<+C$Fk z1oj+0ZPQO!SXd+)HjLq-16oN~ff3fW?U?c8#-AIS!l!9i2mC(!`(G{r?qG(#Pqr<% z4aTWb>-&ANeu&>($W?4I(n{=w3Kl-L@t3Pme(P4R9;1CqIX46-2sSC&9l>LzL2C-e z%7V(~NK0!}W(8F;N~&ZO39A)UePC}Qst;KZXY>`QJ`{ZAEapn9M;w(h*FJP7m!Kl< z$pno8`w3d79)*=l*dBpB<+3m_w&rpS4W7c#OMng0Y0|PVX(jXJ_K9#o8$TszBko~j zc$oQ;Ac)1VQ$nXQ{9intO&SwZ#vkvHfW{PmbuEcKCFeaA?2ig z-fU8|fp8|qDTC$xzLk33Y&Rq^c6>4xQ(Wn~B*Zaa5M-%Q+28Lg#~-=>^`r8e0yrMp z=22&R$K#b2PB!?4tGVh{S%3dp-<~_~0~;Q3-Un0%oAFYW){2medMj9ZX#wVj*y5aXf#rM;rQ%}RwI!)yQ_@bpDW3CLeeXeN-HGvvp0XvVyF0~ANoLxD z9c+`O`B)aJY>G5L%OY-nZ|NScqrks9WxY3DqI7L{GQIk=e3-gC=6gqF`Bi0l-qx^E zLHk@4w9oZkJodS^jt`4(7vD49ue)FOo!qZq_v1h}|Bj@JZAm*xOJ!)Pn-!O(IqM&m zVE6F+MJnXhwdKT>MaLu*?U)#|rbOc^G8Nn*9ku0!_L?P>)`*@ilJ?wQbP7_UDG1Ks z6qinuc+`xfH_Ug5Y6Vaw;W{NDX1z^kevUSLh434`nsB{p(HBW|n^a+@1HxqY2*QM3Sy_9hVt>dFO zZ8Bc1IKdD4FCxb7*B!R!(duqf)vD_Gzif4DYpB(oNe$$ep9n-U{fh=T?fCOkSNN#; z9e)=R|Eeked%Zh3>mEMV7QbKbKAkDUt52%mBPob-B4FriOQ+6#jnes?`x>RQkxj>! z&d-^x5nnp@;fhM9&fGZX9cJ@$igL;s*U-l%dNlOKmjg_+J)YY{ZhOud=za`(^qNFE zXUH@QC+DcR&H&FNyBt98+s~9{^P|3kX(;s~ZH@5CD+SCUxKcnm%=OmYncI| z2!u#9)Ydo#=hdLV$*I6)CZfQ7p73*mDUtrw#sB#I=j?fy)A<1osi@mOX=ZL?Yie%I zoBCGN7NrfCf8E#UHhwI3UKKWjr>0CvX{Dc>nK5Ak_Wad3z==+Op$&Zfl5ByNAxW;& z5c(y#PeZ7)fvylj$M0*NFF!QyW z3J2DGD*Lu%u1|5)P$e_`F%p#>|9Is)l5uPPmSoGOWY-41+8Ft5hQsPc^C;{5v%}PR zLS5+W9Ob>aK4evt39FUV_CkVad+kW(>aN24LKK3ArO_{(3JVI<-(o#b6Y?H-j^DI1wjrBK6KZnW3P7 zSq~*!4<}QhJVL*G2-iLG{ptx{=#b@1GFkO72+(EK&5F6ost#4{tHRxVX00&Q$JLP) zntm+p#4I66I2yyEPqG@4tWA<=vt+ZR(imoGkz{{Eg{bDYO0qnk1fKa}NtQNA&NLn71v@%0gDrNKfGq!elm!y>wYh9Grgrvuxz}lBfb6t|PJjuEt z$@*~;dg7GSmL$ujr1?9NEZdUkdEW19H>;GnDyQfME^AwP!5N*Xbl_YNMTycJFjr;s zp+`r z*Od!DIwz+7jraRfwwokb3`wpQT}aXyt`zuH3%Ra9Vc#l0-oy0(Twz(4q3P=oaJoT>-5Fxs9gqN7ewF=2ZzjchT7TKt|_W79a>^UC#@ zr0b0hm{`;$Y7IO}oqzjH89jJCMaB?^jFSbq6~!d?B=y^^LIvC6#_^`Jiv< zd5g90et4QJOZ%cJ{UIEb&qw2Qhz3y_y1vO)2`tK_RU(T|Qu;m1a)h=iEbIDWv%9@7 znpWj~vGv+330vfwT1xubnp@WN#nno>`lxT6k*ZgCsgA%+@<)MeVMsNB4v&jU z|A87j+>hnQ0Cv#go-~1{lDOh27H^tWnL))S0An3nH;X^Bl`u4Ai;i-z}+#V*wEL9k1O74 zU;d0rk^4kSdn`?Ix$g!)b~hcfaw?(kgZV(KRUMCLlyz58V5jw5q8^QDT9{Ka~So>bYt<^8{_njhz$kOLYbKgm}Buz5AqiZ$iAcRMuZr);lWe?<(tE6;A8$ z#{p-4G#r3wSUUfOJIggyQ9CJEimHt}l#QAnwPUB4R1wrp3Yuu_@GmC?0|wR`+vFw% zw+QIGGVVN3evI-dVcr$k6X|*IhF#NvqW+Bfe?HV$q3OG=J_)ORf^on|?K~Xy1khgb z;V1R@fUfzf;EcCj;oO{$jY0T4&d5a{YO1L-f#(WilcLmIV74HPC}0*3N9+F8Jl-yD z9`6n6=64~b+QXgP^7n=jIt+C8zaO8`>s9~G<1>1F>)n3pjGp4}%;+g{LqxY{n)zCRTHv}b1#b6y8b&er1mQF*_dTUYDtg4B-Z?Z{1Gj?70 zphn+hH~0?| z|B)e>Amp?36=i9b%W;AnZ@U~-1(n1eNGmQ4HhTw^iuekwczp8*L zKl=&tpn3^;sjV8*&3@_T0PcPj-N!x7&_8ZQ>x2s*S|{8S29=ACERu>W67`j~suEVK z(BpVykyN}zQt=jv56Fdr^-1%CX-Ny04k>dkJ$!6d)nIO6Yh-TD zm&;~PpH*f5-Ms{^J(cogdx|^4+P)^G@;T;cXkVA&kdw9^8cGG5h8)(V;4s~nTq9|J zrnyJb=!o4=u*u8p57U-*7|CB&ge)yj;V+dzOS4AaSd)S{-19j|YH{YHv+J<*VCtmF zIMq=Il-e`bj;-ONsOT`#GGnA`*k{^EE@euvB5R~sVo?Thr>Xe_q4aUSzkojq{TyOV%#K9;IP69a3DiG&cJ+=sl zn<2HAr8uS5vJ^w|P=-fAsk=%TW0vAsA%k5bG0#Cyjc4Yr%2Q~il~zwLY6mYD9Ojq8 z93F=ALz!tOjRtDzW_${baT>NypaH_lK6L)rG76H)ovwQ?g~BL<43YofkAx>D?^zL2 z>sg7@$!XlBIyr?~oiU{5iBlH2MM_o1 zt3}RGERH%_lET@jJ_375%8il~?gY<3vl2&m2AUNT{@Bd+81|@Aa7)l|nm2z;u&?{5 z`0-rMOq*;n$i?l+pA!5;URCb<*^ly@^>}{0>gKn)KOM(keIv!K`n6HK`zVUY8vDHz znk9CsaJJ{4DX?7bvpvO!WTu~RH|i25QMp%$=n_g~m^}J31$L8DAWFd}h-Lz5Y0ENB ztGS~&9pUz-flg7**AJ-%#-P5|&aH-_6VCmt${-B3P+-!XoP7`K$ks%Mi~HgTdmN$5 zTPE%Zdz`u%moX`R+>}W(aco+>BVSpa6FDEh$DO%W?>^Q6F?>NHWn5}p+O&)jX_I>- zlh^;VKOwiw{f`txNS(=Nf6pZFOalLFB|ygw{%1$_{NIY~|Has-AD0Pym4|Wm?BC3i zV&2PZI}WxfogvE^Ta3oH=WDVun{;UVbhBqg`%z};;R8y?&-?WsN!PYqC7dl^C73M> z?np<<;!xX0T}RBZ9s0>Lv}fi!_G35O`cCe*`Mux2jt+ivP=&ST`{CX6g3F(MWFGx; z3)zh?*IAM$`GuYOZPBK|Sq-DkJzTo$z@@pXyQByke{p^O`h*O5%R5zD-=EmGo&SUH z_AHzEdPj9h?vDozqG7S+g})qqUXh+yyyawdKzP!G4|kvaQxh|AMqcTWYhJB;k2kH@ z|AV+`_fgvy-#^n?`}RLJ7XA8FMBwySfBt+;{chJ99X26*!HSLhj$gRtFAO*I>pE%p z!r7m!I`QeRKQw7C4osaA*Wb3;yy()MgC{#Q3-XvY^40EJR~P60{?nw-4%>HCio?dH&na?_c|1-p;jS-s&}^RVOd)^#@1K+AAzeXN~(u?-$#I zc-P!K_vN1T9~Lgi-nioUzFQZ3S(v_WmkGmWFI@G>rzd{+Rp@UB@7izpq|LTP<~x^8 z9&FzvP&_5If86S=xy3*I{@JN!9Xx_YPV4^a>B_rTm*j6ReLZ1Dda!3yi_gEkc7NUn zYj^e>G&)PJem>^G^|MDS>`N_gjTzFbQ!B04&6+RIt>07l;ka47|Iy|}?+};n_&8g+ zbVvG{qRi$w)RckKuw_F{qs^W+`A}1)Syo{hW0oI2;N$p?G^s?!>5><8Nda9#0~)&Y zeybe~3nNyAe-x6}vO>Bb^>)Jd#%oERy}CE+mp-RQ+&TP@A158}@gVcwn6JD1F!jrU z>taknn;S3jS?2k1lU%>Gor^qnJ)i%at=-D@^MiM`E*4Y||EBl#H}}1EsPE5jolE>R z?e$|*F2$IWOXh%_!1AaMlv^8Bb^T-9(ZLs{U!HJeNKM9x_!&3)?@#&tm2Z1~H`1AW z@a?PGg0K?F!q7c!wh7;hT%obBu#}_&)wV@>+peDO^;T=0uYO`|)sLIai`U$(95SY} zQtul(@y9Cj<~55e?~WOw>>S3DQmPLuvTe&def6zgy4JB1^}goKKUP)VU9(u(dCZWc zlrXl)R(;^~)oppY)^GJnNn&BPMF*;{p3d9WTG#8XiLt)=&E~2f?^Z5e(^)xW%+l9a?I7X5BnDfA=S| zzq&ZRM^Lklib11mzFbzm|Msed9vw!#)-$W6X8!J*=f1l5$?TwJ(|ZgW-BGcuyynY` zU(NocSx}GZqX#KEmM{CV=Jx)Dt2%hRHY%&9rseMW=Wa5ow`}a_5vkvPck-((8@KJ* zx?%h7GiR$#jL96HCh+j_9G5X{lt`?UZ~l1au5ZqLef;$IryQF;*-;^scqzuGr;PmW z+pkV;+_Gnzl*znDk4+tsIVNqmhrrWk!`9u~&z?C^_3`FiJI{S{{A(=f7$z3Ul@g)C zD}DUPlf7%|q>df!En`w2Pl3nqv@w}gC(fMRzI*G2uaAFo zZs)GeA1mb|@vu?jGEzp4Pxn#?B|9oMeR9fi`uo%oqsPj;rEJf(ja$At`Q5iCs?MI- zy?w)0Pah9K+VIRVa-~=_YFNg&<6ocqX4lS-H&^WVWRv66_oqjuq>op4NrY_rjV00v zSC@IuJYOuE^;3~<^sjT&W2Z>ft!czxfNX@bQ!CwhE%WrolD7vA<r>r^UJ{#C(>)z}C6ixYgsd(}a?Tqrj>b3-zI zH#HphFyD97-T4iMeZ3;8&+(F%624jAA@`lhfAGsx zq4nA%$)byIdcAw;Eydhh>Ca{VHaAsKjA4m zY&udRb5&6Fj0zViK6(?Q;g(|x%(SOv<$GAp%f&C?PHayTnMH?>IIbTWfAom^q7-^t7*!1BKG-J12ix$CF-f|aI>qpo zpudl;4EQWk$#{kjLgCwMwKwR4ZTMnS5cUzNXnX-(DjHv?6KT+2M@muln(!A<1|rG; ziV{-*6eTw@KqFiDq8lwm3r_RLHl)C^Iik6e)gs8oEakni8agewjyJ|P9G)1UqJfQJ zxR!D&0!;(p<@#bqPwc4JIWZLddP%9CiDB#OI?;!vPpO$SHrYx6KNU)Ho>!W$}-8{wM zzniZue7?jI4`*PNyb2%HsuH_Xrmy+AuU&)OHlbN=6PRU`B%SKdf28kkYX}q$YWKLp zJ+2*fq6_?Mg`>}zLE#>cjQidgWsjS5!nagB3&%lJ;=&0eu);|bnPCmPz_`D{dr){G z8VLfklvrp$EdhTkMM?v9zR~UU!jC87XA}Kwp`UFSIQ)1bMm93}IPmM~{%b*hZpR~B zUR3{YU+tgEe?Rw^^OQe6zya=W&Qt#AzGrPl{+ll5DLM|0S}ta*rN2uHZ%=~Zgkjq% zEjzMWx+X8G<4@AWnwmH)lPNIX2ag z{!JE@eiJUTl;oQ}?_O5N;PJT9P_+AvER)ho&q_G6);@1?f<1q7!XTQ&ab*g{9J&DI z@lLRLafxq`FIUs&I!pp5w+dN~4>xf>`M%5{&-Y}GaG5VF_FAq*DBsA+hc)=VoIJts z+ANmy4Xb=mlo37-zWPvFHfNWcK! zK*W3aa04$#5Emf9m9=YcGq}@{uowZ%g5V4Ra)B?Yd6`8SSi$Lq9+f0luwRb|qPBWn zrMnxXbUy|>?ns>ogrQ8QgmUP5QgQ7SZ0TPl`jH$q&>MRilvI3BZn;nI2|3YuCD8NZ zy>VuBLvvVckINn~t)6&h+*<7cJMZ*PAhB2C6NW#)_6pO}KcesXdEtA03W}0zn!}u3 z)GueO#M|k+ReZ|Rp*!sO{j$ep`4NY+#LL-`^OKdN z;oh$76=WhVn@56848iv-!uaB9&s_0-{UNW*V&u%@vL}A!NXH+^ZS^b`=jA#6xGcZy zal~=!BQK|KUY^s_?M<9n_Z~|C&tIE>=QW8ZbwGL+`Qjz;>B#wXY@W!sH`3rzxJU8d z`AF{cLi`@Qmn&`sGVfI@2(Emfu+i9iu4uo$WxAzoTDoQ3G$?hcX&P4^rqwAAYq;%x z?(zT^R~~?_@_?&H<$*5^6;uqzI;)c=KC5opQW% zlceY_6o7m8GODjge5k7mGFN#d;J;g&wt5wNI%T9u^2^?)TL>?Ku6UTe-3w`Xb>|C0jhaGpXT=p+(e1ZtJr(B9AYfnvvVQ~ z#pWW<%W`O#m+30!UD=vGkcAJOR<^|S27ik$95(+1o3E>kQ!#pH7Mm+Ei$3se{1FV$ zd1i8m);JqrF(%o=l{IfKuc@&KoWd)IsRe~q$pWWO6xvsp(6l7LXH-fgABj*<{ZL^2 zNg~|GI9&$!#*B1}a|T&P=L{I!8~Ay`;Pxs#HG@;I8JvPaKUT|Ix~*;2J<^w4c}vdD zlC+;Rv(6a__8T+mnOR;(dUdxXpaw`E(%r(i3?bIx@6)uzpfmR0@)GRTdGyk(w`W+Z zXIOumVf|xwl2^0@?`3#MCeN)N;TYtxhrqUG!g>IzdalqOe!n2QyUasx}?F8+8;_G-M(+cOgI;%y>{#Mz`e3u5|u zUixwg+bW_@)QJ-2rDxL9i^^6*59dluU$5UZjrpMLJALUYVLdJrAXR3%Opy;;8O$mi z)0S?TR&g$S>A~y@ujxx~PdjqN_vg}&r&-FUAybwO(@OVcTPm{YdQW!gjcJyjIsad# z@s`(DLv@L7iTM2YHAONH&t~!~j=QGdRL@ko$=~ruiP-6Nz7gASv%7qx=Ml$U8#9Yx zBRr5iwFu~4?#rfP4CQjFZGwX`9IGHYsBi|;g9yr2qh*5+#-4YzM50WBV6eJdG+?C4 zStMhEVv#FI%k-?Qgkgvqg0k*6uJ)!^>R;KEIfD}nD~#;2H(sf)=_gE~a-Rfhxi*vc zvhFZi%Z%17M(Z}CwcKdkU@X-$%O<1sW21GK(YnT{-}%;t`+AYlQpU$hlV*WD?~QFn zy0OJ|V+?cpRAw=!ymAU@(r9cnzfo>9>9E1V8C;pp93ea#mpO8K-`HTRBO~k8v2EJ!~7hjoHTy*F$|+ zf_EPy?#Sh1`xr+E?on7?oK@J@&F*HWuwTrv?3Q^Xt1)*6rNJE!_b9eMw+H(ycN{w~ zXEIxnGo0 zRo2bEFp{uoni>1X$(Ul1#3zi;wE+!$O$<(1>4y!N;6%!UxRXG2sFgePUVOB8xIHo@G+ z{ngaSg*AWCq@_E@%8dFG=IW-5YJ;2uBC_%y=9pw;9bxuA%z?Ep)$1(>jHO9zFqjjC}V%YM2rEI0R_desey~c5SjN^72 zN29;g6MwR>%9tWahKKUQoFxa0dG>uq~maUeWrE_Iyz|_+Y6!fw&W1FWX+cVEVM+htk#He~kb z7GsgfzQu?vM%l}Z*LPFhg@-TSZFH)ZqrJy{@SCd^vko6aZf*ppQ-emDZkFYg33*Aa zmh$x`DutZ)g(L*7ZkGB+Qj7N|X|5FTyR=wp(%T^tKQ0rw(tHzhsuF9MNxE9<>y=nj zqej5i47CxYMX`8rqD*)sNNxq+0b_MCnL!F6Td8PH#=|6Csc1$Q_H9Oo2fe2)#_}yj zM}S>5t5P542&dPjnuT~x&GA%dRq0P3FgiRB?@eZoJ0?FkP>VV}IQQ-OTa5eloH!tu zGNXMLUL&5=z7AOe;{Qr4f$ryy#wos%=Zn^2RKfK!BRvN3Y%r7qRUO7D;W0c*HND#H2aI@usJ)%l$hy;a5bwcp zWgRwMBcX_?cBX$hGVC3GTm$U;jii^ti~3wCma-u{X)In)vGmca9ro{QIH`ACy>&K% zvWuRk?9lclP;%4pz5SdLQf^5pdF&6v>&fZ-keY0AwpCn)2CEqMu~>Zga6z${ET?$6 zFAJV7PAE8hc)EDGH*Tfp<>8hu1&2u$FAw7S?+8v!NQ?wX$i&08W!gW6Vhp3-dnD{T z&R?tbyl5fo>S5Nsxh76;_U2j}%(}6~$d~p8vv7k_mij6ZnW@;NpQL3nY;%md-e8uA zD?SZpQN`R~7B6qQ*37C_u$6MIi^AV?`Qjc_Sb%$SPGcL)a;Ptcl^-xx>^D}Xp`nMX z1IDEXQPh``RO~w-A^nux4fpMPbDcqa&;tnS6k&X&G@cK1(4`j+pJOmfec8%GF0*8B zILpz2q}=vm7@}S&K;)HSMflF_29GPhpb*^L1%@_=1rDeD%3?U-K=(VWR`EHdi~6s$ zo7d$4h}Y>IR;#%rUON}T8fOq%07(AKAm}i!viGj!Ij#rWq!?B*OLGQ3yofEU6$g!# zZJeH5=6*Fb=CVb8c;G9hTU_=X9{Td!D9i%2afomgygzIh1(P8d@_xm18$uWclN_JN zzt#9W{*`%i7fe{zx=CSpr0#-OPj~nt1&`-~U z6&IqzgLx>@RE*PQ(&{q=#NrM2U$1vu{GWk;7WlWj`M3TBKLXa_U*%D@N_?K-ps&h5 zeKsg68TuWDssd&b8?Mb`YgVz@Vs7XJ11IhzSw3BPaKDUsyRi1|zkLCNxk}#6!`EY# z$ER|We3krD4~KY_=cnQ#kyCJGUixe){ZC(8@F)lWb{hY48Qv^I3$3PRaE#`RO~en9 zN^)iN320R0(#taZDh`Q061j#$CB-rtC0&g$P%H&{)bijrGi0nK=2FNSCLlKc6U3hE zpkjkaZn|q$8txRbxw5&662+dd`Ruvy`OMMhd=pmmBLDqn(iF3xu>X8ES5#2=>U<^< zK-t%#;xOe>OBkVw(WEOyJpw2e*c3R$W1K0)Jpkf?0~kvbKgx=FIOF#qa z6x%S;!n!LlT$HB7*Q{xf+)T$E*p$VRVu4hUEBQ!i6Cl`t1q@e`5-DBLp=W4_C~S%_ z=|LGGCoc|eu~*9ptxytS|1 z8D_DlViU5}63oP4;1HgW9L&vV+sE|qwM+NZ1QJBz? zkHoms6~}K+8Ihu~s>ep863z@Ve1~Tl3t9q-11+ELo}~JF76`p8drpDV*Zx+4W!Zd^ zNTA+29}U_$jx&$;Ajs_(frlPU+qW1W_7omOC-QDDs~p!r~rB4&B3z?xS;aq9{x z?r6QHkg*Ms_U45&VCijdTSzTP9BtU-So1=(ZMHWrJRMW$2+GUzttJM&KAadl>`{f5 zyaF_0xL9WuRD1DPrh>Ju{#H|jQz9dJ_n(l(zzfr_tWCE*y_5U&il-hWdQTqt)_Zx@ zKk}^4=UZFlTbt!uTjX2y`Bp=|Rhw@O$zO}&fl|~lVWm(_jUpP$7PTz&%*Sz~nFiAW z#*O^06#CK4Oe$FFd~CszdyqTbp;?cRFl|ggEGy+g@B0)v! zuNOg3a{H|!Cv-DsIqU^z4fF*3wMUWbiB<~3DE(^Ry<8CY;C0r$4Ws8u=7>OHENJLu(xg|HLIM*I%N9n@}dA^uN-z)PA?fEO7Xd zm#_Xlc}eUK;Kh$wtQ7iE>gYLpVR8^lJX}R$ai);o7yfvx?_#V4fAjz0@0r?ij)F@? zoy;5+c2pSxD!?`o6<^orueH^DYn%Bio3UkK^D)GE7kWa|8rUF$#yhOhArX3S3Ua{m zkfUXK=IzIPF%WkpWPC49x9T)IOULdTL$_S1ieyq9gd$T|xK z*W?KUUddf3Jo(dICNoQ4?D2A+(I)FAN$9}Ljpu$5KOZ+_{0fiZIVF3~UAr&x{pj$I z(uh~mrkX3iyCIVLwQid&`RA(DYY*NQ_a5=yp3|b&rY=1oobu^u;llDeg7v#aJ^>TI zk%-#9oLTiyWFq@dI5Vr82b->VowT#DbT4kC-KWzUPd0H&z_ID4O#A`rSfl zk9{5uLTBa7UHA>Yp!!lmufF5w3YqnSXK<6~9s|eaylaz+v~6D;kiGZ^q0U)7N5Br` zN+wR9bKuA+q2uD8p5FSf^sM(*UAZHV=sGxM)YSKuEL*ikaQKpsO8s1m_8sGT^&6Br zX14Xz4N>H}Q}?pvaWD5DGJN!ux5|IM!OqD;qUO#kT4Gzb|-KAr`~E*y?fm}7KLtX$@aEkIO7B3;pkbpIe6VT9pGxy1(-Hx8EbqKpoD>?>aPf%(R(rW#@0+b>Q}$Kkh$l z+^T)2xL*CIOq-GQ)+|%boVj@g@60cH_r3QQ|I@l``I>bbHtoIrFx1mW-KbT&jJI-AmJs}E!%eN+P!!GfkTInd~wY2Rn^zueEZ`y=bt*6kAH*b3@yW7OnA9>QvcTm z4Nn_4HGAIjGW&+DdyiBxk;*?XC|Iox(HojHYw>)mHeuoIJ4D5Flc$ZHJZZF?JphDG!n_{Q+GsdJVrUsbwp{pQ^Vj~qXB z=4?PhpNui%CrzF4=B(^F?<}&eSW~`nlaC;@Rr{FOS@S;l=;P0h-T3v-Mj}riRj}rT z@E2o8W=xtn%bYjwgJml|T3z*HXlJ+qYDF_T^V+&;M}w z>MwWxREebl>KU`L^WQ0a_k)#X_U(H=JL>rQ9BZd2{@_EDsr8?1-MQz}Ih}k08fczt z+`Q!r?IJtA)D6Wm`L)4sj2M+Ue)9A;-=3X2uW(`A@SlDD<%v_@p8MgaYd3%W{eI0$ zBB|p4=Mf0;2>C7qfozww;HLRh>HXgQvu^{NNYgUbucQ z*k98sJg#RF%JY~>Z{-xP*n8;s=}Xsc|8d_#APx>`)cpBu+4epA!F2AYpRcQ=UjEHn z$G`mg;D3zAYumJS$BC~mU%M6T;iZ4RSD$|4Cz)oyyJ#`#%Ij^mFLmpl{3=RLQSs8{Yu0W#@Y(0b&YZpQ_EqcJN5*vN)-!of!J>6rzrS$xkNe(jhGFgQ^qht7e|F^JPruyMFqxO1N)ys7 zv=u^j?>A`Jh>?@08H=oIoWI`pj?WxBe&Xb*(`UYEd>bsjEyJR_B=k;#(x=bJS$pu( z!(f5jPurw5oGXep9;`9tAD z8Z~MDeCx1w9b)79rDcwrh&N-JJr`DrCo9%xm;ZQ4h6={tDj#2Ig* zfG>D&*$Ug*^36MU@B94N$p+0^w~y(Z*ekaPwzg#LkuR&hJ%8!vTfg1+XCe<}K#=yi z7A+Hc4R~XCdgjC_vjc*kYuch^Oy9x7$4oY_+JETu`5U+X@b{4U8oInOV&vF2XPFmS zKl|dBU+)FT{W`^BfpYeTyZ0YF{Q0qKH;`{1Z$HS8-We>-+RfX3R5#SNkB;rpH~IA; z!_&r2n4FzkU|GDpq;%cpQ)dFxGGLRyK@(RzIi)X(5!WM?8vc` zrW$h!3X82MvkMk3 z{$Savl2Yi!)n9H^KkydIyiv0>X?gnlOV{uGQKJ#cyj0rf!y`KPeKjrf?ZWq$tys5d z*Pi_cKmP_Q)UZjLj$L~vAto54S>^@reOOj;@T>FJoPUU!XFzasv%puCE$Wp#=nb=1 zuff}P?)~)e=T)c9RsRlAD*RPCJm%nGBgTxM{!ZcI57;{Pz(c6;X`40cevU_E$Jo4g zKKv-#<1N$53zzQKcs0-%An2%$=8B7#u1XZXOO|ci?CYuU_6ux4WubMu4$&{=UuwuJ z0jC2|9buCv6qan-UU}l;&%bNL4fT;RFU3F2My+JA?14_`+T-mx z`S%_)Rzj-~e^|TDU3$j?*eF6SWnnw+QMV?o@d~?O#gN_sD zez~WGy2!jyg*9sz(>Xq&AEY$-P18GzO7JQ#J^rZ`xY%>F38_e9m3E_0UT!R|Wg&{bLY(` zJ=waWV(*uyE?&9j%|yxud=)knMKr@pr4EgQAhPG?FD&0DoRe$0BXowaFa{`M-U7fm z=10(0m?H#43Xe4gBnb=1^&0QGFKi`(OCWlM?xl;0$u*95?GRlh*Iv<417L{wiWo3O z{0qT5;@botiGL&5CB8?nM{-{UI41c+0=Om-c>vTNoM(i`%j6p5aVH#*;jxfhb3HyJ z_}IfjeEU3(k?W>(m;xa2+!F$5;3;hf2=yFDLH^-6iSAwS>=+2R>sd^$7BU|S*-^HZ zT$wU1y;-sfaxIm8LBQm<2)ZbaQtAzrTx9K)Tne3(Un=1_ly{{muaYZU$))ff?`c&s zZ+JHI=J;Oq=J>%u&YlK zY*e2m*sQ)luw8wLphA6>V4wOr!9n#cf=cxrf}`rY1jp462u`X69RR1*5`wd88Nmg$ zlHiiskKn3WMQ~l+kl>bDM{q~oh~TceDZvAED1kuJnn0pyOCZxk5GXa#1b&*%1S(A| zK|@VEfliZ1&`9$NK~qfqR%nhA*fhrpN;M}5?3&XA8#QMM zHft^rY}Z^OsL)&`*r&Npa8PrLpi*;(;Hc&w z5nR=%2(D`y65P`02<~Va5!}@@C3v6-B@k#^6G*ge31r#`0;M*Zz)#zmK&6c(XsC@R z&}kD18fjl4XsS&j2-OZCXssPc&{jK?AVQl$5Uouk=&a2kh}DiIh}TXeNYqXxcttyt zAW3T^7@*B27^pQ94Atfnq-ZS!Y1#z@8QMhzW3@{NCTf=wOx3O+n5nf97`3GY*;+e+ zS-X)SU%Q#WqTNogKwCkuNV|_oAx+CsrDp+U3;2fqxLMpX6*%n z?b=HO722x=`?S{y4r*@^RBG=K9M#?>IIev_a8fIX0-V-L2+nF{1Q)bQf=gOIf~#5; z!F6pzf?HZ0!5wWQg1g$L1P`>K1Oi=a0*S6IflL=cpwvYZ_~|+msC2Oe4R!GZI$a_` zBi$oyYP z>oyZublV9Q=qd;n>GlyU(H$gMs;eYep*u=o(;X)$)tw};>rNAF)SV^Rth+$4U3ZC~ zLU)y5pYA%rLESBaO5GiTqq@5U$8`?~PU-~FfYUk&!C9S*;DSy`a7pJ!a8;)wxUOqR za7(8nxT9-Ca97uq;DIibKoHWJKoZiHKo$}~pbUuy{LwXf@k?-}Mt`OPOpLCe$~!BX zt9^@jct4t}%FCk@seP6lGl0MnbB-8nJgkj5MJ{c}*v^379g_$ac1$JsxZ^^)_bm^? zPMoU+57RnvQNPuRi)?YH$;7aZ_x!liJaT=`yN-7%B-j4VOa4#E<`>dr6ozpute_+* z)JzD>ZX#?&pn~nB+tj&l-<(d{X0GqEFtv-E7~))-e{zE;6)}*cZY07KGA}9&g-pE= zx+$~>E0QiUNCu$|)9iiTbM@nS-t&CtocG<}8zPST(YQa6@WogLbzD>f2C)U?3O`UF zl~)9yG?9=)s1Dr8Cmo|)2sb-A+8Y=G)9X9FYV(PF|^ zGv}^Zcq%~)PvwQ>7v9e%E!^w3mNlsN7H-}BJZ_{hpK}8e!})BUDd3ieCAJDUkY@c> zNbyXo%vt|Hxux=1|3XEr+d#OG;~BORoGj1A0mbI9qh{mdj!Dc*{FK8&N3|3KQDD+M?{o!3tp8kpcZ>!3UEmzSMcs8iE2jF z?0Zy6OKN>{K0=#svx>0cYrH}@piKYH-XPOUu>z)>?gIypAQ`N7XsJ)&w;1)cg(gBPIk<+P_4g{K>tJ1#b$gLn}$$QE7h_?DS#qXu~hC52WCPXm<`S0Da&CF NtcE#|+e?2h{11xGAVdHF literal 0 HcmV?d00001 diff --git a/BuGS/sprites/solid.s b/BuGS/sprites/solid.s index 854a8b3..6116f50 100644 --- a/BuGS/sprites/solid.s +++ b/BuGS/sprites/solid.s @@ -235,5 +235,115 @@ solid3 entry _spriteFooter rtl + + +rightBar entry + _spriteHeader + + ldx #$0000 + ldy #$2002 + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + _spriteFooter + rtl + + +leftBar entry + _spriteHeader + + ldx #$2002 + ldy #$0000 + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + adc #$00a0 + tcs + + phy + phx + + _spriteFooter + rtl end