Main Flight Computer Decoded

Joined
Mar 9, 2022
Messages
15
#1
Hi,
You all have properly wondered before what does cryptic number means when looking at the main flight computer.
I too though that and I had the feeling that they might contain more information than just how much the thruster should fire.

After some testing and experimenting I came to the following result.
Will use 271897480 as an example value for explaining.

(271897480)10 = (00010000001101001101001110001000)2
                 <----------- 32 bits ---------->
                 000100000011                       <-- 12 Bit - Value is 3 - yes its not 3
                 <---------->
                             010011                 <-- 6 Bit - Value is 19
                             <---->
                                   01001110001000   <-- 14 Bit - Value is 5000
                                   <------------>
Index that counts up how often it got loaded, it resets with each game start.
Index of the thruster this MFC is controlling.
  Note that I didn't tested it with more than 50 thruster/ thruster groups.
Thruster thrust amount.


I have to do explain were the left one 1 in the load index went.
I originally thought this 1 would be used to indicate that the maximum value is reached and the count index should reset back to 0. Something like that.
To prove that I went into test mode and back into edit mode 257 times.

Took a moment but what I found out wasn't what I expected. - Below are the last four, before I stopped. The entire list is also in Files.zip

254 (534773760)10 = (00011111111000000000000000000000)2
255 (535822336)10 = (00011111111100000000000000000000)2
256 (536870912)10 = (00100000000000000000000000000000)2
257 (537919488)10 = (00100000000100000000000000000000)2


As you can see it just moved one position to the left. What?!
Now I'm clueless to why this is there to begin with, there is likely a reason but I don't know this reason. But I would like to know why it is there.

I then went on to create some yolol code that can convert and extract each number. Because it is interesting information.
It needs at least an advance chip because it uses modulo.
Yolol code and a blueprint with a test ship are included in Files.zip

Convert DEC to BIN, note BIN output is a string
a=:InDec n=1 d="" i=32
n/=i b=a a=a%2^i-- c=b!=a d+=c goto2
:OutBin=d goto1
Extract each number as BIN
a=:InDec n=1 d="" i=32 e=0
n/=i-20 b=a a=a%2^i-- c=b!=a d+=c*(e>0) e+=c goto2
:OutBinLoad=d d=""
n/=i-14 b=a a=a%2^i-- c=b!=a d+=c goto4
:OutBinIndex=d d=""
n/=i b=a a=a%2^i-- c=b!=a d+=c goto6
:OutBinLevel=d goto1
Extract each number as DEC
a=:InDec n=1 d=0 i=32 e=0
n/=i-20 b=a a=a%2^i-- c=b!=a d+=(2^(i-20))*c*(e>0) e+=c goto2
:OutDecLoad=d d=0
n/=i-14 b=a a=a%2^i-- c=b!=a d+=(2^(i-14))*c goto4
:OutDecIndex=d+1 d=0
n/=i b=a a=a%2^i-- c=b!=a d+=(2^i)*c goto6
:OutDecLevel=d goto1
Memory chip field names
:InDec
:OutBin
:OutBinLoad
:OutBinIndex
:OutBinLevel
:OutDecLoad
:OutDecIndex
:OutDecLevel


The code isn't the fastest so don't expect to see results instantly. 0.2sec line speed is slow.
This code isn't perfect. To convert the load index I have to ignore the first 1. But this means it can only convert it properly until 255 because 256 uses the bit I previously ignored.
But I value the change of this happening ingame quite low. Maybe during EosCon.

~ OrchideeFan944
 

Attachments

Last edited:
Top