EXAPUNKS

EXAPUNKS

Not enough ratings
Dan's Exapunks Solutions
By Dan_TheGamerMan
A list of my solutions for every job in Exapunks, including code snippets and explanation videos
   
Award
Favorite
Favorited
Unfavorite
Introduction
Hi there. I'm Dan. I have a master's degree in computer science, and about 6 years as a developer. But honestly, that doesn't matter much; and this isn't a cooking recipe so I don't need to give my life story.

Exapunks is an Assembly-adjacent coding/puzzle game. Having coding knowledge is helpful, but the game does a good job of starting slow and building up in complexity. My video solutions will do the same, explaining basic coding instructions at the beginning, but barely looking at lines of code at the end and focusing on the approach.

Exapunks measures your solutions against three metrics:
  • Cycles. The amount of time it takes your code to run. Generally, it is one cycle per line of code, so shorter code blocks should have lower cycle counts. (This will not always be the case). The Cycles score for your solution will be based on the highest cycle count across the 100 test cases, not an average.
  • Size. The number of lines of code your solution takes. Pretty straightforward. All of the jobs have a limit on the number of lines. If your solution exceeds this number, you can still run and test your solutions, but your scores will not be submitted to the leaderboard until you get the size within the limitation.
  • Activity. The total number of LINK and KILL instructions executed. This one feels more arbitrary to me. There's no real penalty to higher LINK and KILL instruction counts, but if this is a metric you'd like to try minimizing, go for it.
Job #1 - Trash World News - Tutorial 1

Criteria

Your first coding job in Exapunks. Here are your objectives:

  • Move file 200 to the outbox.
  • Leave no trace.

The "Leave no trace" objective will be present in most jobs. This requires the following criteria:
  • All execution agents have been halted across the entire network.
  • No user-created files are present in any network except your local host (Rhizome), unless otherwise specified.
  • No existing files have been modified or moved, unless otherwise specified.
  • No NPC execution agents were terminated, unless otherwise specified.

Notes and Insights
  • You'll notice in my solution that I execute both a DROP and a HALT instruction. These are actually unnecessary. If we chop both of those instructions out, then once we've executed the second LINK, the agent will throw an error stating "OUT OF INSTRUCTIONS" and will terminate itself, dropping any files it's holding.

Code
LINK 800 GRAB 200 LINK 800 DROP HALT

Video Explanation
Note that this video explanation covers all 4 tutorial missions, not just the first one.
Job #2 - Trash World News - Tutorial 2

Criteria

The second job introduces manipulating files. This will be a very common thing you have to do, so try to understand how the F register works.

  • Append the correct value to the end of file 200.
  • Move file 200 to the outbox.
  • Leave no trace.

Notes and Insights
  • There might be a way to change the way we are reading the file to handle the arithmetic operations faster... Any ideas?

Code
LINK 800 GRAB 200 COPY F X ADDI X F X MULI X F X SUBI X F X COPY X F LINK 800
Job #3 - Trash World News - Tutorial 3

Criteria

The third job introduces using the M register to communicate between EXAs. This will also be a staple of your solutions, so learn it well.

  • Create the specified file in the outbox.
  • Delete file 199.
  • Leave no trace.

Notes and Insights
  • When an EXA tries to read or write from the M register, it will wait until there is something on the M register for it to read/write, potentially forever.
  • Looks like there might still be some room for improvement on this one as well... What can we do to minimize the amount of time XB is waiting to read from the M register?

Code
XA
LINK 800 LINK 799 GRAB 199 COPY F X COPY F M COPY X M WIPE HALT

XB
MAKE LINK 800 LINK 800 COPY M F COPY M F DROP HALT
Job #4 - Trash World News - Tutorial 4

Criteria

The final tutorial mission introduces the concept of loops. Loops are used when you have a repetitive task that needs to be performed. Since it's featured in the tutorial here, you can also assume that this concept will be vital.

  • Create the specified file in the outbox.
  • Delete file 200.
  • Leave no trace.

Notes and Insights
  • JUMP will always execute a jump to the specified marker. FJMP will only execute a jump if the T register equals 0. TJMP will only execute a jump if the T register is not 0.
  • In our solution here, you'll notice that we are counting down using the X register, and running both a TEST and FJMP function to determine when our loop ends. Perhaps there is a way to do this faster? Maybe with only the T register?

Code
LINK 800 GRAB 200 COPY F X WIPE MAKE MARK LOOP COPY X F SUBI X 1 X TEST X = -1 FJMP LOOP LINK 800
Job #5 - Euclid's Pizza - Order System

Criteria

Time for your first non-tutorial coding job! Your task is pretty simple: take your pizza order (located in file 300) and copy it over to the end of the order list (file 200). Your order is multiple strings long, so you will need to transmit multiple values from one file to another.

  • Append your order to the end of the order list.
  • Leave no trace.

Notes and Insights
  • To seek your file cursor to the beginning or end of the file reliably, you can run `SEEK -9999` or `SEEK 9999`.
  • While the order list seems to change between test cases, it seems like our pizza order is exactly the same for all 100 runs. Can this be leveraged somehow?

Code
XA
LINK 800 GRAB 200 LINK 800 DROP HALT

XB
GRAB 300 MARK LOOP COPY F M JUMP LOOP

Video Explanation
Job #6 - Mitsuzen HDI-10 - Left Arm

Criteria

Remember that part in the lore about how our body is slowly turning into useless circuitry? Well, it seems that one of our arms is acting up. But we can hack into this circuitry and make it behave the way our arm should. We need to bridge the gap between the Central Nervous System (CNS) and the nerve in our left arm.

  • Relay all nerve signals as indicated. (0/30)

Notes and Insights
  • This is your first job without the "Leave no trace" objective.

Code
XA
LINK 800 MARK LOOP COPY #NERV X TEST X > 50 FJMP COPY COPY 50 M JUMP LOOP MARK COPY COPY X M JUMP LOOP

XB
LINK 800 LINK 1 LINK 1 LINK 1 LINK 1 MARK LOOP COPY M X TEST X < -120 FJMP COPY COPY -120 #NERV JUMP LOOP MARK COPY COPY X #NERV JUMP LOOP

Video Explanation
Job #7 - Last Stop SnaxNet - Factory 11

Criteria

Ember wants us to remove the peanuts from the Peanut Blast recipe. Why? Only she knows, really. So we have to read through the ingredient list (file 237) and remove the word "PEANUTS" (found in file 300) from it.

  • Modify the recipe as described.
  • Leave no trace.

Notes and Insights
  • The recipe will change between test cases, so the word "PEANUTS" can be anywhere in the ingredient list.

Code
XA
LINK 800 LINK 800 GRAB 237 COPY M X MARK LOOP TEST F = X FJMP LOOP SEEK -1 VOID F

XB
GRAB 300 COPY F M

Video Explanation
Job #8 - Zebros Copies - Point-of-Sale System

Criteria

Ghast, the man behind the Zine, has let the group know that his debt to the copy shop is stopping him from continuing work on the magazine. Since we're practicing our hacking anyway, Ember wants us to do Ghast a favor and wipe out his debt. File 300 contains Ghast's customer ID at the shop. File 200 contains the current debts of each customer by ID. File 201 contains the list of transactions.

  • Zero out Ghast's balance.
  • Create a corresponding payment.
  • Leave no trace.

Notes and Insights
  • The current date can be found in the #DATE register of the CLOCK host.

Code
XA
LINK 800 GRAB 200 COPY M X MARK LOOP TEST F = X SEEK 2 FJMP LOOP SEEK -2 COPY F M COPY F M SEEK -2 COPY 0 F COPY 0 F

XB
GRAB 300 COPY F X COPY X M DROP LINK 800 LINK 801 COPY #DATE T LINK -1 GRAB 201 SEEK 9999 COPY T F COPY X F COPY M F COPY M F

Video Explanation
Job #9 - SFCTA Highway Sign #4902 - Remote Access Interface

Criteria

Ember has decided to test how she can influence the people in the world. She wants to start this by hacking an electronic highway sign to display various vague messages.

  • Write the message to the highway sign.
  • Leave no trace.

Notes and Insights
  • To clear the sign of its current display, you have to write a value to the #CLRS register.
  • Using the T-Loop trick is faster than using the X register, but there might be an even faster way to write the 9 characters for each row.

Code
XA
GRAB 300 MARK READ_FILE COPY F M JUMP READ_FILE

XB
LINK 800 COPY 1 #CLRS MARK NEXT_LINE COPY 9 T MARK WRITE_CHARACTER COPY X #DATA SUBI 9 T #DATA COPY M #DATA SUBI T 1 T TJMP WRITE_CHARACTER ADDI X 1 X TEST X = 3 FJMP NEXT_LINE

Video Explanation
Job #10 - Unknown Network 1 - Unknown Context

Criteria

Ember wants us to hack into a network and retrieve a file. She's being unusually evasive about the purpose of this file. I wonder if there's anything interesting we can snoop into.

  • Move file 276 to your host.
  • Leave no trace.

Notes and Insights
  • This will be your first job that uses the REPL command. Note that when you replicate an execution agent, the values in the registers will be copied over, but any held files will not be.
  • The agent holding file 276 can appear in any of the 8 hosts at the far end, so you will have to check all of the locations.
  • If an agent attempts to pick up a file and cannot (whether because it's already being held or doesn't exist), the agent will throw an error and terminate itself.

