Posts for feos

1 2
15 16 17
439 440
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
So instead of the triviality rule (ban) we now have this:
Wiki: Glossary#VideoGame wrote:
  • A video game is audio/visual. It presents its content on some electronic device in audio and/or video form.
  • A video game is interactive. It requires repeated user input to progress.
  • A video game poses a virtual task. It requires the player to accomplish some in-game job.
  • User input is transformative. Which set of suggested in-game choices you make determines optimality level of your play.
  • A video game is finite. It has an objective end point, or a community vetted one. Note that this definition is strictly for TASVideos, and is not meant to objectively define a video game in all contexts.
While most of these are matched by this game, the question is how do we determine/define optimality? Can you be more or less optimal and get different completion time? Is optimality there outside of how it sounds? By playing as good as possible, do you get higher score and/or better time?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
After going to an older ruffle it didn't spam errors from frame 80, so I thought it was good and edited it to say it was fine, but it did still spam errors after 1k frames, and the video was still broken since frame 80, just differently. So I removed the edit and instead listed what I'm running it against. tl;dr: still broken.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
If I try to dump video I get ERROR: glReadPixels failed with error 1282 spam to console and broken video after frame 80. With -g vulkan and without graphics argument it desyncs. How did you dump it? libTAS 1.4.4 + ruffle nightly 2023-03-31 513771_Uncharted2.swf CRC32: 788700C2 MD5: E61E7E8CF2AB42AC66BD6D5BF71A8863 SHA-1: 9CA355BD6B716DB7818874A7415416F7BF031EA1
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
rythin wrote:
I've always felt like Standard was missing a goal for something along the lines of "forgoes the use of one common glitch", where the movie can still feature many glitches of various severity, but omits one particular one that would otherwise be repeated throughout the movie.
Samsara wrote:
It could be as obvious as Zelda 2's L+R glitch or as subtle as this run shooting things outside of window bounds just as long as the core gameplay is noticeably and meaningfully changed.
So yeah, a "zipless" Sonic or Megaman.
Samsara wrote:
I think a big problem here though is that we run the risk of overpopulating a game with similar branches, which as much as I tend to think "What's the issue with adding more branches?" these days, it wouldn't really make sense to have "any%", "any% that uses a movement glitch but foregoes major skips", "any% that uses major skips but foregoes a movement glitch", and "any% that doesn't use any glitches" all alongside each other. Even in the case of this game, I'm wondering whether or not it actually makes sense to have "any% that uses no window bounds and a level skip glitch" and "any% that uses the level skip glitch but stays within bounds" alongside each other. Were someone(stuff) to make a version that foregoes both, would that be a separate branch as well? I think we might have to make it a sort of nebulous thing where we can accept any of these kinds of branches as standard, but depending on the game and the glitches there may be cases where we have to figure out what branches are worth keeping published together and what branches might have to go to Alternative or Playground.
I don't particularly mind similar branches, nor "how many is too many". The thing I want for Standard is an explainable system that feels clear and helpful. Of course some cases of its application may be less clear than others, but that's because a certain game decides to do things in a unique weird way, so we rely on subjective things more if we need. Since it looks like the current system doesn't solve this movie, I suggest we first try to check if it's solved by minor tweaks to the current system. Are there games where a major skip glitch is a different entity from this repeated gameplay-changing glitch, and we'd want all variations of branches: with both, with only one, with only another, and with none? What if repeated gameplay-changing glitch is treated like MSG if a game doesn't have MSG? Basically, what if we turn the "no major skip glitch" category into "no biggest glitch"? Another idea is borrowing our definition of skipped gameplay from the "cheats" category and drawing the line there. MSG completely skips gameplay, while repeated gameplay-changing glitch changes it (or maybe even adds more of it?). Of course the question becomes what to do with other glitches that may change gameplay, and also with glitches that skip non-major parts of it. Does the severity usually go like this: one major skip > all gameplay changers > all minor skips? What about glitches that simply make some things faster? Overall I'm in favor of having a "minimal glitches" category. For games with clear difference between a glitch and a normal mechanic, it would result in an obvious definition of "glitchless", and in more complicated games we'd just rely on whatever has a community consensus.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
Did you watch the existing publication while making your run? In the palace you take a different route and collect a different stone (not mentioned as an improvement), and apparently it costs you about 10 more frames. You skip this stone (which costs Johnnypoiro 72-76 frames, depending on how you count) and collect this one instead (which costs you 88 frames of detour) I compared gameplay more closely, and it looks like you make better decisions, so your movie is still faster overall, but there's definitely room for more. And I personally prefer the SMS version because it has the benefit of a bigger screen (and presence of in-game HUD) while not having any obvious shortcomings.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
vermiceli wrote:
After the Summoning Salt video showing the level skip bug, I decided to start with Trax's disassembly and take it further. I've made a complete disassembly of Contra with proper labels which allows for modification without breaking jumps and branching. It includes supplemental documentation, diagrams, lua scripts, and tooling to build the rom. This code is on github at https://github.com/vermiceli/nes-contra-us/
Thanks, added to Wiki: GameResources/NES/Contra#ExternalLinks
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
Dacicus wrote:
I probably have the originals on an old hard drive, if you want them.
Yes. Fixed by adelikat.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
I checked the palace too and couldn't find any easy improvements. Not sure myself what's the deal with the caves, maybe lag alignment played a role. You'd have to make a table of actions and their frames to see how long each of them takes in your and my version. There were several places where running was available quicker, and then I was able to dodge a boulder at 8235 instead of waiting for it. My guess about later levels was probably wrong, but when judging improvements it's usually either clear from using the same setup as the old movie (same emulator, game version, mode, options), or if it's on a different setup, the new run looks clearly superior by comparing gameplay, or a whole bunch of improvements is listed, and it isn't easily improvable itself. Subjectively, a version with a smaller screen is inferior, so I'm unsure why it was chosen. I'm not saying this movie isn't acceptable, I just mean it's unclear how to approach this. Maybe it's already fine as is, then I'd just need some opinions.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
rythin wrote:
I've always felt like Standard was missing a goal for something along the lines of "forgoes the use of one common glitch", where the movie can still feature many glitches of various severity, but omits one particular one that would otherwise be repeated throughout the movie. #7874: GMP's GC Prince of Persia: Warrior Within "zipless" in 24:56.15 is a great example of this in recent memory, though I'm sure there's many others that also fit the description.
How do we decide which glitch can/should be avoided? In the case of "zipless" movies, they all fit very well into Alternative.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
InputEvelution wrote:
While not necessarily applicable to these two TASes, I feel that it's worth talking about the limitations of off-screen mouse input in the official Flash Player, as this seems to have been the main argument used for allowing it. While you can indeed click things before they appear within the regular bounds of the screen in Adobe's offline Flash Player, you can't really do so along diagonals. Expanding the window in two dimensions at once merely causes Flash to expand things up to fill in the gap. So while it's possible to click things that are off-screen in one dimension, it's not possible to do so for things off-screen in both at once. It's also not possible to see anything beyond the normal bounds, at least in the games I tested.
It's optional.
InputEvelution wrote:
That being said, I am still not against the idea of having these as two separate branches. While I can't say I find its usage here to fall under the category of a "major skip glitch"...I would prefer it if TASers had the option to submit movies that specifically choose not to exploit this kind of thing. It feels...cheap? Unintended? Unentertaining? It's hard for me to pinpoint anything in my gut reaction that makes for a coherent point here, and it seems the few of those who have participated in discussions about this agree on accepting it, but I'd very much prefer to be able to keep making TASes that choose not to use it, without such things being treated as an "optimisation error" or "not in an entertaining enough movie". Frankly, the most I've been able to see myself using this is choosing a female worker in the Papa's games where a male worker would otherwise be faster to select. Perhaps L+R/U+D is worth considering in this discussion as well, if it's considered a rather similar issue to this.
rythin wrote:
Option B - The technique is used to save major amounts of time by directly interacting with gameplay in some way, either allowing for glitches that lead to major skips or significantly skipping intended waiting sections as happens here. [...] As for option B, it absolutely should be a separate branch. My initial thought would be to put both branches in Standard, with the one using off-screen clicks as the baseline, since I believe that's how it currently works with L+R input in older console games? Though doing it another way may be more practical, I'm rather new to the site and don't yet fully understand the decision-making behind how the branches and classes are structured.
The tricky part is when this technique results in gameplay difference, but that difference is not enough to go to Alternative. I listed options we have with the current rules at the bottom of this post. If we want this technique to be Standard eligible (meaning branches with and without it would co-exist regardless of entertainment), we need to come to a community agreement on which standard goal it would represent. If it's not about using and avoiding a major skip glitch, then we need a new standard goal for this. Which is in turn made tricky by similarities with L+R on old consoles: some games only get slightly faster over it, and some just break (there are probably other official intended limitations that we historically abuse, but I can't remember off the top of my head). I always felt uneasy thinking about having a Flash-only one-off standard goal that wouldn't be applicable to any other platform, just like we're all seeing the similarity between it and L+R. Can "simultaneous cardinal inputs" be a separate standard goal on its own, regardless of its difference? I'm not sure it makes sense to me. As I mentioned before, I'd be fine with having a standard goal along the lines of "fewest glitches", even if its definition is ultimately subjective. But at least once there's some kind of a definition, it becomes more or less clear what to expect, when watching and when TASing. But the current SA3 publication is not that.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
Just like #8111: Spikestuff's Flash Sniper Assassin 3 in 02:12.80 this run needs community feedback on branching/obsoletion. Here's what off-screen shooting allows to skip in this movie: Waiting for this man to walk on screen: Waiting for these two to finish their dialogue and run out:
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
I didn't initially ask the community about this movie becoming its own branch or not, so here it goes. Here's what off-screen shooting allows you to do. You have several missions where you have to wait for an object to appear on the screen so you can shoot it, skipping the forced wait. Or you can shoot it right away outside the screen. My initial impression was that off-screen shooting only skips the waiting time, and the change is not visible to the viewer anyway. But there's also an argument that the wait is skipped by shooting, in a shooting game, so it's a direct part of normal gameplay. So the main question is, do we make this a new branch or do we obsolete [4923] Flash Sniper Assassin 3 "inbound mouse" by Spikestuff in 02:37.50? If new branch, then what's the defining criterion? There's no visible difference so it can't go to Alternative, but maybe results of the off-screen shooting can be considered a major skip glitch, hence making both movies go to Standard alongside each other? If the argument is that glitchless can be a new standard branch, both movies abuse a glitch that skips some levels due to fast shooting (tho I'd personally be interested in a glitchless branch).
#8110: Spikestuff's Flash Arsenal in 01:31.36 is in a pretty similar situation, barring glitch usage in the current publication: Post #521966
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
I'm liking this more and more Link to video
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
I don't particularly remember what changed, but this run is definitely cool (pun unintended).
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
Saved 64 frames in the cave level by doing most things sooner: User movie #638177837869179697 There are maybe other ways to tighten that level up, and probably other levels too. We don't use rerecord count as argument in our judgments, but so far it does indeed feel like 3607 rerecords in 9.5 minutes is all that went into this submission (my rough test is already at 5k).
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
lexikiq wrote:
As far as I'm aware, the precedent has typically been to only accept one ACE category, maybe a second for playaround. I could see there being different branches for different releases of a game in cases where there's significant vanilla gameplay difference but for a branch whose goal is basically to trigger the credits as fast as possible using any means (and any version) necessary? I don't really see a reason for it, it should just obsolete the NTSC run, imho.
My thinking too.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
GamesFan2000 wrote:
This submission is an interesting stress test of the rules in regards to how trivial something can be while still being acceptable for publication.
Thread #23745: Game definition and triviality
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
lidnariq made a test ROM for PPU open bus decay. Can people with NES run it and maybe film the results? https://discord.com/channels/352252932953079811/450038053159960577/1098031542091141150 https://cdn.discordapp.com/attachments/450038053159960577/1098031541738799124/ppudecay.nes
Read the screen as an array of tests: XX-YYYY where XX is the byte precharged onto PPU open bus, and YYYY is how many loop iterations it look before PPU open bus changed its contents. Each loop is 15 CPU cycles
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
Can you just edit memory to simulate successful botting, as a proof of concept for whatever depends on it?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
How do I make a fceux version of your script that shows which PPU register mirror addresses were read? I'm trying
Language: lua

