summaryrefslogtreecommitdiff
path: root/docs/draft-tasd-0001.html
diff options
context:
space:
mode:
authorVi Grey <vi@vigrey.com>2022-09-24 18:31:00 -0500
committerVi Grey <vi@vigrey.com>2022-09-24 18:31:00 -0500
commitbc9dbaba7f33ef2775c0db6a17ce2329cabf4044 (patch)
tree63546b504d8a0436bbffd891bd9a41197edceeca /docs/draft-tasd-0001.html
parent03df989d36e47bfd38e7e4b5e752144b18913e7d (diff)
downloadtasd-bc9dbaba7f33ef2775c0db6a17ce2329cabf4044.tar.gz
tasd-bc9dbaba7f33ef2775c0db6a17ce2329cabf4044.zip
Initial version 0001 spec documents (RFC)
Diffstat (limited to 'docs/draft-tasd-0001.html')
-rw-r--r--docs/draft-tasd-0001.html5055
1 files changed, 5055 insertions, 0 deletions
diff --git a/docs/draft-tasd-0001.html b/docs/draft-tasd-0001.html
new file mode 100644
index 0000000..e067cef
--- /dev/null
+++ b/docs/draft-tasd-0001.html
@@ -0,0 +1,5055 @@
+<!DOCTYPE html>
+<html lang="en" class="Internet-Draft">
+<head>
+<meta charset="utf-8">
+<meta content="Common,Latin" name="scripts">
+<meta content="initial-scale=1.0" name="viewport">
+<title>TASD File Format Specification Version 1</title>
+<meta content="Vi Grey" name="author">
+<meta content="Bigbass" name="author">
+<meta content='
+ The TASD file format is used for storing "Tool Assisted Speedrun" or "Tool Assisted Superplay" (TAS) data for TAS replay devices to replay on physical video game console hardware. The format is defined to be expandable for future needs. The format is also defined to be parsable by programs that do not understand portions of the format, whether that is due to incomplete support of the format specification or due to new features being added to later versions of the specification at a later date.
+ This document defines the file format specification for TASD files.
+ ' name="description">
+<meta content="xml2rfc 3.15.0" name="generator">
+<meta content="draft-tasd-v0001-00" name="ietf.draft">
+<!-- Generator version information:
+ xml2rfc 3.15.0
+ Python 3.10.7
+ appdirs 1.4.4
+ ConfigArgParse 1.5.3
+ google-i18n-address 2.5.2
+ html5lib 1.1
+ intervaltree 3.1.0
+ Jinja2 3.1.2
+ kitchen 1.2.6
+ lxml 4.9.1
+ MarkupSafe 2.1.1
+ pycountry 22.3.5
+ PyYAML 6.0
+ requests 2.28.1
+ setuptools 65.3.0
+ six 1.16.0
+ weasyprint 56.1
+-->
+<link href="draft-tasd-0001.xml" rel="alternate" type="application/rfc+xml">
+<link href="#copyright" rel="license">
+<style type="text/css">/*
+
+ NOTE: Changes at the bottom of this file overrides some earlier settings.
+
+ Once the style has stabilized and has been adopted as an official RFC style,
+ this can be consolidated so that style settings occur only in one place, but
+ for now the contents of this file consists first of the initial CSS work as
+ provided to the RFC Formatter (xml2rfc) work, followed by itemized and
+ commented changes found necssary during the development of the v3
+ formatters.
+
+*/
+
+/* fonts */
+@import url('https://fonts.googleapis.com/css?family=Noto+Sans'); /* Sans-serif */
+@import url('https://fonts.googleapis.com/css?family=Noto+Serif'); /* Serif (print) */
+@import url('https://fonts.googleapis.com/css?family=Roboto+Mono'); /* Monospace */
+
+@viewport {
+ zoom: 1.0;
+ width: extend-to-zoom;
+}
+@-ms-viewport {
+ width: extend-to-zoom;
+ zoom: 1.0;
+}
+/* general and mobile first */
+html {
+}
+body {
+ max-width: 90%;
+ margin: 1.5em auto;
+ color: #222;
+ background-color: #fff;
+ font-size: 14px;
+ font-family: 'Noto Sans', Arial, Helvetica, sans-serif;
+ line-height: 1.6;
+ scroll-behavior: smooth;
+}
+.ears {
+ display: none;
+}
+
+/* headings */
+#title, h1, h2, h3, h4, h5, h6 {
+ margin: 1em 0 0.5em;
+ font-weight: bold;
+ line-height: 1.3;
+}
+#title {
+ clear: both;
+ border-bottom: 1px solid #ddd;
+ margin: 0 0 0.5em 0;
+ padding: 1em 0 0.5em;
+}
+.author {
+ padding-bottom: 4px;
+}
+h1 {
+ font-size: 26px;
+ margin: 1em 0;
+}
+h2 {
+ font-size: 22px;
+ margin-top: -20px; /* provide offset for in-page anchors */
+ padding-top: 33px;
+}
+h3 {
+ font-size: 18px;
+ margin-top: -36px; /* provide offset for in-page anchors */
+ padding-top: 42px;
+}
+h4 {
+ font-size: 16px;
+ margin-top: -36px; /* provide offset for in-page anchors */
+ padding-top: 42px;
+}
+h5, h6 {
+ font-size: 14px;
+}
+#n-copyright-notice {
+ border-bottom: 1px solid #ddd;
+ padding-bottom: 1em;
+ margin-bottom: 1em;
+}
+/* general structure */
+p {
+ padding: 0;
+ margin: 0 0 1em 0;
+ text-align: left;
+}
+div, span {
+ position: relative;
+}
+div {
+ margin: 0;
+}
+.alignRight.art-text {
+ background-color: #f9f9f9;
+ border: 1px solid #eee;
+ border-radius: 3px;
+ padding: 1em 1em 0;
+ margin-bottom: 1.5em;
+}
+.alignRight.art-text pre {
+ padding: 0;
+}
+.alignRight {
+ margin: 1em 0;
+}
+.alignRight > *:first-child {
+ border: none;
+ margin: 0;
+ float: right;
+ clear: both;
+}
+.alignRight > *:nth-child(2) {
+ clear: both;
+ display: block;
+ border: none;
+}
+svg {
+ display: block;
+}
+.alignCenter.art-text {
+ background-color: #f9f9f9;
+ border: 1px solid #eee;
+ border-radius: 3px;
+ padding: 1em 1em 0;
+ margin-bottom: 1.5em;
+}
+.alignCenter.art-text pre {
+ padding: 0;
+}
+.alignCenter {
+ margin: 1em 0;
+}
+.alignCenter > *:first-child {
+ display: table;
+ border: none;
+ margin: 0 auto;
+}
+
+/* lists */
+ol, ul {
+ padding: 0;
+ margin: 0 0 1em 2em;
+}
+ol ol, ul ul, ol ul, ul ol {
+ margin-left: 1em;
+}
+li {
+ margin: 0 0 0.25em 0;
+}
+.ulCompact li {
+ margin: 0;
+}
+ul.empty, .ulEmpty {
+ list-style-type: none;
+}
+ul.empty li, .ulEmpty li {
+ margin-top: 0.5em;
+}
+ul.ulBare, li.ulBare {
+ margin-left: 0em !important;
+}
+ul.compact, .ulCompact,
+ol.compact, .olCompact {
+ line-height: 100%;
+ margin: 0 0 0 2em;
+}
+
+/* definition lists */
+dl {
+}
+dl > dt {
+ float: left;
+ margin-right: 1em;
+}
+/*
+dl.nohang > dt {
+ float: none;
+}
+*/
+dl > dd {
+ margin-bottom: .8em;
+ min-height: 1.3em;
+}
+dl.compact > dd, .dlCompact > dd {
+ margin-bottom: 0em;
+}
+dl > dd > dl {
+ margin-top: 0.5em;
+ margin-bottom: 0em;
+}
+
+/* links */
+a {
+ text-decoration: none;
+}
+a[href] {
+ color: #22e; /* Arlen: WCAG 2019 */
+}
+a[href]:hover {
+ background-color: #f2f2f2;
+}
+figcaption a[href],
+a[href].selfRef {
+ color: #222;
+}
+/* XXX probably not this:
+a.selfRef:hover {
+ background-color: transparent;
+ cursor: default;
+} */
+
+/* Figures */
+tt, code, pre, code {
+ background-color: #f9f9f9;
+ font-family: 'Roboto Mono', monospace;
+}
+pre {
+ border: 1px solid #eee;
+ margin: 0;
+ padding: 1em;
+}
+img {
+ max-width: 100%;
+}
+figure {
+ margin: 0;
+}
+figure blockquote {
+ margin: 0.8em 0.4em 0.4em;
+}
+figcaption {
+ font-style: italic;
+ margin: 0 0 1em 0;
+}
+@media screen {
+ pre {
+ overflow-x: auto;
+ max-width: 100%;
+ max-width: calc(100% - 22px);
+ }
+}
+
+/* aside, blockquote */
+aside, blockquote {
+ margin-left: 0;
+ padding: 1.2em 2em;
+}
+blockquote {
+ background-color: #f9f9f9;
+ color: #111; /* Arlen: WCAG 2019 */
+ border: 1px solid #ddd;
+ border-radius: 3px;
+ margin: 1em 0;
+}
+cite {
+ display: block;
+ text-align: right;
+ font-style: italic;
+}
+
+/* tables */
+table {
+ width: 100%;
+ margin: 0 0 1em;
+ border-collapse: collapse;
+ border: 1px solid #eee;
+}
+th, td {
+ text-align: left;
+ vertical-align: top;
+ padding: 0.5em 0.75em;
+}
+th {
+ text-align: left;
+ background-color: #e9e9e9;
+}
+tr:nth-child(2n+1) > td {
+ background-color: #f5f5f5;
+}
+table caption {
+ font-style: italic;
+ margin: 0;
+ padding: 0;
+ text-align: left;
+}
+table p {
+ /* XXX to avoid bottom margin on table row signifiers. If paragraphs should
+ be allowed within tables more generally, it would be far better to select on a class. */
+ margin: 0;
+}
+
+/* pilcrow */
+a.pilcrow {
+ color: #666; /* Arlen: AHDJ 2019 */
+ text-decoration: none;
+ visibility: hidden;
+ user-select: none;
+ -ms-user-select: none;
+ -o-user-select:none;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -webkit-touch-callout: none;
+}
+@media screen {
+ aside:hover > a.pilcrow,
+ p:hover > a.pilcrow,
+ blockquote:hover > a.pilcrow,
+ div:hover > a.pilcrow,
+ li:hover > a.pilcrow,
+ pre:hover > a.pilcrow {
+ visibility: visible;
+ }
+ a.pilcrow:hover {
+ background-color: transparent;
+ }
+}
+
+/* misc */
+hr {
+ border: 0;
+ border-top: 1px solid #eee;
+}
+.bcp14 {
+ font-variant: small-caps;
+}
+
+.role {
+ font-variant: all-small-caps;
+}
+
+/* info block */
+#identifiers {
+ margin: 0;
+ font-size: 0.9em;
+}
+#identifiers dt {
+ width: 3em;
+ clear: left;
+}
+#identifiers dd {
+ float: left;
+ margin-bottom: 0;
+}
+/* Fix PDF info block run off issue */
+@media print {
+ #identifiers dd {
+ float: none;
+ }
+}
+#identifiers .authors .author {
+ display: inline-block;
+ margin-right: 1.5em;
+}
+#identifiers .authors .org {
+ font-style: italic;
+}
+
+/* The prepared/rendered info at the very bottom of the page */
+.docInfo {
+ color: #666; /* Arlen: WCAG 2019 */
+ font-size: 0.9em;
+ font-style: italic;
+ margin-top: 2em;
+}
+.docInfo .prepared {
+ float: left;
+}
+.docInfo .prepared {
+ float: right;
+}
+
+/* table of contents */
+#toc {
+ padding: 0.75em 0 2em 0;
+ margin-bottom: 1em;
+}
+nav.toc ul {
+ margin: 0 0.5em 0 0;
+ padding: 0;
+ list-style: none;
+}
+nav.toc li {
+ line-height: 1.3em;
+ margin: 0.75em 0;
+ padding-left: 1.2em;
+ text-indent: -1.2em;
+}
+/* references */
+.references dt {
+ text-align: right;
+ font-weight: bold;
+ min-width: 7em;
+}
+.references dd {
+ margin-left: 8em;
+ overflow: auto;
+}
+
+.refInstance {
+ margin-bottom: 1.25em;
+}
+
+.references .ascii {
+ margin-bottom: 0.25em;
+}
+
+/* index */
+.index ul {
+ margin: 0 0 0 1em;
+ padding: 0;
+ list-style: none;
+}
+.index ul ul {
+ margin: 0;
+}
+.index li {
+ margin: 0;
+ text-indent: -2em;
+ padding-left: 2em;
+ padding-bottom: 5px;
+}
+.indexIndex {
+ margin: 0.5em 0 1em;
+}
+.index a {
+ font-weight: 700;
+}
+/* make the index two-column on all but the smallest screens */
+@media (min-width: 600px) {
+ .index ul {
+ -moz-column-count: 2;
+ -moz-column-gap: 20px;
+ }
+ .index ul ul {
+ -moz-column-count: 1;
+ -moz-column-gap: 0;
+ }
+}
+
+/* authors */
+address.vcard {
+ font-style: normal;
+ margin: 1em 0;
+}
+
+address.vcard .nameRole {
+ font-weight: 700;
+ margin-left: 0;
+}
+address.vcard .label {
+ font-family: "Noto Sans",Arial,Helvetica,sans-serif;
+ margin: 0.5em 0;
+}
+address.vcard .type {
+ display: none;
+}
+.alternative-contact {
+ margin: 1.5em 0 1em;
+}
+hr.addr {
+ border-top: 1px dashed;
+ margin: 0;
+ color: #ddd;
+ max-width: calc(100% - 16px);
+}
+
+/* temporary notes */
+.rfcEditorRemove::before {
+ position: absolute;
+ top: 0.2em;
+ right: 0.2em;
+ padding: 0.2em;
+ content: "The RFC Editor will remove this note";
+ color: #9e2a00; /* Arlen: WCAG 2019 */
+ background-color: #ffd; /* Arlen: WCAG 2019 */
+}
+.rfcEditorRemove {
+ position: relative;
+ padding-top: 1.8em;
+ background-color: #ffd; /* Arlen: WCAG 2019 */
+ border-radius: 3px;
+}
+.cref {
+ background-color: #ffd; /* Arlen: WCAG 2019 */
+ padding: 2px 4px;
+}
+.crefSource {
+ font-style: italic;
+}
+/* alternative layout for smaller screens */
+@media screen and (max-width: 1023px) {
+ body {
+ padding-top: 2em;
+ }
+ #title {
+ padding: 1em 0;
+ }
+ h1 {
+ font-size: 24px;
+ }
+ h2 {
+ font-size: 20px;
+ margin-top: -18px; /* provide offset for in-page anchors */
+ padding-top: 38px;
+ }
+ #identifiers dd {
+ max-width: 60%;
+ }
+ #toc {
+ position: fixed;
+ z-index: 2;
+ top: 0;
+ right: 0;
+ padding: 0;
+ margin: 0;
+ background-color: inherit;
+ border-bottom: 1px solid #ccc;
+ }
+ #toc h2 {
+ margin: -1px 0 0 0;
+ padding: 4px 0 4px 6px;
+ padding-right: 1em;
+ min-width: 190px;
+ font-size: 1.1em;
+ text-align: right;
+ background-color: #444;
+ color: white;
+ cursor: pointer;
+ }
+ #toc h2::before { /* css hamburger */
+ float: right;
+ position: relative;
+ width: 1em;
+ height: 1px;
+ left: -164px;
+ margin: 6px 0 0 0;
+ background: white none repeat scroll 0 0;
+ box-shadow: 0 4px 0 0 white, 0 8px 0 0 white;
+ content: "";
+ }
+ #toc nav {
+ display: none;
+ padding: 0.5em 1em 1em;
+ overflow: auto;
+ height: calc(100vh - 48px);
+ border-left: 1px solid #ddd;
+ }
+}
+
+/* alternative layout for wide screens */
+@media screen and (min-width: 1024px) {
+ body {
+ max-width: 724px;
+ margin: 42px auto;
+ padding-left: 1.5em;
+ padding-right: 29em;
+ }
+ #toc {
+ position: fixed;
+ top: 42px;
+ right: 42px;
+ width: 25%;
+ margin: 0;
+ padding: 0 1em;
+ z-index: 1;
+ }
+ #toc h2 {
+ border-top: none;
+ border-bottom: 1px solid #ddd;
+ font-size: 1em;
+ font-weight: normal;
+ margin: 0;
+ padding: 0.25em 1em 1em 0;
+ }
+ #toc nav {
+ display: block;
+ height: calc(90vh - 84px);
+ bottom: 0;
+ padding: 0.5em 0 0;
+ overflow: auto;
+ }
+ img { /* future proofing */
+ max-width: 100%;
+ height: auto;
+ }
+}
+
+/* pagination */
+@media print {
+ body {
+
+ width: 100%;
+ }
+ p {
+ orphans: 3;
+ widows: 3;
+ }
+ #n-copyright-notice {
+ border-bottom: none;
+ }
+ #toc, #n-introduction {
+ page-break-before: always;
+ }
+ #toc {
+ border-top: none;
+ padding-top: 0;
+ }
+ figure, pre {
+ page-break-inside: avoid;
+ }
+ figure {
+ overflow: scroll;
+ }
+ pre.breakable {
+ break-inside: auto;
+ }
+ h1, h2, h3, h4, h5, h6 {
+ page-break-after: avoid;
+ }
+ h2+*, h3+*, h4+*, h5+*, h6+* {
+ page-break-before: avoid;
+ }
+ pre {
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ font-size: 10pt;
+ }
+ table {
+ border: 1px solid #ddd;
+ }
+ td {
+ border-top: 1px solid #ddd;
+ }
+}
+
+/* This is commented out here, as the string-set: doesn't
+ pass W3C validation currently */
+/*
+.ears thead .left {
+ string-set: ears-top-left content();
+}
+
+.ears thead .center {
+ string-set: ears-top-center content();
+}
+
+.ears thead .right {
+ string-set: ears-top-right content();
+}
+
+.ears tfoot .left {
+ string-set: ears-bottom-left content();
+}
+
+.ears tfoot .center {
+ string-set: ears-bottom-center content();
+}
+
+.ears tfoot .right {
+ string-set: ears-bottom-right content();
+}
+*/
+
+@page :first {
+ padding-top: 0;
+ @top-left {
+ content: normal;
+ border: none;
+ }
+ @top-center {
+ content: normal;
+ border: none;
+ }
+ @top-right {
+ content: normal;
+ border: none;
+ }
+}
+
+@page {
+ size: A4;
+ margin-bottom: 45mm;
+ padding-top: 20px;
+ /* The follwing is commented out here, but set appropriately by in code, as
+ the content depends on the document */
+ /*
+ @top-left {
+ content: 'Internet-Draft';
+ vertical-align: bottom;
+ border-bottom: solid 1px #ccc;
+ }
+ @top-left {
+ content: string(ears-top-left);
+ vertical-align: bottom;
+ border-bottom: solid 1px #ccc;
+ }
+ @top-center {
+ content: string(ears-top-center);
+ vertical-align: bottom;
+ border-bottom: solid 1px #ccc;
+ }
+ @top-right {
+ content: string(ears-top-right);
+ vertical-align: bottom;
+ border-bottom: solid 1px #ccc;
+ }
+ @bottom-left {
+ content: string(ears-bottom-left);
+ vertical-align: top;
+ border-top: solid 1px #ccc;
+ }
+ @bottom-center {
+ content: string(ears-bottom-center);
+ vertical-align: top;
+ border-top: solid 1px #ccc;
+ }
+ @bottom-right {
+ content: '[Page ' counter(page) ']';
+ vertical-align: top;
+ border-top: solid 1px #ccc;
+ }
+ */
+
+}
+
+/* Changes introduced to fix issues found during implementation */
+/* Make sure links are clickable even if overlapped by following H* */
+a {
+ z-index: 2;
+}
+/* Separate body from document info even without intervening H1 */
+section {
+ clear: both;
+}
+
+
+/* Top align author divs, to avoid names without organization dropping level with org names */
+.author {
+ vertical-align: top;
+}
+
+/* Leave room in document info to show Internet-Draft on one line */
+#identifiers dt {
+ width: 8em;
+}
+
+/* Don't waste quite as much whitespace between label and value in doc info */
+#identifiers dd {
+ margin-left: 1em;
+}
+
+/* Give floating toc a background color (needed when it's a div inside section */
+#toc {
+ background-color: white;
+}
+
+/* Make the collapsed ToC header render white on gray also when it's a link */
+@media screen and (max-width: 1023px) {
+ #toc h2 a,
+ #toc h2 a:link,
+ #toc h2 a:focus,
+ #toc h2 a:hover,
+ #toc a.toplink,
+ #toc a.toplink:hover {
+ color: white;
+ background-color: #444;
+ text-decoration: none;
+ }
+}
+
+/* Give the bottom of the ToC some whitespace */
+@media screen and (min-width: 1024px) {
+ #toc {
+ padding: 0 0 1em 1em;
+ }
+}
+
+/* Style section numbers with more space between number and title */
+.section-number {
+ padding-right: 0.5em;
+}
+
+/* prevent monospace from becoming overly large */
+tt, code, pre, code {
+ font-size: 95%;
+}
+
+/* Fix the height/width aspect for ascii art*/
+pre.sourcecode,
+.art-text pre {
+ line-height: 1.12;
+}
+
+
+/* Add styling for a link in the ToC that points to the top of the document */
+a.toplink {
+ float: right;
+ margin-right: 0.5em;
+}
+
+/* Fix the dl styling to match the RFC 7992 attributes */
+dl > dt,
+dl.dlParallel > dt {
+ float: left;
+ margin-right: 1em;
+}
+dl.dlNewline > dt {
+ float: none;
+}
+
+/* Provide styling for table cell text alignment */
+table td.text-left,
+table th.text-left {
+ text-align: left;
+}
+table td.text-center,
+table th.text-center {
+ text-align: center;
+}
+table td.text-right,
+table th.text-right {
+ text-align: right;
+}
+
+/* Make the alternative author contact informatio look less like just another
+ author, and group it closer with the primary author contact information */
+.alternative-contact {
+ margin: 0.5em 0 0.25em 0;
+}
+address .non-ascii {
+ margin: 0 0 0 2em;
+}
+
+/* With it being possible to set tables with alignment
+ left, center, and right, { width: 100%; } does not make sense */
+table {
+ width: auto;
+}
+
+/* Avoid reference text that sits in a block with very wide left margin,
+ because of a long floating dt label.*/
+.references dd {
+ overflow: visible;
+}
+
+/* Control caption placement */
+caption {
+ caption-side: bottom;
+}
+
+/* Limit the width of the author address vcard, so names in right-to-left
+ script don't end up on the other side of the page. */
+
+address.vcard {
+ max-width: 30em;
+ margin-right: auto;
+}
+
+/* For address alignment dependent on LTR or RTL scripts */
+address div.left {
+ text-align: left;
+}
+address div.right {
+ text-align: right;
+}
+
+/* Provide table alignment support. We can't use the alignX classes above
+ since they do unwanted things with caption and other styling. */
+table.right {
+ margin-left: auto;
+ margin-right: 0;
+}
+table.center {
+ margin-left: auto;
+ margin-right: auto;
+}
+table.left {
+ margin-left: 0;
+ margin-right: auto;
+}
+
+/* Give the table caption label the same styling as the figcaption */
+caption a[href] {
+ color: #222;
+}
+
+@media print {
+ .toplink {
+ display: none;
+ }
+
+ /* avoid overwriting the top border line with the ToC header */
+ #toc {
+ padding-top: 1px;
+ }
+
+ /* Avoid page breaks inside dl and author address entries */
+ .vcard {
+ page-break-inside: avoid;
+ }
+
+}
+/* Tweak the bcp14 keyword presentation */
+.bcp14 {
+ font-variant: small-caps;
+ font-weight: bold;
+ font-size: 0.9em;
+}
+/* Tweak the invisible space above H* in order not to overlay links in text above */
+ h2 {
+ margin-top: -18px; /* provide offset for in-page anchors */
+ padding-top: 31px;
+ }
+ h3 {
+ margin-top: -18px; /* provide offset for in-page anchors */
+ padding-top: 24px;
+ }
+ h4 {
+ margin-top: -18px; /* provide offset for in-page anchors */
+ padding-top: 24px;
+ }
+/* Float artwork pilcrow to the right */
+@media screen {
+ .artwork a.pilcrow {
+ display: block;
+ line-height: 0.7;
+ margin-top: 0.15em;
+ }
+}
+/* Make pilcrows on dd visible */
+@media screen {
+ dd:hover > a.pilcrow {
+ visibility: visible;
+ }
+}
+/* Make the placement of figcaption match that of a table's caption
+ by removing the figure's added bottom margin */
+.alignLeft.art-text,
+.alignCenter.art-text,
+.alignRight.art-text {
+ margin-bottom: 0;
+}
+.alignLeft,
+.alignCenter,
+.alignRight {
+ margin: 1em 0 0 0;
+}
+/* In print, the pilcrow won't show on hover, so prevent it from taking up space,
+ possibly even requiring a new line */
+@media print {
+ a.pilcrow {
+ display: none;
+ }
+}
+/* Styling for the external metadata */
+div#external-metadata {
+ background-color: #eee;
+ padding: 0.5em;
+ margin-bottom: 0.5em;
+ display: none;
+}
+div#internal-metadata {
+ padding: 0.5em; /* to match the external-metadata padding */
+}
+/* Styling for title RFC Number */
+h1#rfcnum {
+ clear: both;
+ margin: 0 0 -1em;
+ padding: 1em 0 0 0;
+}
+/* Make .olPercent look the same as <ol><li> */
+dl.olPercent > dd {
+ margin-bottom: 0.25em;
+ min-height: initial;
+}
+/* Give aside some styling to set it apart */
+aside {
+ border-left: 1px solid #ddd;
+ margin: 1em 0 1em 2em;
+ padding: 0.2em 2em;
+}
+aside > dl,
+aside > ol,
+aside > ul,
+aside > table,
+aside > p {
+ margin-bottom: 0.5em;
+}
+/* Additional page break settings */
+@media print {
+ figcaption, table caption {
+ page-break-before: avoid;
+ }
+}
+/* Font size adjustments for print */
+@media print {
+ body { font-size: 10pt; line-height: normal; max-width: 96%; }
+ h1 { font-size: 1.72em; padding-top: 1.5em; } /* 1*1.2*1.2*1.2 */
+ h2 { font-size: 1.44em; padding-top: 1.5em; } /* 1*1.2*1.2 */
+ h3 { font-size: 1.2em; padding-top: 1.5em; } /* 1*1.2 */
+ h4 { font-size: 1em; padding-top: 1.5em; }
+ h5, h6 { font-size: 1em; margin: initial; padding: 0.5em 0 0.3em; }
+}
+/* Sourcecode margin in print, when there's no pilcrow */
+@media print {
+ .artwork,
+ .sourcecode {
+ margin-bottom: 1em;
+ }
+}
+/* Avoid narrow tables forcing too narrow table captions, which may render badly */
+table {
+ min-width: 20em;
+}
+/* ol type a */
+ol.type-a { list-style-type: lower-alpha; }
+ol.type-A { list-style-type: upper-alpha; }
+ol.type-i { list-style-type: lower-roman; }
+ol.type-I { list-style-type: lower-roman; }
+/* Apply the print table and row borders in general, on request from the RPC,
+and increase the contrast between border and odd row background sligthtly */
+table {
+ border: 1px solid #ddd;
+}
+td {
+ border-top: 1px solid #ddd;
+}
+tr {
+ break-inside: avoid;
+}
+tr:nth-child(2n+1) > td {
+ background-color: #f8f8f8;
+}
+/* Use style rules to govern display of the TOC. */
+@media screen and (max-width: 1023px) {
+ #toc nav { display: none; }
+ #toc.active nav { display: block; }
+}
+/* Add support for keepWithNext */
+.keepWithNext {
+ break-after: avoid-page;
+ break-after: avoid-page;
+}
+/* Add support for keepWithPrevious */
+.keepWithPrevious {
+ break-before: avoid-page;
+}
+/* Change the approach to avoiding breaks inside artwork etc. */
+figure, pre, table, .artwork, .sourcecode {
+ break-before: auto;
+ break-after: auto;
+}
+/* Avoid breaks between <dt> and <dd> */
+dl {
+ break-before: auto;
+ break-inside: auto;
+}
+dt {
+ break-before: auto;
+ break-after: avoid-page;
+}
+dd {
+ break-before: avoid-page;
+ break-after: auto;
+ orphans: 3;
+ widows: 3
+}
+span.break, dd.break {
+ margin-bottom: 0;
+ min-height: 0;
+ break-before: auto;
+ break-inside: auto;
+ break-after: auto;
+}
+/* Undo break-before ToC */
+@media print {
+ #toc {
+ break-before: auto;
+ }
+}
+/* Text in compact lists should not get extra bottim margin space,
+ since that would makes the list not compact */
+ul.compact p, .ulCompact p,
+ol.compact p, .olCompact p {
+ margin: 0;
+}
+/* But the list as a whole needs the extra space at the end */
+section ul.compact,
+section .ulCompact,
+section ol.compact,
+section .olCompact {
+ margin-bottom: 1em; /* same as p not within ul.compact etc. */
+}
+/* The tt and code background above interferes with for instance table cell
+ backgrounds. Changed to something a bit more selective. */
+tt, code {
+ background-color: transparent;
+}
+p tt, p code, li tt, li code {
+ background-color: #f8f8f8;
+}
+/* Tweak the pre margin -- 0px doesn't come out well */
+pre {
+ margin-top: 0.5px;
+}
+/* Tweak the comact list text */
+ul.compact, .ulCompact,
+ol.compact, .olCompact,
+dl.compact, .dlCompact {
+ line-height: normal;
+}
+/* Don't add top margin for nested lists */
+li > ul, li > ol, li > dl,
+dd > ul, dd > ol, dd > dl,
+dl > dd > dl {
+ margin-top: initial;
+}
+/* Elements that should not be rendered on the same line as a <dt> */
+/* This should match the element list in writer.text.TextWriter.render_dl() */
+dd > div.artwork:first-child,
+dd > aside:first-child,
+dd > figure:first-child,
+dd > ol:first-child,
+dd > div:first-child > pre.sourcecode,
+dd > table:first-child,
+dd > ul:first-child {
+ clear: left;
+}
+/* fix for weird browser behaviour when <dd/> is empty */
+dt+dd:empty::before{
+ content: "\00a0";
+}
+/* Make paragraph spacing inside <li> smaller than in body text, to fit better within the list */
+li > p {
+ margin-bottom: 0.5em
+}
+/* Don't let p margin spill out from inside list items */
+li > p:last-of-type {
+ margin-bottom: 0;
+}
+</style>
+<script type="application/javascript">async function addMetadata(){try{const e=document.styleSheets[0].cssRules;for(let t=0;t<e.length;t++)if(/#identifiers/.exec(e[t].selectorText)){const a=e[t].cssText.replace("#identifiers","#external-updates");document.styleSheets[0].insertRule(a,document.styleSheets[0].cssRules.length)}}catch(e){console.log(e)}const e=document.getElementById("external-metadata");if(e)try{var t,a="",o=function(e){const t=document.getElementsByTagName("meta");for(let a=0;a<t.length;a++)if(t[a].getAttribute("name")===e)return t[a].getAttribute("content");return""}("rfc.number");if(o){t="https://www.rfc-editor.org/rfc/rfc"+o+".json";try{const e=await fetch(t);a=await e.json()}catch(e){t=document.URL.indexOf("html")>=0?document.URL.replace(/html$/,"json"):document.URL+".json";const o=await fetch(t);a=await o.json()}}if(!a)return;e.style.display="block";const s="",d="https://datatracker.ietf.org/doc",n="https://datatracker.ietf.org/ipr/search",c="https://www.rfc-editor.org/info",l=a.doc_id.toLowerCase(),i=a.doc_id.slice(0,3).toLowerCase(),f=a.doc_id.slice(3).replace(/^0+/,""),u={status:"Status",obsoletes:"Obsoletes",obsoleted_by:"Obsoleted By",updates:"Updates",updated_by:"Updated By",see_also:"See Also",errata_url:"Errata"};let h="<dl style='overflow:hidden' id='external-updates'>";["status","obsoletes","obsoleted_by","updates","updated_by","see_also","errata_url"].forEach(e=>{if("status"==e){a[e]=a[e].toLowerCase();var t=a[e].split(" "),o=t.length,w="",p=1;for(let e=0;e<o;e++)p<o?w=w+r(t[e])+" ":w+=r(t[e]),p++;a[e]=w}else if("obsoletes"==e||"obsoleted_by"==e||"updates"==e||"updated_by"==e){var g,m="",b=1;g=a[e].length;for(let t=0;t<g;t++)a[e][t]&&(a[e][t]=String(a[e][t]).toLowerCase(),m=b<g?m+"<a href='"+s+"/rfc/".concat(a[e][t])+"'>"+a[e][t].slice(3)+"</a>, ":m+"<a href='"+s+"/rfc/".concat(a[e][t])+"'>"+a[e][t].slice(3)+"</a>",b++);a[e]=m}else if("see_also"==e){var y,L="",C=1;y=a[e].length;for(let t=0;t<y;t++)if(a[e][t]){a[e][t]=String(a[e][t]);var _=a[e][t].slice(0,3),v=a[e][t].slice(3).replace(/^0+/,"");L=C<y?"RFC"!=_?L+"<a href='"+s+"/info/"+_.toLowerCase().concat(v.toLowerCase())+"'>"+_+" "+v+"</a>, ":L+"<a href='"+s+"/info/"+_.toLowerCase().concat(v.toLowerCase())+"'>"+v+"</a>, ":"RFC"!=_?L+"<a href='"+s+"/info/"+_.toLowerCase().concat(v.toLowerCase())+"'>"+_+" "+v+"</a>":L+"<a href='"+s+"/info/"+_.toLowerCase().concat(v.toLowerCase())+"'>"+v+"</a>",C++}a[e]=L}else if("errata_url"==e){var R="";R=a[e]?R+"<a href='"+a[e]+"'>Errata exist</a> | <a href='"+d+"/"+l+"'>Datatracker</a>| <a href='"+n+"/?"+i+"="+f+"&submit="+i+"'>IPR</a> | <a href='"+c+"/"+l+"'>Info page</a>":"<a href='"+d+"/"+l+"'>Datatracker</a> | <a href='"+n+"/?"+i+"="+f+"&submit="+i+"'>IPR</a> | <a href='"+c+"/"+l+"'>Info page</a>",a[e]=R}""!=a[e]?"Errata"==u[e]?h+=`<dt>More info:</dt><dd>${a[e]}</dd>`:h+=`<dt>${u[e]}:</dt><dd>${a[e]}</dd>`:"Errata"==u[e]&&(h+=`<dt>More info:</dt><dd>${a[e]}</dd>`)}),h+="</dl>",e.innerHTML=h}catch(e){console.log(e)}else console.log("Could not locate metadata <div> element");function r(e){return e.charAt(0).toUpperCase()+e.slice(1)}}window.removeEventListener("load",addMetadata),window.addEventListener("load",addMetadata);</script>
+</head>
+<body class="xml2rfc">
+<script src="metadata.min.js"></script>
+<table class="ears">
+<thead><tr>
+<td class="left"></td>
+<td class="center">TASD File Format Specification</td>
+<td class="right">September 2022</td>
+</tr></thead>
+<tfoot><tr>
+<td class="left">Grey &amp; Bigbass</td>
+<td class="center">Informational</td>
+<td class="right">[Page]</td>
+</tr></tfoot>
+</table>
+<div id="external-metadata" class="document-information"></div>
+<div id="internal-metadata" class="document-information">
+<dl id="identifiers">
+<dt class="label-workgroup">Workgroup:</dt>
+<dd class="workgroup">Independent TAS Console Replay Research Group</dd>
+<dt class="label-published">Published:</dt>
+<dd class="published">
+<time datetime="2022-09-24" class="published">24 September 2022</time>
+ </dd>
+<dt class="label-authors">Authors:</dt>
+<dd class="authors">
+<div class="author">
+ <div class="author-name">V. Grey</div>
+<div class="org">VG Interactive</div>
+</div>
+<div class="author">
+ <div class="author-name">Bigbass</div>
+</div>
+</dd>
+</dl>
+</div>
+<h1 id="title">TASD File Format Specification Version 1</h1>
+<section id="section-abstract">
+ <h2 id="abstract"><a href="#abstract" class="selfRef">Abstract</a></h2>
+<p id="section-abstract-1">The <strong>TASD</strong> file format is used for storing "Tool Assisted Speedrun" or "Tool Assisted Superplay" (TAS) data for TAS replay devices to replay on physical video game console hardware. The format is defined to be expandable for future needs. The format is also defined to be parsable by programs that do not understand portions of the format, whether that is due to incomplete support of the format specification or due to new features being added to later versions of the specification at a later date.<a href="#section-abstract-1" class="pilcrow">¶</a></p>
+<p id="section-abstract-2">This document defines the file format specification for <strong>TASD</strong> files.<a href="#section-abstract-2" class="pilcrow">¶</a></p>
+</section>
+<div id="toc">
+<section id="section-toc.1">
+ <a href="#" onclick="scroll(0,0)" class="toplink">▲</a><h2 id="name-table-of-contents-2">
+<a href="#name-table-of-contents-2" class="section-name selfRef">Table of Contents</a>
+ </h2>
+<nav class="toc"><ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.1">
+ <p id="section-toc.1-1.1.1"><a href="#section-1" class="auto internal xref">1</a>.  <a href="#name-introduction-2" class="internal xref">Introduction</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.1.2.1">
+ <p id="section-toc.1-1.1.2.1.1" class="keepWithNext"><a href="#section-1.1" class="auto internal xref">1.1</a>.  <a href="#name-overview-and-preliminaries-2" class="internal xref">Overview and Preliminaries</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.1.2.1.2.1">
+ <p id="section-toc.1-1.1.2.1.2.1.1" class="keepWithNext"><a href="#section-1.1.1" class="auto internal xref">1.1.1</a>.  <a href="#name-notation-and-vocabulary-2" class="internal xref">Notation and Vocabulary</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.1.2.2">
+ <p id="section-toc.1-1.1.2.2.1"><a href="#section-1.2" class="auto internal xref">1.2</a>.  <a href="#name-motivations-2" class="internal xref">Motivations</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.1.2.2.2.1">
+ <p id="section-toc.1-1.1.2.2.2.1.1" class="keepWithNext"><a href="#section-1.2.1" class="auto internal xref">1.2.1</a>.  <a href="#name-problems-with-existing-forma" class="internal xref">Problems With Existing Formats</a></p>
+</li>
+ </ul>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.2">
+ <p id="section-toc.1-1.2.1"><a href="#section-2" class="auto internal xref">2</a>.  <a href="#name-header-2" class="internal xref">Header</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3">
+ <p id="section-toc.1-1.3.1"><a href="#section-3" class="auto internal xref">3</a>.  <a href="#name-packets-2" class="internal xref">Packets</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.1">
+ <p id="section-toc.1-1.3.2.1.1"><a href="#section-3.1" class="auto internal xref">3.1</a>.  <a href="#name-assigned-packet-keys-without" class="internal xref">Assigned Packet Keys Without Descriptions</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.1.2.1">
+ <p id="section-toc.1-1.3.2.1.2.1.1"><a href="#section-3.1.1" class="auto internal xref">3.1.1</a>.  <a href="#name-general-keys-2" class="internal xref">General Keys</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.1.2.2">
+ <p id="section-toc.1-1.3.2.1.2.2.1"><a href="#section-3.1.2" class="auto internal xref">3.1.2</a>.  <a href="#name-nes-specific-keys-2" class="internal xref">NES Specific Keys</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.1.2.3">
+ <p id="section-toc.1-1.3.2.1.2.3.1"><a href="#section-3.1.3" class="auto internal xref">3.1.3</a>.  <a href="#name-snes-specific-keys-2" class="internal xref">SNES Specific Keys</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.1.2.4">
+ <p id="section-toc.1-1.3.2.1.2.4.1"><a href="#section-3.1.4" class="auto internal xref">3.1.4</a>.  <a href="#name-genesis-specific-keys-2" class="internal xref">Genesis Specific Keys</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.1.2.5">
+ <p id="section-toc.1-1.3.2.1.2.5.1"><a href="#section-3.1.5" class="auto internal xref">3.1.5</a>.  <a href="#name-input-frame-timing-keys-2" class="internal xref">Input Frame/Timing Keys</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.1.2.6">
+ <p id="section-toc.1-1.3.2.1.2.6.1"><a href="#section-3.1.6" class="auto internal xref">3.1.6</a>.  <a href="#name-extraneous-keys-2" class="internal xref">Extraneous Keys</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.2">
+ <p id="section-toc.1-1.3.2.2.1"><a href="#section-3.2" class="auto internal xref">3.2</a>.  <a href="#name-assigned-packet-keys-with-de" class="internal xref">Assigned Packet Keys With Descriptions</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.2.2.1">
+ <p id="section-toc.1-1.3.2.2.2.1.1"><a href="#section-3.2.1" class="auto internal xref">3.2.1</a>.  <a href="#name-general-key-descriptions-2" class="internal xref">General Key Descriptions</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.2.2.2">
+ <p id="section-toc.1-1.3.2.2.2.2.1"><a href="#section-3.2.2" class="auto internal xref">3.2.2</a>.  <a href="#name-nes-specific-key-description" class="internal xref">NES Specific Key Descriptions</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.2.2.3">
+ <p id="section-toc.1-1.3.2.2.2.3.1"><a href="#section-3.2.3" class="auto internal xref">3.2.3</a>.  <a href="#name-snes-specific-key-descriptio" class="internal xref">SNES Specific Key Descriptions</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.2.2.4">
+ <p id="section-toc.1-1.3.2.2.2.4.1"><a href="#section-3.2.4" class="auto internal xref">3.2.4</a>.  <a href="#name-genesis-specific-key-descrip" class="internal xref">Genesis Specific Key Descriptions</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.2.2.5">
+ <p id="section-toc.1-1.3.2.2.2.5.1"><a href="#section-3.2.5" class="auto internal xref">3.2.5</a>.  <a href="#name-input-frame-timing-key-descr" class="internal xref">Input Frame/Timing Key Descriptions</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.2.2.6">
+ <p id="section-toc.1-1.3.2.2.2.6.1"><a href="#section-3.2.6" class="auto internal xref">3.2.6</a>.  <a href="#name-extraneous-key-descriptions-2" class="internal xref">Extraneous Key Descriptions</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3">
+ <p id="section-toc.1-1.3.2.3.1"><a href="#section-3.3" class="auto internal xref">3.3</a>.  <a href="#name-packet-payload-formats-2" class="internal xref">Packet Payload Formats</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1">
+ <p id="section-toc.1-1.3.2.3.2.1.1"><a href="#section-3.3.1" class="auto internal xref">3.3.1</a>.  <a href="#name-general-key-payload-formats-2" class="internal xref">General Key Payload Formats</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.1">
+ <p id="section-toc.1-1.3.2.3.2.1.2.1.1"><a href="#section-3.3.1.1" class="auto internal xref">3.3.1.1</a>.  <a href="#name-console_type-packet-2" class="internal xref">CONSOLE_TYPE Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.2">
+ <p id="section-toc.1-1.3.2.3.2.1.2.2.1"><a href="#section-3.3.1.2" class="auto internal xref">3.3.1.2</a>.  <a href="#name-console_region-packet-2" class="internal xref">CONSOLE_REGION Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.3">
+ <p id="section-toc.1-1.3.2.3.2.1.2.3.1"><a href="#section-3.3.1.3" class="auto internal xref">3.3.1.3</a>.  <a href="#name-game_title-packet-2" class="internal xref">GAME_TITLE Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.4">
+ <p id="section-toc.1-1.3.2.3.2.1.2.4.1"><a href="#section-3.3.1.4" class="auto internal xref">3.3.1.4</a>.  <a href="#name-rom_name-packet-2" class="internal xref">ROM_NAME Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.5">
+ <p id="section-toc.1-1.3.2.3.2.1.2.5.1"><a href="#section-3.3.1.5" class="auto internal xref">3.3.1.5</a>.  <a href="#name-attribution-packet-2" class="internal xref">ATTRIBUTION Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.6">
+ <p id="section-toc.1-1.3.2.3.2.1.2.6.1"><a href="#section-3.3.1.6" class="auto internal xref">3.3.1.6</a>.  <a href="#name-category-packet-2" class="internal xref">CATEGORY Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.7">
+ <p id="section-toc.1-1.3.2.3.2.1.2.7.1"><a href="#section-3.3.1.7" class="auto internal xref">3.3.1.7</a>.  <a href="#name-emulator_name-packet-2" class="internal xref">EMULATOR_NAME Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.8">
+ <p id="section-toc.1-1.3.2.3.2.1.2.8.1"><a href="#section-3.3.1.8" class="auto internal xref">3.3.1.8</a>.  <a href="#name-emulator_version-packet-2" class="internal xref">EMULATOR_VERSION Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.9">
+ <p id="section-toc.1-1.3.2.3.2.1.2.9.1"><a href="#section-3.3.1.9" class="auto internal xref">3.3.1.9</a>.  <a href="#name-emulator_core-packet-2" class="internal xref">EMULATOR_CORE Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.10">
+ <p id="section-toc.1-1.3.2.3.2.1.2.10.1"><a href="#section-3.3.1.10" class="auto internal xref">3.3.1.10</a>. <a href="#name-tas_last_modified-packet-2" class="internal xref">TAS_LAST_MODIFIED Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.11">
+ <p id="section-toc.1-1.3.2.3.2.1.2.11.1"><a href="#section-3.3.1.11" class="auto internal xref">3.3.1.11</a>. <a href="#name-dump_created-packet-2" class="internal xref">DUMP_CREATED Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.12">
+ <p id="section-toc.1-1.3.2.3.2.1.2.12.1"><a href="#section-3.3.1.12" class="auto internal xref">3.3.1.12</a>. <a href="#name-dump_last_modified-packet-2" class="internal xref">DUMP_LAST_MODIFIED Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.13">
+ <p id="section-toc.1-1.3.2.3.2.1.2.13.1"><a href="#section-3.3.1.13" class="auto internal xref">3.3.1.13</a>. <a href="#name-total_frames-packet-2" class="internal xref">TOTAL_FRAMES Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.14">
+ <p id="section-toc.1-1.3.2.3.2.1.2.14.1"><a href="#section-3.3.1.14" class="auto internal xref">3.3.1.14</a>. <a href="#name-rerecords-packet-2" class="internal xref">RERECORDS Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.15">
+ <p id="section-toc.1-1.3.2.3.2.1.2.15.1"><a href="#section-3.3.1.15" class="auto internal xref">3.3.1.15</a>. <a href="#name-source_link-packet-2" class="internal xref">SOURCE_LINK Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.16">
+ <p id="section-toc.1-1.3.2.3.2.1.2.16.1"><a href="#section-3.3.1.16" class="auto internal xref">3.3.1.16</a>. <a href="#name-blank_frames-packet-2" class="internal xref">BLANK_FRAMES Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.17">
+ <p id="section-toc.1-1.3.2.3.2.1.2.17.1"><a href="#section-3.3.1.17" class="auto internal xref">3.3.1.17</a>. <a href="#name-verified-packet-2" class="internal xref">VERIFIED Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.18">
+ <p id="section-toc.1-1.3.2.3.2.1.2.18.1"><a href="#section-3.3.1.18" class="auto internal xref">3.3.1.18</a>. <a href="#name-memory_init-packet-2" class="internal xref">MEMORY_INIT Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.19">
+ <p id="section-toc.1-1.3.2.3.2.1.2.19.1"><a href="#section-3.3.1.19" class="auto internal xref">3.3.1.19</a>. <a href="#name-game_identifier-packet-2" class="internal xref">GAME_IDENTIFIER Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.20">
+ <p id="section-toc.1-1.3.2.3.2.1.2.20.1"><a href="#section-3.3.1.20" class="auto internal xref">3.3.1.20</a>. <a href="#name-movie_license-packet-2" class="internal xref">MOVIE_LICENSE Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.21">
+ <p id="section-toc.1-1.3.2.3.2.1.2.21.1"><a href="#section-3.3.1.21" class="auto internal xref">3.3.1.21</a>. <a href="#name-movie_file-packet-2" class="internal xref">MOVIE_FILE Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.1.2.22">
+ <p id="section-toc.1-1.3.2.3.2.1.2.22.1"><a href="#section-3.3.1.22" class="auto internal xref">3.3.1.22</a>. <a href="#name-port_controller-packet-2" class="internal xref">PORT_CONTROLLER Packet</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.2">
+ <p id="section-toc.1-1.3.2.3.2.2.1"><a href="#section-3.3.2" class="auto internal xref">3.3.2</a>.  <a href="#name-nes-specific-key-payload-for" class="internal xref">NES Specific Key Payload Formats</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.2.2.1">
+ <p id="section-toc.1-1.3.2.3.2.2.2.1.1"><a href="#section-3.3.2.1" class="auto internal xref">3.3.2.1</a>.  <a href="#name-nes_latch_filter-packet-2" class="internal xref">NES_LATCH_FILTER Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.2.2.2">
+ <p id="section-toc.1-1.3.2.3.2.2.2.2.1"><a href="#section-3.3.2.2" class="auto internal xref">3.3.2.2</a>.  <a href="#name-nes_clock_filter-packet-2" class="internal xref">NES_CLOCK_FILTER Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.2.2.3">
+ <p id="section-toc.1-1.3.2.3.2.2.2.3.1"><a href="#section-3.3.2.3" class="auto internal xref">3.3.2.3</a>.  <a href="#name-nes_overread-packet-2" class="internal xref">NES_OVERREAD Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.2.2.4">
+ <p id="section-toc.1-1.3.2.3.2.2.2.4.1"><a href="#section-3.3.2.4" class="auto internal xref">3.3.2.4</a>.  <a href="#name-nes_game_genie_code-packet-2" class="internal xref">NES_GAME_GENIE_CODE Packet</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.3">
+ <p id="section-toc.1-1.3.2.3.2.3.1"><a href="#section-3.3.3" class="auto internal xref">3.3.3</a>.  <a href="#name-snes-specific-key-payload-fo" class="internal xref">SNES Specific Key Payload Formats</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.3.2.1">
+ <p id="section-toc.1-1.3.2.3.2.3.2.1.1"><a href="#section-3.3.3.1" class="auto internal xref">3.3.3.1</a>.  <a href="#name-snes_clock_filter-packet-2" class="internal xref">SNES_CLOCK_FILTER Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.3.2.2">
+ <p id="section-toc.1-1.3.2.3.2.3.2.2.1"><a href="#section-3.3.3.2" class="auto internal xref">3.3.3.2</a>.  <a href="#name-snes_overread-packet-2" class="internal xref">SNES_OVERREAD Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.3.2.3">
+ <p id="section-toc.1-1.3.2.3.2.3.2.3.1"><a href="#section-3.3.3.3" class="auto internal xref">3.3.3.3</a>.  <a href="#name-snes_game_genie_code-packet-2" class="internal xref">SNES_GAME_GENIE_CODE Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.3.2.4">
+ <p id="section-toc.1-1.3.2.3.2.3.2.4.1"><a href="#section-3.3.3.4" class="auto internal xref">3.3.3.4</a>.  <a href="#name-snes_latch_train-packet-rese" class="internal xref">SNES_LATCH_TRAIN Packet (RESERVED)</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.4">
+ <p id="section-toc.1-1.3.2.3.2.4.1"><a href="#section-3.3.4" class="auto internal xref">3.3.4</a>.  <a href="#name-genesis-specific-key-payload" class="internal xref">Genesis Specific Key Payload Formats</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.4.2.1">
+ <p id="section-toc.1-1.3.2.3.2.4.2.1.1"><a href="#section-3.3.4.1" class="auto internal xref">3.3.4.1</a>.  <a href="#name-genesis_game_genie_code-pack" class="internal xref">GENESIS_GAME_GENIE_CODE Packet</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.5">
+ <p id="section-toc.1-1.3.2.3.2.5.1"><a href="#section-3.3.5" class="auto internal xref">3.3.5</a>.  <a href="#name-input-frame-timing-key-paylo" class="internal xref">Input Frame/Timing Key Payload Formats</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.5.2.1">
+ <p id="section-toc.1-1.3.2.3.2.5.2.1.1"><a href="#section-3.3.5.1" class="auto internal xref">3.3.5.1</a>.  <a href="#name-input_chunk-packet-2" class="internal xref">INPUT_CHUNK Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.5.2.2">
+ <p id="section-toc.1-1.3.2.3.2.5.2.2.1"><a href="#section-3.3.5.2" class="auto internal xref">3.3.5.2</a>.  <a href="#name-input_moment-packet-2" class="internal xref">INPUT_MOMENT Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.5.2.3">
+ <p id="section-toc.1-1.3.2.3.2.5.2.3.1"><a href="#section-3.3.5.3" class="auto internal xref">3.3.5.3</a>.  <a href="#name-transition-packet-2" class="internal xref">TRANSITION Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.5.2.4">
+ <p id="section-toc.1-1.3.2.3.2.5.2.4.1"><a href="#section-3.3.5.4" class="auto internal xref">3.3.5.4</a>.  <a href="#name-lag_frame_chunk-packet-2" class="internal xref">LAG_FRAME_CHUNK Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.5.2.5">
+ <p id="section-toc.1-1.3.2.3.2.5.2.5.1"><a href="#section-3.3.5.5" class="auto internal xref">3.3.5.5</a>.  <a href="#name-movie_transition-2" class="internal xref">MOVIE_TRANSITION</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.6">
+ <p id="section-toc.1-1.3.2.3.2.6.1"><a href="#section-3.3.6" class="auto internal xref">3.3.6</a>.  <a href="#name-extraneous-key-payload-forma" class="internal xref">Extraneous Key Payload Formats</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.6.2.1">
+ <p id="section-toc.1-1.3.2.3.2.6.2.1.1"><a href="#section-3.3.6.1" class="auto internal xref">3.3.6.1</a>.  <a href="#name-comment-packet-2" class="internal xref">COMMENT Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.6.2.2">
+ <p id="section-toc.1-1.3.2.3.2.6.2.2.1"><a href="#section-3.3.6.2" class="auto internal xref">3.3.6.2</a>.  <a href="#name-experimental-packet-2" class="internal xref">EXPERIMENTAL Packet</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.3.2.3.2.6.2.3">
+ <p id="section-toc.1-1.3.2.3.2.6.2.3.1"><a href="#section-3.3.6.3" class="auto internal xref">3.3.6.3</a>.  <a href="#name-unspecified-packet-2" class="internal xref">UNSPECIFIED Packet</a></p>
+</li>
+ </ul>
+</li>
+ </ul>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4">
+ <p id="section-toc.1-1.4.1"><a href="#section-4" class="auto internal xref">4</a>.  <a href="#name-controller-input-formats-2" class="internal xref">Controller Input Formats</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.1">
+ <p id="section-toc.1-1.4.2.1.1"><a href="#section-4.1" class="auto internal xref">4.1</a>.  <a href="#name-nes-famicom-controller-types" class="internal xref">NES/Famicom Controller Types</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.1.2.1">
+ <p id="section-toc.1-1.4.2.1.2.1.1"><a href="#section-4.1.1" class="auto internal xref">4.1.1</a>.  <a href="#name-nes-standard-controller-2" class="internal xref">NES Standard Controller</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.1.2.2">
+ <p id="section-toc.1-1.4.2.1.2.2.1"><a href="#section-4.1.2" class="auto internal xref">4.1.2</a>.  <a href="#name-nes-four-score-2" class="internal xref">NES Four Score</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.2">
+ <p id="section-toc.1-1.4.2.2.1"><a href="#section-4.2" class="auto internal xref">4.2</a>.  <a href="#name-snes-controller-types-2" class="internal xref">SNES Controller Types</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.2.2.1">
+ <p id="section-toc.1-1.4.2.2.2.1.1"><a href="#section-4.2.1" class="auto internal xref">4.2.1</a>.  <a href="#name-snes-standard-controller-2" class="internal xref">SNES Standard Controller</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.2.2.2">
+ <p id="section-toc.1-1.4.2.2.2.2.1"><a href="#section-4.2.2" class="auto internal xref">4.2.2</a>.  <a href="#name-snes-mouse-2" class="internal xref">SNES Mouse</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.3">
+ <p id="section-toc.1-1.4.2.3.1"><a href="#section-4.3" class="auto internal xref">4.3</a>.  <a href="#name-n64-controller-types-2" class="internal xref">N64 Controller Types</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.3.2.1">
+ <p id="section-toc.1-1.4.2.3.2.1.1"><a href="#section-4.3.1" class="auto internal xref">4.3.1</a>.  <a href="#name-n64-standard-controller-2" class="internal xref">N64 Standard Controller</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.3.2.2">
+ <p id="section-toc.1-1.4.2.3.2.2.1"><a href="#section-4.3.2" class="auto internal xref">4.3.2</a>.  <a href="#name-n64-standard-controller-with-r" class="internal xref">N64 Standard Controller with Rumble</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.3.2.3">
+ <p id="section-toc.1-1.4.2.3.2.3.1"><a href="#section-4.3.3" class="auto internal xref">4.3.3</a>.  <a href="#name-n64-standard-controller-with-c" class="internal xref">N64 Standard Controller with Controller Pak</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.3.2.4">
+ <p id="section-toc.1-1.4.2.3.2.4.1"><a href="#section-4.3.4" class="auto internal xref">4.3.4</a>.  <a href="#name-n64-standard-controller-with-t" class="internal xref">N64 Standard Controller with Transfer Pak</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.3.2.5">
+ <p id="section-toc.1-1.4.2.3.2.5.1"><a href="#section-4.3.5" class="auto internal xref">4.3.5</a>.  <a href="#name-n64-mouse-2" class="internal xref">N64 Mouse</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.3.2.6">
+ <p id="section-toc.1-1.4.2.3.2.6.1"><a href="#section-4.3.6" class="auto internal xref">4.3.6</a>.  <a href="#name-n64-densha-de-go-2" class="internal xref">N64 Densha de Go</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.4">
+ <p id="section-toc.1-1.4.2.4.1"><a href="#section-4.4" class="auto internal xref">4.4</a>.  <a href="#name-gamecube-controller-types-2" class="internal xref">GameCube Controller Types</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.4.2.1">
+ <p id="section-toc.1-1.4.2.4.2.1.1"><a href="#section-4.4.1" class="auto internal xref">4.4.1</a>.  <a href="#name-gamecube-standard-controller" class="internal xref">GameCube Standard Controller</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.5">
+ <p id="section-toc.1-1.4.2.5.1"><a href="#section-4.5" class="auto internal xref">4.5</a>.  <a href="#name-game-boy-controller-types-2" class="internal xref">Game Boy Controller Types</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.5.2.1">
+ <p id="section-toc.1-1.4.2.5.2.1.1"><a href="#section-4.5.1" class="auto internal xref">4.5.1</a>.  <a href="#name-gb-standard-controller-2" class="internal xref">GB Standard Controller</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.6">
+ <p id="section-toc.1-1.4.2.6.1"><a href="#section-4.6" class="auto internal xref">4.6</a>.  <a href="#name-game-boy-color-controller-ty" class="internal xref">Game Boy Color Controller Types</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.6.2.1">
+ <p id="section-toc.1-1.4.2.6.2.1.1"><a href="#section-4.6.1" class="auto internal xref">4.6.1</a>.  <a href="#name-gbc-standard-controller-2" class="internal xref">GBC Standard Controller</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.7">
+ <p id="section-toc.1-1.4.2.7.1"><a href="#section-4.7" class="auto internal xref">4.7</a>.  <a href="#name-game-boy-advance-controller-" class="internal xref">Game Boy Advance Controller Types</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.7.2.1">
+ <p id="section-toc.1-1.4.2.7.2.1.1"><a href="#section-4.7.1" class="auto internal xref">4.7.1</a>.  <a href="#name-gba-standard-controller-2" class="internal xref">GBA Standard Controller</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.8">
+ <p id="section-toc.1-1.4.2.8.1"><a href="#section-4.8" class="auto internal xref">4.8</a>.  <a href="#name-genesis-controller-types-2" class="internal xref">Genesis Controller Types</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.8.2.1">
+ <p id="section-toc.1-1.4.2.8.2.1.1"><a href="#section-4.8.1" class="auto internal xref">4.8.1</a>.  <a href="#name-genesis-mega-drive-3-button-2" class="internal xref">Genesis (Mega Drive) 3-Button</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.8.2.2">
+ <p id="section-toc.1-1.4.2.8.2.2.1"><a href="#section-4.8.2" class="auto internal xref">4.8.2</a>.  <a href="#name-genesis-mega-drive-6-button-2" class="internal xref">Genesis (Mega Drive) 6-Button</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.9">
+ <p id="section-toc.1-1.4.2.9.1"><a href="#section-4.9" class="auto internal xref">4.9</a>.  <a href="#name-atari-2600-controller-types-2" class="internal xref">Atari 2600 Controller Types</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.9.2.1">
+ <p id="section-toc.1-1.4.2.9.2.1.1"><a href="#section-4.9.1" class="auto internal xref">4.9.1</a>.  <a href="#name-a2600-joystick-2" class="internal xref">A2600 Joystick</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.4.2.9.2.2">
+ <p id="section-toc.1-1.4.2.9.2.2.1"><a href="#section-4.9.2" class="auto internal xref">4.9.2</a>.  <a href="#name-a2600-keyboard-controller-2" class="internal xref">A2600 Keyboard Controller</a></p>
+</li>
+ </ul>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.5">
+ <p id="section-toc.1-1.5.1"><a href="#section-5" class="auto internal xref">5</a>.  <a href="#name-references-2" class="internal xref">References</a></p>
+<ul class="compact toc ulBare ulEmpty">
+<li class="compact toc ulBare ulEmpty" id="section-toc.1-1.5.2.1">
+ <p id="section-toc.1-1.5.2.1.1"><a href="#section-5.1" class="auto internal xref">5.1</a>.  <a href="#name-normative-references-2" class="internal xref">Normative References</a></p>
+</li>
+ </ul>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.6">
+ <p id="section-toc.1-1.6.1"><a href="#appendix-A" class="auto internal xref"></a><a href="#name-copyright-notice-2" class="internal xref">Copyright Notice</a></p>
+</li>
+ <li class="compact toc ulBare ulEmpty" id="section-toc.1-1.7">
+ <p id="section-toc.1-1.7.1"><a href="#appendix-B" class="auto internal xref"></a><a href="#name-authors-addresses-2" class="internal xref">Authors' Addresses</a></p>
+</li>
+ </ul>
+</nav>
+</section>
+</div>
+<div id="introduction">
+<section id="section-1">
+ <h2 id="name-introduction-2">
+<a href="#section-1" class="section-number selfRef">1. </a><a href="#name-introduction-2" class="section-name selfRef">Introduction</a>
+ </h2>
+<p id="section-1-1">The Tool Assisted Speedrun Dump (<strong>TASD</strong>) interchange format is a file format for storing data to allow "Tool Assisted Speedruns" or "Tool Assited Superplays" to be played on physical video game console hardware using TAS replay devices. Created to be hardware and software agnostic, the <strong>TASD</strong> interchange format uses a key-based, binary, packet format to break up pieces of information into easily-parsable and forward-compatible chunks. The format is extensible by simply defining additional keys or value types as necessary. When parsing the file, software can skip any packets whose key is unknown or unsupported.<a href="#section-1-1" class="pilcrow">¶</a></p>
+<p id="section-1-2">Keys can be used multiple times or completely omitted as needed. This reusability eliminates the need of a predefined delimiter to separate pieces of data such as a list of TAS authors.<a href="#section-1-2" class="pilcrow">¶</a></p>
+<p id="section-1-3">While files generated by emulator dump scripts should provide as much information as possible, because keys are optional, the file can be expanded later with any additional data as desired. No intermediary file format is necessary.<a href="#section-1-3" class="pilcrow">¶</a></p>
+<section id="section-1.1">
+ <h3 id="name-overview-and-preliminaries-2">
+<a href="#section-1.1" class="section-number selfRef">1.1. </a><a href="#name-overview-and-preliminaries-2" class="section-name selfRef">Overview and Preliminaries</a>
+ </h3>
+<p id="section-1.1-1">The key words "<span class="bcp14">MUST</span>", "<span class="bcp14">MUST NOT</span>", "<span class="bcp14">REQUIRED</span>", "<span class="bcp14">SHALL</span>", "<span class="bcp14">SHALL NOT</span>", "<span class="bcp14">SHOULD</span>", "<span class="bcp14">SHOULD NOT</span>", "<span class="bcp14">RECOMMENDED</span>", "<span class="bcp14">NOT RECOMMENDED</span>", "<span class="bcp14">MAY</span>", and "<span class="bcp14">OPTIONAL</span>" in this document are to be interpreted as described in BCP 14 <span>[<a href="#RFC2119" class="cite xref">RFC2119</a>]</span> <span>[<a href="#RFC8174" class="cite xref">RFC8174</a>]</span> when, and only when, they appear in all capitals, as shown here.<a href="#section-1.1-1" class="pilcrow">¶</a></p>
+<section id="section-1.1.1">
+ <h4 id="name-notation-and-vocabulary-2">
+<a href="#section-1.1.1" class="section-number selfRef">1.1.1. </a><a href="#name-notation-and-vocabulary-2" class="section-name selfRef">Notation and Vocabulary</a>
+ </h4>
+<p id="section-1.1.1-1">Data Types:<a href="#section-1.1.1-1" class="pilcrow">¶</a></p>
+<ul class="compact ulEmpty">
+<li class="compact ulEmpty" id="section-1.1.1-2.1">(S) = String<a href="#section-1.1.1-2.1" class="pilcrow">¶</a>
+</li>
+ <li class="compact ulEmpty" id="section-1.1.1-2.2">(A) = Binary Data<a href="#section-1.1.1-2.2" class="pilcrow">¶</a>
+</li>
+ <li class="compact ulEmpty" id="section-1.1.1-2.3">(I) = Signed Integer<a href="#section-1.1.1-2.3" class="pilcrow">¶</a>
+</li>
+ <li class="compact ulEmpty" id="section-1.1.1-2.4">(N) = Unsigned Integer<a href="#section-1.1.1-2.4" class="pilcrow">¶</a>
+</li>
+ <li class="compact ulEmpty" id="section-1.1.1-2.5">(B) = Boolean<a href="#section-1.1.1-2.5" class="pilcrow">¶</a>
+</li>
+ </ul>
+<p id="section-1.1.1-3">We use the terms <strong>byte</strong> and <strong>octet</strong> interchangeably in this document.<a href="#section-1.1.1-3" class="pilcrow">¶</a></p>
+<p id="section-1.1.1-4">Unless specified otherwise, all multi-octet integers are big-endian.<a href="#section-1.1.1-4" class="pilcrow">¶</a></p>
+<p id="section-1.1.1-5">We use the terms <strong>Tool Assisted Speedrun</strong>, <strong>Tool Assisted Superplay</strong> and <strong>TAS</strong> interchangeably in this document.<a href="#section-1.1.1-5" class="pilcrow">¶</a></p>
+<p id="section-1.1.1-6">In subsections of (<a href="#descriptions" class="auto internal xref">Section 3.2</a>), the term "in direct form" is used. That term is defined to mean a packet in a <strong>TASD</strong> file directly (first order packet) rather than a packet inside a TRANSITION or MOVIE_TRANSITION packet (second order packet).<a href="#section-1.1.1-6" class="pilcrow">¶</a></p>
+<p id="section-1.1.1-7">String values <span class="bcp14">MUST</span> use UTF-8 encoding. If an example of a string value is given, the example will be between quotation marks. The quotation marks are not included in the string. Not all content between quotations will be string value examples, so be aware of that when continuing through this document.<a href="#section-1.1.1-7" class="pilcrow">¶</a></p>
+<p id="section-1.1.1-8">Unsigned and signed integers can have different bit widths. For instance, an 8-bit integer can be used in one part of the specification and a 64-bit integer can be used in another part of the specification.<a href="#section-1.1.1-8" class="pilcrow">¶</a></p>
+<p id="section-1.1.1-9">Boolean values <span class="bcp14">MUST</span> be a single octet with the value of <code>0</code> for <strong>FALSE</strong> or <code>1</code> for <strong>TRUE</strong>.<a href="#section-1.1.1-9" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlParallel" id="section-1.1.1-10">
+ <dt id="section-1.1.1-10.1"><code>[N octets]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-1.1.1-10.2">A sequence of octets with a length of N<a href="#section-1.1.1-10.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-1.1.1-10.3"><code>[00 7F FF]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-1.1.1-10.4">A sequence of octets <code>00</code>, <code>7F</code>, and <code>FF</code> in that order.<a href="#section-1.1.1-10.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-1.1.1-10.5"><strong>0-indexed</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-1.1.1-10.6">When counting sequentially, start counting at 0.<a href="#section-1.1.1-10.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-1.1.1-10.7"><strong>1-indexed</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-1.1.1-10.8">When counting sequentially, start counting at 1.<a href="#section-1.1.1-10.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-1.1.1-11">In packet diagrams, a single octet is represented with a box like this:<a href="#section-1.1.1-11" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-1.1.1-12">
+<pre>
+ +-----+
+ | Var | &lt;-- Vertical bars MAY be missing
+ +-----+
+</pre><a href="#section-1.1.1-12" class="pilcrow">¶</a>
+</div>
+<ul class="compact ulEmpty">
+<li class="compact ulEmpty" id="section-1.1.1-13.1">
+ <strong>Var</strong> is a variable name.<a href="#section-1.1.1-13.1" class="pilcrow">¶</a>
+</li>
+ </ul>
+<p id="section-1.1.1-14">In packet diagrams, an arbitrary number of octets are represented with a box like this:<a href="#section-1.1.1-14" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-1.1.1-15">
+<pre>
+ +=====+
+ | Var |
+ +=====+
+</pre><a href="#section-1.1.1-15" class="pilcrow">¶</a>
+</div>
+<ul class="compact ulEmpty">
+<li class="compact ulEmpty" id="section-1.1.1-16.1">
+ <strong>Var</strong> is a variable name.<a href="#section-1.1.1-16.1" class="pilcrow">¶</a>
+</li>
+ </ul>
+<p id="section-1.1.1-17">In packet diagrams, boxes can be connected like these examples:<a href="#section-1.1.1-17" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-1.1.1-18">
+<pre>
+ +-----------+-----------+
+ | Var 1 (B) | Var 2 (I) |
+ +-----------+-----------+
+</pre><a href="#section-1.1.1-18" class="pilcrow">¶</a>
+</div>
+<ul class="compact ulEmpty">
+<li class="compact ulEmpty" id="section-1.1.1-19.1">In this example, <strong>Var 1</strong> is a 1 octet long boolean value and <strong>Var 2</strong> is a 1 octet long signed integer.<a href="#section-1.1.1-19.1" class="pilcrow">¶</a>
+</li>
+ </ul>
+<div class="alignLeft art-text artwork" id="section-1.1.1-20">
+<pre>
+ +-----+-----+===========+
+ | Var 1 (N) | Var 2 (S) |
+ +-----+-----+===========+
+</pre><a href="#section-1.1.1-20" class="pilcrow">¶</a>
+</div>
+<ul class="compact ulEmpty">
+<li class="compact ulEmpty" id="section-1.1.1-21.1">In this example, <strong>Var 1</strong> is a 2 octet long unsigned integer and <strong>Var 2</strong> is an arbitrary octet length string.<a href="#section-1.1.1-21.1" class="pilcrow">¶</a>
+</li>
+ </ul>
+<p id="section-1.1.1-22">In packet diagrams, boxes <span class="bcp14">MAY</span> have relative offset values above them like in the following example:<a href="#section-1.1.1-22" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-1.1.1-23">
+<pre>
+ 0 1 2...
+ +-----+-----+===========+
+ | Var 1 (N) | Var 2 (S) |
+ +-----+-----+===========+
+</pre><a href="#section-1.1.1-23" class="pilcrow">¶</a>
+</div>
+<ul class="compact ulEmpty">
+<li class="compact ulEmpty" id="section-1.1.1-24.1">In this example, <strong>Var 1</strong> is a 2 octet long unsigned integer and <strong>Var 2</strong> is an arbitrary octet length string.<a href="#section-1.1.1-24.1" class="pilcrow">¶</a>
+</li>
+ </ul>
+<p id="section-1.1.1-25">Packet diagrams <span class="bcp14">MAY</span> be split into multiple lined sections like in the following example:<a href="#section-1.1.1-25" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-1.1.1-26">
+<pre>
+ 0 1 2 3
+ +-----------+-----------+-----------+-----------+
+ | Var 1 (N) | Var 2 (I) | Var 3 (B) | Var 4 (I) | ...
+ +-----------+-----------+-----------+-----------+
+ 4 5
+ +-----------+===========+
+ | Var 5 (N) | Var 6 (S) |
+ +-----------+===========+
+</pre><a href="#section-1.1.1-26" class="pilcrow">¶</a>
+</div>
+<ul class="compact ulEmpty">
+<li class="compact ulEmpty" id="section-1.1.1-27.1">In this example, enough variable boxes are in the packet diagram to require being split into 2 sections to take up less horizontal space in this documentation. The packet diagram is seperated by an ellipsis (<code>...</code>) on the same text row as the variable names to signify that the packet diagram is continuing.<a href="#section-1.1.1-27.1" class="pilcrow">¶</a>
+</li>
+ </ul>
+</section>
+</section>
+<section id="section-1.2">
+ <h3 id="name-motivations-2">
+<a href="#section-1.2" class="section-number selfRef">1.2. </a><a href="#name-motivations-2" class="section-name selfRef">Motivations</a>
+ </h3>
+<p id="section-1.2-1">This file format's primary goal is to provide a comprehensive and replay device agnostic TAS movie controller input dump format that is usable for any console. Additional goals include:<a href="#section-1.2-1" class="pilcrow">¶</a></p>
+<ul class="normal">
+<li class="normal" id="section-1.2-2.1">No intermediary formats<a href="#section-1.2-2.1" class="pilcrow">¶</a>
+</li>
+ <li class="normal" id="section-1.2-2.2">Forward compatibility<a href="#section-1.2-2.2" class="pilcrow">¶</a>
+</li>
+ <li class="normal" id="section-1.2-2.3">High extensibility<a href="#section-1.2-2.3" class="pilcrow">¶</a>
+</li>
+ <li class="normal" id="section-1.2-2.4">Ability to easily generate using lua scripting in emulators<a href="#section-1.2-2.4" class="pilcrow">¶</a>
+</li>
+ </ul>
+<p id="section-1.2-3">Consideration was also given to how usable the format would be for the software that interacts with replay devices (examples: methods of ingestion/parsing, ease of ingestion/parsing in various languages).<a href="#section-1.2-3" class="pilcrow">¶</a></p>
+<section id="section-1.2.1">
+ <h4 id="name-problems-with-existing-forma">
+<a href="#section-1.2.1" class="section-number selfRef">1.2.1. </a><a href="#name-problems-with-existing-forma" class="section-name selfRef">Problems With Existing Formats</a>
+ </h4>
+<p id="section-1.2.1-1">Most existing formats are either incomplete for some verification needs or don't exist at all for some consoles. A format commonly used for NES console verifications (r08) only encodes 2 standard controllers worth of sequential data and a format commonly used for SNES console verifications (r16m) only encodes up to 8 standard controllers worth of sequential data. There is no built in way to store <strong>RESET</strong> press timing information or indicate additional settings/information. Non-standard controllers are also not supported in commonly used formats.<a href="#section-1.2.1-1" class="pilcrow">¶</a></p>
+<p id="section-1.2.1-2">For consoles not as popular as the NES and SNES, controller input formats would frequently be written in a way that is meant only to work and not in a "standard" way. While that process works, it's less than ideal for redistribution of console replays so that others (especially with differing TAS replay devices) can also verify the same TAS.<a href="#section-1.2.1-2" class="pilcrow">¶</a></p>
+</section>
+</section>
+</section>
+</div>
+<section id="section-2">
+ <h2 id="name-header-2">
+<a href="#section-2" class="section-number selfRef">2. </a><a href="#name-header-2" class="section-name selfRef">Header</a>
+ </h2>
+<p id="section-2-1"><strong>TASD</strong> files <span class="bcp14">MUST</span> include a header, which <span class="bcp14">MUST</span> be in the following format:<a href="#section-2-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-2-2">
+<pre>
+ 0 1 2 3 4 5 6
+ +----+----+----+----+------+------+--------------+
+ | Magic Number (A) | Version (N) | G_KEYLEN (N) |
+ +----+----+----+----+------+------+--------------+
+
+ Magic Number (Binary Data) [4 octets]
+ Version (Unsigned Integer) [2 octets]
+ G_KEYLEN (Unsigned Integer) [1 octet]
+</pre><a href="#section-2-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-2-3">
+ <dt id="section-2-3.1"><strong>Magic Number</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-2-3.2">4 octet value that <span class="bcp14">MUST</span> be <code>[54 41 53 44]</code>(ASCII value <code>TASD</code>).<a href="#section-2-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-2-3.3"><strong>Version</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-2-3.4">Version of the <strong>TASD</strong> file format. Version currently <span class="bcp14">MUST</span> be a value of 1.<a href="#section-2-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-2-3.5"><strong>G_KEYLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-2-3.6">Global length of <strong>Key</strong> values of packets. G_KEYLEN currently <span class="bcp14">MUST</span> be a value of 2.<a href="#section-2-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-3">
+ <h2 id="name-packets-2">
+<a href="#section-3" class="section-number selfRef">3. </a><a href="#name-packets-2" class="section-name selfRef">Packets</a>
+ </h2>
+<p id="section-3-1">Packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3-2">
+<pre>
+ +=========+----------+==========+=============+
+ | Key (A) | PEXP (N) | PLEN (N) | Payload (A) |
+ +=========+----------+==========+=============+
+
+ Key (Binary Data) [G_KEYLEN octets]
+ PEXP (Unsigned Integer) [1 octet]
+ PLEN (Unsigned Integer) [PEXP octets]
+ Payload (Binary Data) [PLEN octets]
+</pre><a href="#section-3-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3-3">
+ <dt id="section-3-3.1"><strong>Key</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3-3.2">Packet type (Packet key).<a href="#section-3-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3-3.3"><strong>PEXP</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3-3.4">Length of <strong>PLEN</strong>.<a href="#section-3-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3-3.5"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3-3.6">Length of <strong>Payload</strong>.<a href="#section-3-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3-3.7"><strong>Payload</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3-3.8">Payload/Content of the packet.<a href="#section-3-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3-3.9"><strong>G_KEYLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3-3.10">Length of <strong>Key</strong> in packets and is specified in the <strong>TASD</strong> file header.<a href="#section-3-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-3-4">All packets are <span class="bcp14">OPTIONAL</span>.<a href="#section-3-4" class="pilcrow">¶</a></p>
+<section id="section-3.1">
+ <h3 id="name-assigned-packet-keys-without">
+<a href="#section-3.1" class="section-number selfRef">3.1. </a><a href="#name-assigned-packet-keys-without" class="section-name selfRef">Assigned Packet Keys Without Descriptions</a>
+ </h3>
+<section id="section-3.1.1">
+ <h4 id="name-general-keys-2">
+<a href="#section-3.1.1" class="section-number selfRef">3.1.1. </a><a href="#name-general-keys-2" class="section-name selfRef">General Keys</a>
+ </h4>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-3.1.1-1">
+ <dt id="section-3.1.1-1.1"><code>[00 01]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.2">CONSOLE_TYPE<a href="#section-3.1.1-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.3"><code>[00 02]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.4">CONSOLE_REGION<a href="#section-3.1.1-1.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.5"><code>[00 03]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.6">GAME_TITLE<a href="#section-3.1.1-1.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.7"><code>[00 04]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.8">ROM_NAME<a href="#section-3.1.1-1.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.9"><code>[00 05]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.10">ATTRIBUTION<a href="#section-3.1.1-1.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.11"><code>[00 06]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.12">CATEGORY<a href="#section-3.1.1-1.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.13"><code>[00 07]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.14">EMULATOR_NAME<a href="#section-3.1.1-1.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.15"><code>[00 08]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.16">EMULATOR_VERSION<a href="#section-3.1.1-1.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.17"><code>[00 09]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.18">EMULATOR_CORE<a href="#section-3.1.1-1.18" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.19"><code>[00 0A]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.20">TAS_LAST_MODIFIED<a href="#section-3.1.1-1.20" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.21"><code>[00 0B]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.22">DUMP_CREATED<a href="#section-3.1.1-1.22" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.23"><code>[00 0C]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.24">DUMP_LAST_MODIFIED<a href="#section-3.1.1-1.24" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.25"><code>[00 0D]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.26">TOTAL_FRAMES<a href="#section-3.1.1-1.26" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.27"><code>[00 0E]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.28">RERECORDS<a href="#section-3.1.1-1.28" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.29"><code>[00 0F]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.30">SOURCE_LINK<a href="#section-3.1.1-1.30" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.31"><code>[00 10]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.32">BLANK_FRAMES<a href="#section-3.1.1-1.32" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.33"><code>[00 11]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.34">VERIFIED<a href="#section-3.1.1-1.34" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.35"><code>[00 12]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.36">MEMORY_INIT<a href="#section-3.1.1-1.36" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.37"><code>[00 13]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.38">GAME_IDENIFIER<a href="#section-3.1.1-1.38" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.39"><code>[00 14]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.40">MOVIE_LICENSE<a href="#section-3.1.1-1.40" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.41"><code>[00 15]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.42">MOVIE_FILE<a href="#section-3.1.1-1.42" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.1-1.43"><code>[00 F0]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.1-1.44">PORT_CONTROLLER<a href="#section-3.1.1-1.44" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-3.1.2">
+ <h4 id="name-nes-specific-keys-2">
+<a href="#section-3.1.2" class="section-number selfRef">3.1.2. </a><a href="#name-nes-specific-keys-2" class="section-name selfRef">NES Specific Keys</a>
+ </h4>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-3.1.2-1">
+ <dt id="section-3.1.2-1.1"><code>[01 01]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.2-1.2">NES_LATCH_FILTER<a href="#section-3.1.2-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.2-1.3"><code>[01 02]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.2-1.4">NES_CLOCK_FILTER<a href="#section-3.1.2-1.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.2-1.5"><code>[01 03]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.2-1.6">NES_OVERREAD<a href="#section-3.1.2-1.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.2-1.7"><code>[01 04]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.2-1.8">NES_GAME_GENIE_CODE<a href="#section-3.1.2-1.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-3.1.3">
+ <h4 id="name-snes-specific-keys-2">
+<a href="#section-3.1.3" class="section-number selfRef">3.1.3. </a><a href="#name-snes-specific-keys-2" class="section-name selfRef">SNES Specific Keys</a>
+ </h4>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-3.1.3-1">
+ <dt id="section-3.1.3-1.1"><code>[02 02]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.3-1.2">SNES_CLOCK_FILTER<a href="#section-3.1.3-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.3-1.3"><code>[02 03]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.3-1.4">SNES_OVERREAD<a href="#section-3.1.3-1.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.3-1.5"><code>[02 04]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.3-1.6">SNES_GAME_GENIE_CODE<a href="#section-3.1.3-1.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.3-1.7"><code>[02 05]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.3-1.8">SNES_LATCH_TRAIN (RESERVED)<a href="#section-3.1.3-1.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-3.1.4">
+ <h4 id="name-genesis-specific-keys-2">
+<a href="#section-3.1.4" class="section-number selfRef">3.1.4. </a><a href="#name-genesis-specific-keys-2" class="section-name selfRef">Genesis Specific Keys</a>
+ </h4>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-3.1.4-1">
+ <dt id="section-3.1.4-1.1"><code>[08 04]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.4-1.2">GENESIS_GAME_GENIE_CODE<a href="#section-3.1.4-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-3.1.5">
+ <h4 id="name-input-frame-timing-keys-2">
+<a href="#section-3.1.5" class="section-number selfRef">3.1.5. </a><a href="#name-input-frame-timing-keys-2" class="section-name selfRef">Input Frame/Timing Keys</a>
+ </h4>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-3.1.5-1">
+ <dt id="section-3.1.5-1.1"><code>[FE 01]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.5-1.2">INPUT_CHUNK<a href="#section-3.1.5-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.5-1.3"><code>[FE 02]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.5-1.4">INPUT_MOMENT<a href="#section-3.1.5-1.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.5-1.5"><code>[FE 03]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.5-1.6">TRANSITION<a href="#section-3.1.5-1.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.5-1.7"><code>[FE 04]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.5-1.8">LAG_FRAME_CHUNK<a href="#section-3.1.5-1.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.5-1.9"><code>[FE 05]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.5-1.10">MOVIE_TRANSITION<a href="#section-3.1.5-1.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-3.1.6">
+ <h4 id="name-extraneous-keys-2">
+<a href="#section-3.1.6" class="section-number selfRef">3.1.6. </a><a href="#name-extraneous-keys-2" class="section-name selfRef">Extraneous Keys</a>
+ </h4>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-3.1.6-1">
+ <dt id="section-3.1.6-1.1"><code>[FF 01]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.6-1.2">COMMENT<a href="#section-3.1.6-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.6-1.3"><code>[FF FE]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.6-1.4">EXPERIMENTAL<a href="#section-3.1.6-1.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.1.6-1.5"><code>[FF FF]</code></dt>
+ <dd style="margin-left: 1.5em" id="section-3.1.6-1.6">UNSPECIFIED<a href="#section-3.1.6-1.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</section>
+<div id="descriptions">
+<section id="section-3.2">
+ <h3 id="name-assigned-packet-keys-with-de">
+<a href="#section-3.2" class="section-number selfRef">3.2. </a><a href="#name-assigned-packet-keys-with-de" class="section-name selfRef">Assigned Packet Keys With Descriptions</a>
+ </h3>
+<section id="section-3.2.1">
+ <h4 id="name-general-key-descriptions-2">
+<a href="#section-3.2.1" class="section-number selfRef">3.2.1. </a><a href="#name-general-key-descriptions-2" class="section-name selfRef">General Key Descriptions</a>
+ </h4>
+<span class="break"></span><dl class="dlNewline" id="section-3.2.1-1">
+ <dt id="section-3.2.1-1.1">
+<code>[00 01]</code> - CONSOLE_TYPE</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.2">Specifies console used on emulator when dumping the TAS controller inputs. This packet type is <span class="bcp14">OPTIONAL</span> but <span class="bcp14">SHOULD</span> be included in a <strong>TASD</strong> file and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#console_type" class="auto internal xref">Section 3.3.1.1</a>).<a href="#section-3.2.1-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.3">
+<code>[00 02]</code> - CONSOLE_REGION</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.4">Specifies video region of console used for the TAS. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#console_region" class="auto internal xref">Section 3.3.1.2</a>).<a href="#section-3.2.1-1.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.5">
+<code>[00 03]</code> - GAME_TITLE</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.6">Specifies the name of the game the TAS is written for. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#game_title" class="auto internal xref">Section 3.3.1.3</a>).<a href="#section-3.2.1-1.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.7">
+<code>[00 04]</code> - ROM_NAME</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.8">Specifies the name of the specific ROM file used for the TAS. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#rom_name" class="auto internal xref">Section 3.3.1.4</a>).<a href="#section-3.2.1-1.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.9">
+<code>[00 05]</code> - ATTRIBUTION</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.10">Specifies the name of someone involved in the TAS or the creation or management of the <strong>TASD</strong> file in order to provide proper attribution for work done. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#author" class="auto internal xref">Section 3.3.1.5</a>).<a href="#section-3.2.1-1.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.11">
+<code>[00 06]</code> - CATEGORY</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.12">Specifies the run category of the TAS. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#category" class="auto internal xref">Section 3.3.1.6</a>).<a href="#section-3.2.1-1.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.13">
+<code>[00 07]</code> - EMULATOR_NAME</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.14">Specifies the emulator used while dumping TAS controller inputs. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#emulator_name" class="auto internal xref">Section 3.3.1.7</a>).<a href="#section-3.2.1-1.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.15">
+<code>[00 08]</code> - EMULATOR_VERSION</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.16">Specifies the version of the emulator used while dump the TAS controller inputs. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#emulator_version" class="auto internal xref">Section 3.3.1.8</a>).<a href="#section-3.2.1-1.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.17">
+<code>[00 09]</code> - EMULATOR_CORE</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.18">Specifies the core of the emulator used while dumping the TAS controller inputs. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#emulator_core" class="auto internal xref">Section 3.3.1.9</a>).<a href="#section-3.2.1-1.18" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.19">
+<code>[00 0A]</code> - TAS_LAST_MODIFIED</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.20">Specifies when the TAS was last modified. Frequently used to specify the date and time when the TAS was published. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#tas_last_modified" class="auto internal xref">Section 3.3.1.10</a>).<a href="#section-3.2.1-1.20" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.21">
+<code>[00 0B]</code> - DUMP_CREATEED</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.22">Specifies when the <strong>TASD</strong> file was first created. This packet is <span class="bcp14">OPTIONAL</span> but <span class="bcp14">SHOULD</span> be included in a <strong>TASD</strong> file and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type. Discussed in (<a href="#dump_created" class="auto internal xref">Section 3.3.1.11</a>).<a href="#section-3.2.1-1.22" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.23">
+<code>[00 0C]</code> - DUMP_LAST_MODIFIED</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.24">Specifies when the <strong>TASD</strong> file was last modified. This packet is <span class="bcp14">OPTIONAL</span> but <span class="bcp14">SHOULD</span> be included in a <strong>TASD</strong> file and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type. Discussed in (<a href="#dump_last_modified" class="auto internal xref">Section 3.3.1.12</a>).<a href="#section-3.2.1-1.24" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.25">
+<code>[00 0D]</code> - TOTAL_FRAMES</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.26">Specifies the total number of frames in the TAS. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#total_frames" class="auto internal xref">Section 3.3.1.13</a>).<a href="#section-3.2.1-1.26" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.27">
+<code>[00 0E]</code> - RERECORDS</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.28">Specifies the total number of rerecords of the TAS. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#rerecords" class="auto internal xref">Section 3.3.1.14</a>).<a href="#section-3.2.1-1.28" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.29">
+<code>[00 0F]</code> - SOURCE_LINK</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.30">Specifies the source link for the TAS. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type. Discussed in (<a href="#source_link" class="auto internal xref">Section 3.3.1.15</a>).<a href="#section-3.2.1-1.30" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.31">
+<code>[00 10]</code> - BLANK_FRAMES</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.32">Specifies the number of blank controller inputs or frames to prepend to the inputs of the TAS when played on hardware. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#blank_frames" class="auto internal xref">Section 3.3.1.16</a>).<a href="#section-3.2.1-1.32" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.33">
+<code>[00 11]</code> - VERIFIED</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.34">Specifies whether the TAS is verified to run on hardware, also known as "console verified", using the <strong>TASD</strong> file. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#verified" class="auto internal xref">Section 3.3.1.17</a>).<a href="#section-3.2.1-1.34" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.35">
+<code>[00 12]</code> - MEMORY_INIT</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.36">Specifies initial memory values used for the TAS. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#memory_init" class="auto internal xref">Section 3.3.1.18</a>).<a href="#section-3.2.1-1.36" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.37">
+<code>[00 13]</code> - GAME_IDENTIFIER</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.38">Specifies an identifier for the game the TAS is written for. This can be checksums, hashes, or other identifying data. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#game_identifier" class="auto internal xref">Section 3.3.1.19</a>).<a href="#section-3.2.1-1.38" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.39">
+<code>[00 14]</code> - MOVIE_LICENSE</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.40">Specifies a copyright license for the TAS. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#movie_license" class="auto internal xref">Section 3.3.1.20</a>).<a href="#section-3.2.1-1.40" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.41">
+<code>[00 15]</code> - MOVIE_FILE</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.42">Specifies the TAS movie data. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type. Discussed in (<a href="#movie_file" class="auto internal xref">Section 3.3.1.21</a>).<a href="#section-3.2.1-1.42" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.1-1.43">
+<code>[00 F0]</code> - PORT_CONTROLLER</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.1-1.44">Specifies the controller type in specific console controller ports for the TAS when played on hardware. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#port_controller" class="auto internal xref">Section 3.3.1.22</a>).<a href="#section-3.2.1-1.44" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-3.2.2">
+ <h4 id="name-nes-specific-key-description">
+<a href="#section-3.2.2" class="section-number selfRef">3.2.2. </a><a href="#name-nes-specific-key-description" class="section-name selfRef">NES Specific Key Descriptions</a>
+ </h4>
+<span class="break"></span><dl class="dlNewline" id="section-3.2.2-1">
+ <dt id="section-3.2.2-1.1">
+<code>[01 01]</code> - NES_LATCH_FILTER</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.2-1.2">Specifies a latch filter time in microseconds for how long how long to wait after a latch signal until new latch signals <span class="bcp14">SHOULD</span> be accepted by the replay device. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#nes_latch_filter" class="auto internal xref">Section 3.3.2.1</a>).<a href="#section-3.2.2-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.2-1.3">
+<code>[01 02]</code> - NES_CLOCK_FILTER</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.2-1.4">Specifies a clock filter time in tenths of a microsecond (0.1 microseconds or 100 nanoseconds) for how long to wait after a clock pulse until new clock pulses <span class="bcp14">SHOULD</span> be accepted by the replay device. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#nes_clock_filter" class="auto internal xref">Section 3.3.2.2</a>).<a href="#section-3.2.2-1.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.2-1.5">
+<code>[01 03]</code> - NES_OVERREAD</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.2-1.6">Specifies whether a high or low signal <span class="bcp14">SHOULD</span> be sent to the NES console if the console clocks the replay device for more input buttons than are expected for the latch. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#nes_overread" class="auto internal xref">Section 3.3.2.3</a>).<a href="#section-3.2.2-1.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.2-1.7">
+<code>[01 04]</code> - NES_GAME_GENIE_CODE</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.2-1.8">Specifies a Game Genie code for the TAS. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#nes_game_genie_code" class="auto internal xref">Section 3.3.2.4</a>).<a href="#section-3.2.2-1.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-3.2.3">
+ <h4 id="name-snes-specific-key-descriptio">
+<a href="#section-3.2.3" class="section-number selfRef">3.2.3. </a><a href="#name-snes-specific-key-descriptio" class="section-name selfRef">SNES Specific Key Descriptions</a>
+ </h4>
+<span class="break"></span><dl class="dlNewline" id="section-3.2.3-1">
+ <dt id="section-3.2.3-1.1">
+<code>[02 02]</code> - SNES_CLOCK_FILTER</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.3-1.2">Specifies a clock filter time in tenths of a microsecond (0.1 microseconds or 100 nanoseconds) for long how to wait after a clock pulse before new clock pulses <span class="bcp14">SHOULD</span> be accepted by the replay device. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#nes_clock_filter" class="auto internal xref">Section 3.3.2.2</a>).<a href="#section-3.2.3-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.3-1.3">
+<code>[02 03]</code> - SNES_OVERREAD</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.3-1.4">Specifies whether a high or low signal <span class="bcp14">SHOULD</span> be sent to the SNES console if the console clocks the replay device for more input buttons than are expected for the latch. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type in direct form. Discussed in (<a href="#snes_overread" class="auto internal xref">Section 3.3.3.2</a>).<a href="#section-3.2.3-1.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.3-1.5">
+<code>[02 04]</code> - SNES_GAME_GENIE_CODE</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.3-1.6">Specifies a Game Genie code for the TAS. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#snes_game_genie_code" class="auto internal xref">Section 3.3.3.3</a>).<a href="#section-3.2.3-1.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.3-1.7">
+<code>[02 05]</code> - SNES_LATCH_TRAIN (RESERVED)</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.3-1.8">This packet type is not yet designed and is intended to be described in the future. Discussed in (<a href="#snes_latch_train" class="auto internal xref">Section 3.3.3.4</a>).<a href="#section-3.2.3-1.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-3.2.4">
+ <h4 id="name-genesis-specific-key-descrip">
+<a href="#section-3.2.4" class="section-number selfRef">3.2.4. </a><a href="#name-genesis-specific-key-descrip" class="section-name selfRef">Genesis Specific Key Descriptions</a>
+ </h4>
+<span class="break"></span><dl class="dlNewline" id="section-3.2.4-1">
+ <dt id="section-3.2.4-1.1">
+<code>[08 04]</code> - GENESIS_GAME_GENIE_CODE</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.4-1.2">Specifies a Game Genie code for the TAS. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#genesis_game_genie_code" class="auto internal xref">Section 3.3.4.1</a>).<a href="#section-3.2.4-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-3.2.5">
+ <h4 id="name-input-frame-timing-key-descr">
+<a href="#section-3.2.5" class="section-number selfRef">3.2.5. </a><a href="#name-input-frame-timing-key-descr" class="section-name selfRef">Input Frame/Timing Key Descriptions</a>
+ </h4>
+<span class="break"></span><dl class="dlNewline" id="section-3.2.5-1">
+ <dt id="section-3.2.5-1.1">
+<code>[FE 01]</code> - INPUT_CHUNK</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.5-1.2">Specifies a chunk of input data for the TAS when played on hardware. All data from INPUT_CHUNK packets are concatenated together in order of appearance in the <strong>TASD</strong> file. If the INPUT_CHUNK packet type is used, the PORT_CONTROLLER packet type <span class="bcp14">MUST</span> be used. If the INPUT_CHUNK packet type is used, the INPUT_MOMENT packet type <span class="bcp14">SHOULD NOT</span> be used. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#input_chunk" class="auto internal xref">Section 3.3.5.1</a>).<a href="#section-3.2.5-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.5-1.3">
+<code>[FE 02]</code> - INPUT_MOMENT</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.5-1.4">Specifies input data that is sent from the replay device to the console with specific timing. If the INPUT_MOMENT packet type is used, the PORT_CONTROLLER packet type <span class="bcp14">MUST</span> be used. If the INPUT_MOMENT packet type is used, the INPUT_CHUNK packet type <span class="bcp14">SHOULD NOT</span> be used. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#input_moment" class="auto internal xref">Section 3.3.5.2</a>).<a href="#section-3.2.5-1.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.5-1.5">
+<code>[FE 03]</code> - TRANSITION</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.5-1.6">Specifies when a transition or change occurs during a TAS replay (example: console reset or changing of controller types). This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#transition" class="auto internal xref">Section 3.3.5.3</a>).<a href="#section-3.2.5-1.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.5-1.7">
+<code>[FE 04]</code> - LAG_FRAME_CHUNK</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.5-1.8">Specifies a chunk of lag frames in a TAS based on the original TAS movie. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#lag_frame_chunk" class="auto internal xref">Section 3.3.5.4</a>).<a href="#section-3.2.5-1.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.5-1.9">
+<code>[FE 05]</code> - MOVIE_TRANSITION</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.5-1.10">Specifies when a transition or change occurs in the original TAS movie (example: console reset or changing of controller types). This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#movie_transition" class="auto internal xref">Section 3.3.5.5</a>).<a href="#section-3.2.5-1.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-3.2.6">
+ <h4 id="name-extraneous-key-descriptions-2">
+<a href="#section-3.2.6" class="section-number selfRef">3.2.6. </a><a href="#name-extraneous-key-descriptions-2" class="section-name selfRef">Extraneous Key Descriptions</a>
+ </h4>
+<span class="break"></span><dl class="dlNewline" id="section-3.2.6-1">
+ <dt id="section-3.2.6-1.1">
+<code>[FF 01]</code> - COMMENT</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.6-1.2">Comment data. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#comment" class="auto internal xref">Section 3.3.6.1</a>).<a href="#section-3.2.6-1.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.6-1.3">
+<code>[FF FE]</code> - EXPERIMENTAL</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.6-1.4">TASD file is using experimental packets. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">SHOULD NOT</span> contain more than 1 of this packet type. Discussed in (<a href="#experimental" class="auto internal xref">Section 3.3.6.2</a>).<a href="#section-3.2.6-1.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.2.6-1.5">
+<code>[FF FF]</code> - UNSPECIFIED</dt>
+ <dd style="margin-left: 1.5em" id="section-3.2.6-1.6">Unspecified packet data. Can contain any arbitrary data. This packet type is <span class="bcp14">OPTIONAL</span> and a <strong>TASD</strong> file <span class="bcp14">MAY</span> contain more than 1 of this packet type. Discussed in (<a href="#unspecified" class="auto internal xref">Section 3.3.6.3</a>).<a href="#section-3.2.6-1.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</section>
+</div>
+<section id="section-3.3">
+ <h3 id="name-packet-payload-formats-2">
+<a href="#section-3.3" class="section-number selfRef">3.3. </a><a href="#name-packet-payload-formats-2" class="section-name selfRef">Packet Payload Formats</a>
+ </h3>
+<section id="section-3.3.1">
+ <h4 id="name-general-key-payload-formats-2">
+<a href="#section-3.3.1" class="section-number selfRef">3.3.1. </a><a href="#name-general-key-payload-formats-2" class="section-name selfRef">General Key Payload Formats</a>
+ </h4>
+<div id="console_type">
+<section id="section-3.3.1.1">
+ <h5 id="name-console_type-packet-2">
+<a href="#section-3.3.1.1" class="section-number selfRef">3.3.1.1. </a><a href="#name-console_type-packet-2" class="section-name selfRef">CONSOLE_TYPE Packet</a>
+ </h5>
+<p id="section-3.3.1.1-1">CONSOLE_TYPE packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.1-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.1-2">
+<pre>
+ 0 1...
+ +-------------+==========+
+ | Console (A) | Name (S) |
+ +-------------+==========+
+
+ Console (Binary Data): [1 octet]
+ [01] - NES &lt;Nintendo Entertainment System&gt;
+ [02] - SNES &lt;Super Nintendo&gt;
+ [03] - N64 &lt;Nintendo 64&gt;
+ [04] - GC &lt;GameCube&gt;
+ [05] - GB &lt;Game Boy&gt;
+ [06] - GBC &lt;Game Boy Color&gt;
+ [07] - GBA &lt;Game Boy Advance&gt;
+ [08] - Genesis &lt;Sega Genesis/Sega Mega Drive&gt;
+ [09] - A2600 &lt;Atari 2600&gt;
+ [FF] - Custom
+ Name (String) [PLEN - 1 octets]
+</pre><a href="#section-3.3.1.1-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.1-3">
+ <dt id="section-3.3.1.1-3.1"><strong>Console</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.1-3.2">Game console the TAS movie is for. There are pre-specified console types, but a <strong>TASD</strong> file <span class="bcp14">MAY</span> use <code>[FF]</code> to specify a console that is not in the pre-specified console types.<a href="#section-3.3.1.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.1-3.3"><strong>Name</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.1-3.4">Name of the console the TAS movie is for. <span class="bcp14">SHOULD</span> be empty if <strong>Console</strong> is not set to <code>[FF]</code>.<a href="#section-3.3.1.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.1-3.5"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.1-3.6">Length of the packet payload.<a href="#section-3.3.1.1-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="console_region">
+<section id="section-3.3.1.2">
+ <h5 id="name-console_region-packet-2">
+<a href="#section-3.3.1.2" class="section-number selfRef">3.3.1.2. </a><a href="#name-console_region-packet-2" class="section-name selfRef">CONSOLE_REGION Packet</a>
+ </h5>
+<p id="section-3.3.1.2-1">CONSOLE_REGION packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.2-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.2-2">
+<pre>
+ 0
+ +------------------+
+ | Video Signal (A) |
+ +------------------+
+
+ Video Signal (Binary Data): [1 octet]
+ [01] - NTSC
+ [02] - PAL
+ [FF] - Other/Unknown
+</pre><a href="#section-3.3.1.2-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.2-3">
+ <dt id="section-3.3.1.2-3.1"><strong>Video Signal</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.2-3.2">Specifies the video signal of the game console being emulated while dumping the TAS movie controller inputs.<a href="#section-3.3.1.2-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="game_title">
+<section id="section-3.3.1.3">
+ <h5 id="name-game_title-packet-2">
+<a href="#section-3.3.1.3" class="section-number selfRef">3.3.1.3. </a><a href="#name-game_title-packet-2" class="section-name selfRef">GAME_TITLE Packet</a>
+ </h5>
+<p id="section-3.3.1.3-1">GAME_TITLE packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.3-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.3-2">
+<pre>
+ 0...
+ +===========+
+ | Title (S) |
+ +===========+
+
+ Title (String) [PLEN octets]
+</pre><a href="#section-3.3.1.3-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.3-3">
+ <dt id="section-3.3.1.3-3.1"><strong>Title</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.3-3.2">Game title the TAS movie is for (example: "Super Mario Bros. 3").<a href="#section-3.3.1.3-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.3-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.3-3.4">Length of the packet payload.<a href="#section-3.3.1.3-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="rom_name">
+<section id="section-3.3.1.4">
+ <h5 id="name-rom_name-packet-2">
+<a href="#section-3.3.1.4" class="section-number selfRef">3.3.1.4. </a><a href="#name-rom_name-packet-2" class="section-name selfRef">ROM_NAME Packet</a>
+ </h5>
+<p id="section-3.3.1.4-1">ROM_NAME packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.4-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.4-2">
+<pre>
+ 0...
+ +==========+
+ | Name (S) |
+ +==========+
+
+ Name (String) [PLEN octets]
+</pre><a href="#section-3.3.1.4-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.4-3">
+ <dt id="section-3.3.1.4-3.1"><strong>Name</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.4-3.2">File name of the ROM used for the TAS movie (example: "Super Mario Bros. 3 (J) [!].nes").<a href="#section-3.3.1.4-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.4-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.4-3.4">Length of the packet payload.<a href="#section-3.3.1.4-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="author">
+<section id="section-3.3.1.5">
+ <h5 id="name-attribution-packet-2">
+<a href="#section-3.3.1.5" class="section-number selfRef">3.3.1.5. </a><a href="#name-attribution-packet-2" class="section-name selfRef">ATTRIBUTION Packet</a>
+ </h5>
+<p id="section-3.3.1.5-1">ATTRIBUTION packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.5-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.5-2">
+<pre>
+ 0 1...
+ +----------+==========+
+ | Type (A) | Name (S) |
+ +----------+==========+
+
+ Type (Binary Data) [1 octet]
+ [01] - Author
+ [02] - Verifier
+ [03] - TASD File Creator
+ [04] - TASD File Editor
+ [FF] - Other
+ Name (String) [PLEN - 1 octets]
+</pre><a href="#section-3.3.1.5-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.5-3">
+ <dt id="section-3.3.1.5-3.1"><strong>Type</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.5-3.2">Function of the person who is being attributed. <strong>Author</strong> is meant for a TAS movie author. <strong>Verifier</strong> is meant for a person who initially console verified the the TAS movie using the <strong>TASD file</strong>. <strong>TASD File Creator</strong> is meant for the person who initially dumped the TAS movie controller inputs into the <strong>TASD</strong> file. <strong>TASD File Editor</strong> is meant for a person who edited the <strong>TASD</strong> file.<a href="#section-3.3.1.5-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.5-3.3"><strong>Name</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.5-3.4">Name of the individual getting the attribution (example: "OnehundredthCoin").<a href="#section-3.3.1.5-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.5-3.5"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.5-3.6">Length of the packet payload.<a href="#section-3.3.1.5-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="category">
+<section id="section-3.3.1.6">
+ <h5 id="name-category-packet-2">
+<a href="#section-3.3.1.6" class="section-number selfRef">3.3.1.6. </a><a href="#name-category-packet-2" class="section-name selfRef">CATEGORY Packet</a>
+ </h5>
+<p id="section-3.3.1.6-1">CATEGORY packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.6-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.6-2">
+<pre>
+ 0...
+ +==============+
+ | Category (S) |
+ +==============+
+
+ Category (String) [PLEN octets]
+</pre><a href="#section-3.3.1.6-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.6-3">
+ <dt id="section-3.3.1.6-3.1"><strong>Category</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.6-3.2">Name of the TAS movie run category (example: "Any %", "100%", "No Warps").<a href="#section-3.3.1.6-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.6-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.6-3.4">Length of the packet payload.<a href="#section-3.3.1.6-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="emulator_name">
+<section id="section-3.3.1.7">
+ <h5 id="name-emulator_name-packet-2">
+<a href="#section-3.3.1.7" class="section-number selfRef">3.3.1.7. </a><a href="#name-emulator_name-packet-2" class="section-name selfRef">EMULATOR_NAME Packet</a>
+ </h5>
+<p id="section-3.3.1.7-1">EMULATOR_NAME packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.7-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.7-2">
+<pre>
+ 0...
+ +==========+
+ | Name (S) |
+ +==========+
+
+ Name (String) [PLEN octets]
+</pre><a href="#section-3.3.1.7-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.7-3">
+ <dt id="section-3.3.1.7-3.1"><strong>Name</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.7-3.2">Name of the emulator used to play the TAS movie while dumping controller inputs (example: "FCEUX", "Bizhawk").<a href="#section-3.3.1.7-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.7-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.7-3.4">Length of the packet payload.<a href="#section-3.3.1.7-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="emulator_version">
+<section id="section-3.3.1.8">
+ <h5 id="name-emulator_version-packet-2">
+<a href="#section-3.3.1.8" class="section-number selfRef">3.3.1.8. </a><a href="#name-emulator_version-packet-2" class="section-name selfRef">EMULATOR_VERSION Packet</a>
+ </h5>
+<p id="section-3.3.1.8-1">EMULATOR_VERSION packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.8-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.8-2">
+<pre>
+ 0...
+ +=============+
+ | Version (S) |
+ +=============+
+
+ Version (String) [PLEN octets]
+</pre><a href="#section-3.3.1.8-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.8-3">
+ <dt id="section-3.3.1.8-3.1"><strong>Version</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.8-3.2">Version of the emulator used to play the TAS movie while dumping controller inputs (example: "2.7.0").<a href="#section-3.3.1.8-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.8-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.8-3.4">Length of the packet payload.<a href="#section-3.3.1.8-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="emulator_core">
+<section id="section-3.3.1.9">
+ <h5 id="name-emulator_core-packet-2">
+<a href="#section-3.3.1.9" class="section-number selfRef">3.3.1.9. </a><a href="#name-emulator_core-packet-2" class="section-name selfRef">EMULATOR_CORE Packet</a>
+ </h5>
+<p id="section-3.3.1.9-1">EMULATOR_CORE packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.9-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.9-2">
+<pre>
+ 0...
+ +==========+
+ | Core (S) |
+ +==========+
+
+ Core (String) [PLEN octets]
+</pre><a href="#section-3.3.1.9-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.9-3">
+ <dt id="section-3.3.1.9-3.1"><strong>Core</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.9-3.2">Core of the emulator used to play the TAS movie while dumping controller inputs (example: "NESHawk", "Gambatte").<a href="#section-3.3.1.9-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.9-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.9-3.4">Length of the packet payload<a href="#section-3.3.1.9-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="tas_last_modified">
+<section id="section-3.3.1.10">
+ <h5 id="name-tas_last_modified-packet-2">
+<a href="#section-3.3.1.10" class="section-number selfRef">3.3.1.10. </a><a href="#name-tas_last_modified-packet-2" class="section-name selfRef">TAS_LAST_MODIFIED Packet</a>
+ </h5>
+<p id="section-3.3.1.10-1">TAS_LAST_MODIFIED packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.10-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.10-2">
+<pre>
+ 0 1 2 3 4 5 6 7
+ +--+--+--+--+--+--+--+--+
+ | Unix Timestamp (I) |
+ +--+--+--+--+--+--+--+--+
+
+ Unix Timestamp (Signed Integer) [8 octets]
+</pre><a href="#section-3.3.1.10-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.10-3">
+ <dt id="section-3.3.1.10-3.1"><strong>Unix Timestamp</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.10-3.2">64-bit Unix timestamp of when the TAS movie was last modified.<a href="#section-3.3.1.10-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="dump_created">
+<section id="section-3.3.1.11">
+ <h5 id="name-dump_created-packet-2">
+<a href="#section-3.3.1.11" class="section-number selfRef">3.3.1.11. </a><a href="#name-dump_created-packet-2" class="section-name selfRef">DUMP_CREATED Packet</a>
+ </h5>
+<p id="section-3.3.1.11-1">DUMP_CREATED packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.11-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.11-2">
+<pre>
+ 0 1 2 3 4 5 6 7
+ +--+--+--+--+--+--+--+--+
+ | Unix Timestamp (I) |
+ +--+--+--+--+--+--+--+--+
+
+ Unix Timestamp (Signed Integer) [8 octets]
+</pre><a href="#section-3.3.1.11-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.11-3">
+ <dt id="section-3.3.1.11-3.1"><strong>Unix Timestamp</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.11-3.2">64-bit Unix timestamp of when the <strong>TASD</strong> file was created.<a href="#section-3.3.1.11-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="dump_last_modified">
+<section id="section-3.3.1.12">
+ <h5 id="name-dump_last_modified-packet-2">
+<a href="#section-3.3.1.12" class="section-number selfRef">3.3.1.12. </a><a href="#name-dump_last_modified-packet-2" class="section-name selfRef">DUMP_LAST_MODIFIED Packet</a>
+ </h5>
+<p id="section-3.3.1.12-1">DUMP_LAST_MODIFIED packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.12-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.12-2">
+<pre>
+ 0 1 2 3 4 5 6 7
+ +--+--+--+--+--+--+--+--+
+ | Unix Timestamp (I) |
+ +--+--+--+--+--+--+--+--+
+
+ Unix Timestamp (Signed Integer) [8 octets]
+</pre><a href="#section-3.3.1.12-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.12-3">
+ <dt id="section-3.3.1.12-3.1"><strong>Unix Timestamp</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.12-3.2">64-bit Unix timestamp of when the <strong>TASD</strong> file was last modified.<a href="#section-3.3.1.12-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="total_frames">
+<section id="section-3.3.1.13">
+ <h5 id="name-total_frames-packet-2">
+<a href="#section-3.3.1.13" class="section-number selfRef">3.3.1.13. </a><a href="#name-total_frames-packet-2" class="section-name selfRef">TOTAL_FRAMES Packet</a>
+ </h5>
+<p id="section-3.3.1.13-1">TOTAL_FRAMES packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.13-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.13-2">
+<pre>
+ 0 1 2 3
+ +---+---+---+---+
+ | Frames (N) |
+ +---+---+---+---+
+
+ Frames (Unsigned Integer) [4 octets]
+</pre><a href="#section-3.3.1.13-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.13-3">
+ <dt id="section-3.3.1.13-3.1"><strong>Frames</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.13-3.2">Total number of frames of the TAS movie.<a href="#section-3.3.1.13-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="rerecords">
+<section id="section-3.3.1.14">
+ <h5 id="name-rerecords-packet-2">
+<a href="#section-3.3.1.14" class="section-number selfRef">3.3.1.14. </a><a href="#name-rerecords-packet-2" class="section-name selfRef">RERECORDS Packet</a>
+ </h5>
+<p id="section-3.3.1.14-1">RERECORDS packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.14-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.14-2">
+<pre>
+ 0 1 2 3
+ +---+---+---+---+
+ | Rerecords (N) |
+ +---+---+---+---+
+
+ Rerecords (Unsigned Integer) [4 octets]
+</pre><a href="#section-3.3.1.14-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.14-3">
+ <dt id="section-3.3.1.14-3.1"><strong>Rerecords</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.14-3.2">Total number of rerecords of the TAS movie.<a href="#section-3.3.1.14-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="source_link">
+<section id="section-3.3.1.15">
+ <h5 id="name-source_link-packet-2">
+<a href="#section-3.3.1.15" class="section-number selfRef">3.3.1.15. </a><a href="#name-source_link-packet-2" class="section-name selfRef">SOURCE_LINK Packet</a>
+ </h5>
+<p id="section-3.3.1.15-1">SOURCE_LINK packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.15-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.15-2">
+<pre>
+ 0...
+ +==========+
+ | Link (S) |
+ +==========+
+
+ Link (String) [PLEN octets]
+</pre><a href="#section-3.3.1.15-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.15-3">
+ <dt id="section-3.3.1.15-3.1"><strong>Link</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.15-3.2">URL that points to the TAS movie or submission (example: "https://tasvideos.org/4567M").<a href="#section-3.3.1.15-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.15-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.15-3.4">Length of the packet payload.<a href="#section-3.3.1.15-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="blank_frames">
+<section id="section-3.3.1.16">
+ <h5 id="name-blank_frames-packet-2">
+<a href="#section-3.3.1.16" class="section-number selfRef">3.3.1.16. </a><a href="#name-blank_frames-packet-2" class="section-name selfRef">BLANK_FRAMES Packet</a>
+ </h5>
+<p id="section-3.3.1.16-1">BLANK_FRAMES packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.16-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.16-2">
+<pre>
+ 0 1
+ +------+------+
+ | Frames (I) |
+ +------+------+
+
+ Frames (Signed Integer) [2 octets]
+</pre><a href="#section-3.3.1.16-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.16-3">
+ <dt id="section-3.3.1.16-3.1"><strong>Frames</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.16-3.2">Number of blank frames (inputs where no buttons are being pressed) needed at the beginning of a TAS console replay of the TAS movie. If <strong>Frames</strong> is a negative value, the value of <strong>Frames</strong> amount of inputs of the TAS console replay of the TAS movie should be removed.<a href="#section-3.3.1.16-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="verified">
+<section id="section-3.3.1.17">
+ <h5 id="name-verified-packet-2">
+<a href="#section-3.3.1.17" class="section-number selfRef">3.3.1.17. </a><a href="#name-verified-packet-2" class="section-name selfRef">VERIFIED Packet</a>
+ </h5>
+<p id="section-3.3.1.17-1">VERIFIED packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.17-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.17-2">
+<pre>
+ 0
+ +--------------+
+ | Verified (B) |
+ +--------------+
+
+ Verified (Boolean) [1 octet]
+</pre><a href="#section-3.3.1.17-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.17-3">
+ <dt id="section-3.3.1.17-3.1"><strong>Verified</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.17-3.2">Boolean value that is <strong>TRUE</strong> if the <strong>TASD</strong> file has been successfully console verified and <strong>FALSE</strong> if it has not been verified.<a href="#section-3.3.1.17-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="memory_init">
+<section id="section-3.3.1.18">
+ <h5 id="name-memory_init-packet-2">
+<a href="#section-3.3.1.18" class="section-number selfRef">3.3.1.18. </a><a href="#name-memory_init-packet-2" class="section-name selfRef">MEMORY_INIT Packet</a>
+ </h5>
+<p id="section-3.3.1.18-1">MEMORY_INIT packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.18-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.18-2">
+<pre>
+ 0 1 2 3
+ +---------------+------+------+--------------+
+ | Data Type (A) | Device (A) | Required (B) | ...
+ +---------------+------+------+--------------+
+ 4 5... 6...
+ +----------+==========+==========+
+ | NLEN (N) | Name (S) | Data (A) |
+ +----------+==========+==========+
+
+ Data Type (Binary Data): [1 octet]
+ [01] - No Initialization Required
+ [02] - All [00]
+ [03] - All [FF]
+ [04] - [00 00 00 00 FF FF FF FF] Repeating
+ [05] - Random
+ [FF] - Custom
+ Device (Binary Data): [2 octets]
+ [01 01] - NES CPU RAM
+ [01 02] - NES Cartridge Save Data
+ [02 01] - SNES CPU RAM
+ [02 02] - SNES Cartridge Save Data
+ [05 01] - GB CPU RAM
+ [05 02] - GB Cartridge Save Data
+ [06 01] - GBC CPU RAM
+ [06 02] - GBC Cartridge Save Data
+ [07 01] - GBA CPU RAM
+ [07 02] - GBA Cartridge Save Data
+ [08 01] - Genesis CPU RAM
+ [08 02] - Genesis Cartridge Save Data
+ [09 01] - A2600 CPU RAM
+ [09 02] - A2600 Cartridge Save Data
+ [FF FF] - Custom/Other Device
+ Required (Boolean) [1 octet]
+ NLEN (Unsigned Integer) [1 octet]
+ Name (String) [NLEN octets]
+ Data (Binary Data) [PLEN - NLEN -
+ 4 octets]
+</pre><a href="#section-3.3.1.18-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.18-3">
+ <dt id="section-3.3.1.18-3.1"><strong>Data Type</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.18-3.2">Content type of initial memory. If <strong>Type</strong> is not <code>[FF]</code>, <strong>Data</strong> <span class="bcp14">SHOULD</span> be empty (0 octet length binary data).<a href="#section-3.3.1.18-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.18-3.3"><strong>Device</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.18-3.4">Device/Location that is to have memory initialized.<a href="#section-3.3.1.18-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.18-3.5"><strong>Required</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.18-3.6">Boolean value that is <strong>TRUE</strong> if this memory initialization data is known to be required and <strong>FALSE</strong> if the memory initialization data is not known to be required.<a href="#section-3.3.1.18-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.18-3.7"><strong>NLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.18-3.8">Length of <strong>Name</strong><a href="#section-3.3.1.18-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.18-3.9"><strong>Name</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.18-3.10">Label for the memory initialization data (example: "CPU RAM", "SAVE RAM"). If <strong>Device</strong> is <code>[FF FF]</code>, <strong>Name</strong> <span class="bcp14">SHOULD NOT</span> be empty (0 octet length string).<a href="#section-3.3.1.18-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.18-3.11"><strong>Data</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.18-3.12">Raw memory initialization data. If <strong>Data Type</strong> is not <code>[FF]</code>, <strong>Data</strong> <span class="bcp14">SHOULD</span> be empty (0 octet length binary data).<a href="#section-3.3.1.18-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.18-3.13"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.18-3.14">Length of the packet payload.<a href="#section-3.3.1.18-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="game_identifier">
+<section id="section-3.3.1.19">
+ <h5 id="name-game_identifier-packet-2">
+<a href="#section-3.3.1.19" class="section-number selfRef">3.3.1.19. </a><a href="#name-game_identifier-packet-2" class="section-name selfRef">GAME_IDENTIFIER Packet</a>
+ </h5>
+<p id="section-3.3.1.19-1">GAME_IDENTIFIER packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.19-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.19-2">
+<pre>
+ 0 1 2...
+ +----------+----------+================+
+ | Type (A) | Base (A) | Identifier (A) |
+ +----------+----------+================+
+
+ Type (Binary Data): [1 octet]
+ [01] - CRC-8 Checksum
+ [02] - CRC-16 Checksum
+ [03] - CRC-32 Checksum
+ [04] - MD5 Hash
+ [05] - SHA1 Hash
+ [06] - SHA224 Hash
+ [07] - SHA256 Hash
+ [08] - SHA384 Hash
+ [09] - SHA512 Hash
+ [0A] - SHA512/224 Hash
+ [0B] - SHA512/256 Hash
+ [0C] - SHA3-224 Hash
+ [0D] - SHA3-256 Hash
+ [0E] - SHA3-384 Hash
+ [0F] - SHA3-512 Hash
+ [10] - SHAKE-128 Hash
+ [11] - SHAKE-256 Hash
+ [FF] - Other
+ Base (Binary Data): [1 octet]
+ [01] - Raw Binary
+ [02] - Case Insensitive Base 16 (Hex) - RFC 4648
+ [03] - Case Insensitive Base 32 - RFC 4648
+ [04] - Base 64 - RFC 4648
+ [FF] - Other
+ Identifier (Binary Data) [PLEN - 2 octets]
+</pre><a href="#section-3.3.1.19-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.19-3">
+ <dt id="section-3.3.1.19-3.1"><strong>Type</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.19-3.2">Hash, checksum, or identifier algorithm <strong>Identifier</strong> is using.<a href="#section-3.3.1.19-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.19-3.3"><strong>Base</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.19-3.4">Describes the data encoding of <strong>Identifier</strong>.<a href="#section-3.3.1.19-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.19-3.5"><strong>Identifier</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.19-3.6">Game hash, checksum, or identifier data.<a href="#section-3.3.1.19-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.19-3.7"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.19-3.8">Length of the packet payload<a href="#section-3.3.1.19-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="movie_license">
+<section id="section-3.3.1.20">
+ <h5 id="name-movie_license-packet-2">
+<a href="#section-3.3.1.20" class="section-number selfRef">3.3.1.20. </a><a href="#name-movie_license-packet-2" class="section-name selfRef">MOVIE_LICENSE Packet</a>
+ </h5>
+<p id="section-3.3.1.20-1">MOVIE_LICENSE packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.20-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.20-2">
+<pre>
+ 0
+ +=============+
+ | License (S) |
+ +=============+
+
+ License (String) [PLEN octet]
+</pre><a href="#section-3.3.1.20-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.20-3">
+ <dt id="section-3.3.1.20-3.1"><strong>License</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.20-3.2">License information for the TAS movie (example: "Creative Commons Attribution 2.0").<a href="#section-3.3.1.20-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.20-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.20-3.4">Length of the packet payload.<a href="#section-3.3.1.20-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="movie_file">
+<section id="section-3.3.1.21">
+ <h5 id="name-movie_file-packet-2">
+<a href="#section-3.3.1.21" class="section-number selfRef">3.3.1.21. </a><a href="#name-movie_file-packet-2" class="section-name selfRef">MOVIE_FILE Packet</a>
+ </h5>
+<p id="section-3.3.1.21-1">MOVIE_FILE packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.21-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.21-2">
+<pre>
+ 0 1... 1+NLEN...
+ +----------+==========+=============+
+ | NLEN (N) | Name (S) | Data (A) |
+ +----------+==========+=============+
+
+ NLEN (Unsigned Integer) [1 octet]
+ Name (String) [NLEN + 1 octets]
+ Data (Binary Data) [PLEN - NLEN -
+ 1 octets]
+</pre><a href="#section-3.3.1.21-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.21-3">
+ <dt id="section-3.3.1.21-3.1"><strong>NLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.21-3.2">Length of <strong>Name</strong>.<a href="#section-3.3.1.21-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.21-3.3"><strong>Name</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.21-3.4">Name of the TAS movie (<span class="bcp14">RECOMMENDED</span> to use TAS movie file name, for example: "100thcoinv2-smb3j-geg.bk2").<a href="#section-3.3.1.21-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.21-3.5"><strong>Data</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.21-3.6">TAS movie file data/content.<a href="#section-3.3.1.21-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.21-3.7"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.21-3.8">Length of the packet payload.<a href="#section-3.3.1.21-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="port_controller">
+<section id="section-3.3.1.22">
+ <h5 id="name-port_controller-packet-2">
+<a href="#section-3.3.1.22" class="section-number selfRef">3.3.1.22. </a><a href="#name-port_controller-packet-2" class="section-name selfRef">PORT_CONTROLLER Packet</a>
+ </h5>
+<p id="section-3.3.1.22-1">PORT_CONTROLLER packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.1.22-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.1.22-2">
+<pre>
+ 0 1 2
+ +----------+-----+-----+
+ | Port (N) | Type (A) |
+ +----------+-----+-----+
+
+ Port (Unsigned Integer) [1 octet]
+ Type (Binary Data): [2 octets]
+ [01 01] - NES Standard Controller
+ [01 02] - NES Four Score
+ [01 03] - (RESERVED) NES Zapper
+ [01 04] - (RESERVED) NES Power Pad
+ [01 05] - (RESERVED) Famicom Family BASIC Keyboard
+ [02 01] - SNES Standard Controller
+ [02 02] - SNES Super Multitap
+ [02 03] - SNES Mouse
+ [02 04] - (RESERVED) SNES Superscope
+ [03 01] - N64 Standard Controller
+ [03 02] - N64 Standard Controller with Rumble Pak
+ [03 03] - N64 Standard Controller with Controller Pak
+ [03 04] - N64 Standard Controller with Transfer Pak
+ [03 05] - N64 Mouse
+ [03 06] - (RESERVED) N64 Voice Recognition Unit (VRU)
+ [03 07] - (RESERVED) N64 RandNet Keyboard
+ [03 08] - N64 Densha de Go
+ [04 01] - GC Standard Controller
+ [04 02] - (RESERVED) GC Keyboard
+ [05 01] - GB Gamepad
+ [06 01] - GBC Gamepad
+ [07 01] - GBA Gamepad
+ [08 01] - Genesis (Mega Drive) 3-Button
+ [08 02] - Genesis (Mega Drive) 6-Button
+ [09 01] - A2600 Joystick
+ [09 02] - (RESERVED) A2600 Paddle
+ [09 03] - A2600 Keyboard Controller
+ [FF FF] - Other/Unspecified
+</pre><a href="#section-3.3.1.22-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.1.22-3">
+ <dt id="section-3.3.1.22-3.1"><strong>Port</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.22-3.2">Controller port number (<strong>Port</strong> number <span class="bcp14">MUST</span> be <strong>1-indexed</strong>).<a href="#section-3.3.1.22-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.1.22-3.3"><strong>Type</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.1.22-3.4">Specifies the controller type connected to the <strong>Port</strong>. <strong>(RESERVED)</strong> specifies that the controller type is not described in this document, but the byte values are reserved for a later version of the <strong>TASD</strong> file format protocol. Input formats for specific controller types are described in (<a href="#controller_inputs" class="auto internal xref">Section 4</a>).<a href="#section-3.3.1.22-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+</section>
+<section id="section-3.3.2">
+ <h4 id="name-nes-specific-key-payload-for">
+<a href="#section-3.3.2" class="section-number selfRef">3.3.2. </a><a href="#name-nes-specific-key-payload-for" class="section-name selfRef">NES Specific Key Payload Formats</a>
+ </h4>
+<div id="nes_latch_filter">
+<section id="section-3.3.2.1">
+ <h5 id="name-nes_latch_filter-packet-2">
+<a href="#section-3.3.2.1" class="section-number selfRef">3.3.2.1. </a><a href="#name-nes_latch_filter-packet-2" class="section-name selfRef">NES_LATCH_FILTER Packet</a>
+ </h5>
+<p id="section-3.3.2.1-1">NES_LATCH_FILTER packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.2.1-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.2.1-2">
+<pre>
+ 0 1
+ +-----+-----+
+ | Time (N) |
+ +-----+-----+
+
+ Time (Unsigned Integer) [2 octets]
+</pre><a href="#section-3.3.2.1-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.2.1-3">
+ <dt id="section-3.3.2.1-3.1"><strong>Time</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.2.1-3.2">Latch filter length of time in microseconds.<a href="#section-3.3.2.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="nes_clock_filter">
+<section id="section-3.3.2.2">
+ <h5 id="name-nes_clock_filter-packet-2">
+<a href="#section-3.3.2.2" class="section-number selfRef">3.3.2.2. </a><a href="#name-nes_clock_filter-packet-2" class="section-name selfRef">NES_CLOCK_FILTER Packet</a>
+ </h5>
+<p id="section-3.3.2.2-1">NES_CLOCK_FILTER packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.2.2-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.2.2-2">
+<pre>
+ 0
+ +----------+
+ | Time (N) |
+ +----------+
+
+ Time (Unsigned Integer) [1 octet]
+</pre><a href="#section-3.3.2.2-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.2.2-3">
+ <dt id="section-3.3.2.2-3.1"><strong>Time</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.2.2-3.2">Clock filter length of time in tenths of a microsecond (units of 0.1 microseconds or 100 nanoseconds).<a href="#section-3.3.2.2-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="nes_overread">
+<section id="section-3.3.2.3">
+ <h5 id="name-nes_overread-packet-2">
+<a href="#section-3.3.2.3" class="section-number selfRef">3.3.2.3. </a><a href="#name-nes_overread-packet-2" class="section-name selfRef">NES_OVERREAD Packet</a>
+ </h5>
+<p id="section-3.3.2.3-1">NES_OVERREAD packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.2.3-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.2.3-2">
+<pre>
+ 0
+ +----------+
+ | High (B) |
+ +----------+
+
+ High (Boolean) [1 octet]
+</pre><a href="#section-3.3.2.3-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.2.3-3">
+ <dt id="section-3.3.2.3-3.1"><strong>High</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.2.3-3.2">Boolean value that is <strong>TRUE</strong> if overread bits are set to high and <strong>FALSE</strong> if overread bits are set to low.<a href="#section-3.3.2.3-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="nes_game_genie_code">
+<section id="section-3.3.2.4">
+ <h5 id="name-nes_game_genie_code-packet-2">
+<a href="#section-3.3.2.4" class="section-number selfRef">3.3.2.4. </a><a href="#name-nes_game_genie_code-packet-2" class="section-name selfRef">NES_GAME_GENIE_CODE Packet</a>
+ </h5>
+<p id="section-3.3.2.4-1">NES_GAME_GENIE_CODE packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.2.4-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.2.4-2">
+<pre>
+ 0...
+ +==========+
+ | Code (S) |
+ +==========+
+
+ Code (String) [PLEN octets]
+</pre><a href="#section-3.3.2.4-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.2.4-3">
+ <dt id="section-3.3.2.4-3.1"><strong>Code</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.2.4-3.2">Game Genie code (example: "AATOZA").<a href="#section-3.3.2.4-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.2.4-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.2.4-3.4">Length of the packet payload.<a href="#section-3.3.2.4-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+</section>
+<section id="section-3.3.3">
+ <h4 id="name-snes-specific-key-payload-fo">
+<a href="#section-3.3.3" class="section-number selfRef">3.3.3. </a><a href="#name-snes-specific-key-payload-fo" class="section-name selfRef">SNES Specific Key Payload Formats</a>
+ </h4>
+<div id="snes_clock_filter">
+<section id="section-3.3.3.1">
+ <h5 id="name-snes_clock_filter-packet-2">
+<a href="#section-3.3.3.1" class="section-number selfRef">3.3.3.1. </a><a href="#name-snes_clock_filter-packet-2" class="section-name selfRef">SNES_CLOCK_FILTER Packet</a>
+ </h5>
+<p id="section-3.3.3.1-1">SNES_CLOCK_FILTER packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.3.1-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.3.1-2">
+<pre>
+ 0
+ +----------+
+ | Time (N) |
+ +----------+
+
+ Time (Unsigned Integer) [1 octet]
+</pre><a href="#section-3.3.3.1-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.3.1-3">
+ <dt id="section-3.3.3.1-3.1"><strong>Time</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.3.1-3.2">Clock filter length of time in tenths of a microsecond (units of 0.1 microseconds or 100 nanoseconds).<a href="#section-3.3.3.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="snes_overread">
+<section id="section-3.3.3.2">
+ <h5 id="name-snes_overread-packet-2">
+<a href="#section-3.3.3.2" class="section-number selfRef">3.3.3.2. </a><a href="#name-snes_overread-packet-2" class="section-name selfRef">SNES_OVERREAD Packet</a>
+ </h5>
+<p id="section-3.3.3.2-1">SNES_OVERREAD packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.3.2-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.3.2-2">
+<pre>
+ 0
+ +----------+
+ | High (B) |
+ +----------+
+
+ High (Boolean) [1 octet]
+</pre><a href="#section-3.3.3.2-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.3.2-3">
+ <dt id="section-3.3.3.2-3.1"><strong>High</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.3.2-3.2">Boolean value that is <strong>TRUE</strong> if overread bits are set to high and <strong>FALSE</strong> if overread bits are set to low.<a href="#section-3.3.3.2-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="snes_game_genie_code">
+<section id="section-3.3.3.3">
+ <h5 id="name-snes_game_genie_code-packet-2">
+<a href="#section-3.3.3.3" class="section-number selfRef">3.3.3.3. </a><a href="#name-snes_game_genie_code-packet-2" class="section-name selfRef">SNES_GAME_GENIE_CODE Packet</a>
+ </h5>
+<p id="section-3.3.3.3-1">SNES_GAME_GENIE_CODE packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.3.3-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.3.3-2">
+<pre>
+ 0...
+ +==========+
+ | Code (S) |
+ +==========+
+
+ Code (String) [PLEN octets]
+</pre><a href="#section-3.3.3.3-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.3.3-3">
+ <dt id="section-3.3.3.3-3.1"><strong>Code</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.3.3-3.2">Game Genie code (example: "DDB4-6F07").<a href="#section-3.3.3.3-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.3.3-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.3.3-3.4">Length of the packet payload.<a href="#section-3.3.3.3-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="snes_latch_train">
+<section id="section-3.3.3.4">
+ <h5 id="name-snes_latch_train-packet-rese">
+<a href="#section-3.3.3.4" class="section-number selfRef">3.3.3.4. </a><a href="#name-snes_latch_train-packet-rese" class="section-name selfRef">SNES_LATCH_TRAIN Packet (RESERVED)</a>
+ </h5>
+<p id="section-3.3.3.4-1">This packet type is not yet designed and is intended to be described in the future.<a href="#section-3.3.3.4-1" class="pilcrow">¶</a></p>
+</section>
+</div>
+</section>
+<section id="section-3.3.4">
+ <h4 id="name-genesis-specific-key-payload">
+<a href="#section-3.3.4" class="section-number selfRef">3.3.4. </a><a href="#name-genesis-specific-key-payload" class="section-name selfRef">Genesis Specific Key Payload Formats</a>
+ </h4>
+<div id="genesis_game_genie_code">
+<section id="section-3.3.4.1">
+ <h5 id="name-genesis_game_genie_code-pack">
+<a href="#section-3.3.4.1" class="section-number selfRef">3.3.4.1. </a><a href="#name-genesis_game_genie_code-pack" class="section-name selfRef">GENESIS_GAME_GENIE_CODE Packet</a>
+ </h5>
+<p id="section-3.3.4.1-1">GENESIS_GAME_GENIE_CODE packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.4.1-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.4.1-2">
+<pre>
+ 0...
+ +==========+
+ | Code (S) |
+ +==========+
+
+ Code (String) [PLEN octets]
+</pre><a href="#section-3.3.4.1-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.4.1-3">
+ <dt id="section-3.3.4.1-3.1"><strong>Code</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.4.1-3.2">Game Genie code (example: "ATBT-AA32").<a href="#section-3.3.4.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.4.1-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.4.1-3.4">Length of the packet payload.<a href="#section-3.3.4.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+</section>
+<section id="section-3.3.5">
+ <h4 id="name-input-frame-timing-key-paylo">
+<a href="#section-3.3.5" class="section-number selfRef">3.3.5. </a><a href="#name-input-frame-timing-key-paylo" class="section-name selfRef">Input Frame/Timing Key Payload Formats</a>
+ </h4>
+<div id="input_chunk">
+<section id="section-3.3.5.1">
+ <h5 id="name-input_chunk-packet-2">
+<a href="#section-3.3.5.1" class="section-number selfRef">3.3.5.1. </a><a href="#name-input_chunk-packet-2" class="section-name selfRef">INPUT_CHUNK Packet</a>
+ </h5>
+<p id="section-3.3.5.1-1">INPUT_CHUNK packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.5.1-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.5.1-2">
+<pre>
+ 0 1...
+ +----------+============+
+ | Port (N) | Inputs (A) |
+ +----------+============+
+
+ Port (Unsigned Integer) [1 octet]
+ Inputs (Binary Data) [PLEN - 1 octets]
+</pre><a href="#section-3.3.5.1-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.5.1-3">
+ <dt id="section-3.3.5.1-3.1"><strong>Port</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.1-3.2">Controller port number (<strong>Port</strong> number <span class="bcp14">MUST</span> be <strong>1-indexed</strong>).<a href="#section-3.3.5.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.1-3.3"><strong>Inputs</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.1-3.4">Controller input data for controller on <strong>Port</strong>. Input values are usually in native format (usually active-low). Input formats for specific controller types are described in (<a href="#controller_inputs" class="auto internal xref">Section 4</a>).<a href="#section-3.3.5.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.1-3.5"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.1-3.6">Length of the packet payload.<a href="#section-3.3.5.1-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-3.3.5.1-4">A single INPUT_CHUNK packet <span class="bcp14">MAY</span> contain up to every input of a TAS movie console replay and <span class="bcp14">MAY</span> contain fewer than every input of a TAS movie console replay. If there are more than 1 INPUT_CHUNK packets, the INPUT_CHUNK packets <span class="bcp14">MUST</span> be in order of the TAS movie console replay inputs, where earlier inputs in the TAS movie console replay are earlier in the <strong>TASD</strong> file and later inputs in the TAS movie console replay are later in the <strong>TASD</strong> file.<a href="#section-3.3.5.1-4" class="pilcrow">¶</a></p>
+</section>
+</div>
+<div id="input_moment">
+<section id="section-3.3.5.2">
+ <h5 id="name-input_moment-packet-2">
+<a href="#section-3.3.5.2" class="section-number selfRef">3.3.5.2. </a><a href="#name-input_moment-packet-2" class="section-name selfRef">INPUT_MOMENT Packet</a>
+ </h5>
+<p id="section-3.3.5.2-1">INPUT_MOMENT packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.5.2-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.5.2-2">
+<pre>
+ 0 1 2 3 4 5 7 8 9 10
+ +----------+----------------+--+--+--+--+--+--+--+--+
+ | Port (N) | Index Type (A) | Index (N) | ...
+ +----------+----------------+--+--+--+--+--+--+--+--+
+ 11...
+ +============+
+ | Inputs (B) |
+ +============+
+
+ Port (Unsigned Integer) [1 octet]
+ Index Type (Binary Data): [1 octet]
+ [01] - Frame
+ [02] - Cycle Count
+ [03] - Milliseconds
+ [04] - Microseconds * 10
+ Index (Unsigned Integer) [8 octets]
+ Inputs (Binary Data) [PLEN - 10 octets]
+
+</pre><a href="#section-3.3.5.2-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.5.2-3">
+ <dt id="section-3.3.5.2-3.1"><strong>Port</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.2-3.2">Controller port number (<strong>Port</strong> number <span class="bcp14">MUST</span> be <strong>1-indexed</strong>).<a href="#section-3.3.5.2-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.2-3.3"><strong>Type</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.2-3.4">Determines specific timing type for start of <strong>Inputs</strong>.<a href="#section-3.3.5.2-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.2-3.5"><strong>Index</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.2-3.6">Time value to start sending <strong>Inputs</strong> data.<a href="#section-3.3.5.2-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.2-3.7"><strong>Inputs</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.2-3.8">Controller input data for controller on <strong>Port</strong>. Input values are usually in native format (usually active-low). Input formats for specific controller types are described in (<a href="#controller_inputs" class="auto internal xref">Section 4</a>).<a href="#section-3.3.5.2-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.2-3.9"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.2-3.10">Length of the packet payload.<a href="#section-3.3.5.2-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="transition">
+<section id="section-3.3.5.3">
+ <h5 id="name-transition-packet-2">
+<a href="#section-3.3.5.3" class="section-number selfRef">3.3.5.3. </a><a href="#name-transition-packet-2" class="section-name selfRef">TRANSITION Packet</a>
+ </h5>
+<p id="section-3.3.5.3-1">TRANSITION packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.5.3-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.5.3-2">
+<pre>
+ 0 1 2 3 4 5 6 7 8 9
+ +----------------+--+--+--+--+--+--+--+--+----------+
+ | Index Type (A) | Index (N) | Type (A) | ...
+ +----------------+--+--+--+--+--+--+--+--+----------+
+ 10...
+ +============+
+ | Packet (A) |
+ +============+
+
+ Index Type (Binary Data): [1 octet]
+ [01] - Frame
+ [02] - Cycle Count
+ [03] - Milliseconds
+ [04] - Microseconds * 10
+ [05] - INPUT_CHUNK Index
+ Index (Unsigned Integer) [8 octets]
+ Type (Binary Data): [1 octet]
+ [01] - Soft Reset
+ [02] - Power Reset
+ [03] - Restart TASD File
+ [FF] - Packet Derived
+ Inner Packet (Binary Data) [PLEN - 10 octets]
+</pre><a href="#section-3.3.5.3-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.5.3-3">
+ <dt id="section-3.3.5.3-3.1"><strong>Input Type</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.3-3.2">Determines specific timing type for start of transition.<a href="#section-3.3.5.3-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.3-3.3"><strong>Index</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.3-3.4">Time or offset value to start transition.<a href="#section-3.3.5.3-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.3-3.5"><strong>Type</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.3-3.6">Type of transition. If <strong>Type</strong> is <code>[FF]</code>, the transition action will be interpreting a <strong>TASD</strong> packet.<a href="#section-3.3.5.3-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.3-3.7"><strong>Inner Packet</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.3-3.8">If <strong>Type</strong> is <code>[FF]</code>, <strong>Inner Packet</strong> <span class="bcp14">SHOULD</span> be a <strong>TASD</strong> packet. <strong>Inner Packet</strong> <span class="bcp14">MUST NOT</span> be a <strong>INPUT_CHUNK</strong>, <strong>INPUT_MOMENT</strong>, <strong>TRANSITION</strong>, <strong>LAG_FRAME_CHUNK</strong>, or <strong>MOVIE_TRANSITION</strong> packet.<a href="#section-3.3.5.3-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.3-3.9"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.3-3.10">Length of the packet payload (Not <strong>Inner Packet</strong> length).<a href="#section-3.3.5.3-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="lag_frame_chunk">
+<section id="section-3.3.5.4">
+ <h5 id="name-lag_frame_chunk-packet-2">
+<a href="#section-3.3.5.4" class="section-number selfRef">3.3.5.4. </a><a href="#name-lag_frame_chunk-packet-2" class="section-name selfRef">LAG_FRAME_CHUNK Packet</a>
+ </h5>
+<p id="section-3.3.5.4-1">LAG_FRAME_CHUNK packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.5.4-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.5.4-2">
+<pre>
+ 0 1 2 3 4 5 6 7
+ +----+----+----+----+--+--+--+--+
+ | Movie Frame (N) | Count (N) |
+ +----+----+----+----+--+--+--+--+
+
+ Movie Frame (Unsigned Integer) [4 octets]
+ Count (Unsigned Integer) [4 octets]
+</pre><a href="#section-3.3.5.4-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.5.4-3">
+ <dt id="section-3.3.5.4-3.1"><strong>Movie Frame</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.4-3.2">Frame number of the TAS movie where Lag Frames start (<strong>Movie Frame</strong> MUST be <strong>0-indexed</strong>).<a href="#section-3.3.5.4-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.4-3.3"><strong>Count</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.4-3.4">Number of Lag Frames in a row starting from <strong>Movie Frame</strong>.<a href="#section-3.3.5.4-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="movie_transition">
+<section id="section-3.3.5.5">
+ <h5 id="name-movie_transition-2">
+<a href="#section-3.3.5.5" class="section-number selfRef">3.3.5.5. </a><a href="#name-movie_transition-2" class="section-name selfRef">MOVIE_TRANSITION</a>
+ </h5>
+<p id="section-3.3.5.5-1">MOVIE_TRANSITION packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.5.5-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.5.5-2">
+<pre>
+ 0 1 2 3 4 5...
+ +----+----+----+----+----------+==================+
+ | Movie Frame (N) | Type (A) | Inner Packet (A) |
+ +----+----+----+----+----------+==================+
+
+ Movie Frame (Unsigned Integer) [4 octets]
+ Type (Binary Data): [1 octet]
+ [01] - Soft Reset
+ [02] - Power Reset
+ [03] - Restart TASD File
+ [FF] - Packet Derived
+ Inner Packet (Binary Data) [PLEN - 5 octets]
+</pre><a href="#section-3.3.5.5-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.5.5-3">
+ <dt id="section-3.3.5.5-3.1"><strong>Movie Frame</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.5-3.2">Frame number of the TAS movie (<strong>Movie Frame</strong> MUST be <strong>0-indexed</strong>).<a href="#section-3.3.5.5-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.5-3.3"><strong>Type</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.5-3.4">Type of transition. If <strong>Type</strong> is <code>[FF]</code>, the transition action will be interpreting a <strong>TASD</strong> packet.<a href="#section-3.3.5.5-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.5-3.5"><strong>Inner Packet</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.5-3.6">If <strong>Type</strong> is <code>[FF]</code>, <strong>Inner Packet</strong> <span class="bcp14">SHOULD</span> be a <strong>TASD</strong> packet. <strong>Inner Packet</strong> <span class="bcp14">MUST NOT</span> be a <strong>INPUT_CHUNK</strong>, <strong>INPUT_MOMENT</strong>, <strong>TRANSITION</strong>, <strong>LAG_FRAME_CHUNK</strong>, or <strong>MOVIE_TRANSITION</strong> packet.<a href="#section-3.3.5.5-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.5.5-3.7"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.5.5-3.8">Length of the packet payload (Not <strong>Inner Packet</strong> length).<a href="#section-3.3.5.5-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+</section>
+<section id="section-3.3.6">
+ <h4 id="name-extraneous-key-payload-forma">
+<a href="#section-3.3.6" class="section-number selfRef">3.3.6. </a><a href="#name-extraneous-key-payload-forma" class="section-name selfRef">Extraneous Key Payload Formats</a>
+ </h4>
+<div id="comment">
+<section id="section-3.3.6.1">
+ <h5 id="name-comment-packet-2">
+<a href="#section-3.3.6.1" class="section-number selfRef">3.3.6.1. </a><a href="#name-comment-packet-2" class="section-name selfRef">COMMENT Packet</a>
+ </h5>
+<p id="section-3.3.6.1-1">COMMENT packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.6.1-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.6.1-2">
+<pre>
+ 0
+ +=============+
+ | Comment (S) |
+ +=============+
+
+ Comment (String) [PLEN octet]
+</pre><a href="#section-3.3.6.1-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.6.1-3">
+ <dt id="section-3.3.6.1-3.1"><strong>Comment</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.6.1-3.2">Comment text.<a href="#section-3.3.6.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.6.1-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.6.1-3.4">Length of the packet payload.<a href="#section-3.3.6.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="experimental">
+<section id="section-3.3.6.2">
+ <h5 id="name-experimental-packet-2">
+<a href="#section-3.3.6.2" class="section-number selfRef">3.3.6.2. </a><a href="#name-experimental-packet-2" class="section-name selfRef">EXPERIMENTAL Packet</a>
+ </h5>
+<p id="section-3.3.6.2-1">EXPERIMENTAL packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.6.2-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.6.2-2">
+<pre>
+ 0...
+ +==================+
+ | Experimental (B) |
+ +==================+
+
+ Experimental (Boolean) [PLEN octet]
+</pre><a href="#section-3.3.6.2-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.6.2-3">
+ <dt id="section-3.3.6.2-3.1"><strong>Experimental</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.6.2-3.2">Boolean data that is <strong>TRUE</strong> if the TASD file is using experimental features (Currently SHOULD be TRUE).<a href="#section-3.3.6.2-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.6.2-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.6.2-3.4">Length of the packet payload.<a href="#section-3.3.6.2-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+<div id="unspecified">
+<section id="section-3.3.6.3">
+ <h5 id="name-unspecified-packet-2">
+<a href="#section-3.3.6.3" class="section-number selfRef">3.3.6.3. </a><a href="#name-unspecified-packet-2" class="section-name selfRef">UNSPECIFIED Packet</a>
+ </h5>
+<p id="section-3.3.6.3-1">UNSPECIFIED packets <span class="bcp14">MUST</span> be in the following format:<a href="#section-3.3.6.3-1" class="pilcrow">¶</a></p>
+<div class="alignLeft art-text artwork" id="section-3.3.6.3-2">
+<pre>
+ 0...
+ +======================+
+ | Unspecified Data (A) |
+ +======================+
+
+ Unspecified Data (Binary Data) [PLEN octets]
+</pre><a href="#section-3.3.6.3-2" class="pilcrow">¶</a>
+</div>
+<span class="break"></span><dl class="dlNewline" id="section-3.3.6.3-3">
+ <dt id="section-3.3.6.3-3.1"><strong>Unspecified Data</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.6.3-3.2">Arbitrary data. Can be used for any data. Because this is unspecified data, there there is no guarantee any software to control a TAS replay device will support data in this packet type.<a href="#section-3.3.6.3-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-3.3.6.3-3.3"><strong>PLEN</strong></dt>
+ <dd style="margin-left: 1.5em" id="section-3.3.6.3-3.4">Length of the packet payload.<a href="#section-3.3.6.3-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</div>
+</section>
+</section>
+</section>
+<div id="controller_inputs">
+<section id="section-4">
+ <h2 id="name-controller-input-formats-2">
+<a href="#section-4" class="section-number selfRef">4. </a><a href="#name-controller-input-formats-2" class="section-name selfRef">Controller Input Formats</a>
+ </h2>
+<p id="section-4-1">A forward slash (<strong>/</strong>) is used to signify <strong>active low</strong>. As an example, if a bit is labeled as <strong>/A</strong>, the bit <span class="bcp14">MUST</span> be 0 if the A button is pressed and <span class="bcp14">MUST</span> be 1 if the A button is not pressed.<a href="#section-4-1" class="pilcrow">¶</a></p>
+<p id="section-4-2">Multi-octet controller inputs are in little-endian order<a href="#section-4-2" class="pilcrow">¶</a></p>
+<p id="section-4-3">Bit order for octets in controller inputs are high-order (MSB) (Most significant bit to least significant bit), so bit 7 <span class="bcp14">MUST</span> be the left-most bit of the octet and bit 0 <span class="bcp14">MUST</span> be the right-most bit of the octet.<a href="#section-4-3" class="pilcrow">¶</a></p>
+<section id="section-4.1">
+ <h3 id="name-nes-famicom-controller-types">
+<a href="#section-4.1" class="section-number selfRef">4.1. </a><a href="#name-nes-famicom-controller-types" class="section-name selfRef">NES/Famicom Controller Types</a>
+ </h3>
+<section id="section-4.1.1">
+ <h4 id="name-nes-standard-controller-2">
+<a href="#section-4.1.1" class="section-number selfRef">4.1.1. </a><a href="#name-nes-standard-controller-2" class="section-name selfRef">NES Standard Controller</a>
+ </h4>
+<p id="section-4.1.1-1">Single Input Length: 1 Octet<a href="#section-4.1.1-1" class="pilcrow">¶</a></p>
+<p id="section-4.1.1-2"><strong>Octet 0</strong><a href="#section-4.1.1-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.1.1-3">
+ <dt id="section-4.1.1-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.1-3.2">/A<a href="#section-4.1.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.1-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.1-3.4">/B<a href="#section-4.1.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.1-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.1-3.6">/Select<a href="#section-4.1.1-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.1-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.1-3.8">/Start<a href="#section-4.1.1-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.1-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.1-3.10">/Up<a href="#section-4.1.1-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.1-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.1-3.12">/Down<a href="#section-4.1.1-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.1-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.1-3.14">/Left<a href="#section-4.1.1-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.1-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.1-3.16">/Right<a href="#section-4.1.1-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-4.1.2">
+ <h4 id="name-nes-four-score-2">
+<a href="#section-4.1.2" class="section-number selfRef">4.1.2. </a><a href="#name-nes-four-score-2" class="section-name selfRef">NES Four Score</a>
+ </h4>
+<p id="section-4.1.2-1">Single Input Length: 3 Octets<a href="#section-4.1.2-1" class="pilcrow">¶</a></p>
+<p id="section-4.1.2-2"><strong>Octet 0</strong><a href="#section-4.1.2-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.1.2-3">
+ <dt id="section-4.1.2-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-3.2">Controller N-1 /A<a href="#section-4.1.2-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-3.4">Controller N-1 /B<a href="#section-4.1.2-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-3.6">Controller N-1 /Select<a href="#section-4.1.2-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-3.8">Controller N-1 /Start<a href="#section-4.1.2-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-3.10">Controller N-1 /Up<a href="#section-4.1.2-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-3.12">Controller N-1 /Down<a href="#section-4.1.2-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-3.14">Controller N-1 /Left<a href="#section-4.1.2-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-3.16">Controller N-1 /Right<a href="#section-4.1.2-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.1.2-4"><strong>Octet 1</strong><a href="#section-4.1.2-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.1.2-5">
+ <dt id="section-4.1.2-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-5.2">Controller N-2 /A<a href="#section-4.1.2-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-5.4">Controller N-2 /B<a href="#section-4.1.2-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-5.6">Controller N-2 /Select<a href="#section-4.1.2-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-5.8">Controller N-2 /Start<a href="#section-4.1.2-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-5.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-5.10">Controller N-2 /Up<a href="#section-4.1.2-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-5.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-5.12">Controller N-2 /Down<a href="#section-4.1.2-5.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-5.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-5.14">Controller N-2 /Left<a href="#section-4.1.2-5.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-5.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-5.16">Controller N-2 /Right<a href="#section-4.1.2-5.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.1.2-6"><strong>Octet 2</strong><a href="#section-4.1.2-6" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.1.2-7">
+ <dt id="section-4.1.2-7.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-7.2">1<a href="#section-4.1.2-7.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-7.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-7.4">1<a href="#section-4.1.2-7.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-7.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-7.6">0 if Controller Port is 2, otherwise 1<a href="#section-4.1.2-7.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-7.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-7.8">0 if Controller Port is 1, otherwise 1<a href="#section-4.1.2-7.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-7.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-7.10">1<a href="#section-4.1.2-7.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-7.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-7.12">1<a href="#section-4.1.2-7.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-7.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-7.14">1<a href="#section-4.1.2-7.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.1.2-7.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.1.2-7.16">1<a href="#section-4.1.2-7.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.1.2-8"><strong>Controller N</strong> is the controller port number. The NES Four Score allows players 1 and 3 to input buttons on controller port 1 and players 2 and 4 to input buttons on controller port 2. <strong>Controller N-1</strong> on controller port 1 is <strong>Player 1</strong>, <strong>Controller N-2</strong> on controller port 1 is <strong>Player 3</strong>, <strong>Controller N-1</strong> on controller port 2 is <strong>Player 2</strong>, and <strong>Controller N-2</strong> on controller port 2 is <strong>Player 4</strong>.<a href="#section-4.1.2-8" class="pilcrow">¶</a></p>
+</section>
+</section>
+<section id="section-4.2">
+ <h3 id="name-snes-controller-types-2">
+<a href="#section-4.2" class="section-number selfRef">4.2. </a><a href="#name-snes-controller-types-2" class="section-name selfRef">SNES Controller Types</a>
+ </h3>
+<section id="section-4.2.1">
+ <h4 id="name-snes-standard-controller-2">
+<a href="#section-4.2.1" class="section-number selfRef">4.2.1. </a><a href="#name-snes-standard-controller-2" class="section-name selfRef">SNES Standard Controller</a>
+ </h4>
+<p id="section-4.2.1-1">Single Input Length: 2 Octets<a href="#section-4.2.1-1" class="pilcrow">¶</a></p>
+<p id="section-4.2.1-2"><strong>Octet 0</strong><a href="#section-4.2.1-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.2.1-3">
+ <dt id="section-4.2.1-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-3.2">/B<a href="#section-4.2.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-3.4">/Y<a href="#section-4.2.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-3.6">/Select<a href="#section-4.2.1-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-3.8">/Start<a href="#section-4.2.1-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-3.10">/Up<a href="#section-4.2.1-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-3.12">/Down<a href="#section-4.2.1-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-3.14">/Left<a href="#section-4.2.1-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-3.16">/Right<a href="#section-4.2.1-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.2.1-4"><strong>Octet 1</strong><a href="#section-4.2.1-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.2.1-5">
+ <dt id="section-4.2.1-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-5.2">/A<a href="#section-4.2.1-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-5.4">/X<a href="#section-4.2.1-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-5.6">/L<a href="#section-4.2.1-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-5.8">/R<a href="#section-4.2.1-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-5.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-5.10">1<a href="#section-4.2.1-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-5.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-5.12">1<a href="#section-4.2.1-5.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-5.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-5.14">1<a href="#section-4.2.1-5.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.1-5.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.1-5.16">1<a href="#section-4.2.1-5.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-4.2.2">
+ <h4 id="name-snes-mouse-2">
+<a href="#section-4.2.2" class="section-number selfRef">4.2.2. </a><a href="#name-snes-mouse-2" class="section-name selfRef">SNES Mouse</a>
+ </h4>
+<p id="section-4.2.2-1">Single Input Length: 4 Octets<a href="#section-4.2.2-1" class="pilcrow">¶</a></p>
+<p id="section-4.2.2-2"><strong>Octet 0</strong><a href="#section-4.2.2-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.2.2-3">
+ <dt id="section-4.2.2-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-3.2">1<a href="#section-4.2.2-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-3.4">1<a href="#section-4.2.2-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-3.6">1<a href="#section-4.2.2-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-3.8">1<a href="#section-4.2.2-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-3.10">1<a href="#section-4.2.2-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-3.12">1<a href="#section-4.2.2-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-3.14">1<a href="#section-4.2.2-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-3.16">1<a href="#section-4.2.2-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.2.2-4"><strong>Octet 1</strong><a href="#section-4.2.2-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.2.2-5">
+ <dt id="section-4.2.2-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-5.2">/Right button<a href="#section-4.2.2-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-5.4">/Left button<a href="#section-4.2.2-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-5.6">Current sensitivity (0: high sensitivity; 1: low or medium sensitivity)<a href="#section-4.2.2-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-5.8">Current sensitivity (0: medium sensitivity; 1: low or high sensitivity)<a href="#section-4.2.2-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-5.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-5.10">1<a href="#section-4.2.2-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-5.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-5.12">1<a href="#section-4.2.2-5.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-5.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-5.14">1<a href="#section-4.2.2-5.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-5.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-5.16">0<a href="#section-4.2.2-5.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.2.2-6"><strong>Octet 2</strong><a href="#section-4.2.2-6" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.2.2-7">
+ <dt id="section-4.2.2-7.1">Bits 7-1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-7.2">/Vertical displacement since last read<a href="#section-4.2.2-7.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-7.3">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-7.4">Direction (0: up; 1: down)<a href="#section-4.2.2-7.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.2.2-8"><strong>Octet 3</strong><a href="#section-4.2.2-8" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.2.2-9">
+ <dt id="section-4.2.2-9.1">Bits 7-1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-9.2">/Horizontal displacement since last read<a href="#section-4.2.2-9.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.2.2-9.3">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.2.2-9.4">Direction (0: up; 1: down)<a href="#section-4.2.2-9.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</section>
+<section id="section-4.3">
+ <h3 id="name-n64-controller-types-2">
+<a href="#section-4.3" class="section-number selfRef">4.3. </a><a href="#name-n64-controller-types-2" class="section-name selfRef">N64 Controller Types</a>
+ </h3>
+<section id="section-4.3.1">
+ <h4 id="name-n64-standard-controller-2">
+<a href="#section-4.3.1" class="section-number selfRef">4.3.1. </a><a href="#name-n64-standard-controller-2" class="section-name selfRef">N64 Standard Controller</a>
+ </h4>
+<p id="section-4.3.1-1">Single Input Length: 4 Octets<a href="#section-4.3.1-1" class="pilcrow">¶</a></p>
+<p id="section-4.3.1-2"><strong>Octet 0</strong><a href="#section-4.3.1-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.1-3">
+ <dt id="section-4.3.1-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-3.2">A<a href="#section-4.3.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-3.4">B<a href="#section-4.3.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-3.6">Z<a href="#section-4.3.1-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-3.8">Start<a href="#section-4.3.1-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-3.10">D-Pad Up<a href="#section-4.3.1-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-3.12">D-Pad Down<a href="#section-4.3.1-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-3.14">D-Pad Left<a href="#section-4.3.1-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-3.16">D-Pad Right<a href="#section-4.3.1-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.1-4"><strong>Octet 1</strong><a href="#section-4.3.1-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.1-5">
+ <dt id="section-4.3.1-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-5.2">RST (special controller reset bit)<a href="#section-4.3.1-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-5.4">0<a href="#section-4.3.1-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-5.6">Left Trigger<a href="#section-4.3.1-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-5.8">Right Trigger<a href="#section-4.3.1-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-5.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-5.10">C-Up<a href="#section-4.3.1-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-5.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-5.12">C-Down<a href="#section-4.3.1-5.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-5.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-5.14">C-Left<a href="#section-4.3.1-5.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.1-5.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-5.16">C-Right<a href="#section-4.3.1-5.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.1-6"><strong>Octet 2</strong><a href="#section-4.3.1-6" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.1-7">
+ <dt id="section-4.3.1-7.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-7.2">Analog Stick X-Axis (signed 8-bit number)<a href="#section-4.3.1-7.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.1-8"><strong>Octet 3</strong><a href="#section-4.3.1-8" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.1-9">
+ <dt id="section-4.3.1-9.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.1-9.2">Analog Stick Y-Axis (signed 8-bit number)<a href="#section-4.3.1-9.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-4.3.2">
+ <h4 id="name-n64-standard-controller-with-r">
+<a href="#section-4.3.2" class="section-number selfRef">4.3.2. </a><a href="#name-n64-standard-controller-with-r" class="section-name selfRef">N64 Standard Controller with Rumble</a>
+ </h4>
+<p id="section-4.3.2-1">Single Input Length: 4 Octets<a href="#section-4.3.2-1" class="pilcrow">¶</a></p>
+<p id="section-4.3.2-2"><strong>Octet 0</strong><a href="#section-4.3.2-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.2-3">
+ <dt id="section-4.3.2-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-3.2">A<a href="#section-4.3.2-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-3.4">B<a href="#section-4.3.2-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-3.6">Z<a href="#section-4.3.2-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-3.8">Start<a href="#section-4.3.2-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-3.10">D-Pad Up<a href="#section-4.3.2-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-3.12">D-Pad Down<a href="#section-4.3.2-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-3.14">D-Pad Left<a href="#section-4.3.2-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-3.16">D-Pad Right<a href="#section-4.3.2-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.2-4"><strong>Octet 1</strong><a href="#section-4.3.2-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.2-5">
+ <dt id="section-4.3.2-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-5.2">RST (special controller reset bit)<a href="#section-4.3.2-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-5.4">0<a href="#section-4.3.2-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-5.6">Left Trigger<a href="#section-4.3.2-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-5.8">Right Trigger<a href="#section-4.3.2-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-5.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-5.10">C-Up<a href="#section-4.3.2-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-5.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-5.12">C-Down<a href="#section-4.3.2-5.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-5.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-5.14">C-Left<a href="#section-4.3.2-5.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.2-5.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-5.16">C-Right<a href="#section-4.3.2-5.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.2-6"><strong>Octet 2</strong><a href="#section-4.3.2-6" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.2-7">
+ <dt id="section-4.3.2-7.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-7.2">Analog Stick X-Axis (signed 8-bit number)<a href="#section-4.3.2-7.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.2-8"><strong>Octet 3</strong><a href="#section-4.3.2-8" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.2-9">
+ <dt id="section-4.3.2-9.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.2-9.2">Analog Stick Y-Axis (signed 8-bit number)<a href="#section-4.3.2-9.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-4.3.3">
+ <h4 id="name-n64-standard-controller-with-c">
+<a href="#section-4.3.3" class="section-number selfRef">4.3.3. </a><a href="#name-n64-standard-controller-with-c" class="section-name selfRef">N64 Standard Controller with Controller Pak</a>
+ </h4>
+<p id="section-4.3.3-1">Single Input Length: 4 Octets<a href="#section-4.3.3-1" class="pilcrow">¶</a></p>
+<p id="section-4.3.3-2"><strong>Octet 0</strong><a href="#section-4.3.3-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.3-3">
+ <dt id="section-4.3.3-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-3.2">A<a href="#section-4.3.3-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-3.4">B<a href="#section-4.3.3-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-3.6">Z<a href="#section-4.3.3-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-3.8">Start<a href="#section-4.3.3-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-3.10">D-Pad Up<a href="#section-4.3.3-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-3.12">D-Pad Down<a href="#section-4.3.3-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-3.14">D-Pad Left<a href="#section-4.3.3-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-3.16">D-Pad Right<a href="#section-4.3.3-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.3-4"><strong>Octet 1</strong><a href="#section-4.3.3-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.3-5">
+ <dt id="section-4.3.3-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-5.2">RST (special controller reset bit)<a href="#section-4.3.3-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-5.4">0<a href="#section-4.3.3-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-5.6">Left Trigger<a href="#section-4.3.3-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-5.8">Right Trigger<a href="#section-4.3.3-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-5.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-5.10">C-Up<a href="#section-4.3.3-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-5.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-5.12">C-Down<a href="#section-4.3.3-5.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-5.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-5.14">C-Left<a href="#section-4.3.3-5.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.3-5.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-5.16">C-Right<a href="#section-4.3.3-5.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.3-6"><strong>Octet 2</strong><a href="#section-4.3.3-6" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.3-7">
+ <dt id="section-4.3.3-7.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-7.2">Analog Stick X-Axis (signed 8-bit number)<a href="#section-4.3.3-7.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.3-8"><strong>Octet 3</strong><a href="#section-4.3.3-8" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.3-9">
+ <dt id="section-4.3.3-9.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.3-9.2">Analog Stick Y-Axis (signed 8-bit number)<a href="#section-4.3.3-9.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-4.3.4">
+ <h4 id="name-n64-standard-controller-with-t">
+<a href="#section-4.3.4" class="section-number selfRef">4.3.4. </a><a href="#name-n64-standard-controller-with-t" class="section-name selfRef">N64 Standard Controller with Transfer Pak</a>
+ </h4>
+<p id="section-4.3.4-1">Single Input Length: 4 Octets<a href="#section-4.3.4-1" class="pilcrow">¶</a></p>
+<p id="section-4.3.4-2"><strong>Octet 0</strong><a href="#section-4.3.4-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.4-3">
+ <dt id="section-4.3.4-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-3.2">A<a href="#section-4.3.4-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-3.4">B<a href="#section-4.3.4-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-3.6">Z<a href="#section-4.3.4-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-3.8">Start<a href="#section-4.3.4-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-3.10">D-Pad Up<a href="#section-4.3.4-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-3.12">D-Pad Down<a href="#section-4.3.4-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-3.14">D-Pad Left<a href="#section-4.3.4-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-3.16">D-Pad Right<a href="#section-4.3.4-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.4-4"><strong>Octet 1</strong><a href="#section-4.3.4-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.4-5">
+ <dt id="section-4.3.4-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-5.2">RST (special controller reset bit)<a href="#section-4.3.4-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-5.4">0<a href="#section-4.3.4-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-5.6">Left Trigger<a href="#section-4.3.4-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-5.8">Right Trigger<a href="#section-4.3.4-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-5.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-5.10">C-Up<a href="#section-4.3.4-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-5.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-5.12">C-Down<a href="#section-4.3.4-5.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-5.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-5.14">C-Left<a href="#section-4.3.4-5.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.4-5.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-5.16">C-Right<a href="#section-4.3.4-5.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.4-6"><strong>Octet 2</strong><a href="#section-4.3.4-6" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.4-7">
+ <dt id="section-4.3.4-7.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-7.2">Analog Stick X-Axis (signed 8-bit number)<a href="#section-4.3.4-7.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.4-8"><strong>Octet 3</strong><a href="#section-4.3.4-8" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.4-9">
+ <dt id="section-4.3.4-9.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.4-9.2">Analog Stick Y-Axis (signed 8-bit number)<a href="#section-4.3.4-9.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-4.3.5">
+ <h4 id="name-n64-mouse-2">
+<a href="#section-4.3.5" class="section-number selfRef">4.3.5. </a><a href="#name-n64-mouse-2" class="section-name selfRef">N64 Mouse</a>
+ </h4>
+<p id="section-4.3.5-1">Single Input Length: 4 Octets<a href="#section-4.3.5-1" class="pilcrow">¶</a></p>
+<p id="section-4.3.5-2"><strong>Octet 0</strong><a href="#section-4.3.5-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.5-3">
+ <dt id="section-4.3.5-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-3.2">A<a href="#section-4.3.5-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-3.4">B<a href="#section-4.3.5-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-3.6">0<a href="#section-4.3.5-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-3.8">0<a href="#section-4.3.5-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-3.10">0<a href="#section-4.3.5-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-3.12">0<a href="#section-4.3.5-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-3.14">0<a href="#section-4.3.5-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-3.16">0<a href="#section-4.3.5-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.5-4"><strong>Octet 1</strong><a href="#section-4.3.5-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.5-5">
+ <dt id="section-4.3.5-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-5.2">0<a href="#section-4.3.5-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-5.4">0<a href="#section-4.3.5-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-5.6">0<a href="#section-4.3.5-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-5.8">0<a href="#section-4.3.5-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-5.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-5.10">0<a href="#section-4.3.5-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-5.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-5.12">0<a href="#section-4.3.5-5.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-5.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-5.14">0<a href="#section-4.3.5-5.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.5-5.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-5.16">0<a href="#section-4.3.5-5.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.5-6"><strong>Octet 2</strong><a href="#section-4.3.5-6" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.5-7">
+ <dt id="section-4.3.5-7.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-7.2">Relative X-Axis position (signed 8-bit number)<a href="#section-4.3.5-7.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.5-8"><strong>Octet 3</strong><a href="#section-4.3.5-8" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.5-9">
+ <dt id="section-4.3.5-9.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.5-9.2">Relative Y-Axis position (signed 8-bit number)<a href="#section-4.3.5-9.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-4.3.6">
+ <h4 id="name-n64-densha-de-go-2">
+<a href="#section-4.3.6" class="section-number selfRef">4.3.6. </a><a href="#name-n64-densha-de-go-2" class="section-name selfRef">N64 Densha de Go</a>
+ </h4>
+<p id="section-4.3.6-1">Single Input Length: 4 Octets<a href="#section-4.3.6-1" class="pilcrow">¶</a></p>
+<p id="section-4.3.6-2"><strong>Octet 0</strong><a href="#section-4.3.6-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.6-3">
+ <dt id="section-4.3.6-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-3.2">A<a href="#section-4.3.6-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-3.4">B<a href="#section-4.3.6-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-3.6">Accelerator<a href="#section-4.3.6-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-3.8">Start<a href="#section-4.3.6-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-3.10">Accelerator<a href="#section-4.3.6-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-3.12">0<a href="#section-4.3.6-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-3.14">0<a href="#section-4.3.6-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-3.16">Accelerator<a href="#section-4.3.6-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.6-4"><strong>Octet 1</strong><a href="#section-4.3.6-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.6-5">
+ <dt id="section-4.3.6-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-5.2">0<a href="#section-4.3.6-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-5.4">0<a href="#section-4.3.6-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-5.6">C<a href="#section-4.3.6-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-5.8">Select<a href="#section-4.3.6-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-5.9">Bits 3-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-5.10">Brake<a href="#section-4.3.6-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.6-6"><strong>Octet 2</strong><a href="#section-4.3.6-6" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.6-7">
+ <dt id="section-4.3.6-7.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-7.2">0<a href="#section-4.3.6-7.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-7.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-7.4">0<a href="#section-4.3.6-7.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-7.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-7.6">0<a href="#section-4.3.6-7.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-7.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-7.8">0<a href="#section-4.3.6-7.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-7.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-7.10">0<a href="#section-4.3.6-7.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-7.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-7.12">0<a href="#section-4.3.6-7.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-7.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-7.14">0<a href="#section-4.3.6-7.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-7.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-7.16">0<a href="#section-4.3.6-7.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.3.6-8"><strong>Octet 3</strong><a href="#section-4.3.6-8" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.3.6-9">
+ <dt id="section-4.3.6-9.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-9.2">0<a href="#section-4.3.6-9.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-9.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-9.4">0<a href="#section-4.3.6-9.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-9.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-9.6">0<a href="#section-4.3.6-9.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-9.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-9.8">0<a href="#section-4.3.6-9.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-9.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-9.10">0<a href="#section-4.3.6-9.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-9.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-9.12">0<a href="#section-4.3.6-9.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-9.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-9.14">0<a href="#section-4.3.6-9.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.3.6-9.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.3.6-9.16">0<a href="#section-4.3.6-9.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</section>
+<section id="section-4.4">
+ <h3 id="name-gamecube-controller-types-2">
+<a href="#section-4.4" class="section-number selfRef">4.4. </a><a href="#name-gamecube-controller-types-2" class="section-name selfRef">GameCube Controller Types</a>
+ </h3>
+<section id="section-4.4.1">
+ <h4 id="name-gamecube-standard-controller">
+<a href="#section-4.4.1" class="section-number selfRef">4.4.1. </a><a href="#name-gamecube-standard-controller" class="section-name selfRef">GameCube Standard Controller</a>
+ </h4>
+<p id="section-4.4.1-1">Single Input Length: 8 Octets<a href="#section-4.4.1-1" class="pilcrow">¶</a></p>
+<p id="section-4.4.1-2"><strong>Octet 0</strong><a href="#section-4.4.1-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.4.1-3">
+ <dt id="section-4.4.1-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-3.2">0<a href="#section-4.4.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-3.4">0<a href="#section-4.4.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-3.6">0<a href="#section-4.4.1-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-3.8">Start<a href="#section-4.4.1-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-3.10">Y<a href="#section-4.4.1-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-3.12">X<a href="#section-4.4.1-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-3.14">B<a href="#section-4.4.1-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-3.16">A<a href="#section-4.4.1-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.4.1-4"><strong>Octet 1</strong><a href="#section-4.4.1-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.4.1-5">
+ <dt id="section-4.4.1-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-5.2">1<a href="#section-4.4.1-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-5.4">L<a href="#section-4.4.1-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-5.6">R<a href="#section-4.4.1-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-5.8">Z<a href="#section-4.4.1-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-5.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-5.10">D-Pad Up<a href="#section-4.4.1-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-5.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-5.12">D-Pad Down<a href="#section-4.4.1-5.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-5.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-5.14">D-Pad Right<a href="#section-4.4.1-5.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.4.1-5.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-5.16">D-Pad Left<a href="#section-4.4.1-5.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.4.1-6"><strong>Octet 2</strong><a href="#section-4.4.1-6" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.4.1-7">
+ <dt id="section-4.4.1-7.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-7.2">Analog Stick X-Axis (signed 8-bit number)<a href="#section-4.4.1-7.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.4.1-8"><strong>Octet 3</strong><a href="#section-4.4.1-8" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.4.1-9">
+ <dt id="section-4.4.1-9.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-9.2">Analog Stick Y-Axis (signed 8-bit number)<a href="#section-4.4.1-9.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.4.1-10"><strong>Octet 4</strong><a href="#section-4.4.1-10" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.4.1-11">
+ <dt id="section-4.4.1-11.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-11.2">C-Stick X-Axis (signed 8-bit number)<a href="#section-4.4.1-11.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.4.1-12"><strong>Octet 5</strong><a href="#section-4.4.1-12" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.4.1-13">
+ <dt id="section-4.4.1-13.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-13.2">C-Stick Y-Axis (signed 8-bit number)<a href="#section-4.4.1-13.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.4.1-14"><strong>Octet 6</strong><a href="#section-4.4.1-14" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.4.1-15">
+ <dt id="section-4.4.1-15.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-15.2">L Analog Value (unsigned 8-bit number)<a href="#section-4.4.1-15.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.4.1-16"><strong>Octet 7</strong><a href="#section-4.4.1-16" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.4.1-17">
+ <dt id="section-4.4.1-17.1">Bits 7-0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.4.1-17.2">R Analog Value (unsigned 8-bit number)<a href="#section-4.4.1-17.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</section>
+<section id="section-4.5">
+ <h3 id="name-game-boy-controller-types-2">
+<a href="#section-4.5" class="section-number selfRef">4.5. </a><a href="#name-game-boy-controller-types-2" class="section-name selfRef">Game Boy Controller Types</a>
+ </h3>
+<section id="section-4.5.1">
+ <h4 id="name-gb-standard-controller-2">
+<a href="#section-4.5.1" class="section-number selfRef">4.5.1. </a><a href="#name-gb-standard-controller-2" class="section-name selfRef">GB Standard Controller</a>
+ </h4>
+<p id="section-4.5.1-1">Single Input Length: 1 Octet<a href="#section-4.5.1-1" class="pilcrow">¶</a></p>
+<p id="section-4.5.1-2"><strong>Octet 0</strong><a href="#section-4.5.1-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.5.1-3">
+ <dt id="section-4.5.1-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.5.1-3.2">/Down<a href="#section-4.5.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.5.1-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.5.1-3.4">/Up<a href="#section-4.5.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.5.1-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.5.1-3.6">/Left<a href="#section-4.5.1-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.5.1-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.5.1-3.8">/Right<a href="#section-4.5.1-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.5.1-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.5.1-3.10">/Start<a href="#section-4.5.1-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.5.1-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.5.1-3.12">/Select<a href="#section-4.5.1-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.5.1-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.5.1-3.14">/B<a href="#section-4.5.1-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.5.1-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.5.1-3.16">/A<a href="#section-4.5.1-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</section>
+<section id="section-4.6">
+ <h3 id="name-game-boy-color-controller-ty">
+<a href="#section-4.6" class="section-number selfRef">4.6. </a><a href="#name-game-boy-color-controller-ty" class="section-name selfRef">Game Boy Color Controller Types</a>
+ </h3>
+<section id="section-4.6.1">
+ <h4 id="name-gbc-standard-controller-2">
+<a href="#section-4.6.1" class="section-number selfRef">4.6.1. </a><a href="#name-gbc-standard-controller-2" class="section-name selfRef">GBC Standard Controller</a>
+ </h4>
+<p id="section-4.6.1-1">Single Input Length: 1 Octet<a href="#section-4.6.1-1" class="pilcrow">¶</a></p>
+<p id="section-4.6.1-2"><strong>Octet 0</strong><a href="#section-4.6.1-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.6.1-3">
+ <dt id="section-4.6.1-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.6.1-3.2">/Down<a href="#section-4.6.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.6.1-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.6.1-3.4">/Up<a href="#section-4.6.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.6.1-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.6.1-3.6">/Left<a href="#section-4.6.1-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.6.1-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.6.1-3.8">/Right<a href="#section-4.6.1-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.6.1-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.6.1-3.10">/Start<a href="#section-4.6.1-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.6.1-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.6.1-3.12">/Select<a href="#section-4.6.1-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.6.1-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.6.1-3.14">/B<a href="#section-4.6.1-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.6.1-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.6.1-3.16">/A<a href="#section-4.6.1-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</section>
+<section id="section-4.7">
+ <h3 id="name-game-boy-advance-controller-">
+<a href="#section-4.7" class="section-number selfRef">4.7. </a><a href="#name-game-boy-advance-controller-" class="section-name selfRef">Game Boy Advance Controller Types</a>
+ </h3>
+<section id="section-4.7.1">
+ <h4 id="name-gba-standard-controller-2">
+<a href="#section-4.7.1" class="section-number selfRef">4.7.1. </a><a href="#name-gba-standard-controller-2" class="section-name selfRef">GBA Standard Controller</a>
+ </h4>
+<p id="section-4.7.1-1">Single Input Length: 2 Octets<a href="#section-4.7.1-1" class="pilcrow">¶</a></p>
+<p id="section-4.7.1-2"><strong>Octet 0</strong><a href="#section-4.7.1-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.7.1-3">
+ <dt id="section-4.7.1-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-3.2">1<a href="#section-4.7.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-3.4">1<a href="#section-4.7.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-3.6">1<a href="#section-4.7.1-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-3.8">1<a href="#section-4.7.1-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-3.10">1<a href="#section-4.7.1-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-3.12">1<a href="#section-4.7.1-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-3.14">/L<a href="#section-4.7.1-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-3.16">/R<a href="#section-4.7.1-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.7.1-4"><strong>Octet 1</strong><a href="#section-4.7.1-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.7.1-5">
+ <dt id="section-4.7.1-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-5.2">/Down<a href="#section-4.7.1-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-5.4">/Up<a href="#section-4.7.1-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-5.6">/Left<a href="#section-4.7.1-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-5.8">/Right<a href="#section-4.7.1-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-5.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-5.10">/Start<a href="#section-4.7.1-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-5.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-5.12">/Select<a href="#section-4.7.1-5.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-5.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-5.14">/B<a href="#section-4.7.1-5.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.7.1-5.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.7.1-5.16">/A<a href="#section-4.7.1-5.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</section>
+<section id="section-4.8">
+ <h3 id="name-genesis-controller-types-2">
+<a href="#section-4.8" class="section-number selfRef">4.8. </a><a href="#name-genesis-controller-types-2" class="section-name selfRef">Genesis Controller Types</a>
+ </h3>
+<section id="section-4.8.1">
+ <h4 id="name-genesis-mega-drive-3-button-2">
+<a href="#section-4.8.1" class="section-number selfRef">4.8.1. </a><a href="#name-genesis-mega-drive-3-button-2" class="section-name selfRef">Genesis (Mega Drive) 3-Button</a>
+ </h4>
+<p id="section-4.8.1-1">Single Input Length: 1 Octet<a href="#section-4.8.1-1" class="pilcrow">¶</a></p>
+<p id="section-4.8.1-2"><strong>Octet 0</strong><a href="#section-4.8.1-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.8.1-3">
+ <dt id="section-4.8.1-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.1-3.2">/A<a href="#section-4.8.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.1-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.1-3.4">/Start<a href="#section-4.8.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.1-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.1-3.6">/Up<a href="#section-4.8.1-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.1-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.1-3.8">/Down<a href="#section-4.8.1-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.1-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.1-3.10">/Left<a href="#section-4.8.1-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.1-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.1-3.12">/Right<a href="#section-4.8.1-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.1-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.1-3.14">/B<a href="#section-4.8.1-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.1-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.1-3.16">/C<a href="#section-4.8.1-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-4.8.2">
+ <h4 id="name-genesis-mega-drive-6-button-2">
+<a href="#section-4.8.2" class="section-number selfRef">4.8.2. </a><a href="#name-genesis-mega-drive-6-button-2" class="section-name selfRef">Genesis (Mega Drive) 6-Button</a>
+ </h4>
+<p id="section-4.8.2-1">Single Input Length: 2 Octets<a href="#section-4.8.2-1" class="pilcrow">¶</a></p>
+<p id="section-4.8.2-2"><strong>Octet 0</strong><a href="#section-4.8.2-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.8.2-3">
+ <dt id="section-4.8.2-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-3.2">/A<a href="#section-4.8.2-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-3.4">/Start<a href="#section-4.8.2-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-3.6">/Up<a href="#section-4.8.2-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-3.8">/Down<a href="#section-4.8.2-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-3.10">/Left<a href="#section-4.8.2-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-3.12">/Right<a href="#section-4.8.2-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-3.14">/B<a href="#section-4.8.2-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-3.16">/C<a href="#section-4.8.2-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+<p id="section-4.8.2-4"><strong>Octet 1</strong><a href="#section-4.8.2-4" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.8.2-5">
+ <dt id="section-4.8.2-5.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-5.2">/Z<a href="#section-4.8.2-5.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-5.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-5.4">/Y<a href="#section-4.8.2-5.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-5.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-5.6">/X<a href="#section-4.8.2-5.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-5.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-5.8">/Mode<a href="#section-4.8.2-5.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-5.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-5.10">1<a href="#section-4.8.2-5.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-5.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-5.12">1<a href="#section-4.8.2-5.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-5.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-5.14">1<a href="#section-4.8.2-5.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.8.2-5.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.8.2-5.16">1<a href="#section-4.8.2-5.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</section>
+<section id="section-4.9">
+ <h3 id="name-atari-2600-controller-types-2">
+<a href="#section-4.9" class="section-number selfRef">4.9. </a><a href="#name-atari-2600-controller-types-2" class="section-name selfRef">Atari 2600 Controller Types</a>
+ </h3>
+<section id="section-4.9.1">
+ <h4 id="name-a2600-joystick-2">
+<a href="#section-4.9.1" class="section-number selfRef">4.9.1. </a><a href="#name-a2600-joystick-2" class="section-name selfRef">A2600 Joystick</a>
+ </h4>
+<p id="section-4.9.1-1">Single Input Length: 1 Octet<a href="#section-4.9.1-1" class="pilcrow">¶</a></p>
+<p id="section-4.9.1-2"><strong>Octet 0</strong><a href="#section-4.9.1-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.9.1-3">
+ <dt id="section-4.9.1-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.1-3.2">/Up<a href="#section-4.9.1-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.1-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.1-3.4">/Down<a href="#section-4.9.1-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.1-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.1-3.6">/Left<a href="#section-4.9.1-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.1-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.1-3.8">/Right<a href="#section-4.9.1-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.1-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.1-3.10">1<a href="#section-4.9.1-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.1-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.1-3.12">/Button<a href="#section-4.9.1-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.1-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.1-3.14">1<a href="#section-4.9.1-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.1-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.1-3.16">1<a href="#section-4.9.1-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+<section id="section-4.9.2">
+ <h4 id="name-a2600-keyboard-controller-2">
+<a href="#section-4.9.2" class="section-number selfRef">4.9.2. </a><a href="#name-a2600-keyboard-controller-2" class="section-name selfRef">A2600 Keyboard Controller</a>
+ </h4>
+<p id="section-4.9.2-1">Single Input Length: 1 Octet<a href="#section-4.9.2-1" class="pilcrow">¶</a></p>
+<p id="section-4.9.2-2"><strong>Octet 0</strong><a href="#section-4.9.2-2" class="pilcrow">¶</a></p>
+<span class="break"></span><dl class="dlCompact dlParallel" id="section-4.9.2-3">
+ <dt id="section-4.9.2-3.1">Bit 7:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.2-3.2">/Row1 (key 1, 2, or 3 pressed)<a href="#section-4.9.2-3.2" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.2-3.3">Bit 6:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.2-3.4">/Row2 (key 4, 5, or 6 pressed)<a href="#section-4.9.2-3.4" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.2-3.5">Bit 5:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.2-3.6">/Row3 (key 7, 8, or 9 pressed)<a href="#section-4.9.2-3.6" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.2-3.7">Bit 4:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.2-3.8">/Row4 (key *, 0, or # pressed)<a href="#section-4.9.2-3.8" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.2-3.9">Bit 3:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.2-3.10">/Column1 (key 1, 4, 7, or * pressed)<a href="#section-4.9.2-3.10" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.2-3.11">Bit 2:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.2-3.12">/Column3 (key 3, 6, 9, or # pressed)<a href="#section-4.9.2-3.12" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.2-3.13">Bit 1:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.2-3.14">/Column2 (key 2, 5, 8, or 0 pressed)<a href="#section-4.9.2-3.14" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+<dt id="section-4.9.2-3.15">Bit 0:</dt>
+ <dd style="margin-left: 1.5em" id="section-4.9.2-3.16">1<a href="#section-4.9.2-3.16" class="pilcrow">¶</a>
+</dd>
+ <dd class="break"></dd>
+</dl>
+</section>
+</section>
+</section>
+</div>
+<section id="section-5">
+ <h2 id="name-references-2">
+<a href="#section-5" class="section-number selfRef">5. </a><a href="#name-references-2" class="section-name selfRef">References</a>
+ </h2>
+<section id="section-5.1">
+ <h3 id="name-normative-references-2">
+<a href="#section-5.1" class="section-number selfRef">5.1. </a><a href="#name-normative-references-2" class="section-name selfRef">Normative References</a>
+ </h3>
+<dl class="references">
+<dt id="RFC2119">[RFC2119]</dt>
+ <dd>
+<span class="refAuthor">Bradner, S.</span>, <span class="refTitle">"Key words for use in RFCs to Indicate Requirement Levels"</span>, <span class="seriesInfo">BCP 14</span>, <span class="seriesInfo">RFC 2119</span>, <span class="seriesInfo">DOI 10.17487/RFC2119</span>, <time datetime="1997-03" class="refDate">March 1997</time>, <span>&lt;<a href="https://www.rfc-editor.org/info/rfc2119">https://www.rfc-editor.org/info/rfc2119</a>&gt;</span>. </dd>
+<dd class="break"></dd>
+<dt id="RFC8174">[RFC8174]</dt>
+ <dd>
+<span class="refAuthor">Leiba, B.</span>, <span class="refTitle">"Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words"</span>, <span class="seriesInfo">BCP 14</span>, <span class="seriesInfo">RFC 8174</span>, <span class="seriesInfo">DOI 10.17487/RFC8174</span>, <time datetime="2017-05" class="refDate">May 2017</time>, <span>&lt;<a href="https://www.rfc-editor.org/info/rfc8174">https://www.rfc-editor.org/info/rfc8174</a>&gt;</span>. </dd>
+<dd class="break"></dd>
+</dl>
+</section>
+</section>
+<section id="appendix-A">
+ <h2 id="name-copyright-notice-2">
+<a href="#name-copyright-notice-2" class="section-name selfRef">Copyright Notice</a>
+ </h2>
+<p id="appendix-A-1">Copyright (c) 2021-2022, Vi Grey and Bigbass<a href="#appendix-A-1" class="pilcrow">¶</a></p>
+<p id="appendix-A-2">All rights reserved.<a href="#appendix-A-2" class="pilcrow">¶</a></p>
+<p id="appendix-A-3">Redistribution and use of this documentation in source (XML format) and/or "compiled" forms (TXT, PDF, HTML, etc), with or without modification, are permitted provided that the following conditions are met:<a href="#appendix-A-3" class="pilcrow">¶</a></p>
+<ol start="1" type="1" class="normal type-1" id="appendix-A-4">
+ <li id="appendix-A-4.1">Redistributions of source code (XML format) of this documentation must retain the above copyright notice, this list of conditions, and the following disclaimer in the documentation.<a href="#appendix-A-4.1" class="pilcrow">¶</a>
+</li>
+ <li id="appendix-A-4.2">Redistributions in compiled form (Converted to TXT, PDF, HTML, and other formats) of this documentation must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation.<a href="#appendix-A-4.2" class="pilcrow">¶</a>
+</li>
+ </ol>
+<p id="appendix-A-5">THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR(S) "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.<a href="#appendix-A-5" class="pilcrow">¶</a></p>
+</section>
+<div id="authors-addresses">
+<section id="appendix-B">
+ <h2 id="name-authors-addresses-2">
+<a href="#name-authors-addresses-2" class="section-name selfRef">Authors' Addresses</a>
+ </h2>
+<address class="vcard">
+ <div dir="auto" class="left"><span class="fn nameRole">Vi Grey</span></div>
+<div dir="auto" class="left"><span class="org">VG Interactive</span></div>
+<div class="email">
+<span>Email:</span>
+<a href="mailto:vi@vigrey.com" class="email">vi@vigrey.com</a>
+</div>
+<div class="url">
+<span>URI:</span>
+<a href="https://vigrey.com" class="url">https://vigrey.com</a>
+</div>
+</address>
+<address class="vcard">
+ <div dir="auto" class="left"><span class="fn nameRole">Bigbass</span></div>
+<div class="url">
+<span>URI:</span>
+<a href="https://github.com/bigbass1997" class="url">https://github.com/bigbass1997</a>
+</div>
+</address>
+</section>
+</div>
+<script>const toc = document.getElementById("toc");
+toc.querySelector("h2").addEventListener("click", e => {
+ toc.classList.toggle("active");
+});
+toc.querySelector("nav").addEventListener("click", e => {
+ toc.classList.remove("active");
+});
+</script>
+</body>
+</html>