* Taseditor: BookmarksList clicks apply on buttonup only
* returned default mapping of Frame Advance hotkey to Backslash * updated documentation on fm2 format [[Split portion of a mixed commit.]]
This commit is contained in:
parent
c63b80ded3
commit
2be6585036
|
@ -44,7 +44,7 @@
|
|||
|
||||
<p><span class="rvts17">History of FCEUX / FCE Ultra</span></p>
|
||||
<p><br></p>
|
||||
<p>FCEUX was started in 2006 by zeromus and rheiny (sp) as an attempt to merge various branches of FCE Ultra into a unified emulator. Additional authors joined the project, including mz, adelikat, nitsujrehtona, maximus, CaH4e3, qFox, punkrockguy318, and Sebastian Porst.</p>
|
||||
<p>FCEUX was started in 2006 by zeromus and rheiny (sp) as an attempt to merge various branches of FCE Ultra into a unified emulator. Additional authors joined the project, including mz, adelikat, nitsujrehtona, maximus, CaH4e3, qFox, punkrockguy318, Sebastian Porst and AnS.</p>
|
||||
<p><br></p>
|
||||
<p>FCEUX contains all features and enhancements from FCE, FCE Ultra, FCEU rerecording, FCEUXD, and FCEUXDSP as well as many new mappers from FCEU-mm.</p>
|
||||
<p><br></p>
|
||||
|
|
|
@ -333,6 +333,39 @@ span.rvts62
|
|||
font-family: 'Lucida Console', 'Monaco', monospace;
|
||||
text-decoration: underline;
|
||||
}
|
||||
span.rvts63
|
||||
{
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
}
|
||||
span.rvts64
|
||||
{
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
span.rvts65
|
||||
{
|
||||
font-size: 11pt;
|
||||
text-decoration: underline;
|
||||
}
|
||||
span.rvts66
|
||||
{
|
||||
font-size: 5pt;
|
||||
}
|
||||
span.rvts67
|
||||
{
|
||||
font-size: 4pt;
|
||||
}
|
||||
span.rvts68
|
||||
{
|
||||
font-size: 4pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
span.rvts69
|
||||
{
|
||||
font-size: 5pt;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* ========== Para Styles ========== */
|
||||
p,ul,ol /* Paragraph Style */
|
||||
{
|
||||
|
|
182
help/fm2.html
182
help/fm2.html
|
@ -48,9 +48,8 @@
|
|||
<p>FCEUX uses a new movie file format - .fm2.</p>
|
||||
<p><br></p>
|
||||
<p>This differs from the previous FCE Ultra movie format (.fcm) in the following ways:</p>
|
||||
<p><br></p>
|
||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||
<li>It is text based; allowing easy movie editing/splicing</li>
|
||||
<li>It is text based by default; allowing easy movie editing/splicing</li>
|
||||
<li>An imbedded GUID so FCEUX can tell if a savestate belongs to a movie file</li>
|
||||
<li>Movies recorded from Start (Power-on) no longer have a redundant savestate</li>
|
||||
<li>Contains mouse input for recording the Zapper & Arkanoid Paddle</li>
|
||||
|
@ -59,77 +58,103 @@
|
|||
<p><br></p>
|
||||
<p><span class="rvts16">Format</span></p>
|
||||
<p><br></p>
|
||||
<p>FM2 is ASCII plain text. It consists of several key-value pairs followed by an input log section.</p>
|
||||
<p><br></p>
|
||||
<p>The input log section can be identified by its starting with a | (pipe).</p>
|
||||
<p>The input log section terminates at EOF.</p>
|
||||
<p>Newlines may be \r\n or \n</p>
|
||||
<p><br></p>
|
||||
<p>Key-value pairs consist of a key identifier, followed by a space separator, followed by the value text.</p>
|
||||
<p>Value text is always terminated by a newline, which the value text will not include.</p>
|
||||
<p>The value text is parsed differently depending on the type of the key.</p>
|
||||
<p>The key-value pairs may be in any order, except that the first key must be version.</p>
|
||||
<p><br></p>
|
||||
<p>Integer keys (also used for booleans, with a 1 or 0) will have a value that is a simple integer not to exceed 32bits</p>
|
||||
<p> <span class="rvts39">- version</span> (required) - the version of the movie file format; for now it is always 3</p>
|
||||
<p> <span class="rvts39">- emuVersion</span> (required) - the version of the emulator used to produce the movie</p>
|
||||
<p> <span class="rvts39">- rerecordCount</span> (optional) - the rerecord count</p>
|
||||
<p> -<span class="rvts39"> palFlag</span> (bool) (optional) - true if the movie uses pal timing</p>
|
||||
<p> -<span class="rvts39"> NewPPU</span> (bool) (optional) - true if the movie uses New PPU</p>
|
||||
<p> <span class="rvts39">- fourscore</span> (bool) (<a class="rvts18" href="fm2.html#note-c">*note C</a>) - true if a fourscore was used</p>
|
||||
<p> <span class="rvts39">- FDS</span> (bool) (optional) - true if movie was recorded on a Famicom Disk System (FDS) game</p>
|
||||
<p> <span class="rvts39">- port0</span>, <span class="rvts39">port1</span> (<a class="rvts18" href="fm2.html#note-c">*note C</a>) - indicates the types of input devices. Supported values are:</p>
|
||||
<p> SI_GAMEPAD = 1,</p>
|
||||
<p> SI_ZAPPER = 2</p>
|
||||
<p><span class="rvts39"> - port2</span> (required) - indicates the type of the FCExp port device which was attached. Supported values are:</p>
|
||||
<p> SIFC_NONE = 0</p>
|
||||
<p>FM2 consists of Header and Input Log.</p>
|
||||
<p>The header is always in ASCII plain text format. It consists of several key-value pairs.</p>
|
||||
<p>The input log section can be identified by it starting with a | (pipe).</p>
|
||||
<p>The input log section can be either in ASCII plain text format or in binary format.</p>
|
||||
<p>The input log section terminates at EOF, unless <span class="rvts39">length</span> key is specified in header.</p>
|
||||
<p>Newlines may be \r\n or \n.</p>
|
||||
<p><br></p>
|
||||
<p><br></p>
|
||||
<p><span class="rvts16">Header</span></p>
|
||||
<p><br></p>
|
||||
<p>Key-value pairs consist of a key identifier, followed by a space separator, followed by the value text.</p>
|
||||
<p>Value text is always terminated by a newline, which the value text does not include.</p>
|
||||
<p>The value text is parsed differently depending on the type of the key.</p>
|
||||
<p>The key-value pairs may be in any order, except that the first key must be version.</p>
|
||||
<p><br></p>
|
||||
<p>Integer keys (also used for booleans, with a 1 for true and 0 for false) must have a value that can be stored as int32:</p>
|
||||
<p><br></p>
|
||||
<p> <span class="rvts39">- version</span> (required) - the version of the movie file format; for now it is always 3</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p> <span class="rvts39">- emuVersion</span> (required) - the version of the emulator used to produce the movie</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p> <span class="rvts39">- rerecordCount</span> (optional) - the rerecord count</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p> -<span class="rvts39"> palFlag</span> (bool) (optional) - true if the movie uses pal timing</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p> -<span class="rvts39"> NewPPU</span> (bool) (optional) - true if the movie uses New PPU</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p> <span class="rvts39">- FDS</span> (bool) (optional) - true if movie was recorded on a Famicom Disk System (FDS) game</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p> <span class="rvts39">- fourscore</span> (bool) - true if a fourscore was used. If fourscore is not used, then port0 and port1 are required.</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p> <span class="rvts39">- port0 </span>- indicates the type of input device attached to the port 0. Supported values are:</p>
|
||||
<p> SI_NONE = 0</p>
|
||||
<p> SI_GAMEPAD = 1,</p>
|
||||
<p> SI_ZAPPER = 2</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p> <span class="rvts39">- port1</span> - indicates the type of input device attached to the port 1. Supported values are:</p>
|
||||
<p> SI_NONE = 0</p>
|
||||
<p> SI_GAMEPAD = 1,</p>
|
||||
<p> SI_ZAPPER = 2</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p><span class="rvts39"> - port2</span> (required) - indicates the type of the FCExp port device which was attached. Supported values are:</p>
|
||||
<p> SIFC_NONE = 0</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p> <span class="rvts39">- binary</span> (bool) (optional) - true if input log is stored in binary format.</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p> <span class="rvts39">- length</span> (optional) - movie size (number of frames in the input log). If this key is specified and the number is >= 0, the input log ends after specified number of records, and any remaining data should not be parsed. This key is used in <span class="rvts64">fm3</span> format to allow storing extra data after the end of input log.</p>
|
||||
<p><br></p>
|
||||
<p><br></p>
|
||||
<p>String keys have values that consist of the remainder of the key-value pair line. As a consequence, string values cannot contain newlines.</p>
|
||||
<p><br></p>
|
||||
<p><span class="rvts39"> - romFilename</span> (required) - the name of the file used to record the movie</p>
|
||||
<p><br></p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p><span class="rvts39"> - comment </span>(optional) - simply a memo.</p>
|
||||
<ul style="text-indent: 0px; margin-left: 36px; list-style-position: outside;">
|
||||
<li>by convention, the first token in the comment value is the subject of the comment.</li>
|
||||
<li>by convention, subsequent comments with the same subject will have their ordering preserved and may be used to approximate multi-line comments.</li>
|
||||
<li>by convention, subsequent comments with the same subject should have their ordering preserved and may be used to approximate multi-line comments.</li>
|
||||
<li>by convention, the author of the movie should be stored in comment(s) with a subject of: <span class="rvts39">author</span></li>
|
||||
</ul>
|
||||
<p>Example:</p>
|
||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||
<li>comment author adelikat</li>
|
||||
</ul>
|
||||
<p><br></p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p><span class="rvts39"> - subtitle </span>(optional) - a message that will be displayed on screen when movie is played back (unless Subtitles are turned off, see <a class="rvts18" href="MovieOptions.html">Movie options</a>).</p>
|
||||
<ul style="text-indent: 0px; margin-left: 36px; list-style-position: outside;">
|
||||
<li>by convention, subtitles will begin with the word "subtitle"</li>
|
||||
<li>by convention, an integer value will proceed which will indicate the frame that the subtitle will be displayed</li>
|
||||
<li>by convention, a string of text will follow which will be the string displayed</li>
|
||||
<li>by convention, subtitles begin with the word "subtitle"</li>
|
||||
<li>by convention, an integer value following the word "subtitle" indicates the frame that the subtitle will be displayed</li>
|
||||
<li>by convention, any remaining text after the integer is considered to be the string displayed</li>
|
||||
</ul>
|
||||
<p>Example:</p>
|
||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||
<li>subtitle 1000 Level Two</li>
|
||||
</ul>
|
||||
<p>At frame 1000 the words "Level Two" will be displayed on the screen</p>
|
||||
<p><br></p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p><span class="rvts39"> - guid </span>(required) a unique identifier for a movie, generated when the movie is created, which is used when loading a savestate to make sure it belongs to the current movie.</p>
|
||||
<p>GUID keys have a value which is in the standard guide format: 452DE2C3-EF43-2FA9-77AC-0677FC51543B</p>
|
||||
<p><span class="rvts39"><br></span></p>
|
||||
<p><span class="rvts69"><br></span></p>
|
||||
<p><span class="rvts39"> - romChecksum </span>(required) - the MD5 hash of the ROM which was used to record the movie</p>
|
||||
<p><span class="rvts39"> - savestate </span>(optional) - a <a class="rvts18" href="fcs.html">fcs</a> savestate blob, in case a movie was recorded from savestate </p>
|
||||
<p><br></p>
|
||||
<p>Hex string keys (used for binary blobs) will have a value that is like 0x0123456789ABCDEF...</p>
|
||||
<p><span class="rvts66"><br></span></p>
|
||||
<p><span class="rvts39"> - savestate </span>(optional) - a <a class="rvts18" href="fcs.html">fcs</a> savestate blob, in case a movie was recorded from savestate </p>
|
||||
<p>Hex string keys (used for binary blobs) have a value that is like 0x0123456789ABCDEF...</p>
|
||||
<p><br></p>
|
||||
<p><br></p>
|
||||
<p><span class="rvts16">Input log</span></p>
|
||||
<p><br></p>
|
||||
<p>The input log section consists of lines beginning and ending with a | (pipe).</p>
|
||||
<p>The fields are as follows, except as noted in <a class="rvts18" href="fm2.html#note-c">note C</a>.</p>
|
||||
<p><span class="rvts43">|c|port0|port1|port2|</span></p>
|
||||
<p>The input log section consists of movie records either in the form of text lines or in the form of binary data.</p>
|
||||
<p><br></p>
|
||||
<p>Field <span class="rvts39">c</span> is a variable length decimal integer which is a bit field corresponding to miscellaneous input states which are valid at the start of the frame. Current values for this are:</p>
|
||||
<p><br></p>
|
||||
<p><span class="rvts65">Text format (default format):</span></p>
|
||||
<p><br></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><span class="rvts43">|commands|port0|port1|port2|</span></p>
|
||||
<p><br></p>
|
||||
<p>Field <span class="rvts39">commands</span> is a variable length decimal integer which is interpreted as a bit field corresponding to miscellaneous input states which are valid at the start of the frame. Current values for this are:</p>
|
||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||
<li>1 = Soft Reset</li>
|
||||
<li>2 = Hard Reset (Power)</li>
|
||||
|
@ -143,7 +168,7 @@
|
|||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||
<li>the field consists of eight characters which constitute a bit field.</li>
|
||||
<li>any character other than ' ' or '.' means that the button was pressed.</li>
|
||||
<li>by convention, the following mnemonics will be used in a column to remind us of which button corresponds to which column: <span class="rvts39">RLDUTSBA</span> (Right, Left, Down, Up, sTart, Select, B, A)</li>
|
||||
<li>by convention, the following mnemonics is be used in a column to remind us of which button corresponds to which column: <span class="rvts39">RLDUTSBA</span> (Right, Left, Down, Up, sTart, Select, B, A)</li>
|
||||
</ul>
|
||||
<p><br></p>
|
||||
<p>SI_ZAPPER:</p>
|
||||
|
@ -153,46 +178,67 @@
|
|||
<p><span class="rvts39">XXX: </span>%03d, the x position of the mouse</p>
|
||||
<p><span class="rvts39">YYY: </span>%03d, the y position of the mouse</p>
|
||||
<p><span class="rvts39">B: </span>%1d, 1 if the mouse button is pressed; 0 if not</p>
|
||||
<p><span class="rvts39">Q: </span>%1d, an internal value used by the emulator's zapper code (this is most unfortunate..)</p>
|
||||
<p><span class="rvts39">Z: </span>%d, a variable-length decimal integer; an internal value used by the emulator's zapper code (this is even more unfortunate..)</p>
|
||||
<p><span class="rvts39">Q: </span>%1d, an internal value used by the emulator's zapper code</p>
|
||||
<p><span class="rvts39">Z: </span>%d, a variable-length decimal integer; an internal value used by the emulator's zapper code</p>
|
||||
<p><br></p>
|
||||
<p>SIFC_NONE:</p>
|
||||
<p>SI_NONE:</p>
|
||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||
<li>the field must always be empty.</li>
|
||||
<li>the field must be empty.</li>
|
||||
</ul>
|
||||
<p><br></p>
|
||||
<p>If a <span class="rvts39">fourscore</span> is used, then port0 and port1 are irrelevant and ignored.</p>
|
||||
<p>The input types must all be gamepads, and the input log must be in the following format:</p>
|
||||
<p><span class="rvts39">|c|RLDUTSBA|RLDUTSBA|RLDUTSBA|RLDUTSBA|port2|</span></p>
|
||||
<p>{commands, player1, player2, player3, player4, port2}</p>
|
||||
<p><br></p>
|
||||
<p><br></p>
|
||||
<p><span class="rvts65">Binary format:</span></p>
|
||||
<p><br></p>
|
||||
<p>Input log section starts with a | (pipe).</p>
|
||||
<p>Every frame of the movie is represented by record of equal number of bytes.</p>
|
||||
<p>First byte of each record stores "commands" bit field.</p>
|
||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||
<li>bit 0 = Soft Reset</li>
|
||||
<li>bit 1 = Hard Reset (Power)</li>
|
||||
<li>bit 2 = FDS Disk Insert</li>
|
||||
<li>bit 3 = FDS Disk Select</li>
|
||||
</ul>
|
||||
<p><br></p>
|
||||
<p>The rest bytes in the record depend on which types of devices were attached to port0 and port1.</p>
|
||||
<p><br></p>
|
||||
<p>SI_GAMEPAD:</p>
|
||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||
<li>1 byte added to the size of record.</li>
|
||||
<li>bits of the byte represent the state of buttons (bit0 = A, bit1 = B, bit2 = Select, bit3 = sTart, bit4 = Up, bit5 = Down, bit6 = Left, bit7 = Right). If the bit is set, respective button is considered to be pressed, if the bit is clear, the button is released.</li>
|
||||
</ul>
|
||||
<p><br></p>
|
||||
<p>SI_ZAPPER:</p>
|
||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||
<li>12 bytes added to the size of record.</li>
|
||||
<li>1st byte - the x position of the mouse</li>
|
||||
<li>2nd byte - the y position of the mouse</li>
|
||||
<li>3rd byte - 1 if the mouse button is pressed; 0 if not</li>
|
||||
<li>4th byte - an internal value used by the emulator's zapper code</li>
|
||||
<li>bytes 5-12 (uint64) - an internal value used by the emulator's zapper code</li>
|
||||
</ul>
|
||||
<p><br></p>
|
||||
<p>SI_NONE:</p>
|
||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||
<li>0 bytes added to the size of record.</li>
|
||||
</ul>
|
||||
<p><br></p>
|
||||
<p>If a fourscore is used, then port0 and port1 are irrelevant and ignored. 4 bytes added to the size of record. Bits of the 1st byte represent the state of buttons of the 1st joypad (bit0 = A, bit1 = B, bit2 = Select, bit3 = sTart, bit4 = Up, bit5 = Down, bit6 = Left, bit7 = Right), bits of the 2nd byte represent the state of buttons of the 2nd joypad and so on.</p>
|
||||
<p><br></p>
|
||||
<p><br></p>
|
||||
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;">
|
||||
<p><span class="rvts43">Notes:</span></p>
|
||||
<p><span class="rvts43"><br></span></p>
|
||||
<p><a name="note-a"></a>
|
||||
A. There is no key-value pair that indicates the length of the movie. This must be read by scanning the input log and counting the number of lines.</p>
|
||||
<p>A. All movies start from power-on, unless a savestate key-value is present.</p>
|
||||
<p><br></p>
|
||||
<p><a name="note-b"></a>
|
||||
B. All movies start from power-on, unless a savestate key-value is present.</p>
|
||||
<p><br></p>
|
||||
<p><a name="note-c"></a>
|
||||
C. </p>
|
||||
<p>If a fourscore is used, then port0 and port1 are irrelevant and ignored.</p>
|
||||
<p>The input types must all be gamepads, and the input log will be in the following format:</p>
|
||||
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
|
||||
<li>{player1 player2 player3 player4}</li>
|
||||
</ul>
|
||||
<p><span class="rvts39">|c|RLDUTSBA|RLDUTSBA|RLDUTSBA|RLDUTSBA|port2|</span></p>
|
||||
<p><span class="rvts39"><br></span></p>
|
||||
<p>If a fourscore is not used, then port0 and port1 are required.</p>
|
||||
<p><br></p>
|
||||
<p><a name="note-d"></a>
|
||||
D. The emulator uses these framerate constants</p>
|
||||
<p>B. The emulator uses these framerate constants</p>
|
||||
<p> - NTSC: 1008307711 /256/65536 = 60.099822938442230224609375</p>
|
||||
<p> - PAL : 838977920 /256/65536 = 50.00698089599609375</p>
|
||||
<p><br></p>
|
||||
<p><a name="note-e"></a>
|
||||
E. The author of this format is curious about what people think of it. Please let him know!</p>
|
||||
<p><br></p>
|
||||
<p><br></p>
|
||||
<p><br></p>
|
||||
<p><br></p>
|
||||
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Full featured Documentation generator</a></p>
|
||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue