Elite / Frontier How did Elite generate its tech levels?

Hi!

I'm making a remake of Elite for the TI series of calculators and so I wanted to make my version as similar to Elite as possible. To do this I had to mimic the generation used by the classic game and to my convenience, I found a version called Text Elite on Ian Bell's website (iancgbell.clara.net). I ported the system creation code to Ti-Basic (the language used by the calculator) and tweaked it a bit to get it running at optimal speed, but I've run into a little problem, most planet stats generate fine for the first planet created (Tibedied) but the tech levels don't for the second planet onwards... I've checked that my code does the exact same as Ian Bell's Text Elite source code but it still isn't the same...

If there is anyone knowledgable in how Elite managed the tech level generation, I'd be very grateful for any advice.

Below is a gif and my generation source code.

.The starting generation seeds
23114->A
584->B
46931->C
For(D,0,2).Currently been testing generating 3 planets (0->2)
ClrHome
A and 64->L
B/e^(8)->{X+D}.The X Coord, works
A/e^(8)->{Y+D}.The Y Coord, works
(B/e^(3)) and 7->{G+D}.The Government type, works
(A/e^(8)) and 7->{E+D}.The Economy type, works
If {E+D}<=1
{E+D} or 2->{E+D}
End
{E+D} xor 7+(B/e^(8))->{T+D}.The tech level ,works for the first planet
({G+D}/e^(1))+{T+D}->{T+D}
If ({G+D} and 1)=1
{T+D}+1->{T+D}
End
C/e^(8) and 15->{R+D}.The radius, works

.Creating the name
For(F,0,3)
2*((C/e^(8)) and 31)->{L2+F}
sub(TWEAK)
End

2->Z
If L
3->Z
End
"..LEXEGEZACEBISOUSESARMAINDIREA.ERATENBERALAVETIEDORQUANTEISRION"->Str3
Copy(" ",L1,1)
For(F,0,Z)
{Str3+{L2+F}}->{L1+(2*F)}
{Str3+{L2+F}+1}->{L1+(2*F)+1}
End
0->{L1+(Z+1*2)+1}
End
Return

.Used to tweak the seeds when making the name
Lbl TWEAK
A+B+C->I
B->A
C->B
I->C
Return

Here's a short gif of when I start the game and have the second planet (Qube) selected.
1390335916_zpsbe4a2191.gif

Link: http://i1059.photobucket.com/albums/t425/CascadeRP/1390335916_zpsbe4a2191.gif

As you can see, the tech level is totally wrong. P.S Ignore the name of the planet, it's supposed to be wrong :p
 
Wow! Amazing indeed :)

Let's see if I can help you out. I don't understand TI basic so well,

but let me try to understand what's going on:

If {E+D}<=1
{E+D} or 2->{E+D}
End

This part is still for the economy, right? "if govType <= 1 then economy |= 2" is what TextElite has. So, shouldn't
it read if {G+D} <= 1...?

{E+D} xor 7+(B/e^(8))->{T+D}.

E+D xor 7 is "economy xor 7" and the second summand of the tech level generation (i.e. the _second_ in TextElite; the first in your code). That seems correct.

