Jump to content

oddemann

Members
  • Posts

    537
  • Joined

  • Last visited

Posts posted by oddemann

  1. The game "OPERATION SEA WOLF" looks to be missing lines. The games comes from "Computer & Video Games - Yearbook 1985" Did a search here and it dos not look to be present. The scan was really bad, I know there are a few lines that are bad. As it is now, it is missing data for some sounds.

    Dos anyone have a good copy/scan of it or a complete listing of the game?

     

    Spoiler
    100 REM <--OPERATION SEA WOLF-->
    110 REM <--BY MSOFT-->
    120 REM <--(C) 1983 MSOFT-->
    130 RESTORE
    140 CALL CLEAR
    150 CALL CHAR(128,"00B2FEE0C0C0C000")
    160 PRINT TAB(6):"OPERATION SEA WOLF"::TAB(7):"BY MARK HANKINS"::TAB(9):"FOR C & VG"::::::::::
    170 FOR A=3 TO 32 STEP 2
    180 CALL HCHAR(1,A,128)
    190 CALL HCHAR(24,A,128)
    200 NEXT A
    210 CALL VCHAR(1,3,128,24)
    220 CALL VCHAR(1,31,128,24)
    230 FOR A=1 TO 6
    240 READ NOT,DUR
    250 CALL SOUND(DUR,NOT,2)
    260 NEXT A
    270 V$="PRESS ANY KEY TO BEGIN!"
    280 RO=20
    290 CO=5
    300 GOSUB 1170
    310 CALL KEY(0,K,S)
    320 CALL KEY(1,K,S1)
    330 IF (S=0)*(S1=0) THEN 310
    340 CALL CLEAR
    350 PRINT "WOULD YOU LIKE INSTRUCTIONS(Y/N)?"
    360 CALL KEY(0,K,S)
    370 IF K=89 THEN 1230
    380 IF K=78 THEN 390 ELSE 400
    390 PRINT "PLEASE ENDER YOUR SKILL LEVEL - 0=EASY - 9=HARD"
    400 CALL KEY(0,K,S)
    410 IF S=0 THEN 400
    420 IF (K<48)+(K>57) THEN 400
    430 NSHIP=(K-48)*6+16
    440 REM  DEFINE CHARACTERS
    441 CALL CHAR(128,"FFFFFFFFFFFFFFFF"
    450 CALL CHAR(136,"00030203FF7F3F1F"
    460 CALL CHAR(137,"00B19E9CFEFEFEFE"
    470 CALL CHAR(144,"000003031F3F1F00"
    480 CALL CHAR(145,"00309090FBFCFB00"
    490 CALL CHAR(146,"00007EFFFF7E0000"
    500 CALL CHAR(152,"00"
    510 REM SET UP SCREEN
    520 CALL CLEAR
    530 CALL SCREEN(5)
    540 CALL COLOR(12,16,1)
    541 CALL COLOR(13,15,1)
    550 CALL COLOR(14,15,6)
    560 CALL COLOR(15,12,1)
    570 CALL COLOR(16,1,6)
    580 CALL HCHAR(1,1,152,32*12)
    581 CALL HCHAR(2,15,128)
    582 CALL HCHAR(3,13,128,5)
    583 CALL HCHAR(4,11,128,8)
    584 CALL HCHAR(5,11,128,8)
    585 CALL HCHAR(6,13,128,5)
    590 CALL HCHAR(12,16,136)
    600 CALL HCHAR(12,17,137)
    610 V$="SCORE=:  0"
    620 RO=1
    630 CO=1
    640 GOSUB 1170
    650 REM SET UP GAME
    660 SC=0
    670 ROS=INT(8*RND)+13
    680 PO=13
    690 SH=0
    700 Z=0
    710 C=16
    720 REM 
    730 FOR Q=31 TO 3 STEP -2
    740 CALL KEY()
    750 IF K=13 THEN 990
    760 RA=C+(K=83)-(K=68)
    770 IF (RA<3)+(RA>30) THEN 890
    780 IF RA<>C THEN 840
    790 CALL JOYST(1,DX,DY)
    800 RA=C+DX/4
    810 RA=INT(32*((RA-1)/32-INT((RA-1)/32)))+1
    820 CALL KEY(1,K,S)
    830 IF K=18 THEN 990
    840 CALL HCHAR(12,C,152,2)
    850 CALL HCHAR(12,RA,136)
    860 CALL HCHAR(12,RA+1,137)
    870 C=RA
    880 IF Z=1 THEN 1010
    890 CALL HCHAR(ROS,5,32,28)
    900 CALL HCHAR(ROS,Q,144)
    910 CALL HCHAR(ROS,Q+1,145)
    920 CALL SOUND(150,-1,0)
    930 NEXT Q
    940 SH=SH+1
    950 IF SH=NSHIP THEN 1330
    960 ROS=INT(8*RND)
    970 GOTO 730
    980 REM FIRE
    990 Y=C
    1000 IF Z=1 THEN 760
    1010 FOR A=PO TO PO+3
    1020 CALL GCHAR(A,Y,GET)
    1030 CALL HCHAR(A,Y,146)
    1040 IF GET=144 THEN 1430
    1050 IF GET=145 THEN 1430
    1060 CALL HCHAR(A,Y,32)
    1070 NEXT A
    1080 CALL SOUND(150,-3,0)
    1090 PO=PO+3
    1100 IF PO>=22 THEN 1140
    1110 Z=1
    1120 IF Q<3 THEN 940
    1130 GOTO 890
    1140 Z=0
    1150 PO=13
    1160 GOTO 890
    1170 FOR A=1 TO LEN(V$)
    1180 CH=ASC(SEG$(V$,A,1))
    1190 CALL HCHAR(RO,CO+A,CH)
    1200 NEXT A
    1210 RETURN
    1220 REM INSTRUCTIONS:
    1230 CALL CLEAR
    1240 PRINT "YOUR JOB IS TO STOP THE":"ENEMY SUBS FROM REACHING":"THE HARBOUR IN THE LEFT HAND":"CORNER."::
    1250 PRINT :::"NOTE::":" THE FIRE KEY IS THE ENTER":" KEY":"S & D MOVE THE SHIP":::
    1260 PRINT ::"IF USING THE JOYSTICKS USE":"JOYSTICK NO.:"
    1270 PRINT "ANY KEY TO BEGIN"::
    1280 CALL KEY(
    1290 CALL KEY(
    1300 IF (S=0)*(S1=0) THEN 1280
    1310 CALL CLEAR
    1320 GOTO 390
    1330 CALL CLEAR
    1340 PRINT "YOU HIT":SC/100:"SHIPS":"OUT OF MAXIMUM OF":NSHIP:"YOU SCORED":SC:"POINTS"

     


    https://archive.org/details/ComputerAndVideoGamesYearbook1985/page/n127/mode/2up

    • Like 2
  2. Ver 5

    BUT but but... why dos it only do one round and then fail? Also it was way slower...

     

    Spoiler
    50 CALL CLEAR
    100 DATA 1,2,"C038040000000000"
    200 DATA 1,2,"0000040202020101"
    300 DATA 2,2,"0101020202040000"
    400 DATA 2,2,"00000000000438C0"
    500 DATA 2,1,"0000000000201C03"
    600 DATA 2,1,"8080404040200000"
    700 DATA 1,1,"0000204040408080"
    800 DATA 1,1,"031C200000000000"
    
    801 PRINT "Spinner Demo Ver. 5"
    802 PRINT "press a key to stop"
    803 PRINT
    
    804 TIME=5
    805 GOSUB 1000
    806 CALL KEY(0,K,S)
    807 IF S=0 THEN 805
    
    808 PRINT "Spinner stopped"
    809 END
    
    900 Read A,B,C$
    
    1000 FOR I=128 to 135
    1025 Read A,B,C$
    1050 CALL CHAR (I,C$)
    1100 CALL HCHAR(A,B,I)
    1200 CALL HCHAR(A,B,32)
    1300 GOSUB 9010
    1400 NEXT I
    1500 RETURN
    
    9000 REM delay
    9010 FOR T=0 TO TIME
    9020 NEXT T
    9999 RETURN

     

     

  3. Hmmm, if I go this way...
     

    DATA 32,"00"

    DATA 1,2,128,"C038040000000000"

    DATA 1,2,129,"0000040202020101"

    DATA 2,2,130,"0101020202040000"

    DATA 2,2,131,"00000000000438C0"

    DATA 2,1 132,"0000000000201C03"

    DATA 2,1 133,"8080404040200000"

    DATA 1,1,134,"0000204040408080"

    DATA 1,1,135,"031C200000000000"



    Read Char nr., "pic"

    Display it in a for-next loop - LINE NR CALL HCHAR(A,B,C)

    Then GOSUB the time delay

    Maybe even not have Char 32 in DATA as it is the same... would that make it more even?

    • Like 1
  4. 18 hours ago, TheBF said:

    Ha.  That was a long time ago.

     

    You might want to organize the code like this. The time delay is in one place.

     

    OK... I made it bigger, but there is a slight hold at the start... is it possible to make it move more even around and around?

     

    Spoiler
    100 CALL CLEAR
    110 CALL CHAR(128,"C038040000000000")
    120 CALL CHAR(129,"0000040202020101")
    130 CALL CHAR(130,"0101020202040000")
    140 CALL CHAR(131,"00000000000438C0")
    150 CALL CHAR(132,"0000000000201C03")
    160 CALL CHAR(133,"8080404040200000")
    170 CALL CHAR(134,"0000204040408080")
    180 CALL CHAR(135,"031C200000000000")
    190 PRINT "Spinner Demo Ver 4"
    200 PRINT "press a key to stop"
    210 PRINT
    
    220 TIME=3
    230 GOSUB 1000
    240 CALL KEY(0,K,S)
    250 IF S=0 THEN 230
    
    260 PRINT "Spinner stopped"
    270 END
    
    1000 REM Spinner sub-routine
    1010 CALL HCHAR(1,2,128)
    1020 GOSUB 9010
    1040 CALL HCHAR(1,2,129)
    1050 GOSUB 9010
    1055 CALL HCHAR(1,2,32)
    1060 CALL HCHAR(2,2,130)
    1070 GOSUB 9010
    1080 CALL HCHAR(2,2,131)
    1090 GOSUB 9010
    1095 CALL HCHAR(2,2,32)
    1100 CALL HCHAR(2,1,132)
    1110 GOSUB 9010
    1120 CALL HCHAR(2,1,133)
    1130 GOSUB 9010
    1135 CALL HCHAR(2,1,32)
    1140 CALL HCHAR(1,1,134)
    1150 GOSUB 9010
    1160 CALL HCHAR(1,1,135)
    1170 GOSUB 9010
    1175 CALL HCHAR(1,1,32)
    1180 RETURN
    
    9000 REM delay
    9010 FOR T=1 TO TIME
    9020 NEXT T
    9999 RETURN

     

     

  5. 3 hours ago, Retrospect said:

    Yeah me too, I see there are lots of new games coming out for other retro formats, the Spectrum for example gets new games each month.

    Two thing could be done...
    #1 Make a tread about ideas for games, free for all to try out ideas and make it themself. But one tread where we brainstorm and come up with ideas. Just free for all and all ideas are welcome, not critical thinking. Only for the one taking on the idea.
    #2 Educate more people to be able to make games.

    And maybe...
    #3 work together on games?

    • Like 2
  6. 16 hours ago, matthew180 said:

    I have seen other forums try this, and IMO it does not help, and I actually miss things I would have otherwise read.  The 99/4A community here does not have enough people doing things in all those areas to justify separate subforums, again IMO.

    I can see that point, but... we have split this forum into 3 at this point. And it works! Sometimes I do not go to "Development", I just stay at the first level. So it works. BUT, I also see that I might miss stuff if I do NOT go to "Development". But I like that split, as I know where to ask and find stuff. With that split I know that if I ask in one place I might get answer from just the right person.

    14 hours ago, GDMike said:

    I just do a search on a topic and try my best that I used the right term and get a hit and then start reading from the top. Of course it's going to take time, but this way I can find most stuff.

    I have tried that and at times is is mostly a miss, I get hits, but they are fare from what I want. BUT If I know what to specificity look for, it is easier. But... usually I am looking for something I know exist, BUT I do not know the "name" of it. And most of the time then, searching is a miss. I then end up asking or making my own tread about stuff. And then I run the risk of getting... "You need to read TI-99/4A FAQ" and sometimes that works. And sometimes I just give up. as the FAQ gives me an overview. But luckily, often someone takes the time to give me info, that I can use and understand. But I am making more treads and more stuff to search, for the next guy. And IF I made a good title on my tread, it might be of help.

    13 hours ago, OLD CS1 said:

    Good thread topics and tags help immensely.  Topics like "What I discovered today..." on a thread with a breakdown of some assembly tricks are unhelpful.  Also, avoiding thread derailing and hijacking helps, and no one should be insulted when a thread owner tells people to move their tangential discussion to another thread, nor should they be complete pricks and thumb their nose at the request (you know who you are.)  To that end, I have the ability to move posts between threads, into new threads, and move threads between subforums as needed or requested.

    And at this point I am bad, i am NOT good at making a good tread title, do not think about using tags or in other way make it smart for the future. Is there a "This is what you need to think about in a title, topic and tag with!"? At this point in time I am adding to the chaos 😛

    I see your points, but still IMO, I think that Ex Basic should get its own tread as it can be compiled and made into something usable on the TI. And that there are many that still use Ex Basic. Example... I was playing around with "
    Nerm of Bemer" the version I was looking at, did not have joystick support. Then in a tread about Ex Basic I could search for "how to joystick" and do the replacement my self as learning. On the other hand I did search then for "Nerm of Bemer" and found it had been compiled and with joystick setup. Also I think that some of the old games can be "modernized" and made better if one know what and where to fix stuff. And I think a separate forum about Ex Basic, would over time help me get better with Ex Basic. I can see that I have improved, since I found my own tread about "Nerm of Bemer" and program listings. I could debug them fast and I see that I understand much more now, then back in 2019. So... I can learn this way too.

    BUT... seeing the skill of some of the people here, I know I would benefit from a forum about ONLY Ex Basic. Over time I would learn more and also the next guy will also benefit from it, I think.

    • Like 1
  7. On 5/12/2019 at 11:25 PM, TheBF said:

    A simple spinner sub-routine. Might be useful for BASIC game makers.

    The x,y coordinates could be variables of course.

    My SPINN on it...

    100 CALL CLEAR
    110 CALL CHAR(128,"1C02010101000000")
    120 CALL CHAR(129,"000000010101021C")
    130 CALL CHAR(130,"0000008080804038")
    140 CALL CHAR(131,"3840808080000000")
    150 PRINT "Spinner Demo"
    160 PRINT "press a key to stop"
    170 PRINT
    180 GOSUB 9000
    190 PRINT "Spinner stopped"
    200 END
    
    9000 TIME=8 :: REM TIME is to slow it down
    9001 CALL HCHAR(1,1,128)
    9002 FOR I=1 TO TIME
    9003 NEXT I
    9010 CALL HCHAR(1,1,129)
    9011 FOR I=1 TO TIME
    9012 NEXT I
    9020 CALL HCHAR(1,1,130)
    9021 FOR I=1 TO TIME
    9022 NEXT I
    9030 CALL HCHAR(1,1,131)
    9032 FOR I=1 TO TIME
    9033 NEXT I
    9040 CALL KEY(0,K,S)
    9050 IF S=0 THEN 9000
    9060 CALL HCHAR(1,1,32)
    9070 RETURN

     

    • Like 1
  8. I see that many talk about programming and it looks like it is mostly a thing people do alone and questions related to a specific lango is spread all over. What about making a new "TI-99/4A Computers TI-99/4A Development" forum where it is narrowed down to one specific thing.

    "TI-99/4A - Programming in Basic!"
    "TI-99/4A - Programming in Extended Basic!"        (I would love this one and to keep learning about Ex. B.)

    .and

    .so

    .on

    What about making a dedicated forum tread for Programming in...
    - TI Basic!
    - TI Ex Basic!
    - Logo!
    - Fortran
    - Pascal
    - Assembler
    - GPL? or something
    - RXB!
    - And other programming langos!

    Why... To collect specific stuff for Basic (and other programming langoes) in one place with separation of different things within Basic. It would be a "living book" about new ways of programming and where new ideas could be talked about. Like a tread about RND and best ways to use it. And how to practically put it in a program. Also people could ask about a specific subject and then it will be searchable within the "under forum". Then there is a specific place for Basic where everything is ONLY about Basic. And so for every other langos anyone wants to put out there.

    Even if Basic gets it's own tread, it is hard to find something within x pages of stuff about Basic. Maybe you have to look at 20 pages and countless posts to find stuff about "put in that ever your looking for!". It gets old fast!

    Then in the Basic tread there will be a tread about...
    - How to use Data to save space. (thinking about how pixelpedant way to saved space, in his last game - Great idea. And with its own tread this could maybe be expanded upon.)
    - How to make the optimal joystick routine.
    - Optimal way of "painting" the screen, save time and space.
    - Tricks and tips!

    Also I think it would make it easier to start to learn an new programming lango! At least one could ask question within that specific lango. Also the masters of a topic would know how to push forward development of langos/games/programs. (from questions)

    Over time the separate treads would be a "How to" for all beginners. Like a "playing around" and start testing one and one of the topics. You will educate yourself within your chosen programming lango. Also stuff could be formatted so that more programmers can learn and start to make programmes for the TI. There is one tread about optical illusion, with its own tread in its own lango this could maybe make it easier for people to test, try and make there own stuff to inspire others again. (easier to find to in a learning setting)

    I asked a question about making an animation of a running man (a long time ago, I learned so much from that question)... That tread is WAY down in "TI-99/4A Computers" or "TI-99/4A Computers TI-99/4A Development". I wish it was easy to get back to and then maybe use it or just play around with it. But as it is now... hard to find stuff. What was the name of that tread? And then there was this other tread about a trick in Ex. Basic... Don't remember the name or anything else... With one place for Basic, Ex Basic and others. It would be easier to find stuff and it is ONLY about one subject that is fragmented into all related things.

    Now - "TI-99/4A Computers" or "TI-99/4A Computers TI-99/4A Development" contains all and everything!

    I think that sorting things in this way it would be easier to help people and grow there potential to make programs. Or at least make it easier to find something your looking for.

    This is what I think... what do you think?

    • Like 2
  9. 6 hours ago, 9640News said:

    Sometimes, even fully commented source code is not enough.  I have looked at some of your source code in the past and you go far beyond what a lot of programmers do in commenting source code.

     

    For me though back in the 80's and 90's, one would have really had to dumb it down for me to get the basic-basics.  That first step was too big of a step.  Now, I will tell you it is unlikely I will program in GPL in the future, however, I would follow along as @dhe suggested should you put out some kind of monthly tutorial at the beginner's level so that I could understand some of the basics.

     

    Same here! Some of the beginner stuff is to another beginner that is smarter then me, hehehe. And for that reason I will most probably struggle along with the limitations of Ex B. As it has a good guide to learn and make programs. But if I was to get the stupid beginners program... I might try it on!

    • Like 3
    • Haha 1
  10. Why not take advantage of the keyboards of today and instead make a "translator" inside the TI that you can connect to? And then add a USB / PS/2 connection to the TI. And if one wants to be really cool one could add BT and other WIFI standards to the "translator".

    Then you would have a smaller part to upgrade, if changes come along.

  11. Talking with some friends about old games and I came across this YT about Elite:

    Then I started to think... Have this been made for the TI? And if not, there are a lot of new skills. Maybe NOW it can be made? Quick looking around here, and yes there has been some talk about this game.

    Guess my main question is, can this game be made for the TI?

  12. VERY COOL!

    It is great that you have used the "TI as is" to make this game and run it! I think you have used the strong points of the TI and made a really good game. From what I can see this game is so good that it works today even being used to a much faster game pace. You have done some smart programming "moves" to make it "Fast". I will for sure test it out when I get back from vacation!

    LOL - When is Hells Halls II released? ?

    Also, I think your game concept is a strong one and can grow, in many ways.

    PS! I think you will sell out!

    • Like 3
    • Thanks 2
  13. 5 hours ago, senior_falcon said:

    Here is MMXB2.OBJ

    This has the faster CALL CHAR. I just compared this with standard BASIC and XB, running at the same time. Looping 1000 times:

    XB 134 seconds, Basic 181 seconds, MMXB 54 seconds (the programs were run simultaneously so the results should be comparable to each other even though the times may be off)

    This is very interesting!

    • Like 1
  14. Not a great Translation...

     

    Spoiler
    
    100 CALL CLEAR
    1000 RANDOMIZE :: OPTION BASE 1 :: ON ERROR 20001
    1020 DIM A$(20),B$(8),C$(5),XZ(5),E(4),YZ(5),SX(8),SY(8),G$(8),K(5)
    1030 WRZT$=CHR$(129)&CHR$(130)&CHR$(131)&CHR$(132)&CHR$(133)&CHR$(134)&CHR$(140)&CHR$(135)
    1500 DATA 32,47,"FFC0A09088848383","8383838383838383","8383848890A0C0FF","FFFF0000000000FF"
    1510 DATA C1C12111090503FF,C1C1C1C1C1C1C1C1,FF0305091121C1C1,FF0000000000FFFF,000406FFFF0604,002060FFFF602,1E0E1E3A70E04
    1520 DATA 7870785C0E0702,18181818187E3C18,183C7E1818181818,02070E5C787078,40E0703A1E0E1E
    1530 DATA 123,142,"FFFFFFFF","8142240000244281","0000000000001",,"00305F0E6C202C",,"8"
    1540 DATA 00000008,0004,1,00000240001,0000000200000004,,0240003030044,0008001818122,004018180200008,,08114410A2144008,3C7EFFFFFFFF7E3C,FFFFF
    1550 DATA 58,64
    1552 DATA 00626408102646,,,,,,
    1555 DATA 91,96
    1560 DATA ,FFFFC3C3C3C3FFFF,0606030303030606,183C7E7E3C18,0000003C,
    1650 DATA 2,1,"time",7,1,"Gaia",2,18,"gala```:ok",4,18,"dollar",6,18,"hunter",8,18,"energy"
    1700 DATA 1,2,5,10,1,8,10,10,1,19,12,10,12,2,29,9
    3000 RESTORE 1500 :: FOR U=1 TO 4 :: READ A,B :: FOR I=A TO B :: READ E$ :: CALL CHAR(I,E$) :: NEXT I :: NEXT U
    4000 CALL SCREEN(2)
    4002 CALL COLOR(5,16,14,6,16,14,7,16,14,8,16,14)
    4003 CALL COLOR(9,2,4,10,2,4,11,2,4,12,2,4)
    4005 CALL COLOR(3,2,12,4,2,12)
    4010 CALL COLOR(0,2,2,1,16,6,2,16,4,13,16,5,14,15,5)
    5000 CALL HCHAR(1,1,96,672) :: CALL HCHAR(22,1,64,96) :: CALL VCHAR(1,32,31,48)
    5010 RESTORE 1700 :: FOR I=1 TO 4 :: READ A,B,C,D :: CALL VCHAR(A,B,33,D) :: CALL HCHAR(A+D,B,35,C) :: CALL VCHAR(A,B+C,37,D) :: CALL HCHAR(A,B,39,C)
    5020 CALL HCHAR(A,B,32) :: CALL HCHAR(A+D,B,34) :: CALL HCHAR(A+D,B+C,36) :: CALL HCHAR(A,B+C,38) :: NEXT I :: CALL D(-2,18,"e\\\\\\\\\f")
    5021 DISPLAY AT(23,1):"@@@@HAVE@3@MIN@OF@PATIENCE@@@@" :: RESTORE 5028 :: FOR Y=1 TO 8 :: READ B$(Y) :: IF Y<6 THEN READ C$(Y)
    5022 NEXT Y :: READ D$ :: FOR Y=1 TO 20 :: A$(Y)="" :: FOR X=1 TO 30 :: IF RND<1/(SQR(ABS((Y-10)^2)+ABS((X-15)^2))/1.6+1)THEN A$(Y)=A$(Y)&SEG$(WRZT$,INT(RND*8)+1,1)ELSE A$(Y)=A$(Y)&CHR$(135)
    5024 NEXT X :: NEXT Y
    5025 FOR I=1 TO 8 :: SX(I),A=INT(RND*30)+1 :: SY(I),B=INT(RND*20)+1 :: A$(B)=SEG$(A$(B),1,A-1)&CHR$(INT(RND*3)+136)&SEG$(A$(B),A+1,30-A)
    5026 NEXT I
    5028 DATA orion,dracon,cygnus,lepton,centaurie,arkion,draconia,syrian,pegasus,myonid,phoenix,altair,hydra,‡‡‡‡‡‡‡‡‡,
    5030 CALL SPRITE(#10,124,12,40,97,#26,123,12,171,152) :: CALL MOTION(#26,0,30) :: CALL HCHAR(22,1,30,32)
    5050 RESTORE 1650 :: FOR I=1 TO 6 :: READ A,B,E$ :: CALL D(-12+A,B,E$) :: NEXT I
    6000 FOR I=1 TO 8 :: G$(I)="9"&STR$(INT(RND*5+1))&STR$(INT(RND*9+1))&STR$(INT(RND*9+1)) :: IF I<6 THEN XZ(I)=INT(RND*30)+1 :: YZ(I)=INT(RND*30+1) :: K(I)=10.9
    6030 NEXT I :: P,FA,FB,FC,FD=0 :: L=15 :: M=100 :: O=2000 :: N=1000
    6040 XG=INT(RND*38-4) :: XE=INT(RND*42-6) :: IF XE-XG<16 THEN 6040 ELSE YG=INT(RND*28-4)-3 :: YE=INT(RND*34-6)
    6050 GOSUB 16000
    7000 DISPLAY AT(23,1)BEEP :"1_DAMAGE@2_ALARM@3_SENSOR@@@4_COURSE@5_NEGOTIATE@6_NEXT"
    8000 CALL I(123456,SP) :: FOR U=1 TO 3 :: CALL SOUND(-65,U*250,6-U) :: NEXT U :: CALL C
    8010 DISPLAY AT(23,1):RPT$("@",39)&"9_MENU@@@@@@@@@@" :: ON SP GOSUB 15000,13000,12000,11000,14000,16000
    9000 CALL D(-10,23,"``") :: CALL D(-8,26,"```") :: CALL D(-6,26,"```") :: IF FA=0 THEN FB,FC=0
    9010 IF INT(N)<=0 OR INT(M)<=0 THEN CALL D(2,1,"galactica`destroyed") :: GOTO 19200 ELSE CALL L(4,2,P) :: CALL L(2,22,M) :: CALL L(4,25,O) :: CALL L(6,25,L)
    9500 CALL SPRITE(#22,93,2,73,155+N*.072) :: GOTO 7000
    11000 CALL D(1,9,"change`of`course") :: CALL D(3,8,"+`-`*```1`2`3") :: CALL D(5,8,")`0`(```8`0`4") :: CALL D(7,8,".`,`/```7`6`5") :: CALL I(1023456789,SP)
    11021 KX=VAL(SEG$("-1000001010100-1-1",SP*2-1,2)) :: KY=VAL(SEG$("-100-1-10001010100",SP*2-1,2)) :: Q=VAL(SEG$("038405020007040601",SP*2-1,2))
    11029 CALL PATTERN(#10,40+Q) :: RETURN
    12000 E$="`located" :: A=S+R :: IF A>0 THEN CALL D(1,1,STR$(A)&"`cylonsquadron"&E$)ELSE IF S=0 THEN CALL D(1,1,"no`spaceships"&E$)
    12020 IF T=0 THEN CALL D(3,3,"no`solar`system"&E$) :: RETURN
    12030 IF FA=0 THEN CALL D(3,1,STR$(T)&"`solar`system"&E$) :: RETURN
    12040 CALL D(4,1,"planet`name`"&B$(FA)) :: IF SEG$(G$(FA),2,3)="000" THEN 12400 ELSE IF E(3)=1 THEN E$="no" ELSE IF E(3)<4 THEN E$="under" ELSE IF E(3)<8 THEN E$="same" ELSE E$="higher"
    12050 CALL D(6,1,E$&"`developed`life") :: IF E(3)>1 THEN CALL D(8,1,"descendants`of`"&C$(E(2))&"en")
    12060 RETURN
    12400 CALL D(7,1,"culture`destroyed") :: CALL D(8,1,"planet`infested") :: RETURN
    13000 IF FD>0 THEN 14001 ELSE CALL D(1,1,"shield```a`1``out`2") :: CALL I(129,SP) :: IF SP=1 THEN SI=M/10 ELSE IF SP=2 THEN SI=0 ELSE RETURN
    13010 CALL D(1,1,"attack``````yes``1`no`2") :: CALL I(129,SP) :: IF SP>1 THEN RETURN
    13020 FD=1 :: CALL D(1,1,"hunter`insert`yes`1`no`2") :: CALL I(129,SP) :: IF SP=2 THEN 13100 ELSE IF SP=9 THEN RETURN
    13030 IF L=0 THEN CALL D(1,1,"all`interceptors`destroyed`")ELSE GOSUB 13700
    13040 KW=L*4 :: CALL D(1,1,"interceptor`launched") :: FOR I=1 TO 7 :: CALL SOUND(-75,-7,I*2) :: NEXT I :: ON SP GOSUB 9000,13800,13850,13900
    13045 N=N-L*2 :: C=INT(RND*L*1/5)+1-INT(RND+.5) :: CALL D(8,1,STR$(C)&"`own`hunter`destroyed") :: L=L-C
    13100 CALL D(1,1,"laserguns````yes`1`no`2") :: CALL I(129,SP) :: IF SP>1 THEN RETURN ELSE GOSUB 13700
    13110 KW=M/3 :: CALL D(1,1,"aimed`at") :: FOR U=1 TO 6 :: CALL SOUND(-100,U*500,6-U) :: NEXT U :: CALL D(2,1,"fire`free") :: ON SP GOSUB 9000,13800,13850,13900
    13120 N=N-KW :: RETURN
    13700 CALL C :: E$="9" :: CALL D(3,1,"choose`target") :: IF FA>0 THEN IF SEG$(G$(FA),2,3)<>"000" THEN CALL D(3,15,"1`planet") :: E$="1"
    13705 IF R=0 THEN 13720 ELSE A=INT(K(RN)) :: IF K(RN)-A>0 THEN CALL D(4,15,"2`baseship") :: E$=E$&"2" ELSE E$=E$&"0"
    13710 IF A>0 THEN CALL D(5,15,"3`cylonhunter") :: E$=E$&"3"
    13720 IF E$="9" THEN CALL D(3,1,"no`target`in`range") :: GOTO 9000 ELSE CALL I(VAL("9"&E$),SP) :: DISPLAY AT(13,1):RPT$("`",140) :: RETURN
    13800 FB=1 :: B=E(1)*E(3) :: GOSUB 13950 :: D=INT(E(1)-C/E(3))
    13803 IF D>0 THEN G$(FA)=STR$(D)&SEG$(G$(FA),2,3)ELSE G$(FA)=STR$(E(3))&"000" :: E(3)=0 :: CALL D(5,1,"planet`destroyed") :: RETURN
    13805 IF D>6 OR RND>.6 OR E(3)<3 THEN RETURN ELSE CALL D(5,1,C$(E(2))&"one`want`negotiate")
    13807 FB,FC=0 :: IF RND>.5 THEN E(4)=7 :: G$(FA)=SEG$(G$(FA),1,3)&"7" ELSE E(4)=0 :: G$(FA)=SEG$(G$(FA),1,3)&"0"
    13810 RETURN
    13850 B=15*(K(RN)-A) :: GOSUB 13950 :: D=INT(B-C)/10 :: IF D>0 AND D<1 THEN K(RN)=A+D :: RETURN ELSE CALL D(5,1,"`Cylonship`destroyed") :: R=0 :: I=RN :: GOSUB 18000
    13875 IF A>0 THEN CALL D(7,1,STR$(A)&"`cylonhunter`fled")
    13878 RETURN
    13900 B=A :: GOSUB 13950 :: D=INT(B-C) :: IF D>0 THEN K(RN)=A-K(RN)+D :: RETURN ELSE K(RN)=K(RN)-A :: CALL D(5,1,"cylonhunter`destroyed") :: RETURN
    13950 GOSUB 18500 :: IF KW>2*B THEN E$="heaviest" ELSE IF KW>B THEN E$="heavy" ELSE IF KW<B/2 THEN E$="light" ELSE E$=""
    13955 CALL D(4,1,E$&"`hit`at`the`enemy") :: C=ABS(B-KW/2) :: RETURN
    14000 IF FC<>1 THEN 14003
    14001 CALL D(1,1,"beautifully`carried`out") :: RETURN
    14003 FC=1 :: IF FA>0 THEN IF E(3)>1 THEN 14009
    14005 CALL D(1,1,"radio direction finding`negativ") :: RETURN
    14009 CALL D(1,1,"contact`with`"&C$(E(2))&"it's ok")
    14010 IF E(4)=0 THEN CALL D(3,1,C$(E(2))&"one`surrender`") :: C=1 :: GOTO 14015
    14012 IF E(4)>2 THEN 14020 ELSE CALL D(3,1,C$(E(2))&"one`is`extinct") :: IF RND>.5 THEN CALL D(4,1,"robotic`systems`are`still`working") :: C=1 ELSE 14016
    14015 CALL D(6,1,"dinghies`land`on`planets") :: GOTO 14800
    14016 CALL D(4,1,"energy`storage`still`ok") :: C=0 :: GOTO 14015
    14020 IF FB>0 OR(E(4)>2 AND E(4)<7)THEN FB=1 :: FC=0 :: IF RND>.7 THEN GOTO 16410 ELSE CALL D(8,1,"leave`orbit`immediately") :: B=10 :: GOTO 16422
    14030 CALL D(3,1,C$(E(2))&"en`help") :: CALL D(8,1,"trade``yes`1`no`2") :: CALL I(129,SP) :: IF SP>1 THEN FC=0 :: RETURN
    14040 CALL C :: A=INT(E(1)*E(3)/5) :: C=INT(A*(8+2*RND)) :: B=INT(E(1)*E(3)*25) :: D=1000-N :: IF B>D THEN B=INT(D)
    14050 D=INT(D*(RND+.4)) :: CALL D(1,1,"Price`offer") :: CALL D(3,1,STR$(A)&"`yeseger`for`"&STR$(C)&"`dollar```") :: CALL D(5,1,STR$(B)&":`charge`energy`"&STR$(D)&"`dollar```")
    14060 CALL D(8,1,"trade`1``buy`2") :: CALL I(129,SP) :: IF SP=9 THEN RETURN ELSE IF SP=1 THEN IF RND>.7 THEN FB=1 :: GOTO 14020 ELSE 14040
    14063 E$="yeseger" :: GOSUB 14075 :: IF SP=1 THEN IF C>O THEN CALL D(3,1,"money`is`not`enough``````")ELSE L=L+A :: O=O-C
    14067 E$="energie" :: GOSUB 14075 :: IF SP=1 THEN IF D>O THEN CALL D(5,1,"money`is`not`enough```````")ELSE N=N+B :: O=O-D
    14070 GOTO 14850
    14075 CALL D(8,1,E$&"`buy``yes`1``no`2") :: CALL I(129,SP) :: IF SP=9 THEN 9000 ELSE RETURN
    14800 IF RND<.9 THEN A=INT(RND*(E(3)+E(1))*C) :: B=INT(E(1)*E(3)*15) :: GOTO 14820
    14805 GOSUB 18500 :: FB=1 :: FC=0 :: CALL D(7,1,"dinghies`of`galactica") :: CALL D(8,1,"von`kampfrobotern`destroyed") :: RETURN
    14820 CALL D(7,1,STR$(A)&"`yeseger`and") :: L=L+A :: C=1000-N :: IF B>C THEN B=C
    14830 CALL D(7,15,STR$(INT(B/10))&"`:`energie") :: B=INT(E(1)*E(3)*(5+RND*5)) :: O=O+B :: CALL D(8,1,"and`"&STR$(B)&"`dollar`found") :: N=N+C
    14850 G$(FA)=STR$(INT(ASC(G$(FA))-48)/2))&SEG$(G$(FA),2,3) :: RETURN
    15000 A=100-M :: IF A>.2*N THEN CALL D(3,1,"energy`is`not`enough") :: RETURN
    15020 CALL D(3,1,"damage`eliminated") :: N=N-A/.2 :: M=100 :: RETURN
    16000 FD,FA,KW,T,R,S=0 :: P=P+1
    16010 XG=XG+KX :: YG=YG+KY :: FOR I=YG-4 TO YG+4 :: IF I>20 OR I<1 OR XG<-3 OR XG>34 THEN E$=D$ :: GOTO 16090
    16020 IF XG>4.9 AND XG<27 THEN E$=SEG$(A$(I),XG-4,9)ELSE IF XG<5 THEN E$=SEG$(D$,1,5-XG)&SEG$(A$(I),1,4+XG)ELSE E$=SEG$(A$(I),XG-4,35-XG)&D$
    16090 DISPLAY AT(I-YG+6,7)SIZE(9):E$ :: NEXT I :: CALL DELSPRITE(#16,#17)
    16100 CALL A(XG,YG,XE,YE,A) :: DISPLAY AT(9,3)SIZE(2):"``" :: CALL L(9,2,INT(A)) :: IF A<4 THEN C=(XE-XG+12)*8 :: D=(YE-YG+5)*8 :: CALL SPRITE(#17,141,16,D,C,#16,127,4,D,C)
    16105 IF A<1 AND KX=0 AND KY=0 THEN 19000 ELSE CALL GCHAR(6,13,A) :: IF A=140 THEN 19100
    16200 FOR I=1 TO 8 :: CALL A(XG,YG,SX(I),SY(I),A) :: IF A<5 THEN T=T+1 :: IF A<1 AND KX=0 AND KY=0 THEN FA=I :: CALL D(1,1,"galactica`in`orbit")
    16202 IF I>5 THEN 16405 ELSE IF YZ(I)>YG THEN A=-1 ELSE A=1
    16203 IF XZ(I)>XG THEN B=-1 ELSE B=1
    16205 XZ(I)=XZ(I)+B :: YZ(I)=YZ(I)+A :: K(I)=K(I)+1 :: CALL A(XG,YG,XZ(I),YZ(I),A) :: IF A>4.9 THEN 16220 ELSE B=YZ(I)-YG+6
    16210 C=XZ(I)-XG+13 :: RN=I :: CALL SPRITE(#10+I,94,12,B*8-6,C*8-7) :: CALL GCHAR(B,C,D) :: IF D=140 THEN 16900 ELSE R=R+1 :: D=INT(K(I)) :: KW=KW+2*D+30*(K(I)-D)/(A+1) :: GOSUB 18500
    16215 GOTO 16405
    16220 IF A<8 THEN S=S+1 :: CALL D(4,1),"approaching`objects`located")
    16405 NEXT I :: IF R>0 THEN CALL D(5,1,"attack`through`cylon")
    16407 IF FA=0 THEN 16415
    16410 FOR I=1 TO 4 :: E(I)=VAL(SEG$(G$(FA),I,1)) :: NEXT I :: IF(E(4)<7 OR FB>0)AND E(3)>1 THEN CALL D(1,1,"attack`from`planet") :: KW=KW+E(1)*E(3) :: GOSUB 18500
    16415 IF KW<=0 THEN 16420 ELSE B=10 :: IF SI=0 THEN E$="activate" ELSE IF KW<2*SI THEN E$="withstood" :: KW=0 ELSE E$="broken" :: KW=KW-2*SI
    16418 D=INT(KW/5) :: M=M-D :: CALL D(7,1,"shield`"&E$) :: CALL D(8,1,STR$(D)&":`damage`by`hit") :: GOTO 16422
    16420 IF S=0 THEN B=12 ELSE B=4
    16422 N=N-(ABS(KX)+ABS(KY))*7-SI*2 :: CALL COLOR(#26,B) :: GOTO 9000
    16900 E$="cylon``" :: D=2 :: GOSUB 17000
    16910 GOSUB 18000
    16920 GOTO 16220
    17000 CALL D(1,1,E$&"`in`the`asteroid`field") :: CALL D(D+1,1,"smashed") :: RETURN
    18000 FOR U=1 TO 3 :: CALL SOUND(75,-7,U*2) :: CALL COLOR(#10+RN,U+10) :: CALL PATTERN(#RN+10,143-U*3) :: NEXT U :: CALL DELSPRITE(#RN+10)
    18010 D=SGN(RND-.5) :: XZ(RN)=XZ(RN)+D*INT(RND*8+6) :: YZ(RN)=YZ(RN)+D*INT(RND*6+7) :: K(RN)=0.9 :: RETURN
    18500 FOR U=1 TO 4 :: CALL COLOR(13,16,13-U*2,14,8,13-U*2) :: CALL SOUND(-125,110,30,110,30,20000/U,30,-8,U) :: NEXT U :: RETURN
    19000 CALL D(2,1,"goal`achieved") :: GOTO 19200
    19100 E$="galactica" :: D=2 :: GOSUB 17000
    19200 DISPLAY AT(16,1):RPT$("`",140) :: CALL DELSPRITE(ALL) :: CALL D(5,8,"new`game``1") :: CALL D(7,8,"new``map``2") :: CALL I(12,SP) :: ON SP GOTO 5030,5021
    20001 ON ERROR 20001 :: GOTO 9000
    30000 SUB I(A,SP) :: A$=STR$(A)
    30001 CALL SOUND(-4250,-7,25) :: FOR I=1 TO 25 :: CALL KEY(0,K,S) :: IF S<>0 THEN SP=POS(A$,CHR$(K),1) :: IF SP>0 THEN 30010
    30003 NEXT I :: CALL SOUND(-50,4000,0) :: GOTO 30001
    30010 CALL SOUND(-50,770,3) :: SUBEND
    30020 SUB L(A,B,C) :: CALL D(-12+A,B,STR$(C)) :: SUBEND
    30050 SUB D(Y,X,A$) :: DISPLAY AT(Y+12,X)SIZE(LEN(A$)):A$ :: SUBEND
    30060 SUB A(A,B,C,D,E) :: E=SQR(ABS(A-C)^2+ABS(B-D)^2) :: SUBEND
    30070 SUB C :: DISPLAY AT(13,1):RPT$("`",224) :: SUBEND

     

     

    • Like 1
    • Thanks 1
  15. What I am reading is that the hardcore users, use a PEB! ?

    And one way of growing the community is to make a modern PEB, that is easy for everyone to get a hold of. Maybe that is something that is a more interesting thing to know. How many want to take the real TI and expand it with hardware that can run "bigger stuff" on the system? If you could upgrade your system, what would you do?


    To pixelpedant, what about making an overview of possible ways of upgrading your TI. You're making a lot of great content for the TI, on youtube! ?
     

  16. What if one modernized the PEB? I think that all cards can be made much smaller and all possible cards could have space within a smaller footprint. Or is it better to code it all into a Raspberry Pi? (if possible?)

    If I understand correctly, there are some "half" substitutes for the PEB, or are there modern 100% substitutes for the PEB?

    • Like 1
×
×
  • Create New...