I just observed, you AC is no longer working properly. Dining Room increased by 2 degree to 23 and green house is already at 28. This could be the next dead green house if not handled.
I think coding the LARrE is a good example how half your total stationeers playtime can be the IC10 coding… sometimes you just sit there for hours to figure out and fix code problems. Still congrats on the more complicated setups and sequencing. I definitely agree having someone who knows the stack sit with you 1on1 to explain it better and how to manipulate it. Im pretty sure the chat could explain it, but grasping how to work and understand an already hard to visualize part of programming is worse with 15 different people explaining it in that many ways. Only thing i can say is that when you use the push instruction to write to the stack, it writes the data in and increments the stack pointer (sp) register. But when you want to grab data with the pop or peek instructions, it grabs data from where the stack pointer currently is. Logically that means you grab the last data you put in first. So working with the stack is putting data in at specific stack pointer locations and then manipulating the sp register to only pull what you want out. The stack memory can hold 512 numbers, it is highly recommended that messing with it you have your own paper and pencil table of what data should be at what memory location. It may be able to help you form a pattern or logic for manipulating the stack pointer in the event you want to use it for looping instructions. Once again, congrats on the LARrE code! The dopamine rush from making something work like that is awesome, and you saved it for later use so you can upscale the operation to have a robot workshop of LARrE’s harvesting and planting for you!
Hey Splitsie, that was very good progress in this episode with the LARrE code! I have one suggestion that might simplify it slightly (no stacks). Create one label (after the start: label, I just have it here to make sense while writing this). checktray: # put ra in r12 because I think your other functions (harvesting, planting) are using r13 and would overwrite it move r12 ra # do all branch checks here using the registers Tray & Seeding (r15 & r14) lbns r0 -12345 Tray Seeding Sum beqzla r0 0 harvesting lbns -12345 Tray Occupied Sum ... move ra r12 # will jump back to the last checktray to continue with the next Tray in the row j ra Then modify your start: code to just: start: move Tray HASH("Planter 2") move Station 2 jal checktray move Tray HASH("Planter 3") move Station 3 jal checktray ... j start That way, your "main loop" will just go through all trays, set all the registers (aka variables), and then jump to the function "checktray" to do the work and then control your LARrE from there. This will save you a couple of lines and might be less confusing in a couple of months when you look back at the code :) Hope it makes sense to you! :) PS: I might have messed up some IC10 instructions (like spelling) here and there, as I'm doing this all from memory, but the overall structure should still work :)
TL;DR: If this is confusing, then don't worry about it. It works fine as is if you don't change much. I just wanted to offer a suggestion in your Larry code. Where you have the hash name being moved to r15, you might want to move that up a line so that you can use the r15 (or Tray alias) in your lbns line. jal WaitIdle move Tray HASH("Hydroponics Device 2") move Station 2 lbns r0 -1841632400 Tray 0 Occupied Sum beqzal r0 Planting jal Harvesting It will mean fewer lines to edit when adding more stations (only saving editing one line but still). My other suggestion is to prevent yourself from possibly being confused in the future. At the end of your SeedCrop section, you are moving the jump location from r13, back to ra ('move ra r13'), but you are relying on this being what it was set to by the Harvesting section. Instead, you may want to make the branch to SeedCrop be `bgtzal` instead (adding "al" to the end), and save ra to another register ('move r12 ra' at the beginning then 'move ra r12' at the end). The reason being that it can be very easy to see something being moved from a register, but not see it being set within that section (r13 is never being set in SeedCrop), and wondering why it's doing that. Anyway, great job on learning how to program the LArRE!
From moving the 'move' commands above the check, it's just one more step to how I would have done it. Which is to move the check into a function, just like the check for seeding. The advantage is that you're only repeating 3 lines, which will be invaluable once you want LArRE to tend to 25-ish planters. Here's the parts of the code that would change: ------------------------------------- Start: jal WaitIdle move Tray HASH("Hydroponics Device 2") move Station 2 jal Handle_one_Plant move Tray HASH("Hydroponics Device 3") move Station 3 jal Handle_one_Plant ... j Start ... Handle_One_Plant: move r13 ra lbns r0 -1841632400 Tray 0 Occupied Sum beqz r0 Planting lbns r0 -1841632400 Tray 0 Seeding Sum bgtz r0 SeedCrop move ra r13 j ra ------------------------------------- Where the "Handle_One_Plant" function replaces the current "Harvesting" function.
it's asteticaly a poke in the eye, but you could try putting the grow lights on the floor, then mock ones where you actually wanted them. that way you get the look of the lights, even tho they don't work and the one below them doing the heavy lifting.
Calling the programming language "MIPS" is ironic since it resembles a superset of RISC style assembly languages. This is very much like assembly, except actual assembly can be more cryptic as I'm pretty sure there are limitations on text labels. In effect, Splitsie, you're starting really low-level or close to the silicon where many students would start at a much higher abstraction level like Python or Lisp. I actually did university coursework on actual (virtual) MIPS processors. Very efficient design, though unfortunately no one had pockets deeper than Intel (and later ARM, Apple, Samsung, and Qualcomm...). So I'm kinda excited about the new RISC-V architecture, hopefully it can become what MIPS could have been if it were more competitive. Everyone who doesn't want to pay ARM mucho licensing fees is sticking RISC-V cores into their chips.
One of the devs said they made MIPS the way it is in the game on purpose. They specifically didn't want a higher level programming language. I presume it would also make the underlying game code much more difficult to manage (or even risk breaking the game). Plus, like everything else in stationeers, it means the player is forced to experiment in order to get (and keep) things running smoothly.
*"We have a Fern! .. It is Planted!"* - Had to replay that clip 3x times to figure out what lead to it. It was like Archimedes shouting "Eureka", running naked from his bath through the streets (after discovering buoyancy). # I'd kinda zoned out short up to that point, waiting for the Splitz to get there. I remember my first Eureka moment in coding (having felt like a poser, despite my education).. then realizing it all just works, the same.. _"just stop complaining about it, you already know what you have to do"._ Yes.. just more of that. It's just logic.. but more of it (but group it together.. if you don't want to repeat the same, over and over.. if it seems there's a pattern.. abstract it, and re-use.. loop it etc.). Break the problem into ever simpler parts until you can tell the thing explicitly what to do. ..Then.. after a personal little hissy-fit.. do it faster. Then after a while, my brain doesn't hurt as much.. I actually started to believe I have an ok brain. Maybe an even smart one. Just let the brain do it.. don't make it personal.
@@tomvanaarle2622 That comment of mine was more to make a point, than to present actual facts (which may or may not have been true - I hope sincerely they were, but I was just going off my own fallible memory, off the top of my head).. but I'm glad to be corrected on the finer points you'd want to present. Thank you, for calling me out on it, if I made a mistake. I tend to look things up before I make statements like that. So I just did (google) it again.. if you google: ""who discovered buoyancy"... and the first answer that comes up is¨Archimedes".. then your criticism should be directed towards Google, not towards me. Right? Though I could still have misread it in haste to answer your comment. I just remember something about a rubber ducky in his bathtub.. and him running naked through the streets, shouting Eureka. I guess it could just be apocryphal like the apple falling on Newton's head, or Washington chopping down the cherry tree.. right.. If the larger point was about them being founders of he US, or of Calculus.. does that really matter?
@@tomvanaarle2622 If I understand correctly, the "buoyant force" is proportional to the mass of the body in question. According to Britanica: "Archimedes' principle: A body at rest in a fluid is acted upon by a force pushing upward called the _buoyant force,_ which is equal to the weight of the fluid that the body displaces. If the body is completely submerged, the volume of fluid displaced is equal to the volume of the body." So you were also correct..
@@fourdotsYT It was rather obvious that someone living in a time period and region crawling with trade vessels did not discover buoyancy as such. But he did explain *why* some objects float and others do not.
i know my programming is also not the best but if i am not wrong u could shrink the down code at least 25% and with an reapead command i think u need only 2 tray positions but then i think larry would move all the time to scan the plants ^^°
only at 16 min into the video, so I don't know if you solved this. I expect with your current comfort level with the coding you will want to limit the number of hydroponics devices each larrie services to the number of spare pins on the IC housing. I would have a seperate IC10 for controlling the chute in/output and going from there. My second thought would be to have one (or a group) ic10 to read the stats of the hydo bays, and pass the station number to a second IC10 that controls the larrie via the IC housing. and based on what the larrie picks up from the station, it decides to do different actions. (only issue is if the hydro station is empty then how to tell the larrie to pickup a seed/plant first. one thought on this is add 100 to the station number and have it programed in that station numbers > than 100 are go to pickup chute then subtract 100 from station number then go to station number and interact)
ok now i'm at the 2 hour mark. and have further input load device 1 into r15, and it's station stop into r14. Then jump to check cycle. once there, check to see if it is occupied if not jump to plant. if it is then check if seeded if is is then jump to harvest seed then plant. if it hasn't seeded then jump back and load next device/ station into their respective r# and jump to check cycle again.
the only change I would make to your script is define the pickup and dropoff station (incase you set it up differently or want to add fertilizer as another pickup)
Will the grid snap allow you to have the grow lights between the rails of the LARrE so the light is more even for the plants? Sorry, I posted before seeing all of the video. "Nun Soup". As bad as people consider Ben's jokes now that was one of the ones I remembered most. When playing Jedi Academy I would sometimes use the Mind Trick cheat where I could remote control opponents. On the levels that had lava and molten metal I would jokingly think to my self "Stormtrooper Soup".
Good video and I enjoyed watching. And I have a question; Do you have any videos on how to build an Ai Radar? I watched other videos on this subject however; the radar that I build does not work.
Hi, unfortunately I'm not familiar with the programming language in Stationeers, but wouldn't it be possible to program a loop? If you always increase a variable +1 in the loop, you save the code for each pot and only need it once. This means you could cover many more pods with one LARrE and not run into space limits in the code.
@@Flipsie I do think it's possible to parse through the hashes one by one. I.e. set the hash for a specific tray, jump to do all the checks on that specific tray, replant or harvest if needed, then return to that initial parse-loop and set the next hash, rather than having a separate check for each hash before going to the actions. Although in the end, it wouldn't save you THAT many lines of code, it might make adding more trays a little bit easier. But it seems to work fine as it is now, so perhaps keep the code optimization for the next Larry setup..
If you're ever wondering about stuff like that, make sure you check the community page of my channel as I posted about it here :) th-cam.com/users/postUgkxywnL6GELPQVfYhEQ7D2kc4frWEa4G-EO
I assume, it didn't get made. Because of the poweroutage TFE suffered. Be patient and "suffer" in the anticepation. Have a wonderful day, nonetheless.😃
Your assumption would be wrong, it did get made but it's a big special so it took longer and will be coming out today instead (all info that's in the link I posted) :)
@@Flipsie I've noticed. Haven't seen it yet. Will do once fully rested and awake. At the time the episode wasn't up, so it was the most plausible conclusion for me. Thank you for the nice comment. Enjoy your trail on the deathworld with Shadow. ;)
I just observed, you AC is no longer working properly. Dining Room increased by 2 degree to 23 and green house is already at 28. This could be the next dead green house if not handled.
He turned it off the week prior to limit power problems and has forgotten to turn it back on
I think coding the LARrE is a good example how half your total stationeers playtime can be the IC10 coding… sometimes you just sit there for hours to figure out and fix code problems.
Still congrats on the more complicated setups and sequencing.
I definitely agree having someone who knows the stack sit with you 1on1 to explain it better and how to manipulate it. Im pretty sure the chat could explain it, but grasping how to work and understand an already hard to visualize part of programming is worse with 15 different people explaining it in that many ways.
Only thing i can say is that when you use the push instruction to write to the stack, it writes the data in and increments the stack pointer (sp) register. But when you want to grab data with the pop or peek instructions, it grabs data from where the stack pointer currently is. Logically that means you grab the last data you put in first. So working with the stack is putting data in at specific stack pointer locations and then manipulating the sp register to only pull what you want out.
The stack memory can hold 512 numbers, it is highly recommended that messing with it you have your own paper and pencil table of what data should be at what memory location. It may be able to help you form a pattern or logic for manipulating the stack pointer in the event you want to use it for looping instructions.
Once again, congrats on the LARrE code! The dopamine rush from making something work like that is awesome, and you saved it for later use so you can upscale the operation to have a robot workshop of LARrE’s harvesting and planting for you!
Tell him to find a local card shop and learn Magic the Gathering
Hey Splitsie, that was very good progress in this episode with the LARrE code! I have one suggestion that might simplify it slightly (no stacks).
Create one label (after the start: label, I just have it here to make sense while writing this).
checktray:
# put ra in r12 because I think your other functions (harvesting, planting) are using r13 and would overwrite it
move r12 ra
# do all branch checks here using the registers Tray & Seeding (r15 & r14)
lbns r0 -12345 Tray Seeding Sum
beqzla r0 0 harvesting
lbns -12345 Tray Occupied Sum
...
move ra r12
# will jump back to the last checktray to continue with the next Tray in the row
j ra
Then modify your start: code to just:
start:
move Tray HASH("Planter 2")
move Station 2
jal checktray
move Tray HASH("Planter 3")
move Station 3
jal checktray
...
j start
That way, your "main loop" will just go through all trays, set all the registers (aka variables), and then jump to the function "checktray" to do the work and then control your LARrE from there.
This will save you a couple of lines and might be less confusing in a couple of months when you look back at the code :) Hope it makes sense to you! :)
PS: I might have messed up some IC10 instructions (like spelling) here and there, as I'm doing this all from memory, but the overall structure should still work :)
TL;DR: If this is confusing, then don't worry about it. It works fine as is if you don't change much.
I just wanted to offer a suggestion in your Larry code. Where you have the hash name being moved to r15, you might want to move that up a line so that you can use the r15 (or Tray alias) in your lbns line.
jal WaitIdle
move Tray HASH("Hydroponics Device 2")
move Station 2
lbns r0 -1841632400 Tray 0 Occupied Sum
beqzal r0 Planting
jal Harvesting
It will mean fewer lines to edit when adding more stations (only saving editing one line but still).
My other suggestion is to prevent yourself from possibly being confused in the future. At the end of your SeedCrop section, you are moving the jump location from r13, back to ra ('move ra r13'), but you are relying on this being what it was set to by the Harvesting section.
Instead, you may want to make the branch to SeedCrop be `bgtzal` instead (adding "al" to the end), and save ra to another register ('move r12 ra' at the beginning then 'move ra r12' at the end). The reason being that it can be very easy to see something being moved from a register, but not see it being set within that section (r13 is never being set in SeedCrop), and wondering why it's doing that.
Anyway, great job on learning how to program the LArRE!
From moving the 'move' commands above the check, it's just one more step to how I would have done it. Which is to move the check into a function, just like the check for seeding. The advantage is that you're only repeating 3 lines, which will be invaluable once you want LArRE to tend to 25-ish planters.
Here's the parts of the code that would change:
-------------------------------------
Start:
jal WaitIdle
move Tray HASH("Hydroponics Device 2")
move Station 2
jal Handle_one_Plant
move Tray HASH("Hydroponics Device 3")
move Station 3
jal Handle_one_Plant
...
j Start
...
Handle_One_Plant:
move r13 ra
lbns r0 -1841632400 Tray 0 Occupied Sum
beqz r0 Planting
lbns r0 -1841632400 Tray 0 Seeding Sum
bgtz r0 SeedCrop
move ra r13
j ra
-------------------------------------
Where the "Handle_One_Plant" function replaces the current "Harvesting" function.
it's asteticaly a poke in the eye, but you could try putting the grow lights on the floor, then mock ones where you actually wanted them. that way you get the look of the lights, even tho they don't work and the one below them doing the heavy lifting.
Loving this series
Should setup Suit Stations and mabe a Water Fountain. Agreed on knocking out an area for living space in that wall of the green house
Disagree. I think he should make the elevator/lift go up to a penthouse apartment with a view over the Venusian landscape.
Calling the programming language "MIPS" is ironic since it resembles a superset of RISC style assembly languages. This is very much like assembly, except actual assembly can be more cryptic as I'm pretty sure there are limitations on text labels. In effect, Splitsie, you're starting really low-level or close to the silicon where many students would start at a much higher abstraction level like Python or Lisp.
I actually did university coursework on actual (virtual) MIPS processors. Very efficient design, though unfortunately no one had pockets deeper than Intel (and later ARM, Apple, Samsung, and Qualcomm...). So I'm kinda excited about the new RISC-V architecture, hopefully it can become what MIPS could have been if it were more competitive. Everyone who doesn't want to pay ARM mucho licensing fees is sticking RISC-V cores into their chips.
One of the devs said they made MIPS the way it is in the game on purpose. They specifically didn't want a higher level programming language. I presume it would also make the underlying game code much more difficult to manage (or even risk breaking the game). Plus, like everything else in stationeers, it means the player is forced to experiment in order to get (and keep) things running smoothly.
*"We have a Fern! .. It is Planted!"*
- Had to replay that clip 3x times to figure out what lead to it. It was like Archimedes shouting "Eureka", running naked from his bath through the streets (after discovering buoyancy).
# I'd kinda zoned out short up to that point, waiting for the Splitz to get there.
I remember my first Eureka moment in coding (having felt like a poser, despite my education).. then realizing it all just works, the same.. _"just stop complaining about it, you already know what you have to do"._ Yes.. just more of that. It's just logic.. but more of it (but group it together.. if you don't want to repeat the same, over and over.. if it seems there's a pattern.. abstract it, and re-use.. loop it etc.).
Break the problem into ever simpler parts until you can tell the thing explicitly what to do.
..Then.. after a personal little hissy-fit.. do it faster.
Then after a while, my brain doesn't hurt as much.. I actually started to believe I have an ok brain.
Maybe an even smart one. Just let the brain do it.. don't make it personal.
Archimedes did not discover buoyancy but relative mass.
@@tomvanaarle2622 That comment of mine was more to make a point, than to present actual facts (which may or may not have been true - I hope sincerely they were, but I was just going off my own fallible memory, off the top of my head).. but I'm glad to be corrected on the finer points you'd want to present.
Thank you, for calling me out on it, if I made a mistake.
I tend to look things up before I make statements like that.
So I just did (google) it again.. if you google: ""who discovered buoyancy"... and the first answer that comes up is¨Archimedes".. then your criticism should be directed towards Google, not towards me. Right?
Though I could still have misread it in haste to answer your comment.
I just remember something about a rubber ducky in his bathtub.. and him running naked through the streets, shouting Eureka.
I guess it could just be apocryphal like the apple falling on Newton's head, or Washington chopping down the cherry tree.. right..
If the larger point was about them being founders of he US, or of Calculus.. does that really matter?
@@fourdotsYT I "asume" you are on point with Newton and Washington ... and yeah most likely Archimedes too.
@@tomvanaarle2622 If I understand correctly, the "buoyant force" is proportional to the mass of the body in question.
According to Britanica:
"Archimedes' principle: A body at rest in a fluid is acted upon by a force pushing upward called the _buoyant force,_ which is equal to the weight of the fluid that the body displaces. If the body is completely submerged, the volume of fluid displaced is equal to the volume of the body."
So you were also correct..
@@fourdotsYT It was rather obvious that someone living in a time period and region crawling with trade vessels did not discover buoyancy as such.
But he did explain *why* some objects float and others do not.
If you write it to work with a batch reader and writer you can have multi on one input
Good job getting it to work!
Thanks 🙂
It's been great to see your progression in coding 😁Don't be afraid of the stack! It can be such a useful tool.
i know my programming is also not the best but if i am not wrong u could shrink the down code at least 25% and with an reapead command i think u need only 2 tray positions but then i think larry would move all the time to scan the plants ^^°
only at 16 min into the video, so I don't know if you solved this. I expect with your current comfort level with the coding you will want to limit the number of hydroponics devices each larrie services to the number of spare pins on the IC housing. I would have a seperate IC10 for controlling the chute in/output and going from there.
My second thought would be to have one (or a group) ic10 to read the stats of the hydo bays, and pass the station number to a second IC10 that controls the larrie via the IC housing. and based on what the larrie picks up from the station, it decides to do different actions. (only issue is if the hydro station is empty then how to tell the larrie to pickup a seed/plant first. one thought on this is add 100 to the station number and have it programed in that station numbers > than 100 are go to pickup chute then subtract 100 from station number then go to station number and interact)
and with the logic listed above if you add 200 to the station then it can tell us that that station need fertilizer
ok now i'm at the 2 hour mark. and have further input
load device 1 into r15, and it's station stop into r14. Then jump to check cycle. once there, check to see if it is occupied if not jump to plant. if it is then check if seeded if is is then jump to harvest seed then plant. if it hasn't seeded then jump back and load next device/ station into their respective r# and jump to check cycle again.
and it looks like that is exactly what you did. except you are using one less subroutine
the only change I would make to your script is define the pickup and dropoff station (incase you set it up differently or want to add fertilizer as another pickup)
Will the grid snap allow you to have the grow lights between the rails of the LARrE so the light is more even for the plants? Sorry, I posted before seeing all of the video.
"Nun Soup". As bad as people consider Ben's jokes now that was one of the ones I remembered most. When playing Jedi Academy I would sometimes use the Mind Trick cheat where I could remote control opponents. On the levels that had lava and molten metal I would jokingly think to my self "Stormtrooper Soup".
Good video and I enjoyed watching. And I have a question; Do you have any videos on how to build an Ai Radar? I watched other videos on this subject however; the radar that I build does not work.
I've not tried yet, it's on the list to try at some point though
@@Flipsie Thank you replying and i look forward for see it.
I need to play more Stationeers
Hi, unfortunately I'm not familiar with the programming language in Stationeers, but wouldn't it be possible to program a loop? If you always increase a variable +1 in the loop, you save the code for each pot and only need it once. This means you could cover many more pods with one LARrE and not run into space limits in the code.
As far as I'm aware, no it's not possible, because you can't increment the hash that way
@@Flipsie I do think it's possible to parse through the hashes one by one.
I.e. set the hash for a specific tray, jump to do all the checks on that specific tray, replant or harvest if needed, then return to that initial parse-loop and set the next hash, rather than having a separate check for each hash before going to the actions.
Although in the end, it wouldn't save you THAT many lines of code, it might make adding more trays a little bit easier.
But it seems to work fine as it is now, so perhaps keep the code optimization for the next Larry setup..
No assert acquisitions this week?
If you're ever wondering about stuff like that, make sure you check the community page of my channel as I posted about it here :) th-cam.com/users/postUgkxywnL6GELPQVfYhEQ7D2kc4frWEa4G-EO
I assume, it didn't get made.
Because of the poweroutage TFE suffered.
Be patient and "suffer" in the anticepation.
Have a wonderful day, nonetheless.😃
Your assumption would be wrong, it did get made but it's a big special so it took longer and will be coming out today instead (all info that's in the link I posted) :)
@@Flipsie I've noticed.
Haven't seen it yet.
Will do once fully rested and awake.
At the time the episode wasn't up, so it was the most plausible conclusion for me.
Thank you for the nice comment.
Enjoy your trail on the deathworld with Shadow. ;)