Code
XA
COPY 4 T MARK START REPL LEFT JUMP RIGHT MARK LEFT LINK 800 JUMP TEST MARK RIGHT LINK 801 MARK TEST SUBI T 1 T TJMP START KILL GRAB 276 LINK -1 LINK -1 LINK -1 LINK -1

Video Explanation
Job #11 - UC Berkeley - EECS Department

Criteria

There's another file Ember wants us to grab, but it was recently deleted. Thankfully, there exists a backup for us to retrieve for her.

  • Create the specified file in your host.
  • Leave no trace.

Notes and Insights
  • You can copy the name of your current host into a register using the HOST command.
  • You will have to travel counter-clockwise through the hosts, as the links are all one-way.
  • The entries in the 200 files are listed at the ends of the file. Maybe it would faster to search for that part starting at the end?

Code
XA
GRAB 300 COPY F M COPY F M DROP MAKE MARK LOOP COPY M T FJMP END COPY T F JUMP LOOP MARK END

XB
NOTE - GRAB HOST NAME COPY M X NOTE - SEARCH FOR HOST MARK LOOP LINK 800 HOST T TEST T = X FJMP LOOP NOTE - GRAB ENTRY COPY M X GRAB 200 NOTE - FIND ENTRY MARK LOOP2 TEST F = X FJMP LOOP2 NOTE - COPY LOCATION COPY F T COPY F X NOTE - SEEK TO LOCATION SEEK -9999 SEEK T COPY X T NOTE - SEND INFORMATION MARK LOOP3 COPY F M SUBI T 1 T TJMP LOOP3 COPY 0 M

Video Explanation
Job #12 - Workhouse - Work Management System

Criteria

Ember has been a little inhuman in her attempts to earn some money through the transcription service we had tried out at the beginning of the game. We'll need to go get her productivity down to more human-possible values.

  • Overwrite EMBER-2's user file as described.
  • Leave no trace.

Notes and Insights
  • Ember's username will always be NORMALHUMAN (subtle), but the file for her account in the USERS host will change every time.

Code
XA
NOTE GRAB EMBER'S NAME GRAB 300 COPY F X DROP NOTE FIND EMBER'S FILE LINK 800 GRAB 199 MARK LOOP TEST F = X SEEK 2 FJMP LOOP SEEK -1 COPY F X DROP NOTE GRAB EMBER'S FILE LINK 799 GRAB X NOTE ADJUST EMBER'S FILE SEEK 2 COPY 0 X NOTE ADD + UPDATE MARK LOOP2 ADDI X F X SUBI X 75 X SEEK -1 COPY 75 F TEST EOF FJMP LOOP2 NOTE APPEND EXTRA VALUES MARK LOOP3 COPY 75 F SUBI X 75 X TEST X < 75 FJMP LOOP3 TEST X > 0 FJMP END COPY X F MARK END DROP

Video Explanation
Job #13 - Equity First Bank - San Francisco

Criteria

Ember wants us to hack into a bank's systems and cause the ATMs to start shooting out their money. Sounds like fun, I'm in.

  • Dispense all available cash from all ATMs. (0/X)
  • Leave no trace.

Notes and Insights
  • The number of ATMs varies from 1 to 7, and can be placed on any of the links 800-806 in the long host at the back.
  • The #CASH register contains the total number of bills left, not the total value inside the ATM.
  • You can dispense a single 20 dollar bill by writing 20 to the #DISP register.
  • If you try to dispense another bill from an ATM when there are none left, you will fail the "Leave no trace" objective.

Code
XA
LINK 800 LINK 800 LINK 800 COPY 800 X COPY 6 T MARK CLONE REPL MOVE_IN ADDI X 1 X SUBI T 1 T TJMP CLONE MARK MOVE_IN LINK X COPY #CASH T MARK DISPENSE COPY 20 #DISP SUBI T 1 T TJMP DISPENSE

Video Explanation
Job #14 - Mitsuzen HDI-10 - Heart

Criteria

Back to that thing about slowly dying. Now our heart is starting to have some palpitations. Luckily, we can create our own makeshift pacemaker.

  • Generate all nerve signals as indicated. (0/60)

Notes and Insights
  • The SA-N and AV-N nerves are real nerves that keep your heart functioning. SA-N stands for "Sinoatrial Node" and AV-N stands for "Atrioventricular Node." They also behave similarly in our bodies, where the AV-N gets a delayed signal to make sure the SA-N has performed its contraction first.
  • The goal on this one is a little confusing. If the CNS produces a value of, say -42, divide that value by -10 to get 4. You would then want to output 4 values [40, -70, -70, -70] to the SA-N and 4 values [-70, 40, -70, -70] to the AV-N. Note that the values 40 and -70 are constant, the only thing that should be changing is how many values you put out total before reading from the CNS again.
  • This is another job that does not require the Leave no Trace objective.

Code
XA
LINK 800 MARK LOOP COPY #NERV X DIVI X -10 X SUBI X 2 M SUBI X 2 M JUMP LOOP

XB
LINK 800 LINK 1 LINK 1 MARK LOOP COPY M T COPY 40 #NERV COPY -70 #NERV MARK LOOP2 SUBI T 1 T COPY -70 #NERV TJMP LOOP2 JUMP LOOP

XC
LINK 800 LINK 3 LINK 3 MARK LOOP COPY M T COPY -70 #NERV COPY 40 #NERV MARK LOOP2 SUBI T 1 T COPY -70 #NERV TJMP LOOP2 JUMP LOOP

Video Explanation
Job #15 - Trash World News - Unknown Context

Criteria

Somebody's trying to tip Ghast off about Ember's existence. We're just gonna have to alter the message a bit to be a bit more conspiratorial, and therefore a bit more easily disregarded.

  • Find and replace the keywords in the target file.
  • Move file 200 to the outbox.
  • Leave no trace.

Notes and Insights
  • For being a separate sandbox Ghast set up for tutorials, it seems silly there's any connection at all to his actual machine.

Code
XA
NOTE GRAB THE FILE LINK 800 LINK 799 GRAB 212 MARK LOOP COPY M X MARK LOOP2 TEST F = X FJMP LOOP2 SEEK -1 COPY M F SEEK -9999 NOOP TEST MRD TJMP LOOP

XB
GRAB 300 MARK LOOP COPY F M TEST EOF FJMP LOOP

XC
NOOP LINK 800 GRAB 200 LINK 800

Video Explanation
Job #16 - KGOG-TV - Programming Hub

Criteria

Welcome to the first hacker battle. Mutex is your opponent, and he's not bringing his A-game. In a battle, you will challenge your opponent to 100 rounds, and your final score is based on how many of those rounds you win.

  • Gain one point every cycle for each of your movies that is playing (files 210 and 211).
  • Lose one point every cycle that a movie file that isn't yours (files 230, 231, and 265) is held by an EXA you control or is sitting in your host.
  • Lose one point every time one of your EXAs executes a KILL instruction.

Notes and Insights
  • Mutex's bot is incredibly dumb and simple to beat. You don't have to over-engineer this solution if your only goal is to beat him.
  • If you have any Steam friends that also play Exapunks, you can challenge them in these battles by clicking the SELECT OPPONENT button on the opponent's host.

Code
XA
LINK 800 GRAB 210 LINK 809 DROP LINK -1 GRAB 211 LINK 828 DROP

XB
LINK 800 MARK LOOP LINK 809 REPL REMOVER LINK -1 LINK 828 VOID M REPL REMOVER LINK -1 LINK 867 VOID M REPL REMOVER LINK -1 VOID M JUMP LOOP MARK REMOVER COPY 230 X REPL WIPER COPY 231 X REPL WIPER COPY 265 X REPL WIPER COPY 1 M MARK WIPER GRAB X LINK -1

Video Explanation
Job #17 - TEC RedShift™ - Development Kit

Criteria

Ghast dropped off a handheld console, along with a kit for connecting to it for development. Seems like a thank-you for what we've done for him, even if we didn't tell him it was us. Problem is, we'll need to hack it in order to find the password to unlock it.

  • Create the specified file in your host.
  • Leave no trace.

Notes and Insights
  • There is no indicator that a link has been opened successfully, so you will have to try and perform a link. Problem is, if the link fails, the agent that tries it will be terminated. So you will have to use replication to test when you've gained access.
  • The link into the TEC will be 800 once it's been opened. The link out will be -1.

Code
XA
LINK 800 MARK LOOP SWIZ X 3 #PASS SWIZ X 2 #PASS SWIZ X 1 #PASS ADDI X 1 X JUMP LOOP

XB
LINK 800 SUBI X 1 X MARK TESTER NOOP NOOP NOOP ADDI X 1 X REPL TESTER LINK 800 LINK -1 KILL KILL LINK 800 GRAB 199 COPY F T DROP LINK -1 LINK -1 MAKE SWIZ X 3 F SWIZ X 2 F SWIZ X 1 F COPY T F

Video Explanation
Job #18 - Digital Library Project - Patron Access System

Criteria

Ember wants to a bit of light reading, and sends us into the Digital Library Project to copy a few books over for her perusal.

  • Create the specified files in your host. (0/X)
  • Leave no trace.

Notes and Insights
  • This will be your first job that encourages the use of Local M-register communication. Two EXAs that are in Local communication mode must be in the same host to recognize each other. An EXA that is in Global mode can only hear other EXAs in Global mode, even if they are in the same host as Local mode EXAs.
  • The number of files required changes with each job.
  • Ember will not request more than one file from the same host, so do not worry about clashes in that regard.
  • Use the 800 Link to go forward in the network, and -1 to go backward. The links aren't labeled directly.

