home *** CD-ROM | disk | FTP | other *** search
- ;IF YOU WOULD LIKE COMMENTED SOURCE, PLEASE VISIT
- ;HTTP://TCPA.CALC.ORG/PROGRAMMING
- ;AND VIEW THE SOURCE FROM THERE
-
- .nolist
- #include "ion.inc"
-
- #define B1X saferam3 ;X Coordinate for Ball1
- #define B1Y B1X+1 ;Y Coordinate for Ball1
- #define Stat B1Y+1 ;Status Var
- #define X Stat+1 ;X Coordinate for Arrow
- #define Y X+1 ;Y Coordinate for Arrow
- #define X1 Y+1 ;Temp X Coordinate for Arrow
- #define X2 X1+1 ;Temp X Coordinate for Ball
- #define Y1 X2+1 ;Temp Y Coordinate for Arrow
- #define Y2 Y1+1 ;Temp Y Coordinate for Ball
- #define B2X Y2+1
- #define B2Y B2X+1
- #define x B2Y+1
- #define y x+1
- #define Stat2 y+1
- #define retter Stat2+1
- #define Arrow retter+1
- #define B3X Arrow+1
- #define B3Y B3X+1
- #define B4X B3Y+1
- #define B4Y B4X+1
- #define Stat3 B4Y+1
- #define Stat4 Stat3+1
- #define Speed1 Stat4+1
- #define Speed2 Speed1+1
- #define Speed3 Speed2+1
- #define Speed4 Speed3+1
- #define ScoreVar Speed4+1
- #define Wall ScoreVar+1
- #define Chng Wall+1
- #define Cheat Chng+1
- #define HS Cheat+1
- ;#define Q HS+1
-
- .list
- #ifdef TI83P
- .org progstart-2
- .db $BB,$6D
- #else
- .org progstart
- #endif
- ret
- jr nc,start
- .db "QuadroBall",0
-
- start:
- bcall(_clrlcdf)
- bcall(_cleargbuf)
- set 7,(iy+$14)
-
- res textinverse,(iy+textflags)
- ld hl,MainMsg
- bcall(_homeup)
- bcall(_puts)
-
- Keyz: bcall(_getcsc)
- cp 0FH
- jp z,Close
- cp 36h
- jr nz,Keyz
-
- ld a,0
- ld (Cheat),a
- ld (Speed1),a
- ld (Speed2),a
- ld (Speed3),a
- ld (Arrow),a
-
- ld (X),a
-
- ld (Stat),a
- ld (Stat2),a
- ld (Stat3),a
- ld (Stat4),a
- ld (Wall),a
- ld (Chng),a
- ld (ScoreVar),a
- ld (HS),a
-
- ld a,76
- ld (B4X),a
- ld a,54
- ld (B3X),a
- ld a,32
- ld (B2X),a
- ld a,50
- ld (B2Y),a
- ld (B4Y),a
- ld a,10
- ld (B1X),a
- ld (retter),a
-
- ld a,25
- ld (Y),a
-
- ld a,0
- ld (B1Y),a
- ld (B3Y),a
- ; ld (Q),a
-
- bcall(_clrlcdf)
- call Putz
- call Putx
- call Putw
- call puta
- call putb
-
- ld bc,0*256+7
- ld de,95*256+7
- bcall(_darkline)
-
- ld de,57*256+0
- ld (pencol),de
- ld hl,Score
- bcall(_vputs)
- ld a,(ScoreVar)
- bcall(_setxxop1)
- ld a,1
- bcall(_dispop1a)
-
- Loop: ld a,(Chng)
- cp 1
- jp nz,Loop2
-
- ld de,57*256+0
- ld (pencol),de
- ld hl,Score
- bcall(_vputs)
- ld hl,(ScoreVar)
- bcall(_setxxxxop2)
- bcall(_op2toop1)
- bcall(_dispop1a)
-
- ld a,0
- ld (Chng),a
-
- Loop2: ;ld a,(Q)
- ; cp 1
- ; jp z,Start
-
- call ionfastcopy
-
- ld a,(Cheat)
- cp 0
- jp nz,L3
-
- ld a,(X)
- ld (X1),a
- ld a,(B1X)
- ld (X2),a
- ld a,(Y)
- ld (Y1),a
- ld a,(B1Y)
- ld (Y2),a
-
- call Check
-
- ; ld a,(Q)
- ; cp 1
- ; jp z,Start
-
- ld a,(retter)
- cp 0
- jp z,EndGme
-
-
- ; ld a,(X)
- ; ld (X1),a
- ld a,(B2X)
- ld (X2),a
- ; ld a,(Y)
- ; ld (Y1),a
- ld a,(B2Y)
- ld (Y2),a
-
- Call Check
-
- ; ld a,(Q)
- ; cp 1
- ; jp z,Start
-
- ld a,(retter)
- cp 0
- jp z,EndGme
-
- ; ld a,(X)
- ; ld (X1),a
- ld a,(B3X)
- ld (X2),a
- ; ld a,(Y)
- ; ld (Y1),a
- ld a,(B3Y)
- ld (Y2),a
-
- Call Check
-
- ; ld a,(Q)
- ; cp 1
- ; jp z,Start
-
- ld a,(retter)
- cp 0
- jp z,EndGme
-
- ld a,(B4X)
- ld (X2),a
- ld a,(B4Y)
- ld (Y2),a
-
- call Check
-
- ; ld a,(Q)
- ; cp 1
- ; jp z,Start
-
- ld a,(retter)
- cp 0
- jp z,EndGme
-
- L3: ld a,0FFH
- out (1),a
- ld a,0FEH
- out (1),a
- in a,(1)
- cp 247
- jp z,GoUp2
- cp 254
- jp z,GoDown2
- cp 251 ;R
- jp z,MoveRight
- cp 253
- jp z,MoveLeft
- ; cp %11111100 ;Check for Down AND Left.
- ; jp z, Down_And_Left
- ; cp %11111010 ;Check for Down AND Right.
- ; jp z, Down_And_Right
- ; cp %11110101 ;Check for Up AND Left.
- ; jp z, Up_And_Left
- ; cp %11110011 ;Check for Up AND Right.
- ; jp z, Up_And_Right
-
- ld a,0FDH
- out (1),a
- in a,(1)
- cp 191 ;Cls
- jp z,EndGme
- ; cp 254 ;Enter
- ; jp z,EP
- cp 247 ;Multiply
- jp z,Skipoo
- cp 253 ;Plus
- jp z,Skipoff
-
- NoKey: ld a,(Stat)
- cp 0
- jr nz,GoUp
- ;Going Down...
-
- ld a,(B1Y)
- cp 50
- jp z,Res2Up
-
- ld a,(Speed1)
- cp 0
- jp z,Rand1
-
- call Putz
-
- ld a,(Speed1)
- ld b,a
-
- ld a,(B1Y)
- t1: inc a
- djnz t1
- ld (B1Y),a
-
- call Putz
-
- jp B2Check
-
- jp Loop
-
- GoUp: ld a,(B1Y)
- cp 0
- jp z,Res2Down
-
- ld a,(Speed1)
- cp 0
- jp z,Rand1
-
- call Putz
-
- ld a,(Speed1)
- ld b,a
-
- ld a,(B1Y)
- t2: dec a
- djnz t2
- ld (B1Y),a
-
- call Putz
-
- jp B2Check
-
- Rand1: ld b,3
- call ionrandom
- ld (Speed1),a
- jp B2Check
-
- Res2Up: ld a,1
- ld (Stat),a
- ld a,0
- ld (Speed1),a
- jp B2Check
- Res2Down:
- xor a
- ld (Stat),a
- ld a,0
- ld (Speed1),a
- jp B2Check
-
-
- B2Check:
- ld a,(Stat2)
- cp 0
- jr nz,GoUpp
-
- ld a,(B2Y)
- cp 50
- jp z,Res3Up
-
- ld a,(Speed2)
- cp 0
- jp z,Rand2
-
- call Putw
-
- ld a,(Speed2)
- ld b,a
-
- ld a,(B2Y)
- t3: inc a
- djnz t3
- ld (B2Y),a
-
- call Putw
-
- jp B3Check
-
- GoUpp:
- ld a,(B2Y)
- cp 0
- jp z,Res3Down
-
- ld a,(Speed2)
- cp 0
- jp z,Rand2
-
- call Putw
-
- ld a,(Speed2)
- ld b,a
-
- ld a,(B2Y)
- t4: dec a
- djnz t4
- ld (B2Y),a
-
- call Putw
-
- ;Check here!
- jp B3Check
-
- Rand2: ld b,3
- call ionrandom
- ld (Speed2),a
- jp B3Check
-
- Res3Up: ld a,1
- ld (Stat2),a
- ld a,0
- ld (Speed2),a
- jp B3Check
-
- Res3Down:
- ld a,0
- ld (Stat2),a
- ld a,0
- ld (Speed2),a
- jp B3Check
-
- B3Check:
- ld a,(Stat3)
- cp 0
- jr nz,Uppz
-
- ld a,(B3Y)
- cp 50
- jp z,Res4Up
-
- ld a,(Speed3)
- cp 0
- jp z,Rand3
-
- call Puta
-
- ld a,(Speed3)
- ld b,a
-
- ld a,(B3Y)
- t6: inc a
- djnz t6
- ld (B3Y),a
-
- call Puta
-
- jp Blah4
-
- Uppz:
- ld a,(B3Y)
- cp 0
- jp z,Res4Down
-
- ld a,(Speed3)
- cp 0
- jp z,Rand3
-
- call Puta
-
- ld a,(Speed3)
- ld b,a
-
- ld a,(B3Y)
- t5: dec a
- djnz t5
- ld (B3Y),a
-
- call Puta
-
- jp Blah4
-
- Rand3: ld b,3
- call ionrandom
- ld (Speed3),a
- jp Blah4
-
- Res4Down:
- ld a,0
- ld (Stat3),a
- ld (Speed3),a
- jp Blah4
- Res4Up: ld a,1
- ld (Stat3),a
- ld a,0
- ld (Speed3),a
- jp Blah4
-
- Blah4: ld a,(Stat4)
- cp 0
- jr nz,Up4
- ;down
- ld a,(B4Y)
- cp 50
- jp z,Blah4Up
-
- ld a,(Speed4)
- cp 0
- jp z,Rand4
-
- call Putb
-
- ld a,(Speed4)
- ld b,a
-
- ld a,(B4Y)
- t7: inc a
- djnz t7
- ld (B4Y),a
-
- call Putb
-
- jp Loop
-
- Up4: ld a,(B4Y)
- cp 0
- jp z,Blah4Down
-
- ld a,(Speed4)
- cp 0
- jp z,Rand4
-
- call Putb
-
- ld a,(Speed4)
- ld b,a
-
- ld a,(B4Y)
- t8: dec a
- djnz t8
- ld (B4Y),a
-
- call Putb
-
- jp Loop
-
- Rand4: ld b,3
- call ionrandom
- ld (Speed4),a
- jp Loop
-
- Blah4Up:
- ld a,1
- ld (Stat4),a
- ld a,0
- ld (Speed4),a
- jp Loop
- Blah4Down:
- ld a,0
- ld (Stat4),a
- ld (Speed4),a
- jp Loop
-
- ;Up_And_Left:
- ;
- ; ld a,(Y)
- ; cp 0
- ; jp z,StillLeft
- ;
- ; ld a,(X)
- ; cp 0
- ; jp z,StillUp
- ;
- ;StillLeft:
- ; ld a,(X)
- ; cp 0
- ; jp nz,Dobe
- ;
- ; call ChekWall
- ; jp Nokey
- ;
- ;Dobe: call Putx
- ; ld a,1
- ; ld (Arrow),a
- ; ld a,(X)
- ; dec a
- ; ld (X),a
- ; call Putx
- ;
- ;StillUp:
- ; ld a,(Y)
- ; cp 0
- ; jp z,Nokey
- ;
- ; call Putx
- ; ld a,(Y)
- ; dec a
- ; ld (Y),a
- ; call Putx
- ; jp NoKey
- ;
- MoveRight:
- ld a,(X)
- cp 88
- jp z,HitRight
-
- call Putx
- ld a,0
- ld (Arrow),a
- ld a,(X)
- inc a
- ld (X),a
- call Putx
- jp NoKey
-
- HitRight:
- ld a,(Wall)
- cp 1
- jp z,NoKey
-
- ld a,1
- ld (Wall),a
-
- ld hl,Getbak
- ld de,57*256+64
- ld (pencol),de
- bcall(_vputs)
-
- jp Nokey
-
- MoveLeft:
- ld a,(X)
- cp 0
- jp z,ChekWall
-
- call Putx
- ld a,1
- ld (Arrow),a
- ld a,(X)
- dec a
- ld (X),a
- call Putx
- jp NoKey
-
- ChekWall:
- ld a,(Wall)
- cp 0
- jp z,NoKey
-
- ld a,(ScoreVar)
- inc a
- inc a
- inc a
- ld (ScoreVar),a
-
- ld hl,Blank
- ld de,57*256+64
- ld (pencol),de
- bcall(_vputs)
- ld de,57*256+64
- ld (pencol),de
- ld hl,Good
- bcall(_vputs)
-
- ld a,0
- ld (Wall),a
-
- ld a,1
- ld (Chng),a
-
- jp NoKey
-
- GoUp2: ld a,(Y)
- cp 0
- jp z,Nokey
-
- call Putx
- ld a,(Y)
- dec a
- ld (Y),a
- call Putx
- jp NoKey
-
- GoDown2:
- ld a,(Y)
- cp 48
- jp z,NoKey
-
- call Putx
- ld a,(Y)
- inc a
- ld (Y),a
- call Putx
- jp NoKey
- ;--------------------------------------------
-
- Putw: ld a,(B2Y)
- ld l,a
- ld a,(B2X)
- ld b,6
- ld ix,Ball88
- call ionputsprite
- ret
-
- Putx: ld a,(Arrow)
- cp 0
- jp nz,SetLeft
-
- ld ix,Right
- jp z,blah
- SetLeft:
- ld ix,Left
- blah: ld a,(Y)
- ld l,a
- ld a,(X)
- ld b,8
- call ionputsprite
- ret
-
- Putz: ld a,(B1Y)
- ld l,a
- ld a,(B1X)
- ld b,6
- ld ix,Ball88
- call ionputsprite
- ret
-
- Puta: ld a,(B3Y)
- ld l,a
- ld a,(B3X)
- ld b,6
- ld ix,Ball88
- call ionputsprite
- ret
-
- Putb: ld a,(B4Y)
- ld l,a
- ld a,(B4X)
- ld b,6
- ld ix,Ball88
- call ionputsprite
- ret
-
- Check:
- ld a,(X1) ;Front Of Arrow
- add a,8 ;/
- ld b,a
- ld a,(X2) ;Back Of Ball
- cp b
- ret nc
-
- ld a,(X2) ;Front Of Ball
- add a,6 ;/
- ld b,a
- ld a,(X1) ;Back Of Arrow
- cp b
- ret nc
-
- ld a,(Y1) ;Bottom Of Arrow
- add a,7 ;/
- ld b,a
- ld a,(Y2) ;Top Of Ball
- cp b
- ret nc
-
- ld a,(Y2) ;Bottom Of Ball
- add a,6 ;/
- ld b,a
- ld a,(Y1) ;Top Of Arrow
- cp b
- ret nc
-
- ld a,0
- ld (retter),a
- ret
-
- EndGme: ;ld a,1
- ; ld (Q),a
-
- ld a,(High)
- ld b,a
- ld a,(ScoreVar)
- cp b
- jp c,NoHigh
-
- ld a,(ScoreVar)
- cp 0
- jp z,NoHigh
-
- ld a,(ScoreVar)
- ld (High),a
-
- call Blankit
-
- ld a,1
- ld (HS),a
-
- ld de,57*256+0
- ld (pencol),de
- ld hl,New
- bcall(_vputs)
-
- NoHigh:
- res textinverse,(iy+textflags)
-
- call putw
- call putx
- call puta
- call putb
- call putz
-
- ld de,0*256+12
- ld (pencol),de
- ld hl,Danny
- bcall(_vputs)
-
- ld a,(HS)
- cp 0
- jp z,Blank2
- jp NoBlank
-
- Blank2:
- call BlankIt
-
- NoBlank:
-
- set textinverse,(iy+textflags)
-
- ld de,57*256+43
- ld (pencol),de
- ld hl,HiStr
- bcall(_vputs)
-
- ld hl,(High)
- bcall(_setxxxxop2) ; write high score
- bcall(_op2toop1) ;
- ld a,5
- bcall(_dispop1a) ;
-
- call ionfastcopy
-
- res textinverse,(iy+textflags)
-
- ld hl,0303h
- ld (currow),hl
- ld hl,Over
- bcall(_puts)
-
- ld a,(HS)
- cp 0
- jp nz,SecL
-
-
- ld hl,0104h
- ld (currow),hl
- ld hl,Not
- bcall(_puts)
-
-
-
- SecL: bcall(_getcsc)
- cp 54
- jr nz,SecL
-
- ld a,0
- ld (retter),a
- ld (Cheat),a
-
- res textinverse,(iy+textflags)
-
- ; ld a,1
- ; ld (Q),a
-
- jp Start
-
-
- Skipoo: ld a,1
- ld (Cheat),a
-
- ld de,57*256+35
- ld (pencol),de
- ld hl,skip
- bcall(_vputs)
-
- jp NoKey
-
- Skipoff:
-
- ld a,0
- ld (Cheat),a
-
- ld de,57*256+33
- ld (pencol),de
- ld hl,blank
- bcall(_vputs)
-
- jp NoKey
-
-
- Ball88: .db %01111000
- .db %11111100
- .db %11111100
- .db %11111100
- .db %11111100
- .db %01111000
-
- Right: .db %00001000
- .db %00001100
- .db %11111110
- .db %11111111
- .db %11111111
- .db %11111110
- .db %00001100
- .db %00001000
-
- Left: .db %00010000
- .db %00110000
- .db %01111111
- .db %11111111
- .db %11111111
- .db %01111111
- .db %00110000
- .db %00010000
-
- Over: .db "Game Over!",0
-
- MainMsg:
- .db " QuadroBall "
- .db "----------------"
- .db " By Sean Reed "
- .db " tcpa.calc.org "
- .db " smart@calc.org "
- .db "----------------"
- .db " 2ND-Start Game "
- .db " Clear-Exit",0
-
- Score: .db "Score: ",0
- GetBak: .db "Get Back!",0
- Blank: .db " "," ",0
- Good: .db "Good Job!",0
- Skip: .db "CHEAT",0
- HiStr: .db " High Score: ",0
- New: .db " New High! ",0
- Danny: .db "Thanks: Danny Wynne",0
- Not: .db "No High Score!",0
-
- High: .dw 0
-
- Close: res textinverse,(iy+textflags)
- ret
-
- BlankIt:
-
- set textinverse,(iy+textflags)
- ld de,57*256+0
- ld (pencol),de
- ld hl,Blank
- bcall(_vputs)
- ld de,57*256+30
- ld (pencol),de
- ld hl,Blank
- bcall(_vputs)
- ld de,57*256+60
- ld (pencol),de
- ld hl,Blank
- bcall(_vputs)
- ld de,57*256+85
- ld (pencol),de
- ld hl,Blank
- bcall(_vputs)
- ret
-
- .end
- end