B/e^8 -- now that seems off... My copy of TextElite (also retrieved of Ian's website) contains an & 3 here; so this should probably be
((B/e^(8)) and 3) [whatever the correct syntax might be]
Also note that TextElite then has the line

if (((thissys.govtype)&1)==1) thissys.techlev+=1;

which I do not find in your code, either (although I might have missed it, of course).
[Ok, looked again and found it. Sorry.
({G+D}/e^(1))+{T+D}->{T+D}

If ({G+D} and 1)=1
{T+D}+1->{T+D}
End

That's ok. So the only thing missing is the "AND 3"...]

Hope that helps!
And good luck with the port!! I sure hope you post when it's finished.

Philipp aka Stardust

P.s.: And incidentally: Are you planning to implement the "Description" String as well? Because in that case, it might get interesting...
According to TextElite, Tibedied has "This planet is most notable for Tibediedian SNU brandy but ravaged by unpredictable solar activity." -- Oolite has "This planet is most notable for Tibediedian Arma brandy but scourged by deadly edible grubs.", and I also find "This planet is most notable for Tibediedian Arnu brandy but ravaged by unpredictable solar activity." -- The Amiga version has "The planet Tibedied is well known for its inhabitants' ancient loathing of sit coms but is ravaged by vicious white shrews."... So, take your pick :)
 
Last edited:
As you can see, the tech level is totally wrong. P.S Ignore the name of the planet, it's supposed to be wrong :p

Hi -

just a thought - what system was the code ported from? Check little vs. big endian for byte values and shifting. Possibility to rule out since the first value works but subsequent ones don't.

If you're starved for inspiration though, you could always take a peek at the Oolite source code, shouldn't be hard to track that part of the code down.

PS are you going to make this open source? I'd love to follow your progress :)
 
Hi!

I'm making a remake of Elite for the TI series of calculators and so I wanted to make my version as similar to Elite as possible. To do this I had to mimic the generation used by the classic game and to my convenience, I found a version called Text Elite on Ian Bell's website (iancgbell.clara.net). I ported the system creation code to Ti-Basic (the language used by the calculator) and tweaked it a bit to get it running at optimal speed, but I've run into a little problem, most planet stats generate fine for the first planet created (Tibedied) but the tech levels don't for the second planet onwards... I've checked that my code does the exact same as Ian Bell's Text Elite source code but it still isn't the same...

If there is anyone knowledgable in how Elite managed the tech level generation, I'd be very grateful for any advice.

Below is a gif and my generation source code.

.The starting generation seeds
23114->A
584->B
46931->C
For(D,0,2).Currently been testing generating 3 planets (0->2)
ClrHome
A and 64->L
B/e^(8)->{X+D}.The X Coord, works
A/e^(8)->{Y+D}.The Y Coord, works
(B/e^(3)) and 7->{G+D}.The Government type, works
(A/e^(8)) and 7->{E+D}.The Economy type, works
If {E+D}<=1
{E+D} or 2->{E+D}
End
{E+D} xor 7+(B/e^(8))->{T+D}.The tech level ,works for the first planet
({G+D}/e^(1))+{T+D}->{T+D}
If ({G+D} and 1)=1
{T+D}+1->{T+D}
End
C/e^(8) and 15->{R+D}.The radius, works

.Creating the name
For(F,0,3)
2*((C/e^(8)) and 31)->{L2+F}
sub(TWEAK)
End

2->Z
If L
3->Z
End
"..LEXEGEZACEBISOUSESARMAINDIREA.ERATENBERALAVETIEDORQUANTEISRION"->Str3
Copy(" ",L1,1)
For(F,0,Z)
{Str3+{L2+F}}->{L1+(2*F)}
{Str3+{L2+F}+1}->{L1+(2*F)+1}
End
0->{L1+(Z+1*2)+1}
End
Return

.Used to tweak the seeds when making the name
Lbl TWEAK
A+B+C->I
B->A
C->B
I->C
Return

Here's a short gif of when I start the game and have the second planet (Qube) selected.
1390335916_zpsbe4a2191.gif

Link: http://i1059.photobucket.com/albums/t425/CascadeRP/1390335916_zpsbe4a2191.gif

As you can see, the tech level is totally wrong. P.S Ignore the name of the planet, it's supposed to be wrong :p

Oh wow, you're doing this in TI-BASIC?? I might seriously recommend doing it in assembler - it's harder but you will end up with a lot more control and a lot faster code.
 
Oh wow, mind blown. Elite on a calculator?

As for varying descriptions - what caused them, if the rest (name, gov, tech level) is the same?
 
Back
Top Bottom