Post subject: What does "memory corruption" mean?
Masterjun
He/Him
Site Developer, Skilled player (1987)
Joined: 10/12/2010
Posts: 1185
Location: Germany
Lately there was quite some change in a bunch of branch names because of this thread. I'm ok with changing the fastest possible time for a game to the branch any%. However, when changing that branch it is important to change branch of the original any% as well. In the case of SMW for example it was just changed to no memory corruption. If you go ahead and simply define memory corruption by saying changing a memory address to arbitrary or impossible values then you'll quickly see that the "no memory corruption" run of SMW actually does corrupt memory (goal orb in reserve) and that the any% run does not. Keep in mind that the obsoleted any% run does corrupt memory. Moving on to the next example, Yoshi's Island. The same happened to the short and the long run. In this case, the short run does corrupt memory and the long one doesn't, but the reason why the short run corrupted memory was not the key factor to the credits glitch. It corrupted memory because I had to waste time for the controller registers to update and so I activated random DMA channels, which corrupted VRAM. It should be noted that the "no memory corruption" applies to the obsoleted any% run in this case. Does this still count as memory corruption? Does getting a goal in reserve count as memory corruption? On that note, how do we use the appropriate categories: Foregoes memory corruption & Corrupts memory?
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Editor
Joined: 11/3/2013
Posts: 506
I was somewhat involved in that discussion, though 99% of the actual renaming was done by Radiant and CoolKirby. If you want to complain, blame them. (Sorry guys!) Basically, what happened is that everyone in the conversation agreed that the "glitched" runs should lose their "glitched" branch, and the longer runs instead should have some game-specific "avoids [X]" branch name. But quite often the glitch avoided didn't have a name, or there were several glitches which were avoided, so it ended up being called " no memory corruption", which is a more official-sounding way of saying "no incredibly weird shit". Incidentally, someone recently pointed out in another thread that Pokemon Blue "no memory corruption" also corrupts memory.
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
Yep :) Well, it's a matter of finding the correct label. In the case of SMW, the unlabeled (any%) run is indeed the fastest at 1:39. So the run Masterjun mentions does something different, resulting in a 9:57 run that is more entertaining. As I understand it, there is some glitch that is used in the former, but not the latter; but it is not clear to me which one. Please enlighten us, so that the latter can be renamed "no <foo> glitch" instead of the incorrect "no memory corruption". Likewise, the Yoshi run should be "no <bar> glitch" instead.
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4036
thatguy wrote:
If you want to complain, blame them.
Now, now, he's not complaining. He just wants to see the run correctly named, as we do.
thatguy wrote:
the longer runs ... ended up being called " no memory corruption", which is a more official-sounding way of saying "no incredibly weird shit".
Actually, movies only gained that title if they really did avoid glitches that "changed a memory address to arbitrary or impossible values" as Masterjun said. It was not a label that was thoughtlessly slapped onto every run that abused game-breaking glitches. Runs that avoided other heavy glitches were labeled accordingly, i.e. "no DSS glitch", "no L+R glitch", etc. Currently, there are only three "no memory corruption" runs (these two and Pokémon Blue) that need to be changed because someone knowledgeable about the game has told us that the label was slightly incorrect for these cases. So Masterjun, what do you think would be a more fitting label for the longer SMW and Yoshi's Island runs? I'd love to hear your input.
Player (146)
Joined: 7/16/2009
Posts: 686
Let me start by saying that I have no technical knowledge of these runs whatsoever and as such, am probably wrong. Having said that, wouldn't the label be perfectly applicable if we consider "memory corruption" to mean the manipulation of the instruction pointer? I do believe all three runs do precisely that, whereas the longer runs do not. Once again, I'm fairly sure I am completely wrong.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
I agree that breaking the execution pointer is memory corruption if done deliberately and efficiently. If it's only done by random glitching (slightly bugging the objects, like giving a stick to battletoads in level 4), it's a glitch abuse. When it screws the main game execution in heavy ways, I'd call it memory corruption.
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.
Post subject: Re: What does "memory corruption" mean?
Emulator Coder, Skilled player (1113)
Joined: 5/1/2010
Posts: 1217
Masterjun wrote:
Moving on to the next example, Yoshi's Island. The same happened to the short and the long run. In this case, the short run does corrupt memory and the long one doesn't, but the reason why the short run corrupted memory was not the key factor to the credits glitch. It corrupted memory because I had to waste time for the controller registers to update and so I activated random DMA channels, which corrupted VRAM.
I though that the whole mess started with corrupting the egg list (or something) and escalated from there to game jumping to hyperspace?
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4036
So should the branch names be changed? Maybe to "no stun glitch" for SMW and "no egg glitch" or "no egg list corruption" for Yoshi's Island? And I was thinking "no HoF warp" for the Pokémon run, if that sounds okay.
Masterjun
He/Him
Site Developer, Skilled player (1987)
Joined: 10/12/2010
Posts: 1185
Location: Germany
CoolKirby wrote:
So should the branch names be changed? Maybe to "no stun glitch" for SMW and "no egg glitch" or "no egg list corruption" for Yoshi's Island?
But then the obsoleted "major glitched" movies could be labelled "no stun glitch" or "no egg glitch" as well and thus could obsolete the previously labelled any%. Do you see my problem here? Because if a new movie is made that doesn't use stun or egg glitch but a completely new glitch called "xyz glitch" we would have to change the branches from "no stun glitch" to "no xyz glitch", which seems kind of strange since the movie stays the same but the branch has to be changed over and over again.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4036
Then how about something more general like "no warp glitch" or "no glitched warps"? We only need something that applies to all the publications, not possible future ones.
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
In practice, it's not "over and over again", it's only in the rare case that a major new glitch is discovered. Aside from that, if there's a "no egg glitch" run and a XYZ glitch gets discovered, then that doesn't mean the "no egg" run is now "no egg no XYZ"; it means that this run should be updated at some point since we now know a way to do it faster. After all, the goal of that run is to complete the game without egg glitching. That it happens to not use a glitch that we didn't know about back then is coincidental. The purpose of a branch name is not to describe the run, but to state the goal of the run.
Masterjun
He/Him
Site Developer, Skilled player (1987)
Joined: 10/12/2010
Posts: 1185
Location: Germany
I don't think you completely understood me Radiant. Let me give an example. We go back to the time my, let's call it, "brown platform glitch" movie was published. Of course it's the fastest run so it should be called any%. Now the other run has to be called "no brown platform glitch". Then we go forward in time and see my "stun glitch" run being published. Even though the original "no brown platform glitch" is still the same movie, the branch name has to be changed to "no stun glitch".
CoolKirby wrote:
We only need something that applies to all the publications, not possible future ones.
Which then results in doing that over and over again.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4036
That's why I said we need something that encompasses both the brown platform and stun glitches, like the two branch names I suggested ("no warp glitch" or "no glitched warps"). And like Radiant said, it's rare that a major new glitch is found that causes the "less glitched" branch to be renamed. So it's still not "over and over again".
Post subject: Re: What does "memory corruption" mean?
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Masterjun wrote:
On that note, how do we use the appropriate categories: Foregoes memory corruption & Corrupts memory?
The connotation of "Forgoes memory corruption" is "Forgoes time-saving memory corruption" so perhaps the category should be changed to precisely that. The reverse would be "Corrupts memory to save time" ? Any tag with the word "forgoes" is the same intent. For instance, we are tagging time-saving death, dying as a way of playing around doesn't count. So there maybe other tags in need of a change
It's hard to look this good. My TAS projects
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
Masterjun wrote:
We go back to the time my, let's call it, "brown platform glitch" movie was published. Of course it's the fastest run so it should be called any%. Now the other run has to be called "no brown platform glitch".
That's possible, yes. An alternative possibility is to call both of them "any%" and have the BPglitch run obsolete the other one. This depends on whether the judges think they are worth having as separate categories. Anyway, compared to what we currently need to do when a movie is published (e.g. debate and polls, judge's decision, encoding) I don't think occasionally renaming an older run is a big deal.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
I think the point is that a movie that was 'no stun glitch' would be the brown platform glitch using movie, because that's faster and isn't banned. So now you have to call it 'no stun glitch, no brown platform glitch' or whatever. And it can only get worse and worse unless you isolate the commonality between them.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Emulator Coder, Skilled player (1113)
Joined: 5/1/2010
Posts: 1217
And for the extra mess, it is possible to use the arbitary code execution bugs to greatly skip the game levels, even if one has to fight Bowser... So one can't have "fights bowser" either...
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4036
I'm thinking of either going with "no executing OAM data (or maybe sprite data) as code" or giving up and going with "no null sprite spit, no stun glitch". What do you think?
Editor
Joined: 11/3/2013
Posts: 506
CoolKirby wrote:
I'm thinking of either going with "no executing OAM data (or maybe sprite data) as code" or giving up and going with "no null sprite spit, no stun glitch". What do you think?
From a layman's perspective, I personally think the second of those two possible branch names is marginally less horrible. If even some experienced TASers don't know what OAM data is then what does that look like to someone who is visiting the site for the first time? While he wouldn't know what null sprite spit/stun glitch were either, he could at least find these things out by watching the shorter SMW TAS.
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4036
Good point. And thanks for the second opinion! I'll change that movie and its predecessors now.
Masterjun
He/Him
Site Developer, Skilled player (1987)
Joined: 10/12/2010
Posts: 1185
Location: Germany
What's the problem with going with "less glitched" and then specify the glitches that weren't used in the submission/publication text?
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Editor, Experienced player (570)
Joined: 11/8/2010
Posts: 4036
The problem with something like "less glitched" is that it's too arbitrary. That's why a run's branch name specifies the glitch(es) or type of glitch(es) avoided, to make it perfectly clear what makes it different from the any% run.
Masterjun
He/Him
Site Developer, Skilled player (1987)
Joined: 10/12/2010
Posts: 1185
Location: Germany
That's why I said specify it in the submission/publication text. I still don't see the problem with that. It's easy to understand and the people that wanna investigate can look at the submission or publication text.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Active player (264)
Joined: 4/15/2010
Posts: 197
Location: England
CoolKirby wrote:
The problem with something like "less glitched" is that it's too arbitrary.
It's less arbitrary than "no stun bug, no null-spit" for sure. (This post will be only about smw as I only know about that game). I don't see what the issue is with giving the title "arbitrary code execution" to glitched branches. Arbitrary code execution isn't a subjective term, it's a well known bug in software. You gain control of the program. There isn't a single glitch in SMW that could be described this way except for the credits bug. If arbitrary code execution runs must be the new any%, then "does not execute arbitrary code" could be for non-glitched one. But here's my main concern with the new branch: We can jump the credits without using either the stun bug or null-spit. This can be achieved by eating a chuck with a certain powerup status. Well, you say, "I'll add no eat-chuck to the branch too!" but the current run eats a chuck anyway to get the orb. Furthermore, the 96-exit run does use both of these bugs, so is that now a glitched run too? Can another 96-exit run be submitted that doesn't use either of these? Another issue: What the hell does "No stun bug, no null-spit" even mean? That title is impossible to understand unless you follow SMW TASing closely. A newcomer to this site may see that branch and think, "what"? It means nothing unless you know the game well. If you want to keep the credits-glitch run as any%, that's fine. Maybe consulting SMW TASers would have been a better idea so we could have told you these problems and suggested something rational and understandable like "11-exit", "No credits glitch", "beats Bowser", "does not execute arbitrary code" etc.
Retired smw-96, smw any%
Player (26)
Joined: 8/29/2011
Posts: 1206
Location: Amsterdam
I prefer having the branch name be specific in that case. Submission texts are long and say lots of things, and a branch name should be clear without requiring the user to read all that.