• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

SHENZHEN I/O - new game from Zachtronics

KKRT00

Member
DFX124F.jpg

!

;/

I already spent like 3 hours on this. I dont how to have persistence with one ACC and do it in 9 instruction, when jmp, slp, mov acc x0, two conditions for both inputs, sub, add are already 7 instructions o_0
Are there are additional operations that are not described in manual? Or you used standard solutions and i cant figure out that one way of doing it?
 

Holden

Member
;/

I already spent like 3 hours on this. I dont how to have persistence with one ACC and do it in 9 instruction, when jmp, slp, mov acc x0, two conditions for both inputs, sub, add are already 7 instructions o_0
Are there are additional operations that are not described in manual? Or you used standard solutions and i cant figure out that one way of doing it?

you are probably not using the instruction i'm using.

it's definitely in the manual, no cheating or future unlock from later in the game

u can always pm me if u want to know more
 

AcAnchoa

Member
This is the first Zachtronics game I play and I'm absurdly hooked to it, shame no other friends play it :( .

Anyway, I have two questions. First, is there any reward for completing the solitaire? I've finished two games but haven't seen anything interesting after that; I guess it may be just a distraction. Second, can someone shed some light into how XBus works? By trial and error I've managed to use them as part of a few solutions but I still don't fully understand them.
 

mnz

Unconfirmed Member
Printing the manual to A4 shouldn't be a problem, right? It looks ok, but the source pdf is some other format.
 

kami_sama

Member
Printing the manual to A4 shouldn't be a problem, right? It looks ok, but the source pdf is some other format.

Yeah, it looks good.
Would be better on the original paper size, but well ¯\_(ツ)_/¯

Also, if anyone wants to compare solutions, add me on steam. steamcommunity.com/id/kamisamamizu
 

buffi

Banned
This is the first Zachtronics game I play and I'm absurdly hooked to it, shame no other friends play it :( .

Anyway, I have two questions. First, is there any reward for completing the solitaire? I've finished two games but haven't seen anything interesting after that; I guess it may be just a distraction. Second, can someone shed some light into how XBus works? By trial and error I've managed to use them as part of a few solutions but I still don't fully understand them.

Xbus is explained in the manual?
Only thing that might not be obvious is that slx will just wait for an instruction, but you need to do something else with the input as well to flush it from the wire.
 

Exuro

Member
I feel terrible not being able to do this Poseiden one. And I'm not sure how useful the new xbus to simple i/o part is. :(
 

KKRT00

Member
Sheeeeeit. I got mine down to 574, using a 4000 and a 6000, but I dunno how you're putting all that on a single 4000!

Add us to friends ;p or we need to make spreadsheet with scores.

Also, is this me or game is way harder than TIS? Like i have more problem visualizing problems and solutions than in TIS and limitation are more severe.
 

FLD

Member
Having people post leaderboard screenshots prominently featuring my terrible scores in last position is a hell of a motivator. So, yeah, way to shame me into optimizing my solution! :p

I was gonna post a screenshot but imgur has been giving me trouble lately and I guess tinypic is banned, for some reason? When I previewed the post, the url was full of *. :/
 

FLD

Member
Tinypic was banned ages ago. We had problems with them recycling URLs and old posts suddenly having random porn in them.

Hahaha, yeah ok, I can see why that would be an issue. I should probably try to figure out why imgur refuses to work but I've already tried all the obvious things. All my uploads just get stuck and never complete no matter how long I wait.
 

pronk420

Member
How do you delete stuff on OS X? I can delete wires by right (two finger) clicking them, but not components.

Also anyone not been able to change resolutions? When I try it nothing happens and it is stuck in 1200 x 800.
 

KDR_11k

Member
Man, the timing model used in SZIO (and the sync model in TIS-100) annoys me because I used to program FPGAs at university (and BOS unit logic in Spring RTS) and they act completely different. I guess it has to be weird for the sake of challenge and gamification but that synchronization on X buses is throwing me for a loop. AFAIK you cannot poll whether there's data on an X bus without doing a blocking read?

Especially since FPGAs (and thus circuits designed by a higher level HW language compiler) have their own optimization goals that are nothing like the ones in SZIO (e.g. chaining operations in one cycle lengthens your critical path which lowers the maximum MHz your chip can run at so you can add pipelining but that adds latency to your processing system).

How do you delete stuff on OS X? I can delete wires by right (two finger) clicking them, but not components.

Drag and drop them back into the toolbox.
 
I've spent the last 3 hours stuck on the Pulse Generator because I just can't get how people have reduced power usage down to around 125.

The best I have gotten so far is 195 by optimizing for the case where p0 is 0.

What black voodoo magic are you people using!! Or am I just over thinking this one? It's given me a bridge. Is there something I'm supposed to do with that? Help!
 

FLD

Member
I've spent the last 3 hours stuck on the Pulse Generator because I just can't get how people have reduced power usage down to around 125.