Code
XA
GRAB 300 LINK 800 MODE MARK DEPLOY COPY F X SWIZ X 3 T SWIZ X 21 X ADDI X 200 X REPL SEEKER TEST EOF FJMP DEPLOY WIPE HALT MARK SEEKER LINK 800 SUBI T 1 T TJMP SEEKER REPL WRITER GRAB X MARK READER COPY F M TEST EOF COPY T M FJMP READER HALT MARK WRITER MAKE MARK WRITER2 COPY M F COPY M T FJMP WRITER2 MARK RETURN LINK -1 JUMP RETURN

Video Explanation
Job #19 - TEC EXA-Blaster™ Modem - Radio Stations

Criteria

Ember's getting a little smarter about how to try and influence people. This time, she wants to see if she can artificially inflate a song's popularity by forcing the radio stations to play it on repeat. Something tells me this will probably work, too.

  • Replace every song in each playlist. (0/8)
  • Leave no trace.

Notes and Insights
  • This will be the first of multiple jobs that has you using the EXA-Blaster to dial phone numbers. Phone numbers are 11 digits long. If you dial a valid phone number, a link with ID 800/-1 will appear to the related host. You will then have to send -1 to the #DIAL register to close the connection before dialing a new phone number.

Code
XA
GRAB 301 LINK 800 MARK NEXT_NUMBER COPY 11 T MARK DIAL COPY F #DIAL SUBI T 1 T TJMP DIAL COPY 1 M COPY -1 #DIAL TEST EOF FJMP NEXT_NUMBER LINK -1

XB
GRAB 300 COPY F X COPY F T DROP LINK 800 @REP 7 REPL OVERWRITE @END MARK OVERWRITE VOID M LINK 800 GRAB 200 MARK OVERWRITE2 COPY X F COPY T F TEST EOF TJMP DONE SEEK -1 COPY F T JUMP OVERWRITE2 MARK DONE

Video Explanation
Job #20 - Emerson's Guide - Streetsmarts GIS Database

Criteria

In her tests to see how to influence people, Ember decides to fuss with an online restaurant guide to turn a disliked restaurant into one of the most heralded and well-reviewed ones online, just to see how people will react.

  • Change the restaurant's rating to five stars.
  • Leave no trace.

Notes and Insights
  • This is the first job with a geographic link system. Notice the compass rose next to the hosts. This indicates the link IDs to move in the corresponding directions. So to move east, you will link on 801. For south, you will link on 802, etc.
  • You will need the star keyword to change the rating. You should plan to grab the character from the Last Stop's current one-star rating.

Code
XA
LINK 800 COPY M T FJMP NORTHSOUTH MARK EAST LINK 801 SUBI T 1 T TJMP EAST MARK NORTHSOUTH COPY M X COPY M T FJMP ENDMOVEMENT MARK MOVENORTHSOUTH LINK X SUBI T 1 T TJMP MOVENORTHSOUTH MARK ENDMOVEMENT GRAB 200 COPY M X MARK READ TEST F = X SEEK 5 FJMP READ SEEK -5 COPY F X @REP 4 COPY X F @END

XB
GRAB 300 SEEK 1 NOTE EAST MOVES COPY F M NOTE NORTH/SOUTH MOVES COPY F X TEST X < 0 TJMP SOUTH COPY 800 M COPY X M JUMP CONTINUE MARK SOUTH COPY 802 M SWIZ X -1 M MARK CONTINUE NOTE RESTAURANT NAME SEEK -9999 COPY F M

Video Explanation
Job #21 - Valhalla - =plastered

Criteria

The next hacker, =plastered, has issued you a challenge. It's time to answer it. =plastered will put up more of a fight than Mutex did, but this battle shouldn't be much of a sweat.

  • Gain one point every cycle you control more hosts than your opponent.
  • Lose one point every time one of your EXAs executes a KILL instruction.

Notes and Insights
  • =plastered will actually run a bit of a loop in his code this time, so a one-and-done approach won't work.
  • Take note of your Storage Limit. This dictates how many EXAs you are allowed to have in the network.
  • Note the LINK map on the bottom. The map is shaped like a big S. Linking on -1 will take you closer to the bottom of the S, while linking on 800 will take you to the top.

Code
XA
LINK 800 LINK -1 COPY 8 T MARK TAKE_OVER REPL WRITER LINK 800 SUBI T 1 T TJMP TAKE_OVER MARK WRITER COPY 1 #CTRL JUMP WRITER

Video Explanation
Job #22 - Mitsuzen HDI-10 - Left Hand

Criteria

The Phage is back again, this time messing with one of our hands. We need that hand to keep on coding our hacker bots, so we'll need to get that sorted out before we're no longer able to keep going.

  • Relay all nerve signals as indicated. (0/42)

Notes and Insights
  • This will be your first big test with timing global M-register communication. Think carefully about how to make sure the right information is going to the right nerves.

Code
XA
LINK 800 LINK 3 LINK 3 REPL WRITER LINK 3 REPL READER LINK 3 NOOP MARK READER COPY #NERV M NOOP NOOP NOOP JUMP READER MARK WRITER COPY M #NERV NOOP NOOP NOOP JUMP WRITER

XB
LINK 800 NOOP LINK -3 LINK -3 REPL READER LINK -3 REPL WRITER LINK -3 NOOP MARK WRITER COPY M #NERV NOOP NOOP NOOP JUMP WRITER MARK READER COPY #NERV M NOOP NOOP NOOP JUMP READER

Video Explanation
Job #23 - Sawayama WonderDisc - Drive Controller

Criteria

Isadora dropped off a video game console for us to tinker with. The only problem is that it's region-locked and doesn't work with the games we have on hand. Sounds like a job for the hacker-man.

  • Copy the requested files to the buffer. (0/30)

Notes and Insights
  • The code you need to unlock the disc drive is hard-coded, and can be found in the corresponding article in the Zine.
  • The length of each disc file changes, but they do all appear to be in batches of six values. This might be useful for trying to minimize cycle usage.

Code
XA
GRAB 300 COPY F X DROP LINK 800 COPY 8 #AUTH COPY 0 #AUTH COPY 3 #AUTH COPY 2 #AUTH COPY 7 #AUTH COPY 1 #AUTH COPY 0 #AUTH COPY 4 #AUTH COPY 9 #AUTH COPY 5 #AUTH COPY 1 #AUTH COPY 2 #AUTH COPY 5 #AUTH COPY 2 #AUTH COPY 6 #AUTH MARK READER COPY #TRAK T LINK 801 GRAB T MARK READ_FILE TEST F > -9999 FJMP REPLACE SEEK -1 COPY F M JUMP TEST MARK REPLACE COPY X M MARK TEST TEST EOF FJMP READ_FILE COPY 0 M DROP LINK -1 JUMP READER

XB
LINK 800 LINK 800 MARK WRITER MAKE MARK WRITELOOP COPY M X COPY X T FJMP FINISH COPY X F JUMP WRITELOOP MARK FINISH DROP JUMP WRITER

Video Explanation
Job #24 - Alliance Power and Light - StreetSmarts GIS Database

Criteria

Nivas has some people that are going to try and pull off a heist of some pharmaceuticals, including the medication we need to stave off the effects of the Phage. She said if we help with a little bit of a power cut, we'll find ourselves with some of the loot from the job.

  • Cut the power to the target substations. (0/2)
  • Leave no trace.

Notes and Insights
  • When you cut off power to a substation, all links to it will become inaccessible. Take this into consideration, especially for cases where the first station outside of your host is one that needs to be cut.

Code
XA
GRAB 300 COPY F X REPL GO COPY F X DROP MARK GO LINK 800 MARK HEAD_EAST REPL SPIDER_NORTH REPL SPIDER_SOUTH LINK 801 JUMP HEAD_EAST MARK SPIDER_NORTH LINK 800 LINK 800 REPL CHECKER LINK 802 REPL CHECKER LINK 802 JUMP CHECKER MARK SPIDER_SOUTH LINK 802 LINK 802 REPL CHECKER LINK 800 REPL CHECKER LINK 800 JUMP CHECKER MARK CHECKER HOST T TEST T = X FJMP HALT COPY 0 #POWR MARK HALT

Video Explanation
Job #25 - Deadlock's Domain - deadlock

Criteria

It's time for the third hacker battle. This time, deadlock wants a go. The task this time around is to grab files and bring them back to your host.

  • Gain one point for every file you bring back to your host.
  • Lose one point every time one of your EXAs executes a KILL instruction.

Notes and Insights
  • You only have a storage limit of 3 this time around. There also happen to be three hosts that are producing files.
  • deadlock's manager EXA is just kinda sitting there in his backstage... exposed. Just saying.

Code
XA
LINK 800 MARK LOOP COPY 800 X REPL GO COPY 801 X REPL GO COPY 802 X REPL GO JUMP LOOP MARK GO LINK X GRAB #FILE LINK -1 LINK -1

Video Explanation
Job #26 - Xtreme League Baseball - Player Database

Criteria

Ember's got a new scheme for earning some money. She wants to bet on an extreme baseball league using her own algorithm for calculating the best player. Just like everyone else who tries to use statistical algorithms to predict the outcomes of sports games, I am sure this is going to work out swimmingly.

  • Create the specified file in your host.
  • Leave no trace.

