written by Melody
Ready to start corrupting? RTC provides an incredible, overwhelming amount of tools to work with. This can be nice, but as a beginner it can be easier to learn with some of the more advanced options out of the way. This is where Simple Mode comes in handy. If you are just beginning to learn, you should start by mastering the tools provided here in Simple Mode, and ensuring you have a firm understanding of what is occuring behind-the-scenes in your corruption. This is vital when learning to corrupt; take the time to understand your corruptions.
Start by loading up the RTC, launching either BizHawk or Dolphin, and clicking the wizard icon to the left that says, "Easy Start." Next, click, "Switch to Simple Mode." At the top you'll see a prompt asking if you're corrupting 2D or 3D games. For this, we'll assume we're corrupting a 2D game today, so we'll select, "Classic Platforms." If you are corrupting a console such as the GCN or PS2, you'll want to try, "Modern Platforms."
Next, go ahead and load up your ROM into your emulator.
You'll want to find a spot in your game you think could corrupt well. Perhaps there are certain sprites on screen, or models doing animations, the choice is yours, just find somewhere to save. When you've found this location, press the button, "Create and select a Glitch Harvester savestate"
Corruptions can be implemented real-time and non real-time. The Glitch Harvester is a tool that lets us not only create savestates, but it also lets us save corruptions we've found. After we save these corruptions, not only can we replay them but we can fine-tune them, and we can try to find different results with them. The "Simple Glitch Harvester" provided in the "Simple Mode" part of RTC is a very simplified version of the actual "Glitch Harvester"
We should have either the Nightmare engine or the Vector engine loaded up, and you can confirm this by looking under the box in the center of the screen that says, "Engine Parameters." The benefit of Simple Mode here is we don't have to provide most of the parameters ourselves, we can simply jump right into corrupting.
Beneath the previously-mentioned box is another box, labelled, "Real-Time Corruption." This is where you'll input your one and only parameter, which is "Intensity." Move the slider up a bit; how much is entirely specific on which game you're corrupting and which engine you are using.
Press the red button labelled, "Load and Corrupt." This is essentially your start button, it loads the savestate and applys the corruption.
There are two easy ways to figure out what Intensity you should be using. Either we begin with a very high Intensity and work our way backwards, or we begin with a very small Intensity and work our way forwards. I recommend the prior, as doing the latter usually results in a lot of wiggling back and forth at the end. The main goal here is to find an Intensity that manages to hit a lot of stable addresses. Hopefully those addresses we hit cause the types of effects we are looking for, and not the types of effects we don't want. Try to find a balance between silliness and unstability.
For real-time corruptions, we can use the button, "Manual Blast." This fires a single blast of corruptions at a time, in real-time. That is, we can continue to corrupt further after hitting, "Load and Corrupt" from the "Glitch Harvester." Another handy tool is the, "Auto-Corrupt" button. Here you can continuously blast the game with corruptions.
"Shuffle Algorithm" lets you try out different engines. Check the Basic Guide for a more thorough run-down on what each of these engines do. Try shuffling the engine a few times.
An unique feature to the Real-Time Corruptor next to its ability to corrupt in real-time is its ability to also uncorrupt in real-time, sorta. Whenever a corruption is created using the "Glitch Harvester", it is possible to attempt to disable it while the game is still running. You can play around with this feature using the button "BlastLayer : ON/OFF"
When you're ready to start learning the rest of the program, simply click, "Switch to Normal Mode." Here you can start making changes to the rest of the parameters each engine uses. Each engine has it's own way of working, so check each section of the Basic Guide respectively. You can freely switch back and forth between normal mode and simple mode if you so desire, so as to access the rest of the parameters.
Now that you've mastered the use of the Intensity parameter and you've seen "Auto-Corrupt", it only makes sense the next parameter we use is "Error Delay". This provides spacing in-between blasts when we're using the "Auto-Corrupt" function. Try mixing and matching different configurations between the two parameters and seeing how they interact in the overall use of the program. Crashes are very likely so don't be surprised, but it's a learning experience after all. For more information on "Error Delay", again check the Basic Guide.
Here's a quick run-down of some of the easier things you can do with each engine. I recommend you shuffle the engine, then switch to normal view to change the parameters of these engines, then switch back. At first you should only be messing with a few parameters at a time.
Changes Bytes in Memory once, either replacing or incrementing/decrementing them. Try switching the Blast Type to either replace, replace or modify, or solely modify.
This engine freezes a Unit's value, which is randomly generated. Max Infinite Units is what you'll want to play with here. This parameter limits how many changes can be made, which can limit the corruption in the same way a low intensity would. If you aren't getting any effects even with a high intensity, chances are your Max Infinite Units is too low.
Similar to the Hellgenie engine, here we are freezing values, but this time we're freezing them in place. For this engine to be effective we need to target values that are supposed to be changing. In both the Freeze and the Hellgenie engine it is likely you'll want to have "Clear Units on Rewind" enabled. This is so that when you load a savestate using the Glitch Harvester, old corruptions don't linger. You may want to disable it if you are using BizHawk's rewind function however.
Using the Distortion engine we can backup a copy of some data, and then restore that data back to where it came from at some point in the future. This is accomplised through, "Distortion Delay" which is a measurement of *Steps into the future. It's roughly similar to frames, but not the same thing.
Pipes are bindings of one address to another. This results in data being, "bled" from one location to another, and can result even in data going between memory domains. "Max Infinite Units" again is our control parameter. This engine can be hard to utilize successfully at first, and is best used with Virtual Memory Domains and an otherwise thorough understanding of how your game handles it's memory.
This engine is great for messing with modern 3D games. Simply provide it a Limiter List and a Value List. When the corruptor selects data to corrupt, it gets checked against the Limiter List. You could think of it similar to checking the value's data type. Is it positive, negative, whole, one or zero? If the value we're checking to corrupt doesn't match up with the Limiter List, it's not going to be part of the corruption. The Value List is what we're replacing the data with.
You can also modify these engines and blend them together using the Custom Engine, but it's outside the scope of this article. Still worth reading however, see, Basic Guide.
This engine is able generate algorithmic blasts that are not real-time. It works similarly to older corruptors like the Vinesauce Rom Corruptor but allows for a deeper and more granular control of the generation algorithm.
I hope this guide has helped you get started in making your first corruptions. It's a continuous learning experience, remember to always try new things and don't be scared to ask questions on the Discord.