419 lines
42 KiB
HTML
419 lines
42 KiB
HTML
|
|
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8" />
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
<meta name="generator" content="HelpNDoc Personal Edition 7.0.0.199">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<link rel="icon" href="favicon.ico"/>
|
|
|
|
<title>Savestate (.fcs)</title>
|
|
<meta name="description" content="" />
|
|
<meta name="keywords" content="">
|
|
|
|
|
|
|
|
|
|
|
|
<!-- Twitter Card data -->
|
|
<meta name="twitter:card" content="summary">
|
|
<meta name="twitter:title" content="Savestate (.fcs)">
|
|
<meta name="twitter:description" content="">
|
|
|
|
<!-- Open Graph data -->
|
|
<meta property="og:title" content="Savestate (.fcs)" />
|
|
<meta property="og:type" content="article" />
|
|
<meta property="og:description" content="" />
|
|
<meta property="og:site_name" content="FCEUX Help" />
|
|
|
|
<!-- Bootstrap core CSS -->
|
|
<link href="vendors/bootstrap-3.4.1/css/bootstrap.min.css" rel="stylesheet"/>
|
|
|
|
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
|
|
<link href="vendors/bootstrap-3.4.1/css/ie10-viewport-bug-workaround.css" rel="stylesheet"/>
|
|
|
|
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
|
|
<!--[if lt IE 9]>
|
|
<script src="vendors/html5shiv-3.7.3/html5shiv.min.js"></script>
|
|
<script src="vendors/respond-1.4.2/respond.min.js"></script>
|
|
<![endif]-->
|
|
|
|
<!-- JsTree styles -->
|
|
<link href="vendors/jstree-3.3.10/themes/default/style.min.css" rel="stylesheet"/>
|
|
|
|
<!-- Hnd styles -->
|
|
<link href="css/layout.min.css" rel="stylesheet" />
|
|
<link href="css/effects.min.css" rel="stylesheet" />
|
|
<link href="css/theme-light-blue.min.css" rel="stylesheet" />
|
|
<link href="css/print.min.css" rel="stylesheet" media="print" />
|
|
<style type="text/css">nav { width: 250px} @media screen and (min-width:769px) { body.md-nav-expanded div#main { margin-left: 250px} body.md-nav-expanded header { padding-left: 264px} }</style>
|
|
|
|
<!-- Content style -->
|
|
<link href="css/hnd.content.css" rel="stylesheet" />
|
|
|
|
|
|
|
|
|
|
|
|
</head>
|
|
|
|
<body class="md-nav-expanded">
|
|
|
|
|
|
|
|
<div id="skip-link">
|
|
<a href="#main-content" class="element-invisible">Skip to main content</a>
|
|
</div>
|
|
|
|
<header class="headroom">
|
|
<button class="hnd-toggle btn btn-default">
|
|
<span class="sr-only">Toggle navigation</span>
|
|
<span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>
|
|
</button>
|
|
<h1>FCEUX Help</h1>
|
|
|
|
</header>
|
|
|
|
<nav id="panel-left" class="md-nav-expanded">
|
|
<!-- Nav tabs -->
|
|
<ul class="tab-tabs nav nav-tabs" role="tablist">
|
|
<li id="nav-close">
|
|
<button class="hnd-toggle btn btn-default">
|
|
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
|
|
</button>
|
|
</li>
|
|
|
|
|
|
<li role="presentation" class="tab active">
|
|
<a href="#contents" id="tab-contents" aria-controls="contents" role="tab" data-toggle="tab">
|
|
<i class="glyphicon glyphicon-list"></i>
|
|
Contents
|
|
</a>
|
|
</li>
|
|
|
|
<li role="presentation" class="tab">
|
|
<a href="#index" id="tab-index" aria-controls="index" role="tab" data-toggle="tab">
|
|
<i class="glyphicon glyphicon-asterisk"></i>
|
|
Index
|
|
</a>
|
|
</li>
|
|
|
|
<li role="presentation" class="tab">
|
|
<a href="#search" id="tab-search" aria-controls="search" role="tab" data-toggle="tab">
|
|
<i class="glyphicon glyphicon-search"></i>
|
|
Search
|
|
</a>
|
|
</li>
|
|
|
|
</ul> <!-- /Nav tabs -->
|
|
|
|
<!-- Tab panes -->
|
|
<div class="tab-content">
|
|
|
|
<div role="tabpanel" class="tab-pane active" id="contents">
|
|
<div id="toc" class="tree-container unselectable"
|
|
data-url="_toc.json"
|
|
data-openlvl="1"
|
|
>
|
|
|
|
</div>
|
|
</div> <!-- /contents-->
|
|
|
|
<div role="tabpanel" class="tab-pane" id="index">
|
|
<div id="keywords" class="tree-container unselectable"
|
|
data-url="_keywords.json"
|
|
data-openlvl="1"
|
|
>
|
|
|
|
</div>
|
|
</div> <!-- /index-->
|
|
|
|
<div role="tabpanel" class="tab-pane" id="search">
|
|
<div class="search-content">
|
|
<div class="search-input">
|
|
<form id="search-form">
|
|
<div class="form-group">
|
|
<div class="input-group">
|
|
<input type="text" class="form-control" id="input-search" name="input-search" placeholder="Search..." />
|
|
<span class="input-group-btn">
|
|
<button class="btn btn-default" type="submit">
|
|
<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
|
|
</button>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div> <!-- /search-input -->
|
|
<div class="search-result">
|
|
<div id="search-info"></div>
|
|
<div class="tree-container unselectable" id="search-tree"></div>
|
|
</div> <!-- /search-result -->
|
|
</div> <!-- /search-content -->
|
|
</div> <!-- /search-->
|
|
|
|
</div> <!-- /Tab panes -->
|
|
|
|
</nav>
|
|
|
|
<div id="main">
|
|
|
|
<article>
|
|
<div id="topic-content" class="container-fluid"
|
|
data-hnd-id="fcs"
|
|
data-hnd-context="27"
|
|
data-hnd-title="Savestate (.fcs)"
|
|
>
|
|
|
|
<div class="navigation">
|
|
<ol class="breadcrumb">
|
|
<li><a href="Technicalinformation.html">Technical Information</a></li><li><a href="Movieformats.html">Movie & Savestate formats</a></li>
|
|
</ol>
|
|
<div class="nav-arrows">
|
|
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Movieformats.html" title="Movie & Savestate formats" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="fcm.html" title=".fcm" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Sound.html" title="Sound" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<a id="main-content"></a>
|
|
|
|
<h2>Savestate (.fcs)</h2>
|
|
|
|
<div class="main-content">
|
|
|
|
<p></p>
|
|
<p class="rvps2"><span class="rvts6">FCE Ultra Save State Format</span></p>
|
|
<p class="rvps2"><span class="rvts6"> Updated: Mar 9, 2003</span></p>
|
|
<p class="rvps2"><span class="rvts6">---------------------------------------</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">FCE Ultra's save state format is now designed to be as forward and backwards</span></p>
|
|
<p class="rvps2"><span class="rvts6">compatible as possible. This is achieved through the (over)use of chunks.</span></p>
|
|
<p class="rvps2"><span class="rvts6">All multiple-byte variables are stored LSB(least significant byte)-first.</span></p>
|
|
<p class="rvps2"><span class="rvts6">Data types:</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">(u)int8 - (un)signed 8 bit variable(also referred to as "byte")</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">(u)int16 - (un)signed 16 bit variable</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">(u)int32 - (un)signed 32 bit variable</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">-- Main File Header:</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">The main file header is 16-bytes in length. The first three bytes contain</span></p>
|
|
<p class="rvps2"><span class="rvts6">the string "FCS". The next byte contains the version of FCE Ultra that saved</span></p>
|
|
<p class="rvps2"><span class="rvts6">this save state. This document only applies to version "53"(.53) and higher.</span></p>
|
|
<p class="rvps2"><span class="rvts6">After the version byte, the size of the entire file in bytes(minus the 16 byte</span></p>
|
|
<p class="rvps2"><span class="rvts6">main file header) is stored. If oldversion is set to 255, the 32-bit version</span></p>
|
|
<p class="rvps2"><span class="rvts6">field will be used. In this field, a version such as 0.98.10 is stored as "9810"(decimal).</span></p>
|
|
<p class="rvps2"><span class="rvts6">The rest of the header is currently unused and should be nulled out. </span></p>
|
|
<p class="rvps2"><span class="rvts6">Example of relevant parts:</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">FCS <uint8 oldversion> <uint32 totalsize> <uint32 version></span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">-- Section Chunks:</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">Sections chunk headers are 5-bytes in length. The first byte defines what </span></p>
|
|
<p class="rvps2"><span class="rvts6">section it is, the next four bytes define the total size of the section</span></p>
|
|
<p class="rvps2"><span class="rvts6">(including the section chunk header).</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"><uint8 section> <uint32 size></span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">Section definitions:</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">1</span><span class="rvts6"> </span><span class="rvts6">-</span><span class="rvts6"> </span><span class="rvts6">"CPU"</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">2</span><span class="rvts6"> </span><span class="rvts6">-</span><span class="rvts6"> </span><span class="rvts6">"CPUC"</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">3</span><span class="rvts6"> </span><span class="rvts6">-</span><span class="rvts6"> </span><span class="rvts6">"PPU"</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">4</span><span class="rvts6"> </span><span class="rvts6">-</span><span class="rvts6"> </span><span class="rvts6">"CTLR"</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">5</span><span class="rvts6"> </span><span class="rvts6">-</span><span class="rvts6"> </span><span class="rvts6">"SND"</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">16</span><span class="rvts6"> </span><span class="rvts6">-</span><span class="rvts6"> </span><span class="rvts6">"EXTRA"</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">-- Subsection Chunks</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">Subsection chunks are stored within section chunks. They contain the actual</span></p>
|
|
<p class="rvps2"><span class="rvts6">state data. Each subsection chunk is composed of an 8-byte header and the data.</span></p>
|
|
<p class="rvps2"><span class="rvts6">The header contains a description(a name) and the size of the data contained </span></p>
|
|
<p class="rvps2"><span class="rvts6">in the chunk:</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"><uint8 description[4]> <uint32 size></span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">The name is a four-byte string. It does not need to be null-terminated.</span></p>
|
|
<p class="rvps2"><span class="rvts6">If the string is less than four bytes in length, the remaining unused bytes</span></p>
|
|
<p class="rvps2"><span class="rvts6">must be null.</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">-- Subsection Chunk Description Definitions</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">Note that not all subsection chunk description definitions listed below</span></p>
|
|
<p class="rvps2"><span class="rvts6">are guaranteed to be in the section chunk. It's just a list of what CAN</span></p>
|
|
<p class="rvps2"><span class="rvts6">be in a section chunk. This especially applies to the "EXTRA" subsection.</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">---- Section "CPU"</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"> </span><span class="rvts6">Name:</span><span class="rvts6"> </span><span class="rvts6">Type:</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">Description:</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">PC</span><span class="rvts6"> </span><span class="rvts6">uint16</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Program Counter</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">A</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Accumulator</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">P</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Processor status register</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">X</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">X register</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Y</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Y register</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">S</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Stack pointer</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">RAM</span><span class="rvts6"> </span><span class="rvts6">uint8[0x800]</span><span class="rvts6"> </span><span class="rvts6">2KB work RAM</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">---- Section "CPUC" (emulator specific)</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"> </span><span class="rvts6">Name:</span><span class="rvts6"> </span><span class="rvts6">Type:</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">Description:</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">JAMM</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Non-zero value if CPU in a "jammed" state</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">IRQL</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Non-zero value if IRQs are to be generated constantly</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">ICoa</span><span class="rvts6"> </span><span class="rvts6">int32</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Temporary cycle counter</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">ICou</span><span class="rvts6"> </span><span class="rvts6">int32</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Cycle counter</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">---- Section "PPU"</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"> </span><span class="rvts6">Name:</span><span class="rvts6"> </span><span class="rvts6">Type:</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">Description:</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">NTAR</span><span class="rvts6"> </span><span class="rvts6">uint8[0x800]</span><span class="rvts6"> </span><span class="rvts6">2 KB of name/attribute table RAM</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">PRAM</span><span class="rvts6"> </span><span class="rvts6">uint8[32]</span><span class="rvts6"> </span><span class="rvts6">32 bytes of palette index RAM</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">SPRA</span><span class="rvts6"> </span><span class="rvts6">uint8[0x100]</span><span class="rvts6"> </span><span class="rvts6">256 bytes of sprite RAM</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">PPU</span><span class="rvts6"> </span><span class="rvts6">uint8[4]</span><span class="rvts6"> </span><span class="rvts6">Last values written to $2000 and $2001, the PPU</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">status register, and the last value written to</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">$2003.</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">XOFF</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Tile X-offset.</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">VTOG</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Toggle used by $2005 and $2006.</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">RADD</span><span class="rvts6"> </span><span class="rvts6">uint16</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">PPU Address Register(address written to/read from</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">when $2007 is accessed).</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">TADD</span><span class="rvts6"> </span><span class="rvts6">uint16</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">PPU Address Register</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">VBUF</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">VRAM Read Buffer</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">PGEN</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">PPU "general" latch. See Ki's document.</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">---- Section "CTLR" (somewhat emulator specific)</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"> </span><span class="rvts6">Name:</span><span class="rvts6"> </span><span class="rvts6">Type:</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">Description:</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">J1RB</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Bit to be returned when first joystick is read.</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">J2RB</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Bit to be returned when second joystick is read.</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">---- Section "SND" (somewhat emulator specific)</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">NREG</span><span class="rvts6"> </span><span class="rvts6">uint16</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Noise LFSR.</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">P17</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Last byte written to $4017.</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">PBIN</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">DMC bit index.</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">PAIN</span><span class="rvts6"> </span><span class="rvts6">uint32</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">DMC address index(from $8000).</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">PSIN</span><span class="rvts6"> </span><span class="rvts6">uint32</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">DMC length counter(how many bytes left </span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">to fetch).</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"><to be finished></span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6">---- Section "EXTRA" (varying emulator specificness)</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">For iNES-format games(incomplete, and doesn't apply to every game):</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"> </span><span class="rvts6">Name:</span><span class="rvts6"> </span><span class="rvts6">Type:</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">Description:</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">WRAM</span><span class="rvts6"> </span><span class="rvts6">uint8[0x2000]</span><span class="rvts6"> </span><span class="rvts6">8KB of WRAM at $6000-$7fff</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">MEXR</span><span class="rvts6"> </span><span class="rvts6">uint8[0x8000]</span><span class="rvts6"> </span><span class="rvts6">(very emulator specific)</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">CHRR</span><span class="rvts6"> </span><span class="rvts6">uint8[0x2000]</span><span class="rvts6"> </span><span class="rvts6">8KB of CHR RAM at $0000-$1fff(in PPU address space).</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">EXNR</span><span class="rvts6"> </span><span class="rvts6">uint8[0x800] </span><span class="rvts6"> </span><span class="rvts6">Extra 2KB of name/attribute table RAM.</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">MPBY</span><span class="rvts6"> </span><span class="rvts6">uint8[32]</span><span class="rvts6"> </span><span class="rvts6">(very emulator specific)</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">MIRR</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Current mirroring:</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">0 = "Horizontal"</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">1 = "Vertical"</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">$10 = Mirror from $2000</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">$11 = Mirror from $2400</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">IRQC</span><span class="rvts6"> </span><span class="rvts6">uint32</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Generic IRQ counter</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">IQL1</span><span class="rvts6"> </span><span class="rvts6">uint32</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Generic IRQ latch</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">IQL2</span><span class="rvts6"> </span><span class="rvts6">uint32</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Generic IRQ latch</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">IRQA</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">Generic IRQ on/off register.</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">PBL</span><span class="rvts6"> </span><span class="rvts6">uint8[4]</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">List of 4 8KB ROM banks paged in at $8000-$FFFF</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">CBL</span><span class="rvts6"> </span><span class="rvts6">uint8[8]</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">List of 8 1KB VROM banks page in at $0000-$1FFF(PPU).</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">For FDS games(incomplete):</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"> </span><span class="rvts6">Name:</span><span class="rvts6"> </span><span class="rvts6">Type:</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">Description:</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"> </span><span class="rvts6">DDT<x> uint8[65500] Disk data for side x(0-3).</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">FDSR</span><span class="rvts6"> </span><span class="rvts6">uint8[0x8000]</span><span class="rvts6"> </span><span class="rvts6">32 KB of work RAM</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">CHRR</span><span class="rvts6"> </span><span class="rvts6">uint8[0x2000]</span><span class="rvts6"> </span><span class="rvts6">8 KB of CHR RAM</span></p>
|
|
<p class="rvps2"><span class="rvts6"> </span><span class="rvts6">IRQC</span><span class="rvts6"> </span><span class="rvts6">uint32</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">IRQ counter</span></p>
|
|
<p class="rvps2"><span class="rvts6"> </span><span class="rvts6">IQL1</span><span class="rvts6"> </span><span class="rvts6">uint32</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">IRQ latch</span></p>
|
|
<p class="rvps2"><span class="rvts6"> </span><span class="rvts6">IRQA</span><span class="rvts6"> </span><span class="rvts6">uint8</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">IRQ on/off.</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">WAVE</span><span class="rvts6"> </span><span class="rvts6">uint8[64]</span><span class="rvts6"> </span><span class="rvts6">Carrier waveform data.</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">MWAV</span><span class="rvts6"> </span><span class="rvts6">uint8[32]</span><span class="rvts6"> </span><span class="rvts6">Modulator waveform data.</span></p>
|
|
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> </span><span class="rvts6">AMPL</span><span class="rvts6"> </span><span class="rvts6">uint8[2]</span><span class="rvts6"> </span><span class="rvts6"> </span><span class="rvts6">Amplitude data.</span></p>
|
|
<p class="rvps2"><span class="rvts6"><br/></span></p>
|
|
<p></p>
|
|
<p class="rvps4" style="clear: both;"><span class="rvts18">Created with the Personal Edition of HelpNDoc: </span><a class="rvts19" href="https://www.helpauthoringsoftware.com">Benefits of a Help Authoring Tool</a></p>
|
|
|
|
</div>
|
|
|
|
<div id="topic_footer"><div id="topic_footer_content">2020</div></div>
|
|
</div> <!-- /#topic-content -->
|
|
</article>
|
|
|
|
<footer></footer>
|
|
|
|
</div> <!-- /#main -->
|
|
|
|
<div class="mask" data-toggle="sm-nav-expanded"></div>
|
|
|
|
<!-- Modal -->
|
|
<div class="modal fade" id="hndModal" tabindex="-1" role="dialog" aria-labelledby="hndModalLabel">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
|
<h4 class="modal-title" id="hndModalLabel"></h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-primary modal-btn-close" data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Splitter -->
|
|
<div id="hnd-splitter" style="left: 250px"></div>
|
|
|
|
<!-- Scripts -->
|
|
<script src="vendors/jquery-3.5.1/jquery.min.js"></script>
|
|
<script src="vendors/bootstrap-3.4.1/js/bootstrap.min.js"></script>
|
|
<script src="vendors/bootstrap-3.4.1/js/ie10-viewport-bug-workaround.js"></script>
|
|
<script src="vendors/markjs-8.11.1/jquery.mark.min.js"></script>
|
|
<script src="vendors/uri-1.19.2/uri.min.js"></script>
|
|
<script src="vendors/imageMapResizer-1.0.10/imageMapResizer.min.js"></script>
|
|
<script src="vendors/headroom-0.11.0/headroom.min.js"></script>
|
|
<script src="vendors/jstree-3.3.10/jstree.min.js"></script>
|
|
<script src="vendors/interactjs-1.9.22/interact.min.js"></script>
|
|
|
|
<!-- HelpNDoc scripts -->
|
|
<script src="js/polyfill.object.min.js"></script>
|
|
<script src="_translations.js"></script>
|
|
<script src="js/hndsd.min.js"></script>
|
|
<script src="js/hndse.min.js"></script>
|
|
<script src="js/app.min.js"></script>
|
|
|
|
<!-- Init script -->
|
|
<script>
|
|
$(function() {
|
|
// Create the app
|
|
var app = new Hnd.App();
|
|
// Update translations
|
|
hnd_ut(app);
|
|
// Instanciate imageMapResizer
|
|
imageMapResize();
|
|
// Custom JS
|
|
|
|
// Boot the app
|
|
app.Boot();
|
|
});
|
|
</script>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|