updated docs

[[Split portion of a mixed commit.]]
This commit is contained in:
ansstuff 2012-10-12 20:00:29 +00:00
parent dd0de14e13
commit 1971817b6d
44 changed files with 1124 additions and 1098 deletions

View File

@ -52,7 +52,7 @@
</div>
<div id="topic_content">
<p><span class="rvts35">Auto Fire Settings</span></p>
<p><span class="rvts36">Auto Fire Settings</span></p>
<p><br/></p>
<p><span class="rvts12">Autofire Pattern</span></p>
<p><br/></p>

View File

@ -143,11 +143,11 @@
<p><br/></p>
<p>Right-clicking in the active cheats list brings up the context menu.</p>
<p><br/></p>
<p><span class="rvts38">Toggle Cheat</span> - does the same thing as double clicking</p>
<p><span class="rvts33">Toggle Cheat</span> - does the same thing as double clicking</p>
<p><br/></p>
<p><span class="rvts38">Poke cheat value</span> - has a different affect that normal freezing, this makes a one time write of that value as opposed to freezing it temporarily to that value and having it restored later. &nbsp;It has the same affect as typing in values in the <a class="rvts18" href="HexEditor.html">Hex Editor</a>.</p>
<p><span class="rvts33">Poke cheat value</span> - has a different affect that normal freezing, this makes a one time write of that value as opposed to freezing it temporarily to that value and having it restored later. &nbsp;It has the same affect as typing in values in the <a class="rvts18" href="HexEditor.html">Hex Editor</a>.</p>
<p><br/></p>
<p><span class="rvts38">Goto In Hex Editor</span> - Opens the <a class="rvts18" href="HexEditor.html">Hex editor</a> dialog to the position of the selected RAM value.</p>
<p><span class="rvts33">Goto In Hex Editor</span> - Opens the <a class="rvts18" href="HexEditor.html">Hex editor</a> dialog to the position of the selected RAM value.</p>
<p><br/></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Easy CHM and documentation editor</a></p>
</div>

View File

@ -53,39 +53,39 @@
<p><br/></p>
<p>These chapters explain options under FCEUX's Config menu.</p>
<p><br/></p>
<p><a class="rvts34" href="ToggleSwitchesHideMenuetc.html">Menu Items &amp; Sub-menus</a></p>
<p><a class="rvts35" href="ToggleSwitchesHideMenuetc.html">Menu Items &amp; Sub-menus</a></p>
<p><br/></p>
<p>Explains the basic menu items and sub-menu items in the top of the menu.</p>
<p><br/></p>
<p><a class="rvts34" href="GUI.html">GUI</a></p>
<p><a class="rvts35" href="GUI.html">GUI</a></p>
<p><br/></p>
<p>Settings related to the FCEU emulator window.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="Directories.html">Directories</a></p>
<p><a class="rvts35" href="Directories.html">Directories</a></p>
<p><br/></p>
<p>Sets Directory override assignments.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="Input.html">Input</a></p>
<p><a class="rvts35" href="Input.html">Input</a></p>
<p><br/></p>
<p>Assigns keys/joypad buttons to emulated controllers.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="NetworkPlay.html">Network Play</a></p>
<p><a class="rvts35" href="NetworkPlay.html">Network Play</a></p>
<p><br/></p>
<p>Various settings related to playing over the internet.</p>
<p><br/></p>
<p><a class="rvts34" href="Palette.html">Palette</a></p>
<p><a class="rvts35" href="Palette.html">Palette</a></p>
<p><br/></p>
<p>Palette options.</p>
<p><br/></p>
<p><a class="rvts34" href="SoundOptions.html">Sound</a></p>
<p><a class="rvts35" href="SoundOptions.html">Sound</a></p>
<p><br/></p>
<p>Sets sound configuration options.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="Timing.html">Timing</a></p>
<p><a class="rvts35" href="Timing.html">Timing</a></p>
<p><br/></p>
<p>Settings related to emulation timing.</p>
<p><br/></p>
@ -94,12 +94,12 @@
<p>Sets video &amp; graphics configuration options.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="MovieOptions.html">Movie Options</a></p>
<p><a class="rvts35" href="MovieOptions.html">Movie Options</a></p>
<p><br/></p>
<p>Sets options related to playing/recording movie files</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="MapHotkeys.html">Map Hotkeys</a></p>
<p><a class="rvts35" href="MapHotkeys.html">Map Hotkeys</a></p>
<p><br/></p>
<p>Sets Hotkey assignments.</p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Help documents</a></p>

View File

@ -81,10 +81,17 @@
<p><br/></p>
<p><span class="rvts16">Switch Disk Side</span></p>
<p><br/></p>
<p>If/when prompted by the game, you can emulate the Switching sides of the FDS disk with the NES &gt; Switch Disk Side command.</p>
<p>When prompted by the game, you can emulate the Switching sides of the FDS disk with the NES -&gt; Switch Disk Side command.</p>
<p>This command can be mapped to a keyboard/joypad button in the <a class="rvts18" href="MapHotkeys.html">Map Hotkeys Menu</a>.</p>
<p><br/></p>
<p> </p>
<p>To switch disk side you first have to eject the disk, and after switching sides you have to insert the disk back.</p>
<p>Many FDS games ask you to switch disk side before you can proceed from the title screen. So you have to do the following:</p>
<p>1) choose <span class="rvts33">NES -&gt; Eject/Insert Disk</span>, the message "Disk 0 Side A Ejected" will appear</p>
<p>2) choose <span class="rvts33">NES -&gt; Switch Disk Side</span>, the message "Disk 0 Side B Selected" will appear</p>
<p>3) choose <span class="rvts33">NES -&gt; Eject/Insert Disk</span> again, the message "Disk 0 Side B Inserted" will appear, and the game will change from title screen to player select screen.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free CHM Help documentation generator</a></p>
</div>

View File

@ -64,7 +64,7 @@
<p><br/></p>
<p><a class="rvts27" href="FamicomDiskSytem.html">Famicom Disk System</a></p>
<p><br/></p>
<p>A guide for playing Famicom (.fds) games.</p>
<p>A guide for playing Famicom Disk System (.fds) games.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts27" href="MovieRecording.html">Movie Recording</a></p>

View File

@ -67,13 +67,13 @@
<p><br/></p>
<p>The Hex Editor lets you edit three major areas:</p>
<p><br/></p>
<p><span class="rvts38">1. NES MEMORY</span></p>
<p><span class="rvts33">1. NES MEMORY</span></p>
<p>This allows you to directly edit all of the NES address space ($0000-$FFFF). While you can easily modify RAM, or write directly to registers by typing in data, you cannot modify ROM data ($8000-$FFFF) itself. &nbsp;This is because most mappers have registers which are located in this space; so writing there can trigger mapper operations that may cause the game to crash or glitch if you don't know what you're doing. &nbsp;If you want to edit the ROM itself, right-click on the offset and select &nbsp;"Go here in ROM file"; that will take you directly to where you need to be so you can start editing. &nbsp;You can also freeze RAM by clicking on it with the middle mouse button, or by using the right-click menu. This works by adding it directly to the Cheat List, which you can see from the Cheat Console. &nbsp;Finally, the right-click menu can be used to quickly add a read or write breakpoint to the debugger.</p>
<p><br/></p>
<p><span class="rvts38">2. PPU MEMORY</span></p>
<p><span class="rvts33">2. PPU MEMORY</span></p>
<p>This allows you to directly view and write to PPU memory (VRAM).</p>
<p><br/></p>
<p><span class="rvts38">3. THE ROM FILE</span></p>
<p><span class="rvts33">3. THE ROM FILE</span></p>
<p>This is possibly the coolest part of FCEUXD: &nbsp;It allows you to edit the ROM file in real-time, i.e. while the game is running. If you make a mistake, press Ctrl+Z or Edit-&gt;Undo to undo your change (then load a save-state if the game crashed). &nbsp;If you have the <a class="rvts18" href="CodeDataLogger.html">Code/Data Logger</a> running, then bytes that were logged will be colored.</p>
<p><br/></p>
<p>The Hex Editor also has support for table files (*.tbl) to map bytes to text. Each line consists of four characters of the form "xx=y", where "xx" is the hex value, and "y" is the character that that value represents. &nbsp;I have also added an extension to represent the Return key: &nbsp;xx=ret whereby pressing the Return key will enter that value into the ROM. &nbsp;You can copy/paste data or text by selecting it and using Ctrl+Z (to copy) and Ctrl+V (to paste). Plus, there is an Edit-&gt;Find feature that you can use to search for data. This feature should be fairly intuitive, so I won't bother to explain it.</p>

File diff suppressed because it is too large Load Diff

View File

@ -53,13 +53,13 @@
<div id="topic_content">
<p><span class="rvts56">Using Lua scripting</span></p>
<p><span class="rvts38"><br/></span></p>
<p><span class="rvts33"><br/></span></p>
<p>Lua is built into FCEUX as of 2.1.2, and luapack DLL files are no longer needed in this and later versions.</p>
<p><br/></p>
<p>To run lua scripts in older versions of FCEUX, you will need the lua pack which can be found <a class="rvts18" href="http://fceux.com/luapack">here</a>. The .dll files must be unzipped in the same folder as fceux.exe.</p>
<p><span class="rvts56"><br/></span></p>
<p><span class="rvts56">Core Lua Documentation</span></p>
<p><span class="rvts38"><br/></span></p>
<p><span class="rvts33"><br/></span></p>
<p>If you have never programmed, you will probably want to start by learning the basic of Lua, which is too broad for the scope of this help file. &nbsp;Try searching on the Internet for "Lua tutorial". &nbsp;As of this writing, it's official homepage is <a class="rvts18" href="http://www.lua.org/">http://www.lua.org/</a></p>
<p><br/></p>
<p>If you are familiar with any programming language you will probably not have too much difficulty adjusting to the syntax and structure of Lua. &nbsp;You will probably also find useful information on the Internet.</p>

View File

@ -84,11 +84,11 @@
<p><br/></p>
<p><span class="rvts28">Options Menu</span></p>
<p><br/></p>
<p>If you select <span class="rvts38">Load on Start up</span>, Memory watch will load up automatically when FCEU is started. </p>
<p>If you select <span class="rvts33">Load on Start up</span>, Memory watch will load up automatically when FCEU is started. </p>
<p><br/></p>
<p>If you select <span class="rvts38">Load Last File on Start up</span>, the most recent file in the Recent folder will be loaded when memory watch is loaded.</p>
<p>If you select <span class="rvts33">Load Last File on Start up</span>, the most recent file in the Recent folder will be loaded when memory watch is loaded.</p>
<p><br/></p>
<p>If you select <span class="rvts38">Collapse to 1 Column </span>(or press the right arrow button on the bottom left of the dialog), the memory watch dialog is reduced to just 1 column.</p>
<p>If you select <span class="rvts33">Collapse to 1 Column </span>(or press the right arrow button on the bottom left of the dialog), the memory watch dialog is reduced to just 1 column.</p>
<p><br/></p>
<p><span class="rvts16">Frozen Memory Addresses</span></p>
<p><br/></p>

View File

@ -73,7 +73,7 @@
<p>Emulates the inserting of a coin in an arcade-style game.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts33">Emulation Speed Sub Menu</span></p>
<p><span class="rvts34">Emulation Speed Sub Menu</span></p>
<p><br/></p>
<p><span class="rvts16">Speed Up</span></p>
<p>Speeds up emulation (emulation speed ranges from 1% to 6400%)</p>

View File

@ -80,7 +80,7 @@
<p>2A03 CPU is a 6502-compatible CPU without the decimal mode (CLD and SED do nothing). It has an on-die sound generator, very limited DMA capability, and an input device controller that can be accessed through the 2A03 registers.</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>
<p><span class="rvts36">6502 CPU Memory Map &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><span class="rvts37">6502 CPU Memory Map &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p>Address Range &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Size in bytes &nbsp; &nbsp; &nbsp; &nbsp;Notes (Page size = 256bytes)</p>
<p><span class="rvts15">(Hexadecimal)</span><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><br/></p>
@ -185,19 +185,19 @@
<p><br/></p>
<p>There are always the following blocks:</p>
<p><br/></p>
<p><span class="rvts38">Sprite Data</span><span class="rvts38"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts38"> &nbsp; &nbsp; &nbsp; &nbsp;</span>Block 2</p>
<p><span class="rvts33">Sprite Data</span><span class="rvts33"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts33"> &nbsp; &nbsp; &nbsp; &nbsp;</span>Block 2</p>
<p><br/></p>
<p>I've yet to see map a game that does not use this block solely for sprite data. &nbsp;It will contain the "ID" numbers for all the items currently on the screen. &nbsp;Simply put, this data is precisely the data you see on the screen. &nbsp;For making TAS movies this is not useful data. &nbsp;If you are using cheat search and have narrowed it down your search to a few values, you can immediately discard any $02xx values.</p>
<p><br/></p>
<p>In games with a lot of sprite data, I've seen blocks 1 &amp; 3 also reserved for sprite data.</p>
<p><br/></p>
<p><span class="rvts38">Music &amp; Sound FX</span><span class="rvts38"> &nbsp; &nbsp; &nbsp; &nbsp;</span>Block 1 or 7, generally</p>
<p><span class="rvts33">Music &amp; Sound FX</span><span class="rvts33"> &nbsp; &nbsp; &nbsp; &nbsp;</span>Block 1 or 7, generally</p>
<p><br/></p>
<p>This one has more deviation, but almost all games reserve an entire block for memory allocated to the game's Music and Sound FX. &nbsp;Again, for TAS purposes these values are not *useful. By finding even 1 of these values, you can eliminate that block from your search possibilities. &nbsp; Finding which block is reserved for music is often quite simple with the <a class="rvts18" href="HexEditor.html">Hex editor</a>. &nbsp;Watching the ram values with the game playing, you can see which addresses "move to the beat". &nbsp;</p>
<p><br/></p>
<p>*Actually they can come in handy for "dancing to the beat"</p>
<p><br/></p>
<p><span class="rvts38">Player &amp; Enemy Stats</span> &nbsp; &nbsp; &nbsp; &nbsp;Blocks 1,3,4,5 generally (any or all of these)</p>
<p><span class="rvts33">Player &amp; Enemy Stats</span> &nbsp; &nbsp; &nbsp; &nbsp;Blocks 1,3,4,5 generally (any or all of these)</p>
<p><br/></p>
<p>This is your "sweet spot" for movie making, as often you will be wanting to track the players speed or coordinates, enemy energy, or enemy coordinates.</p>
<p><br/></p>
@ -227,7 +227,7 @@
<p><br/></p>
<p>These distinctions are easier to see in a visual example. &nbsp;This is the enemy/player stats as they are mapped in the game <span class="rvts30">Teenage Mutant Ninja Turtles</span>.</p>
<p><br/></p>
<p><span class="rvts38">Block 4</span></p>
<p><span class="rvts33">Block 4</span></p>
<p><span class="rvts72"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts72"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts72"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;P &nbsp;W1 W2 W3 E1 E2 E3 E4 E5 E6 E7 E8 X &nbsp;X &nbsp;X &nbsp;X &nbsp;</span></p>
<p><span class="rvts29">Sprite ID: &nbsp; &nbsp; &nbsp; &nbsp;040x: 09 00 00 00 00 9E 9E 9E 9E 00 00 00 00 00 00 00</span></p>
<p><span class="rvts29">ID counter: &nbsp; &nbsp; &nbsp; 041x: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>

View File

@ -52,7 +52,7 @@
</div>
<div id="topic_content">
<p><span class="rvts35">Name Table Viewer</span></p>
<p><span class="rvts36">Name Table Viewer</span></p>
<p><br/></p>
<p><span class="rvts12">Introduction</span></p>
<p><br/></p>

View File

@ -56,14 +56,14 @@
<p><br/></p>
<p><span class="rvts17">Overview of Included Scripts</span></p>
<p><br/></p>
<p>Many users of FCEUX do not investigate the <span class="rvts38">luaScripts</span> folder, or, for that matter, ignore lua scripting altogether. The purpose of this text is to let users know that knowing how to <span class="rvts30">create</span> lua scripts is not a requirement in <span class="rvts30">using</span> them. Indeed, there are several scripts that, if you just load them, will explain themselves enough that you don't need to know how to program at all in order to use them. Besides, they shouldn't need to be re-programmed anyway if you are to use them, for if they needed programming experience just to be used, their existence is largely defeated by that very fact!</p>
<p>Many users of FCEUX do not investigate the <span class="rvts33">luaScripts</span> folder, or, for that matter, ignore lua scripting altogether. The purpose of this text is to let users know that knowing how to <span class="rvts30">create</span> lua scripts is not a requirement in <span class="rvts30">using</span> them. Indeed, there are several scripts that, if you just load them, will explain themselves enough that you don't need to know how to program at all in order to use them. Besides, they shouldn't need to be re-programmed anyway if you are to use them, for if they needed programming experience just to be used, their existence is largely defeated by that very fact!</p>
<p><br/></p>
<p>FCEUX itself is a program that you load. Our amazing programmers did all the work already so you don't need to program up your own FCEUX to run it, do you? The same can be said of these scripts.</p>
<p><br/></p>
<p>So, open the <span class="rvts38">luaScripts</span> folder and actually take the time to look at some of these scripts. You may use a text-editing program to open these if you so wish.</p>
<p>So, open the <span class="rvts33">luaScripts</span> folder and actually take the time to look at some of these scripts. You may use a text-editing program to open these if you so wish.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts36">General Purpose scripts:</span></p>
<p><span class="rvts37">General Purpose scripts:</span></p>
<p>These may be used with any game freely. Else, the "General" part of General Purpose doesn't apply.</p>
<p><br/></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
@ -73,7 +73,7 @@
</ul>
<p><br/></p>
<p><br/></p>
<p><span class="rvts36">Game Specific scripts:</span></p>
<p><span class="rvts37">Game Specific scripts:</span></p>
<p>These scripts are built specifically for certain games. Attempting to run them while you've loaded another ROM will likely cause undesired results. The meaning of "undesired results" in this case are things like crashing the game, causing it to glitch in other ways, or having nonsense numbers and pixels show up.</p>
<p><br/></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
@ -102,7 +102,7 @@
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts36">Auxiliary Functions scripts:</span></p>
<p><span class="rvts37">Auxiliary Functions scripts:</span></p>
<p>These scripts exist to make the life of programmers easier. As such, if you don't program, you may skip over these scripts. These should not be run by themselves, for they themselves probably don't have any programming to do any work usefully. It's like giving yourself a clip of bullets with no gun to use.</p>
<p><br/></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">

View File

@ -77,7 +77,7 @@
<p><a class="rvts18" href="Debugger.html">Debugger</a>, <a class="rvts18" href="PPUViewer.html">PPU Viewer</a>, <a class="rvts18" href="HexEditor.html">Hex Editor</a>, <a class="rvts18" href="TraceLogger.html">Trace Logger</a>, <a class="rvts18" href="CodeDataLogger.html">Code/Data Logger</a></p>
<p><br/></p>
<p><span class="rvts10">ROM Editing / Game Genie Codes</span></p>
<p><a class="rvts18" href="HexEditor.html">Hex Editor</a>, <a class="rvts18" href="CheatSearch.html">Cheat Search</a>, <a class="rvts18" href="GameGenieEncoderDecoder.html">Game Genie Decoder/Encoder</a></p>
<p><a class="rvts18" href="Debugger.html">Debugger</a>, <a class="rvts18" href="HexEditor.html">Hex Editor</a>, <a class="rvts18" href="CheatSearch.html">Cheat Search</a>, <a class="rvts18" href="GameGenieEncoderDecoder.html">Game Genie Decoder/Encoder</a></p>
<p><br/></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Generate EPub eBooks with ease</a></p>
</div>

View File

@ -52,7 +52,7 @@
</div>
<div id="topic_content">
<p><span class="rvts35">Config Toggle Switches</span></p>
<p><span class="rvts36">Config Toggle Switches</span></p>
<p><br/></p>
<p>Explains the various toggle switch commands in the top two groups of commands under the Config Menu.</p>
<p><br/></p>
@ -77,13 +77,13 @@
<p>Toggles between NTSC (60fps) and PAL (50fps) frame rates. &nbsp;By default, FCEUX will detect the proper choice when loading a ROM and set the flag accordingly. &nbsp;</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts33">PPU </span><span class="rvts36">(Sub-menu)</span></p>
<p><span class="rvts34">PPU </span><span class="rvts37">(Sub-menu)</span></p>
<p><br/></p>
<p><span class="rvts38">New PPU / Old PPU</span></p>
<p>As of FCEUX 2.1.2, FCEUX has a new PPU core. &nbsp;The new PPU has improved accuracy and greater game compatibility than the previous PPU. &nbsp;However, some games may not work properly and there will be slight timing differences that would hurt movie compatibility. &nbsp;Therefore, FCEUX will still support the old PPU. &nbsp;Currently, Old PPU is the default setting.</p>
<p><span class="rvts33">New PPU / Old PPU</span></p>
<p>As of FCEUX 2.1.2, FCEUX has a new PPU core. &nbsp;The new PPU has improved accuracy and greater game compatibility than the old PPU. &nbsp;However, some games may not work properly and there will be slight timing differences that would hurt movie compatibility. Therefore, the old PPU is &nbsp;still the preferred setting.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts33">Enable </span><span class="rvts36">(Sub-menu)</span></p>
<p><span class="rvts34">Enable </span><span class="rvts37">(Sub-menu)</span></p>
<p><br/></p>
<p><span class="rvts16">Run in Background</span></p>
<p><br/></p>
@ -116,7 +116,7 @@
<p><br/></p>
<p>Enabled by default. &nbsp;This option compresses non movie savestates.</p>
<p><br/></p>
<p><span class="rvts33">Display </span><span class="rvts36">(Sub-Menu)</span></p>
<p><span class="rvts34">Display </span><span class="rvts37">(Sub-Menu)</span></p>
<p><br/></p>
<p><span class="rvts16">Input Display</span></p>
<p><br/></p>
@ -167,12 +167,12 @@
<p><span class="rvts16">Graphics: OBJ</span></p>
<p>Turning this off will turn off the objects (sprites) in the game.</p>
<p><br/></p>
<p>Note: You can set the default color when the Backgrounds are turned off. &nbsp;To do so, open fceux.cfg and change the value of the entry named: <span class="rvts37">gNoBGFillColor </span></p>
<p><span class="rvts37"><br/></span></p>
<p><span class="rvts37"><br/></span></p>
<p>Note: You can set the default color when the Backgrounds are turned off. &nbsp;To do so, open fceux.cfg and change the value of the entry named: <span class="rvts38">gNoBGFillColor </span></p>
<p><span class="rvts38"><br/></span></p>
<p><span class="rvts38"><br/></span></p>
<p><span class="rvts16">Save Config File</span></p>
<p><span class="rvts37"><br/></span></p>
<p><span class="rvts37">Saves current settings to fceux.cfg. &nbsp;Normally settings are not saved until FCEUX is closed.</span></p>
<p><span class="rvts38"><br/></span></p>
<p><span class="rvts38">Saves current settings to fceux.cfg. &nbsp;Normally settings are not saved until FCEUX is closed.</span></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/iphone-website-generation">Free iPhone documentation generator</a></p>
</div>

View File

@ -89,6 +89,10 @@
<p><span class="rvts10">Movie Splicing Editing</span></p>
<p><a class="rvts18" href="fm2.html">Text based file format</a></p>
<p><br/></p>
<p><span class="rvts10">Integrated development system</span></p>
<p><a class="rvts18" href="TASEditor.html">TAS Editor</a></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Movie making</span></p>
<p><span class="rvts16"><br/></span></p>
<p>To get started making a Tool Assisted Movie, simply begin recording a movie (see <a class="rvts18" href="MovieRecording.html">Movie Recording</a>). &nbsp;The basic premise of TASing, however, is to use re-records to optimize the execution of a decided upon goal (usually to complete the game as fast as possible). &nbsp;Re-recording is the act of replacing an already recorded part (of a movie) with something else; also called undo.</p>

View File

@ -59,10 +59,12 @@
<p><br/></p>
<p><span class="rvts41">Slow emulation / Sound crackle</span></p>
<p><br/></p>
<p>FCEUX may not run well on slower CPU's. &nbsp;You can improve performance by setting sound to low quality in the<a class="rvts18" href="SoundOptions.html"> Sound Dialog</a>. &nbsp;In addition, for windowed mode try enabling hardware acceleration in the <a class="rvts18" href="Video.html">Video config</a> dialog.</p>
<p>FCEUX may not run well on slower CPU's. &nbsp;You can improve performance by setting sound to low quality in the<a class="rvts18" href="SoundOptions.html"> Sound Dialog</a>.</p>
<p>In addition, for windowed mode try enabling hardware acceleration in the <a class="rvts18" href="Video.html">Video config</a> dialog.</p>
<p>Also ensure that you're using the Old PPU, because the New PPU engine is very slow. Check Config -&gt; PPU -&gt; Old PPU.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">Emulated picture is kinda blurred</span></p>
<p><span class="rvts41">Emulated picture is blurred</span></p>
<p><br/></p>
<p>Disable hardware acceleration in the <a class="rvts18" href="Video.html">Video config</a> dialog.</p>
<p><br/></p>
@ -74,7 +76,8 @@
<p><br/></p>
<p><span class="rvts41">"The colors in game X do not look right"</span></p>
<p><br/></p>
<p>FCEUX uses the color palette of the old FCEU / FCEUXD branches. &nbsp;However, FCEUX comes pre-packaged with several additional color palettes. &nbsp;For more information see <a class="rvts18" href="Palette.html">Palette config</a> and <a class="rvts18" href="PaletteOptions.html">Palette options</a>.</p>
<p>There's no such thing as a universally right palette for NES games.</p>
<p>FCEUX uses the color palette of the old FCEU / FCEUXD branches. Also FCEUX comes pre-packaged with several additional color palettes. For more information see <a class="rvts18" href="Palette.html">Palette config</a> and <a class="rvts18" href="PaletteOptions.html">Palette options</a>.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">"I converted a .fcm file to .fm2 but the .fm2 desyncs"</span></p>
@ -84,21 +87,11 @@
<p>In addition, the .fm2 conversion tool has had some issues on certain operating systems including Vista and Mac.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">"When I attempt to load a Lua script I get an error / crash"</span></p>
<p><br/></p>
<p>Double check you have the Lua .dll files that came packaged with FCEUX 2.1. &nbsp;They must be in the /dll folder from the root directory (where fceux.exe is stored).</p>
<p><br/></p>
<p> </p>
<p><span class="rvts41">"Directdraw: Error creating secondary surface"</span></p>
<p><br/></p>
<p>Currently this error will happen when attempting to do Full screen mode on Windows Vista. &nbsp;In addition, there has been one reported case of this happening on the 32-bit version of Windows XP. &nbsp;This is a known issue with FCEUX that has not yet been resolved.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">"Can't find FDS Bios image when I attempt to load a .fds game!"</span></p>
<p><br/></p>
<p>FCEUX requires the FDS Bios to be named disksys.rom. &nbsp;It must be located in the root directory (where fceux.exe is stored) or in the folder of the FDS Directory override (see <a class="rvts18" href="Directories.html">Directory overrides</a>).</p>
<p>FCEUX requires the FDS Bios to be named <span class="rvts33">disksys.rom</span>. &nbsp;It must be located in the root directory (where fceux.exe is stored) or in the folder of the FDS Directory override (see <a class="rvts18" href="Directories.html">Directory overrides</a>).</p>
<p><br/></p>
<p>In addition, there are some bad versions of disksys.rom. &nbsp;The one FDS requires is 8192 bytes.</p>
<p>In addition, there are some bad versions of disksys.rom. &nbsp;The one FDS requires is 8192 bytes in size.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">"How can I use Netplay / Where can I get FCEU Server?"</span></p>
@ -108,7 +101,7 @@
<p><br/></p>
<p><span class="rvts41">"I have a Game Genie rom, how can I use it with FCEUX?" </span></p>
<p><br/></p>
<p>While FCEUX has a <a class="rvts18" href="GameGenieEncoderDecoder.html">Game Genie code converter</a>, you can also use game genie codes with the game genie rom. &nbsp;It must be named gg.rom and be placed in the root directory (where fceux.exe is stored). &nbsp;You must also check NES &gt; Game Genie in the main menu.</p>
<p>While FCEUX has a <a class="rvts18" href="GameGenieEncoderDecoder.html">Game Genie code converter</a>, you can also use game genie codes with the game genie rom. &nbsp;It must be named gg.rom and be placed in the root directory (where fceux.exe is stored). &nbsp;You must also check NES -&gt; Game Genie in the main menu.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>

View File

@ -134,7 +134,7 @@
<p><span class="rvts41">Last Line</span></p>
<p>Sets the last scan line for NTSC and PAL Modes. This should be left on the default of 231 for NTSC and 239 for PAL.</p>
<p><br/></p>
<p><span class="rvts41">Clip Left and Right Sides</span><span class="rvts38"> (8 columns each)</span></p>
<p><span class="rvts41">Clip Left and Right Sides</span><span class="rvts33"> (8 columns each)</span></p>
<p>If enabled, 8 pixels from each side of the windows will be removed. Some NES games (even on real hardware) show grapical artifacts on the sides of screen when scrolling, so you may hide those artifacts by checking the option.</p>
<p><br/></p>
<p><br/></p>

View File

@ -56,7 +56,7 @@
<p>Released -- ???? 2012</p>
<p><br/></p>
<p><br/></p>
<p>The 2.1.6 release fixes a lot of bugs and adds many new features to prior releases, <span class="rvts22">increasing game compatibility and enhancing usability of both Windows and SDL ports</span>. The most notable features of Windows version are proper fullscreen support and major improvement of debugging tools. This version also introduces new tool TAS Editor v1.0, created to boost efficiency and ease of Tool-Assisted Speedrunning.</p>
<p>The 2.1.6 release fixes a lot of bugs and adds many new features to prior releases, <span class="rvts22">increasing game compatibility and enhancing usability of both Windows and SDL ports</span>. The most notable features of Windows version are proper fullscreen support and major improvement of debugging tools. This version also introduces new powerful toolset TAS Editor v1.0 created to boost efficiency and ease of Tool-Assisted Speedrunning.</p>
<p><span class="rvts24"><br/></span></p>
<p><span class="rvts23">Common </span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
@ -112,6 +112,7 @@
<p><span class="rvts22"><br/></span></p>
<p><span class="rvts22">New scripts:</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts22">BoulderDash.lua</span></li>
<li><span class="rvts22">ButtonCount.lua</span></li>
<li><span class="rvts22">RBIBaseball.lua</span></li>
<li><span class="rvts22">SoundDisplay.lua</span></li>

View File

