Basic Guide

Real-Time Corruptor: Basic Guide

Basic Guide

RTC Vocabulary


A Blast is the action of generating and/or applying a BlastLayer item (The action of corrupting). When being generated, a Blast will contain a certain amount of corruption instructions. The amount of generated corruption instructions is defined by the Intensity setting.

RTC is built in a way that corruption is always generated and saved in cache before being applied. This allows replayability, manipulation and real-time interaction. When applied, byte-changing instructions usually backups values before modifying them. This allows corruption to be theorically disabled/reapplied on the fly, although this doesn't always work. Unit types that work by re-executing themselves such as Cheats and Pipes do not take backups. Instead, they simply get removed from their execution pools. This means that while their effect may be stopped in real-time, it also may not be completely reverted.


This represents one Unit of corruption instructions. The inner BlastUnit type depends of the engine that generated it and may contain one or many Adresses, Values and extra parameters.


Type of item that contains corruption instructions generated from a corruption engine.

A BlastLayer is usually encapsulated within a StashKey and can be manipulated using the BlastEditor or by merging multiple BlastLayers in the Glitch Harvester's Stockpile Manager. It can also be appended to another Savestate by using the Inject function of the Glitch Harvester.

BlastLayers that are ran from the Stockpile Player or from the Glitch Harvester can be deactivated and reactivated on the fly (if applicable).


Type of item that contains information about a game, its game state and an attached BlastLayer (Corruption instructions).

Corrupting using the Glitch Harvester generates StashKeys in the Stash History. They can later be manipulated and/or added to a Stockpile.


Type of item that contains StashKeys. It can be saved as a file that includes Stockpile items, Game Binaries, Savestates, corruption instructions, and information related to BizHawk emulator cores, plugins and config.

Stockpiles can be managed using the Glitch Harvester.

Stockpiles can be replayed using the Stockpile Player.

Memory Domain

Item that represents a chip or memory pool on an emulated system. Memory Domains are native to BizHawk but the Memory Domains listed in RTC are proxies to the real Memory Domains. While this fact makes very little difference in terms of how they work, it allows for Virtual Memory Domains to coexist with real ones. Virtual Memory Domains are essentially interfaces to Real Memory Domains with blacklisted adresses.

Emulation Step

RTC is hooked to BizHawk's clock using its generic CPU Step loop. This means that RTC's clock is tied to the currently running Emulator Core. The Emulation Step runs in continuous loop and is throttled automatically by BizHawk in order to make the game run at a normal speed. Pausing the emulator in BizHawk causes this loop to also get pause, therefore halting any automatic generation of corruption.

General Parameters


When this is enabled, RTC attempts to Generate and Execute a BlastLayer on every Emulation Step. The amount of corruption can be set by changing the Intensity and Error Delay settings.

A Blast happens on every Corrupt Step

Manual Blast

Alternatively to Auto-Corrupt, Blasting a game with corruption can be totally manual.

Blasts with a bigger Intensity can be as effective as a controlled stream of corruption. It does give the user more control on when the game is altered.

Error Delay

→Only Applicable to AutoCorrupt

The Error Delay is a divider to the amount of generated corruption. This defines Auto-Corrupt will Blast the game every X steps.

Every Emulator Step that causes Auto-Corrupt to Blast is called a Corrupt Step.


The Intensity is a multiplier to the amount of generated corruption in a Blast.

It can represents: Bytes (Nightmare, Distortion Engines), Cheats (Hellgenie, Freeze Engines), Pipes (Pipe Engine), 32-bit floats (Vector Engine).

Generally, the higher the Intensity is, the more corruption will happen

Some engines have a configurable maximum number of concurrent elements as they can be very resource heavy. These elements get automatically discarded as newer ones get added.

This means that a Blast with 100 Intensity while Max Cheats is set to 50, the Blast will have the same result as 50.

Blast Radius

When a Blast is generated, RTC can target multiple Memory Domains. Changing the Blast Radius affects how corruption scatters across the selected Memory Domains.

Spread: Randomly spread across the Memory Domains.

Chunk: Sent to one single zone that is randomly selected among the selected Memory Domains.

Burst: 10 Chunks of 1/10 of the total Intensity.

Even: Apply the blasts evenly spread through all selected domains.

Proportional: Apply the blasts proportionally through all selected domains based on the sizes

Normalized: Iterate through all selected domains and apply as intensity/(size of largest domain / size of current domain)

Memory Domains

In Bizhawk, Memory Domains are the memory pools of the virtual chips in an emulated system. In RTC, they are wrapped within a proxy system that allows for keeping a hold of them when a system changes or to prevent certain unwanted scenarios from happening (due to corruption).

Virtual Memory Domains can also coexist with Standard Memory Domains for that reason.

By default, RTC will select Memory Domains that are Rewind-safe, meaning that the data edited in these domains can be rewinded out of. Reverting back the corruption that occurs in domains that aren't rewind-safe requires to select "Reboot Core" in the emulation menu of BizHawk or reloading a Glitch Harvester Savestate or StashKey.

Step Actions

StepActions are actions that will be performed every corruption step. In the case of Bizhawk, that means once every frame.

Corruption Engines

Custom Engine

This engine allows you to mix and match parameters to create your own engine.

Nightmare Engine

This engine corrupts on the raw byte level.

Effect: It changes Bytes in Memory once.

Blast Type

This parameter defines the effect applied on Byte

RANDOM: Will replace the Byte with a random Byte

RANDOMTILT: Will replace the Byte with a random Byte or Increments it or Decrements it.

TILT: Will Increment or Decrement a random Byte.

Hellgenie Engine

This engine corrupts on the raw byte level, but rather than applying one tim

Effect: It changes Bytes and forces them keep the value.

Freeze Engine

This engine corrupts on the raw byte level, but rather than applying one time, it applies every step. Instead of generating a random value, it takes the value currently in memory and "freezes" it.

Effect: It forces Bytes to keep their value.

Max infinite actions

StepActions are resource expensive as they re-write memory on every cycle and must be recycled. This allows you to define how many freezes are allowed. New freezes retire old ones.

Clear infinite actions on rewind

Rewinding in BizHawk will clear all step actions that have an infinite life time

Distortion Engine

This engine backups Bytes and restores those backups once, later in time.

Effect: This corrupts data by restoring some of it back in time.

Distortion Delay

This is the amounts of steps that each corruption units has to wait before restoring a backup.

Resync Distortion

This erases all corruption units pending to be restored.

Pipe Engine

This engines binds addresses together and can make data bleed from a memory domain to another. It uses Pipes, which route memory change on every Emulator Step (or Corrupt Step).

Lock Pipes

Prevents any change to be done to the current Pipes

Vector Engine

This engine works exclusively on 32bit+ systems that use IEEE 754 float values.

Effect: Corrupts 32bit vectors

Limiter List

On the generation of every Unit with this engine, the value at the randomly address is going to be compared to a list of legal values called a Limiter List. If the value at the random address isn't legal according to the list, the Unit then will not be part of the BlastLayer.

Value List

After generation of the Unit with this engine, a replacement value is assigned to the legal address. This value is randomly selected from a selected Value List.


Extended : -65536.00 to +65536.00 in low res, including tiny decimals

Extended+ : 0 to +65536 in low res, including tiny decimals

Extended- : 0 to -65536 in low res, including tiny decimals

Whole: -65536.00 to +65536.00 in low res, integral numbers

Whole+: 0 to +65536.00 in low res, integral numbers

Tiny: tiny decimals between -1.00 and +1.00

One: The number 1.00

One*: The numbers 1.00 and -1.00

Two: The number 2.00

You can add your own lists using the List Generator Tool.

Engine Precision

Allows you to choose what size BlastUnit will be generated. 8-bit (one byte), 16-bit (2 bytes), or 32-bit (4 bytes).