help: hint on PAL autodetection.
[[Split portion of a mixed commit.]]
This commit is contained in:
parent
ead61dfe9b
commit
54202b5a7d
1738
help/6502CPU.html
1738
help/6502CPU.html
File diff suppressed because it is too large
Load Diff
|
@ -82,15 +82,15 @@
|
||||||
<p>Furthermore, while the Code/Data Logger is running, the <a class="rvts18" href="HexEditor.html">Hex Editor</a> will color-code ROM bytes depending on whether they were logged as code or data:</p>
|
<p>Furthermore, while the Code/Data Logger is running, the <a class="rvts18" href="HexEditor.html">Hex Editor</a> will color-code ROM bytes depending on whether they were logged as code or data:</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>For PRG ROM:</p>
|
<p>For PRG ROM:</p>
|
||||||
<p><span class="rvts51">Dark-yellow</span> - the byte is code</p>
|
<p><span class="rvts52">Dark-yellow</span> - the byte is code</p>
|
||||||
<p><span class="rvts52">Blue</span> - the byte is data</p>
|
<p><span class="rvts53">Blue</span> - the byte is data</p>
|
||||||
<p><span class="rvts53">Cyan</span> - the byte is PCM audio data</p>
|
<p><span class="rvts54">Cyan</span> - the byte is PCM audio data</p>
|
||||||
<p><span class="rvts50">Green</span> - the byte is both code and data</p>
|
<p><span class="rvts51">Green</span> - the byte is both code and data</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>For CHR ROM:</p>
|
<p>For CHR ROM:</p>
|
||||||
<p><span class="rvts54">Yellow</span> - the byte was rendered</p>
|
<p><span class="rvts55">Yellow</span> - the byte was rendered</p>
|
||||||
<p><span class="rvts55">Light-blue</span> - the byte was read programmatically</p>
|
<p><span class="rvts56">Light-blue</span> - the byte was read programmatically</p>
|
||||||
<p><span class="rvts56">Light-green</span> - the byte was both rendered and read programmatically</p>
|
<p><span class="rvts57">Light-green</span> - the byte was both rendered and read programmatically</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>The Code/Data Logger can also be used to generate a stripped NES ROM.</p>
|
<p>The Code/Data Logger can also be used to generate a stripped NES ROM.</p>
|
||||||
<p>"Stripped" NES ROM is a ROM in which everything that was not logged by the Code/Data Logger is removed. It can be useful in many ways, for example, you can view the ROM in an external Hex Editor or a Tile Viewer, and you'll see only the parts that were used while playing. Furthermore, you could use it to create a demo ROM by only playing through the parts you would like others to see.</p>
|
<p>"Stripped" NES ROM is a ROM in which everything that was not logged by the Code/Data Logger is removed. It can be useful in many ways, for example, you can view the ROM in an external Hex Editor or a Tile Viewer, and you'll see only the parts that were used while playing. Furthermore, you could use it to create a demo ROM by only playing through the parts you would like others to see.</p>
|
||||||
|
|
|
@ -56,33 +56,33 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Guides for the specific tools and settings under FCEUX's Debug menu.</p>
|
<p>Guides for the specific tools and settings under FCEUX's Debug menu.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts43" href="Debugger.html">Debugger</a></p>
|
<p><a class="rvts44" href="Debugger.html">Debugger</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A tool for looking at game instructions in assembly language. With experience,</p>
|
<p>A tool for looking at game instructions in assembly language. With experience,</p>
|
||||||
<p>one can use it to fix game patching errors, or find RAM and Game Genie codes.</p>
|
<p>one can use it to fix game patching errors, or find RAM and Game Genie codes.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts43" href="PPUViewer.html">PPU Viewer</a></p>
|
<p><a class="rvts44" href="PPUViewer.html">PPU Viewer</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A tool that displays the current PPU contents and related information. The PPU</p>
|
<p>A tool that displays the current PPU contents and related information. The PPU</p>
|
||||||
<p>viewer allows you to view the graphic squares that make up what's displayed.</p>
|
<p>viewer allows you to view the graphic squares that make up what's displayed.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts43" href="NameTableViewer.html">Name Table Viewer</a></p>
|
<p><a class="rvts44" href="NameTableViewer.html">Name Table Viewer</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A tool for displaying the current Name Table contents. Helps to isolate PPU</p>
|
<p>A tool for displaying the current Name Table contents. Helps to isolate PPU</p>
|
||||||
<p>and tile information, which allows the debugger to be used to check PPU coding.</p>
|
<p>and tile information, which allows the debugger to be used to check PPU coding.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts43" href="HexEditor.html">Hex Editor</a></p>
|
<p><a class="rvts44" href="HexEditor.html">Hex Editor</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A tool for displaying a game's RAM contents and for memory poking. Also allows</p>
|
<p>A tool for displaying a game's RAM contents and for memory poking. Also allows</p>
|
||||||
<p>for reading in the raw PPU data, copy/paste-ing RAM, and visually debugging RAM.</p>
|
<p>for reading in the raw PPU data, copy/paste-ing RAM, and visually debugging RAM.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts43" href="TraceLogger.html">Trace Logger</a></p>
|
<p><a class="rvts44" href="TraceLogger.html">Trace Logger</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Captures assembly code instructions and outputs them to a file or the window. Very</p>
|
<p>Captures assembly code instructions and outputs them to a file or the window. Very</p>
|
||||||
<p>useful for analyzing code, finding crash addresses, fixing transferred routines, and</p>
|
<p>useful for analyzing code, finding crash addresses, fixing transferred routines, and</p>
|
||||||
<p>for comparing routine function between a game and a persistently buggy NSF.</p>
|
<p>for comparing routine function between a game and a persistently buggy NSF.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts43" href="CodeDataLogger.html">Code/Data Logger</a></p>
|
<p><a class="rvts44" href="CodeDataLogger.html">Code/Data Logger</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Allows you to extract the data used by a game. Make patch demos, find data</p>
|
<p>Allows you to extract the data used by a game. Make patch demos, find data</p>
|
||||||
<p>loaded by a game around a certain point, or just map out a single routine run.</p>
|
<p>loaded by a game around a certain point, or just map out a single routine run.</p>
|
||||||
|
|
|
@ -59,7 +59,7 @@
|
||||||
<p><span class="rvts17">Debugger</span></p>
|
<p><span class="rvts17">Debugger</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts44">Introduction</span></p>
|
<p><span class="rvts45">Introduction</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>The debugger is a tool for inspecting and manipulating machine instructions and their execution. The debugger window has several components:</p>
|
<p>The debugger is a tool for inspecting and manipulating machine instructions and their execution. The debugger window has several components:</p>
|
||||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts44">Execution and CPU State</span></p>
|
<p><span class="rvts45">Execution and CPU State</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Execution is controlled by the set of buttons at the top-middle of the window. These allow you to break (pause) execution and inspect the current state of the NES.</p>
|
<p>Execution is controlled by the set of buttons at the top-middle of the window. These allow you to break (pause) execution and inspect the current state of the NES.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -95,26 +95,26 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<div><table width="100%" border="1" cellpadding="6" cellspacing="2" style="border-color: #000000; border-style: solid;">
|
<div><table width="100%" border="1" cellpadding="6" cellspacing="2" style="border-color: #000000; border-style: solid;">
|
||||||
<tr valign="top">
|
<tr valign="top">
|
||||||
<td style="border-color: #000000; border-style: solid; width: 305px; height: 34px;"><p><span class="rvts46">HINT: When entering the address manually, these convenient strings may be used instead of the hexadecimal memory address:</span></p>
|
<td style="border-color: #000000; border-style: solid; width: 305px; height: 34px;"><p><span class="rvts47">HINT: When entering the address manually, these convenient strings may be used instead of the hexadecimal memory address:</span></p>
|
||||||
<p><span class="rvts46">NES special addresses:</span></p>
|
<p><span class="rvts47">NES special addresses:</span></p>
|
||||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||||
<li><span class="rvts46">NMI/VBL - non-maskable interrupt vector (at FFFA)</span></li>
|
<li><span class="rvts47">NMI/VBL - non-maskable interrupt vector (at FFFA)</span></li>
|
||||||
<li><span class="rvts46">RST - reset vector (at FFFC)</span></li>
|
<li><span class="rvts47">RST - reset vector (at FFFC)</span></li>
|
||||||
<li><span class="rvts46">IRQ - interrupt vector (at FFFE)</span></li>
|
<li><span class="rvts47">IRQ - interrupt vector (at FFFE)</span></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p><span class="rvts46">FDS special addresses:</span></p>
|
<p><span class="rvts47">FDS special addresses:</span></p>
|
||||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||||
<li><span class="rvts46">NMI1 - non-maskable interrupt vector (at DFF6)</span></li>
|
<li><span class="rvts47">NMI1 - non-maskable interrupt vector (at DFF6)</span></li>
|
||||||
<li><span class="rvts46">NMI2 - non-maskable interrupt vector (at DFF8)</span></li>
|
<li><span class="rvts47">NMI2 - non-maskable interrupt vector (at DFF8)</span></li>
|
||||||
<li><span class="rvts46">NMI3 - non-maskable interrupt vector (at DFFA)</span></li>
|
<li><span class="rvts47">NMI3 - non-maskable interrupt vector (at DFFA)</span></li>
|
||||||
<li><span class="rvts46">RST - reset vector (at DFFC)</span></li>
|
<li><span class="rvts47">RST - reset vector (at DFFC)</span></li>
|
||||||
<li><span class="rvts46">IRQ - interrupt vector (at DFFE)</span></li>
|
<li><span class="rvts47">IRQ - interrupt vector (at DFFE)</span></li>
|
||||||
</ul>
|
</ul>
|
||||||
<p><span class="rvts46">NSF special addresses:</span></p>
|
<p><span class="rvts47">NSF special addresses:</span></p>
|
||||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||||
<li><span class="rvts46">LOAD - NSF LOAD address</span></li>
|
<li><span class="rvts47">LOAD - NSF LOAD address</span></li>
|
||||||
<li><span class="rvts46">INIT - NSF INIT address</span></li>
|
<li><span class="rvts47">INIT - NSF INIT address</span></li>
|
||||||
<li><span class="rvts46">PLAY - NSF PLAY address</span></li>
|
<li><span class="rvts47">PLAY - NSF PLAY address</span></li>
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -130,7 +130,7 @@
|
||||||
<p>To the right from the PPU section there's Cycles counter and Instructions counter that keep counting while the game is running. You can use the information for keeping statistics, for code profiling or writing PPU-synchronized code (e.g. raster effects). You can also make the debugger break automatically based on the counters values. The "Reset counters" button resets both counters to 0. You can also access the counters via <a class="rvts18" href="LuaFunctionsList.html">Lua</a>.</p>
|
<p>To the right from the PPU section there's Cycles counter and Instructions counter that keep counting while the game is running. You can use the information for keeping statistics, for code profiling or writing PPU-synchronized code (e.g. raster effects). You can also make the debugger break automatically based on the counters values. The "Reset counters" button resets both counters to 0. You can also access the counters via <a class="rvts18" href="LuaFunctionsList.html">Lua</a>.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts44">Disassembly</span></p>
|
<p><span class="rvts45">Disassembly</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>This large frame takes up the left side of the debugger window. It displays the current contents of memory accessible by the CPU with an automatic disassembly of that data into assembly instructions. The following memory ranges may contain useful data for inspection:</p>
|
<p>This large frame takes up the left side of the debugger window. It displays the current contents of memory accessible by the CPU with an automatic disassembly of that data into assembly instructions. The following memory ranges may contain useful data for inspection:</p>
|
||||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||||
|
@ -142,8 +142,8 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Memory contents are displayed in this form:</p>
|
<p>Memory contents are displayed in this form:</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts45">0F:C0A8:24 1F BIT $001F = #$80</span></p>
|
<p><span class="rvts46">0F:C0A8:24 1F BIT $001F = #$80</span></p>
|
||||||
<p><span class="rvts45">bb:mmmm:dd dd dd iiiiiiiiiiiii...</span></p>
|
<p><span class="rvts46">bb:mmmm:dd dd dd iiiiiiiiiiiii...</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||||
<li>bb - 16k iNES bank, designates which 16k bank from the iNES file is mapped here. Note that the number may be not the same as the actual hardware bank of the mapper.</li>
|
<li>bb - 16k iNES bank, designates which 16k bank from the iNES file is mapped here. Note that the number may be not the same as the actual hardware bank of the mapper.</li>
|
||||||
|
@ -162,7 +162,7 @@
|
||||||
<p>Also, when <a class="rvts18" href="CodeDataLogger.html">Code/Data Logger</a> is running, this small column displays whether the respective line of the disassembled memory was executed ("c") or it was read as Data ("d"), or it wasn't logged yet (empty space). This way you can easily distinguish which branches of the game code were executed and which weren't.</p>
|
<p>Also, when <a class="rvts18" href="CodeDataLogger.html">Code/Data Logger</a> is running, this small column displays whether the respective line of the disassembled memory was executed ("c") or it was read as Data ("d"), or it wasn't logged yet (empty space). This way you can easily distinguish which branches of the game code were executed and which weren't.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts44">Symbolic Debugging</span></p>
|
<p><span class="rvts45">Symbolic Debugging</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>FCEUX allows you to label any address of RAM or ROM with a human-readable symbolic name.</p>
|
<p>FCEUX allows you to label any address of RAM or ROM with a human-readable symbolic name.</p>
|
||||||
<p>For example, when you've figured out that at the address $C022 there's a subroutine which refills player HP, you can right-click the address and type a name like "AddHealthpoints". You can also add a comment, which will be seen while browsing the code near this address. From now on, the address will be substituted by the name everywhere - in all instructions referencing this address, in Hex Editor window, in the log produced by Trace Logger. E.g., JSR $C022 will look like JSR AddHealthpoints.</p>
|
<p>For example, when you've figured out that at the address $C022 there's a subroutine which refills player HP, you can right-click the address and type a name like "AddHealthpoints". You can also add a comment, which will be seen while browsing the code near this address. From now on, the address will be substituted by the name everywhere - in all instructions referencing this address, in Hex Editor window, in the log produced by Trace Logger. E.g., JSR $C022 will look like JSR AddHealthpoints.</p>
|
||||||
|
@ -175,7 +175,7 @@
|
||||||
<p>You can enable and disable symbolic debugging by clicking the checkbox "Symbolic debug" in the lower right corner. In general, there's no need to disable this feature. If you need to see the actual address which got substituted by a name, you can simply left-click the name and watch its address in the "Seek To" text field. This also works when clicking a name in the Trace Logger window.</p>
|
<p>You can enable and disable symbolic debugging by clicking the checkbox "Symbolic debug" in the lower right corner. In general, there's no need to disable this feature. If you need to see the actual address which got substituted by a name, you can simply left-click the name and watch its address in the "Seek To" text field. This also works when clicking a name in the Trace Logger window.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts44">Breakpoints</span></p>
|
<p><span class="rvts45">Breakpoints</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Breakpoints will automatically break execution when chosen conditions are met. To create a breakpoint, click the Add button in the Breakpoints frame in the upper right corner of the debugger.</p>
|
<p>Breakpoints will automatically break execution when chosen conditions are met. To create a breakpoint, click the Add button in the Breakpoints frame in the upper right corner of the debugger.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -197,9 +197,9 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Breakpoints are listed in the following form:</p>
|
<p>Breakpoints are listed in the following form:</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts45">aaaa EmRWXF nnnn cccc</span></p>
|
<p><span class="rvts46">aaaa EmRWXF nnnn cccc</span></p>
|
||||||
<p><span class="rvts45">or</span></p>
|
<p><span class="rvts46">or</span></p>
|
||||||
<p><span class="rvts45">aaaa-aaaa EmRWXF nnnn cccc</span></p>
|
<p><span class="rvts46">aaaa-aaaa EmRWXF nnnn cccc</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||||
<li>aaaa - address of breakpoint</li>
|
<li>aaaa - address of breakpoint</li>
|
||||||
|
@ -214,7 +214,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts44">Conditional Breakpoints</span></p>
|
<p><span class="rvts45">Conditional Breakpoints</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Breakpoints may also have a conditional statement that causes them to execute only if that statement evaluates to true. The conditional breakpoint grammar has this form:</p>
|
<p>Breakpoints may also have a conditional statement that causes them to execute only if that statement evaluates to true. The conditional breakpoint grammar has this form:</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -242,19 +242,19 @@
|
||||||
<p><span class="rvts15">Example conditions:</span></p>
|
<p><span class="rvts15">Example conditions:</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Break only if register A is less than value at memory address $0005:</p>
|
<p>Break only if register A is less than value at memory address $0005:</p>
|
||||||
<p><span class="rvts45">A < $0005</span></p>
|
<p><span class="rvts46">A < $0005</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Break only if the value at the indirect address is not equal to FF:</p>
|
<p>Break only if the value at the indirect address is not equal to FF:</p>
|
||||||
<p><span class="rvts45">#FF != $[$10+($11*#100)]</span></p>
|
<p><span class="rvts46">#FF != $[$10+($11*#100)]</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Break only if flag N is clear or A is not equal to 00:</p>
|
<p>Break only if flag N is clear or A is not equal to 00:</p>
|
||||||
<p><span class="rvts45">(N==#0 || A!=#0)</span></p>
|
<p><span class="rvts46">(N==#0 || A!=#0)</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Break only when accessing a data from bank 2 (the condiition is relevant when using with Read/Write-type breakpoints):</p>
|
<p>Break only when accessing a data from bank 2 (the condiition is relevant when using with Read/Write-type breakpoints):</p>
|
||||||
<p><span class="rvts45">T==#2</span></p>
|
<p><span class="rvts46">T==#2</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts44">Bookmarks</span></p>
|
<p><span class="rvts45">Bookmarks</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A list of bookmarked addresses can be kept in the Address Bookmarks frame to make memory navigation easier. Simply type a hexadecimal address (or a convenient string, such as "NMI") and click "Add" to add it to your bookmarks. Alternatively, just left-click any address in the Disassembly window, and the address will appear in the Bookmark Add field, so you don't have to type it.</p>
|
<p>A list of bookmarked addresses can be kept in the Address Bookmarks frame to make memory navigation easier. Simply type a hexadecimal address (or a convenient string, such as "NMI") and click "Add" to add it to your bookmarks. Alternatively, just left-click any address in the Disassembly window, and the address will appear in the Bookmark Add field, so you don't have to type it.</p>
|
||||||
<p>Next time you wish to go to this address just double click on the bookmark.</p>
|
<p>Next time you wish to go to this address just double click on the bookmark.</p>
|
||||||
|
@ -262,7 +262,7 @@
|
||||||
<p>When you exit the emulator, bookmarks are saved in a .deb file named after the ROM of the debugged game. Next time you return to debugging the game, the list of bookmarks will be automatically loaded from the file.</p>
|
<p>When you exit the emulator, bookmarks are saved in a .deb file named after the ROM of the debugged game. Next time you return to debugging the game, the list of bookmarks will be automatically loaded from the file.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts44">Inline Assembler</span></p>
|
<p><span class="rvts45">Inline Assembler</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Open the inline assembler by left-clicking in the empty column to the left of the memory view.</p>
|
<p>Open the inline assembler by left-clicking in the empty column to the left of the memory view.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -271,7 +271,7 @@
|
||||||
<p>Click Apply to apply your patch to the ROM in memory. Click Undo to remove the last assembled line. After applying a patch, clicking Save will allow you to save this patch directly to the ROM file.</p>
|
<p>Click Apply to apply your patch to the ROM in memory. Click Undo to remove the last assembled line. After applying a patch, clicking Save will allow you to save this patch directly to the ROM file.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts44">Other</span></p>
|
<p><span class="rvts45">Other</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>If the ".DEB files" checkbox in the lower right corner of the debugger window is checked, the emulator will automatically save debug settings such as breakpoints and bookmarks in a .deb file alongside the NES ROM, and load these settings next time you open the ROM.</p>
|
<p>If the ".DEB files" checkbox in the lower right corner of the debugger window is checked, the emulator will automatically save debug settings such as breakpoints and bookmarks in a .deb file alongside the NES ROM, and load these settings next time you open the ROM.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
|
|
@ -90,19 +90,19 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>The Hex Editor highlights certain bytes with different colors to help you distinguish different data.</p>
|
<p>The Hex Editor highlights certain bytes with different colors to help you distinguish different data.</p>
|
||||||
<p>Usually all bytes are colored black.</p>
|
<p>Usually all bytes are colored black.</p>
|
||||||
<p>Bookmarked RAM addresses are highlighted by <span class="rvts48">green color</span>.</p>
|
<p>Bookmarked RAM addresses are highlighted by <span class="rvts49">green color</span>.</p>
|
||||||
<p>Freezed RAM addresses are highlighted by <span class="rvts47">blue color</span>.</p>
|
<p>Freezed RAM addresses are highlighted by <span class="rvts48">blue color</span>.</p>
|
||||||
<p>Modified ROM bytes are highlighted by <span class="rvts49">red color</span>.</p>
|
<p>Modified ROM bytes are highlighted by <span class="rvts50">red color</span>.</p>
|
||||||
<p>If you have the <a class="rvts18" href="CodeDataLogger.html">Code/Data Logger</a> running, bytes that were logged will be colored:</p>
|
<p>If you have the <a class="rvts18" href="CodeDataLogger.html">Code/Data Logger</a> running, bytes that were logged will be colored:</p>
|
||||||
<p>For PRG ROM segment:</p>
|
<p>For PRG ROM segment:</p>
|
||||||
<p><span class="rvts51">Dark-yellow</span> - the byte is code</p>
|
<p><span class="rvts52">Dark-yellow</span> - the byte is code</p>
|
||||||
<p><span class="rvts52">Blue</span> - the byte is data</p>
|
<p><span class="rvts53">Blue</span> - the byte is data</p>
|
||||||
<p><span class="rvts53">Cyan</span> - the byte is PCM audio data</p>
|
<p><span class="rvts54">Cyan</span> - the byte is PCM audio data</p>
|
||||||
<p><span class="rvts50">Green</span> - the byte is both code and data</p>
|
<p><span class="rvts51">Green</span> - the byte is both code and data</p>
|
||||||
<p>For CHR ROM segment:</p>
|
<p>For CHR ROM segment:</p>
|
||||||
<p><span class="rvts54">Yellow</span> - the byte was rendered</p>
|
<p><span class="rvts55">Yellow</span> - the byte was rendered</p>
|
||||||
<p><span class="rvts55">Light-blue</span> - the byte was read programmatically</p>
|
<p><span class="rvts56">Light-blue</span> - the byte was read programmatically</p>
|
||||||
<p><span class="rvts56">Light-green</span> - the byte was both rendered and read programmatically</p>
|
<p><span class="rvts57">Light-green</span> - the byte was both rendered and read programmatically</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts16">Highlight Activity</span></p>
|
<p><span class="rvts16">Highlight Activity</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
|
|
@ -61,17 +61,17 @@
|
||||||
<p>The following functions are available in FCEUX, in addition to standard LUA capabilities:</p>
|
<p>The following functions are available in FCEUX, in addition to standard LUA capabilities:</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts61">Emu library</span></p>
|
<p><span class="rvts62">Emu library</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts69">emu.poweron()</span></p>
|
<p><span class="rvts69">emu.poweron()</span></p>
|
||||||
<p><span class="rvts68"><br/></span></p>
|
<p><span class="rvts40"><br/></span></p>
|
||||||
<p><span class="rvts68">Executes a power cycle.</span></p>
|
<p><span class="rvts40">Executes a power cycle.</span></p>
|
||||||
<p><span class="rvts68"><br/></span></p>
|
<p><span class="rvts40"><br/></span></p>
|
||||||
<p><span class="rvts69">emu.softreset()</span></p>
|
<p><span class="rvts69">emu.softreset()</span></p>
|
||||||
<p><span class="rvts68"><br/></span></p>
|
<p><span class="rvts40"><br/></span></p>
|
||||||
<p><span class="rvts68">Executes a (soft) reset.</span></p>
|
<p><span class="rvts40">Executes a (soft) reset.</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts62">emu.speedmode(string mode)</span></p>
|
<p><span class="rvts63">emu.speedmode(string mode)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Set the emulator to given speed. The mode argument can be one of these:</span></p>
|
<p><span class="rvts37">Set the emulator to given speed. The mode argument can be one of these:</span></p>
|
||||||
<p><span class="rvts37"> </span><span class="rvts37">- "normal"</span></p>
|
<p><span class="rvts37"> </span><span class="rvts37">- "normal"</span></p>
|
||||||
|
@ -79,70 +79,70 @@
|
||||||
<p><span class="rvts37"> </span><span class="rvts37">- "turbo"</span></p>
|
<p><span class="rvts37"> </span><span class="rvts37">- "turbo"</span></p>
|
||||||
<p><span class="rvts37"> </span><span class="rvts37">- "maximum"</span></p>
|
<p><span class="rvts37"> </span><span class="rvts37">- "maximum"</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.frameadvance()</span></p>
|
<p><span class="rvts63">emu.frameadvance()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Advance the emulator by one frame. It's like pressing the frame advance button once.</span></p>
|
<p><span class="rvts37">Advance the emulator by one frame. It's like pressing the frame advance button once.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Most scripts use this function in their main game loop to advance frames. Note that you can also register functions by various methods that run "dead", returning control to the emulator and letting the emulator advance the frame. For most people, using frame advance in an endless while loop is easier to comprehend so I suggest starting with that. This makes more sense when creating bots. Once you move to creating auxillary libraries, try the register() methods.</span></p>
|
<p><span class="rvts37">Most scripts use this function in their main game loop to advance frames. Note that you can also register functions by various methods that run "dead", returning control to the emulator and letting the emulator advance the frame. For most people, using frame advance in an endless while loop is easier to comprehend so I suggest starting with that. This makes more sense when creating bots. Once you move to creating auxillary libraries, try the register() methods.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.pause()</span></p>
|
<p><span class="rvts63">emu.pause()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Pauses the emulator.</span></p>
|
<p><span class="rvts37">Pauses the emulator.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.unpause()</span></p>
|
<p><span class="rvts63">emu.unpause()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Unpauses the emulator.</span></p>
|
<p><span class="rvts37">Unpauses the emulator.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.exec_count(int count, function func)</span></p>
|
<p><span class="rvts63">emu.exec_count(int count, function func)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Calls given function, restricting its working time to given number of lua cycles. Using this method you can ensure that some heavy operation (like Lua bot) won't freeze FCEUX.</span></p>
|
<p><span class="rvts37">Calls given function, restricting its working time to given number of lua cycles. Using this method you can ensure that some heavy operation (like Lua bot) won't freeze FCEUX.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts63">emu.exec_time(int time</span><span class="rvts62">, function func</span><span class="rvts63">)</span></p>
|
<p><span class="rvts64">emu.exec_time(int time</span><span class="rvts63">, function func</span><span class="rvts64">)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Windows-only. Calls given function, restricting its working time to given number of milliseconds (approximate). Using this method you can ensure that some heavy operation (like Lua bot) won't freeze FCEUX.</span></p>
|
<p><span class="rvts37">Windows-only. Calls given function, restricting its working time to given number of milliseconds (approximate). Using this method you can ensure that some heavy operation (like Lua bot) won't freeze FCEUX.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.setrenderplanes(bool sprites, bool background)</span></p>
|
<p><span class="rvts63">emu.setrenderplanes(bool sprites, bool background)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Toggles the drawing of the sprites and background planes. Set to false or nil to disable a pane, anything else will draw them.</span></p>
|
<p><span class="rvts37">Toggles the drawing of the sprites and background planes. Set to false or nil to disable a pane, anything else will draw them.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts63">emu.message(string message)</span></p>
|
<p><span class="rvts64">emu.message(string message)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Displays given message on screen in the standard messages position. Use gui.text() when you need to position text.</span></p>
|
<p><span class="rvts37">Displays given message on screen in the standard messages position. Use gui.text() when you need to position text.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">int emu.framecount()</span></p>
|
<p><span class="rvts63">int emu.framecount()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the framecount value. The frame counter runs without a movie running so this always returns a value.</span></p>
|
<p><span class="rvts37">Returns the framecount value. The frame counter runs without a movie running so this always returns a value.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">int emu.lagcount()</span></p>
|
<p><span class="rvts63">int emu.lagcount()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the number of lag frames encountered. Lag frames are frames where the game did not poll for input because it missed the vblank. This happens when it has to compute too much within the frame boundary. This returns the number indicated on the lag counter.</span></p>
|
<p><span class="rvts37">Returns the number of lag frames encountered. Lag frames are frames where the game did not poll for input because it missed the vblank. This happens when it has to compute too much within the frame boundary. This returns the number indicated on the lag counter.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool emu.lagged()</span></p>
|
<p><span class="rvts63">bool emu.lagged()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns true if currently in a lagframe, false otherwise.</span></p>
|
<p><span class="rvts37">Returns true if currently in a lagframe, false otherwise.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.setlagflag(bool value)</span></p>
|
<p><span class="rvts63">emu.setlagflag(bool value)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Sets current value of lag flag.</span></p>
|
<p><span class="rvts37">Sets current value of lag flag.</span></p>
|
||||||
<p><span class="rvts37">Some games poll input even in lag frames, so standard way of detecting lag (used by FCEUX and other emulators) does not work for those games, and you have to determine lag frames manually.</span></p>
|
<p><span class="rvts37">Some games poll input even in lag frames, so standard way of detecting lag (used by FCEUX and other emulators) does not work for those games, and you have to determine lag frames manually.</span></p>
|
||||||
<p><span class="rvts37">First, find RAM addresses that help you distinguish between lag and non-lag frames (e.g. an in-game frame counter that only increments in non-lag frames). Then register memory hooks that will change lag flag when needed.</span></p>
|
<p><span class="rvts37">First, find RAM addresses that help you distinguish between lag and non-lag frames (e.g. an in-game frame counter that only increments in non-lag frames). Then register memory hooks that will change lag flag when needed.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool emu.emulating()</span></p>
|
<p><span class="rvts63">bool emu.emulating()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns true if emulation has started, or false otherwise. Certain operations such as using savestates are invalid to attempt before emulation has started. You probably won't need to use this function unless you want to make your script extra-robust to being started too early.</span></p>
|
<p><span class="rvts37">Returns true if emulation has started, or false otherwise. Certain operations such as using savestates are invalid to attempt before emulation has started. You probably won't need to use this function unless you want to make your script extra-robust to being started too early.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool emu.paused()</span></p>
|
<p><span class="rvts63">bool emu.paused()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns true if emulator is paused, false otherwise.</span></p>
|
<p><span class="rvts37">Returns true if emulator is paused, false otherwise.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool emu.readonly()</span></p>
|
<p><span class="rvts63">bool emu.readonly()</span></p>
|
||||||
<p><span class="rvts37">Alias: movie.readonly</span></p>
|
<p><span class="rvts37">Alias: movie.readonly</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns whether the emulator is in read-only state. </span></p>
|
<p><span class="rvts37">Returns whether the emulator is in read-only state. </span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">While this variable only applies to movies, it is stored as a global variable and can be modified even without a movie loaded. Hence, it is in the emu library rather than the movie library.</span></p>
|
<p><span class="rvts37">While this variable only applies to movies, it is stored as a global variable and can be modified even without a movie loaded. Hence, it is in the emu library rather than the movie library.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.setreadonly(bool state)</span></p>
|
<p><span class="rvts63">emu.setreadonly(bool state)</span></p>
|
||||||
<p><span class="rvts37">Alias: movie.setreadonly</span></p>
|
<p><span class="rvts37">Alias: movie.setreadonly</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Sets the read-only status to read-only if argument is true and read+write if false.</span></p>
|
<p><span class="rvts37">Sets the read-only status to read-only if argument is true and read+write if false.</span></p>
|
||||||
|
@ -160,7 +160,7 @@
|
||||||
<p><span class="rvts78"><br/></span></p>
|
<p><span class="rvts78"><br/></span></p>
|
||||||
<p><span class="rvts78">If the ROM can't e loaded, loads the most recent one.</span></p>
|
<p><span class="rvts78">If the ROM can't e loaded, loads the most recent one.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.registerbefore(function func)</span></p>
|
<p><span class="rvts63">emu.registerbefore(function func)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Registers a callback function to run immediately before each frame gets emulated. This runs after the next frame's input is known but before it's used, so this is your only chance to set the next frame's input using the next frame's would-be input. For example, if you want to make a script that filters or modifies ongoing user input, such as making the game think "left" is pressed whenever you press "right", you can do it easily with this.</span></p>
|
<p><span class="rvts37">Registers a callback function to run immediately before each frame gets emulated. This runs after the next frame's input is known but before it's used, so this is your only chance to set the next frame's input using the next frame's would-be input. For example, if you want to make a script that filters or modifies ongoing user input, such as making the game think "left" is pressed whenever you press "right", you can do it easily with this.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -168,11 +168,11 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Like other callback-registering functions provided by FCEUX, there is only one registered callback at a time per registering function per script. If you register two callbacks, the second one will replace the first, and the call to emu.registerbefore will return the old callback. You may register nil instead of a function to clear a previously-registered callback. If a script returns while it still has registered callbacks, FCEUX will keep it alive to call those callbacks when appropriate, until either the script is stopped by the user or all of the callbacks are de-registered.</span></p>
|
<p><span class="rvts37">Like other callback-registering functions provided by FCEUX, there is only one registered callback at a time per registering function per script. If you register two callbacks, the second one will replace the first, and the call to emu.registerbefore will return the old callback. You may register nil instead of a function to clear a previously-registered callback. If a script returns while it still has registered callbacks, FCEUX will keep it alive to call those callbacks when appropriate, until either the script is stopped by the user or all of the callbacks are de-registered.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.registerafter(function func)</span></p>
|
<p><span class="rvts63">emu.registerafter(function func)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Registers a callback function to run immediately after each frame gets emulated. It runs at a similar time as (and slightly before) gui.register callbacks, except unlike with gui.register it doesn't also get called again whenever the screen gets redrawn. Similar caveats as those mentioned in emu.registerbefore apply.</span></p>
|
<p><span class="rvts37">Registers a callback function to run immediately after each frame gets emulated. It runs at a similar time as (and slightly before) gui.register callbacks, except unlike with gui.register it doesn't also get called again whenever the screen gets redrawn. Similar caveats as those mentioned in emu.registerbefore apply.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.registerexit(function func)</span></p>
|
<p><span class="rvts63">emu.registerexit(function func)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Registers a callback function that runs when the script stops. Whether the script stops on its own or the user tells it to stop, or even if the script crashes or the user tries to close the emulator, FCEUX will try to run whatever Lua code you put in here first. So if you want to make sure some code runs that cleans up some external resources or saves your progress to a file or just says some last words, you could put it here. (Of course, a forceful termination of the application or a crash from inside the registered exit function will still prevent the code from running.)</span></p>
|
<p><span class="rvts37">Registers a callback function that runs when the script stops. Whether the script stops on its own or the user tells it to stop, or even if the script crashes or the user tries to close the emulator, FCEUX will try to run whatever Lua code you put in here first. So if you want to make sure some code runs that cleans up some external resources or saves your progress to a file or just says some last words, you could put it here. (Of course, a forceful termination of the application or a crash from inside the registered exit function will still prevent the code from running.)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -180,15 +180,15 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Note that restarting a script counts as stopping it and then starting it again, so doing so (either by clicking "Restart" or by editing the script while it is running) will trigger the callback. Note also that returning from a script generally does NOT count as stopping (because your script is still running or waiting to run its callback functions and thus does not stop... see here for more information), even if the exit callback is the only one you have registered. </span></p>
|
<p><span class="rvts37">Note that restarting a script counts as stopping it and then starting it again, so doing so (either by clicking "Restart" or by editing the script while it is running) will trigger the callback. Note also that returning from a script generally does NOT count as stopping (because your script is still running or waiting to run its callback functions and thus does not stop... see here for more information), even if the exit callback is the only one you have registered. </span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool emu.addgamegenie(string str)</span></p>
|
<p><span class="rvts63">bool emu.addgamegenie(string str)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Adds a Game Genie code to the Cheats menu. Returns false and an error message if the code can't be decoded. Returns false if the code couldn't be added. Returns true if the code already existed, or if it was added.</span></p>
|
<p><span class="rvts37">Adds a Game Genie code to the Cheats menu. Returns false and an error message if the code can't be decoded. Returns false if the code couldn't be added. Returns true if the code already existed, or if it was added.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Usage: emu.addgamegenie("NUTANT")</span></p>
|
<p><span class="rvts37">Usage: emu.addgamegenie("NUTANT")</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Note that the Cheats Dialog Box won't show the code unless you close and reopen it.</span></p>
|
<p><span class="rvts37">Note that the Cheats Dialog Box won't show the code unless you close and reopen it.</span></p>
|
||||||
<p><span class="rvts62"><br/></span></p>
|
<p><span class="rvts63"><br/></span></p>
|
||||||
<p><span class="rvts62">bool emu.delgamegenie(string str)</span></p>
|
<p><span class="rvts63">bool emu.delgamegenie(string str)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Removes a Game Genie code from the Cheats menu. Returns false and an error message if the code can't be decoded. Returns false if the code couldn't be deleted. Returns true if the code didn't exist, or if it was deleted.</span></p>
|
<p><span class="rvts37">Removes a Game Genie code from the Cheats menu. Returns false and an error message if the code can't be decoded. Returns false if the code couldn't be deleted. Returns true if the code didn't exist, or if it was deleted.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -196,11 +196,11 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Note that the Cheats Dialog Box won't show the code unless you close and reopen it.</span></p>
|
<p><span class="rvts37">Note that the Cheats Dialog Box won't show the code unless you close and reopen it.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.print(string str)</span></p>
|
<p><span class="rvts63">emu.print(string str)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Puts a message into the Output Console area of the Lua Script control window. Useful for displaying usage instructions to the user when a script gets run.</span></p>
|
<p><span class="rvts37">Puts a message into the Output Console area of the Lua Script control window. Useful for displaying usage instructions to the user when a script gets run.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">emu.getscreenpixel(int x, int y, bool getemuscreen)</span></p>
|
<p><span class="rvts63">emu.getscreenpixel(int x, int y, bool getemuscreen)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the separate RGB components of the given screen pixel, and the palette. Can be 0-255 by 0-239, but NTSC only displays 0-255 x 8-231 of it. If getemuscreen is false, this gets background colors from either the screen pixel or the LUA pixels set, but LUA data may not match the information used to put the data to the screen. If getemuscreen is true, this gets background colors from anything behind an LUA screen element.</span></p>
|
<p><span class="rvts37">Returns the separate RGB components of the given screen pixel, and the palette. Can be 0-255 by 0-239, but NTSC only displays 0-255 x 8-231 of it. If getemuscreen is false, this gets background colors from either the screen pixel or the LUA pixels set, but LUA data may not match the information used to put the data to the screen. If getemuscreen is true, this gets background colors from anything behind an LUA screen element.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -211,21 +211,21 @@
|
||||||
<p><span class="rvts37">You can avoid getting LUA data by putting the data into a function, and feeding the function name to emu.registerbefore.</span></p>
|
<p><span class="rvts37">You can avoid getting LUA data by putting the data into a function, and feeding the function name to emu.registerbefore.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts61">FCEU library</span></p>
|
<p><span class="rvts62">FCEU library</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">The FCEU library is the same as the emu library. It is left in for backwards compatibility. However, the emu library is preferred.</span></p>
|
<p><span class="rvts37">The FCEU library is the same as the emu library. It is left in for backwards compatibility. However, the emu library is preferred.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts71">ROM Library</span></p>
|
<p><span class="rvts71">ROM Library</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">rom.readbyte(int address)</span></p>
|
<p><span class="rvts63">rom.readbyte(int address)</span></p>
|
||||||
<p><span class="rvts62">rom.readbyteunsigned(int address)</span></p>
|
<p><span class="rvts63">rom.readbyteunsigned(int address)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Get an unsigned byte from the actual ROM file at the given address. </span></p>
|
<p><span class="rvts37">Get an unsigned byte from the actual ROM file at the given address. </span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">This includes the header! It's the same as opening the file in a hex-editor.</span></p>
|
<p><span class="rvts37">This includes the header! It's the same as opening the file in a hex-editor.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">rom.readbytesigned(int address)</span></p>
|
<p><span class="rvts63">rom.readbytesigned(int address)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Get a signed byte from the actual ROM file at the given address. Returns a byte that is signed.</span></p>
|
<p><span class="rvts37">Get a signed byte from the actual ROM file at the given address. Returns a byte that is signed.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -239,41 +239,41 @@
|
||||||
<p><span class="rvts75"><br/></span></p>
|
<p><span class="rvts75"><br/></span></p>
|
||||||
<p><span class="rvts71">Memory Library</span></p>
|
<p><span class="rvts71">Memory Library</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">memory.readbyte(int address)</span></p>
|
<p><span class="rvts63">memory.readbyte(int address)</span></p>
|
||||||
<p><span class="rvts62">memory.readbyteunsigned(int address)</span></p>
|
<p><span class="rvts63">memory.readbyteunsigned(int address)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Get an unsigned byte from the RAM at the given address. Returns a byte regardless of emulator. The byte will always be positive.</span></p>
|
<p><span class="rvts37">Get an unsigned byte from the RAM at the given address. Returns a byte regardless of emulator. The byte will always be positive.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">memory.readbyterange(int address, int length)</span></p>
|
<p><span class="rvts63">memory.readbyterange(int address, int length)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Get a length bytes starting at the given address and return it as a string. Convert to table to access the individual bytes.</span></p>
|
<p><span class="rvts37">Get a length bytes starting at the given address and return it as a string. Convert to table to access the individual bytes.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">memory.readbytesigned(int address)</span></p>
|
<p><span class="rvts63">memory.readbytesigned(int address)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Get a signed byte from the RAM at the given address. Returns a byte regardless of emulator. The most significant bit will serve as the sign.</span></p>
|
<p><span class="rvts37">Get a signed byte from the RAM at the given address. Returns a byte regardless of emulator. The most significant bit will serve as the sign.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">memory.readword(int addressLow, [int addressHigh])</span></p>
|
<p><span class="rvts63">memory.readword(int addressLow, [int addressHigh])</span></p>
|
||||||
<p><span class="rvts62">memory.readwordunsigned(int addressLow, [int addressHigh])</span></p>
|
<p><span class="rvts63">memory.readwordunsigned(int addressLow, [int addressHigh])</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Get an unsigned word from the RAM at the given address. Returns a 16-bit value regardless of emulator. The value will always be positive.</span></p>
|
<p><span class="rvts37">Get an unsigned word from the RAM at the given address. Returns a 16-bit value regardless of emulator. The value will always be positive.</span></p>
|
||||||
<p><span class="rvts37">If you only provide a single parameter (addressLow), the function treats it as address of little-endian word. if you provide two parameters, the function reads the low byte from addressLow and the high byte from addressHigh, so you can use it in games which like to store their variables in separate form (a lot of NES games do).</span></p>
|
<p><span class="rvts37">If you only provide a single parameter (addressLow), the function treats it as address of little-endian word. if you provide two parameters, the function reads the low byte from addressLow and the high byte from addressHigh, so you can use it in games which like to store their variables in separate form (a lot of NES games do).</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">memory.readwordsigned(int addressLow, [int addressHigh])</span></p>
|
<p><span class="rvts63">memory.readwordsigned(int addressLow, [int addressHigh])</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">The same as above, except the returned value is signed, i.e. its most significant bit will serve as the sign.</span></p>
|
<p><span class="rvts37">The same as above, except the returned value is signed, i.e. its most significant bit will serve as the sign.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">memory.writebyte(int address, int value)</span></p>
|
<p><span class="rvts63">memory.writebyte(int address, int value)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Write the value to the RAM at the given address. The value is modded with 256 before writing (so writing 257 will actually write 1). Negative values allowed.</span></p>
|
<p><span class="rvts37">Write the value to the RAM at the given address. The value is modded with 256 before writing (so writing 257 will actually write 1). Negative values allowed.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">int memory.getregister(cpuregistername)</span></p>
|
<p><span class="rvts63">int memory.getregister(cpuregistername)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the current value of the given hardware register.</span></p>
|
<p><span class="rvts37">Returns the current value of the given hardware register.</span></p>
|
||||||
<p><span class="rvts37">For example, memory.getregister("pc") will return the main CPU's current Program Counter.</span></p>
|
<p><span class="rvts37">For example, memory.getregister("pc") will return the main CPU's current Program Counter.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Valid registers are: "a", "x", "y", "s", "p", and "pc".</span></p>
|
<p><span class="rvts37">Valid registers are: "a", "x", "y", "s", "p", and "pc".</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">memory.setregister(string cpuregistername, int value)</span></p>
|
<p><span class="rvts63">memory.setregister(string cpuregistername, int value)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Sets the current value of the given hardware register.</span></p>
|
<p><span class="rvts37">Sets the current value of the given hardware register.</span></p>
|
||||||
<p><span class="rvts37">For example, memory.setregister("pc",0x200) will change the main CPU's current Program Counter to 0x200.</span></p>
|
<p><span class="rvts37">For example, memory.setregister("pc",0x200) will change the main CPU's current Program Counter to 0x200.</span></p>
|
||||||
|
@ -283,8 +283,8 @@
|
||||||
<p><span class="rvts37">You had better know exactly what you're doing or you're probably just going to crash the game if you try to use this function. That applies to the other memory.write functions as well, but to a lesser extent. </span></p>
|
<p><span class="rvts37">You had better know exactly what you're doing or you're probably just going to crash the game if you try to use this function. That applies to the other memory.write functions as well, but to a lesser extent. </span></p>
|
||||||
<p><a name="LuaBreakpoints"></a>
|
<p><a name="LuaBreakpoints"></a>
|
||||||
<span class="rvts37"><br/></span></p>
|
<span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">memory.register(int address, [int size,] function func)</span></p>
|
<p><span class="rvts63">memory.register(int address, [int size,] function func)</span></p>
|
||||||
<p><span class="rvts62">memory.registerwrite(int address, [int size,] function func)</span></p>
|
<p><span class="rvts63">memory.registerwrite(int address, [int size,] function func)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Registers a function to be called immediately whenever the given memory address range is written to.</span></p>
|
<p><span class="rvts37">Registers a function to be called immediately whenever the given memory address range is written to.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -298,9 +298,9 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">If func is nil that means to de-register any memory write callbacks that the current script has already registered on the given range of bytes.</span></p>
|
<p><span class="rvts37">If func is nil that means to de-register any memory write callbacks that the current script has already registered on the given range of bytes.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">memory.registerexec(int address, [int size,] function func)</span></p>
|
<p><span class="rvts63">memory.registerexec(int address, [int size,] function func)</span></p>
|
||||||
<p><span class="rvts62">memory.registerrun(int address, [int size,] function func)</span></p>
|
<p><span class="rvts63">memory.registerrun(int address, [int size,] function func)</span></p>
|
||||||
<p><span class="rvts62">memory.registerexecute(int address, [int size,] function func)</span></p>
|
<p><span class="rvts63">memory.registerexecute(int address, [int size,] function func)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Registers a function to be called immediately whenever the emulated system runs code located in the given memory address range.</span></p>
|
<p><span class="rvts37">Registers a function to be called immediately whenever the emulated system runs code located in the given memory address range.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -328,31 +328,31 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts71">Debugger Library</span></p>
|
<p><span class="rvts71">Debugger Library</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">debugger.hitbreakpoint()</span></p>
|
<p><span class="rvts63">debugger.hitbreakpoint()</span></p>
|
||||||
<p><span class="rvts62"><br/></span></p>
|
<p><span class="rvts63"><br/></span></p>
|
||||||
<p><span class="rvts37">Simulates a breakpoint hit, pauses emulation and brings up the Debugger window. Use this function in your handlers of custom breakpoints.</span></p>
|
<p><span class="rvts37">Simulates a breakpoint hit, pauses emulation and brings up the Debugger window. Use this function in your handlers of custom breakpoints.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">int debugger.getcyclescount()</span></p>
|
<p><span class="rvts63">int debugger.getcyclescount()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns an integer value representing the number of CPU cycles elapsed since the poweron or since the last reset of the cycles counter.</span></p>
|
<p><span class="rvts37">Returns an integer value representing the number of CPU cycles elapsed since the poweron or since the last reset of the cycles counter.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">int debugger.getinstructionscount()</span></p>
|
<p><span class="rvts63">int debugger.getinstructionscount()</span></p>
|
||||||
<p><span class="rvts62"><br/></span></p>
|
<p><span class="rvts63"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns an integer value representing the number of CPU instructions executed since the poweron or since the last reset of the instructions counter.</span></p>
|
<p><span class="rvts37">Returns an integer value representing the number of CPU instructions executed since the poweron or since the last reset of the instructions counter.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">debugger.resetcyclescount()</span></p>
|
<p><span class="rvts63">debugger.resetcyclescount()</span></p>
|
||||||
<p><span class="rvts62"><br/></span></p>
|
<p><span class="rvts63"><br/></span></p>
|
||||||
<p><span class="rvts37">Resets the cycles counter.</span></p>
|
<p><span class="rvts37">Resets the cycles counter.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">debugger.resetinstructionscount()</span></p>
|
<p><span class="rvts63">debugger.resetinstructionscount()</span></p>
|
||||||
<p><span class="rvts62"><br/></span></p>
|
<p><span class="rvts63"><br/></span></p>
|
||||||
<p><span class="rvts37">Resets the instructions counter.</span></p>
|
<p><span class="rvts37">Resets the instructions counter.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts71">Joypad Library</span></p>
|
<p><span class="rvts71">Joypad Library</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">table joypad.get(int player)</span></p>
|
<p><span class="rvts63">table joypad.get(int player)</span></p>
|
||||||
<p><span class="rvts63">table joypad.read(</span><span class="rvts62">int player</span><span class="rvts63">)</span></p>
|
<p><span class="rvts64">table joypad.read(</span><span class="rvts63">int player</span><span class="rvts64">)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns a table of every game button, where each entry is true if that button is currently held (as of the last time the emulation checked), or false if it is not held. This takes keyboard inputs, not Lua. The table keys look like this (case sensitive):</span></p>
|
<p><span class="rvts37">Returns a table of every game button, where each entry is true if that button is currently held (as of the last time the emulation checked), or false if it is not held. This takes keyboard inputs, not Lua. The table keys look like this (case sensitive):</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -362,25 +362,25 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">joypad.read left in for backwards compatibility with older versions of FCEU/FCEUX.</span></p>
|
<p><span class="rvts37">joypad.read left in for backwards compatibility with older versions of FCEU/FCEUX.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">table joypad.getimmediate(int player)</span></p>
|
<p><span class="rvts63">table joypad.getimmediate(int player)</span></p>
|
||||||
<p><span class="rvts63">table joypad.readimmediate(</span><span class="rvts62">int player</span><span class="rvts63">)</span></p>
|
<p><span class="rvts64">table joypad.readimmediate(</span><span class="rvts63">int player</span><span class="rvts64">)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns a table of every game button, where each entry is true if that button is held at the moment of calling the function, or false if it is not held. This function polls keyboard input immediately, allowing Lua to interact with user even when emulator is paused.</span></p>
|
<p><span class="rvts37">Returns a table of every game button, where each entry is true if that button is held at the moment of calling the function, or false if it is not held. This function polls keyboard input immediately, allowing Lua to interact with user even when emulator is paused.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">As of FCEUX 2.2.0, the function only works in Windows. In Linux this function will return nil.</span></p>
|
<p><span class="rvts37">As of FCEUX 2.2.0, the function only works in Windows. In Linux this function will return nil.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">table joypad.getdown(int player)</span></p>
|
<p><span class="rvts63">table joypad.getdown(int player)</span></p>
|
||||||
<p><span class="rvts62">table joypad.readdown(int player)</span></p>
|
<p><span class="rvts63">table joypad.readdown(int player)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns a table of only the game buttons that are currently held. Each entry is true if that button is currently held (as of the last time the emulation checked), or nil if it is not held.</span></p>
|
<p><span class="rvts37">Returns a table of only the game buttons that are currently held. Each entry is true if that button is currently held (as of the last time the emulation checked), or nil if it is not held.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">table joypad.getup(int player)</span></p>
|
<p><span class="rvts63">table joypad.getup(int player)</span></p>
|
||||||
<p><span class="rvts62">table joypad.readup(int player)</span></p>
|
<p><span class="rvts63">table joypad.readup(int player)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns a table of only the game buttons that are not currently held. Each entry is nil if that button is currently held (as of the last time the emulation checked), or false if it is not held.</span></p>
|
<p><span class="rvts37">Returns a table of only the game buttons that are not currently held. Each entry is nil if that button is currently held (as of the last time the emulation checked), or false if it is not held.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">joypad.set(int player, table input)</span></p>
|
<p><span class="rvts63">joypad.set(int player, table input)</span></p>
|
||||||
<p><span class="rvts63">joypad.write(</span><span class="rvts62">int player, table input</span><span class="rvts63">)</span></p>
|
<p><span class="rvts64">joypad.write(</span><span class="rvts63">int player, table input</span><span class="rvts64">)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Set the inputs for the given player. Table keys look like this (case sensitive):</span></p>
|
<p><span class="rvts37">Set the inputs for the given player. Table keys look like this (case sensitive):</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -401,7 +401,7 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts71">Zapper Library</span></p>
|
<p><span class="rvts71">Zapper Library</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts63">table zapper.read()</span></p>
|
<p><span class="rvts64">table zapper.read()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the zapper data</span></p>
|
<p><span class="rvts37">Returns the zapper data</span></p>
|
||||||
<p><span class="rvts37">When no movie is loaded this input is the same as the internal mouse input (which is used to generate zapper input, as well as the arkanoid paddle).</span></p>
|
<p><span class="rvts37">When no movie is loaded this input is the same as the internal mouse input (which is used to generate zapper input, as well as the arkanoid paddle).</span></p>
|
||||||
|
@ -416,13 +416,13 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts71">Input Library</span></p>
|
<p><span class="rvts71">Input Library</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">table input.get()</span></p>
|
<p><span class="rvts63">table input.get()</span></p>
|
||||||
<p><span class="rvts62">table input.read()</span></p>
|
<p><span class="rvts63">table input.read()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Reads input from keyboard and mouse. Returns pressed keys and the position of mouse in pixels on game screen. The function returns a table with at least two properties; table.xmouse and table.ymouse. Additionally any of these keys will be set to true if they were held at the time of executing this function:</span></p>
|
<p><span class="rvts37">Reads input from keyboard and mouse. Returns pressed keys and the position of mouse in pixels on game screen. The function returns a table with at least two properties; table.xmouse and table.ymouse. Additionally any of these keys will be set to true if they were held at the time of executing this function:</span></p>
|
||||||
<p><span class="rvts37">leftclick, rightclick, middleclick, capslock, numlock, scrolllock, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, backspace, tab, enter, shift, control, alt, pause, escape, space, pageup, pagedown, end, home, left, up, right, down, numpad0, numpad1, numpad2, numpad3, numpad4, numpad5, numpad6, numpad7, numpad8, numpad9, numpad*, insert, delete, numpad+, numpad-, numpad., numpad/, semicolon, plus, minus, comma, period, slash, backslash, tilde, quote, leftbracket, rightbracket.</span></p>
|
<p><span class="rvts37">leftclick, rightclick, middleclick, capslock, numlock, scrolllock, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24, backspace, tab, enter, shift, control, alt, pause, escape, space, pageup, pagedown, end, home, left, up, right, down, numpad0, numpad1, numpad2, numpad3, numpad4, numpad5, numpad6, numpad7, numpad8, numpad9, numpad*, insert, delete, numpad+, numpad-, numpad., numpad/, semicolon, plus, minus, comma, period, slash, backslash, tilde, quote, leftbracket, rightbracket.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">string input.popup</span></p>
|
<p><span class="rvts63">string input.popup</span></p>
|
||||||
<p><span class="rvts37">Alias: gui.popup</span></p>
|
<p><span class="rvts37">Alias: gui.popup</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Requests input from the user using a multiple-option message box. See gui.popup for complete usage and returns.</span></p>
|
<p><span class="rvts37">Requests input from the user using a multiple-option message box. See gui.popup for complete usage and returns.</span></p>
|
||||||
|
@ -430,44 +430,44 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts71">Savestate Library</span></p>
|
<p><span class="rvts71">Savestate Library</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts63">object savestate.object(int slot = nil)</span></p>
|
<p><span class="rvts64">object savestate.object(int slot = nil)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Create a new savestate object. Optionally you can save the current state to one of the predefined slots(1-10) using the range 1-9 for slots 1-9, and 10 for 0, QWERTY style. Using no number will create an "anonymous" savestate.</span></p>
|
<p><span class="rvts37">Create a new savestate object. Optionally you can save the current state to one of the predefined slots(1-10) using the range 1-9 for slots 1-9, and 10 for 0, QWERTY style. Using no number will create an "anonymous" savestate.</span></p>
|
||||||
<p><span class="rvts37">Note that this does not actually save the current state! You need to create this value and pass it on to the load and save functions in order to save it.</span></p>
|
<p><span class="rvts37">Note that this does not actually save the current state! You need to create this value and pass it on to the load and save functions in order to save it.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Anonymous savestates are temporary, memory only states. You can make them persistent by calling memory.persistent(state). Persistent anonymous states are deleted from disk once the script exits.</span></p>
|
<p><span class="rvts37">Anonymous savestates are temporary, memory only states. You can make them persistent by calling memory.persistent(state). Persistent anonymous states are deleted from disk once the script exits.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts63">object savestate.create(int slot = nil)</span></p>
|
<p><span class="rvts64">object savestate.create(int slot = nil)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">savestate.create is identical to savestate.object, except for the numbering for predefined slots(1-10, 1 refers to slot 0, 2-10 refer to 1-9). It's being left in for compatibility with older scripts, and potentially for platforms with different internal predefined slot numbering.</span></p>
|
<p><span class="rvts37">savestate.create is identical to savestate.object, except for the numbering for predefined slots(1-10, 1 refers to slot 0, 2-10 refer to 1-9). It's being left in for compatibility with older scripts, and potentially for platforms with different internal predefined slot numbering.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts63">savestate.save(object savestate)</span></p>
|
<p><span class="rvts64">savestate.save(object savestate)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Save the current state object to the given savestate. The argument is the result of savestate.create(). You can load this state back up by calling savestate.load(savestate) on the same object.</span></p>
|
<p><span class="rvts37">Save the current state object to the given savestate. The argument is the result of savestate.create(). You can load this state back up by calling savestate.load(savestate) on the same object.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts63">savestate.load(object savestate)</span></p>
|
<p><span class="rvts64">savestate.load(object savestate)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Load the the given state. The argument is the result of savestate.create() and has been passed to savestate.save() at least once.</span></p>
|
<p><span class="rvts37">Load the the given state. The argument is the result of savestate.create() and has been passed to savestate.save() at least once.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">If this savestate is not persistent and not one of the predefined states, the state will be deleted after loading.</span></p>
|
<p><span class="rvts37">If this savestate is not persistent and not one of the predefined states, the state will be deleted after loading.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">savestate.persist(object savestate)</span></p>
|
<p><span class="rvts63">savestate.persist(object savestate)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Set the given savestate to be persistent. It will not be deleted when you load this state but at the exit of this script instead, unless it's one of the predefined states. If it is one of the predefined savestates it will be saved as a file on disk.</span></p>
|
<p><span class="rvts37">Set the given savestate to be persistent. It will not be deleted when you load this state but at the exit of this script instead, unless it's one of the predefined states. If it is one of the predefined savestates it will be saved as a file on disk.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">savestate.registersave(function func)</span></p>
|
<p><span class="rvts63">savestate.registersave(function func)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Registers a callback function that runs whenever the user saves a state. This won't actually be called when the script itself makes a savestate, so none of those endless loops due to a misplaced savestate.save.</span></p>
|
<p><span class="rvts37">Registers a callback function that runs whenever the user saves a state. This won't actually be called when the script itself makes a savestate, so none of those endless loops due to a misplaced savestate.save.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">As with other callback-registering functions provided by FCEUX, there is only one registered callback at a time per registering function per script. Upon registering a second callback, the first is kicked out to make room for the second. In this case, it will return the first function instead of nil, letting you know what was kicked out. Registering nil will clear the previously-registered callback.</span></p>
|
<p><span class="rvts37">As with other callback-registering functions provided by FCEUX, there is only one registered callback at a time per registering function per script. Upon registering a second callback, the first is kicked out to make room for the second. In this case, it will return the first function instead of nil, letting you know what was kicked out. Registering nil will clear the previously-registered callback.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">savestate.registerload(function func)</span></p>
|
<p><span class="rvts63">savestate.registerload(function func)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Registers a callback function that runs whenever the user loads a previously saved state. It's not called when the script itself loads a previous state, so don't worry about your script interrupting itself just because it's loading something.</span></p>
|
<p><span class="rvts37">Registers a callback function that runs whenever the user loads a previously saved state. It's not called when the script itself loads a previous state, so don't worry about your script interrupting itself just because it's loading something.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">The state's data is loaded before this function runs, so you can read the RAM immediately after the user loads a state, or check the new framecount. Particularly useful if you want to update lua's display right away instead of showing junk from before the loadstate.</span></p>
|
<p><span class="rvts37">The state's data is loaded before this function runs, so you can read the RAM immediately after the user loads a state, or check the new framecount. Particularly useful if you want to update lua's display right away instead of showing junk from before the loadstate.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">savestate.loadscriptdata(int location)</span></p>
|
<p><span class="rvts63">savestate.loadscriptdata(int location)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Accuracy not yet confirmed.</span></p>
|
<p><span class="rvts37">Accuracy not yet confirmed.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -477,15 +477,15 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts71">Movie Library</span></p>
|
<p><span class="rvts71">Movie Library</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool movie.active()</span></p>
|
<p><span class="rvts63">bool movie.active()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns true if a movie is currently loaded and false otherwise. (This should be used to guard against Lua errors when attempting to retrieve movie information).</span></p>
|
<p><span class="rvts37">Returns true if a movie is currently loaded and false otherwise. (This should be used to guard against Lua errors when attempting to retrieve movie information).</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">int movie.framecount()</span></p>
|
<p><span class="rvts63">int movie.framecount()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the current frame count. (Has the same affect as emu.framecount)</span></p>
|
<p><span class="rvts37">Returns the current frame count. (Has the same affect as emu.framecount)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">string movie.mode()</span></p>
|
<p><span class="rvts63">string movie.mode()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the current state of movie playback. Returns one of the following:</span></p>
|
<p><span class="rvts37">Returns the current state of movie playback. Returns one of the following:</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -495,41 +495,41 @@
|
||||||
<p><span class="rvts37">- "taseditor"</span></p>
|
<p><span class="rvts37">- "taseditor"</span></p>
|
||||||
<p><span class="rvts37">- nil</span></p>
|
<p><span class="rvts37">- nil</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">movie.rerecordcounting(bool counting)</span></p>
|
<p><span class="rvts63">movie.rerecordcounting(bool counting)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Turn the rerecord counter on or off. Allows you to do some brute forcing without inflating the rerecord count.</span></p>
|
<p><span class="rvts37">Turn the rerecord counter on or off. Allows you to do some brute forcing without inflating the rerecord count.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">movie.stop()</span></p>
|
<p><span class="rvts63">movie.stop()</span></p>
|
||||||
<p><span class="rvts62">movie.close()</span></p>
|
<p><span class="rvts63">movie.close()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Stops movie playback. If no movie is loaded, it throws a Lua error.</span></p>
|
<p><span class="rvts37">Stops movie playback. If no movie is loaded, it throws a Lua error.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">int movie.length()</span></p>
|
<p><span class="rvts63">int movie.length()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the total number of frames of the current movie. Throws a Lua error if no movie is loaded.</span></p>
|
<p><span class="rvts37">Returns the total number of frames of the current movie. Throws a Lua error if no movie is loaded.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">string movie.name()</span></p>
|
<p><span class="rvts63">string movie.name()</span></p>
|
||||||
<p><span class="rvts62">string movie.getname()</span></p>
|
<p><span class="rvts63">string movie.getname()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the filename of the current movie with path. Throws a Lua error if no movie is loaded.</span></p>
|
<p><span class="rvts37">Returns the filename of the current movie with path. Throws a Lua error if no movie is loaded.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">movie.getfilename()</span></p>
|
<p><span class="rvts63">movie.getfilename()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the filename of the current movie with no path. Throws a Lua error if no movie is loaded.</span></p>
|
<p><span class="rvts37">Returns the filename of the current movie with no path. Throws a Lua error if no movie is loaded.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">movie.rerecordcount()</span></p>
|
<p><span class="rvts63">movie.rerecordcount()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the rerecord count of the current movie. Throws a Lua error if no movie is loaded.</span></p>
|
<p><span class="rvts37">Returns the rerecord count of the current movie. Throws a Lua error if no movie is loaded.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">movie.replay()</span></p>
|
<p><span class="rvts63">movie.replay()</span></p>
|
||||||
<p><span class="rvts62">movie.playbeginning()</span></p>
|
<p><span class="rvts63">movie.playbeginning()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Performs the Play from Beginning function. Movie mode is switched to read-only and the movie loaded will begin playback from frame 1.</span></p>
|
<p><span class="rvts37">Performs the Play from Beginning function. Movie mode is switched to read-only and the movie loaded will begin playback from frame 1.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">If no movie is loaded, no error is thrown and no message appears on screen.</span></p>
|
<p><span class="rvts37">If no movie is loaded, no error is thrown and no message appears on screen.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool movie.readonly()</span></p>
|
<p><span class="rvts63">bool movie.readonly()</span></p>
|
||||||
<p><span class="rvts62">bool movie.getreadonly()</span></p>
|
<p><span class="rvts63">bool movie.getreadonly()</span></p>
|
||||||
<p><span class="rvts37">Alias: emu.getreadonly</span></p>
|
<p><span class="rvts37">Alias: emu.getreadonly</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">FCEUX keeps the read-only status even without a movie loaded.</span></p>
|
<p><span class="rvts37">FCEUX keeps the read-only status even without a movie loaded.</span></p>
|
||||||
|
@ -538,7 +538,7 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">While this variable only applies to movies, it is stored as a global variable and can be modified even without a movie loaded. Hence, it is in the emu library rather than the movie library.</span></p>
|
<p><span class="rvts37">While this variable only applies to movies, it is stored as a global variable and can be modified even without a movie loaded. Hence, it is in the emu library rather than the movie library.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">movie.setreadonly(bool state)</span></p>
|
<p><span class="rvts63">movie.setreadonly(bool state)</span></p>
|
||||||
<p><span class="rvts37">Alias: emu.setreadonly</span></p>
|
<p><span class="rvts37">Alias: emu.setreadonly</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">FCEUX keeps the read-only status even without a movie loaded.</span></p>
|
<p><span class="rvts37">FCEUX keeps the read-only status even without a movie loaded.</span></p>
|
||||||
|
@ -548,45 +548,45 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">While this variable only applies to movies, it is stored as a global variable and can be modified even without a movie loaded. Hence, it is in the emu library rather than the movie library.</span></p>
|
<p><span class="rvts37">While this variable only applies to movies, it is stored as a global variable and can be modified even without a movie loaded. Hence, it is in the emu library rather than the movie library.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool movie.recording()</span></p>
|
<p><span class="rvts63">bool movie.recording()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns true if there is a movie loaded and in record mode.</span></p>
|
<p><span class="rvts37">Returns true if there is a movie loaded and in record mode.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool movie.playing()</span></p>
|
<p><span class="rvts63">bool movie.playing()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns true if there is a movie loaded and in play mode.</span></p>
|
<p><span class="rvts37">Returns true if there is a movie loaded and in play mode.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool movie.ispoweron()</span></p>
|
<p><span class="rvts63">bool movie.ispoweron()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns true if the movie recording or loaded started from 'Start'.</span></p>
|
<p><span class="rvts37">Returns true if the movie recording or loaded started from 'Start'.</span></p>
|
||||||
<p><span class="rvts37">Returns false if the movie uses a save state.</span></p>
|
<p><span class="rvts37">Returns false if the movie uses a save state.</span></p>
|
||||||
<p><span class="rvts37">Opposite of movie.isfromsavestate()</span></p>
|
<p><span class="rvts37">Opposite of movie.isfromsavestate()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool movie.isfromsavestate()</span></p>
|
<p><span class="rvts63">bool movie.isfromsavestate()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns true if the movie recording or loaded started from 'Now'.</span></p>
|
<p><span class="rvts37">Returns true if the movie recording or loaded started from 'Now'.</span></p>
|
||||||
<p><span class="rvts37">Returns false if the movie was recorded from a reset.</span></p>
|
<p><span class="rvts37">Returns false if the movie was recorded from a reset.</span></p>
|
||||||
<p><span class="rvts37">Opposite of movie.ispoweron()</span></p>
|
<p><span class="rvts37">Opposite of movie.ispoweron()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">string movie.name()</span></p>
|
<p><span class="rvts63">string movie.name()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">If a movie is loaded it returns the name of the movie, else it throws an error.</span></p>
|
<p><span class="rvts37">If a movie is loaded it returns the name of the movie, else it throws an error.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">bool movie.readonly()</span></p>
|
<p><span class="rvts63">bool movie.readonly()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the state of read-only. True if in playback mode, false if in record mode.</span></p>
|
<p><span class="rvts37">Returns the state of read-only. True if in playback mode, false if in record mode.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts71">GUI Library</span></p>
|
<p><span class="rvts71">GUI Library</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">gui.pixel(int x, int y, type color)</span></p>
|
<p><span class="rvts63">gui.pixel(int x, int y, type color)</span></p>
|
||||||
<p><span class="rvts62">gui.drawpixel(int x, int y, type color)</span></p>
|
<p><span class="rvts63">gui.drawpixel(int x, int y, type color)</span></p>
|
||||||
<p><span class="rvts62">gui.setpixel(int x, int y, type color)</span></p>
|
<p><span class="rvts63">gui.setpixel(int x, int y, type color)</span></p>
|
||||||
<p><span class="rvts62">gui.writepixel(int x, int y, type color)</span></p>
|
<p><span class="rvts63">gui.writepixel(int x, int y, type color)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Draw one pixel of a given color at the given position on the screen. See drawing notes and color notes at the bottom of the page. </span></p>
|
<p><span class="rvts37">Draw one pixel of a given color at the given position on the screen. See drawing notes and color notes at the bottom of the page. </span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">gui.getpixel(int x, int y)</span></p>
|
<p><span class="rvts63">gui.getpixel(int x, int y)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the separate RGBA components of the given pixel set by gui.pixel. This only gets LUA pixels set, not background colors.</span></p>
|
<p><span class="rvts37">Returns the separate RGBA components of the given pixel set by gui.pixel. This only gets LUA pixels set, not background colors.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -594,47 +594,47 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">See emu.getscreenpixel() for an emulator screen variant.</span></p>
|
<p><span class="rvts37">See emu.getscreenpixel() for an emulator screen variant.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">gui.line(int x1, int y1, int x2, int y2 [, color [, skipfirst]])</span></p>
|
<p><span class="rvts63">gui.line(int x1, int y1, int x2, int y2 [, color [, skipfirst]])</span></p>
|
||||||
<p><span class="rvts62">gui.drawline(int x1, int y1, int x2, int y2 [, color [, skipfirst]])</span></p>
|
<p><span class="rvts63">gui.drawline(int x1, int y1, int x2, int y2 [, color [, skipfirst]])</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Draws a line between the two points. The x1,y1 coordinate specifies one end of the line segment, and the x2,y2 coordinate specifies the other end. If skipfirst is true then this function will not draw anything at the pixel x1,y1, otherwise it will. skipfirst is optional and defaults to false. The default color for the line is solid white, but you may optionally override that using a color of your choice. See also drawing notes and color notes at the bottom of the page.</span></p>
|
<p><span class="rvts37">Draws a line between the two points. The x1,y1 coordinate specifies one end of the line segment, and the x2,y2 coordinate specifies the other end. If skipfirst is true then this function will not draw anything at the pixel x1,y1, otherwise it will. skipfirst is optional and defaults to false. The default color for the line is solid white, but you may optionally override that using a color of your choice. See also drawing notes and color notes at the bottom of the page.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">gui.box(int x1, int y1, int x2, int y2 [, fillcolor [, outlinecolor]]))</span></p>
|
<p><span class="rvts63">gui.box(int x1, int y1, int x2, int y2 [, fillcolor [, outlinecolor]]))</span></p>
|
||||||
<p><span class="rvts62">gui.drawbox(int x1, int y1, int x2, int y2 [, fillcolor [, outlinecolor]]))</span></p>
|
<p><span class="rvts63">gui.drawbox(int x1, int y1, int x2, int y2 [, fillcolor [, outlinecolor]]))</span></p>
|
||||||
<p><span class="rvts62">gui.rect(int x1, int y1, int x2, int y2 [, fillcolor [, outlinecolor]]))</span></p>
|
<p><span class="rvts63">gui.rect(int x1, int y1, int x2, int y2 [, fillcolor [, outlinecolor]]))</span></p>
|
||||||
<p><span class="rvts62">gui.drawrect(int x1, int y1, int x2, int y2 [, fillcolor [, outlinecolor]]))</span></p>
|
<p><span class="rvts63">gui.drawrect(int x1, int y1, int x2, int y2 [, fillcolor [, outlinecolor]]))</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Draws a rectangle between the given coordinates of the emulator screen for one frame. The x1,y1 coordinate specifies any corner of the rectangle (preferably the top-left corner), and the x2,y2 coordinate specifies the opposite corner.</span></p>
|
<p><span class="rvts37">Draws a rectangle between the given coordinates of the emulator screen for one frame. The x1,y1 coordinate specifies any corner of the rectangle (preferably the top-left corner), and the x2,y2 coordinate specifies the opposite corner.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">The default color for the box is transparent white with a solid white outline, but you may optionally override those using colors of your choice. Also see drawing notes and color notes.</span></p>
|
<p><span class="rvts37">The default color for the box is transparent white with a solid white outline, but you may optionally override those using colors of your choice. Also see drawing notes and color notes.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">gui.text(int x, int y, string str [, textcolor [, backcolor]])</span></p>
|
<p><span class="rvts63">gui.text(int x, int y, string str [, textcolor [, backcolor]])</span></p>
|
||||||
<p><span class="rvts62">gui.drawtext(int x, int y, string str [, textcolor [, backcolor]])</span></p>
|
<p><span class="rvts63">gui.drawtext(int x, int y, string str [, textcolor [, backcolor]])</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Draws a given string at the given position. textcolor and backcolor are optional. See 'on colors' at the end of this page for information. Using nil as the input or not including an optional field will make it use the default.</span></p>
|
<p><span class="rvts37">Draws a given string at the given position. textcolor and backcolor are optional. See 'on colors' at the end of this page for information. Using nil as the input or not including an optional field will make it use the default.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">gui.parsecolor(color)</span></p>
|
<p><span class="rvts63">gui.parsecolor(color)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns the separate RGBA components of the given color.</span></p>
|
<p><span class="rvts37">Returns the separate RGBA components of the given color.</span></p>
|
||||||
<p><span class="rvts37">For example, you can say local r,g,b,a = gui.parsecolor('orange') to retrieve the red/green/blue values of the preset color orange. (You could also omit the a in cases like this.) This uses the same conversion method that FCEUX uses internally to support the different representations of colors that the GUI library uses. Overriding this function will not change how FCEUX interprets color values, however.</span></p>
|
<p><span class="rvts37">For example, you can say local r,g,b,a = gui.parsecolor('orange') to retrieve the red/green/blue values of the preset color orange. (You could also omit the a in cases like this.) This uses the same conversion method that FCEUX uses internally to support the different representations of colors that the GUI library uses. Overriding this function will not change how FCEUX interprets color values, however.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">gui.savescreenshot()</span></p>
|
<p><span class="rvts63">gui.savescreenshot()</span></p>
|
||||||
<p><span class="rvts37">Makes a screenshot of the FCEUX emulated screen, and saves it to the appropriate folder. Performs identically to pressing the Screenshot hotkey.</span></p>
|
<p><span class="rvts37">Makes a screenshot of the FCEUX emulated screen, and saves it to the appropriate folder. Performs identically to pressing the Screenshot hotkey.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">gui.savescreenshotas(string name)</span></p>
|
<p><span class="rvts63">gui.savescreenshotas(string name)</span></p>
|
||||||
<p><span class="rvts37">Makes a screenshot of the FCEUX emulated screen, and saves it to the appropriate folder. However, this one receives a file name for the screenshot.</span></p>
|
<p><span class="rvts37">Makes a screenshot of the FCEUX emulated screen, and saves it to the appropriate folder. However, this one receives a file name for the screenshot.</span></p>
|
||||||
<p><span class="rvts37"> </span></p>
|
<p><span class="rvts37"> </span></p>
|
||||||
<p><span class="rvts62">string gui.gdscreenshot()</span></p>
|
<p><span class="rvts63">string gui.gdscreenshot()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Takes a screen shot of the image and returns it in the form of a string which can be imported by the gd library using the gd.createFromGdStr() function.</span></p>
|
<p><span class="rvts37">Takes a screen shot of the image and returns it in the form of a string which can be imported by the gd library using the gd.createFromGdStr() function.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">This function is provided so as to allow FCEUX to not carry a copy of the gd library itself. If you want raw RGB32 access, skip the first 11 bytes (header) and then read pixels as Alpha (always 0), Red, Green, Blue, left to right then top to bottom, range is 0-255 for all colors.</span></p>
|
<p><span class="rvts37">This function is provided so as to allow FCEUX to not carry a copy of the gd library itself. If you want raw RGB32 access, skip the first 11 bytes (header) and then read pixels as Alpha (always 0), Red, Green, Blue, left to right then top to bottom, range is 0-255 for all colors.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts67">Warning:</span><span class="rvts37"> Storing screen shots in memory is not recommended. Memory usage will blow up pretty quick. One screen shot string eats around 230 KB of RAM.</span></p>
|
<p><span class="rvts68">Warning:</span><span class="rvts37"> Storing screen shots in memory is not recommended. Memory usage will blow up pretty quick. One screen shot string eats around 230 KB of RAM.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">gui.gdoverlay([int dx=0, int dy=0,] string str [, sx=0, sy=0, sw, sh] [, float alphamul=1.0])</span></p>
|
<p><span class="rvts63">gui.gdoverlay([int dx=0, int dy=0,] string str [, sx=0, sy=0, sw, sh] [, float alphamul=1.0])</span></p>
|
||||||
<p><span class="rvts62">gui.image([int dx=0, int dy=0,] string str [, sx=0, sy=0, sw, sh] [, float alphamul=1.0])</span></p>
|
<p><span class="rvts63">gui.image([int dx=0, int dy=0,] string str [, sx=0, sy=0, sw, sh] [, float alphamul=1.0])</span></p>
|
||||||
<p><span class="rvts62">gui.drawimage([int dx=0, int dy=0,] string str [, sx=0, sy=0, sw, sh] [, float alphamul=1.0])</span></p>
|
<p><span class="rvts63">gui.drawimage([int dx=0, int dy=0,] string str [, sx=0, sy=0, sw, sh] [, float alphamul=1.0])</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Draws an image on the screen. gdimage must be in truecolor gd string format.</span></p>
|
<p><span class="rvts37">Draws an image on the screen. gdimage must be in truecolor gd string format.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -648,20 +648,20 @@
|
||||||
<p><span class="rvts37">local gdstr = gd.createFromPng("myimage.png"):gdStr()</span></p>
|
<p><span class="rvts37">local gdstr = gd.createFromPng("myimage.png"):gdStr()</span></p>
|
||||||
<p><span class="rvts37">gui.gdoverlay(gdstr) </span></p>
|
<p><span class="rvts37">gui.gdoverlay(gdstr) </span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">gui.opacity(int alpha)</span></p>
|
<p><span class="rvts63">gui.opacity(int alpha)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Scales the transparency of subsequent draw calls. An alpha of 0.0 means completely transparent, and an alpha of 1.0 means completely unchanged (opaque). Non-integer values are supported and meaningful, as are values greater than 1.0. It is not necessary to use this function (or the less-recommended gui.transparency) to perform drawing with transparency, because you can provide an alpha value in the color argument of each draw call. However, it can sometimes be convenient to be able to globally modify the drawing transparency. </span></p>
|
<p><span class="rvts37">Scales the transparency of subsequent draw calls. An alpha of 0.0 means completely transparent, and an alpha of 1.0 means completely unchanged (opaque). Non-integer values are supported and meaningful, as are values greater than 1.0. It is not necessary to use this function (or the less-recommended gui.transparency) to perform drawing with transparency, because you can provide an alpha value in the color argument of each draw call. However, it can sometimes be convenient to be able to globally modify the drawing transparency. </span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">gui.transparency(int trans)</span></p>
|
<p><span class="rvts63">gui.transparency(int trans)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Scales the transparency of subsequent draw calls. Exactly the same as gui.opacity, except the range is different: A trans of 4.0 means completely transparent, and a trans of 0.0 means completely unchanged (opaque). </span></p>
|
<p><span class="rvts37">Scales the transparency of subsequent draw calls. Exactly the same as gui.opacity, except the range is different: A trans of 4.0 means completely transparent, and a trans of 0.0 means completely unchanged (opaque). </span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">function gui.register(function func)</span></p>
|
<p><span class="rvts63">function gui.register(function func)</span></p>
|
||||||
<p><span class="rvts62"><br/></span></p>
|
<p><span class="rvts63"><br/></span></p>
|
||||||
<p><span class="rvts37">Register a function to be called between a frame being prepared for displaying on your screen and it actually happening. Used when that 1 frame delay for rendering is not acceptable.</span></p>
|
<p><span class="rvts37">Register a function to be called between a frame being prepared for displaying on your screen and it actually happening. Used when that 1 frame delay for rendering is not acceptable.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">string gui.popup(string message [, string type = "ok" [, string icon = "message"]])</span></p>
|
<p><span class="rvts63">string gui.popup(string message [, string type = "ok" [, string icon = "message"]])</span></p>
|
||||||
<p><span class="rvts62">string input.popup(string message [, string type = "yesno" [, string icon = "question"]])</span></p>
|
<p><span class="rvts63">string input.popup(string message [, string type = "yesno" [, string icon = "question"]])</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Brings up a modal popup dialog box (everything stops until the user dismisses it). The box displays the message tostring(msg). This function returns the name of the button the user clicked on (as a string).</span></p>
|
<p><span class="rvts37">Brings up a modal popup dialog box (everything stops until the user dismisses it). The box displays the message tostring(msg). This function returns the name of the button the user clicked on (as a string).</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -678,7 +678,7 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts71">Sound Library</span></p>
|
<p><span class="rvts71">Sound Library</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts62">table sound.get()</span></p>
|
<p><span class="rvts63">table sound.get()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns current state of PSG channels in big array.</span></p>
|
<p><span class="rvts37">Returns current state of PSG channels in big array.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -748,58 +748,58 @@
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts71">TAS Editor Library</span></p>
|
<p><span class="rvts71">TAS Editor Library</span></p>
|
||||||
<p><span class="rvts62"><br/></span></p>
|
<p><span class="rvts63"><br/></span></p>
|
||||||
<p><span class="rvts62">taseditor.registerauto(function func)</span></p>
|
<p><span class="rvts63">taseditor.registerauto(function func)</span></p>
|
||||||
<p><span class="rvts62">taseditor.registermanual(function func)</span></p>
|
<p><span class="rvts63">taseditor.registermanual(function func)</span></p>
|
||||||
<p><span class="rvts62">bool taseditor.engaged()</span></p>
|
<p><span class="rvts63">bool taseditor.engaged()</span></p>
|
||||||
<p><span class="rvts62">bool taseditor.markedframe(int frame)</span></p>
|
<p><span class="rvts63">bool taseditor.markedframe(int frame)</span></p>
|
||||||
<p><span class="rvts62">int taseditor.getmarker(int frame)</span></p>
|
<p><span class="rvts63">int taseditor.getmarker(int frame)</span></p>
|
||||||
<p><span class="rvts62">int taseditor.setmarker(int frame)</span></p>
|
<p><span class="rvts63">int taseditor.setmarker(int frame)</span></p>
|
||||||
<p><span class="rvts62">taseditor.clearmarker(int frame)</span></p>
|
<p><span class="rvts63">taseditor.clearmarker(int frame)</span></p>
|
||||||
<p><span class="rvts62">string taseditor.getnote(int index)</span></p>
|
<p><span class="rvts63">string taseditor.getnote(int index)</span></p>
|
||||||
<p><span class="rvts62">taseditor.setnote(int index, string newtext)</span></p>
|
<p><span class="rvts63">taseditor.setnote(int index, string newtext)</span></p>
|
||||||
<p><span class="rvts62">int taseditor.getcurrentbranch()</span></p>
|
<p><span class="rvts63">int taseditor.getcurrentbranch()</span></p>
|
||||||
<p><span class="rvts62">string taseditor.getrecordermode()</span></p>
|
<p><span class="rvts63">string taseditor.getrecordermode()</span></p>
|
||||||
<p><span class="rvts62">int taseditor.getsuperimpose()</span></p>
|
<p><span class="rvts63">int taseditor.getsuperimpose()</span></p>
|
||||||
<p><span class="rvts62">int taseditor.getlostplayback()</span></p>
|
<p><span class="rvts63">int taseditor.getlostplayback()</span></p>
|
||||||
<p><span class="rvts62">int taseditor.getplaybacktarget()</span></p>
|
<p><span class="rvts63">int taseditor.getplaybacktarget()</span></p>
|
||||||
<p><span class="rvts62">taseditor.setplayback(int frame)</span></p>
|
<p><span class="rvts63">taseditor.setplayback(int frame)</span></p>
|
||||||
<p><span class="rvts62">taseditor.stopseeking()</span></p>
|
<p><span class="rvts63">taseditor.stopseeking()</span></p>
|
||||||
<p><span class="rvts62">taseditor.getselection()</span></p>
|
<p><span class="rvts63">taseditor.getselection()</span></p>
|
||||||
<p><span class="rvts62">taseditor.setselection()</span></p>
|
<p><span class="rvts63">taseditor.setselection()</span></p>
|
||||||
<p><span class="rvts62">int taseditor.getinput(int frame, int joypad)</span></p>
|
<p><span class="rvts63">int taseditor.getinput(int frame, int joypad)</span></p>
|
||||||
<p><span class="rvts62">taseditor.submitinputchange(int frame, int joypad, int input)</span></p>
|
<p><span class="rvts63">taseditor.submitinputchange(int frame, int joypad, int input)</span></p>
|
||||||
<p><span class="rvts62">taseditor.submitinsertframes(int frame, int number)</span></p>
|
<p><span class="rvts63">taseditor.submitinsertframes(int frame, int number)</span></p>
|
||||||
<p><span class="rvts62">taseditor.submitdeleteframes(int frame, int number)</span></p>
|
<p><span class="rvts63">taseditor.submitdeleteframes(int frame, int number)</span></p>
|
||||||
<p><span class="rvts62">int taseditor.applyinputchanges([string name])</span></p>
|
<p><span class="rvts63">int taseditor.applyinputchanges([string name])</span></p>
|
||||||
<p><span class="rvts62">taseditor.clearinputchanges()</span></p>
|
<p><span class="rvts63">taseditor.clearinputchanges()</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">For full description of these functions refer to TAS Editor Manual.</span></p>
|
<p><span class="rvts37">For full description of these functions refer to TAS Editor Manual.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts60">Bitwise Operations</span></p>
|
<p><span class="rvts61">Bitwise Operations</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">The following bit functions were added to FCEUX internally to compensate for Lua's lack of them. But it also supports all operations from </span><a class="rvts70" href="http://bitop.luajit.org/api.html">LuaBitOp</a><span class="rvts37"> module, since it is also embedded in FCEUX.</span></p>
|
<p><span class="rvts37">The following bit functions were added to FCEUX internally to compensate for Lua's lack of them. But it also supports all operations from </span><a class="rvts70" href="http://bitop.luajit.org/api.html">LuaBitOp</a><span class="rvts37"> module, since it is also embedded in FCEUX.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts64">int AND(int n1, int n2, ..., int nn)</span></p>
|
<p><span class="rvts65">int AND(int n1, int n2, ..., int nn)</span></p>
|
||||||
<p><span class="rvts64"><br/></span></p>
|
<p><span class="rvts65"><br/></span></p>
|
||||||
<p><span class="rvts37">Binary logical AND of all the given integers.</span></p>
|
<p><span class="rvts37">Binary logical AND of all the given integers.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts64">int OR(int n1, int n2, ..., int nn)</span></p>
|
<p><span class="rvts65">int OR(int n1, int n2, ..., int nn)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Binary logical OR of all the given integers.</span></p>
|
<p><span class="rvts37">Binary logical OR of all the given integers.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts64">int XOR(int n1, int n2, ..., int nn)</span></p>
|
<p><span class="rvts65">int XOR(int n1, int n2, ..., int nn)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Binary logical XOR of all the given integers. </span></p>
|
<p><span class="rvts37">Binary logical XOR of all the given integers. </span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts64">int BIT(int n1, int n2, ..., int nn)</span></p>
|
<p><span class="rvts65">int BIT(int n1, int n2, ..., int nn)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Returns an integer with the given bits turned on. Parameters should be smaller than 31.</span></p>
|
<p><span class="rvts37">Returns an integer with the given bits turned on. Parameters should be smaller than 31.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts65">Appendix</span></p>
|
<p><span class="rvts66">Appendix</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts66">On drawing</span></p>
|
<p><span class="rvts67">On drawing</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">A general warning about drawing is that it is always one frame behind unless you use gui.register. This is because you tell the emulator to paint something but it will actually paint it when generating the image for the next frame. So you see your painting, except it will be on the image of the next frame. You can prevent this with gui.register because it gives you a quick chance to paint before blitting.</span></p>
|
<p><span class="rvts37">A general warning about drawing is that it is always one frame behind unless you use gui.register. This is because you tell the emulator to paint something but it will actually paint it when generating the image for the next frame. So you see your painting, except it will be on the image of the next frame. You can prevent this with gui.register because it gives you a quick chance to paint before blitting.</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
|
@ -807,7 +807,7 @@
|
||||||
<p><span class="rvts37">--320x239, 8bit color (confirm?)</span></p>
|
<p><span class="rvts37">--320x239, 8bit color (confirm?)</span></p>
|
||||||
<p><span class="rvts37">256x224, 8bit color (confirm?)</span></p>
|
<p><span class="rvts37">256x224, 8bit color (confirm?)</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts66">On colors</span></p>
|
<p><span class="rvts67">On colors</span></p>
|
||||||
<p><span class="rvts37"><br/></span></p>
|
<p><span class="rvts37"><br/></span></p>
|
||||||
<p><span class="rvts37">Colors can be of a few types.</span></p>
|
<p><span class="rvts37">Colors can be of a few types.</span></p>
|
||||||
<p><span class="rvts37">Int: use the a formula to compose the color as a number (depends on color depth)</span></p>
|
<p><span class="rvts37">Int: use the a formula to compose the color as a number (depends on color depth)</span></p>
|
||||||
|
|
|
@ -56,19 +56,19 @@
|
||||||
<div id="topic_content">
|
<div id="topic_content">
|
||||||
|
|
||||||
<p></p>
|
<p></p>
|
||||||
<p><span class="rvts59">Using Lua scripting</span></p>
|
<p><span class="rvts60">Using Lua scripting</span></p>
|
||||||
<p><span class="rvts32"><br/></span></p>
|
<p><span class="rvts32"><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>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><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>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="rvts59"><br/></span></p>
|
<p><span class="rvts60"><br/></span></p>
|
||||||
<p><span class="rvts59">Core Lua Documentation</span></p>
|
<p><span class="rvts60">Core Lua Documentation</span></p>
|
||||||
<p><span class="rvts32"><br/></span></p>
|
<p><span class="rvts32"><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. Try searching on the Internet for "Lua tutorial". As of this writing, it's official homepage is <a class="rvts18" href="http://www.lua.org/">http://www.lua.org/</a></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. Try searching on the Internet for "Lua tutorial". 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><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. You will probably also find useful information on the Internet.</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. You will probably also find useful information on the Internet.</p>
|
||||||
<p><span class="rvts59"><br/></span></p>
|
<p><span class="rvts60"><br/></span></p>
|
||||||
<p><span class="rvts59">GUI Frontend</span></p>
|
<p><span class="rvts60">GUI Frontend</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>To use a Lua script, you need to create one in a text editor. The name of the file created should end in .lua to indicate that it is a Lua script.</p>
|
<p>To use a Lua script, you need to create one in a text editor. The name of the file created should end in .lua to indicate that it is a Lua script.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -76,7 +76,7 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>To end a Lua script, choose "Stop Lua Script" ***from where***.</p>
|
<p>To end a Lua script, choose "Stop Lua Script" ***from where***.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts59">FCEUX Lua Basics</span></p>
|
<p><span class="rvts60">FCEUX Lua Basics</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Your script will be constructed according to the rules of Lua, but you will use FCEUX-specific functions to interact with the emulator. For example, one of the most often-used functions is emu.frameadvance() which will tell the emulator to advance exactly one frame, which is the basic unit of time on an NES.</p>
|
<p>Your script will be constructed according to the rules of Lua, but you will use FCEUX-specific functions to interact with the emulator. For example, one of the most often-used functions is emu.frameadvance() which will tell the emulator to advance exactly one frame, which is the basic unit of time on an NES.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
<p>The following Lua libraries are integrated into FCEUX win32-executable (statically linked) and are available for using in your scripts. You can also use any other Lua library by placing its .dll files into FCEUX folder.</p>
|
<p>The following Lua libraries are integrated into FCEUX win32-executable (statically linked) and are available for using in your scripts. You can also use any other Lua library by placing its .dll files into FCEUX folder.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts61">IUP library</span></p>
|
<p><span class="rvts62">IUP library</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>IUP (Portable User Interface) is a toolkit for building graphical user interfaces.</p>
|
<p>IUP (Portable User Interface) is a toolkit for building graphical user interfaces.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
<p><a class="rvts79" href="http://www.tecgraf.puc-rio.br/iup/" target="_blank">http://www.tecgraf.puc-rio.br/iup/</a></p>
|
<p><a class="rvts79" href="http://www.tecgraf.puc-rio.br/iup/" target="_blank">http://www.tecgraf.puc-rio.br/iup/</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts61">IM library</span></p>
|
<p><span class="rvts62">IM library</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>IM is a toolkit for Digital Imaging. The main goal of the library is to provide a simple API and abstraction of images for applications.</p>
|
<p>IM is a toolkit for Digital Imaging. The main goal of the library is to provide a simple API and abstraction of images for applications.</p>
|
||||||
<p>File formats supported: TIFF, BMP, PNG, JPEG, GIF and AVI. Image representation includes scientific data types. About a hundred Image Processing operations are available.</p>
|
<p>File formats supported: TIFF, BMP, PNG, JPEG, GIF and AVI. Image representation includes scientific data types. About a hundred Image Processing operations are available.</p>
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
<p><a class="rvts79" href="http://www.tecgraf.puc-rio.br/im/" target="_blank">http://www.tecgraf.puc-rio.br/im/</a></p>
|
<p><a class="rvts79" href="http://www.tecgraf.puc-rio.br/im/" target="_blank">http://www.tecgraf.puc-rio.br/im/</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts61">CD library</span></p>
|
<p><span class="rvts62">CD library</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Canvas Draw is a graphics library.</p>
|
<p>Canvas Draw is a graphics library.</p>
|
||||||
<p>The library contains functions to support both vector and image applications, and the visualization surface can be either a window or a more abstract surface, such as Image, Clipboard, Metafile, PS, and so on.</p>
|
<p>The library contains functions to support both vector and image applications, and the visualization surface can be either a window or a more abstract surface, such as Image, Clipboard, Metafile, PS, and so on.</p>
|
||||||
|
@ -86,7 +86,7 @@
|
||||||
<p><a class="rvts79" href="http://www.tecgraf.puc-rio.br/cd/" target="_blank">http://www.tecgraf.puc-rio.br/cd/</a></p>
|
<p><a class="rvts79" href="http://www.tecgraf.puc-rio.br/cd/" target="_blank">http://www.tecgraf.puc-rio.br/cd/</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts61">LuaSocket library</span></p>
|
<p><span class="rvts62">LuaSocket library</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>LuaSocket is a Lua extension library that is composed by two parts: a C core that provides support for the TCP and UDP transport layers, and a set of Lua modules that add support for the SMTP (sending e-mails), HTTP (WWW access) and FTP (uploading and downloading files) protocols and other functionality commonly needed by applications that deal with the Internet.</p>
|
<p>LuaSocket is a Lua extension library that is composed by two parts: a C core that provides support for the TCP and UDP transport layers, and a set of Lua modules that add support for the SMTP (sending e-mails), HTTP (WWW access) and FTP (uploading and downloading files) protocols and other functionality commonly needed by applications that deal with the Internet.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -95,7 +95,7 @@
|
||||||
<p><a class="rvts79" href="http://w3.impa.br/~diego/software/luasocket/home.html" target="_blank">http://w3.impa.br/~diego/software/luasocket/home.html</a></p>
|
<p><a class="rvts79" href="http://w3.impa.br/~diego/software/luasocket/home.html" target="_blank">http://w3.impa.br/~diego/software/luasocket/home.html</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts61">WinAPI library</span></p>
|
<p><span class="rvts62">WinAPI library</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>This module provides basic tools for working with Windows system resources.</p>
|
<p>This module provides basic tools for working with Windows system resources.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
|
|
@ -61,23 +61,23 @@
|
||||||
<p>A bit of previous programming knowledge will be useful in taking advantage of this feature, but it is certainly not a requirement. Lua is specifically written with the intention of being easier than most languages for anyone to understand and use.</p>
|
<p>A bit of previous programming knowledge will be useful in taking advantage of this feature, but it is certainly not a requirement. Lua is specifically written with the intention of being easier than most languages for anyone to understand and use.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts58" href="LuaGettingStarted.html">Getting Started</a></p>
|
<p><a class="rvts59" href="LuaGettingStarted.html">Getting Started</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>The basics of Lua scripting, its implementation into FCEUX, and how to get started using Lua.</p>
|
<p>The basics of Lua scripting, its implementation into FCEUX, and how to get started using Lua.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts58" href="Commands.html">Using Lua</a></p>
|
<p><a class="rvts59" href="Commands.html">Using Lua</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>How to use Lua and basic syntax/commands that are useable under FCEUX.</p>
|
<p>How to use Lua and basic syntax/commands that are useable under FCEUX.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts58" href="LuaFunctionsList.html">Lua Functions List</a></p>
|
<p><a class="rvts59" href="LuaFunctionsList.html">Lua Functions List</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A list of Lua functions available in FCEUX and a brief description of each.</p>
|
<p>A list of Lua functions available in FCEUX and a brief description of each.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts58" href="LuaPerks.html">LuaPerks</a></p>
|
<p><a class="rvts59" href="LuaPerks.html">LuaPerks</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Additional libraries integrated into FCEUX.</p>
|
<p>Additional libraries integrated into FCEUX.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts58" href="LuaBot.html">Lua Bot</a></p>
|
<p><a class="rvts59" href="LuaBot.html">Lua Bot</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>How to use Luau's version of Basic bot.</p>
|
<p>How to use Luau's version of Basic bot.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
|
|
@ -112,7 +112,7 @@
|
||||||
<p>Reset will reset the count to 0.</p>
|
<p>Reset will reset the count to 0.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts42">Usage Example:</span></p>
|
<p><span class="rvts43">Usage Example:</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>As an example of the memory change monitoring, Let's say we are recording a movie of the game Super C and want to keep track of when the game lags.</p>
|
<p>As an example of the memory change monitoring, Let's say we are recording a movie of the game Super C and want to keep track of when the game lags.</p>
|
||||||
<p>The ram address 001C functions as a "lag flag". It will remain 0, then change to a positive value on a frame that the game lags.</p>
|
<p>The ram address 001C functions as a "lag flag". It will remain 0, then change to a positive value on a frame that the game lags.</p>
|
||||||
|
|
|
@ -64,16 +64,16 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts12">Contents</span></p>
|
<p><span class="rvts12">Contents</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Memory Map</span></p>
|
<p><span class="rvts41">Memory Map</span></p>
|
||||||
<p> Gives a diagram of the 2A03 CPU memory map .</p>
|
<p> Gives a diagram of the 2A03 CPU memory map .</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">2C02 PPU memory map</span></p>
|
<p><span class="rvts41">2C02 PPU memory map</span></p>
|
||||||
<p> Gives more detailed info about each section of the Memory map diagram</p>
|
<p> Gives more detailed info about each section of the Memory map diagram</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Game Ram Details</span></p>
|
<p><span class="rvts41">Game Ram Details</span></p>
|
||||||
<p> On board RAM Map ($000-$07FF) Map (gives specific info on the how NES games typically layout their ram values)</p>
|
<p> On board RAM Map ($000-$07FF) Map (gives specific info on the how NES games typically layout their ram values)</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Online Resources</span></p>
|
<p><span class="rvts41">Online Resources</span></p>
|
||||||
<p><a class="rvts18" href="http://en.wikibooks.org/wiki/NES_Programming">NES Programming - Wikipedia</a></p>
|
<p><a class="rvts18" href="http://en.wikibooks.org/wiki/NES_Programming">NES Programming - Wikipedia</a></p>
|
||||||
<p><a class="rvts18" href="http://everything2.com/e2node/NES%2520memory%2520map">NES Memory Map</a></p>
|
<p><a class="rvts18" href="http://everything2.com/e2node/NES%2520memory%2520map">NES Memory Map</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -171,7 +171,7 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Most games use the basic on board ram. The address range of this ram is $0000-$07FF. This translates to 2048 possible ram values.</p>
|
<p>Most games use the basic on board ram. The address range of this ram is $0000-$07FF. This translates to 2048 possible ram values.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Pages</span></p>
|
<p><span class="rvts41">Pages</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>This ram is broken down into 8 pages. A "page" is a block of 256 ram values.</p>
|
<p>This ram is broken down into 8 pages. A "page" is a block of 256 ram values.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -207,8 +207,8 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>These values rarely (if at all) reside outside blocks 1, 3, 4, or 5. This knowledge already reduces your search possibilities in half!</p>
|
<p>These values rarely (if at all) reside outside blocks 1, 3, 4, or 5. This knowledge already reduces your search possibilities in half!</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Rows </span></p>
|
<p><span class="rvts41">Rows </span></p>
|
||||||
<p><span class="rvts40"><br/></span></p>
|
<p><span class="rvts41"><br/></span></p>
|
||||||
<p>Each block is broken down into 16 "rows" of addresses. For example, in block 3, the first row is $030x ($0300-$030F).</p>
|
<p>Each block is broken down into 16 "rows" of addresses. For example, in block 3, the first row is $030x ($0300-$030F).</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Each row of 16* will contain similar data. For instance all x coordinates will generally be in the same row. So xxx0 might be the main characters x position. xxxx1 would be "enemy 1" (1st enemy loaded onto the screen), and so on.</p>
|
<p>Each row of 16* will contain similar data. For instance all x coordinates will generally be in the same row. So xxx0 might be the main characters x position. xxxx1 would be "enemy 1" (1st enemy loaded onto the screen), and so on.</p>
|
||||||
|
@ -217,7 +217,7 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>*Super Mario Bros. 2 (U) is a rare example that uses rows of 10</p>
|
<p>*Super Mario Bros. 2 (U) is a rare example that uses rows of 10</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Columns</span></p>
|
<p><span class="rvts41">Columns</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A column would be all the values of a block that share the same last digit. So a column would be 16 addresses such as $0300, $0310, $0320, etc.</p>
|
<p>A column would be all the values of a block that share the same last digit. So a column would be 16 addresses such as $0300, $0310, $0320, etc.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -227,7 +227,7 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>If the next row ($031x) is x positions. $0310 would be the player's x position. The remaining positions of that row would correspond to the other player/enemy x positions in line with the hp values of the previous row.</p>
|
<p>If the next row ($031x) is x positions. $0310 would be the player's x position. The remaining positions of that row would correspond to the other player/enemy x positions in line with the hp values of the previous row.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Example</span></p>
|
<p><span class="rvts41">Example</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>These distinctions are easier to see in a visual example. This is the enemy/player stats as they are mapped in the game <span class="rvts29">Teenage Mutant Ninja Turtles</span>.</p>
|
<p>These distinctions are easier to see in a visual example. This is the enemy/player stats as they are mapped in the game <span class="rvts29">Teenage Mutant Ninja Turtles</span>.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
|
|
@ -259,18 +259,18 @@
|
||||||
<p>************************</p>
|
<p>************************</p>
|
||||||
<p> This section will describe the internal components making up each individual channel. Each component will then be described in full detail.</p>
|
<p> This section will describe the internal components making up each individual channel. Each component will then be described in full detail.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts68">Device</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> Triangle Noise Square</span></p>
|
<p><span class="rvts40">Device</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> Triangle Noise Square</span></p>
|
||||||
<p><span class="rvts68">------</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> -------- ------ ------</span></p>
|
<p><span class="rvts40">------</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> -------- ------ ------</span></p>
|
||||||
<p><span class="rvts68">triangle step generator</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68">X</span></p>
|
<p><span class="rvts40">triangle step generator</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40">X</span></p>
|
||||||
<p><span class="rvts68">linear counter</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68">X</span></p>
|
<p><span class="rvts40">linear counter</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40">X</span></p>
|
||||||
<p><span class="rvts68">programmable timer</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68">X X X</span></p>
|
<p><span class="rvts40">programmable timer</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40">X X X</span></p>
|
||||||
<p><span class="rvts68">length counter</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68">X X X</span></p>
|
<p><span class="rvts40">length counter</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40">X X X</span></p>
|
||||||
<p><span class="rvts68">4-bit DAC</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68">X X X</span></p>
|
<p><span class="rvts40">4-bit DAC</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40">X X X</span></p>
|
||||||
<p><span class="rvts68">volume/envelope decay unit</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> X X</span></p>
|
<p><span class="rvts40">volume/envelope decay unit</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> X X</span></p>
|
||||||
<p><span class="rvts68">sweep unit</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> X</span></p>
|
<p><span class="rvts40">sweep unit</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> X</span></p>
|
||||||
<p><span class="rvts68">duty cycle generator</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> X</span></p>
|
<p><span class="rvts40">duty cycle generator</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> X</span></p>
|
||||||
<p><span class="rvts68">wavelength converter</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> X</span></p>
|
<p><span class="rvts40">wavelength converter</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> X</span></p>
|
||||||
<p><span class="rvts68">random number generator</span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> </span><span class="rvts68"> X</span></p>
|
<p><span class="rvts40">random number generator</span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> </span><span class="rvts40"> X</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>+-------------------------+</p>
|
<p>+-------------------------+</p>
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Documentation on this dialog can be found on TASVideos <a class="rvts18" href="http://tasvideos.org/EmulatorResources/RamSearch.html" target="_blank">here</a>.</p>
|
<p>Documentation on this dialog can be found on TASVideos <a class="rvts18" href="http://tasvideos.org/EmulatorResources/RamSearch.html" target="_blank">here</a>.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Hotkeys</span></p>
|
<p><span class="rvts41">Hotkeys</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts18" href="MapHotkeys.html">Hotkeys</a> can be assigned to common search commands so they can be easily selected while in the main window.</p>
|
<p><a class="rvts18" href="MapHotkeys.html">Hotkeys</a> can be assigned to common search commands so they can be easily selected while in the main window.</p>
|
||||||
<p></p>
|
<p></p>
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts16">Region</span></p>
|
<p><span class="rvts16">Region</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Allows to choose between NTSC (224p@60fps), PAL and Dendy (240p@50fps) modes. For PAL, FCEUX will detect the proper choice when loading a ROM and set the flag accordingly. Dendy mode (sometimes also called Hybrid) is a modification of the NTSC one, it supports games released for the NTSC region, slowing them down to PAL speed.</p>
|
<p>Allows to choose between NTSC (224p@60fps), PAL and Dendy (240p@50fps) modes. For PAL, FCEUX will detect the proper choice when loading a ROM and set the flag accordingly (based on file name, where<span class="rvts40"> (E) </span>is used by GoodTools to mark European ROMs). Dendy mode (sometimes also called Hybrid) is a modification of the NTSC one, it was used in some Famiclones and supports games released for the NTSC region, slowing them down to PAL speed.</p>
|
||||||
<p>Note: you can't change this setting while a movie is being played or recorded.</p>
|
<p>Note: you can't change this setting while a movie is being played or recorded.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
|
|
@ -58,12 +58,12 @@
|
||||||
<p>Guides for the specific tools and settings under FCEUX's Tools menu.</p>
|
<p>Guides for the specific tools and settings under FCEUX's Tools menu.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts41" href="CheatSearch.html">Cheat Search</a></p>
|
<p><a class="rvts42" href="CheatSearch.html">Cheat Search</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A guide to using the cheat search tool.</p>
|
<p>A guide to using the cheat search tool.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts41" href="MemoryWatch.html"><br/></a></p>
|
<p><a class="rvts42" href="MemoryWatch.html"><br/></a></p>
|
||||||
<p><a class="rvts41" href="MemoryWatch.html">Memory Watch</a></p>
|
<p><a class="rvts42" href="MemoryWatch.html">Memory Watch</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A guide to using the Memory Watch tool.</p>
|
<p>A guide to using the Memory Watch tool.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -73,22 +73,22 @@
|
||||||
<p>A guide to using the RAM filter tool.</p>
|
<p>A guide to using the RAM filter tool.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts41" href="TASEditor.html">TAS Editor</a></p>
|
<p><a class="rvts42" href="TASEditor.html">TAS Editor</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A new tool for making TAS movies.</p>
|
<p>A new tool for making TAS movies.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts41" href="Covertfcm.html">Convert fcm</a></p>
|
<p><a class="rvts42" href="Covertfcm.html">Convert fcm</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A tool that will convert .fcm movie files to the .fm2 file format.</p>
|
<p>A tool that will convert .fcm movie files to the .fm2 file format.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts41" href="AutoFireConfigurations.html">Auto Fire settings</a></p>
|
<p><a class="rvts42" href="AutoFireConfigurations.html">Auto Fire settings</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A guide for setting auto-fire, auto-fire offset, and alternate A and B options.</p>
|
<p>A guide for setting auto-fire, auto-fire offset, and alternate A and B options.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><a class="rvts41" href="TextHooker.html">Text Hooker</a></p>
|
<p><a class="rvts42" href="TextHooker.html">Text Hooker</a></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>A guide for using the text hooking tool.</p>
|
<p>A guide for using the text hooking tool.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
<div id="topic_content">
|
<div id="topic_content">
|
||||||
|
|
||||||
<p></p>
|
<p></p>
|
||||||
<p><span class="rvts57">Trace Logger</span></p>
|
<p><span class="rvts58">Trace Logger</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts16">Introduction</span></p>
|
<p><span class="rvts16">Introduction</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
|
|
@ -61,51 +61,51 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>This section describes potential problems/question that could arise when using FCEUX.</p>
|
<p>This section describes potential problems/question that could arise when using FCEUX.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Slow emulation / Sound crackle</span></p>
|
<p><span class="rvts41">Slow emulation / Sound crackle</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>FCEUX may not run well on slow CPUs.</p>
|
<p>FCEUX may not run well on slow CPUs.</p>
|
||||||
<p>Ensure that you're using the Old PPU, because the New PPU engine is very slow. Check Config -> PPU -> Old PPU.</p>
|
<p>Ensure that you're using the Old PPU, because the New PPU engine is very slow. Check Config -> PPU -> Old PPU.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Sound crackle</span></p>
|
<p><span class="rvts41">Sound crackle</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>If you enable hardware acceleration and Vsync (Wait for VBlank), and your monitor has a framerate different from 60FPS, you may experience minor sound cracle. This is a known issue and will probably be resolved in a future release.</p>
|
<p>If you enable hardware acceleration and Vsync (Wait for VBlank), and your monitor has a framerate different from 60FPS, you may experience minor sound cracle. This is a known issue and will probably be resolved in a future release.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Emulated picture is blurred (similar to the bilinear filter)</span></p>
|
<p><span class="rvts41">Emulated picture is blurred (similar to the bilinear filter)</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Try choosing different options in the "DirectDraw" list in the <a class="rvts18" href="Video.html">Video</a> config dialog.</p>
|
<p>Try choosing different options in the "DirectDraw" list in the <a class="rvts18" href="Video.html">Video</a> config dialog.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Slow savestates when recording movies</span></p>
|
<p><span class="rvts41">Slow savestates when recording movies</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>On slower computers, savestates can be slow with long movies. A small speedup can be done by disabling Config -> Enable -> Backup savestates.</p>
|
<p>On slower computers, savestates can be slow with long movies. A small speedup can be done by disabling Config -> Enable -> Backup savestates.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">The colors in game X do not look right!</span></p>
|
<p><span class="rvts41">The colors in game X do not look right!</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>There's no such thing as a universally right palette for NES games.</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>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><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">I converted a .fcm file to .fm2, but the .fm2 desyncs</span></p>
|
<p><span class="rvts41">I converted a .fcm file to .fm2, but the .fm2 desyncs</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Depending on what version of FCEU / Game your .fcm was made, there maybe a number of sync issues. In addition, the .fm2 conversion tool has had some issues on certain operating systems including Vista and Mac. you can try using an external program for movie conversion.</p>
|
<p>Depending on what version of FCEU / Game your .fcm was made, there maybe a number of sync issues. In addition, the .fm2 conversion tool has had some issues on certain operating systems including Vista and Mac. you can try using an external program for movie conversion.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Can't find FDS Bios image when I attempt to load a .fds game!</span></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><br/></p>
|
||||||
<p>FCEUX requires the FDS Bios to be named <span class="rvts32">disksys.rom</span>. 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="rvts32">disksys.rom</span>. 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><br/></p>
|
||||||
<p>In addition, there are some bad versions of disksys.rom. The one FDS requires is 8192 bytes in size.</p>
|
<p>In addition, there are some bad versions of disksys.rom. The one FDS requires is 8192 bytes in size.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">How can I use Netplay / Where can I get FCEU Server?</span></p>
|
<p><span class="rvts41">How can I use Netplay / Where can I get FCEU Server?</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Currently, the Windows version of FCEUX is barely compatible with the FCEU-server code. This is a known issue and will probably be resolved in a future release.</p>
|
<p>Currently, the Windows version of FCEUX is barely compatible with the FCEU-server code. This is a known issue and will probably be resolved in a future release.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">I have a Game Genie rom, how can I use it with FCEUX?</span></p>
|
<p><span class="rvts41">I have a Game Genie rom, how can I use it with FCEUX?</span></p>
|
||||||
<p><br/></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 an old-school Game Genie ROM. It must be named <span class="rvts32">gg.rom</span> and must be placed in the root directory (where fceux.exe is stored). You must also check <span class="rvts22">Config->Enable->Game Genie ROM</span> in the main menu. Then the Game Genie ROM will activate every time you open a ROM, so you can enter GG codes letter-by-letter like they did in the past.</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 an old-school Game Genie ROM. It must be named <span class="rvts32">gg.rom</span> and must be placed in the root directory (where fceux.exe is stored). You must also check <span class="rvts22">Config->Enable->Game Genie ROM</span> in the main menu. Then the Game Genie ROM will activate every time you open a ROM, so you can enter GG codes letter-by-letter like they did in the past.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
|
|
@ -63,52 +63,52 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts12">Full Screen Settings</span></p>
|
<p><span class="rvts12">Full Screen Settings</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Full Screen</span></p>
|
<p><span class="rvts41">Full Screen</span></p>
|
||||||
<p>Check this checkbox to enter full screen mode.</p>
|
<p>Check this checkbox to enter full screen mode.</p>
|
||||||
<p>Alternatively, you can use a hotkey (Alt+Enter by default) or a double-click (if the "Switch fullscreen by double-click" option is enabled in <a class="rvts18" href="GUI.html">GUI options</a>).</p>
|
<p>Alternatively, you can use a hotkey (Alt+Enter by default) or a double-click (if the "Switch fullscreen by double-click" option is enabled in <a class="rvts18" href="GUI.html">GUI options</a>).</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Enter full screen mode after game is loaded</span></p>
|
<p><span class="rvts41">Enter full screen mode after game is loaded</span></p>
|
||||||
<p>If checked, FCEUX will enter full screen mode when a game is loaded.</p>
|
<p>If checked, FCEUX will enter full screen mode when a game is loaded.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Hide mouse cursor</span></p>
|
<p><span class="rvts41">Hide mouse cursor</span></p>
|
||||||
<p>If checked, FCEUX will hide mouse cursor when in full screen mode.</p>
|
<p>If checked, FCEUX will hide mouse cursor when in full screen mode.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Mode</span></p>
|
<p><span class="rvts41">Mode</span></p>
|
||||||
<p>Sets the image size during full screen mode. By default this is automatically set to match current display resolution. You can change the resolution by entering different values.</p>
|
<p>Sets the image size during full screen mode. By default this is automatically set to match current display resolution. You can change the resolution by entering different values.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Special Scaler</span></p>
|
<p><span class="rvts41">Special Scaler</span></p>
|
||||||
<p>Within this box is eight options: hq2x, Scale2x, NTSC 2x, hq3x, Scale3x, Prescale2x, Prescale3x, and Prescale4x.</p>
|
<p>Within this box is eight options: hq2x, Scale2x, NTSC 2x, hq3x, Scale3x, Prescale2x, Prescale3x, and Prescale4x.</p>
|
||||||
<p>- Scale2x/3x just attempts to render out the corners of the pixels to make them look a bit rounder. "2x" means two times bigger than 1x1 and "3x" means three times bigger than 1x1.</p>
|
<p>- Scale2x/3x just attempts to render out the corners of the pixels to make them look a bit rounder. "2x" means two times bigger than 1x1 and "3x" means three times bigger than 1x1.</p>
|
||||||
<p>- Hq2x/3x does a much better job than scale2x/3x by smearing the pixels together with a slight blur. However, Hq2x/3x requires a faster computer for decent speed (at least 1 GHz and above). "2x" means two times bigger than 1x1 and "3x" means three times bigger than 1x1.</p>
|
<p>- Hq2x/3x does a much better job than scale2x/3x by smearing the pixels together with a slight blur. However, Hq2x/3x requires a faster computer for decent speed (at least 1 GHz and above). "2x" means two times bigger than 1x1 and "3x" means three times bigger than 1x1.</p>
|
||||||
<p>- NTSC 2x simulates visual artifacts that are produced by analog (composite) video sygnal that the real console generates.</p>
|
<p>- NTSC 2x simulates visual artifacts that are produced by analog (composite) video sygnal that the real console generates.</p>
|
||||||
<p>- Prescale2x/3x/4x upscales the source picture using a pixel based (nearest neighbor) algorithm, that allows to change the level of interpolation, applied when using hardware acceleration.</p>
|
<p>- Prescale2x/3x/4x upscales the source picture using a pixel based (nearest neighbor) algorithm, that allows to change the level of interpolation, applied when using hardware acceleration.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Sync Method</span></p>
|
<p><span class="rvts41">Sync Method</span></p>
|
||||||
<p>If the emulator is running poorly, trying out these sync options can help make it run smoother (fix image tearing).</p>
|
<p>If the emulator is running poorly, trying out these sync options can help make it run smoother (fix image tearing).</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">DirectDraw</span></p>
|
<p><span class="rvts41">DirectDraw</span></p>
|
||||||
<p>If the image is blurry, here you can disable hardware acceleration.</p>
|
<p>If the image is blurry, here you can disable hardware acceleration.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts12">Windowed Settings</span></p>
|
<p><span class="rvts12">Windowed Settings</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Size Multiplier</span></p>
|
<p><span class="rvts41">Size Multiplier</span></p>
|
||||||
<p>Takes the image size and multiples the X and Y by a specific amount. You can also change these by clicking and dragging the border of the FCEUX window.</p>
|
<p>Takes the image size and multiples the X and Y by a specific amount. You can also change these by clicking and dragging the border of the FCEUX window.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Force Integral Scaling Factors</span></p>
|
<p><span class="rvts41">Force Integral Scaling Factors</span></p>
|
||||||
<p>If checked, FCEUX window can only be stretched by even amounts (1x, 2x, 3x, etc.). If unchecked, it can be stretched by any amount.</p>
|
<p>If checked, FCEUX window can only be stretched by even amounts (1x, 2x, 3x, etc.). If unchecked, it can be stretched by any amount.</p>
|
||||||
<p>When you are resizing FCEUX window by dragging its borders, you can hold Shift to temporarily invert this option.</p>
|
<p>When you are resizing FCEUX window by dragging its borders, you can hold Shift to temporarily invert this option.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Force Aspect Ratio Correction</span></p>
|
<p><span class="rvts41">Force Aspect Ratio Correction</span></p>
|
||||||
<p>Checking this will only allow the correct aspect ratio while resizing the window.</p>
|
<p>Checking this will only allow the correct aspect ratio while resizing the window.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Special Scaler</span></p>
|
<p><span class="rvts41">Special Scaler</span></p>
|
||||||
<p>Within this box is eight options: hq2x, Scale2x, NTSC 2x, hq3x, Scale3x, Prescale2x, Prescale3x, and Prescale4x.</p>
|
<p>Within this box is eight options: hq2x, Scale2x, NTSC 2x, hq3x, Scale3x, Prescale2x, Prescale3x, and Prescale4x.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Sync Method</span></p>
|
<p><span class="rvts41">Sync Method</span></p>
|
||||||
<p>If the emulator is running poorly, trying out these sync options can help make it run smoother (fix image tearing).</p>
|
<p>If the emulator is running poorly, trying out these sync options can help make it run smoother (fix image tearing).</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">DirectDraw</span></p>
|
<p><span class="rvts41">DirectDraw</span></p>
|
||||||
<p>If Vsync doesn't work, here you can enable hardware acceleration.</p>
|
<p>If Vsync doesn't work, here you can enable hardware acceleration.</p>
|
||||||
<p> </p>
|
<p> </p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -119,34 +119,34 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts27">Aspect ratio</span></p>
|
<p><span class="rvts27">Aspect ratio</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Best Fit</span></p>
|
<p><span class="rvts41">Best Fit</span></p>
|
||||||
<p>This is checked by default, so FCEUX will automatically maintain correct aspect ratio for any size of the window. If you uncheck this, the image will be stretched to fill the whole window area.</p>
|
<p>This is checked by default, so FCEUX will automatically maintain correct aspect ratio for any size of the window. If you uncheck this, the image will be stretched to fill the whole window area.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">BG color</span></p>
|
<p><span class="rvts41">BG color</span></p>
|
||||||
<p>When window size is wider or taller than image size, empty areas of the window are colored black by default. Checking this option will color these areas according to current "background" color of NES palette.</p>
|
<p>When window size is wider or taller than image size, empty areas of the window are colored black by default. Checking this option will color these areas according to current "background" color of NES palette.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Square pixels</span></p>
|
<p><span class="rvts41">Square pixels</span></p>
|
||||||
<p>This is checked by default, so FCEUX will limit the max size of the image to make all pixels share the same width/height. If you uncheck this, the image will be stretched to fill the whole width or height of the window area.</p>
|
<p>This is checked by default, so FCEUX will limit the max size of the image to make all pixels share the same width/height. If you uncheck this, the image will be stretched to fill the whole width or height of the window area.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">TV Aspect</span></p>
|
<p><span class="rvts41">TV Aspect</span></p>
|
||||||
<p>Check this if you want to change the image aspect ratio (e.g. to 4:3). You can enter different values in adjacent text fields.</p>
|
<p>Check this if you want to change the image aspect ratio (e.g. to 4:3). You can enter different values in adjacent text fields.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts27">Drawing Area</span></p>
|
<p><span class="rvts27">Drawing Area</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">First Line</span></p>
|
<p><span class="rvts41">First Line</span></p>
|
||||||
<p>Sets the first scan line for NTSC and PAL Modes. This should be left on the default of 8 for NTSC and 0 for PAL.</p>
|
<p>Sets the first scan line for NTSC and PAL Modes. This should be left on the default of 8 for NTSC and 0 for PAL.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Last Line</span></p>
|
<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>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><br/></p>
|
||||||
<p><span class="rvts40">Clip left and right sides</span><span class="rvts32"> (8 px on each)</span></p>
|
<p><span class="rvts41">Clip left and right sides</span><span class="rvts32"> (8 px on each)</span></p>
|
||||||
<p>If enabled, 8 pixels from each side of the windows will be removed. Some NES games show grapical artifacts on the sides of screen when scrolling (on real hardware too!), so you may hide those artifacts by checking the option.</p>
|
<p>If enabled, 8 pixels from each side of the windows will be removed. Some NES games show grapical artifacts on the sides of screen when scrolling (on real hardware too!), so you may hide those artifacts by checking the option.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts27">Emulation</span></p>
|
<p><span class="rvts27">Emulation</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><span class="rvts40">Allow more than 8 sprites per scanline</span></p>
|
<p><span class="rvts41">Allow more than 8 sprites per scanline</span></p>
|
||||||
<p>On real NES hardware, more than 8 sprites on the screen causes flickering. Enabling this option can reduce flickering by allowing more sprites to be visible at once. But if you prefer to stay "true" to NES hardware, this should not be checked, because some games rely on the limitation.</p>
|
<p>On real NES hardware, more than 8 sprites on the screen causes flickering. Enabling this option can reduce flickering by allowing more sprites to be visible at once. But if you prefer to stay "true" to NES hardware, this should not be checked, because some games rely on the limitation.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
|
|
@ -202,148 +202,148 @@ a.rvts39, span.rvts39
|
||||||
}
|
}
|
||||||
a.rvts39:hover { color: #0000ff; }
|
a.rvts39:hover { color: #0000ff; }
|
||||||
span.rvts40
|
span.rvts40
|
||||||
|
{
|
||||||
|
font-family: 'Courier New', 'Courier', monospace;
|
||||||
|
}
|
||||||
|
span.rvts41
|
||||||
{
|
{
|
||||||
font-size: 12pt;
|
font-size: 12pt;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
a.rvts41, span.rvts41
|
a.rvts42, span.rvts42
|
||||||
{
|
{
|
||||||
font-size: 12pt;
|
font-size: 12pt;
|
||||||
color: #0000ff;
|
color: #0000ff;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
a.rvts41:hover { color: #0000ff; }
|
a.rvts42:hover { color: #0000ff; }
|
||||||
span.rvts42
|
span.rvts43
|
||||||
{
|
{
|
||||||
font-size: 12pt;
|
font-size: 12pt;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
a.rvts43, span.rvts43
|
a.rvts44, span.rvts44
|
||||||
{
|
{
|
||||||
font-size: 12pt;
|
font-size: 12pt;
|
||||||
color: #0000ff;
|
color: #0000ff;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
a.rvts43:hover { color: #0000ff; }
|
a.rvts44:hover { color: #0000ff; }
|
||||||
span.rvts44 /* Font Style */
|
span.rvts45 /* Font Style */
|
||||||
{
|
{
|
||||||
font-size: 18pt;
|
font-size: 18pt;
|
||||||
}
|
}
|
||||||
span.rvts45
|
span.rvts46
|
||||||
{
|
{
|
||||||
font-size: 11pt;
|
font-size: 11pt;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
span.rvts46
|
span.rvts47
|
||||||
{
|
{
|
||||||
font-size: 8pt;
|
font-size: 8pt;
|
||||||
}
|
}
|
||||||
span.rvts47
|
span.rvts48
|
||||||
{
|
{
|
||||||
color: #0000ff;
|
color: #0000ff;
|
||||||
}
|
}
|
||||||
span.rvts48
|
span.rvts49
|
||||||
{
|
{
|
||||||
color: #00cc00;
|
color: #00cc00;
|
||||||
}
|
}
|
||||||
span.rvts49
|
span.rvts50
|
||||||
{
|
{
|
||||||
color: #ff0000;
|
color: #ff0000;
|
||||||
}
|
}
|
||||||
span.rvts50
|
span.rvts51
|
||||||
{
|
{
|
||||||
color: #00be00;
|
color: #00be00;
|
||||||
}
|
}
|
||||||
span.rvts51
|
span.rvts52
|
||||||
{
|
{
|
||||||
color: #a08c00;
|
color: #a08c00;
|
||||||
}
|
}
|
||||||
span.rvts52
|
span.rvts53
|
||||||
{
|
{
|
||||||
color: #0000c3;
|
color: #0000c3;
|
||||||
}
|
}
|
||||||
span.rvts53
|
span.rvts54
|
||||||
{
|
{
|
||||||
color: #0082a0;
|
color: #0082a0;
|
||||||
}
|
}
|
||||||
span.rvts54
|
span.rvts55
|
||||||
{
|
{
|
||||||
color: #d2be00;
|
color: #d2be00;
|
||||||
}
|
}
|
||||||
span.rvts55
|
span.rvts56
|
||||||
{
|
{
|
||||||
color: #0a0aff;
|
color: #0a0aff;
|
||||||
}
|
}
|
||||||
span.rvts56
|
span.rvts57
|
||||||
{
|
{
|
||||||
color: #05ff05;
|
color: #05ff05;
|
||||||
}
|
}
|
||||||
span.rvts57
|
span.rvts58
|
||||||
{
|
{
|
||||||
font-size: 22pt;
|
font-size: 22pt;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
a.rvts58, span.rvts58
|
a.rvts59, span.rvts59
|
||||||
{
|
{
|
||||||
font-size: 12pt;
|
font-size: 12pt;
|
||||||
color: #0000ff;
|
color: #0000ff;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
}
|
}
|
||||||
a.rvts58:hover { color: #0000ff; }
|
a.rvts59:hover { color: #0000ff; }
|
||||||
span.rvts59
|
span.rvts60
|
||||||
{
|
{
|
||||||
font-size: 18pt;
|
font-size: 18pt;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
span.rvts60
|
span.rvts61
|
||||||
{
|
{
|
||||||
font-size: 12pt;
|
font-size: 12pt;
|
||||||
font-family: 'Courier New', 'Courier', monospace;
|
font-family: 'Courier New', 'Courier', monospace;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
span.rvts61
|
|
||||||
{
|
|
||||||
font-size: 14pt;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
span.rvts62
|
span.rvts62
|
||||||
{
|
{
|
||||||
font-size: 12pt;
|
font-size: 14pt;
|
||||||
font-family: 'Courier New', 'Courier', monospace;
|
font-weight: bold;
|
||||||
color: #000080;
|
|
||||||
}
|
}
|
||||||
span.rvts63
|
span.rvts63
|
||||||
{
|
{
|
||||||
font-size: 12pt;
|
font-size: 12pt;
|
||||||
font-family: 'Courier New', 'Courier', monospace;
|
font-family: 'Courier New', 'Courier', monospace;
|
||||||
color: #333399;
|
color: #000080;
|
||||||
}
|
}
|
||||||
span.rvts64
|
span.rvts64
|
||||||
|
{
|
||||||
|
font-size: 12pt;
|
||||||
|
font-family: 'Courier New', 'Courier', monospace;
|
||||||
|
color: #333399;
|
||||||
|
}
|
||||||
|
span.rvts65
|
||||||
{
|
{
|
||||||
font-family: 'Courier New', 'Courier', monospace;
|
font-family: 'Courier New', 'Courier', monospace;
|
||||||
color: #000080;
|
color: #000080;
|
||||||
}
|
}
|
||||||
span.rvts65
|
span.rvts66
|
||||||
{
|
{
|
||||||
font-size: 16pt;
|
font-size: 16pt;
|
||||||
font-family: 'Courier New', 'Courier', monospace;
|
font-family: 'Courier New', 'Courier', monospace;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
span.rvts66
|
|
||||||
{
|
|
||||||
font-size: 11pt;
|
|
||||||
font-family: 'Courier New', 'Courier', monospace;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
span.rvts67
|
span.rvts67
|
||||||
{
|
{
|
||||||
|
font-size: 11pt;
|
||||||
font-family: 'Courier New', 'Courier', monospace;
|
font-family: 'Courier New', 'Courier', monospace;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
span.rvts68
|
span.rvts68
|
||||||
{
|
{
|
||||||
font-family: 'Courier New', 'Courier', monospace;
|
font-family: 'Courier New', 'Courier', monospace;
|
||||||
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
span.rvts69
|
span.rvts69
|
||||||
{
|
{
|
||||||
|
|
|
@ -166,7 +166,7 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Every frame of the movie is represented by line of text beginning and ending with a | (pipe).</p>
|
<p>Every frame of the movie is represented by line of text beginning and ending with a | (pipe).</p>
|
||||||
<p>The fields in the line are as follows, except when fourscore is used.</p>
|
<p>The fields in the line are as follows, except when fourscore is used.</p>
|
||||||
<p><span class="rvts45">|commands|port0|port1|port2|</span></p>
|
<p><span class="rvts46">|commands|port0|port1|port2|</span></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>Field <span class="rvts32">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="rvts32">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;">
|
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||||
|
@ -203,7 +203,7 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>If a <span class="rvts32">fourscore</span> is used, then port0 and port1 are irrelevant and ignored.</p>
|
<p>If a <span class="rvts32">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>The input types must all be gamepads, and each input log record must be in the following format:</p>
|
||||||
<p><span class="rvts45">|commands|RLDUTSBA|RLDUTSBA|RLDUTSBA|RLDUTSBA|port2|</span></p>
|
<p><span class="rvts46">|commands|RLDUTSBA|RLDUTSBA|RLDUTSBA|RLDUTSBA|port2|</span></p>
|
||||||
<p>{commands, player1, player2, player3, player4, port2}</p>
|
<p>{commands, player1, player2, player3, player4, port2}</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
|
@ -248,8 +248,8 @@
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
|
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
|
||||||
<p><span class="rvts40">Notes:</span></p>
|
<p><span class="rvts41">Notes:</span></p>
|
||||||
<p><span class="rvts40"><br/></span></p>
|
<p><span class="rvts41"><br/></span></p>
|
||||||
<p>A. All movies start from power-on, unless a savestate key-value is present.</p>
|
<p>A. All movies start from power-on, unless a savestate key-value is present.</p>
|
||||||
<p><br/></p>
|
<p><br/></p>
|
||||||
<p>B. The emulator uses these framerate constants</p>
|
<p>B. The emulator uses these framerate constants</p>
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue