Jump to content

tibasic

Members
  • Content Count

    99
  • Joined

  • Last visited

Community Reputation

294 Excellent

About tibasic

  • Rank
    Star Raider

Profile Information

  • Gender
    Male

Recent Profile Visitors

3,886 profile views
  1. Glad to hear you got the game working and that the program might even be useful! 🙂
  2. I've fixed all the issues now and the game is finished. See first post for the final version of the game. Next I think I'll attempt to make a game based on Battlezone in TI Basic. Below is a side scrolling experiment I did a while ago. 100 FOR I=1 TO 17 110 CALL CLEAR 120 CALL COLOR(2,1,1) 130 PRINT TAB(I+10);"*" 140 PRINT TAB(I+1);"*"; 150 PRINT TAB(I+9);"***" 160 PRINT TAB(I);"***"; 170 PRINT TAB(I+7);"*****" 175 CALL HCHAR(24,1,42,32) 180 CALL COLOR(2,5,5) 190 NEXT I
  3. I've fixed the high negative points situation. Additionally I have added a bonus points system to the game. You now get extra bonus points added to your score at the end depending on how many ships you have left. There is also a '5 gates remaining' message in the game so you know how many gates are left to go through. I've updated the listing in the first post. When the gate goes partly off the screen it either disappears or wraps around to the other side of the screen. It's a bit messy looking so I might have a go at fixing that.
  4. I've updated the program listing in the first post that has the fix for the coordinate errors. I also changed the keys to the ascii codes and updated the title screen to inform what directions the keys are for. I noticed that the game awards very high negative points if you fly to the side of the gates. I'll have to fix that and then it'll be ready I think.
  5. Thanks again oddemann. I think the line needs to be: 395 IF XPOS+T+X>32 THEN 404
  6. Thanks Vorticon and oddemann for trying the game and finding the errors. I thought I'd fixed the coordinate errors before I posted the game but it's great that you found them. All that is needed it seems are some small changes to lines 395 and 405. To correct the program the first minus sign in line 395 needs to be changed to a plus and in line 405 "ELSE 430" needs to be added to the end. The new lines are listed below and could be copy-pasted into the version listed above or could be done manually as they are very small changes. Hopefully it works better now! New lines: 395 IF XPOS+T+X-1>32 THEN 404 405 IF XPOS-T+X-1>=1 THEN 410 ELSE 430 Once it's all working properly I'll attach the full corrected version to the first post.
  7. Classic99 should be SEXD responsive! The game is a bit slow so maybe it doesn't look like anything is happening. Also you may want to swap around the E and X keys as I have the game configured so E is down and X is up. The line 340 and 360 could be changed as follows. 340 IF K=ASC("E") THEN 350 ELSE 360 360 IF K=ASC("X") THEN 370 ELSE 372
  8. I have been developing a 3D type game in TI Basic. In this game you pilot a helicopter through some laser gates. The number of points awarded depends how close horizontally you pass to the centre of the gate. You get a maximum of 5 points and there are 20 gates so theoretically you could get 100 points but I'm not sure if that's possible. I've tested it on Classic99 and Js99'er. The code is included below if you want to copy and paste it into one of the emulators. There are a few small issues to iron out but it seems to working ok. Update: all the issues are fixed now. I've also attached the file for running on Classic 99 and Js99'er. 100 REM LASERGATE 110 REM 120 REM ** TITLE SCREEN ** 130 RANDOMIZE 140 CALL CLEAR 150 CALL SCREEN(2) 160 FOR I=1 TO 16 170 CALL COLOR(I,16,1) 180 NEXT I 190 GOSUB 1420 200 INPUT "PRESS ENTER TO PLAY":ENTER$ 210 REM ** INITIALISE ** 220 CALL CLEAR 230 X=0 240 Y=1 250 XPOS=17 260 T=0 270 H=0 280 H2=0.8 290 GATE=0 300 SC=0 310 SHIP=10 320 REM ** GRAPHICS ** 330 CALL CHAR(128,"FFFFFFFFFFFFFFFF") 340 CALL CHAR(136,"FF") 350 CALL CHAR(144,"FE10387C7C3844C6") 360 CALL SCREEN(2) 370 CALL COLOR(13,3,1) 380 CALL COLOR(14,7,1) 390 CALL COLOR(15,16,1) 400 REM ** GAME START ** 410 REM 420 REM ** KEYS ** 430 CALL KEY(0,K,S) 440 IF K=88 THEN 450 ELSE 460 450 Y=Y-(Y<=10) 460 IF K=69 THEN 470 ELSE 480 470 Y=Y+(Y>=1)*2 480 IF K=68 THEN 490 ELSE 500 490 X2=-1 500 IF K=83 THEN 510 ELSE 530 510 X2=1 520 REM ** MOVE GATE ** 530 X=X+X2 540 YPOS=24-(T+8)*(10-Y)/10-Y 550 IF XPOS-T+X-1<1 THEN 580 560 CALL VCHAR(YPOS,XPOS-T+X-1,128,T) 570 GOTO 630 580 L=XPOS+T+X 590 CALL HCHAR(YPOS+T*H,1,136,L) 600 CALL HCHAR(YPOS+T*H2,1,136,L) 610 CALL VCHAR(YPOS,XPOS+T+X,128,T) 620 GOTO 720 630 IF XPOS+T+X>32 THEN 660 640 CALL VCHAR(YPOS,XPOS+T+X,128,T) 650 GOTO 700 660 L=XPOS-T+X-1 670 CALL HCHAR(YPOS+T*H,XPOS-T+X,136,32-L) 680 CALL HCHAR(YPOS+T*H2,XPOS-T+X,136,32-L) 690 GOTO 720 700 CALL HCHAR(YPOS+T*H,XPOS-T+X,136,2*T) 710 CALL HCHAR(YPOS+T*H2,XPOS-T+X,136,2*T) 720 CALL HCHAR(17,16,144) 730 REM ** PASS THRU GATE? ** 740 T=T+1 750 IF T<>10 THEN 1170 760 IF (18>=INT(YPOS+T*H)+1)*(18<=INT(YPOS+T*H2))THEN 770 ELSE 890 770 IF (16<XPOS-T+X-1)+(16>XPOS+T+X-2)THEN 890 780 CALL CLEAR 790 REM ** SCORING ** 800 PTS=INT(5-ABS(16-(XPOS+X-1))) 810 PTS=PTS*ABS(PTS>=0) 820 SC=SC+PTS 830 PRINT "POINTS:";PTS;"SCORE:";SC 840 REM ** BELL ** 850 FOR L=0 TO 16 STEP 2 860 CALL SOUND(-50,700,L,2100,L,4200,L) 870 NEXT L 880 GOTO 990 890 CALL CLEAR 900 REM ** MISSED GATE ** 910 CALL SOUND(300,500,0) 920 CALL SOUND(300,110,0) 930 SHIP=SHIP-1 940 IF SHIP=-1 THEN 1190 950 PRINT ::"REMAINING SHIPS:";SHIP 960 FOR I=1 TO 500 970 NEXT I 980 REM ** GATES REMAINING ** 990 GATE=GATE+1 1000 IF (GATE=5)+(GATE=10)+(GATE=15)THEN 1010 ELSE 1050 1010 PRINT :::"GATES REMAINING:";20-GATE 1020 FOR L=0 TO 16 STEP 2 1030 CALL SOUND(-50,700,L,2100,L,4200,L) 1040 NEXT L 1050 IF GATE=20 THEN 1190 1060 CALL COLOR(15,16,1) 1070 XPOS=INT(RND*22)+5 1080 CALL CLEAR 1090 T=0 1100 X=0 1110 REM ** SET UP NEXT GATE ** 1120 H=RND*(0.5+0.015*GATE) 1130 H2=H+0.5-0.015*GATE 1140 IF H2-H<0.2 THEN 1120 1150 CALL COLOR(14,INT(H*10)+3,1) 1160 CALL COLOR(14,INT(H*10)+3,1) 1170 CALL CLEAR 1180 GOTO 430 1190 CALL CLEAR 1200 PRINT " G A M E O V E R":::::::::::::::::::::::: 1210 REM ** BONUS ** 1220 BONUS=0 1230 FOR I=1 TO SHIP 1240 BONUS=BONUS+5 1250 PRINT "BONUS POINTS:";BONUS 1260 FOR L=0 TO 12 STEP 2 1270 CALL SOUND(-50,350,L,1050,L,2100,L) 1280 NEXT L 1290 SC=SC+10 1300 CALL CLEAR 1310 NEXT I 1320 REM ** TOTAL SCORE ** 1330 PRINT :::"YOUR SCORE IS:";SC:::: 1340 PRINT "PLAY AGAIN Y OR N?" 1350 CALL KEY(0,K,S) 1360 IF S=0 THEN 1350 1370 IF K=ASC("Y")THEN 220 1380 IF K=ASC("N")THEN 1400 1390 GOTO 1350 1400 END 1410 REM ** TITLE GRAPHICS ** 1420 DIM A$(16) 1430 A$(1)="0000000000000000" 1440 A$(2)="000000000F0F0F0F" 1450 A$(3)="00000000F0F0F0F0" 1460 A$(4)="00000000FFFFFFFF" 1470 A$(5)="0F0F0F0F00000000" 1480 A$(6)="0F0F0F0F0F0F0F0F" 1490 A$(7)="0F0F0F0FF0F0F0F0" 1500 A$(8)="0F0F0F0FFFFFFFFF" 1510 A$(9)="F0F0F0F000000000" 1520 A$(10)="F0F0F0F00F0F0F0F" 1530 A$(11)="F0F0F0F0F0F0F0F0" 1540 A$(12)="F0F0F0F0FFFFFFFF" 1550 A$(13)="FFFFFFFF00000000" 1560 A$(14)="FFFFFFFF0F0F0F0F" 1570 A$(15)="FFFFFFFFF0F0F0F0" 1580 A$(16)="FFFFFFFFFFFFFFFF" 1590 FOR I=1 TO 16 1600 CALL CHAR(96-1+I,A$(I)) 1610 NEXT I 1620 PRINT "kd``````````````````````````" 1630 PRINT "oj`````````LASERGATE````````" 1640 PRINT "oj``````````````````````````" 1650 PRINT "oo````````KEYS:`E`DOWN``````" 1660 PRINT "mob`````````````X`UP````````" 1670 PRINT "eok`````````````S`LEFT``````" 1680 PRINT "`moc```locb`````D`RIGHT`````" 1690 PRINT "``doob```dlocb``````````````" 1700 PRINT "```dookb``c`lmokb```````````" 1710 PRINT "`````monc`ookcoomlkcb```````" 1720 PRINT "``````monogoooooob```llac```" 1730 PRINT "```````docnooooooo```````dlk" 1740 PRINT "````````dooooooookb`````````" 1750 PRINT "``````````mooooooooc````````" 1760 PRINT "`FLY THRU``mooooookek```````" 1770 PRINT "```THE``````dmooooooob``````" 1780 PRINT "`GATES`````dbmnoooooogb`````" 1790 PRINT "``CLOSE``````idamoooooj`````" 1800 PRINT "`TO`THE```````dcloooooo`````" 1810 PRINT "```CENTRE```````h`llonlh````" 1820 PRINT :: 1830 RETURN LASERGATE.zip
  9. I noticed when I was playing H fighter that sometimes it would cause an bad value. This can be fixed by deleting line 650 and moving it to line 675, i.e. 675 IF (X+T>32)+(X-T<1)+(12+Y-T<2)THEN 910 ELSE 680 Also I made some progress with a game inspired by the trench run part of the Atari Star Wars game. I've called it Laser Gate because in this game you have to fly through a set of gates to score points. I've included the code below in the spoiler if you want to try it by pasting it into Classic99 or js99er.
  10. Hi, It's been a while since I've written any basic games. This one is a short and simple game inspired by the 1983 Atari Star Wars arcade game. In this game you battle H fighters which are tie fighter-like ships. There is no trench run but I think it's possible to approximate. I might look into if as a separate game. I'm trying to keep my games simple these days. To score against the h fighters your laser needs to strike them in the centre. In a similar manner for the h fighter to score against you and destroy one of your 5 ships it needs to strike you when it is positioned midway horizontally. The h fighter turns magenta just before it fires its laser. In that way you will hopefully have enough time to manoeuvre out of the way. The keys are ESDX for manoeuvring and spacebar to fire. The code is in the spoiler and a file for use with Classic99 is attached. HFIGHTER.zip
  11. We bought a TI in 1982 I think. It was a lot of fun typing in the BASIC code and seeing what appeared on the TV screen. Eventually I lost interest in the TI probably because it was not very well supported in the UK compared to other machines. I became interested in the TI in recent years after reading posts on the TI Atari-Age forum and found it all very inspiring. I then figured writing games in console BASIC would be something I could contribute.
  12. There is a game called Re-act in the Gamebase. It code looks similar apart from the instructions. 100 CALL CLEAR 110 PRINT " *RE-ACT*" 120 PRINT ::::: 130 PRINT "LO SCOPO E` DI RAGGIUNGERE":"IL REATTORE" 140 PRINT 150 PRINT "EVITANDO I ROBOT":: 160 PRINT "SE UNO VI PRENDE,ALLORA":"SIETE MORTI!":: 170 CALL SOUND(200,1109,0) 180 FOR D=1 TO 2000 190 NEXT D 200 CALL CLEAR 210 PRINT "USARE I TASTI CURSORE" 220 PRINT "RAGGIUNGERE IL REATTORE" 230 PRINT "PRIMA CHE ESPLODA" 240 PRINT :"I SISTEMI DI SICUREZZA NON" 243 PRINT "SONO PIU` SINCRONIZZATI : " 245 PRINT "LE PORTE SI APRONO/CHIUDONO" 250 PRINT "A CASO" 260 PRINT ::: 270 PRINT " *BUONA FORTUNA*" 280 CALL SOUND(200,1109,0) 290 FOR D=1 TO 2000 300 NEXT D 310 CALL CLEAR 320 R=24 330 C=16 340 RR=4 350 CC=4 360 REM ..SET SCREEN 370 CALL SCREEN(16) 380 CALL CHAR(40,"FFFFFFFFFFFFFFFF") 390 CALL CHAR(97,"FFC3A59999A5C3FF") 400 CALL CHAR(120,"FFFFFFFFFFFFFFFF") 410 CALL CHAR(112,"0000081C241C1422") 420 CALL CHAR(104,"1C1C083E241C1422") 430 CALL CHAR(105,"00220099990022") 440 CALL HCHAR(1,1,40,32) 450 CALL HCHAR(24,1,40,32) 460 CALL VCHAR(1,1,40,24) 470 CALL VCHAR(1,32,40,24) 480 CALL HCHAR(3,3,40,28) 490 CALL HCHAR(22,3,40,28) 500 CALL VCHAR(3,3,40,20) 510 CALL VCHAR(3,30,40,20) 520 CALL HCHAR(5,5,40,24) 530 CALL HCHAR(20,5,40,24) 540 CALL VCHAR(5,5,40,15) 550 CALL VCHAR(5,28,40,15) 560 CALL HCHAR(10,15,40,7) 570 CALL HCHAR(14,15,40,7) 580 CALL HCHAR(11,15,40,2) 590 CALL HCHAR(12,15,40,4) 600 CALL VCHAR(11,21,40,3) 610 CALL VCHAR(15,21,40,5) 620 CALL VCHAR(5,15,40,5) 630 CALL HCHAR(24,16,32) 640 CALL HCHAR(3,16,32) 650 CALL HCHAR(12,5,32) 660 CALL HCHAR(12,28,32) 670 CALL HCHAR(7,15,32) 680 CALL HCHAR(17,21,32) 690 CALL HCHAR(12,20,32,2) 700 CALL HCHAR(18,7,40,5) 710 CALL VCHAR(19,7,40) 720 CALL VCHAR(19,11,40) 740 FOR A=22 TO 25 750 CALL VCHAR(8,A,40,7) 760 NEXT A 770 CALL COLOR(9,2,12) 780 CALL COLOR(11,5,1) 790 CALL COLOR(10,7,1) 800 CALL VCHAR(9,23,120,3) 810 CALL VCHAR(9,24,120,3) 820 REM ......SET TIME 830 TIME=41 840 TIME=TIME-1 850 IF LEN(STR$(TIME))=1 THEN 860 ELSE 870 860 CALL HCHAR(19,10,32) 870 FOR I=1 TO LEN(STR$(TIME)) 880 CALL HCHAR(19,I+8,ASC(SEG$(STR$(TIME),I,1))) 890 NEXT I 900 REM 910 REM ...**MAIN LOOP** 915 RANDOMIZE 920 CALL HCHAR(R,C,112) 930 GOSUB 1150 940 GOSUB 1090 950 GOSUB 1150 960 GOSUB 2090 970 CALL GCHAR(12,21,E) 980 IF E=112 THEN 2390 990 GOSUB 1150 1000 MX=INT(RND*10)+1 1010 IF MX=1 THEN 1120 1020 GOSUB 1150 1030 DC=INT(RND*10)+1 1040 ON DC GOSUB 1730,1800,1870,1940,2010,1940,2010,1940,2010,1730 1050 GOSUB 1150 1060 CALL HCHAR(RR,CC,104) 1070 GOTO 920 1080 REM ...CORE COLOUR 1090 COLL=INT(RND*15)+1 1100 CALL COLOR(12,COLL,1) 1110 RETURN 1120 GOSUB 1430 1130 GOTO 920 1140 REM .......MAN MOVES 1150 CALL HCHAR(R,C,32) 1160 CALL KEY(0,K,S) 1170 IF K=69 THEN 1180 ELSE 1230 1180 R=R-1 1190 CALL GCHAR(R,C,G) 1200 IF G>32 THEN 1210 ELSE 1220 1210 R=R+1 1220 GOTO 1400 1230 IF K=88 THEN 1240 ELSE 1290 1240 R=R+1 1250 CALL GCHAR(R,C,G) 1260 IF G>32 THEN 1270 ELSE 1280 1270 R=R-1 1280 GOTO 1400 1290 IF K=83 THEN 1300 ELSE 1350 1300 C=C-1 1310 CALL GCHAR(R,C,G) 1320 IF G>32 THEN 1330 ELSE 1340 1330 C=C+1 1340 GOTO 1400 1350 IF K=68 THEN 1360 ELSE 1400 1360 C=C+1 1370 CALL GCHAR(R,C,G) 1380 IF G>32 THEN 1390 ELSE 1400 1390 C=C-1 1400 CALL HCHAR(R,C,112) 1410 RETURN 1420 REM .......ROBOT MOVES 1430 FOR T=4 TO 29 1440 CALL HCHAR(4,T,104) 1450 CALL GCHAR(4,T+1,GC) 1460 IF GC=112 THEN 2310 1470 CALL HCHAR(4,T,32) 1480 NEXT T 1490 GOSUB 2090 1500 FOR VV=5 TO 21 1510 CALL VCHAR(VV,29,104) 1520 CALL GCHAR(VV+1,29,GC) 1530 IF GC=112 THEN 2310 1540 CALL VCHAR(VV,29,32) 1550 NEXT VV 1560 GOSUB 2090 1570 FOR CO=28 TO 4 STEP -1 1580 CALL HCHAR(21,CO,104) 1590 CALL GCHAR(21,CO+1,GC) 1600 IF GC=112 THEN 2310 1610 CALL HCHAR(21,CO,32) 1620 NEXT CO 1630 GOSUB 2090 1640 FOR VC=20 TO 5 STEP -1 1650 CALL VCHAR(VC,4,104) 1660 CALL GCHAR(VC+1,4,GC) 1670 IF GC=112 THEN 2310 1680 CALL VCHAR(VC,4,32) 1690 NEXT VC 1700 GOSUB 2090 1710 RETURN 1720 REM .......DOOR CONTROL 1730 CALL HCHAR(3,16,97) 1740 CALL HCHAR(12,5,32) 1750 CALL HCHAR(12,28,32) 1760 CALL HCHAR(7,15,32) 1770 CALL HCHAR(17,21,32) 1780 CALL SOUND(100,110,10) 1790 RETURN 1800 CALL HCHAR(12,5,97) 1810 CALL HCHAR(12,28,32) 1820 CALL HCHAR(7,15,32) 1830 CALL HCHAR(17,21,32) 1840 CALL HCHAR(3,16,32) 1850 CALL SOUND(100,110,10) 1860 RETURN 1870 CALL HCHAR(12,28,97) 1880 CALL HCHAR(7,15,32) 1890 CALL HCHAR(17,21,32) 1900 CALL HCHAR(3,16,32) 1910 CALL HCHAR(12,5,32) 1920 CALL SOUND(100,110,10) 1930 RETURN 1940 CALL HCHAR(7,15,97) 1950 CALL HCHAR(17,21,32) 1960 CALL HCHAR(3,16,32) 1970 CALL HCHAR(12,5,32) 1980 CALL HCHAR(12,28,32) 1990 CALL SOUND(100,110,10) 2000 RETURN 2010 CALL HCHAR(17,21,97) 2020 CALL HCHAR(3,16,32) 2030 CALL HCHAR(12,5,32) 2040 CALL HCHAR(12,28,32) 2050 CALL HCHAR(7,15,32) 2060 CALL SOUND(100,110,10) 2070 RETURN 2080 REM ....TIME COUNT 2090 TIME=TIME-1 2100 IF LEN(STR$(TIME))=1 THEN 2110 ELSE 2120 2110 CALL HCHAR(19,10,32) 2120 FOR I=1 TO LEN(STR$(TIME)) 2130 CALL HCHAR(19,I+8,ASC(SEG$(STR$(TIME),I,1))) 2140 IF TIME=0 THEN 2180 2150 NEXT I 2160 CALL SOUND(100,1760,0) 2170 RETURN 2180 REM .....DESTRUCTION 2190 CALL COLOR(2,14,1) 2200 FOR S=30 TO 0 STEP -1 2210 CALL SOUND(50,110,S) 2220 NEXT S 2230 CALL SOUND(300,110,0) 2240 CALL CLEAR 2250 CALL SCREEN(14) 2260 PRINT "IL REATTORE E` SALTATO":::::: 2270 FOR D=1 TO 2000 2280 NEXT D 2290 GOTO 2460 2300 REM .....CAUGHT BY ROBOT 2310 CALL HCHAR(R,C,105) 2320 CALL SOUND(300,-1,0) 2330 CALL HCHAR(R,C,32) 2340 FOR DE=1 TO 1000 2350 NEXT DE 2360 CALL CLEAR 2370 PRINT "SEI STATO BATTUTO!":::::::::: 2380 GOTO 2460 2390 FOR V=30 TO 0 STEP -.125 2400 CALL SOUND(50,392,V) 2410 NEXT V 2420 CALL CLEAR 2430 PRINT "FANTASTICO!CE L'HAI FATTA IN":TIME:"SECONDI" 2440 FOR D=1 TO 3000 2450 NEXT D 2460 INPUT "VUOI RICOMINCIARE? ":RS$ 2470 IF (RS$="S")+(RS$="s")+(RS$="SI")+(RS$="si")THEN 310 2480 END
  13. Hello, It's been a little while since I've developed a full game as I've been experimenting with writing more simple games. I have attached a demo of a simple game that I started several months ago and recently managed to complete more or less called Square War! One file I saved in the Classic99 format (SQUAREDEMO) and the other is a .dsk file (SQUAREDEMO_dsk). I've also included the listing below in the spoiler. It might be easier to copy and past it into an emulator to try it. I have been trying to write games over the last few months in the spirit of the Texas Program Book 35 programs for home, educational and business use with the TI99/4A by Vince Apps. The Texas Program Book was my favourite TI programming book, apart from the TI manual itself. I remember the programs being easy to type in, consistently mediocre, and simple to understand. Also I don't think I had to debug any of the programs. This game is an Invaders type game except you don't shoot the invader you shoot the colourful blocks behind it which is the source of all its power! To destroy a segment of the block you have to wait until your square is the same colour as the invader's block. You score 10 points once you have destroyed one whole block. The game ends once you have lost three lives or the invader makes it to the bottom of the screen. The keys are S left and D right and space bar to fire. Different levels are not available yet and I need to refine the game a little more too. SQUAREDEMO.zip SQUAREDEMO_dsk.zip
  14. I've added a new version and manual to the first post. The chase ship moves around a bit more now and helps maintain the tension in the game.
×
×
  • Create New...