Jump to content



Recommended Posts

I was showing TI-Trooper to my son and I noticed a scoring error, then I noticed that the plane didn't change direction even though I had made the graphics for the other direction, I just forgot to implement it. I also added joystick control which is great with a retro 2600 joystick, feels alot like I remember it. Also now there is a four jump round and a few more graphical animation.






By John Chase




Have you ever felt the desire to jump out of a perfectly fine aircraft?

Do you have a little daredevil inside you?


Then hang on to that cord and let it rip!


In TI-SKYDIVER you are a skydiver with 4 jumps to make.

First select your difficulty, with 0 being the hardest

and 3 being the easiest. The game will begin after you

make your selection.



The view from 20,000ft....

Look at the screen for vital information on your progress.


In the upper left corner you will see a tally of you jumps

so far, being 4 parachutes in the beginning and then showing

the result of the jumps after you make them.


At the center top is the high score of the game, with your

current score under it.


You plane is moving across the horizon and will test you

ability by alternating directions between jumps.


Watch the clouds to gage the wind speed and direction.


At the bottom of the screen you will see your landing area.


Harder games have more wind speed and small landing area.




You are scored by how brave you are, how long you wait to

pull that rip cord and open your chute. You must remember

to deploy your chute soon enough to land softly on the ground.

While you don't need to be at the minimum speed you do need

to be much slower then the freefall.


You will also loose points having your chute deployed.


Landing on the landing pad will score you an extra 100pts.

While smashing into the ground will cost you 100pts.


Your score accumulates for 4 jumps and the highest score for

a round of jumps will be recorded for the high score.



I'm in the plane, now what....

Press you joystick button to jump from the plane.

Pulling back on the stick will deploy your chute.

If you find yourself blowing off course you can try to correct

yourself by pushing the stick left or right, but an overpowering

wind will always win out.




Enjoy the flight, just don't get to relaxed in that seat.












