The Let's Play Archive

EXAPUNKS

by Carbon dioxide

Part 26: HACK*MATCH

Part 26 - HACK*MATCH

Today's update is a bit of a break from the normal puzzles. But before we go there, let's see what ideas you had for the region lock puzzle.

=== Trash World Inbox ===

GuavaMoment posted:

Major speed tips - the files are always multiples of 12, so unroll files into 12 long loops. I transmit the files, then go back through and replace the SSEA code. There's a third timing exa IN LOCAL MODE that exas in the buffer must communicate with first so that long files get done before short files.
code:
XA
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
LINK 801
MARK BEGIN
GRAB M
MARK LOOP
COPY F M
COPY F M
COPY F M
COPY F M
COPY F M
COPY F M
COPY F M
COPY F M
COPY F M
COPY F M
COPY F M
COPY F M
TEST EOF
COPY T M
ADDI X 11 X
FJMP LOOP
COPY X M
DROP
COPY 0 X
JUMP BEGIN

XB
GRAB 300
COPY F X
LINK 800
DROP
MARK NEWONE
MAKE
COPY #TRAK M
MARK LOOP
COPY M F
COPY M F
COPY M F
COPY M F
COPY M F
COPY M F
COPY M F
COPY M F
COPY M F
COPY M F
COPY M F
COPY M F
COPY M T
FJMP LOOP
SEEK -999
REPL NEWONE
COPY M T
LINK 800
MODE
COPY T M
MARK LOOP2
TEST F > 0
TJMP LOOP2
SEEK -1
COPY X F
JUMP LOOP2

XC (local)
NOOP
LINK 800
LINK 800
MARK SIGNAL
COPY M T
MARK LOOP
SUBI T 1 T
TJMP LOOP
JUMP SIGNAL
2669/83/37
Some very neat tricks in this one. You actually send the result of the TEST EOF to another EXA so two EXAs can both conditionally jump based on a single test. I don't think we've seen that before. Also, XA keeping count of the file length and getting that value through XB to XC so that XC knows how long it needs to count down for.

silentsnack improved upon this idea:

silentsnack posted:

Also the longest files are 36 entries, so you only really need at most two EOF checks. And since the file sizes are somewhat predictable, IF we use one way or another to measure how big a file is, we can add a variable delay to make short files wait a bit to make sure they don't get dropped before a previous big file... which at some point requires experimentally finding values that work
code:
;XA
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

;XB
COPY 6 T
MARK WAIT_AUTH
SUBI T 1 T
TJMP WAIT_AUTH

LINK 800
REPL READER

MARK WRITER;[MAIN LOOP]
MAKE
COPY 24 X     ;(?)
COPY M F;COPY #1/12

MARK W_LOOP
@REP 8
COPY M F;COPY #2~9/12
@END

SUBI X 8 X    ;(??)
COPY M F
TEST X = 0    ;(???)
COPY M F
TJMP SKIP_MRD
COPY M F;COPY #12/12

TEST MRD
FJMP WROTE

COPY M F;#1 OF NEXT LOOP
JUMP W_LOOP; "FREE" JUMP

MARK SKIP_MRD
COPY M F

MARK WROTE
REPL READER
REPL WRITER;[/MAIN LOOP]

LINK 800
MODE
SEEK -999
COPY X T      ;(SOMEHOW)

FJMP DATA
MARK SYNC
SUBI T 1 T
TJMP SYNC     ;(MAGIC?)

MARK DATA
@REP 2
TEST F > 0
TJMP DATA
SEEK -1
COPY M F
@END
JUMP DATA


MARK READER
COPY #TRAK T
LINK 801
GRAB T
MARK READ
@REP 18
COPY F M
@END
JUMP READ

;XC LOW-EFFORT SSEA HACK (local)
GRAB 300
LINK 800
LINK 800
COPY F X
MARK PATCH
COPY X M
JUMP PATCH
2304/99/69
Yeah, so it looks like a delay of 8 cycles per 12-entry "file chunk" makes things line up with the least time loss.

