New Apple II Game: ORBITA

The Apple II Software Enthusiasts Challenges have produced a slew of new games over the past few years and now comes the latest Apple II game from Raphael Rezende: Oribita.

Orbita is a high resolution arcade style game completely written in Applesoft with everything in less than 4k! This includes the instructions, the sprites, the controls, the scoring and other game elements.

The game itself uses the keyboard for control of the shooters in the game and game play itself is quite challenging for such a simple game. As you can see from the following screenshot, we were challenged to the extreme by it:

You can download the game from here:
https://www.callapple.org/soft/ap2/games/ORBITA.dsk

ORBITA Source Listing

50  REM 
60  HGR : TEXT : HOME : INVERSE 
70  PRINT : PRINT  SPC( 14);"O R B I T A"; SPC( 15): NORMAL 
80  PRINT "YOUR MISSION IS TO DESTROY SPY SATELLI -"
81  PRINT "TIES, THAT OBRIT A NEW STAR ACHIEVED  BY"
82  PRINT "MAN. TO COMPLETE THIS MISSION, YOU  MUST"
83  PRINT "AIM YOUR SIGHT AND SHOOT THE SPIES.  THE"
84  PRINT "GAME ENDS WHEN 10 SPIES ESCAPES.": GOSUB 1000
86  VTAB 12: HTAB 1: INVERSE : PRINT  SPC( 11);"    KEYS USED    "; SPC( 12): NORMAL : PRINT  SPC( 40);
88  PRINT "A:UP   Z:DOWN <-:LEFT ->:RIGHT  SPC:FIRE"; SPC( 40);: INVERSE 
90  PRINT  SPC( 11);"  S C O R I N G  "; SPC( 12): NORMAL 
92  PRINT : PRINT  SPC( 3)"HIT....................+10 POINTS""
94  PRINT  SPC( 3)"ESCAPE.................-03 POINTS"
96  PRINT  SPC( 3)"SHOOTS FIRED...........-01 POINTS"
98  GOSUB 1500: INVERSE : PRINT : PRINT " PRESS ANY KEY TO START";: VTAB 2: HTAB 20: GET A$: NORMAL : HOME 
100  POKE  - 16304,0: POKE  - 16297,0: POKE  - 16300,0
200  VTAB 22: HTAB 5: PRINT "SCORE:";PT%;"   ";: HTAB 30: PRINT "*ORBITA": HTAB 5: PRINT "RECORD:";RE%;: HTAB 30: PRINT "SHIPS:";NL%;: GOSUB 400
210 V% =  RND (1) * 6: IF V% < 2 THEN 210
220 L% =  RND (1) * 5: IF L% = 0 THEN 220
230 N% =  RND (1) * 7: IF N% = 0 THEN 230
240 S% = S% + 1:V% = V% + (S% > 15) + (S% > 30)
250  IF NL% = 10 THEN 350
300  ON L% GOTO 500,500,700,700
350  FLASH : VTAB 21: HTAB 5: PRINT " GAME OVER : AGAIN (Y/N)?";: GET A$: IF A$ = "N" THEN  TEXT : HOME : NORMAL : END 
360  IF A$ <  > "Y" THEN  PRINT  CHR$ (7): GOTO 350
370  IF PT% > RE% THEN RE% = PT%
380 NL% = 0:PT% = 0: HOME : NORMAL : GOTO 200
400  REM 
410  FOR I = 1 TO 3:H% =  RND (1) * 7:S% =  RND (1) * 15: IF S% = 0 THEN S% = 15
420  HCOLOR= H%: SCALE= S%: FOR J = 0 TO 64 STEP 4: ROT= J: DRAW 7 AT 140,80: NEXT 
430  POKE 0,5 +  INT ( RND (1) * 100): POKE 1,5 +  INT ( RND (1) * 30): CALL 771: NEXT 
440  SCALE= 1: HCOLOR= 3: ROT= 0: RETURN 
500  REM 
510 YN% =  RND (1) * 140: IF YN% < 21 THEN 510
520 XI% = 50:XF% = 230
530  IF L% = 2 THEN V% =  - V%:XI% = 230:XF% = 50
540  FOR M = XI% TO XF% STEP V%
550  XDRAW N% AT M,YN%:P% =  PEEK ( - 16384): IF P% = 160 THEN 610
560  GOSUB 2100
600  XDRAW N% AT M,YN%: NEXT :NL% = NL% + 1:PT% = PT% - 3: GOTO 200
610  POKE 0,200: POKE 1,8: CALL 771: SCALE= 3: XDRAW 1 AT X%,Y%: POKE 0,100: POKE 1,8: CALL 771: XDRAW 1 AT X%,Y%: SCALE= 1:PT% = PT% - 1
620  IF M > X% - 5 AND M < X% + 5 AND YN% > Y% - 5 AND YN% < Y% + 5 THEN 650
630  POKE  - 16368,0: GOTO 600
650 PT% = PT% + 10: FOR I = 1 TO 5: SCALE= I: XDRAW N% AT X%,Y%: POKE 0,I * 10: POKE 1,5: CALL 771: XDRAW N% AT X%,Y%: NEXT : SCALE= 1: POKE  - 16368,0: XDRAW N% AT M,YN%: GOTO 200
700  REM 
710 XN% =  RND (1) * 230: IF XN% < 51 THEN 710
720 YI% = 20:YF% = 140
730  IF L% = 3 THEN V% =  - V%:YI% = 140:YF% = 20
740  FOR M = YI% TO YF% STEP V%
750  XDRAW N% AT XN%,M:P% =  PEEK ( - 16384): IF P% = 160 THEN 810
760  GOSUB 2100
800  XDRAW N% AT XN%,M: NEXT :NL% = NL% + 1:PT% = PT% - 3: GOTO 200
810  POKE 0,200: POKE 1,8: CALL 771: SCALE= 3: XDRAW 1 AT X%,Y%: POKE 0,100: POKE 1,8: CALL 771: XDRAW 1 AT X%,Y%: SCALE= 1:PT% = PT% - 1
820  IF M > Y% - 5 AND M < Y% + 5 AND XN% > X% - 5 AND XN% < X% + 5 THEN 850
830  POKE  - 16368,0: GOTO 800
850 PT% = PT% + 10: FOR I = 1 TO 5: SCALE= I: XDRAW N% AT X%,Y%: POKE 0,I * 10: POKE 1,5: CALL 771: XDRAW N% AT X%,Y%: NEXT : SCALE= 1: POKE  - 16368,0: XDRAW N% AT XN%,M: GOTO 200
1000  REM 
1010  DATA  173,48,192,136,208,4,198,1,240,8,202,208,246,166,0,76,3,3,96
1020  DATA  10,0,22,0,44,0,74,0,106,0,136,0,172,0,203,0,209,0,230,0,251,0
1030  DATA  9,45,61,63,60,60,36,52,54,55,55,63,47,45,46,46,54,38,36,37,37,0
1040  DATA  33,36,60,44,53,55,54,63,63,55,39,44,46,45,54,54,62,46,37,39,36,45,45,37,53,62,60,63,4,0
1050  DATA  42,53,54,45,61,63,36,36,36,36,45,61,63,54,62,63,39,36,63,47,45,54,54,54,54,63,47,45,36,44,5,0
1060  DATA  36,36,45,60,63,55,45,54,54,55,55,63,36,55,54,46,36,45,44,44,53,53,45,36,53,54,62,36,7,0
1070  DATA  45,45,36,53,54,62,36,63,63,36,36,63,44,45,53,63,54,54,63,63,54,39,36,44,54,45,45,54,54,63,46,45,37,63,4,0
1080  DATA  45,45,53,54,39,36,63,63,63,63,39,36,53,54,45,45,36,36,44,45,62,63,54,54,54,54,62,63,44,45,0
1090  DATA  33,63,54,45,4,0
1100  DATA  38,45,53,9,52,27,36,39,39,39,52,62,62,62,54,27,52,9,44,45,0
1110  DATA  52,63,39,27,38,9,54,53,53,53,38,44,44,44,36,9,38,27,62,63,0
1120  DATA  52,38,47,61,13,9,36,36,63,63,63,63,54,54,54,54,45,45,45,45,36,36,0
1130  FOR I = 771 TO 789: READ A%: POKE I,A%: NEXT : PRINT 
1140 P% = 16384: FOR I = 1 TO 274: READ A%: POKE P%,A%:P% = P% + 1: PRINT ".";: NEXT 
1150  POKE 232,0: POKE 233,64
1160  RETURN 
1500  REM 
1510  HCOLOR= 3: HPLOT 30,0 TO 250,0 TO 250,159 TO 30,159 TO 30,0 TO 45,15 TO 235,15 TO 235,145 TO 45,145 TO 45,15
1520  FOR I = 1 TO 100
1530 X% =  RND (1) * 235: IF X% < 45 THEN 1530
1540 Y% =  RND (1) * 145: IF Y% < 15 THEN 1540
1550  HPLOT X%,Y%: NEXT : ROT= 0: SCALE= 1
1560  HPLOT 250,0 TO 235,15: HPLOT 250,160 TO 235,145: HPLOT 30,160 TO 45,145: HCOLOR= 6
1570  FOR Y = 15 TO 145: HPLOT 1,Y TO 21,Y: HPLOT 259,Y TO 279,Y: NEXT :X% = 140:Y% = 80
1580  XDRAW 8 AT X%,155: XDRAW 9 AT X%,5: XDRAW 10 AT X%,Y%: ROT= 16: XDRAW 8 AT 35,Y%: XDRAW 9 AT 245,Y%: ROT= 0:NL% = 0:PT% = 0:N% = 0: RETURN 
2000  REM 
2100  IF P% = 136 AND X% > 50 THEN  XDRAW 9 AT X%,5: XDRAW 8 AT X%,155: XDRAW 10 AT X%,Y%:X% = X% - 5: XDRAW 9 AT X%,5: XDRAW 8 AT X%,155: XDRAW 10 AT X%,Y%: RETURN 
2200  IF P% = 149 AND X% < 230 THEN  XDRAW 9 AT X%,5: XDRAW 8 AT X%,155: XDRAW 10 AT X%,Y%:X% = X% + 5: XDRAW 9 AT X%,5: XDRAW 8 AT X%,155: XDRAW 10 AT X%,Y%: RETURN 
2300  IF P% = 193 AND Y% > 20 THEN  ROT= 16: XDRAW 8 AT 35,Y%: XDRAW 9 AT 245,Y%: ROT= 0: XDRAW 10 AT X%,Y%:Y% = Y% - 5: ROT= 16: XDRAW 8 AT 35,Y%: XDRAW 9 AT 245,Y%: ROT= 0: XDRAW 10 AT X%,Y%: RETURN 
2400  IF P% = 218 AND Y% < 140 THEN  ROT= 16: XDRAW 8 AT 35,Y%: XDRAW 9 AT 245,Y%: ROT= 0: XDRAW 10 AT X%,Y%:Y% = Y% + 5: ROT= 16: XDRAW 8 AT 35,Y%: XDRAW 9 AT 245,Y%: ROT= 0: XDRAW 10 AT X%,Y%: RETURN 
2500  FOR F = 1 TO 30: NEXT : RETURN 
Please follow and like us:

About the Author

A.P.P.L.E.

The A.P.P.L.E. Website is run by the Apple Pugetsound Program Library Exchange Users Group and is open to all Apple and Macintosh fans and their friends.