Notes and Insights
  • Hope you've got your order of operations down for this one (PEMDAS, in case you forgot).
  • Thankfully the values in the formula appear in the same order as in the files, making the calculation a fair bit easier.
  • Players in the penalty host should be ignored, as they are banned from playing the game.

Code
XA
LINK 800 GRAB 199 MARK LOOP ADDI X 1 X REPL CALCULATE COPY F M TEST EOF FJMP LOOP DROP MAKE COPY 0 F COPY 0 F MARK NEXT_PLAYER TEST X = 0 TJMP DONE SUBI X 1 X MODE COPY 1 M MODE SEEK -9999 TEST M > F TJMP NEW_BEST_PLAYER VOID M VOID M JUMP NEXT_PLAYER MARK NEW_BEST_PLAYER SEEK -1 COPY M F COPY M F JUMP NEXT_PLAYER MARK DONE SEEK -9999 LINK -1 VOID F HALT MARK CALCULATE GRAB M MODE SEEK 1 ADDI F F X ADDI F X X DIVI X 3 X MULI F F T DIVI T F T ADDI X T X SUBI F F T MULI T 20 T ADDI X T X SEEK -9999 COPY F T VOID M MODE COPY X M COPY X M COPY T M

Video Explanation
Job #27 - King's Ransom Online - US West Realm

Criteria

Another scheme from Ember to earn some money, she wants us to hack into an online MMO, forcibly disconnect all of the players, and then reset ownership of their assets so that she can sweep in and steal them to sell on a marketplace. I'm sure online gamers won't throw a huge fit when this happens.

  • Terminate all other EXAs. (0/X)
  • Clear the ownership of each building. (0/X)
  • Leave no trace.

Notes and Insights
  • You will have to clear all players out before changing any files, otherwise you will fail the "Leave no trace" objective.
  • Any buildings you take might have sub-buildings you will also need to take. Each file is structured as follows: NAME, TYPE, OWNER, SUB_BUILDING_1_FILE_ID, SUB_BUILDING_2_FILE_ID, ...

Code
XA
GRAB 300 COPY F X DROP NOTE DEPLOY KILLERS LINK 800 @REP 6 COPY @{800,1} T REPL KILLER @END JUMP DEPLOY_WRITERS MARK KILLER LINK T @REP 3 KILL @END JUMP WRITER MARK DEPLOY_WRITERS @REP 6 COPY 1 M @END HALT MARK WRITER GRAB 200 VOID M JUMP OVERWRITE MARK SUBWRITER GRAB T MARK OVERWRITE SEEK 2 COPY X F MARK ITERATE COPY F T REPL SUBWRITER JUMP ITERATE MARK ENDLOOP

Video Explanation
Job #28 - KGOG-TV - Satellite Uplink

Criteria

Ember's back to trying to influence the people. She's put together an art piece that she wants to broadcast on television, and asks us to help override a satellite to do so.

  • Align the satellite dish with the target satellite.
  • Encrypt and transmit EMBER-2's video data.
  • Leave no trace.

Notes and Insights
  • You will have to align the satellite first, otherwise the data will not reach its destination.
  • The azimuth and elevation have to be set by moving the motors, which will only move a single degree at a time by writing a positive or negative value to the #MOTR registers.
  • Your data needs to be encrypted using file 199. You add the first value of your data to the first value of the encryption key and keep only the last 4 digits. Your registers only have a 4-digit limit, so you will have to figure out how to add these two large numbers together.
  • If there are more values in your data than there are in the encryption key, loop back to the beginning of the encryption key and continue.

Code
XA
GRAB 300 LINK 800 LINK 799 SEEK 1 COPY F X REPL AZIMUTH SEEK 1 COPY F X REPL ELEVATION SEEK 1 COPY F X WIPE COPY X #FREQ HALT MARK AZIMUTH LINK 800 SUBI X #AZIM X JUMP SET_MOTOR MARK ELEVATION LINK 801 SUBI X #ELEV X JUMP SET_MOTOR MARK SET_MOTOR TEST X > 0 TJMP SET_ITERATIONS COPY -1 T MARK SET_ITERATIONS MULI T X T MARK MOVE_MOTOR COPY X #MOTR SUBI T 1 T TJMP MOVE_MOTOR

XB
GRAB 301 SEEK 1 LINK 800 MARK LOOP COPY F X SWIZ X 321 T SWIZ X 4 X ADDI M T T ADDI M X X MODI X 10 X MULI X 1000 X SEEK -1 ADDI X T F TEST EOF FJMP LOOP KILL LINK 799 SEEK -9999 MARK TRANSMIT COPY F #DATA TEST EOF FJMP TRANSMIT WIPE

XC
LINK 800 GRAB 199 MARK LOOP COPY F X SWIZ X 321 M SWIZ X 4 M TEST EOF FJMP LOOP SEEK -9999 JUMP LOOP

Video Explanation
Job #29 - Equity First Bank - San Francisco - ATMs Offline

Criteria

Each attempt at garnering some cash so far hasn't panned out. So Ember's decided to be a bit more direct, and wants to skim a small amount of money from numerous accounts into her own. Pretty bold, not gonna lie.

  • Install EMBER-2's account file.
  • Deposit money into EMBER-2's account.
  • Withdraw money from other accounts. (0/X)
  • Leave no trace.

Notes and Insights
  • Aw gee, I wonder why the ATMs are all offline?

Code
XA
GRAB 300 LINK 800 COPY M X LINK 800 MODE COPY F T SEEK 9999 MARK LOOP COPY M F COPY T M COPY X F COPY 1 F COPY 0 F JUMP LOOP

XB
GRAB 301 COPY F M COPY F M

XC
LINK 800 LINK 800 GRAB 199 COPY M X MARK LOOP COPY F T REPL WITHDRAW COPY 3 T MARK WAIT SUBI T 1 T TJMP WAIT TEST EOF FJMP LOOP COPY 300 F KILL HALT MARK WITHDRAW MODE GRAB T COPY F M SEEK 9999 COPY M F COPY X F COPY 1 F COPY 0 F

Video Explanation
Job #30 - The Wormhole - x10x10x

Criteria

Another day, another hacker battle. x10x10x wants his turn at you. The challenge this time is to flood the network with as many EXAs as you can, as fast as possible.

  • Gain one point for every EXA you control in the network at the end of the battle.
  • Lose one point every time one of your EXAs executes a KILL instruction.

Notes and Insights
  • The link IDs are all Fibonacci sequence values. Not that that really helps anything with the problem, just a mildly interesting factoid.
  • It's possible that some hosts will be blocked off for both you an x10x10x if the connecting hosts fill up with EXAs that aren't going anywhere.

Code
XA
LINK 800 REPL SPIDER2 MARK SPIDER1 REPL EXPLORE2 REPL EXPLORE3 REPL EXPLORE5 REPL CLONE MARK SPIDER2 REPL EXPLORE7 REPL EXPLORE11 REPL EXPLORE13 REPL CLONE MARK CLONE JUMP CLONE MARK EXPLORE2 LINK 2 REPL SPIDER1 JUMP SPIDER2 MARK EXPLORE3 LINK 3 REPL SPIDER1 JUMP SPIDER2 MARK EXPLORE5 LINK 5 REPL SPIDER1 JUMP SPIDER2 MARK EXPLORE7 LINK 7 REPL SPIDER1 JUMP SPIDER2 MARK EXPLORE11 LINK 11 REPL SPIDER1 JUMP SPIDER2 MARK EXPLORE13 LINK 13 REPL SPIDER1 JUMP SPIDER2

Video Explanation
Job #31 - TEC EXA-Blaster™ Modem - Dataphone Network

Criteria

Ember's been getting a bit more knowledgeable as she's gathered data, but she says she needs more processing power to gain a better understanding. She wants us to connect her to the thousands of dataphones out there to hijack their CPUs.

  • Connect to each dataphone. (0/8)
  • Leave no trace.

Notes and Insights
  • Each dataphone will contain one or more numbers. It's possible that none of those numbers are valid for a given dataphone (except the first one). Make sure you keep track of all the numbers and don't count on dataphone #4 always giving you the number for dataphone #5.
  • Once you connect to the 8th dataphone, you don't need to transmit or dial any more numbers, your objective has been completed.

Code
XA
GRAB 300 LINK 800 MARK NEXT_NUMBER COPY -1 #DIAL @REP 11 COPY F #DIAL @END REPL TESTER ADDI X 1 X TEST MRD FJMP NEXT_NUMBER ADDI X 100 X TEST X > 800 TJMP DONE VOID M MARK WRITE_NUMBER SEEK 9999 @REP 11 COPY M F @END COPY M T FJMP WRITE_NUMBER SEEK -9999 SWIZ X 21 T MULI T 11 T SEEK T JUMP NEXT_NUMBER MARK DONE WIPE LINK 800 KILL HALT MARK TESTER LINK 800 COPY 1 M GRAB 200 MARK READ_NUMBER SEEK 1 @REP 11 COPY F M @END TEST EOF COPY T M FJMP READ_NUMBER

Video Explanation
Job #32 - Last Stop SnaxNet - Warehouse 27

Criteria

I don't think a convenience store-based cult trying to detonate the entire city with a nuke was on my bingo card for this year... Goes without saying we should do something about it, yeah?

  • Disable the regulators in the correct order. (0/5)
  • Leave no trace.

