12 Commits

Author SHA1 Message Date
9afc51f9a0 - Ja funciona en la ultima versió de mini (v0.9.95d) 2024-11-24 20:21:14 +01:00
75a1fb95d9 - [NEW] F1 reduix el zoom de la finestra fins a 1x.
- [NEW] F2 augmenta el zoom de la finestra fins al màxim que cap a la pantalla.
2023-10-09 11:44:23 +02:00
17654b2c82 - Modificat per a funcionar en l'ultima versió de mini (v0.9.80) 2023-08-31 23:43:56 +02:00
a3ca7bec86 - Ara es pot usar el gamepad per a tot 2023-02-10 19:06:26 +01:00
5c3e01d3e4 Batman position gets reseted on new game 2023-01-21 17:22:37 +01:00
9a4f41541f - Ignore binaries in folder 2023-01-21 14:32:08 +01:00
3898289f57 - Now Up and Jump can be defined as different keys/buttons. 2023-01-21 14:29:50 +01:00
33af343c80 - version change in Info.plist
- ESC exits from keys or pad redefine state.
2023-01-21 14:06:57 +01:00
dba989ca24 - [FIX] Gamepad redefine was not working correctly
- [FIX] ESC can't be reassigned
- [NEW] cursor keys, space, cursor pad and button A can always be used to move around menus.
2023-01-20 20:08:10 +01:00
f7a5cd8ca4 - [FEAT] Redefine keys
- [FEAT] Redefine gamepad buttons
- [FEAT] Config storage
2023-01-20 19:58:15 +01:00
61a666cbb3 - Git should ignore exes and dlls 2023-01-20 19:27:46 +01:00
77c1da8649 - Reorder code
- [FIX] game_update() not being called
2023-01-20 19:26:57 +01:00
24 changed files with 391 additions and 155 deletions

6
.gitignore vendored
View File

