Jump to content
IGNORED

Air-Sea Battle


Opry99er

Recommended Posts

I came home from work today to find my son had overwritten one of my Magellan files... Something I had worked on off and on for a while, but hadn't done anything with just yet. I was upset.... And then he showed me what he did.

 

One of our favorite "before-bedtime" activities is to play Air-Sea Battle on the 2600. He had created this basic screen and I used his graphics (he is really getting good at graphics. ;))

 

 

Enjoy

100 CALL CLEAR :: CALL SCREEN(16):: CALL CHAR(64,"0"):: CALL CHAR(72,"0"):: CALL CHAR(80,"0")
110 CALL CHAR(96,"03060C183C7EFFFFC06030183C7EFFFF0000003C3C000000C87E9B69699B7EC8")
120 CALL CHAR(100,"E033997F7F9933E0"):: CALL CHAR(104,"FFFFFFFFFFFFFFFF")
130 CALL CHAR(112,"0"):: CALL CHAR(120,"0"):: CALL CHAR(128,"0")
140 CALL HCHAR(3,1,112,64):: CALL HCHAR(5,1,120,64):: CALL HCHAR(7,1,128,64)
150 CALL HCHAR(9,1,64,64):: CALL HCHAR(11,1,72,64):: CALL HCHAR(13,1,80,64):: CALL HCHAR(24,1,104,32)
160 CALL COLOR(5,12,12,6,11,11,7,9,9,10,3,1,11,15,15,12,8,8,13,6,6,14,5,5)
170 DISPLAY AT(1,5):"00               00" :: DISPLAY AT(23,10):CHR$(96):: DISPLAY AT(23,20):CHR$(97)
180 CALL SPRITE(#3,99,16,50,10,0,20):: CALL SPRITE(#4,100,13,80,10,0,23)
190 CALL SPRITE(#1,98,2,174,90,-20,20):: CALL SPRITE(#2,98,8,174,170,-20,-20)
200 FOR I=1 TO 700 :: NEXT I :: CALL DELSPRITE(#1,#2):: GOTO 190
Edited by Opry99er
  • Like 3
Link to comment
Share on other sites

The 2600 "Air-Sea Battle" was absolutely great. An early cartridge/memory. Colorful (also when not playing). You could practice on your own (one player). And it was great head-to-head (two players each with a joystick).

 

"Combat" was actually not all that bad. Again you could practice alone, but it really came to life when playing head-to-head.

 

All games end after 2 minutes and 16 seconds, or when either player scores 99 points. During the last 16 seconds, the score will flash to show that the game is nearing the end.

 

Short and sweet.

 

:)

Link to comment
Share on other sites

Thanks. :)

 

We usually play game variation #4 which is a standard stationary missile base... 3 firing trajectories, 90 degrees, 45 degrees (standard resting position) and a flat trajectory that I would guess to be about 25 degrees. Up and down joystick movement selects the trajectory of the missile, while the fire button releases it. No missile cancellation (unlike GORF) and only one missile in play per player at a time.

 

Should be relatively trivial to add controls and turn this into a game. :)

Link to comment
Share on other sites

Thanks, CS1. :)

 

I should do it in assembly, but I probably won't. XB with the compiler more than likely.

 

I could see the entire game fitting in 50-60 lines of XB code, even if I add single player and a second variation (steerable projectiles). I have always loved this game and plan on fleshing it out when I get done with the current project.

 

 

Eventually I would like to rework RFTB and Honeycomb Rapture and put them on a cart with Vector Hyperdrive, Air-Sea Battle, and Monster Canyon (when those three get done). Put out a multicart of 5 games complete with manual. That's my dream, anyway... We shall see how it goes. :)

Edited by Opry99er
  • Like 1
Link to comment
Share on other sites

  • 1 month later...

Got a little action going here...

 

In the following demo, you can play two player... Player 1 uses the "A" button to fire, Player 2 uses the "ENTER" key to fire.

 

You can hit the targets in the sky (although they do not disappear when you hit them)

 

Your score will increase with each target you hit.

 

First player to make it to 20 points wins the game.

 

You can easily change the number of hits required by each player to win the game by simply changing the values in lines 460 and 510 respectively. For testing, I changed the value from 19 to 3.

 

Enjoy. :) :D

 

 

 

