Jump to content
aitsch

Looking for a Star Trek like game 'Unternehmen Galactica' from 1984

Recommended Posts

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

  • Like 1

Share this post


Link to post
Share on other sites

Completion: it was released as a listing in the german magazine 'happy computer' 12/1984.

Share this post


Link to post
Share on other sites

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.

  • Thanks 1

Share this post


Link to post
Share on other sites

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

 

 

  • Like 3
  • Sad 1

Share this post


Link to post
Share on other sites

@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
®[email protected], 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) : "[email protected]@[email protected]
@[email protected]"
:: 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
[email protected][email protected]@[email protected]_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"

 

  • Like 2

Share this post


Link to post
Share on other sites

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):"[email protected]@[email protected]@[email protected]" :: 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:"[email protected][email protected]@[email protected]@[email protected]@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)&"[email protected]@@@@@@@@@" :: 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!:P

 

...Rest interval ...Then, back to my DRILL THRALLS!:roll:

 

FIAD...

PAGE1

  • Like 3

Share this post


Link to post
Share on other sites
Posted (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 by ti99iuc
  • Like 3

Share this post


Link to post
Share on other sites

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.

  • Like 1

Share this post


Link to post
Share on other sites

Important note at the end: "The underlined characters must be entered as CTRL-G".

  • Like 1

Share this post


Link to post
Share on other sites

@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:
2022-06-07_171055.png.23de87f043d7974fa720ee3e0a366117.png

 

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:
image.png.097c795db35d86b8e140130cff094169.png

 

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


cover.jpg.ca9692c8450df11afd7a72f654dbcbb8.jpg

 

https://www.ti99iuc.it/web/sfoglia/?cid=59&sub=sfogliabili/1984_12/

Only for the pages TI99 related of course 😛

Hope you like.

 

  • Like 1
  • Thanks 4

Share this post


Link to post
Share on other sites
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:..."

  • Like 1

Share this post


Link to post
Share on other sites

thanks @mizapf, so he could just be the publisher but not the developer, right?

if so, Could be Stefan Jennen instead the actual programmer... 

Share this post


Link to post
Share on other sites
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.

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
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.

  • Like 1

Share this post


Link to post
Share on other sites
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.

  • Like 1

Share this post


Link to post
Share on other sites

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):"@@@@[email protected]@[email protected]@[email protected]@@@" :: 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 :"[email protected][email protected][email protected]@@[email protected][email protected]_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)&"[email protected]@@@@@@@@@" :: 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

Share this post


Link to post
Share on other sites
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):"@@@@[email protected]@[email protected]@[email protected]@@@" :: 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 :"[email protected][email protected][email protected]@@[email protected][email protected]_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)&"[email protected]@@@@@@@@@" :: 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.

Share this post


Link to post
Share on other sites
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. 

 

 

  • Like 2

Share this post


Link to post
Share on other sites
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:
2022-06-07_171055.png.23de87f043d7974fa720ee3e0a366117.png

 

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:
image.png.097c795db35d86b8e140130cff094169.png

 

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


cover.jpg.ca9692c8450df11afd7a72f654dbcbb8.jpg

 

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 ☝️

  • Like 2

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Posted (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 by aitsch
  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...