#include "ti83plus.inc" #include "mirage.inc" .org $9D93 #define shields appbackupscreen #define photons shields+1 #define phasers photons+1 #define score phasers+1 #define enemyx score+2 #define enemyy enemyx+1 #define counter enemyy+1 #define currentenemy counter+1 #define enemyshields currentenemy+1 .db $BB,$6D ret .db 1 button: .db %10000000, %00000000 .db %00000000, %00010010 .db %00100001, %00000000 .db %00000000, %00001000 .db %00000000, %00000000 .db %00010010, %00000000 .db %00000000, %01001000 .db %00000000, %00000000 .db %01001000, %00000000 .db %00000000, %00100000 .db %00000000, %00000000 .db %00000001, %00000000 .db %00000000, %00000010 .db %00010000, %00000000 .db %00000001, %00100000 desc: .db "Starship Commando",0 set fullscrndraw,(iy+apiflg4) set textwrite,(iy+sgrflags) set textInverse,(iy+textflags) bcall(_clrlcdfull) bcall(_grbufclr) ld hl,0 ld (score),hl ld a,1 ld (currentenemy),a ld a,100 ld (shields),a ld (phasers),a ld a,20 ld (photons),a ld hl,plotsscreen+(46*12) ld b,192+12+12 ld a,$ff fillrect: ld (hl),a inc hl djnz fillrect ld a,95 ld e,46 call pixeloff xor a ld e,46 call pixeloff Starfield: ld b,70 rndstarloop: push bc ld b,46 call irandom ld e,a ld b,96 call irandom call setpixel pop bc djnz rndstarloop call UpdateConsole call RedisplayEnemy GameLoop: ld a,$ff out (1),a ld a,$bf out (1),a in a,(1) cp 191 ;Mode ret z cp 223 ;2nd call z,FirePhasers ld a,$ff out (1),a ld a,$df out (1),a in a,(1) cp 127 ;Alpha call z,FirePhotons jr GameLoop ret FirePhotons: ret FirePhasers: ld a,(phasers) cp 100 jr nc,phasersgone ld b,10 call irandom ld b,a ld a,(phasers) sub b ld (phasers),a ld a,(enemyshields) sub b ld (enemyshields),a cp 0 ;Needed carry flags jr nc,enemystillthere ld a,(currentenemy) ld b,a getnewenemyloop: push bc ld b,1 call irandom inc a pop bc cp b jr z,getnewenemyloop ld (currentenemy),a ld a,100 ld (enemyshields),a call RedisplayEnemy enemystillthere: ld hl,48*256+40 ld (pencol),hl ld a,(phasers) ld h,0 ld l,a bcall(_setxxxxop2) bcall(_op2toop1) bcall(_dispop1a) jp ifastcopy phasersgone: xor a ld (phasers),a jr enemystillthere RedisplayEnemy: ld a,(currentenemy) dec a jr z,DispShip1 DispShip1: ld b,94-40 call irandom ld (enemyx),a ld b,45-24 call irandom ld (enemyy),a ld h,a add a,23 ld d,a ld a,(enemyx) ld l,a add a,40 ld e,a bcall(_clearrect) ld a,(enemyy) ld l,a ld a,(enemyx) ld c,5 ld b,24 ld ix,ship1 call ilsprite jp ifastcopy UpdateConsole: ld ix,YourShip ld b,10 ld a,47 ld l,a ld a,2 call isprite ld hl,57*256+1 ld (pencol),hl ld a,(shields) ld h,0 ld l,a bcall(_setxxxxop2) bcall(_op2toop1) bcall(_dispop1a) ld hl,48*256+23 ld (pencol),hl ld hl,phaserslabel bcall(_vputs) ld a,(phasers) ld h,0 ld l,a bcall(_setxxxxop2) bcall(_op2toop1) bcall(_dispop1a) ld hl,55*256+23 ld (pencol),hl ld hl,photonslabel bcall(_vputs) ld a,(photons) ld h,0 ld l,a bcall(_setxxxxop2) bcall(_op2toop1) bcall(_dispop1a) ret YourShip: .db %00011000 .db %00111100 .db %01111110 .db %01111110 .db %00111100 .db %00011000 .db %01111110 .db %01000010 .db %01000010 .db %01000010 phaserslabel: .db "Phasers: ",0 photonslabel: .db "Photons: ",0 ship1: .db %00000000,%00000000,%00000011,%10000000,%00000000 .db %00000000,%00000000,%00001111,%11000000,%00000000 .db %00000000,%00001110,%00011111,%10100000,%00000000 .db %00000000,%00011110,%00111111,%01100000,%00000000 .db %00000000,%00111100,%01111110,%10100000,%00000000 .db %00000000,%01111000,%11111101,%01000000,%00000000 .db %00000000,%11110001,%11111010,%11000000,%00000000 .db %00000001,%11101011,%11110101,%10000000,%00000000 .db %00000011,%11000111,%11101011,%00000000,%00000000 .db %00000111,%10001111,%11010110,%00000000,%01110000 .db %00001111,%00011111,%10101100,%00000000,%11110000 .db %00011110,%00111111,%01011111,%11111111,%11100000 .db %00111101,%01111110,%10110000,%00000011,%11000000 .db %01111000,%11111101,%01100000,%00000111,%10000000 .db %11110001,%11111010,%11000000,%00001111,%00000000 .db %00000011,%11110101,%11111111,%11111110,%00000000 .db %00000111,%11101011,%00000000,%00111100,%00000000 .db %00001111,%11010110,%00000000,%01111000,%00000000 .db %00001111,%10101100,%00000000,%11110000,%00000000 .db %00011111,%11011000,%00000001,%11100000,%00000000 .db %00011111,%10110000,%00000011,%11000000,%00000000 .db %00011111,%11100000,%00000111,%10000000,%00000000 .db %00011111,%11000000,%00000000,%00000000,%00000000 .db %00001111,%00000000,%00000000,%00000000,%00000000 .end