Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- rem batari Basic Program
- rem Created 11/19/2009 4:20:27 PM by Visual bB Version 1.0.0.544
- playfield:
- XX......................XXXXXXXX
- XX......................XXXX....
- XXXXXXXXXXXX....XXXX....XXXX....
- XXXXXXXXXXXX....XXXX....XXXX....
- ..................XXXXXXXXXX....
- ................................
- ....XXXXXXXXXX..................
- ....XXXX....XXXX....XXXXXXXXXXXX
- ....XXXX....XXXX....XXXXXXXXXXXX
- ....XXXX......................XX
- XXXXXXXX......................XX
- end
- player0
- player0:
- %01100110
- %01100110
- %01111110
- %01000010
- %11111111
- %10000001
- %10100101
- %11111111
- end
- player1
- player1:
- %01100110
- %01100110
- %01111110
- %01000010
- %11111111
- %10000001
- %10100101
- %11111111
- end
- COLUBK = 106
- COLUPF = 96
- scorecolor = 30
- dim missileFlag = a
- dim bomb1Timer = b
- dim bomb2Timer = c
- dim bomb1xDrop = d
- dim bomb2xDrop = e
- dim bombLeft = f
- dim swapCounter1 = g
- dim swapCounter2 = h
- dim collisionFrameCount = i
- dim p0oldX1 = j
- dim p0oldY1 = k
- dim p0oldX2 = l
- dim p0oldY2 = m
- dim p0oldX3 = n
- dim p0oldY3 = o
- dim p0oldX4 = p
- dim p0oldY4 = q
- dim p1oldX1 = r
- dim p1oldY1 = s
- dim p1oldX2 = t
- dim p1oldY2 = u
- dim p1oldX3 = v
- dim p1oldY3 = w
- dim p1oldX4 = x
- dim p1oldY4 = y
- dim directionTracking = z
- player0x = 17
- player0y = 80
- player1x = 137
- player1y = 16
- bomb1Timer = 0
- bomb2Timer = 0
- swapCounter1 = 1
- swapCounter2 = 1
- gameloop
- COLUP0 = 64
- COLUP1 = 144
- PF0 = $FF
- if switchreset then reboot
- gosub handleControls
- gosub positionTracking
- gosub handlePlayfieldCollision
- gosub handleMissileBlocking
- gosub placeMissile
- rem Bomb waiting to explode
- if missileFlag{0} then bomb1Timer = bomb1Timer + 1
- if missileFlag{1} then bomb2Timer = bomb2Timer + 1
- rem Make bomb explode
- if bomb1Timer = 60 && missileFlag{0} then bomb1Timer = 0 : missileFlag{0} = 0 : missileFlag{2} = 1
- if bomb2Timer = 60 && missileFlag{1} then bomb2Timer = 0 : missileFlag{1} = 0 : missileFlag{3} = 1
- rem Bomb explosion
- if missileFlag{2} && bombLeft{0} then missile0x = missile0x - 1 : bomb1Timer = bomb1Timer + 1
- if missileFlag{2} && !bombLeft{0} then missile0x = missile0x + 1 : bomb1Timer = bomb1Timer + 1
- if missileFlag{3} && bombLeft{1} then missile1x = missile1x - 1 : bomb2Timer = bomb2Timer + 1
- if missileFlag{3} && !bombLeft{1} then missile1x = missile1x + 1 : bomb2Timer = bomb2Timer + 1
- rem Missile direction switching
- if missileFlag{2} then gosub missile1Oscillate
- if missileFlag{3} then gosub missile2Oscillate
- rem Destroy exploding bombs after 1 second
- if missileFlag{2} && bomb1Timer >= 60 then gosub killBomb1
- if missileFlag{3} && bomb2Timer >= 60 then gosub killBomb2
- rem Score incrementing
- if collision(player0, missile0) && missileFlag{2} then score = score + 10 : player0x = 17 : player0y = 80 : player1x = 137 : player1y = 16 : gosub killBombs
- if collision(player0, missile1) && missileFlag{3} then score = score + 10 : player0x = 17 : player0y = 80 : player1x = 137 : player1y = 16 : gosub killBombs
- if collision(player1, missile0) && missileFlag{2} then score = score + 10000 : player0x = 17 : player0y = 80 : player1x = 137 : player1y = 16 : gosub killBombs
- if collision(player1, missile1) && missileFlag{3} then score = score + 10000 : player0x = 17 : player0y = 80 : player1x = 137 : player1y = 16 : gosub killBombs
- drawscreen
- goto gameloop
- rem SUBROUTINES
- handleControls
- if joy0up then player0y = player0y - 1
- if joy0down then player0y = player0y + 1
- if joy0left then player0x = player0x - 1
- if joy0right then player0x = player0x + 1
- if joy1up then player1y = player1y - 1
- if joy1down then player1y = player1y + 1
- if joy1left then player1x = player1x - 1
- if joy1right then player1x = player1x + 1
- return
- positionTracking
- p0oldX4 = p0oldX3
- p0oldX3 = p0oldX2
- p0oldX2 = p0oldX1
- p0oldX1 = player0x
- p0oldY4 = p0oldY3
- p0oldY3 = p0oldY2
- p0oldY2 = p0oldY1
- p0oldY1 = player0y
- p1oldX4 = p1oldX3
- p1oldX3 = p1oldX2
- p1oldX2 = p1oldX1
- p1oldX1 = player1x
- p1oldY4 = p1oldY3
- p1oldY3 = p1oldY2
- p1oldY2 = p1oldY1
- p1oldY1 = player1y
- return
- handlePlayfieldCollision
- if collision(player0, playfield) then player0x = p0oldX3 : player0y = p0oldY3
- if collision(player0, playfield) then player1x = p1oldX3 : player1y = p1oldY3
- return
- handleMissileBlocking
- if collision(missile0, player0) && missileFlag{0} then player0x = p0oldX4 : player0y = p0oldY4
- if collision(missile0, player1) && missileFlag{0} then player1x = p1oldX4 : player1y = p1oldY4
- if collision(missile1, player0) && missileFlag{1} then player0x = p0oldX4 : player0y = p0oldY4
- if collision(missile1, player1) && missileFlag{1} then player1x = p1oldX4 : player1y = p1oldY4
- return
- placeMissile
- if joy0fire && !missileFlag{0} && !missileFlag{2} && directionTracking{0} then missile0height = 1 : missile0x = player0x + 4 : missile0y = player0y - 16 : missileFlag{0} = 1 : bomb1xDrop = missile0x
- if joy0fire && !missileFlag{0} && !missileFlag{2} && directionTracking{1} then missile0height = 1 : missile0x = player0x + 4 : missile0y = player0y + 10 : missileFlag{0} = 1 : bomb1xDrop = missile0x
- if joy0fire && !missileFlag{0} && !missileFlag{2} && directionTracking{2} then missile0height = 1 : missile0x = player0x - 10 : missile0y = player0y - 4 : missileFlag{0} = 1 : bomb1xDrop = missile0x
- if joy0fire && !missileFlag{0} && !missileFlag{2} && directionTracking{3} then missile0height = 1 : missile0x = player0x + 16 : missile0y = player0y - 4 : missileFlag{0} = 1 : bomb1xDrop = missile0x
- rem temp2 = directionTracking & $FF
- rem if joy0fire && !missileFlag{0} && !missileFlag{2} && temp2 > $0F then missile0height = 1 : missile0x = player0x + 10 : missile0y = player0y - 4 : missileFlag{0} = 1 : bomb1xDrop = missile0x
- if joy1fire && !missileFlag{1} && !missileFlag{3} && directionTracking{4} then missile1height = 1 : missile1x = player1x + 4 : missile1y = player1y - 16 : missileFlag{1} = 1 : bomb2xDrop = missile1x
- if joy1fire && !missileFlag{1} && !missileFlag{3} && directionTracking{5} then missile1height = 1 : missile1x = player1x + 4 : missile1y = player1y + 10 : missileFlag{1} = 1 : bomb2xDrop = missile1x
- if joy1fire && !missileFlag{1} && !missileFlag{3} && directionTracking{6} then missile1height = 1 : missile1x = player1x - 10 : missile1y = player1y - 4 : missileFlag{1} = 1 : bomb2xDrop = missile1x
- if joy1fire && !missileFlag{1} && !missileFlag{3} && directionTracking{7} then missile1height = 1 : missile1x = player1x + 16 : missile1y = player1y - 4 : missileFlag{1} = 1 : bomb2xDrop = missile1x
- rem temp2 = directionTracking & $0F
- rem if joy1fire && !missileFlag{1} && !missileFlag{3} && temp2 > 0 then missile1height = 1 : missile1x = player1x + 10 : missile1y = player1y - 4 : missileFlag{1} = 1 : bomb2xDrop = missile1x
- return
- killBombs
- gosub killBomb1
- gosub killBomb2
- return
- killBomb1
- missileFlag{2} = 0 : bomb1Timer = 0 : missile0y = 0 : missile0height = 0 : swapCounter1 = 0
- return
- killBomb2
- missileFlag{3} = 0 : bomb2Timer = 0 : missile1y = 0 : missile1height = 0 : swapCounter2 = 0
- return
- missile1Oscillate
- temp2 = missile0x - bomb1xDrop
- if temp2 < 0 then temp2 = bomb1xDrop - missile0x
- temp3 = swapCounter1 * 2
- if temp3 <= temp2 then bombLeft{0} = !bombLeft{0} : missile0height = missile0height + 1 : swapCounter1 = swapCounter1 + 1 : missileFlag{4} = !missileFlag{4}
- if missileFlag{4} && temp3 <= temp2 then missile0y = missile0y + 1
- return
- missile2Oscillate
- temp4 = missile1x - bomb2xDrop
- if temp4 < 0 then temp4 = bomb2xDrop - missile1x
- temp5 = swapCounter2 * 2
- if temp5 <= temp4 then bombLeft{1} = !bombLeft{1} : missile1height = missile1height + 1 : swapCounter2 = swapCounter2 + 1 : missileFlag{5} = !missileFlag{5}
- if temp5 <= temp4 && missileFlag{5} then missile1y = missile1y + 1
- return
Add Comment
Please, Sign In to add comment