Actions

Talk

MIPS

From Unofficial Stationeers Wiki


Example code, moved because game changes made it obsolete or because they were unclear[edit]


This example script automates autohydro units and powers the lights off during the day when they're not needed. (Hit Expand)[edit]

Uses aliases, sub-routines and comments to minimize lines of code and adaptability.

alias vMature r0​
alias vOccupied r1​
alias isDayLight r2​
alias isOccupied r3​
alias dSensor d5​
​
​
#start of Program Loop​
start:​
l isDayLight dSensor Activate​  #Check if it's daytime or not.
​
# For each device, harvest, plant, powerdown, then power on depending on conditions.
alias dThisVictim d0​  #Begin processing device 0
bdseal dThisVictim HarvestCrop​
bdseal dThisVictim PlantCrop​
bgtzal isDayLight PowerDown​
blezal isDayLight TurnitOn​
alias dThisVictim d1​  #Begin processing device 1
bdseal dThisVictim HarvestCrop​
bdseal dThisVictim PlantCrop​
bgtzal isDayLight PowerDown​
blezal isDayLight TurnitOn​
alias dThisVictim d2​  #Begin processing device 2
bdseal dThisVictim HarvestCrop​
bdseal dThisVictim PlantCrop​
bgtzal isDayLight PowerDown​
blezal isDayLight TurnitOn​
alias dThisVictim d3​  #Begin processing device 3
bdseal dThisVictim HarvestCrop​
bdseal dThisVictim PlantCrop​
bgtzal isDayLight PowerDown​
blezal isDayLight TurnitOn​
alias dThisVictim d4​  #Begin processing device 4
bdseal dThisVictim HarvestCrop​
bdseal dThisVictim PlantCrop​
bgtzal isDayLight PowerDown​
blezal isDayLight TurnitOn​
#Can't do a D5 because that's our sensor.​
​
j start​ #Return to the beginning of the program loop.  (Yields here may save processing power)
​
​​
HarvestCrop:​
ls vMature dThisVictim 0 Mature​
blez vMature ra​  #If the crop is not mature, return
s dThisVictim Harvest 1​ #If the crop is mature, harvest it (one).
j ra​ #return
​

PlantCrop:​
ls vOccupied dThisVictim 2 Occupied #seeds to plant​
blez vOccupied ra​ #If the machine has no seeds to plant, return.
ls vOccupied dThisVictim 0 Occupied #something growin​g
bgtz vOccupied ra​  # If the crop plot is occupied, return.
s dThisVictim Plant 1​  # if we made it this far, plant the crop
j ra​ #return
​
​
​
PowerDown:​
s dThisVictim On 0​ #Power the machine down.
​
j ra #Jump to line we came from​
​
​
TurnitOn:​
s dThisVictim On 1​ #Power the machine up
j ra

##########
#### End Script
##########




This is a sample timer command set, alternating between 1 for 1 tick (0.5s), then off for 2 ticks (1s).

move r0 0		# Line 0: move the value 0 to register0
sub r1 r0 3		# Line 1: subtract 3 from the value in r0 and write it to r1
bltz r1 4		# Line 2: jump to line 4 if r1 < 0 (skip the next line)
move r0 0		# Line 3: move the value 0 to register0 
slt o r0 1		# Line 4: if r0 < 1 write 1 to the output, otherwise 0.
add r0 r0 1		# Line 5: increment r0 by 1
yield			# Line 6: wait until next power tick (0.5s)
j 1			# Line 7: jump back to line 1	

##########
#### End Script
##########

Example:

so you will do l r0 d0 SolarAngle
Sorry had last args swapped
That would read in the value
while,
s d1 Vertical r0
Would write the contents of r0 into the devices 1's Vertical property
additionally you can make some aliases
alias SolarSensor d0
l r0 SolarSensor SolarAngle

##########
#### End Script
##########

Another example:

Now the IC is inserted into the housing. The screws D0-D5 can be adjusted directly to the equipment (sensor, console, solar panel, etc.). The ports 'o' and 'i0-i2' have been removed. Instead, commands that directly read and write hardware parameters are added.
l <register> <data_channel> <parameter>
 reads the value of the parameter
s <data_channel> <parameter> <register_or_value>
 writes the value of the parameter
ls <register> <data_channel> <slot_number> <parameter> 
 reads the parameter value from the slot
For example, 
l r0 d0 Horizontal
 
s d5 Activate 1
 
ls r3 db 0 OccupantHash

##########
#### End Script
##########