100 DATA "60F0F8F8FCFFFFFFFF7F0000000000000000000000FFFFFCFBFB070707070F0E","0000000000FFFF01FEFDF8F0E0C080000000000000FCF2F9FFFE"
110 DATA "00000000003F4F9FFF7F0000000000000000000000FFFFC0BFDF0F070301","0000000000FFFF3FDFDFE0E0E0E0F070060F1F1F3FFFFFFFFFFE"
120 DATA 030705170B0503010101020204040808C0E0A0E8D0A0C0808080404020201010,0307050703011F010101020202040404C0E0A0E0C080F8808080404040202020
130 DATA 03070507030103050911010102020202C0E0A0E0C080C0A09088808040404040,033F7FFFFFF870202020101000000000C0FCFEFFFF1F0E040404080800000000
140 DATA 00000000000F1020405955595555407F0000000000E0100804645464444404FC,0000397FFFFFFF7EBDC37F3F60DFFE7C3CFEE7DBFFFF7EF0FCEFDF3FFFFE7800
150 DATA 0000033F7FFFFFFC702020201010101000FCFEFFFFFF0E040404080800000000,003F7FFFFFFF702020201010000000000000C0FCFEFFFF3F0E04040408080808
160 DATA 0307050703011F010101020204040808C0E0A0E8D0A0C0808080404020201010,030705170B0503010101020204040808C0E0A0E0C080F8808080404020201010
170 data 1,88,2,20,1,2,92,2,20,17,10,124,16,40,1,11,124,16,48,15,12,124,16,42,29
171 data 13,116,14,4,8,14,116,14,4,25,15,116,14,4,42,16,116,14,4,59
190 DISPLAY AT(2,9):"TI-SKYDIVER" :: CALL SCREEN(6) :: FOR I=1 TO 10 :: CALL COLOR(I,2,6) :: NEXT I::display at(6,6):"Choose difficulty"
200 DISPLAY AT(7,4):"0 hardest - 3 easiest" :: display at(20,5):"c2010 - John Chase"
230 CALL KEY(0,K,S) :: IF(S=0)+(K<48)+(K>51)THEN 230 ELSE Dif=K-48
240 call clear::FOR I=0 TO 13::READ C$::CALL CHAR(I*4+88,C$)::NEXT I::CALL COLOR(1,3,6,2,15,6)::PS=8
260 for i=1 to 9::read a,b,c,d,e::call sprite(#a,b,c,d,e)::next i::lp=-1:: PD=-1
265 for i=0 to 3::call pattern(#13+i,116)::next i::IF SC>HI THEN HI=SC::DISPLAY AT(1,10):"HIGH SCORE="&STR$(HI)::sc=0 else sc=0
270 tsc=0::lp=lp+1:=0 :: FS=2 :: PD=PD*-1::if lp=4 then lp=-1 :: goto 500
271 if pd=1 then CALL SPRITE(#1,88,2,20,1,0,PD*PS,#2,92,2,20,17,0,PD*PS) :: goto 280
272 CALL SPRITE(#1,96,2,20,1,0,PD*PS,#2,100,2,20,15,0,PD*PS)
280 CALL HCHAR(23,1,33,64)::PO=INT(RND*27)+2::CALL HCHAR(23,PO,40,2+Dif)
290 WS=5-INT(RND*(10+2*(3-Dif))) :: CALL MOTION(#10,0,WS,#11,0,WS,#12,0,WS)
300 if p=0 then CALL KEY(1,K,S)::IF K=18 THEN 370 else 300
310 if p=3 then 410 else CALL JOYST(1,X,Y) :: J=((X+3*Y)/4)+5 :: on j goto 380,330,380,340,380,350,380,380,380 
330 if p=1 then SC=SC+TSC:=2::CALL POSITION(#3,Y,X)::CALL SPRITE(#3,104,12,Y,X,fs,WS,#4,116,7,Y-8,X,fs,WS)::goto 310 else 380
340 if p=2 then CALL MOTION(#3,fs,WS-4,#4,fs,WS-4) :: CALL PATTERN(#3,136,#4,128):: goto 390 else 430
350 if p=2 then CALL MOTION(#3,fs,WS+4,#4,fs,WS+4) :: CALL PATTERN(#3,140,#4,132):: goto 390 else 430
370 P=1 :: CALL POSITION(#2,Y,X) :: CALL SPRITE(#3,104,12,Y+10,X,FS,PS/2*PD) :: CALL DELSPRITE(#4) :: GOTO 300
380 IF P=2 THEN CALL pattern(#3,104,#4,116) ELSE GOTO 430
390 SC=SC-1::DISPLAY AT(2,14):SC ::CALL POSITION(#3,Y,X)::fs=fs-3:: if fs<2 then fs=2 :: CALL MOTION(#3,fs,WS,#4,fs,WS)
395 IF Y>159 THEN 460 else 300
410 CALL POSITION(#4,Y,X) :: IF Y>176 THEN CALL MOTION(#4,0,0) :: GOTO 270 else goto 300
430 TSC=TSC+10 :: FS=FS+1 :: F=F+1 :: PAT=F :: IF F=3 THEN PAT=1 ELSE IF F=4 THEN F=0 :: PAT=0
440 CALL MOTION(#3,FS,PD*PS/2) :: CALL PATTERN(#3,104+PAT*4) :: CALL POSITION(#3,Y,X) :: IF Y>159 THEN 450 ELSE GOTO 300
450 CALL sprite(#3,120,2,161,X,0,0):: CALL DELSPRITE(#4)::call sound(1000,311,0,349,0,220,0)::call sound(1000,185,0,220,0,262,0)
451 call pattern(#13+lp,120)::sc=sc-100::DISPLAY AT(2,14):SC::GOTO 270
460 if fs<4.5 then CALL motion(#3,0,0)::call pattern(#3,112,#13+lp,112) :: P=3::DISPLAY AT(2,14):SC::tsc=0 else 450
470 IF(X+4>PO*8-*(X+11<PO*8+10+8*Dif)THEN SC=SC+100 :: CALL SOUND(300,262,0,330,0,392,0) :: CALL SOUND(2000,523,0,659,0,784,0) else 300
480 call pattern(#3,104)::call pattern(#13+lp,104)::DISPLAY AT(2,14):SC:: goto 300
500 display at(14,9):"PLAW AGAIN W/N"::CALL KEY(3,K,S):: IF K=89 THEN display at(14,9):" ":: goto 265 ELSE IF K=78 THEN END ELSE 500

Edited by jchase1970
Link to comment
Share on other sites

Very impressive. Good work.


One thing though. I can deploy parachute at ground level and easily survive.





In the first draft of the program I had it slow you down slowly. It didn't work to well, but it may have been because of some other bug. I'll try to reimplement that system and see if I can get it working. I never even thought about putting it back after I took it out.

Link to comment
Share on other sites

Ok, the game is now updated and the manual as well to reflect a need to open the chute in time to slow down before you hit the ground. You wont need to be at minimum speed which is 2 but you must be at around 4. It's alot more difficult since the resolution of 192 isn't much to show acceleration and deceleration. It wasn't had to add the slowdown in to the code but the required 1 line of space I had to compact was a challenge. I don't want to think about trying to squeeze anything else in there, lol.


As a side note, this game was a very fun project. Each of the programs I made were alot of fun to do. The TI99-4a is what over 30yrs old now and still bringing joy to us. That's great.

Link to comment
Share on other sites

Excellent update. Beautiful.


It seems to me we are pushing the machine - or have become better at pushing the machine. As someone else said, I was not expecting all these possibilities/entries, when I first heard about the XB 30+10 liner competition. What can you do with 30 lines ? Well, apparently a lot. And some of the tight control loops even makes ‘em playable. Amazing.



Link to comment
Share on other sites

I noticed on this project that just because you have the space the basic interpreter will only accept so much information on a line for ex,


271 if pd=1 then CALL SPRITE(#1,88,2,20,1,0,PD*PS,#2,92,2,20,17,0,PD*PS) :: goto 280

272 CALL SPRITE(#1,96,2,20,1,0,PD*PS,#2,100,2,20,15,0,PD*PS)


I wanted to have this on one line like

271 if pd=1 then CALL SPRITE(#1,88,2,20,1,0,PD*PS,#2,92,2,20,17,0,PD*PS) else CALL SPRITE(#1,96,2,20,1,0,PD*PS,#2,100,2,20,15,0,PD*PS)

even though it fits it says 'line to long'


and the same with data statements,

170 data 1,88,2,20,1,2,92,2,20,17,10,124,16,40,1,11,124,16,48,15,12,124,16,42,29

171 data 13,116,14,4,8,14,116,14,4,25,15,116,14,4,42,16,116,14,4,59

when I first enter this I had it on one line and got the 'line to long' error


So I guess there is a limit to how many arguments the interpreter can work out per line.


Another thing I noticed doing these 30 liners is that you can't put a for next loop after a if then, like this,

10 if a=0 then for x=1 to 10:: print x:: next x

That is a syntax error.



Edited by jchase1970
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.

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.

  • Recently Browsing   0 members

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