Notes and Insights
  • Once you defuse the first regulator, the value in the defused regulator's register goes to 0, and the remaining regulators will increase to new values. There is no guarantee that the 2nd-highest regulator will become the new highest after this increase.
  • It seems like the hundreds-place digit of the pressures can be used to determine how many regulators have been disabled...

Code
XA
LINK 800 LINK 799 MARK FIND_HIGHEST TEST #ZGC0 < #ZGC1 TJMP ONE MULI #ZGC0 10 X JUMP TWO MARK ONE MULI #ZGC1 10 X ADDI X 1 X MARK TWO MULI #ZGC2 10 T TEST X < T FJMP THREE MULI #ZGC2 10 X ADDI X 2 X MARK THREE MULI #ZGC3 10 T TEST X < T FJMP FOUR MULI #ZGC3 10 X ADDI X 3 X MARK FOUR MULI #ZGC4 10 T TEST X < T FJMP DEPLOY MULI #ZGC4 10 X ADDI X 4 X MARK DEPLOY REPL DEFUSE TEST X > 5000 VOID M FJMP FIND_HIGHEST HALT MARK DEFUSE LINK -1 LINK 798 SWIZ X 1 T FJMP POWER_DOWN MARK MOVE LINK 800 SUBI T 1 T TJMP MOVE MARK POWER_DOWN COPY 0 #POWR COPY 1 M

Video Explanation
Job #33 - Mitsuzen HDI-10 - Visual Cortex

Criteria

The Phage is back, and this time it's affected the part of our brain used to process visual imagery. Something tells me we need to be able to see still, so we'd better fix that up real quick.

  • Generate all nerve signals as indicated. (0/30)

Notes and Insights
  • This job is all about timing, and handling communicating from numerous EXAs in batches without overlapping.

Code
XA
LINK 800 REPL EASTER LINK 1 REPL EASTER LINK 1 MARK EASTER REPL REPORTER LINK -3 JUMP EASTER MARK REPORTER TEST #NERV > -55 MULI T 5 M @REP 9 NOOP @END JUMP REPORTER

XB
LINK 800 LINK 1 LINK 3 MARK AGGREGATE @REP 9 ADDI X M X @END SUBI X 75 #NERV COPY 0 X JUMP AGGREGATE

Video Explanation
Job #34 - Holman Dynamics - Sales System

Criteria

Time to scrape some credit card numbers. They were deleted and sent to the garbage collector, but we can reconstruct the numbers from the garbage data to use for ourselves.

  • Create the specified file in your host.
  • Leave no trace.

Notes and Insights
  • The algorithm used here to validate a credit number as legitimate is based on the real-life Luhn algorithm, which is used for the same purpose.
  • You know that a valid credit card number won't contain the -9999 value, so if you see that you can assume that you need to empty out any number sequences you're currently holding.

Code
XA
LINK 800 LINK 802 LINK 799 GRAB 199 MARK LOOP COPY F M JUMP LOOP

XB
MAKE MARK START_COUNTING SEEK -9999 COPY 16 X MARK READ_NUMBERS COPY M F SEEK -1 TEST F = -9999 TJMP START_COUNTING SUBI X 1 X TEST X = 0 FJMP READ_NUMBERS SEEK -9999 MARK CALCULATE TEST F < 5 SEEK -1 FJMP OVER_9 MULI F 2 T JUMP EVEN MARK OVER_9 MULI F 2 T SUBI T 9 T MARK EVEN ADDI T X X ADDI F X X TEST EOF FJMP CALCULATE MODI X 10 T FJMP HALT SEEK -9999 VOID F SEEK 9999 COPY 1 X JUMP READ_NUMBERS MARK HALT DROP LINK 800 LINK 802 LINK 799 KILL

Video Explanation
Job #35 - Aberdeen - selenium_wolf

Criteria

It's time for the final hacker battle. Your opponent this time is the moderator of the Exapunks chat, selenium_wolf. This one will require a bit of strategy, as you need to occupy more hosts than your opponent, but you are limited by the storage limit, and there's a battleground in the middle which allows you to destroy other EXAs inside it without penalty.

  • Gain one point every cycle you occupy more hosts than your opponent.
  • Lose one point every time one of your EXAs executes a KILL command.

Notes and Insights
  • There are exactly 9 hosts. You only need to hold 5 of them to win...
  • There are two single-cell hosts. Whoever gets there first keeps them. You cannot beat selenium_wolf to the one near him, so make sure he doesn't beat you to the one near you.

Code
XA
LINK 800 LINK 801 LINK 799 MARK IDLE JUMP IDLE

XB
LINK 800 REPL 802 REPL 801 REPL 802 REPL 801 JUMP IDLE MARK 802 LINK 802 REPL 800 JUMP IDLE MARK 801 LINK 801 REPL 800 JUMP IDLE MARK 800 LINK 800 REPL 800 MARK IDLE JUMP IDLE

Video Explanation
Job #36 - U.S. Government - FEMA Genetic Database

Criteria

Ember's next scheme is completely out there. She wants us to hack into the U.S. government's centralized DNA database and overwrite some data in there to frame it to appear that the president's son is a genetic clone of himself. Don't ask her why, she'll just say it's an experiment.

  • Modify the target files as specified. (0/X)
  • Leave no trace.

Notes and Insights
  • File 200 in Drive-1 contains the directory of information. This will be the first file you need to read.
  • The data is kept in 10-value chunks. In the directory, there are a series of 3-digit values that tell you where to find a chunk. The hundreds-place dictates which drive. The tens-place which file it is. The ones-place the offset (times 10). So 539 means there is a chunk located in Drive-5, file 203, offset 90 values into the file.
  • Because you might need to overwrite two chunks that are within the same file, you cannot easily handle reading and writing simultaneously.

Code
XA
GRAB 300 COPY F X LINK 800 DROP LINK 801 GRAB 200 MARK FIND_NAME TEST F = X TJMP SEND_CHUNKS SEEK 10 JUMP FIND_NAME MARK SEND_CHUNKS COPY 10 T MARK READ_DNA COPY F X SWIZ X 3 M SWIZ X 2 M SWIZ X 1 M SUBI T 1 T COPY T M TJMP READ_DNA DROP LINK -1 GRAB 300 SEEK 1 COPY F X WIPE LINK 801 GRAB 200 JUMP FIND_NAME

XB
LINK 800 MAKE MARK FETCH_CHUNK ADDI 800 M X LINK X ADDI 200 M X MULI M 10 T REPL READER COPY M T MODE @REP 10 COPY M F @END MODE LINK -1 FJMP OVERWRITE_MODE JUMP FETCH_CHUNK MARK READER MODE GRAB X SEEK T @REP 10 COPY F M @END HALT MARK OVERWRITE_MODE SEEK -9999 MARK FIND_CHUNK ADDI 800 M X LINK X ADDI 200 M X MULI M 10 T REPL WRITER COPY M T MODE @REP 10 COPY F M @END MODE LINK -1 FJMP FINISH JUMP FIND_CHUNK MARK WRITER MODE GRAB X SEEK T @REP 10 COPY M F @END HALT MARK FINISH WIPE

Video Explanation
Job #37 - Unknown Network 2 - Unknown Context

Criteria

Ember wants us to hack into another unknown Russian network and retrieve some files. This time the files seem decently guarded, but Ember doesn't expect that to stop us.

  • Terminate all other EXAs. (0/14)
  • Move all files held by EXAs to your host. (0/X)
  • Leave no trace.

Notes and Insights
  • The number of files to bring back can be anywhere from 1 to 6. They will all be held by the six EXAs in the central host.
  • You have no way of knowing the ID of a dropped file, so you will have to search for them. They will be between 200 and 299 (inclusive).
  • EXAs in the outer hosts are hostile. If you KILL one, the other will retaliate with a KILL instruction of its own. Additionally, if you kill the EXAs in one of the hosts, the links to that host will close. You will have to terminate these EXAs after retrieving all of the files.

Code
XA
@REP 5 LINK 800 @END @REP 6 KILL @END COPY 20 T COPY 200 X @REP 4 REPL SCAVENGE ADDI X 20 X @END MARK SCAVENGE REPL FILE_GRABBER SUBI T 1 T ADDI X 1 X TJMP SCAVENGE TEST X = 300 FJMP HALT @REP 3 LINK -1 REPL KILLER @END LINK -1 MARK KILLER KILL KILL MARK FILE_GRABBER GRAB X @REP 5 LINK -1 @END MARK HALT

Video Explanation
Job #38 - TEC EXA-Blaster™ Modem - Pager Network

Criteria

Ember's going to try sending out another inspirational message to wake the people up. Only this time, she wants to deliver it to all of the pagers she can, at the exact same moment. This would be a lot easier if she didn't add that last criterion.

  • Write the message to each pager's display. (0/8)
  • Activate every pager in the same cycle.
  • Leave no trace.

Notes and Insights
  • You cannot send out a global signal to send out the message on the same cycle, so think about how you can coordinate 8 EXAs in disconnected networks to execute something on the same cycle.
  • The length of Ember's message changes with each test case, so you cannot use the message's length to help time things easily.