memory.registerexecute(0xBD29, function() local script_ptr = memory.readbyte(0x99) if 0x2000 <= script_ptr and script_ptr <= 0x3FFF then print(string.format( "%d: $%04X $%04X $%02X", emu.framecount(), script_ptr, 0x2000 + (script_ptr % 8), memory.readbyte(script_ptr) )) end end)
and it does nothing.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
https://github.com/SourMesen/Mesen2 is newer, and I don't know if it supports rerecording.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
Can you try reproducing this glitch on Mesen?
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
OtakuTAS wrote:
You can compare the tricks and see the improvement.
OtakuTAS wrote:
I obsoleted the original run (or... whatever you want to call it) based off of genuine improvement.
It helps a lot when improvements are mentioned in the submission text, because not everyone can watch the 2 movies side by side with enough precision to see all the differences, while also magically knowing which of those differences are not version differences but better optimization. Which of the tricks used here to improve gameplay of the SMS version are also applicable to the SMS version?
OtakuTAS wrote:
Even the ROM with the identification given in the SMS publication runs at 50 FPS no matter where I source it from.
It doesn't run at 50fps until Bizhawk 1.13.2, even if you set it to PAL or Auto, both of which result in 50fps in later versions. And in 1.5.1 where the SMS movie was made, you didn't even have a way to set the display mode, so all games seemed to just run at 60fps.
Movie Rules wrote:
Gameplay must be accurate to hardware Running 50Hz PAL games in 60Hz NTSC mode (and vice versa) is also not allowed, save for a couple exceptions:
  • Sega Master System games with an official release in Brazil can use NTSC mode, due to Brazil's PAL-M being functionally identical to NTSC.