The best I have gotten so far is 195 by optimizing for the case where p0 is 0.

What black voodoo magic are you people using!! Or am I just over thinking this one? It's given me a bridge. Is there something I'm supposed to do with that? Help!

If you're still early on, it's possible they're just using something you don't have access to yet. You might be wasting your time trying to optimize prematurely.
 

KKRT00

Member
If you're still early on, it's possible they're just using something you don't have access to yet. You might be wasting your time trying to optimize prematurely.

For Pulse Generator i got 139 with basic setup and instructions.
 
Just started yesterday, finished the 3rd puzzle. I mean, damn, it's hard
and I really don't "get" Spacechem
but its so damn rewarding and the email/gameplay setup is genius. I am hooked.
 

KKRT00

Member
Any hints? Is there something about timing or a particular instruction that helped you get there?

Edit:
Here's my current solution
tcp 0 p0
- not
- mov acc p1
- slp 1
- teq p0 0
+ mov 0 acc
+ mov acc p1
- not
- mov acc p1
slp 1

Dont use ACC :) and check which instruction are dead end or are executed when they could be skipped sometimes, because the condition is not met for example or you have this value passed already.
 
Dont use ACC :) and check which instruction are dead end or are executed when they could be skipped sometimes, because the condition is not met for example or you have this value passed already.

OMG THANK YOU!!!! I love you and I love this game!

I was so stuck thinking that you have to know the previous value that I couldn't step back and rethink the problem.

Here's the new solution:
tcp 0 p0
- mov 100 p1
- slp 1
- mov 0 p1
slp 1
 

Exuro

Member
Yay I beat the 2d mapping/Poseidon one. And I did absolutely terrible at 1.8k power usage. I'll come back to it later, but I'm happy that I actual beat it.
 

Gotchaye

Member
I had no idea this was coming out. Picked it up this evening and played it for a few hours. Honestly, I feel like the bells and whistles get in the way - I'd like a cleaner level select, for example.

The main difference between this and TIS is what you're optimizing for. I've got a ton of bad habits from trying to optimize cycles when here you get unlimited cycles per time unit. You're actually encouraged to do as much work in a single chip as possible.
 

Exuro

Member
I'm on a roll. Vape Pen created! Does the third histogram category show up later or is it not implemented yet?
 

INTERNET

SERIOUS BUSINESS
Good tip from reddit: instructions can go on the same line as labels (apparently this was also the case in TIS-100, but I never got into that as much as I could have)! It's in the manual, but, you know how that goes
 

Spoit

Member
Can someone explain these x-data pins to me? I can't figure out how to decode the input for this LED one, especially trying to split it out into multiple components
 

Exuro

Member
Can someone explain these x-data pins to me? I can't figure out how to decode the input for this LED one, especially trying to split it out into multiple components
As per the manual
The Manual said:
XBus, however, is a synchronized protocol. Data over XBus pins is only transferred when there is
both a reader attempting to read and a writer attempting to write. If a read or write is attempted
without a corresponding operation on a connected device, the operation will block.
So if you're writing to a pin then it also has to be read on the other end at the same time, else you'll have issues. I still have issues where I'm not synchronizing read/writes.
 

Spoit

Member
As per the manual
So if you're writing to a pin then it also has to be read on the other end at the same time, else you'll have issues. I still have issues where I'm not synchronizing read/writes.

Except that this puzzle is specifically a non-blocking one, with you needing to catch interrupts. But really I need to just figure out the format of the input in the first place, to get the initial pulse to output correctly.

EDIT: NM, figured it out. Had to just read them out sequentially, rather than trying to do work in parallel.
 

AcAnchoa

Member
I found the description of the IR sensor puzzle too confusing, it took me a fair amount of time to understand what you were supposed to do. And then I spend two hours thinking a solution just to be flying-kicked in the face by the conditions associated with the on and off markers at the end of the second test run. The fix was quick, but it still hurt.

Xbus is explained in the manual?
Only thing that might not be obvious is that slx will just wait for an instruction, but you need to do something else with the input as well to flush it from the wire.
Yeah, it was the need to flush it.
 

kami_sama

Member
I still can't crack the RGB led.
No matter what I try, I always run out of instruction and space.
Will try one more day before giving up.
 

Dantero

Member
Can someone tell me their drinking game scorekeeper 3¥ solution?
This is what I currently have using one 6000(5¥ 271 power)
start:tcp p1 p0
+ add 1
+ jmp loop
- sub 1
- jmp loop
mov acc x2
slp 1
jmp start
loop: mov acc x2
slp 1
tcp p1 p0
+ jmp loop
- jmp loop
 

Gotchaye

Member
Can someone tell me their drinking game scorekeeper 3¥ solution?
This is what I currently have using one 6000(5¥ 271 power)
start:tcp p1 p0
+ add 1
+ jmp loop
- sub 1
- jmp loop
mov acc x2
slp 1
jmp start
loop: mov acc x2
slp 1
tcp p1 p0
+ jmp loop
- jmp loop