@@ -1,2 +1,6 @@
.DS_STORE .DS_STORE
release/* release/*
*.exe
*.dll
mini
mini_debug

View File

@@ -23,11 +23,11 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>1.0.8</string> <string>1.1.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1.0.8</string> <string>1.1.0</string>
<key>CSResourcesFileMapped</key> <key>CSResourcesFileMapped</key>
<true/> <true/>
<key>LSMinimumSystemVersion</key> <key>LSMinimumSystemVersion</key>
@@ -41,4 +41,4 @@
<key>SUPublicDSAKeyFile</key> <key>SUPublicDSAKeyFile</key>
<string>dsa_pub.pem</string> <string>dsa_pub.pem</string>
</dict> </dict>
</plist> </plist>

View File

@@ -1,4 +1,6 @@
require "dead"
abad={x=40,y=24,flip=false,frame=1,wait=0,respawning=0,hab=10,vides=3,energia=40,falling=0,step=0, mustep=1,hurting=0,update=nil,jumpfwd=false,anim={0,1,0,2},bb={x=4,y=0,w=8,h=16},safe={hab=10,x=40,y=24}} abad={x=40,y=24,flip=false,frame=1,wait=0,respawning=0,hab=10,vides=3,energia=40,falling=0,step=0, mustep=1,hurting=0,update=nil,jumpfwd=false,anim={0,1,0,2},bb={x=4,y=0,w=8,h=16},safe={hab=10,x=40,y=24}}
function abad_nop() function abad_nop()
@@ -16,8 +18,8 @@ function abad:draw()
if abad.update==abad_state_stairs then if abad.update==abad_state_stairs then
flip=(((abad.x>>1)+(abad.y>>1))%2)==0 flip=(((abad.x>>1)+(abad.y>>1))%2)==0
end end
if (abad.respawning==0) or (flr(abad.respawning/15)%2==0) then if (abad.respawning==0) or (math.floor(abad.respawning/15)%2==0) then
sspr(abad.frame*16,0,16,16,abad.x,abad.y,16,16,flip) blit(abad.frame*16,0,16,16,abad.x,abad.y,16,16,flip)
end end
if abad.respawning > 0 then if abad.respawning > 0 then
@@ -87,7 +89,7 @@ function abad_state_normal()
elseif btn(keyLeft) or pad(btnLeft) then elseif btn(keyLeft) or pad(btnLeft) then
abad.update=abad_state_walking abad.update=abad_state_walking
abad.flip=true abad.flip=true
elseif btn(keyUp) or pad(btnUp) then elseif btn(keyJump) or pad(btnJump) then
abad.update=abad_state_jumping abad.update=abad_state_jumping
abad.step=0 abad.step=0
abad.jumpfwd=false abad.jumpfwd=false
@@ -185,7 +187,7 @@ function abad_state_walking()
abad_make_safe() abad_make_safe()
if btn(keyUp) or pad(btnUp) then if btn(keyJump) or pad(btnJump) then
abad.update=abad_state_jumping abad.update=abad_state_jumping
abad.step=0 abad.step=0
abad.jumpfwd=true abad.jumpfwd=true
@@ -224,8 +226,8 @@ function abad_state_jumping()
if abad.jumpfwd then abad_advance() end if abad.jumpfwd then abad_advance() end
--local xx=flr((abad.x+4)/8) --local xx=math.floor((abad.x+4)/8)
--local yy=flr(abad.y/8) --local yy=math.floor(abad.y/8)
--rect(xx*8,yy*8, (xx+2)*8,(yy+1)*8) --rect(xx*8,yy*8, (xx+2)*8,(yy+1)*8)
if abad.step<6 then if abad.step<6 then
if abad.y>0 then if abad.y>0 then
@@ -234,14 +236,14 @@ function abad_state_jumping()
if check_tile(abad.hab,abad.x+4,abad.y-2)==tiletype.switch then if check_tile(abad.hab,abad.x+4,abad.y-2)==tiletype.switch then
-- Executar el switch -- Executar el switch
local xx=min(11,max(0,flr((abad.x+4)/8))) local xx=math.min(11,math.max(0,math.floor((abad.x+4)/8)))
local yy=min(5,max(0,flr((abad.y-2)/8))) local yy=math.min(5,math.max(0,math.floor((abad.y-2)/8)))
switches.start(abad.hab,1+xx+yy*12) switches.start(abad.hab,1+xx+yy*12)
--cls(4) --cls(4)
elseif (abad.x+4)&7~=0 and check_tile(abad.hab,abad.x+12,abad.y-2)==tiletype.switch then elseif (abad.x+4)&7~=0 and check_tile(abad.hab,abad.x+12,abad.y-2)==tiletype.switch then
-- Executar el switch -- Executar el switch
local xx=min(11,max(0,flr((abad.x+12)/8))) local xx=math.min(11,math.max(0,math.floor((abad.x+12)/8)))
local yy=min(5,max(0,flr((abad.y-2)/8))) local yy=math.min(5,math.max(0,math.floor((abad.y-2)/8)))
switches.start(abad.hab,1+xx+yy*12) switches.start(abad.hab,1+xx+yy*12)
--cls(4) --cls(4)
else else
@@ -272,8 +274,8 @@ function abad_state_falling()
if abad.jumpfwd then abad_advance() end if abad.jumpfwd then abad_advance() end
local xx=flr((abad.x+4)/8) local xx=math.floor((abad.x+4)/8)
local yy=flr((abad.y+16)/8) local yy=math.floor((abad.y+16)/8)
if abad.y<32 then if abad.y<32 then
if (abad.y+16)&7==0 and (check_tile(abad.hab,abad.x+4,abad.y+16)>=tiletype.half or ((abad.x+4)&7~=0 and check_tile(abad.hab,abad.x+12,abad.y+16)>=tiletype.half)) then if (abad.y+16)&7==0 and (check_tile(abad.hab,abad.x+4,abad.y+16)>=tiletype.half or ((abad.x+4)&7~=0 and check_tile(abad.hab,abad.x+12,abad.y+16)>=tiletype.half)) then

View File

@@ -44,7 +44,7 @@ end
function bambolla.draw_normal() function bambolla.draw_normal()
if bambolla.enabled then if bambolla.enabled then
sspr(112,16,16,16,bambolla.x,bambolla.y,16,16) blit(112,16,16,16,bambolla.x,bambolla.y,16,16)
end end
end end
@@ -77,7 +77,7 @@ function bambolla.update_normal()
bambolla.reset() bambolla.reset()
end end
end end
bambolla.y=28-abs(sin(bambolla.x*0.1))*24 bambolla.y=28-math.abs(math.sin(bambolla.x*0.1))*24
if bambolla.hab==abad.hab and bambolla.y>25.2 then if bambolla.hab==abad.hab and bambolla.y>25.2 then
playsnd(audio_low) playsnd(audio_low)
end end

View File

@@ -6,6 +6,8 @@ function batman.init()
batman.draw=batman.draw batman.draw=batman.draw
local habs={5,9,46,36,18} local habs={5,9,46,36,18}
batman.hab=habs[1+rnd(#habs)] batman.hab=habs[1+rnd(#habs)]
batman.x=24
batman.y=24
end end
function batman.draw() function batman.draw()
@@ -13,7 +15,7 @@ function batman.draw()
if batman.update==batman.update_stairs then if batman.update==batman.update_stairs then
flip=(((batman.x>>1)+(batman.y>>1))%2)==0 flip=(((batman.x>>1)+(batman.y>>1))%2)==0
end end
sspr((batman.frame&7)*16,(batman.frame>>3)*16,16,16,batman.x,batman.y,16,16,flip) blit((batman.frame&7)*16,(batman.frame>>3)*16,16,16,batman.x,batman.y,16,16,flip)
end end
function batman.hit() function batman.hit()

View File

@@ -6,7 +6,7 @@ function bol.init()
end end
function bol.draw() function bol.draw()
sspr(112,88,16,8,bol.x,bol.y,16,8) blit(112,88,16,8,bol.x,bol.y,16,8)
end end
function bol.update() function bol.update()

View File

@@ -5,7 +5,7 @@ function caco.new(_hab,_x,_y,_flip)
end end
function caco:draw() function caco:draw()
if self.frame>0 then sspr((self.frame&7)*16,(self.frame>>3)*16,16,16,self.x,self.y,16,16,self.flip) end if self.frame>0 then blit((self.frame&7)*16,(self.frame>>3)*16,16,16,self.x,self.y,16,16,self.flip) end
end end
function caco:update_normal() function caco:update_normal()

View File

@@ -19,7 +19,7 @@ function elalien.draw()
if elalien.update==elalien.update_stairs then if elalien.update==elalien.update_stairs then
flip=(((elalien.x>>1)+(elalien.y>>1))%2)==0 flip=(((elalien.x>>1)+(elalien.y>>1))%2)==0
end end
sspr((elalien.frame&7)*16,(elalien.frame>>3)*16,16,16,elalien.x,elalien.y,16,16,flip) blit((elalien.frame&7)*16,(elalien.frame>>3)*16,16,16,elalien.x,elalien.y,16,16,flip)
end end
function elalien.hit() function elalien.hit()

View File

@@ -8,7 +8,7 @@ fade = {
init = function() init = function()
for i=1,15 do for i=1,15 do
local r,g,b=getcolor(i) local r,g,b=palcolor(i)
fade.pal[i]={r,g,b} fade.pal[i]={r,g,b}
end end
end, end,
@@ -48,9 +48,9 @@ fade = {
local v=fade.getstep(i,fade.step) local v=fade.getstep(i,fade.step)
--print(v) --print(v)
if v==16 then if v==16 then
setcolor(i,0,0,0) palcolor(i,0,0,0)
else else
setcolor(i,fade.pal[v][1],fade.pal[v][2],fade.pal[v][3]) palcolor(i,fade.pal[v][1],fade.pal[v][2],fade.pal[v][3])
end end
end end
fade.step=fade.step+1 fade.step=fade.step+1
@@ -70,7 +70,7 @@ fade = {
game_update=fade.update_fadein game_update=fade.update_fadein
fade.wait=0 fade.wait=0
fade.step=6 fade.step=6
for i=1,15 do setcolor(i,0,0,0) end for i=1,15 do palcolor(i,0,0,0) end
end, end,
update_fadein=function() update_fadein=function()
@@ -84,9 +84,9 @@ fade = {
local v=fade.getstep(i,fade.step) local v=fade.getstep(i,fade.step)
--print(v) --print(v)
if v==16 then if v==16 then
setcolor(i,0,0,0) palcolor(i,0,0,0)
else else
setcolor(i,fade.pal[v][1],fade.pal[v][2],fade.pal[v][3]) palcolor(i,fade.pal[v][1],fade.pal[v][2],fade.pal[v][3])
end end
end end
fade.step=fade.step-1 fade.step=fade.step-1

View File

@@ -9,8 +9,8 @@ function final_init()
game_update=update_final game_update=update_final
next_actor() next_actor()
playmus(audio_final) playmus(audio_final)
local r,g,b=getcolor(15) local r,g,b=palcolor(15)
setcolor(17,r,g,b) palcolor(17,r,g,b)
--fade.fadein() --fade.fadein()
end end
@@ -81,7 +81,7 @@ function draw_actor()
end end
end end
if current_actor==7 then if current_actor==7 then
actor.y=28-abs(sin(actor.x*0.1))*24 actor.y=28-math.abs(math.sin(actor.x*0.1))*24
end end
if actor.x>96 or actor.x<-actor.w or (#actor.anim==1 and actor.center_count==0) then if actor.x>96 or actor.x<-actor.w or (#actor.anim==1 and actor.center_count==0) then
@@ -92,7 +92,7 @@ function draw_actor()
end end
end end
local tpl=128/actor.w local tpl=128/actor.w
sspr((actor.frame%tpl)*actor.w,flr(actor.frame/tpl)*actor.h,actor.w,actor.h,actor.x,actor.y,actor.w,actor.h,actor.flip) blit((actor.frame%tpl)*actor.w,math.floor(actor.frame/tpl)*actor.h,actor.w,actor.h,actor.x,actor.y,actor.w,actor.h,actor.flip)
end end
function next_actor() function next_actor()

View File

@@ -1,4 +1,5 @@
title=Cacaus title=Cacaus
config=cacaus
width=128 width=128
height=96 height=96
zoom=5 zoom=5

View File

@@ -1,4 +1,22 @@
--hab=0 require "abad"
require "gps"
require "gorro"
require "peu"
require "premiere"
require "elalien"
require "batman"
require "bol"
require "gota"
require "invisibl"
require "zombie"
require "caco"
require "trigger"
require "score"
require "imp"
require "bambolla"
require "cacau"
require "fireball"
require "switches"
modes={playing=0,editing=1} modes={playing=0,editing=1}
--mode=modes.editing --mode=modes.editing
@@ -132,6 +150,8 @@ function game_init(menu)
mapa_do_backup() mapa_do_backup()
if menu then if menu then
menu_sel=0
menu_state=0
abad.update = abad_nop abad.update = abad_nop
game_update=update_menu game_update=update_menu
menu_count=0 menu_count=0
@@ -145,20 +165,6 @@ function game_init(menu)
--fade.fadein() --fade.fadein()
end end
function text(str,x,y,col)
color(16)
prnt(str,x-1,y-1)
prnt(str,x,y-1)
prnt(str,x+1,y-1)
prnt(str,x-1,y)
prnt(str,x+1,y)
prnt(str,x-1,y+1)
prnt(str,x,y+1)
prnt(str,x+1,y+1)
prnt(str,x,y,col)
end
function draw_hab(hab,x,y,editing) function draw_hab(hab,x,y,editing)
camera(-x,-y) camera(-x,-y)
mapa_draw(hab) mapa_draw(hab)
@@ -200,14 +206,14 @@ function update_game()
draw_hab(abad.hab,0,0,true) draw_hab(abad.hab,0,0,true)
text(abad.hab,120,1,2) text(abad.hab,120,1,2)
sspr(0,64+scroll*8,128,48,0,48) blit(0,64+scroll*8,128,48,0,48)
color(3) color(3)
local xx=(seltile&15)*8 local xx=(seltile&15)*8
local yy=48+(seltile>>4)*8 local yy=48+(seltile>>4)*8
rect(xx,yy,xx+8,yy+8) rect(xx,yy,xx+8,yy+8)
text("EDIT",100,1,3) text("EDIT",100,1,3)
local hx = abad.hab%10 local hx = abad.hab%10
local hy = flr(abad.hab/10) local hy = math.floor(abad.hab/10)
scroll=0 scroll=0
if btnp(KEY_RIGHT) and hx<9 then if btnp(KEY_RIGHT) and hx<9 then
abad.hab=abad.hab+1 abad.hab=abad.hab+1
@@ -264,7 +270,7 @@ function update_game()
prnt("x"..abad.vides,114,13,2) prnt("x"..abad.vides,114,13,2)
rectfill(102+(abad.energia>>1),30,122,37,16) rectfill(102+(abad.energia>>1),30,122,37,16)
else else
sspr(0,0,16,9,50,40,16,9,true) blit(0,0,16,9,50,40,16,9,true)
if abad.hurting > 40 then if abad.hurting > 40 then
prnt("x"..abad.vides+1,63,43,3) prnt("x"..abad.vides+1,63,43,3)
elseif abad.hurting < 20 then elseif abad.hurting < 20 then
@@ -292,7 +298,7 @@ function update_game()
switches.update() switches.update()
--local hx = abad.hab%10 --local hx = abad.hab%10
--local hy = flr(abad.hab/10) --local hy = math.floor(abad.hab/10)
--if btnp(KEY_RETURN) then --if btnp(KEY_RETURN) then
-- mode=modes.editing -- mode=modes.editing
-- mapa_restore_backup() -- mapa_restore_backup()
@@ -309,7 +315,7 @@ function update_game()
--elseif btnp(KEY_ESCAPE) then --elseif btnp(KEY_ESCAPE) then
-- pause() -- pause()
--end --end
if btnp(KEY_ESCAPE) then if btnp(KEY_ESCAPE) or padp(btnPause) then
pause() pause()
end end
if abad.objects.gps~=nil then if abad.objects.gps~=nil then
@@ -324,27 +330,22 @@ function update_game()
elseif btnp(KEY_5) then elseif btnp(KEY_5) then
current_camera=5 current_camera=5
end end
if padp(btnCycle1) then
current_camera=current_camera+1
if current_camera==6 then current_camera=1 end
if current_camera==1 and (abad.objects.gorro or abad.objects.clau_premiere) then current_camera=2 end
if current_camera==2 and (abad.objects.peu or abad.objects.clau_elalien) then current_camera=3 end
elseif padp(btnCycle2) then
current_camera=current_camera-1
if current_camera==0 then current_camera=5 end
if current_camera==2 and (abad.objects.peu or abad.objects.clau_elalien) then current_camera=1 end
if current_camera==1 and (abad.objects.gorro or abad.objects.clau_premiere) then current_camera=5 end
end
end end
end end
end end
function redraw_menu_hab()
function update_menu()
menu_count=menu_count+1
menu_change_room=menu_change_room-1
if menu_change_room==0 then
menu_room = rnd(60)
menu_change_room=300
end
cls(16)
text("C A C A U S", 42, 12, 15)
if menu_count<20 then
text("Pulsa SPACE", 42, 28, 13)
else
text("Pulsa SPACE", 42, 28, 16)
if menu_count>40 then menu_count=0 end
end
draw_hab(menu_room,16,41) draw_hab(menu_room,16,41)
rectfill(0,0,14,96,16) rectfill(0,0,14,96,16)
rectfill(114,0,191,96,16) rectfill(114,0,191,96,16)
@@ -359,21 +360,171 @@ function update_menu()
cacau.update() cacau.update()
fireball.update() fireball.update()
switches.update() switches.update()
end
if btnp(keyShoot) or padp(btnShoot) then function update_menu()
game_exit() menu_change_room=menu_change_room-1
game_init() if menu_change_room==0 then
fade.fadeoutin() menu_room = rnd(60)
elseif btnp(KEY_M) then menu_change_room=300
mute = not mute
if mute then
stopmusic()
else
playmus(audio_main_song)
end
elseif btnp(KEY_ESCAPE) then
quit()
end end
cls(16)
text("C A C A U S", 42, 8, 15)
if menu_state == 0 then
menu_count=menu_count+1
local parpadeig=false
if menu_count>=20 then
parpadeig=true
if menu_count>40 then menu_count=0 end
end
if (not parpadeig or menu_sel~=0) then text("JUGAR", 54, 16, 13) end
if (not parpadeig or menu_sel~=1) then text("REDEFINIR TECLAT", 32, 24, 13) end
if (not parpadeig or menu_sel~=2) then text("REDEFINIR GAMEPAD", 30, 32, 13) end
redraw_menu_hab()
if btnp(keyShoot) or btnp(KEY_SPACE) or padp(BTN_A) or padp(btnShoot) then
if menu_sel==0 then
game_exit()
game_init()
fade.fadeoutin()
elseif menu_sel==1 then
menu_count=0
menu_state=1
else
menu_count=0
menu_state=2
end
elseif btnp(keyDown) or btnp(KEY_DOWN) or padp(BTN_DOWN) or padp(btnDown) then
menu_sel=menu_sel+1
if menu_sel==3 then menu_sel=0 end
elseif btnp(keyUp) or btnp(KEY_UP) or padp(BTN_UP) or padp(btnUp) then
menu_sel=menu_sel-1
if menu_sel==-1 then menu_sel=2 end
elseif btnp(KEY_M) then
mute = not mute
if mute then
stopmusic()
else
playmus(audio_main_song)
end
elseif btnp(KEY_ESCAPE) or padp(btnPause) then
quit()
end
elseif menu_state==1 then
if btnp(KEY_ESCAPE) then
menu_count = 0
menu_state = 0
end
if menu_count==0 then
text("PULSA TECLA PER A AMUNT", 20, 24, 13)
local key = btnp();
if key ~= 0 and key~=KEY_ESCAPE then
menu_count = 1
keyUp=key
setconf("keyup", keyUp)
end
elseif menu_count==1 then
text("PULSA TECLA PER A AVALL", 20, 24, 13)
local key = btnp();
if key ~= 0 and key~=KEY_ESCAPE then
menu_count = 2
keyDown=key
setconf("keydown", keyDown)
end
elseif menu_count==2 then
text("PULSA TECLA PER A ESQUERRA", 14, 24, 13)
local key = btnp();
if key ~= 0 and key~=KEY_ESCAPE then
menu_count = 3
keyLeft=key
setconf("keleft", keyLeft)
end
elseif menu_count==3 then
text("PULSA TECLA PER A DRETA", 20, 24, 13)
local key = btnp();
if key ~= 0 and key~=KEY_ESCAPE then
menu_count = 4
keyRight=key
setconf("keyright", keyRight)
end
elseif menu_count==4 then
text("PULSA TECLA PER A BOTAR", 20, 24, 13)
local key = btnp();
if key ~= 0 and key~=KEY_ESCAPE then
menu_count = 5
keyJump=key
setconf("keyjump", keyJump)
end
elseif menu_count==5 then
text("PULSA TECLA PER A DISPAR", 18, 24, 13)
local key = btnp();
if key ~= 0 and key~=KEY_ESCAPE then
menu_count = 0
menu_state = 0
keyShoot=key
setconf("keyshoot", keyShoot)
end
end
else
if btnp(KEY_ESCAPE) then
menu_count = 0
menu_state = 0
end
if menu_count==0 then
text("PULSA BOTÓ PER A AMUNT", 22, 24, 13)
local btn = padp();
if btn ~= -1 then
menu_count = 1
btnUp=btn
setconf("btnup", btnUp)
end
elseif menu_count==1 then
text("PULSA BOTÓ PER A AVALL", 22, 24, 13)
local btn = padp();
if btn ~= -1 then
menu_count = 2
btnDown=btn
setconf("btndown", btnDown)
end
elseif menu_count==2 then
text("PULSA BOTÓ PER A ESQUERRA", 16, 24, 13)
local btn = padp();
if btn ~= -1 then
menu_count = 3
btnLeft=btn
setconf("keleft", btnLeft)
end
elseif menu_count==3 then
text("PULSA BOTÓ PER A DRETA", 22, 24, 13)
local btn = padp();
if btn ~= -1 then
menu_count = 4
btnRight=btn
setconf("btnright", btnRight)
end
elseif menu_count==4 then
text("PULSA BOTÓ PER A BOTAR", 22, 24, 13)
local btn = padp();
if btn ~= -1 then
menu_count = 5
btnJump=btn
setconf("btnjump", btnJump)
end
elseif menu_count==5 then
text("PULSA BOTÓ PER A DISPAR", 20, 24, 13)
local btn = padp();
if btn ~= -1 then
menu_count = 0
menu_state = 0
btnShoot=btn
setconf("btnshoot", btnShoot)
end
end
end
end end
function game_exit() function game_exit()
@@ -389,9 +540,10 @@ end
function pause() function pause()
setsource(0) setsource(0)
setdest(back) setdest(back)
sspr(0,0,128,96,0,0) blit(0,0,128,96,0,0)
setdest(0) setdest(0)
setsource(tiles) setsource(tiles)
pausa_option=1
pause_old_update=game_update pause_old_update=game_update
game_update=update_pause game_update=update_pause
end end
@@ -400,16 +552,30 @@ function update_pause()
rectfill(16,16,112,80,16) rectfill(16,16,112,80,16)
rect(16,16,112,80,15) rect(16,16,112,80,15)
prnt("PAUSA",54,30,15) prnt("PAUSA",54,30,15)
prnt("ESC torna al joc",30,50,14) if pausa_option==1 then
prnt("SPACE eixir",30,60,14) rect(28,48,100,56,13)
else
rect(28,58,100,66,13)
end
prnt("CONTINUAR",30,50,14)
prnt("EIXIR",30,60,14)
if btnp(KEY_ESCAPE) then if btnp(KEY_ESCAPE) then
setsource(back) setsource(back)
sspr(0,0,128,96,0,0) blit(0,0,128,96,0,0)
setsource(tiles) setsource(tiles)
game_update = pause_old_update game_update = pause_old_update
elseif btnp(keyDown) or btnp(keyUp) or padp(btnDown) or padp(btnUp) then
if pausa_option==1 then pausa_option=2 else pausa_option=1 end
elseif btnp(keyShoot) or padp(btnShoot) then elseif btnp(keyShoot) or padp(btnShoot) then
game_exit() if pausa_option==1 then
game_init(true) setsource(back)
blit(0,0,128,96,0,0)
setsource(tiles)
game_update = pause_old_update
else
game_exit()
game_init(true)
end
end end
end end

View File

@@ -10,7 +10,7 @@ function gorro.init()
end end
function gorro.draw() function gorro.draw()
sspr(96,32,16,16,gorro.x,gorro.y,16,16) blit(96,32,16,16,gorro.x,gorro.y,16,16)
end end
function gorro.update() function gorro.update()

View File

@@ -5,7 +5,7 @@ function gota.new(_hab,_x,_y,_freq)
end end
function gota:draw_normal() function gota:draw_normal()
sspr(112,0,8,8,self.x,self.y) blit(112,0,8,8,self.x,self.y)
end end
function gota:update_normal() function gota:update_normal()

View File

@@ -10,7 +10,7 @@ function gps.init()
end end
function gps.draw() function gps.draw()
sspr(112,48,16,16,gps.x,gps.y,16,16) blit(112,48,16,16,gps.x,gps.y,16,16)
end end
function gps.update() function gps.update()

View File

@@ -44,7 +44,7 @@ end
function imp.draw() function imp.draw()
if imp.enabled then if imp.enabled then
sspr((imp.frame&7)*16,(imp.frame>>3)*16,16,16,imp.x,imp.y,16,16,imp.flip) blit((imp.frame&7)*16,(imp.frame>>3)*16,16,16,imp.x,imp.y,16,16,imp.flip)
end end
end end

View File

@@ -1,3 +1,8 @@
require "fade"
require "game"
require "mapa"
require "scenes"
intro_wait=40 intro_wait=40
intro_step=0 intro_step=0
@@ -10,7 +15,7 @@ function intro_init()
prnt("JAILGAMES",0,0,15) prnt("JAILGAMES",0,0,15)
setdest(0) setdest(0)
setsource(logo) setsource(logo)
sspr(0,0,36,5,28,35,72,10) blit(0,0,36,5,28,35,72,10)
setsource(tiles) setsource(tiles)
fade.fadein() fade.fadein()
end end
@@ -19,7 +24,7 @@ function intro_intro()
--text("JAILGAMES",40,30,15) --text("JAILGAMES",40,30,15)
text("presenta",48,50,14) text("presenta",48,50,14)
intro_wait=intro_wait-1 intro_wait=intro_wait-1
if intro_wait==0 or btnp(KEY_ESCAPE) or btnp(keyShoot) or padp(btnShoot) then if intro_wait==0 or btnp(KEY_ESCAPE) or btnp(keyShoot) or padp(btnShoot) or padp(btnPause) then
intro_wait=1 intro_wait=1
game_update = intro_update game_update = intro_update
fade.fadeoutin() fade.fadeoutin()
@@ -30,7 +35,7 @@ function intro_intro()
end end
function intro_update() function intro_update()
if btnp(KEY_ESCAPE) then if btnp(KEY_ESCAPE) or padp(btnPause) then
game_init(true) game_init(true)
fade.fadeoutin() fade.fadeoutin()
elseif btnp(KEY_SPACE) then elseif btnp(KEY_SPACE) then
@@ -47,7 +52,7 @@ function intro_update()
camera(-16,-4) camera(-16,-4)
mapa_draw(10) mapa_draw(10)
rectfill(73,24,79,39,16) rectfill(73,24,79,39,16)
sspr(0,0,16,16,44,24,16,16,true) blit(0,0,16,16,44,24,16,16,true)
camera(0,0) camera(0,0)
intro_step=intro_step+1 intro_step=intro_step+1
elseif intro_step==1 then elseif intro_step==1 then
@@ -59,7 +64,7 @@ function intro_update()
camera(-16,-4) camera(-16,-4)
mapa_draw(10) mapa_draw(10)
rectfill(73,24,79,39,16) rectfill(73,24,79,39,16)
sspr(0,0,16,16,44,24,16,16,false) blit(0,0,16,16,44,24,16,16,false)
camera(0,0) camera(0,0)
intro_step=intro_step+1 intro_step=intro_step+1
elseif intro_step==3 then elseif intro_step==3 then
@@ -71,9 +76,9 @@ function intro_update()
camera(-16,-4) camera(-16,-4)
mapa_draw(10) mapa_draw(10)
rectfill(73,24,79,39,16) rectfill(73,24,79,39,16)
sspr(0,0,16,16,44,24,16,16,false) blit(0,0,16,16,44,24,16,16,false)
sspr(112,88,16,8,76,32,16,8,true) blit(112,88,16,8,76,32,16,8,true)
sspr(0,48,16,16,82,24,16,16,true) blit(0,48,16,16,82,24,16,16,true)
camera(0,0) camera(0,0)
intro_step=intro_step+1 intro_step=intro_step+1
elseif intro_step==5 then elseif intro_step==5 then
@@ -85,7 +90,7 @@ function intro_update()
camera(-16,-4) camera(-16,-4)
mapa_draw(10) mapa_draw(10)
rectfill(73,24,79,39,16) rectfill(73,24,79,39,16)
sspr(0,0,16,16,44,24,16,16,false) blit(0,0,16,16,44,24,16,16,false)
camera(0,0) camera(0,0)
intro_step=intro_step+1 intro_step=intro_step+1
elseif intro_step==7 then elseif intro_step==7 then

View File

@@ -1,14 +1,35 @@
keyUp = KEY_UP require "final"
keyDown = KEY_DOWN require "fade"
keyLeft = KEY_LEFT require "audio"
keyRight = KEY_RIGHT require "dead"
keyShoot = KEY_SPACE require "scenes"
require "trigger"
require "score"
require "switches"
require "map"
require "mapa"
require "bol"
require "invisibl"
require "gota"
require "fireball"
require "cacau"
require "bambolla"
require "imp"
require "gps"
require "peu"
require "gorro"
require "batman"
require "elalien"
require "premiere"
require "caco"
require "zombie"
require "abad"
require "intro"
require "game"
btnUp = BTN_UP --require "fade"
btnDown = BTN_DOWN --require "audio"
btnLeft = BTN_LEFT --require "intro"
btnRigth = BTN_RIGHT
btnShoot = BTN_A
function _init() function _init()
tiles=loadsurf("tiles.gif") tiles=loadsurf("tiles.gif")
@@ -36,21 +57,52 @@ function _init()
audio_hit = loadsound(audio_hit) audio_hit = loadsound(audio_hit)
audio_low = loadsound(audio_low) audio_low = loadsound(audio_low)
keyUp = tonumber(getconf("keyup")) or KEY_UP
keyDown = tonumber(getconf("keydown")) or KEY_DOWN
keyLeft = tonumber(getconf("keyleft")) or KEY_LEFT
keyRight = tonumber(getconf("keyright")) or KEY_RIGHT
keyJump = tonumber(getconf("keyjump")) or KEY_UP
keyShoot = tonumber(getconf("keyshoot")) or KEY_SPACE
btnUp = tonumber(getconf("btnup")) or BTN_UP
btnDown = tonumber(getconf("btndown")) or BTN_DOWN
btnLeft = tonumber(getconf("btnleft")) or BTN_LEFT
btnRight = tonumber(getconf("btnright")) or BTN_RIGHT
btnJump = tonumber(getconf("btnjump")) or BTN_B
btnShoot = tonumber(getconf("btnshoot")) or BTN_A
btnCycle1 = tonumber(getconf("btnCycle1")) or BTN_RIGHTSHOULDER
btnCycle2 = tonumber(getconf("btnCycle2")) or BTN_LEFTSHOULDER
btnPause = tonumber(getconf("btnPause")) or BTN_START
--game_init() --game_init()
intro_init() intro_init()
--final_init() --final_init()
end end
function _update() function _update()
if btnp(KEY_F2) then if btnp(KEY_F1) then
local val = zoom() + 2 zoom(zoom()-1)
if val >= 10 then val = 2 end elseif btnp(KEY_F2) then
zoom(val) zoom(zoom()+1)
elseif btnp(KEY_F3) then elseif btnp(KEY_F3) then
local fs = fullscreen() local fs = fullscreen()
fullscreen(not fs) fullscreen(not fs)
cursor(fs) cursor(fs)
end end
if (game_update) game_update() end if (game_update) then game_update() end
end
function text(str,x,y,col)
color(16)
prnt(str,x-1,y-1)
prnt(str,x,y-1)
prnt(str,x+1,y-1)
prnt(str,x-1,y)
prnt(str,x+1,y)
prnt(str,x-1,y+1)
prnt(str,x,y+1)
prnt(str,x+1,y+1)
prnt(str,x,y,col)
end end

View File

@@ -1,4 +1,5 @@
--mapa={} require "map"
tiletype={void=0,nonpc=1,stair=2,switch=3,half=4,block=5} tiletype={void=0,nonpc=1,stair=2,switch=3,half=4,block=5}
mapa.wait=0 mapa.wait=0
mapa.step=0 mapa.step=0
@@ -92,7 +93,7 @@ function mapa_draw(hab)
for tx=0,11 do for tx=0,11 do
local tile=mapa[1+hab][1+tx+ty*12] local tile=mapa[1+hab][1+tx+ty*12]
if tile~=256 and (tile<126 or mapa.step>4) then if tile~=256 and (tile<126 or mapa.step>4) then
sspr((tile&15)*8,64+(tile>>4)*8,8,8,tx*8,ty*8) blit((tile&15)*8,64+(tile>>4)*8,8,8,tx*8,ty*8)
end end
end end
end end
@@ -124,8 +125,8 @@ function mapa_cycle_colors(hab)
end end
function check_tile(hab,x,y) function check_tile(hab,x,y)
local xx=min(11,max(0,flr(x/8))) local xx=math.min(11,math.max(0,math.floor(x/8)))
local yy=min(5,max(0,flr(y/8))) local yy=math.min(5,math.max(0,math.floor(y/8)))
--rect(xx*8,yy*8,xx*8+8,yy*8+8,3) --rect(xx*8,yy*8,xx*8+8,yy*8+8,3)
local tile=mapa_get_tile(hab,xx,yy) local tile=mapa_get_tile(hab,xx,yy)
@@ -157,7 +158,7 @@ function mapa_create_minimap()
print(x..","..y.."="..tile) print(x..","..y.."="..tile)
end end
if tile<64 then if tile<64 then
pset(x+(h%10)*12,y+flr(h/10)*6,pix[1+tile]) pset(x+(h%10)*12,y+math.floor(h/10)*6,pix[1+tile])
end end
end end
end end
@@ -170,5 +171,5 @@ function mapa_draw_minimap()
setsource(minimap) setsource(minimap)
setdest(0) setdest(0)
cls(16) cls(16)
sspr(0,0,128,96,0,0) blit(0,0,128,96,0,0)
end end

View File

@@ -10,7 +10,7 @@ function peu.init()
end end
function peu.draw() function peu.draw()
sspr(112,32,16,16,peu.x,peu.y,16,16) blit(112,32,16,16,peu.x,peu.y,16,16)
end end
function peu.update() function peu.update()

View File

@@ -14,7 +14,7 @@ function premiere.init()
end end
function premiere.draw() function premiere.draw()
sspr((premiere.frame&7)*16,(premiere.frame>>3)*16,16,16,premiere.x,premiere.y,16,16,premiere.flip) blit((premiere.frame&7)*16,(premiere.frame>>3)*16,16,16,premiere.x,premiere.y,16,16,premiere.flip)
end end
function premiere.hit() function premiere.hit()
@@ -145,8 +145,8 @@ function premiere.update_falling()
end end
end end
local xx=flr((premiere.x+4)/8) local xx=math.floor((premiere.x+4)/8)
local yy=flr((premiere.y+16)/8) local yy=math.floor((premiere.y+16)/8)
if premiere.y<32 then if premiere.y<32 then
if (premiere.y+16)&7==0 and (check_tile(premiere.hab,premiere.x+4,premiere.y+16)>=tiletype.half or ((premiere.x+4)&7~=0 and check_tile(premiere.hab,premiere.x+12,premiere.y+16)>=tiletype.half)) then if (premiere.y+16)&7==0 and (check_tile(premiere.hab,premiere.x+4,premiere.y+16)>=tiletype.half or ((premiere.x+4)&7~=0 and check_tile(premiere.hab,premiere.x+12,premiere.y+16)>=tiletype.half)) then

View File

@@ -1,3 +1,6 @@
require "final"
require "audio"
scenes={ scenes={
intro_01= { intro_01= {
{x=3,y=0,flip=false,audio="abad",text={"Ah!, què bo!","Nit de Netflix amb","un bon bol de cacaus!"},die=20}, {x=3,y=0,flip=false,audio="abad",text={"Ah!, què bo!","Nit de Netflix amb","un bon bol de cacaus!"},die=20},
@@ -129,7 +132,7 @@ function start_scene(scene,offset)
--bkg=newsurf(128,96) --bkg=newsurf(128,96)
--setdest(bkg) --setdest(bkg)
--setsource(0) --setsource(0)
--sspr(0,0,128,96,0,0) --blit(0,0,128,96,0,0)
--setsource(tiles) --setsource(tiles)
--setdest(0) --setdest(0)
scenes.current_scene=scene scenes.current_scene=scene
@@ -178,18 +181,18 @@ function draw_scene()
elseif scenes.step==3 then elseif scenes.step==3 then
if not scenes.current_scene[scenes.dnum].flip then if not scenes.current_scene[scenes.dnum].flip then
rectfill(8,12,31,23,16) rectfill(8,12,31,23,16)
sspr(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,9,13,20,10) blit(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,9,13,20,10)
else else
rectfill(97,12,120,23,16) rectfill(97,12,120,23,16)
sspr(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,98,13,20,10,true) blit(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,98,13,20,10,true)
end end
elseif scenes.step==4 then elseif scenes.step==4 then
if not scenes.current_scene[scenes.dnum].flip then if not scenes.current_scene[scenes.dnum].flip then
rectfill(8,7,31,28,16) rectfill(8,7,31,28,16)
sspr(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,9,8,20,20) blit(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,9,8,20,20)
else else
rectfill(97,7,120,28,16) rectfill(97,7,120,28,16)
sspr(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,98,8,20,20,true) blit(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,98,8,20,20,true)
end end
elseif scenes.step==5 then elseif scenes.step==5 then
text(string.sub(scenes.current_scene[scenes.dnum].text[1],1,scenes.char),txt_x,7,2) text(string.sub(scenes.current_scene[scenes.dnum].text[1],1,scenes.char),txt_x,7,2)
@@ -224,10 +227,10 @@ function draw_scene()
line(0,34,128,34,16) line(0,34,128,34,16)
if not scenes.current_scene[scenes.dnum].flip then if not scenes.current_scene[scenes.dnum].flip then
rectfill(8,7,31,28,16) rectfill(8,7,31,28,16)
sspr(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,9,8,20,20) blit(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,9,8,20,20)
else else
rectfill(97,7,120,28,16) rectfill(97,7,120,28,16)
sspr(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,98,8,20,20,true) blit(scenes.current_scene[scenes.dnum].x,scenes.current_scene[scenes.dnum].y,10,10,98,8,20,20,true)
end end
text(scenes.current_scene[scenes.dnum].text[1],txt_x,7,2) text(scenes.current_scene[scenes.dnum].text[1],txt_x,7,2)
text(scenes.current_scene[scenes.dnum].text[2],txt_x,15,2) text(scenes.current_scene[scenes.dnum].text[2],txt_x,15,2)
@@ -263,8 +266,8 @@ function update_scene()
end end
end end
else else
if flr(time()*2)%2==0 then if math.floor(time()*2)%2==0 then
sspr(104,88,7,5,118,56) blit(104,88,7,5,118,56)
else else
rectfill(118,56,125,61,12) rectfill(118,56,125,61,12)
end end
@@ -272,7 +275,7 @@ function update_scene()
end end
end end
if btnp(KEY_ESCAPE) and (scenes.current_scene~=scenes.final) then if (btnp(KEY_ESCAPE) or padp(btnPause)) and (scenes.current_scene~=scenes.final) then
if scenes.current_scene[scenes.dnum].die then if scenes.current_scene[scenes.dnum].die then
game_init(true) game_init(true)
else else

View File

@@ -4,19 +4,19 @@ function score.create()
score.surf=newsurf(32,96) score.surf=newsurf(32,96)
setdest(score.surf) setdest(score.surf)
cls(16) cls(16)
sspr(0,0,16,9,5,9,16,9,true) blit(0,0,16,9,5,9,16,9,true)
spr(132,0,0,1,1) spr(150,8,0,1,1) spr(150,16,0,1,1) spr(133,24,0,1,1) blit(32,64,8,8,0,0) blit(48,72,8,8,8,0) blit(48,72,8,8,16,0) blit(40,64,8,8,24,0)
spr(134,0,8,1,1) spr(135,24,8,1,1) spr(134,0,16,1,1) spr(135,24,16,1,1) blit(48,64,8,8,0,8) blit(56,64,8,8,24,8) blit(48,64,8,8,0,16) blit(56,64,8,8,24,16)
spr(132,0,24,1,1) spr(150,8,24,1,1) spr(150,16,24,1,1) spr(133,24,24,1,1) blit(32,64,8,8,0,24) blit(48,72,8,8,8,24) blit(48,72,8,8,16,24) blit(40,64,8,8,24,24)
spr(134,0,32,1,1) spr(135,24,32,1,1) blit(48,64,8,8,0,32) blit(56,64,8,8,24,32)
spr(132,0,40,1,1) spr(150,8,40,1,1) spr(150,16,40,1,1) spr(133,24,40,1,1) blit(32,64,8,8,0,40) blit(48,72,8,8,8,40) blit(48,72,8,8,16,40) blit(40,64,8,8,24,40)
spr(134,0,48,1,1) spr(135,24,48,1,1) spr(134,0,56,1,1) spr(135,24,56,1,1) blit(48,64,8,8,0,48) blit(56,64,8,8,24,48) blit(48,64,8,8,0,56) blit(56,64,8,8,24,56)
spr(134,0,64,1,1) spr(135,24,64,1,1) --spr(134,0,72,1,1) spr(135,24,72,1,1) blit(48,64,8,8,0,64) blit(56,64,8,8,24,64) --blit(48,64,8,8,0,72) blit(56,64,8,8,24,72)
spr(132,0,72,1,1) spr(150,8,72,1,1) spr(150,16,72,1,1) spr(133,24,72,1,1) blit(32,64,8,8,0,72) blit(48,72,8,8,8,72) blit(48,72,8,8,16,72) blit(40,64,8,8,24,72)
spr(134,0,80,1,1) spr(135,24,80,1,1) spr(134,0,88,1,1) spr(135,24,88,1,1) blit(48,64,8,8,0,80) blit(56,64,8,8,24,80) blit(48,64,8,8,0,88) blit(56,64,8,8,24,88)
prnt("jail",6,77,2) prnt("jail",6,77,2)
prnt("games",8,82,2) prnt("games",8, 82,2)
prnt("2023",9,89,1) prnt("2023",9,89,1)
rectfill(06,30,07,37,03) rectfill(06,30,07,37,03)
rectfill(09,30,10,37,08) rectfill(09,30,10,37,08)
@@ -30,14 +30,14 @@ end
function score.draw() function score.draw()
setsource(score.surf) setsource(score.surf)
sspr(0,0,32,96,96,0) blit(0,0,32,96,96,0)
setsource(tiles) setsource(tiles)
if abad.objects.gorro~=nil then sspr(96,32,16,16,99,44) end if abad.objects.gorro~=nil then blit(96,32,16,16,99,44) end
if abad.objects.peu~=nil then sspr(112,32,16,16,109,44) end if abad.objects.peu~=nil then blit(112,32,16,16,109,44) end
if abad.objects.gps~=nil then sspr(112,48,16,16,100,55) end if abad.objects.gps~=nil then blit(112,48,16,16,100,55) end
if abad.objects.clau_premiere~=nil then sspr(112,8,8,8,104,48) end if abad.objects.clau_premiere~=nil then blit(112,8,8,8,104,48) end
if abad.objects.clau_elalien~=nil then sspr(120,8,8,8,112,48) end if abad.objects.clau_elalien~=nil then blit(120,8,8,8,112,48) end
if abad.objects.bol~=nil then sspr(112,88,16,8,104,46) end if abad.objects.bol~=nil then blit(112,88,16,8,104,46) end
end end

View File

@@ -5,7 +5,7 @@ function zombie.new(_hab,_x,_y,_flip)
end end
function zombie:draw() function zombie:draw()
if self.frame>0 then sspr((self.frame&7)*16,(self.frame>>3)*16,16,16,self.x,self.y,16,16,self.flip) end if self.frame>0 then blit((self.frame&7)*16,(self.frame>>3)*16,16,16,self.x,self.y,16,16,self.flip) end
end end
function zombie:update_normal() function zombie:update_normal()