You can do a tile-map using plains and 3D graphics, it looks exactly the same, and the collision map is exactly the same. Sky transitions in 2D, not so easy. Play with blur bitmap....maybe...
set display mode 320,240,16
sync rate 0
sync on
hide mouse
v=0
p=0
cx = 85
cy = 40
dim a(10)
dim b(10)
dim c(10)
dim flag(30)
a(1)=200
b(1)=50
c(1)=100
a(2)=100
b(2)=100
c(2)=50
a(3)=200
b(3)=50
c(3)=200
a(4)=50
b(4)=200
c(4)=10
flag(1) = 0
flag(2) = 0
flag(3) = 0
t=750
dim velocity#(t)
dim acceleration#(t)
dim jump(t)
dim x#(t)
dim speed#(t)
dim y#(t)
dim d(t)
dim ink(t)
dim inkcolour(0)
`w=100
`h=80
w=180
h=120
create bitmap 2,w,h
xh=h/2
finish =300
do
for fireworks = 1 to finish
blur bitmap 2,1
ink rgb(0,0,0),0
rem This draws circles with changing colours.
if flag(1) = 0 then a(1)=a(1)+3
if flag(2) = 0 then b(1)=b(1)+2
if flag(3) = 0 then c(1)=c(1)+1
if flag(1) = 1 then a(1)=a(1)-3
if flag(2) = 1 then b(1)=b(1)-2
if flag(3) = 1 then c(1)=c(1)-1
if flag(4) = 0 then a(2)=a(2)+3
if flag(5) = 0 then b(2)=b(2)+2
if flag(6) = 0 then c(2)=c(2)+1
if flag(4) = 1 then a(2)=a(2)-3
if flag(5) = 1 then b(2)=b(2)-2
if flag(6) = 1 then c(2)=c(2)-1
if flag(7) = 0 then a(3)=a(3)+3
if flag(8) = 0 then b(3)=b(3)+2
if flag(9) = 0 then c(3)=c(3)+1
if flag(7) = 1 then a(3)=a(3)-3
if flag(8) = 1 then b(3)=b(3)-2
if flag(9) = 1 then c(3)=c(3)-1
if flag(10) = 0 then a(4)=a(4)+3
if flag(11) = 0 then b(4)=b(4)+2
if flag(12) = 0 then c(4)=c(4)+1
if flag(10) = 1 then a(4)=a(4)-3
if flag(11) = 1 then b(4)=b(4)-2
if flag(12) = 1 then c(4)=c(4)-1
ink rgb(a(1),b(1),c(1)),1
ox = cos(v)*40
oy = sin(v)*40
ow = cos(v)*30
oz = sin(v)*30
oa = cos(p)*20
ob = sin(p)*20
oc = cos(p)*10
od = sin(p)*10
v=v+10
p=p-10
circle cx+ox,cy+oy,5
ink rgb(a(2),b(2),c(2)),1
circle cx+ow-20,cy+oz,5
ink rgb(a(3),b(3),c(3)),1
circle cx+oa-20,cy+ob+10,5
ink rgb(a(4),b(4),c(4)),1
circle cx+oc-10,cy+od,5
rem Uncomment set gamma for another effect
`set gamma a,b,c
count = 1
for n = 1 to 4
if a(n) >=252 then flag(count) = 1
if b(n) >=253 then flag(count+1) = 1
if c(n) >=254 then flag(count+2) = 1
if a(n) <=3 then flag(count) = 0
if b(n) <=2 then flag(count+1) = 0
if c(n) <=1 then flag(count+2) = 0
count = count +3
next n
copy bitmap 2,0,0,179,119,0,0,0,319,239
if fireworks >= finish - 128
set gamma (finish - fireworks)*2,(finish - fireworks)*2,(finish - fireworks)*2
endif
sync
next fireworks
create bitmap 2,w,h
makefire(t,w,h,xh)
inkcolour(0)=1
start=timer()
for fireworks = 1 to 180
blur bitmap 2,1
ink rgb(0,0,0),0
dot 0,0
for ant=0 to t
if jump(ant)=0
velocity#(ant)=6.0+rnd(5)
jump(ant)=1
endif
if jump(ant)=1
if velocity#(ant)!-8
velocity#(ant)=velocity#(ant)-acceleration#(ant)
endif
y#(ant)=y#(ant)-velocity#(ant)
endif
temp_x#=x#(ant)
temp_s#=speed#(ant)
if y#(ant)>h
y#(ant)=h
else
if d(ant)=1
inc temp_x#,temp_s#
else
dec temp_x#,temp_s#
endif
x#(ant)=temp_x#
endif
if inkcolour(0)=1 then ink rgb(ink(ant),ink(ant),ink(ant)),0
if inkcolour(0)=2 then ink rgb(ink(ant),ink(ant),90),0
if inkcolour(0)=3 then ink rgb(ink(ant),90,ink(ant)),0
if inkcolour(0)=4 then ink rgb(150,90,ink(ant)),0
if inkcolour(0)=5 then ink rgb(50,200,ink(ant)),0
if inkcolour(0)=6 then ink rgb(150,ink(ant),ink(ant)/2),0
if inkcolour(0)=7 then ink rgb(ink(ant),50,200),0
if inkcolour(0)=8 then ink rgb(ink(ant)/2,ink(ant)/2,ink(ant)),0
dot x#(ant),y#(ant)
next ant
copy bitmap 2,0,0,179,119,0,0,0,319,239
sync
if timer()=>start+2500+rnd(1000)
t=250+rnd(500)
makefire(t,w,h,xh)
start=timer()
inkcolour(0)=rnd(7)+1
endif
set gamma 255,255,255
next fireworks
loop
function makefire(t,w,h,xh)
for ant=0 to t
velocity#(ant)=0
acceleration#(ant)=0.5
jump(ant)=0
x#(ant)=xh+10+rnd(xh/2)
speed#(ant)=rnd(5)
y#(ant)=(h-20)+rnd(20)
d(ant)=rnd(1)
ink(ant)=200+rnd(55)
next ant
endfunction
