* Taseditor: Alt+Wheel = jump across gaps in Input/Markers

* updated the site on fm2 format

[[Split portion of a mixed commit.]]
This commit is contained in:
ansstuff 2012-03-26 18:40:35 +00:00
parent 2be6585036
commit 00babac07d
4 changed files with 171 additions and 107 deletions

212
FM2.html
View File

@ -41,123 +41,181 @@
<p>FCEUX uses a new movie file format - .fm2</p>
<p>This differs from the previous FCE Ultra movie format (.fcm) in the following ways:</p>
<ul>
<li>It is completely 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 particular 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 and Arkanoid Paddle input</li>
</ul>
<p></p>
<h2>Format</h2>
<p>FM2 is ASCII plain text. It consists of several key-value pairs followed by an inputlog section.</p>
<p>The inputlog section can be identified by its starting with a | (pipe). The inputlog section terminates at eof. Newlines may be \r\n or \n</p>
<p>Key-value pairs consist of a key identifier, followed by a space separator, followed by the value text. Value text is always terminated by a newline, which the value text will not include. The value text is parsed differently depending on the type of the key. The key-value pairs may be in any order, except that the first key must be version.</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>
<ul>
<li>version (required) - the version of the movie file format; for now it is always 3</li>
<li>emuVersion (required) - the version of the emulator used to produce the movie</li>
<li>rerecordCount (optional) - the rerecord count</li>
<li>palFlag (bool) (optional) - true if the movie uses pal timing</li>
<li>fourscore (bool) (*note C) - true if a fourscore was used</li>
<li>FDS (bool) (optional) - true if the movie was recording on a Famicom Disk System (FDS) game</li>
<li>port0, port1 (*note C) - indicates the types of input devices. Supported values are:
<ul>
<li>SI_GAMEPAD = 1</li>
<li>SI_ZAPPER = 2 </li>
</ul>
</li>
<li>port2 (required) - indicates the type of the FCExp port device which was attached. Supported values are:
<ul>
<li>SIFC_NONE = 0</li>
</ul>
</li>
</ul>
<p>FM2 consists of two parts: Header and Input Log.<br>
The header is always in ASCII plain text format. It consists of several key-value pairs.<br>
The input log section can be identified by it starting with a | (pipe).<br>
The input log section can be either in ASCII plain text format or in binary format.<br>
The input log section terminates at EOF, unless the <b>length</b> key is specified in header.<br>
Newlines may be \r\n or \n.</p>
<h2>Header</h2>
<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>Key-value pairs consist of a key identifier, followed by a space separator, followed by the value text.<br>
Value text is always terminated by a newline, which the value text does not include.<br>
The value text is parsed differently depending on the type of the key.<br>
The key-value pairs may be in any order, except that the first key must be version.</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>
<ul>
<li>romFilename (required) - the name of the file used to record the movie </li>
<li>comment (optional) - simply a memo.
<li><b>version</b> (required) - the version of the movie file format; for now it is always 3</li>
<li><b>emuVersion</b> (required) - the version of the emulator used to produce the movie</li>
<li><b>rerecordCount</b> (optional) - the rerecord count</li>
<li><b>palFlag</b> (bool) (optional) - true if the movie uses PAL timing</li>
<li><b>NewPPU</b> (bool) (optional) - true if the movie uses New PPU</li>
<li><b>FDS</b> (bool) (optional) - true if the movie was recorded on a Famicom Disk System (FDS) game</li>
<li><b>fourscore</b> (bool) true if a fourscore was used. If fourscore is not used, then port0 and port1 are required</li>
<li><b>port0</b> - indicates the type of input device attached to the port 0. Supported values are:
<ul>
<li>SI_NONE = 0</li>
<li>SI_GAMEPAD = 1</li>
<li>SI_ZAPPER = 2</li>
</ul>
</li>
<li><b>port1</b> - indicates the type of input device attached to the port 1. Supported values are:
<ul>
<li>SI_NONE = 0</li>
<li>SI_GAMEPAD = 1</li>
<li>SI_ZAPPER = 2</li>
</ul>
</li>
<li><b>port2</b> (required) - indicates the type of the FCExp port device which was attached. Supported values are:
<ul>
<li>SIFC_NONE = 0</li>
</ul>
</li>
<li><b>binary</b> (bool) (optional) - true if input log is stored in binary format</li>
<li><b>length</b> (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 fm3 format to allow storing extra data after the end of input log</li>
</ul>
<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>
<ul>
<li><b>romFilename</b> (required) - the name of the file used to record the movie </li>
<li><b>comment</b> (optional) - simply a memo
<ul>
<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 multiline comments.</li>
<li>by convention, the author of the movie should be stored in comment(s) with a subject of: author</li>
<li>by convention, the first token in the comment value is the subject of the comment</li>
<li>by convention, subsequent comments with the same subject should have their ordering preserved and may be used to approximate multi-line comments</li>
<li>by convention, the author of the movie should be stored in comment(s) with a subject of: <b>author</b></li>
<li>example:
<ul>
<li>comment author adelikat</li>
</ul>
</li>
</ul>
</li>
<li>subtitle (optional) - a message that will be displayed on screen when movie is played back (unless Subtitles are turned off, see Movie options).
<li><b>subtitle</b> (optional) - a message that will be displayed on screen when movie is played back (unless Subtitles are turned off, see Movie options)
<ul>
<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>
<li>example:
<ul>
<li>subtitle 1000 Level Two</li>
<li>At frame 1000 the words "Level Two" will be displayed on the screen</li>
At frame 1000 the words "Level Two" will be displayed on the screen
</ul>
</li>
</ul>
</li>
<li><b>guid</b> (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</li>
GUID keys have a value which is in the standard GUID format: 452DE2C3-EF43-2FA9-77AC-0677FC51543B
<li><b>romChecksum</b> (required) - the MD5 hash of the ROM which was used to record the movie</li>
<li><b>savestate</b> (optional) - a fcs savestate blob, in case a movie was recorded from savestate</li>
Hex string keys (used for binary blobs) will have a value that is like 0x0123456789ABCDEF...
</ul>
<p>Hex string keys (used for binary blobs) will have a value that is like 0x0123456789ABCDEF... </p>
<ul>
<li>romChecksum (required) - the MD5 hash of the ROM which was used to record the movie </li>
<li>savestate (optional) - a fcs savestate blob, in case a movie was recorded from savestate</li>
</ul>
<p>GUID keys have a value which is in the standard GUID format: 452DE2C3-EF43-2FA9-77AC-0677FC51543B</p>
<ul><li>GUID (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.</li></ul>
<h2>Inputlog</h2>
<p>The inputlog section consists of lines beginning and ending with a | (pipe). The fields are as follows, except as noted in note C.</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>
<h3>Text format (default format):</h3>
<p>Every frame of the movie is represented by line of text beginning and ending with a | (pipe).<br>
The fields in the line are as follows, except when fourscore is used.</p>
<table border="1">
<tr>
<td>c</td>
<td>port0</td>
<td>port1</td>
<td>port2</td>
<td><b>commands</b></td>
<td><b>port0</b></td>
<td><b>port1</b></td>
<td><b>port2</b></td>
</tr>
</table>
<p>Field c is a variable length decimal integer which is a bitfield corresponding to miscellaneous input states which are valid at the start of the frame. Current values for this are</p>
<ul><li>1 = Soft Reset</li></ul>
<ul><li>2 = Hard Reset (Power)</li></ul>
<ul><li>4 = FDS Disk Insert</li></ul>
<ul><li>8 = FDS Disk Select</li></ul>
<p>Field <b>commands</b> 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>
<li>1 = Soft Reset</li>
<li>2 = Hard Reset (Power)</li>
<li>4 = FDS Disk Insert</li>
<li>8 = FDS Disk Select</li>
</ul>
<p>The format of port0, port1, port2 depends on which types of devices were attached.</p>
<h4>SI_GAMEPAD</h4>
<ul>
<li>the field consists of eight characters which constitute a bitfield.</li>
<li>any character other than ' ' or '.' means that the button was pressed. By convention, the following mnemonics will be used in a column to remind us of which button corresponds to which column:
<ul><li>RLDUTSBA (Right,Left,Down,Up,sTart,Select,B,A)</li></ul></li>
<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:
<ul>
<li><b>RLDUTSBA</b> (Right, Left, Down, Up, sTart, Select, B, A)</li>
</ul></li>
</ul>
<h4>SI_ZAPPER</h4>
<ul>
<li>XXX YYY B Q Z</li>
<li>XXX: %03d, the x position of the mouse</li>
<li>YYY: %03d, the y position of the mouse</li>
<li>B: %1d, 1 if the mouse button is pressed; 0 if not</li>
<li>Q: %1d, an internal value used by the emulator's zapper code (this is most unfortunate..)</li>
<li>Z: %d, a variable-length decimal integer; an internal value used by the emulator's zapper code (this is even more unfortunate..)</li>
<li><b>XXX YYY B Q Z</b></li>
<b>XXX:</b> %03d, the x position of the mouse<br>
<b>YYY:</b> %03d, the y position of the mouse<br>
<b>B:</b> %1d, 1 if the mouse button is pressed; 0 if not<br>
<b>Q:</b> %1d, an internal value used by the emulator's zapper code<br>
<b>Z:</b> %d, a variable-length decimal integer; an internal value used by the emulator's zapper code
</ul>
<h4>SIFC_NONE</h4>
<ul><li>this field must always be empty</li></ul>
<h3>Notes</h3>
<p>There is no key-value pair that indicates the length of the movie. This must be read by scanning the inputlog and counting the number of lines.</p>
<p>All movies start from power-on, unless a savestate key-value is present</p>
<p>If a fourscore is used, then port0 and port1 are irrelevant and ignored</p>
<p>If fourscore, the input types must all be gamepads
<dd>{player1 player2 player3 player4}</dd>
<ul>
<li>the field must be empty</li>
</ul>
<p>If a <b>fourscore</b> 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:
<dd>
<table border="1">
<tr>
<td>c</td>
<td>RLDUTSBA</td>
<td>RLDUTSBA</td>
<td>RLDUTSBA</td>
<td>RLDUTSBA</td>
<td>port2</td>
<td><b>commands</b></td>
<td><b>RLDUTSBA</b></td>
<td><b>RLDUTSBA</b></td>
<td><b>RLDUTSBA</b></td>
<td><b>RLDUTSBA</b></td>
<td><b>port2</b></td>
</tr>
</table>
</dd>
<dd>{commands, player1, player2, player3, player4, port2}</dd>
</p>
<p>If fourscore is not used, then port0 and port1 are <b>required</b></p>
<h2>Emulator framerate constants</h2>
<p>FCEUX uses these framerate constants:</p>
<h3>Binary format:</h3>
<p>Input log section starts with a | (pipe).<br>
Every frame of the movie is represented by a record of a fixed length which can be determined by the devices on port0 and port1.<p>
<p>The first byte of each record stores "commands" bit field.</p>
<ul>
<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>The remaining bytes in the record depend on which types of devices are attached to port0 and port1.</p>
<h4>SI_GAMEPAD</h4>
<ul>
<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 not pressed</li>
</ul>
<h4>SI_ZAPPER</h4>
<ul>
<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>
<h4>SIFC_NONE</h4>
<ul>
<li>0 bytes added to the size of record</li>
</ul>
<p>If a <b>fourscore</b> is used, then port0 and port1 are irrelevant and ignored. 4 bytes are added to the size of record. The bits of the 1st byte represent the state of buttons of the 1st joypad (bit0 = A, bit1 = B, bit2 = Select, bit3 = sTart, bit4 = Up, bit5 = Down, bit6 = Left, bit7 = Right); bits of the 2nd byte represent the state of buttons of the 2nd joypad, and so on.</p>
<h2>Notes</h2>
<p>All movies start from power-on, unless a savestate key-value is present</p>
<p>The emulator uses these framerate constants:</p>
<ul>
<li>NTSC: 1008307711 /256/65536 = 60.099822938442230224609375</li>
<li>PAL : 838977920 /256/65536 = 50.00698089599609375</li>

View File

@ -366,6 +366,11 @@ span.rvts69
font-size: 5pt;
font-weight: bold;
}
span.rvts70
{
font-size: 11pt;
font-weight: bold;
}
/* ========== Para Styles ========== */
p,ul,ol /* Paragraph Style */
{

View File

@ -43,7 +43,7 @@
<div id="topic_content">
<p><span class="rvts12">FCEUX Movie File format</span></p>
<p>designed by: Zeromus</p>
<p><br></p>
<p><br></p>
<p>FCEUX uses a new movie file format - .fm2.</p>
<p><br></p>
@ -58,11 +58,11 @@
<p><br></p>
<p><span class="rvts16">Format</span></p>
<p><br></p>
<p>FM2 consists of Header and Input Log.</p>
<p>FM2 consists of two parts: 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>The input log section terminates at EOF, unless the <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>
@ -81,40 +81,40 @@
<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="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="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> &nbsp; &nbsp; SI_NONE = 0</p>
<p> &nbsp; &nbsp; SI_GAMEPAD = 1,</p>
<p> &nbsp; &nbsp; SI_GAMEPAD = 1</p>
<p> &nbsp; &nbsp; 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> &nbsp; &nbsp; SI_NONE = 0</p>
<p> &nbsp; &nbsp; SI_GAMEPAD = 1,</p>
<p> &nbsp; &nbsp; SI_GAMEPAD = 1</p>
<p> &nbsp; &nbsp; 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> &nbsp; &nbsp; 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="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 &gt;= 0, the input log ends after specified number of records, and any remaining data should not be parsed. This key is used in <span class="rvts64">fm3</span> format to allow storing extra data after the end of input log.</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 &gt;= 0, the input log ends after specified number of records, and any remaining data should not be parsed. This key is used in <span class="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><span class="rvts66"><br></span></p>
<p><span class="rvts39"> - comment </span>(optional) - simply a memo.</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 should have their ordering preserved and may be used to approximate multi-line comments.</li>
<li>by convention, the first token in the comment value is the subject of the comment</li>
<li>by convention, subsequent comments with the same subject should have their ordering preserved and may be used to approximate multi-line comments</li>
<li>by convention, the author of the movie should be stored in comment(s) with a subject of: <span class="rvts39">author</span></li>
</ul>
<p>Example:</p>
@ -122,7 +122,7 @@
<li>comment author adelikat</li>
</ul>
<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>
<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 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>
@ -134,7 +134,7 @@
</ul>
<p>At frame 1000 the words "Level Two" will be displayed on the screen</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><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="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>
@ -152,7 +152,7 @@
<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><span class="rvts70">|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;">
@ -166,9 +166,9 @@
<p><br></p>
<p>SI_GAMEPAD:</p>
<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 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>
<li>the field consists of eight characters which constitute a bit field</li>
<li>any character other than ' ' or '.' means that the button was pressed</li>
<li>by convention, the following mnemonics are used in a column to remind us of which button corresponds to which column: <span class="rvts39">RLDUTSBA</span> (Right, Left, Down, Up, sTart, Select, B, A)</li>
</ul>
<p><br></p>
<p>SI_ZAPPER:</p>
@ -183,20 +183,21 @@
<p><br></p>
<p>SI_NONE:</p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>the field must be empty.</li>
<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>The input types must all be gamepads, and each input log record must be in the following format:</p>
<p><span class="rvts70">|commands|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>
<p>Every frame of the movie is represented by a record of a fixed length which can be determined by the devices on port0 and port1.</p>
<p><br></p>
<p>The 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>
@ -204,17 +205,17 @@
<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>The remaining bytes in the record depend on which types of devices are 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>
<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 not pressed</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>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>
@ -224,10 +225,10 @@
<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>
<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>If a <span class="rvts39">fourscore</span> is used, then port0 and port1 are irrelevant and ignored. 4 bytes are added to the size of record. The bits of the 1st byte represent the state of buttons of the 1st joypad (bit0 = A, bit1 = B, bit2 = Select, bit3 = sTart, bit4 = Up, bit5 = Down, bit6 = Left, bit7 = Right); bits of the 2nd byte represent the state of buttons of the 2nd joypad, and so on.</p>
<p><br></p>
<p><br></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;">

File diff suppressed because one or more lines are too long