Jump to content
jchase1970

Canyon Bomber Delux

Recommended Posts

After reworking skydiver, I had an idea how to get my score to display on canyon bomber. When I sit down tonight to work on it I had no idea it would turn our like this. Also if anyone has a TI they can play it on can you tell me how it works on the real deal.

 

 

Welcome recruits,

We have a critical mission today, the water ways have

become over crowded with vegetation and has completely

shut down the shipping lanes. This must be fixes ASAP.

 

Your mission will be to take out a bomber loaded with

anti-vegetation depth charges and completely clear tthe

water way. Don't worry about missing as the depth charges

only hurt vegetation and wont damage the canyon. Some

vegetation may be less dense and it may take a 2nd drop

on it to make solid contact, don' despair you have all

the ammo you need to get the job done.

 

There is another team in route already and will provide

you some competition, should you find this not challenging

enough for you.

 

Simply fly over the canyon and drop your depth charges by

pressing q or the joystick button. Don't worry about the

wind even though it can become quit strong and change

directions it will have no effect on your mission.

 

Good Luck men.

 

 

caynon.jpg

 

100 DIM MM(114) :: CALL CLEAR :: PRINT "CANYON BOMBER"::PRINT "A 30 LINE GAME ENTRY BY"::PRINT "JOHN CHASE C2010"::PRINT "LOADING GAME...."
105 PRINT :: PRINT "DROP A BOMB TO BEGIN PLAYING" :: PRINT "USE THE JOYSTICK BUTTON OR Q KEY" :: CALL SCREEN(6) :: CALL MAGNIFY(3)
110 FOR I=0 TO 8 :: READ C$ :: CALL CHAR(92+I*4,C$) :: NEXT I :: CALL CHAR(120,"C5344C8B1028C433",113,"3CC30CF00FC03CC3")
120 CALL COLOR(11,11,2,12,13,2,2,8,5) :: CALL CHAR(40,"2255883146885522") :: FOR I=1 TO 112 :: READ MM(I) :: NEXT I
130 T=184 :: PS=0 :: CS=0 :: B=0 :: CB=0 :: ST=0 :: WS=4 :: CALL CLEAR :: DISPLAY AT(1,:"CANYON BOMBER"
140 CALL HCHAR(23,1,113,64) :: FOR I=1 TO 8 :: CALL VCHAR(14+I,I,113,9-I) :: CALL VCHAR(14+I,33-I,113,9-I) :: NEXT I
150 FOR I=1 TO 8 :: CALL HCHAR(14+I,I+1,120,32-2*I) :: NEXT I :: DISPLAY AT(1,24):0; :: DISPLAY AT(1,2):0;
160 CALL SPRITE(#1,92,2,48,1,0,10,#2,96,2,48,17,0,10,#3,100,15,48,226,0,-8,#4,104,15,48,240,0,-
165 CALL SPRITE(#7,116,7,216,1,#21,124,16,12,50,0,WS,#22,124,16,8,100,0,WS,#23,124,16,24,160,0,WS)
170 CALL KEY(1,K,S) :: IF(B=0)*(K=18)THEN B=1 :: ST=1 :: CALL POSITION(#2,Y,X) :: CALL SPRITE(#5,108,2,Y+10,X,4,4) :: BD=BD+1
175 M=M+2 :: CALL SOUND(500,MM(M),15) :: IF M=112 THEN M=0
180 WS=WS+(2-INT(RND*5)) :: CALL MOTION(#21,0,WS,#22,0,WS,#23,0,WS)
200 IF B=1 THEN CALL POSITION(#5,Y,X) :: Y=INT(Y/8)+1 :: X=INT(X/8)+1 :: P=1 :: GOSUB 240
210 IF(CB=0)*(ST=1)THEN CALL POSITION(#4,Y,X) :: CALL SPRITE(#6,108,15,Y+10,X,4,-4) :: CB=1
220 IF CB=1 THEN CALL POSITION(#6,Y,X) :: Y=INT(Y/8)+1 :: X=INT(X/8)+1 :: P=0 :: GOSUB 240
230 IF T>0 THEN 170 ELSE CALL DELSPRITE(ALL) :: DISPLAY AT(12,:"PLAY AGAIN Y/N" :: CALL KEY(3,K,S) :: IF K=89 THEN 130
235 IF K=78 THEN END ELSE GOTO 230
240 IF(Y<25)*(X<33)THEN CALL GCHAR(Y,X,C)ELSE RETURN
250 IF C<41 THEN RETURN
260 IF P=0 THEN CALL MOTION(#5,0,0) :: CALL DELSPRITE(#6)ELSE CALL DELSPRITE(#5) :: CALL MOTION(#6,0,0)
270 CALL SOUND(1000,-7,0) :: SS=0 :: FOR X1=-2 TO 2
280 IF X+X1>0 AND X+X1<33 THEN CALL GCHAR(Y,X+X1,C) :: IF C>119 THEN CALL HCHAR(Y,X+X1,40) :: CALL LOCATE(#7,Y*8-8,(X+X1)*8- :: SS=SS+1
290 IF Y+X1<23 THEN CALL GCHAR(Y+X1,X,C) :: IF C>119 THEN CALL HCHAR(Y+X1,X,40) :: CALL LOCATE(#7,(Y+X1)*8-8,X*8- :: SS=SS+1
310 NEXT X1 :: IF X-1>0 AND Y-1<24 THEN CALL GCHAR(Y-1,X-1,C) :: IF C>119 THEN CALL HCHAR(Y-1,X-1,40) :: CALL LOCATE(#7,Y*8,X* :: SS=SS+1
320 IF X+1<33 AND Y-1<24 THEN CALL GCHAR(Y-1,X+1,C) :: IF C>119 THEN CALL HCHAR(Y-1,X+1,40) :: CALL LOCATE(#7,Y*8,(X+1)*8- :: SS=SS+1
330 IF X-1>0 AND Y+1<24 THEN CALL GCHAR(Y+1,X-1,C) :: IF C>119 THEN CALL HCHAR(Y+1,X-1,40) :: CALL LOCATE(#7,(Y+1)*8-8,X* :: SS=SS+1
340 IF X+1<33 AND Y+1<24 THEN CALL GCHAR(Y+1,X+1,C) :: IF C>119 THEN CALL HCHAR(Y+1,X+1,40):: CALL LOCATE(#7,(Y+1)*8-8,(X+1)*8-::SS=SS+1
350 IF P=0 THEN CS=CS+SS :: DISPLAY AT(1,24):CS; :: CB=0 :: IF B=1 THEN CALL MOTION(#5,6,4)
355 IF P=1 THEN PS=PS+SS :: DISPLAY AT(1,2):PS; :: B=0 :: IF CB=1 THEN CALL MOTION(#6,6,-4)
360 T=T-SS :: CALL LOCATE(#7,216,1) :: RETURN
370 DATA "60F0F8F8FCFFFFFFFF7F0000000000000000000000FFFFFCFBFB070707070F0E","0000000000FFFF01FEFDF8F0E0C080000000000000FCF2F9FFFE"
380 DATA "00000000003F4F9FFF7F0000000000000000000000FFFFC0BFDF0F070301","0000000000FFFF3FDFDFE0E0E0E0F070060F1F1F3FFFFFFFFFFE"
390 DATA "F060F0F060000000000000000000000000000000000000000000000000000000",815A3C7E7E3C5A81000000000000000000000000000000000000000000000000
400 DATA 815A3C7E7E3C5A81000000000000000000000000000000000000000000000000,0000003F7FFFFE71EFFF7F370100000000041E3FFFFE1FEFF7F6F6CEFC700000
410 DATA 0000003F7FFFFE71EFFF7F370100000000041E3FFFFE1FEFF7F6F6CEFC700000
420 DATA 294,294,392,392,494,494,494,494,494,440,440,392,392,392,392,330,330,392,392,392,392,392,392,294,294
430 DATA 392,392,494,494,587,587,587,523,523,494,494,440,440,440,440,440,440,440,440,440,440,440,440,587,587
440 DATA 523,523,494,494,494,494,494,494,440,440,392,392,392,392,440,440,494,494,587,587,523,523,523,523,523
450 DATA 523,523,523,523,523,330,330,311,311,294,294,294,294,370,370,392,392,440,440,440,440,494,494,440,440
460 DATA 392,392,392,392,392,392,392,392,392,392,392,392

 

 

CANYON.zip

Edited by jchase1970

Share this post


Link to post
Share on other sites

The new graphics are very cool... However the original art was so retro!!! Just felt like Bill Cosby was sitting right there with a joystick going out of his mind on Jello pudding!! :). Very nice--- this game is quite cool

Share this post


Link to post
Share on other sites

I was kinda hoping the music and graphics (and story line) upgrade would be enough to when me the awesome TI system prize, lol. I've had a system in the watch area on ebay many times but never have bought one. Sometimes I really want one but then I think why when I have emulators, but it would be so fun to have my own programs on my own carts to show people.

 

I had a little bit of time todat and I was trying to tweak Canyon Bomber, I only needed to shave 50-100 millisecs off the loop. I tried something I didn't know till Adamantyr explained to me that call peek(-31808) was a rnd location. so I played with it and I cant believe that this,

randomize :: call peek(-31808,r) :: ws=2-int(r/255*5)

 

is faster then this,

ws=2-int(rnd*5)

 

I'm doing the last few tweeks to the game now and will post the new code in a few days, not much is going to change now, except my son thinks I need ships in the canyon after the seaweed is cleared to complete the story. So I'm going to try and work that in. I did free up 1 line woohoo!

 

Believe it or not this game runs at a massive 2 frames per second, lol. Well it's a few millisecs shy of that that is why the music isn't smoothly connected at times. I don't want to slow the frame rate to smooth the music, as it isn't to bad in this version and i nthe new tweeked version it is real close to what I need.

 

I could take out the changing wind speed clouds, but I think that is a nice little extra feature that gives the game a less static feel even though the game is not dynamic at all. Sometimes a simple illusion is all that's needed to fool the eye.

 

The old version did look nice and retro, and the new version till 30 minutes before posting it here had the same look. But I was trying hard to make it stand out and I decided, I wasn't trying to just copy the 2600 version, but improve on it and use all of the TI capabilities. I feel I have made it enjoyable to play as I couldn't play anymore of the 1st version, it was tedious to say the least, but I have play tested this version alot and still enjoy it.

 

I don't like the sky but I don't know what to do there. It's seems bland now next to the prettier land and sea textures, But if I jazz it up then the mono color sprites will look out of place so I may be at my graphical limit.

Edited by jchase1970

Share this post


Link to post
Share on other sites

randomize :: call peek(-31808,r) :: ws=2-int(r/255*5)

 

Can't you remove the multiply so that it becomes this :-

 

randomize :: call peek(-31808,r) :: ws=2-int(r/51)

Share this post


Link to post
Share on other sites

randomize :: call peek(-31808,r) :: ws=2-int(r/255*5)

 

Can't you remove the multiply so that it becomes this :-

 

randomize :: call peek(-31808,r) :: ws=2-int(r/51)

 

 

apparently so, thank you that's another few millisecs, lol.

Share this post


Link to post
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.

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...