rem batari Basic Program rem created 11/9/2017 2:54:08 PM by Visual bB Version 1.0.0.568 set smartbranching on set tv ntsc set romsize 64kSC set optimization speed set optimization inlinerand set kernel_options no_blank_lines pfcolors const pfres=23 bank 1 rem startup TitleScreen a=0:b=0:c=0:e=0:f=0:j=0:k=0:l=0:m=0:n=0:o=0:p=0:s=0:t=0:u=0:v=0:w=0 player0y=230:player1y=230 x=1:y=0 pfclear playfield: ................................ ................................ ....XXXX.XXXX.XXXX.XXXX.XXXX.... ....XX.X.XX.X.XX.X.XX.X..XX..... ....XX.X.XX.X.XX.X.XX.X..XX..... ....XXXX.XX.X.XXX..XX.X..XX..... ....XXX..XX.X.XX.X.XX.X..XX..... ....XX.X.XX.X.XX.X.XX.X..XX..... ....XX.X.XXX..XXX..XXX...XX..... ................................ ...XXXXXXXX.XXXXXXXX.XXXXXX..... ...XXXXXXXX.XXXXXXXX.XXXXXXX.... ................................ .........XX.XX.......XX....XX... .......XXXX.XXXXXX...XX....XX... .....XXXX...XXXXXX...XX....XX... ...XXXX.....XX.......XX....XX... ...XX.......XX.......XX....XX... ...XXXXXXXX.XXXXXXXX.XXXXXXX.... ...XXXXXXXX.XXXXXXXX.XXXXXX..... end pfcolors: $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 $86 end TS5 player0x=72:player0y=88 player1x=80:player1y=88 player0: %11001101 %10101001 %10101001 %10101101 %10101001 %10101001 %11001101 end player1: %00010010 %00010101 %00010101 %01010101 %01010101 %01010101 %10110010 end TS6 COLUP0=$0E COLUP1=$0E drawscreen y=(rand&15) a=a+1 if a=60 then a=0:b=b+1 if b=20 then goto TitleScreen if !joy0fire then goto TS6 a=0:b=0 player0y=230:player1y=230 score=0:x=0 pfclear CreateLevel rem for the Demo we are only using the base rem Let's make the level out of the 8 possible choices rem var0=Row1 var1=Row2 var2=Row3 var3=Row4 CL1 var0[x]=(rand&7) rem check for duplicate if !x then x=1:goto CL1 y=0 CL2 if var0[x]=var0[y] then CL1 y=y+1 if y53 then CL3 scorecolor=$0E b=1:c=0 d=0 gosub ShowLevel bank4 LevelTest if joy0right && f{0} then f{0}=0:gosub JumpRight if !joy0right then f{0}=1 if joy0left && f{1} then f{1}=0:gosub JumpLeft if !joy0left then f{1}=1 if joy0up then gosub scrolldown bank4 if joy0down then gosub scrollup bank4 gosub renderscreen goto LevelTest JumpRight if d=3 then return thisbank d=d+1 gosub ShowLevel bank4 return thisbank JumpLeft if !d then return thisbank d=d-1 gosub ShowLevel bank4 return thisbank renderscreen drawscreen return thisbank bank 2 rem maingame bank 3 rem object routines bank 4 rem level handling (scroll routines) ShowLevel pfclear gosub SetPath bank10 e=c for a=0 to 22 x=var0[d] y=c*4 gosub BaseLevel bank8 for z=0 to 3 temp1=(a*4)+z w036[temp1]=var5[z] next z c=c+1 next a c=e return otherbank scrollup if c=42 then return otherbank b=b+1 pfscroll up if b=5 then b=1 else return otherbank c=c+1 x=var0[d] y=(c+22)*4 gosub BaseLevel bank8 for z=0 to 3 w124[z]=var5[z] next z return otherbank scrolldown if c=0 && b=1 then return otherbank b=b-1 pfscroll down if !b then b=4 else return otherbank c=c-1 x=var0[d] y=c*4 gosub BaseLevel bank8 for z=0 to 3 w036[z]=var5[z] next z return otherbank bank 5 bank 6 bank 7 rem level generation bank 8 rem level data BaseLevel on x gosub BLD1 BLD2 BLD3 BLD4 BLD5 BLD6 BLD7 BLD8 rem return otherbank x=0 y=y/4 if y>0 && y<5 then x=1 if y=19 then x=2 if y>28 && y<33 then x=3 if y=41 then x=4 if y>58 && y<63 then x=5 if !x then return otherbank if x=1 && var9{0} then var5{7}=0 if x=1 && var9{1} then var8{7}=0 if x=2 && var9{2} then var6=15:var7=15 if x=3 && var9{3} then var5{7}=0 if x=3 && var9{4} then var8{7}=0 if x=4 && var9{5} then var6=15:var7=15 if x=5 && var9{6} then var5{7}=0 if x=5 && var9{7} then var8{7}=0 return otherbank BLD1 for z=0 to 3 temp1=y+z var5[z]=base1[temp1] next z return thisbank BLD2 for z=0 to 3 temp1=y+z var5[z]=base2[temp1] next z return thisbank BLD3 for z=0 to 3 temp1=y+z var5[z]=base3[temp1] next z return thisbank BLD4 for z=0 to 3 temp1=y+z var5[z]=base4[temp1] next z return thisbank BLD5 for z=0 to 3 temp1=y+z var5[z]=base5[temp1] next z return thisbank BLD6 for z=0 to 3 temp1=y+z var5[z]=base6[temp1] next z return thisbank BLD7 for z=0 to 3 temp1=y+z var5[z]=base7[temp1] next z return thisbank BLD8 for z=0 to 3 temp1=y+z var5[z]=base8[temp1] next z return thisbank data base1 $FF,$FF,$FF,$FF,$80,$F0,$F0,$80,$80,$E0,$E0,$80,$80,$C0,$C0,$80, $80,$80,$80,$80,$FF,$80,$80,$FF,$F8,$80,$80,$F8,$F0,$80,$80,$F0, $E0,$80,$80,$E0,$C0,$80,$80,$C0,$80,$E0,$E0,$80,$80,$E0,$E0,$80, $80,$E0,$E0,$80,$80,$FF,$FF,$80,$80,$FF,$FF,$80,$80,$00,$00,$80, $80,$00,$00,$80,$F8,$00,$00,$F8,$F8,$00,$00,$F8,$FF,$FF,$FF,$FF, $F8,$00,$00,$F8,$F0,$00,$00,$F0,$E0,$00,$00,$E0,$C0,$00,$00,$C0, $80,$F8,$F8,$80,$80,$F8,$F8,$80,$81,$FF,$FF,$81,$80,$FC,$FC,$80, $80,$E0,$E0,$80,$80,$C0,$C0,$80,$80,$80,$80,$80,$98,$80,$80,$98, $98,$80,$80,$98,$FE,$80,$80,$FE,$80,$80,$80,$80,$80,$80,$80,$80, $80,$80,$80,$80,$80,$00,$00,$80,$FF,$07,$07,$FF,$FF,$07,$07,$FF, $FF,$07,$07,$FF,$FF,$FF,$FF,$FF,$E0,$00,$00,$E0,$C0,$00,$00,$C0, $80,$00,$00,$80,$80,$00,$00,$80,$80,$F8,$F8,$80,$80,$F8,$F8,$80, $80,$C0,$F8,$FE,$80,$80,$F8,$80,$FE,$00,$F8,$80,$80,$00,$78,$80, $80,$00,$38,$80,$80,$00,$1F,$87,$80,$18,$00,$80,$80,$38,$00,$80, $80,$78,$00,$80,$80,$F8,$00,$80,$FE,$F8,$F8,$FE,$80,$F8,$F8,$80, $80,$F8,$F8,$80,$80,$F8,$F8,$80,$80,$F8,$F8,$80,$FF,$FF,$FF,$FF end data base2 $FF,$FF,$FF,$FF,$80,$00,$06,$80,$80,$00,$06,$80,$80,$00,$06,$80, $80,$00,$06,$80,$FF,$FF,$86,$F8,$80,$00,$06,$80,$80,$00,$06,$80, $80,$00,$06,$80,$80,$00,$06,$80,$87,$FF,$FF,$87,$80,$FE,$FE,$80, $80,$F8,$F8,$80,$80,$E0,$E0,$80,$80,$80,$80,$80,$F8,$00,$00,$F8, $F8,$00,$00,$F8,$F8,$00,$00,$F8,$F8,$00,$00,$F8,$FF,$FF,$FF,$FF, $FF,$03,$00,$80,$FF,$01,$00,$80,$FF,$00,$00,$80,$FE,$00,$00,$80, $FC,$80,$FF,$FF,$F8,$80,$F8,$F8,$F0,$80,$F0,$F0,$E0,$80,$E0,$E0, $C0,$F8,$C0,$C0,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80, $80,$80,$80,$80,$FF,$80,$81,$FF,$F0,$80,$80,$F0,$E0,$80,$80,$E0, $C0,$F8,$F0,$C0,$80,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$80, $80,$00,$00,$80,$FF,$FF,$FF,$FF,$F8,$00,$00,$F8,$F0,$00,$00,$F0, $E0,$00,$00,$E0,$C0,$00,$00,$C0,$80,$FE,$FC,$80,$80,$C0,$C0,$80, $80,$80,$80,$80,$80,$00,$00,$80,$80,$00,$00,$80,$FE,$00,$00,$FE, $FC,$00,$00,$FC,$F8,$00,$00,$F8,$F0,$00,$00,$F0,$E0,$FC,$FC,$E0, $C0,$C0,$C0,$C0,$80,$80,$80,$80,$80,$00,$00,$80,$86,$00,$00,$86, $87,$00,$00,$87,$87,$01,$01,$87,$87,$03,$03,$87,$FF,$FF,$FF,$FF end data base3 $FF,$FF,$FF,$FF,$80,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$80, $80,$00,$00,$80,$FF,$FF,$80,$FE,$80,$00,$00,$E0,$80,$00,$00,$C0, $80,$00,$00,$80,$80,$00,$00,$80,$87,$FF,$FF,$80,$80,$00,$0F,$80, $80,$00,$07,$80,$80,$00,$03,$80,$80,$00,$01,$80,$FF,$03,$00,$80, $FF,$03,$00,$80,$FF,$03,$00,$80,$FF,$03,$00,$80,$FF,$FF,$FF,$FF, $FF,$03,$01,$FF,$FF,$01,$01,$FF,$FF,$00,$01,$FF,$FE,$00,$01,$FF, $FC,$E0,$E1,$FF,$F8,$00,$61,$FF,$F0,$00,$61,$FF,$E0,$00,$61,$FF, $C0,$00,$61,$FF,$80,$FC,$E0,$80,$80,$00,$00,$80,$80,$00,$00,$80, $80,$00,$00,$80,$FF,$00,$00,$F8,$FF,$00,$00,$80,$FF,$00,$00,$80, $FF,$FF,$F8,$80,$FF,$00,$00,$80,$FF,$00,$00,$80,$FF,$00,$00,$FE, $FF,$00,$00,$FE,$FF,$FF,$FF,$FF,$F0,$00,$00,$F8,$E0,$00,$00,$F8, $C0,$00,$00,$F8,$80,$00,$00,$F8,$80,$C0,$FF,$FF,$80,$00,$00,$F8, $80,$00,$00,$F0,$FF,$01,$00,$E0,$F0,$00,$00,$C0,$E0,$00,$00,$80, $C0,$00,$00,$80,$80,$E0,$FE,$80,$80,$00,$1E,$80,$80,$00,$0E,$F8, $80,$00,$06,$80,$FF,$01,$06,$80,$F8,$00,$06,$80,$80,$00,$06,$80, $80,$00,$7F,$87,$80,$E0,$FF,$87,$80,$FE,$FF,$87,$FF,$FF,$FF,$FF end data base4 $FF,$FF,$FF,$FF,$80,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$80, $80,$00,$00,$80,$FF,$FF,$80,$FE,$80,$00,$00,$E0,$80,$00,$00,$C0, $80,$00,$00,$80,$80,$00,$00,$80,$87,$FF,$FF,$80,$80,$00,$0F,$80, $80,$00,$07,$80,$80,$00,$03,$80,$80,$00,$01,$80,$FF,$03,$00,$80, $FF,$03,$00,$80,$FF,$03,$00,$80,$FF,$03,$00,$80,$FF,$FF,$FF,$FF, $FF,$03,$01,$FF,$FF,$01,$01,$FF,$FF,$00,$01,$FF,$FE,$00,$01,$FF, $FC,$E0,$E1,$FF,$F8,$00,$61,$FF,$F0,$00,$61,$FF,$E0,$00,$61,$FF, $C0,$00,$61,$FF,$80,$FC,$E0,$80,$80,$00,$00,$80,$80,$00,$00,$80, $80,$00,$00,$80,$FF,$00,$00,$F8,$FF,$00,$00,$80,$FF,$00,$00,$80, $FF,$FF,$F8,$80,$FF,$00,$00,$80,$FF,$00,$00,$80,$FF,$00,$00,$FE, $FF,$00,$00,$FE,$FF,$FF,$FF,$FF,$F0,$00,$00,$F8,$E0,$00,$00,$F8, $C0,$00,$00,$F8,$80,$00,$00,$F8,$80,$C0,$FF,$FF,$80,$00,$00,$F8, $80,$00,$00,$F0,$FF,$01,$00,$E0,$F0,$00,$00,$C0,$E0,$00,$00,$80, $C0,$00,$00,$80,$80,$E0,$FE,$80,$80,$00,$1E,$80,$80,$00,$0E,$F8, $80,$00,$06,$80,$FF,$01,$06,$80,$F8,$00,$06,$80,$80,$00,$06,$80, $80,$00,$7F,$87,$80,$E0,$FF,$87,$80,$FE,$FF,$87,$FF,$FF,$FF,$FF end data base5 $FF,$FF,$FF,$FF,$80,$F0,$F0,$80,$80,$E0,$E0,$80,$80,$C0,$C0,$80, $80,$80,$80,$80,$FF,$80,$80,$FF,$FE,$80,$80,$FE,$FC,$80,$80,$FC, $F8,$80,$80,$F8,$F0,$F8,$F8,$F0,$E0,$80,$80,$E0,$C0,$80,$80,$C0, $80,$80,$80,$80,$80,$80,$80,$80,$81,$FF,$FF,$81,$80,$00,$00,$80, $80,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$80,$FF,$FF,$FF,$FF, $FC,$00,$00,$FC,$F8,$00,$00,$F8,$F0,$00,$00,$F0,$E0,$00,$00,$E0, $C0,$F8,$F8,$C0,$80,$E0,$E0,$80,$80,$C0,$C0,$80,$80,$80,$80,$80, $87,$81,$81,$87,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80, $80,$80,$80,$80,$F8,$F0,$F0,$F8,$F8,$E0,$E0,$F8,$FE,$C0,$C0,$FE, $FE,$80,$80,$FE,$FF,$01,$01,$FF,$FF,$01,$01,$FF,$FF,$07,$07,$FF, $FF,$07,$07,$FF,$FF,$FF,$FF,$FF,$80,$00,$00,$80,$80,$00,$00,$80, $80,$00,$00,$80,$80,$00,$00,$80,$80,$80,$FF,$FF,$80,$00,$00,$80, $80,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$80,$80,$FC,$E0,$80, $80,$80,$E0,$80,$80,$80,$E1,$FF,$80,$80,$E0,$80,$80,$80,$E0,$80, $FF,$83,$E0,$80,$80,$80,$E0,$80,$80,$80,$FE,$80,$80,$80,$FE,$80, $80,$80,$FE,$80,$80,$E0,$FE,$80,$80,$E0,$FE,$80,$FF,$FF,$FF,$FF end data base6 $FF,$FF,$FF,$FF,$80,$30,$00,$80,$80,$30,$00,$80,$80,$30,$00,$80, $80,$30,$00,$80,$FF,$30,$00,$FE,$80,$00,$01,$FF,$80,$00,$0F,$FF, $80,$00,$3F,$FF,$80,$00,$FF,$FF,$87,$FF,$FF,$FF,$80,$00,$FF,$FF, $80,$00,$3F,$FF,$80,$00,$0F,$FF,$80,$00,$07,$FF,$FF,$01,$01,$FF, $FF,$01,$01,$FF,$FF,$01,$01,$FF,$FF,$01,$01,$FF,$FF,$FF,$FF,$FF, $F0,$00,$00,$F0,$E0,$00,$00,$E0,$C0,$00,$00,$C0,$80,$00,$00,$80, $80,$FE,$FE,$80,$80,$80,$80,$80,$80,$80,$80,$80,$FC,$80,$80,$F8, $C0,$80,$80,$C0,$80,$80,$80,$80,$80,$FE,$FE,$80,$80,$00,$00,$80, $80,$00,$00,$80,$E0,$00,$00,$E0,$F8,$00,$00,$F8,$FE,$00,$00,$FE, $FF,$C1,$C1,$FF,$80,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$80, $80,$00,$00,$80,$FF,$FF,$FF,$FF,$80,$00,$00,$80,$80,$00,$00,$80, $80,$00,$00,$80,$80,$00,$00,$80,$80,$F8,$E0,$80,$80,$18,$00,$80, $80,$18,$00,$80,$83,$1F,$06,$80,$80,$18,$06,$80,$80,$18,$06,$80, $80,$00,$06,$80,$80,$00,$7F,$87,$80,$00,$60,$80,$FE,$00,$60,$80, $80,$00,$60,$80,$80,$00,$60,$80,$80,$F8,$E0,$F8,$80,$18,$00,$80, $80,$18,$00,$80,$86,$18,$03,$80,$86,$18,$03,$80,$FF,$FF,$FF,$FF end data base7 $FF,$FF,$FF,$FF,$80,$F8,$F8,$80,$80,$F0,$F0,$80,$80,$E0,$E0,$80, $80,$C0,$C0,$80,$F8,$80,$80,$F8,$FF,$80,$80,$FF,$F8,$80,$80,$F8, $F0,$80,$80,$F0,$E0,$E0,$E0,$E0,$C0,$F8,$F8,$C0,$80,$FF,$FF,$80, $80,$F0,$F0,$80,$80,$E0,$E0,$80,$80,$C0,$C0,$80,$F8,$00,$00,$F8, $F8,$00,$00,$F8,$FF,$03,$03,$FF,$FF,$03,$03,$FF,$FF,$FF,$FF,$FF, $FE,$00,$00,$FE,$FC,$00,$00,$FC,$F8,$00,$00,$F8,$F0,$00,$00,$F0, $E0,$1C,$1C,$E0,$C0,$7C,$7C,$C0,$80,$FC,$FC,$80,$80,$FC,$FC,$80, $83,$FF,$FF,$83,$80,$FC,$FC,$80,$80,$F8,$F8,$80,$80,$F0,$F0,$80, $80,$E0,$E0,$80,$F8,$C0,$C0,$F8,$F8,$80,$80,$F8,$F8,$80,$80,$F8, $FF,$87,$87,$FF,$80,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$80, $80,$00,$00,$80,$FF,$FF,$FF,$FF,$E0,$00,$00,$E0,$C0,$00,$00,$C0, $80,$00,$00,$80,$80,$00,$00,$80,$80,$F8,$F8,$80,$80,$E0,$E0,$80, $80,$C0,$C0,$80,$FE,$80,$80,$FE,$F8,$80,$80,$F8,$F0,$80,$80,$F0, $E0,$80,$80,$E0,$C0,$FE,$FE,$C0,$80,$FC,$FC,$80,$80,$F8,$F8,$80, $80,$F0,$F0,$80,$80,$E0,$E0,$80,$FE,$C0,$C0,$FE,$80,$80,$80,$80, $80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$80,$FF,$FF,$FF,$FF end data base8 $FF,$FF,$FF,$FF,$80,$00,$18,$80,$80,$00,$18,$80,$80,$00,$18,$80, $80,$00,$18,$80,$FF,$7F,$18,$F8,$80,$00,$18,$80,$80,$00,$18,$80, $80,$00,$18,$80,$80,$00,$18,$80,$87,$FF,$FF,$81,$80,$E0,$F8,$80, $80,$C0,$F0,$80,$80,$80,$E0,$80,$80,$00,$C0,$F8,$FE,$00,$00,$80, $FF,$01,$00,$80,$FF,$07,$00,$80,$FF,$1F,$00,$80,$FF,$FF,$FF,$FF, $FF,$1F,$00,$F8,$FF,$1F,$00,$F0,$FF,$1F,$00,$E0,$FF,$1F,$00,$C0, $FF,$FF,$E0,$80,$F8,$00,$00,$80,$F0,$00,$00,$80,$E0,$00,$00,$80, $C0,$00,$01,$FF,$80,$00,$00,$80,$80,$00,$00,$80,$80,$E0,$E0,$80, $80,$C0,$C0,$80,$F8,$80,$80,$F8,$FE,$00,$00,$FE,$FF,$01,$01,$FF, $FF,$07,$07,$FF,$80,$00,$00,$80,$80,$00,$00,$80,$80,$00,$00,$80, $80,$00,$00,$80,$FF,$FF,$FF,$FF,$F8,$00,$00,$F8,$F0,$00,$00,$F0, $E0,$00,$00,$E0,$C0,$00,$00,$C0,$80,$E0,$E0,$80,$80,$F8,$F8,$80, $80,$FE,$FE,$80,$81,$FF,$FF,$81,$80,$C0,$C0,$80,$80,$80,$80,$80, $80,$00,$00,$80,$80,$00,$00,$80,$FF,$07,$07,$FF,$FF,$01,$01,$FF, $FE,$00,$00,$FE,$F8,$80,$80,$F8,$80,$E0,$E0,$80,$80,$F8,$F8,$80, $80,$FE,$FE,$80,$81,$FF,$FF,$81,$87,$FF,$FF,$87,$FF,$FF,$FF,$FF end bank 9 rem level data bank 10 rem level info SetPath temp1=(var4*4)+d var9=Paths[temp1] return otherbank data Paths 164,114,171,101 164,212,206,101 166,209,206,101 150,217,206,101 166,211,205,74 134,115,171,101 134,213,206,101 166,197,102,37 166,99,209,77 166,113,142,101 166,115,169,74 166,213,202,101 166,85,170,101 38,165,198,101 150,219,203,101 150,107,163,101 166,115,139,101 166,115,171,69 166,213,206,69 164,102,165,74 178,205,214,105 164,214,219,105 178,214,205,74 178,91,171,101 38,51,171,101 38,149,206,101 150,107,179,141 38,165,102,37 38,179,214,141 150,214,107,37 162,115,171,101 162,213,206,101 166,213,218,141 166,99,165,74 38,179,205,74 150,214,214,105 38,165,214,105 150,107,165,74 166,85,142,101 166,213,142,37 166,115,43,37 166,211,219,105 166,115,171,98 166,213,206,98 166,115,155,105 164,214,107,37 178,219,219,141 164,205,102,37 164,102,179,141 164,102,163,101 164,214,203,101 178,214,203,101 178,205,198,101 166,113,170,101 end bank 11 bank 12 bank 13 bank 14 bank 15 bank 16