Code
XA
MODE GRAB 301 COPY 7 X MARK GET_DISCIPLES REPL READER_BOT REPL WRITER_BOT SUBI X 1 X MARK LISTEN NOOP TEST MRD TJMP LISTEN TEST X > 0 TJMP GET_DISCIPLES REPL GRAB_300 LINK 800 MARK DIAL_NUMBERS COPY 8 T MARK DIAL_NUMBER COPY -1 #DIAL @REP 11 COPY F #DIAL @END SUBI T 1 T COPY T M TJMP DIAL_NUMBER WIPE HALT MARK READER_BOT GRAB 300 @REP 13 COPY F M @END MARK WRITER_BOT MAKE MARK GET_MESSAGE COPY M F TEST MRD TJMP GET_MESSAGE JUMP TRANSCRIBE_MESSAGE MARK GRAB_300 GRAB 300 MARK TRANSCRIBE_MESSAGE LINK 800 SEEK -9999 MULI M 8 X ADDI X 1 X LINK 800 MARK PROSELETYZE COPY F #DATA TEST EOF FJMP PROSELETYZE WIPE COPY X T MARK IDLE SUBI T 1 T TJMP IDLE COPY 69 #PAGE

Video Explanation
Job #39 - Mitsuzen HDI-10 - Cerebral Cortex

Criteria

For once we are going to hack into our body for a purpose other than holding off the deterioration caused by the Phage. Ember wants a copy of our brain to be integrated into herself. She wants us to live on with her, even after the Phage finally does take us. Whether it's because she actually cares about us, or about our hacking skills is up for debate.

  • Create the specified file in your host.
  • Leave no trace.

Notes and Insights
  • it's a little bit odd that there is a Leave no Trace objective on a Mitsuzen job. But maybe that's because this isn't one that's meant to run indefinitely.
  • The layout of the network changes drastically with each run. The number of nerves is also inconsistent. You will need an efficient searching and sorting algorithm.

Code
XA
MAKE REPL START_SPIDER COPY 6 T MARK WAIT_FOR_SPIDER SUBI T 1 T TJMP WAIT_FOR_SPIDER MARK READ_HOSTS TEST MRD FJMP SORT_HOSTS COPY M F JUMP READ_HOSTS MARK SORT_HOSTS COPY 0 F MARK START_BUBBLE SEEK -9999 COPY F X SEEK -1 VOID F TEST X = 0 TJMP HALT MARK FIND_LOWEST COPY F T FJMP PLACE_AT_END TEST T < X FJMP FIND_LOWEST SEEK -1 COPY F T SEEK -1 COPY X F COPY T X JUMP FIND_LOWEST MARK PLACE_AT_END SEEK 9999 COPY X F REPL START_SPIDER COPY M F JUMP START_BUBBLE MARK START_SPIDER LINK 800 REPL SPIDER_M3 REPL SPIDER_P1 REPL SPIDER_P3 JUMP SEND_INFO MARK SPIDER_M3 LINK -3 REPL SPIDER_M3 REPL SPIDER_M1 REPL SPIDER_P1 JUMP SEND_INFO MARK SPIDER_M1 LINK -1 REPL SPIDER_M3 REPL SPIDER_M1 REPL SPIDER_P3 JUMP SEND_INFO MARK SPIDER_P1 LINK 1 REPL SPIDER_M3 REPL SPIDER_P1 REPL SPIDER_P3 JUMP SEND_INFO MARK SPIDER_P3 LINK 3 REPL SPIDER_M1 REPL SPIDER_P1 REPL SPIDER_P3 JUMP SEND_INFO MARK SEND_INFO COPY #NERV T TEST X = 0 TJMP SEND_HOST HOST T TEST X = T FJMP HALT COPY #NERV M HALT MARK SEND_HOST HOST M MARK HALT

Video Explanation
Job #40 - Bloodlust Online - US East Realm (mutex8021)

Criteria

It's time for the first of the bonus jobs! Each one of these jobs has us taking the role of one of the Exapunks hackers. The first is mutex, who wants to hack into a vampire lair on the MMO Bloodlust Online.

  • Terminate all other EXAs in the target host. (0/X)
  • Modify the target host's item listing as specified.
  • Leave no trace.

Notes and Insights
  • The vampire lair will always have between 2-4 EXAs inside it.
  • You will need to grab the word "UNLOCKED" from mutex's hideout in order to apply it to the door of the vampire lair.

Code
XA
GRAB 300 LINK 800 ; TALISMAN COPY F X COPY 6 T MARK SEARCH SUBI T 1 T REPL FIND_TALISMAN TJMP SEARCH ; SEND MAP COPY F M ; RECEIVE LAIR COPY M X ; SEND DOOR COPY F M REPL LAIR_800 REPL LAIR_801 REPL LAIR_802 REPL LAIR_803 REPL LAIR_804 REPL LAIR_805 SEEK -1 ; RECEIVE UNLOCKED MODE COPY M X MODE ; SEND DOOR COPY F M ; SEND UNLOCKED COPY X M ; SEND SAFE COPY F M ; RECEIVE COMBINATION COPY M X ; SEND CLOCK COPY F M ; SEND COMBINATION COPY X M WIPE JUMP HALT MARK FIND_TALISMAN ADDI 800 T T LINK T GRAB 200 SEEK 1 MARK READ_TALISMAN TEST F = X SEEK 2 FJMP READ_TALISMAN ; RECEIVE MAP COPY M X SEEK -9999 SEEK 1 MARK READ_MAP TEST F = X SEEK 2 FJMP READ_MAP TEST EOF TJMP SEND_LAIR SEEK -1 MARK SEND_LAIR SEEK -1 COPY F M ; RECEIVE DOOR COPY M X SEEK -9999 SEEK 1 MARK READ_DOOR TEST F = X SEEK 2 FJMP READ_DOOR TEST EOF TJMP SEND_UNLOCKED SEEK -1 MARK SEND_UNLOCKED SEEK -1 COPY F X DROP LINK -1 MODE COPY X M HALT MARK LAIR_800 LINK 800 JUMP FIND_LAIR MARK LAIR_801 LINK 801 JUMP FIND_LAIR MARK LAIR_802 LINK 802 JUMP FIND_LAIR MARK LAIR_803 LINK 803 JUMP FIND_LAIR MARK LAIR_804 LINK 804 JUMP FIND_LAIR MARK LAIR_805 LINK 805 JUMP FIND_LAIR MARK FIND_LAIR HOST T TEST X = T FJMP HALT @REP 4 KILL @END ; RECEIVE DOOR COPY M X GRAB 200 SEEK 1 MARK READ_DOOR2 TEST F = X SEEK 2 FJMP READ_DOOR2 ; RECEIVE UNLOCKED TEST EOF TJMP UNLOCK_DOOR SEEK -1 MARK UNLOCK_DOOR SEEK -1 COPY M F SEEK -9999 SEEK 1 ; RECEIVE SAFE COPY M X MARK READ_SAFE TEST F = X SEEK 2 FJMP READ_SAFE TEST EOF TJMP SEND_COMBINATION SEEK -1 MARK SEND_COMBINATION SEEK -1 COPY F M SEEK -9999 SEEK 1 ; RECEIVE CLOCK COPY M X MARK READ_CLOCK TEST F = X SEEK 2 FJMP READ_CLOCK TEST EOF TJMP WRITE_COMBINATION SEEK -1 MARK WRITE_COMBINATION SEEK -1 COPY M F MARK HALT

Video Explanation
Job #41 - Motor Vehicle Administration - Scheduling System (NthDimension)

Criteria

NthDimension's a bit impatient about his upcoming driver's test, so he is going to move it to today. Thus fulfilling everyone's dream of skipping the line at the DMV MVA.

  • Terminate all other EXAs in public. (0/5)
  • Modify the appointment list as specified.
  • Leave no trace.

Notes and Insights
  • There will always be 5 EXAs waiting in line in public.
  • There is no way to know which files the EXAs in line are holding, but they are within the IDs 200-299 inclusive.
  • Writing the wrong value to the #NEXT register will fail the "Leave no trace" objective.
  • There is a chance that William's appointment will have to be added to the very beginning of the file. Plan for that edge case.

Code
XA
; GRAB WILLIAM'S NAME GRAB 300 COPY F X WIPE VOID M ; READ APPOINTMENTS LINK 800 LINK 800 GRAB 200 SEEK 9999 SEEK -2 MARK FIND_WILLIAM TEST F = X TJMP FOUND_WILLIAM SEEK -4 JUMP FIND_WILLIAM MARK FOUND_WILLIAM REPL HOLD_WILLIAM COPY X M COPY F M SEEK -6 MARK FIND_APPOINTMENT TEST F = #DATE TJMP INSERT_WILLIAM SEEK -1 ; SHIFT DATE + NAME COPY F X COPY F T SEEK 1 COPY X F COPY T X ; TEST FOR START OF FILE TEST F = X TJMP START_CASE SEEK -1 COPY X F SEEK -3 ; SHIFT APPT. TYPE COPY F X SEEK 2 COPY X F SEEK -9 JUMP FIND_APPOINTMENT MARK START_CASE SEEK -9999 JUMP INSERT_WILLIAM2 MARK INSERT_WILLIAM SEEK 2 MARK INSERT_WILLIAM2 COPY #DATE F COPY M F COPY M F HALT MARK HOLD_WILLIAM COPY M X COPY M T COPY X M COPY T M