100 REM SET UP SCREEN AND GRAPHICS
110 CALL CLEAR :: CALL SCREEN(16):: CALL CHAR(64,"0"):: CALL CHAR(72,"0"):: CALL CHAR(80,"0")
120 CALL CHAR(96,"03060C183C7EFFFFC06030183C7EFFFF0000003C3C000000C87E9B69699B7EC8")
130 CALL CHAR(100,"E033997F7F9933E0"):: CALL CHAR(104,"FFFFFFFFFFFFFFFF")
140 CALL CHAR(112,"0"):: CALL CHAR(120,"0"):: CALL CHAR(128,"0")
150 CALL HCHAR(3,1,112,64):: CALL HCHAR(5,1,120,64):: CALL HCHAR(7,1,128,64)
160 CALL HCHAR(9,1,64,64):: CALL HCHAR(11,1,72,64):: CALL HCHAR(13,1,80,64):: CALL HCHAR(24,1,104,32)
170 CALL COLOR(5,12,12,6,11,11,7,9,9,10,3,1,11,15,15,12,8,8,13,6,6,14,5,5)
180 DISPLAY AT(23,10):CHR$(96):: DISPLAY AT(23,20):CHR$(97)
 
 
 
190 REM SET UP AND DISPLAY INITIAL SCORE
200 SCO1=0 :: SCO2=0
210 DISPLAY AT(1,5):SCO1;
220 DISPLAY AT(1,20):SCO2;
 
 
 
230 REM START TARGETS IN MOTION
240 CALL SPRITE(#3,99,16,50,10,0,20):: CALL SPRITE(#4,100,13,80,10,0,23)
 
 
 
250 REM START OF LOOP
260 CALL KEY(0,K,S):: IF K=65 THEN GOSUB 340 ELSE IF K=13 THEN GOSUB 360
270 IF PM1>0 THEN GOSUB 380
280 IF PM2>0 THEN GOSUB 410
290 IF PM1>0 THEN GOSUB 440
300 IF PM2>0 THEN GOSUB 490
310 GOTO 260
320 REM END OF LOOP
 
 
 
330 REM IF PLAYER 1 'FIRE' WAS PRESSED, THEN ACTIVATE MISSILE
340 PM1=1 :: CALL SPRITE(#1,98,2,174,90,-20,20):: RETURN
 
 
 
350 REM IF PLAYER 2 'FIRE' WAS PRESSED, THEN ACTIVATE MISSILE
360 PM2=1 :: CALL SPRITE(#2,98,8,174,170,-20,-20):: RETURN
 
 
 
370 REM CHECK FOR POSITION OF PLAYER 1 MISSILE, DELETE IF 'OUT OF PLAYFIELD'
380 CALL POSITION(#1,X,Y):: IF X>180 OR Y<20 THEN CALL DELSPRITE(#1):: PM1=0
390 RETURN
 
 
 
400 REM CHECK FOR POSITION OF PLAYER 2 MISSILE, DELETE IF 'OUT OF PLAYFIELD'
410 CALL POSITION(#2,XX,YY):: IF XX<10 OR YY<20 THEN CALL DELSPRITE(#2):: PM2=0
420 RETURN
 
 
 
430 REM CHECK FOR PLAYER 1 MISSILE COINC WITH TARGETS
440 CALL COINC(#1,#3,8,A):: CALL COINC(#1,#4,8,B)
450 IF A<0 OR B<0 THEN CALL DELSPRITE(#1):: PM1=0 :: SCO1=SCO1+1 :: DISPLAY AT(1,5):SCO1;
460 IF SCO1>19 THEN WINNER=1 :: GOSUB 540
470 RETURN
 
 
 
480 REM CHECK FOR PLAYER 2 MISSILE COINC WITH TARGETS
490 CALL COINC(#2,#3,8,C):: CALL COINC(#2,#4,8,D)
500 IF C<0 OR D<0 THEN CALL DELSPRITE(#2):: PM2=0 :: SCO2=SCO2+1 :: DISPLAY AT(1,20):SCO2;
510 IF SCO2>19 THEN WINNER=2 GOSUB 540
520 RETURN
 
 
 
530 REM END OF GAME
540 CALL CLEAR :: CALL DELSPRITE(ALL):: CALL CHARSET :: DISPLAY AT(8,:"PLAYER";WINNER;"WINS"
550 DISPLAY AT(10,2):"PRESS ENTER TO PLAY AGAIN"
560 CALL KEY(0,K,S):: IF S=0 THEN 560
570 IF K<>13 THEN 560
580 GOTO 100
  • Like 2
Link to comment
Share on other sites

There is obviously some tweaking that will take place... It is MUCH harder for player 2 to register a direct hit, as the direction of the targets is left to right ONLY at this moment... The left to right missiles have much more time to register...

 

 

Next step is to eliminate targets as they are hit and integrate different patterns, sizes, and speeds of targets in order to "level the playing field."

 

 

:)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...