;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