Kit (Satellite Dish)
From Unofficial Stationeers Wiki
![]() | |
| Properties | |
|---|---|
| Stacks | Yes (10) |
| Recipe | |
| Created With | Electronics Printer |
| Cost | 5g Gold, 10g Copper, 20g Steel, 5g Nickel, 10g Solder |
![]() | |
| Operation | |
|---|---|
| Power Usage | 200W |
| Construction | |
| Placed with | Kit (Satellite Dish) |
| Placed on | Small Grid |
| Stage 1 | |
| Deconstruction | |
| Deconstructed with | Hand Drill |
| Item received | Kit (Satellite Dish) |
Contents
Description
The Satellite Dish is used together with a Computer fitted with a Motherboard (Communications) to allow Interstellar Communications.
The Satellite Dish must be guided by Satellite Tracking onto a signal and communications may be established once the signal strength is greater than 94%
Medium Satellite Dish
After "Big Changes Coming: Terrain Preview, Melting Ice, Modding, & Localization" update, Medium Satellite Dish has internal stack like Autolathe, which user can utilize it to give instructions to. The Medium Satellite Dish currently have 256Bytes(32 Addresses) stack memory.
Warning: Internally every tick the stack data will be cleared and regenerated, so don't OVERWRITE any TraderInstruction.Write* instructions when setting the WRITE_INDEX and WRITE_COUNT.
| Op_code | Name | Description | Valid Address | Bits | Bits Description |
|---|---|---|---|---|---|
| 1 | TraderInstruction.WriteTraderData | The dish will write out metadata(24 Bytes, in continuous of 3 addresses) to the specified starting index. E.g.: if set WRITE_INDEX to 1, then the metadata will span address 1-3. See Metadata Payloads. | 0-31 | 0-7 | Op_code |
| 8-15 | WRITE_INDEX | ||||
| 16-63 | Unused | ||||
| 2 | TraderInstruction.StrongestContactIdHash | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 1. | 0-31 | 0-7 | Op_code |
| 8-39 | TRADER_ID_HASH | ||||
| 40-63 | Unused | ||||
| 3 | TraderInstruction.StrongestContactMetaData | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 2. | 0-31 | 0-7 | Op_code |
| 8-15 | SHUTTLE_TYPE. | ||||
| 16-23 | CONTACT_TIER. | ||||
| 24-31 | CONTACTED. | ||||
| 32-63 | Unused | ||||
| 4 | TraderInstruction.StrongestContactSignalData | This OpCode indicates the data generated by TraderInstruction.WriteTraderData payload segment 3. | 0-31 | 0-7 | Op_code |
| 8-23 | WATTS_TO_RESOLVE See WattsToResolve. | ||||
| 24-39 | LIFETIME See LifeTime. | ||||
| 32-63 | Unused | ||||
| 5 | TraderInstruction.WriteTraderBuyData | The dish will write out trader buy metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total. If an item contains child items, then it will be expaned inplace. E.g.: <BuyPayload><BuyPayload><BuyChildPayload><BuyPayload>. See Buy/Sell Payloads, Buy/Sell Child Payloads. WRITE_COUNT=0 means WRITE_COUNT=1. |
0-31 | 0-7 | Op_code |
| 8-15 | WRITE_INDEX | ||||
| 16-23 | WRITE_COUNT | ||||
| 24-63 | Unused | ||||
| 6 | TraderInstruction.WriteTraderSellData | The dish will write out trader sell metadatas from the starting address WRITE_INDEX, and write WRITE_COUNT continuous addresses total. If an item contains child items, then it will be expaned inplace. E.g.: <SellPayload><SellPayload><SellChildPayload><SellPayload>. See Buy/Sell Payloads, Buy/Sell Child Payloads. WRITE_COUNT=0 means WRITE_COUNT=1. |
0-31 | 0-7 | Op_code |
| 8-15 | WRITE_INDEX | ||||
| 16-23 | WRITE_COUNT | ||||
| 24-63 | Unused | ||||
| 7 | TraderInstruction.TraderBuyThingData | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData. | 0-31 | 0-7 | Op_code |
| 8-15 | QUANTITY | ||||
| 16-47 | PREFAB_HASH | ||||
| 48-63 | Unused | ||||
| 8 | TraderInstruction.TraderBuyThingChildData | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData. | 0-31 | 0-7 | Op_code |
| 8-15 | QUANTITY | ||||
| 16-47 | PREFAB_HASH | ||||
| 48-63 | Unused | ||||
| 9 | TraderInstruction.TraderBuyGasData | This OpCode indicates the data generated by TraderInstruction.WriteTraderBuyData. | 0-31 | 0-7 | Op_code |
| 8-15 | QUANTITY | ||||
| 16-47 | GAS_TYPES_BITFLAG See Gas_Type_BitFlags. | ||||
| 48-63 | Unused | ||||
| 10 | TraderInstruction.TraderSellThingData | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData. | 0-31 | 0-7 | Op_code |
| 8-15 | QUANTITY | ||||
| 16-47 | PREFAB_HASH | ||||
| 48-63 | Unused | ||||
| 11 | TraderInstruction.TraderSellGasData | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData. | 0-31 | 0-7 | Op_code |
| 8-15 | QUANTITY | ||||
| 16-47 | GAS_TYPES_BIGFLAG See Gas_Type_BitFlags. | ||||
| 48-63 | Unused | ||||
| 12 | TraderInstruction.TraderSellThingChildData | This OpCode indicates the data generated by TraderInstruction.WriteTraderSellData. | 0-31 | 0-7 | Op_code |
| 8-15 | QUANTITY | ||||
| 16-47 | PREFAB_HASH | ||||
| 48-63 | Unused | ||||
| 13 | TraderInstruction.FilterPrefabHashEquals | Filter Operation. User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output. Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition. This Filter narrows Write* OP's output to only matching PrefabHash. |
1-30 | 0-7 | Op_code |
| 8-39 | PREFAB_HASH | ||||
| 40-63 | Unused | ||||
| 14 | TraderInstruction.FilterPrefabHashNotEquals | Filter Operation. User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output. Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition. This Filter narrows Write* OP's output to only not matching PrefabHash. |
1-30 | 0-7 | Op_code |
| 8-39 | PREFAB_HASH | ||||
| 40-63 | Unused | ||||
| 15 | TraderInstruction.FilterSortingClassCompare | Filter Operation. User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output. Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition. This Filter narrows Write* OP's output to only matching SortingClass. |
1-30 | 0-7 | Op_code |
| 8-15 | CONDITION_OPERATION 0: Equals 1: Greater 2: Less 3: Not Equals | ||||
| 16-31 | SORTING_CLASS See Sorting_Class. | ||||
| 32-63 | Unused | ||||
| 16 | TraderInstruction.FilterQuantityCompare | Filter Operation. User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output. Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition. This Filter narrows Write* OP's output to only matching Quantity Condition. |
1-30 | 0-7 | Op_code |
| 8-15 | CONDITION_OPERATION 0: Equals 1: Greater 2: Less 3: Not Equals | ||||
| 16-31 | QUANTITY | ||||
| 32-63 | Unused | ||||
| 17 | TraderInstruction.FilterGasContains | Filter Operation. User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output. Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition. This Filter narrows Write* OP's output to only matching Gases. |
1-30 | 0-7 | Op_code |
| 8-39 | GAS_TYPES_BITFLAG See Gas_Type_BitFlags. | ||||
| 40-63 | Unused | ||||
| 18 | TraderInstruction.FilterGasNotContains | Filter Operation. User can prepend this OP before any TraderInstruction.Write* OP to filter writer's output. Multple filter OP can be written to the addresses before a Write* OP to group as a "AND" condition. This Filter narrows Write* OP's output to only not matching Gases. |
1-30 | 0-7 | Op_code |
| 8-39 | GAS_TYPES_BITFLAG See Gas_Type_BitFlags. | ||||
| 40-63 | Unused |
Metadata Payloads
Since Metadata has 3 addresses, so it's referenced here as a 24 bytes(192 bits) payload.
| BitsOffset | 63-40 | 39-8 | 7-0 | ||
|---|---|---|---|---|---|
| Segment 1 | All bits value in this section is the deplicate of bit 39. | ContactTypeID | OpCode of TraderInstruction.StrongestContactIdHash. | ||
| BitsOffset | 63-32 | 31-24 | 23-16 | 15-8 | 7-0 |
| Segment 2 | All bits 0. | Contacted 0: false 1: true |
Contact Tier: 0: Close 1: Medium 2: Far |
Shuttle Type: 0:None 1: Small(3x3) 2: SmallGas(3x3) 3: Medium(5x5) 4: MediumGas(5x5) 5: Large(6x6) 6: LargeGas(6x6) 7: MediumPlane(7x7, runway:15) 8: LargePlane(9x9, runway:20) |
OpCode of TraderInstruction.StrongestContactMetaData. |
| BitsOffset | 63-40 | 39-24 | 23-8 | 7-0 | |
| Segment 3 | ALl bits 0. | LifeTime | WattsToResolve | OpCode of TraderInstruction.StrongestContactSignalData. |
Buy/Sell Payloads
Buy/Sell Payloads are 1 address each, so it's referenced here as a 8 bytes(64 bit) payload.
| BitsOffset | 63-48 | 47-16 | 15-8 | 7-0 |
|---|---|---|---|---|
| Contents | Every bit's value is the same as bit 47. | PrefabHash/GasTypeBitFlag | Quantity This value is truncated so it won't be greater than 255 although the trader's Request/Stock is more than 255. |
OpCode Data type represented as OpCode, one of the OpCode 7, 9, 10, 11. |
Buy/Sell Child Payloads
Buy/Sell Payloads are 1 address each, so it's referenced here as a 8 bytes(64 bit) payload.
| BitsOffset | 63-48 | 47-16 | 15-8 | 7-0 |
|---|---|---|---|---|
| Contents | Every bit's value is the same as bit 47. | PrefabHash/GasTypeBitFlag | ChildCount Counts how many instances of this item appeared as a child item. Beware it's not quantity, it's just a prefab type count. |
OpCode If this data is requested by TraderInstruction.WriteTraderBuyData, then it's value is the OpCode of TraderInstruction.TraderBuyThingChildData. If this data is requested by TraderInstruction.WriteTraderSellData, then it's value is the OpCode of TraderInstruction.TraderSellThingChildData. |
Gas Type BitFlags
If the BitFlag equals 0, it's undefined. If the bit at specific offset is 1, it means the gas contains that component.
| BitsOffset | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Contents | PollutedWater | LiquidHydrogen | Hydrogen | LiquidNitrousOxide | LiquidPollutant | LiquidCarbonDioxide | Steam | LiquidVolatiles | LiquidOxygen | LiquidNitrogen | NitrousOxide | Water | Pollutant | Volatiles | CarbonDioxide | Nitrogen | Oxygen |
Special Gas:
- Bit 0,1 both set to 1, which is Air.
- Bit 0,3 both set to 1, which is Fuel.
Stack Programming Reference Implementation
Shuttle Cargoes Looking Glasses
Materials to prepare:
- A Medium Satellite Dish.
- Any number of Logic Memories for Prefab Console display (if there are more Prefabs to display than your number of Logic Memories, they will be ignored).
- Corresponding number of Hash Displays and Consoles.
- Any number of Logic Memories for Gas Console display, (if there are more GasLiquid to display than your number of Logic Memories, they will be ignored).
- Corresponding number of Hash Displays and Consoles.
- 5 Console for Small LED installation (all will show metadata).
- 1 Kit (IC Housing) and 1 Integrated Circuit (IC10).
Installation:
- Install all of the Logic Memories.
- Install corresponding Prefab Consoles, insert Hash Displays, and make sure the Hash Displays are set to Prefab display mode:
Mode=0 - Install corresponding Gas Consoles, insert Hash Displays, and make sure the Hash Displays are set to GasLiquid display mode:
Mode=1
# example for setup GasLiquid mode ss d0 0 Mode 1 # d0 is console pin # or configure all the Consoles in the IcHousing's subnetwork sbs StructureConsole 0 Mode 1
- Naming each Logic Memory sequentially for two display types, for example:
SLMP1,SLMP2for Prefab display, andSLMG1,SLMG2for GasLiquid display. - Manually configure all Consoles to link to their corresponding Logic Memories with Data Disk.
- Install 1 Kit (IC Housing) in the same subnetwork and label it
Cargo LG IC Housing, insert a Integrated Circuit (IC10). - Install 5 LED and labeling them:
LED_SIG_ID,LED_TIER,LED_SHUTTLE_TYPE,LED_WATT_TO_RESOLVE,LED_CONTACTED.
Reference Implementation:
Next are the code snippets for a setup of 20 Prefab Console and 11 GasLiquid Console looking glass.
First snippet is the initialization/configuration code, which should be write to the Integrated Circuit (IC10) for the first time, add/remove the Logic Memories stack entries that you actually used in your setup, then install the chip to housing.
# Shuttle Cargoes Looking Glasses IC Stack Initializer
clr db
move sp 0
# Prefab display Logic Memories, add/remove according to your setup.
push HASH("SLMP1")
push HASH("SLMP2")
push HASH("SLMP3")
push HASH("SLMP4")
push HASH("SLMP5")
push HASH("SLMP6")
push HASH("SLMP7")
push HASH("SLMP8")
push HASH("SLMP9")
push HASH("SLMP10")
push HASH("SLMP11")
push HASH("SLMP12")
push HASH("SLMP13")
push HASH("SLMP14")
push HASH("SLMP15")
push HASH("SLMP16")
push HASH("SLMP17")
push HASH("SLMP18")
push HASH("SLMP19")
push HASH("SLMP20")
move r13 sp
# GasLiquid display Logic Memories, add/remove according to your setup.
push HASH("SLMG1")
push HASH("SLMG2")
push HASH("SLMG3")
push HASH("SLMG4")
push HASH("SLMG5")
push HASH("SLMG6")
push HASH("SLMG7")
push HASH("SLMG8")
push HASH("SLMG9")
push HASH("SLMG10")
push HASH("SLMG11")
move r12 sp
Second snippet is for the second Integrated Circuit (IC10), take your IC10 chip out re-put it into the laptop, clear and paste in the new second code snippet.
There are a few user variables need to modify, please check the in-line comments. Mostly that's for LEDs to display metadata. Change the variables accordingly then insert the IC10 chip into the housing.
# Shuttle Cargoes Looking Glasses Runtime IC10
#
# User variable:
#
# DishM: The Medium Dish hash.
# LED_CON_TYPE_ID: The LED name show ContactTypeID.
# LED_TIER: The LED name show Tier.
# LED_SHUTTLE_TYPE: The LED name show Shuttle Type.
# LED_CONTACTED: The LED name show if the shuttle has been contacted already.
define DishM HASH("Medium Satellite Dish 1")
define LED_CON_TYPE_ID HASH("LED_CON_TYPE_ID")
define LED_TIER HASH("LED_TIER")
define LED_SHUTTLE_TYPE HASH("LED_SHUTTLE_TYPE")
define LED_WATT_TO_RESOLVE HASH("LED_WATT_TO_RESOLVE")
define LED_CONTACTED HASH("LED_CONTACTED")
###############################################################################
define SSD HASH("StructureSatelliteDish")
define SLM HASH("StructureLogicMemory")
define OpcodeMask %11111111
alias dishMID r15
alias dishEntryCount r14
alias prefabMemCount r13
alias totalMemCount r12
alias prefabMemCursor r11
alias gasMemCursor r10
mainloop:
jal Scan
jal Show
jal ClearPrefabMem
jal ClearGasMem
sleep 1
j mainloop
Scan:
#sbn SSD DishM Setting 7500
lbn dishMID SSD DishM ReferenceId Average
bnan dishMID ra
clrd dishMID
sll r0 1 8
or r0 r0 TraderInstruction.WriteTraderData
putd dishMID 0 r0
sll r0 30 16
sll r1 5 8
or r0 r0 r1
or r0 r0 TraderInstruction.WriteTraderSellData
putd dishMID 4 r0
sleep 1
j ra
Show:
move dishEntryCount 0
move prefabMemCursor 0
move gasMemCursor totalMemCount
ShowLoop:
beq dishEntryCount 31 ra
add dishEntryCount dishEntryCount 1
getd r0 dishMID dishEntryCount
and r1 r0 OpcodeMask
beq r1 2 MetaData1
beq r1 3 MetaData2
beq r1 4 MetaData3
beq r1 10 ThingData
beq r1 11 GasData
beq r1 12 ThingData
j ShowLoop
MetaData1:
sra r2 r0 8 # trader contact type id
sbn HASH("StructureConsoleLED5") LED_CON_TYPE_ID Setting r2
j ShowLoop
MetaData2:
and r2 r0 %11111111_00000000_00000000_00000000
sra r2 r2 24 # contacted
sbn HASH("StructureConsoleLED5") LED_CONTACTED Setting r2
and r2 r0 %11111111_00000000_00000000
sra r2 r2 16 # tier
sbn HASH("StructureConsoleLED5") LED_TIER Setting r2
and r2 r0 %11111111_00000000
sra r2 r2 8 # shuttle type
sbn HASH("StructureConsoleLED5") LED_SHUTTLE_TYPE Setting r2
j ShowLoop
MetaData3:
and r2 r0 %11111111_11111111_00000000
sra r2 r2 8 # watts to resolve
sbn HASH("StructureConsoleLED5") LED_WATT_TO_RESOLVE Setting r2
j ShowLoop
ThingData:
get r2 db prefabMemCursor # memory chip
sra r3 r0 16 # prefab hash
sbn SLM r2 Setting r3
add prefabMemCursor prefabMemCursor 1
j ShowLoop
GasData:
get r2 db gasMemCursor # memory chip
sra r3 r0 16
sbn SLM r2 Setting r3
add gasMemCursor gasMemCursor 1
j ShowLoop
ClearPrefabMem:
move sp prefabMemCursor
ClearPrefabMemLoop:
bge sp prefabMemCount ra
add sp sp 1
peek r0 # memory chip
sbn SLM r0 Setting -1
j ClearPrefabMemLoop
ClearGasMem:
move sp gasMemCursor
ClearGasMemLoop:
bge sp totalMemCount ra
add sp sp 1
peek r0 # memory chip
sbn SLM r0 Setting -1
j ClearGasMemLoop
Final: Now enable the Medium Satellite Dish, enable the Cargo LG IC Housing(the 2nd script should be running), add some power to the dish and rotate it somehow, then check the monitors and LEDs, You will see the items you can shop(trader will sell) from this trader.


