ADDAŧŧAŧŧAŧŧAŧŧADDÎĖĖĖˈˆˆŽŠŠŠŽˆˆˆŽĖĖĖŽĖĀĖŽĖĀĖŽĖĀĖĖĖėĖĀîˆĻĀîĖŽĀĖĀŽĀĀĀŽĀĀĀŽĀĀÎĖĖĖˈˆˆŽŠŠŠŽˆˆˆŽĖĖĖŽĖĖĖŽĖĀĖŽĖĀĖĖĖėĖĀîˆĻĀîĖŽĀĖĖŽĀĀĀŽĀĀĀŽĀĀŽĖĖĖŽŠŠŠŽŠŽŠŽŠĘĖŽŠŠŠŒˆˆˆĖĀĖÎĖĖÎĖŽĖŠŠĀėŽŠĀĀĀĖîĀėîĖĖîîŽĖĖĖŽŠŠŠŽŠŽŠŽŠĘĖŽŠŠŠŒˆˆˆĖĀĖÎĖĖÎĖŽĖŠŠĀėŽŠĀĀĀĖîĀėîĖĖîî >”?""!""!""""!"""""!"""""!""""""""""""""™™™™™™™‰ˆˆˆˆˆˆˆ™™™™™™™‰ˆˆˆˆˆˆ˜™™™"""""™™™™™™™‰ˆˆˆˆˆˆˆ™™™™™™™‰ˆˆˆˆˆˆ˜™™™™™™‰ˆˆˆˆˆˆ™™™™™™™ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆwwwwwwwwˆˆˆˆˆˆˆwwwwwww‡ˆˆˆˆˆˆxwwww‡™™™™™™ˆˆˆˆˆˆxˆˆˆˆˆˆˆˆˆwwwwwwwwˆˆˆˆˆˆˆwwwwwww‡ˆˆˆˆˆˆwwwwwˆ™™™™™™‰ˆˆˆˆˆxˆwˆˆˆˆˆˆˆˆwwwwwwwwˆˆˆxwwwwfffffffvwwwwwwffffˆ™™™™™™‰ˆˆˆˆwfˆwwwwwwwwwwffffffffwwwwwwwgffffffvwwwwwwfff†˜™™™™™™‰ˆˆˆˆwVˆwwwwwwwwwwffffffffwwwwwwwwffVUUUUUefffffVUUˆ˜™™™™™™ˆˆˆˆwV€wgvwwwgffffffUUUUUUUfffffffVUUUUUUffffffVUED˜™™™™™™ˆˆˆˆwV€xgvfffffffffUUUUUUUUfffffffVUUUUDDDDUUUUUUD„ˆ™™™™™™‰ˆˆˆwV€xgffffffffffUUUUUUUUUDTUUUUUUEDDDDDDUUUUDDD4ˆ™™™™™™‰ˆˆˆgF€xgffefffffVUUUUDDDDDDDUUUUUUUEDDDD3333DDDDD4ƒˆ™™™™™™‰ˆxgE€xwfVeDTUUUUUUUDDDDDDDDTUUUUUDDD4333333D43333ƒˆ˜™™™™™™ˆxg€xwfVeVUUUUUUUUEDDDDDD433CDDDDDD4333#"""233#""ˆ˜™™™™™™ˆxg€xwfVUUUUUUUUUUUED4333333CDDDDDD43#""""""""‚ˆˆ˜™™™™™‰xgˆwfVUETUUEDDDDDD43333333CDD433333#""""""‚ˆˆ˜™™™™™‰xfˆwfVUET53DDDDDDDD333333#""2333333##!""ˆˆˆˆ™™™™™™yVˆwfVUED4DDDDDDDDDC33#""""""3333#"""!""ˆˆˆˆ˜™™™™™ˆV™wgfUED4DDDDDDDD333#"""""""33!""""""‚ˆˆˆˆ˜™™™™™ˆW™wgfUUD44DDD3333333#""""""!""""""!‚ˆˆˆˆˆ˜™™™™ˆW™wgfUUDD3C"23333333#"""!"""""""ˆˆˆˆˆˆ˜™™™™x‰gfUUDD332333333333#"!!""""""™ˆˆˆˆˆˆ™™™™x‰hfUUDD33"3333333""""!""""""‘‰ˆˆˆˆˆˆ˜™™™x‰hfUUDD33"3333#"""""""""""""‘™‰ˆˆˆˆˆ˜™™‰x‰ˆwVUDD33#"3"""""""""""""™™™ˆˆˆˆˆˆ˜™‰x‰ˆwVUED33#"3!"""""""""""""""™™™ˆˆˆˆˆˆ˜™‰g‰ˆwWUED43#""""""""""""!""""""‘™™™™ˆˆˆˆˆˆ™‰g‰ˆwWUED43#""""""""""""""""""‘™™™™‰ˆˆˆˆˆ˜‰g™ˆwgVED43#"""!"""""""""""""""™™™™™‰ˆˆˆˆˆ˜‰™ˆwwfED43#""!""""""""""""""""™™™™™™ˆˆˆˆˆˆw™ˆxwfFD433""!"""""""""!"""""‚™™™™™™™ˆˆˆˆˆw™ˆxwffDD33""!"""""""""""""""‚˜™™™™™™ˆˆˆˆˆgˆˆxwffUD33""!""""""""""!""""ˆˆ˜™™™™™‰ˆˆˆˆgˆˆxwffUU33""!"""""""""""""ˆˆ˜™™™™™™ˆˆˆˆgˆˆxwffUU33#"""""""""!""‚ˆˆˆ™™™™™™ˆˆˆˆg€xwwgfUU43#""""""""""""‚ˆˆˆˆ™™™™™™ˆˆxW€x‡wgfUUD4#""""""""""!"ˆˆˆˆ˜™™™™™™‰ˆx€xwwgfVUED$"""""""""""ˆˆˆˆˆ˜™™™™™‰ˆx€xwwgfVUED4"""""""""""‘ˆˆˆˆˆˆ™™™™™™ˆx€xwfgfVUED4""!"""""""""‘ˆˆˆˆˆˆ™™™™™™‰x€ˆwfffVUED43"!""""""""™™ˆˆˆˆˆ˜™™™™™‰xˆwfffVUED433!""""""""™™‰ˆˆˆˆˆ˜™™™™™xˆwgfUfUEDD33"!""""""""‘™™‰ˆˆˆˆˆˆ™™™™™xˆwgfUfUUDD33"""""""""‘™™™ˆˆˆˆˆˆ™™™™™xˆwgfUUUUDD33#!""""""""™™™™™ˆˆˆˆˆ˜™™™™h™wgfUUUUDD33#"!""""""""™™™™™ˆˆˆˆˆˆ˜™™™™ygfUUDUDD33#""!"""""""’™™™™™‰ˆˆˆˆˆˆ™™™™ygfVUDDDD23#""""""""""‚™™™™™™ˆˆˆˆˆˆ™™‰‰xfVUEDCD43#""""!!"""""ˆ™™™™™™™ˆˆˆˆˆ˜™‰‰xfVUEDDD43#""""""""""ˆˆ™™™™™‰ˆˆˆˆˆˆ™‰‰ˆfVUED4C433""""""!"""‚ˆˆ˜™™™™™‰ˆˆˆˆˆ‰‰‰ˆvVUED43#33"""""""!"""‚ˆˆˆ˜™™™™™ˆˆˆˆˆ˜y™ˆwfUED43#33"""""""""!"ˆˆˆˆ™™™™™™‰ˆˆˆˆˆh™ˆwwUED43#33!"""""""""ˆˆˆˆˆ™™™™™‰‰ˆˆˆˆg™ˆxwUUD433"3!"""""""""‘ˆˆˆˆˆ˜™™™™™‰ˆˆˆˆ™ˆxwfUDD33""!""""""""""!ˆˆˆˆˆˆ˜™™™™™ˆˆˆˆ™ˆxwffDD33"""""""""""""™‰ˆˆˆˆˆ™™™™™™‰ˆˆˆˆˆxwffDD33"""""""""""""!™™ˆˆˆˆˆˆ™™™™™™ˆˆˆˆˆxwgfTD33"""""""""""""‘™™™ˆˆˆˆˆ˜™™™™™ˆˆˆˆˆxwgfUD33#""""""""""""‘™™™ˆˆˆˆˆˆ™™™™™‰ˆxˆx‡wgfVU43#""""""""""""™™™™‰ˆˆˆˆˆˆ™™™™™‰x€xwwgfVU53#"!""""""""""™™™™™ˆˆˆˆˆ˜˜™™™™™ˆ€xwwgfVUE4#"!"""""""""’™™™™™™ˆˆˆˆˆ˜™™™™™‰€xwfgfVUED4""""""""""‚™™™™™™‰ˆˆˆˆˆ™™™™™ €ˆwfffVUED4""!!""""""ˆˆ™™™™™™ˆˆˆˆˆ˜™™™™ €ˆwgffVUED42""""""ˆˆ˜™™™™™ˆˆˆˆˆˆ™™™™€ˆwgfUfUEDD33!"""‚ˆˆˆ™™™™™‰ˆˆˆˆˆˆ™™™ˆwgfUVUUDD33!!"‚ˆˆˆˆ™™™™™‰ˆˆˆˆˆ˜™™‰wgfUUUUDD33"!ˆˆˆˆˆ˜™™™™™ˆˆˆˆˆ˜™™™wgfUUUUDD33"ˆˆˆˆˆ˜™™™™™‰ˆˆˆˆˆ™™™wgfVUDEDD33#"""‘‰ˆˆˆˆˆ™™™™™™ˆˆˆˆˆ˜™™‰wfVUEDCD33#""""!‘™ˆˆˆˆˆ˜™™™™™™ˆˆˆˆˆ™™‰ˆfVUEDCD43#""""""™™ˆˆˆˆˆˆ˜™™™™™‰ˆˆˆˆx™‰ˆfVUED4C43#""""""""™™™ˆˆˆˆˆˆ™™™™™‰ˆˆˆˆ‰ˆwVUED4333#"""""""""‘™™™‰ˆˆˆˆˆ˜™™™™™ˆˆˆˆ‰ˆwwUED43#3"""""""""""‘™™™™ˆˆˆˆˆˆ˜™™™™‰ˆˆˆ‰ˆwwUED43#"""""""""""""˜™™™™™ˆˆˆˆˆˆ™™™™™ˆˆˆ™ˆxwfUD43#""!"""""""""""˜™™™™™‰ˆˆˆˆˆ˜™™™™‰ˆˆ€˜ˆxwfVDD33""!""""""""""‚ˆ™™™™™™ˆˆˆˆˆ˜™™™™™‰ˆ€ˆˆxwffTD33""!"""""""‚ˆ˜™™™™™‰ˆˆˆˆˆ™™™™™™ˆˆˆxwffUE33"""""""ˆˆˆ˜™™™™™‰ˆˆˆˆ˜™™™™™‰ˆwxwgfUU33""!""ˆˆˆˆ™™™™™™ˆˆˆˆˆ™™™™™™ˆwwwgfUUC3""!ˆˆˆˆ˜™™™™™‰ˆˆˆˆˆ™™™™™ˆxwvgfVUDD#"ˆˆˆˆˆ˜™™™™™ˆˆˆˆˆ˜™™™™ˆxwfffVUED$#™ˆˆˆˆˆˆ™™™™™™ˆˆˆˆˆ™™™ ˆxwfffVUED43™‰ˆˆˆˆˆ˜™™™™™‰ˆˆˆˆ˜™™ ˆxwfVeVUED43#‘™™ˆˆˆˆˆˆ™™™™™™ˆˆˆˆˆ™™ xwffUUUED43#"""‘™™™ˆˆˆˆˆˆ™™™™™‰ˆˆˆˆ˜™ xwffUUTED43#""""""™™™™‰ˆˆˆˆˆ˜™™™™™ˆˆˆˆˆ™ ™wgfUUD4D43#""""""""™™™™™ˆˆˆˆˆˆ™™™™™‰ˆˆˆˆ˜ ™xgfUUDDD$33"""""""‚˜™™™™™ˆˆˆˆˆ˜™™™™ˆhfUUDD3C33"""""""‚ˆ™™™™™‰ˆ™ˆxgUUDD33#3"""""""ˆxVD#™ˆxwVUDD33""!""""""""""™ˆxwWUDD33""!"""""€ˆwgfED33""€ˆwgfFD43""€wgfVU43#"wwfVUE4#"fVUED$"fVUED43#!ĀĖ Ā Ā ĖĖ ĖĖ ĖĀ ĀĖĀ ĀĀĖ ÆĖ\EĖ4Ã,Â""Â Ā ĀĀĖĀĖĖĀĖ Ā ĀŽĘĖ Ā   ĖŠ Ė ĖŠ ŠĀĖĀĀĖĖĀ ĀĖ ĀŽĘĖ ĀŽĘĀĖĖÃ,Â""ĀĖ Ā ĀĖŠĀŽŠĖ ĀŽĘĀ ĀĖŽĀŽĖĀ Ā ĖĖĖ ĖĖĖĀĖĖ ĖŠĀĖĖĀŽĖĀ ĀĀŽĖĀ Ā ĖŠÃĖĖ"ĀŽĘĀ ĀĀĖĖĀĖ ĀŽĖĀ ĀĀ ĀŽĘĀĖŠĀ Ā ĖŠĘĖ ĖŠĖĀŽĖĖĀŽĘĀĖŠĀ ĀĀĖŠĀĖŽĖÃŽĘĀ ĀĀ Ā ĖŠĀŽ ĀĖŠĀĖŽ  ĀĖŽ Ė ĀĖĖĀ ĖĖ  ŽĖĖ ĖĀ ĘĘĖĀ Ā Ė ĀĖŽ Ė ĀŽ ĘĖà ÂĀĖŽ ĖŽĖĀ  Ė ĀŽĘĀ  Š Š  ŠŠ  ŠŠ ŠŠ Š    Š   Š  Š Š    Š    Š Š Š  Š      ŋ-- title: test 20 -- author: evilpaul, @evilpaul_atebit@icosahedron.website -- desc: Hey! Did you know there's a depth buffer? -- license: MIT License (change this to your license of choice) -- version: 0.1 -- script: lua mPi=math.pi mTwoPi=mPi*2 mSin=math.sin mCos=math.cos mRandom=math.random mFRandom=function(min,max) return min+mRandom()*(max-min) end mLerp=function(a,min,max) return min+a*(max-min) end points={ {-1,-1,1}, {1,-1,1}, {1,1,1}, {-1,1,1}, {-1,-1,-1}, {1,-1,-1}, {1,1,-1}, {-1,1,-1}, } quads={ {1,2,3,4}, {5,6,7,8}, {1,2,6,5}, {4,3,7,8}, {2,3,7,6}, {1,4,8,5}, } ts=tstamp() function TIC() cls(0) local t=time()/1000/2 local tm=t//1 local ta=t%1 math.randomseed(ts+tm) math.randomseed(mRandom()*12345) local rxBase=mFRandom(0,mTwoPi) local ryBase=mFRandom(0,mTwoPi) local rxSpin=mFRandom(-2,2) local rySpin=mFRandom(-2,2) local rxSpread=mFRandom(-2,2) local rySpread=mFRandom(-2,2) local repeats=8 for i=0,repeats-1 do for y=0,63 do for x=0,63 do local addr=0x4000+((x//8+(y//8<<4))<<5) --local c=i+1 local c=((x+y)>>3)%2+i+1 poke4(addr*2+x%8+(y%8<<3),c) end end local ia=i/(repeats-1) local rx=ia*rxSpread*ta+rxBase+rxSpin*ta^.5 local ry=ia*rySpread*ta+ryBase+rySpin*ta^.5 local txPoints={} local sy=mSin(ry) local cy=mCos(ry) local sx=mSin(rx) local cx=mCos(rx) for i,point in ipairs(points) do local x1=point[1] local y1=point[2] local z1=point[3] local x2=cy*x1-sy*z1 local y2=y1 local z2=sy*x1+cy*z1 local x3=x2 local y3=cx*y2+sx*z2 local z3=-sx*y2+cx*z2 local z=z3+3 local zm=z*.01 local x=120+x3/zm local y=68+y3/zm txPoints[i]={x,y,z} end for _,quad in ipairs(quads) do local v1=txPoints[quad[1]] local v2=txPoints[quad[2]] local v3=txPoints[quad[3]] local v4=txPoints[quad[4]] ttri( v1[1],v1[2], v2[1],v2[2], v3[1],v3[2], 0,0, 64,0, 64,64, false, 99, v1[3],v2[3],v3[3] ) ttri( v3[1],v3[2], v4[1],v4[2], v1[1],v1[2], 64,64, 0,64, 0,0, false, 99, v3[3],v4[3],v1[3] ) end end local txt="BeLiEvE iN tHe DePtH bUfFeR!" print(txt,1,130+1,10) print(txt,1,130,12) end