aitsch Posted June 7, 2022 Share Posted June 7, 2022 Hi, as a kid i played a game named 'Unternehmen Galactica' on the ti-99 4/a. This is the first game ever that i played on a home computer. Can i find this program as a file somewhere? Cheers aitsch 1 Quote Link to comment Share on other sites More sharing options...
aitsch Posted June 7, 2022 Author Share Posted June 7, 2022 Completion: it was released as a listing in the german magazine 'happy computer' 12/1984. Quote Link to comment Share on other sites More sharing options...
+mizapf Posted June 7, 2022 Share Posted June 7, 2022 We have some people in the club "Deutsches Eck" who did some scans of German magazines. You need to be invited by @Schmitzi first, though. 1 1 Quote Link to comment Share on other sites More sharing options...
jstimson Posted June 7, 2022 Share Posted June 7, 2022 With a quick google search, I found the PDF of that issue here. The program you're looking for is on page 69. https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&cad=rja&uact=8&ved=2ahUKEwiDl8PrpJz4AhXGmIQIHVIgC2EQFnoECAIQAQ&url=http%3A%2F%2Fwww.homecomputerworld.at%2Fmagazine%2Fhappy%2FHappy.Computer.N14.1984.12-Cartman.pdf&usg=AOvVaw2AbPKDWXkoFHjDG8xjq7W- 4 1 Quote Link to comment Share on other sites More sharing options...
SkyPilot Posted June 7, 2022 Share Posted June 7, 2022 Wish there was a program that could turn a OCR PDF into a program. Just The Program.pdf 2 Quote Link to comment Share on other sites More sharing options...
+mizapf Posted June 7, 2022 Share Posted June 7, 2022 Wow, that's a pretty long Extended Basic program - one of the kind which I did not dare to start typing in back in those days, because my cartridge port was already so flaky that a kick at the table could have made the cursor freeze. Which happened when you were in the last column, of course... 3 1 Quote Link to comment Share on other sites More sharing options...
CapitanClassic Posted June 7, 2022 Share Posted June 7, 2022 @SkyPilot, they do, even smart phones do it. The first page as scan-to-text (via iOS). I haven’t done any correction of line indentation, and am haven’t verified the punctuation (which doesn’t scan so well unless you blow up the image, which I kind of did by loading the pdf in a tablet and scanning it with the phone in multiple parts) Listing zu »Unternehmen Galactica«, Die unterstrichenen Zeichen müssen mit »CTRL G« eingegeben werden. 1000 RANDOMIZE :: OPTION BASE 1 1: ON ER ROR 20001 1020 DIM A$ (20) ,B$ (8) ,C$ (5) , XZ (5) , E (4) , Y Z (5) ,SX (8) , SY (8) , G$ (8) ,K (5) 1030 WRZT$-CHR$ (129) &CHR$ (130) &CHR$ (131) SCHR$ (132) &CHR$ (133) &CHR$ (134) &CHR$ (140) &CHR$ (135) 1500 DATA 32, 47, "FFC0A09088848383" , "8383 838383838383*, "è383B4BB9DADCOFF*,"FFFFBe BRODORBOFF" 1510 DATA C1C12111090503FF ,C1C1C1C1C1C1C 1C1,FF0305091121C1C1, FF®0000000OFFFF, 00 ®406FFFF@604, 002060FFFF602, 1EDE1EJA7BEB4 1520 DATA 7870785C0E0702, 18181818187E3C1 8,183C7E1818181818,02070E5C787078, 40E070 3A1ERE1E 1530 DATA 123,142, "FFFFFFFF","8142240080 244281", "B®00000000001- , "00305FE6C202C "8- 1540 DATA 00000008, 8004, 1,00000240001,00 00000200000004,,0240003030044,8008001818 1550 DATA 58,64 1552 DATA 00626408102646,,,,,, 1555 DATA 91. , 96 1560 DATA „FFFFC3C5C3C3FFFF,06605030303 0606,185C7E7E3C18,0020005C, 1650 DATA 2,1, "time", 7,1, "erde",2,18, "ga 4,18, "dollar", 6, 18, " jaeger , 8. 18, "energie 1700 DATA 1,2,5,10,1,8,10,10,1,19,12,10, 12,2,29,9 3000 RESTORE 1500 1: FOR U-1 TO 4 :: REA D A,B :: FOR I=A TO B:: READ E$ :: CALL CHAR (I,E$):: NEXT I :: NEXT U 4000 CALL SCREEN (2) 4802 CALL COLOR (5,16,14,6,16,14,7,16,14, 8,16,14) 4003 CALL COLOR (9,13,4,10,13, 4,11, 13, 4,1 2,13,4) 4005 CALL COLOR (3, 2, 12, 4,2, 12) 4010 CALL COLOR (0,2,2,1,16,6,2,16,4,13,1 6,5,14,15,5) 5000 CALL CHAR (1,1,96,672) :: CALL HCHAR (22,1,64,96) :: CALL VCHAR(1,32,31,48) 5010 RESTORE 1700 B: FOR I=1 TO 4 :: REA D 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 CHAR (A+D ¡B, 34) : : CALL HCHAR (A+D,B+C,36) : : CALL H CHAR (A,B+C, 38) : : NEXT I :: CALL D(-2,18, "ellf") 5021 DISPLAY AT (23,1) : "BITTE@HABEN@SIE@3 @MIN@GEDULD" :: RESTORE 5028 :: FOR Y=1 TO 8 :: READ B$ (V):: IF V<6 THEN READ C$ (Y) 5022 NEXT Y :: READ D$ :: FOR Y=1 TO 20 A$(Y) ="" FOR X=1 T0 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 V 5025 FOR I=1 TO B : : SX (I), AFINT (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, cen taurie,arkion, draconia, syrian, pegasus, my onid, phoenix, altair,hydra, GGGGGGGGG, 5030 CALL SPRITE (#10,124, 12, 40, 97, #26, 12 3,12,171,152) : : CALL MOTION (#26,2,30) : : CALL CHAR (22, 1,30,32) 5050 RESTORE 1650 :: FOR I=1 TO 6 :: REA D 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 (RN D*9+1)):: IF I(6 THEN XZ(I) =INT (RND*30)+ 1 :: VZ(I) =INT (RND*30+1):: K(I) =10.9 6030 NEXT I :: P,FA, FB, FC, FD=0 : : L=15 M=100 :: 0=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 _SCHAEDENeZ ALARMe@3_SENSOR4_KURS@@5_VERHANDELNG@6_n EXT" ALL C 8010 DISPLAY AT (23,1) : RPT#("@", 39) &"9 ME ON SP GOSUB 15000, 1300 0,12000,11000, 14000, 16000 9000 CALL D(-10,23, R) = CALL D(-8,26; "••*"):: CALL D(-6,26,"* *"):: IF FA= HEN FB,FC=0 9010 IF INT (N)(=0 OR INT (M)<=0 THEN CALL D (2,1, "galactica'zerstoert") :: GOTO 192 00 ELSE CALL L (4,2,P) : : CALL L (2,22, M) : : CALL L (4,25,0) : : CALL L (6,25,L) 9500 CALL SPRITE (#22,93,2,73, 155+N*. 072) GOTO 7000 11000 CALL D(1.9. "kurswechsel "):: CALL D (3,8, 1'2'3") :: CALL D(S,8,") D (""g 04"):: CALL D‹7,8,". '7 6'5" 2 Quote Link to comment Share on other sites More sharing options...
HOME AUTOMATION Posted June 8, 2022 Share Posted June 8, 2022 Tackled the first page, somewhat... 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,3C7EFFFFFFFF7E7C,FFFFFF 1550 DATA 58,64 1552 DATA 00626408102646,,,,,, 1555 DATA 91,96 1560 DATA ,FFFFC3C7C3C3FFFF,0606030303030606,183C7E7E3C18,0000003C, 1650 DATA 2,1,"time",7,1,"erde",2,18,"ga1````:ok",4,18,"dollar",6,18,"Jaeger",8,18,"energie" 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,13,4,10,13,4,11,13,4,12,13,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,8,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):"BITTE@HABEN@SIE@3@MIN@GEDULD" :: 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,GGGGGGGGG, 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 XEXG<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_SCHAEDEN@2_ALARM@@3_SENSOR4_KURS@@5_VERHANDELN@@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_MENUE@@@@@@@@@@" :: 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'zerstoert"):: GOTO 19200 ELSE CALL L(4,2,P):: CALL L(2,22,M):: CALL L(4,25,0):: CALL L(6,25,L) 9500 CALL SPRITE(#22,93,2,73,155+N*.072):: GOTO 7000 11000 CALL D(1,9,"kurswechsel"):: 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) I attempted correction of many errors ...there'll be more! ...Rest interval ...Then, back to my DRILL THRALLS! FIAD... PAGE1 3 Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted June 8, 2022 Share Posted June 8, 2022 (edited) Hello guys, I have dumped this game and it is present in my DB ready to publish but I am not at home to publish. Maybe tomorrow I could have the time to search it and share ? if no one will solve in the meantime I can have the possibility to help anyway ? Edited June 8, 2022 by ti99iuc 3 Quote Link to comment Share on other sites More sharing options...
aitsch Posted June 8, 2022 Author Share Posted June 8, 2022 Thanks to all for your comprehensive help. To be honest, I was hoping that I wouldn't have to type in the program and I didn't have good experiences with the OCR recognition. I've tried for a Commodore some time ago. The follow-up check took so much time that I could have typed out the entire code and on top i am not familiar with the TI-99. @ti99iucit would be nice if you could publish the game file here or send it to me as PM. 1 Quote Link to comment Share on other sites More sharing options...
+mizapf Posted June 8, 2022 Share Posted June 8, 2022 Important note at the end: "The underlined characters must be entered as CTRL-G". 1 Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted June 8, 2022 Share Posted June 8, 2022 @aitsch I was not be able to try it so much but I think it is the complete game. I had it on a cassette tape present in a Germany TI99 lot of stuff so I think it is good but please, give it a try. I also still not understand if the real name of the developer is the one that signed the game pages on the magazine Gerd Herrmann, someone of you knows what is meaning the /wb after his name? this because I also found an ads on another magazine: Anyway, for the moment I have preferred to use the name published in the original magazine for the Database Info catalog. Back to the software: I have published it >>here<< this is the direct link of the ZIP file with the game. I have also cleaned and restored the pages of the magazine linked by @SkyPilot https://www.ti99iuc.it/web/sfoglia/?cid=59&sub=sfogliabili/1984_12/ Only for the pages TI99 related of course ? Hope you like. 1 4 Quote Link to comment Share on other sites More sharing options...
+mizapf Posted June 8, 2022 Share Posted June 8, 2022 15 minutes ago, ti99iuc said: I also still not understand if the real name of the developer is the one that signed the game pages on the magazine Gerd Herrmann, someone of you knows what is meaning the /wb after his name? This is the responsible editor for this contribution. See page 163 ("Impressum"), right column, "Redakteure:..." 1 Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted June 8, 2022 Share Posted June 8, 2022 thanks @mizapf, so he could just be the publisher but not the developer, right? if so, Could be Stefan Jennen instead the actual programmer... Quote Link to comment Share on other sites More sharing options...
SkyPilot Posted June 8, 2022 Share Posted June 8, 2022 @ti99iuc No English version? ? Quote Link to comment Share on other sites More sharing options...
+mizapf Posted June 8, 2022 Share Posted June 8, 2022 4 minutes ago, ti99iuc said: thanks @mizapf, so he could just be the publisher but not the developer, right? if so, Could be Stefan Jennen instead the actual programmer... No, /wb is the editor, it is not Gerd Herrmann. He seems to be the author. The ad that you found says that Stefan Jennen is looking for ("Suche" = "seek") the game "Unternehmen Galactica", offers ("Angebote", had a typo) by phone. So Stefan is definitely not the author. 1 1 Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted June 8, 2022 Share Posted June 8, 2022 @SkyPilot could be nice, but need someone that can know German and English so to have a good translation 2 Quote Link to comment Share on other sites More sharing options...
ti99iuc Posted June 8, 2022 Share Posted June 8, 2022 1 minute ago, mizapf said: No, /wb is the editor, it is not Gerd Herrmann. He seems to be the author. The ad that you found says that Stefan Jennen is looking for ("Suche" = "seek") the game "Unternehmen Galactica", offers ("Angebote", had a typo) by phone. So Stefan is definitely not the author. ah ok, this is very good. It clear my doubts and I also learned something more many thanks for the explanation. So I can be sure to left the Gerd Name now. 1 Quote Link to comment Share on other sites More sharing options...
aitsch Posted June 9, 2022 Author Share Posted June 9, 2022 9 hours ago, ti99iuc said: @SkyPilot could be nice, but need someone that can know German and English so to have a good translation I can do that, but someone else must change the coding. 1 Quote Link to comment Share on other sites More sharing options...
oddemann Posted June 9, 2022 Share Posted June 9, 2022 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 1 1 Quote Link to comment Share on other sites More sharing options...
SkyPilot Posted June 9, 2022 Share Posted June 9, 2022 4 hours ago, oddemann said: Not a great Translation... Reveal hidden contents 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 Better, thank you. As soon as @tmop69 gets done with it, the long wait for starting will be over. Quote Link to comment Share on other sites More sharing options...
tmop69 Posted June 9, 2022 Share Posted June 9, 2022 10 minutes ago, SkyPilot said: Better, thank you. As soon as @tmop69 gets done with it, the long wait for starting will be over. Unfortunately, there is floating point math in the code, so have to be heavily modified to be compilable. If someone wants to modify it and rewrite the floating point math with int math only I'll surely complete the others steps needed to have it compiled and in SSS. 2 Quote Link to comment Share on other sites More sharing options...
aitsch Posted June 9, 2022 Author Share Posted June 9, 2022 13 hours ago, ti99iuc said: @aitsch I was not be able to try it so much but I think it is the complete game. I had it on a cassette tape present in a Germany TI99 lot of stuff so I think it is good but please, give it a try. I also still not understand if the real name of the developer is the one that signed the game pages on the magazine Gerd Herrmann, someone of you knows what is meaning the /wb after his name? this because I also found an ads on another magazine: Anyway, for the moment I have preferred to use the name published in the original magazine for the Database Info catalog. Back to the software: I have published it >>here<< this is the direct link of the ZIP file with the game. I have also cleaned and restored the pages of the magazine linked by @SkyPilot https://www.ti99iuc.it/web/sfoglia/?cid=59&sub=sfogliabili/1984_12/ Only for the pages TI99 related of course ? Hope you like. thanks a lot @ti99iuc for publishing this game. I've tried it and feld 38 years younger! like mizapf said, it seems that Gerd Herrmann is not the developer of this game, he is the editor of the article and an employee of 'Happy Computer' magazine. /wb was only his department code. i would name the developer as 'unknown' but it's on you. Stefan Jennen has absolutely nothing to do with the game. he only asked in a computer magazine for this game (like i did here). @oddemann Deine Übersetzung ist super !!! (his translation is good) Thanks for all your replies here. You are the best TI-fans ever ☝️ 2 Quote Link to comment Share on other sites More sharing options...
+mizapf Posted June 9, 2022 Share Posted June 9, 2022 As I understood it, "wb" is Werner Breuer, the responsible editor, so Gerd Herrmann may still be the author. Or is there a reason to believe that he is not? But now I'm definitely curious about the game Unternehmen Galactica. BTW, "Unternehmen" is just the German word for "Enterprise" (and it is nearly word-by-word translated from the original French entre-prise, nehmen=prendre). Quote Link to comment Share on other sites More sharing options...
aitsch Posted June 9, 2022 Author Share Posted June 9, 2022 (edited) Let's make it more complicated. I've googled Werner Breuer's name and found him as an author of the book 'Einundzwanzig LISTige Programme für den TI-99/4A' here (21 program listings for the TI-99/4A). With these new information it seems as if he is the author of the program after all. But, i'm not sure. Edited June 9, 2022 by aitsch 1 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.