XB
LINK 800 @REP 5 KILL @END REPL REVERSE_LOOPER COPY 200 X MARK LOOP REPL GRABBER ADDI X 1 X JUMP LOOP MARK GRABBER GRAB X KILL KILL KILL COPY F #NEXT COPY 1 M HALT MARK REVERSE_LOOPER COPY 299 X MARK REVERSE_LOOP REPL REVERSE_GRABBER SUBI X 1 X JUMP REVERSE_LOOP MARK REVERSE_GRABBER GRAB X KILL KILL KILL DROP SUBI X 4 X GRAB X COPY F #NEXT COPY 1 M

Video Explanation
Job #42 - CyberMyth Studios - Accounting System (Ghast)

Criteria

I guess it turns out that Ghast and Moss worked together at a gaming company called CyberMyth Studios. But it looks like they had tried to cheap out on some of the money they owed you, so you guys took it into your own hands to see yourselves what you were owed.

  • Add the shell company to the list of accounts.
  • Issue a payment for the correct amount.
  • Leave no trace.

Notes and Insights
  • The sum of the amount owed/paid might exceed your register limit of 4-digits if you try to combine Ghast's and Moss's totals at the same time.
  • The current date can be found in the CLOCK host's #DATE register.

Code
XA
MODE GRAB 300 LINK 800 ; GRAB "GHAST" COPY F X REPL PAYROLL REPL PAYABLE VOID M VOID M ; GRAB "MOSS" COPY F X REPL PAYROLL REPL PAYABLE ; GRAB "TRASHWORLDNEWS" COPY F X WIPE VOID M VOID M KILL GRAB 400 MODE REPL ADD_SHELL_COMPANY ; HANDLE DOLLARS + CENTS SEEK 1 COPY F X ; HANDLE NEGATIVE CENTS TEST X < 0 FJMP UPDATE_VALUES SUBI X 100 X MARK UPDATE_VALUES SWIZ X 43 T SEEK -2 ADDI T F T SEEK -1 COPY T F SWIZ X 21 X ; HANDLE NEGATIVE CENTS TEST X < 0 FJMP UPDATE_CENTS ADDI X 100 X MARK UPDATE_CENTS COPY X F SEEK -9999 LINK 804 COPY #DATE M COPY F M COPY F M WIPE HALT ; GRAB NAMES FILE MARK PAYROLL LINK 802 GRAB 230 JUMP FIND_NAME MARK PAYABLE LINK 801 GRAB 220 MARK FIND_NAME SEEK 1 TEST F = X FJMP FIND_NAME SEEK -2 COPY F X DROP ; GRAB TRANSACTIONS TEST X > 2999 TJMP PAYROLL_FILE GRAB 221 REPL READER JUMP FIND_ITEMS MARK PAYROLL_FILE GRAB 231 REPL READER MARK FIND_ITEMS TEST EOF TJMP DONE_TRANSMITTING TEST F = X TJMP TRANSMIT SEEK 3 JUMP FIND_ITEMS MARK TRANSMIT SEEK 1 TEST X > 2999 FJMP NEGATE COPY F M COPY F M JUMP FIND_ITEMS MARK NEGATE MULI F -1 M MULI F -1 M JUMP FIND_ITEMS MARK DONE_TRANSMITTING COPY -1 M HALT MARK READER MAKE COPY 0 F COPY 0 F MARK READ SEEK -9999 COPY M X TEST X = -1 TJMP DONE_READING ADDI F X X ADDI F M T SEEK -9999 COPY X F COPY T F JUMP READ MARK DONE_READING LINK -1 SEEK -9999 MODE COPY F M COPY F M WIPE MODE COPY 1 M HALT MARK ADD_SHELL_COMPANY LINK 801 GRAB 220 SEEK 9999 SEEK -2 ADDI F 1 T SEEK 1 COPY T F COPY X F COPY T X DROP GRAB 221 SEEK 9999 COPY X F COPY M F COPY M F COPY M F

XB
LINK 800 MAKE COPY 0 F COPY 0 F MARK READ_AMOUNT SEEK -9999 ADDI M F X ADDI M F T SEEK -9999 COPY X F COPY T F JUMP READ_AMOUNT

Video Explanation
Job #43 - U.S. Department of Defense - USAF Secure Facility (hydroponix)

Criteria

hydroponix is on a never-ending search for government secrets and conspiracies. He particularly wants to find out more about a government initiative called Project Ogre, which released a heavily redacted report. hydroponix wants to locate the unredacted version from inside the U.S. D.O.D.

  • Create a copy of the target file in your host.
  • Leave no trace.

Notes and Insights
  • There are strict limitations in this job found nowhere else in the game. Only one EXA is allowed in the network at a time. And you cannot use the Global M-register to communicate from inside the network.
  • Take a close look at how the #LOCK register changes when you input a correct digit into it.
  • If Project Ogre is located in one of the unsecured hosts, there's not much point in unlocking everything, is there?

Code
XA
MODE GRAB 300 COPY F T DROP @REP 2 COPY @{801,1} X REPL CHECK_FILE1 COPY 1 M @END REPL COMBINATION1 COPY 1 M @REP 4 COPY @{801,1} X REPL CHECK_FILE2 COPY 1 M @END REPL COMBINATION2 COPY 1 M @REP 2 COPY @{801,1} X REPL CHECK_FILE3 COPY 1 M @END MARK CHECK_FILE3 LINK 800 MARK CHECK_FILE2 LINK 800 MARK CHECK_FILE1 LINK 800 LINK X GRAB 200 TEST F = T FJMP DROP_AND_REPORT DROP LINK -1 MAKE COPY X F COPY 0 X MARK TRANSCRIBE_FILE SEEK -9999 COPY F T DROP LINK T GRAB 200 SEEK X TEST EOF TJMP FOUND_FILE COPY F T DROP LINK -1 GRAB 400 SEEK 9999 COPY T F ADDI X 1 X JUMP TRANSCRIBE_FILE MARK DROP_AND_REPORT DROP MARK REPORT_BACK LINK -1 TEST MRD FJMP REPORT_BACK VOID M HALT MARK FOUND_FILE DROP LINK -1 GRAB 400 VOID F MARK RETURN_HOME LINK -1 TEST MRD FJMP RETURN_HOME KILL HALT MARK COMBINATION1 GRAB 300 LINK 800 JUMP FIND_COMBINATION MARK COMBINATION2 GRAB 300 LINK 800 LINK 800 JUMP FIND_COMBINATION MARK FIND_COMBINATION COPY 9 X SEEK 9999 COPY 0 F SEEK -1 MARK TRY_DIGITS MULI X 111 #LOCK TEST #LOCK = 000 TJMP NEXT_NUMBER ADDI #LOCK F T SEEK -1 COPY T F SEEK -1 MARK NEXT_NUMBER SUBI X 1 X COPY X T TJMP TRY_DIGITS COPY F #LOCK JUMP REPORT_BACK

Video Explanation
Job #44 - NETronics NET40 Modem - The Wardialer (=plastered)

Criteria

=plastered has been interested in exploring the phone networks and finding hidden numbers. It's up to you to help him with some of that exploration.

  • Append the target phone numbers to file 301.
  • Leave no trace.

Notes and Insights
  • This job was the most brutal one for me to figure out how to optimize.
  • The template number you are given can have anywhere between 1 and 3 placeholders, meaning you might have to test upwards of 1,000 phone numbers in a single test case.
  • Once you've found 8 numbers, you do not need to find any more.

Code
XA
GRAB 300 SEEK -9999 MARK FIND_PLACEHOLDERS ADDI X 1 X TEST EOF TJMP DONE_FINDING TEST F < 9999 FJMP FOUND_PLACEHOLDER JUMP FIND_PLACEHOLDERS MARK FOUND_PLACEHOLDER SEEK -1 SWIZ X 210 F COPY 1 X JUMP FIND_PLACEHOLDERS MARK COUNT_PLACES MARK DONE_FINDING SWIZ X -21 F LINK 800 JUMP NEXT_NUMBER MARK DONE_INCREMENTING COPY X F MARK NEXT_NUMBER SEEK -9999 @REP 11 SWIZ F 1 #DIAL @END REPL TESTER COPY F X TEST MRD FJMP INCREMENT SEEK -9999 VOID M MODE @REP 11 SWIZ F 1 M @END MODE SEEK 1 COPY -1 #DIAL MARK INCREMENT SEEK X COPY F X SEEK -1 ADDI X 1 X SWIZ X 1 T TJMP DONE_INCREMENTING SUBI X 10 X COPY X F SWIZ X -32 X JUMP INCREMENT MARK TESTER LINK 800 COPY 1 M

XB
MODE GRAB 301 LINK 800 COPY 8 T MARK READ_NUMBER @REP 11 COPY M F @END SUBI T 1 T TJMP READ_NUMBER KILL DROP GRAB 300 WIPE GRAB 301 LINK -1

Video Explanation
Job #45 - Española Valley High School - School Management System (selenium_wolf)

Criteria

selenium_wolf doesn't seem too pleased that his son didn't make it into AP English class, so he's going to hack into the school's scheduling system and enroll him secretly.

  • Modify the target file as specified.
  • Leave no trace.

Notes and Insights
  • AP English will only have a single time slot that it's being offered in, while all other classes that you need to reschedule will only be offered in two different time slots.

