Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Locked thread
OddObserver
Apr 3, 2009
Man, got to the audio thing and already feeling stuck due to pin deprivation. (And sleep deprivation..)

Edit: it's trying to teach about what happens when you're not driving a pin that's connected elsewhere, isn't it?
Edit #2: Oh, I am dumb. I can use the X-pins between controllers...

OddObserver fucked around with this message at 02:22 on Oct 7, 2016

Adbot
ADBOT LOVES YOU

Pollyanna
Mar 5, 2005

Milk's on them.


gently caress I figured out what was happening and it turned out I was returning the wrong values for the leftmost chip AND hosed up "less than 28 OR greater than or equal to 84" :cripes: I'll just show myself the door.

homeless snail
Mar 14, 2007

Pollyanna posted:

My question is ultimately one of keeping them in sync, i.e. "how do I make sure I don't end up in a state where a chip is waiting for a signal from the wrong chip, therefore one won't go to sleep". I learn best from example, so here's my current solution for the heat sensor. I can see here that the issue is that the rightmost chip is waiting for a response from the upper left chip while the bottom chip is waiting to write to the rightmost chip, and the upper left chip is asleep. I just don't really understand how to avoid this situation, because it seems less like I have to put SLX statements everywhere and more that I need to make sure everything executes in the expected order every time, which doesn't seem to be guaranteed at all.
You have a deadlock in your example. The top left CPU is sleeping until the next tick, the right CPU is sleeping until the first sends a packet, and the bottom left is blocked on MOV until the second CPU is ready to read which can't happen this tick and the simulation won't advance as long as the write is blocked.

The easiest way to keep sync is just to make sure everything operates in lockstep. If a CPU ever writes to an xbus port make sure it does so every tick, and make sure the controller its connected to will read that port every tick. If everything is lockstep you will never need to worry about the order things execute because the synchronization is implicit every time you touch an xbus port.

e: Here's my solution as an example

The right CPU blocks on read until the left one has done everything it needs to do, and they operate in lockstep predictably every tick.

homeless snail fucked around with this message at 02:37 on Oct 7, 2016

pumpinglemma
Apr 28, 2009

DD: Fondly regard abomination.

Pollyanna posted:

My question is ultimately one of keeping them in sync, i.e. "how do I make sure I don't end up in a state where a chip is waiting for a signal from the wrong chip, therefore one won't go to sleep". I learn best from example, so here's my current solution for the heat sensor. I can see here that the issue is that the rightmost chip is waiting for a response from the upper left chip while the bottom chip is waiting to write to the rightmost chip, and the upper left chip is asleep. I just don't really understand how to avoid this situation, because it seems less like I have to put SLX statements everywhere and more that I need to make sure everything executes in the expected order every time, which doesn't seem to be guaranteed at all.

Oh, I see - SLX is the wrong tool for you here, then. If I call your chips 1, 2 and 3 from left to right, then the situation right now is that 1 and 2 are both outputting every single cycle. So 3 needs to input from both 1 and 2 every single cycle to stop it crashing, but the order doesn't matter, because crashes only happen when you have an output that's not read within the same cycle or an input that's not provided within the same cycle. Chip 3 can read x0 first or x1 first and either will work. The SLXes aren't hurting you, but they aren't helping you either and you could remove them without breaking anything. Your problem is that 3 isn't inputting from 2 every cycle, which can be fixed e.g. by adding "- mov x1 null" between lines 4 and 5 of chip 3.

What SLX is useful for is if you want a chip to do something like "wait for a number on x0, then output 100 on p0 for that many cycles". The SLX takes care of the waiting - otherwise you'd have to somehow try and sync it and its inputs up so that it only polled for inputs on cycles where inputs were available.

NickPancakes
Oct 27, 2004

Damnit, somebody get me a tissue.

SupSuper is too good at this game, gatdamn. I need to step my game up.

I just PMed the mod of TGS to see if they'd be opposed to a Zachtronics Steam Profile Sharing thread in there, so we can share our steam profile links freely behind the paywall and not flood this thread. I'll update the OP with a link if we get the OK.

zedprime
Jun 9, 2007

yospos
I/O blocking was such a huge stumbling block for the average person in TIS-100. I can only imagine what its like now that it not only freezes time, but you also have your choice of rope to hang yourself with because of the differences between simple IO and the xbus.

You can and should flowchart your concept to understand how blocking on the xbus or racing with a simple IO can work out. It lets you put the data handling and flow in something human readable to understand where syncs should occur and help troubleshoot where they aren't occurring.

