Advertisement
SethBling

Uninitialized RAM and the Cloud Item Swap

Apr 5th, 2016
1,020
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.57 KB | None | 0 0
  1. Uninitialized RAM and the Cloud Item Swap
  2.  
  3. I found a setup that involves pressing and holding the X and A keys leading up to the chargin' chuck eat, which gives a cloud in 11 exit. By doing so, the game reads from a part of RAM which is not initialized by the SMW software, which means whatever values were in that RAM before the game started will stick around. If those RAM addresses have specific values, the game will not crash, and this makes "scrollless cloud" basically a 100% consistent trick (as opposed to the 1-frame R+L setup).
  4.  
  5. Normally the uninitialized RAM values are pretty much garbage, and unusable in this setup. However, there are several things you can do to make sure those RAM addresses have the correct values:
  6.  
  7. * Perform an arbitrary code execution to set the specific RAM address you need to a specific value
  8. * Use another game cartridge to set up the value, then swap cartridges without powering off, and reset with the SMW cartridge in. Dots has found a few game cartridges that work for this.
  9. * Sometimes, just by crashing the game during a chargin' chuck eat, the correct value will be set. This is rare, but it can happen, and is thought to have happened to Area51 at some point last year purely by accident, without him understanding what was going on.
  10.  
  11. Once the memory value is set correctly, as long as you don't turn off the console power, or crash the game, it will stay in memory, even through soft resets. What this means is that if you accidentally get RAM set up correctly, you will have 100% consistent clouds as long as you don't turn off console power.
  12.  
  13. This is problematic, because it means that things that you do before the run starts can make your run better/more consistent, without including those things in the timer. It could even happen that you get this benefit by accident, although you would have to intentionally press X and A (or there are a couple other similar key combinations involving A that can work) in order to take advantage of the RAM values.
  14.  
  15. When it comes to making a rule to prevent this type of exploit, we have several options:
  16. 1) Ban XA
  17. You would be forbidden from holding down XA (or one of the other relevant key combinations involving A) on the two frames before the Chargin' Chuck is eaten by Yoshi. No one has a setup currently that could even really involve accidentally pressing XA on those frames. It seems kind of weird to ban key combinations, although the ban only applies in this very specific context.
  18.  
  19. 2) Allow RAM manipulation
  20. You would be able to use whatever means you want to modify the uninitialized RAM to whatever values you want. You can even use a custom ROMhack to set up the values. This would essentially allow the consistent scrollless cloud strategy. It has further implications for other things that haven't been discovered yet, and may require further discussion when those things are discovered. For instance, this rule will probably not fly in 0-exit, where it could be used to shave off something upward of 30 seconds by pre-injecting the byte code into uninitialized RAM, so that you can skip the shell coding. Similar exploits are probably possible within the context of 11 exit and probably need to be banned as well, by banning XA and similar key presses.
  21.  
  22. 3) Require 30 second hard resets between runs
  23. We're not 100% sure that 30 seconds is long enough, and it may be longer than is actually necessary, so that number may change. The idea is to make sure RAM is flushed between runs. This obviously seems quite impractical for such a short speedrun, but it's a surefire solution.
  24.  
  25. 4) Either require that players do 30 second hard resets between runs, or that they don't use XA during the chuck eat
  26. This is a hybrid rule that combines 1) and 3). It gets rid of some of the weirdness of banning a key combination, because the key combination technically isn't banned. You can still use it as long as you're willing to 30sec hard reset between runs. However, in practice, no one will have any reason to press XA, since they can't get any benefit out of it (the game will certainly crash if you do), so runners will choose to just not press XA, as they currently do, and not have to engage in cumbersome hard resets between runs.
  27.  
  28. When choosing a rule, it's important to remember that our ability to police that rule should not be a deciding factor. There are many things people can do to cheat without being detected currently, such as using a custom SMW ROM, and we already rely on them not to do so. Whether we institute an unenforceable rule or not, enforcement is a problem, and we'll be relying on the community not to cheat either way.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement