alias switchmax r15 alias switchmin r14 alias doorstate r13 alias switchnamehash r12 alias doornamehash r11 alias doortypehash r10 alias memaddr r9 alias mem r8 define STATEADDR 60 define HASHSWITCH HASH("StructureLogicSwitch") define HASHGATE HASH("StructureAirlockGate") define HASHGATE2 HASH("StructureMediumHangerDoor") define HASHGATE3 HASH("StructureLargeHangerDoor") move switchmax 4 move switchmin 3 move doorstate 2 s db Setting 99 move doornamehash 0 start: alias gatefurnace d0 alias unused d1 alias gategas d2 alias gatecellar d3 yield move sp 0 # reset stack move memaddr STATEADDR alias door d0 move switchnamehash HASH("Gate Switch furnace") jal managedoor sub memaddr memaddr 1 move doornamehash HASH("north gate") move doortypehash HASHGATE2 move switchnamehash HASH("Gate Switch north") jal managedoor sub memaddr memaddr 1 move doornamehash HASH("south gate") move doortypehash HASHGATE2 move switchnamehash HASH("Gate Switch south") jal managedoor sub memaddr memaddr 1 move doornamehash HASH("ore gate") move doortypehash HASHGATE2 move switchnamehash HASH("Gate Switch ore") jal managedoor sub memaddr memaddr 1 move doornamehash HASH("rose gate") move doortypehash HASHGATE3 move switchnamehash HASH("gate switch rose") jal managedoor sub memaddr memaddr 1 move doornamehash HASH("lily gate") move doortypehash HASHGATE2 move switchnamehash HASH("gate switch lily") jal managedoor move doornamehash 0 sub memaddr memaddr 1 alias door d2 move switchnamehash HASH("Gate Switch gas") jal managedoor sub memaddr memaddr 1 alias door d3 move switchnamehash HASH("Gate Switch cellar") jal managedoor j start # managedoor: bnez doornamehash over1 bdns door ra over1: lbn switchmax HASHSWITCH switchnamehash Open Maximum lbn switchmin HASHSWITCH switchnamehash Open Minimum brnez doornamehash 3 l doorstate door Open jr 2 lbn doorstate doortypehash doornamehash Open Maximum bne switchmax switchmin toggle get mem db memaddr bne mem doorstate override snez r0 switchmax brnez doornamehash 3 s door Open r0 jr 2 sbn doortypehash doornamehash Open r0 put db memaddr r0 j ra toggle: seqz r0 doorstate brnez doornamehash 3 s door Open r0 jr 2 sbn doortypehash doornamehash Open r0 sbn HASHSWITCH switchnamehash Open r0 put db memaddr r0 j ra override: sbn HASHSWITCH switchnamehash Open doorstate put db memaddr doorstate j ra |
MIPS is the programming language used by IC (integrated circuits) in the game Stationeers. Stationeering web site has a MIPS emulator with syntax highlighting and error detection.