New Zealand can eat me
Aug 29, 2008

:matters:


Finally unlocked the prototype board, immediately found the beeper/speaker and made some garbage noises :haw:

Someone with more free time than me: Please figure out which 1-100 values map to which tones, was going to try to make a touch tone phone but I'm not sure there's enough precision to do so accurately enough to work over the actual phone

Pollyanna
Mar 5, 2005

Milk's on them.


People posted:

:words:

I think there's a good reason why I don't do embedded development :(

I'm at the problem that basically decomposes down into a really gross conditional statement, and even wrapping my head around it is giving me a headache. I think I might put that one off until tomorrow.

edit: Also I have no idea what the IO splitter is supposed to be used for.

Pollyanna fucked around with this message at 03:53 on Oct 7, 2016

NickPancakes
Oct 27, 2004

Damnit, somebody get me a tissue.

Is anyone else getting "Invalid Label Name" errors on any label name?

I mean :label and :end are both examples from the manual, yet both of those are giving me errors. What am I missing here?

homeless snail
Mar 14, 2007

The colon goes after the name

Jeffrey of YOSPOS
Dec 22, 2005

GET LOSE, YOU CAN'T COMPARE WITH MY POWERS

New Zealand can eat me posted:

Ahhhh I figured out drinking game.

I don't know why I was beating my head so hard. I really need to stop trying to do something fancy immediately, and instead just make something that works first and then pair (pare?) down

Worst solution on my friends list :c00lbert: As far as I'm concerned, I'm winning, because the guy who owns the factory is giving me kickbacks for keeping unit price high :smug:

I do wish there was some sort of incentive for having nicer solutions other than bragging rights

lol I skipped doing that one the easy way and just grinded it out, now I'm near the top of the leaderboard. 254 power :smug:. This game is gonna allow for some absurd code golf using conditional instructions:
http://i.imgur.com/iLPhxwX.png

Jeffrey of YOSPOS fucked around with this message at 04:19 on Oct 7, 2016

zedprime
Jun 9, 2007

yospos
Its beautiful. I'm torn if they should have a stricter test case with overlapping button presses. On one hand it's for Joe and he's going to get drunk and slam both buttons because he doesn't remember the rules. But on the other hand of course the cheap electronics are going to behave poorly in edge cases.

ErIog
Jul 11, 2001

:nsacloud:
This game rules. The atmosphere is great. I'm so glad I ordered the physical manual and I can't wait until it gets to me.

I coasted smoothly up through the drinking game thanks to all the time I put into TIS-100 and not caring at all about cost/power. Now feel like I've hit a bit of a wall with the level after that. I'm gonna see what I can figure out on my own before I read the first page of this thread, though. Please add me on steam where my name is "ERLOG" (That's with an 'L' not an 'i') I have the dinosaur from Braid as my av.

zedprime posted:

Its beautiful. I'm torn if they should have a stricter test case with overlapping button presses. On one hand it's for Joe and he's going to get drunk and slam both buttons because he doesn't remember the rules. But on the other hand of course the cheap electronics are going to behave poorly in edge cases.

This was also a bit of a factor in TIS-100 and the reason why it was early-accessed similar to Shenzen. Noticing the bounds of the input and using that to your advantage is part of the optimization challenge, but there were one or two puzzles in TIS-100 where there were limitations in the test data that weren't intended that got fixed before full release. So anticipate that some of your solutions to some of these puzzles might be obsoleted as the game is tuned.

ErIog fucked around with this message at 05:18 on Oct 7, 2016

Jeffrey of YOSPOS
Dec 22, 2005

GET LOSE, YOU CAN'T COMPARE WITH MY POWERS
Pushing both buttons will work fine, its only holding one for a tick then pressing the other without releasing it that will cause an issue. Even a drunk guy won't do that!!

Jeffrey of YOSPOS
Dec 22, 2005

GET LOSE, YOU CAN'T COMPARE WITH MY POWERS
What do you guys think the third metric is going to be? I'm guessing it's going to be minimizing the number of instructions in your busiest cycle - gotta make timing closure.

ErIog
Jul 11, 2001

:nsacloud:

Jeffrey of YOSPOS posted:

What do you guys think the third metric is going to be? I'm guessing it's going to be minimizing the number of instructions in your busiest cycle - gotta make timing closure.

I think it's going to be something like mm of traces you use. That doesn't factor into the cost metric right now, and it would be similar to how KONSTRUKTOR graded you. It's also a logical thing to try to optimize for.

nielsm
Jun 1, 2009



ErIog posted:

I think it's going to be something like mm of traces you use. That doesn't factor into the cost metric right now, and it would be similar to how KONSTRUKTOR graded you. It's also a logical thing to try to optimize for.

Or perhaps size of print required. Similar to the game prototyping challenge that doesn't have a set board size, maybe later have an unlimited board size but then get graded on making it more compact.

Fuzzy Mammal
Aug 15, 2001

Lipstick Apathy
Having a blast so far. Here's my scores in case anyone cares.

Pulse Generator 3/139/?
Light-up Signs 9/205/? (My buddy has 200 somehow) or 7/218/?
Rubbish Audio 6/416/?
Bring out the Baron 8/660/? (254 now thanks to Jeffrey)
Infrared Sensor 8/462/?
VR Buzzer 5/173/?
Device 2A27 6/599/?
Cool Dad 14/525/?
Little Help 8/256/?

e: Lol I just saw the undocumented instructions. That'll be some rework...

Jeffrey of YOSPOS
Dec 22, 2005

GET LOSE, YOU CAN'T COMPARE WITH MY POWERS

Jeffrey of YOSPOS posted:

lol I skipped doing that one the easy way and just grinded it out, now I'm near the top of the leaderboard. 254 power :smug:. This game is gonna allow for some absurd code golf using conditional instructions:
http://i.imgur.com/iLPhxwX.png
I made the solution here way better, I only used the 3-cost board and I had an instruction to spare. Not sure if I should really post spoilers but man, this game owns.

pumpinglemma
Apr 28, 2009

DD: Fondly regard abomination.

Pollyanna posted:

I think there's a good reason why I don't do embedded development :(

I'm at the problem that basically decomposes down into a really gross conditional statement, and even wrapping my head around it is giving me a headache. I think I might put that one off until tomorrow.

edit: Also I have no idea what the IO splitter is supposed to be used for.

That one gets easier when you notice that you can write the algorithm as "start with zero, add 30 if you're on the left or right side, and add 50 if you're in the square". The splitter isn't too useful when you get it, but becomes worth its weight in gold when you start dealing with boards that have 2-3 simple inputs and 2-3 simple outputs. Basically it saves you from needing to add extra chips just to deal with the fact that all your current chips only have two simple I/O pins.

Jabor
Jul 16, 2010

#1 Loser at SpaceChem
Christ, I just played until 5am :cripes: It sure feels good to get solutions that are off the front end of the histogram though.

I'm going to be optimizing a bunch of stuff while on an airplane over the weekend, presumably those scores will still submit once I come back online? I presume I'll have to rerun the solutions to get them to actually count, but that's okay.

The solitaire minigame is a bit tricky, but some boards seem a lot easier than others.

Phssthpok
Nov 7, 2004

fingers like strings of walnuts
There's some really great tension between digital and analog, synchronous and async ways of doing the same things. I thought I couldn't do infrared sensor in less than 8¥ until I changed some intermediate signals from X to P. I am completely lost trying to add sound to the prototype game without blocking.

Add me for high scores: http://steamcommunity.com/id/myhf/

SupSuper
Apr 8, 2009

At the Heart of the city is an Alien horror, so vile and so powerful that not even death can claim it.

NickPancakes posted:

SupSuper is too good at this game, gatdamn. I need to step my game up.
If by good you mean bruteforce everything since the game doesn't measure you by actual time taken like TIS-100. :engleft:

NickPancakes posted:

I just PMed the mod of TGS to see if they'd be opposed to a Zachtronics Steam Profile Sharing thread in there, so we can share our steam profile links freely behind the paywall and not flood this thread. I'll update the OP with a link if we get the OK.
Odds are the people in the previous Zachtronics groups will be playing this as well.

Edit: Have a Steam profile to shame your ancestors: http://steamcommunity.com/id/supsuper

SupSuper fucked around with this message at 10:07 on Oct 7, 2016

Spookydonut
Sep 13, 2010

"Hello alien thoughtbeasts! We murder children!"
~our children?~
"Not recently, no!"
~we cool bro~
Jesus where did the day go, currently stuck on the coin machine and the rgb led.

Does the sealed envelope contain an english language page about @ and gen?

Guy Axlerod
Dec 29, 2008
Is Cloud Sync broken? I'd like to move my game from my macbook to my PC. It's uploading on my mac, but not downloading. I've never really used the sync before, so I don't know if this is just typical and I need to just copy some files.

New Zealand can eat me
Aug 29, 2008

:matters:


profile URLs for the profile URL god https://steamcommunity.com/id/_sneakyness/

ErIog
Jul 11, 2001

:nsacloud:

Guy Axlerod posted:

Is Cloud Sync broken? I'd like to move my game from my macbook to my PC. It's uploading on my mac, but not downloading. I've never really used the sync before, so I don't know if this is just typical and I need to just copy some files.

Same thing just happened to me. I played all day at work on Linux. It was uploading fine. I get home. Install it on my Mac and my save has now disappeared.

New Zealand can eat me
Aug 29, 2008

:matters:


How is this happening? Conditionals are not working like I figured they would?

I figured it would not reach this line unless the first teq was true and the second teq is false, but it's just jumping to this line on the false condition of the first teq after the first - line



Picture is slightly misleading, it gets there on step 3

Pollyanna
Mar 5, 2005

Milk's on them.


New Zealand can eat me posted:

How is this happening? Conditionals are not working like I figured they would?

I figured it would not reach this line unless the first teq was true and the second teq is false, but it's just jumping to this line on the false condition of the first teq after the first - line



Picture is slightly misleading, it gets there on step 3

IIRC conditional tests just enable or disable certain lines, so after - slp 1 runs, everything with a + in front of it is skipped, which moves it to - jmp buzz.

New Zealand can eat me
Aug 29, 2008

:matters:


that is loving stupid I hate this game :argh:

let me nest things like -- or something, this game clearly isn't complicated enough

I guess I'll have to find another way :sigh:

Zteuer
Nov 8, 2009
I think you have to make sure that the game can see a new conditional in both + and - branches when using branching conditionals.

Things I slapped my face when I figured out (I'm slow):
* You can have several non-signed lines of code mixed in with the branches.
* You can mix up the order for + and - branches.

There is quite a bit of flexibility to it.

Jeffrey of YOSPOS
Dec 22, 2005

GET LOSE, YOU CAN'T COMPARE WITH MY POWERS

Zteuer posted:

I think you have to make sure that the game can see a new conditional in both + and - branches when using branching conditionals.

Things I slapped my face when I figured out (I'm slow):
* You can have several non-signed lines of code mixed in with the branches.
* You can mix up the order for + and - branches.

There is quite a bit of flexibility to it.
You can even interleave the branches. At first it seems harder to read because you don't execute things in order, but it helps find places where you do the same thing in both branches and thus can refactor.

Popete
Oct 6, 2009

This will make sure you don't suggest to the KDz
That he should grow greens instead of crushing on MCs

Grimey Drawer
So when does a conditional flag end? After you loop back to the top of your code? Or only when a new conditional is met?

Jeffrey of YOSPOS
Dec 22, 2005

GET LOSE, YOU CAN'T COMPARE WITH MY POWERS

Popete posted:

So when does a conditional flag end? After you loop back to the top of your code? Or only when a new conditional is met?

Only when a new conditional is met - think of the condition flags as another variable or register or whatever that you set with test instructions.

Ben Nerevarine
Apr 14, 2006

Fuzzy Mammal posted:

e: Lol I just saw the undocumented instructions. That'll be some rework...

What are these instructions?

I was stuck for over an hour on Rubbish Audio because I hadn't yet realized Xbus ports could be linked up between chips i.e. I was trying to solve it using only 1 input per chip. :ughh:

Feels like smooth sailing after that minor fiasco.

Jabor
Jul 16, 2010

#1 Loser at SpaceChem

Shab posted:

What are these instructions?

Check your email.

Jabor
Jul 16, 2010

#1 Loser at SpaceChem
Oh yeah and add me on steam if you want a cool middle-of-the-road benchmark to check your stats against

http://steamcommunity.com/id/jabor/

zedprime
Jun 9, 2007

yospos
They really throw you in the deep end with that first division with remainders implementation, don't they?



That behavior isn't even in the spec :argh:

ErIog
Jul 11, 2001

:nsacloud:

zedprime posted:

That behavior isn't even in the spec :argh:

:drat:

Most realistic part of the game, imo.

Adbot
ADBOT LOVES YOU

Spookydonut
Sep 13, 2010

"Hello alien thoughtbeasts! We murder children!"
~our children?~
"Not recently, no!"
~we cool bro~
Friend thingies sent edit: moved profile to http://forums.somethingawful.com/showthread.php?threadid=3793493

Spookydonut fucked around with this message at 16:35 on Oct 7, 2016

  • Locked thread