Finally, silentsnack suggested the following size improvement:

silentsnack posted:

code:
;XA
LINK 800
COPY 8032 X
MARK AUTH
SWIZ X 4 #AUTH
SWIZ X 3 #AUTH
SWIZ X 2 #AUTH
SWIZ X 1 #AUTH
COPY M X
TEST MRD
TJMP AUTH

MARK READER
REPL WRITER
LINK 801
GRAB M
MARK READ
COPY F M
JUMP READ


MARK WRITER
COPY #TRAK M
MAKE
MARK WRITE_LOOP
COPY M T
COPY T F
TEST T > 0
TJMP SKIP
SEEK -1
COPY X F
MARK SKIP
TEST MRD
TJMP WRITE_LOOP

REPL READER
LINK 800

;XB
GRAB 300
COPY 7104 M
COPY 9512 M
COPY 5260 M
COPY F M
6412/37/62
The main improvement is of course the compressed auth. I was thinking there was no way to speed up the auth which is why I got tricked into believing no optimizations in that code were possible at all. Of course a size optimization was right for the taking.


=== HACK*MATCH ===

That was a lot of work just to play one game.
Think it will be worth it?




Only got a single vote for this one.

The hacking is its own reward.

Sure. Especially when you get something tangible out of it.
Time to play!


Yes. But before I do, have I showed you my apartment recently?


OST: Apartment

The WonderDisc is running, my Redshift is set all set up, I like it.



[=plastered] yep
[=plastered] thats how it goes




My, um, assignment is to score 10000 points in this game.

Think the console version will live up to the arcade classic?



Two votes for asking for details.

It's an arcade game?

It is in Japan.
You haven't seen the cool cabinets they have?
I knew ingesting that corpus of gaming magazines would come in handy.


Alright, let's see what this game is all about.



This only pops up for a second before the game boots.

... full extent of the jam? I'm sure it'll be fine.



Since this is an arcade game, I'm presenting it to you in video format.

https://www.youtube.com/watch?v=nZ_wbxaE-Cc

After you've watched the video, here's some background information.







The music for HACK*MATCH is OST: Let'sハッキング, which translates to "Let's hack" which, honestly would've been a good title for this thread.

According to an old post I found online, the instructions page translates to:

On the left: to download the file, assemble 4 or more files of the same type by connecting them
On the right half: if you line up two of the pressure explosive, you can download all the files of the same type at the same time.

There are also three Steam achievements tied to HACK*MATCH:

- ゲーマー , for getting 10000 points
- 熟練ゲーマー , for getting 50000 points
- 究極のゲーマー , for getting 100000 points.

Anyway, let's see what Ember has to say about us getting a decent score.

Hmm.
This game isn't about hacking at all, is it?
They took a lot of dramatic license.




That's the first vote for today.




I was so caught up in that little game I almost didn't notice the knock on the door.




Got bad news.
The pharm was raided.
The cops hauled off the equipment, the sheep and the pigs, the whole thing.
It's a real shame.
It was a lot of work to genetically modify those animals.
They'll probably get culled, too.
Sad...

So is that it, then?
If there's no more medication, I can't slow the spread of the phage...
I'll be finished soon.

This might not be the end of the story, though.
The people I work with, they're looking to get their hands on the real deal now.
There's a shipment going out soon, and let's just say a lot of people with better resources than you or me want these meds.
There's going to be fireworks.

Nivas pauses for a moment to study my face.

So. Here's the offer.
If you help us grab that shipment, we'll let you buy some of it. Market price.
I know it's a lot higher than before, but it's your only choice if you still want it.
Your part should be easy too.
That is if I understand what you do correctly.
Just cut some power. Snip snip. We'll take care of the rest.
I'll send you the details. You can decide then.
Seeya.


Damn. Well, I guess I have no choice but to help them.

This is something like a heist, isn't it.



And with that, we've reached the second vote.