0 ╠>SО}WЪмu╖Пp8╥d%qy)6o;]иA╕ЖsОВТТТ■╟бVl├3UW lЪЪЪЪЪЪЪЪ2Tv≤╨эЧОм╚┴gE#2Tv≤╨эЧ2Tv≤╨эЧ0ev┬┬┬gE3"""CvиОCe≈╨М1√К/S≈з1e╗ННННПОНН╟╩═ ░ `лллллллллллалааааллллллллаааалллл ллюалю лаюаллаллаалаааааааллалю ллюллллллаллаааааааллаааааалаааалалааллл юю юлю ю ю ллю ллюллллюл юююююлюююююллюллюллю ю ю ю ю ю ю ю юл л лл лл лл лл ююююююлюлюююююююююлююююллллааааллллллллаааааааааллл лю л ллл ллл лл ллааааалааааааааааааааааааааааааааааааллллллллллааллю ю ллллллаалалааааааааааааллаалалааююлюююююлююююлюлюююлл аааааааааааааааааааааааааллллааааллллллаааалааллла аааалаааюллааааааллюлллллллааааааааллл лаалаллллллллллааааааллллаллллллаллла  ю ю алллллллллллллааааллллааааллллллллллллааааллллаааалю ю ююлллааааааллаалалаааалллллллаааллаааллаалаалаалллаллаааааааааалллаллаааааалллаллллллллаааааллллллалллаалаааааааллаааааааааааааааллллаллллааааааллаааааааааааааллаллаллаллаллаллаллаллаллаллаллаллаллаллаллаллааллллалаааллалааааааллллаааааааллллаллааааааааалааааааалаааааааааллллллллллаааааааааллалааааааааааааааааллалаааалаллллллаалаллаааллллалаллааааллллллллллллалаалллллллаллллааалааааллллааллаааллааалаллааалллааллалллаалллааллалллаааллллллллллаааааааллллаааааааллллаааааааллллаааааааллллллллллллллллаааааалллл ю юалллллллллалалаааллллллллллллллллаллааалалллалалаааааааллллаллааалаааааааааааааалаллаллалллюлл лллллюююллллллллллл ю юю лллю люю юю ю ююю лю люлл ю ююлю ююаллаааллллааллаллаааааллю люю ююююл юл юююл юл юююл ююл юююю ююлл ллю юююю ю ююлл ю юлю л юю ю юю юю ю ю ю ю ююлю л юллю ю ю ю юю ю ю ююлл ю ю ю ю юю ю юю ллю,║ ю║ лллл ллю,║ ю║ лллл ллю,║ ю║ лллл юаллю,║ ю║ лллл юаллю,║ ю║ лллл юаллю,║ ю║ лл лл ююллю ю юааааааллю ю аа аааааллю,║ ю║ ллалл ллю,║ ю║ ллаллллю,║ ю║ ллаллюаллю,║ ю║ ллаллюаллю,║ ю║ ллаллюаллю,║ ю║ ллаллюаю ю юю юю юю ююю ююю ююююю юююю юююю ююю Q@QPsssssssssssssssssssssssssssPa`PQFFFrpPcQ88880******&(PQPQQQFFFferprPe88888800 )PQFFFB8ferprPecd#t0000)FFFCD rprPe││<88─! cdfe)8888FFF**fe8rpzzzzrPe │!f%fQQQQPPQPQQd`a)cdFFF)`a880 @rpz88zrPe888w266667cd!QQdQQcPQQ`af)FFF)f`a#@prpz88zrPecdsss!2333337UfQQQQPQ&''''(`a888)FFF)&'''( @prpzzzzrPdcQPd8!cd fQdQdd`acd)FFF)8U)U 8`@pqqqqqprPecPPdcd! QQQ0`a)FF)Cf$``pssssspPecQQdtU QQfe88)FFU)UUCf ``prpPePQ8rd Qw888B`acd)Fe)88fc`8`pPeSrQQQPPPdcPQww88888CD`a)Fe)fef08`prPTrQQPdcQwwwwCD&''''( )Fe)`af@prPQPQcvcd*******e)0e)`af`qqqqqqqqqqqqqqqqqqqqqqqqqqqqQP!!QQd Aqqqqqqqqqqqqqq@QPe!!@A$% Pe!!`a Pe!!`az$%Pe!!UUUUc`azzPe!!fH He`azzzPe!!f% "e`azzzzzcPe!!f#H He`cdPecdPd!!Pe!!Pd!!Pecd!!PefVVePefePcdPefQPvPPPPefQPcdPPPPefQPPPPPefQPcdPPPPefQPPPPPefQPPPPPefQPcdPPPPefQPPPPPefQPPPPPefQPcdPPPPefQPPPPPefQPcdPPPPefQPPPPPecdwePPPeuwePPPPPPPPPPePePePePePePdPePePePePPPPPePePePePePePdPePePePePPPPPePePePePePePdPePePePePPPPPePePePePePePdPePePePePPРРРРРРРРРРРРРРРРРРРPРРРРРРРРPРРРРппРРРРPeРРРРБРРРРРPeРРРРeяРРРРPeРРРРпАРРРРPeРРРРБРРРРРPePePdPPePPePe!!!!!PePePePevPPeAPPePe | w }┤{┤x┤w┤x┤{┤}─  ╗╗ ╗ ╗ ╞ ╞ ╞ ╞╞ 2W5╩7n8╨9H9╬8n9э:D;╦=>>╧>?????????????????Z"W#╩%n&©'O(╬)m*з,F-╡/2///////////////////j]╞[йZжXДWТVU(T-T,VH[c^q_p_________________TPVgik m n ooooooooooooooooooooooooo#X$X%X&X(X*X,X.X////////////////////// ZJ*ЖФжф╕{ю─_─_─_──_─_──_─_─_──_─_──_─_─_──_─_──_─_─_──_─_──_─_─_──_─_──_─_─_──_─_──_─_3 {!!!!╧?юлюлюллю лю лю юл юл юл юю юю ююлллллллллллллллллллллллллллллллллллллллллллллюлллллллллллллллллллллллллллллллллллллллллюююю ююлллллллллллллллллллллллллллллллллллллллллллл лллллллллллллллллллллллллллллллллллллллллл лл ллл ллл ллл ллл ллл ллл ллл ллл ллл ллл люлл ллл ллл ллл ллл ллл ллл ллл ллл ллл ллю юлююлююлююлююлююлююлююлююлююлююлююлююлююлююлююлююлююлююлююлююлюлюю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю юю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ююююююююююююююююююююю юююююююююююююю ююююююююююююююл ю юю юю л ю юююю л ю юю ююююююлю ю ююююююююл ю ююююю юююююл л л ююююлю ююююл ю ююююю юююююл л л ююююлю ююююл ю ююююю юююююл л л ююююлю ююююл ю ллллллллллю ллллюлллллллл юл юлю ю ю л лю ю юю юлллллллл юл ллюю юлллллллл юлю лю юл юл л ллюлллллллл ю юю лллллллллл юллллллллллю ллллллллллллюл ллллллллл юлююлююлю л юлл ллл лл л л л юлююлюл л л лю ю ю ююююююл ю ю ююююююю юю лллллюлюю лю ююююллллл лл юл ллл люлю л юлюлюлл лю ю ю лю л ю ю л ююю ю ю юл люллллллллллллллю юююл люлюл ллллллллллллл л ю л люююююююююююююл лл лю люлюл ллю юю юлююююл ю люл лл л ллл л юлюлюллллл ллллл лю ю ю лл ю ю ю юююлллллллю ю лл юл юлл юлю ллллллл л ллю ллю л ллл лл лллллл юююлюлю лю ю лл ю ю л лю Pю ю ю ю ю лл юю ю ююююю ю ю юл ю\юл л л л ю юлл люлюл ю лллю ю ю ю ю л ю ю ю ю ю ллю юллллллллллллллю ю ююююю ю ю ллю ю юл ллллллллллллл ю ю юлю ю юл л л л юююююююююююююю ю ллюю юлл люлюл юлл ю ллллю лллю ллю ллю ю ю ю л ю ю ю ю ю ю ю ю ю ллллю л ю ю ююю ююююююю ююю ю юл юю юлюлю ю юлюл л л юл юлю лю ю юю лю юлл люл ю ю ллю ю л ю ю ю ю л юю ююл `юл ю юю юл ю ю ю юю ю юю ююлл юлл ююю ллллллллллллллллллллллллллллллллллллюю ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллююл ю ллллллллллллллллллллллллллллллллллллл юлллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл лл ллл ллл ллл ллл ллл ллл ллл ллл ллю ллл ллл ллл ллл ллл ллл ллл ллл ллл ллл ллл ллл ллл ллл ллл ллююлююлююлююлююлююлююлююлююлюллюлююлююлююлююлююлююлююлююлююлююлююлююлююлююлюл ю ю ю ю ю ю ю ю ю ю лю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю л ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ю ююююююююю юююююююююююююююю Й&-- title: Space Boi -- author: Torres -- desc: tile-set inspired by Kenny Repac 1-bit -- license: MIT License -- version: 0.4 -- script: lua --Contants W = 240 H = 128 RND = math.random COS = math.cos SEN = math.sin -- Table Functions ------------------------------------------------ ADD = function(tab,data)--(x,y,mx,my,f,s,ss,lv) tab[#tab+1]=data end DEL=function(nod,id)nod[id]=nil end DRW=function(nod) spr(nod.s,nod.x%W,nod.y%H,0,1,nod.f)end UPD=function(table) for id,nod in pairs(table)do nod.x=nod.x+nod.mx nod.y=nod.y+nod.my if nod.ss ~= nil then nod.s=nod.s+nod.ss end nod.lv=nod.lv-1 DRW(nod) moveAndSlide(nod) if nod.lv<0 then DEL(table,id)end if nod.x//W~=p.x//W or nod.y//H~=p.y//H then DEL(table,id) end end end------------------------------------------------------- -- --Objects g={-- --} j=1, c=pmem(3), fuel=40, updateFuel=function(data) pmem(0,data) end, } p={ -- -- } s = 352, --|Sprite f = 0, --|Flip Sprite x = 0, --|Location in X y = 0, --|Location in Y mx= 0, --|Momentum in x my= 0, --|Momentum in y lv= true, --|is alive? ld= false,--|is in a ladder --= Coyote Time.. Bj= 6, --|Buffer Jump Bf= 6, --|Buffer floor --= jmp= function(p,j) p.Bj=btnp(4) and 0 or p.Bj+1 p.Bf=(DW(p)or DW(p,1)) and 0 or p.Bf+1 --Jump if (p.Bj<5 and p.Bf<5)and(p.Bj==0 or p.Bf==0) then sfx(2) p.my=-j end --buffer jump if p.my<0 and not btn(4) then p.my=p.my*0.9 end -- if U dont have fuel, fall. if (g.fuel-p.Bf)<0 then p.my=p.my*0.9 end if p.Bj==0 and p.Bf>10 and p.Bf<1000 and g.fuel>p.Bf then p.Bf=p.Bf+10 sfx(2) p.my=-j end end, mov= function(p) if btn(0) then p.ld=true end if p.ld then p.my=btn(1)and .5 or btn(0)and-.5 or 0 p.mx=btn(2)and-.5 or btn(3)and .5 or 0 p.f=p.mx<0 and 1 or p.mx>0 and 0 or p.f spr(p.s+blip(2,2)+6,p.x%W,(p.y)%H,0,1,0,0) moveAndSlide(p) if btnp(4) then p.ld=false end else p:idl(p)end end, idl= function() p.my=p.my>1.5 and 1.5 or p.my<-1.5 and -1.5 or -->top Speed p.my>0 and p.my+0.15 or p.my<=0 and p.my+0.01-->Do Gravity p.mx=btn(2)and-1 or btn(3)and 1 or p.mx*0.85 p.f=p.mx<0 and 1 or p.mx>0 and 0 or p.f p:jmp(g.j) p:drw(p) moveAndSlide(p) end, drw= function() local A=p.my>0.5 and 2 or --Up p.my<-0.4 and 4 or --Down btn(2)and 1 or btn(3)and 1 or--L/R 0 --Idle local B=btn(0) and 16 or 0 spr(p.s+A+B+blip(2,2),p.x%W,(p.y)%(H),0,1,p.f,0) end, ply= function() if ON(p,2)then p:mov(p) else p:idl(p) p.ld=false end end, } --Object particles bulets sh={ -- -- } s = 288, --|Sprites f = 0, --|frumbo sp= 1.5, --|shot speed t = {}, --|Table of bullets --= upd= function() for id,nod in pairs(sh.t) do DRW(nod) nod.x= nod.x+nod.mx nod.y= nod.y+nod.my --Destroid if IN(nod)then spr(sh.s+1,-2+nod.x%W,(nod.y)%H, 0,1,0,0) --Destructable Block if IN(nod,5)then brk_Wall(nod)end sh.t[id]=nil sfx(1)end --Out if nod.x//W~=p.x//W or nod.y//H~=p.y//H then sh.t[id]=nil end end end, ply= function() local my=btn(0)and-1 or 0 local mx=btn(0)and 0 or p.f==0 and 1.5 or p.f==1 and-1.5 or 0 local desp=p.f==0 and 4 or p.f==1 and-4 or 0 if not btn(1)and btnp(5,15,15)then ADD(sh.t,{x=p.x+(mx*2)+desp,y=p.y, mx=mx,my=my, f=p.f,lv=20,a=1, s=288}) sfx(0)end sh:upd(sh) end, } m={---- } rpg={}, ply=function() if btn(1)and btnp(5)then if p.f==0 then ADD(m.rpg,{x=p.x+7, y=p.y,mx=1.5,f=p.f, my=0,s=294,a=2,lv=100})end if p.f==1 then ADD(m.rpg,{x=p.x-1, y=p.y,mx=-1.5,f=p.f, my=0,s=294,a=2,lv=100})end sfx(63) end UPD(m.rpg) end, } -- f={---- } rpg={}, ply=function() if btn(6)then if p.f==0 then ADD(f.rpg,{x=p.x+5, y=p.y,mx=1.5,f=p.f, my=-0.2,s=384,ss=0.5,a=3,lv=14})end if p.f==1 then ADD(f.rpg,{x=p.x-5, y=p.y,mx=-1.5,f=p.f, my=-0.2,s=384,ss=0.5,a=2,lv=14})end end if blip(0.5,2)==1 and btn(6)then sfx(17)end UPD(f.rpg) end, } -- l={---- } rpg={}, ply=function() if btn(7)then if p.f==0 then line((p.x+8)%W,(p.y+4)%H,((p.x+8)%W)+200,((p.y+4)%H)+SEN(time()//10),12)end if p.f==1 then line((p.x-2)%W,(p.y+4)%H,((p.x-8)%W)-200,((p.y+4)%H)+SEN(time()//10),12)end end if blip(0.5,2)==1 and btn(7)then sfx(17,8)end UPD(f.rpg) end, } ---- star={} ---- part={} --Particles Exp ={ int=function() for i=1,400 do ADD(part,{x=p.x,y=p.y, mx=(20-RND(20))/10,my=(20-RND(20))/10, lv=RND(100),r=RND(20),s=384,a=1}) end end, upd=function() for id,nod in pairs(part)do nod.x=nod.x+nod.mx*math.cos(nod.r) nod.y=nod.y+nod.my*math.sin(nod.r) DRW(nod,id) nod.lv=nod.lv-.01 if nod.lv<0 then DEL(nod,id) reset() end --is OUT if nod.x//W~=p.x//W or nod.y//H~=p.y//H then part[id]=nil end end end, lod=function(p) if #part==0 then Exp:int() end Exp:upd() end, } -- function INT() music(0) --ADD(star,{x=p.x,y=p.y+10,mx=1,my=1,lv=8,f=0,s=10},5) g:updateFuel() p.x=pmem(1) p.y=pmem(2) g.coin=pmem(3) if p.x==0 and p.y==0 then p.x=96 p.y=24 end pmem(0,20) end INT() -- function SCN(row) poke(0x03FC0,p.y/8) end -- function TIC() cls(0) --b:ply() map((p.x//W)*30, (p.y//H)*16, 30,16,0,0,1,1,remap) check_point(p) --if blip(1,7)==1 then ADD(star,{x=-20+RND(250),y=-RND(40),mx=0.2,my=.9,lv=150,f=0,s=296},10)end --UPD(star) if p.lv then p:ply() mov_pad(p) jup_pad(p) ded_blk(p) pik_orb(p) --weapon sh:ply()--orb m:ply()--missil f:ply()--fire l:ply()--lasser else Exp:lod() end end -- function BDR() --GUI: rect(0,128,W,8,1) --fuel local fuel=math.ceil((g.fuel-p.Bf)//8) print("[",0,129,12) print("]",4+fuel,129,12) rect(3,129,fuel,5,12) --money print("$="..g.c,200,129,12) --life.. spr(256+blip(2,2)+(2*blip(12,3)),W/2,128,1) end --Functions (Tools)-------------------------------------------- function blip(lag,fps)return(time()//(lag*100))%fps end function lerp(a,b)return b>a and b-.5 or bM and m or v end function solid(x,y,f)return fget(mget(x//8,y//8),f)end function pikup(x,y,t)return fget(mget(x//8,y//8),t)end mov_pad=function(p) local Right=51 if mget((p.x)//8, (p.y+8)//8)==Right or mget((p.x+7)//8,(p.y+8)//8)==Right then p.x=p.x-0.5 end local Left=54 if mget((p.x)//8, (p.y+8)//8)==Left or mget((p.x+7)//8,(p.y+8)//8)==Left then p.x=p.x+0.5 end end -- jup_pad=function(p) if(IN(p,2)and IN(p,3))then p.my=-4 end end --CheckPoint-------------------------------------------- function set_star_point(p) sfx(5) pmem(1,(p.x//8)*8) pmem(2,(p.y//8)*8) end function check_point(p) local chk=10 if mget((p.x+6)//8,(p.y-6)//8)==chk or mget((p.x-4)//8,(p.y-6)//8)==chk or mget((p.x)//8,(p.y-6)//8)==chk then if btnp(0,200,200) then print("Save...",(-8+p.x)%W,p.y%H-16,12) set_star_point(p) pmem(3,g.c) else spr(291+blip(2,2),p.x%W,p.y%H-16,1,1,0) end end end------------------------------------------------------- -- ded_blk=function(p) if IN(p,4)then sfx(4) p.lv=false end end -- pik_orb=function(p) local item=56 if mget(p.x//8,p.y//8)==item then sfx(3) g.c=g.c+1 mset(p.x//8,p.y//8,0) elseif mget(p.x//8,(p.y+7)//8)==item then sfx(3) g.c=g.c+1 mset(p.x//8,(p.y+7)//8,0) elseif mget((p.x+7)//8,p.y//8)==item then sfx(3) g.c=g.c+1 mset((p.x+7)//8,p.y//8,0) elseif mget((p.x+7)//8,(p.y+7)//8)==item then sfx(3) g.c=g.c+1 mset((p.x+7)//8,(p.y+7)//8,0)end end -- brk_Wall=function(e) mset((e.x+3)//8,(e.y+3)//8,mget((e.x+3)//8,(e.y+3)//8)+1) end -- -- Collitions System --------------------------------------- UP=function(p,f)return p.my<0 and(solid(p.x,p.y-1,f)or solid(p.x+7,p.y-1,f))or false end DW=function(p,f)return p.my>0 and(solid(p.x,p.y+7+p.my,f)or solid(p.x+7,p.y+7+p.my,f))or false end LF=function(p,f)return p.mx<0 and(solid(p.x-1,p.y,f)or solid(p.x-1,p.y+7,f))or false end RG=function(p,f)return p.mx>0 and(solid(p.x+8,p.y,f)or solid(p.x+8,p.y+7,f))or false end IN=function(p,f)return solid(p.x+3,p.y+3,f)or false end ON=function(p,f)return(solid(p.x,p.y,f)or solid(p.x+7,p.y,f)or solid(p.x,p.y+6,f)or solid(p.x+7,p.y+6,f))or false end-- PK=function(p,t)return(pikup(p.x,p.y,t)or pikup(p.x+7,p.y,t)or pikup(p.x,p.y+6,t)or pikup(p.x+7,p.y+6,t))or false end-- moveAndSlide=function(p,f) if ON(p)then --> don't stuck there p.x=LF(p)and p.x+2 or RG(p)and p.x-2 or p.x p.y=DW(p)and p.y-2 or UP(p)and p.y+2 or p.y end -- p.mx=RG(p)and 0 or p.mx p.mx=LF(p)and 0 or p.mx p.my=UP(p)and 0 or p.my p.my=DW(p)and 0 or p.my -- p.my=(DW(p,1)and not ON(p,1))and 0 or p.my -- Global loop. p.x=loop(0,p.x,(W*8)) p.y=loop(0,p.y,(H*8)) --Do... p.x=p.x+p.mx p.y=p.y+p.my end---------------------------------------------------- --Tiles Animation --------------------------------------- function remap(tile,x,y) local out,flip,rota=tile,0,0 if tile==51 then out=tile+blip(.35,4)end if tile==54 then out=tile-blip(.35,4)end if tile==60 then out=tile+blip(3,3)end if tile==56 then out=tile+blip(2,4)end if tile==10 then out=tile+blip(2,4)end if tile==70 then out=tile+blip(1,10)end return out,flip,rota end