@ -166,33 +166,33 @@ span.rvts32
font-family: 'Courier New', 'Courier', monospace;
}
span.rvts33
{
font-weight: bold;
}
span.rvts34
{
font-size: 16pt;
text-decoration: underline;
}
a.rvts34, span.rvts34
a.rvts35, span.rvts35
{
font-size: 12pt;
color: #0000ff;
text-decoration: underline;
}
a.rvts34:hover { color: #0000ff; }
span.rvts35
a.rvts35:hover { color: #0000ff; }
span.rvts36
{
font-size: 24pt;
}
span.rvts36
span.rvts37
{
font-size: 14pt;
text-decoration: underline;
}
span.rvts37
{
font-family: 'Courier New', 'Courier', monospace;
}
span.rvts38
{
font-weight: bold;
font-family: 'Courier New', 'Courier', monospace;
}
span.rvts39
{

View File

@ -72,7 +72,7 @@
<p>The header is always in ASCII plain text format. It consists of several key-value pairs.</p>
<p>The input log section can be identified by it starting with a | (pipe).</p>
<p>The input log section can be either in ASCII plain text format or in binary format.</p>
<p>The input log section terminates at EOF, unless the <span class="rvts38">length</span> key is specified in header.</p>
<p>The input log section terminates at EOF, unless the <span class="rvts33">length</span> key is specified in header.</p>
<p>Newlines may be \r\n or \n.</p>
<p><br/></p>
<p><br/></p>
@ -85,54 +85,54 @@
<p><br/></p>
<p>Integer keys (also used for booleans, with a 1 for true and 0 for false) must have a value that can be stored as int32:</p>
<p><br/></p>
<p> <span class="rvts38">- version</span> (required) - the version of the movie file format; for now it is always 3</p>
<p> <span class="rvts33">- version</span> (required) - the version of the movie file format; for now it is always 3</p>
<p><span class="rvts75"><br/></span></p>
<p> <span class="rvts38">- emuVersion</span> (required) - the version of the emulator used to produce the movie</p>
<p> <span class="rvts33">- emuVersion</span> (required) - the version of the emulator used to produce the movie</p>
<p><span class="rvts75"><br/></span></p>
<p> <span class="rvts38">- rerecordCount</span> (optional) - the rerecord count</p>
<p> <span class="rvts33">- rerecordCount</span> (optional) - the rerecord count</p>
<p><span class="rvts75"><br/></span></p>
<p> -<span class="rvts38"> palFlag</span> (bool) (optional) - true if the movie uses PAL timing</p>
<p> -<span class="rvts33"> palFlag</span> (bool) (optional) - true if the movie uses PAL timing</p>
<p><span class="rvts75"><br/></span></p>
<p> -<span class="rvts38"> NewPPU</span> (bool) (optional) - true if the movie uses New PPU</p>
<p> -<span class="rvts33"> NewPPU</span> (bool) (optional) - true if the movie uses New PPU</p>
<p><span class="rvts75"><br/></span></p>
<p> <span class="rvts38">- FDS</span> (bool) (optional) - true if movie was recorded on a Famicom Disk System (FDS) game</p>
<p> <span class="rvts33">- FDS</span> (bool) (optional) - true if movie was recorded on a Famicom Disk System (FDS) game</p>
<p><span class="rvts75"><br/></span></p>
<p> <span class="rvts38">- fourscore</span> (bool) - true if a fourscore was used. If fourscore is not used, then port0 and port1 are required</p>
<p> <span class="rvts33">- fourscore</span> (bool) - true if a fourscore was used. If fourscore is not used, then port0 and port1 are required</p>
<p><span class="rvts75"><br/></span></p>
<p> <span class="rvts38">- port0 </span>- indicates the type of input device attached to the port 0. Supported values are:</p>
<p> <span class="rvts33">- port0 </span>- indicates the type of input device attached to the port 0. Supported values are:</p>
<p> &nbsp; &nbsp; SI_NONE = 0</p>
<p> &nbsp; &nbsp; SI_GAMEPAD = 1</p>
<p> &nbsp; &nbsp; SI_ZAPPER = 2</p>
<p><span class="rvts75"><br/></span></p>
<p> <span class="rvts38">- port1</span> - indicates the type of input device attached to the port 1. Supported values are:</p>
<p> <span class="rvts33">- port1</span> - indicates the type of input device attached to the port 1. Supported values are:</p>
<p> &nbsp; &nbsp; SI_NONE = 0</p>
<p> &nbsp; &nbsp; SI_GAMEPAD = 1</p>
<p> &nbsp; &nbsp; SI_ZAPPER = 2</p>
<p><span class="rvts75"><br/></span></p>
<p><span class="rvts38"> - port2</span> (required) - indicates the type of the FCExp port device which was attached. Supported values are:</p>
<p><span class="rvts33"> - port2</span> (required) - indicates the type of the FCExp port device which was attached. Supported values are:</p>
<p> &nbsp; &nbsp; SIFC_NONE = 0</p>
<p><span class="rvts75"><br/></span></p>
<p> <span class="rvts38">- binary</span> (bool) (optional) - true if input log is stored in binary format</p>
<p> <span class="rvts33">- binary</span> (bool) (optional) - true if input log is stored in binary format</p>
<p><span class="rvts75"><br/></span></p>
<p> <span class="rvts38">- length</span> (optional) - movie size (number of frames in the input log). If this key is specified and the number is &gt;= 0, the input log ends after specified number of records, and any remaining data should not be parsed. This key is used in <span class="rvts73">fm3</span> format to allow storing extra data after the end of input log</p>
<p> <span class="rvts33">- length</span> (optional) - movie size (number of frames in the input log). If this key is specified and the number is &gt;= 0, the input log ends after specified number of records, and any remaining data should not be parsed. This key is used in <span class="rvts73">fm3</span> format to allow storing extra data after the end of input log</p>
<p><br/></p>
<p><br/></p>
<p>String keys have values that consist of the remainder of the key-value pair line. As a consequence, string values cannot contain newlines.</p>
<p><br/></p>
<p><span class="rvts38"> - romFilename</span> (required) - the name of the file used to record the movie</p>
<p><span class="rvts33"> - romFilename</span> (required) - the name of the file used to record the movie</p>
<p><span class="rvts75"><br/></span></p>
<p><span class="rvts38"> - comment </span>(optional) - simply a memo</p>
<p><span class="rvts33"> - comment </span>(optional) - simply a memo</p>
<ul style="text-indent: 0px; margin-left: 36px; list-style-position: outside;">
<li>by convention, the first token in the comment value is the subject of the comment</li>
<li>by convention, subsequent comments with the same subject should have their ordering preserved and may be used to approximate multi-line comments</li>
<li>by convention, the author of the movie should be stored in comment(s) with a subject of: <span class="rvts38">author</span></li>
<li>by convention, the author of the movie should be stored in comment(s) with a subject of: <span class="rvts33">author</span></li>
</ul>
<p>Example:</p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>comment author adelikat</li>
</ul>
<p><span class="rvts75"><br/></span></p>
<p><span class="rvts38"> - subtitle </span>(optional) - a message that will be displayed on screen when movie is played back (unless Subtitles are turned off, see <a class="rvts18" href="MovieOptions.html">Movie options</a>)</p>
<p><span class="rvts33"> - subtitle </span>(optional) - a message that will be displayed on screen when movie is played back (unless Subtitles are turned off, see <a class="rvts18" href="MovieOptions.html">Movie options</a>)</p>
<ul style="text-indent: 0px; margin-left: 36px; list-style-position: outside;">
<li>by convention, subtitles begin with the word "subtitle"</li>
<li>by convention, an integer value following the word "subtitle" indicates the frame that the subtitle will be displayed</li>
@ -144,12 +144,12 @@
</ul>
<p>At frame 1000 the words "Level Two" will be displayed on the screen</p>
<p><span class="rvts75"><br/></span></p>
<p><span class="rvts38"> - guid </span>(required) - a unique identifier for a movie, generated when the movie is created, which is used when loading a savestate to make sure it belongs to the current movie</p>
<p><span class="rvts33"> - guid </span>(required) - a unique identifier for a movie, generated when the movie is created, which is used when loading a savestate to make sure it belongs to the current movie</p>
<p>GUID keys have a value which is in the standard guide format: 452DE2C3-EF43-2FA9-77AC-0677FC51543B</p>
<p><span class="rvts76"><br/></span></p>
<p><span class="rvts38"> - romChecksum </span>(required) - the base64 of the hexified MD5 hash of the ROM which was used to record the movie</p>
<p><span class="rvts33"> - romChecksum </span>(required) - the base64 of the hexified MD5 hash of the ROM which was used to record the movie</p>
<p><span class="rvts75"><br/></span></p>
<p><span class="rvts38"> - savestate </span>(optional) - a <a class="rvts18" href="fcs.html">fcs</a> savestate blob, in case a movie was recorded from savestate &nbsp;</p>
<p><span class="rvts33"> - savestate </span>(optional) - a <a class="rvts18" href="fcs.html">fcs</a> savestate blob, in case a movie was recorded from savestate &nbsp;</p>
<p>Hex string keys (used for binary blobs) have a value that is like 0x0123456789ABCDEF...</p>
<p><br/></p>
<p><br/></p>
@ -164,7 +164,7 @@
<p>The fields in the line are as follows, except when fourscore is used.</p>
<p><span class="rvts46">|commands|port0|port1|port2|</span></p>
<p><br/></p>
<p>Field <span class="rvts38">commands</span> is a variable length decimal integer which is interpreted as a bit field corresponding to miscellaneous input states which are valid at the start of the frame. Current values for this are:</p>
<p>Field <span class="rvts33">commands</span> is a variable length decimal integer which is interpreted as a bit field corresponding to miscellaneous input states which are valid at the start of the frame. Current values for this are:</p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>1 = Soft Reset</li>
<li>2 = Hard Reset (Power)</li>
@ -178,25 +178,25 @@
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>the field consists of eight characters which constitute a bit field</li>
<li>any character other than ' ' or '.' means that the button was pressed</li>
<li>by convention, the following mnemonics are used in a column to remind us of which button corresponds to which column: <span class="rvts38">RLDUTSBA</span> (Right, Left, Down, Up, sTart, Select, B, A)</li>
<li>by convention, the following mnemonics are used in a column to remind us of which button corresponds to which column: <span class="rvts33">RLDUTSBA</span> (Right, Left, Down, Up, sTart, Select, B, A)</li>
</ul>
<p><br/></p>
<p>SI_ZAPPER:</p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts38">XXX YYY B Q Z</span></li>
<li><span class="rvts33">XXX YYY B Q Z</span></li>
</ul>
<p><span class="rvts38">XXX: </span>%03d, the x position of the mouse</p>
<p><span class="rvts38">YYY: </span>%03d, the y position of the mouse</p>
<p><span class="rvts38">B: </span>%1d, 1 if the mouse button is pressed; 0 if not</p>
<p><span class="rvts38">Q: </span>%1d, an internal value used by the emulator's zapper code</p>
<p><span class="rvts38">Z: </span>%d, a variable-length decimal integer; an internal value used by the emulator's zapper code</p>
<p><span class="rvts33">XXX: </span>%03d, the x position of the mouse</p>
<p><span class="rvts33">YYY: </span>%03d, the y position of the mouse</p>
<p><span class="rvts33">B: </span>%1d, 1 if the mouse button is pressed; 0 if not</p>
<p><span class="rvts33">Q: </span>%1d, an internal value used by the emulator's zapper code</p>
<p><span class="rvts33">Z: </span>%d, a variable-length decimal integer; an internal value used by the emulator's zapper code</p>
<p><br/></p>
<p>SI_NONE:</p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>the field must be empty</li>
</ul>
<p><br/></p>
<p>If a <span class="rvts38">fourscore</span> is used, then port0 and port1 are irrelevant and ignored.</p>
<p>If a <span class="rvts33">fourscore</span> is used, then port0 and port1 are irrelevant and ignored.</p>
<p>The input types must all be gamepads, and each input log record must be in the following format:</p>
<p><span class="rvts46">|commands|RLDUTSBA|RLDUTSBA|RLDUTSBA|RLDUTSBA|port2|</span></p>
<p>{commands, player1, player2, player3, player4, port2}</p>
@ -238,7 +238,7 @@
<li>0 bytes added to the size of record</li>
</ul>
<p><br/></p>
<p>If a <span class="rvts38">fourscore</span> is used, then port0 and port1 are irrelevant and ignored. 4 bytes are added to the size of record. The bits of the 1st byte represent the state of buttons of the 1st joypad (bit0 = A, bit1 = B, bit2 = Select, bit3 = sTart, bit4 = Up, bit5 = Down, bit6 = Left, bit7 = Right); bits of the 2nd byte represent the state of buttons of the 2nd joypad, and so on.</p>
<p>If a <span class="rvts33">fourscore</span> is used, then port0 and port1 are irrelevant and ignored. 4 bytes are added to the size of record. The bits of the 1st byte represent the state of buttons of the 1st joypad (bit0 = A, bit1 = B, bit2 = Select, bit3 = sTart, bit4 = Up, bit5 = Down, bit6 = Left, bit7 = Right); bits of the 2nd byte represent the state of buttons of the 2nd joypad, and so on.</p>
<p><br/></p>
<p><br/></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>

File diff suppressed because one or more lines are too long

View File

@ -52,12 +52,12 @@
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Эта часть документации представлена в виде учебника по ТАСингу.</span></p>
<p class="rvps10"><span class="rvts22">Здесь изложены принципы практического использования Тасэдитора. Также здесь систематизируются знания, накопленные в сообществе ТАСеров, и объясняется суть общепринятых методов ТАСинга.</span></p>
<p class="rvps10"><span class="rvts22">Курс будет полезен как людям, не имеющим представления о ТАСинге, так и опытным ТАСерам, желающим освоить новейшие разработки в этой сфере, а также структурировать и усовершенствовать свои знания.</span></p>
<p class="rvps10"><span class="rvts22">Она объясняет принципы практического использования Тасэдитора и описывает технику общепринятых методов ТАСинга.</span></p>
<p class="rvps10"><span class="rvts22">Курс будет полезен как людям, желающим научиться ТАСингу, так и опытным ТАСерам, желающим освоить новейшие разработки в этой сфере и усовершенствовать свои знания.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a class="rvts24" href="Introduction.html">Введение</a></p>
<p class="rvps12"><span class="rvts25">Общая характеристика TAS Editor и цели его создания</span></p>
<p class="rvps12"><span class="rvts25">Общая характеристика целей и возможностей TAS Editor</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a class="rvts24" href="ProgramInterface.html">Интерфейс программы</a></p>
<p class="rvps12"><span class="rvts25">Обучение основам взаимодействия пользователя с программой</span></p>
@ -66,13 +66,13 @@
<p class="rvps12"><span class="rvts25">Авторское видение грамотного рабочего процесса</span></p>
<p class="rvps10"><a class="rvts24" href="Operations.html"><br/></a></p>
<p class="rvps10"><a class="rvts24" href="TASingMethodology.html">Методология ТАСинга</a></p>
<p class="rvps12"><span class="rvts25">Описание методов эффективного редактирования Ввода</span></p>
<p class="rvps12"><span class="rvts25">Разбор методов улучшения Ввода</span></p>
<p class="rvps10"><a class="rvts24" href="LuaAPI.html"><br/></a></p>
<p class="rvps10"><a class="rvts24" href="ProgramCustomization.html">Настройка программы</a></p>
<p class="rvps12"><span class="rvts25">Детальный обзор всех настроек</span></p>
<p class="rvps10"><span class="rvts24"><br/></span></p>
<p class="rvps10"><a class="rvts24" href="AdvancedFeatures.html">Продвинутые возможности</a></p>
<p class="rvps12"><span class="rvts25">Описание приёмов работы, не попавших в предыдущие главы</span></p>
<p class="rvps12"><span class="rvts25">Описание дополнительных приёмов работы</span></p>
<p class="rvps12"><span class="rvts25"><br/></span></p>
<p class="rvps12"><span class="rvts25"><br/></span></p>
<p class="rvps12"><span class="rvts25"><br/></span></p>

View File

@ -225,10 +225,10 @@
<p class="rvps5"><img alt="" style="padding : 1px;" src="lib/keyboard-all-keys.png"/></p>
<p class="rvps5"><span class="rvts39"><br/></span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps2" style="text-indent: 30px"><a class="rvts60" href="Controls.html#modifiers">модификаторы (Shift, Ctrl, Alt)</a></li>
<li class="rvps2" style="text-indent: 30px"><a class="rvts60" href="Controls.html#accelerators">клавиатурные акселераторы</a></li>
<li class="rvps2" style="text-indent: 30px"><a class="rvts60" href="Controls.html#hotkeys">хоткеи FCEUX</a></li>
<li class="rvps2" style="text-indent: 30px"><a class="rvts60" href="Controls.html#virtual_joypad">кнопки виртуальных джойстиков</a></li>
<li class="rvps2" style="text-indent: 30px"><a class="rvts61" href="Controls.html#modifiers">модификаторы (Shift, Ctrl, Alt)</a></li>
<li class="rvps2" style="text-indent: 30px"><a class="rvts61" href="Controls.html#accelerators">клавиатурные акселераторы</a></li>
<li class="rvps2" style="text-indent: 30px"><a class="rvts61" href="Controls.html#hotkeys">хоткеи FCEUX</a></li>
<li class="rvps2" style="text-indent: 30px"><a class="rvts61" href="Controls.html#virtual_joypad">кнопки виртуальных джойстиков</a></li>
</ul>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a name="modifiers"></a>
@ -443,9 +443,9 @@
<p class="rvps10"><span class="rvts22">Когда вам нужно помимо кнопок джойстика ещё вводить команды приставки, используйте меню FCEUX или хоткеи:</span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><span class="rvts37">NES -&gt; Reset</span><span class="rvts22"> или хоткей "</span><span class="rvts27">Reset</span><span class="rvts22">" (по умолчанию </span><span class="rvts27">Ctrl + R</span><span class="rvts22">) для команды "Сброс"</span></li>
<li class="rvps15"><span class="rvts37">NES -&gt; Power</span><span class="rvts22"> или хоткей "</span><span class="rvts45">Power</span><span class="rvts22">" для команды "Включение" (в реальной работе не требуется)</span></li>
<li class="rvps15"><span class="rvts37">NES -&gt; Eject/Insert Disk</span><span class="rvts22"> или хоткей "</span><span class="rvts45">Eject or Insert FDS Disk</span><span class="rvts22">" для команды "Вытащить/Вставить диск" (актуально только для Famicom Disk System)</span></li>
<li class="rvps15"><span class="rvts37">NES -&gt; Switch Disk Side</span><span class="rvts22"> или хоткей "</span><span class="rvts45">Switch FDS Disk Side</span><span class="rvts22">" для команды "Поменять сторону диска" (актуально только для Famicom Disk System)</span></li>
<li class="rvps15"><span class="rvts37">NES -&gt; Power</span><span class="rvts22"> или хоткей "</span><span class="rvts60">Power</span><span class="rvts22">" для команды "Включение" (в реальной работе не требуется)</span></li>
<li class="rvps15"><span class="rvts37">NES -&gt; Eject/Insert Disk</span><span class="rvts22"> или хоткей "</span><span class="rvts60">Eject or Insert FDS Disk</span><span class="rvts22">" для команды "Вытащить/Вставить диск" (актуально только для Famicom Disk System)</span></li>
<li class="rvps15"><span class="rvts37">NES -&gt; Switch Disk Side</span><span class="rvts22"> или хоткей "</span><span class="rvts60">Switch FDS Disk Side</span><span class="rvts22">" для команды "Поменять сторону диска" (актуально только для Famicom Disk System)</span></li>
</ul>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Эти команды срабатывают только в режиме Записи, причём для отображения результата на экране FCEUX необходимо после запуска команды (например, после нажатия </span><span class="rvts27">Ctrl + R</span><span class="rvts22">) ещё дополнительно нажать </span><span class="rvts27">Frame Advance </span><span class="rvts22">либо отпустить паузу эмулятора, чтобы впечатать команду в мувик.</span></p>

View File

@ -45,7 +45,7 @@
<a href="LuaAPI.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="SpeedrunnersSynopsis.html"><img src="img/arrow_right.png" alt="Next"/></a>
<a href="SpeedrunningSynopsis.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>

View File

@ -70,7 +70,7 @@
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Заголовок хранится в текстовом формате, в кодировке ASCII.</span></p>
<p class="rvps10"><span class="rvts22">Он состоит из нескольких строк вида "ключевое слово + значение".</span></p>
<p class="rvps10"><span class="rvts22">Символом перевода строки может быть как </span><span class="rvts70">\r\n</span><span class="rvts22">, так и </span><span class="rvts70">\n</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Символом перевода строки может быть как </span><span class="rvts71">\r\n</span><span class="rvts22">, так и </span><span class="rvts71">\n</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если в начале очередной строки идёт символ "|" (вертикальная черта), это значит, что Заголовок закончился, и начался Журнал Ввода.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">В начале каждой строки Заголовка находится ключевое слово, после которого стоит пробел, а затем идёт текстовое представление значения.</span></p>
@ -81,17 +81,17 @@
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts37">Список ключевых слов с целочисленным значением:</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">(включая значения для переменных типа Boolean, где 1 = </span><span class="rvts70">true</span><span class="rvts22">, 0 = </span><span class="rvts70">false</span><span class="rvts22">)</span></p>
<p class="rvps10"><span class="rvts22">(числовое значение должно умещаться в переменную типа </span><span class="rvts70">int32</span><span class="rvts22">)</span></p>
<p class="rvps10"><span class="rvts22">(включая значения для переменных типа Boolean, где 1 = </span><span class="rvts71">true</span><span class="rvts22">, 0 = </span><span class="rvts71">false</span><span class="rvts22">)</span></p>
<p class="rvps10"><span class="rvts22">(числовое значение должно умещаться в переменную типа </span><span class="rvts71">int32</span><span class="rvts22">)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><span class="rvts26">version</span><span class="rvts22"> (наличие обязательно) номер версии формата мувика; на данный момент это </span><span class="rvts26">3</span></li>
<li class="rvps15"><span class="rvts26">emuVersion</span><span class="rvts22"> (обязательно) версия эмулятора, в котором был создан этот файл (например, </span><span class="rvts26">21060</span><span class="rvts22">)</span></li>
<li class="rvps15"><span class="rvts26">rerecordCount</span><span class="rvts22"> (наличие не обязательно) счётчик перезаписей</span></li>
<li class="rvps15"><span class="rvts26">palFlag</span><span class="rvts22"> (</span><span class="rvts70">bool</span><span class="rvts22">) (не обязательно) </span><span class="rvts70">true</span><span class="rvts22">, если мувик использует тайминг PAL, а по умолчанию используется NTSC</span></li>
<li class="rvps15"><span class="rvts26">NewPPU</span><span class="rvts22"> (</span><span class="rvts70">bool</span><span class="rvts22">) (не обязательно) </span><span class="rvts70">true</span><span class="rvts22">, если мувик использует New PPU</span></li>
<li class="rvps15"><span class="rvts26">FDS</span><span class="rvts22"> (</span><span class="rvts70">bool</span><span class="rvts22">) (не обязательно) </span><span class="rvts70">true</span><span class="rvts22">, если мувик создан для игры с Famicom Disk System</span></li>
<li class="rvps15"><span class="rvts26">fourscore</span><span class="rvts22"> (</span><span class="rvts70">bool</span><span class="rvts22">) </span><span class="rvts70">true</span><span class="rvts22">, если мувик создан с использованием устройства fourscore. Если fourscore не использовалось, то в Заголовке обязательно наличие значений для ключевых слов </span><span class="rvts26">port0</span><span class="rvts22"> и </span><span class="rvts26">port1</span><span class="rvts22">.</span></li>
<li class="rvps15"><span class="rvts26">palFlag</span><span class="rvts22"> (</span><span class="rvts71">bool</span><span class="rvts22">) (не обязательно) </span><span class="rvts71">true</span><span class="rvts22">, если мувик использует тайминг PAL, а по умолчанию используется NTSC</span></li>
<li class="rvps15"><span class="rvts26">NewPPU</span><span class="rvts22"> (</span><span class="rvts71">bool</span><span class="rvts22">) (не обязательно) </span><span class="rvts71">true</span><span class="rvts22">, если мувик использует New PPU</span></li>
<li class="rvps15"><span class="rvts26">FDS</span><span class="rvts22"> (</span><span class="rvts71">bool</span><span class="rvts22">) (не обязательно) </span><span class="rvts71">true</span><span class="rvts22">, если мувик создан для игры с Famicom Disk System</span></li>
<li class="rvps15"><span class="rvts26">fourscore</span><span class="rvts22"> (</span><span class="rvts71">bool</span><span class="rvts22">) </span><span class="rvts71">true</span><span class="rvts22">, если мувик создан с использованием устройства fourscore. Если fourscore не использовалось, то в Заголовке обязательно наличие значений для ключевых слов </span><span class="rvts26">port0</span><span class="rvts22"> и </span><span class="rvts26">port1</span><span class="rvts22">.</span></li>
<li class="rvps15"><span class="rvts26">port0</span><span class="rvts22"> тип устройства ввода, настроенного на порт 0 приставки. Возможны следующие значения:</span></li>
</ul>
<ul style="text-indent: 60px; margin-left: 0px; list-style-position: inside;">
@ -114,7 +114,7 @@
<li class="rvps15" style="text-indent: 60px"><span class="rvts22">SIFC_NONE = 0 (ничего не подключено)</span></li>
</ul>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><span class="rvts26">binary</span><span class="rvts22"> (</span><span class="rvts70">bool</span><span class="rvts22">) (не обязательно) </span><span class="rvts70">true</span><span class="rvts22">, если Журнал Ввода сохранён в двоичном формате. FM2-файлы обычно хранят Ввод в текстовом формате, чтобы его было удобно редактировать в текстовых редакторах. FM3-файлы обычно хранят Ввод в двоичном формате, чтобы сэкономить место на диске</span></li>
<li class="rvps15"><span class="rvts26">binary</span><span class="rvts22"> (</span><span class="rvts71">bool</span><span class="rvts22">) (не обязательно) </span><span class="rvts71">true</span><span class="rvts22">, если Журнал Ввода сохранён в двоичном формате. FM2-файлы обычно хранят Ввод в текстовом формате, чтобы его было удобно редактировать в текстовых редакторах. FM3-файлы обычно хранят Ввод в двоичном формате, чтобы сэкономить место на диске</span></li>
<li class="rvps15"><span class="rvts26">length</span><span class="rvts22"> (обязательно для fm3) размер мувика (количество кадров в сохранённом Журнале Ввода). Если в Заголовке есть это ключевое слово, и его значение &gt;= 0, то Журнал Ввода оканчивается после означенного количества записей, а затем следуют данные Тасэдитора. Именно наличие этого ключевого слова в Заголовке отличает FM3-файлы от FM2-файлов.</span></li>
</ul>
<p class="rvps15"><span class="rvts22"><br/></span></p>
@ -195,7 +195,7 @@
<li class="rvps10" style="text-indent: 60px"><span class="rvts22">второй байт координата Y мыши</span></li>
<li class="rvps10" style="text-indent: 60px"><span class="rvts22">третий байт 1 = кнопка мышки нажата, 0 = не нажата</span></li>
<li class="rvps10" style="text-indent: 60px"><span class="rvts22">четвёртый байт значение, необходимое для эмуляции пистолета</span></li>
<li class="rvps10" style="text-indent: 60px"><span class="rvts22">байты с 5-го по 12-й (</span><span class="rvts70">uint64</span><span class="rvts22">) значение, необходимое для эмуляции пистолета</span></li>
<li class="rvps10" style="text-indent: 60px"><span class="rvts22">байты с 5-го по 12-й (</span><span class="rvts71">uint64</span><span class="rvts22">) значение, необходимое для эмуляции пистолета</span></li>
</ul>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Если используется fourscore, все устройства ввода считаются геймпадами, и к размеру записи добавляется 4 байта. Биты первого байта отражают состояние сооветствующей кнопки первого джойстика (бит 0 = </span><span class="rvts32">A</span><span class="rvts22">, бит 1 = </span><span class="rvts32">B</span><span class="rvts22">, бит 2 = </span><span class="rvts32">Select</span><span class="rvts22">, бит 3 = </span><span class="rvts32">Start</span><span class="rvts22">, бит 4 = </span><span class="rvts32">Вверх</span><span class="rvts22">, бит 5 = </span><span class="rvts32">Вниз</span><span class="rvts22">, бит 6 = </span><span class="rvts32">Влево</span><span class="rvts22">, бит 7 = </span><span class="rvts32">Вправо</span><span class="rvts22">). Биты второго байта отражают состояние сооветствующей кнопки второго джойстика, и т.д.</span></p>
@ -209,7 +209,7 @@
<tr valign="middle">
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; width: 104px;"><p class="rvps5"><span class="rvts6">4 байта</span></p>
</td>
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; width: 146px;"><p class="rvps5"><span class="rvts78">unsigned int32</span></p>
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; width: 146px;"><p class="rvps5"><span class="rvts79">unsigned int32</span></p>
</td>
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; width: 192px;"><p class="rvps5"><span class="rvts6">FM3 version</span></p>
</td>
@ -217,7 +217,7 @@
<tr valign="middle">
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; width: 104px;"><p class="rvps5"><span class="rvts6">4 байта</span></p>
</td>
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; width: 146px;"><p class="rvps5"><span class="rvts78">unsigned int32</span></p>
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; width: 146px;"><p class="rvps5"><span class="rvts79">unsigned int32</span></p>
</td>
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; width: 192px;"><p class="rvps5"><span class="rvts6">saved modules</span></p>
</td>
@ -293,13 +293,13 @@
<p class="rvps10"><span class="rvts22"><br/></span></p>
<div class="rvps21"><table width="450" border="1" cellpadding="0" cellspacing="0" style="border-color: #ffffff #000000 #000000 #ffffff; border-style: solid;">
<tr valign="middle">
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; background-color: #0000ff; width: 106px;"><p class="rvps5"><span class="rvts77">Модуль</span></p>
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; background-color: #0000ff; width: 106px;"><p class="rvps5"><span class="rvts78">Модуль</span></p>
</td>
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; background-color: #0000ff; width: 174px;"><p class="rvps5"><span class="rvts77">Идентификатор</span></p>
<p class="rvps5"><span class="rvts77">сохранённых данных</span></p>
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; background-color: #0000ff; width: 174px;"><p class="rvps5"><span class="rvts78">Идентификатор</span></p>
<p class="rvps5"><span class="rvts78">сохранённых данных</span></p>
</td>
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; background-color: #0000ff; width: 162px;"><p class="rvps5"><span class="rvts77">Идентификатор</span></p>
<p class="rvps5"><span class="rvts77">отсутствия данных</span></p>
<td style="border-color: #000000; border-style: solid; border-right: none; border-bottom: none; background-color: #0000ff; width: 162px;"><p class="rvps5"><span class="rvts78">Идентификатор</span></p>
<p class="rvps5"><span class="rvts78">отсутствия данных</span></p>
</td>
</tr>
<tr valign="middle">

View File

@ -60,40 +60,40 @@
<p class="rvps21"><span class="rvts22"><br/></span></p>
<div class="rvps21"><table width="700" border="1" cellpadding="0" cellspacing="0" style="border-color: #000000; border-style: solid;">
<tr valign="top">
<td style="border-color: #000000; border-style: solid; background-color: #0000ff;"><p class="rvps5"><a class="rvts76" href="Ideas.html#ImplementedIdeas">Реализовано в 1.0</a></p>
<td style="border-color: #000000; border-style: solid; background-color: #0000ff;"><p class="rvps5"><a class="rvts77" href="Ideas.html#ImplementedIdeas">Реализовано в 1.0</a></p>
</td>
<td style="border-color: #000000; border-style: solid; background-color: #0000ff;"><p class="rvps5"><a class="rvts76" href="Ideas.html#PlannedIdeas">Запланировано на 2.0</a></p>
<td style="border-color: #000000; border-style: solid; background-color: #0000ff;"><p class="rvps5"><a class="rvts77" href="Ideas.html#PlannedIdeas">Запланировано на 2.0</a></p>
</td>
</tr>
<tr valign="top">
<td style="border-color: #000000; border-style: solid;"><p class="rvps18"><a class="rvts61" href="Ideas.html#PianoRoll">Piano Roll</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#Selection">Выделение</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#Markers">Маркеры</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#HotChanges">Горячие Правки</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#Greenzone">Гринзона</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#Playback">Проигрыватель</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#GreenArrow">Зелёная стрелка</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#AutoRestoring">Автовосстановление утраченной позиции</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#Recorder">Мультитрекинг-рекордер</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#Lua">Lua-автоматизация</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#BookmarksBranches">Закладки и ответвления</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#PopupWindows">Всплывающие окна</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#HistoryLog">Журнал Истории</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#RerecordsCounter">Счётчик перезаписей</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#Modifiers">Система клавиш-модификаторов</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#Patterns">Шаблоны</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#CrossingGaps">Пересечение промежутков</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#SaveCompact">Компактное сохранение</a></p>
<p class="rvps18"><a class="rvts61" href="Ideas.html#Autosave">Автосохранение</a></p>
<td style="border-color: #000000; border-style: solid;"><p class="rvps18"><a class="rvts62" href="Ideas.html#PianoRoll">Piano Roll</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#Selection">Выделение</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#Markers">Маркеры</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#HotChanges">Горячие Правки</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#Greenzone">Гринзона</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#Playback">Проигрыватель</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#GreenArrow">Зелёная стрелка</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#AutoRestoring">Автовосстановление утраченной позиции</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#Recorder">Мультитрекинг-рекордер</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#Lua">Lua-автоматизация</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#BookmarksBranches">Закладки и ответвления</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#PopupWindows">Всплывающие окна</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#HistoryLog">Журнал Истории</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#RerecordsCounter">Счётчик перезаписей</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#Modifiers">Система клавиш-модификаторов</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#Patterns">Шаблоны</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#CrossingGaps">Пересечение промежутков</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#SaveCompact">Компактное сохранение</a></p>
<p class="rvps18"><a class="rvts62" href="Ideas.html#Autosave">Автосохранение</a></p>
</td>
<td style="border-color: #000000; border-style: solid;"><p class="rvps5"><a class="rvts75" href="Ideas.html#OutputLog">Журнал Вывода</a></p>
<p class="rvps5"><a class="rvts75" href="Ideas.html#Minimap">Миникарта</a></p>
<p class="rvps5"><a class="rvts75" href="Ideas.html#VirtualJoypad">Виртуальный Джойстик</a></p>
<p class="rvps5"><a class="rvts75" href="Ideas.html#BetterSelection">Усовершенствование Выделения</a></p>
<p class="rvps5"><a class="rvts75" href="Ideas.html#BetterColumns">Гибкая настройка колонок</a></p>
<p class="rvps5"><a class="rvts75" href="Ideas.html#RerecordsHeatmap">Теплокарта перезаписей</a></p>
<p class="rvps5"><a class="rvts75" href="Ideas.html#Etc">Прочие мелочи</a></p>
<p class="rvps5"><a class="rvts75" href="Ideas.html#OtherPlatforms">Поддержка платформ, отличных от NES</a></p>
<td style="border-color: #000000; border-style: solid;"><p class="rvps5"><a class="rvts76" href="Ideas.html#OutputLog">Журнал Вывода</a></p>
<p class="rvps5"><a class="rvts76" href="Ideas.html#Minimap">Миникарта</a></p>
<p class="rvps5"><a class="rvts76" href="Ideas.html#VirtualJoypad">Виртуальный Джойстик</a></p>
<p class="rvps5"><a class="rvts76" href="Ideas.html#BetterSelection">Усовершенствование Выделения</a></p>
<p class="rvps5"><a class="rvts76" href="Ideas.html#BetterColumns">Гибкая настройка колонок</a></p>
<p class="rvps5"><a class="rvts76" href="Ideas.html#RerecordsHeatmap">Теплокарта перезаписей</a></p>
<p class="rvps5"><a class="rvts76" href="Ideas.html#Etc">Прочие мелочи</a></p>
<p class="rvps5"><a class="rvts76" href="Ideas.html#OtherPlatforms">Поддержка платформ, отличных от NES</a></p>
</td>
</tr>
</table>
@ -102,7 +102,7 @@
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps2"><a name="ImplementedIdeas"></a>
<span class="rvts37"><br/></span></p>
<p class="rvps10"><span class="rvts74">Реализованные идеи</span></p>
<p class="rvps10"><span class="rvts75">Реализованные идеи</span></p>
<p class="rvps10"><a name="PianoRoll"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts23">Piano Roll</span></p>
@ -234,7 +234,7 @@
<li class="rvps15"><span class="rvts22">Таким образом, зелёная стрелка не меняет своё положение, когда ещё до запуска эмуляции Гринзона усекается повторно (например, ТАСер изменил Ввод на кадре 90, а затем на кадре 80, но зелёная стрелка так и осталась на кадре 100).</span></li>
<li class="rvps15"><span class="rvts22">Также зелёная стрелка не меняет своё положение, когда Гринзона усекается во время добегания, и эмулятор в этот момент не стоит на паузе.</span></li>
<li class="rvps15"><span class="rvts22">Зелёная стрелка не меняет своё положение при операциях </span><a class="rvts28" href="Operations.html#AdjustLag">AdjustLag</a><span class="rvts22">, </span><a class="rvts28" href="Operations.html#Branch">Branch</a><span class="rvts22">, </span><a class="rvts28" href="Operations.html#Record">Record</a><span class="rvts22">.</span></li>
<li class="rvps15"><span class="rvts22">При нажатии средней кнопки мыши запускается добегание к зелёной стрелке, если она находится за пределами Гринзоны.</span></li>
<li class="rvps15"><span class="rvts22">При нажатии средней кнопки мыши запускается добегание к зелёной стрелке, если она находится за пределами Гринзоны. Если же зелёная стрелка находится внутри Гринзоны, это означает, что текущий участок уже был просмотрен до конца, и при повторных просмотрах автоматическая пауза на зелёной стрелке не нужна.</span></li>
</ul>
<p class="rvps15"><a name="AutoRestoring"></a>
<span class="rvts22"><br/></span></p>
@ -283,7 +283,7 @@
<li class="rvps15"><span class="rvts22">При срабатывании какой-либо функции из библиотеки "taseditor" луа-интерпретатор берёт входные данные из стека, при необходимости конвертирует их в формат, принимаемый луа-шлюзом Тасэдитора, и передаёт их соответствующей функции луа-шлюза Тасэдитора.</span></li>
<li class="rvps15"><span class="rvts22">Луа-шлюз Тасэдитора вызывает соответствующие функции Тасэдитора и передаёт полученный результат обратно в луа-интерпретатор.</span></li>
<li class="rvps15"><span class="rvts22">Луа-интерпретатор помещает полученные данные в стек, при необходимости конвертируя их в формат, принимаемый луа-кодом.</span></li>
<li class="rvps15"><span class="rvts22">Функции </span><span class="rvts68">submitinputchange()</span><span class="rvts22">, &nbsp;</span><span class="rvts68">submitinsertframes()</span><span class="rvts22"> и </span><span class="rvts68">submitdeleteframes()</span><span class="rvts22"> не вызывают соответствующее изменение мувика, а только создают запись в массиве отложенных заданий, хранящемся в луа-шлюзе Тасэдитора. Все отложенные задания реализуются при вызове </span><span class="rvts68">applyinputchanges()</span><span class="rvts22">. Благодаря этому луа-скрипт может вносить в мувик сразу несколько изменений, создавая только один пункт Журнала Истории.</span></li>
<li class="rvps15"><span class="rvts22">Функции </span><span class="rvts69">submitinputchange()</span><span class="rvts22">, &nbsp;</span><span class="rvts69">submitinsertframes()</span><span class="rvts22"> и </span><span class="rvts69">submitdeleteframes()</span><span class="rvts22"> не вызывают соответствующее изменение мувика, а только создают запись в массиве отложенных заданий, хранящемся в луа-шлюзе Тасэдитора. Все отложенные задания реализуются при вызове </span><span class="rvts69">applyinputchanges()</span><span class="rvts22">. Благодаря этому луа-скрипт может вносить в мувик сразу несколько изменений, создавая только один пункт Журнала Истории.</span></li>
</ul>
<p class="rvps10"><a name="BookmarksBranches"></a>
<span class="rvts22"><br/></span></p>
@ -428,7 +428,7 @@
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps10"><a name="PlannedIdeas"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts73">Запланированные идеи</span></p>
<p class="rvps10"><span class="rvts74">Запланированные идеи</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="OutputLog"></a>
<span class="rvts22"><br/></span></p>
@ -483,7 +483,7 @@
<li class="rvps15"><span class="rvts22">Содержимое окна автоматически обновляется при каждом внешнем изменении Ввода.</span></li>
<li class="rvps15"><span class="rvts22">Виртуальный Джойстик отражает состояние только текущего джойстика (выбранного радиокнопкой в разделе Recorder).</span></li>
<li class="rvps15"><span class="rvts22">При щелчке по кнопке происходит изменение Ввода текущего джойстика. Нажатая кнопка становится отпущенной, а отпущенная или частично нажатая становится нажатой. Соответственно меняется Ввод во всех выделенных кадрах или на кадре Курсора Проигрывателя.</span></li>
<li class="rvps15"><span class="rvts22">В дополнение к кнопкам Ввода в окне Виртуального Джойстика можно разместить несколько кнопок-слотов для хранения макросов. Щелчок по кнопке Макроса будет аналогичен нескольким щелчкам по разным кнопкам Виртуального Джойстика. Это позволит ещё быстрее менять Ввод в Выделении, например, вместо трёх щелчков по кнопкам </span><span class="rvts32">Вверх</span><span class="rvts22">, </span><span class="rvts32">Вправо</span><span class="rvts22"> и </span><span class="rvts32">B</span><span class="rvts22"> можно будет сделать один щелчок по </span><span class="rvts72">Макросу1</span><span class="rvts22">.</span></li>
<li class="rvps15"><span class="rvts22">В дополнение к кнопкам Ввода в окне Виртуального Джойстика можно разместить несколько кнопок-слотов для хранения макросов. Щелчок по кнопке Макроса будет аналогичен нескольким щелчкам по разным кнопкам Виртуального Джойстика. Это позволит ещё быстрее менять Ввод в Выделении, например, вместо трёх щелчков по кнопкам </span><span class="rvts32">Вверх</span><span class="rvts22">, </span><span class="rvts32">Вправо</span><span class="rvts22"> и </span><span class="rvts32">B</span><span class="rvts22"> можно будет сделать один щелчок по </span><span class="rvts73">Макросу1</span><span class="rvts22">.</span></li>
<li class="rvps15"><span class="rvts22">Если перед щелчком по кнопке Виртуального Джойстика или кнопке макроса зажать клавишу </span><span class="rvts34">Alt</span><span class="rvts22">, будет установлен Ввод по шаблону.</span></li>
<li class="rvps15"><span class="rvts22">После реализации Виртуального Джойстика можно изменить принцип действия щелчков по Заголовку Piano Roll. Теперь вместо изменения инпута щелчки по Заголовку будут выделять соответствующие столбцы Piano Roll.</span></li>
</ul>
@ -547,6 +547,7 @@
<li class="rvps15"><span class="rvts22">Возможность работать с несколькими эмулируемыми играми одновременно (для Multi-TAS-проектов).</span></li>
<li class="rvps15"><span class="rvts22">Усовершенствование Lua API.</span></li>
<li class="rvps15"><span class="rvts22">Поддержка мультитач-управления.</span></li>
<li class="rvps15"><span class="rvts22">Продумать концепцию заполнения Гринзоны в фоне (насколько она соответствует особенностям ТАСинга).</span></li>
</ul>
<p class="rvps10"><a name="OtherPlatforms"></a>
<span class="rvts22"><br/></span></p>
@ -557,7 +558,7 @@
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><span class="rvts22">Продумать управляющие элементы для отображения и изменения аналогового Ввода в Piano Roll. Виртуальный Джойстик отчасти решает эту проблемы, однако должна быть возможность быстро и легко рисовать аналоговый Ввод мышкой. Например, растягивать на много кадров однократно установленное значение наклона стика, запоминать значение только что очищенной ячейки и предлагать его при рисовании. В ячейке отображается не один символ, а число от -1.0 до +1.0. При двойном щелчке по клетке можно набрать с клавиатуры точное значение этого числа. С зажатым </span><span class="rvts34">Ctrl</span><span class="rvts22"> можно растягивать значение ячейки левой кнопкой мыши вправо/влево или вверх/вниз. В столбце отображается значение наклона только по одной координатной оси (таким образом, для аналогового стика требуется две колонки Piano Roll).</span></li>
<li class="rvps15"><span class="rvts22">В Виртуальном Джойстике должна быть возможность рисовать огибающую для региона кадров, а не только устанавливать одинаковое значение для всех выделенных кадров. Также необходимо переработать формат Шаблонов, чтобы они могли представлять последовательности значений уровня, в том числе с относительными значениями (например, возрастание по параболе, где начальное и конечное значение берётся из начального и конечного кадра выделенного региона).</span></li>
<li class="rvps15"><span class="rvts22">Скорее всего, потребуется переход на 64-разрядную платформу, так как объёмы Гринзоны значительно возрастут при хранении сэйвов более продвинутых приставок.</span></li>
<li class="rvps15"><span class="rvts22">Крайне желателен переход на 64-разрядную платформу, так как объёмы Гринзоны значительно возрастут при хранении сэйвов более продвинутых приставок.</span></li>
</ul>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>

View File

@ -57,11 +57,11 @@
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Первоначально TAS Editor базировался на коде экспериментального инструмента TASEdit из FCEUX 2.1.5.</span></p>
<p class="rvps10"><span class="rvts22">TASEdit представлял из себя редактор Ввода (в духе TAS Movie Editor), встроенный в эмулятор, чтобы сократить время между редактированием и просмотром участков. Так как при разработке TASEdit не проводилось исследование принципов и закономерностей ТАСинга, у авторов TASEdit не было чёткого видения финального инструмента, и имеющийся код не был расширяемым. Поэтому вскоре после начала разработки TAS Editor его код был полностью переписан, чтобы облегчить дальнейшее расширение функционала.</span></p>
<p class="rvps10"><span class="rvts22">Архитектура Тасэдитора спроектирована, исходя из авторских представлений о методическом ТАСинге и о необходимом функционале для облегчения такого ТАСинга.</span></p>
<p class="rvps10"><span class="rvts22">Нижеописанная архитектура Тасэдитора спроектирована, исходя из авторских представлений о методическом ТАСинге и о необходимом функционале для облегчения такого ТАСинга.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts74">Программные модули (классы)</span></p>
<p class="rvps10"><span class="rvts75">Программные модули (классы)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts21">taseditor.cpp</span></p>
<p class="rvps10"><span class="rvts22">Main главный шлюз между эмулятором и Тасэдитором (Main gate between emulator and Taseditor)</span></p>
@ -329,7 +329,7 @@
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts74">Модификация эмулятора</span></p>
<p class="rvps10"><span class="rvts75">Модификация эмулятора</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Тасэдитор требует внесения следующих модификаций в код самого эмулятора.</span></p>
@ -339,7 +339,7 @@
<li class="rvps10"><span class="rvts22">вызывать центральную функцию Тасэдитора после эмуляции каждого кадра, а также, когда эмулятор на паузе. Частота вызова должна быть не менее 20 раз в секунду (это требуется для плавности анимаций)</span></li>
<li class="rvps10"><span class="rvts22">передавать системные сообщения окну Тасэдитора, в том числе сообщения клавиатурных акселераторов</span></li>
<li class="rvps10"><span class="rvts22">если эмулятор не использует колесо мыши, он должен пересылать WM_MOUSEWHEEL Тасэдитору, а не игнорировать это сообщение. То же самое с обработкой средней кнопки</span></li>
<li class="rvps10"><span class="rvts22">при выходе из эмулятора, если запущен Тасэдитор, необходимо вызывать функцию AskSave(), чтобы Тасэдитор проверил наличие несохранённых изменений и позволил пользователю сохранить их. Если функция AskSave() возвращает </span><span class="rvts70">false</span><span class="rvts22">, отменять выход из эмулятора (это означает, что пользователь выбрал Отмену)</span></li>
<li class="rvps10"><span class="rvts22">при выходе из эмулятора, если запущен Тасэдитор, необходимо вызывать функцию AskSave(), чтобы Тасэдитор проверил наличие несохранённых изменений и позволил пользователю сохранить их. Если функция AskSave() возвращает </span><span class="rvts71">false</span><span class="rvts22">, отменять выход из эмулятора (это означает, что пользователь выбрал Отмену)</span></li>
</ul>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">В модуль, ответственный за </span><span class="rvts26">Movie</span><span class="rvts22">:</span></p>
@ -371,8 +371,8 @@
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">В модуль, ответственный за </span><span class="rvts26">Config</span><span class="rvts22">:</span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps10"><span class="rvts22">при запуске эмулятор должен загружать данные </span><span class="rvts70">taseditor_config</span><span class="rvts22"> из файла общих настроек эмулятора, если же файл не найден, не трогать </span><span class="rvts70">taseditor_config</span><span class="rvts22"> (тогда в нём останутся настроки по умолчанию)</span></li>
<li class="rvps10"><span class="rvts22">при выходе эмулятор должен сохранять данные </span><span class="rvts70">taseditor_config</span><span class="rvts22"> в файл общих настроек</span></li>
<li class="rvps10"><span class="rvts22">при запуске эмулятор должен загружать данные </span><span class="rvts71">taseditor_config</span><span class="rvts22"> из файла общих настроек эмулятора, если же файл не найден, не трогать </span><span class="rvts71">taseditor_config</span><span class="rvts22"> (тогда в нём останутся настроки по умолчанию)</span></li>
<li class="rvps10"><span class="rvts22">при выходе эмулятор должен сохранять данные </span><span class="rvts71">taseditor_config</span><span class="rvts22"> в файл общих настроек</span></li>
</ul>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">В модуль, ответственный за </span><span class="rvts26">Lua engine</span><span class="rvts22">:</span></p>

View File

@ -99,17 +99,17 @@
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps10"><a name="registerauto"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">taseditor.registerauto(function func)</span></p>
<p class="rvps9"><span class="rvts69">taseditor.registerauto(function func)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Регистрирует функцию ("Auto Function", Автофункция), которая будет периодически вызываться эмулятором. Можно зарегистрировать и исполнять Автофункцию, даже когда Тасэдитор не запущен.</span></p>
<p class="rvps10"><span class="rvts22">Когда FCEUX эмулирует игру, Автофункция запускается по окончании каждого кадра (то есть 60 раз в секунду в NTSC-играх и 50 раз в PAL).</span></p>
<p class="rvps10"><span class="rvts22">Когда FCEUX стоит на паузе, Автофункция запускается 20 раз в секунду.</span></p>
<p class="rvps10"><span class="rvts22">Пользователь может включать и отключать вызовы Автофункции с помощью галочки "Auto function" в интерфейсе Тасэдитора.</span></p>
<p class="rvps10"><span class="rvts22">Как и в случае с остальными регистрируемыми Луа-функциями в FCEUX, одновременно может быть зарегистрирована только одна Автофункция. Если вы зарегистрируете две Автофункции, вторая заменит первую, причём второй вызов </span><span class="rvts21">taseditor.registerauto()</span><span class="rvts22"> возвратит ссылку на код старой Автофункции. Вы можете удалить зарегистрированную Автофункцию, вызвав </span><span class="rvts21">taseditor.registerauto(</span><span class="rvts70">nil</span><span class="rvts21">)</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Как и в случае с остальными регистрируемыми Луа-функциями в FCEUX, одновременно может быть зарегистрирована только одна Автофункция. Если вы зарегистрируете две Автофункции, вторая заменит первую, причём второй вызов </span><span class="rvts21">taseditor.registerauto()</span><span class="rvts22"> возвратит ссылку на код старой Автофункции. Вы можете удалить зарегистрированную Автофункцию, вызвав </span><span class="rvts21">taseditor.registerauto(</span><span class="rvts71">nil</span><span class="rvts21">)</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если скрипт заканчивает свою работу, а зарегистрированные функции остались, FCEUX не удаляет скрипт из памяти, чтобы была возможность вызывать эти функции. Скрипт завершается, если пользователь останавливает его вручную, или же если все зарегистрированные функции оказываются удалены.</span></p>
<p class="rvps10"><a name="registermanual"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">taseditor.registermanual(function func, [string name])</span></p>
<p class="rvps9"><span class="rvts69">taseditor.registermanual(function func, [string name])</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Регистрирует функцию ("Manual Function", Ручная функция), которая может быть вызвана пользователем Тасэдитора вручную. Можно зарегистрировать Ручную функцию даже когда Тасэдитор не запущен.</span></p>
<p class="rvps10"><span class="rvts22">Ручная функция не зависит от состояния паузы эмуляции. Она будет вызвана в конце кадра, в течение которого пользователь нажал кнопку </span><span class="rvts32">Run function</span><span class="rvts22"> в интерфейсе Тасэдитора.</span></p>
@ -117,30 +117,30 @@
<p class="rvps10"><span class="rvts22">Ручную функцию невозможно вызвать чаще, чем частота обновления окна Тасэдитора (60/50 FPS или 20FPS во время паузы).</span></p>
<p class="rvps10"><span class="rvts22">Выполнение Ручной функции расположено в коде FCEUX сразу после выполнения Автофункции.</span></p>
<p class="rvps10"><span class="rvts22">С помощью регистрации Луа-функций вы можете создавать новые инструменты для Тасэдитора. Например, можно написать скрипт, который инвертирует выделенный Ввод, так что пользователь сможет в любой момент выделить регион мувика и нажать кнопку </span><span class="rvts32">Run function</span><span class="rvts22"> для инвертирования Ввода в этом регионе.</span></p>
<p class="rvps10"><span class="rvts22">Как и в случае с остальными регистрируемыми Луа-функциями в FCEUX, одновременно может быть зарегистрирована только одна Ручная функция. Если вы зарегистрируете две Ручные функции, вторая заменит первую, причём второй вызов </span><span class="rvts21">taseditor.registermanual()</span><span class="rvts22"> возвратит ссылку на старую Ручную функцию. Вы можете удалить зарегистрированную Ручную функцию, вызвав </span><span class="rvts21">taseditor.registermanual(</span><span class="rvts70">nil</span><span class="rvts21">)</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Как и в случае с остальными регистрируемыми Луа-функциями в FCEUX, одновременно может быть зарегистрирована только одна Ручная функция. Если вы зарегистрируете две Ручные функции, вторая заменит первую, причём второй вызов </span><span class="rvts21">taseditor.registermanual()</span><span class="rvts22"> возвратит ссылку на старую Ручную функцию. Вы можете удалить зарегистрированную Ручную функцию, вызвав </span><span class="rvts21">taseditor.registermanual(</span><span class="rvts71">nil</span><span class="rvts21">)</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если скрипт заканчивает свою работу, а зарегистрированные функции остались, FCEUX не удаляет скрипт из памяти, чтобы была возможность вызывать эти функции. Скрипт завершается, если пользователь останавливает его вручную, или же если все зарегистрированные функции оказываются удалены.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="engaged"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">bool taseditor.engaged()</span></p>
<p class="rvps9"><span class="rvts69">bool taseditor.engaged()</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Возвращает </span><span class="rvts70">true</span><span class="rvts22">, если Тасэдитор в данный момент запущен, иначе возвращает </span><span class="rvts70">false</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Возвращает </span><span class="rvts71">true</span><span class="rvts22">, если Тасэдитор в данный момент запущен, иначе возвращает </span><span class="rvts71">false</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Кроме того, когда Тасэдитор запущен, вызов функции </span><span class="rvts21">movie.mode()</span><span class="rvts22"> возвращает строку "taseditor".</span></p>
<p class="rvps10"><a name="markedframe"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">bool taseditor.markedframe(int frame)</span></p>
<p class="rvps9"><span class="rvts69">bool taseditor.markedframe(int frame)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Возвращает </span><span class="rvts70">true</span><span class="rvts22">, если в текущем мувике на указанном кадре установлен Маркер, иначе возвращает </span><span class="rvts70">false</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает </span><span class="rvts70">false</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Возвращает </span><span class="rvts71">true</span><span class="rvts22">, если в текущем мувике на указанном кадре установлен Маркер, иначе возвращает </span><span class="rvts71">false</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает </span><span class="rvts71">false</span><span class="rvts22">.</span></p>
<p class="rvps10"><a name="getmarker"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">int taseditor.getmarker(int frame)</span></p>
<p class="rvps9"><span class="rvts69">int taseditor.getmarker(int frame)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Возвращает порядковый номер Маркера, под которым находится указанный кадр.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает -1.</span></p>
<p class="rvps10"><a name="setmarker"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">int taseditor.setmarker(int frame)</span></p>
<p class="rvps9"><span class="rvts69">int taseditor.setmarker(int frame)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Устанавливает Маркер на указанный кадр. Возвращает порядковый номер установленного Маркера.</span></p>
<p class="rvps10"><span class="rvts22">Если на этом кадре уже есть Маркер, никаких изменений не производится, будет возвращён номер существующего Маркера на указанном кадре.</span></p>
@ -148,34 +148,34 @@
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает -1.</span></p>
<p class="rvps10"><a name="removemarker"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">taseditor.removemarker(int frame)</span></p>
<p class="rvps9"><span class="rvts69">taseditor.removemarker(int frame)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Удаляет Маркер с указанного кадра. Если на этом кадре не было Маркера, никаких изменений не производится.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, никаких изменений не производится.</span></p>
<p class="rvps10"><a name="getnote"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">string taseditor.getnote(int index)</span></p>
<p class="rvps9"><span class="rvts69">string taseditor.getnote(int index)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Возвращает строку с текстом Заметки указанного Маркера.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает </span><span class="rvts70">nil</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает </span><span class="rvts71">nil</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если указанный Маркер не существует, возвращает текст Заметки нулевого Маркера.</span></p>
<p class="rvps10"><a name="setnote"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">taseditor.setnote(int index, string newtext)</span></p>
<p class="rvps9"><span class="rvts69">taseditor.setnote(int index, string newtext)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Изменяет текст Заметки указанного Маркера.</span></p>
<p class="rvps10"><span class="rvts22">Если указанный Маркер не существует, никаких изменений не производится.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, никаких изменений не производится.</span></p>
<p class="rvps10"><a name="getcurrentbranch"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">int taseditor.getcurrentbranch()</span></p>
<p class="rvps9"><span class="rvts69">int taseditor.getcurrentbranch()</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Возвращает число от 0 до 9, представляющее собой номер текущего ответвления.</span></p>
<p class="rvps10"><span class="rvts22">Если в проекте отсутствуют ответвления, возвращает -1.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает -1.</span></p>
<p class="rvps10"><a name="getrecordermode"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">string taseditor.getrecordermode()</span></p>
<p class="rvps9"><span class="rvts69">string taseditor.getrecordermode()</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Возвращает строку, соответствующую текущему режиму Рекордера:</span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
@ -185,11 +185,11 @@
<li class="rvps10"><span class="rvts22">"3P"</span></li>
<li class="rvps10"><span class="rvts22">"4P"</span></li>
</ul>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает </span><span class="rvts70">nil</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает </span><span class="rvts71">nil</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Когда вам требуется узнать состояние Записи (Read-only или Read+Write), воспользуйтесь функцией </span><span class="rvts21">emu.readonly()</span><span class="rvts22">.</span></p>
<p class="rvps10"><a name="getsuperimpose"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">int taseditor.getsuperimpose()</span></p>
<p class="rvps9"><span class="rvts69">int taseditor.getsuperimpose()</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Возвращает текущее состояние галочки "Superimpose" в интерфейсе Тасэдитора.</span></p>
<p class="rvps10"><span class="rvts22">0 галочка не установлена (пустой чекбокс)</span></p>
@ -198,49 +198,49 @@
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает -1.</span></p>
<p class="rvps10"><a name="getlostplayback"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">int taseditor.getlostplayback()</span></p>
<p class="rvps9"><span class="rvts69">int taseditor.getlostplayback()</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Возвращает номер кадра, на котором находился Курсор Проигрывателя до изменения Ввода.</span></p>
<p class="rvps10"><span class="rvts22">Если Курсор Проигрывателя не терял позицию при усечении Гринзоны, возвращает -1.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает -1.</span></p>
<p class="rvps10"><a name="getplaybacktarget"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">int taseditor.getplaybacktarget()</span></p>
<p class="rvps9"><span class="rvts69">int taseditor.getplaybacktarget()</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Если Проигрыватель Тасэдитора в данный момент добегает (seek) к целевому кадру, эта функция возвращает номер целевого кадра.</span></p>
<p class="rvps10"><span class="rvts22">Если же Проигрыватель не занят добеганием, возвращает -1.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает -1.</span></p>
<p class="rvps10"><a name="setplayback"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">taseditor.setplayback(int frame)</span></p>
<p class="rvps9"><span class="rvts69">taseditor.setplayback(int frame)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Посылает Курсор Проигрывателя на указанный кадр.</span></p>
<p class="rvps10"><span class="rvts22">Если указанный кадр не находится в Гринзоне, Проигрыватель Тасэдитора начинает добегание к этому кадру.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<p class="rvps10"><a name="stopseeking"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">taseditor.stopseeking()</span></p>
<p class="rvps9"><span class="rvts69">taseditor.stopseeking()</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Прекращает добегание и ставит эмулятор на паузу.</span></p>
<p class="rvps10"><span class="rvts22">Если Проигрыватель не занят добеганием, просто ставит эмулятор на паузу.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<p class="rvps10"><a name="getselection"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">table taseditor.getselection()</span></p>
<p class="rvps9"><span class="rvts69">table taseditor.getselection()</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Возвращает таблицу (массив), содержащую номера выделенных в данынй момент кадров. Эти номера отсортированы по возрастанию.</span></p>
<p class="rvps10"><span class="rvts22">Если выделенных кадров в данный момент нет, возвращает </span><span class="rvts70">nil</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает </span><span class="rvts70">nil</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если выделенных кадров в данный момент нет, возвращает </span><span class="rvts71">nil</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает </span><span class="rvts71">nil</span><span class="rvts22">.</span></p>
<p class="rvps10"><a name="setselection"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">taseditor.setselection(table new_set)</span></p>
<p class="rvps9"><span class="rvts69">taseditor.setselection(table new_set)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Изменяет текущее Выделение на указанный набор кадров. Номера кадров в вашей таблице не обязательно отсортировывать.</span></p>
<p class="rvps10"><span class="rvts22">Если нужно очистить Выделение, используйте </span><span class="rvts21">taseditor.setselection(</span><span class="rvts70">nil</span><span class="rvts21">)</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если нужно очистить Выделение, используйте </span><span class="rvts21">taseditor.setselection(</span><span class="rvts71">nil</span><span class="rvts21">)</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<p class="rvps10"><a name="getinput"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">int taseditor.getinput(int frame, int joypad)</span></p>
<p class="rvps9"><span class="rvts69">int taseditor.getinput(int frame, int joypad)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Возвращает число, представляющее собой Ввод указанного джойстика на указанном кадре.</span></p>
<p class="rvps10"><span class="rvts22">Если указан отрицательный номер кадра, возвращает -1.</span></p>
@ -256,7 +256,7 @@
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, возвращает -1.</span></p>
<p class="rvps10"><a name="submitinputchange"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">taseditor.submitinputchange(int frame, int joypad, int input)</span></p>
<p class="rvps9"><span class="rvts69">taseditor.submitinputchange(int frame, int joypad, int input)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Отправляет запрос Тасэдитору, требуя изменить Ввод указанного джойстика на указанном кадре.</span></p>
<p class="rvps10"><span class="rvts22">Сам Ввод мувика будет изменён только после вызова </span><span class="rvts21">taseditor.applyinputchanges()</span><span class="rvts22">.</span></p>
@ -269,7 +269,7 @@
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<p class="rvps10"><a name="submitinsertframes"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">taseditor.submitinsertframes(int frame, int number)</span></p>
<p class="rvps9"><span class="rvts69">taseditor.submitinsertframes(int frame, int number)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Отправляет запрос Тасэдитору, требуя вставить указанное количество пустых кадров перед указанным номером кадра мувика.</span></p>
<p class="rvps10"><span class="rvts22">Сам Ввод мувика будет изменён только после вызова </span><span class="rvts21">taseditor.applyinputchanges()</span><span class="rvts22">.</span></p>
@ -280,7 +280,7 @@
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<p class="rvps10"><a name="submitdeleteframes"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">taseditor.submitdeleteframes(int frame, int number)</span></p>
<p class="rvps9"><span class="rvts69">taseditor.submitdeleteframes(int frame, int number)</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Отправляет запрос Тасэдитору, требуя удалить из мувика указанное количество кадров, начиная с указанного кадра.</span></p>
<p class="rvps10"><span class="rvts22">Сам Ввод мувика будет изменён только после вызова </span><span class="rvts21">taseditor.applyinputchanges()</span><span class="rvts22">.</span></p>
@ -291,7 +291,7 @@
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<p class="rvps10"><a name="applyinputchanges"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">int taseditor.applyinputchanges([string name])</span></p>
<p class="rvps9"><span class="rvts69">int taseditor.applyinputchanges([string name])</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Моментально применяет список накопившихся запросов к текущему мувику. Если эти запросы действительно внесли какие-то изменения во Ввод мувика, в Журнале Истории появится новый пункт (чтобы пользователь мог откатить эти изменения), как следствие, Гринзона может быть усечена, Курсор Проигрывателя может отступить назад и запустить автоматическое добегание.</span></p>
<p class="rvps10"><span class="rvts22">Возвращает номер кадра, на котором были обнаружен первый факт изменения Ввода.</span></p>
@ -302,7 +302,7 @@
<p class="rvps10"><span class="rvts22">Если Тасэдитор не запущен, ничего не производится.</span></p>
<p class="rvps10"><a name="clearinputchanges"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps9"><span class="rvts68">taseditor.clearinputchanges()</span></p>
<p class="rvps9"><span class="rvts69">taseditor.clearinputchanges()</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Очищает список накопившихся запросов, позволяя отменить их до вызова </span><span class="rvts21">applyinputchanges()</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Рекомендуется вызывать эту функцию перед формированием нового списка запросов, чтобы быть уверенным, что в список не попадут какие-нибудь старые запросы.</span></p>

View File

@ -62,46 +62,46 @@
<p class="rvps10"><span class="rvts51">Все способы навигации по мувику:</span></p>
<p class="rvps10"><span class="rvts57"><br/></span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><a class="rvts61" href="Navigation.html#scrolling-piano-roll">Скроллинг Piano Roll</a></li>
<li class="rvps15"><a class="rvts62" href="Navigation.html#scrolling-piano-roll">Скроллинг Piano Roll</a></li>
</ul>
<ol style="text-indent: 32px; margin-left: 20px; list-style-position: inside;">
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#scrollbar-drag">Использование вертикального скроллбара</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#wheel">Скроллинг колесом мыши</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#crossing-gaps">Пересечение промежутков во Вводе и Маркерах</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#jumping-by-pages">Листание страниц</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#jump-home-end">Прыжок в начало/конец мувика</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#scroll-to-playback">Прыжок к Курсору Проигрывателя</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#scroll-to-selection">Прыжок к Курсору Выделения</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#scroll-to-playback-marker">Прыжок к Маркеру над Курсором Проигрывателя</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#scroll-to-selection-marker">Прыжок к Маркеру над Курсором Выделения</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#scrollbar-drag">Использование вертикального скроллбара</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#wheel">Скроллинг колесом мыши</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#crossing-gaps">Пересечение промежутков во Вводе и Маркерах</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#jumping-by-pages">Листание страниц</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#jump-home-end">Прыжок в начало/конец мувика</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#scroll-to-playback">Прыжок к Курсору Проигрывателя</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#scroll-to-selection">Прыжок к Курсору Выделения</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#scroll-to-playback-marker">Прыжок к Маркеру над Курсором Проигрывателя</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#scroll-to-selection-marker">Прыжок к Маркеру над Курсором Выделения</a></li>
</ol>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><a class="rvts61" href="Navigation.html#playback-cursor">Навигация Курсором Проигрывателя</a></li>
<li class="rvps15"><a class="rvts62" href="Navigation.html#playback-cursor">Навигация Курсором Проигрывателя</a></li>
</ul>
<ol style="text-indent: 32px; margin-left: 20px; list-style-position: inside;">
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#frame-advance-rewind">Покадровое перемещение</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#rewinding-by-wheel">Перемотка колесом мыши</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#drag-playback">Перетаскивание мышью</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#playback-jumping-markers">Прыжки по Маркерам</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#jump-bookmark">Прыжки по Закладкам</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#playback-home-end">Прыжок в начало/конец мувика</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#frame-advance-rewind">Покадровое перемещение</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#rewinding-by-wheel">Перемотка колесом мыши</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#drag-playback">Перетаскивание мышью</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#playback-jumping-markers">Прыжки по Маркерам</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#jump-bookmark">Прыжки по Закладкам</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#playback-home-end">Прыжок в начало/конец мувика</a></li>
</ol>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><a class="rvts61" href="Navigation.html#selection-cursor">Навигация Курсором Выделения</a></li>
<li class="rvps15"><a class="rvts62" href="Navigation.html#selection-cursor">Навигация Курсором Выделения</a></li>
</ul>
<ol style="text-indent: 32px; margin-left: 20px; list-style-position: inside;">
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#selection-up-down">Покадровое смещение Выделения</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#selection-home-end">Смещение Выделения в начало/конец мувика</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#selection-jumping-markers">Прыжки по Маркерам</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#selection-history">Откаты истории Выделения</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#reselect-clipboard">Прыжок к источнику данных в Буфере Обмена</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#selection-up-down">Покадровое смещение Выделения</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#selection-home-end">Смещение Выделения в начало/конец мувика</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#selection-jumping-markers">Прыжки по Маркерам</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#selection-history">Откаты истории Выделения</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#reselect-clipboard">Прыжок к источнику данных в Буфере Обмена</a></li>
</ol>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><a class="rvts61" href="Navigation.html#special">Особые приёмы навигации</a></li>
<li class="rvps15"><a class="rvts62" href="Navigation.html#special">Особые приёмы навигации</a></li>
</ul>
<ol style="text-indent: 32px; margin-left: 20px; list-style-position: inside;">
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#find-note">Поиск Маркеров с нужным текстом</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts61" href="Navigation.html#similar-note">Прыжок к участку с похожим описанием</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#find-note">Поиск Маркеров с нужным текстом</a></li>
<li class="rvps15" style="text-indent: 32px"><a class="rvts62" href="Navigation.html#similar-note">Прыжок к участку с похожим описанием</a></li>
</ol>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
@ -132,7 +132,7 @@
<li class="rvps15"><span class="rvts22">при ручном поиске нужного участка, расположение которого может быть где угодно поблизости</span></li>
</ul>
<p><a name="crossing-gaps"></a>
<span class="rvts62"><br/></span></p>
<span class="rvts63"><br/></span></p>
<p class="rvps10"><span class="rvts23">3. Пересечение промежутков во Вводе и Маркерах</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Навести курсор мыши на интересующую ячейку посреди Ввода/Маркеров, зажать </span><span class="rvts34">Alt</span><span class="rvts22"> и </span><span class="rvts22">повернуть колесо мыши вверх или вниз таким образом можно перейти к ближайшей ячейке, содержимое которой отличается от содержимого соседней ячейки.</span></p>

View File

@ -84,7 +84,7 @@
<p class="rvps10"><span class="rvts22">Начало и конец участка обычно ассоциируются не с номером кадра, а с определёнными событиями игры. Но так как на начальное событие редактируемый </span><span class="rvts22">Ввод</span><span class="rvts22"> участка никак не влияет, то начальный кадр участка не изменяется в процессе оптимизации, и этот кадр можно однозначно зафиксировать Маркером.</span></p>
<p class="rvps10"><span class="rvts22">Конечное событие участка может наступить в разное время в зависимости от </span><span class="rvts22">Ввод</span><span class="rvts22">а на участке. Поэтому, если вы отмечаете конец участка Маркером, необходимо будет перетаскивать этот Маркер выше или ниже, когда из-за изменения </span><span class="rvts22">Ввод</span><span class="rvts22">а конечное событие изменилось. Если вам лень это делать, можно обойтись установкой Закладки, в которой заодно сохранится полученный вариант прохождения участка. Ну а для самых простых участков можно вообще никак не отмечать конечный кадр, полагаясь на собственную память и на зелёную стрелку Тасэдитора.</span></p>
<p class="rvps10"><a name="GreenArrow"></a>
<span class="rvts22">С помощью зелёной стрелки Тасэдитор может подсказать, на каком кадре вы остановили просмотр участка в прошлый раз (до того как начали изменять </span><span class="rvts22">Ввод</span><span class="rvts22"> участка). Обычно это и есть кадр, в котором происходило конечное событие до недавних изменений </span><span class="rvts22">Ввод</span><span class="rvts22">а. Так что, если после изменения </span><span class="rvts22">Ввод</span><span class="rvts22">а конечное событие стало детектироваться на 2 кадра выше зелёной стрелки, это означает, что вы обогнали прошлый результат на 2 кадра, значит, новый </span><span class="rvts22">Ввод</span><span class="rvts22"> лучше старого (если ваш критерий скорость). Вся эта логическая цепочка пролетает в голове за один миг при взгляде на Piano Roll после просмотра результата Ввода.</span></p>
<span class="rvts22">С помощью зелёной стрелки Тасэдитор может подсказать, на каком кадре вы остановили просмотр участка в прошлый раз (до того как начали изменять </span><span class="rvts22">Ввод</span><span class="rvts22"> участка). Обычно это и есть кадр, в котором происходило конечное событие до недавних изменений </span><span class="rvts22">Ввод</span><span class="rvts22">а. Так что, если после изменения </span><span class="rvts22">Ввод</span><span class="rvts22">а конечное событие стало детектироваться на 2 кадра выше зелёной стрелки, это означает, что вы обогнали предыдущий результат на 2 кадра, значит, новый </span><span class="rvts22">Ввод</span><span class="rvts22"> лучше старого (если ваш критерий скорость). Вся эта логическая цепочка пролетает в голове за один миг при взгляде на Piano Roll после просмотра результата Ввода.</span></p>
<p class="rvps10"><span class="rvts22">Возьмём пример из Super Mario Bros.</span></p>
<p class="rvps10"><span class="rvts22">Пункт 1. При просмотре готовой части мувика вы остановили Курсор Проигрывателя в момент появления Марио на экране. Решили создать участок от этого места до события, когда координата X будет равна 100. Критерий чем быстрее, тем лучше. Поставили на начальный кадр Маркер, возможно даже ввели Заметку в духе "start running".</span></p>
<p class="rvps10"><span class="rvts22">Пункт 2. Сразу понятна первая ошибка во Вводе на участке нет ни одного нажатия.</span></p>

View File

@ -60,129 +60,129 @@
<p class="rvps10"><span class="rvts22"><br/></span></p>
<div class="rvps21"><table width="420" border="1" cellpadding="0" cellspacing="0" style="border-color: #000000 #ffffff #ffffff #000000; border-style: solid;">
<tr valign="middle">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #0000ff; width: 132px; height: 10px;"><p class="rvps5"><span class="rvts67">Изменение Ввода</span></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #0000ff; width: 132px; height: 10px;"><p class="rvps5"><span class="rvts68">Изменение Ввода</span></p>
</td>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #0000ff; width: 150px; height: 10px;"><p class="rvps5"><span class="rvts67">Изменение Маркеров</span></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #0000ff; width: 150px; height: 10px;"><p class="rvps5"><span class="rvts68">Изменение Маркеров</span></p>
</td>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #0000ff; width: 124px; height: 10px;"><p class="rvps5"><span class="rvts67">Прочее</span></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #0000ff; width: 124px; height: 10px;"><p class="rvps5"><span class="rvts68">Прочее</span></p>
</td>
</tr>
<tr valign="middle">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Set">Set</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Set">Set</a></p>
</td>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#MarkerSet">Marker Set</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#MarkerSet">Marker Set</a></p>
</td>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ede4e4; width: 124px; height: 10px;"><p class="rvps5"><span class="rvts66">Initialization</span></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ede4e4; width: 124px; height: 10px;"><p class="rvps5"><span class="rvts67">Initialization</span></p>
</td>
</tr>
<tr valign="middle">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Unset">Unset</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Unset">Unset</a></p>
</td>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#MarkerRemove">Marker Remove</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#MarkerRemove">Marker Remove</a></p>
</td>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ede4e4; width: 124px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Undefined">Undefined</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ede4e4; width: 124px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Undefined">Undefined</a></p>
</td>
</tr>
<tr valign="middle">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Pattern">Pattern</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Pattern">Pattern</a></p>
</td>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#MarkerPattern">Marker Pattern</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#MarkerPattern">Marker Pattern</a></p>
</td>
<td rowspan="12" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; width: 124px;"><p class="rvps5"><span class="rvts65"><br/></span></p>
<td rowspan="12" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; width: 124px;"><p class="rvps5"><span class="rvts66"><br/></span></p>
</td>
</tr>
<tr valign="middle">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Clear">Clear</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Clear">Clear</a></p>
</td>
<td rowspan="3" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ffffff; width: 150px;"><br/>
</td>
</tr>
<tr valign="middle">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Cut">Cut</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Cut">Cut</a></p>
</td>
</tr>
<tr valign="middle">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Paste">Paste</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Paste">Paste</a></p>
</td>
</tr>
<tr valign="top">
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#PasteInsert">PasteInsert</a></p>
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#PasteInsert">PasteInsert</a></p>
</td>
</tr>
<tr valign="top">
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Clone">Clone</a></p>
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Clone">Clone</a></p>
</td>
</tr>
<tr valign="top">
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Insert">Insert</a></p>
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Insert">Insert</a></p>
</td>
</tr>
<tr valign="top">
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#InsertNum">Insert#</a></p>
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#InsertNum">Insert#</a></p>
</td>
</tr>
<tr valign="top">
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Delete">Delete</a></p>
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Delete">Delete</a></p>
</td>
</tr>
<tr valign="top">
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Truncate">Truncate</a></p>
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Truncate">Truncate</a></p>
</td>
</tr>
<tr valign="top">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Record">Record</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Record">Record</a></p>
</td>
<td rowspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; width: 150px; height: 10px;"><p class="rvps5"><span class="rvts65"><br/></span></p>
<td rowspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; width: 150px; height: 10px;"><p class="rvps5"><span class="rvts66"><br/></span></p>
</td>
</tr>
<tr valign="top">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Import">Import</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ccffff; width: 132px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Import">Import</a></p>
</td>
</tr>
<tr valign="top">
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Branch">Branch</a></p>
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Branch">Branch</a></p>
</td>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ede4e4; width: 124px;"><p class="rvps5"><a class="rvts66" href="Operations.html#Bookmark">Bookmark</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #ede4e4; width: 124px;"><p class="rvps5"><a class="rvts67" href="Operations.html#Bookmark">Bookmark</a></p>
</td>
</tr>
<tr valign="top">
<td rowspan="8" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; width: 132px; height: 10px;"><p class="rvps5"><span class="rvts65"><br/></span></p>
<td rowspan="8" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; width: 132px; height: 10px;"><p class="rvps5"><span class="rvts66"><br/></span></p>
</td>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#MarkerBranch">Marker Branch</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#MarkerBranch">Marker Branch</a></p>
</td>
<td rowspan="9" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; width: 124px;"><p class="rvps5"><span class="rvts6"><br/></span></p>
</td>
</tr>
<tr valign="top">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#MarkerRename">Marker Rename</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#MarkerRename">Marker Rename</a></p>
</td>
</tr>
<tr valign="top">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#MarkerDrag">Marker Drag</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#MarkerDrag">Marker Drag</a></p>
</td>
</tr>
<tr valign="top">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#MarkerSwap">Marker Swap</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#MarkerSwap">Marker Swap</a></p>
</td>
</tr>
<tr valign="top">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#MarkerShift">Marker Shift</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#MarkerShift">Marker Shift</a></p>
</td>
</tr>
<tr valign="top">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#LUAMarkerSet">LUA Marker Set</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#LUAMarkerSet">LUA Marker Set</a></p>
</td>
</tr>
<tr valign="top">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#LUAMarkerRemove">LUA Marker Remove</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#LUAMarkerRemove">LUA Marker Remove</a></p>
</td>
</tr>
<tr valign="top">
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#LUAMarkerRename">LUA Marker Rename</a></p>
<td valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #f2f2c8; width: 150px; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#LUAMarkerRename">LUA Marker Rename</a></p>
</td>
</tr>
<tr valign="top">
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts66" href="Operations.html#LUAChange">LUA Change</a></p>
<td colspan="2" valign="middle" style="border-color : #ffffff #000000 #000000 #ffffff; border-style: solid; background-color: #d3f8d6; height: 10px;"><p class="rvps5"><a class="rvts67" href="Operations.html#LUAChange">LUA Change</a></p>
</td>
</tr>
</table>
@ -347,7 +347,7 @@
<p class="rvps10"><span class="rvts43">Гринзона усекается: после первого же кадра, где изменился Ввод или Лаг.</span></p>
<p class="rvps10"><span class="rvts43"><br/></span></p>
<p class="rvps10"><a name="Insert"></a>
<span class="rvts64"><br/></span></p>
<span class="rvts65"><br/></span></p>
<p class="rvps11"><span class="rvts23">Insert</span></p>
<p class="rvps10"><span class="rvts47">Категории: изменение Ввода, изменение Маркеров</span></p>
<p class="rvps10"><span class="rvts22">Запись создаётся при вставке одного или нескольких пустых кадров посреди мувика, что приводит к сдвиганию </span><span class="rvts22">Ввод</span><span class="rvts22">а (и Маркеров, если они привязаны к </span><span class="rvts22">Ввод</span><span class="rvts22">у) вниз.</span></p>

View File

@ -56,19 +56,19 @@
<p class="rvps5"><span class="rvts39"><br/></span></p>
<p class="rvps5"><img alt="" style="padding : 1px;" src="lib/taseditor-smb.png"/></p>
<p class="rvps21"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Рабочее пространство Тасэдитора похоже на интерфейс большинства программ для написания музыки Piano Roll (перфолента). Piano Roll представляет из себя таблицу, содержащую все необходимые данные о редактируемом проекте. Пользователь может не только просматривать эти данные, но и редактировать их с помощью щелчков мыши по клеткам таблицы.</span></p>
<p class="rvps10"><span class="rvts22">При первом открытии Тасэдитора вы, скорее всего, увидите пустой проект, содержащий лишь стартовый (нулевой) кадр мувика. Поэтому перед началом экспериментов нужно временно отключить паузу эмуляции, чтобы мувик дошёл хотя бы до титульного экрана игры, где уже можно воздействовать на игру с помощью Ввода. По умолчанию для управления паузой эмулятора служит клавиша </span><span class="rvts27">Pause</span><span class="rvts22"> на клавиатуре, но в Тасэдиторе вы можете использовать вместо неё среднюю кнопку мыши (колесо). Попробуйте просмотреть запущенную видеоигру пару секунд, затем вновь нажмите </span><span class="rvts27">Pause</span><span class="rvts22"> или среднюю кнопку мыши, чтобы остановить эмулятор.</span></p>
<p class="rvps10"><span class="rvts22">Рабочее пространство Тасэдитора похоже на интерфейс большинства программ для написания музыки Piano Roll (перфолента). Piano Roll представляет из себя таблицу, содержащую самые важные данные о редактируемом проекте. Пользователь может не только просматривать эти данные, но и редактировать их с помощью щелчков мыши по клеткам таблицы.</span></p>
<p class="rvps10"><span class="rvts22">При первом открытии Тасэдитора вы, скорее всего, увидите пустой проект, содержащий лишь стартовый (нулевой) кадр мувика. Поэтому перед началом экспериментов нужно временно отключить паузу эмуляции, чтобы мувик дошёл хотя бы до титульного экрана игры, где уже можно воздействовать на игру с помощью Ввода. По умолчанию для управления паузой эмулятора служит клавиша </span><span class="rvts27">Pause</span><span class="rvts22"> на клавиатуре, но в Тасэдиторе вы можете использовать вместо неё </span><span class="rvts37">среднюю кнопку мыши</span><span class="rvts22"> (колесо). Попробуйте просмотреть запущенную видеоигру пару секунд, затем вновь нажмите </span><span class="rvts27">Pause</span><span class="rvts22"> или среднюю кнопку мыши, чтобы остановить эмулятор.</span></p>
<p class="rvps10"><span class="rvts22">Во время эмуляции содержимое Piano Roll заполняется информацией о пройденных кадрах. Каждая строка Списка Piano Roll отвечает за один кадр. Порядковый номер этого кадра указан в начале каждой строки, нумерация идёт сверху вниз. Когда экранных размеров не хватает для отображения всех кадров мувика, у Списка появляется вертикальный скроллбар.</span></p>
<p class="rvps10"><span class="rvts22">По цвету каждой строки можно узнать информацию о соответствующем кадре игрового процесса:</span></p>
<p class="rvps10"><span class="rvts22">По цвету каждой строки можно узнать информацию о соответствующем кадре:</span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps10"><span class="rvts22">Бледные (почти белые) строки означают, что эти кадры мувика не содержатся в Гринзоне. Обычно это значит, что эмулятор ещё не доходил в игре до данных кадров мувика и ничего не знает о происходящем в игре на этих кадрах. Например, если бы вы загрузите в Тасэдитор готовый мувик, в Piano Roll будут сразу отображаться все кадры этого мувика, но до запуска проигрывания они будут белёсыми. На верхней картинке эти строки начинаются с кадра 21, потому что Гринзона заканчивается на кадре 20.</span></li>
<li class="rvps10"><span class="rvts22">Зелёные и красные строки означают, что эти кадры содержатся в Гринзоне, эмулятор уже проиграл эту часть мувика, и вы уже видели на экране FCEUX, что именно происходит в игре в этих кадрах. Красным цветом отмечены кадры с лагом, в остальном же разницы между красными и зелёными строками нет.</span></li>
<li class="rvps10"><span class="rvts22">Голубая строка (на картинке это 18-й кадр) показывает текущий кадр эмуляции. События этого кадра отображаются на экране FCEUX в данный момент времени. Эта строка всегда в единственном экземпляре. В дальнейшем эту строчку мы будем называть </span><span class="rvts26">Курсор Проигрывателя</span><span class="rvts22"> (Playback cursor). Во время паузы этот курсор стоит на одном кадре, а когда игра эмулируется, курсор бежит вниз, оставляя за собой след из зелёных и красных кадров Гринзоны. Вы можете ставить Курсор Проигрывателя на любой кадр мувика, чтобы узнать события игры в этом кадре. Для этого щёлкните левой кнопкой мыши по желаемой строчке в самом левом столбце Piano Roll (по которому перемещается голубая треугольная стрелка) голубая стрелка перепрыгнет на эту строку вместе с Курсором Проигрывателя, а содержимое экрана FCEUX обновится, отобразив состояние игры на этом кадре. Если теперь не отпускать левую кнопку мыши, можно свободно перетаскивать голубой курсор вверх и вниз.</span></li>
<li class="rvps10"><span class="rvts22">Синяя строка выделенный участок мувика. Цвет выделения может быть и другим, это зависит от ваших настроек Windows (от выбранной Визуальной темы). Строки Piano Roll выделяются при щелчках по ним левой кнопкой мыши. На картинке показано выделение 28-го кадра, но при необходимости можно выделить любой другой, и даже несколько строк одновременно. Для выделения региона нужно щёлкнуть по номеру кадра и, не отпуская кнопку, переместить мышь вверх или вниз, растягивая Выделение как угодно. </span><span class="rvts37">Замечание:</span><span class="rvts22"> строки Piano Roll выделяются не только при щелчках по номерам кадров, но также при щелчках по </span><span class="rvts22">Ввод</span><span class="rvts22">у (то есть по любому столбцу справа от колонки с номерами кадров). В дальнейшем мы будем называть все синие строки </span><span class="rvts26">Выделением</span><span class="rvts22"> (Selection), а в случае, когда выделена только одна строчка, будем называть её </span><span class="rvts26">Курсором Выделения</span><span class="rvts22"> (Selection cursor). В отличие от Курсора Проигрывателя, Курсор Выделения не привязан к состоянию эмулируемой игры. Чтобы полностью убрать Выделение, можно щёлкнуть правой кнопкой мыши по номеру выделенного кадра и в появившемся контекстном меню выбрать пункт "Deselect". Впрочем, обычно нет нужды убирать оставшееся от прошлой операции Выделение, так как при следующей операции над мувиком оно всё равно появится в новом месте.</span></li>
<li class="rvps10"><span class="rvts22">Синяя строка выделенный участок мувика. Цвет выделения может быть и другим, это зависит от ваших настроек Windows (от выбранной Визуальной темы). Строки Piano Roll выделяются при щелчках по ним левой кнопкой мыши. На картинке показано выделение только одного 27-го кадра, но при необходимости можно выделить несколько строк одновременно. Для выделения региона нужно щёлкнуть по номеру кадра и, не отпуская кнопку, переместить мышь вверх или вниз, растягивая Выделение как угодно. </span><span class="rvts37">Замечание:</span><span class="rvts22"> строки Piano Roll также будут выделяться при щелчках по </span><span class="rvts22">Ввод</span><span class="rvts22">у (то есть почти по любому столбцу), но для управления Выделением предназначена именно колонка с номерами кадров. В дальнейшем мы будем называть все синие строки </span><span class="rvts26">Выделением</span><span class="rvts22"> (Selection), а когда выделена только одна строчка, будем называть её </span><span class="rvts26">Курсором Выделения</span><span class="rvts22"> (Selection cursor). В отличие от Курсора Проигрывателя, Курсор Выделения не привязан к состоянию эмулируемой игры. Чтобы полностью убрать Выделение, можно щёлкнуть правой кнопкой мыши по номеру выделенного кадра и в появившемся контекстном меню выбрать пункт "Deselect". Впрочем, обычно нет нужды убирать Выделение, оставшееся от прошлых операций над мувиком, так как при следующей операции оно автоматически появится на новом месте.</span></li>
<li class="rvps10"><span class="rvts22">Фиолетовая строка появляется на краткий миг при использовании Отката (Undo). Таким образом программа показывает конкретное место отменённых изменений. Большое удобство Тасэдитора состоит в том, что абсолютно любое изменение мувика можно откатывать с помощью стандартной комбинации клавиш </span><span class="rvts34">Ctrl + Z</span><span class="rvts22">, поэтому не бойтесь экспериментировать.</span></li>
</ul>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Чтобы добавлять и изменять </span><span class="rvts22">Ввод</span><span class="rvts22"> мувика, щёлкайте мышкой по клеткам в столбцах Piano Roll, находящихся правее столбика с номерами кадров. Если щёлкнуть по пустой клетке, то на ней появится символ, соответствующий кнопке реального джойстика эмулируемой приставки (NES).</span></p>
<p class="rvps10"><span class="rvts22">Чтобы добавлять и изменять </span><span class="rvts22">Ввод</span><span class="rvts22"> мувика, щёлкайте мышкой по клеткам в столбцах, находящихся правее столбика с номерами кадров. Если щёлкнуть по пустой клетке, то на ней появится символ, соответствующий кнопке реального джойстика эмулируемой приставки (NES).</span></p>
<div class="rvps21"><table width="600" border="0" cellpadding="6" cellspacing="0" style="border-width: 0px;">
<tr valign="middle">
<td style="width: 586px; height: 14px;"><p class="rvps15"><span class="rvts26">A</span><span class="rvts22"> кнопка </span><span class="rvts32">A</span></p>
@ -85,52 +85,51 @@
</tr>
</table>
</div>
<p class="rvps10"><span class="rvts22">Если щёлкнуть по уже заполненной клетке, то она очистится, и соответствующая кнопка будет считаться отпущенной на этом кадре. Других состояний у кнопок нет только эти два: нажата/отпущена.</span></p>
<p class="rvps10"><span class="rvts22">Если вам непривычно соотносить эти 8 символов с кнопками реального джойстика, попробуйте просто нажимать в Тасэдиторе клавиши, настроенные в эмуляторе на джойстик первого игрока. Во время нажатия кнопок будут загораться зелёным светом соответствующие буквы в Заголовке Piano Roll, и вы легко ассоциируете столбцы Piano Roll с кнопками геймпада.</span></p>
<p class="rvps10"><span class="rvts22">Основная часть работы в Тасэдиторе проходит именно за этим занятием установкой и снятием нажатий кнопок на разных кадрах. Тем самым вы формируете </span><span class="rvts37">последовательность состояний кнопок</span><span class="rvts22">, которая передаётся в игру и отражается на действиях управляемого персонажа. Например, если в Super Mario Bros посреди игрового процесса поставить в одну клетку Piano Roll один символ A, Марио сделает маленький прыжок (произошло короткое нажатие кнопки </span><span class="rvts32">A</span><span class="rvts22">). Если же поставить несколько символов A подряд (в столбик), Марио сделает большой прыжок (длительное зажатие кнопки </span><span class="rvts32">A</span><span class="rvts22">).</span></p>
<p class="rvps10"><span class="rvts22">Если щёлкнуть по уже занятой клетке, то она очистится, и соответствующая кнопка будет считаться отпущенной на этом кадре. Других состояний у кнопок нет только эти два: либо нажата, либо отпущена.</span></p>
<p class="rvps10"><span class="rvts22">Поначалу может быть не очень привычно соотносить эти 8 символов с упругими кнопками реального джойстика, но попробуйте просто нажимать в Тасэдиторе клавиши, настроенные в эмуляторе на джойстик первого игрока. Во время нажатия кнопок будут загораться зелёным светом соответствующие буквы в Заголовке Piano Roll, и вы легко ассоциируете столбцы Piano Roll с кнопками геймпада.</span></p>
<p class="rvps10"><span class="rvts22">Основная часть времени в Тасэдиторе проходит именно за этим занятием установкой и снятием нажатий кнопок на разных кадрах. Тем самым вы формируете </span><span class="rvts37">последовательность состояний кнопок</span><span class="rvts22">, которая передаётся в игру и отражается на действиях управляемого персонажа. Например, если в Super Mario Bros посреди игрового процесса поставить в одну клетку Piano Roll один символ "A", Марио сделает маленький прыжок (произошло короткое нажатие кнопки </span><span class="rvts32">A</span><span class="rvts22">). Если же поставить несколько символов "A" подряд (в столбик), Марио сделает большой прыжок (длительное зажатие кнопки </span><span class="rvts32">A</span><span class="rvts22">).</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Когда вы изменяете </span><span class="rvts22">Ввод</span><span class="rvts22"> выше строки, в которой стоит Курсор Проигрывателя, голубой курсор отступает назад (назад по мувику = вверх по Piano Roll), при этом очищая часть Гринзоны. Это происходит в связи с тем, что ваши изменения </span><span class="rvts22">Ввод</span><span class="rvts22">а ведут к изменениям хода игровых событий, так что ранее запомненное в Гринзоне состояние игры становится не актуальным. После изменения </span><span class="rvts22">Ввод</span><span class="rvts22">а вам необходимо будет снова проиграть несколько кадров то есть либо снять на время паузу эмулятора, либо схватить Курсор Проигрывателя за треугольную стрелку и перетащить вниз до интересующего кадра. При этом вы увидите на экране FCEUX результаты модификации </span><span class="rvts22">Ввод</span><span class="rvts22">а, а заодно восстановите часть Гринзоны.</span></p>
<p class="rvps10"><span class="rvts22">Кроме того, вы ещё можете зажать </span><span class="rvts26">правую кнопку мыши</span><span class="rvts22"> и покрутить колесо мыши вниз, чтобы вручную довести Курсор Проигрывателя к нужному кадру. Управление колесом является самым отзывчивым способом навигации по малому участку </span><span class="rvts22">Ввод</span><span class="rvts22">а. Задействуется только одна рука, и при этом курсор мыши может находиться где угодно, например, оставаться над клетками редактируемого Ввода. Попробуйте, это очень эффективный способ перемотки назад и вперёд. Удобно зажимать средним пальцем правую кнопку мыши, а указательным вращать колесо, не отрывая взгляд от экрана FCEUX.</span></p>
<p class="rvps10"><span class="rvts22">Каждый раз, когда вы изменяете </span><span class="rvts22">Ввод</span><span class="rvts22"> выше строки, в которой стоит Курсор Проигрывателя, голубой курсор отступает назад (назад по мувику = вверх по Piano Roll), при этом очищая часть Гринзоны. Это происходит в связи с тем, что ваши изменения </span><span class="rvts22">Ввод</span><span class="rvts22">а ведут к изменениям хода игровых событий, так что ранее запомненное в Гринзоне состояние игры становится не актуальным. После изменения </span><span class="rvts22">Ввод</span><span class="rvts22">а вам необходимо будет снова проиграть несколько кадров мувика то есть либо снять на время паузу эмулятора, либо схватить Курсор Проигрывателя за треугольную стрелку и перетащить вниз до интересующего кадра. При этом вы увидите на экране FCEUX результаты модификации </span><span class="rvts22">Ввод</span><span class="rvts22">а, а заодно восстановите часть Гринзоны.</span></p>
<p class="rvps10"><span class="rvts22">Кроме того, вы ещё можете зажать </span><span class="rvts26">правую кнопку мыши</span><span class="rvts22"> и покрутить колесо мыши вниз, чтобы вручную довести Курсор Проигрывателя к нужному кадру. Управление колесом является самым отзывчивым способом навигации по малому участку мувика. Задействуется только одна рука, и при этом курсор мыши может находиться где угодно, например, оставаться над клетками редактируемого Ввода. Попробуйте, это очень эффективный способ перемотки назад и вперёд. Удобно зажимать средним пальцем правую кнопку мыши, а указательным вращать колесо, не отрывая взгляд от экрана FCEUX.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Помимо одиночных щелчков по клеткам Piano Roll можно также менять состояние кнопок сразу в нескольких кадрах. Например, если вы хотите, чтобы кнопка </span><span class="rvts32">R</span><span class="rvts22"> (</span><span class="rvts32">Вправо</span><span class="rvts22">) была зажата на протяжении 20 кадров подряд, не обязательно 20 раз щёлкать по соответствующим клеткам Piano Roll сверху вниз. Достаточно щёлкнуть по начальному кадру избранного участка и, не отпуская левую кнопку мыши, переместить курсор мыши вверх или вниз при движении курсор мыши будет оставлять за собой след, и таким образом вы нарисуете вертикальный ряд нажатий. Аналогично можно стереть несколько нажатий, щёлкнув по первому удаляемому символу и переместив "ластик" выше или ниже. Стирание начинается при щелчке по заполненной клетке Ввода, а при щелчке по пустой клетке начинается рисование.</span></p>
<p class="rvps10"><span class="rvts22">Кроме этого, можно также зажать клавишу </span><span class="rvts34">Shift</span><span class="rvts22"> перед щелчком по </span><span class="rvts22">Ввод</span><span class="rvts22">у, тогда влияние щелчка распространится не только на ту клетку, по которой вы щёлкнули, но и на все клетки в этом столбце, начиная с Курсора Выделения. Таким образом, вы можете сначала сделать обычный щелчок по начальной клетке запланированного ряда нажатий, а потом зажать </span><span class="rvts34">Shift</span><span class="rvts22"> и сделать щелчок по конечной клетке появится запланированный ряд нажатий.</span></p>
<p class="rvps10"><span class="rvts22">Помимо одиночных щелчков по клеткам Piano Roll можно также менять состояние кнопок сразу в нескольких кадрах. Например, если вы хотите, чтобы кнопка </span><span class="rvts32">R</span><span class="rvts22"> (</span><span class="rvts32">Вправо</span><span class="rvts22">) была зажата на протяжении 20 кадров подряд, не обязательно 20 раз щёлкать по соответствующим клеткам Piano Roll сверху вниз. Достаточно щёлкнуть по начальному кадру избранного участка и, не отпуская левую кнопку мыши, переместить курсор мыши вверх или вниз при движении курсор мыши будет оставлять за собой след, и таким образом вы нарисуете вертикальный ряд нажатий. Аналогично можно быстро стереть несколько нажатий, щёлкнув по первому удаляемому символу и переместив "ластик" выше или ниже. Стирание начинается при щелчке по заполненной клетке Ввода, а при щелчке по пустой клетке начинается рисование.</span></p>
<p class="rvps10"><span class="rvts22">Кроме этого, можно также зажать клавишу </span><span class="rvts34">Shift</span><span class="rvts22"> перед щелчком по </span><span class="rvts22">Ввод</span><span class="rvts22">у, чтобы распространить влияние этого щелчка на все кадры между точкой щелчка и Курсором Выделения. Например, вы можете сначала поставить "R" в начальном кадре, потом проскроллировать Piano Roll до конца, зажать </span><span class="rvts34">Shift</span><span class="rvts22"> и поставить "R" в конечном кадре нажатия кнопки </span><span class="rvts32">R</span><span class="rvts22"> появятся во всех кадрах.</span></p>
<p class="rvps10"><img align="right" alt="" style="padding : 6px;" src="lib/piano-roll-header-l.png"/></p>
<p class="rvps10"><span class="rvts22">Существует ещё один способ массовой установки и снятия нажатий. Выделите несколько отдельных строк, например, пятую строку, десятую и двадцатую. Затем щёлкните по букве </span><span class="rvts26">L</span><span class="rvts22"> в Заголовке Piano Roll. Если на выделенных кадрах не было нажатий кнопки </span><span class="rvts32">L</span><span class="rvts22"> (</span><span class="rvts32">Влево</span><span class="rvts22">), то они там появятся. Если же во всех выделенных кадрах кнопка </span><span class="rvts32">L</span><span class="rvts22"> уже проставлена, щелчок по заголовку очистит эти нажатия.</span></p>
<p class="rvps10"><span class="rvts22">Позже вы освоите ещё несколько методов редактирования </span><span class="rvts22">Ввод</span><span class="rvts22">а, но это основные из них. Поначалу может показаться, что слишком неестественно рисовать кнопочные нажатия мышкой, вместо того, чтобы привычно симулировать их нажатиями клавиш на клавиатуре. Однако это чувство дискомфорта вскоре пройдёт, если вы посвятите Тасэдитору хотя бы несколько дней.</span></p>
<p class="rvps10"><span class="rvts22">Особенность ТАСинга всегда была в том, что на первоначальный ввод кнопок уходит крайне мало времени, зато почти всё время уходит на последующие микро-модификации этого </span><span class="rvts22">Ввод</span><span class="rvts22">а где-то требуется удлинить время зажатия кнопки, где-то переставить нажатие кнопки на кадр раньше, где-то поменять </span><span class="rvts32">U</span><span class="rvts22"> и </span><span class="rvts32">D</span><span class="rvts22"> местами, и так далее. Преимущество Тасэдитора проявляется именно в процессе оптимизации мувика, а к рисованию </span><span class="rvts22">Ввод</span><span class="rvts22">а мышкой нужно просто привыкнуть. Вы наверняка освоитесь с этим уже к концу чтения данного Курса.</span></p>
<p class="rvps10"><span class="rvts22">Существует ещё один способ массовой установки и снятия нажатий. Сначала выделите несколько строк, например, пятую, десятую и двадцатую (для этого нужно зажать </span><span class="rvts34">Ctrl</span><span class="rvts22"> и щёлкнуть по номерам 0000005, 0000010, 0000020). Затем щёлкните по букве "L" в Заголовке Piano Roll. Если на выделенных кадрах не было нажатий кнопки </span><span class="rvts32">L</span><span class="rvts22"> (</span><span class="rvts32">Влево</span><span class="rvts22">), то они там появятся. Если же во всех выделенных кадрах кнопка </span><span class="rvts32">L</span><span class="rvts22"> уже проставлена, щелчок по Заголовку очистит эти нажатия.</span></p>
<p class="rvps10"><span class="rvts22">Позже вы освоите ещё несколько приёмов редактирования </span><span class="rvts22">Ввод</span><span class="rvts22">а, но это основные из них. Поначалу может показаться, что слишком неестественно рисовать кнопочные нажатия мышкой, вместо того чтобы симулировать их нажатиями клавиш на клавиатуре. Однако это чувство дискомфорта вскоре пройдёт, если вы посвятите Тасэдитору несколько дней.</span></p>
<p class="rvps10"><a name="HotChanges"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">При установке нажатий вы должны были заметить, что проставляемые вами буквы различаются по цвету, более того, по мере добавления новых кнопок старые буквы меняют свой цвет от оранжевого к фиолетовому и синему, пока не становятся стандартно-чёрными. Это экспериментальная фича Тасэдитора, созданная для повышения интуитивности ввода. </span><span class="rvts22">Фича называется "Горячие Правки" (Hot Changes). Когда вы вносите изменения в </span><span class="rvts22">Ввод</span><span class="rvts22"> мувика, самые последние нажатия отображаются наиболее горячим цветом (оранжевым). Если после этого вы производите изменения в другом месте мувика (скажем, меняете другую кнопку на этом же кадре или ставите нажатие на другом кадре), то предыдущая правка немного остывает, становясь менее яркой.</span></p>
<p class="rvps10"><span class="rvts22">Таким образом, вы всегда можете по беглому взгляду на Piano Roll догадаться, какие нажатия были установлены недавно, а какие давно. Кроме того, вы сможете увидеть, какие нажатия были недавно удалены (на их месте остаётся чёрточка).</span></p>
<p class="rvps10"><span class="rvts22">При рисовании Ввода вы, должно быть, заметили, что ранее установленные нажатия (буквы) различаются по цвету, и по мере добавления новых кнопок старые меняют свой цвет от оранжевого к фиолетовому и синему, пока не становятся стандартно-чёрными. Это одна из экспериментальных фич Тасэдитора под названием </span><span class="rvts22">"Горячие Правки" (Hot Changes). Она</span><span class="rvts22"> создана для ненавязчивого повышения осведомлённости ТАСера о недавних правках</span><span class="rvts22">. Каждый раз, когда вы вносите изменения в </span><span class="rvts22">Ввод</span><span class="rvts22"> мувика, самые последние нажатия отображаются наиболее горячим цветом (ярко-оранжевым), а все предыдущие правки остывают на одну степень, становясь менее яркими.</span></p>
<p class="rvps10"><span class="rvts22">Благодаря расцветке вы всегда можете по беглому взгляду на Piano Roll догадаться, какие нажатия были установлены недавно, а какие давно. Кроме того, вы сможете увидеть, какие нажатия были недавно удалены (на их месте остаётся чёрточка).</span></p>
<p class="rvps10"><span class="rvts22">Если эта фича вам не нравится, вы сможете её потом отключить, однако в рамках учебного курса мы будем подразумевать, что "горячие правки" у вас подключены.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Узкая колонка перед колонкой с номерами кадров служит не только для перетаскивания Курсора Проигрывателя. В ней ещё отображаются информационные иконки. Г</span><span class="rvts22">олубая стрелка в этом столбце всегда указывает на кадр, где находится Курсор Проигрывателя. Зелёная стрелка показывает место, где находился Курсор Проигрывателя до того, как над ним изменился </span><span class="rvts22">Ввод.</span><span class="rvts22"> А ц</span><span class="rvts22">ифровыми карточками в этой колонке обозначаются Закладки, о них будет рассказано чуть позже.</span></p>
<p class="rvps10"><a name="markers"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Жёлтые прямоугольники под номером некоторых кадров (на картинке это номера 12 и 22) это </span><span class="rvts26">Маркеры</span><span class="rvts22">. Помимо жёлтого цвета о наличии Маркера на этих кадрах говорит и широкий шрифт, которым напечатан номер кадра.</span></p>
<p class="rvps10"><span class="rvts22">Маркеры предназначены для упрощения навигации по мувику, а также для самоорганизации ТАСера. Вы сами выбираете принцип их использования: можете ставить их на начало каждого уровня игры, а можете ставить и на каждый прыжок, выстрел или другое игровое событие, которое имеет свой кадр начала и кадр окончания. С помощью установки Маркеров вы логически разбиваете мувик на блоки, и потом вы сможете мгновенно перемещаться по мувику не только от кадра к кадру, но и от блока к блоку.</span></p>
<p class="rvps10"><span class="rvts22">Структуризация помогает держать в голове более чёткий образ всего мувика. Такой мысленный образ формируется в голове у каждого ТАСера, но обычно он весьма расплывчатый то есть ТАСер помнит примерную последовательность действий, но не помнит детали (зачастую это и не требуется). Когда ТАСер выключает эмулятор, образ начинает постепенно забываться, становится всё более расплывчатым. Поэтому при следующем включении обычно требуется просмотреть текущий мувик с начала, чтобы освежить воспоминания. Иногда это требуется делать даже чаще в зависимости от степени расплывчатости образа. Поэтому рекомендуется закреплять этот образ расстановкой реальных Маркеров.</span></p>
<p class="rvps10"><span class="rvts22">Маркер может быть установлен на любом кадре мувика. В отличие от </span><span class="rvts22">Ввод</span><span class="rvts22">а, Маркеры не влияют на события игры. </span><span class="rvts22">Есть 3 способа для установки Маркеров:</span></p>
<p class="rvps10"><span class="rvts22">Жёлтые отметки на номерах некоторых кадров (на картинке это кадры 12 и 22) называются </span><span class="rvts26">Маркерами</span><span class="rvts22">. Помимо жёлтого цвета о наличии Маркера на этих кадрах говорит и широкий шрифт, которым напечатан номер кадра.</span></p>
<p class="rvps10"><span class="rvts22">Маркеры предназначены для облегчения навигации по мувику, а также для самоорганизации ТАСера. Вы сами выбираете принцип их использования: можете ставить их на начало каждого уровня игры, а можете ставить и на каждый прыжок, выстрел или другое игровое событие. По сути, с помощью установки Маркеров вы логически разбиваете свой мувик на блоки, и потом вы сможете перемещаться по мувику не только от кадра к кадру, но и от блока к блоку. Это позволяет вам видеть мувик на более высоком уровне абстракции.</span></p>
<p class="rvps10"><span class="rvts22">Структуризация помогает держать в голове более чёткий образ всего мувика. Такой мысленный образ существует в голове у каждого ТАСера, но обычно он весьма расплывчатый мы помним примерную последовательность действий, но не помним детали (зачастую это и не требуется). Когда ТАСер выключает эмулятор, образ начинает постепенно забываться, становится всё более расплывчатым. Поэтому при следующем включении обычно требуется просмотреть текущий мувик с начала, чтобы освежить воспоминания, отметить в уме ключевые моменты, расставить приоритеты и в целом морально подготовиться к продолжению ТАСинга. Иногда это требуется делать даже чаще в зависимости от уровня сложности ТАСа. Поэтому рекомендуется закреплять этот образ расстановкой реальных Маркеров не в уме, а прямо в мувике.</span></p>
<p class="rvps10"><span class="rvts22">Маркер может быть установлен на любом кадре. В отличие от </span><span class="rvts22">Ввод</span><span class="rvts22">а, Маркеры не влияют на события игры. </span><span class="rvts22">Есть несколько способов для установки Маркеров:</span></p>
<p class="rvps10"><span class="rvts26">1 способ. </span><span class="rvts22">Сделать двойной щелчок левой кнопкой мыши по номеру кадра. Если на этом кадре не было Маркера, он там появится. Если Маркер уже есть, с зажатой левой кнопкой можно перетаскивать этот Маркер куда угодно, например, переместить его на соседний кадр или вообще выбросить за пределы Piano Roll, тем самым удалив его.</span></p>
<p class="rvps10"><span class="rvts26">2 способ. </span><span class="rvts22">Выделить с помощью щелчков по номерам кадров одну или несколько строк в Piano Roll, а затем щёлкнуть по Заголовку Piano Roll на слово "Frame#". Если среди выделенных строк были строки без Маркеров, то на них будут установлены Маркеры. Если же все выделенные строки содержат Маркеры, все Маркеры с них будут удалены. Таким образом можно массово удалять или устанавливать Маркеры, точно так же, как </span><span class="rvts22">Ввод</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts26">3 способ. </span><span class="rvts22">Выделить один или несколько кадров </span><span class="rvts22">в Piano Roll, затем щ</span><span class="rvts22">ёлкнуть правой кнопкой по любому выделенному номеру кадра и в появившемся меню выбрать пункт "Set Markers" (Установить Маркеры) или "Remove Markers" (Удалить Маркеры). Этот наименее удобный способ, вместо него рекомендуется использовать первый или второй.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Все операции с Маркерами можно откатывать (</span><span class="rvts34">Ctrl + Z</span><span class="rvts22">) точно так же, как и операции с </span><span class="rvts22">Ввод</span><span class="rvts22">ом.</span></p>
<p class="rvps10"><span class="rvts22">Любые операции с Маркерами можно откатывать (</span><span class="rvts34">Ctrl + Z</span><span class="rvts22">) точно так же, как любые операции с </span><span class="rvts22">Ввод</span><span class="rvts22">ом.</span></p>
<p class="rvps10"><span class="rvts22">Маркеры автоматически нумеруются Тасэдитором по порядку их расположения в мувике сверху вниз от первого до последнего. </span><span class="rvts22">В верхнем левом углу окна Тасэдитора вы можете увидеть номер Маркера, под которым в данный момент находится Курсор Проигрывателя (надпись "Marker #" голубого цвета). Эта надпись не только информирует, но и является кнопкой для автоскроллинга. Если вы оставили Курсор Проигрывателя в одной части мувика, а потом проскроллировали Piano Roll подальше от этого курсора, вы всегда можете мгновенно вернуться к голубому курсору, щёлкнув по голубой надписи "Marker" (или быстро нажав клавишу </span><span class="rvts34">Shift</span><span class="rvts22"> дважды). Эта особенность вам неоднократно понадобится в процессе редактирования больших мувиков.</span></p>
<p class="rvps10"><span class="rvts22">Точно такая же надпись-кнопка есть в нижнем левом углу Тасэдитора. Надпись "Marker #" синего цвета (такого же цвета, как и Курсор Выделения) показывает номер Маркера, под которым находится Выделение. При щелчке по этой надписи Piano Roll автоматически прыгает к Выделению. Эта кнопка пригодится вам так же часто, как верхняя. Её клавиатурный аналог двойное нажатие клавиши </span><span class="rvts34">Ctrl</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Легко запомнить, что клавиша </span><span class="rvts34">Shift</span><span class="rvts22"> часто используется для управления Курсором Проигрывателя, а клавиша </span><span class="rvts34">Ctrl</span><span class="rvts22"> для Курсора Выделения.</span></p>
<p class="rvps10"><span class="rvts22">Когда Курсор Проигрывателя и Курсор Выделения находятся под одним и тем же Маркером, номера вверху и внизу будут, естественно, совпадать.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Маркеры не только разделяют мувик на логические блоки, но и содержат текстовые записи (комментарии и рабочие заметки). Текст </span><span class="rvts26">Заметки</span><span class="rvts22"> Маркера отображается сразу же после его номера. В верхнем текстовом поле отображается Заметка Маркера, под которым в данный момент находится Курсор Проигрывателя, а в нижнем текстовом поле отображается Заметка Маркера, под которым находится Курсор Выделения.</span></p>
<p class="rvps10"><span class="rvts22">По умолчанию каждый новый Маркер содержит пустую Заметку. При создании Маркера двойным щелчком нижнее текстовое поле автоматически становится активным, так как Курсор Выделения указывает на кадр с только что созданным Маркером. Поэтому вы сразу же можете напечатать текст Заметки для этого Маркера, а затем продолжить работу с мувиком, </span><span class="rvts22">и</span><span class="rvts22">зменения текста сохранятся автоматически</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">По умолчанию каждый новый Маркер содержит пустую Заметку. При создании Маркера двойным щелчком нижнее текстовое поле автоматически становится активным, так как Курсор Выделения указывает на кадр с только что созданным Маркером. Поэтому вы сразу же можете напечатать текст Заметки для этого Маркера, а затем продолжить работу с мувиком. И</span><span class="rvts22">зменения текста сохранятся автоматически</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Отредактировать Заметку старого Маркера можно любым из следующих способов:</span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps10"><span class="rvts22">установить Курсор Выделения на этот Маркер и щёлкнуть по нижнему текстовому полю, чтобы оно активировалось</span></li>
<li class="rvps10"><span class="rvts22">просто дважды щёлкнуть по уже имеющемуся Маркеру, нижнее поле активируется автоматически</span></li>
<li class="rvps10"><span class="rvts22">установить Курсор Проигрывателя на этот Маркер и щёлкнуть по верхнему текстовому полю, чтобы оно активировалось</span></li>
<li class="rvps10"><span class="rvts22">Установить Курсор Выделения на этот Маркер и щёлкнуть по нижнему текстовому полю, чтобы оно активировалось.</span></li>
<li class="rvps10"><span class="rvts22">Просто дважды щёлкнуть по уже имеющемуся Маркеру, нижнее поле активируется автоматически.</span></li>
<li class="rvps10"><span class="rvts22">Установить Курсор Проигрывателя на этот Маркер и щёлкнуть по верхнему текстовому полю, чтобы оно активировалось.</span></li>
</ul>
<p class="rvps10"><span class="rvts22">Для окончания редактирования нажмите </span><span class="rvts26">Enter</span><span class="rvts22"> или просто щёлкните мышкой по любому постороннему элементу окна TAS Editor. Если вы передумали, нажмите </span><span class="rvts26">Esc</span><span class="rvts22"> для отмены редактирования. Все возможности редактирования Заметок перечислены в </span><a class="rvts38" href="Controls.html#notes">Справочнике</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Рекомендуется вводить хотя бы односложную Заметку, чтобы не забыть, зачем здесь был поставлен этот Маркер. Это не отнимет много времени, если устанавливать Маркеры двойным щелчком и вводить короткие сообщения. Зачастую даже не придётся отрывать руку от мыши.</span></p>
<p class="rvps10"><span class="rvts22">Когда вы печатаете текст Заметки, для завершения редактирования нажмите </span><span class="rvts26">Enter</span><span class="rvts22"> или просто щёлкните мышкой по любому постороннему элементу окна TAS Editor. Если вы передумали, нажмите </span><span class="rvts26">Esc</span><span class="rvts22"> для отмены редактирования. Все возможности редактирования Заметок перечислены в </span><a class="rvts38" href="Controls.html#notes">Справочнике</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Рекомендуется вводить хотя бы односложную Заметку при создании Маркеров, чтобы не забыть, зачем здесь был поставлен этот Маркер. Это не отнимет много времени, если устанавливать Маркеры двойным щелчком и вводить лаконичные сообщения в ту же секунду.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps17"><a class="rvts24" href="Toolbox.html">Описание Панели инструментов</a></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>

View File

@ -203,12 +203,12 @@
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts23">Config -&gt; Bind Markers to Input</span></p>
<p class="rvps10"><span class="rvts22">Привязывает Маркеры к </span><span class="rvts22">Ввод</span><span class="rvts22">у. Если галочка установлена, то функции редактирования </span><span class="rvts22">Ввод</span><span class="rvts22">а оказывают также влияние и на Маркеры. Например, вставка пустых кадров сдвигает вниз не только нижестоящий </span><span class="rvts22">Ввод</span><span class="rvts22">, но и все нижестоящие Маркеры.</span></p>
<p class="rvps10"><span class="rvts22">Обычно Маркеры устанавливаются на определённые события, происходящие в игре. Когда ТАСер улучшает свой предыдущий результат и доходит до этого места в игре быстрее, чем раньше, то соответствующий Маркер (установленный ещё при первой попытке) должен теперь указывать на более ранний кадр. Нередко приходится перетаскивать его вручную. Но благодаря привязке Маркеры самостоятельно смещаются при внесении изменений в </span><span class="rvts22">Ввод, и ручная</span><span class="rvts22"> перестановка Маркеров в этом случае требуется крайне редко.</span></p>
<p class="rvps10"><span class="rvts22">Обычно Маркеры устанавливаются на определённые события, происходящие в игре. Когда ТАСер улучшает свой предыдущий результат и доходит до этого места в игре быстрее, чем раньше, то соответствующий Маркер (установленный ещё при первой попытке) должен теперь указывать на более ранний кадр. Иногда приходится перетаскивать его вручную. Но благодаря привязке Маркеры самостоятельно смещаются при внесении изменений в </span><span class="rvts22">Ввод, и ручная</span><span class="rvts22"> перестановка Маркеров в этом случае требуется крайне редко.</span></p>
<p class="rvps10"><span class="rvts22">При переборе вариантов прохождения участка имеет смысл работать с отвязанными Маркерами, чтобы Маркер, специально установленный в конце участка, всегда оставался на кадре, который требуется обогнать. Впрочем, в такой ситуации вместо Маркера предпочтительнее использовать Закладку.</span></p>
<p class="rvps10"><span class="rvts22">Также о</span><span class="rvts22">твязанные Маркеры &nbsp;могут понадобиться в случаях, когда требуется изменить </span><span class="rvts22">Ввод</span><span class="rvts22">, не трогая находящиеся на этих же кадрах Маркеры. Например, когда нужно удалить часть </span><span class="rvts22">Ввод</span><span class="rvts22">а, оставив старые Маркеры на своих местах.</span></p>
<p class="rvps10"><span class="rvts22">А при пересинхронизации участков удобно привязать Маркеры к Вводу, чтобы сосредоточиться только на синхронизации Ввода. Например, из-за найденного улучшения в первом уровне игры вам придётся передвинуть весь Ввод второго уровня на дюжину кадров вверх. Благодаря привязке Маркеры также сдвинутся на дюжину кадров вверх, встав на соответствующие события второго уровня.</span></p>
<p class="rvps10"><span class="rvts22">По умолчанию галочка установлена. Рекомендуется большую часть времени работать с привязанными Маркерами, при необходимости отвязывая их.</span></p>
<p class="rvps10"><span class="rvts22">Для удобства пользователя Тасэдитор подсвечивает привязанные Маркеры в Piano Roll более бледным жёлтым цветом, а отвязанные более насыщенным жёлтым.</span></p>
<p class="rvps10"><span class="rvts22">Для удобства Тасэдитор подсвечивает привязанные Маркеры в Piano Roll более бледным жёлтым цветом, а отвязанные более насыщенным жёлтым.</span></p>
<p class="rvps10"><a name="EmptynewMarkerNotes"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts23">Config -&gt; Empty new Marker Notes</span></p>

View File

@ -56,7 +56,7 @@
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps10"><span class="rvts22">В этой главе описывается интерфейс программы и способы взаимодействия с ней.</span></p>
<p class="rvps10"><span class="rvts22">При описании используется множество специфических терминов, так что перед началом изучения рекомендуется прочесть </span><a class="rvts33" href="Glossary.html">Глоссарий</a><span class="rvts22">. </span><span class="rvts22">Также желательно запустить Тасэдитор прямо сейчас и всё время проверять описываемое на практике, параллельно с чтением.</span></p>
<p class="rvps10"><span class="rvts22">При описании используется множество специфических терминов, так что перед началом чтения убедитесь, что вам знаком ТАСерский </span><a class="rvts33" href="Glossary.html">Глоссарий</a><span class="rvts22">. </span><span class="rvts22">Также желательно запустить Тасэдитор прямо сейчас, и всё время проверять описываемое на практике, параллельно с чтением.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Для входа в Тасэдитор нужно проделать следующее:</span></p>
<ol style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
@ -73,15 +73,15 @@
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Размер окна Тасэдитора можно изменять, перетаскивая границы окна с помощью мыши. Выбранный пользователем размер и положение окна запоминается при выходе из эмулятора и восстанавливается при следующем запуске программы.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">В заголовке окна отображается имя программы (TAS Editor) и имя текущего проекта. </span><span class="rvts22">Если в проекте имеются несохранённые изменения, в конце этой надписи отображается звёздочка. </span><span class="rvts22">Кроме того, в режиме Записи Ввода в заголовке окна появляется слово "Recording".</span></p>
<p class="rvps10"><span class="rvts22">В заголовке окна отображается имя программы ("TAS Editor") и имя текущего проекта. </span><span class="rvts22">Если в проекте имеются несохранённые изменения, в конце этой надписи отображается звёздочка. </span><span class="rvts22">Кроме того, в режиме Записи Ввода в заголовке окна появляется слово "Recording".</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Меню программы такое же, как в текстовых редакторах типа Notepad.</span></p>
<p class="rvps10"><span class="rvts22">Пункт меню </span><span class="rvts26">File</span><span class="rvts22"> отвечает за все файловые операции Тасэдитора создание нового проекта, открытие существующего файла, сохранение на диск, импорт и экспорт данных. Также в этом пункте есть подменю "Recent", в котором запоминаются пути к недавно использованным проектам, это можно использовать для быстрой загрузки последнего проекта.</span></p>
<p class="rvps10"><span class="rvts22">Пункт меню </span><span class="rvts26">File</span><span class="rvts22"> отвечает за все файловые операции Тасэдитора создание нового проекта, открытие существующего файла, сохранение на диск, импорт и экспорт данных. Также в этом пункте есть подменю "Recent", в котором запоминаются пути к недавно использованным проектам.</span></p>
<p class="rvps10"><span class="rvts22">В пункте меню </span><span class="rvts26">Edit</span><span class="rvts22"> содержатся функции, позволяющие редактировать мувик так, как если бы он был обычным текстовым или табличным файлом. Большинство этих функций можно вызывать стандартными комбинациями клавиш, такими как </span><span class="rvts34">Ctrl + C</span><span class="rvts22">, </span><span class="rvts34">Ctrl + V</span><span class="rvts22"> и т.д. Они будут рассмотрены далее.</span></p>
<p class="rvps10"><span class="rvts22">С помощью пункта меню </span><span class="rvts26">View</span><span class="rvts22"> можно настроить внешний вид программы. Кроме того, через этот пункт открывается окно "Find Note", предназначенное для поиска текста в Заметках, об этом будет рассказано позже. Пока вы не прочитали </span><a class="rvts35" href="ProgramCustomization.html">5 главу</a><span class="rvts22"> этого учебного курса, рекомендуется не менять настройки, выставленные по умолчанию.</span></p>
<p class="rvps10"><span class="rvts22">В пункте меню </span><span class="rvts26">Config</span><span class="rvts22"> находятся все остальные настройки программы такие как таймер автоматического сохранения проекта, количество уровней отката и другие возможности, назначение которых будет раскрыто по ходу обучения. Для начала рекомендуется не менять эти настройки.</span></p>
<p class="rvps10"><span class="rvts22">Наконец, пункт меню </span><span class="rvts26">Help</span><span class="rvts22"> содержит ссылку на данное Руководство и диалог "О программе" (About). Кроме того, в меню Help вы можете отключить/включить всплывающие подсказки.</span></p>
<p class="rvps10"><span class="rvts22">С правой стороны этого меню отдельно располагается пункт </span><span class="rvts26">Pattern</span><span class="rvts22">, показывающий название текущего шаблона. Шаблоны представляют собой заготовленные последовательности нажатий и отпусканий для одной кнопки. Их использование позволяет в некоторых случаях ускорить создание </span><span class="rvts22">Ввод</span><span class="rvts22">а. Подробнее о шаблонах будет рассказано в </span><a class="rvts36" href="AdvancedFeatures.html">6 главе</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">С правой стороны этого меню отдельно располагается пункт </span><span class="rvts26">Pattern</span><span class="rvts22">, показывающий название текущего шаблона. Шаблоны это просто заготовленные образцы для ускорения создания </span><span class="rvts22">Ввод</span><span class="rvts22">а. Подробнее о них будет рассказано в </span><a class="rvts36" href="AdvancedFeatures.html#UsingPatterns">6 главе</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<div class="rvps10"><table width="100%" border="0" cellpadding="0" cellspacing="0" style="border-width: 0px;">
<tr valign="top">
@ -91,7 +91,7 @@
<tr valign="top">
<td><p class="rvps10"><span class="rvts22">Всё содержимое окна Тасэдитора можно разделить на две части рабочее пространство (Piano Roll) слева, панель инструментов (Toolbox) справа.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps17"><a class="rvts24" href="PianoRoll.html">Описание Piano Roll</a></p>
<p class="rvps17"><a class="rvts24" href="PianoRoll.html">Перейти к описанию Piano Roll</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
</td>

View File

@ -69,7 +69,7 @@
<p class="rvps10"><a class="rvts24" href="FAQ.html">Ответы на вопросы</a></p>
<p class="rvps12"><span class="rvts25">Подборка вероятных вопросов и ответов на них</span></p>
<p class="rvps10"><span class="rvts24"><br/></span></p>
<p class="rvps10"><a class="rvts24" href="SpeedrunnersSynopsis.html">Конспект спидраннера</a></p>
<p class="rvps10"><a class="rvts24" href="SpeedrunningSynopsis.html">Конспект спидраннера</a></p>
<p class="rvps12"><span class="rvts25">Свод типовых задач при поиске кратчайшего пути на участках</span></p>
<p class="rvps12"><span class="rvts25"><br/></span></p>
<p class="rvps12"><span class="rvts25"><br/></span></p>

View File

@ -1,143 +0,0 @@
<html>
<head>
<title>Конспект спидраннера</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.6.0.345">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "index.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("SpeedrunnersSynopsis");
}
</script>
</head>
<body>
<div id="topic_header">
<div id="topic_header_content">
<h1>Конспект спидраннера</h1>
<div id="topic_breadcrumb">
<a href="Reference.html">Справочник</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Reference.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="FAQ.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="TASEditorInside.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p><span class="rvts20">Конспект спидраннера</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps10"><span class="rvts22">Создание спидранов является наиболее простым видом ТАСинга, и его основные приёмы давно изучены. Здесь приводится классификация типовых задач спидраннера, возникающих во время шлифовки Ввода на участках. Перед чтением этого раздела рекомендуется усвоить материалы </span><a class="rvts28" href="TASingProcess.html">Процесс ТАСинга</a><span class="rvts22"> и </span><a class="rvts28" href="TASingMethodology.html">Методология ТАСинга</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">При создании спидрана необходимо находить кратчайший способ прохождения каждого участка игры. Процесс поиска заключается в тестировании множества вариантов прохождения участка и выборе самого лучшего варианта.</span></p>
<p class="rvps10"><span class="rvts22">Для ускорения этого процесса обычно сравниваются между собой только два варианта: </span><span class="rvts26">новый</span><span class="rvts22"> рабочий вариант и наилучший </span><span class="rvts26">старый</span><span class="rvts22"> вариант, а все остальные старые варианты забываются (впрочем, некоторые любопытные варианты можно сохранить в Закладки) .</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Самый лучший из всех ранее протестированных (старых) вариантов может храниться:</span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><span class="rvts22">в Закладках рекомендуется</span></li>
<li class="rvps15"><span class="rvts22">в Журнале Истории автоматически</span></li>
<li class="rvps15"><span class="rvts22">в памяти ТАСера не рекомендуется</span></li>
</ul>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Когда новый рабочий вариант оказывается лучше (оптимальнее) наилучшего старого, автоматически подразумевается, что он лучше всех остальных старых вариантов, поэтому этот рабочий вариант становится наилучшим. В случае использования Закладок следует сохранить новый вариант в тот же слот, где хранился наилучший старый вариант.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Критерием оптимальности может быть:</span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><span class="rvts22">наличие/отсутствие требуемого события в новом и старом варианте </span><span class="rvts70">(bool)</span></li>
<li class="rvps15"><span class="rvts22">время наступления целевого события в новом и старом варианте </span><span class="rvts70">(int)</span></li>
<li class="rvps15"><span class="rvts22">состояние игры на одном и том же кадре нового и старого мувика </span><span class="rvts70">(string)</span></li>
</ul>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Соответственно, при сравнении двух вариантов требуется делать одно из трёх:</span></p>
<p class="rvps15"><a class="rvts28" href="SpeedrunnersSynopsis.html#CompareEvent">1. Сравнивать наличие/отсутствие требуемого события.</a></p>
<p class="rvps27"><a class="rvts61" href="SpeedrunnersSynopsis.html#CompareEvent-A">А. По памяти</a></p>
<p class="rvps27"><a class="rvts61" href="SpeedrunnersSynopsis.html#CompareEvent-B">B. С помощью Закладок</a></p>
<p class="rvps15"><a class="rvts28" href="SpeedrunnersSynopsis.html#CompareTime">2. Сравнивать время наступления целевого события.</a></p>
<p class="rvps27"><a class="rvts61" href="SpeedrunnersSynopsis.html#CompareTime-A">A. По памяти</a></p>
<p class="rvps27"><a class="rvts61" href="SpeedrunnersSynopsis.html#CompareTime-B">B. С помощью зелёной стрелки</a></p>
<p class="rvps27"><a class="rvts61" href="SpeedrunnersSynopsis.html#CompareTime-C">C. С помощью Маркера</a></p>
<p class="rvps27"><a class="rvts61" href="SpeedrunnersSynopsis.html#CompareTime-D">D. С помощью Закладок</a></p>
<p class="rvps15"><a class="rvts28" href="SpeedrunnersSynopsis.html#CompareState">3. Сравнивать состояние игры на одном и том же кадре</a></p>
<p class="rvps27"><a class="rvts61" href="SpeedrunnersSynopsis.html#CompareState-A">А. По памяти</a></p>
<p class="rvps27"><a class="rvts61" href="SpeedrunnersSynopsis.html#CompareState-B">B. С помощью Закладок</a></p>
<p class="rvps10"><a name="CompareEvent"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">1. Сравнивать наличие/отсутствие требуемого события.</span></p>
<p class="rvps10"><span class="rvts22">Выигрывает вариант, где требуемое событие происходит в рамках текущего участка (а вредное событие, соответственно, не происходит). Обычно появление требуемого события это всего лишь первый этап при создании Ввода на участке, а следующим этапом будут попытки ускорить момент появления этого события.</span></p>
<p class="rvps10"><span class="rvts22">Перебор вариантов проходит до первого успешного варианта, либо пока не надоест.</span></p>
<p class="rvps10"><span class="rvts22">Аналогия с программированием: сравнение двух Boolean (переменная логического типа), сравнение двух массивов Boolean.</span></p>
<p class="rvps10"><a name="CompareEvent-A"></a>
<span class="rvts22">A. Для большинства участков подходит простое запоминание того факта, что требуемого события пока не удалось добиться. Пример: </span><a class="rvts28" href="SemiautomaticTASing.html#FindStartButtonPress">нажатие кнопки </a><a class="rvts71" href="SemiautomaticTASing.html#FindStartButtonPress">Start</a><span class="rvts22">.</span></p>
<p class="rvps10"><a name="CompareEvent-B"></a>
<span class="rvts22">B. Если требуемое событие является комплексным (например, требуется одновременно подстрелить нескольких врагов), рекомендуется в процессе перебора вариантов сохранять в Закладки те варианты, где требуемое событие выполнилось хотя бы частично (например, игрок подстрелил одновременно двух врагов из трёх). Если в конце концов требуемого события так и не удастся добиться, может сгодиться и такой частичный успех.</span></p>
<p class="rvps10"><a name="CompareTime"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">2. Сравнивать время наступления целевого события.</span></p>
<p class="rvps10"><span class="rvts22">Выигрывает вариант, где целевое событие наступает раньше всего. Время наступления целевого события определяется кадром, перед которым целевого события в игре ещё не было, а на этом кадре оно уже есть. Номер этого кадра определяется при наведении на него Курсора Проигрывателя и просмотре экорана FCEUX.</span></p>
<p class="rvps10"><span class="rvts22">Перебор вариантов проходит до тех пор, пока не надоест.</span></p>
<p class="rvps10"><span class="rvts22">Аналогия с программированием: сравнение двух целых чисел.</span></p>
<p class="rvps10"><a name="CompareTime-A"></a>
<span class="rvts22">A. Для простейших участков и подучастков бывает достаточно запомнить лучший номер кадра в уме и сравнивать все последующие номера с этим числом. Для более-менее сложных участков такое не рекомендуется. Подробнее: </span><a class="rvts28" href="TASingProcess.html#EndOfSegment">Процесс ТАСинга</a><span class="rvts22">.</span></p>
<p class="rvps10"><a name="CompareTime-B"></a>
<span class="rvts22">B. Для несложных участков можно воспользоваться зелёной стрелкой. Для этого нужно после просмотра каждого варианта оставлять Курсор Проигрывателя на кадре целевого события. Если новый кадр целевого события находится выше зелёной стрелки, то новый вариант лучше предыдущего варианта. Подробнее: </span><a class="rvts28" href="NonlinearTASing.html#GreenArrow">Методология ТАСинга</a><span class="rvts22">.</span></p>
<p class="rvps10"><a name="CompareTime-C"></a>
<span class="rvts22">C. Для участков средней и высокой сложности используйте Маркеры, отвязанные от Ввода. При каждом смещении целевого события во времени нужно вручную перетаскивать соответствующий Маркер. Если новый кадр целевого события находится выше Маркера, то новый вариант лучше наилучшего старого. Подробнее: </span><a class="rvts28" href="ProgramCustomization.html#BindMarkerstoInput">Настройка программы</a><span class="rvts22">.</span></p>
<p class="rvps10"><a name="CompareTime-D"></a>
<span class="rvts22">D. Для участков средней и высокой сложности используйте Закладки, отображаемые в столбце иконок Piano Roll. Если новый кадр целевого события находится выше иконки Закладки, то новый вариант лучше старого варианта из этой Закладки, и вам следует установить эту Закладку на этот новый кадр, сделав быстрый сэйв.</span></p>
<p class="rvps10"><a name="CompareState"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">3. Сравнивать состояние игры на одном и том же кадре.</span></p>
<p class="rvps10"><span class="rvts22">Выигрывает вариант, в котором у игры в целом более выгодные характеристики. Этот тип сравнений рекомендуется использовать для оценки сложных и многогранных игровых ситуаций. Например, в гонке Формула-1 цель найти оптимальный баланс между максимальным продвижением вперёд и минимальной изношенностью шин.</span></p>
<p class="rvps10"><span class="rvts22">Перебор вариантов проходит до тех пор, пока не надоест.</span></p>
<p class="rvps10"><span class="rvts22">Аналогия с программированием: сравнение двух строк, сравнение двух массивов целых чисел.</span></p>
<p class="rvps10"><a name="CompareState-A"></a>
<span class="rvts22">A. Для простых участков бывает достаточно запомнить некоторые характеристики состояния игры, достигнутого в наилучшем варианте прохождения участка. При просмотре новых вариантов Курсор Проигрывателя всегда останавливается на том же самом кадре, и в окне FCEUX и в Memory Watch отображаются новые значения интересующих характеристик. Если некоторые характеристики оказались лучше, а некоторые хуже, то требуется взвесить их в уме (или использовать обобщающую Lua-формулу) и решить, стал ли новый вариант в целом лучше, чем старый. Если решено, что новый вариант лучше, необходимо запомнить его характеристики вместо характеристик предыдущего наилучшего варианта. Однако, когда таких характеристик больше, чем одно число, рекомендуется не полагаться на память, а использовать Закладки. Пример: </span><a class="rvts28" href="NonlinearTASing.html#LuckManipulation">манипуляция удачей</a><span class="rvts22">.</span></p>
<p class="rvps10"><a name="CompareState-B"></a>
<span class="rvts22">B. Для участков средней и высокой сложности, а также для гигантских участков (размером с целый уровень игры) используйте Закладки, хранящие альтернативные ответвления мувика. Наилучший вариант сохраняется в один слот, а тестируемые варианты сохраняются в другой слот. После этого можно легко переключаться между этими слотами и сравнивать значения каждой существенной характеристики. Кроме того, можно наводить курсор мыши на соответствующие Закладки в Списке Закладок или Дереве ответвлений, чтобы видеть скриншоты состояний игры и сравнивать характеристики визуально. Также можно не сохранять текущий вариант в Закладку, а визуально сравнивать текущее изображение в окне FCEUX со скриншотом наилучшего варианта прохождения участка. Для отображения ячеек памяти на скриншотах рекомендуется использовать Lua-вывод, тогда окно Memory Watch не понадобится, и об оптимальности можно будит судить по скриншотам. Подробнее: </span><a class="rvts28" href="ProgramCustomization.html#DisplayBranchScreenshots">Настройка программы</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">После нахождения самого быстрого варианта прохождения ТАСер может дополнительно улучшить участок, добавив немного развлекательности в игровые события. Критерии оптимальности при этом могут быть самыми разными, но время прохождения участка должно оставаться без изменений.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps8"><span class="rvts18">Created with the Personal Edition of HelpNDoc: </span><a class="rvts19" href="http://www.helpndoc.com/help-authoring-tool">Single source CHM, PDF, DOC and HTML Help creation</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
Copyright &copy; 2011-2012 АнС</div>
</div>
</body>
</html>

View File

@ -0,0 +1,162 @@
<html>
<head>
<title>Конспект спидраннера</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.6.0.345">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "index.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("SpeedrunningSynopsis");
}
</script>
</head>
<body>
<div id="topic_header">
<div id="topic_header_content">
<h1>Конспект спидраннера</h1>
<div id="topic_breadcrumb">
<a href="Reference.html">Справочник</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Reference.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="FAQ.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="TASEditorInside.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p><span class="rvts20">Конспект спидраннера</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps10"><span class="rvts22">Благодаря наличию однозначной цели, создание спидранов является наиболее простым видом ТАСинга, и соответствующие приёмы хорошо изучены. Здесь приводится классификация типовых задач спидраннера, возникающих во время шлифовки Ввода. Перед чтением этого раздела рекомендуется усвоить материалы </span><a class="rvts28" href="TASingProcess.html">Процесс ТАСинга</a><span class="rvts22"> и </span><a class="rvts28" href="TASingMethodology.html">Методология ТАСинга</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">В целом, при создании спидрана необходимо находить кратчайший способ прохождения каждого участка игры. Процесс поиска заключается в тестировании множества вариантов прохождения участка и выборе самого лучшего варианта. Здесь мы обсудим только проблему выбора.</span></p>
<p class="rvps10"><span class="rvts22">Для упрощения задачи ТАСеры обычно сравнивают между собой только два варианта: </span><span class="rvts26">новый рабочий</span><span class="rvts22"> вариант и </span><span class="rvts26">наилучший старый</span><span class="rvts22"> вариант, а все остальные старые варианты сразу забывают (впрочем, некоторые любопытные варианты всегда можно сохранить в Закладки).</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Самый лучший из всех старых (ранее протестированных) вариантов может храниться:</span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><span class="rvts22">в Закладках рекомендуется</span></li>
<li class="rvps15"><span class="rvts22">в Журнале Истории автоматически, но временно</span></li>
<li class="rvps15"><span class="rvts22">в памяти ТАСера не рекомендуется</span></li>
</ul>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Когда новый рабочий вариант оказывается лучше (оптимальнее) наилучшего старого, автоматически подразумевается, что он лучше всех остальных старых вариантов, поэтому этот рабочий вариант становится наилучшим. В случае использования Закладок следует пересохранить новый вариант в тот же слот, где хранился наилучший старый вариант. По окончании поиска содержимое этого слота загружается в финальный мувик.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Критерии оптимальности в спидранах:</span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><span class="rvts22">наличие/отсутствие определённого события в новом и старом варианте </span><span class="rvts71">(bool)</span></li>
<li class="rvps15"><span class="rvts22">время наступления целевого события в новом и старом варианте </span><span class="rvts71">(int)</span></li>
<li class="rvps15"><span class="rvts22">состояние игры на одном и том же кадре нового и старого мувика </span><span class="rvts71">(string)</span></li>
</ul>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Соответственно, при сравнении двух вариантов вы делаете одно из трёх:</span></p>
<p class="rvps15"><a class="rvts28" href="SpeedrunningSynopsis.html#CompareEvent">1. &nbsp;Сравнение наличия/отсутствия события.</a></p>
<p class="rvps27"><a class="rvts62" href="SpeedrunningSynopsis.html#CompareEvent-A">А. По памяти</a></p>
<p class="rvps27"><a class="rvts62" href="SpeedrunningSynopsis.html#CompareEvent-B">B. С помощью Закладок</a></p>
<p class="rvps15"><a class="rvts28" href="SpeedrunningSynopsis.html#CompareTime">2. Сравнение времени наступления события.</a></p>
<p class="rvps27"><a class="rvts62" href="SpeedrunningSynopsis.html#CompareTime-A">A. По памяти</a></p>
<p class="rvps27"><a class="rvts62" href="SpeedrunningSynopsis.html#CompareTime-B">B. С помощью зелёной стрелки</a></p>
<p class="rvps27"><a class="rvts62" href="SpeedrunningSynopsis.html#CompareTime-C">C. С помощью Маркера</a></p>
<p class="rvps27"><a class="rvts62" href="SpeedrunningSynopsis.html#CompareTime-D">D. С помощью Закладок</a></p>
<p class="rvps15"><a class="rvts28" href="SpeedrunningSynopsis.html#CompareState">3. Сравнение состояния игры на одном и том же кадре.</a></p>
<p class="rvps27"><a class="rvts62" href="SpeedrunningSynopsis.html#CompareState-A">А. По памяти</a></p>
<p class="rvps27"><a class="rvts62" href="SpeedrunningSynopsis.html#CompareState-B">B. С помощью Закладок</a></p>
<p class="rvps27"><span class="rvts47"><br/></span></p>
<p class="rvps10"><a name="CompareEvent"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts26">1. Сравнение наличия/отсутствия события.</span></p>
<p class="rvps10"><span class="rvts22">Выигрывает вариант, где требуемое событие происходит в рамках текущего участка (а вредное событие, соответственно, не происходит). Появление требуемого события это всего лишь первый (и зачастую лёгкий) этап при создании Ввода, а следующим этапом будут попытки ускорить момент появления этого события.</span></p>
<p class="rvps10"><span class="rvts31">Перебор вариантов продолжается до первого успешного варианта, либо пока не надоест (тогда событие признаётся недостижимым).</span></p>
<p class="rvps10"><span class="rvts22">Аналогия с программированием: сравнение двух Boolean (переменная логического типа), сравнение двух массивов Boolean.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="CompareEvent-A"></a>
<span class="rvts22">A. В большинстве случаев подходит простое понимание того факта, что требуемого события не удалось добиться в прошлых вариантах. Пример: </span><a class="rvts28" href="SemiautomaticTASing.html#FindStartButtonPress">нажатие кнопки </a><a class="rvts72" href="SemiautomaticTASing.html#FindStartButtonPress">Start</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="CompareEvent-B"></a>
<span class="rvts22">B. Если целевое событие является комплексным (например, планируется одновременно подстрелить трёх врагов), рекомендуется в процессе перебора вариантов сохранять в Закладки те варианты, где требуемое событие выполнилось хотя бы частично (например, подстрелили двух врагов одновременно, а третьего позже). Если в конце концов целевое события окажется недостижимым, может сгодиться и такой частичный успех.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="CompareTime"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts26">2. Сравнение времени наступления события.</span></p>
<p class="rvps10"><span class="rvts22">Выигрывает вариант, где целевое событие наступает раньше. Время наступления целевого события определяется кадром, перед которым целевого события в игре ещё не было, а на этом кадре оно уже есть. Номер этого кадра определяется при наведении на него Курсора Проигрывателя и просмотре экрана FCEUX (или Memory Watch) для подтверждения.</span></p>
<p class="rvps10"><span class="rvts31">Перебор вариантов продолжается до тех пор, пока не надоест, либо пока не исчерпаются все возможные типы вариантов (тогда текущий лучший вариант признаётся идеальным (frame perfect), пока не обнаружены новые факторы).</span></p>
<p class="rvps10"><span class="rvts22">Аналогия с программированием: сравнение двух целых чисел.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="CompareTime-A"></a>
<span class="rvts22">A. Для простейших участков и маленьких подучастков бывает достаточно запомнить лучший номер кадра в уме и сравнивать результаты новых вариантов с этим числом. Но в целом полагаться на человеческую память не рекомендуется. Подробнее: </span><a class="rvts28" href="TASingProcess.html#EndOfSegment">Процесс ТАСинга</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="CompareTime-B"></a>
<span class="rvts22">B. На несложных участках можно сверяться с зелёной стрелкой Тасэдитора. При её использовании подразумевается, что вы каждый раз оставляете Курсор Проигрывателя на кадре целевого события (это естественное поведение). Поэтому, если новый кадр целевого события находится выше зелёной стрелки, то новый вариант быстрее предыдущего. Подробнее: </span><a class="rvts28" href="NonlinearTASing.html#GreenArrow">Методология ТАСинга</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="CompareTime-C"></a>
<span class="rvts22">C. На сложных участках используйте отвязанный Маркер, который будет всегда указывать на текущий лучший номер кадра в Piano Roll. При каждом улучшении старого результата этот Маркер вручную перетаскивается повыше. Поэтому, если новый кадр целевого события находится выше Маркера, то новый вариант быстрее наилучшего старого. Подробнее: </span><a class="rvts28" href="ProgramCustomization.html#BindMarkerstoInput">Настройка программы</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="CompareTime-D"></a>
<span class="rvts22">D. На участках любой степени сложности рекомендуется использовать Закладки, отображаемые в столбце иконок Piano Roll. При каждом улучшении старого результата текущий вариант вручную сохраняется в ту же Закладку, замещая собой наилучший старый вариант. Поэтому, если новый кадр целевого события находится выше иконки Закладки, то новый вариант быстрее наилучшего старого.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="CompareState"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts26">3. Сравнение состояния игры на одном и том же кадре.</span></p>
<p class="rvps10"><span class="rvts22">Выигрывает вариант, в котором у игры в целом более выгодные характеристики. Этот тип сравнений актуально использовать для оценки сложных и многогранных игровых ситуаций. Например, в гонках Формула-1 приходится заботиться одновременно и о скорости, и о минимальной изношенности шин, поэтому на каждом участке трассы нужно искать оптимальный баланс, а не просто торопиться.</span></p>
<p class="rvps10"><span class="rvts22">Здесь у участка есть чётко определённый кадр окончания, и каждый новый тест должен проиграть участок до этого кадра. Тасэдитор запоминает номер этого кадра в виде зелёной стрелки, которая автоматически останавливает эмуляцию при просмотре новых вариантов. Так что от ТАСера требуется только изменять Ввод (создавая новые варианты), запускать просмотр, дожидаться остановки и оценивать результат (по экрану FCEUX или Memory Watch).</span></p>
<p class="rvps10"><span class="rvts31">Перебор вариантов продолжается до тех пор, пока не надоест, либо пока не исчерпаются все возможные типы вариантов (тогда текущий лучший вариант признаётся идеальным, пока не обнаружены новые факторы).</span></p>
<p class="rvps10"><span class="rvts22">Аналогия с программированием: сравнение двух строк, сравнение двух массивов целых чисел.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="CompareState-A"></a>
<span class="rvts22">A. Для простых участков бывает достаточно запомнить значение главной характеристики состояния игры, достигнутого в наилучшем варианте прохождения участка. Это значение сравнивается с характеристиками нового состояния игры, достигнутого в конце просмотра нового варианта. Если решено, что новое значение лучше, необходимо запомнить его вместо старого. Пример: </span><a class="rvts28" href="NonlinearTASing.html#LuckManipulation">манипуляция удачей</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Когда важных характеристик больше, чем одна, рекомендуется не полагаться на человеческую память.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a name="CompareState-B"></a>
<span class="rvts22">B. На участках средней и высокой сложности, а особенно на гигантских участках (размером с целый уровень игры) используйте Закладки, хранящие альтернативные ответвления мувика. Наилучший вариант прохождения участка сохраняется в один слот, а новый тестируемый вариант сохраняется в другой слот. После этого можно легко переключаться между этими слотами и сравнивать значения каждой характеристики состояния игры. Кроме того, можно наводить курсор мыши на соответствующие Закладки, чтобы видеть скриншоты состояний игры и визуально сравнивать их характеристики с текущим изображением на экране FCEUX.</span></p>
<p class="rvps10"><span class="rvts22">Для отображения ячеек памяти на скриншотах рекомендуется использовать Lua-вывод на экран, тогда окно Memory Watch не понадобится, и об оптимальности можно будет успешно судить по одним скриншотам. Подробнее: </span><a class="rvts28" href="ProgramCustomization.html#DisplayBranchScreenshots">Настройка программы</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">В ситуации, когда некоторые характеристики в новом варианте оказались лучше, а некоторые хуже, требуется хорошенько взвесить их все (в уме, или используя обобщающую Lua-формулу) и решить, какое состояние игры лучше.</span></p>
<p class="rvps10"><span class="rvts22">При каждом улучшении старого результата новый вариант вручную сохраняется в ту же Закладку, замещая собой наилучший старый вариант.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">После нахождения самого быстрого варианта прохождения участка ТАСер может дополнительно улучшить его, добавив немного развлекательности в игровые события. Критерии оптимальности при этом могут быть самыми разными, но при этом время прохождения участка должно оставаться без изменений.</span></p>
<p class="rvps10"><span class="rvts22">А можно отложить процесс облагораживания участка на будущее и сразу перейти к следующему участку.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps8"><span class="rvts18">Created with the Personal Edition of HelpNDoc: </span><a class="rvts19" href="http://www.helpndoc.com/help-authoring-tool">Single source CHM, PDF, DOC and HTML Help creation</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
Copyright &copy; 2011-2012 АнС</div>
</div>
</body>
</html>

View File

@ -39,7 +39,7 @@
</div>
<div id="topic_header_nav">
<a href="SpeedrunnersSynopsis.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="SpeedrunningSynopsis.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Ideas.html"><img src="img/arrow_right.png" alt="Next"/></a>
@ -51,21 +51,21 @@
<p><span class="rvts20">TAS Editor изнутри</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps10"><span class="rvts22">В этом разделе описываются все идеи, заложенные в основу Тасэдитора, а также раскрываются некоторые детали итоговой реализации TAS Editor 1.0. Для получения полной информации об алгоритмах, используемых в Тасэдиторе, вы можете изучить его исходники на языке C++.</span></p>
<p class="rvps10"><span class="rvts22">Тасэдитор является программой с открытым исходным кодом (open source). Он распространяется по лицензии </span><a class="rvts28" href="http://ru.wikipedia.org/wiki/MIT_License" target="_blank">MIT</a><span class="rvts22">, которая позволяет любому человеку как угодно распоряжаться исходным кодом. Выбор лицензии обусловлен желанием поощрить модификацию и портирование Тасэдитора на другие платформы.</span></p>
<p class="rvps10"><span class="rvts22">Загрузить исходные коды эмулятора FCEUX 2.1.6 со встроенным Тасэдитором вы можете из официального SVN-репозитория: </span><a class="rvts28" href="http://sourceforge.net/p/fceultra/code/" target="_blank">http://sourceforge.net/p/fceultra/code/</a></p>
<p class="rvps10"><span class="rvts22">В этом разделе документации описываются все идеи, заложенные в основу Тасэдитора, а также раскрываются основные детали итоговой реализации TAS Editor 1.0. Для получения полной информации об алгоритмах, используемых в Тасэдиторе, вы можете изучить его исходники на языке C++.</span></p>
<p class="rvps10"><span class="rvts22">Тасэдитор является программой с открытым исходным кодом (open source). Он распространяется по лицензии </span><a class="rvts28" href="http://ru.wikipedia.org/wiki/MIT_License" target="_blank">MIT</a><span class="rvts22">, которая позволяет вам распоряжаться исходным кодом без ограничений. Выбор лицензии обусловлен желанием поощрить модификацию и портирование Тасэдитора на другие платформы.</span></p>
<p class="rvps10"><span class="rvts22">Загрузить исходные коды эмулятора FCEUX 2.2.0 со встроенным Тасэдитором вы можете из официального SVN-репозитория: </span><a class="rvts28" href="http://sourceforge.net/p/fceultra/code/" target="_blank">http://sourceforge.net/p/fceultra/code/</a></p>
<p class="rvps10"><span class="rvts22">Для работы с SVN вам потребуется SVN-клиент, например, </span><a class="rvts28" href="http://ru.wikipedia.org/wiki/Tortoise_SVN" target="_blank">TortoiseSVN</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Исходный код Тасэдитора сравнительно неплохо откомментирован, и для понимания большинства нюансов будет достаточно базовых навыков программирования на C++ под </span><span class="rvts22">Win32 API. Так как для автора этот проект был первым опытом создания серьёзных приложений, некоторые задачи могут быть решены недостаточно эффективно, однако при портировании рекомендуется сохранять архитектуру приложения, так как она содержит резерв для расширения в соответствии с авторской теорией ТАСинга.</span></p>
<p class="rvps10"><span class="rvts22">Исходный код Тасэдитора достаточно подробно откомментирован, и для понимания большинства нюансов будет достаточно базовых навыков программирования на C++ под </span><span class="rvts22">Win32 API.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a class="rvts24" href="Ideas.html">Идеи</a></p>
<p class="rvps12"><span class="rvts25">Детальное описание идей, заложенных в Тасэдитор</span></p>
<p class="rvps12"><span class="rvts25">Запланированный функционал программы</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><a class="rvts24" href="Implementation.html">Реализация</a></p>
<p class="rvps12"><span class="rvts25">Архитектура программы</span></p>
<p class="rvps12"><span class="rvts25">Текущая архитектура программы</span></p>
<p class="rvps10"><a class="rvts24" href="Navigation.html"><br/></a></p>
<p class="rvps10"><a class="rvts24" href="MistakeProofing.html">Защита от ошибок</a></p>
<p class="rvps12"><span class="rvts25">Список нюансов</span><span class="rvts22">, призванных улучшить взаимодействие пользователя с программой</span></p>
<p class="rvps12"><span class="rvts25">Список неочевидных нюансов</span></p>
<p class="rvps10"><a class="rvts24" href="Operations.html"><br/></a></p>
<p class="rvps10"><a class="rvts24" href="FM3format.html">Формат FM3</a></p>
<p class="rvps12"><span class="rvts25">Спецификации файла проекта Тасэдитора</span></p>

View File

@ -93,7 +93,7 @@
<p class="rvps7"><a class="rvts14" href="Operations.html">Операции</a></p>
<p class="rvps7"><a class="rvts14" href="LuaAPI.html">Lua-функции</a></p>
<p class="rvps7"><a class="rvts14" href="FAQ.html">Ответы на вопросы</a></p>
<p class="rvps7"><a class="rvts14" href="SpeedrunnersSynopsis.html">Конспект спидраннера</a></p>
<p class="rvps7"><a class="rvts14" href="SpeedrunningSynopsis.html">Конспект спидраннера</a></p>
</td>
<td style="border-color: #000000; border-style: solid; border-top: none; background-color: #d0ffff; width: 30%; height: 163px;"><p class="rvps7"><a class="rvts14" href="Ideas.html">Идеи</a></p>
<p class="rvps7"><a class="rvts14" href="Implementation.html">Реализация</a></p>

View File

@ -72,80 +72,77 @@
<p class="rvps2"><a name="playback"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><img align="right" alt="" style="padding : 6px;" src="lib/toolbox-playback.png"/></p>
<p class="rvps10"><span class="rvts22">В самом верху находится раздел </span><span class="rvts26">Проигрывателя</span><span class="rvts22"> (Playback). Проигрыватель управляет процессом эмуляции игры держит на паузе, проигрывает в любом направлении, перематывает на желаемый кадр и так далее. Он</span><span class="rvts22"> позволяет обращаться с видеоиграми так же легко, как с обычной видеозаписью, невзирая на их интерактивность.</span></p>
<p class="rvps10"><span class="rvts22">Вверху находятся 5 управляющих кнопок Проигрывателя.</span></p>
<p class="rvps10"><span class="rvts22">Кнопка "</span><span class="rvts32">||</span><span class="rvts22">" (пауза/продолжить) является аналогом клавиатурного хоткея </span><span class="rvts27">Pause Emulation</span><span class="rvts22">. При её нажатии эмуляция игры либо приостанавливается, либо продолжается. Если на вашей мышке есть средняя кнопка, проще нажимать её вместо кнопки "</span><span class="rvts32">||</span><span class="rvts22">", в этом случае даже не нужно будет подводить курсор мыши к разделу Проигрывателя.</span></p>
<p class="rvps10"><span class="rvts22">В самом верху находится раздел </span><span class="rvts22">Проигрывателя</span><span class="rvts22"> (Playback). </span><span class="rvts26">Проигрыватель</span><span class="rvts22"> это тот компонент Тасэдитора, который управляет процессом эмуляции игры: держит на паузе, проигрывает в любом направлении, перематывает на желаемый кадр и так далее. Он</span><span class="rvts22"> позволяет обращаться с видеоиграми так же прямолинейно, как с обычной видеозаписью, невзирая на их интерактивность.</span></p>
<p class="rvps10"><span class="rvts22">Вверху находятся 5 кнопок.</span></p>
<p class="rvps10"><span class="rvts22">Кнопка "</span><span class="rvts32">||</span><span class="rvts22">" (пауза/продолжить) является простым аналогом клавиатурного хоткея </span><span class="rvts27">Pause Emulation</span><span class="rvts22">. При её нажатии эмуляция игры либо приостанавливается, либо продолжается. Впрочем, если на вашей мышке есть средняя кнопка, проще нажимать её вместо щелчка по кнопке "</span><span class="rvts32">||</span><span class="rvts22">", в этом случае даже не нужно будет подводить курсор мыши к разделу Проигрывателя.</span></p>
<p class="rvps10"><span class="rvts22">Кнопка "</span><span class="rvts32">&gt;</span><span class="rvts22">" (шаг вперёд, Advance 1 frame) перемещает голубой курсор на один кадр ниже, при необходимости заставляя FCEUX эмулировать 1 кадр игры. По этой кнопке можно не только щёлкать, но и зажимать её на некоторое время, чтобы сделать несколько шагов подряд. </span><span class="rvts22">У этой кнопки есть аналог на клавиатуре: </span><span class="rvts34">Shift + Вниз</span><span class="rvts22">. Если у вашей мышки есть колесо, проще зажимать правую кнопку и прокручивать колесо на одно деление вниз вместо использования кнопки </span><span class="rvts22">"</span><span class="rvts32">&gt;</span><span class="rvts22">".</span></p>
<p class="rvps10"><span class="rvts22">Кнопка "</span><span class="rvts32">&lt;</span><span class="rvts22">" (шаг назад, Rewind 1 frame) перемещает голубой курсор на один кадр выше, а на экране FCEUX отражаются события предыдущего кадра игры. Эту кнопку тоже можно зажимать, чтобы сделать подряд несколько шагов назад. Для этой кнопки есть свой хоткей </span><span class="rvts27">Frame Rewind</span><span class="rvts22"> (по умолчанию клавиша </span><span class="rvts27">Backspace</span><span class="rvts22">), а также</span><span class="rvts22"> аналог на клавиатуре: </span><span class="rvts34">Shift + Вверх</span><span class="rvts22">. Если у вашей мышки есть колесо, проще зажимать правую кнопку и прокручивать колесо на одно деление вверх вместо использования кнопки </span><span class="rvts22">"</span><span class="rvts32">&lt;</span><span class="rvts22">".</span></p>
<p class="rvps10"><span class="rvts22">Кнопка "</span><span class="rvts32">&lt;&lt;</span><span class="rvts22">" (быстрая перемотка назад) тоже перемещает Курсор Проигрывателя (а значит и состояние игры) назад, но не на один кадр, а сразу на множество кадров. Эта кнопка перемещает голубой курсор прямо на кадр, на котором установлен вышестоящий Маркер. В примере с верхней картинкой при нажатии "</span><span class="rvts32">&lt;&lt;</span><span class="rvts22">" голубой курсор прыгнет на 12-й кадр (где установлен Маркер 1). Благодаря этой кнопке можно очень быстро возвращаться к началу редактируемого участка и вообще к любому ранее пройденному моменту. У этой кнопки есть аналог на клавиатуре: </span><span class="rvts34">Shift + Page Up</span><span class="rvts22">. Эту кнопку также можно зажимать голубой курсор будет очень быстро прыгать по Маркерам всё выше и выше по Piano Roll, и, глядя на меняющееся изображение на экране FCEUX, вы сможете быстро найти нужный фрагмент.</span></p>
<p class="rvps10"><span class="rvts22">Кнопка "</span><span class="rvts32">&gt;&gt;</span><span class="rvts22">" (быстрая перемотка вперёд) прыгает Курсором Проигрывателя по Маркерам вперёд. В примере с верхней картинкой при нажатии "</span><span class="rvts32">&gt;&gt;</span><span class="rvts22">" голубой курсор прыгнет на 22-й кадр (где установлен Маркер 2). Благодаря этой кнопке можно быстро проматывать события мувика вперёд. Однако в случае, если следующий Маркер находится вне Гринзоны, эмулятору потребуется какое-то время для эмуляции неизведанных кадров, поэтому прыжок голубого курсора может быть не мгновенным, придётся чуть-чуть подождать. У этой кнопки есть аналог на клавиатуре: </span><span class="rvts34">Shift + Page Down</span><span class="rvts22">. Эту кнопку также можно зажимать.</span></p>
<p class="rvps10"><span class="rvts22">Кнопка "</span><span class="rvts32">&lt;&lt;</span><span class="rvts22">" (быстрая перемотка назад) тоже перемещает Курсор Проигрывателя назад, но не на один кадр, а сразу на множество кадров. Эта кнопка перемещает голубой курсор прямо на кадр, на котором установлен вышестоящий Маркер. В примере с верхней картинкой при нажатии "</span><span class="rvts32">&lt;&lt;</span><span class="rvts22">" голубой курсор прыгнет на 12-й кадр (где располагается Маркер 1). Благодаря этой кнопке можно очень быстро возвращаться к началу редактируемого участка и вообще к любому ранее пройденному моменту мувика. У этой кнопки есть аналог на клавиатуре: </span><span class="rvts34">Shift + Page Up</span><span class="rvts22">. Эту кнопку также можно зажимать голубой курсор будет очень быстро прыгать по Маркерам всё выше и выше по Piano Roll, и, глядя на меняющееся изображение на экране FCEUX, вы сможете быстро найти нужный фрагмент.</span></p>
<p class="rvps10"><span class="rvts22">Кнопка "</span><span class="rvts32">&gt;&gt;</span><span class="rvts22">" (быстрая перемотка вперёд) прыгает Курсором Проигрывателя по Маркерам вперёд. В примере с верхней картинкой при нажатии "</span><span class="rvts32">&gt;&gt;</span><span class="rvts22">" голубой курсор прыгнет на 22-й кадр (где </span><span class="rvts22">располагается</span><span class="rvts22"> Маркер 2). Благодаря этой кнопке можно быстро проматывать события мувика вперёд. Однако в случае, если следующий Маркер находится за пределами Гринзоны, эмулятору потребуется некоторое время для обработки неизведанных кадров, поэтому прыжок голубого курсора может быть не мгновенным, придётся чуть-чуть подождать. У этой кнопки есть аналог на клавиатуре: </span><span class="rvts34">Shift + Page Down</span><span class="rvts22">. Эту кнопку также можно зажимать.</span></p>
<p class="rvps10"><span class="rvts22">В качестве эксперимента попробуйте сделать мувик из тысячи кадров и поставить пару десятков Маркеров, по одному через каждые 30-50 кадров. Затем зажмите </span><span class="rvts34">Shift</span><span class="rvts22"> и, нажимая клавиши </span><span class="rvts26">Page Up</span><span class="rvts22"> или </span><span class="rvts26">Page Down</span><span class="rvts22">, почувствуйте все удобства быстрой перемотки. </span><span class="rvts22">Помимо клавиш </span><span class="rvts26">Page Up</span><span class="rvts22"> и </span><span class="rvts26">Page Down </span><span class="rvts22">можно также вращать колесо мыши, зажав клавишу </span><span class="rvts34">Shift</span><span class="rvts22">.</span></p>
<p class="rvps10"><a name="progressbar"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Под управляющими кнопками Проигрывателя находится индикатор выполнения (</span><span class="rvts42">Progress bar</span><span class="rvts22">) и четыре переключателя (Checkbox).</span></p>
<p class="rvps10"><span class="rvts22">Прогрессбар служит для оценки оставшегося времени при добегании к указанному кадру.</span></p>
<p class="rvps10"><span class="rvts22">Дело в том, что для мгновенного прыжка на затребованный кадр эмулятор должен хотя бы однажды проэмулировать игру до этого кадра, применив ваш мувик в качестве игрового </span><span class="rvts22">Ввод</span><span class="rvts22">а, чтобы получить актуальное состояние игры на требуемый момент. После того, как состояние игры однажды просчитано, оно сохраняется в Гринзону, и в следующий раз эмулятор может мгновенно прыгнуть на этот кадр, пока не изменился </span><span class="rvts22">Ввод</span><span class="rvts22">, предшествующий этому кадру. Если Ввод изменился, потребуется новый пересчёт игровых событий, так как даже малейшее изменение нажатых кнопок может повлечь серьёзные изменения в игровом процессе. Поэтому при любом изменении Ввода Гринзона автоматически усекается, выбрасывая из памяти все кадры, на которые оказывает влияние изменившийся Ввод. И эти кадры эмулятору нужно просчитывать заново, что занимает некоторое время.</span></p>
<p class="rvps10"><span class="rvts22">Таким образом, если вы отправляете Курсор Проигрывателя на кадр, который находится далеко от Гринзоны, вместо мгновенного перемещения голубой курсор начинает </span><span class="rvts31">добегание</span><span class="rvts22"> (</span><span class="rvts31">Seeking</span><span class="rvts22">) к этому кадру. На месте целевого кадра начинает мигать тень голубого курсора, а на экране FCEUX будут быстро сменяться кадры игры по мере того, как Курсор Проигрывателя бежит к цели.</span></p>
<p class="rvps10"><span class="rvts22">Под 5 кнопками находится индикатор выполнения (</span><span class="rvts42">Progress bar</span><span class="rvts22">) и три переключателя (Checkbox).</span></p>
<p class="rvps10"><span class="rvts22">Прогрессбар служит для оценки оставшегося времени при добегании к указанному кадру. М</span><span class="rvts22">гновенные прыжки на затребованный кадр становятся возможными только после того, как эмулятор хотя бы однажды проэмулировал игру до этого кадра, применив ваш мувик в качестве игрового </span><span class="rvts22">Ввод</span><span class="rvts22">а, чтобы получить актуальное состояние игры на этом кадре. После того, как состояние игры однажды просчитано, оно сохраняется в Гринзону, и в следующий раз эмулятор может мгновенно прыгнуть на этот кадр, пока не изменился </span><span class="rvts22">Ввод</span><span class="rvts22">, предшествующий этому кадру. Если Ввод изменился, потребуется новый пересчёт игровых событий, так как даже малейшее изменение нажатых кнопок может повлечь серьёзные изменения в хронологии игрового процесса. Поэтому при любом изменении Ввода Гринзона автоматически усекается, выбрасывая из памяти все кадры, на которые оказывает влияние изменившийся Ввод. И эти кадры эмулятору нужно просчитывать заново, что занимает некоторое время.</span></p>
<p class="rvps10"><span class="rvts22">Таким образом, когда вы отправляете Курсор Проигрывателя на кадр, который находится далеко от Гринзоны, вместо мгновенного перемещения голубой курсор начинает </span><span class="rvts31">добегание</span><span class="rvts22"> (</span><span class="rvts31">Seeking</span><span class="rvts22">) к этому кадру. На месте целевой строки Piano Roll начинает мигать тень голубого курсора, а на экране FCEUX будут быстро сменяться кадры игры по мере того, как Курсор Проигрывателя бежит к цели.</span></p>
<p class="rvps10"><span class="rvts22">В этом случае вам придётся подождать. Время добегания зависит от расстояния между ближайшим краем Гринзоны и целевым кадром, а также от мощности вашего компьютера и ещё от ряда факторов. </span><span class="rvts41">Прогрессбар</span><span class="rvts43"> </span><span class="rvts22">поможет оценить оставшееся время ожидания. А если вы передумали ждать, достаточно щёлкнуть по прогрессбару левой кнопкой мыши (помимо индикатора он ещё является кнопкой) или использовать клавиатурный хоткей </span><span class="rvts27">Cancel Seeking </span><span class="rvts22">(по умолчанию клавиша </span><span class="rvts27">Esc</span><span class="rvts22">). Тогда целевой кадр перестанет мигать, голубой курсор остановится, а эмуляция будет поставлена на паузу.</span></p>
<p class="rvps10"><span class="rvts22">Во время добегания можно изменить конечную цель, сделав щелчок в колонке иконок перед номером желаемого кадра. Если во время добегания поставить эмулятор на паузу, голубой курсор приостановится, мигание целевого кадра замедлится, но добегание не будет отменено при отпускании паузы Курсор Проигрывателя продолжит бег к цели и автоматически остановится при её достижении.</span></p>
<p class="rvps10"><span class="rvts22">Прогрессбар также используется во время загрузки и сохранения больших проектов Тасэдитора на диск.</span></p>
<p class="rvps10"><span class="rvts22">Прогрессбар также используется во время загрузки и сохранения проектов Тасэдитора на диск.</span></p>
<p class="rvps10"><a name="turbo-seek"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Галочка "</span><span class="rvts26">Turbo seek</span><span class="rvts22">" позволяет влиять на скорость добегания. С помощью функции </span><span class="rvts45">Turbo</span><span class="rvts22"> эмулятор может эмулировать игру с максимально достижимой скоростью, сокращая конечное время добегания в десятки раз. Поэтому при добегании к дальнему кадру рекомендуется установить эту галочку. Однако во время работы над ТАСом часто требуется увидеть не только конечный кадр определённого участка, но и внимательно рассмотреть все промежуточные кадры. В таких случаях следует снять эту галочку и даже уменьшить скорость эмуляции с помощью хоткеев </span><span class="rvts27">- </span><span class="rvts22">и </span><span class="rvts27">=</span><span class="rvts22">, чтобы не упустить важные детали при просмотре изображения эмулируемой игры.</span></p>
<p class="rvps10"><span class="rvts22">Галочка "</span><span class="rvts26">Turbo seek</span><span class="rvts22">" позволяет влиять на скорость добегания. С помощью функции </span><span class="rvts45">Turbo</span><span class="rvts22"> эмулятор может эмулировать игру с максимально достижимой скоростью, сокращая конечное время добегания в десятки раз. Поэтому при добегании к дальнему кадру рекомендуется установить эту галочку. Однако во время работы над ТАСом часто требуется увидеть не только конечный кадр определённого участка, но и внимательно рассмотреть все промежуточные кадры. В таких случаях следует снять эту галочку и даже уменьшить скорость эмуляции с помощью хоткеев </span><span class="rvts27">- </span><span class="rvts22">и </span><span class="rvts27">=</span><span class="rvts22">, чтобы не упустить важные детали геймплея.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Галочка "</span><span class="rvts26">Follow cursor</span><span class="rvts22">" заставляет Piano Roll следить за перемещениями Курсора Проигрывателя и автоматически скроллировать видимую область Piano Roll таким образом, чтобы голубой курсор всегда был виден пользователю. Это позволяет отслеживать глазами проигрываемый </span><span class="rvts22">Ввод</span><span class="rvts22"> прямо по ходу эмуляции. Обычно во время редактирования больших участков эту галочку необходимо отключать, чтобы Piano Roll не убегал от места редактирования </span><span class="rvts22">Ввод</span><span class="rvts22">а.</span></p>
<p class="rvps10"><span class="rvts22">Галочка "</span><span class="rvts26">Follow cursor</span><span class="rvts22">" заставляет Piano Roll следить за перемещениями Курсора Проигрывателя и автоматически скроллировать видимую область Piano Roll таким образом, чтобы голубой курсор всегда был виден пользователю. Это позволяет отслеживать глазами проигрываемый </span><span class="rvts22">Ввод, когда отпущена пауза эмуляции</span><span class="rvts22">. Обычно во время редактирования мувика эту галочку нужно отключать, чтобы Piano Roll не убегал от места редактирования </span><span class="rvts22">Ввод</span><span class="rvts22">а.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Галочка "</span><span class="rvts26">Auto-restore last position"</span><span class="rvts22"> заставляет Проигрыватель автоматически запускать добегание после вынужденного отступления голубого курсора. Каждый раз, когда вы меняете </span><span class="rvts22">Ввод</span><span class="rvts22">, Гринзона усекается после кадра изменения, и Курсор Проигрывателя отступает назад вместе с ней, забывая о событиях, ставших не актуальными после изменения Ввода. С помощью галочки автовосстановления позиции вы сможете сразу увидеть </span><span class="rvts26">новые</span><span class="rvts22"> события на этих кадрах. Когда галочка установлена, после каждого изменения </span><span class="rvts22">Ввод</span><span class="rvts22">а Проигрыватель будет заново эмулировать изменившийся участок, позволяя ТАСеру оперативно сравнивать различные варианты развития игровых событий.</span></p>
<p class="rvps10"><span class="rvts22">Благодаря автоматическому восстановлению позиции ТАСер может сконцентрировать внимание только на редактировании </span><span class="rvts22">Ввод</span><span class="rvts22">а и в кратчайшие сроки перебрать множество вариантов действий на одном участке. Подробнее об этом методе ТАСинга будет рассказано позже.</span></p>
<p class="rvps10"><span class="rvts22">Галочка "</span><span class="rvts26">Auto-restore last position"</span><span class="rvts22"> заставляет Проигрыватель автоматически запускать добегание, когда голубой курсор отступает назад при усечении Гринзоны. Каждый раз, когда вы меняете </span><span class="rvts22">Ввод</span><span class="rvts22">, Гринзона усекается после первого кадра изменения, забывая о событиях, ставших не актуальными после изменения Ввода. Курсор Проигрывателя всегда должен находиться внутри Гринзоны, поэтому он отступает назад вместе с ней. С помощью галочки автовосстановления позиции вы сможете сразу увидеть </span><span class="rvts22">новые</span><span class="rvts22"> события на этих кадрах. Когда галочка установлена, после каждой модификации </span><span class="rvts22">Ввод</span><span class="rvts22">а Проигрыватель будет заново эмулировать изменившийся участок, помогая ТАСеру оперативно сравнивать различные сценарии развития игровых событий.</span></p>
<p class="rvps10"><span class="rvts22">Благодаря автоматическому восстановлению позиции ТАСер может сконцентрировать внимание на редактировании </span><span class="rvts22">Ввод</span><span class="rvts22">а и в кратчайшие сроки перебрать множество подходов к прохождению текущего участка мувика. Подробнее об этом методе ТАСинга будет рассказано позже.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps2"><a name="recorder"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><img align="right" alt="" style="padding : 6px;" src="lib/toolbox-recorder.png"/><span class="rvts22">Под Проигрывателем находится раздел </span><span class="rvts26">Рекордера</span><span class="rvts22"> (Recorder). Рекордер служит для записи кнопочного </span><span class="rvts22">Ввод</span><span class="rvts22">а с клавиатуры (или геймпада) в мувик, прямо как при обычной игре в любом эмуляторе.</span></p>
<p class="rvps10"><img align="right" alt="" style="padding : 6px;" src="lib/toolbox-recorder.png"/><span class="rvts22">Под Проигрывателем находится раздел </span><span class="rvts22">Рекордера</span><span class="rvts22"> (Recorder). </span><span class="rvts26">Рекордер</span><span class="rvts22"> служит для записи кнопочного </span><span class="rvts22">Ввод</span><span class="rvts22">а с клавиатуры (или геймпада) в мувик, прямо как при обычной игре в любом эмуляторе.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Галочка "</span><span class="rvts26">Recording</span><span class="rvts22">" включает и выключает режим Записи. Перед тем как начать запись кнопочных нажатий, убедитесь, что Курсор Проигрывателя находится на нужном кадре, с которого вы хотите начать запись. Затем либо нажмите хоткей "</span><span class="rvts27">Toggle Read-only</span><span class="rvts22">" (по умолчанию клавиша </span><span class="rvts27">Q</span><span class="rvts22">), либо установите галочку Recording щелчком по ней. При этом в заголовке окна Тасэдитора появится слово "Recording", а в окне FCEUX появится сообщение "Movie is now Read+Write". Теперь вы можете либо отпустить паузу и проходить игру в обычном или замедленном состоянии, либо впечатывать кнопки покадрово с помощью хоткея </span><span class="rvts27">Frame Advance</span><span class="rvts22">. По мере продвижения голубого курсора мувик будет заполняться информацией о нажатых вами кнопках.</span></p>
<p class="rvps10"><span class="rvts22">Можно неоднократно перезаписывать один и тот же участок мувика, затирая старые данные новой информацией о нажатиях/отпусканиях. Если вам не понравилось, как был пройден только что записанный участок (например, персонаж упал в яму), переставьте Курсор Проигрывателя повыше, а именно на кадр, после которого были совершены неправильные нажатия кнопок (например, слишком поздно была нажата кнопка </span><span class="rvts32">A</span><span class="rvts22">), затем продолжите Запись, нажимая уже правильные кнопки в правильное время.</span></p>
<p class="rvps10"><span class="rvts22">Когда участок готов, следует отключить режим Записи, чтобы случайно не затереть </span><span class="rvts22">Ввод</span><span class="rvts22"> при навигации Курсором Проигрывателя по мувику. Уберите галочку "Recording" щелчком или нажатием хоткея. Обычно при работе в Тасэдиторе галочка Записи почти всё время отключена, так как вместо Записи используется прямое редактирование мувика мышью.</span></p>
<p class="rvps10"><span class="rvts22">Благодаря возможности обратной перемотки вы можете добавлять </span><span class="rvts22">Ввод</span><span class="rvts22"> по частям, а не только по порядку следования кадров. Например, теоретически можно сначала записать второй уровень игры, а затем первый. Или же записать уровни по порядку, а потом переписать первый, оставив второй уровень без изменений.</span></p>
<p class="rvps10"><span class="rvts22">Рекомендуется комбинировать возможности Рекордера с возможностями Piano Roll. Для длинных и лёгких участков игры обычно проще записать последовательность нажатий с клавиатуры или удобного USB-геймпада, а вот для мелких разбросанных правок проще использовать мышку.</span></p>
<p class="rvps10"><span class="rvts22">Когда участок готов, следует отключить режим Записи, чтобы случайно не затереть </span><span class="rvts22">Ввод</span><span class="rvts22"> при проигрывании мувика. Уберите галочку "Recording" щелчком или нажатием хоткея. Обычно при работе в Тасэдиторе галочка Записи почти всё время отключена, так как вместо Записи используется прямое редактирование мувика мышью.</span></p>
<p class="rvps10"><span class="rvts22">Рекомендуется рационально комбинировать возможности Рекордера с возможностями Piano Roll. Для длинных и лёгких участков игры может быть проще записать нажатия с клавиатуры или удобного USB-геймпада, а вот для мелких разбросанных правок лучше использовать мышку.</span></p>
<p class="rvps10"><a name="superimpose"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Галочка "</span><span class="rvts26">Superimpose</span><span class="rvts22">" (Наложение) в разделе Рекордера позволяет объединять новый </span><span class="rvts22">Ввод</span><span class="rvts22"> с уже имеющимся </span><span class="rvts22">Вводом</span><span class="rvts22"> на том же участке мувика. Например, сначала с помощью мыши вы можете нарисовать зажатие кнопки </span><span class="rvts32">R</span><span class="rvts22"> на длинном участке, чтобы персонаж всё время бежал вправо. Затем можно поставить галочку "Superimpose", включить Запись и нажимать только кнопки прыжка и стрельбы, без необходимости вручную нажимать кнопку </span><span class="rvts32">Вправо</span><span class="rvts22">. В игре в это время персонаж будет бежать вправо и прыгать/стрелять по команде.</span></p>
<p class="rvps10"><span class="rvts22">У галочки "Superimpose" помимо состояний "включена" и "отключена" есть дополнительное третье состояние промежуточное между "включена" и "отключена". Принцип работы таков: если пользователь нажимает какие-либо кнопки геймпада во время Записи, эти кнопки будут записаны в мувик вместо старого Ввода. Если же пользователь не нажимает ни одной кнопки во время Записи, то старый Ввод на текущих кадрах не удаляется (то есть Рекордер не будет записывать "</span><span class="rvts31">отсутствие нажатия</span><span class="rvts22"> всех кнопок" поверх старого </span><span class="rvts22">Ввод</span><span class="rvts22">а).</span></p>
<p class="rvps10"><span class="rvts22">Таким образом третье состояние галочки "Superimpose" позволяет вам не беспокоиться о постоянном включении и отключении Записи в тех случаях, когда требуется записывать </span><span class="rvts22">Ввод только в некоторые промежутки старого Ввода</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">В отличие от обычных галочек, у "Superimpose" помимо состояний "включена" и "отключена" есть дополнительное третье состояние промежуточное между "включена" и "отключена". Принцип работы таков: когда игрок нажимает какие-либо кнопки геймпада во время Записи, эти кнопки записываются в мувик вместо старого Ввода. Если же игрок не нажимает ни одной кнопки во время Записи, старый Ввод на текущих кадрах не удаляется.</span></p>
<p class="rvps10"><a name="UsePattern"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Галочка "</span><span class="rvts26">Use pattern</span><span class="rvts22">" (Использовать шаблон) применяет текущий шаблон во время Записи кнопок. Название текущего шаблона можно увидеть в верхнем правом углу окна TAS Editor (самый последний пункт меню). При щелчке по этому пункту появляется ниспадающее меню, где можно выбрать другой шаблон из списка заготовленных.</span></p>
<p class="rvps10"><span class="rvts22">Шаблоны используются для ускорения ввода частых нажатий и отпусканий. Например, если в игре требуется стрелять с максимально возможной частотой (то есть чередовать один кадр нажатия кнопки </span><span class="rvts32">B</span><span class="rvts22"> и один кадр отпускания кнопки </span><span class="rvts32">B</span><span class="rvts22">), можно просто выбрать шаблон "</span><span class="rvts31">Alternating (1010...)</span><span class="rvts22">" и зажать кнопку </span><span class="rvts32">B </span><span class="rvts22">не заботясь о её периодическом отпускании благодаря применению шаблона в нужные промежутки времени нажатие кнопки просто не будет записываться.</span></p>
<p class="rvps10"><span class="rvts22">Шаблоны используются для ускорения ввода однообразных нажатий и отпусканий. Например, если в игре требуется стрелять с максимально возможной частотой (то есть чередовать один кадр нажатия кнопки </span><span class="rvts32">B</span><span class="rvts22"> и один кадр отпускания кнопки </span><span class="rvts32">B</span><span class="rvts22">), можно просто выбрать шаблон "</span><span class="rvts31">Alternating (1010...)</span><span class="rvts22">" и зажать кнопку </span><span class="rvts32">B </span><span class="rvts22">не заботясь о её периодическом отпускании. Благодаря применению шаблона нажатие кнопки </span><span class="rvts32">B</span><span class="rvts22"> будет записываться через кадр.</span></p>
<p class="rvps10"><a name="multitracking"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Кроме управляющих галочек в Рекордере есть круглые радиокнопки (Radio buttons), реализующие функцию </span><span class="rvts26">мультитрекинга</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts26">Многодорожечная Запись</span><span class="rvts22"> серьёзно облегчает работу при традиционном ТАСинге игры на двоих и более игроков. Вместо того, чтобы нажимать руками кнопки одновременно на двух геймпадах, можно сначала записать прохождение короткого участка игры первым персонажем, а затем записать рядом кнопки второго.</span></p>
<p class="rvps10"><span class="rvts22">По умолчанию настроена Запись всех игроков одновременно (установлена радиокнопка "All"). Вы можете выбрать отдельный джойстик, щёлкнув по соответствующей радиокнопке (1P, 2P и т.д. количество доступных геймпадов зависит от типа мувика). Также для переключения радиокнопок можно использовать хоткей "</span><span class="rvts27">Switch current Multitracking mode</span><span class="rvts22">"</span><span class="rvts22"> (по умолчанию клавиша </span><span class="rvts27">W</span><span class="rvts22">). </span><span class="rvts22">Теперь во время Записи эмулятор будет воспринимать только нажатия кнопок для выбранного игрока, а колонки </span><span class="rvts22">Ввод</span><span class="rvts22">а для остальных игроков не будут изменяться, даже если вы случайно нажмёте какую-нибудь кнопку на их джойстике.</span></p>
<p class="rvps10"><span class="rvts22">Кроме галочек в Рекордере ещё есть круглые радиокнопки (Radio buttons), реализующие функцию </span><span class="rvts26">мультитрекинга</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts26">Многодорожечная Запись</span><span class="rvts22"> серьёзно облегчает работу при традиционном ТАСинге игры на двоих и более игроков. Вместо того, чтобы нажимать руками кнопки одновременно на двух геймпадах, можно сначала записать прохождение короткого участка игры первым игроком, а затем записать рядом кнопки второго.</span></p>
<p class="rvps10"><span class="rvts22">По умолчанию настроена Запись всех игроков одновременно (установлена радиокнопка "All"). Вы можете выбрать отдельный джойстик, щёлкнув по соответствующей радиокнопке (1P, 2P и т.д. количество доступных геймпадов зависит от типа вашего проекта). Также для переключения радиокнопок можно использовать хоткей "</span><span class="rvts27">Switch current Multitracking mode</span><span class="rvts22">"</span><span class="rvts22"> (по умолчанию клавиша </span><span class="rvts27">W</span><span class="rvts22">). </span><span class="rvts22">Теперь во время Записи эмулятор будет воспринимать только нажатия кнопок для выбранного игрока, а колонки </span><span class="rvts22">Ввод</span><span class="rvts22">а для остальных игроков не будут изменяться, даже если вы случайно нажмёте какую-нибудь кнопку на их джойстике.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps2"><a name="splicer"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><img align="right" alt="" style="padding : 6px;" src="lib/toolbox-splicer.png"/></p>
<p class="rvps10"><span class="rvts22">Под Рекордером находится раздел </span><span class="rvts26">Монтажа</span><span class="rvts22"> (Splicer).</span></p>
<p class="rvps10"><span class="rvts22">Нужно сразу отметить, что вам здесь не пригодится опыт работы в программах для нелинейного монтажа видео, ведь в тех программах вы оперируете готовым видеоматериалом (Выводом), а в Тасэдиторе можно редактировать только Ввод, при этом финальный видеоряд всё равно определяется самой игрой.</span></p>
<p class="rvps10"><span class="rvts22">В этом разделе выводится информация о размере текущего Выделения сколько строк (rows) выделено в высоту, и сколько колонок (columns) занимает </span><span class="rvts22">Ввод</span><span class="rvts22"> в ширину. Благодаря этой информации вы можете использовать Выделение в качестве </span><span class="rvts37">линейки</span><span class="rvts22"> для измерений. Например, чтобы быстро узнать расстояние (в кадрах) между двумя игровыми событиями, достаточно щёлкнуть мышкой по одному и растянуть Выделение до другого выделятся все кадры между этими двумя строчками, а в разделе Splicer появится сообщение "Selection: </span><span class="rvts31">N</span><span class="rvts22"> rows, </span><span class="rvts31">M</span><span class="rvts22"> columns", где </span><span class="rvts31">N</span><span class="rvts22"> искомое количество кадров.</span></p>
<p class="rvps10"><span class="rvts22">Также здесь находится информация о данных в Буфере Обмена содержится ли там Ввод, который можно вставить в любое место мувика, или не содержится. Если содержится, то указывается количество строк и колонок этого Ввода. Данные в Буфере Обмена хранятся независимо от Тасэдитора, они сохраняются там даже после закрытия FCEUX, пока какая-нибудь другая программа не скопирует в Буфер Обмена что-нибудь своё.</span></p>
<p class="rvps10"><span class="rvts22">В разделе "Splicer" нет никаких управляющих элементов, так как все команды для монтажа Ввода вынесены в раздел меню </span><span class="rvts26">Edit</span><span class="rvts22">, а также назначены на быстрые клавиши клавиатуры. </span><span class="rvts22">Рекомендуется использовать в процессе монтажа именно клавиатурные комбинации их легко запомнить, а скорость работы повышается во много раз.</span></p>
<p class="rvps10"><span class="rvts22">Несмотря на схожее звучание, редактирование ТАСов совсем не похоже на работу в программах для нелинейного монтажа видео, ведь в Тасэдиторе можно редактировать только Ввод, а не готовый видеоматериал (Вывод). Финальный видеоряд определяется самой игрой.</span></p>
<p class="rvps10"><span class="rvts22">В этом разделе выводится информация о размере текущего Выделения: сколько строк (rows) выделено в высоту, и сколько колонок (columns) занимает </span><span class="rvts22">Ввод</span><span class="rvts22"> в ширину. Благодаря этой информации вы можете использовать Выделение в качестве </span><span class="rvts26">линейки</span><span class="rvts22"> для измерений. Например, чтобы быстро узнать временную дистанцию между двумя игровыми событиями, нужно щёлкнуть мышкой по одному и растянуть Выделение до другого выделятся все кадры между этими двумя строчками, а в разделе Splicer появится сообщение "Selection: </span><span class="rvts31">N</span><span class="rvts22"> rows, </span><span class="rvts31">M</span><span class="rvts22"> columns", где </span><span class="rvts31">N</span><span class="rvts22"> искомое количество кадров.</span></p>
<p class="rvps10"><span class="rvts22">Также здесь находится информация о данных в Буфере Обмена: содержится ли там Ввод, который можно вставить в любое место мувика. Если содержится, то указывается количество скопированных в Буфер кадров. Данные в Буфере Обмена хранятся независимо от Тасэдитора, они сохраняются там даже после закрытия FCEUX, пока какая-нибудь другая программа не скопирует в Буфер Обмена что-нибудь своё.</span></p>
<p class="rvps10"><span class="rvts22">В разделе "Splicer" нет никаких управляющих элементов, так как все команды для монтажа Ввода вынесены в раздел меню </span><span class="rvts26">Edit</span><span class="rvts22">, а также назначены на быстрые клавиши клавиатуры. </span><span class="rvts22">Рекомендуется использовать в процессе монтажа именно клавиатурные комбинации, т.к. их легко запомнить, а скорость работы повышается во много раз.</span></p>
<p class="rvps10"><a name="splicing-operations"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts23">Перечень всех функций Монтажного инструмента.</span></p>
<p class="rvps10"><span class="rvts23">Перечень всех функций Монтажного инструмента</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">По сути это стандартные возможности любого текстового редактора (копипаст и т.п.), но в Тасэдиторе их можно применять к </span><span class="rvts22">Ввод</span><span class="rvts22">у прямо во время эмуляции игры (даже при отпущенной паузе), что позволяет на лету анализировать результаты их применения и оперативно корректировать свои действия.</span></p>
<p class="rvps10"><span class="rvts22">По сути это стандартные возможности любого текстового редактора, но в Тасэдиторе их можно применять к </span><span class="rvts22">Ввод</span><span class="rvts22">у прямо во время эмуляции игры, что позволяет на лету анализировать результаты их применения и гибко перестраивать свои планы.</span></p>
<ul style="text-indent: 30px; margin-left: 0px; list-style-position: inside;">
<li class="rvps15"><span class="rvts23">Copy </span><span class="rvts22">(</span><span class="rvts34">Ctrl + C</span><span class="rvts22">) копирует весь выделенный </span><span class="rvts22">Ввод</span><span class="rvts22"> в Буфер Обмена.</span></li>
<li class="rvps15"><span class="rvts23">Paste </span><span class="rvts22">(</span><span class="rvts34">Ctrl + V</span><span class="rvts22">) вставляет </span><span class="rvts22">Ввод</span><span class="rvts22"> из Буфера Обмена в мувик, начиная с кадра, где стоит Курсор Выделения. Старые данные мувика на этом месте затираются новыми, хотя при желании можно использовать наложение новых на старые, если у Рекордера установлена галочка "Superimpose".</span></li>
<li class="rvps15"><span class="rvts23">Paste </span><span class="rvts22">(</span><span class="rvts34">Ctrl + V</span><span class="rvts22">) вставляет </span><span class="rvts22">Ввод</span><span class="rvts22"> из Буфера Обмена в мувик, начиная с кадра, где стоит Курсор Выделения. Старые данные мувика на этом месте затираются новыми, либо объединяются, если у Рекордера установлена галочка "Superimpose".</span></li>
<li class="rvps15"><span class="rvts23">Paste Insert </span><span class="rvts22">(</span><span class="rvts34">Ctrl + </span><span class="rvts34">Shift</span><span class="rvts34"> + </span><span class="rvts34">V</span><span class="rvts22">) раздвигает мувик и вставляет данные из Буфера Обмена, начиная с кадра, где стоит Курсор Выделения. Старые данные мувика отодвигаются вниз.</span></li>
<li class="rvps15"><span class="rvts23">Clear </span><span class="rvts22">(</span><span class="rvts34">Delete</span><span class="rvts22">) очищает выделенные кадры, удаляя с них нажатия всех кнопок.</span></li>
<li class="rvps15"><span class="rvts23">Cut </span><span class="rvts22">(</span><span class="rvts34">Ctrl + X</span><span class="rvts22">) = </span><span class="rvts23">Copy</span><span class="rvts22"> + </span><span class="rvts23">Clear</span><span class="rvts22"> копирует </span><span class="rvts22">Ввод</span><span class="rvts22"> из выделенного участка мувика и очищает этот участок.</span></li>
<li class="rvps15"><span class="rvts23">Delete </span><span class="rvts22">(</span><span class="rvts34">Ctrl + Delete</span><span class="rvts22">) удаляет выделенные кадры из мувика, сдвигая последующие кадры на их место. Очень удобно таким образом перемещать </span><span class="rvts22">Ввод</span><span class="rvts22"> вверх.</span></li>
<li class="rvps15"><span class="rvts23">Insert </span><span class="rvts22">(</span><span class="rvts34">Ctrl + Shift + Insert</span><span class="rvts22">) вставляет в мувик пустоту на место выделенных кадров, сдвигая последующие кадры вперёд. Очень удобно таким образом перемещать </span><span class="rvts22">Ввод</span><span class="rvts22"> вниз.</span></li>
<li class="rvps15"><span class="rvts23">Clone </span><span class="rvts22">(</span><span class="rvts34">Ctrl + Insert</span><span class="rvts22">) аналог </span><span class="rvts23">Insert</span><span class="rvts22">, но вместо пустоты в мувик вставляются копии выделенных кадров. Зачастую этот способ ещё удобнее, чем </span><span class="rvts34">Ctrl + Shift + Insert</span><span class="rvts22">.</span></li>
<li class="rvps15"><span class="rvts23">Insert </span><span class="rvts22">(</span><span class="rvts34">Ctrl + Shift + Insert</span><span class="rvts22">) вставляет в мувик пустой кадр перед каждым выделенным кадром, сдвигая существующий Ввод вперёд. Удобно таким образом перемещать </span><span class="rvts22">Ввод</span><span class="rvts22"> вниз.</span></li>
<li class="rvps15"><span class="rvts23">Clone </span><span class="rvts22">(</span><span class="rvts34">Ctrl + Insert</span><span class="rvts22">) аналог </span><span class="rvts23">Insert</span><span class="rvts22">, но вместо пустоты в мувик вставляются копии выделенных кадров. Зачастую этот способ предпочтительнее.</span></li>
<li class="rvps15"><span class="rvts23">Insert number of frames </span><span class="rvts22">(</span><span class="rvts34">Insert</span><span class="rvts22">) позволяет вставить на место Курсора Выделения любое желаемое количество пустых кадров. При нажатии клавиши </span><span class="rvts34">Insert</span><span class="rvts22"> появляется окошко для ввода требуемого количества кадров, нужно напечатать число и нажать OK. Если передумали, можно нажать Cancel (Esc) для убирания окошка.</span></li>
<li class="rvps15"><span class="rvts23">Truncate</span><span class="rvts22"> удаляет все кадры мувика, начиная со следующего за Курсором Выделения. Редко используемая функция, поэтому у неё нет хоткея, она доступна только через меню программы или меню по правой кнопке мыши.</span></li>
</ul>
@ -159,35 +156,35 @@
<p class="rvps10"><img align="right" alt="" style="padding : 6px;" src="lib/toolbox-lua.png"/></p>
<p class="rvps10"><span class="rvts22">Под Монтажным инструментом находится маленький раздел </span><span class="rvts26">Lua</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Здесь находится одна неактивная кнопка и одна галочка, назначение которых будет описано позже. Пока вы не знакомы с Lua-скриптингом, этот раздел вам не понадобится.</span></p>
<p class="rvps10"><span class="rvts22">Использование скриптового языка Lua позволяет автоматизировать часть работы ТАСера и даже создавать собственные плагины для Тасэдитора. Этому посвящена отдельная часть главы </span><a class="rvts40" href="AdvancedFeatures.html#UsingLua">Продвинутые возможности</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Использование скриптового языка Lua позволяет автоматизировать некоторую часть работы ТАСера и создавать собственные плагины для Тасэдитора.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps10"><a name="bookmarks"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><img align="right" alt="" style="padding : 6px;" src="lib/toolbox-bookmarks.png"/></p>
<p class="rvps10"><span class="rvts22">Далее располагается раздел </span><span class="rvts26">Закладок</span><span class="rvts22"> (Bookmarks/Branches). О Закладках следует рассказать подробнее.</span></p>
<p class="rvps10"><span class="rvts22">Закладки являются развитием принципа эмуляторных сэйвов. До Тасэдитора сэйвы были единственным способом навигации по мувику, с их помощью ТАСер возвращался к месту ошибки и исправлял её. В Тасэдиторе есть множество других способов навигации, однако и этот способ решено было оставить для совместимости со старыми принципами.</span></p>
<p class="rvps10"><span class="rvts22">Далее располагается раздел </span><span class="rvts22">Закладок</span><span class="rvts22"> (Bookmarks/Branches). О Закладках следует рассказать подробнее.</span></p>
<p class="rvps10"><span class="rvts26">Закладки</span><span class="rvts22"> являются развитием принципа эмуляторных сэйвов. До Тасэдитора сэйвы были главным способом навигации по мувику, с их помощью ТАСер возвращался к месту ошибки и исправлял её. В Тасэдиторе есть более совершенные способы навигации, однако и этот способ был оставлен.</span></p>
<p class="rvps10"><span class="rvts22">В вашем распоряжении 10 слотов для Закладок, которые нумеруются цифрами от 0 до 9. Вы можете поставить любую из 10 Закладок на любой кадр мувика, предварительно указав на этот кадр Курсором Проигрывателя.</span></p>
<p class="rvps10"><span class="rvts26">1 способ</span><span class="rvts22"> поставьте голубой курсор на кадр, где должна появиться Закладка и сделайте эмуляторный сэйв (по умочанию это </span><span class="rvts34">Shift</span><span class="rvts22"> + любая из клавиш в ряду </span><span class="rvts27">F1</span><span class="rvts22">-</span><span class="rvts27">F10</span><span class="rvts22">). Например, нажмите </span><span class="rvts27">Shift + F1</span><span class="rvts22"> для установки первой Закладки. Она тут же отобразится в Списке Закладок, сверкнув красным светом.</span></p>
<p class="rvps10"><span class="rvts26">2 способ</span><span class="rvts22"> поставьте голубой курсор на нужный кадр и щёлкните </span><span class="rvts26">правой кнопкой мыши</span><span class="rvts22"> по строке Списка Закладок. Например, щёлкните правой кнопкой по второй строке Списка, чтобы установить вторую Закладку.</span></p>
<p class="rvps10"><span class="rvts26">1 способ. </span><span class="rvts22">Поставьте голубой курсор на кадр, где должна появиться Закладка и сделайте эмуляторный сэйв (по умочанию это </span><span class="rvts34">Shift</span><span class="rvts22"> + любая из клавиш в ряду </span><span class="rvts27">F1</span><span class="rvts22">-</span><span class="rvts27">F10</span><span class="rvts22">). Например, нажмите </span><span class="rvts27">Shift + F1</span><span class="rvts22"> для установки первой Закладки. Она тут же отобразится в Списке Закладок, сверкнув красным светом.</span></p>
<p class="rvps10"><span class="rvts26">2 способ. </span><span class="rvts22">Поставьте голубой курсор на нужный кадр и сделайте щелчок</span><span class="rvts22"> правой кнопкой мыши по любой&nbsp;</span><span class="rvts22"> строке Списка Закладок. Например, щёлкните правой кнопкой по второй строке Списка, чтобы установить вторую Закладку.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Нечаянно совершённую установку Закладок можно отменять </span><span class="rvts22">с помощью </span><span class="rvts34">Ctrl + Z</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">В Списке Закладок отображается цифровой номер Закладки, номер кадра Закладки и время установки Закладки. </span><span class="rvts22">При наведении курсора мыши на время Закладки (правый столбец в Списке) вы увидите всплывающий скриншот из игры, дающий представление о содержимом Закладки с точки зрения игрового процесса. Когда у вас будет много Закладок, скриншоты помогут быстрее в них ориентироваться.</span></p>
<p class="rvps10"><span class="rvts22">В Списке Закладок для каждой Закладки отображается номер кадра, на котором она установлена, и реальное время её установки. </span><span class="rvts22">При наведении курсора мыши на время Закладки (правый столбец в Списке) вы увидите скриншот из игры.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">В момент установки Закладки Тасэдитор сохраняет в указанный слот не только текущее место положения Курсора Проигрывателя, но и всё содержимое мувика на текущий момент времени. Теперь вы в любой момент можете либо "</span><span class="rvts31">прыгнуть на Закладку в пространстве</span><span class="rvts22">", вернув Курсор Проигрывателя на запомненное Закладкой место, либо "</span><span class="rvts31">прыгнуть на Закладку во времени</span><span class="rvts22">", вернув весь мувик в запомненное Закладкой состояние.</span></p>
<p class="rvps10"><span class="rvts22">Чтобы вернуться на Закладку в пространстве, щёлкните левой кнопкой мыши по </span><span class="rvts26">левой половине</span><span class="rvts22"> нужной Закладки (более светлая половина Списка Закладок, где написан номер кадра, на котором установлена Закладка). Или же воспользуйтесь клавиатурой нажмите соответствующую цифру (цифровые клавиши </span><span class="rvts27">0-9</span><span class="rvts22"> расположены под клавишами </span><span class="rvts27">F1-F10</span><span class="rvts22">). О совершении прыжка вы сможете догадаться не только по перемещению голубого курсора в Piano Roll, но и по зелёной вспышке использованной Закладки.</span></p>
<p class="rvps10"><span class="rvts22">Чтобы вернуться на Закладку во времени, щёлкните левой кнопкой мыши по </span><span class="rvts26">правой половине</span><span class="rvts22"> нужной Закладки (более яркая половина Списка Закладок, где написано время создания Закладки). Или же загрузите соответствующий эмуляторный сэйв (по умолчанию это клавиши </span><span class="rvts27">F1-F10</span><span class="rvts22">). Если при прыжке во времени изменяется </span><span class="rvts22">Ввод</span><span class="rvts22"> мувика (когда восстанавливается его состояние на момент создания Закладки), то использованная Закладка вспыхивает синим светом, иначе вспыхивает зелёным, как при простом прыжке Курсора Проигрывателя. В случае изменения </span><span class="rvts22">Ввод</span><span class="rvts22">а, как обычно, возможно автоматическое усечение Гринзоны. И, конечно же, вы всегда можете отменить это изменение с помощью </span><span class="rvts34">Ctrl + Z</span><span class="rvts22">, вернув мувик к состоянию, которое у него было перед прыжком на Закладку во времени.</span></p>
<p class="rvps10"><span class="rvts22">В момент установки Закладки Тасэдитор сохраняет в указанный слот не только текущее место положения Курсора Проигрывателя, но и всё содержимое мувика на текущий момент времени. Теперь вы в любой момент можете либо "</span><span class="rvts31">прыгнуть на Закладку в пространстве</span><span class="rvts22">" (просто вернув Курсор Проигрывателя на заложенное Закладкой место), либо "</span><span class="rvts31">прыгнуть на Закладку во времени</span><span class="rvts22">", вернув весь мувик в запомненное Закладкой состояние.</span></p>
<p class="rvps10"><span class="rvts22">Чтобы вернуться на Закладку в пространстве, щёлкните левой кнопкой мыши по </span><span class="rvts26">левой половине</span><span class="rvts22"> нужной Закладки (более светлая половина Списка Закладок, где написан номер кадра, на котором установлена Закладка). Или же воспользуйтесь клавиатурой нажмите соответствующую цифру (цифровые клавиши </span><span class="rvts27">0</span><span class="rvts22">-</span><span class="rvts27">9</span><span class="rvts22"> расположены под клавишами </span><span class="rvts27">F1</span><span class="rvts22">-</span><span class="rvts27">F10</span><span class="rvts22">). О совершении прыжка вы сможете догадаться не только по перемещению голубого курсора в Piano Roll, но и по зелёной вспышке использованной Закладки.</span></p>
<p class="rvps10"><span class="rvts22">Чтобы вернуться на Закладку во времени, щёлкните левой кнопкой мыши по </span><span class="rvts26">правой половине</span><span class="rvts22"> нужной Закладки (более яркая половина Списка Закладок, где написано время создания Закладки). Или же загрузите соответствующий эмуляторный сэйв (по умолчанию это клавиши </span><span class="rvts27">F1</span><span class="rvts22">-</span><span class="rvts27">F10</span><span class="rvts22">). Если при прыжке во времени изменяется </span><span class="rvts22">Ввод</span><span class="rvts22"> мувика (ведь восстанавливается его состояние на момент создания Закладки), то использованная Закладка вспыхивает синим светом, иначе вспыхивает зелёным, как при простом прыжке Курсора Проигрывателя. Как обычно, при изменении </span><span class="rvts22">Ввод</span><span class="rvts22">а будет автоматическое усечение Гринзоны. И, конечно же, вы всегда можете отменить это изменение с помощью </span><span class="rvts34">Ctrl + Z</span><span class="rvts22">, вернув мувик к состоянию, которое у него было перед прыжком на Закладку во времени.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Таким образом, часть Закладок можно использовать для ускорения навигации. Например, поставить Закладку на начало просматриваемого участка мувика и периодически возвращать Курсор Проигрывателя на кадр этой Закладки, чтобы повторно проиграть события игры на всём участке. Впрочем, для этой же цели можно поставить в начале участка обычный Маркер. Преимущество Закладки перед Маркером только в том, что на Закладку можно будет мгновенно прыгнуть из любого сколь угодно отдалённого места мувика, а к Маркеру издалека нужно добираться прыжками через соседние Маркеры.</span></p>
<p class="rvps10"><span class="rvts22">Другую часть Закладок можно использовать для хранения альтернативных вариантов прохождения одного и того же участка игры. При ТАСинге сложных игр мы не всегда можем сразу оценить степень оптимальности той или иной стратегии прохождения уровня. Порой ТАСеру требуется записать несколько разных способов прохождения одного и того же участка игры, а затем тщательно сравнить готовые мувики и выбрать наиболее подходящий, чтобы оставить его в конечном ТАСе.</span></p>
<p class="rvps10"><span class="rvts22">В традиционном ТАСинге каждый вариант прохождения хранится в отдельном файле (сэйве), и для переключения между мувиками нужно загружать соответствующие сэйвы, созданные во время записи альтернативных стратегий прохождения.</span></p>
<p class="rvps10"><span class="rvts22">Таким образом, часть Закладок можно использовать для ускорения навигации. Например, поставьте Закладку на начало текущего уровня игры, чтобы периодически возвращать Курсор Проигрывателя на кадр этой Закладки и пересматривать события уровня. Для этой же цели можно воспользоваться Маркерами, но преимущество Закладок в том, что на Закладку можно будет мгновенно прыгнуть из любого сколь угодно отдалённого места мувика, а к Маркеру издалека нужно добираться прыжками через соседние Маркеры.</span></p>
<p class="rvps10"><span class="rvts22">Другую часть Закладок можно использовать для хранения альтернативных подходов к прохождению одного и того же участка игры. При ТАСинге сложных игр мы не всегда можем сразу оценить степень оптимальности той или иной стратегии прохождения. Порой ТАСеру требуется записать несколько разных способов прохождения одного и того же участка игры, а затем тщательно сравнить готовые мувики и выбрать наиболее подходящий, чтобы оставить его в конечном ТАСе.</span></p>
<p class="rvps10"><span class="rvts22">В традиционном ТАСинге каждый такой мувик хранится в отдельном файле, так что для переключения между альтернативными мувиками (а точнее, между альтернативными ответвлениями главного мувика) нужно загружать соответствующие сэйвы, созданные во время записи этих прохождений.</span></p>
<p class="rvps10"><img align="right" alt="" style="padding : 6px;" src="lib/toolbox-branches.png"/></p>
<p class="rvps10"><span class="rvts22">В Тасэдиторе все сохранённые варианты прохождения хранятся вместе, образуя между собой иерархию под названием &nbsp;</span><span class="rvts26">Дерево ответвлений</span><span class="rvts22"> (Branches Tree). Для переключения между альтернативными ответвлениями нужно загрузить соответствующую Закладку, вернув мувик на желаемую ветвь заготовленных вариантов развития истории. По сути всё так же, как раньше. </span><span class="rvts22">Но подход Тасэдитора позволяет удобно визуализировать все альтернативные стратегии в виде схемы, чтобы облегчить ориентацию ТАСера среди множества записанных вариантов.</span></p>
<p class="rvps10"><span class="rvts22">Когда вы записываете два варианта прохождения второго уровня игры, первый уровень в обоих вариантах проходится одинаково, так что расхождение </span><span class="rvts22">Ввод</span><span class="rvts22">а идёт не с самого начала мувика, а только с начала второго уровня. Если на кадре перед началом второго уровня вы когда-то поставили Закладку 1, на схеме будет видно расхождение двух линий, начиная с цифры 1, а с начала мувика до цифры 1 оба варианта будут совпадать в виде одной линии.</span></p>
<p class="rvps10"><span class="rvts22">По расцветке линий на схеме можно будет определить, какие Закладки содержат мувик, совпадающий с мувиком текущей Закладки. Например, если ставить по одной Закладке в конец каждого уровня, то все эти Закладки будут объединены между собой красной линией, так как мувик каждой следующей Закладки фактически состоит из мувика предыдущей Закладки, плюс дописанного прохождения ещё одного уровня.</span></p>
<p class="rvps10"><span class="rvts22">В качестве эксперимента создайте короткий мувик без Закладок, установите Курсор Проигрывателя на конец мувика и сохраните Закладку в первый слот (</span><span class="rvts27">Shift + F1</span><span class="rvts22">). Затем добавьте после кадра Закладки несколько кадров и нарисуйте на них несколько кнопочных нажатий, затем проиграйте эти нажатия и сохраните Закладку во второй слот (</span><span class="rvts27">Shift + F2</span><span class="rvts22">). Теперь верните мувик во времени на состояние первой Закладки (</span><span class="rvts27">F1</span><span class="rvts22">), опять добавьте в мувик несколько кадров после первой Закладки и нарисуйте на них несколько кнопочных нажатий, отличающихся от тех, что сохранены во второй слот. Затем проиграйте эти альтернативные нажатия до конца и сохраните Закладку в третий (</span><span class="rvts27">Shift + F3</span><span class="rvts22">) или какой-либо другой слот.</span></p>
<p class="rvps10"><span class="rvts22">Теперь щёлкните левой кнопкой мыши по заголовку раздела Закладок (по надписи Bookmarks/Branches). При этом Список Закладок сменится на изображение схемы ответвлений (Branches). Если мувик третьей сохранённой Закладки отличается от мувика второй Закладки, но это различие начинается после кадра, где установлена первая Закладка, то вы должны увидеть картину наподобие показанной выше. Тучка символизирует начало проекта (корень иерархии). Закладки представлены соответствующими номерами, синим номером отмечена текущая Закладка (последний использованный слот). Если после сохранения или загрузки Закладки в мувик уже вносились изменения, на схеме появляется фаербол, который символизирует конец мувика.</span></p>
<p class="rvps10"><span class="rvts22">На схеме также отображается текущая позиция Курсора Проигрывателя. Попробуйте перетаскивать голубой курсор мышкой вверх и вниз по Piano Roll, либо просто проиграть весь мувик от начала до конца (нажмите </span><span class="rvts34">Shift + Home</span><span class="rvts22"> и отпустите паузу эмулятора). Вы увидите перемещение маленькой голубой стрелки по красным линиям, соединяющим все Закладки в текущей хронологии. Например, если текущей Закладкой является вторая, значок Курсора Проигрывателя будет перемещаться по маршруту "тучка -&gt; Закладка 1 -&gt; Закладка 2". А остальные Закладки останутся в стороне, так как они представляют альтернативную хронологию, не совпадающую с текущим проигрываемым мувиком.</span></p>
<p class="rvps10"><span class="rvts22">В Тасэдиторе все сохранённые варианты прохождения хранятся вместе, образуя между собой иерархию под названием &nbsp;</span><span class="rvts26">Дерево ответвлений</span><span class="rvts22"> (Branches Tree). Для переключения между альтернативными ответвлениями нужно загрузить соответствующую Закладку, вернув рабочий мувик на один из заготовленных вариантов. По сути всё так же, как раньше. </span><span class="rvts22">Но теперь можно наглядно визуализировать все альтернативные прохождения в виде схемы, чтобы облегчить ориентацию ТАСера среди множества вариантов.</span></p>
<p class="rvps10"><span class="rvts22">Когда вы тестируете парочку подходов к прохождению второго уровня игры, первый уровень в обоих ответвлениях проходится одинаково, так что расхождение </span><span class="rvts22">Ввод</span><span class="rvts22">а идёт не с самого начала мувика, а только с начала второго уровня. Так что, если перед началом второго уровня вы когда-то оставили Закладку 1, на схеме будет видно расхождение двух линий, начиная с цифры 1.</span></p>
<p class="rvps10"><span class="rvts22">В качестве эксперимента начните новый проект и создайте очень короткий мувик. Установите Курсор Проигрывателя на конец мувика и сохраните Закладку в первый слот (</span><span class="rvts27">Shift + F1</span><span class="rvts22">). Затем добавьте после кадра Закладки несколько кадров и нарисуйте на них несколько кнопочных нажатий, затем проиграйте этот новый Ввод и сохраните Закладку во второй слот (</span><span class="rvts27">Shift + F2</span><span class="rvts22">). Теперь верните мувик на состояние первой Закладки (нажав </span><span class="rvts27">F1</span><span class="rvts22">), опять добавьте в мувик несколько кадров после первой Закладки и нарисуйте на них несколько кнопочных нажатий, отличающихся от тех, что сохранены во второй слот. Затем проиграйте эти альтернативные нажатия до конца и сохраните Закладку в третий (</span><span class="rvts27">Shift + F3</span><span class="rvts22">) или какой-либо другой слот.</span></p>
<p class="rvps10"><span class="rvts22">Теперь щёлкните левой кнопкой мыши по заголовку раздела Закладок (по надписи "Bookmarks/Branches"). При этом Список Закладок сменится на изображение схемы ответвлений (Branches). Если мувик третьей сохранённой Закладки отличается от мувика второй Закладки, но это различие начинается после кадра, где установлена первая Закладка, то вы должны увидеть картину наподобие показанной выше. Тучка символизирует начало мувика (корень иерархии). Закладки представлены карточками с соответствующими номерами. Синим номером отмечена текущая Закладка, соответствующая рабочему мувику (отображаемому в Piano Roll). Если после сохранения или загрузки этой Закладки в рабочий мувик уже вносились изменения, на схеме появляется фаербол.</span></p>
<p class="rvps10"><span class="rvts22">Красными линиями объединены Закладки, совместимые с хронологией текущего рабочего мувика. Например, если ставить по одной Закладке в конец каждого уровня, то все эти Закладки будут объединены между собой красной линией, так как мувик каждой следующей Закладки фактически состоит из мувика предыдущей Закладки, плюс дописанного прохождения ещё одного уровня.</span></p>
<p class="rvps10"><span class="rvts22">На Дереве ответвлений также отображается текущая позиция Курсора Проигрывателя. Попробуйте перетаскивать голубой курсор мышкой вверх и вниз по Piano Roll, либо просто проиграть весь мувик от начала до конца (нажмите </span><span class="rvts34">Shift + Home</span><span class="rvts22"> и отпустите паузу эмулятора). Вы увидите перемещение маленькой голубой стрелки по красным линиям, соединяющим все Закладки в текущей хронологии. Например, если текущей Закладкой является вторая, значок Курсора Проигрывателя будет перемещаться по маршруту "тучка -&gt; Закладка 1 -&gt; Закладка 2". А остальные Закладки останутся в стороне, так как они представляют альтернативную хронологию, не совпадающую с проигрываемым в данный момент мувиком.</span></p>
<p class="rvps10"><span class="rvts22">Дерево ответвлений автоматически перестраивается каждый раз, когда вы создаёте новую Закладку или изменяете содержимое существующей. </span><span class="rvts22">В зависимости от сложности вашего проекта схема ответвлений может быть очень разной.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<div class="rvps21"><table width="10%" border="0" cellpadding="1" cellspacing="2" style="border-width: 0px;">
@ -213,34 +210,34 @@
<p class="rvps10"><span class="rvts22">Вы можете наводить курсор мыши на номер любой Закладки, чтобы увидеть информацию о ней.</span></p>
<p class="rvps10"><span class="rvts22">Также вы можете сделать </span><span class="rvts26">одинарный щелчок левой</span><span class="rvts22"> кнопкой мыши по любой Закладке, чтобы послать Курсор Проигрывателя на кадр этой Закладки (прыжок в пространстве). Щелчком по тучке вы посылаете Курсор Проигрывателя в начало мувика (аналогично нажатию </span><span class="rvts34">Shift + Home</span><span class="rvts22">), а щелчком по фаерболу вы посылаете Курсор Проигрывателя в конец мувика (аналогично нажатию </span><span class="rvts34">Shift + End</span><span class="rvts22">).</span></p>
<p class="rvps10"><span class="rvts22">Кроме того, вы можете сделать </span><span class="rvts26">двойной щелчок левой</span><span class="rvts22"> кнопкой мыши, чтобы прыгнуть на указанную Закладку во времени. При этом из указанной Закладки восстанавливается состояние мувика, Закладка становится текущей, а Курсор Проигрывателя перемещается на кадр Закладки.</span></p>
<p class="rvps10"><span class="rvts22">Наконец, вы можете сделать </span><span class="rvts26">щелчок правой кнопкой</span><span class="rvts22"> мыши, чтобы сохранить текущий мувик и текущее положение Курсора Проигрывателя в указанную Закладку.</span></p>
<p class="rvps10"><span class="rvts22">Как видите, в режиме просмотра Дерева ответвлений можно совершать все те же действия, что и в режиме просмотра Списка Закладок. Поэтому для опытных пользователей рекомендуется использовать в работе только вид Дерева ответвлений, так как он даёт больше информации для ТАСера. Когда нужно переключиться обратно на просмотр Списка Закладок, щёлкните по заголовку раздела (по надписи Branches).</span></p>
<p class="rvps10"><span class="rvts22">Попробуйте использовать все 10 доступных слотов, каждый раз немного меняя </span><span class="rvts22">Ввод</span><span class="rvts22"> текущего мувика и просматривая отредактированные изменения на экране FCEUX. Позиция каждой Закладки на Дереве ответвлений определяется, исходя из </span><span class="rvts22">Ввод</span><span class="rvts22">а, предшествующего кадру Закладки. Подразумевается, что ТАСер всегда сначала просматривает нарисованный </span><span class="rvts22">Ввод</span><span class="rvts22"> в эмуляторе, а только потом сохраняет проделанную часть работы в Закладку.</span></p>
<p class="rvps10"><span class="rvts22">Наконец, вы можете сделать </span><span class="rvts26">щелчок правой кнопкой</span><span class="rvts22"> мыши по любой карточке, чтобы сохранить текущий мувик и текущее положение Курсора Проигрывателя в указанную Закладку.</span></p>
<p class="rvps10"><span class="rvts22">Как видите, в режиме просмотра Дерева ответвлений можно совершать все те же действия, что и в режиме просмотра Списка Закладок. Поэтому для опытных пользователей рекомендуется использовать в работе только вид Дерева ответвлений, так как он даёт больше информации для ТАСера. Когда нужно переключиться обратно на просмотр Списка Закладок, щёлкните по заголовку раздела (по надписи "Branches").</span></p>
<p class="rvps10"><span class="rvts22">Сейчас попробуйте использовать все 10 доступных слотов. Каждый раз немного меняйте </span><span class="rvts22">Ввод</span><span class="rvts22"> текущего мувика и просматривайте отредактированные изменения на экране FCEUX перед сохранением их в Закладку. Позиция каждой карточки на Дереве ответвлений определяется, исходя из </span><span class="rvts22">Ввод</span><span class="rvts22">а, предшествующего кадру этой Закладки. Подразумевается, что ТАСер всегда сначала просматривает нарисованный </span><span class="rvts22">Ввод</span><span class="rvts22"> в эмуляторе, а только потом сохраняет протестированную работу в Закладку.</span></p>
<p class="rvps10"><span class="rvts22">В руках опытного ТАСера Закладки являются мощным инструментом, позволяющим многократно облегчить процесс ТАСинга и реализовать даже то, что кажется невозможным. Обычно "невозможным" всё представляется только лишь из-за чудовищной, необъятной сложности. Но стоит лишь снизить сложность хотя бы в сотню раз (благодаря инструментам и умной организации процесса), и достижение из ранга невозможных переходит в разряд просто трудных.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps2"><a name="history"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><img align="right" alt="" style="padding : 6px;" src="lib/toolbox-history.png"/></p>
<p class="rvps10"><span class="rvts22">Под разделом Закладок располагается раздел </span><span class="rvts26">Истории</span><span class="rvts22"> (History).</span></p>
<p class="rvps10"><span class="rvts22">В этом списке Тасэдитор ведёт строгий учёт всех проделанных операций в текущем проекте. Каждое действие по изменению </span><span class="rvts22">Ввод</span><span class="rvts22">а, Маркеров или Закладок заносится в журнал, который сохраняется в файл проекта вместе с остальными данными. </span><span class="rvts22">Полный перечень всех возможных типов записей в Журнал Истории вы можете прочитать в </span><a class="rvts28" href="Operations.html">Справочнике</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Пункт Журнала, соответствующий текущему состоянию мувика, выделяется синим цветом. Другие пункты выделяются белым цветом, если они не имеют никакого отношения к текущему пункту, или фиолетовым цветом, если эти пункты представляют собой изменения мувика, которые происходили на том же месте, где и изменения, относящиеся к текущему пункту. Например, если текущий пункт Журнала Истории был создан в результате изменения Ввода на кадре 27, то фиолетовым цветом будут отмечены все пункты, которые затрагивают этот кадр.</span></p>
<p class="rvps10"><span class="rvts22">Большую часть времени вам не придётся обращать внимание на этот Журнал, однако именно благодаря ему</span><span class="rvts22"> вы можете использовать Откат (Undo) и Повтор (Redo) клавишами </span><span class="rvts34">Ctrl + Z</span><span class="rvts22"> и </span><span class="rvts34">Ctrl + Y</span><span class="rvts22">. </span><span class="rvts22">Помимо этих клавишных комбинаций вы можете также щёлкать на любой строке Журнала Истории левой кнопкой мыши, чтобы откатить мувик на время создания соответствующей записи в Журнале.</span></p>
<p class="rvps10"><span class="rvts22">При этом в Piano Roll на долю секунды появляется курсор-указка фиолетового цвета, акцентирующий внимание пользователя на месте произведённых при откате изменений. Как обычно, при изменении </span><span class="rvts22">Ввод</span><span class="rvts22">а возможно автоматическое усечение Гринзоны.</span></p>
<p class="rvps10"><span class="rvts22">Ниже Закладок располагается раздел </span><span class="rvts26">Истории</span><span class="rvts22"> (History).</span></p>
<p class="rvps10"><span class="rvts22">Тасэдитор ведёт строгий учёт всех проделанных операций в текущем проекте. Каждое действие пользователя по изменению </span><span class="rvts22">Ввод</span><span class="rvts22">а, Маркеров или Закладок заносится в журнал, отображаемый в этом разделе.</span></p>
<p class="rvps10"><span class="rvts22">Текущий пункт Журнала Истории выделяется синим цветом. Другие пункты выделяются белым цветом, если они не имеют никакого отношения к текущему пункту, или фиолетовым цветом, если они представляют собой изменения мувика, произведённые на том же месте, где и изменения, совершённые текущим пунктом. Например, если текущий пункт Журнала Истории был создан в результате изменения Ввода на кадре 27, то фиолетовым цветом будут отмечены все пункты, которые затрагивают этот кадр.</span></p>
<p class="rvps10"><span class="rvts22">Для отката зарегистрированных в Журнале операций вы можете </span><span class="rvts22">либо воспользоваться клавишами </span><span class="rvts34">Ctrl + Z</span><span class="rvts22"> и </span><span class="rvts34">Ctrl + Y</span><span class="rvts22">, либо </span><span class="rvts22">щёлкать по любой строке Журнала Истории левой кнопкой мыши, чтобы вернуть мувик на время создания соответствующей записи в Журнале.</span></p>
<p class="rvps10"><span class="rvts22">При этом в Piano Roll на долю секунды появляется курсор-указка фиолетового цвета, акцентирующий внимание на месте произведённых при откате изменений.</span></p>
<p class="rvps10"><span class="rvts22">Максимальное количество уровней отката настраивается в меню </span><a class="rvts40" href="ProgramCustomization.html#Setmaxundolevels">Config</a><span class="rvts22">, от этого количества зависит максимальный объём Журнала Истории и, как следствие, объём занимаемой памяти.</span></p>
<p class="rvps10"><span class="rvts22">Полный перечень всех возможных типов записей в Журнал Истории вы можете прочитать в </span><a class="rvts28" href="Operations.html">Справочнике</a><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps2"><a name="selection"></a>
<span class="rvts22"><br/></span></p>
<p class="rvps10"><img align="right" alt="" style="padding : 6px;" src="lib/toolbox-selection.png"/></p>
<p class="rvps10"><span class="rvts22">В самом низу Панели инструментов находятся 4 кнопки для управления Курсором Выделения.</span></p>
<p class="rvps10"><span class="rvts22">О назначении кнопок "</span><span class="rvts32">&lt;&lt;</span><span class="rvts22">" и "</span><span class="rvts32">&gt;&gt;</span><span class="rvts22">" легко догадаться по аналогии с верхники кнопками "</span><span class="rvts32">&lt;&lt;</span><span class="rvts22">" и "</span><span class="rvts32">&gt;&gt;</span><span class="rvts22">" в разделе Playback. Верхняя часть окна Тасэдитора содержит элементы управления для навигации Курсором Проигрывателя, а нижняя часть окна элементы управления для навигации Курсором Выделения.</span></p>
<p class="rvps10"><span class="rvts22">О назначении кнопок "</span><span class="rvts32">&lt;&lt;</span><span class="rvts22">" и "</span><span class="rvts32">&gt;&gt;</span><span class="rvts22">" легко догадаться по аналогии с верхники кнопками "</span><span class="rvts32">&lt;&lt;</span><span class="rvts22">" и "</span><span class="rvts32">&gt;&gt;</span><span class="rvts22">" в разделе Playback. Верхняя часть окна Тасэдитора содержит элементы, относящиеся к Курсору Проигрывателя, а нижняя часть окна к Курсору Выделения.</span></p>
<p class="rvps10"><span class="rvts22">Кнопка "</span><span class="rvts32">&lt;&lt;</span><span class="rvts22">" (прыжок назад) перемещает Курсор Выделения на кадр, на котором установлен вышестоящий Маркер. В примере с верхней картинкой при нажатии "</span><span class="rvts32">&lt;&lt;</span><span class="rvts22">" синий курсор прыгнет с 27-го на 22-й кадр, где установлен Маркер 2. Благодаря этой кнопке можно очень быстро возвращать Выделение к началу редактируемого участка и вообще к началу любого отмеченного участка. У этой кнопки есть аналог на клавиатуре: </span><span class="rvts34">Ctrl + Page Up</span><span class="rvts22">. Эту кнопку можно зажимать синий курсор будет очень быстро прыгать по Маркерам вверх по Piano Roll.</span></p>
<p class="rvps10"><span class="rvts22">Кнопка "</span><span class="rvts32">&gt;&gt;</span><span class="rvts22">" (прыжок вперёд) прыгает Курсором Выделения по Маркерам вперёд. В примере с верхней картинкой при нажатии "</span><span class="rvts32">&gt;&gt;</span><span class="rvts22">" синий курсор прыгнет с 27-го на кадр за пределами видимости (где установлен следующий Маркер), при этом Piano Roll автоматически проскроллируется вслед за Курсором Выделения. Благодаря этой кнопке можно очень быстро перемещаться по мувику вниз. У этой кнопки есть аналог на клавиатуре: </span><span class="rvts34">Ctrl + Page Down</span><span class="rvts22">. Эту кнопку также можно зажимать.</span></p>
<p class="rvps10"><span class="rvts22">Важная особенность этой пары кнопок в том, что Курсор Выделения в отличие от Курсора Проигрывателя не привязан к состоянию игры, поэтому его прыжки по Маркерам всегда совершаются мгновенно, не завися от наличия Гринзоны у целевого кадра. Особенно удобно читать таким образом Заметки Маркеров одну за другой в нижнем текстовом поле, нажимая </span><span class="rvts34">Ctrl + Page Down</span><span class="rvts22"> для мгновенного перехода к следующей Заметке.</span></p>
<p class="rvps10"><span class="rvts22">В качестве эксперимента попробуйте поставить десяток Маркеров по одному через каждые 30-50 кадров а затем зажмите </span><span class="rvts34">Ctrl</span><span class="rvts22"> и, нажимая клавиши </span><span class="rvts26">Page Up</span><span class="rvts22"> или </span><span class="rvts26">Page Down</span><span class="rvts22">, почувствуйте все удобства быстрой навигации. Помимо клавиш </span><span class="rvts26">Page Up</span><span class="rvts22"> и </span><span class="rvts26">Page Down </span><span class="rvts22">можно также вращать колесо мыши, зажав клавишу </span><span class="rvts34">Ctrl</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22">Так как Курсор Выделения не привязан к эмуляции игры, его прыжки по Маркерам всегда совершаются мгновенно, не завися от наличия Гринзоны у целевого кадра. Поэтому удобно читать таким образом Заметки Маркеров одну за другой в нижнем текстовом поле, нажимая </span><span class="rvts34">Ctrl + Page Down</span><span class="rvts22"> для мгновенного перехода к следующей Заметке. </span><span class="rvts22">Помимо клавиш </span><span class="rvts26">Page Up</span><span class="rvts22"> и </span><span class="rvts26">Page Down </span><span class="rvts22">можно также вращать колесо мыши, зажав клавишу </span><span class="rvts34">Ctrl</span><span class="rvts22">.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<p class="rvps10"><span class="rvts22">Кнопки "</span><span class="rvts32">Similar</span><span class="rvts22">" и "</span><span class="rvts32">More</span><span class="rvts22">" нужны для поиска похожих Заметок. Это ещё одна экспериментальная особенность Тасэдитора, о которой будет рассказано позже. Для новичка эта функция не требуется.</span></p>
<p class="rvps10"><span class="rvts22">Кнопки "</span><span class="rvts32">Similar</span><span class="rvts22">" и "</span><span class="rvts32">More</span><span class="rvts22">" нужны для поиска похожих Заметок. Это ещё одна экспериментальная фича Тасэдитора, о которой будет рассказано позже.</span></p>
<p class="rvps10"><span class="rvts22"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p class="rvps2"><span class="rvts22"><br/></span></p>
@ -250,7 +247,7 @@
<div class="rvps10"><table width="100%" border="1" cellpadding="6" cellspacing="2" style="border-color: #000000; border-style: solid;">
<tr valign="top">
<td style="border-color: #000000; border-style: solid;"><p class="rvps10"><span class="rvts26">ПРАКТИЧЕСКОЕ ЗАДАНИЕ: </span><span class="rvts22">Пройдите World 1-1 в игре Super Mario Bros (или любой другой игре) с помощью одной только мышки, без использования режима Записи.</span></p>
<p class="rvps10"><span class="rvts22">Делать спидран не нужно, просто освойтесь с процедурой рисования и стирания </span><span class="rvts22">Ввод</span><span class="rvts22">а, а также с просмотром результатов колесом мыши.</span></p>
<p class="rvps10"><span class="rvts22">Делать спидран не нужно, просто освойтесь с процедурой рисования и стирания </span><span class="rvts22">Ввод</span><span class="rvts22">а, а также с просмотром результатов колесом мыши / средней кнопкой.</span></p>
<p class="rvps10"><span class="rvts26">Примерное время выполнения: </span><span class="rvts22">20-30 минут.</span></p>
</td>
</tr>

View File

@ -260,7 +260,6 @@ span.rvts44 /* Font Style */
span.rvts45
{
font-size: 11pt;
font-weight: bold;
color: #000000;
}
span.rvts46
@ -336,109 +335,115 @@ span.rvts59
{
color: #000000;
}
a.rvts60, span.rvts60
span.rvts60
{
font-size: 11pt;
color: #0000ff;
text-decoration: underline;
font-weight: bold;
color: #000000;
}
a.rvts60:hover { color: #0000ff; }
a.rvts61, span.rvts61
{
font-size: 11pt;
color: #0000ff;
text-decoration: underline;
}
a.rvts61:hover { color: #0000ff; }
span.rvts62
a.rvts62, span.rvts62
{
color: #0000ff;
text-decoration: underline;
}
a.rvts62:hover { color: #0000ff; }
span.rvts63
{
font-size: 11pt;
text-decoration: underline;
}
span.rvts63
span.rvts64
{
}
span.rvts64
span.rvts65
{
font-size: 11pt;
color: #0a8200;
}
span.rvts65
span.rvts66
{
font-size: 9pt;
font-weight: bold;
}
a.rvts66, span.rvts66
a.rvts67, span.rvts67
{
font-size: 9pt;
font-weight: bold;
color: #0000ff;
text-decoration: underline;
}
a.rvts66:hover { color: #0000ff; }
span.rvts67
a.rvts67:hover { color: #0000ff; }
span.rvts68
{
font-weight: bold;
color: #ffffff;
}
span.rvts68
span.rvts69
{
font-size: 12pt;
font-family: 'Courier New', 'Courier', monospace;
color: #000080;
}
span.rvts69 /* Font Style */
span.rvts70 /* Font Style */
{
font-size: 11pt;
font-style: italic;
color: #243f60;
}
span.rvts70 /* Font Style */
span.rvts71 /* Font Style */
{
font-size: 11pt;
color: #333399;
}
a.rvts71, span.rvts71
a.rvts72, span.rvts72
{
font-size: 11pt;
font-weight: bold;
color: #0000ff;
text-decoration: underline;
}
a.rvts71:hover { color: #0000ff; }
span.rvts72
a.rvts72:hover { color: #0000ff; }
span.rvts73
{
font-size: 11pt;
font-style: italic;
font-weight: bold;
}
span.rvts73
{
font-size: 24pt;
text-decoration: underline;
}
span.rvts74
{
font-size: 24pt;
text-decoration: underline;
}
a.rvts75, span.rvts75
span.rvts75
{
font-size: 24pt;
text-decoration: underline;
}
a.rvts76, span.rvts76
{
color: #0000ff;
text-decoration: underline;
}
a.rvts75:hover { color: #0000ff; }
a.rvts76, span.rvts76
a.rvts76:hover { color: #0000ff; }
a.rvts77, span.rvts77
{
font-weight: bold;
color: #ffffff;
text-decoration: underline;
}
a.rvts76:hover { color: #0000ff; }
span.rvts77
a.rvts77:hover { color: #0000ff; }
span.rvts78
{
color: #ffffff;
}
span.rvts78
span.rvts79
{
color: #333399;
}

File diff suppressed because one or more lines are too long

View File

@ -325,9 +325,9 @@
target="FrameMain">
Ответы на вопросы</a>
</li><li class="" id="SpeedrunnersSynopsis" data="icon: '1.png'">
</li><li class="" id="SpeedrunningSynopsis" data="icon: '1.png'">
<a
href="SpeedrunnersSynopsis.html"
href="SpeedrunningSynopsis.html"
target="FrameMain">
Конспект спидраннера</a>