https://www.mobygames.com/game/43951/disneys-aladdin/releases/sega-master-system/ https://segaretro.org/Disney%27s_Aladdin_(8-bit)#Physical_scans Since there was a Brazil release, 60fps mode is legitimate for this game.
OtakuTAS wrote:
I do wonder if the PAL-M scenario here created any loopholes of gain with Brazil SMS vs. NTSC Game Gear, i.e. if they adjusted the ROM at all to run better at 50 fps (higher walk speeds, etc.), it could be illegitimately faster on the PAL-M port.
The same exact game image was released in Europe, Australia, Brazil, and Korea. I don't know what's illegitimate in it being used in Brazilian 60fps consoles.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Experienced Forum User, Published Author, Site Admin, Skilled player (1238)
Joined: 4/17/2010
Posts: 11287
Location: RU
<contest name> - <name of entry level> isn't something we've done so far, but for a new thing, it feels natural and intuitive for "games" that are just joke hacks, with potentially joke names. If there's a clash in names, we can still put author(s) in parentheses, as always. Now regarding <name of entry level> (<contest name>), it emphasizes the actual name of the hack, and helps making the contest a completely separate notion, effectively preventing possible viewer misunderstanding, so I like it too. Name of the hack is not a branch goal within an existing game, so it can't be a branch label.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
1 2
15 16 17
439 440