mole5000 [Lexaloffle Blog Feed] Lines of Action <p> <table><tr><td> <a href="/bbs/?pid=51218#p"> <img src="/bbs/thumbs/pico51217.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=51218#p"> Lines of Action 1.0</a><br><br> by <a href="/bbs/?uid=24317"> mole5000</a> <br><br><br> <a href="/bbs/?pid=51218#p"> [Click to Play]</a> </td></tr></table> </p> <p>So this is mostly for those of you who are thinking about ChessJam and wondering if the Pico8 is tough enough for the job.</p> <p>The answer is clearly &quot;Yes!&quot; (1). Here is my implementation of a Sid Sackson classic board game Lines of Action. OF interest is that I'm using Negamax, bit boards and the 0x4300 user memory for the storing thereof.</p> <p>There is unfortunately some kind of bug hiding in my (horrible, horrible) code that means the smart AI occasionally glitches the game state. I did mostly write this late at night during a period I wasn't sleeping well. I am very hapy with the code about the menus though.</p> <p>(1) People have managed to fit (most of chess) into a ZX81 (that's a whole 1K of ram they were working with). <a href=""></a></p> Mon, 02 Apr 2018 16:42:27 UTC CoRoutine Drawing System <p> <table><tr><td> <a href="/bbs/?pid=42481#p"> <img src="/bbs/thumbs/pico42480.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=42481#p"> Drawing System</a><br><br> by <a href="/bbs/?uid=24317"> mole5000</a> <br><br><br> <a href="/bbs/?pid=42481#p"> [Click to Play]</a> </td></tr></table> </p> <p>So I went a little crazy after doing my contribution for the invent a title screen thread. I thought it would be nice if the two Gs drew at the same time and I came to the conclusion (in a huge leap) that the best way of doing it would be to some kind of co-operative multitasking co-routine system.</p> <p>It doubled the token count from 200ish to 400ish but I'me pretty happy with it and I think it works well as a demonstration of the power of closures and co-routines.</p> <p>EDIT: So the library is based around additive drawing - there is no clearing of screen state between each frame so everything builds up. My next plan is to build a &quot;display list&quot; system when you can attach co-routines to properties of each display item to animate them - more flexible than this current system.</p> Fri, 14 Jul 2017 16:31:30 UTC Dither Line Function <p> <table><tr><td> <a href="/bbs/?pid=41918#p"> <img src="/bbs/thumbs/pico41917.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=41918#p"> Dither Line</a><br><br> by <a href="/bbs/?uid=24317"> mole5000</a> <br><br><br> <a href="/bbs/?pid=41918#p"> [Click to Play]</a> </td></tr></table> </p> <p>While working on my 3d engine I've written a function that I think would be generally useful and I haven't seen it done before. It draws horizontal dithered lines such that odd and even rows have an alternating checkerboard pattern. Code is obviously in the cart but I post below as well.</p> <p>The code runs just as fast the native LINE function but with the bonus of optional dithered-e-ness</p> <div> <div style="max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre> function dither(sx,ex,y,draw_colour,shade_colour) if (sx&lt;0 and ex&lt;0) or (sx&gt;127 and ex&gt;127) then return end sx = max(0,min(sx,127)) ex = max(0,min(ex,127)) if ex &lt; sx then sx,ex = ex,sx end local sos = sx % 2 local eos = ex % 2 local yind = y*64+0x6000 local ctu = -1 if y%2 == 0 then ctu = draw_colour else ctu = shade_colour end if sos == 1 then sx -= 1 poke(yind+sx/2, bor(band(peek(yind+sx/2),0x0f), band(0xf0,ctu))) sx += 2 end if eos == 0 then poke(yind+flr(ex/2), bor(band(peek(yind+ex/2),0xf0),band(0x0f, ctu))) ex -= 1 end memset(yind +sx/2,ctu, (ex/2-sx/2)+1) end </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>The tricky bit being to deal with the start and end of the line when they do no perfectly align with the byte boundaries.</p> Sat, 24 Jun 2017 17:38:42 UTC Wireframe 3d Tech Demo <p> <table><tr><td> <a href="/bbs/?pid=41580#p"> <img src="/bbs/thumbs/pico41579.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=41580#p"> Wireframe 3d Tech Demo 0.1</a><br><br> by <a href="/bbs/?uid=24317"> mole5000</a> <br><br><br> <a href="/bbs/?pid=41580#p"> [Click to Play]</a> </td></tr></table> </p> <p>I've finally managed to get a clean, 3d wireframe engine up and running. It does backface culling but otherwise is as plain as it comes.</p> <p>Working through the maths and pulling together from various sources was a pain as writing a software renderer is a bit of a lost art form with D3d/OpenGl doing all the maths for you these days. </p> <p>So I thought people might appreciate a simple example to start from.</p> <p>THis doesn't do any camera transforms - the camera is at 0,0 starting down the z-axis.</p> Tue, 13 Jun 2017 09:11:26 UTC Low to High <p> <table><tr><td> <a href="/bbs/?pid=40586#p"> <img src="/bbs/thumbs/pico40585.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=40586#p"> Low to High 1.0</a><br><br> by <a href="/bbs/?uid=24317"> mole5000</a> <br><br><br> <a href="/bbs/?pid=40586#p"> [Click to Play]</a> </td></tr></table> </p> <p>Another memory game to go along with my earlier &quot;Simon Says&quot; game.</p> <p>I really loved the low-to-high game from Brain Training so thought I would implement it here. If I take this any further the I think I'd double the size of the tiles and make my own font as I have difficulty 'scanning' the numbers with Pico's default font.</p> <p>My personal high score on this Pico version is 9 numbers cleared (I was way better at the DS version!)</p> Sun, 14 May 2017 16:41:38 UTC Simon Says <p> <table><tr><td> <a href="/bbs/?pid=40458#p"> <img src="/bbs/thumbs/pico40457.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=40458#p"> Untitled</a><br><br> by <a href="/bbs/?uid=24317"> mole5000</a> <br><br><br> <a href="/bbs/?pid=40458#p"> [Click to Play]</a> </td></tr></table> </p> <p>A rough and ready &quot;Simon Says&quot; game I hacked together in a few hours. Use the arrow key to play the appropriate triangles and follow the sequence. What high score can you get?</p> <p>I am inordinately proud of the code that draws the triangles as I got it right first time.</p> Thu, 11 May 2017 11:05:50 UTC