rem 8 Tanks rem by Fort Apocalypse rem written in bB 1.5 rem A game for 8 players with a Quadtari and rem 4 sets of paddles, each player using the rem paddle button to control their tank. rem To configure game to play in Stella 6.7: rem Highlight game, go to Options, Game Properties, rem Controllers, Quadtari button, Choose Paddles rem for each of the four controllers, Ok, Ok, Close, rem then start game and use these default keys to rem use the paddle buttons to control the tanks: rem space, 4, F, 6, shift-space, rem shift-4, shift-F, shift-6. rem To compile: ensure you are in a directory rem that has the Quadtari DPCplus_kernel.asm rem from: rem https://atariage.com/forums/topic/316896-quadtari-sample-code-for-bb/ include div_mul.asm set kernel DPC+ set tv ntsc set kernel_options collision(player1,playfield) goto __Bank_2 bank2 bank 2 temp1=temp1 __Bank_2 rem Quadtari magic dim qtcontroller=i rem Quadtari detection for Stella data quadtari_detection $1B, $1F, $0B, $0E, $1E, $0B, $1C, $13 end DF4FRACINC = 0 pfcolors: $0E end DF6FRACINC = 0 bkcolors: $00 end scorecolors: $00 $00 $00 $00 $00 $00 $00 $00 end player1color: $44 $44 $44 $44 $44 $44 $44 $44 $44 $44 end player2color: $84 $84 $84 $84 $84 $84 $84 $84 $84 $84 end player3color: $CC $CC $CC $CC $CC $CC $CC $CC $CC $CC end player4color: $3E $3E $3E $3E $3E $3E $3E $3E $3E $3E end player5color: $FE $FE $FE $FE $FE $FE $FE $FE $FE $FE end player6color: $5A $5A $5A $5A $5A $5A $5A $5A $5A $5A end player7color: $AE $AE $AE $AE $AE $AE $AE $AE $AE $AE end player8color: $1E $1E $1E $1E $1E $1E $1E $1E $1E $1E end player9color: $0E end DF0FRACINC = 128 ; Column 0. DF1FRACINC = 128 ; Column 1. DF2FRACINC = 128 ; Column 2. DF3FRACINC = 128 ; Column 3. const pfscore=1 dim player1dir=a dim player2dir=b dim player3dir=c dim player4dir=d dim player5dir=e dim player6dir=f dim player7dir=g dim player8dir=h rem this is set in code above... rem dim qtcontroller=i dim vari=var0 dim b0dir=j dim b1dir=k dim b2dir=l dim b3dir=m dim timern=n dim b4dir=o dim b5dir=p dim b6dir=q dim b7dir=r dim bxalt1=s dim byalt1=t dim bxalt2=u dim byalt2=v dim bxalt3=w dim byalt3=x dim bxalt4=y dim byalt4=z goto __Bank_3 bank3 bank 3 temp1=temp1 __Bank_3 init1 missile0height=2 missile1height=2 ballheight=2 player9: %10000000 end playfield: .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. .X............................X. .X............................X. XX............................XX XX............................XX X.............X................X X.............X................X X.............X................X X.............X................X X.............X................X X.............X................X X.............X................X X.....X..........X......X......X X.....X..........X......X......X X.....X..........X......X......X X.....X..........X......X......X X.....XXX........X....XXX......X X.....XXX........X....XXX......X X.......X........X....X........X X.......X........X....X........X X.......X........XX...X........X X.......X........XX...X........X X.......X.............X........X X..............................X X..............................X X..............................X X..............................X X..............................X X..............................X X.....................XXX......X X.....................XXX......X X.....XXX......................X X.....XXX......................X X..............................X X..............................X X.............X................X X.............X..........XXXX..X X........................XXXX..X X..............................X X..............................X X.....X...X.........XX.........X X.....X...X.........XX.........X X.....X...X.........X..........X X..XXXX...XX........X..........X X..XXXX...XX........X..........X X...................X..........X X...................X..........X X..............................X X................X.....XXXX....X X................X.....XXXX....X X................X........X....X X................X........X....X X....X..X.................X....X X....X..X................XX....X X....X..X................XX....X X....XXXX......................X X....XXXX......................X X...XX.........................X X...XX.........................X X..............................X X..............................X X..............................X X..............................X X..............XX..............X X.....X........XX........X.....X X.....X.........X........X.....X X.....X.........X........X.....X X.....X..................X.....X X.....X..................X.....X X.....X..................X.....X X.....X..................X.....X X.....X....X.......X.....X.....X X.....X....X.......X.....X.....X X.....XXX..X.......X...XXX.....X X.......X..X.......X...X.......X X.......X..X...X...X...X.......X X.......X..X...X...X...X.......X X..............X...............X X..............X...............X X..............X...............X X..............X...............X X..............X...............X XX.............X..............XX XX............................XX .X............................X. .X............................X. .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. .XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX. end playfieldpos=8 initgame initround bally=240 : missile0y=240 : missile1y=240 : player9y=240 : byalt1=240 : byalt2=240 : byalt3=240 : byalt4=240 gosub player1home gosub player2home gosub player3home gosub player4home gosub player5home gosub player6home gosub player7home gosub player8home mainloop rem swap ball coords with alternate temp6=ballx : temp7=bally : ballx=bxalt1 : bally=byalt1 : bxalt1=temp6+1-1 : byalt1=temp7+1-1 temp6=missile0x : temp7=missile0y : missile0x=bxalt2 : missile0y=byalt2 : bxalt2=temp6+1-1 : byalt2=temp7+1-1 temp6=missile1x : temp7=missile1y : missile1x=bxalt3 : missile1y=byalt3 : bxalt3=temp6+1-1 : byalt3=temp7+1-1 temp6=player9x : temp7=player9y : player9x=bxalt4 : player9y=byalt4 : bxalt4=temp6+1-1 : byalt4=temp7+1-1 n=n+1 COLUPF=$0E COLUM0=$0E COLUM1=$0E pfscorecolor=$9C rem Quadtari registers paddle buttons as joystick rem going left or right (corresponding to each paddle). rem you can only check two (pairs) at a time. rem the idea here is that you can control the tank rem by holding the button down to move forward or rem by releasing the button to turn clockwise. if qtcontroller then goto paddleset3and4 if !joy0left then player1dir=player1dir+1 if !joy0right then player2dir=player2dir+1 if !joy1left then player3dir=player3dir+1 if !joy1right then player4dir=player4dir+1 goto pdira bank4 afterpdira if b0dir<8 then on b0dir gosub ballu ballur ballr balldr balld balldl balll ballul if b1dir<8 then on b1dir gosub missile0u missile0ur missile0r missile0dr missile0d missile0dl missile0l missile0ul if b2dir<8 then on b2dir gosub missile1u missile1ur missile1r missile1dr missile1d missile1dl missile1l missile1ul if b3dir<8 then on b3dir gosub player9u player9ur player9r player9dr player9d player9dr player9dl player9l player9ul if b0dir>7 then bally=240 if b1dir>7 then missile0y=240 if b2dir>7 then missile1y=240 if b3dir>7 then player9y=240 if ballx<19 || ballx>133 then bally=240 : b0dir=255 if missile0x<19 || missile0x>133 then missile0y=240 : b1dir=255 if missile1x<19 || missile1x>133 then missile1y=240 : b2dir=255 if player9x<19 || player9x>133 then player9y=240 : b3dir=255 if bally<1 || bally>171 then bally=240 : b0dir=255 if missile0y<1 || missile0y>171 then missile0y=240 : b1dir=255 if missile1y<1 || missile1y>171 then missile1y=240 : b2dir=255 if player9y<1 || player9y>171 then player9y=240 : b3dir=255 qtcontroller=1 AUDV1=0 goto aftercheckpaddles paddleset3and4 if !joy0left then player5dir=player5dir+1 if !joy0right then player6dir=player6dir+1 if !joy1left then player7dir=player7dir+1 if !joy1right then player8dir=player8dir+1 goto pdirb bank5 afterpdirb if b4dir<8 then on b4dir gosub ballu ballur ballr balldr balld balldl balll ballul if b5dir<8 then on b5dir gosub missile0u missile0ur missile0r missile0dr missile0d missile0dl missile0l missile0ul if b6dir<8 then on b6dir gosub missile1u missile1ur missile1r missile1dr missile1d missile1dl missile1l missile1ul if b7dir<8 then on b7dir gosub player9u player9ur player9r player9dr player9d player9dr player9dl player9l player9ul if b4dir>7 then bally=240 if b5dir>7 then missile0y=240 if b6dir>7 then missile1y=240 if b7dir>7 then player9y=240 if ballx<19 || ballx>133 then bally=240 : b4dir=255 if missile0x<19 || missile0x>133 then missile0y=240 : b5dir=255 if missile1x<19 || missile1x>133 then missile1y=240 : b6dir=255 if player9x<19 || player9x>133 then player9y=240 : b7dir=255 if bally<1 || bally>171 then bally=240 : b4dir=255 if missile0y<1 || missile0y>171 then missile0y=240 : b5dir=255 if missile1y<1 || missile1y>171 then missile1y=240 : b6dir=255 if player9y<1 || player9y>171 then player9y=240 : b7dir=255 qtcontroller=0 AUDV0=0 aftercheckpaddles gosub checkbounds drawscreen if collision(playfield, ball) then bally=240 if collision(playfield, missile0) then missile0y=240 if collision(playfield, missile1) then missile1y=240 if !collision(playfield, player1) then goto afterp9cl if (temp3 + 5) >= player9x && temp3 <= (player9x + 1) && (temp4 + 5) >= player9y && temp4 <= (player9y + 1) then player9y=240 afterp9cl goto mainloop ballu bally=bally-4 return ballur ballx=ballx+2 : bally=bally-2 return ballr ballx=ballx+4 return balldr ballx=ballx+2 : bally=bally+2 return balld bally=bally+4 return balldl ballx=ballx-2 : bally=bally+2 return balll ballx=ballx-4 return ballul ballx=ballx-2 : bally=bally-2 return missile0u missile0y=missile0y-4 return missile0ur missile0x=missile0x+2 : missile0y=missile0y-2 return missile0r missile0x=missile0x+4 return missile0dr missile0x=missile0x+2 : missile0y=missile0y+2 return missile0d missile0y=missile0y+4 return missile0dl missile0x=missile0x-2 : missile0y=missile0y+2 return missile0l missile0x=missile0x-4 return missile0ul missile0x=missile0x-2 : missile0y=missile0y-2 return missile1u missile1y=missile1y-4 return missile1ur missile1x=missile1x+2 : missile1y=missile1y-2 return missile1r missile1x=missile1x+4 return missile1dr missile1x=missile1x+2 : missile1y=missile1y+2 return missile1d missile1y=missile1y+4 return missile1dl missile1x=missile1x-2 : missile1y=missile1y+2 return missile1l missile1x=missile1x-4 return missile1ul missile1x=missile1x-2 : missile1y=missile1y-2 return player9u player9y=player9y-4 return player9ur player9x=player9x+2 : player9y=player9y-2 return player9r player9x=player9x+4 return player9dr player9x=player9x+2 : player9y=player9y+2 return player9d player9y=player9y+4 return player9dl player9x=player9x-2 : player9y=player9y+2 return player9l player9x=player9x-4 return player9ul player9x=player9x-2 : player9y=player9y-2 return player1home player1x=52 : player1y=18 : player1dir=127 return player2home player2x=98 : player2y=18 : player2dir=127 return player3home player3x=123 : player3y=45 : player3dir=195 return player4home player4x=125 : player4y=125 : player4dir=195 return player5home player5x=98 : player5y=152 : player5dir=0 return player6home player6x=52 : player6y=152 : player6dir=0 return player7home player7x=27 : player7y=123 : player7dir=63 return player8home player8x=25 : player8y=45 : player8dir=63 return checkbounds if player1x<19 then player1x=19 if player2x<19 then player2x=19 if player3x<19 then player3x=19 if player4x<19 then player4x=19 if player5x<19 then player5x=19 if player6x<19 then player6x=19 if player7x<19 then player7x=19 if player8x<19 then player8x=19 if player1x>133 then player1x=133 if player2x>133 then player2x=133 if player3x>133 then player3x=133 if player4x>133 then player4x=133 if player5x>133 then player5x=133 if player6x>133 then player6x=133 if player7x>133 then player7x=133 if player8x>133 then player8x=133 if player1y<2 then player1y=2 if player2y<2 then player2y=2 if player3y<2 then player3y=2 if player4y<2 then player4y=2 if player5y<2 then player5y=2 if player6y<2 then player6y=2 if player7y<2 then player7y=2 if player8y<2 then player8y=2 if player1y>171 && player1y<>240 then player1y=171 if player2y>171 && player2y<>240 then player2y=171 if player3y>171 && player3y<>240 then player3y=171 if player4y>171 && player4y<>240 then player4y=171 if player5y>171 && player5y<>240 then player5y=171 if player6y>171 && player6y<>240 then player6y=171 if player7y>171 && player7y<>240 then player7y=171 if player8y>171 && player8y<>240 then player8y=171 return goto __Bank_4 bank4 bank 4 temp1=temp1 __Bank_4 pdira temp5=player1dir/32 : vari=player1x : temp7=player1y if temp5>4 then temp6=255 : _NUSIZ1{3}=1 else temp6=1 : _NUSIZ1{3}=0 on temp5 goto player1u player1ur player1r player1dr player1d player1dr player1r player1ur afterdirplayer1 temp5=player2dir/32 : vari=player2x : temp7=player2y if temp5>4 then temp6=255 : NUSIZ2{3}=1 else temp6=1 : NUSIZ2{3}=0 on temp5 goto player2u player2ur player2r player2dr player2d player2dr player2r player2ur afterdirplayer2 temp5=player3dir/32 : vari=player3x : temp7=player3y if temp5>4 then temp6=255 : NUSIZ3{3}=1 else temp6=1 : NUSIZ3{3}=0 on temp5 goto player3u player3ur player3r player3dr player3d player3dr player3r player3ur afterdirplayer3 temp5=player4dir/32 : vari=player4x : temp7=player4y if temp5>4 then temp6=255 : NUSIZ4{3}=1 else temp6=1 : NUSIZ4{3}=0 on temp5 goto player4u player4ur player4r player4dr player4d player4dr player4r player4ur afterdirplayer4 goto afterpdira bank3 player1u player1: %00010000 %00010000 %01111100 %01111100 %01111100 end if !joy0left then goto afterdirplayer1 player1y=player1y-2 if b0dir<8 then goto afterdirplayer1 b0dir=0 : ballx=player1x+5 : bally=player1y+2 gosub shoot0 goto afterdirplayer1 player1ur player1: %00000000 %00110100 %01111000 %00111100 %00011000 end if !joy0left then goto afterdirplayer1 player1x=player1x+temp6 : player1y=player1y-1 if b0dir<8 then goto afterdirplayer1 if temp6<128 then b0dir=1 else b0dir=7 ballx=player1x+5 : bally=player1y+2 gosub shoot0 goto afterdirplayer1 player1r player1: %01110000 %01110000 %01111100 %01110000 %01110000 end if !joy0left then goto afterdirplayer1 player1x=player1x+temp6+temp6 if b0dir<8 then goto afterdirplayer1 if temp6<128 then b0dir=2 else b0dir=6 ballx=player1x+5 : bally=player1y+2 gosub shoot0 goto afterdirplayer1 player1dr player1: %00011000 %00111100 %01111000 %00110100 %00000000 end if !joy0left then goto afterdirplayer1 player1x=player1x+temp6 : player1y=player1y+1 if b0dir<8 then goto afterdirplayer1 if temp6<128 then b0dir=3 else b0dir=5 ballx=player1x+5 : bally=player1y+2 gosub shoot0 goto afterdirplayer1 player1d player1: %00111110 %00111110 %00111110 %00001000 %00001000 end if !joy0left then goto afterdirplayer1 player1y=player1y+2 if b0dir<8 then goto afterdirplayer1 b0dir=4 : ballx=player1x+5 : bally=player1y+2 gosub shoot0 goto afterdirplayer1 player2u player2: %00010000 %00010000 %01111100 %01111100 %01111100 end if !joy0right then goto afterdirplayer2 player2y=player2y-2 if b1dir<8 then goto afterdirplayer2 b1dir=0 : missile0x=player2x+5 : missile0y=player2y+2 gosub shoot1 goto afterdirplayer2 player2ur player2: %00000000 %00110100 %01111000 %00111100 %00011000 end if !joy0right then goto afterdirplayer2 player2x=player2x+temp6 : player2y=player2y-1 if b1dir<8 then goto afterdirplayer2 if temp6<128 then b1dir=1 else b1dir=7 missile0x=player2x+5 : missile0y=player2y+2 gosub shoot1 goto afterdirplayer2 player2r player2: %01110000 %01110000 %01111100 %01110000 %01110000 end if !joy0right then goto afterdirplayer2 player2x=player2x+temp6+temp6 if b1dir<8 then goto afterdirplayer2 if temp6<128 then b1dir=2 else b1dir=6 missile0x=player2x+5 : missile0y=player2y+2 gosub shoot1 goto afterdirplayer2 player2dr player2: %00011000 %00111100 %01111000 %00110100 %00000000 end if !joy0right then goto afterdirplayer2 player2x=player2x+temp6 : player2y=player2y+1 if b1dir<8 then goto afterdirplayer2 if temp6<128 then b1dir=3 else b1dir=5 missile0x=player2x+5 : missile0y=player2y+2 gosub shoot1 goto afterdirplayer2 player2d player2: %00111110 %00111110 %00111110 %00001000 %00001000 end if !joy0right then goto afterdirplayer2 player2y=player2y+2 if b1dir<8 then goto afterdirplayer2 b1dir=4 : missile0x=player2x+5 : missile0y=player2y+2 gosub shoot1 goto afterdirplayer2 player3u player3: %00010000 %00010000 %01111100 %01111100 %01111100 end if !joy1left then goto afterdirplayer3 player3y=player3y-2 if b2dir<8 then goto afterdirplayer3 b2dir=0 : missile1x=player3x+5 : missile1y=player3y+2 gosub shoot2 goto afterdirplayer3 player3ur player3: %00000000 %00110100 %01111000 %00111100 %00011000 end if !joy1left then goto afterdirplayer3 player3x=player3x+temp6 : player3y=player3y-1 if b2dir<8 then goto afterdirplayer3 if temp6<128 then b2dir=1 else b2dir=7 missile1x=player3x+5 : missile1y=player3y+2 gosub shoot2 goto afterdirplayer3 player3r player3: %01110000 %01110000 %01111100 %01110000 %01110000 end if !joy1left then goto afterdirplayer3 player3x=player3x+temp6+temp6 if b2dir<8 then goto afterdirplayer3 if temp6<128 then b2dir=2 else b2dir=6 missile1x=player3x+5 : missile1y=player3y+2 gosub shoot2 goto afterdirplayer3 player3dr player3: %00011000 %00111100 %01111000 %00110100 %00000000 end if !joy1left then goto afterdirplayer3 player3x=player3x+temp6 : player3y=player3y+1 if b2dir<8 then goto afterdirplayer3 if temp6<128 then b2dir=3 else b2dir=5 missile1x=player3x+5 : missile1y=player3y+2 gosub shoot2 goto afterdirplayer3 player3d player3: %00111110 %00111110 %00111110 %00001000 %00001000 end if !joy1left then goto afterdirplayer3 player3y=player3y+2 if b2dir<8 then goto afterdirplayer3 b2dir=4 : missile1x=player3x+5 : missile1y=player3y+2 gosub shoot2 goto afterdirplayer3 player4u player4: %00010000 %00010000 %01111100 %01111100 %01111100 end if !joy1right then goto afterdirplayer4 player4y=player4y-2 if b3dir<8 then goto afterdirplayer4 b3dir=0 : player9x=player4x+5 : player9y=player4y+2 gosub shoot3 goto afterdirplayer4 player4ur player4: %00000000 %00110100 %01111000 %00111100 %00011000 end if !joy1right then goto afterdirplayer4 player4x=player4x+temp6 : player4y=player4y-1 if b3dir<8 then goto afterdirplayer4 if temp6<128 then b3dir=1 else b3dir=7 player9x=player4x+5 : player9y=player4y+2 gosub shoot3 goto afterdirplayer4 player4r player4: %01110000 %01110000 %01111100 %01110000 %01110000 end if !joy1right then goto afterdirplayer4 player4x=player4x+temp6+temp6 if b3dir<8 then goto afterdirplayer4 if temp6<128 then b3dir=2 else b3dir=6 player9x=player4x+5 : player9y=player4y+2 gosub shoot3 goto afterdirplayer4 player4dr player4: %00011000 %00111100 %01111000 %00110100 %00000000 end if !joy1right then goto afterdirplayer4 player4x=player4x+temp6 : player4y=player4y+1 if b3dir<8 then goto afterdirplayer4 if temp6<128 then b3dir=3 else b3dir=5 player9x=player4x+5 : player9y=player4y+2 gosub shoot3 goto afterdirplayer4 player4d player4: %00111110 %00111110 %00111110 %00001000 %00001000 end if !joy1right then goto afterdirplayer4 player4y=player4y+2 if b3dir<8 then goto afterdirplayer4 b3dir=4 : player9x=player4x+5 : player9y=player4y+2 gosub shoot3 goto afterdirplayer4 shoot0 AUDC0=8 : AUDF0=20 : AUDV0=8 return shoot1 AUDC0=8 : AUDF0=21 : AUDV0=8 return shoot2 AUDC0=8 : AUDF0=22 : AUDV0=8 return shoot3 AUDC0=8 : AUDF0=23 : AUDV0=8 return goto __Bank_5 bank5 bank 5 temp1=temp1 __Bank_5 pdirb temp5=player5dir/32 : vari=player5x : temp7=player5y if temp5>4 then temp6=255 : NUSIZ5{3}=1 else temp6=1 : NUSIZ5{3}=0 on temp5 goto player5u player5ur player5r player5dr player5d player5dr player5r player5ur afterdirplayer5 temp5=player6dir/32 : vari=player6x : temp7=player6y if temp5>4 then temp6=255 : NUSIZ6{3}=1 else NUSIZ5{3}=0 on temp5 goto player6u player6ur player6r player6dr player6d player6dr player6r player6ur afterdirplayer6 temp5=player7dir/32 : vari=player7x : temp7=player7y if temp5>4 then temp6=255 : NUSIZ7{3}=1 else temp6=1 : NUSIZ7{3}=0 on temp5 goto player7u player7ur player7r player7dr player7d player7dr player7r player7ur afterdirplayer7 temp5=player8dir/32 : vari=player8x : temp7=player8y if temp5>4 then temp6=255 : NUSIZ8{3}=1 else temp6=1 : NUSIZ8{3}=0 on temp5 goto player8u player8ur player8r player8dr player8d player8dr player8r player8ur afterdirplayer8 goto afterpdirb bank3 player5u player5: %00010000 %00010000 %01111100 %01111100 %01111100 end if !joy0left then goto afterdirplayer5 player5y=player5y-2 if b4dir<8 then goto afterdirplayer5 b4dir=0 : ballx=player5x+5 : bally=player5y+2 gosub shoot4 goto afterdirplayer5 player5ur player5: %00000000 %00110100 %01111000 %00111100 %00011000 end if !joy0left then goto afterdirplayer5 player5x=player5x+temp6 : player5y=player5y-1 if b4dir<8 then goto afterdirplayer5 if temp6<128 then b4dir=1 else b4dir=7 ballx=player5x+5 : bally=player5y+2 gosub shoot4 goto afterdirplayer5 player5r player5: %01110000 %01110000 %01111100 %01110000 %01110000 end if !joy0left then goto afterdirplayer5 player5x=player5x+temp6+temp6 if b4dir<8 then goto afterdirplayer5 if temp6<128 then b4dir=2 else b4dir=6 ballx=player5x+5 : bally=player5y+2 gosub shoot4 goto afterdirplayer5 player5dr player5: %00011000 %00111100 %01111000 %00110100 %00000000 end if !joy0left then goto afterdirplayer5 player5x=player5x+temp6 : player5y=player5y+1 if b4dir<8 then goto afterdirplayer5 if temp6<128 then b4dir=3 else b4dir=5 ballx=player5x+5 : bally=player5y+2 gosub shoot4 goto afterdirplayer5 player5d player5: %00111110 %00111110 %00111110 %00001000 %00001000 end if !joy0left then goto afterdirplayer5 player5y=player5y+2 if b4dir<8 then goto afterdirplayer5 b4dir=4 : ballx=player5x+5 : bally=player5y+2 gosub shoot4 goto afterdirplayer5 player6u player6: %00010000 %00010000 %01111100 %01111100 %01111100 end if !joy0right then goto afterdirplayer6 player6y=player6y-2 if b5dir<8 then goto afterdirplayer6 b5dir=0 : missile0x=player6x+5 : missile0y=player6y+2 gosub shoot5 goto afterdirplayer6 player6ur player6: %00000000 %00110100 %01111000 %00111100 %00011000 end if !joy0right then goto afterdirplayer6 player6x=player6x+temp6 : player6y=player6y-1 if b5dir<8 then goto afterdirplayer6 if temp6<128 then b5dir=1 else b5dir=7 missile0x=player6x+5 : missile0y=player6y+2 gosub shoot5 goto afterdirplayer6 player6r player6: %01110000 %01110000 %01111100 %01110000 %01110000 end if !joy0right then goto afterdirplayer6 player6x=player6x+temp6+temp6 if b5dir<8 then goto afterdirplayer6 if temp6<128 then b5dir=2 else b5dir=6 missile0x=player6x+5 : missile0y=player6y+2 gosub shoot5 goto afterdirplayer6 player6dr player6: %00011000 %00111100 %01111000 %00110100 %00000000 end if !joy0right then goto afterdirplayer6 player6x=player6x+temp6 : player6y=player6y+1 if b5dir<8 then goto afterdirplayer6 if temp6<128 then b5dir=3 else b5dir=5 missile0x=player6x+5 : missile0y=player6y+2 gosub shoot5 goto afterdirplayer6 player6d player6: %00111110 %00111110 %00111110 %00001000 %00001000 end if !joy0right then goto afterdirplayer6 player6y=player6y+2 if b5dir<8 then goto afterdirplayer6 b5dir=4 : missile0x=player6x+5 : missile0y=player6y+2 gosub shoot5 goto afterdirplayer6 player7u player7: %00010000 %00010000 %01111100 %01111100 %01111100 end if !joy1left then goto afterdirplayer7 player7y=player7y-2 if b6dir<8 then goto afterdirplayer7 b6dir=0 : missile1x=player7x+5 : missile1y=player7y+2 gosub shoot6 goto afterdirplayer7 player7ur player7: %00000000 %00110100 %01111000 %00111100 %00011000 end if !joy1left then goto afterdirplayer7 player7x=player7x+temp6 : player7y=player7y-1 if b6dir<8 then goto afterdirplayer7 if temp6<128 then b6dir=1 else b6dir=7 missile1x=player7x+5 : missile1y=player7y+2 gosub shoot6 goto afterdirplayer7 player7r player7: %01110000 %01110000 %01111100 %01110000 %01110000 end if !joy1left then goto afterdirplayer7 player7x=player7x+temp6+temp6 if b6dir<8 then goto afterdirplayer7 if temp6<128 then b6dir=2 else b6dir=6 missile1x=player7x+5 : missile1y=player7y+2 gosub shoot6 goto afterdirplayer7 player7dr player7: %00011000 %00111100 %01111000 %00110100 %00000000 end if !joy1left then goto afterdirplayer7 player7x=player7x+temp6 : player7y=player7y+1 if b6dir<8 then goto afterdirplayer7 if temp6<128 then b6dir=3 else b6dir=5 missile1x=player7x+5 : missile1y=player7y+2 gosub shoot6 goto afterdirplayer7 player7d player7: %00111110 %00111110 %00111110 %00001000 %00001000 end if !joy1left then goto afterdirplayer7 player7y=player7y+2 if b6dir<8 then goto afterdirplayer7 b6dir=4 : missile1x=player7x+5 : missile1y=player7y+2 gosub shoot6 goto afterdirplayer7 player8u player8: %00010000 %00010000 %01111100 %01111100 %01111100 end if !joy1right then goto afterdirplayer8 player8y=player8y-2 if b7dir<8 then goto afterdirplayer8 b7dir=0 : player9x=player8x+5 : player9y=player8y+2 gosub shoot7 goto afterdirplayer8 player8ur player8: %00000000 %00110100 %01111000 %00111100 %00011000 end if !joy1right then goto afterdirplayer8 player8x=player8x+temp6 : player8y=player8y-1 if b7dir<8 then goto afterdirplayer8 if temp6<128 then b7dir=1 else b7dir=7 player9x=player8x+5 : player9y=player8y+2 gosub shoot7 goto afterdirplayer8 player8r player8: %01110000 %01110000 %01111100 %01110000 %01110000 end if !joy1right then goto afterdirplayer8 player8x=player8x+temp6+temp6 if b7dir<8 then goto afterdirplayer8 if temp6<128 then b7dir=2 else b7dir=6 player9x=player8x+5 : player9y=player8y+2 gosub shoot7 goto afterdirplayer8 player8dr player8: %00011000 %00111100 %01111000 %00110100 %00000000 end if !joy1right then goto afterdirplayer8 player8x=player8x+temp6 : player8y=player8y+1 if b7dir<8 then goto afterdirplayer8 if temp6<128 then b7dir=3 else b7dir=5 player9x=player8x+5 : player9y=player8y+2 gosub shoot7 goto afterdirplayer8 player8d player8: %00111110 %00111110 %00111110 %00001000 %00001000 end if !joy1right then goto afterdirplayer8 player8y=player8y+2 if b7dir<8 then goto afterdirplayer8 b7dir=4 : player9x=player8x+5 : player9y=player8y+2 gosub shoot7 goto afterdirplayer8 shoot4 AUDC0=8 : AUDF0=20 : AUDV0=8 return shoot5 AUDC0=8 : AUDF0=21 : AUDV0=8 return shoot6 AUDC0=8 : AUDF0=22 : AUDV0=8 return shoot7 AUDC0=8 : AUDF0=23 : AUDV0=8 return