#Early Game Power Systems Control v2 # by SemlerPDX Dec2025 define ActiveVents -1129453144 define SfcVentMars HASH("Active Vent SFC MARS") #Solid Fuel Chamber define SfcVentIn HASH("Active Vent SFC IN") #Solid Fuel Chamber define SfcVentOut HASH("Active Vent SFC OUT") #Solid Fuel Chamber define PipeHeaters -419758574 #gas define Generators 813146305 define Batteries -400115994 define SolarPanels -539224550 #basic #define SolarPanels -1545574413 #heavy define DaylightSensors 1076425094 define SensorOffset 90 # 0, 90, 180, 270 # Threshold for "dark" define IrradianceMin 1 define DawnVertical 165 define DawnHorizontal 180 define ChargeMin 0.10 # 10% define ChargeMax 0.50 # 50% define RatioMin 0.90 # 90% #1-Second Flip-Flip display (Historic Production and Draw) define TopOfStack 2 alias Counter r15 #Reset Max Historic on Export push 0 push 0 #Single-use instructions, uncommented and use-once as needed #sbn ActiveVents SfcVentMars Mode 1 # 1 == 1nward #sbn ActiveVents SfcVentIn Mode 1 # 1 == 1nward #sbn ActiveVents SfcVentOut Mode 0 # 0 == 0utward #yield #sbn ActiveVents SfcVentMars PressureInternal 1500 #kPa #sbn ActiveVents SfcVentIn PressureExternal 330 #kPa #sbn ActiveVents SfcVentOut PressureExternal 110 #kPa #yield #sbn ActiveVents SfcVentMars On 0 #sbn ActiveVents SfcVentIn On 1 #sbn ActiveVents SfcVentOut On 1 begin: move sp TopOfStack brgtz Counter 2 move Counter 5 start: beqz sp begin yield #Gather Power Data lb r0 Batteries PowerPotential Maximum get r1 db 0 brlt r0 r1 2 put db 0 r0 #maximum historic production lb r0 Batteries PowerActual Maximum mul r1 r0 2 sub r0 r0 r1 #Invert to Negative get r1 db 1 brgt r0 r1 2 put db 1 r0 #maximum historic power draw #Display Data sub Counter Counter 1 and r0 Counter 1 breqz r0 3 pop r0 s db Setting r0 #Backup Power Toggle lb r0 Batteries Ratio Average lb r1 Generators On Maximum select r1 r1 ChargeMax ChargeMin slt r0 r0 r1 sb Generators On r0 #Solar Pipe Heat when over N Ratio lb r0 Batteries Ratio Average sgt r0 r0 RatioMin sb PipeHeaters On r0 #Check Time of Day lb r0 DaylightSensors SolarIrradiance Maximum blt r0 IrradianceMin nightSleep #Follow Sun (in daytime only) lb r0 DaylightSensors Vertical Maximum lb r1 DaylightSensors Horizontal Maximum add r0 r0 SensorOffset add r1 r1 SensorOffset sb SolarPanels Vertical r0 sb SolarPanels Horizontal r1 j start nightSleep: #Point array at dawn sun sb SolarPanels Vertical DawnVertical sb SolarPanels Horizontal DawnHorizontal j start