I'm using:
tcp p1 p0
+ add 1
- sub 1
stay: mov acc x1
slp 1
+ tcp p1 p0
+ jmp stay
- tcp p1 p0
- jmp stay
 

Dantero

Member
I'm using:
tcp p1 p0
+ add 1
- sub 1
stay: mov acc x1
slp 1
+ tcp p1 p0
+ jmp stay
- tcp p1 p0
- jmp stay

Knew I should have cut down on some of the jumps. And I guess I still haven't quite figured out the whole +/- thing.
I don't get the plus in your "+ tcp p1 p0" and when "- jmp stay" is actually reached.
 

Gotchaye

Member
Knew I should have cut down on some of the jumps. And I guess I still haven't quite figured out the whole +/- thing.
I don't get the plus in your "+ tcp p1 p0" and when "- jmp stay" is actually reached.

Explanation of the spoiler:
tcp is symmetric. Either the + are active, the - are active, or neither is active.

As long as both p0 and p1 are 0, none of the +/- statements will ever hit, and the same value of acc just keeps getting written to output. If p1 becomes 1, that first tcp will trigger and all of the + statements will activate, which will increment acc. But this also activates the later +tcp, which will get tested on the next time unit. If p1 is still 1, the code jumps back to "stay" (because I don't want to increment acc). Only after p1 goes back to 0 will the +tcp fail, and then the code will proceed all the way to the bottom and start over.

Similarly, if p0 becomes 1, the first tcp will trigger and all of the - statements will activate, and acc will be decremented. This activates the later -tcp, which gets tested on the next time step. If p0 is still 1, the code jumps back to "stay".
 

KKRT00

Member
I used just this line and made 13 instruction solution. Is still not 9 instruction, but at least we went from 11 to 5 cost and from 840 power to 361 :p

Thanks Gotchaye

-edit-
down to 286 power with one more instruction :p

Ps. Why are there still only 7 highest scores on the leaderboards? I though they would increase or just implement the scroll-bar
 

Gotchaye

Member
On the topic of the drinking game level, something else that differentiates this from TIS-100 is that the inputs and output very often have lots of structure or follow patterns, in ways that aren't apparent from the level requirements. You can often get a more optimized solution by doing what in TIS-100 would look kind of like cheating - you can make a solution that would fail for many inputs that would seem to be possible judging only by the level requirements. The closest TIS-100 typically came to this was not telling you what the highest numbers you'd have to handle would be.
 

KKRT00

Member
On the topic of the drinking game level, something else that differentiates this from TIS-100 is that the inputs and output very often have lots of structure or follow patterns, in ways that aren't apparent from the level requirements. You can often get a more optimized solution by doing what in TIS-100 would look kind of like cheating - you can make a solution that would fail for many inputs that would seem to be possible judging only by the level requirements. The closest TIS-100 typically came to this was not telling you what the highest numbers you'd have to handle would be.
Yeah i noticed that.
I actually cheated score in one level in TIS due to that. It would pass for some values and for some not. But here its more apparent, thats why i was once wondering if i should cheat it or go with more full proof solution.

---
@Gotchaye
I checked rest of your code and i didnt know that you could operate with + and - within the conditions this way. This changes everything.
Its really slightly confusing system, because they overlap in execution, but still give quite a lot control, even though not full control.
 

mrklaw

MrArseFace
I have a love-hate relationships with his games. I love them and there's nothing else quite like his style of games, but then I realize my output in Infinifactory is a row too long and my elaborate, precisely timed assembly line is useless...and then I put the games aside for a few months

I think I'm at the point where I treat his games like a patreon thing - I just buy them all even if I'll barely play them because there so something so beautifully *logical* about them and I love that. I don't care that I'm not very efficient at them. I'll start off with good intentions, working on making them the target number of cycles, but fairly quickly give that up and jus be happy with a solution that works. TIS in particular had tricks to trim individual cycles which IMO made the code less readable so I stopped doing that.
 

Vlad

Member
I think I'm at the point where I treat his games like a patreon thing - I just buy them all even if I'll barely play them because there so something so beautifully *logical* about them and I love that. I don't care that I'm not very efficient at them. I'll start off with good intentions, working on making them the target number of cycles, but fairly quickly give that up and jus be happy with a solution that works. TIS in particular had tricks to trim individual cycles which IMO made the code less readable so I stopped doing that.

What I love about the Zachtronics games is that you don't even have to be efficient them. In fact, you can be horrifically inefficient and still complete the game just as well as anybody else. There's not even an internal ranking system (C/B/A/S, etc). The only motivation to improve your scores is the histogram and friends' scores.
 

Spoit

Member
Thought the whole time that the +/- are just if/else but they're really completely different things. Had to play around a little to understand your code but now I think I get it.
Thanks for the help.

Yeah, half my debugging is trying to remember that they AREN'T if/else, and that you can really only nest on either the + side
 
Top Bottom