The Let's Play Archive

EXAPUNKS

by Carbon dioxide

Part 3: TRASH WORLD NEWS - Tutorial 2

Part 3 - TRASH WORLD NEWS - Tutorial 2

Let's start with some comments from the threads.

Quackles posted:

Also, fun fact: If an EXA runs out of instructions, it will stop. This means it's possible to save an instruction by leaving off the HALT at the end.
Good point. That reduces the size to 3, but leaves the cycles at 4. I guess the EXA "realizing" it is out of instructions takes a cycle.

GuavaMoment posted:

Do you have the physical version of this game?

Good luck getting through all the levels! There's one in particular at the end only 3 of my steam friends have beaten.

No, I only have the Steam version. I have beaten story mode before, but not the postgame stuff.

Adding up the votes from both the SA and Beach threads, we have one vote for "Oh" and seven votes for "There's not much to see". So let's dive into it.



There's not much to see.

There isn't.
I expected you to be sitting on all kinds of secrets...
It's alright though.
We'll find plenty more.




Alright, looks like next up is another tutorial.

People or animals are often motivated by the anticipation of a reward.
Are you anticipating the medication as a reward?




Oh come on, lady. I need that to survive, it's not like I have a choice. That's not a reward.

I guess you're right.
It's about survival.
Processing.
Okay. Let's continue.


Yes, survival, that's what I said... wait, did you just say "processing"? Hm, could it possibly be the case that the lady, whose window literally says "Emulated Multi-Branch Emotional Reasoning", is not in fact, human? 🤔

Since the game doesn't try very hard to hide this fact, neither will I. As the screen says, we can just call her EMBER.


OST: Getting Started


Once again, one of the goals is "Leave no trace." Since that seems to be common, I won't be mentioning it anymore.

Clicking "Show Goal" in this case not only shows file 200 in the output, but it shows the value 436 appended to the end of the file.

Anyway, let's see what Ghast has to say about this tutorial.



Alright, just copy the code again. That I can do.


Code copied, and I started stepping through it. Just as a note - there doesn't seem to be a limit to how many lines of code a single EXA can have. There's only the global limit, which is 50 for this tutorial assignment.

Anyway, the LINK 800 took the EXA to the INBOX again, and the GRAB operation grabbed the file. As you can see, the file has moved from the file explorer under the "CREATE NEW EXA" button to being 'held' by the EXA's window.

Now, the new COPY operation does exactly what it says, it copies a value from one place to another. In this case, from the F register to the X register. However, the F register always points to whatever file the EXA's holding - and more specifically, the location of the cursor within the file. So F holds '72' right now.


The value 72 has been copied from F into X now, and the file's cursor moved to the next position. The cursor moves forward automatically whenever you interact with the F register.

The ADDI operation adds two values together (the first two arguments, X and F) and stores it in the register given by the third argument (X). So, it will add 72 from the X register to 52 from the cursor's location in the file.


Which makes 124 and moves the file cursor forward again. MULI works the same as ADDI, except it multiplies the values.


And SUBI subtracts the second value from the first.


The cursor is now at the end of the file.


If you use COPY to F while the cursor is at the end, it will append the value to the end of the file.

The rest of the program is stuff we've seen before. We move the file to the OUTBOX and destroy the EXA.



The gif function isn't that useful here because it only shows EXAs moving around, it doesn't show operations within files. So the result seems identical to the one from the first tutorial.

Not bad... but can I do better?


You may have thought of doing something like this. Use meaningless COPY operations to move the cursor to the end of the file and then just write a hardcoded value '436' in there. But that doesn't work - not only doesn't it save any time, the values in the file are different for each test run so only the first out of a hundred runs succeeds with this code.


What I can do is apply my learnings from the first tutorial. The HALT is unnecessary because an EXA destroys itself once it runs out of instructions, and the DROP is unnecessary because when an EXA destroys itself, it drops whatever it's holding.

This drops the cycle count to 9 and the size to 8.

There's one more trick that's less obvious. You can combine the COPY and ADDI operations like this:


Why does this work? Well, now the ADDI operation says "add the value in F to the value in F and store that to X". But, remember, EVERY interaction with F moves the cursor forward. So this actually adds the first value in the file to the second value and stores that in X, giving the same result with one less operation.


This drops both the size and count one further.

As you can see from the leaderboard, a lot of people managed to save another cycle. That might be because they use an operator that's not been introduced yet. Feel free to discuss improvements in the thread, but if they involve operators we haven't seen yet, please put them in spoiler tags, for any readers that prefer experiencing this game as it comes.



Does it upset you that I will provide your medication only if you work for me?

I'm noticing that Ember usually has two questions to ask between assignments - one in the outro and one in the intro for the next assignment. You know what... since one doesn't affect the other I'll just throw both of 'em up for a vote.



What do you think of your life situation overall at the moment?

Please vote for both questions.