wyerd Posted July 24, 2015 Share Posted July 24, 2015 I found these cassette based games while looking for something else. Are they listed on any DB and would anyone be interested in them, although I'm unable to verify that they still work? I can do a hires scan if required. 4 Quote Link to comment Share on other sites More sharing options...
+Schmitzi Posted July 24, 2015 Share Posted July 24, 2015 Bomber: ouh this was one of my very first favourites, I can remember that I entered it from a german magazine, had some errors from my reading, and was so proud some days later to show my dad that I found my typo-error :) Was playing it all the day then 100 REM BOMBER ©1984 R. BAUER110 RANDOMIZE120 CALL CLEAR130 CALL CHAR(96,"00FF999999FFFFFF")140 CALL CHAR(136,"00000000267EBFFB")150 CALL CHAR(128,"49FB7F7E7E7FFFFF")160 CALL CHAR(112,"0000001F84FE3F12")170 CALL CHAR(104,"FFFFFF")180 CALL CHAR(42,"00000000000E0E")190 CALL COLOR(9,5,16)200 CALL COLOR(11,2,1)210 CALL COLOR(10,15,1)220 CALL COLOR(13,5,11)230 REM START NEUES SPIEL240 PZ=0250 REM HAEUSER AUFBAUEN260 CALL CLEAR270 I=3280 J=RND*8+3290 FOR B=1 TO RND*5300 CALL VCHAR(J,I,96,24-J)310 I=I+1320 IF I>31 THEN 360330 NEXT B340 I=I+1350 IF I<32 THEN 280360 CALL HCHAR(24,1,104,32)370 REM START BOMBER380 FX=1390 FY=1400 LX=0410 LY=1420 LX=LX+1430 IF LX<32 THEN 460440 LY=LY+1450 LX=1460 CALL SOUND(-1000,-6,24-FY)470 FX=FX+1480 IF FX<32 THEN 510490 FX=1500 FY=FY+1510 CALL GCHAR(FY,FX,T)520 IF T=96 THEN 840530 CALL GCHAR(FY+1,FX+1,T)540 IF T=96 THEN 550 ELSE 1440550 IF BZ<2 THEN 840560 CALL HCHAR(FY,FX,112)570 CALL HCHAR(LY,LX,32)580 PZ=PZ+1590 CALL KEY(0,KEY,S)600 IF S=0 THEN 650610 IF BZ>0 THEN 660620 BY=FY630 BX=FX640 BZ=1650 IF BZ=0 THEN 770660 CALL HCHAR(BY,BX,32)670 BX=BX+1680 BY=BY+1690 IF BX<32 THEN 720700 BX=1710 BY=BY+1720 IF BY>22 THEN 800730 CALL GCHAR(BY,BX,X)740 IF X=96 THEN 800750 CALL HCHAR(BY,BX,42)760 BZ=BZ+1770 IF FY<23 THEN 420780 IF FX<31 THEN 420790 GOTO 250800 CALL VCHAR(1,BX,32,BY)810 CALL SOUND(-2000,-5,0)820 BZ=0830 GOTO 770840 GOSUB 1250850 DRUCK$=" PUNKTZAHL = "&STR$(PZ)860 VTAB=1870 HTAB=2880 GOSUB 1010890 IF HS>PZ THEN 920900 HS=PZ910 GOSUB 1190920 DRUCK$=" HIGHSCORE = "&STR$(HS)930 GOSUB 1010940 DRUCK$=" NOCH EIN SPIEL ? "950 GOSUB 1010960 CALL KEY(0,KEY,S)970 IF S=0 THEN 960980 IF KEY=74 THEN 230990 IF KEY<>78 THEN 9601000 END1010 REM PRINTROUTINE1020 FOR DRI=1 TO LEN(DRUCK$)1030 CODE=ASC(SEG$(DRUCK$,DRI,1))1040 GOSUB 10801050 NEXT DRI1060 GOSUB 11301070 RETURN1080 REM COUNT1090 CALL HCHAR(VTAB,HTAB,CODE)1100 HTAB=HTAB+11110 IF HTAB<32 THEN 11801120 REM CROUT1130 VTAB=VTAB+11140 HTAB=21150 IF VTAB<25 THEN 11801160 VTAB=241170 PRINT1180 RETURN1190 FOR SI=1 TO 51200 FOR SJ=-3 TO-11210 CALL SOUND(100,SJ,1)1220 NEXT SJ1230 NEXT SI1240 RETURN1250 FX=FX+11260 CALL HCHAR(FY,FX-1,112)1270 CALL HCHAR(FY,FX-2,32)1280 CALL HCHAR(FY,FX-1,32)1290 L=241300 CALL SOUND(-1000,-7,1)1310 CALL HCHAR(FY,FX,128)1320 FOR J=1 TO 2501330 NEXT J1340 CALL HCHAR(FY,FX,32)1350 FY=FY+11360 IF FY=24 THEN 14101370 CALL HCHAR(FY,FX,32)1380 CALL SOUND(-100,-5,L)1390 L=L-11400 GOTO 13501410 CALL SOUND(100,-7,L-1)1420 CALL HCHAR(FY-1,FX,136)1430 RETURN1440 CALL GCHAR(FY+1,FX,T)1450 IF T=96 THEN 1460 ELSE 5601460 CALL SOUND(-100,392,2)1470 GOTO 560 R_BAUER.dsk 2 Quote Link to comment Share on other sites More sharing options...
+mizapf Posted July 24, 2015 Share Posted July 24, 2015 Dive Bomber!! Was my first program as well that I typed in from a magazine. 2 Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted July 24, 2015 Share Posted July 24, 2015 Do you think you could post disk images of the files here? Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted July 24, 2015 Share Posted July 24, 2015 Bomber: ouh this was one of my very first favourites, I can see why it was a favorite of your after I did a cut & paste into Classic 99 from your listing. It's a surprisingly fun little game for TI-BASIC. 1 Quote Link to comment Share on other sites More sharing options...
+mizapf Posted July 24, 2015 Share Posted July 24, 2015 (edited) Next thing I did with this program: I added a highscore file to it. This makes it even more fun! Edit: And I seem to have converted it to Extended Basic. So here's the complete code: 100 RANDOMIZE 105 A=2 110 CALL CLEAR 120 CALL CHAR(96,"00FF999999FFFFFF") 130 CALL CHAR(112,"000000000086CFFE") 140 CALL CHAR(104,"FFFFFF") 150 CALL CHAR(42,"000000607806") 155 PZ=0 160 CALL COLOR(9,A,16) 170 CALL COLOR(11,16,1) 180 CALL COLOR(10,15,1) 190 REM START NEUES SPIEL 210 REM HAEUSER AUFBAUEN 215 SG=3 220 CALL CLEAR 230 I=2 240 J=RND*8+3 250 FOR B=1 TO RND*(SG+1) 260 CALL VCHAR(J,I,96,24-J) 270 I=I+1 280 IF I>31 THEN 320 290 NEXT B 300 I=I+1 310 IF I<32 THEN 240 320 CALL HCHAR(24,1,104,32) 330 REM START BOMBER 340 FX=1 350 FY=1 360 LX=0 370 LY=1 380 LX=LX+1 390 IF LX<32 THEN 420 400 LY=LY+1 410 LX=1 420 CALL SOUND(-1000,-6,24-FY) 430 FX=FX+1 440 IF FX<32 THEN 470 450 FX=1 460 FY=FY+1 470 CALL GCHAR(FY,FX,T) 480 IF T=96 THEN 800 490 CALL GCHAR(FY+1,FX+1,T) 500 IF T<>96 THEN 520 510 IF BZ<2 THEN 800 520 CALL HCHAR(FY,FX,112) 530 CALL HCHAR(LY,LX,32) 540 PZ=PZ+1 550 CALL KEY(0,KEY,S) 560 IF S=0 THEN 610 570 IF BZ>0 THEN 620 580 BY=FY 590 BX=FX 600 BZ=1 610 IF BZ=0 THEN 730 620 CALL HCHAR(BY,BX,32) 630 BX=BX+1 640 BY=BY+1 650 IF BX<32 THEN 680 660 BX=1 670 BY=BY+1 680 IF BY>22 THEN 760 690 CALL GCHAR(BY,BX,X) 700 IF X=96 THEN 760 710 CALL HCHAR(BY,BX,42) 720 BZ=BZ+1 730 IF FY<23 THEN 380 740 IF FX<31 THEN 380 750 A=A+1 :: GOTO 160 760 CALL VCHAR(1,BX,32,BY) 770 CALL SOUND(-2000,-5,0) 780 BZ=0 790 GOTO 730 800 DISPLAY AT(1,2):"PUNKTZAHL = ";PZ 810 IF HS>PZ THEN 840 820 HS=PZ 830 GOSUB 910 840 DISPLAY AT(2,2):"HIGHSCORE = ";HS 845 CALL BESTENLISTE(PZ) 850 DISPLAY AT(3,2):"NOCH EIN SPIEL? <J> <N>" 860 CALL KEY(0,K,S) 870 IF S=0 THEN 860 880 IF K=74 THEN 105 890 IF K<>78 THEN 860 900 END 910 FOR SI=1 TO 5 920 FOR SJ=-3 TO -1 930 CALL SOUND(100,SJ,1) 940 NEXT SJ 950 NEXT SI 960 RETURN 20000 SUB BESTENLISTE(Z) 20010 OPEN #1:"DSK1.SCORES",SEQUENTIAL,INTERNAL,UPDATE,VARIABLE :: FOR A=1 TO 10 :: INPUT #1:NAME$(A),P(A) :: NEXT A 20020 IF Z<P(10) THEN 20070 20030 FOR A=1 TO 10 :: IF Z>P(A) OR P(A)=0 THEN 20050 20040 NEXT A :: GOTO 20070 20050 FOR B=9 TO A STEP -1 :: P(B+1)=P(B) :: NAME$(B+1)=NAME$(B) :: NEXT B 20060 CALL CLEAR :: INPUT "NAME: ":NAME$(A) :: P(A)=Z 20070 DISPLAY AT(1, ERASE ALL :"BESTENLISTE":" ===========" 20080 CALL CHAR(33,"1818181818181818") 20090 CALL VCHAR(4,7,33,21) :: CALL VCHAR(4,18,33,21) 20100 RESTORE #1 :: DISPLAY AT(4,1):"RANG NAME PUNKTE" 20110 FOR A=1 TO 10 :: DISPLAY AT(A*2+4,1) SIZE(-3):STR$(A);"." :: DISPLAY AT(A*2+4,6) SIZE(10):NAME$(A) 20120 DISPLAY AT(A*2+4,17) SIZE(10)(A) :: PRINT #1:NAME$(A),P(A) :: NEXT A :: CLOSE #1 20130 CALL KEY(0,K,S) :: IF S=0 THEN 20130 ELSE CALL CLEAR 20140 SUBEND Edited July 24, 2015 by mizapf 3 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted July 24, 2015 Share Posted July 24, 2015 Next thing I did with this program: I added a highscore file to it. This makes it even more fun! Edit: And I seem to have converted it to Extended Basic. So here's the complete code: Hmmm, Quote Link to comment Share on other sites More sharing options...
+mizapf Posted July 24, 2015 Share Posted July 24, 2015 (edited) OK, seems as if that SCORES file must be created before. Let me see ... It's an INT/VAR 80 file (don't ask me...) that contains records like <Name>,<Points> Try: OPEN #1:"DSK1.SCORES",SEQUENTIAL,INTERNAL,OUTPUT,VARIABLE :: FOR A=1 TO 10 :: PRINT #1:"NOBODY", 0 :: NEXT A :: CLOSE #1 Edited July 24, 2015 by mizapf 1 Quote Link to comment Share on other sites More sharing options...
+Schmitzi Posted July 24, 2015 Share Posted July 24, 2015 ... I´ll try Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted July 24, 2015 Share Posted July 24, 2015 OK, seems as if that SCORES file must be created before. Let me see ... Try: OPEN #1:"DSK1.SCORES",SEQUENTIAL,INTERNAL,OUTPUT,VARIABLE :: FOR A=1 TO 10 :: PRINT #1:"NOBODY", 0 :: NEXT A :: CLOSE #1 BETTER! 2 Quote Link to comment Share on other sites More sharing options...
+mizapf Posted July 24, 2015 Share Posted July 24, 2015 This highscore tool was one of my first applications for Extended Basic subprograms. It is designed to be merged to any XB program. Quote Link to comment Share on other sites More sharing options...
wyerd Posted July 24, 2015 Author Share Posted July 24, 2015 Do you think you could post disk images of the files here? Unfortunately, I don't have a cassette player to load them. I can always mail them to someone who does. Let me know. Quote Link to comment Share on other sites More sharing options...
+Schmitzi Posted July 24, 2015 Share Posted July 24, 2015 BETTER! ..on what platform do you play it ? I cannot write to a DSK.file in Classic99.... any idea ? ...and I think the "Bomber" itself is in TI-Basic Quote Link to comment Share on other sites More sharing options...
+Schmitzi Posted July 24, 2015 Share Posted July 24, 2015 ...Maybe you can make a DSK from the final ? Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted July 24, 2015 Share Posted July 24, 2015 No, Classic99 will NOT write to a DSK file. You need to switch it to a FIAD directory then you can save to your hearts content. That's usually how I copy single files over to R.I. I save it to a FIAD directory, then load it from the same directory with the HDX. Quote Link to comment Share on other sites More sharing options...
+Vorticon Posted July 24, 2015 Share Posted July 24, 2015 Unfortunately, I don't have a cassette player to load them. I can always mail them to someone who does. Let me know. I'm happy to convert them if they are still usable. They'll make a nice addition to the TI Gameshelf site. I'll PM you my address. 2 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted July 24, 2015 Share Posted July 24, 2015 For English speaking/reading people... Bomber (English).zip 1 Quote Link to comment Share on other sites More sharing options...
Retrospect Posted July 25, 2015 Share Posted July 25, 2015 (edited) For English speaking/reading people... Just ran it, it errored after I scored so many points - it said something about line 185 (I switched off quite abruptly without reading properly ) Nice little type-in. Can't wait for the Apex Bomber if someone can 'digitize' that, I used to have it Edited July 25, 2015 by Retrospect Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted July 25, 2015 Share Posted July 25, 2015 Yeah, you need to run the BOMBERSCORE program included in this file below to create a SCORES file. I probably should have created an 'ON ERROR' trap and put the code into the program.... oh well, too late now. Anyway download this version run the file and you should be golden. Bomber-A (English).zip 2 Quote Link to comment Share on other sites More sharing options...
Retrospect Posted July 25, 2015 Share Posted July 25, 2015 I found these cassette based games while looking for something else. Are they listed on any DB and would anyone be interested in them, although I'm unable to verify that they still work? I can do a hires scan if required. These are very interesting to me, they are UK games that are VERY rare and hard to get hold of, I had Bomber and would love for a file to be created of the cassette if at all possible, so it can be played in Classic99 emulator. Quote Link to comment Share on other sites More sharing options...
senior_falcon Posted July 26, 2015 Share Posted July 26, 2015 Now that is a heck of a good game! And it runs fine in XB. I haven't tried it in BASIC but I imagine it would be slower. Since you've moved over to XB, how about converting the plane and the bomb to sprites. The playability wouldn't improve, but it would be just a bit more polished in appearance. 1 Quote Link to comment Share on other sites More sharing options...
Omega-TI Posted July 26, 2015 Share Posted July 26, 2015 Yes, it is a good game, I tweaked it a little more, added a little speech too. Both files and the PDF are in the ZIP file (attached). I'd like to see what else someone can add to the program. Let's make it a group thing! I liked your idea for sprites. Heck someone could make it a random day or night thing too, possibly even with stars (like Parsec). Let's see what we can do with this thing. Who knows, once it's all jazzed up, someone might even make it an E/A 5 game... who knows where this can lead. BOMBER-XBS.zip 1 Quote Link to comment Share on other sites More sharing options...
+Schmitzi Posted July 26, 2015 Share Posted July 26, 2015 Hi, cool work, on my former favorite One question: For the highscore-file, is it possible to integrate a check in the main programm, like "Open #1:Scores,bla" and "On Error..." (If not exists) GOSUB 20500 (to Create the file once) ? ...or does Basic break the program if the file does not exist ? maybe maybe Quote Link to comment Share on other sites More sharing options...
+mizapf Posted July 26, 2015 Share Posted July 26, 2015 I think I remember that 30 years ago I had that same idea, to enhance TI BASIC programs with sprites (like Dive Bomber, Space Defense etc.) but never really got that far (maybe because I was distracted by assembly programming ... :-) ) Programming with sprites in Extended Basic always turned out for me to be less fun than one would guess at first thought. The problem is the sprite automotion. What you see in TI BASIC is a sort of discrete time sequence. The aircraft advances one column, the bomb advances one column. This is a perfectly reproducible process; simulations with hundreds or thousands of agents are done in the same way. Here, you will get the same results when you drop a bomb at the same position with the same environment. Replace the bomb with a sprite. You will certainly want to use automotion because we cannot afford to let the sprite be repositioned by the Basic program; this would look basically the same as with plain characters. But with automotion we switch from the discrete simulation to some kind of event-based simulation: When does the sprite hit a building? Unfortunately, we do not have a means to trigger and handle an event (like "when the sprite hits the wall, do this") except for testing for sprite coincidence (COINC). So I would expect that after dropping the bomb we would have to continuously poll the sprite location and check whether at the current position there is a wall. What I wanted to say is: Sprites seem to be a simple means to get smooth action into a game, but although Extended Basic is pretty fast, it is not fast enough to ensure a flawless experience without sprites going halfway through a barrier or seemingly passing through a target. Notwithstanding, why not try it? Let's see the best approach. Maybe finally we learn to write better programs. 1 Quote Link to comment Share on other sites More sharing options...
Opry99er Posted July 26, 2015 Share Posted July 26, 2015 You could turn the closest hittable wall into a series of SPRITEs, one after another, all the way down... Then do a COINC(ALL) check... Upon coincidence, the necessary checks can be done to determine which part of the wall was hit. If the SPRITEs are numbered sequentially from top to bottom, it would be trivial to determine which ones to delete based on where the coincidence took place on the wall. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.