
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: