fceux/web/help/taseditor/Glossary.html

476 lines
38 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="generator" content="HelpNDoc Personal Edition 7.0.0.199">
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" href="favicon.ico"/>
<title>Glossary</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Glossary">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Glossary" />
<meta property="og:type" content="article" />
<meta property="og:description" content="" />
<meta property="og:site_name" content="TAS Editor Manual" />
<!-- Bootstrap core CSS -->
<link href="vendors/bootstrap-3.4.1/css/bootstrap.min.css" rel="stylesheet"/>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<link href="vendors/bootstrap-3.4.1/css/ie10-viewport-bug-workaround.css" rel="stylesheet"/>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="vendors/html5shiv-3.7.3/html5shiv.min.js"></script>
<script src="vendors/respond-1.4.2/respond.min.js"></script>
<![endif]-->
<!-- JsTree styles -->
<link href="vendors/jstree-3.3.10/themes/default/style.min.css" rel="stylesheet"/>
<!-- Hnd styles -->
<link href="css/layout.min.css" rel="stylesheet" />
<link href="css/effects.min.css" rel="stylesheet" />
<link href="css/theme-light-blue.min.css" rel="stylesheet" />
<link href="css/print.min.css" rel="stylesheet" media="print" />
<style type="text/css">nav { width: 250px} @media screen and (min-width:769px) { body.md-nav-expanded div#main { margin-left: 250px} body.md-nav-expanded header { padding-left: 264px} }</style>
<!-- Content style -->
<link href="css/hnd.content.css" rel="stylesheet" />
</head>
<body class="md-nav-expanded">
<div id="skip-link">
<a href="#main-content" class="element-invisible">Skip to main content</a>
</div>
<header class="headroom">
<button class="hnd-toggle btn btn-default">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>
</button>
<h1>TAS Editor Manual</h1>
</header>
<nav id="panel-left" class="md-nav-expanded">
<!-- Nav tabs -->
<ul class="tab-tabs nav nav-tabs" role="tablist">
<li id="nav-close">
<button class="hnd-toggle btn btn-default">
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
</button>
</li>
<li role="presentation" class="tab active">
<a href="#contents" id="tab-contents" aria-controls="contents" role="tab" data-toggle="tab">
<i class="glyphicon glyphicon-list"></i>
Contents
</a>
</li>
<li role="presentation" class="tab">
<a href="#index" id="tab-index" aria-controls="index" role="tab" data-toggle="tab">
<i class="glyphicon glyphicon-asterisk"></i>
Index
</a>
</li>
<li role="presentation" class="tab">
<a href="#search" id="tab-search" aria-controls="search" role="tab" data-toggle="tab">
<i class="glyphicon glyphicon-search"></i>
Search
</a>
</li>
</ul> <!-- /Nav tabs -->
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="contents">
<div id="toc" class="tree-container unselectable"
data-url="_toc.json"
data-openlvl="1"
>
</div>
</div> <!-- /contents-->
<div role="tabpanel" class="tab-pane" id="index">
<div id="keywords" class="tree-container unselectable"
data-url="_keywords.json"
data-openlvl="1"
>
</div>
</div> <!-- /index-->
<div role="tabpanel" class="tab-pane" id="search">
<div class="search-content">
<div class="search-input">
<form id="search-form">
<div class="form-group">
<div class="input-group">
<input type="text" class="form-control" id="input-search" name="input-search" placeholder="Search..." />
<span class="input-group-btn">
<button class="btn btn-default" type="submit">
<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
</button>
</span>
</div>
</div>
</form>
</div> <!-- /search-input -->
<div class="search-result">
<div id="search-info"></div>
<div class="tree-container unselectable" id="search-tree"></div>
</div> <!-- /search-result -->
</div> <!-- /search-content -->
</div> <!-- /search-->
</div> <!-- /Tab panes -->
</nav>
<div id="main">
<article>
<div id="topic-content" class="container-fluid"
data-hnd-id="Glossary"
data-hnd-context="15"
data-hnd-title="Glossary"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Reference.html">Reference</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Reference.html" title="Reference" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Reference.html" title="Reference" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Controls.html" title="Controls" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Glossary</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts18">Glossary</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps7"><span class="rvts20">Here you can find definitions for many terms that are used throughout this Manual. Most of them were used in the context of TASing before TAS Editor was created. Some of those terms are described more thoroughly in the </span><a class="rvts24" href="BeginnersGuide.html">Beginner's Guide</a><span class="rvts20">.</span></p>
<p class="rvps7"><span class="rvts20">It's recommended to read the Glossary at once, because many terms are interconnected.</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;">
<p class="rvps7"><a name="Input"></a><span class="rvts20"><br/></span></p>
<p class="rvps7"><img alt="" style="float: right; padding : 6px;" src="lib/game-player-taser.png"></p>
<p class="rvps7"><span class="rvts22">Input</span></p>
<p class="rvps7"><span class="rvts20">Data about player's actions, that can be received by a game.</span></p>
<p class="rvps7"><span class="rvts20">TASing became feasible because of general assumption that behavior of a game is always determined by its initial state and player's input, and nothing else (see Determinism).</span></p>
<p class="rvps7"><span class="rvts20">Examples of Input: pressing a button on a gamepad, pushing analog stick, touching by stylus, shouting into a microphone, etc.</span></p>
<p class="rvps7"><span class="rvts20">Taseditor works with Input in the form of "sequence of buttons states".</span></p>
<p class="rvps7"><span class="rvts20">Note: the fact of player not pressing any button is also considered an Input.</span></p>
<p class="rvps7"><a name="Output"></a><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Output</span></p>
<p class="rvps7"><span class="rvts20">Data sent from a game as a result of processing player's Input.</span></p>
<p class="rvps7"><span class="rvts20">The process of playing a game can be depicted as a loop of interaction between a subject (player) and an object (game).</span></p>
<p class="rvps7"><span class="rvts20">Examples of Output: displaying an image, producing a sound, vibrating gamepad, changing the value of an observed RAM address, providing an information about lag, etc.</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Playthrough / Walkthrough </span><span class="rvts20">(Solution)</span></p>
<p class="rvps7"><span class="rvts20">A sequence of player's actions needed for successful completion of the game.</span></p>
<p class="rvps7"><span class="rvts20">This sequence is inputted into the game using an input device (e.g. gamepad). The sequence can be either performed live (created in real-time) or constructed in advance in a form of reproducible recording (e.g. log of button presses). The latter form allows editing of the sequence.</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Speedrun</span></p>
<p class="rvps7"><span class="rvts20">A walkthrough aimed on fastest completion of the game.</span></p>
<p class="rvps7"><span class="rvts20">Some games have &nbsp;build-in "Speedrun" or "Time Attack" mode, where the game counts the time spent while playing. For other games it's possible to use external timer, measuring time in seconds or TV frames.</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">TAS</span><span class="rvts20"> (Tool-Assisted Superplay / Tool-Assisted Speedrun)</span></p>
<p class="rvps7"><span class="rvts20">A walkthrough made with use of tools for editing the sequence of player's actions.</span></p>
<p class="rvps7"><span class="rvts20">The process of creating TASes is called "TASing", authors are usually called "TASers".</span></p>
<p class="rvps7"><span class="rvts20">The Input editing exempts TASers from certain human limitations (e.g. slow reflexes), allowing to spend full energy on making extraordinary walkthroughs. It can be either speedruns or entertainment videos (playarounds).</span></p>
<p class="rvps7"><span class="rvts20">TASes can be distributed:</span></p>
<ul style="text-indent: 30px; padding: 0; margin: 0 0 0 0px; list-style-position: inside; list-style-type: disc;">
<li class="rvps9"><span class="rvts20">in the form of finished videos containing Output (youtube, AVI files and so on) easy to watch</span></li>
<li class="rvps9"><span class="rvts20">in the form of source files containing Input (FM2 movies and so on) easy to edit</span></li>
</ul>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Movie</span><span class="rvts20"> (replay)</span></p>
<p class="rvps7"><span class="rvts20">Container for storing Input and associated data.</span></p>
<p class="rvps7"><span class="rvts20">Unlike video containers, the TAS movies don't contain Output (game footage). The Output appears only when user applies the movie Input to an appropriate game file.</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Lag</span></p>
<p class="rvps7"><span class="rvts20">The term used when the delay between Input and Output is greater than normally.</span></p>
<p class="rvps7"><span class="rvts20">The loop of interaction between player and game usually establishes some fixed amount of time between polling Input and updating Output, for example 60 times per second.</span></p>
<p class="rvps7"><span class="rvts20">A computer processor can only make fixed amount of operations in this fixed amount of time. But videogames try to mimic the unboundedness of real life, so the quantity of in-game objects may vary greatly. Thus it's possible that processing all objects will take more time than allotted. In such cases the Output update will be delayed, and next Input polling will be delayed too.</span></p>
<p class="rvps7"><span class="rvts20">Speedrunners try to avoid excessive delays, and the lag is often considered as a factor when TASing. Usually TASers try to minimize the number of "frames containing lag".</span></p>
<p class="rvps7"><span class="rvts20">Emulators can detect lag in a frame right after finishing the frame emulation. The criterion is simple: if the game didn't poll Input during the frame then it's the lag frame. If it did poll Input then this is normal frame. Taseditor highlights lag frames with red color, and it's useless to draw any Input on these frames.</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Desync</span></p>
<p class="rvps7"><span class="rvts20">Discrepancy between expected and received Output, which results in player's Input not syncing with the logic of the game.</span></p>
<p class="rvps7"><span class="rvts20">Desync may appear when the Input made for one game is applied to another game, or using different emulator version or different settings. Also, desyncs appear when emulator doesn't support deterministic emulation.</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Segment</span></p>
<p class="rvps7"><span class="rvts20">A part of the movie, representing the period of time between two in-game events.</span></p>
<p class="rvps7"><span class="rvts20">Breaking the movie into segments is used to decompose big tasks to smaller subtasks.</span></p>
<p class="rvps7"><span class="rvts20">The size of a segment can be measured in frames, but the limits of a segment are usually defined by in-game events. The beginning event cuts all previous tasks and concentrates TASer's attention on the nearest set of conditions. The ending event serves as an optimality criterion for all possible approaches to the current task solution.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="TASingProcess.html">TASing Process</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Optimization</span></p>
<p class="rvps7"><span class="rvts20">The process of searching for the optimal (the best) solution of the task in current segment.</span></p>
<p class="rvps7"><span class="rvts20">Almost any task in videogames can be solved in a variety of ways. Every way has its own pros and cons. When starting a project, TASer chooses his goal (e.g. pacifist speedrun), thus assigning priorities to those pros and cons, therefore all the ways of solving a task can be evaluated and compared to each other to determine which one is better.</span></p>
<p class="rvps7"><span class="rvts20">Actual process of TAS optimization consists of editing Input and evaluating resulting Output. When TASer gets better result, he marks current Input as the best, until he finds an even more optimal Input. The final product (TAS movie) contains the best solution for every subtask.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="TASingMethodology.html">TASing Methodology</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Improvement</span></p>
<p class="rvps7"><span class="rvts20">A way to solve the task better (closer to optimum).</span></p>
<p class="rvps7"><span class="rvts20">Examples of improvements in speedruns: removing inaccuracy, applying unused timesaver, increasing the usefulness of an old timesaver, adding entertainment without losing speed.</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Timesaver</span></p>
<p class="rvps7"><span class="rvts20">Any in-game trick that can save time.</span></p>
<p class="rvps7"><span class="rvts20">When making a speedrun, TASer is supposed to use every unprohibited opportunity to make the walkthrough become as fast as possible. One thing is polishing the Input to find the best outcome from current knowledge about the game. Another important activity is expanding this knowledge base finding and applying tricks. True TASer strives to gather the maximum information about the game and use all known tricks to full extent, so that his record wouldn't be easily beaten.</span></p>
<p class="rvps7"><span class="rvts20">Examples of timesavers: features of the game, bugs of the game, luck manipulation.</span></p>
<p class="rvps7"><span class="rvts20">Note: sometimes TASers deliberately refuse certain timesavers, in this case the TAS aims for extra category. Examples: Super Mario Bros TAS without using </span><span class="rvts26">B</span><span class="rvts20"> button (denying certain feature of the game), Sonic the Hedgehog TAS without zipping (denying certain bug of the game).</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Feature</span></p>
<p class="rvps7"><span class="rvts20">An intended aspect of the game.&nbsp;</span></p>
<p class="rvps7"><span class="rvts20">Some features are unimportant (or even unnoticeable) for an ordinary player, but substantial for a TASer. So, before optimizing Input it's recommended to research the game engine.</span></p>
<p class="rvps7"><span class="rvts20">Examples of such features: damage boost, forced waiting for score countdown, coordinate subpixels, AI peculiarities, etc...</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Bug / Glitch</span></p>
<p class="rvps7"><span class="rvts20">An unintended aspect of the game.&nbsp;</span></p>
<p class="rvps7"><span class="rvts20">Bugs abused by TASer should be reproducible on real console (at least theoretically). Bugs caused by emulation are not permitted.</span></p>
<p class="rvps7"><span class="rvts20">Many bugs are discovered during real-time play. Some of them require thorough research and disassembly of the game code.</span></p>
<p class="rvps7"><span class="rvts20">Examples of bugs: simplistic collision detection system, not checking save data corruption, race conditions, mistake in the order of checks, etc...</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Luck Manipulation</span></p>
<p class="rvps7"><span class="rvts20">Unrestricted exploiting of certain game features, which are normally limited by the shortage of player's knowledge.</span></p>
<p class="rvps7"><span class="rvts20">Although any experiments with Input modification are manipulations of game features, but some aspects of games appear especially unpredictable for an ordinary player. Developers intentionally entangle algorithms of those features, so that for a naked eye they seem completely random and uncontrollable.</span></p>
<p class="rvps7"><span class="rvts20">However, in deterministic world all aspects of videogames are predictable (defined by Input). Using tools and careful analysis you can reveal those hidden laws and dependencies, and then use the knowledge when creating the Input. And sometimes you don't even have to dissect algorithms, when you can use trial-and-error method.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="NonlinearTASing.html#turbo-seeking">Nonlinear TASing</a><span class="rvts20"> (example of luck manipulation)</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Subpixels</span></p>
<p class="rvps7"><span class="rvts20">The term used when in-game objects have coordinates with fractional parts.</span></p>
<p class="rvps7"><span class="rvts20">Generally, there's difference between on-screen coordinates of a sprite and in-game coordinates of the object this sprite represents. In some games those coordinates have the same scale and their values coincide, but usually on-screen images represent a rough outline of the real state of things. So, to get max precision TASers observe the memory of emulated console, using Memory Watch tool or custom Lua HUD. This way also allows to see hidden variables of the game, those that aren't displayed on screen normally.</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Recording</span></p>
<p class="rvps7"><span class="rvts20">One of possible ways to create Input for a movie.</span></p>
<p class="rvps7"><span class="rvts20">It consists of appending new Input sequentially to the end of current movie, while watching interim results of the Input.</span></p>
<p class="rvps7"><span class="rvts20">Another way would be drawing Input directly in the movie.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="Toolbox.html#recorder">Toolbox</a><span class="rvts20">, </span><a class="rvts24" href="TASingMethodology.html#linear-tasing">TASing Methodology</a><span class="rvts20">, </span><a class="rvts24" href="TraditionalTASing.html">Traditional TASing</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Rerecording</span></p>
<p class="rvps7"><span class="rvts20">One of possible ways to edit Input in a movie.</span></p>
<p class="rvps7"><span class="rvts20">It consists of rewriting old Input sequentially from starting frame to ending frame, while watching interim results of the Input changes.</span></p>
<p class="rvps7"><span class="rvts20">Another way would be direct modification of existing Input in the movie.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="TASingMethodology.html#linear-tasing">TASing Methodology</a><span class="rvts20">, </span><a class="rvts24" href="TraditionalTASing.html">Traditional TASing</a><span class="rvts20">, </span><a class="rvts24" href="Ideas.html#RerecordsCounter">Rerecords counter</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Multitracking</span><span class="rvts20"> (multi-track recording)</span></p>
<p class="rvps7"><span class="rvts20">One of ways to record Input for a walkthrough of the game in multi-player mode.</span></p>
<p class="rvps7"><span class="rvts20">It consists of recording Input for a segment of the movie by taking turns for every player separately.</span></p>
<p class="rvps7"><span class="rvts20">Another way would be recording Input for all players simultaneously.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="Toolbox.html#multitracking">Toolbox</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Frame Advance</span></p>
<p class="rvps7"><span class="rvts20">Step-by-step emulation of a game using the minimum units of measuring time frames.</span></p>
<p class="rvps7"><span class="rvts20">Used for manual control of progression of time. Considered to be more effective replacement to "slow motion".</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Turbo</span><span class="rvts20"> (turbo speed)</span></p>
<p class="rvps7"><span class="rvts20">The feature of speeding up emulation to the maximum possible speed.</span></p>
<p class="rvps7"><span class="rvts20">Used for skipping meaningless in-game events and reducing waiting time when the emulator is seeking.</span></p>
<p class="rvps7"><span class="rvts20">Most emulators allow to customize emulation speed, slowing it down or speeding up when needed. Turbo speed means the fastest speed possible, which is only limited by your computer speed.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="Toolbox.html#turbo-seek">Toolbox</a><span class="rvts20">, </span><a class="rvts24" href="NonlinearTASing.html#turbo-seeking">Nonlinear TASing</a><span class="rvts20">, </span><a class="rvts24" href="SemiautomaticTASing.html#turbo-seeking">Semiautomatic TASing</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Savestate</span></p>
<p class="rvps7"><span class="rvts20">A snapshot of the emulated system's state at that current moment.</span></p>
<p class="rvps7"><span class="rvts20">Unlike in-game saves, a savestate contains all the comprehensive data on the state of emulated hardware.</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Piano Roll</span></p>
<p class="rvps7"><span class="rvts20">A medium for visual representation of data, similar to table or grid view.</span></p>
<p class="rvps7"><span class="rvts20">The interface is used in many music editing programs (MIDI sequencers and MOD trackers). Its name and basic concept was derived from existing storage medium used to operate a mechanic piano (paper rolls).</span></p>
<p class="rvps7"><span class="rvts20">Taseditor's Piano Roll displays current movie data (Input and Markers) and allows to edit the data by mouse clicks. It also displays auxiliary information like pointers, Bookmarks, Lag log, etc.</span></p>
<p class="rvps7"><span class="rvts20">Every row of the Piano Roll corresponds to one frame of the movie.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="PianoRoll.html">Piano Roll</a><span class="rvts20">, </span><a class="rvts24" href="Ideas.html#PianoRoll">Piano Roll specs</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Playback cursor</span></p>
<p class="rvps7"><span class="rvts20">Pointer to currently played frame of the movie.</span></p>
<p class="rvps7"><span class="rvts20">Events of this frame are displayed in emulator's main window as current screenshot. Piano Roll marks respective row with light-blue color and the "Play" symbol (light-blue arrow).</span></p>
<p class="rvps7"><span class="rvts20">Only one frame of the movie can be seen at any given moment. To see the screenshot of upcoming events you'll have to move the Playback cursor forward (down in the Piano Roll). To see the screenshot of previous events you'll have to move the Playback cursor backward (up in the Piano Roll).</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="PianoRoll.html">Piano Roll</a><span class="rvts20">, </span><a class="rvts24" href="Navigation.html#playback-cursor">Playback cursor Navigation</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Greenzone </span><span class="rvts20">(access zone)</span></p>
<p class="rvps7"><span class="rvts20">The storage designed for speeding up Playback cursor navigation.</span></p>
<p class="rvps7"><span class="rvts20">This storage automatically collects savestates for all emulated frames of the movie, and when it's necessary to rewind or jump forward to a frame, Taseditor loads respective savestate from Greenzone.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="Toolbox.html#progressbar">Toolbox</a><span class="rvts20">, </span><a class="rvts24" href="ProgramCustomization.html#SetGreenzonecapacity">Program Customization</a><span class="rvts20">, </span><a class="rvts24" href="Ideas.html#Greenzone">Greenzone specs</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Selection</span></p>
<p class="rvps7"><span class="rvts20">Set of rows in the Piano Roll that are highlighted by special color (usually dark-blue).</span></p>
<p class="rvps7"><span class="rvts20">Any row of the Piano Roll (and thus any frame of the movie) can be either selected or not selected.</span></p>
<p class="rvps7"><span class="rvts20">Selection allows to operate with many frames at once, for example, delete a whole section of the movie at once instead of deleting every single frame in it.</span></p>
<p class="rvps7"><span class="rvts20">The upper row of the Selection is called "Selection cursor".</span></p>
<p class="rvps7"><span class="rvts20">The Selection cursor automatically follows the process of Input editing.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="PianoRoll.html">Piano Roll</a><span class="rvts20">, </span><a class="rvts24" href="Navigation.html#selection-cursor">Selection cursor Navigation</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Marker</span></p>
<p class="rvps7"><span class="rvts20">Yellow mark for a row in Piano Roll that emphasizes the frame among its neighbors.</span></p>
<p class="rvps7"><span class="rvts20">Any row in the Piano Roll can be marked. Markers allow to improve the distinctness of movie data.</span></p>
<p class="rvps7"><span class="rvts20">Markers can be used to:</span></p>
<ul style="text-indent: 30px; padding: 0; margin: 0 0 0 0px; list-style-position: inside; list-style-type: disc;">
<li class="rvps7"><span class="rvts20">organize the Input</span></li>
<li class="rvps7"><span class="rvts20">formalize knowledge (using text Notes)</span></li>
<li class="rvps7"><span class="rvts20">speed up navigation</span></li>
<li class="rvps7"><span class="rvts20">speed up selection of segments (</span><span class="rvts27">Ctrl + A</span><span class="rvts20">)</span></li>
</ul>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="PianoRoll.html#markers">Piano Roll</a><span class="rvts20">, </span><a class="rvts24" href="Ideas.html#Markers">Markers specs</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Note</span></p>
<p class="rvps7"><span class="rvts20">A single line of text accompanying every Marker.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="PianoRoll.html#markers">Piano Roll</a><span class="rvts20">, </span><a class="rvts24" href="Controls.html#notes">Controls</a><span class="rvts20">, </span><a class="rvts24" href="AdvancedFeatures.html#UsingMarkers">Advanced Features</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Bookmark</span></p>
<p class="rvps7"><span class="rvts20">A numbered mark for a frame of the movie.</span></p>
<p class="rvps7"><span class="rvts20">Taseditor has 10 slots for Bookmarks.</span></p>
<p class="rvps7"><span class="rvts20">A Bookmark stores all necessary data about the frame it was placed on. Including the movie branch that contains an Input that definitely leads the game to the events of this frame.</span></p>
<p class="rvps7"><span class="rvts20">Bookmarks can be used for Playback cursor navigation, but their main purpose is to store branches.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="Toolbox.html#bookmarks">Toolbox</a><span class="rvts20">, </span><a class="rvts24" href="Ideas.html#BookmarksBranches">Bookmarks specs</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Branch</span></p>
<p class="rvps7"><span class="rvts20">A full copy of the movie, storing its state at the moment of creating the Bookmark.</span></p>
<p class="rvps7"><span class="rvts20">The current movie can be replaced by the branch when necessary, thus restoring saved state of the movie.</span></p>
<p class="rvps7"><span class="rvts20">With branches you can have many different movies in one project, and you can instantly switch among them:</span></p>
<ul style="text-indent: 30px; padding: 0; margin: 0 0 0 0px; list-style-position: inside; list-style-type: disc;">
<li class="rvps7"><span class="rvts20">to compare alternative strategies of walkthrough</span></li>
<li class="rvps7"><span class="rvts20">to store current best approach when testing different solutions in a segment</span></li>
<li class="rvps7"><span class="rvts20">to store examples of unused tricks that could be useful in future</span></li>
<li class="rvps7"><span class="rvts20">to compare your own movie with somebody else's movie (e.g. when making an improvement)</span></li>
</ul>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="Toolbox.html#bookmarks">Toolbox</a><span class="rvts20">, </span><a class="rvts24" href="ProgramCustomization.html#BranchesrestoreentireMovie">Program Customization</a><span class="rvts20">, </span><a class="rvts24" href="Ideas.html#BookmarksBranches">Branches specs</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Project</span></p>
<p class="rvps7"><span class="rvts20">Container for storing working data in Taseditor.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="AdvancedFeatures.html#ProjectsSharing">Advanced Features</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Lua</span></p>
<p class="rvps7"><span class="rvts20">Programming language used in many TAS-friendly emulators.</span></p>
<p class="rvps7"><span class="rvts20">Useful for making custom tools and for data visualization.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="AdvancedFeatures.html#UsingLua">Advanced Features</a><span class="rvts20">, </span><span class="rvts24">Lua</span><span class="rvts20">, </span><a class="rvts24" href="LuaAPI.html">Lua API</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Bot </span><span class="rvts20">(robot)</span></p>
<p class="rvps7"><span class="rvts20">A program made for automation of a specific task.</span></p>
<p class="rvps7"><span class="rvts20">Bots are created to free humans from tedious work that doesn't require high intelligence. Unlike humans, bots don't invent the solution, they just methodically test all possible approaches within given limits, following an algorithm made by the programmer.</span></p>
<p class="rvps7"><span class="rvts20">Nowadays bots are only practical for running exhaustive search within a very small segment of the movie. Most of time it's faster to search for best solution manually, using human intuition to eliminate dead ends without unnecessary tests.</span></p>
<p class="rvps7"><span class="rvts20">Making bots requires programming skills. TASing bots are either written in Lua or built-in into emulators by modifying an open source code.</span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts22">Pattern</span></p>
<p class="rvps7"><span class="rvts20">A predefined sequence of Input values for a button.</span></p>
<p class="rvps7"><span class="rvts20">More: </span><a class="rvts24" href="AdvancedFeatures.html#UsingPatterns">Advanced Features</a><span class="rvts20">, </span><a class="rvts24" href="Ideas.html#Patterns">Patterns specs</a></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p class="rvps7"><span class="rvts20"><br/></span></p>
<p></p>
<p class="rvps6" style="clear: both;"><span class="rvts16">Created with the Personal Edition of HelpNDoc: </span><a class="rvts17" href="https://www.helpndoc.com">Easy EPub and documentation editor</a></p>
</div>
<div id="topic_footer"><div id="topic_footer_content">&copy; 2011-2013 AnS</div></div>
</div> <!-- /#topic-content -->
</article>
<footer></footer>
</div> <!-- /#main -->
<div class="mask" data-toggle="sm-nav-expanded"></div>
<!-- Modal -->
<div class="modal fade" id="hndModal" tabindex="-1" role="dialog" aria-labelledby="hndModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="hndModalLabel"></h4>
</div>
<div class="modal-body">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary modal-btn-close" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<!-- Splitter -->
<div id="hnd-splitter" style="left: 250px"></div>
<!-- Scripts -->
<script src="vendors/jquery-3.5.1/jquery.min.js"></script>
<script src="vendors/bootstrap-3.4.1/js/bootstrap.min.js"></script>
<script src="vendors/bootstrap-3.4.1/js/ie10-viewport-bug-workaround.js"></script>
<script src="vendors/markjs-8.11.1/jquery.mark.min.js"></script>
<script src="vendors/uri-1.19.2/uri.min.js"></script>
<script src="vendors/imageMapResizer-1.0.10/imageMapResizer.min.js"></script>
<script src="vendors/headroom-0.11.0/headroom.min.js"></script>
<script src="vendors/jstree-3.3.10/jstree.min.js"></script>
<script src="vendors/interactjs-1.9.22/interact.min.js"></script>
<!-- HelpNDoc scripts -->
<script src="js/polyfill.object.min.js"></script>
<script src="_translations.js"></script>
<script src="js/hndsd.min.js"></script>
<script src="js/hndse.min.js"></script>
<script src="js/app.min.js"></script>
<!-- Init script -->
<script>
$(function() {
// Create the app
var app = new Hnd.App();
// Update translations
hnd_ut(app);
// Instanciate imageMapResizer
imageMapResize();
// Custom JS
// Boot the app
app.Boot();
});
</script>
</body>
</html>