$options +optimize, optimize=-convert_percent-const_replace
'RIPOFF OF GRAVATAR: RED PLANET 3
DIM A$(96):A$="\04\04\0E\0E\1F\01\03\07\0F\03\01\06\1E\0C\04\01\3E\1C\18\00\20\38\3F\38\20\18\1C\3E\01\00\04\0C\1E\06\01\03\0F\07\03\01\1F\0E\0E\04\04\0C\0F\0E\0C\08\04\06\0F\0C\10\06\0E\1F\20\00\01\07\3F\07\01\20\1F\0E\06\00\10\0C\0F\06\04\08\0C\0E\0F\0C"
D2R=0.39269908: DIM TRIGTABLE(1,15): FOR I=0TO15:TRIGTABLE(0,I)=SIN(D2R*I):TRIGTABLE(1,I)=COS(D2R*I):N.I

GR.8:GR.5:POKE 752,1
'FILL WHOLE SCREEN
SE.0,3,4:SE.2,0,4
COLOR 1:PAINT0,0
COLOR 0
MT=580:?["~GRAVI~TEN"]:?"Stand by ";
D2R=0.0174532925
FOR I=0 TO MT STEP 9
  CX=45+38*I/MT*COS(I*D2R)
  CY=15+25*I/MT*SIN(I*D2R)
  FOR R=1 TO 5: CIRCLE CX,CY,R: N.R
  ?".";
N.I:CLS
COLOR 1:PLOT0,0:DRAWTO79,0:PLOT19,39:DRAWTO79,39
COLOR 2:CIRCLE46,15,1

'PM COORDINATES
'MIN X=48  $30
'MAX X=200 $C8
'MIN Y=16  $10
'MAX Y=100 $64

PM=$AC00
MOVE ADR(A$),PM,80
POKE 704,15
POKE 54279,PM/256:REM              Tell ANTIC where PM RAM is
POKE 53277,3:REM                      Enable PM display
POKE 559,46:REM                     Enable PM DMA with 2-line res


'8 LEVELS
'5 LIVES
'FIRE TO START
' IF HIT WALL, LOSE LIFE. IF 0 LIVES, PRINT "SCORE" AND "TRY AGAIN" - RESET SHIP. RESET LIVES. JUMP TO START
' IF HIT THE CORE, SCORE!, ADVANCE LEVEL. HAVE TO RESET THE SHIP.
' IF LEVELS COMPLETE, PRINT "YOU WON! SCORE" - RESET SHIP. RESET LIVES. JUMP BACK TO FIRE TO START.
DO
?:?,"press FIRE to start";
WHILE STRIG(0):WEND
CLS
SC=1000:LEVEL=0:NL=5
X=70:Y=18:ANGLE=8:VX=0:VY=0
?:?LEVEL,NL;
WHILE NL
POKE 657,22:?SC;" ";

MOVE PM+$200,PM+$201,127
MOVE PM+ANGLE*5,PM+$200+INT(Y),5
POKE 53248,INT(X)

S0=S:S=STICK(0):LR=(S&4=4)-(S&8=8)
DN=(S0&2=2)&(S&2=0):UP=S&1=0
ANGLE=(ANGLE + 16 + LR + 8*DN) MOD 16
IF UP
  SOUND 0,250,10,10
  VX=VX+0.05*TRIGTABLE(0,ANGLE)
  VY=VY+0.05*TRIGTABLE(1,ANGLE)
ENDIF
  IF LEVEL MOD 2=0
    VX=VX-.01*VX
    VY=VY-.01*VY
  ENDIF 
  ' CORE AT 135,44
  VX=VX+(LEVEL DIV 2)*.00001*(135-X)
  VY=VY-(LEVEL DIV 2)*.00001*(44-Y)
  X=X+VX:rem -48 + 152) MOD 152 + 48
  Y=Y-VY:rem -8 + 84) MOD 84 + 8

POKE 53278,1:PAUSE1
P0PF=PEEK(53252)
IF P0PF
X=70:Y=18:ANGLE=8:VX=0:VY=0
SOUND 0,50,P0PF*8-6,15:  PAUSE 9
CLS
  IF P0PF=1
    NL=NL-1:IF NL=0:?,"TRY AGAIN":ENDIF
  ENDIF
  IF P0PF=2
    SC=SC+1000*(LEVEL+1)
    IF LEVEL=7:?,"MISSION COMPLETE!":EXIT:ENDIF
    LEVEL=LEVEL+1:NL=5:SE.0,3+LEVEL*2,4:SE.2,0,4-LEVEL mod2*4
  ENDIF  

  ?:?LEVEL,NL,SC;
ENDIF
SOUND 0,0,0,0
SC=SC-1
WEND
?,"SCORE:";SC:SOUND 0,0,0,0
LOOP