missing files added

first changes to debugger docs
This commit is contained in:
thrust26 2017-11-26 13:42:56 +01:00
parent 9cb1280a37
commit c1fc60a4e0
14 changed files with 146 additions and 106 deletions

View File

@ -227,11 +227,14 @@ debugger without typing (or without typing much, anyway).</p>
<p>While entering a command, label or function, you can type a partial name and <p>While entering a command, label or function, you can type a partial name and
press the Tab key to attempt to auto-complete it. If you've ever used press the Tab key to attempt to auto-complete it. If you've ever used
"bash", this will be immediately familiar. If not, try it: load up "bash", this will be immediately familiar. If not, try it: load up
a ROM, go to the debugger, type "print w" (but don't press Enter), a ROM, go to the debugger, type "g" (but don't press Enter),
then hit Tab. The "w" will change to "WSYNC" (since this is the only then hit Tab. The "g" will change to "gfx" (since this is the only
built-in label starting with a "w"). If there are multiple possible built-in command starting with a "g"). If there are multiple possible
completions (try with "v" instead of "w"), you'll see a list of them, completions (try with "tr" instead of "g"), you'll see a list of them,
and your partial name will be completed as far as possible.</p> and your partial name will be completed as far as possible.
After the first character, the autocompletion completion considers all
characters in the right order as a match (e.g. "twf" will be completed to
"trapwriteif").</p>
<p>Tab completion works on all labels: built-in, loaded from a symbol file, <p>Tab completion works on all labels: built-in, loaded from a symbol file,
or set during debugging with the "define" command. It also works with or set during debugging with the "define" command. It also works with
@ -425,7 +428,7 @@ ROMs only check for input once per frame anyway.</p>
<p>Conditional breaks appear in "listbreaks", numbered starting from <p>Conditional breaks appear in "listbreaks", numbered starting from
zero. You can remove a cond-break with "delbreakif number", where zero. You can remove a cond-break with "delbreakif number", where
the number comes from "listbreaks".</p> the number comes from "listbreaks" or by entering the same conditional break again.</p>
<p>Any time the debugger is entered due to a trap, breakpoint, or <p>Any time the debugger is entered due to a trap, breakpoint, or
conditional break, the reason will be displayed in the status area conditional break, the reason will be displayed in the status area
@ -542,10 +545,13 @@ that holds 'number of scanlines' on an actual console).</p>
<tr><th>Function</th><th>Description</th></tr> <tr><th>Function</th><th>Description</th></tr>
<tr><td> _bank</td><td> Currently selected bank</td></tr> <tr><td> _bank</td><td> Currently selected bank</td></tr>
<tr><td> _cclocks</td><td> Color clocks on a scanline</td></tr> <tr><td> _cclocks</td><td> Color clocks on a scanline</td></tr>
<tr><td> _cycleshi</td><td> Higher 32 bits of number of cycles since emulation started</td></tr>
<tr><td> _cycleslo</td><td> Lower 32 bits of number of cycles since emulation started</td></tr>
<tr><td> _fcount</td><td> Number of frames since emulation started</td></tr> <tr><td> _fcount</td><td> Number of frames since emulation started</td></tr>
<tr><td> _fcycles</td><td> Number of cycles since frame started</td></tr> <tr><td> _fcycles</td><td> Number of cycles since frame started</td></tr>
<tr><td> _rwport</td><td> Last address to attempt a read from the cart write port</td></tr> <tr><td> _rwport</td><td> Last address to attempt a read from the cart write port</td></tr>
<tr><td> _scan</td><td> Current scanline count</td></tr> <tr><td> _scan</td><td> Current scanline count</td></tr>
<tr><td> _scycles</td><td> Number of cycles in current scanline</td></tr>
<tr><td> _vblank</td><td> Whether vertical blank is enabled (1 or 0)</td></tr> <tr><td> _vblank</td><td> Whether vertical blank is enabled (1 or 0)</td></tr>
<tr><td> _vsync</td><td> Whether vertical sync is enabled (1 or 0)</td></tr> <tr><td> _vsync</td><td> Whether vertical sync is enabled (1 or 0)</td></tr>
</table> </table>
@ -595,6 +601,11 @@ accesses to a memory address, rather than specific location in the
program. They're useful for finding code that modifies TIA registers program. They're useful for finding code that modifies TIA registers
or memory.</p> or memory.</p>
<p>Traps can also combined with a condition ("trapif"). If an access
to a memory access is caught, the condition is evaluated additionally.
Only if the condition is true too, the emulations stops.
</p>
<p>An example: you are debugging a game, and you want to stop the <p>An example: you are debugging a game, and you want to stop the
emulation and enter the debugger whenever RESP0 is strobed. You'd use emulation and enter the debugger whenever RESP0 is strobed. You'd use
the command "trap RESP0" to set the trap, then exit the debugger. The the command "trap RESP0" to set the trap, then exit the debugger. The
@ -614,7 +625,7 @@ so the best we can do is stop before the next instruction runs.</p>
<p>Traps come in two varieties: read access traps and write access traps. <p>Traps come in two varieties: read access traps and write access traps.
It is possible to set both types of trap on the same address (that's It is possible to set both types of trap on the same address (that's
what the plain "trap" command does). To set a read or write only trap, what the plain "trap" command does). To set a read or write only trap,
use "trapread" or "trapwrite". To remove a trap, you just attempt use "trapread(if)" or "trapwrite(if)". To remove a trap, you just attempt
to set it again: the commands actually toggle the trap on &amp; off. You to set it again: the commands actually toggle the trap on &amp; off. You
can also get rid of all traps at once with the "cleartraps" command.</p> can also get rid of all traps at once with the "cleartraps" command.</p>
@ -626,78 +637,97 @@ can also get rid of all traps at once with the "cleartraps" command.</p>
Type "help 'cmd'" to see extended information about the given command.</p> Type "help 'cmd'" to see extended information about the given command.</p>
<pre> <pre>
a - Set Accumulator to &lt;value&gt; a - Set Accumulator to &lt;value&gt;
base - Set default base to &lt;base&gt; base - Set default base to &lt;base&gt;
break - Set/clear breakpoint at &lt;address&gt; break - Set/clear breakpoint at &lt;address&gt;
breakif - Set breakpoint on &lt;condition&gt; breakif - Set breakpoint on &lt;condition&gt;
c - Carry Flag: set (0 or 1), or toggle (no arg) c - Carry Flag: set (0 or 1), or toggle (no arg)
cheat - Use a cheat code (see manual for cheat types) cheat - Use a cheat code (see manual for cheat types)
clearbreaks - Clear all breakpoints clearbreaks - Clear all breakpoints
clearconfig - Clear Distella config directives [bank xx] clearconfig - Clear Distella config directives [bank xx]
cleartraps - Clear all traps clearsavestateifs - Clear all savestate points
clearwatches - Clear all watches cleartraps - Clear all traps
cls - Clear prompt area of text clearwatches - Clear all watches
code - Mark 'CODE' range in disassembly cls - Clear prompt area of text
colortest - Show value xx as TIA color code - Mark 'CODE' range in disassembly
d - Carry Flag: set (0 or 1), or toggle (no arg) colortest - Show value xx as TIA color
data - Mark 'DATA' range in disassembly d - Carry Flag: set (0 or 1), or toggle (no arg)
debugcolors - Show Fixed Debug Colors information data - Mark 'DATA' range in disassembly
define - Define label xx for address yy debugcolors - Show Fixed Debug Colors information
delbreakif - Delete conditional breakif &lt;xx&gt; define - Define label xx for address yy
delfunction - Delete function with label xx delbreakif - Delete conditional breakif &lt;xx&gt;
delwatch - Delete watch &lt;xx&gt; delfunction - Delete function with label xx
disasm - Disassemble address xx [yy lines] (default=PC) delsavestateif - Delete conditional savestate point &lt;xx&gt;
dump - Dump data at address &lt;xx&gt; [to yy] delwatch - Delete watch &lt;xx&gt;
exec - Execute script file &lt;xx&gt; disasm - Disassemble address xx [yy lines] (default=PC)
exitrom - Exit emulator, return to ROM launcher dump - Dump data at address &lt;xx&gt; [to yy]
frame - Advance emulation by &lt;xx&gt; frames (default=1) exec - Execute script file &lt;xx&gt;
function - Define function name xx for expression yy exitrom - Exit emulator, return to ROM launcher
gfx - Mark 'GFX' range in disassembly frame - Advance emulation by &lt;xx&gt; frames (default=1)
help - help &lt;command&gt; function - Define function name xx for expression yy
jump - Scroll disassembly to address xx gfx - Mark 'GFX' range in disassembly
listbreaks - List breakpoints help - help &lt;command&gt;
listconfig - List Distella config directives [bank xx] joy0up - Set joystick 0 up direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
listfunctions - List user-defined functions joy0down - Set joystick 0 down direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
listtraps - List traps joy0left - Set joystick 0 left direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
loadconfig - Load Distella config file joy0right - Set joystick 0 right direction to value <x> (0 or 1), or toggle (no arg)
loadstate - Load emulator state xx (0-9) joy0fire - Set joystick 0 fire button to value &lt;x&gt; (0 or 1), or toggle (no arg)
n - Negative Flag: set (0 or 1), or toggle (no arg) joy1up - Set joystick 1 up direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
palette - Show current TIA palette joy1down - Set joystick 1 down direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
pc - Set Program Counter to address xx joy1left - Set joystick 1 left direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
pgfx - Mark 'PGFX' range in disassembly joy1right - Set joystick 1 right direction to value &lt;x&gt; (0 or 1), or toggle (no arg)
print - Evaluate/print expression xx in hex/dec/binary joy1fire - Set joystick 1 fire button to value &lt;x&gt; (0 or 1), or toggle (no arg)
ram - Show ZP RAM, or set address xx to yy1 [yy2 ...] jump - Scroll disassembly to address xx
reset - Reset system to power-on state listbreaks - List breakpoints
rewind - Rewind state to last step/trace/scanline/frame listconfig - List Distella config directives [bank xx]
riot - Show RIOT timer/input status listfunctions - List user-defined functions
rom - Set ROM address xx to yy1 [yy2 ...] listsavestateifs - List savestate points
row - Mark 'ROW' range in disassembly listtraps - List traps
run - Exit debugger, return to emulator loadconfig - Load Distella config file
runto - Run until string xx in disassembly loadstate - Load emulator state xx (0-9)
runtopc - Run until PC is set to value xx n - Negative Flag: set (0 or 1), or toggle (no arg)
s - Set Stack Pointer to value xx palette - Show current TIA palette
save - Save breaks, watches, traps to file xx pc - Set Program Counter to address xx
saveconfig - Save Distella config file (with default name) pgfx - Mark 'PGFX' range in disassembly
savedis - Save Distella disassembly (with default name) print - Evaluate/print expression xx in hex/dec/binary
saverom - Save (possibly patched) ROM (with default name) ram - Show ZP RAM, or set address xx to yy1 [yy2 ...]
saveses - Save console session to file xx reset - Reset system to power-on state
savesnap - Save current TIA image to PNG file rewind - Rewind state to last [xx] steps/traces/scanlines/frames...
savestate - Save emulator state xx (valid args 0-9) riot - Show RIOT timer/input status
scanline - Advance emulation by &lt;xx&gt; scanlines (default=1) rom - Set ROM address xx to yy1 [yy2 ...]
step - Single step CPU [with count xx] row - Mark 'ROW' range in disassembly
tia - Show TIA state run - Exit debugger, return to emulator
trace - Single step CPU over subroutines [with count xx] runto - Run until string xx in disassembly
trap - Trap read/write access to address(es) xx [yy] runtopc - Run until PC is set to value xx
trapread - Trap read access to address(es) xx [yy] s - Set Stack Pointer to value xx
trapwrite - Trap write access to address(es) xx [yy] save - Save breaks, watches, traps to file xx
type - Show disassembly type for address xx [yy] saveconfig - Save Distella config file (with default name)
uhex - Toggle upper/lowercase HEX display savedis - Save Distella disassembly (with default name)
undef - Undefine label xx (if defined) saverom - Save (possibly patched) ROM (with default name)
v - Overflow Flag: set (0 or 1), or toggle (no arg) saveses - Save console session to file xx
watch - Print contents of address xx before every prompt savesnap - Save current TIA image to PNG file
x - Set X Register to value xx savestate - Save emulator state xx (valid args 0-9)
y - Set Y Register to value xx savestateif - Create savestate on &lt;condition&gt;
z - Zero Flag: set (0 or 1), or toggle (no arg) scanline - Advance emulation by &lt;xx&gt; scanlines (default=1)
step - Single step CPU [with count xx]
stepwhile - Single step CPU while &lt;condition&gt; is true
tia - Show TIA state
trace - Single step CPU over subroutines [with count xx]
trap - Trap read/write access to address(es) xx [yy]
trapif - On &lt;condition&gt; trap R/W access to address(es) xx [yy]
trapread - On Trap read access to address(es) xx [yy]
trapreadif - On &lt;condition&gt; trap read access to address(es) xx [yy]
trapwrite - Trap write access to address(es) xx [yy]
trapwriteif - On &lt;condition&gt; trap write access to address(es) xx [yy]
type - Show disassembly type for address xx [yy]
uhex - Toggle upper/lowercase HEX display
undef - Undefine label xx (if defined)
unwind - Unwind state to next [xx] steps/traces/scanlines/frames...
v - Overflow Flag: set (0 or 1), or toggle (no arg)
watch - Print contents of address xx before every prompt
x - Set X Register to value xx
y - Set Y Register to value xx
z - Zero Flag: set (0 or 1), or toggle (no arg)
</pre> </pre>
@ -806,8 +836,8 @@ as illustrated:</p>
option will draw all scanlines up to the vertical position where the option will draw all scanlines up to the vertical position where the
mouse was clicked. Note that if you weren't in partial-frame mode, mouse was clicked. Note that if you weren't in partial-frame mode,
this option will have no effect.</li> this option will have no effect.</li>
<li><b>Set breakpoint</b>: Will set a conditional breakpoint at the <li><b>Toggle breakpoint</b>: Will toggle a conditional breakpoint at the
scanline where the mouse was clicked. Currently, you'll need to use scanline where the mouse was clicked. You can to use
the Prompt Tab to turn the breakpoint off again.</li> the Prompt Tab to turn the breakpoint off again.</li>
<li><b>Set zoom position</b>: Influences what is shown in the TIA <li><b>Set zoom position</b>: Influences what is shown in the TIA
zoom area (further described in part (G). The zoom area will zoom area (further described in part (G). The zoom area will

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -2981,8 +2981,8 @@
<blockquote> <blockquote>
<p>Several developer related settings can be configured in the 'Developer Settings' dialog. <p>Several developer related settings can be configured in the 'Developer Settings' dialog.
Two sets ('Player settings', 'Developer settings') allow easy switching between different Two sets ('Player settings', 'Developer settings') allow easy adjustment of all settings
settings (for playing or developing games) at once.</p> for different use cases (playing or developing games) at once.</p>
<p><b>Developer Settings</b> dialog (Emulator)</p> <p><b>Developer Settings</b> dialog (Emulator)</p>
<table border="5" cellpadding="2" frame="box" rules="none"> <table border="5" cellpadding="2" frame="box" rules="none">
@ -3300,7 +3300,8 @@ Ms Pac-Man (Stella extended codes):
<p>Stella uses game properties to specify the "best" emulator settings for a <p>Stella uses game properties to specify the "best" emulator settings for a
game. As of version 2.2 of Stella, a default database of properties are game. As of version 2.2 of Stella, a default database of properties are
built-in, but you may modify these through the use of a <b>stella.pro</b> file. built-in, but you may modify these through the use of a <b>stella.pro</b> file
or within the corresponding Game Properties dialogs.
This file will contain all properties modified by the user. So this This file will contain all properties modified by the user. So this
means that when you upgrade Stella, your personal properties settings are means that when you upgrade Stella, your personal properties settings are
preserved.</p> preserved.</p>
@ -3340,6 +3341,7 @@ Ms Pac-Man (Stella extended codes):
<p>Each block in a property file consists of a set of properties for a single <p>Each block in a property file consists of a set of properties for a single
game. Stella supports the properties described below:</p> game. Stella supports the properties described below:</p>
<a><img src="graphics/options_gameinfo.png"></a>
<table CELLSPACING="10"> <table CELLSPACING="10">
<tr> <tr>
<td VALIGN="TOP"><i>Cartridge.MD5:</i></td> <td VALIGN="TOP"><i>Cartridge.MD5:</i></td>
@ -3445,7 +3447,10 @@ Ms Pac-Man (Stella extended codes):
<tr><td>X07 &#185;</td><td>64K AtariAge </td></tr> <tr><td>X07 &#185;</td><td>64K AtariAge </td></tr>
</table></td> </table></td>
</tr> </tr>
</table>
<a><img src="graphics/options_gameinfo_console.png"></a>
<table CELLSPACING="10">
<tr> <tr>
<td VALIGN="TOP"><i>Console.LeftDifficulty:</i></td> <td VALIGN="TOP"><i>Console.LeftDifficulty:</i></td>
<td>Indicates the default difficulty setting for the left <td>Indicates the default difficulty setting for the left
@ -3463,15 +3468,10 @@ Ms Pac-Man (Stella extended codes):
<td>Indicates the default television setting for the <td>Indicates the default television setting for the
game. The value must be <b>Color</b> or <b>BW</b>.</td> game. The value must be <b>Color</b> or <b>BW</b>.</td>
</tr> </tr>
</table>
<tr> <a><img src="graphics/options_gameinfo_controller.png"></a>
<td VALIGN="TOP"><i>Console.SwapPorts:</i></td> <table CELLSPACING="10">
<td>Indicates that the left and right ports should be
swapped internally. This is used for ROMs like 'Raiders' where the
Player 0 joystick is plugged into the right joystick port.
The value must be <b>Yes</b> or <b>No</b>.</td>
</tr>
<tr> <tr>
<td VALIGN="TOP"><i>Controller.Left:</i><br><i>Controller.Right:</i></td> <td VALIGN="TOP"><i>Controller.Left:</i><br><i>Controller.Right:</i></td>
<td>Indicates what type of controller the left and right player <td>Indicates what type of controller the left and right player
@ -3489,8 +3489,7 @@ Ms Pac-Man (Stella extended codes):
<tr><td>AmigaMouse</td><td>Commodore Amiga computer mouse.</td></tr> <tr><td>AmigaMouse</td><td>Commodore Amiga computer mouse.</td></tr>
<tr><td>AtariMouse </td><td>Atari ST computer mouse.</td></tr> <tr><td>AtariMouse </td><td>Atari ST computer mouse.</td></tr>
<tr><td>Trakball </td><td>Standard Atari 2600 CX22/CX80 trakball controller.</td></tr> <tr><td>Trakball </td><td>Standard Atari 2600 CX22/CX80 trakball controller.</td></tr>
<tr><td><a href="http://atariage.com/store/index.php?l=product_list&c=98"> <tr><td><a href="http://atariage.com/store/index.php?l=product_list&c=98">AtariVox</a></td><td>A SpeakJet based unlimited-vocabulary speech / sound synthesizer with 32K EEPROM.</td></tr>
AtariVox</a></td><td>A SpeakJet based unlimited-vocabulary speech / sound synthesizer with 32K EEPROM.</td></tr>
<tr><td><a href="http://www.vectrex.biz/MemCard.htm">SaveKey</a></td><td>A 32K EEPROM for saving high scores, etc. (the EEPROM portion of an AtariVox).</td></tr> <tr><td><a href="http://www.vectrex.biz/MemCard.htm">SaveKey</a></td><td>A 32K EEPROM for saving high scores, etc. (the EEPROM portion of an AtariVox).</td></tr>
<tr><td>Genesis </td><td>Sega Genesis controller, which can be used similar to a BoosterGrip, giving an extra button.</td></tr> <tr><td>Genesis </td><td>Sega Genesis controller, which can be used similar to a BoosterGrip, giving an extra button.</td></tr>
<tr><td>CompuMate </td><td>Spectravideo CompuMate (if either left or right is set, CompuMate is used for both).</td></tr> <tr><td>CompuMate </td><td>Spectravideo CompuMate (if either left or right is set, CompuMate is used for both).</td></tr>
@ -3498,6 +3497,14 @@ Ms Pac-Man (Stella extended codes):
</table></td> </table></td>
</tr> </tr>
<tr>
<td VALIGN="TOP"><i>Console.SwapPorts:</i></td>
<td>Indicates that the left and right ports should be
swapped internally. This is used for ROMs like 'Raiders' where the
Player 0 joystick is plugged into the right joystick port.
The value must be <b>Yes</b> or <b>No</b>.</td>
</tr>
<tr> <tr>
<td VALIGN="TOP"><i>Controller.SwapPaddles:</i></td> <td VALIGN="TOP"><i>Controller.SwapPaddles:</i></td>
<td>Indicates that the left and right paddles in <td>Indicates that the left and right paddles in
@ -3535,7 +3542,10 @@ Ms Pac-Man (Stella extended codes):
In the latter case, XY indicates In the latter case, XY indicates
how to use the X/Y axis (ie, 02 is paddle0/paddle2). how to use the X/Y axis (ie, 02 is paddle0/paddle2).
--> -->
</table>
<a><img src="graphics/options_gameinfo_display.png"></a>
<table CELLSPACING="10">
<tr> <tr>
<td VALIGN="TOP"><i>Display.Format:</i></td> <td VALIGN="TOP"><i>Display.Format:</i></td>
<td>Indicates the television format the game was designed for. The value <td>Indicates the television format the game was designed for. The value

View File

@ -2279,16 +2279,6 @@ DebuggerParser::Command DebuggerParser::commands[kNumCommands] = {
std::mem_fn(&DebuggerParser::executeClearbreaks) std::mem_fn(&DebuggerParser::executeClearbreaks)
}, },
{
"clearsavestateifs",
"Clear all savestate points",
"Example: clearsavestateifss (no parameters)",
false,
true,
{ kARG_END_ARGS },
std::mem_fn(&DebuggerParser::executeClearsavestateifs)
},
{ {
"clearconfig", "clearconfig",
"Clear Distella config directives [bank xx]", "Clear Distella config directives [bank xx]",
@ -2299,6 +2289,16 @@ DebuggerParser::Command DebuggerParser::commands[kNumCommands] = {
std::mem_fn(&DebuggerParser::executeClearconfig) std::mem_fn(&DebuggerParser::executeClearconfig)
}, },
{
"clearsavestateifs",
"Clear all savestate points",
"Example: clearsavestateifss (no parameters)",
false,
true,
{ kARG_END_ARGS },
std::mem_fn(&DebuggerParser::executeClearsavestateifs)
},
{ {
"cleartraps", "cleartraps",
"Clear all traps", "Clear all traps",
@ -2776,7 +2776,7 @@ DebuggerParser::Command DebuggerParser::commands[kNumCommands] = {
{ {
"rewind", "rewind",
"Rewind state to last step/trace/scanline/frame...", "Rewind state to last [xx] steps/traces/scanlines/frames...",
"Example: rewind, rewind 5", "Example: rewind, rewind 5",
false, false,
true, true,
@ -3089,7 +3089,7 @@ DebuggerParser::Command DebuggerParser::commands[kNumCommands] = {
{ {
"unwind", "unwind",
"Unwind state to next step/trace/scanline/frame...", "Unwind state to next [xx] steps/traces/scanlines/frames...",
"Example: unwind, unwind 5", "Example: unwind, unwind 5",
false, false,
true, true,