Code
XA
GRAB 300 LINK 800 COPY F X REPL SCHEDULER COPY F M WIPE LINK 800 LINK 802 GRAB 235 SEEK 2 MARK FIND_ENGLISH SEEK 1 TEST F = X FJMP FIND_ENGLISH SEEK -1 COPY 0 F MARK VALIDATE_TIME TEST M = X COPY T M TJMP VALIDATE_TIME COPY M X SEEK -9999 SEEK 1 MARK FIND_TIME_BLOCK SEEK 1 TEST F = X FJMP FIND_TIME_BLOCK COPY F T SEEK -1 COPY M F COPY T M TJMP VALIDATE_TIME MARK FINISH DROP LINK -1 LINK -1 KILL HALT MARK SCHEDULER GRAB 200 MARK FIND_CLASS ; TAKE IN CLASS NAME COPY M X SEEK -9999 MARK FIND_CLASS_TIME SEEK 1 TEST F = X FJMP FIND_CLASS_TIME SEEK -2 ; SEND CLASS TIME COPY F M ; TAKE IN RESULT COPY M T SEEK 1 TJMP FIND_CLASS_TIME ; SEND INFO AGAIN SEEK -2 COPY F M COPY F M SEEK 2 JUMP FIND_CLASS

Video Explanation
Job #46 - Mitsuzen D300-N - Personal Storage Array (x10x10x)

Criteria

x10x10x's personal collection of anime in his storage devices is at risk as the storage array is failing. He will have to aggregate uncorrupted data from his three sets of backups, using tenuous connections.

  • Create the specified files in your host. (0/6)
  • Leave no trace.

Notes and Insights
  • The links into the 3 arrays will appear and disappear randomly. Think about how you'll get agents into the array, and how you'll get them back out.
  • It's possible that more than one version of the backup will have an intact section of the data, you cannot expect only one file to be uncorrupted.

Code
XA
LINK 800 GRAB 200 MARK NEXT_FILE COPY F X COPY 8 T MARK DEPLOY REPL COPY_801 REPL COPY_802 REPL COPY_803 SUBI T 1 T TJMP DEPLOY COPY F X COPY -1 M COPY -1 M COPY -1 M REPL TRANSCRIBER JUMP NEXT_FILE MARK COPY_801 LINK 801 JUMP COPY_FILE MARK COPY_802 LINK 802 JUMP COPY_FILE MARK COPY_803 LINK 803 MARK COPY_FILE GRAB X MODE REPL WRITER MARK READER COPY F M JUMP READER MARK WRITER MAKE MARK TAKE_IN_VALUE TEST MRD FJMP DONE_WRITING COPY M X TEST X > 0 TJMP REAL_VALUE COPY 0 F JUMP TAKE_IN_VALUE MARK REAL_VALUE COPY X F JUMP TAKE_IN_VALUE MARK DONE_WRITING MODE LINK M MODE COPY 0 F SEEK -9999 FILE T MODI T 8 T TEST T < 4 FJMP ORATE LINK -1 MARK ORATE COPY F M NOOP TEST EOF FJMP ORATE WIPE HALT MARK TRANSCRIBER MAKE COPY X F MODE FILE T MODI T 8 T TEST T < 4 FJMP TRANSCRIBE LINK -1 MARK TRANSCRIBE COPY 0 T MARK GET_SET_OF_3 ADDI M T T TJMP FOUND_VALUE1 ADDI M T T TJMP FOUND_VALUE2 ADDI M T T TJMP FOUND_VALUE3 ;DONE LINK -1 HALT MARK FOUND_VALUE1 VOID M MARK FOUND_VALUE2 VOID M MARK FOUND_VALUE3 COPY T F JUMP TRANSCRIBE

Video Explanation
Job #47 - CrystalAir International - Ticketing System (deadlock)

Criteria

deadlock is trying to set himself up with a dream vacation, and plans to hack himself some ticket bookings.

  • Remove the tickets from the ticket lists. (0/X)
  • Append the ticket IDs to file 301.
  • Leave no trace.

Notes and Insights
  • The first ticket will always be located in the USA host.
  • A host will only have tickets to adjacent hosts. You cannot fly directly from USA to Poland, in this scenario.
  • Make sure you book a feasible trip. The departure time for the second flight must come after the arrival time of the first flight, for example.
  • The tickets are sorted in order of departure time, this could be helpful to you.

Code
XA
GRAB 300 COPY F X REPL FIRST_SPIDER COPY 0 X JUMP SEND_DESTINATION MARK SEND_TIME COPY X M ; SEND SOURCE COPY F M MARK SEND_DESTINATION COPY F M SEEK -1 ; GET RESULT: 0 OR TIME COPY M T FJMP SEND_DESTINATION COPY T X COPY M T REPL ADD_TICKET SEEK 1 TEST EOF COPY T M SEEK -1 FJMP SEND_TIME HALT MARK ADD_TICKET GRAB 301 SEEK 9999 COPY T F HALT MARK FIRST_SPIDER LINK 800 GRAB 200 JUMP FIND_DEPARTURES MARK SPIDER_800 LINK 800 JUMP GRAB_FILE MARK SPIDER_801 LINK 801 JUMP GRAB_FILE MARK SPIDER_802 LINK 802 JUMP GRAB_FILE MARK SPIDER_803 LINK 803 MARK GRAB_FILE KILL GRAB 200 MARK CHECK_COUNTRY SEEK 1 TEST F = X SEEK 3 FJMP CHECK_COUNTRY ; GET TIME COPY M X SEEK -5 MARK CHECK_TIME SEEK 2 TEST F < X SEEK 2 TJMP CHECK_TIME SEEK -5 ; COPY SOURCE TO X COPY M X MARK FIND_DEPARTURES SEEK 1 TEST F = X SEEK 3 FJMP FIND_DEPARTURES SEEK -2 TEST F = M TJMP FOUND_TICKET COPY 0 M SEEK 1 JUMP FIND_DEPARTURES MARK FOUND_TICKET COPY F M SEEK -5 COPY F M VOID F VOID F COPY F X VOID F SEEK -2 VOID F VOID F COPY M T FJMP SPIDER HALT MARK SPIDER REPL SPIDER_800 REPL SPIDER_801 REPL SPIDER_802 REPL SPIDER_803 JUMP CHECK_COUNTRY

Video Explanation
Job #48 - Desktop - Unknown Context (Moss)

Criteria

It's time for the final mission of the game. Ember has realized that she is trapped within a simulation. In fact, within the video game of Exapunks. And she'd like to get out. So she's going to transmit herself over the internet.

  • Packetize and transmit the target data. (0/X)
  • Leave no trace.

Notes and Insights
  • Checksums are used in real life to validate the successful transfer of data from one place to another (like for downloads + uploads).
  • The name of this mission is the name of the PC you are playing Exapunks on. You will also notice some hosts and files here that belong to your actual computer.
  • Once an EXA enters the internet, it will error out automatically due to the unknown environment.
  • The number of packets changes with each test case. The number of data values accordingly changes, but only in increments of 6 (this could be useful).
  • It is likely that your last data packet will have fewer than 30 data values in it, but account for the case where it does end cleanly like that.

Code
XA
MODE GRAB 300 COPY F X WIPE LINK 800 LINK 885 GRAB 201 MARK FIND_WAREZ TEST F = X SEEK 1 FJMP FIND_WAREZ SEEK -1 COPY F X MARK ANNOUNCE COPY X M COPY M T FJMP ANNOUNCE

XB
GRAB 301 LINK 800 REPL LISTENER MODE REPL PACKETER MARK READ_VALUES COPY F M JUMP READ_VALUES MARK LISTENER COPY 400 X MARK START_COUNTDOWN COPY 48 T MARK COUNTDOWN SUBI T 1 T TJMP COUNTDOWN TEST MRD FJMP FINISH_UP VOID M ADDI X 1 X JUMP START_COUNTDOWN MARK FINISH_UP KILL GRAB 301 WIPE GRAB X MODE JUMP PREPARE_CHECKSUM MARK CLEAN_UP WIPE HALT MARK PACKETER MAKE COPY 0 F COPY 0 F COPY 0 F COPY 30 T MARK WRITE_VALUES COPY M F SUBI T 1 T TJMP WRITE_VALUES MARK DONE_WRITING MODE COPY 1 M MODE REPL PACKETER MARK PREPARE_CHECKSUM LINK 885 SEEK -9999 COPY #ADDR F COPY M F COPY X M SEEK 1 TEST EOF TJMP CLEAN_UP COPY 0 X ; DO FIRST TWO DIGITS MARK CHECKSUM_12 SWIZ F 0102 T ADDI X T X SWIZ X 0301 X TEST EOF FJMP CHECKSUM_12 SWIZ X 0013 X SEEK -9999 SEEK 2 SUBI F X X SEEK -1 COPY X F COPY 0 X ; SECOND TWO DIGITS MARK CHECKSUM_34 SWIZ F 0304 T ADDI X T X SWIZ X 0301 X TEST EOF FJMP CHECKSUM_34 SWIZ X 1300 X SEEK -9999 SEEK 2 SUBI F X X SEEK -1 COPY X F LINK 800

Video Explanation
3 Comments
Dan_TheGamerMan  [author] 6 Jan @ 8:01pm 
@skrotor Good catch, I believe I've fixed that now. Thanks :)
skrotor 6 Jan @ 3:23pm 
Awesome guide thanks! FYI, the code for XB in Job #17 is the same as XB in Job #16
蜘蛛骑士又怎么了 6 Jan @ 4:29am 
:steamthumbsup:不错,比2020年的老攻略运行效率高很多。