Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- set kernel_options no_blank_lines player1colors
- set romsize 8k
- set smartbranching on
- title_screen
- player1x=58 : player1y=96
- playfield:
- .XX.XX.XX.X..X..XX...............
- .X...X.X..XX.X..XX.........XX....
- .X..XX.XX.X..X..XX.........X.....
- .X..XX..X.X..X..X.......XX.XX....
- .XX.XX.XX.XX.XX.XXX.....XX.X.....
- ..................X.....XX.X.....
- ..................X..............
- .................XX.XX.XX.XXXXX..
- .................XX.XX.XX.X.X.X..
- .................XX.XX.XX.X.X.X..
- .................................
- end
- player1:
- %0100010
- %0010100
- %0001000
- %0111110
- %1001001
- %0011100
- %0111110
- %0011100
- end
- player1color:
- $f2
- $94
- $94
- $C4
- $2c
- $2c
- $2c
- $22
- end
- player0:
- %11111111
- %11111111
- %11111111
- %10100101
- %10100101
- %10100101
- %10100101
- %10100101
- %10100101
- %10100101
- %10100101
- %11111111
- %11111111
- %11111111
- %11111111
- %11111111
- %11111111
- %11111111
- %11011011
- %11011011
- %11011011
- %11011011
- %11011011
- %11011011
- %10000011
- %10000011
- %10000011
- %10000011
- %10000011
- %10000011
- end
- v=0
- get_random_thunder
- w=rand/64 : t=0
- title_main
- COLUBK=v : scorecolor=$C4
- COLUP0=$04 : COLUPF=$44 : player0x=50 : player0y=90 : NUSIZ0=$01 : CTRLPF=$31
- ballx=59 : bally=87 : ballheight=13
- if player1y>82 && player1y<200 then e=e+1 else player1y=200
- if e>10 && player1y<>87 then e=0 : player1y=player1y-1
- if e>200 && player1y=87 then e=0 : player1y=player1y-1
- if joy0fire && !b{0} then b{0}=1
- if !joy0fire && b{0} then b{0}=0 : goto new_game
- dim scback=u
- u=$c4
- drawscreen
- z=z+1
- if z>59 then z=0 : t=t+1
- if t=w && z=59 then v=8
- if t>w then goto thunder
- AUDV0=0
- goto title_main
- thunder
- AUDV0=v : AUDF0=v*2 : AUDC0=2
- if z>7 then z=0 : v=v-1
- if v=0 then goto get_random_thunder
- goto title_main
- new_game
- scorecolor=14
- AUDV0=0
- player0:
- %00010100
- %00111100
- %01111110
- %01010010
- %11011011
- end
- o=64
- player1x=23 : player1y=79
- dim level=r
- level=19 : score=20
- if joy0up then level=0 : score=1
- goto get_new_level
- main
- COLUPF=$24
- COLUP0=$66
- u=0 : COLUBK=0
- ballheight=13 : CTRLPF=$31
- NUSIZ0=$06
- if level=12 then NUSIZ0=$03
- if level=14 then NUSIZ0=$00
- if level=19 then NUSIZ0=$03
- dim sc1=score
- dim sc2=score+1
- sc1=$DA
- sc2=$BC
- if !switchbw then AUDV0=0 : goto skip_music
- rem music data
- AUDC0=12 : AUDF0=bass_notes[n] : AUDV0=4
- l=l+1
- if l>39 then l=0 : n=n+1 : p=p+1
- if n>47 then n=0 : p=0
- skip_music
- if player1x<20 then player1x=132
- if player1x>132 then player1x=20
- if switchreset then goto title_screen
- drawscreen
- if !a{1} && joy0up && collision(player1,ball) then level=level+1 : score=score+1 : goto get_new_level
- if collision(player1,player0) then o=32 : goto get_new_level
- if player1y>90 then goto get_new_level
- if level=14 && m=3 then player0y=player0y+2
- if level=14 && m=4 then player0x=player0x-2
- if level=14 && m=1 then player0y=player0y-2
- if level=14 && m=2 then player0x=player0x+2
- if level=14 && player0y>80 then m=4 : player0y=80 : player0x=player0x-2
- if level=14 && player0x<30 then m=1
- if level=14 && player0y<20 then m=2
- if level=14 && player0x>130 then m=3
- if level=14 then goto main_2
- if level>10 && v>90 && m{0} then player0x=player0x-1
- if level>10 && v>90 && !m{0} then player0x=player0x+1
- if level=10 && m{0} && t>5 then player0x=player0x-1
- if level=10 && !m{0} && t>5 then player0x=player0x+1
- if level=10 && player0y<player1y && t>5 then player0y=player0y+1
- if level=10 && player0y>player1y && t>5 then player0y=player0y-1
- if t>5 then t=0
- if t=5 && player0x>v then m{0}=1
- if t=5 && player0x<20 then m{0}=0
- if v>90 then t=t+1 : goto main_2
- if m{0} then player0y=player0y+1 else player0y=player0y-1
- if player0y=10 then m{0}=1
- if player0y=v then m{0}=0
- main_2
- AUDV1=0
- if z>30 then a{0}=0 : a{1}=1 : goto __Test_P0_Down
- if a{0} && z<30 && o=64 then AUDC1=1 : AUDV1=4 : AUDF1=z
- if o<64 then o=o+1 : AUDC1=3 : AUDF1=o/2 : AUDV1=4
- if o>63 then o=64
- if joy0fire && !a{0} then a{0}=1 : goto __Test_P0_Up
- if !joy0fire && a{0} then a{0}=0
- if a{0} then goto __Test_P0_Up
- if !a{0} then a{1}=1 : z=21
- __Test_P0_Up
- z=z+1
- b=(player1x-17)/4
- e=(player1y/8)-1
- if pfread(b,e) then a{0}=0 : z=31 : a{0}=0 : a{1}=1 : goto __Cant_Move_Up
- d=b + 2
- if pfread(d,e) then a{0}=0 : z=31 : a{0}=0 : a{1}=1 : goto __Cant_Move_Up
- goto __P0_Move_Up
- __Cant_Move_Up
- goto __Skip_Joy0_Up
- __P0_Move_Up
- if a{0} then player1y=player1y-1
- __Skip_Joy0_Up
- if a{1} then goto __Test_P0_Down
- goto __Skip_Joy0_Down
- __Test_P0_Down
- if !a{1} then goto __Skip_Joy0_Down
- b = (player1x-17)/4
- e = ((player1y-7)/8) + 1
- if pfread(b,e) then goto __Cant_Move_Down
- d = b + 2
- if pfread(d,e) then goto __Cant_Move_Down
- goto __P0_Move_Down
- __Cant_Move_Down
- a=0 : z=0
- goto __Skip_Joy0_Down
- __P0_Move_Down
- if a{1} then player1y=player1y+1
- if joy0left then goto left
- if joy0right then goto right
- goto main
- __Skip_Joy0_Down
- left
- f = ((player1x-14)/4)-1
- g = (player1y)/8
- if pfread(f,g) then goto __Cant_Move_Left
- goto __P0_Move_Left
- __Cant_Move_Left
- goto __Skip_Joy0_Left
- __P0_Move_Left
- if joy0left then player1x=player1x-1 : goto main
- __Skip_Joy0_Left
- if joy0right then goto __Test_P0_Right
- goto main
- right
- __Test_P0_Right
- f = ((player1x-12)/4)+1
- g = ((player1y)/8)
- if pfread(f,g) then goto __Cant_Move_Right
- goto __P0_Move_Right
- __Cant_Move_Right
- goto __Skip_Joy0_Right
- __P0_Move_Right
- if joy0right then player1x=player1x+1
- __Skip_Joy0_Right
- goto main
- level_info
- player0x = P0x_dat[r] : player0y = P0y_dat[r]
- ballx = ballx_dat[r] : bally = bally_dat[r]
- if v_dat[r] then v = v_dat[r]
- if P1x_dat[r] then player1x = P1x_dat[r]
- rem player1y defaults to 79 in the get_new_level routine
- rem so this should be unnecessary
- if r = 5 then player1y = 79
- if r = 18 then player1y = 47
- goto main
- data P0x_dat
- 130, 37, 57, 52, 70, 132, 130, 130, 57
- 57, 57, 130, 60, 69, 131, 50, 30, 50
- 50, 61
- end
- data P0y_dat
- 20, 20, 30, 30, 30, 56, 60, 48, 48
- 47, 47, 72, 66, 12, 10, 40, 40, 49
- 56, 36
- end
- data ballx_dat
- 56, 130, 120, 73, 40, 130, 70, 130, 133
- 23, 45, 108, 74, 25, 112, 33, 33, 48
- 80, 97
- end
- data bally_dat
- 78, 78, 78, 30, 54, 54, 78, 22, 30
- 22, 30, 62, 78, 54, 78, 54, 54, 22
- 78, 78
- end
- data v_dat
- 80, 70, 00, 80, 90, 00, 80, 00, 80
- 90, 130, 135, 90, 90, 135, 90, 90, 90
- 90, 70
- end
- data P1x_dat
- 00, 00, 00, 00, 00, 44, 00, 00, 00
- 00, 00, 52, 00, 00, 00, 00, 21, 41
- 30, 60
- end
- data bass_notes
- 23, 20, 19, 23, 20, 19, 23, 20, 19, 23, 20, 19
- 24, 23, 20, 24, 23, 20, 24, 23, 20, 24, 23, 20
- 27, 24, 23, 27, 24, 23, 27, 24, 23, 27, 24, 23
- 29, 27, 24, 29, 27, 24, 29, 27, 24, 29, 27, 24
- end
- get_new_level
- if r = 20 then level = 0 : score = 1 : goto level_info
- player1x = 23 : player1y = 79
- rem dedicated multiply by 44 routine
- rem multiplies level by 44 and adds PF_dat
- rem leaving the result in temp1,temp2
- rem It will fail if level is more than 63
- asm
- lda #$00
- sta temp2
- lda level
- asl
- asl
- adc level
- rol temp2
- asl
- rol temp2
- adc level
- asl
- rol temp2
- asl
- rol temp2
- adc #<PF_dat
- sta temp1
- lda temp2
- adc #>PF_dat
- sta temp2
- end
- goto load_new_level bank2
- bank 2
- load_new_level
- asm
- ldy #43
- load_loop
- lda (temp1),y
- sta var0,y
- dey
- bpl load_loop
- end
- goto level_info bank1
- data PF_dat
- %11111111, %11111111, %11111111, %11111111
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %10000000, %11111111, %11111111, %10000111
- %10000000, %00000100, %00000001, %10000001
- %11111000, %00000100, %00000001, %10000001
- %10000000, %00000100, %00000000, %10000110
- %10000000, %00000111, %11000000, %10000110
- %10000000, %00000001, %11000000, %10000000
- %10000000, %00000001, %11000000, %10000000
- %11111111, %11111111, %11000000, %11111111
- %11111111, %11111111, %11111111, %11111111
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %10000011, %11111111, %11111111, %10000111
- %11100010, %00000000, %00000000, %10000000
- %10000010, %00000000, %00000000, %10000000
- %10000010, %11000000, %11111111, %11111111
- %10001110, %11000110, %11000011, %10000111
- %10000010, %00000000, %00000000, %10000000
- %10000010, %00000000, %00000000, %10000000
- %11111110, %11000000, %11000011, %11111111
- %11111111, %11111111, %11111111, %11111111
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000111
- %10000000, %00000000, %00000000, %10000101
- %10000000, %00000000, %00000000, %10000101
- %10000000, %00001100, %01100000, %10000101
- %10000110, %00000000, %00000000, %10000111
- %10000110, %00000000, %00000000, %10000001
- %10000110, %00000000, %00000000, %10000001
- %11111110, %00000000, %00000000, %11111111
- %11111111, %11111111, %11111111, %11111111
- %10000000, %00010000, %00000000, %10000000
- %10000000, %00010000, %00000000, %10000000
- %10000000, %00010000, %00000011, %10000001
- %10000011, %11110000, %11111110, %11110000
- %10000011, %00110000, %00000010, %10000000
- %10000011, %00110000, %00000010, %10000000
- %10001111, %00110000, %01100011, %10000111
- %10000011, %00000000, %01100000, %10000000
- %10000011, %00000000, %01100000, %10000000
- %11111111, %00110000, %01100001, %11111111
- %11111111, %11111111, %11111111, %11111111
- %11110000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %10001111, %10000011, %10000110, %10000110
- %10000000, %10000010, %10000110, %10000000
- %10000000, %10000010, %10000000, %11100000
- %11111111, %00000011, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000110
- %10000000, %00000000, %00000110, %10000110
- %11111111, %10000011, %10000110, %10000110
- %11111111, %11111111, %11111111, %11111111
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00011000, %00110000, %10000110
- %10001100, %00011000, %00110000, %10000110
- %10001100, %00011000, %00110000, %10000110
- %10001100, %00011000, %00000000, %11111110
- %10001100, %00011110, %00000000, %10000000
- %10001100, %00011000, %00000000, %10000000
- %10001111, %11111111, %11111111, %11111111
- %11111111, %11111111, %11111111, %11111111
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %10000011, %00011000, %00011110, %10001100
- %10001111, %11111111, %11111110, %10001100
- %10000011, %00000000, %00000000, %10001100
- %10000011, %00000000, %00000000, %10001100
- %11100000, %11111000, %11111111, %10001111
- %10000000, %00001000, %00000000, %10000000
- %10000000, %00001000, %00000000, %10000000
- %11111110, %01111000, %00111000, %10001111
- %11111111, %11111111, %11111111, %11111111
- %10000000, %00000000, %00000100, %10000000
- %10000000, %00000000, %00000100, %10000000
- %10001100, %11000110, %11000100, %11111100
- %10000000, %01000000, %01000100, %10000000
- %11100000, %01000000, %01000111, %10000000
- %00100000, %01000000, %01000101, %10000000
- %11111111, %01000011, %01000111, %10001111
- %10000000, %01000000, %01000000, %10000000
- %10000000, %01000000, %01000000, %10000000
- %11111111, %01111111, %01111111, %11111111
- %11111111, %11111111, %11111111, %11111111
- %10000000, %00010000, %00000001, %10000000
- %10000000, %00010000, %00000001, %10000000
- %10000001, %00010001, %00110001, %10000000
- %10000111, %00010001, %11110001, %11111000
- %10000001, %00010001, %00110001, %10000000
- %10000001, %00010001, %00110001, %10000000
- %11110001, %01110001, %00110001, %10000011
- %10000001, %00000001, %00110000, %10000000
- %10000001, %00000001, %00110000, %10000000
- %11111111, %11111111, %11111111, %11111111
- %11111111, %11111111, %11111111, %00001111
- %10000000, %00000010, %00000000, %00001000
- %10000000, %00000010, %00000000, %00001000
- %11111100, %00000010, %11111100, %11111000
- %00000000, %00001110, %11000000, %00000110
- %00000000, %00000010, %11000001, %00000001
- %11111111, %00000011, %11000001, %11000001
- %10000000, %00001110, %11000001, %11000001
- %10000000, %00000000, %11110000, %11110000
- %10000110, %00000000, %00111100, %11000000
- %11111111, %00111111, %00000011, %11111111
- %10000000, %00000000, %00000000, %10000000
- %10000111, %11111111, %11111111, %10000011
- %10000100, %00000000, %00000000, %10000010
- %10000100, %00000000, %00000000, %10000010
- %10000111, %11111111, %11111000, %10001110
- %10000000, %00000000, %00000000, %10000010
- %10000000, %00000000, %00000000, %10000010
- %11111111, %11111111, %11111111, %11100011
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %11111111, %11111111, %11111111, %11111111
- %11111111, %11111111, %11111111, %11111111
- %00000011, %00000000, %00000000, %00000000
- %00000011, %00000000, %00000000, %00000000
- %11100011, %11110000, %11111111, %11111111
- %10000011, %00000000, %00000100, %10000000
- %10001111, %00000000, %00000100, %10000000
- %10000011, %00011000, %11000100, %10000000
- %11100000, %00011000, %11000100, %10000110
- %10000000, %00011000, %11000111, %10000111
- %10000000, %00011000, %11000000, %10000000
- %11100000, %00011111, %11111111, %11111111
- %00001111, %11111111, %11111111, %11111111
- %11111100, %00000000, %01100000, %10000000
- %10000000, %00000000, %01100000, %10000000
- %10000000, %00110000, %01100000, %10001111
- %10001111, %00111111, %01111000, %10000011
- %10000000, %00110000, %00000000, %10000011
- %10000000, %00110000, %00000000, %11100011
- %11111111, %11110001, %11111111, %00100011
- %10000000, %00010000, %00000000, %00100000
- %10000000, %00010000, %00000000, %00100000
- %11111111, %11110001, %11111111, %00111111
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %10001111, %11111111, %11000110, %10000000
- %10001000, %00000000, %11000000, %11100000
- %10001000, %00000000, %11000000, %10000000
- %10001000, %00001100, %11000000, %10000000
- %10001000, %00000100, %11000110, %10000000
- %11111000, %11000111, %00000000, %11100000
- %10000000, %00000100, %00000000, %10000000
- %10000000, %00000100, %00000000, %10000000
- %11111111, %11111111, %00000110, %11100000
- %11111111, %11111111, %11111111, %11111111
- %10000000, %01000000, %00001100, %10000000
- %10000000, %01000000, %00000000, %10000000
- %10000011, %01000111, %00000000, %10001110
- %11100010, %01000000, %00111111, %10000011
- %10000010, %01000000, %00000000, %11100001
- %10000010, %01111100, %00000000, %10000001
- %10001110, %11100000, %11100011, %10001111
- %10000010, %00000000, %00000010, %10000000
- %10000010, %00000000, %00000010, %10000000
- %11111110, %00110000, %01100011, %10001111
- %11111111, %11111111, %11111111, %11111111
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %10001111, %00011111, %11111000, %10000011
- %10001110, %00010000, %10001000, %11100011
- %10000010, %11110000, %10001111, %10000011
- %10000010, %00000000, %00000000, %10000000
- %11111110, %00000000, %00000000, %11100000
- %10000000, %00001100, %00000110, %10000000
- %10000000, %00001100, %11000110, %10000000
- %11111110, %00001100, %11000111, %11111111
- %11111111, %11111111, %11111111, %11111111
- %00000010, %00000000, %00000000, %00000000
- %00000010, %00000000, %00000000, %00000000
- %11000010, %11111100, %10000000, %11000000
- %11000010, %00000000, %01111111, %11111111
- %11000010, %00000000, %00000000, %10000000
- %11000011, %00000011, %00000000, %10000000
- %11111111, %11111111, %11111111, %10001111
- %10000000, %00000000, %00000000, %10000000
- %10000000, %00000000, %00000000, %10000000
- %11110001, %11100011, %00011100, %10001110
- %11111111, %11111111, %11111111, %11111111
- %00000010, %00000000, %00000000, %00000000
- %00000010, %00000000, %00000000, %00000000
- %11000011, %11000001, %00000111, %11111111
- %11000000, %00000001, %00000110, %10000000
- %11110000, %00000001, %00000110, %10000000
- %11000000, %00000001, %00000110, %10000000
- %00000111, %00000001, %11000110, %10001100
- %00000100, %00000000, %11000000, %00001100
- %00000100, %00000000, %11000000, %00001100
- %11111111, %11111111, %11111111, %11111111
- %11111111, %11111111, %11111111, %11111111
- %10000000, %00110000, %00000000, %10000000
- %10000000, %00110000, %00000000, %10000000
- %10001111, %00110000, %01111111, %10000011
- %10000011, %00000000, %01100000, %10000000
- %10000011, %00000000, %01100000, %10000000
- %11111111, %11111111, %11100011, %11111111
- %00000000, %00110000, %00100000, %00000000
- %00000000, %00000000, %00100000, %00000000
- %00000001, %00000001, %00100000, %00000000
- %11100001, %11100001, %11100011, %11111000
- %11111111, %11111111, %11111111, %11111111
- %10000000, %10000000, %10000000, %10000000
- %10000000, %10000000, %10000000, %10000000
- %10000011, %10001111, %10001111, %10000011
- %10001110, %10000000, %10000000, %10001110
- %10000010, %00000000, %00000000, %10000010
- %10000011, %00001111, %00001111, %10000011
- %10001111, %00111111, %00111111, %10001111
- %10000000, %00100000, %00100000, %10000000
- %10000000, %00100000, %00100000, %10000000
- %10001111, %00111111, %00111111, %10001111
- end
- goto level_info_bank1_jump
- cu
- reboot
- level_info_bank1_jump
- goto level_info bank1
- asm
- minikernel
- lda scback
- sta COLUBK
- rts
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement