Eiyeron [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=1281 fishes <p> <table><tr><td> <a href="/bbs/?pid=64332#p"> <img src="/bbs/thumbs/vox_fishes-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=64332#p"> fishes</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=64332#p"> [Click to Play]</a> </td></tr></table> </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>r=rnd function _draw() srand(1) clv() for i=0,32 do ot = r(16)-8 tf = flr((t()+ot)*16) op = r() c = 96+r(7) sh = r(4)+12 z = r(63) yb= r(127) for x=0,48 do h = sin(x/48)*5+6 X = (x + tf)%128 y = sin(X/96 + op) * sh + yb line3d(X, y, z, X, y + h, z, c) end end end</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <h1>Alternative version</h1> <p> <table><tr><td> <a href="/bbs/?pid=64332#p"> <img src="/bbs/thumbs/vox_fishes_alt-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=64332#p"> fishes_alt</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=64332#p"> [Click to Play]</a> </td></tr></table> </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>r=rnd function _draw() srand(1) clv() for i=0,32 do ot = r(16)-8 tf = flr((t()+ot)*16) op = r() sh = r(4)+12 z = r(63) Y= r(127) for x=0,48 do X = (x + tf)%128 y = sin(X/96 + op) * sh + Y line3d(X, y, z, X, y + sin(x/48)*5+6, z, 96+7-(z/9)) end end end</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> https://www.lexaloffle.com/bbs/?tid=34184 https://www.lexaloffle.com/bbs/?tid=34184 Sat, 11 May 2019 20:33:56 UTC Sphere Cube <p> <table><tr><td> <a href="/bbs/?pid=60688#p"> <img src="/bbs/thumbs/vox_sphere_cube-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=60688#p"> sphere_cube</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=60688#p"> [Click to Play]</a> </td></tr></table> </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>c=cos s=sin l=sphere v=8 M=2 m=-M function _draw() clv() for X=m,M do for Y=m,M do for Z=m,M do T=t() a=T/8 W=c(a) w=s(a) V=v*(1/T+1)+W+w x,y,z=X*W-Y*w,X*w+Y*W,Z x,y,z=z*w+x*W,y,z*W-x*w x,y,z=x*V+64,y*V+64,z*V+32 l(x,y,z,5,224-16*flr(y/16-2)) l(x,y,z,4,13+X+Y+Z) end end end end</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> https://www.lexaloffle.com/bbs/?tid=32833 https://www.lexaloffle.com/bbs/?tid=32833 Tue, 08 Jan 2019 19:47:56 UTC Issues with pseudo-modules <p>Hello, I'm trying to port over some libraries to kickstart prototyping on voxatron (such as 30log or cpml) and I got a weird issue with functions not finding an upvalue.</p> <p>Let's say we have a B.lua file and a A.lua file<br /> B.lua contains this:</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>B = {} B_mt = {} local function new() return setmetatable({}, B_mt) end function B.new() return new() end function B.draw() print(&quot;Called&quot;,0,0,7) end B_mt.__index = B function B_mt.__call() return B.new() end B = setmetatable({}, B_mt)</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>It's basically a global class-ish definition with a constructor, an alias to the constructor via __index and the private constructor which is called internally.</p> <p>Let's say we have an A.lua script which does:</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>local b = B() function _update() end function _draw() b.draw() 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>It simply gets a B instance and calls its draw function yet it doesn't work on Voxatron 0.3.5. I don't know what are the private/public global/local stuff available on this platform but this kind of pattern doesn't work well. I get this kind of error.</p> <img style="" border=0 src="https://www.lexaloffle.com/bbs/files/1281/a.png" alt="" /> <p>In vanilla lua, it works pretty well, I can use <em>dofile</em> or <em>require</em> sequentially those files and call _draw() without error.</p> <p>So I don't know if it's an error or a quirk designed by Voxatron limitations, but I'd like to know if it's intended and what are the extends of using local/global variables between scripts in Voxatron.</p> <p>Thanks and have a nice day.</p> <p>Edit : I'm calling those pseudo-modules because as we don't have Lua's module system, there are a few patterns that allows for psuedo modules to happen. They're just loaded during the cart initialization and in a sequential manner.</p> <p>Edit 2 : For further indication, this is cpml's way of making classes.</p> https://www.lexaloffle.com/bbs/?tid=32775 https://www.lexaloffle.com/bbs/?tid=32775 Thu, 03 Jan 2019 16:28:20 UTC Sphere (Vox) <p> <table><tr><td> <a href="/bbs/?pid=60455#p"> <img src="/bbs/thumbs/vox_sphere_vox-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=60455#p"> sphere_vox</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=60455#p"> [Click to Play]</a> </td></tr></table> </p> <p>I had to recreate my Sphere on Voxatron. I wandted to see how it'd look. I don't have a fillp routine yet, but I feel already happy with how it looks.</p> <p>I didn't redo the white HUD tidbits for a specific reason : I haven't got to determine the good processes to make good HUD. The &quot;Core status&quot; part looks not as good as I expected.</p> https://www.lexaloffle.com/bbs/?tid=32747 https://www.lexaloffle.com/bbs/?tid=32747 Mon, 31 Dec 2018 10:31:50 UTC Scripting notes <p>Hey there. I'll be writing down a few things I'm discovering while taking a bite off the brand new Voxatron update. Scripting API was a long-awaited feature and I'm definitely excited to give a new spin to Vox.</p> <h3>Disclaimer</h3> <p>I'm writing this post while playing with the alpha 0.3.5b. Stuff I'll be writing can and may change over versions.</p> <h3>Script organization</h3> <p>As a script is a component like others, you can perfectly use them in an actor as well as an animation or an emitter. <strong>update</strong> and <strong>draw</strong> are called when an actor is updated or drawn.</p> <p>A script has a basic encapsulation system. Local &quot;top&quot;[^1] variables are indeed locals to the script and globals are shared over scripts. Yeah, you read that perfectly. You can perfectly have &quot;library&quot; script pieces that are just there to hold your functions akin to a Pico8 code tab as long as the desired functions or variables are global.</p> <p>Note that if the script has <strong>_draw</strong> and <strong>_update</strong>, they take precedence over Voxatron's routines, even if they're not placed in a room. I'm linking a cart that stores two script pieces, a few circle drawing routines and a script having _update and _draw. Feel free to download it to see how it goes. As you can see, the room is totally blank and isn't actually rendered at all.</p> <p> <table><tr><td> <a href="/bbs/?pid=60452#p"> <img src="/bbs/thumbs/vox_doyumogeka-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=60452#p"> &quot;Library&quot; script test</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=60452#p"> [Click to Play]</a> </td></tr></table> </p> <p>I don't know if there are &quot;rules&quot; for loading or executing or ordering the scripts pieces yet, but it looks quite promising. You can have behavior code for an actor, an advanced particle emitter to add tidbits to a creature or even take over voxatron's rules temporarily to implement some logic over it (for instance a battle engine to intrrupt your RPG players with some slimes? :D )</p> <h3>Colors</h3> <p>Colors are actually spaced over the [0-255] range sparsely. I'm linking a demo so you see them. Press up or down to change the bottom layer to see which colors are transparent. The 0-15 colors are the good old Pico-8 palette where the 16 and 32 color row looks like complementary colors. There are two nice gray gradients at 80-85 and 86-91.</p> <p>The (interesting) transparent colors are at 160-168, 192-200 and 224-255.<br /> <table><tr><td> <a href="/bbs/?pid=60452#p"> <img src="/bbs/thumbs/vox_sinihojoni-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=60452#p"> Color palette demo</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=60452#p"> [Click to Play]</a> </td></tr></table> </p> <h3>Properly making global/local functions</h3> <p>In 0.3.5 there is a scoping issue as seen <a href="https://www.lexaloffle.com/bbs/?tid=32775">there</a> that raises when trying to use a local function through a function set to a variable. </p> <p>For instance trying to make a globally accessible <em>class</em> named <strong>B</strong> where one of the class (or object)' members in a script like this:</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>B = {} local function new() return {draw = B.draw} end function B.new() return new() end function B.draw() print(&quot;Called&quot;,0,0,7) 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>will not properly find the local function <strong>new</strong> for unknown yet reasons. I suggest to create the global variable as-is and wrap the rest of the code in a do ... end block. It'll properly set the upvalues scoping and will fix the issue.</p> <h3>Making libraries</h3> <p>As there are a few quirks around how Voxatron loads code, there might be the need to make a few conventions to make easily shareable code.</p> <ul> <li>As mentioned in the previous point, there is a current scoping issue, so the best route would be wrapping as much code in a do/end scope, if not the whole script object.</li> <li>Currently, when exporting objects or folders, the resulting cart uses as label the BBS label of the currently loaded cartridge (the object seen in the Metadata tab). That could be a fancy way to give an identity to your library</li> <li>An idea for organization is having a README script only to contain your licence. You can do comment blocks by wrapping your comment in <span style=" display:inline-block; background-color:#eee; padding:2px; margin: 4px; padding-left: 8px; padding-right: 8px; color:#222">--[[ &lt;your code&gt; ]].</li> <li>You can directly export folders. That can be quite useful to export multiples scripts easily.</li> </ul> <h3>Random API bits</h3> <ul> <li><strong>set_draw_slice</strong> also takes an additional boolean argument to determine if you want to draw the Pico8's slice on a XY plane (flat) or XZ plane (vertically in front of the player). If it's <strong>true</strong>, it'll use XZ and will draw the top 64 rows of Pico8's buffer, else (<strong>false</strong> or <strong>nil</strong>) it'll draw on a layer like before.</li> <li>From what I tested, <strong>stat</strong> seems to work here and there. Looks like the CPU and memory usage functions seem to work. I have yet to test the rest</li> </ul> <h3>Footnotes</h3> <p>[^1]: I can't find a better way or word to explain, but any kind of variable that's not already in a scope like a do/end, a function, a condition, a while loop or a repeat.</p> https://www.lexaloffle.com/bbs/?tid=32744 https://www.lexaloffle.com/bbs/?tid=32744 Mon, 31 Dec 2018 10:10:22 UTC 3D Toolkit <p>Update : I don't think my cart is very usable. Possily math issues and globally unoptimized process won't make it a decent base for games or sketches. I'll hold further dev of it for now. Check instead freds' version istead, it seems pretty more promising Here be dragons.</p> <p>Hello everyone, I'll be posting my 3d (+extra) toolkit here. Been a while I haven't touched it until a few days ago. I could even optimize it further than before (at the expense of a few things).</p> <p>The cart is a basic demo of what it can do, I'll be writing a few more explanations (and a link to a Blender export tool) later, if you don't mind.</p> <p>What's supported (or inside the pipeline):</p> <ul> <li>wireframe/flat/light shading (ambiant+light power+light direction)</li> <li>backface culling</li> <li>zsorting (thanking a few people for offering good heapsorts)</li> <li>Translate/Rotate/Scale per object</li> <li>basic vector/matrix library</li> </ul> <p>What's not supported</p> <ul> <li>Proper frustrum culling (put a mesh behind the camera and see the disaster)</li> <li>Texturing</li> </ul> <p>What's maybe planned</p> <ul> <li>Mesh compression (not yet planned)</li> <li>Vertex keyframing (still wondering how to make it the quickiest)</li> </ul> <p>Extra features</p> <ul> <li>The water/reflecton effect you all loved in my demos (with palette indirection)</li> <li>record utility to quickly record a number of frames</li> </ul> <p> <table><tr><td> <a href="/bbs/?pid=54375#p"> <img src="/bbs/thumbs/pico54374.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=54375#p"> 3D Toolkit 4.00</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=54375#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=31542 https://www.lexaloffle.com/bbs/?tid=31542 Tue, 24 Jul 2018 02:23:26 UTC Splitscreen routines <p> <table><tr><td> <a href="/bbs/?pid=48239#p"> <img src="/bbs/thumbs/pico48271.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=48239#p"> Splitscreen routines 1.01</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=48239#p"> [Click to Play]</a> </td></tr></table> </p> <p>Hello everyone, after a Twitter thread of WIPs and half posted routines, I'm releasing this cartridge containing a few routines to allow making basic split-screen scenes relatively cheaply (around 20% of CPU used at max and 8KB of RAM used as back_buffer.</p> <p>This isn't a pretty scene or sketch, it's at most minimal, but it shows that you can have two scenes drawn and draw them with a non-axis-aligned delimitation. Is anyone remembered of the DBZ SNES/Genesis fighting games? :D</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> -- Available functions: - cpy_to_buffer : saves the current state of the VRAM to the back-buffer - drw_horiz_half : draws the back-buffer on the top part to the screen, with the limit being a line located on ([0;y1],[127,y2]) - drw_vert_half : draws the back-buffer on the left part to the screen, with the limit being a line located on ([x1;0],[x2,127) </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>Have a nice day!</p> <p>Addendum : two more things</p> <ul> <li>It doesn't do bound check, so beware if you go out of [0;127]</li> <li>There probably is space for optimization, sorry for the ugly code.</li> </ul> <p>Update :<br /> I did an update fixing the horizontal split code, cleaning a bit here and there and applying Felice's array indexing idea (thanks!) And I did a small demo to show a bit better what it could like than just two plain screens.</p> https://www.lexaloffle.com/bbs/?tid=30609 https://www.lexaloffle.com/bbs/?tid=30609 Tue, 16 Jan 2018 10:13:16 UTC Sphere <p> <table><tr><td> <a href="/bbs/?pid=47487#p"> <img src="/bbs/thumbs/pico47484.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=47487#p"> Sphere 1.00</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=47487#p"> [Click to Play]</a> </td></tr></table> </p> <p>Hey there, here's another sketch I did a few days ago. After playing a bit with it, I don't have any ideas for it right now. (Also first cart from me with a perspective projection, I took the occasion to fix a bit my vec/mat library.)</p> <p>Have a nice day!</p> https://www.lexaloffle.com/bbs/?tid=30467 https://www.lexaloffle.com/bbs/?tid=30467 Sun, 17 Dec 2017 17:17:46 UTC Feisar custom ship <p> <table><tr><td> <a href="/bbs/?pid=47317#p"> <img src="/bbs/thumbs/pico47376.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=47317#p"> Feisar custom ship (alt version) 3.01b</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=47317#p"> [Click to Play]</a> </td></tr></table> <br /> <table><tr><td> <a href="/bbs/?pid=47317#p"> <img src="/bbs/thumbs/pico47368.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=47317#p"> Feisar custom ship 3.01</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=47317#p"> [Click to Play]</a> </td></tr></table> <br /> I started playing Wipeout HD (Fury) again. I like this series. I had to try to make 3D stuff so here we go, a brand new custom model inspired from HD Fury's Feisar ship.</p> <p>Once again, thanks to Eletricgryphon for the triangle routine and Rez for the tips</p> <p>Edit : crammed shading in the cart!<br /> Edit v3 : I got to optimize the mesh, remove a lot of internal faces, allowing me to add way more eyecandy. Wow.<br /> Edit v3b : Added a gridless version.</p> <p>Previous versions :<br /> <table><tr><td> <a href="/bbs/?pid=47317#p"> <img src="/bbs/thumbs/pico47316.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=47317#p"> Feisar custom ship 1.01</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=47317#p"> [Click to Play]</a> </td></tr></table> </p> <p> <table><tr><td> <a href="/bbs/?pid=47317#p"> <img src="/bbs/thumbs/pico47322.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=47317#p"> Feisar custom ship 2.00</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=47317#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=30433 https://www.lexaloffle.com/bbs/?tid=30433 Tue, 12 Dec 2017 12:23:08 UTC I regret nothing <p> <table><tr><td> <a href="/bbs/?pid=46545#p"> <img src="/bbs/thumbs/pico46544.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=46545#p"> I regret nothing chicken</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=46545#p"> [Click to Play]</a> </td></tr></table> </p> <p>Hello there. This is a silly cart I did as a result of a inside joke. It started with one of my current avatars being a tracing of a &quot;I REGRET NOTHING&quot; gif with a rotating chicken and it ended up somehow on Pico-8.</p> <p>Some technical stuff:<br /> So we have 12 frame gif exported into spritesheet/map data with a tool I wrote on the fly to make it possible and took most of the programming time. The tool loads the frames from a gif and split each frame in 8*8 sprites, indexes them to avoid repetition in sprites and gives me the map data of each frame (or better, the map values to be changed from a frame to another, making a frame's data negligible).</p> <p>I wanted to use the vector tool to vectorize the frames by hand but the lack of overlaying a model image and the amount of frames made me prefer automatically chunking the frames instead...</p> <p>The end result? Probably my silliest cart yet.</p> <p>Sorry.</p> https://www.lexaloffle.com/bbs/?tid=30298 https://www.lexaloffle.com/bbs/?tid=30298 Tue, 21 Nov 2017 09:50:32 UTC Beat <p> <table><tr><td> <a href="/bbs/?pid=44092#p"> <img src="/bbs/thumbs/pico44091.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=44092#p"> Beat 1.00</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=44092#p"> [Click to Play]</a> </td></tr></table> </p> <p>Another small sketch. This one was inspired by one of Trasevol Dog's projects.</p> <p>(Note : should I do a thread per sketch or a big thread for storing all of them?)</p> <p>(Thanks to electricgryphon for their trifill routine)</p> https://www.lexaloffle.com/bbs/?tid=29919 https://www.lexaloffle.com/bbs/?tid=29919 Mon, 11 Sep 2017 09:45:26 UTC Background wave effect <p> <table><tr><td> <a href="/bbs/?pid=43894#p"> <img src="/bbs/thumbs/pico43893.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=43894#p"> Background wave effect 1.1</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=43894#p"> [Click to Play]</a> </td></tr></table> </p> <p>Hey there, I did a few weeks ago a mini cart showing how Earthbound or Mother 3 would do most of the background effects.</p> <p>I redid the whole routine and made two versions, vertical and horiztontal, which should cover a big part of the basics behind those games' technique (the rest being layer blending, scaling, palette cycling, or alternating backgrounds per line).</p> <p>There are two implementations, sspr-based and map-based. The sspr based uses the data of a sprite at given coords and size to tile it on the screen whereas the map-based routines uses the map routine to directly draw a line of pixels on the screen. The map-based routines uses part of the map data but it makes up for allowing more than one sprite to be used, as you can see with the sample's colored corner areas.</p> <p>Notes about the implementation:</p> <ul> <li>I used time, amplitude, frequency and scale as global variables to make the implementation a bit less repetitive but you can pass them as arguments to the functions to have different settings</li> <li>The map-based routines (map_&lt;routine name&gt;) assume that you're using at least a 16*16 map, but can be bigger. I haven't programmed an iteration allowing to use smaller maps to make it faster (as it'd use more than two map calls per line)</li> <li>The map routines overrides camera and clip settings. Make sure to save their context before using.</li> </ul> https://www.lexaloffle.com/bbs/?tid=29889 https://www.lexaloffle.com/bbs/?tid=29889 Sun, 03 Sep 2017 10:54:17 UTC Wave sketch <p>After a few days of making a few sketches around some in-the-books tricks, I got an idea during a dream and decided to make it.<br /> <table><tr><td> <a href="/bbs/?pid=43573#p"> <img src="/bbs/thumbs/pico43572.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=43573#p"> Wave sketch</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=43573#p"> [Click to Play]</a> </td></tr></table> <br /> Here's the alternative version. I may use it (or a tweaked version) as a album cover if I will ever do synthwave (or vaporwave, RIP)<br /> <table><tr><td> <a href="/bbs/?pid=43573#p"> <img src="/bbs/thumbs/pico43574.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=43573#p"> Wave alternative version SYNTHWAVE</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=43573#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=29834 https://www.lexaloffle.com/bbs/?tid=29834 Thu, 24 Aug 2017 03:20:36 UTC Moonlight <p> <table><tr><td> <a href="/bbs/?pid=40545#p"> <img src="/bbs/thumbs/pico40544.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=40545#p"> Moonlight 1</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=40545#p"> [Click to Play]</a> </td></tr></table> </p> <p>Just a small sketch for a moody day.</p> <p>Alternative version<br /> <table><tr><td> <a href="/bbs/?pid=40545#p"> <img src="/bbs/thumbs/pico40546.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=40545#p"> Moonlight 1 v1_alt</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=40545#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=29319 https://www.lexaloffle.com/bbs/?tid=29319 Sat, 13 May 2017 15:47:36 UTC Mother 3 Battle engine mockup <p>Hello everyone, this is just a small thing I did for Pixel Dailes.</p> <p>Controls :</p> <ul> <li>Left/Right : Move cursor.</li> </ul> <p>I didn't do anything else than just this screen, I was mostly interested in throwing the bases. I might touch it up later but that's unprobably (unless people are interested in working on it together...)</p> <p> <table><tr><td> <a href="/bbs/?pid=35270#p"> <img src="/bbs/thumbs/pico35338.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=35270#p"> Mother 3 Battle engine mockup 2 - Now with music! 1.1</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=35270#p"> [Click to Play]</a> </td></tr></table> </p> <p>(Older version, music-less)</p> <p> <table><tr><td> <a href="/bbs/?pid=35270#p"> <img src="/bbs/thumbs/pico35269.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=35270#p"> Mother 3 Battle engine mockup 1</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=35270#p"> [Click to Play]</a> </td></tr></table> </p> <p>Have a nice day!</p> https://www.lexaloffle.com/bbs/?tid=28491 https://www.lexaloffle.com/bbs/?tid=28491 Sun, 08 Jan 2017 15:31:29 UTC Epic Coaster WIP <p> <table><tr><td> <a href="/bbs/?pid=21394#p"> <img src="/bbs/thumbs/pico21775.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=21394#p"> Epic Coaster WIP 0.02 0.02</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=21394#p"> [Click to Play]</a> </td></tr></table> </p> <p>Hello everyone, been a while I haven't done some PICO so there it is. It's a reboot of a years old dropped calculator project I wanted to do with a friend : an <a href="http://armorgames.com/play/6450/epic-coaster">Epic Coaster</a> demake. It's some sort of theme-park themed Canabalt self-proclamed tribute. Let's see how far you (and the developper :p ) will go! o/</p> <p>Well, for now, I succesfully nailed (for once) physics and I also did some eyecandy, so everything should follow quite smoothly, like the whole game state, more platforms and stuff.</p> <p>Instructions : Z to jump.</p> <p>Changelog:<br /> -0.02</p> <ul> <li>Added an initial platform <ul> <li>Added gameover/replay just after</li> <li>Fade animation</li> </ul></li> <li>0.01 <ul> <li>Initial version<br /> Older versions:</li> </ul></li> <li>0.01<br /> <table><tr><td> <a href="/bbs/?pid=21394#p"> <img src="/bbs/thumbs/pico21393.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=21394#p"> Epic Coaster WIP 0.01</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=21394#p"> [Click to Play]</a> </td></tr></table> </li> </ul> https://www.lexaloffle.com/bbs/?tid=3457 https://www.lexaloffle.com/bbs/?tid=3457 Thu, 26 May 2016 08:41:16 UTC StackWM and its demos <p>Hello everyone, time to show you another project I just made last night : a stack-based Window Manager (WM), cleverfully named StackWM.</p> <p>A WM is a program or library to manage windows, dispatch events/interactivity to them and draw them. THink of your Windows/Linux/Mac's windows. So yeah, that's totally overkill and eating most of your cart space but it was fun to do and it put me on the tracks for another unrelated project.</p> <p>Sooo... What does the WM do?</p> <ul> <li>Update/render events</li> <li>Window render context :clipping and camera offsetting to limit the renderer to the window's area:</li> <li>Focus or Global events : both aren't exclusive, you can manage both of them on one window.</li> <li>Button/Buttonp events : global or focused (available only if the window is focused)</li> <li>There is always one focused window. THere are helper functions to switch focus to another window.</li> </ul> <p>What do I plan or think of adding to StackWM?</p> <ul> <li>Easier customisation? (colors? booleans to set functionnalities like notitle, grabbable, resizable?)</li> <li>Mouse support (emulated with pressing arrow keys and a button for click) and interaction support? (Click+grab on title -&gt; grab window? CLick on close button : Close event?)</li> </ul> <p>And here's a demo to show what I can do with StackWM. That's maybe a simple game but with time, better examples could be done. Have Fun!<br /> <table><tr><td> <a href="/bbs/?pid=12283#p"> <img src="/bbs/thumbs/pico12218.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=12283#p"> StackWM Demo : Tic Tac Toe 1</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=12283#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=2225 https://www.lexaloffle.com/bbs/?tid=2225 Tue, 04 Aug 2015 16:05:39 UTC Rotoscale effect! <p> <table><tr><td> <a href="/bbs/?pid=10087#p"> <img src="/bbs/thumbs/pico10086.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=10087#p"> Rotoscale effect!</a><br><br> by <a href="/bbs/?uid=1281"> Eiyeron</a> <br><br><br> <a href="/bbs/?pid=10087#p"> [Click to Play]</a> </td></tr></table> </p> <p>Hi everyone! Here goes my first submitted thing : a recreation of the good old rotoscaling effect, quite known in the demoscene... scene... in way less than 1kb of code. I made it fit to a round 1kb by comments in the source code to explain some tricks about the calculation.</p> <p>Rotoscaling is based on two things : rotation (good old cos<em>sin sin</em>-cos) and scaling. I precalculate scaled sine and cosine tables according to the current angle in the update loop to gain some overall speed.</p> <p>I programmed it on the alpha 0.0.5. I don't know if anything changed around to the speed/cpu usage but this should run quite quickly (don't expect 30 FPS neither, I couldn't make the pixel blit faster) on the 0.1 alpha.</p> <p>I really liked playing with PICO and I'm not done at all with it! :D</p> https://www.lexaloffle.com/bbs/?tid=1843 https://www.lexaloffle.com/bbs/?tid=1843 Tue, 21 Apr 2015 13:14:01 UTC