0,]']u<e@ua(iL0},PisVl3>>>?  89;=>????????????????????????? '@  @@@  @@@  @@@  @@ @ @ @       Ta"P0  @   @   @     @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @             @@  @@  @@  @@                                        Aa     a        a   TacTaTaVaWa[aYaWaYaTb\aVaWaVa_aaTaTaVaWa[a\a^a\a[b a aaAYaaYaa[aa\aa[aaYaaWaaVaaYaaYaa[aa\aa[aa_aaVa_aa `a `a `a `a `a `a`a`a `a `a `a `a[aa_aaVa[a_aVa_a[aTaAVaAWaAYaA[aA\aA^aATaaTaVaWaYaWaVaWaVaTaVaTa^aaTa[baTaVaWaYaWaVaWaVaTaVaTa^aa[bYaa[aa\aa^aaTaVaWaYaWaVaWaVaTb[aa\aa[aaVa_ba a a a aaa aa aa aaaaaaa a a a aaa aa ea aaaaaaa A AAaa a a aa     a a a aaa aa aa aaaaaaaA A AAA A A AAaaa a aa a a aaa aa aa aa aa aa aa aa aTaPVaPWaPYaP\aP^aPYaPA`A`A`AAAA```A`A`A`````````aaaaaa a a a a a a a a a a a aaaaaaa````````````ABAB%&E&6%&E&6FGWXHXÉXWXHXÉXXXYIYWXHXÉXÃ?       D3""""""D3""""""3"""""3"""""0#""""@4# ""@4# ""D3""""""D3""""""D3""""""3"""""3"""""0#""""@4# ""@4# ""D3""""""3DDDDDDD"3DDDDDDD"DDDDDDD"DDDDDDD"@DDDDDD$0CDD@D$0CD@D$3DDDDDDDD"3DDDDDDD"3DDDDDDD"DDDDDDD"DDDDDDD"@DDDDDD$0CDD@D$0CD@D$3DDDDDDDD"""""""""""""""""3"""""3"""""""""0#"""""""" """" "" "" """""""""""""""""""""3"""""3"""""""""0#"""""""" """" "" "" """""3333""3333""3333""33 2303# 23#2303# 2303#"333333333333""3333""3333""33 2303# 23#2303# 2303#"33333333DDDD""DDDDDDD""DDDDDDDD" "DD BD@D$ BD BDDD$ BD@D$""""""DD"DDDD""DDDDDDD""DDDDDDDD""DD BD@D$ BD BDDD$ BD@D$""""""DD""DDDDDDDD""DD"""DD""DD""""DD""DDDDDDDD" BDDDDDDD$ BD BDD$ BDDDDDDD$DD""DDDDDDDD""DD"""DD""DD""""DD""DDDDDDDD" BDDDDDDD$ BD BDD$ BDDDDDDD$DD""3333333""33"3D""3333""333333" 233333# 23 23# 233333#"33333333""3333333""33"3D""3333""333333" 233333# 23 23# 233333#"33333333""""""""""""""""""""""""""" """"" "" "" """"""""""""""""""""""""""""""""""""""" """"" "" "" """""""""""""                    UfwwwwwwUfwwwwwwfwwwwwfwwwww`vwwwwPevpwwPevpwwUfwwwwwwUfwwwwwwUfwwwwwwfwwwwwfwwwww`vwwwwPevpwwPevpwwUfwwwwwwfUUUUUUUwfUUUUUUUwUUUUUUUwUUUUUUUwPUUUUUUu`VUUPUu`VUPUufUUUUUUUUwfUUUUUUUwfUUUUUUUwUUUUUUUwUUUUUUUwPUUUUUUu`VUUPUu`VUPUufUUUUUUUUwwwwwwwwwwwwwwwwwfwwwwwfwwwwwwwww`vwwwwwwwwpwwwwpwwpwwpwwwwwwwwwwwwwwwwwwwwwfwwwwwfwwwwwwwww`vwwwwwwwwpwwwwpwwpwwpwwwwwffffwwfffUwwffffwwffpgf`fv pgfvgf`fvpgf`fvwffffffffffffwwfffUwwffffwwffpgf`fvpgfvgf`fvpgf`fvwffffffffUUUUwwUUUUUUUwwUUUUUUUUwwUUpWUPUupWUpWUUUupWUPUuwwwwwwUUwUUUUwwUUUUUUUwwUUUUUUUUwwUUpWUPUupWUpWUUUupWUPUuwwwwwwUUwwUUUUUUUUwwUUwwwUUwwUUwwwwUUwwUUUUUUUUwpWUUUUUUUupWUpWUUupWUUUUUUUuUUwwUUUUUUUUwwUUwwwUUwwUUwwwwUUwwUUUUUUUUwpWUUUUUUUupWUpWUUupWUUUUUUUuUUwwfffffffwwffwfUwwffffwwffffffwpgfffffvpgfpgfvpgfffffvwffffffffwwfffffffwwffwfUwwffffwwffffffwpgfffffvpgfpgfvpgfffffvwffffffffwwwwwwwwwwwwwwwwwwwwwwwwwwwpwwwwwpwwpwwpwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwpwwwwwpwwpwwpwwwwwwwwwwwww         -- title: draconus intro music -- author: atesin: atesin@gmail.com -- desc: my pitiful first cart trying to adapt draconus music here -- site: http://192.168.0.1/ -- license: wtfpl + please mention me on credits -- version: 0.1 -- script: lua musicTime=0 charAngle=0 snowsBg={} snowsFg={} -- outside frame = 240x112 -- inside frame (clip) = 16,8,208,96 -- room for text = the bottom 2 lines function BOOT() map(0,0) end function TIC() if musicTime==0 then music(0,0,0,false) elseif musicTime==4800 then -- time=beats/bpm music(1,0,0,0,false) -- beats/frame=rows/4 elseif musicTime==9408 then -- 4800+4608 music(2,0,0,0,false) end musicTime=musicTime<10725 and musicTime+1 or 0 poke(0x3FFB,0) -- hide mouse pointer clip(16,8,208,102) -- inside frame for carrousel cls() letsSnow() carrousel() credits() end function carrousel() --[[ the idea is: imagine you put "DRACONUS" characters (sprites) on a semi-circle at certain angles (2nd parameter), so that in front view they appear to be equidistant, then you spin the semi-circle 2 loops by increasing angle and projecting with cosin --]] -- spr angle printChar(0,math.pi) printChar(1,2.366399280279431931258549672097) printChar(2,2.013707370868535553074981038912) printChar(3,1.7141438957002619768263959717964) printChar(4,1.4274487578895312616362474114831) printChar(5,1.1278852827212576853876623443675) printChar(6,0.77519337331036130720409371118248) printChar(7,0) end function printChar(cx,ang) cxi=cx*2+464 incr=charAngle<12.56637061435917295385057353311 and charAngle or 0 cxx=math.cos(ang+incr)*92+110 for cy=0,2 do -- a row of same char with different color -- id x y - - - - - - spr(cxi+(cy*16),cxx,26*cy+22,0,2,0,0,2,1) end charAngle=charAngle<18.8495559215387594307758602996772 and charAngle+0.004 or 0 end function letsSnow() if musicTime%10==0 then -- new snowflakes {x,y} table.insert(snowsBg,{math.random(16,224),7}) table.insert(snowsFg,{math.random(16,224),7}) end i=1 -- background snow, darker and slower while i<#snowsBg do snow=snowsBg[i] if snow[2]>110 then table.remove(snowsBg,i) -- bottom reached -- the array already shifted to left so no incr else snow[2]=snow[2]+0.2 -- fall pix(snow[1],snow[2],14) -- draw i=i+1 end end i=1 -- foreground snow, brighter and faster while i<#snowsFg do snow=snowsFg[i] if snow[2]>110 then table.remove(snowsFg,i) -- bottom reached else snow[2]=snow[2]+0.5 -- fall pix(snow[1],snow[2],13) -- draw i=i+1 end end end -- more global variables just for next function credi=-1 msg={ {' ..DRACONUS..' ,'STEREO BY T.M.L.'}, {' COPYRIGHT 1988' ,' COGNITO' }, {' PROGRAMMING BY' ,' IAN COPELAND' }, {' GRAPHICS AND' ,' GAME DESIGN BY' }, {' MICHAEL OWENS' ,'' }, {' CO.ORDINATOR' ,' BRIAN JOBLING' }, {'MUSIC AND FX BY' ,' ADAM GILMORE' }, {'ORIGINAL GAME BY',' KEVIN FRANKLIN' }, {'TIC-80 INTRO BY' ,'ATESIN@GMAIL.COM'}, {' ..........' ,'' } } function credits() -- 10 messages, 4 secs each, in ticks (tps) credi=credi<2399 and credi+1 or 0 frame=credi%240 -- as in "movieclip frame" if frame>55 and frame<185 then return end clip(0,120,240,16) -- bottom text viewport cls() print(msg[(credi//240)+1][1],72,122,13,true) print(msg[(credi//240)+1][2],72,130,13,true) -- fade in/out if frame<55 then -- tile size xy alpha map(30,frame//5*2,30,2,0,120,7) elseif frame>185 then map(30,(240-frame)//5*2,30,2,0,120,7) end end