Regeneration of help files using helpndoc 7.0.0.199

This commit is contained in:
Matt Budd 2020-12-16 06:41:37 -05:00
parent 39094c0194
commit f852fd2799
210 changed files with 32681 additions and 14537 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,94 +1,285 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>AVI Capturing</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("AVICapturing");
}
});
</script>
<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>AVI Capturing</title>
<meta name="description" content="" />
<meta name="keywords" content="Capturing a Movie File">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="AVI Capturing">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="AVI Capturing" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>AVI Capturing</h1>
<div id="topic_breadcrumb">
<a href="General.html">General</a> &rsaquo;&rsaquo; <a href="FamicomDiskSystem.html">Famicom Disk System</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="FamicomDiskSystem.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="FamicomDiskSystem.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="MovieRecording.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Video &amp; Audio Capturing</span></p>
<p><span class="rvts16"><br/></span></p>
<p><span class="rvts16">Introduction</span></p>
<p><br/></p>
<p>FCEU allows for outputting Video/Audio into .avi files or capturing audio only into .wav files. &nbsp;This can be used to capture one's playing or for dumping movie files (.fm2) to .avi files.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Capturing a Movie File (.fm2) to Video/Audio (AVI)</span></p>
<p><br/></p>
<p>-Pause the emulator by navigating to NES &gt; Emulation Speed &gt; pause or pressing the pause hotkey (the pause key by default). &nbsp;</p>
<p>-For a faster capture increase emulation speed (you can capture at any emulation speed and FCEUX will still output a 60 (or 50) fps video file).</p>
<p>-Select "Replay Movie" from the File &gt; Movie Menu and select the movie file</p>
<p>-If you intend to capture beyond the final frame of the movie file, make sure "Pause after Playback" (Config Menu) is not checked.</p>
<p>-Select "Record AVI" in the File &gt; AVI/Wav menu.</p>
<p>-Select a file location and the video codec you wish to use.</p>
<p>-Unpause the emulator.</p>
<p>-When capturing is complete, pause the emulator and select "Stop AVI" in the File Menu.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Capture Audio only</span></p>
<p><br/></p>
<p>To capture audio only, navigate to File &gt; AVI/Wav &gt; Record WAV. &nbsp;Pick a filename and destination for FCEUX to begin capturing the audio to a .wav file (raw .pcm). &nbsp;To stop WAV recording, select File &gt; AVI/Wav &gt; Stop WAV.</p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/help-authoring-tool">Create HTML Help, DOC, PDF and print manuals from 1 single source</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="AVICapturing"
data-hnd-context="6"
data-hnd-title="AVI Capturing"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="General.html">General</a></li><li><a href="FamicomDiskSytem.html">Famicom Disk Sytem</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="FamicomDiskSytem.html" title="Famicom Disk Sytem" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="FamicomDiskSytem.html" title="Famicom Disk Sytem" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="MovieRecording.html" title="Movie Recording" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>AVI Capturing</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Video &amp; Audio Capturing</span></p>
<p class="rvps2"><span class="rvts21"><br/></span></p>
<p class="rvps2"><span class="rvts21">Introduction</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEU allows for outputting Video/Audio into .avi files or capturing audio only into .wav files. &nbsp;This can be used to capture one's playing or for dumping movie files (.fm2) to .avi files.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Capturing a Movie File (.fm2) to Video/Audio (AVI)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-Pause the emulator by navigating to NES &gt; Emulation Speed &gt; pause or pressing the pause hotkey (the pause key by default). &nbsp;</span></p>
<p class="rvps2"><span class="rvts6">-For a faster capture increase emulation speed (you can capture at any emulation speed and FCEUX will still output a 60 (or 50) fps video file).</span></p>
<p class="rvps2"><span class="rvts6">-Select "Replay Movie" from the File &gt; Movie Menu and select the movie file</span></p>
<p class="rvps2"><span class="rvts6">-If you intend to capture beyond the final frame of the movie file, make sure "Pause after Playback" (Config Menu) is not checked.</span></p>
<p class="rvps2"><span class="rvts6">-Select "Record AVI" in the File &gt; AVI/Wav menu.</span></p>
<p class="rvps2"><span class="rvts6">-Select a file location and the video codec you wish to use.</span></p>
<p class="rvps2"><span class="rvts6">-Unpause the emulator.</span></p>
<p class="rvps2"><span class="rvts6">-When capturing is complete, pause the emulator and select "Stop AVI" in the File Menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Capture Audio only</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To capture audio only, navigate to File &gt; AVI/Wav &gt; Record WAV. &nbsp;Pick a filename and destination for FCEUX to begin capturing the audio to a .wav file (raw .pcm). &nbsp;To stop WAV recording, select File &gt; AVI/Wav &gt; Stop WAV.</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.helpndoc.com/feature-tour">Full-featured Help generator</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">&times;</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>

View File

@ -1,87 +1,278 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Auto Fire Settings</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("AutoFireConfigurations");
}
});
</script>
<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>Auto Fire Settings</title>
<meta name="description" content="" />
<meta name="keywords" content="Alternate A and B,Autofire Offset,Autofire Pattern">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Auto Fire Settings">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Auto Fire Settings" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Auto Fire Settings</h1>
<div id="topic_breadcrumb">
<a href="Tools2.html">Tools</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Tools2.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Covertfcm.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="TextHooker.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts35">Auto Fire Settings</span></p>
<p><br/></p>
<p><span class="rvts12">Autofire Pattern</span></p>
<p><br/></p>
<p>The default configuration for an auto fire key is the alteration of on/off/on/off every frame. &nbsp;For most games this works nicely, but there are situations where this doesn't work properly. &nbsp;For example, Double Dragon 2 and Teenage Mutant Ninja Turtles run at 30fps (screen updates every other frame). &nbsp;To use autofire in these types of games, you would want to set the autofire pattern to 2 on / 2 off. &nbsp; In a situation where a players weapon on fires every 4th frame, you can set the autofire pattern to 1 on / 3 off.</p>
<p><br/></p>
<p><span class="rvts12">Autofire Offset</span></p>
<p><br/></p>
<p>The default is for certain frames to have the on setting and others to have the off setting. &nbsp;For instance, "on" might be lined up with a movie file's even numbers. &nbsp;But a situation may need the autofire pattern to have "on" on the odd numbers instead. &nbsp;In this case the autofire offset should be set to 1. &nbsp;This will delay the normal "on" fire by 1 frame. &nbsp;If an autofire pattern is set to 2 on / 2 off, an autofire offset of 2 might be necessary.</p>
<p><span class="rvts12"><br/></span></p>
<p><span class="rvts12">Alternate A and B</span></p>
<p><br/></p>
<p>Alternate A and B is for a specific case where both the A and B autofire buttons are pressed simultaneously. &nbsp;With alternate A and B, the fire pattern will be A,B,A,B rather than A+B, off, A+B, off.</p>
<p><br/></p>
<p><br/></p>
<p>Note: All autofire patterns read the Lag Counter (see <span class="rvts18">display</span>) and skip over any frames where input is not polled. &nbsp;This means that in a laggy area, the autofire pattern will not be affected.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Produce Kindle eBooks easily</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="AutoFireConfigurations"
data-hnd-context="13"
data-hnd-title="Auto Fire Settings"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Tools2.html">Tools</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Tools2.html" title="Tools" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Covertfcm.html" title="Convert fcm" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="TextHooker.html" title="Text Hooker" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Auto Fire Settings</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts50">Auto Fire Settings</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Autofire Pattern</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The default configuration for an auto fire key is the alteration of on/off/on/off every frame. &nbsp;For most games this works nicely, but there are situations where this doesn't work properly. &nbsp;For example, Double Dragon 2 and Teenage Mutant Ninja Turtles run at 30fps (screen updates every other frame). &nbsp;To use autofire in these types of games, you would want to set the autofire pattern to 2 on / 2 off. &nbsp; In a situation where a players weapon on fires every 4th frame, you can set the autofire pattern to 1 on / 3 off.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Autofire Offset</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The default is for certain frames to have the on setting and others to have the off setting. &nbsp;For instance, "on" might be lined up with a movie file's even numbers. &nbsp;But a situation may need the autofire pattern to have "on" on the odd numbers instead. &nbsp;In this case the autofire offset should be set to 1. &nbsp;This will delay the normal "on" fire by 1 frame. &nbsp;If an autofire pattern is set to 2 on / 2 off, an autofire offset of 2 might be necessary.</span></p>
<p class="rvps2"><span class="rvts17"><br/></span></p>
<p class="rvps2"><span class="rvts17">Alternate A and B</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Alternate A and B is for a specific case where both the A and B autofire buttons are pressed simultaneously. &nbsp;With alternate A and B, the fire pattern will be A,B,A,B rather than A+B, off, A+B, off.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Note: All autofire patterns read the Lag Counter (see </span><span class="rvts70">display</span><span class="rvts6">) and skip over any frames where input is not polled. &nbsp;This means that in a laggy area, the autofire pattern will not be affected.</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.helpndoc.com/create-epub-ebooks">Full-featured EBook editor</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">&times;</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>

View File

@ -1,171 +1,362 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Cheat Search</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("CheatSearch");
}
});
</script>
<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>Cheat Search</title>
<meta name="description" content="" />
<meta name="keywords" content="Cheat Guide">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Cheat Search">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Cheat Search" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Cheat Search</h1>
<div id="topic_breadcrumb">
<a href="Tools2.html">Tools</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Tools2.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Tools2.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="RAMSearch.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">FCE Ultra Cheat Guide</span></p>
<p><span class="rvts12"><br/></span></p>
<p><span class="rvts12">Introduction</span></p>
<p><br/></p>
<p>FCE Ultra allows cheating by the periodic "patching" of arbitrary addresses in the 6502's memory space with arbitrary values, as well as read substitution. "Read substitution" is the method that would be used on a real NES/Famicom, such as done by the Game Genie and Pro Action Replay. It is required to support GG and PAR codes, but since it is relatively slow when done in emulation, it is not the preferred method when a RAM patch will suffice. Also, in FCE Ultra, read substitution will not work properly with zero-page addressing modes(instructions that operate on RAM at $0000 through $00FF).</p>
<p><br/></p>
<p>The RAM patches are all applied a short time before the emulated vertical blanking period. This detail shouldn't concern most people, though. However, this does mean that cheating with games that use bank-switched RAM may be problematic. Fortunately, such games are not very common (in relation to the total number of NES and Famicom games).</p>
<p><br/></p>
<p>The cheat search comes with its own set of tools for finding addresses in memory to use for making cheats (or for monitoring the addresses in the <a class="rvts18" href="MemoryWatch.html">memory watch window</a>)</p>
<p><br/></p>
<p><span class="rvts12">Cheat Files</span></p>
<p><br/></p>
<p>By default cheat files (.cht) are stored in the "cheats" subdirectory under the base FCEUX. The files are in a simple plain-text format. Each line represents a one-byte memory patch. The format is as follows(text in brackets [] represents optional parameters):</p>
<p><br/></p>
<p> &nbsp; &nbsp;[S][C][:]Address(hex):Value(hex):[Compare value:]Description </p>
<p><br/></p>
<p>Example:</p>
<p><br/></p>
<p> &nbsp; &nbsp;040e:05:Infinite super power.</p>
<p><br/></p>
<p>A colon(:) near the beginning of the line is used to disable the cheat. "S" denotes a cheat that is a read-substitute-style cheat(such as with Game Genie cheats), and a "C" denotes that the cheat has a compare value.</p>
<p><br/></p>
<p>Note: &nbsp;When a game is loaded, FCEUX will load any accompanying saved .cht file automatically.</p>
<p><br/></p>
<p>The default .cht file folder can be changed with the <a class="rvts18" href="Directories.html">Directory Override menu</a>.</p>
<p><br/></p>
<p><span class="rvts12">The Cheat Search Menu</span></p>
<p><br/></p>
<p>The cheat search interface consists of several components: a list of addresses and associated data for a search, several command buttons, and the search parameters.</p>
<p><br/></p>
<p>All addresses listed in the cheat search windows are in unsigned 16-bit hexadecimal format and all values in these windows are in an unsigned 8-bit decimal format(the range for values is 0 through 255).</p>
<p><br/></p>
<p><span class="rvts27">Active Cheats</span></p>
<p><br/></p>
<p>The Active cheats window on the left contains the list of cheats for the currently loaded game. Existing cheats can be selected, edited, and updated using the "Update" button.</p>
<p><br/></p>
<p>Each entry in the list can be named. If you didn't provide a name, it will be automatically named using this format:</p>
<p>For simple "Substitute" type of cheats: * Address:Value</p>
<p>For "Compare" type of cheats: * Address?Compare:Value</p>
<p><br/></p>
<p>The "Address" is the location in the 6502's address space. &nbsp;The * denotes that the current cheat is active (double clicking will toggle on/off). "Value" is the value (in hex) that is written to the addresses on each update. "Compare" it the value that must be at the address, or else the Value won't be written there. This allows making cheats more safe.</p>
<p><br/></p>
<p>You can Add, Delete, and Update cheats in the Active Cheats window with the boxes below.</p>
<p>You can use "Add from CHT file..." button to load cheats from an existing file (in case the file name does not match the ROM name, so it didn't load automatically). Alternatively, you can drag and drop any .cht file into the FCEUX window.</p>
<p><br/></p>
<p>There is also a right-click menu with the options Toggle selected Cheats, Poke Cheat Value and Goto in Hex Editor, and Delete selected Cheats.</p>
<p><br/></p>
<p>Toggle Cheats is like Double Clicking, it enables or disables the cheat code. You can select many cheats in the list and toggle them all at once.</p>
<p>Poke Cheat Value is like turning the cheat on, but in this case there's no off switch. If the code is on when you use this, then when the code is turned off, it will revert to the value last used. Good for one time life refills, if you want that sort of thing.</p>
<p>Goto in Hex Editor opens the Hex Editor window, and puts the cursor on the address shown. It's somewhat similar to how Bookmarks work in the Hex Editor.</p>
<p><br/></p>
<p>To create a new cheat, you have to find an address, for this use the cheat search portion of the window.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Cheat Search</span></p>
<p><br/></p>
<p>The cheat search is used to find a specific value in the games RAM by process of elimination.</p>
<p><br/></p>
<p>The possibilities window is in the format of &nbsp;Address:Original Value:Current Value</p>
<p>The address is the location in the 6502's address space, the original value is the value that was stored at this address when the search was reset, and the current value is the value that is currently stored at that address. Selecting an item in this list will automatically cause the "Address" field in the cheat information box on the right side of the window to be updated with the selected address.</p>
<p><br/></p>
<p>The "Reset" button resets the search process; all valid addresses are displayed in the possibilities window and the data values at those addresses noted in both the left and right columns. &nbsp;The number of possibilities is displayed at the top. &nbsp;Resetting will set it to 2048 or 10240 depending on if the game uses "On cartridge ram" ($6000-$7FFF). &nbsp;(See <a class="rvts18" href="NESRAMMappingFindingValues.html">NES RAM</a>)</p>
<p><br/></p>
<p>The left column is the "previous value" and the right column is the "current value"</p>
<p><br/></p>
<p>The "Known Value", "Equal", "Not Equal", Greater than" and Less than" buttons perform a search based on the search parameter and removes any non-matching addresses from the address list. &nbsp; It then sets the "previous value" column to the contents of the "current value"</p>
<p><br/></p>
<p>"Known Value" will search for all addresses that match the value in the box to the right (the value is in hex).</p>
<p><br/></p>
<p>"Equal" will search for all addresses that have the same value now as the last search (or since reset was pressed, if there has not yet been a search).</p>
<p><br/></p>
<p>"Not equal" will search for all addresses that have changed sine the last search (or since reset was pressed, if there has not yet been a search).</p>
<p>If the checkbox next to it is checked it will looks for values that have changed by the value in the number box to the right. &nbsp;For instance, if it is checked and the number is 5, it will search for all values that are +- 5 from the previous value.</p>
<p><br/></p>
<p>"Greater than" functions like "Not equal" except it only searches for values that have increased since the last search.</p>
<p><br/></p>
<p>"Less than" functions like "Not equal" except it only searches for values that have decreased since the last search.</p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Using the Results</span></p>
<p><br/></p>
<p>Any value in the possibilities list can be sent to memory watch by double clicking it. &nbsp;</p>
<p>Highlighting it and hitting the "Add" button under the Active cheats window will automatically activate it as a cheat with the value set to its current value.</p>
<p><br/></p>
<p><span class="rvts27">Example</span></p>
<p><br/></p>
<p>Here is an example of cheat search in action.</p>
<p><br/></p>
<p>Let's say I am playing Mega man 3 and I want to find Mega man's energy level in the game's ram. &nbsp;I will start by opening the ROM and selecting a level. &nbsp;At this point, I know Mega man's energy address is active. &nbsp;So I will pause the game and open the cheat search and hit the reset button. &nbsp;The game uses SRAM so the possibilities window will say 10240 "possibilities". &nbsp;</p>
<p>Next I will frame advance (or briefly unpause) the game. &nbsp;At this point I know Mega man's energy level is still the same as it was. &nbsp;So I click the "equal" button. &nbsp; Next I want to take damage. &nbsp;I know for sure now that the energy level has decreased so after the "ouch" animation, I click the "Less than button". &nbsp;This will cut the possibilities down significantly. &nbsp;Next I will advance some more and click the "Equal" button since I know the value is still the previous value. &nbsp;I will repeat this cycle until I am down to 1 or just a few values. &nbsp;From there I can double click the values to send them to memory watch to monitor them more closely to weed them out. &nbsp;(Note: &nbsp;Mega man's energy is located in $00A2).</p>
<p><br/></p>
<p><span class="rvts27">Context Menu</span></p>
<p><br/></p>
<p>Right-clicking in the active cheats list brings up the context menu.</p>
<p><br/></p>
<p><span class="rvts32">Toggle Cheat</span> - does the same thing as double clicking</p>
<p><br/></p>
<p><span class="rvts32">Poke cheat value</span> - has a different affect that normal freezing, this makes a one time write of that value as opposed to freezing it temporarily to that value and having it restored later. &nbsp;It has the same affect as typing in values in the <a class="rvts18" href="HexEditor.html">Hex Editor</a>.</p>
<p><br/></p>
<p><span class="rvts32">Goto In Hex Editor</span> - Opens the <a class="rvts18" href="HexEditor.html">Hex editor</a> dialog to the position of the selected RAM value.</p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Easy CHM and documentation editor</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="CheatSearch"
data-hnd-context="9"
data-hnd-title="Cheat Search"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Tools2.html">Tools</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Tools2.html" title="Tools" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Tools2.html" title="Tools" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="RAMSearch.html" title="RAM Search" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Cheat Search</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">FCE Ultra Cheat Guide</span></p>
<p class="rvps2"><span class="rvts17"><br/></span></p>
<p class="rvps2"><span class="rvts17">Introduction</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCE Ultra allows cheating by the periodic "patching" of arbitrary addresses in the 6502's memory space with arbitrary values, as well as read substitution. "Read substitution" is the method that would be used on a real NES/Famicom, such as done by the Game Genie and Pro Action Replay. It is required to support GG and PAR codes, but since it is relatively slow when done in emulation, it is not the preferred method when a RAM patch will suffice. Also, in FCE Ultra, read substitution will not work properly with zero-page addressing modes(instructions that operate on RAM at $0000 through $00FF).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The RAM patches are all applied a short time before the emulated vertical blanking period. This detail shouldn't concern most people, though. However, this does mean that cheating with games that use bank-switched RAM may be problematic. Fortunately, such games are not very common (in relation to the total number of NES and Famicom games).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The cheat search comes with its own set of tools for finding addresses in memory to use for making cheats (or for monitoring the addresses in the </span><a class="rvts64" href="MemoryWatch.html">memory watch window</a><span class="rvts6">)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Cheat Files</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">By default cheat files (.cht) are stored in the "cheats" subdirectory under the base FCEUX. The files are in a simple plain-text format. Each line represents a one-byte memory patch. The format is as follows(text in brackets [] represents optional parameters):</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; [S][C][:]Address(hex):Value(hex):[Compare value:]Description&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Example:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; 040e:05:Infinite super power.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A colon(:) near the beginning of the line is used to disable the cheat. "S" denotes a cheat that is a read-substitute-style cheat(such as with Game Genie cheats), and a "C" denotes that the cheat has a compare value.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Note: &nbsp;When a game is loaded, FCEUX will load any accompanying saved .cht file automatically.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The default .cht file folder can be changed with the </span><a class="rvts64" href="Directories.html">Directory Override menu</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">The Cheat Search Menu</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The cheat search interface consists of several components: a list of addresses and associated data for a search, several command buttons, and the search parameters.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">All addresses listed in the cheat search windows are in unsigned 16-bit hexadecimal format and all values in these windows are in an unsigned 8-bit decimal format(the range for values is 0 through 255).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Active Cheats</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Active cheats window on the left contains the list of cheats for the currently loaded game. Existing cheats can be selected, edited, and updated using the "Update" button.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Each entry in the list can be named. If you didn't provide a name, it will be automatically named using this format:</span></p>
<p class="rvps2"><span class="rvts6">For simple "Substitute" type of cheats: * Address:Value</span></p>
<p class="rvps2"><span class="rvts6">For "Compare" type of cheats: * Address?Compare:Value</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The "Address" is the location in the 6502's address space. &nbsp;The * denotes that the current cheat is active (double clicking will toggle on/off). "Value" is the value (in hex) that is written to the addresses on each update. "Compare" it the value that must be at the address, or else the Value won't be written there. This allows making cheats more safe.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can Add, Delete, and Update cheats in the Active Cheats window with the boxes below.</span></p>
<p class="rvps2"><span class="rvts6">You can use "Add from CHT file..." button to load cheats from an existing file (in case the file name does not match the ROM name, so it didn't load automatically). Alternatively, you can drag and drop any .cht file into the FCEUX window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">There is also a right-click menu with the options Toggle selected Cheats, Poke Cheat Value and Goto in Hex Editor, and Delete selected Cheats.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Toggle Cheats is like Double Clicking, it enables or disables the cheat code. You can select many cheats in the list and toggle them all at once.</span></p>
<p class="rvps2"><span class="rvts6">Poke Cheat Value is like turning the cheat on, but in this case there's no off switch. If the code is on when you use this, then when the code is turned off, it will revert to the value last used. Good for one time life refills, if you want that sort of thing.</span></p>
<p class="rvps2"><span class="rvts6">Goto in Hex Editor opens the Hex Editor window, and puts the cursor on the address shown. It's somewhat similar to how Bookmarks work in the Hex Editor.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To create a new cheat, you have to find an address, for this use the cheat search portion of the window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Cheat Search</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The cheat search is used to find a specific value in the games RAM by process of elimination.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The possibilities window is in the format of &nbsp;Address:Original Value:Current Value</span></p>
<p class="rvps2"><span class="rvts6">The address is the location in the 6502's address space, the original value is the value that was stored at this address when the search was reset, and the current value is the value that is currently stored at that address. Selecting an item in this list will automatically cause the "Address" field in the cheat information box on the right side of the window to be updated with the selected address.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The "Reset" button resets the search process; all valid addresses are displayed in the possibilities window and the data values at those addresses noted in both the left and right columns. &nbsp;The number of possibilities is displayed at the top. &nbsp;Resetting will set it to 2048 or 10240 depending on if the game uses "On cartridge ram" ($6000-$7FFF). &nbsp;(See </span><a class="rvts64" href="NESRAMMappingFindingValues.html">NES RAM</a><span class="rvts6">)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The left column is the "previous value" and the right column is the "current value"</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The "Known Value", "Equal", "Not Equal", Greater than" and Less than" buttons perform a search based on the search parameter and removes any non-matching addresses from the address list. &nbsp; It then sets the "previous value" column to the contents of the "current value"</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">"Known Value" will search for all addresses that match the value in the box to the right (the value is in hex).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">"Equal" will search for all addresses that have the same value now as the last search (or since reset was pressed, if there has not yet been a search).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">"Not equal" will search for all addresses that have changed sine the last search (or since reset was pressed, if there has not yet been a search).</span></p>
<p class="rvps2"><span class="rvts6">If the checkbox next to it is checked it will looks for values that have changed by the value in the number box to the right. &nbsp;For instance, if it is checked and the number is 5, it will search for all values that are +- 5 from the previous value.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">"Greater than" functions like "Not equal" except it only searches for values that have increased since the last search.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">"Less than" functions like "Not equal" except it only searches for values that have decreased since the last search.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Using the Results</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Any value in the possibilities list can be sent to memory watch by double clicking it. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6">Highlighting it and hitting the "Add" button under the Active cheats window will automatically activate it as a cheat with the value set to its current value.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Example</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Here is an example of cheat search in action.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Let's say I am playing Mega man 3 and I want to find Mega man's energy level in the game's ram. &nbsp;I will start by opening the ROM and selecting a level. &nbsp;At this point, I know Mega man's energy address is active. &nbsp;So I will pause the game and open the cheat search and hit the reset button. &nbsp;The game uses SRAM so the possibilities window will say 10240 "possibilities". &nbsp;</span></p>
<p class="rvps2"><span class="rvts6">Next I will frame advance (or briefly unpause) the game. &nbsp;At this point I know Mega man's energy level is still the same as it was. &nbsp;So I click the "equal" button. &nbsp; Next I want to take damage. &nbsp;I know for sure now that the energy level has decreased so after the "ouch" animation, I click the "Less than button". &nbsp;This will cut the possibilities down significantly. &nbsp;Next I will advance some more and click the "Equal" button since I know the value is still the previous value. &nbsp;I will repeat this cycle until I am down to 1 or just a few values. &nbsp;From there I can double click the values to send them to memory watch to monitor them more closely to weed them out. &nbsp;(Note: &nbsp;Mega man's energy is located in $00A2).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Context Menu</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Right-clicking in the active cheats list brings up the context menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts45">Toggle Cheat</span><span class="rvts6"> - does the same thing as double clicking</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts45">Poke cheat value</span><span class="rvts6"> - has a different affect that normal freezing, this makes a one time write of that value as opposed to freezing it temporarily to that value and having it restored later. &nbsp;It has the same affect as typing in values in the </span><a class="rvts64" href="HexEditor.html">Hex Editor</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts45">Goto In Hex Editor</span><span class="rvts6"> - Opens the </span><a class="rvts64" href="HexEditor.html">Hex editor</a><span class="rvts6"> dialog to the position of the selected RAM value.</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.helpndoc.com">Full-featured Documentation generator</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">&times;</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>

View File

@ -1,198 +1,407 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Code/Data Logger</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("CodeDataLogger");
}
});
</script>
<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>Code/Data Logger</title>
<meta name="description" content="" />
<meta name="keywords" content="Code/Data Logger">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Code/Data Logger">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Code/Data Logger" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Code/Data Logger</h1>
<div id="topic_breadcrumb">
<a href="Debug.html">Debug</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Debug.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="TraceLogger.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="GameGenieEncoderDecoder.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<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="CodeDataLogger"
data-hnd-context="39"
data-hnd-title="Code/Data Logger"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Debug.html">Debug</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Debug.html" title="Debug" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="TraceLogger.html" title="Trace Logger" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="GameGenieEncoderDecoder.html" title="Game Genie Encoder/Decoder" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Code/Data Logger</h2>
<div class="main-content">
<p></p>
<p><span class="rvts17">Code/Data Logger</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Introduction</span></p>
<p><br/></p>
<p>The Code/Data Logger makes it much easier to reverse-engineer NES ROMs. The basic idea behind it is that a normal NES disassembler cannot distinguish between code (which is executed) and data (which is read). The Code/Data Logger keeps track of what is executed and what is read while the game is played, and then you can save this information into a .cdl file, which is essentially a <span class="rvts32">mask</span> that tells which bytes in the ROM are code and which are data. The file can be used in conjunction with a suitable disassembler to disassemble only the actual game code, resulting in a much cleaner source code where code and data are properly separated.</p>
<p><br/></p>
<p><span class="rvts16">Using the Code/Data Logger</span></p>
<p><br/></p>
<p>The Code/Data Logger keeps track of every byte in the ROM and records whether it's code (is executed) or data (is read).</p>
<p>You can combine this logging feature with other tools to make them much more powerful:</p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>combine with <a class="rvts18" href="Debugger.html">Debugger</a> to see which branches of the game code were executed and which weren't yet</li>
<li>combine with <a class="rvts18" href="TraceLogger.html">Trace Logger</a> to let it log the code selectively</li>
<li>combine with <a class="rvts18" href="PPUViewer.html">PPU Viewer</a> to let it only display graphics that was drawn on screen at least once</li>
<li>combine with <a class="rvts18" href="HexEditor.html">Hex Editor</a> to enable smart coloring of bytes (so you can observe which bytes are used by the game and how/when they are used)</li>
<li>combine with (an external) Tile Viewer to see which graphics was used during certain play session, and which was not</li>
<li>combine with (an external) ROM Corruptor to make it only corrupt data, but not code</li>
<li>combine with (an external) Disassembler to help it separate code from data</li>
<p class="rvps2"><span class="rvts22">Code/Data Logger</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Introduction</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Code/Data Logger makes it much easier to reverse-engineer NES ROMs. The basic idea behind it is that a normal NES disassembler cannot distinguish between code (which is executed) and data (which is read). The Code/Data Logger keeps track of what is executed and what is read while the game is played, and then you can save this information into a .cdl file, which is essentially a </span><span class="rvts45">mask</span><span class="rvts6"> that tells which bytes in the ROM are code and which are data. The file can be used in conjunction with a suitable disassembler to disassemble only the actual game code, resulting in a much cleaner source code where code and data are properly separated.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Using the Code/Data Logger</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Code/Data Logger keeps track of every byte in the ROM and records whether it's code (is executed) or data (is read).</span></p>
<p class="rvps2"><span class="rvts6">You can combine this logging feature with other tools to make them much more powerful:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">combine with </span><a class="rvts88" href="Debugger.html">Debugger</a><span class="rvts6"> to see which branches of the game code were executed and which weren't yet</span></li>
<li class="rvps2"><span class="rvts6">combine with </span><a class="rvts88" href="TraceLogger.html">Trace Logger</a><span class="rvts6"> to let it log the code selectively</span></li>
<li class="rvps2"><span class="rvts6">combine with </span><a class="rvts88" href="PPUViewer.html">PPU Viewer</a><span class="rvts6"> to let it only display graphics that was drawn on screen at least once</span></li>
<li class="rvps2"><span class="rvts6">combine with </span><a class="rvts88" href="HexEditor.html">Hex Editor</a><span class="rvts6"> to enable smart coloring of bytes (so you can observe which bytes are used by the game and how/when they are used)</span></li>
<li class="rvps2"><span class="rvts6">combine with (an external) Tile Viewer to see which graphics was used during certain play session, and which was not</span></li>
<li class="rvps2"><span class="rvts6">combine with (an external) ROM Corruptor to make it only corrupt data, but not code</span></li>
<li class="rvps2"><span class="rvts6">combine with (an external) Disassembler to help it separate code from data</span></li>
</ul>
<p><br/></p>
<p>See, it is very useful for finding certain types of data or code branches. It also makes debugging work more visual, since you can always see which lines of the disassembled code were executed and which weren't.</p>
<p><br/></p>
<p>Furthermore, while the Code/Data Logger is running, the <a class="rvts18" href="HexEditor.html">Hex Editor</a> will color-code ROM bytes depending on whether they were logged as code or data:</p>
<p><br/></p>
<p>For PRG ROM:</p>
<p><span class="rvts52">Dark-yellow</span> - the byte is code</p>
<p><span class="rvts53">Blue</span> - the byte is data</p>
<p><span class="rvts54">Cyan</span> - the byte is PCM audio data</p>
<p><span class="rvts51">Green</span> - the byte is both code and data</p>
<p><br/></p>
<p>For CHR ROM:</p>
<p><span class="rvts55">Yellow</span> - the byte was rendered</p>
<p><span class="rvts56">Light-blue</span> - the byte was read programmatically</p>
<p><span class="rvts57">Light-green</span> - the byte was both rendered and read programmatically</p>
<p><br/></p>
<p>The Code/Data Logger can also be used to generate a stripped NES ROM.</p>
<p>"Stripped" NES ROM is a ROM in which everything that was not logged by the Code/Data Logger is removed. It can be useful in many ways, for example, you can view the ROM in an external Hex Editor or a Tile Viewer, and you'll see only the parts that were used while playing. Furthermore, you could use it to create a demo ROM by only playing through the parts you would like others to see.</p>
<p><span class="rvts32">Example of such usage:</span></p>
<p>1. Open the Code/Data Logger, and press Start to begin logging.</p>
<p>2. Perform a soft and a hard reset while logging, in order to capture the ROM's startup sequence. If you don't do so, you can distribute a save-state file so they will start from within the game.</p>
<p>3. If the game has Save-RAM (e.g. Zelda), you will need to capture the game's Save-RAM initialization routines; you can try to do so by deleting the game's *.sav file and then perform a soft and hard reset again while logging.</p>
<p>4. Play through whatever levels you want present in the demo ROM. Be sure to perform every move, get every item, etc., so that the code and data necessary for those things are logged. If, for example, you fail to perform some special move, and then someone plays the stripped ROM and attempts to perform that move, the game may very well crash or glitch up, because there are zeros in the stripped ROM instead of the code responsible for handling this special move.</p>
<p>5. Save the stripped NES ROM.</p>
<p><br/></p>
<p>Alternatively, you can save Unused Data (a ROM which is the opposite to the Stripped ROM). For example, you can play through the game, then save Unused Data ROM and watch it in a Tile Viewer to find unused graphics (possibly stumble upon secrets and easter eggs).</p>
<p><br/></p>
<p>Note: When you "Load" another .cdl file, it does not clear the current log; instead, it combines ("arithmetical OR") it with the information in the file. This can be useful if you're trying to obtain a complete log of certain game, as multiple people can play through the game and keep own code/data logs, and then the results can be combined into an all-encompassing log. But if you would like to actually clear the code/data log, press the "Reset Log" button.</p>
<p><br/></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p><br/></p>
<p>CDL files are just a mask of the ROM; that is, they are of the same size as the ROM, and each byte represents the corresponding byte of the ROM. The format of each byte is like so (in binary):</p>
<p><br/></p>
<p>For PRG ROM:</p>
<div><table width="256" border="1" cellpadding="1" cellspacing="1" style="border-color: #000000; border-style: solid;">
<tr valign="middle">
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">x</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">P</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">d</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">c</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">A</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">A</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">D</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">C</p>
</td>
</tr>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">See, it is very useful for finding certain types of data or code branches. It also makes debugging work more visual, since you can always see which lines of the disassembled code were executed and which weren't.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Furthermore, while the Code/Data Logger is running, the </span><a class="rvts88" href="HexEditor.html">Hex Editor</a><span class="rvts6"> will color-code ROM bytes depending on whether they were logged as code or data:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For PRG ROM:</span></p>
<p class="rvps2"><span class="rvts80">Dark-yellow</span><span class="rvts6"> - the byte is code</span></p>
<p class="rvps2"><span class="rvts81">Blue</span><span class="rvts6"> - the byte is data</span></p>
<p class="rvps2"><span class="rvts82">Cyan</span><span class="rvts6"> - the byte is PCM audio data</span></p>
<p class="rvps2"><span class="rvts79">Green</span><span class="rvts6"> - the byte is both code and data</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For CHR ROM:</span></p>
<p class="rvps2"><span class="rvts83">Yellow</span><span class="rvts6"> - the byte was rendered</span></p>
<p class="rvps2"><span class="rvts84">Light-blue</span><span class="rvts6"> - the byte was read programmatically</span></p>
<p class="rvps2"><span class="rvts85">Light-green</span><span class="rvts6"> - the byte was both rendered and read programmatically</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Code/Data Logger can also be used to generate a stripped NES ROM.</span></p>
<p class="rvps2"><span class="rvts6">"Stripped" NES ROM is a ROM in which everything that was not logged by the Code/Data Logger is removed. It can be useful in many ways, for example, you can view the ROM in an external Hex Editor or a Tile Viewer, and you'll see only the parts that were used while playing. Furthermore, you could use it to create a demo ROM by only playing through the parts you would like others to see.</span></p>
<p class="rvps2"><span class="rvts45">Example of such usage:</span></p>
<p class="rvps2"><span class="rvts6">1. Open the Code/Data Logger, and press Start to begin logging.</span></p>
<p class="rvps2"><span class="rvts6">2. Perform a soft and a hard reset while logging, in order to capture the ROM's startup sequence. If you don't do so, you can distribute a save-state file so they will start from within the game.</span></p>
<p class="rvps2"><span class="rvts6">3. If the game has Save-RAM (e.g. Zelda), you will need to capture the game's Save-RAM initialization routines; you can try to do so by deleting the game's *.sav file and then perform a soft and hard reset again while logging.</span></p>
<p class="rvps2"><span class="rvts6">4. Play through whatever levels you want present in the demo ROM. Be sure to perform every move, get every item, etc., so that the code and data necessary for those things are logged. If, for example, you fail to perform some special move, and then someone plays the stripped ROM and attempts to perform that move, the game may very well crash or glitch up, because there are zeros in the stripped ROM instead of the code responsible for handling this special move.</span></p>
<p class="rvps2"><span class="rvts6">5. Save the stripped NES ROM.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Alternatively, you can save Unused Data (a ROM which is the opposite to the Stripped ROM). For example, you can play through the game, then save Unused Data ROM and watch it in a Tile Viewer to find unused graphics (possibly stumble upon secrets and easter eggs).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Note: When you "Load" another .cdl file, it does not clear the current log; instead, it combines ("arithmetical OR") it with the information in the file. This can be useful if you're trying to obtain a complete log of certain game, as multiple people can play through the game and keep own code/data logs, and then the results can be combined into an all-encompassing log. But if you would like to actually clear the code/data log, press the "Reset Log" button.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;">
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">CDL files are just a mask of the ROM; that is, they are of the same size as the ROM, and each byte represents the corresponding byte of the ROM. The format of each byte is like so (in binary):</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For PRG ROM:</span></p>
<div class="rvps2">
<table width="256" border="1" cellpadding="1" cellspacing="1" style="border-color: #000000; border-style: solid; border-spacing: 1px;">
<tr valign="middle">
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">x</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">P</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">d</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">c</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">A</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">A</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">D</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">C</span></p>
</td>
</tr>
</table>
</div>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;C = Whether it was accessed as code.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;D = Whether it was accessed as data.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;AA = Into which ROM bank it was mapped when last accessed:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;00 = $8000-$9FFF &nbsp; &nbsp; &nbsp; &nbsp;01 = $A000-$BFFF</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;10 = $C000-$DFFF &nbsp; &nbsp; &nbsp; &nbsp;11 = $E000-$FFFF</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;c = Whether indirectly accessed as code.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(e.g. as the destination of a JMP ($nnnn) instruction)</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;d = Whether indirectly accessed as data.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(e.g. as the destination of an LDA ($nn),Y instruction)</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;P = If logged as PCM audio data.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;x = unused.</p>
<p><br/></p>
<p>For CHR ROM:</p>
<div><table width="256" border="1" cellpadding="1" cellspacing="1" style="border-color: #000000; border-style: solid;">
<tr valign="middle">
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">x</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">x</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">x</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">x</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">x</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">x</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">R</p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid;"><p class="rvps1">D</p>
</td>
</tr>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">C = Whether it was accessed as code.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">D = Whether it was accessed as data.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">AA = Into which ROM bank it was mapped when last accessed:</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">00 = $8000-$9FFF</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">01 = $A000-$BFFF</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">10 = $C000-$DFFF</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">11 = $E000-$FFFF</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">c = Whether indirectly accessed as code.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">(e.g. as the destination of a JMP ($nnnn) instruction)</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">d = Whether indirectly accessed as data.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">(e.g. as the destination of an LDA ($nn),Y instruction)</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">P = If logged as PCM audio data.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">x = unused.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For CHR ROM:</span></p>
<div class="rvps2">
<table width="256" border="1" cellpadding="1" cellspacing="1" style="border-color: #000000; border-style: solid; border-spacing: 1px;">
<tr valign="middle">
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">x</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">x</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">x</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">x</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">x</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">x</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">R</span></p>
</td>
<td valign="middle" style="border-color: #000000; border-style: solid; padding: 1px;">
<p class="rvps3"><span class="rvts6">D</span></p>
</td>
</tr>
</table>
</div>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;D = Whether it was drawn on screen (rendered by PPU at runtime)</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;R = Whether it was read programmatically using port $2007</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(e.g. Argus_(J).nes checks if the bankswitching works by reading the same byte of CHR data before and after switching)</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;x = unused.</p>
<p><br/></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p><br/></p>
<p><br/></p>
<p>CDL files make possible a number of things never done before. First, a PCM data ripper could be created that scans for data that has the 'P' bit set, in order to find/rip/play every PCM sample in a ROM. Also, it is possible for someone to make a more intelligent ROM corruptor that only corrupts data (by checking the 'D' bit). In any case, the Code/Data Logger opens many new possibilities for discovering useful things in games. Another interesting possibility would be to use the Code/Data Logger on an NSF file to create a stripped NSF. Such an NSF would contain nothing but the relevant subroutines and data required by each tune played; this would be helpful to NSF rippers by removing irrelevant information. Thus, an NSF ripper could create a stripped NSF by listening to each track while the Code/Data Logger operates on it, and then saving the stripped NSF. It should be noted that this capability, though tested and working on private builds, is detrimental to the process of fixing broken NSF files. For this reason, data logging is allowed for NSF files, but stripping NSF files of unused data is disabled.</p>
<p><br/></p>
<p>The Code/Data Logger becomes the most useful when you need to restore a full source code of a game using e.g. IDA or another disassembler. There you can write a custom IDC script that uses a CDL file and calls MakeCode()/MakeData() functions to help the disassembler distinguish code from data. Making full and working/reassemblable disassembly becomes really easy this way.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">D = Whether it was drawn on screen (rendered by PPU at runtime)</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">R = Whether it was read programmatically using port $2007</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">(e.g. Argus_(J).nes checks if the bankswitching works by reading the same byte of CHR data before and after switching)</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">x = unused.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;">
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">CDL files make possible a number of things never done before. First, a PCM data ripper could be created that scans for data that has the 'P' bit set, in order to find/rip/play every PCM sample in a ROM. Also, it is possible for someone to make a more intelligent ROM corruptor that only corrupts data (by checking the 'D' bit). In any case, the Code/Data Logger opens many new possibilities for discovering useful things in games. Another interesting possibility would be to use the Code/Data Logger on an NSF file to create a stripped NSF. Such an NSF would contain nothing but the relevant subroutines and data required by each tune played; this would be helpful to NSF rippers by removing irrelevant information. Thus, an NSF ripper could create a stripped NSF by listening to each track while the Code/Data Logger operates on it, and then saving the stripped NSF. It should be noted that this capability, though tested and working on private builds, is detrimental to the process of fixing broken NSF files. For this reason, data logging is allowed for NSF files, but stripping NSF files of unused data is disabled.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Code/Data Logger becomes the most useful when you need to restore a full source code of a game using e.g. IDA or another disassembler. There you can write a custom IDC script that uses a CDL file and calls MakeCode()/MakeData() functions to help the disassembler distinguish code from data. Making full and working/reassemblable disassembly becomes really easy this way.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free HTML Help documentation generator</a></p>
</div>
<div id="topic_footer">
<p class="rvps4" style="clear: both;"><span class="rvts18">Created with the Personal Edition of HelpNDoc: </span><a class="rvts19" href="https://www.helpndoc.com/create-epub-ebooks">Free EPub producer</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">&times;</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>
<div id="topic_footer_content">
2016</div>
</div>
</body>
</html>

View File

@ -1,250 +1,441 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Command Line Options</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("CommandLineOptions");
}
});
</script>
<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>Command Line Options</title>
<meta name="description" content="" />
<meta name="keywords" content="Command Line Options">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Command Line Options">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Command Line Options" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Command Line Options</h1>
<div id="topic_breadcrumb">
<a href="General.html">General</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="General.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Gamefilecompatibility.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="CustomizingthroughtheConfigFil.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Command Line Options</span></p>
<p><br/></p>
<p><br/></p>
<p>FCEUX offers numerous command line options.</p>
<p>All commands are case sensitive.</p>
<p><br/></p>
<p><span class="rvts16">ROM name</span></p>
<p>Plays specified ROM (ROM name must always be put last in command line arguments)</p>
<p><br/></p>
<p><span class="rvts29">fceux path\rom.nes</span> (or <span class="rvts29">rom.zip</span>)</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux smb.nes</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux c:\fceux\roms\smb.zip</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Play Movie File</span></p>
<p>Plays a specified movie (.fm2) file. &nbsp;A valid ROM must be specified or movie will not be played.</p>
<p><br/></p>
<p><span class="rvts29">fcuex -playmovie path\movie.fm2 romname</span></p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux -playmovie smb.fm2 smb.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Read-only Status</span></p>
<p>Specifies whether a movie will be in "read-only" or "read &amp; write" mode. &nbsp;(Note: a specified movie is not required to be used in conjunction with this command). 1 specifies read only status, 0 specifies read &amp; write.</p>
<p><br/></p>
<p><span class="rvts29">fceux -readonly flag</span></p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux -readonly 1</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -readonly 0 -playmovie smb.fm2 smb.nes</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -readonly 1 -playmovie c:\fceux\movies\smb.fm2 c:\fceux\roms\smb.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Stop Movie at frame x</span></p>
<p>Specifies that the movie will automatically stop at the specified frame. &nbsp;(A movie must be specified with -playmovie for this command to work)</p>
<p><br/></p>
<p><span class="rvts29">fceux -playmovie path\movie.fm2 -stopframe framenumber romname</span></p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux -playmovie smb.fm2 -stopframe 10000 smb.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Load State</span></p>
<p>Specifies FCEUX to automatically load a specified savestate file. &nbsp;(Must have a specified ROM for this to work).</p>
<p><br/></p>
<p><span class="rvts29">fceux -loadstate path\savestatefile romname</span></p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux -loadstate smb0.fc0 smb.nes</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -playmovie smb.fm2 -readonly 0 -loadstate smb0.fc0 smb.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Pause Movie After Playback</span></p>
<p>Sets the "<a class="rvts18" href="ToggleSwitchesHideMenuetc.html">Pause Movie After Playback</a>" switch on/off. &nbsp;1 sets it to enabled, 0 sets it to disabled.</p>
<p><br/></p>
<p><span class="rvts29">fceux -stopmovie flag</span></p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux -stopmovie 1</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -playmovie smb.fm2 -readonly 0 - stopmovie 1 smb0.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Frame Display Toggle</span></p>
<p>Toggles whether or not the frame count will be displayed. &nbsp;1 sets it to on, 0 sets it to off.</p>
<p><br/></p>
<p><span class="rvts29">fceux -framedisplay flag</span></p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux -framedisplay 1</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -playmovie smb2.fm2 -framedisplay 1 smb0.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Input Display Toggle</span></p>
<p>Toggles whether the movie input will be displayed. &nbsp;1 sets it to on, 0 sets it to off.</p>
<p><br/></p>
<p><span class="rvts29">fceux -inputdisplay flag</span></p>
<p><br/></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -inputdisplay 1</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -playmovie smb2.fm2 -inputdisplay 1 smb0.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Allow L+R/U+D</span></p>
<p>Sets whether or not the game will allow L+R/U+D input (see <a class="rvts18" href="Input.html">Input config</a>). &nbsp;1 enables L+R, 0 disables it.</p>
<p><br/></p>
<p><span class="rvts29">fceux -allowUDLR flag</span></p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux -allowUDLR 1</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -allowUDLR 0 smb0.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Enable Background Input</span></p>
<p>Sets the "<a class="rvts18" href="ToggleSwitchesHideMenuetc.html">Enable Background Input</a>" switch on/off. &nbsp;1 sets it to enabled, 0 sets it to disabled.</p>
<p><br/></p>
<p><span class="rvts29">fceux -bginput flag</span></p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux -bginput 0</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -playmovie smb.fm2 -readonly 0 -bginput 1 smb0.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Use Game Genie</span></p>
<p>Sets the Game Genie Flag (see <a class="rvts18" href="ToggleSwitchesHideMenuetc.html">Toggle Switches</a>). &nbsp;1 sets it to enabled, 0 sets it to disabled.</p>
<p><br/></p>
<p><span class="rvts29">fceux -gg flag</span></p>
<p><span class="rvts28"><br/></span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -gg 1</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -gg 1 smb0.nes</span></p>
<p><br/></p>
<p><span class="rvts16">PAL Emulation</span></p>
<p>Sets the PAL region. 1 sets it to enabled, 0 sets it to disabled.</p>
<p>(note: FCEUX will assign PAL emulation automatically if a PAL ROM is loaded) </p>
<p><br/></p>
<p><span class="rvts29">fceux -pal flag</span></p>
<p><span class="rvts28"><br/></span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -pal 1</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -pal 1 smb0.nes</span></p>
<p><br/></p>
<p><span class="rvts16">Dendy Emulation</span></p>
<p>Sets the Dendy region. 1 sets it to enabled, 0 sets it to disabled.</p>
<p>(note: If set to 1, it will override <span class="rvts28">-pal</span> argument) </p>
<p><br/></p>
<p><span class="rvts29">fceux -dendy flag</span></p>
<p><span class="rvts28"><br/></span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -dendy 1</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -dendy 1 smb0.nes</span></p>
<p><br/></p>
<p><span class="rvts16">Movie Status Icon Toggle</span></p>
<p>Sets the Status Icon Toggle (see <a class="rvts18" href="ToggleSwitchesHideMenuetc.html">Toggle Switches</a>). &nbsp;1 turns off the status icon, 0 turns it on.</p>
<p><br/></p>
<p><span class="rvts29">fceux -noicon flag</span></p>
<p><span class="rvts28"><br/></span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -noicon 1</span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -noicon 0 smb0.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Clip Left and Right Sides</span></p>
<p>Sets the Clip Left and Right Sides Toggle (see <a class="rvts18" href="Video.html">Video Config</a>). &nbsp;1 turns on clipping, 0 turns it off.</p>
<p><br/></p>
<p><span class="rvts29">fceux -clipsides flag</span></p>
<p><span class="rvts28"><br/></span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -clipsides 0 smb0.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Allow More than 8 Sprites per Scanline</span></p>
<p>Sets the 8 Sprites per scanline flag (see <a class="rvts18" href="Video.html">Video Config</a>). &nbsp;1 turns on extra sprites, 0 turns it off.</p>
<p><br/></p>
<p><span class="rvts29">fceux -no8lim flag</span></p>
<p><span class="rvts28"><br/></span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -no8lim 0 smb0.nes</span></p>
<p><span class="rvts28"><br/></span></p>
<p><span class="rvts28"><br/></span></p>
<p><span class="rvts16">Disable Speed Throttling</span></p>
<p>Sets the Disable Speed Throttling When Sound is Disabled flag (see <a class="rvts18" href="Timing.html">Timing Config</a>). &nbsp;1 disables throttling, 0 leaves it on.</p>
<p><br/></p>
<p><span class="rvts29">fceux -nothrottle flag</span></p>
<p><span class="rvts28"><br/></span></p>
<p><span class="rvts28"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts28">fceux -nothrottle 0 smb0.nes</span></p>
<p><span class="rvts30"><br/></span></p>
<p><span class="rvts30"><br/></span></p>
<p><span class="rvts16">Turbo Toggle</span></p>
<p>Sets the Turbo Toggle. &nbsp;1 Sets Turbo on, 0 leaves it off.</p>
<p><br/></p>
<p><span class="rvts29">fceux &nbsp;-turbo flag</span></p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux -turbo 1 smb0.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Load Config File</span></p>
<p>Loads a specified config file rather than the default fceux.cfg</p>
<p><br/></p>
<p>Warning: &nbsp;the config file must be in the base directory. &nbsp;A pathname can NOT be specified in the filename</p>
<p><br/></p>
<p>fceux -cfg filename</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux -cfg fceux-smbconfig.cfg smb.nes</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Load Lua Script</span></p>
<p>Loads a Lua script on startup.</p>
<p><br/></p>
<p>fceux -lua filename</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;<span class="rvts28">fceux -lua memwatch.lua</span></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="CommandLineOptions"
data-hnd-context="50"
data-hnd-title="Command Line Options"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="General.html">General</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="General.html" title="General" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Gamefilecompatibility.html" title="Game file compatibility" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="CustomizingthroughtheConfigFil.html" title="Customizing through the Config File" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Command Line Options</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Command Line Options</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX offers numerous command line options.</span></p>
<p class="rvps2"><span class="rvts6">All commands are case sensitive.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">ROM name</span></p>
<p class="rvps2"><span class="rvts6">Plays specified ROM (ROM name must always be put last in command line arguments)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux path\rom.nes</span><span class="rvts6"> (or </span><span class="rvts40">rom.zip</span><span class="rvts6">)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux smb.nes</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux c:\fceux\roms\smb.zip</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Play Movie File</span></p>
<p class="rvps2"><span class="rvts6">Plays a specified movie (.fm2) file. &nbsp;A valid ROM must be specified or movie will not be played.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fcuex -playmovie path\movie.fm2 romname</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -playmovie smb.fm2 smb.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Read-only Status</span></p>
<p class="rvps2"><span class="rvts6">Specifies whether a movie will be in "read-only" or "read &amp; write" mode. &nbsp;(Note: a specified movie is not required to be used in conjunction with this command). 1 specifies read only status, 0 specifies read &amp; write.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -readonly flag</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -readonly 1</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -readonly 0 -playmovie smb.fm2 smb.nes</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -readonly 1 -playmovie c:\fceux\movies\smb.fm2 c:\fceux\roms\smb.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Stop Movie at frame x</span></p>
<p class="rvps2"><span class="rvts6">Specifies that the movie will automatically stop at the specified frame. &nbsp;(A movie must be specified with -playmovie for this command to work)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -playmovie path\movie.fm2 -stopframe framenumber romname</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -playmovie smb.fm2 -stopframe 10000 smb.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Load State</span></p>
<p class="rvps2"><span class="rvts6">Specifies FCEUX to automatically load a specified savestate file. &nbsp;(Must have a specified ROM for this to work).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -loadstate path\savestatefile romname</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -loadstate smb0.fc0 smb.nes</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -playmovie smb.fm2 -readonly 0 -loadstate smb0.fc0 smb.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Pause Movie After Playback</span></p>
<p class="rvps2"><span class="rvts6">Sets the "</span><a class="rvts41" href="ToggleSwitchesHideMenuetc.html">Pause Movie After Playback</a><span class="rvts6">" switch on/off. &nbsp;1 sets it to enabled, 0 sets it to disabled.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -stopmovie flag</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -stopmovie 1</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -playmovie smb.fm2 -readonly 0 - stopmovie 1 smb0.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Frame Display Toggle</span></p>
<p class="rvps2"><span class="rvts6">Toggles whether or not the frame count will be displayed. &nbsp;1 sets it to on, 0 sets it to off.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -framedisplay flag</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -framedisplay 1</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -playmovie smb2.fm2 -framedisplay 1 smb0.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Input Display Toggle</span></p>
<p class="rvps2"><span class="rvts6">Toggles whether the movie input will be displayed. &nbsp;1 sets it to on, 0 sets it to off.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -inputdisplay flag</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -inputdisplay 1</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -playmovie smb2.fm2 -inputdisplay 1 smb0.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Allow L+R/U+D</span></p>
<p class="rvps2"><span class="rvts6">Sets whether or not the game will allow L+R/U+D input (see </span><a class="rvts41" href="Input.html">Input config</a><span class="rvts6">). &nbsp;1 enables L+R, 0 disables it.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -allowUDLR flag</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -allowUDLR 1</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -allowUDLR 0 smb0.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Enable Background Input</span></p>
<p class="rvps2"><span class="rvts6">Sets the "</span><a class="rvts41" href="ToggleSwitchesHideMenuetc.html">Enable Background Input</a><span class="rvts6">" switch on/off. &nbsp;1 sets it to enabled, 0 sets it to disabled.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -bginput flag</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -bginput 0</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -playmovie smb.fm2 -readonly 0 -bginput 1 smb0.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Use Game Genie</span></p>
<p class="rvps2"><span class="rvts6">Sets the Game Genie Flag (see </span><a class="rvts41" href="ToggleSwitchesHideMenuetc.html">Toggle Switches</a><span class="rvts6">). &nbsp;1 sets it to enabled, 0 sets it to disabled.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -gg flag</span></p>
<p class="rvps2"><span class="rvts39"><br/></span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -gg 1</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -gg 1 smb0.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">PAL Emulation</span></p>
<p class="rvps2"><span class="rvts6">Sets the PAL region. 1 sets it to enabled, 0 sets it to disabled.</span></p>
<p class="rvps2"><span class="rvts6">(note: FCEUX will assign PAL emulation automatically if a PAL ROM is loaded)&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -pal flag</span></p>
<p class="rvps2"><span class="rvts39"><br/></span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -pal 1</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -pal 1 smb0.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Dendy Emulation</span></p>
<p class="rvps2"><span class="rvts6">Sets the Dendy region. 1 sets it to enabled, 0 sets it to disabled.</span></p>
<p class="rvps2"><span class="rvts6">(note: If set to 1, it will override </span><span class="rvts39">-pal</span><span class="rvts6"> argument)&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -dendy flag</span></p>
<p class="rvps2"><span class="rvts39"><br/></span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -dendy 1</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -dendy 1 smb0.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Movie Status Icon Toggle</span></p>
<p class="rvps2"><span class="rvts6">Sets the Status Icon Toggle (see </span><a class="rvts41" href="ToggleSwitchesHideMenuetc.html">Toggle Switches</a><span class="rvts6">). &nbsp;1 turns off the status icon, 0 turns it on.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -noicon flag</span></p>
<p class="rvps2"><span class="rvts39"><br/></span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -noicon 1</span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -noicon 0 smb0.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Clip Left and Right Sides</span></p>
<p class="rvps2"><span class="rvts6">Sets the Clip Left and Right Sides Toggle (see </span><a class="rvts41" href="Video.html">Video Config</a><span class="rvts6">). &nbsp;1 turns on clipping, 0 turns it off.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -clipsides flag</span></p>
<p class="rvps2"><span class="rvts39"><br/></span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -clipsides 0 smb0.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Allow More than 8 Sprites per Scanline</span></p>
<p class="rvps2"><span class="rvts6">Sets the 8 Sprites per scanline flag (see </span><a class="rvts41" href="Video.html">Video Config</a><span class="rvts6">). &nbsp;1 turns on extra sprites, 0 turns it off.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -no8lim flag</span></p>
<p class="rvps2"><span class="rvts39"><br/></span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -no8lim 0 smb0.nes</span></p>
<p class="rvps2"><span class="rvts39"><br/></span></p>
<p class="rvps2"><span class="rvts39"><br/></span></p>
<p class="rvps2"><span class="rvts21">Disable Speed Throttling</span></p>
<p class="rvps2"><span class="rvts6">Sets the Disable Speed Throttling When Sound is Disabled flag (see </span><a class="rvts41" href="Timing.html">Timing Config</a><span class="rvts6">). &nbsp;1 disables throttling, 0 leaves it on.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux -nothrottle flag</span></p>
<p class="rvps2"><span class="rvts39"><br/></span></p>
<p class="rvps2"><span class="rvts39"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -nothrottle 0 smb0.nes</span></p>
<p class="rvps2"><span class="rvts42"><br/></span></p>
<p class="rvps2"><span class="rvts42"><br/></span></p>
<p class="rvps2"><span class="rvts21">Turbo Toggle</span></p>
<p class="rvps2"><span class="rvts6">Sets the Turbo Toggle. &nbsp;1 Sets Turbo on, 0 leaves it off.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts40">fceux &nbsp;-turbo flag</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -turbo 1 smb0.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Load Config File</span></p>
<p class="rvps2"><span class="rvts6">Loads a specified config file rather than the default fceux.cfg</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Warning: &nbsp;the config file must be in the base directory. &nbsp;A pathname can NOT be specified in the filename</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">fceux -cfg filename</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -cfg fceux-smbconfig.cfg smb.nes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Load Lua Script</span></p>
<p class="rvps2"><span class="rvts6">Loads a Lua script on startup.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">fceux -lua filename</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts39">fceux -lua memwatch.lua</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.helpndoc.com">Easy EBook and documentation generator</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">&times;</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>

View File

@ -1,264 +1,455 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Using Lua</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Commands");
}
});
</script>
<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>Using Lua</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Using Lua">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Using Lua" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Using Lua</h1>
<div id="topic_breadcrumb">
<a href="LuaScripting.html">Lua Scripting</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="LuaScripting.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="LuaGettingStarted.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="LuaFunctionsList.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p>(written by qFox)</p>
<p><br/></p>
<p><span class="rvts27">Introduction</span></p>
<p><br/></p>
<p>Lua is a scripting language. It is used in games like Farcry and World of Warcraft (and many other games and applications!). Even though you can find all kinds of tutorials online, let me help you with the basics.</p>
<p><br/></p>
<p>I will assume you are at least somewhat familiar with the basics of programming. So basic stuff like arrays, variables, strings, loops and if-then-else and branching are not explained here.</p>
<p><br/></p>
<p>A hello world EmuLua program looks like this:</p>
<p><br/></p>
<p>while (true) do</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;gui.text(50,50,"Hello world!");</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;emu.frameadvance();</p>
<p>end;</p>
<p><br/></p>
<p>When you load the script, the emulator will sort of go into pause mode and hand controls over to Lua (you!). Hence you are responsible for frameadvancing the emulator.</p>
<p>IF YOU DO NOT CALL emu.frameadvance AT THE CYCLE OF THE MAIN LOOP YOU WILL FREEZE THE EMULATOR! There. You have been warned. Don't worry though, you'll make this mistake at least once. Just force-quit the application and try again :)</p>
<p><br/></p>
<p><span class="rvts27">Syntax</span></p>
<p><br/></p>
<p>Now then. Just like any other language, Lua has a few quirks you should be aware of.</p>
<p><br/></p>
<p>First of all, if's require a then and end. After a couple of days intensive Lua coding, I still make this mistake myself, but the Lua interpreter will prompt you of such errors on load, so don't worry too much about it. So:</p>
<p><br/></p>
<p>if (something) then</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;dostuff</p>
<p>end;</p>
<p><br/></p>
<p>Lua uses nil instead of null.</p>
<p><br/></p>
<p>There are only two values that evaluate to "false", these are "nil" and "false". ANYTHING else will evaluate to true, even 0 or the empty string.</p>
<p><br/></p>
<p>Comments are denoted by two consecutive dashes; --. Anything after it on the same line is a comment and ignored by Lua. There is no /* */ type of commenting in Lua.</p>
<p><br/></p>
<p>Variables have a local and global scope. You explicitly make a variable local by declaring it with the "local" keyword.</p>
<p><br/></p>
<p>somethingglobal; -- accessible by any function or flow</p>
<p>local something; -- only known to the same or deeper scope as where it was declared</p>
<p><br/></p>
<p>Note that variables declared in for loops (see below) are always considered local.</p>
<p><br/></p>
<p>Arrays are called tables in Lua. To be more precise, Lua uses associative arrays.</p>
<p><br/></p>
<p>Do not rely on the table.length() when your table can contain nil values, this function stops when it encounters a nil value, thus possibly cutting your table short.</p>
<p><br/></p>
<p>One experienced programmers will have to get used to is the table offset; tables start at index 1, not 0. That's just the way it is, deal with it.</p>
<p><br/></p>
<p>There are a few ways to create a table:</p>
<p><br/></p>
<p>local tbl1 = {}; -- empty table</p>
<p>local tbl2 = {"a","b","c","d"}; -- table with 5 strings</p>
<p>local tbl3 = {a=1,b=2,c=3}; -- associative table with 3 numbers</p>
<p>local tbl4 = {"a",b=2,c="x","d"=5}; -- associative table with mixed content</p>
<p><br/></p>
<p>Note that you can mix up the data in one table, as shown by tbl4.</p>
<p><br/></p>
<p>You can refer to table values in a few equivalent manners, using the examples above:</p>
<p><br/></p>
<p>tbl1[1] -- = nil because tbl1 is empty</p>
<p>tbl2[2] -- = "b"</p>
<p>tbl3["a"] -- = 1</p>
<p>tbl4.b -- = 2</p>
<p>tbl2.3 -- = "c"</p>
<p><br/></p>
<p>When the argument of a function is just a table, the parantheses "()" are optional. So for instance:</p>
<p><br/></p>
<p>processTable({a=2,b=3});</p>
<p><br/></p>
<p>Is equivalent to</p>
<p><br/></p>
<p>processTable{a=2,b=3};</p>
<p><br/></p>
<p>Another notation that's equivalent is</p>
<p><br/></p>
<p>filehandle.read(filehandle, 5);</p>
<p>filehandle:read(5);</p>
<p><br/></p>
<p>When using the colon notation ":" Lua will call the function adding the self-reference to the front of the parameterstack.</p>
<p><br/></p>
<p>Functions behave like objects and are declared in the follow manner:</p>
<p><br/></p>
<p>function doSomething(somevalue, anothervalue)</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;dostuffhere</p>
<p>end;</p>
<p><br/></p>
<p>So no curly braces "{}" !</p>
<p><br/></p>
<p>Some flow control:</p>
<p><br/></p>
<p>for i=0,15 do</p>
<p> &nbsp;-- do stuff here, i runs from 0 to 15 (inclusive!)</p>
<p>end;</p>
<p><br/></p>
<p>for key,value in pairs(table) do</p>
<p> &nbsp;-- do stuff here. pairs will iterate through the table, splitting the keys and values</p>
<p>end;</p>
<p><br/></p>
<p>while (somethingistrue) do</p>
<p><br/></p>
<p>end;</p>
<p><br/></p>
<p>if (somethingistrue) then</p>
<p><br/></p>
<p>end;</p>
<p><br/></p>
<p>if (somethingistrue) then</p>
<p><br/></p>
<p>else</p>
<p><br/></p>
<p>end;</p>
<p><br/></p>
<p>if (somethingistrue) then</p>
<p><br/></p>
<p>elseif (somethingelseistrue) then</p>
<p><br/></p>
<p>end;</p>
<p><br/></p>
<p>For comparison, you only have to remember that the exclamationmark is not used. Not equal "!=" is written like tilde-equals "~=" and if (!something) then ... is written with "not " in front of it; if (not something) then...</p>
<p><br/></p>
<p>For easy reference to the standard libraries look on the bottom half of this page: http://www.lua.org/manual/5.1/</p>
<p><br/></p>
<p><span class="rvts27">Lua in FCEUX</span></p>
<p><br/></p>
<p>Now then, let's get to the emulator specifics!</p>
<p><br/></p>
<p>To load a Lua script in FCEU first load a rom (Lua can only do things after each frame cycle so load a rom first). Go to file, at the bottom choose Run Lua Script and select and load the file.</p>
<p><br/></p>
<p>When Lua starts, the emulator pauses and hands control over to Lua. Lua (that's you!) decides when the next frame is processed. That's why it's very common to write an endless while loop, exiting the main loop of a script will exit the script and hand control back to the emulator. This also happens when a script unexpectingly crashes.</p>
<p><br/></p>
<p>A bare script looks like this:</p>
<p><br/></p>
<p>while (true) do</p>
<p> &nbsp;emu.frameadvance();</p>
<p>end;</p>
<p><br/></p>
<p>And is about equal to not running Lua at all. The frameadvance function is the same called internally, so no loss of speed there!</p>
<p><br/></p>
<p>Bitwise operators:</p>
<p><br/></p>
<p>Lua does not have bitwise operators, so we supply some for you. These are common bitwise operators, nothing fancy.</p>
<p><br/></p>
<p>AND(a,b);</p>
<p>OR(a,b);</p>
<p>XOR(a,b);</p>
<p>BIT(n); -- returns a number with only bit n set (1)</p>
<p><br/></p>
<p>The emulator specific Lua is equal to the one of snes9x, with some platform specific changes (few buttons, for instance). </p>
<p>You can find the reference here: <a class="rvts18" href="http://dehacked.2y.net/snes9x-lua.html" target="_blank">http://dehacked.2y.net/snes9x-lua.html</a></p>
<p>The following is a quick reference, you can go to the snes9x reference for more details.</p>
<p><br/></p>
<p>To paint stuff on screen, use the gui table. This contains a few predefined functions to manipulate the main window. For any coordinate, 0,0 is the top-left pixel of the window. You have to prevent out-of-bound errors yourself for now. If a color can be passed on, it is a string. HTML-syntax is supported ("#34053D"), as well as a FEW colors ("red", "green", "blue" ...).</p>
<p><br/></p>
<p>gui.text(x, y, str); -- Print a line to the window, you can use \n for a return but it will only work once</p>
<p>gui.pixel(x, y, color); -- plot a pixel at the given coordinate</p>
<p>gui.line(x1, y1, x2, y2, color); -- plot a line from x1,y1 to x2,y2</p>
<p>gui.box(x1, y1, x2, y2, color); -- draw a square from x1,y1 to x2,y2</p>
<p>gui.popup(str); -- pops up a messagebox informing the user of something. Real handy when debugging!</p>
<p>gui.getpixel(x,y); -- return the values of the pixel at given position. Returns three numbers of the emulator image before paiting is applied.</p>
<p>gui.gdscreenshot(); -- Takes a screen shot of the image and returns it in the form of a string which can be imported by the gd library using the gd.createFromGdStr() function</p>
<p>(for more gd functions see DeHackED's reference: http://dehacked.2y.net/snes9x-lua.html)</p>
<p><br/></p>
<p>PAINTING IS ALWAYS ONE FRAME BEHIND! This is because the painting is done at the creation of the next frame, not while Lua is running.</p>
<p><br/></p>
<p>Emulator control:</p>
<p><br/></p>
<p>emu.frameadvance(); -- advances emulation ONE frame</p>
<p>emu.pause(); -- same as pressing the pause button</p>
<p>emu.speedmode(strMode); -- Supported are "normal","turbo","nothrottle","maximum". But know that except for "normal", all other modes will run as "turbo" for now.</p>
<p>emu.wait(); -- skips the emulation of the next frame, in case your script needs to wait for something</p>
<p><br/></p>
<p>Memory control:</p>
<p><br/></p>
<p>memory.readbyte(adr); -- read one byte from given address and return it. Besides decimal values Lua also allows the hex notation 0x00FA. In FCEUX reading is done BEFORE the cheats are applied!</p>
<p>memory.writebyte(adr, value); -- write one byte to the RAM of the NES. writing is done AFTER the hexeditor receives its values, so if you are freezing an address by Lua, it will not show in the hex editor (but it will in the game :)</p>
<p>memory.readbytesigned(adr); -- same as readbyte, except this returns a signed value, rather then an unsigned value.</p>
<p>memory.register(adr, function); -- binds a function to an address. The function will be called when an address changes. NOTE THAT THIS IS EXPENSIVE (eg.: slow)! Only one function allowed per address.</p>
<p><br/></p>
<p>Input control:</p>
<p><br/></p>
<p>You can read and write input by using the joypad table. A input table has the following (case sensitive) keys, where nil denotes they are not to be pressed: up down left right start select A B</p>
<p><br/></p>
<p>joypad.read(playern); -- get the input table for the player who's input you want to read (a number!)</p>
<p>joypad.write(playern, inputtable); -- set the input for player n. Note that this will overwrite any input from the user, and only when this is used.</p>
<p><br/></p>
<p>Savestates:</p>
<p><br/></p>
<p>You can load and save to the predefined savestates 1 ... 9 or create new "anonymous" savestates. You must first create a savestate object, which is your handle to a savestate. Then you can pass this handle on to savestate.load or save to do so.</p>
<p><br/></p>
<p>savestate.create(n); -- n is optional. When supplied, it will create a savestate for slot n, otherwise a new (anonymous) savestate object is created. Note that this does not yet save or load anything!</p>
<p>savestate.load(state); -- load the given savestate</p>
<p>savestate.save(state); -- save the given savestate</p>
<p><br/></p>
<p>For an up-to-date list of functions, see the <a class="rvts18" href="LuaFunctionsList.html">Lua Functions List</a>.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Web Help sites</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Commands"
data-hnd-context="61"
data-hnd-title="Using Lua"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="LuaScripting.html">Lua Scripting</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="LuaScripting.html" title="Lua Scripting" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="LuaGettingStarted.html" title="Getting Started" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="LuaFunctionsList.html" title="Lua Functions List" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Using Lua</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts6">(written by qFox)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Introduction</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Lua is a scripting language. It is used in games like Farcry and World of Warcraft (and many other games and applications!). Even though you can find all kinds of tutorials online, let me help you with the basics.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">I will assume you are at least somewhat familiar with the basics of programming. So basic stuff like arrays, variables, strings, loops and if-then-else and branching are not explained here.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A hello world EmuLua program looks like this:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">while (true) do</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">gui.text(50,50,"Hello world!");</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">emu.frameadvance();</span></p>
<p class="rvps2"><span class="rvts6">end;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When you load the script, the emulator will sort of go into pause mode and hand controls over to Lua (you!). Hence you are responsible for frameadvancing the emulator.</span></p>
<p class="rvps2"><span class="rvts6">IF YOU DO NOT CALL emu.frameadvance AT THE CYCLE OF THE MAIN LOOP YOU WILL FREEZE THE EMULATOR! There. You have been warned. Don't worry though, you'll make this mistake at least once. Just force-quit the application and try again :)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Syntax</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Now then. Just like any other language, Lua has a few quirks you should be aware of.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">First of all, if's require a then and end. After a couple of days intensive Lua coding, I still make this mistake myself, but the Lua interpreter will prompt you of such errors on load, so don't worry too much about it. So:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">if (something) then</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">dostuff</span></p>
<p class="rvps2"><span class="rvts6">end;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Lua uses nil instead of null.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">There are only two values that evaluate to "false", these are "nil" and "false". ANYTHING else will evaluate to true, even 0 or the empty string.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Comments are denoted by two consecutive dashes; --. Anything after it on the same line is a comment and ignored by Lua. There is no /* */ type of commenting in Lua.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Variables have a local and global scope. You explicitly make a variable local by declaring it with the "local" keyword.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">somethingglobal; -- accessible by any function or flow</span></p>
<p class="rvps2"><span class="rvts6">local something; -- only known to the same or deeper scope as where it was declared</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Note that variables declared in for loops (see below) are always considered local.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Arrays are called tables in Lua. To be more precise, Lua uses associative arrays.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Do not rely on the table.length() when your table can contain nil values, this function stops when it encounters a nil value, thus possibly cutting your table short.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">One experienced programmers will have to get used to is the table offset; tables start at index 1, not 0. That's just the way it is, deal with it.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">There are a few ways to create a table:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">local tbl1 = {}; -- empty table</span></p>
<p class="rvps2"><span class="rvts6">local tbl2 = {"a","b","c","d"}; -- table with 5 strings</span></p>
<p class="rvps2"><span class="rvts6">local tbl3 = {a=1,b=2,c=3}; -- associative table with 3 numbers</span></p>
<p class="rvps2"><span class="rvts6">local tbl4 = {"a",b=2,c="x","d"=5}; -- associative table with mixed content</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Note that you can mix up the data in one table, as shown by tbl4.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can refer to table values in a few equivalent manners, using the examples above:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">tbl1[1] -- = nil because tbl1 is empty</span></p>
<p class="rvps2"><span class="rvts6">tbl2[2] -- = "b"</span></p>
<p class="rvps2"><span class="rvts6">tbl3["a"] -- = 1</span></p>
<p class="rvps2"><span class="rvts6">tbl4.b -- = 2</span></p>
<p class="rvps2"><span class="rvts6">tbl2.3 -- = "c"</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When the argument of a function is just a table, the parantheses "()" are optional. So for instance:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">processTable({a=2,b=3});</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Is equivalent to</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">processTable{a=2,b=3};</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Another notation that's equivalent is</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">filehandle.read(filehandle, 5);</span></p>
<p class="rvps2"><span class="rvts6">filehandle:read(5);</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When using the colon notation ":" Lua will call the function adding the self-reference to the front of the parameterstack.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Functions behave like objects and are declared in the follow manner:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">function doSomething(somevalue, anothervalue)</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">dostuffhere</span></p>
<p class="rvps2"><span class="rvts6">end;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">So no curly braces "{}" !</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Some flow control:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">for i=0,15 do</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; -- do stuff here, i runs from 0 to 15 (inclusive!)</span></p>
<p class="rvps2"><span class="rvts6">end;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">for key,value in pairs(table) do</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; -- do stuff here. pairs will iterate through the table, splitting the keys and values</span></p>
<p class="rvps2"><span class="rvts6">end;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">while (somethingistrue) do</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">end;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">if (somethingistrue) then</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">end;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">if (somethingistrue) then</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">else</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">end;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">if (somethingistrue) then</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">elseif (somethingelseistrue) then</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">end;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For comparison, you only have to remember that the exclamationmark is not used. Not equal "!=" is written like tilde-equals "~=" and if (!something) then ... is written with "not " in front of it; if (not something) then...</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For easy reference to the standard libraries look on the bottom half of this page: http://www.lua.org/manual/5.1/</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Lua in FCEUX</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Now then, let's get to the emulator specifics!</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To load a Lua script in FCEU first load a rom (Lua can only do things after each frame cycle so load a rom first). Go to file, at the bottom choose Run Lua Script and select and load the file.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When Lua starts, the emulator pauses and hands control over to Lua. Lua (that's you!) decides when the next frame is processed. That's why it's very common to write an endless while loop, exiting the main loop of a script will exit the script and hand control back to the emulator. This also happens when a script unexpectingly crashes.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A bare script looks like this:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">while (true) do</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; emu.frameadvance();</span></p>
<p class="rvps2"><span class="rvts6">end;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">And is about equal to not running Lua at all. The frameadvance function is the same called internally, so no loss of speed there!</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Bitwise operators:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Lua does not have bitwise operators, so we supply some for you. These are common bitwise operators, nothing fancy.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">AND(a,b);</span></p>
<p class="rvps2"><span class="rvts6">OR(a,b);</span></p>
<p class="rvps2"><span class="rvts6">XOR(a,b);</span></p>
<p class="rvps2"><span class="rvts6">BIT(n); -- returns a number with only bit n set (1)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The emulator specific Lua is equal to the one of snes9x, with some platform specific changes (few buttons, for instance).&nbsp;</span></p>
<p class="rvps2"><span class="rvts6">You can find the reference here: </span><a class="rvts92" href="http://dehacked.2y.net/snes9x-lua.html" target="_blank">http://dehacked.2y.net/snes9x-lua.html</a></p>
<p class="rvps2"><span class="rvts6">The following is a quick reference, you can go to the snes9x reference for more details.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To paint stuff on screen, use the gui table. This contains a few predefined functions to manipulate the main window. For any coordinate, 0,0 is the top-left pixel of the window. You have to prevent out-of-bound errors yourself for now. If a color can be passed on, it is a string. HTML-syntax is supported ("#34053D"), as well as a FEW colors ("red", "green", "blue" ...).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">gui.text(x, y, str); -- Print a line to the window, you can use \n for a return but it will only work once</span></p>
<p class="rvps2"><span class="rvts6">gui.pixel(x, y, color); -- plot a pixel at the given coordinate</span></p>
<p class="rvps2"><span class="rvts6">gui.line(x1, y1, x2, y2, color); -- plot a line from x1,y1 to x2,y2</span></p>
<p class="rvps2"><span class="rvts6">gui.box(x1, y1, x2, y2, color); -- draw a square from x1,y1 to x2,y2</span></p>
<p class="rvps2"><span class="rvts6">gui.popup(str); -- pops up a messagebox informing the user of something. Real handy when debugging!</span></p>
<p class="rvps2"><span class="rvts6">gui.getpixel(x,y); -- return the values of the pixel at given position. Returns three numbers of the emulator image before paiting is applied.</span></p>
<p class="rvps2"><span class="rvts6">gui.gdscreenshot(); -- Takes a screen shot of the image and returns it in the form of a string which can be imported by the gd library using the gd.createFromGdStr() function</span></p>
<p class="rvps2"><span class="rvts6">(for more gd functions see DeHackED's reference: http://dehacked.2y.net/snes9x-lua.html)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">PAINTING IS ALWAYS ONE FRAME BEHIND! This is because the painting is done at the creation of the next frame, not while Lua is running.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Emulator control:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">emu.frameadvance(); -- advances emulation ONE frame</span></p>
<p class="rvps2"><span class="rvts6">emu.pause(); -- same as pressing the pause button</span></p>
<p class="rvps2"><span class="rvts6">emu.speedmode(strMode); -- Supported are "normal","turbo","nothrottle","maximum". But know that except for "normal", all other modes will run as "turbo" for now.</span></p>
<p class="rvps2"><span class="rvts6">emu.wait(); -- skips the emulation of the next frame, in case your script needs to wait for something</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Memory control:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">memory.readbyte(adr); -- read one byte from given address and return it. Besides decimal values Lua also allows the hex notation 0x00FA. In FCEUX reading is done BEFORE the cheats are applied!</span></p>
<p class="rvps2"><span class="rvts6">memory.writebyte(adr, value); -- write one byte to the RAM of the NES. writing is done AFTER the hexeditor receives its values, so if you are freezing an address by Lua, it will not show in the hex editor (but it will in the game :)</span></p>
<p class="rvps2"><span class="rvts6">memory.readbytesigned(adr); -- same as readbyte, except this returns a signed value, rather then an unsigned value.</span></p>
<p class="rvps2"><span class="rvts6">memory.register(adr, function); -- binds a function to an address. The function will be called when an address changes. NOTE THAT THIS IS EXPENSIVE (eg.: slow)! Only one function allowed per address.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Input control:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can read and write input by using the joypad table. A input table has the following (case sensitive) keys, where nil denotes they are not to be pressed: up down left right start select A B</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">joypad.read(playern); -- get the input table for the player who's input you want to read (a number!)</span></p>
<p class="rvps2"><span class="rvts6">joypad.write(playern, inputtable); -- set the input for player n. Note that this will overwrite any input from the user, and only when this is used.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Savestates:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can load and save to the predefined savestates 1 ... 9 or create new "anonymous" savestates. You must first create a savestate object, which is your handle to a savestate. Then you can pass this handle on to savestate.load or save to do so.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">savestate.create(n); -- n is optional. When supplied, it will create a savestate for slot n, otherwise a new (anonymous) savestate object is created. Note that this does not yet save or load anything!</span></p>
<p class="rvps2"><span class="rvts6">savestate.load(state); -- load the given savestate</span></p>
<p class="rvps2"><span class="rvts6">savestate.save(state); -- save the given savestate</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For an up-to-date list of functions, see the </span><a class="rvts92" href="LuaFunctionsList.html">Lua Functions List</a><span class="rvts6">.</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">&times;</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>

View File

@ -1,121 +1,316 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Config</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Config");
}
});
</script>
<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>Config</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Config">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Config" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Config</h1>
</div>
<div id="topic_header_nav">
<a href="PaletteOptions.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="ToggleSwitchesHideMenuetc.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">The Config Menu</span></p>
<p><br/></p>
<p><br/></p>
<p>These chapters explain options under FCEUX's Config menu.</p>
<p><br/></p>
<p><a class="rvts34" href="ToggleSwitchesHideMenuetc.html">Menu Items &amp; Sub-menus</a></p>
<p><br/></p>
<p>Explains the basic menu items and sub-menu items in the top of the menu.</p>
<p><br/></p>
<p><a class="rvts34" href="GUI.html">GUI</a></p>
<p><br/></p>
<p>Settings related to the FCEU emulator window.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="Directories.html">Directories</a></p>
<p><br/></p>
<p>Sets Directory override assignments.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="Input.html">Input</a></p>
<p><br/></p>
<p>Assigns keys/joypad buttons to emulated controllers.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="NetworkPlay.html">Network Play</a></p>
<p><br/></p>
<p>Various settings related to playing over the internet.</p>
<p><br/></p>
<p><a class="rvts34" href="Palette.html">Palette</a></p>
<p><br/></p>
<p>Palette options.</p>
<p><br/></p>
<p><a class="rvts34" href="SoundOptions.html">Sound</a></p>
<p><br/></p>
<p>Sets sound configuration options.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="Timing.html">Timing</a></p>
<p><br/></p>
<p>Settings related to emulation timing.</p>
<p><br/></p>
<p><a class="rvts25" href="Video.html">Video</a></p>
<p><br/></p>
<p>Sets video &amp; graphics configuration options.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="MovieOptions.html">Movie Options</a></p>
<p><br/></p>
<p>Sets options related to playing/recording movie files</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts34" href="MapHotkeys.html">Map Hotkeys</a></p>
<p><br/></p>
<p>Sets Hotkey assignments.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Config"
data-hnd-context="41"
data-hnd-title="Config"
>
<div class="navigation">
<ol class="breadcrumb">
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="PaletteOptions.html" title="Palette Options" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="ToggleSwitchesHideMenuetc.html" title="Menu Items &amp; Submenus" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Config</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">The Config Menu</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">These chapters explain options under FCEUX's Config menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="ToggleSwitchesHideMenuetc.html">Menu Items &amp; Sub-menus</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Explains the basic menu items and sub-menu items in the top of the menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="GUI.html">GUI</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Settings related to the FCEU emulator window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Directories.html">Directories</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Sets Directory override assignments.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Input.html">Input</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Assigns keys/joypad buttons to emulated controllers.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="NetworkPlay.html">Network Play</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Various settings related to playing over the internet.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Palette.html">Palette</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Palette options.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="SoundOptions.html">Sound</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Sets sound configuration options.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Timing.html">Timing</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Settings related to emulation timing.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Video.html">Video</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Sets video &amp; graphics configuration options.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="MovieOptions.html">Movie Options</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Sets options related to playing/recording movie files</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="MapHotkeys.html">Map Hotkeys</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Sets Hotkey assignments.</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.helpndoc.com/feature-tour">Easily create PDF Help documents</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">&times;</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>

View File

@ -1,202 +1,393 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Context Menu Items</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("ContextMenuItems");
}
});
</script>
<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>Context Menu Items</title>
<meta name="description" content="" />
<meta name="keywords" content="context menu">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Context Menu Items">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Context Menu Items" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Context Menu Items</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="MapHotkeys.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Tools2.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<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="ContextMenuItems"
data-hnd-context="68"
data-hnd-title="Context Menu Items"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="MapHotkeys.html" title="Map Hotkeys" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Tools2.html" title="Tools" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Context Menu Items</h2>
<div class="main-content">
<p></p>
<p><span class="rvts17">Context Menu</span></p>
<p><br/></p>
<p>FCEUX includes a context menu that allows commonly used menu functions for various situations. &nbsp;There are some functions that appear only here.</p>
<p><br/></p>
<p>This page describes all the possible menu items in each possible context situation.</p>
<p><br/></p>
<p><span class="rvts16">No game loaded.</span></p>
<p><br/></p>
<p>Appears when no game is loaded.</p>
<p><br/></p>
<p><span class="rvts10">Open ROM</span></p>
<p>Same as the File &gt; Open ROM option</p>
<p><br/></p>
<p><span class="rvts10">Last ROM used</span></p>
<p>Opens the most recently used file from the Recent Files Menu</p>
<p><br/></p>
<p><span class="rvts10">Help</span></p>
<p>Brings up the Getting Started chapter in the help document.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Game Loaded</span></p>
<p><br/></p>
<p>Appears when a game is loaded, but not a movie (.fm2).</p>
<p><br/></p>
<p><span class="rvts10">Play Movie...</span></p>
<p>Same as the File &gt; Movie &gt; Play Movie menu item.</p>
<p><br/></p>
<p><span class="rvts10">Record Movie...</span></p>
<p>Same as the File &gt; Movie &gt; Record Movie menu item.</p>
<p><br/></p>
<p><span class="rvts10">Undo savestate</span></p>
<p>If this option is enabled it means the last savestate saved over-wrote a previous savestate file. &nbsp;This option restores the previous savestate file.</p>
<p><br/></p>
<p><span class="rvts10">Redo savestate</span></p>
<p>If this option is in the menu, it means that Undo savestate was recently used to restore a previous savestate. &nbsp;This reverts that change.</p>
<p><br/></p>
<p><span class="rvts10">Rewind to last auto-save</span></p>
<p>Auto-save must be enabled for this menu item to be accessible. &nbsp;Same as the Load last auto-save Hotkey Item. &nbsp;It loads the last auto-savestate. &nbsp;Auto-savestates are created once about every 4 seconds, so this typically has the effect of rewinding emulation.</p>
<p><br/></p>
<p><span class="rvts10">Screenshot</span></p>
<p>Same as File &gt; Screenshot.</p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Close ROM</span></p>
<p>Same as File &gt; Close</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Movie loaded - Read-only</span></p>
<p><br/></p>
<p>Appears when a movie is loaded and Read-only mode is set.</p>
<p><br/></p>
<p><span class="rvts10">Toggle to read+write</span></p>
<p>Sets Read status to Read+Write.</p>
<p><br/></p>
<p><span class="rvts10">Play Movie from Beginning</span></p>
<p>Same as File &gt; Movie &gt; Play from Beginning. &nbsp;Turns Read status to Read-Only and plays the movie from frame 1.</p>
<p><br/></p>
<p><span class="rvts10">Stop Movie Replay</span></p>
<p>Same as File &gt; Movie &gt; Stop Movie.</p>
<p><br/></p>
<p><span class="rvts10">View comments and subtitles</span></p>
<p>Opens up the Metadata dialog. &nbsp;Same as the Metadata button on the Play movie dialog.</p>
<p><br/></p>
<p><span class="rvts10">Undo savestate</span></p>
<p>If this option is enabled it means the last savestate saved over-wrote a previous savestate file. &nbsp;This option restores the previous savestate file.</p>
<p><br/></p>
<p><span class="rvts10">Redo savestate</span></p>
<p>If this option is in the menu, it means that Undo savestate was recently used to restore a previous savestate. &nbsp;This reverts that change.</p>
<p><br/></p>
<p><span class="rvts10">Rewind to last auto-save</span></p>
<p>Auto-save must be enabled for this menu item to be accessible. &nbsp;Same as the Load last auto-save Hotkey Item. &nbsp;It loads the last auto-savestate. &nbsp;Auto-savestates are created once about every 4 seconds, so this typically has the effect of rewinding emulation.</p>
<p><br/></p>
<p><span class="rvts10">Help</span></p>
<p>Opens the Movie recording chapter of the help document.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Movie loaded - Read + Write</span></p>
<p><br/></p>
<p><span class="rvts10">Toggle to Read-only</span></p>
<p>Sets Read status to Read-Only.</p>
<p><br/></p>
<p><span class="rvts10">Play Movie From Beginning</span></p>
<p>Same as File &gt; Movie &gt; Play from Beginning. &nbsp;Turns Read status to Read-Only and plays the movie from frame 1.</p>
<p><br/></p>
<p><span class="rvts10">Stop Movie Recording</span></p>
<p>Same as File &gt; Movie &gt; Stop Movie.</p>
<p><br/></p>
<p><span class="rvts10">View comments and subtitles</span></p>
<p>Opens up the Metadata dialog. &nbsp;Same as the Metadata button on the Play movie dialog.</p>
<p><br/></p>
<p><span class="rvts10">Make backup</span></p>
<p>Generates a backup .fm2. &nbsp;Uses the same file naming system as the auto-movie backup. &nbsp;(See <a class="rvts18" href="MovieOptions.html">movie options</a> for details).</p>
<p><br/></p>
<p><span class="rvts10">Undo savestate</span></p>
<p>If this option is enabled it means the last savestate saved over-wrote a previous savestate file. &nbsp;This option restores the previous savestate file.</p>
<p><br/></p>
<p><span class="rvts10">Redo savestate</span></p>
<p>If this option is in the menu, it means that Undo savestate was recently used to restore a previous savestate. &nbsp;This reverts that change.</p>
<p><br/></p>
<p><span class="rvts10">Undo loadstate</span></p>
<p>If this option is enabled it was because the Loadstate function was called sometime while the game was loaded. &nbsp;This function restores the game state to where it was before loadstate was called.</p>
<p><br/></p>
<p><span class="rvts10">Redo loadstate</span></p>
<p>If Undo loadstate was called, this option is available. &nbsp;It reverts the change and restores the game back to the point it was when loadstate was called.</p>
<p><br/></p>
<p><span class="rvts10">Help</span></p>
<p>Opens the Movie recording chapter of the help document.</p>
<p><br/></p>
<p><span class="rvts10">Additional items may also appear related to these situations:</span></p>
<p><br/></p>
<p><span class="rvts16">Lua</span></p>
<p><br/></p>
<p><span class="rvts10">Load last Lua</span></p>
<p>If there is at least 1 filename in the Recent Lua Files menu this calls the most recently used Lua script file. &nbsp;Has the same effect as the File &gt; Lua &gt; Reload Lua Script menu item.</p>
<p><br/></p>
<p><span class="rvts10">Stop Lua</span></p>
<p>If a Lua script is currently loaded this option is available. &nbsp;Same as File &gt; Lua &gt; Stop Lua Script.</p>
<p><br/></p>
<p><span class="rvts16">Hide Menu</span></p>
<p><br/></p>
<p><span class="rvts10">Unhide menu</span></p>
<p>If the main FCEUX menu is hidden this option is available. Restores the main menu.</p>
<p><br/></p>
<p><span class="rvts16">Subtitles</span></p>
<p><br/></p>
<p>If a movie is loaded and has subtitles:</p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>a<span class="rvts10"> toggle subtitles </span>option will be in the menu</li>
<li>a<span class="rvts10"> Dump to SRT file </span>option will be available. &nbsp;This dumps the subtitles to a standard subtitle file compatible with A/V containers such as .mkv</li>
<p class="rvps2"><span class="rvts22">Context Menu</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX includes a context menu that allows commonly used menu functions for various situations. &nbsp;There are some functions that appear only here.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This page describes all the possible menu items in each possible context situation.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">No game loaded.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Appears when no game is loaded.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Open ROM</span></p>
<p class="rvps2"><span class="rvts6">Same as the File &gt; Open ROM option</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Last ROM used</span></p>
<p class="rvps2"><span class="rvts6">Opens the most recently used file from the Recent Files Menu</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Help</span></p>
<p class="rvps2"><span class="rvts6">Brings up the Getting Started chapter in the help document.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Game Loaded</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Appears when a game is loaded, but not a movie (.fm2).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Play Movie...</span></p>
<p class="rvps2"><span class="rvts6">Same as the File &gt; Movie &gt; Play Movie menu item.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Record Movie...</span></p>
<p class="rvps2"><span class="rvts6">Same as the File &gt; Movie &gt; Record Movie menu item.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Undo savestate</span></p>
<p class="rvps2"><span class="rvts6">If this option is enabled it means the last savestate saved over-wrote a previous savestate file. &nbsp;This option restores the previous savestate file.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Redo savestate</span></p>
<p class="rvps2"><span class="rvts6">If this option is in the menu, it means that Undo savestate was recently used to restore a previous savestate. &nbsp;This reverts that change.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Rewind to last auto-save</span></p>
<p class="rvps2"><span class="rvts6">Auto-save must be enabled for this menu item to be accessible. &nbsp;Same as the Load last auto-save Hotkey Item. &nbsp;It loads the last auto-savestate. &nbsp;Auto-savestates are created once about every 4 seconds, so this typically has the effect of rewinding emulation.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Screenshot</span></p>
<p class="rvps2"><span class="rvts6">Same as File &gt; Screenshot.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Close ROM</span></p>
<p class="rvps2"><span class="rvts6">Same as File &gt; Close</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Movie loaded - Read-only</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Appears when a movie is loaded and Read-only mode is set.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Toggle to read+write</span></p>
<p class="rvps2"><span class="rvts6">Sets Read status to Read+Write.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Play Movie from Beginning</span></p>
<p class="rvps2"><span class="rvts6">Same as File &gt; Movie &gt; Play from Beginning. &nbsp;Turns Read status to Read-Only and plays the movie from frame 1.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Stop Movie Replay</span></p>
<p class="rvps2"><span class="rvts6">Same as File &gt; Movie &gt; Stop Movie.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">View comments and subtitles</span></p>
<p class="rvps2"><span class="rvts6">Opens up the Metadata dialog. &nbsp;Same as the Metadata button on the Play movie dialog.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Undo savestate</span></p>
<p class="rvps2"><span class="rvts6">If this option is enabled it means the last savestate saved over-wrote a previous savestate file. &nbsp;This option restores the previous savestate file.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Redo savestate</span></p>
<p class="rvps2"><span class="rvts6">If this option is in the menu, it means that Undo savestate was recently used to restore a previous savestate. &nbsp;This reverts that change.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Rewind to last auto-save</span></p>
<p class="rvps2"><span class="rvts6">Auto-save must be enabled for this menu item to be accessible. &nbsp;Same as the Load last auto-save Hotkey Item. &nbsp;It loads the last auto-savestate. &nbsp;Auto-savestates are created once about every 4 seconds, so this typically has the effect of rewinding emulation.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Help</span></p>
<p class="rvps2"><span class="rvts6">Opens the Movie recording chapter of the help document.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Movie loaded - Read + Write</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Toggle to Read-only</span></p>
<p class="rvps2"><span class="rvts6">Sets Read status to Read-Only.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Play Movie From Beginning</span></p>
<p class="rvps2"><span class="rvts6">Same as File &gt; Movie &gt; Play from Beginning. &nbsp;Turns Read status to Read-Only and plays the movie from frame 1.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Stop Movie Recording</span></p>
<p class="rvps2"><span class="rvts6">Same as File &gt; Movie &gt; Stop Movie.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">View comments and subtitles</span></p>
<p class="rvps2"><span class="rvts6">Opens up the Metadata dialog. &nbsp;Same as the Metadata button on the Play movie dialog.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Make backup</span></p>
<p class="rvps2"><span class="rvts6">Generates a backup .fm2. &nbsp;Uses the same file naming system as the auto-movie backup. &nbsp;(See </span><a class="rvts63" href="MovieOptions.html">movie options</a><span class="rvts6"> for details).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Undo savestate</span></p>
<p class="rvps2"><span class="rvts6">If this option is enabled it means the last savestate saved over-wrote a previous savestate file. &nbsp;This option restores the previous savestate file.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Redo savestate</span></p>
<p class="rvps2"><span class="rvts6">If this option is in the menu, it means that Undo savestate was recently used to restore a previous savestate. &nbsp;This reverts that change.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Undo loadstate</span></p>
<p class="rvps2"><span class="rvts6">If this option is enabled it was because the Loadstate function was called sometime while the game was loaded. &nbsp;This function restores the game state to where it was before loadstate was called.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Redo loadstate</span></p>
<p class="rvps2"><span class="rvts6">If Undo loadstate was called, this option is available. &nbsp;It reverts the change and restores the game back to the point it was when loadstate was called.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Help</span></p>
<p class="rvps2"><span class="rvts6">Opens the Movie recording chapter of the help document.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Additional items may also appear related to these situations:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Lua</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Load last Lua</span></p>
<p class="rvps2"><span class="rvts6">If there is at least 1 filename in the Recent Lua Files menu this calls the most recently used Lua script file. &nbsp;Has the same effect as the File &gt; Lua &gt; Reload Lua Script menu item.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Stop Lua</span></p>
<p class="rvps2"><span class="rvts6">If a Lua script is currently loaded this option is available. &nbsp;Same as File &gt; Lua &gt; Stop Lua Script.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Hide Menu</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Unhide menu</span></p>
<p class="rvps2"><span class="rvts6">If the main FCEUX menu is hidden this option is available. Restores the main menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Subtitles</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If a movie is loaded and has subtitles:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">a</span><span class="rvts15"> toggle subtitles </span><span class="rvts6">option will be in the menu</span></li>
<li class="rvps2"><span class="rvts6">a</span><span class="rvts15"> Dump to SRT file </span><span class="rvts6">option will be available. &nbsp;This dumps the subtitles to a standard subtitle file compatible with A/V containers such as .mkv</span></li>
</ul>
<p><br/></p>
<p><br/></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Full-featured EBook editor</a></p>
</div>
<div id="topic_footer">
<p class="rvps4" style="clear: both;"><span class="rvts18">Created with the Personal Edition of HelpNDoc: </span><a class="rvts19" href="https://www.helpndoc.com/help-authoring-tool">Full-featured multi-format Help generator</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">&times;</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>
<div id="topic_footer_content">
2016</div>
</div>
</body>
</html>

View File

@ -1,78 +1,269 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Convert fcm</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Covertfcm");
}
});
</script>
<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>Convert fcm</title>
<meta name="description" content="" />
<meta name="keywords" content="Converting .fcm">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Convert fcm">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Convert fcm" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Convert fcm</h1>
<div id="topic_breadcrumb">
<a href="Tools2.html">Tools</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Tools2.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="TASEditor.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="AutoFireConfigurations.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Converting .fcm to .fm2 files</span></p>
<p><br/></p>
<p>FCEUX uses a new movie file format (.fm2). &nbsp;In order to use movie files frame previous FCE Ultra versions (.fcm) you will need to convert to .fm2 first.</p>
<p><br/></p>
<p><span class="rvts16">Using .fcm Convert</span></p>
<p><br/></p>
<p>To use it simply highlight it. &nbsp;Then select the .fcm you wish to convert (or shift+click to select multiple .fcm files). &nbsp;Then click Open to have the select files converted. &nbsp;All files selected will have a matching .fm2 file copied into the same folder.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Full-featured Help generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Covertfcm"
data-hnd-context="58"
data-hnd-title="Convert fcm"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Tools2.html">Tools</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Tools2.html" title="Tools" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="TASEditor.html" title="TAS Editor" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="AutoFireConfigurations.html" title="Auto Fire Settings" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Convert fcm</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Converting .fcm to .fm2 files</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX uses a new movie file format (.fm2). &nbsp;In order to use movie files frame previous FCE Ultra versions (.fcm) you will need to convert to .fm2 first.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Using .fcm Convert</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To use it simply highlight it. &nbsp;Then select the .fcm you wish to convert (or shift+click to select multiple .fcm files). &nbsp;Then click Open to have the select files converted. &nbsp;All files selected will have a matching .fm2 file copied into the same folder.</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.helpndoc.com">Free EPub and documentation generator</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">&times;</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>

View File

@ -1,121 +1,312 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Customizing through the Config File</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("CustomizingthroughtheConfigFil");
}
});
</script>
<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>Customizing through the Config File</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Customizing through the Config File">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Customizing through the Config File" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Customizing through the Config File</h1>
<div id="topic_breadcrumb">
<a href="General.html">General</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="General.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="CommandLineOptions.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="FamicomDiskSystem.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Customizing through the Config File</span></p>
<p><br/></p>
<p><br/></p>
<p>There are some options that can only be done by directly editing the config (fceux.cfg) file. &nbsp;All of those options are documented here.</p>
<p>The .cfg file is a text file and can be opened by any text editor (just as wordpad).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Emulator background Color when Graphics Background is disabled</span></p>
<p><br/></p>
<p><span class="rvts31">gNoBGFillColor</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">When you disable the backgrounds (Config &gt; Display &gt; Graphics: GB), the default color is black. &nbsp;You can change that color by modifying this value. &nbsp;By default it is 255 (black).</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Debugger</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">debuggerFontSize 15</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">This value determines the size of the "Courier" font used by Debugger and Trace Logger. By default it is 15.</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Hex Editor</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">hexeditorFontSize 15</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">This value determines the size of the "Courier" font used by Hex Editor. By default it is 15.</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">HexRowHeightBorder 0</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">This value determines the number of pixels between each row of values in the Hex Editor. &nbsp;By default it is 0.</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">HexBackColorR 255</span></p>
<p><span class="rvts21">HexBackColorG 255</span></p>
<p><span class="rvts21">HexBackColorB 255</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">HexForeColorR 0</span></p>
<p><span class="rvts21">HexForeColorG 0</span></p>
<p><span class="rvts21">HexForeColorB 0</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">HexFreezeColorR 0</span></p>
<p><span class="rvts21">HexFreezeColorG 0</span></p>
<p><span class="rvts21">HexFreezeColorB 255</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">These values allows are the Hex Editor color scheme values (RGB). &nbsp;The background color is 255,255,255 (white) by default. &nbsp;The foreground color (text) is 0,0,0 (black) by default. When an address is frozen it is 0,0,255 (blue) by default.</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create HTML Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="CustomizingthroughtheConfigFil"
data-hnd-context="71"
data-hnd-title="Customizing through the Config File"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="General.html">General</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="General.html" title="General" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="CommandLineOptions.html" title="Command Line Options" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="FamicomDiskSytem.html" title="Famicom Disk Sytem" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Customizing through the Config File</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Customizing through the Config File</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">There are some options that can only be done by directly editing the config (fceux.cfg) file. &nbsp;All of those options are documented here.</span></p>
<p class="rvps2"><span class="rvts6">The .cfg file is a text file and can be opened by any text editor (just as wordpad).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Emulator background Color when Graphics Background is disabled</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts43">gNoBGFillColor</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">When you disable the backgrounds (Config &gt; Display &gt; Graphics: GB), the default color is black. &nbsp;You can change that color by modifying this value. &nbsp;By default it is 255 (black).</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Debugger</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">debuggerFontSize 15</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">This value determines the size of the "Courier" font used by Debugger and Trace Logger. By default it is 15.</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Hex Editor</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">hexeditorFontSize 15</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">This value determines the size of the "Courier" font used by Hex Editor. By default it is 15.</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">HexRowHeightBorder 0</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">This value determines the number of pixels between each row of values in the Hex Editor. &nbsp;By default it is 0.</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">HexBackColorR 255</span></p>
<p class="rvps2"><span class="rvts32">HexBackColorG 255</span></p>
<p class="rvps2"><span class="rvts32">HexBackColorB 255</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">HexForeColorR 0</span></p>
<p class="rvps2"><span class="rvts32">HexForeColorG 0</span></p>
<p class="rvps2"><span class="rvts32">HexForeColorB 0</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">HexFreezeColorR 0</span></p>
<p class="rvps2"><span class="rvts32">HexFreezeColorG 0</span></p>
<p class="rvps2"><span class="rvts32">HexFreezeColorB 255</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">These values allows are the Hex Editor color scheme values (RGB). &nbsp;The background color is 255,255,255 (white) by default. &nbsp;The foreground color (text) is 0,0,0 (black) by default. When an address is frozen it is 0,0,255 (blue) by default.</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><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.helpndoc.com/feature-tour">Easily create EPub books</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">&times;</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>

View File

@ -1,107 +1,302 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Debug</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Debug");
}
});
</script>
<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>Debug</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Debug">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Debug" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Debug</h1>
</div>
<div id="topic_header_nav">
<a href="TextHooker.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Debugger.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Debug</span></p>
<p><br/></p>
<p>Guides for the specific tools and settings under FCEUX's Debug menu.</p>
<p><br/></p>
<p><a class="rvts44" href="Debugger.html">Debugger</a></p>
<p><br/></p>
<p>A tool for looking at game instructions in assembly language. With experience,</p>
<p>one can use it to fix game patching errors, or find RAM and Game Genie codes.</p>
<p><br/></p>
<p><a class="rvts44" href="PPUViewer.html">PPU Viewer</a></p>
<p><br/></p>
<p>A tool that displays the current PPU contents and related information. The PPU</p>
<p>viewer allows you to view the graphic squares that make up what's displayed.</p>
<p><br/></p>
<p><a class="rvts44" href="NameTableViewer.html">Name Table Viewer</a></p>
<p><br/></p>
<p>A tool for displaying the current Name Table contents. Helps to isolate PPU</p>
<p>and tile information, which allows the debugger to be used to check PPU coding.</p>
<p><br/></p>
<p><a class="rvts44" href="HexEditor.html">Hex Editor</a></p>
<p><br/></p>
<p>A tool for displaying a game's RAM contents and for memory poking. Also allows</p>
<p>for reading in the raw PPU data, copy/paste-ing RAM, and visually debugging RAM.</p>
<p><br/></p>
<p><a class="rvts44" href="TraceLogger.html">Trace Logger</a></p>
<p><br/></p>
<p>Captures assembly code instructions and outputs them to a file or the window. Very</p>
<p>useful for analyzing code, finding crash addresses, fixing transferred routines, and</p>
<p>for comparing routine function between a game and a persistently buggy NSF.</p>
<p><br/></p>
<p><a class="rvts44" href="CodeDataLogger.html">Code/Data Logger</a></p>
<p><br/></p>
<p>Allows you to extract the data used by a game. Make patch demos, find data</p>
<p>loaded by a game around a certain point, or just map out a single routine run.</p>
<p><br/></p>
<p><a class="rvts25" href="GameGenieEncoderDecoder.html">Game Genie Encoder/Decoder</a></p>
<p><br/></p>
<p>Allows you to add Game Genie codes to the Cheats menu, decode existing</p>
<p>ones to their component information, and (re)create a code with desired values.</p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Produce Kindle eBooks easily</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Debug"
data-hnd-context="37"
data-hnd-title="Debug"
>
<div class="navigation">
<ol class="breadcrumb">
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="TextHooker.html" title="Text Hooker" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Debugger.html" title="Debugger" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Debug</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Debug</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Guides for the specific tools and settings under FCEUX's Debug menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Debugger.html">Debugger</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A tool for looking at game instructions in assembly language. With experience,</span></p>
<p class="rvps2"><span class="rvts6">one can use it to fix game patching errors, or find RAM and Game Genie codes.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="PPUViewer.html">PPU Viewer</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A tool that displays the current PPU contents and related information. The PPU</span></p>
<p class="rvps2"><span class="rvts6">viewer allows you to view the graphic squares that make up what's displayed.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="NameTableViewer.html">Name Table Viewer</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A tool for displaying the current Name Table contents. Helps to isolate PPU</span></p>
<p class="rvps2"><span class="rvts6">and tile information, which allows the debugger to be used to check PPU coding.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="HexEditor.html">Hex Editor</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A tool for displaying a game's RAM contents and for memory poking. Also allows</span></p>
<p class="rvps2"><span class="rvts6">for reading in the raw PPU data, copy/paste-ing RAM, and visually debugging RAM.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="TraceLogger.html">Trace Logger</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Captures assembly code instructions and outputs them to a file or the window. Very</span></p>
<p class="rvps2"><span class="rvts6">useful for analyzing code, finding crash addresses, fixing transferred routines, and</span></p>
<p class="rvps2"><span class="rvts6">for comparing routine function between a game and a persistently buggy NSF.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="CodeDataLogger.html">Code/Data Logger</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Allows you to extract the data used by a game. Make patch demos, find data</span></p>
<p class="rvps2"><span class="rvts6">loaded by a game around a certain point, or just map out a single routine run.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="GameGenieEncoderDecoder.html">Game Genie Encoder/Decoder</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Allows you to add Game Genie codes to the Cheats menu, decode existing</span></p>
<p class="rvps2"><span class="rvts6">ones to their component information, and (re)create a code with desired values.</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.helpndoc.com/create-epub-ebooks">Full-featured EBook editor</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">&times;</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>

View File

@ -1,304 +1,495 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Debugger</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Debugger");
}
});
</script>
<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>Debugger</title>
<meta name="description" content="" />
<meta name="keywords" content="Debugger,Inline Assembler,Symbolic Debugging">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Debugger">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Debugger" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Debugger</h1>
<div id="topic_breadcrumb">
<a href="Debug.html">Debug</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Debug.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Debug.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="PPUViewer.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<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="Debugger"
data-hnd-context="14"
data-hnd-title="Debugger"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Debug.html">Debug</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Debug.html" title="Debug" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Debug.html" title="Debug" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="PPUViewer.html" title="PPU Viewer" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Debugger</h2>
<div class="main-content">
<p></p>
<p><span class="rvts17">Debugger</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts45">Introduction</span></p>
<p><br/></p>
<p>The debugger is a tool for inspecting and manipulating machine instructions and their execution. The debugger window has several components:</p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>Execution - a small set of controls for controlling the execution of code.</li>
<li>CPU State - display of registers, flags, the stack, cycles and instructions counters, and also the PPU state.</li>
<li>Memory disassembly - displays a disassembly of the bytes currently accessible by the CPU data bus.</li>
<li>Breakpoints - a list of breakpoints for debugging.</li>
<li>Bookmarks - a list of bookmarked addresses for quick navigation.</li>
<li>Other - buttons for controlling symbolic debugging, rom patching, etc.</li>
<p class="rvps2"><span class="rvts22">Debugger</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Introduction</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The debugger is a tool for inspecting and manipulating machine instructions and their execution. The debugger window has several components:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Execution - a small set of controls for controlling the execution of code.</span></li>
<li class="rvps2"><span class="rvts6">CPU State - display of registers, flags, the stack, cycles and instructions counters, and also the PPU state.</span></li>
<li class="rvps2"><span class="rvts6">Memory disassembly - displays a disassembly of the bytes currently accessible by the CPU data bus.</span></li>
<li class="rvps2"><span class="rvts6">Breakpoints - a list of breakpoints for debugging.</span></li>
<li class="rvps2"><span class="rvts6">Bookmarks - a list of bookmarked addresses for quick navigation.</span></li>
<li class="rvps2"><span class="rvts6">Other - buttons for controlling symbolic debugging, rom patching, etc.</span></li>
</ul>
<p><br/></p>
<p><br/></p>
<p><span class="rvts45">Execution and CPU State</span></p>
<p><br/></p>
<p>Execution is controlled by the set of buttons at the top-middle of the window. These allow you to break (pause) execution and inspect the current state of the NES.</p>
<p><br/></p>
<p>When an NES ROM is opened, it will be normally be running right away (unless you manually pause the emulator before loading). Most of the debugger window does not update while the game is running. To begin debugging you may click one of the buttons that will break (pause) execution, such as "Step Into".</p>
<p><br/></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>Run - runs the program continuously until the next breakpoint is hit, or the emulator is paused manually. The same effect can be achieved by pressing the Pause hotkey which will unpause emulator when it's paused.</li>
<li>Step Into - runs one instruction and then breaks.</li>
<li>Step Out - attempt to run until the current subroutine ends with an RTS; in some cases will behave the same as Run.</li>
<li>Step Over - runs one instruction, unless it is a JSR instruction, which will run until its RTS.</li>
<li>Run Line - runs one scanline before breaking.</li>
<li>128 Lines - runs 128 scanlines before breaking.</li>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Execution and CPU State</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Execution is controlled by the set of buttons at the top-middle of the window. These allow you to break (pause) execution and inspect the current state of the NES.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When an NES ROM is opened, it will be normally be running right away (unless you manually pause the emulator before loading). Most of the debugger window does not update while the game is running. To begin debugging you may click one of the buttons that will break (pause) execution, such as "Step Into".</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Run - runs the program continuously until the next breakpoint is hit, or the emulator is paused manually. The same effect can be achieved by pressing the Pause hotkey which will unpause emulator when it's paused.</span></li>
<li class="rvps2"><span class="rvts6">Step Into - runs one instruction and then breaks.</span></li>
<li class="rvps2"><span class="rvts6">Step Out - attempt to run until the current subroutine ends with an RTS; in some cases will behave the same as Run.</span></li>
<li class="rvps2"><span class="rvts6">Step Over - runs one instruction, unless it is a JSR instruction, which will run until its RTS.</span></li>
<li class="rvps2"><span class="rvts6">Run Line - runs one scanline before breaking.</span></li>
<li class="rvps2"><span class="rvts6">128 Lines - runs 128 scanlines before breaking.</span></li>
</ul>
<p><br/></p>
<p>The Pause hotkey will break execution or resume it. The Frame Advance hotkey will run the emulator for one frame and then break.</p>
<p><br/></p>
<p>When execution is paused, the disassembly view will begin with the memory near the current program counter location (PC). The "&gt;" mark shows the line which will be executed next. You can scroll the disassembly up or down (using scrollbar or mouse wheel) to observe the code. Then you can click "Seek PC" to return to the program counter at any time.</p>
<p><br/></p>
<p>You can also use "Seek To" button that will navigate to the specified address. Either type a hexadecimal address to the text field or simply left-click on any address in the Disassembly window.</p>
<p><br/></p>
<div><table width="100%" border="1" cellpadding="6" cellspacing="2" style="border-color: #000000; border-style: solid;">
<tr valign="top">
<td style="border-color: #000000; border-style: solid; width: 305px; height: 34px;"><p><span class="rvts47">HINT: When entering the address manually, these convenient strings may be used instead of the hexadecimal memory address:</span></p>
<p><span class="rvts47">NES special addresses:</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts47">NMI/VBL - non-maskable interrupt vector (at FFFA)</span></li>
<li><span class="rvts47">RST &nbsp; &nbsp; - reset vector (at FFFC)</span></li>
<li><span class="rvts47">IRQ &nbsp; &nbsp; - interrupt vector (at FFFE)</span></li>
</ul>
<p><span class="rvts47">FDS special addresses:</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts47">NMI1 - non-maskable interrupt vector (at DFF6)</span></li>
<li><span class="rvts47">NMI2 - non-maskable interrupt vector (at DFF8)</span></li>
<li><span class="rvts47">NMI3 - non-maskable interrupt vector (at DFFA)</span></li>
<li><span class="rvts47">RST &nbsp;- reset vector (at DFFC)</span></li>
<li><span class="rvts47">IRQ &nbsp;- interrupt vector (at DFFE)</span></li>
</ul>
<p><span class="rvts47">NSF special addresses:</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts47">LOAD - NSF LOAD address</span></li>
<li><span class="rvts47">INIT - NSF INIT address</span></li>
<li><span class="rvts47">PLAY - NSF PLAY address</span></li>
</ul>
</td>
</tr>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Pause hotkey will break execution or resume it. The Frame Advance hotkey will run the emulator for one frame and then break.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When execution is paused, the disassembly view will begin with the memory near the current program counter location (PC). The "&gt;" mark shows the line which will be executed next. You can scroll the disassembly up or down (using scrollbar or mouse wheel) to observe the code. Then you can click "Seek PC" to return to the program counter at any time.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can also use "Seek To" button that will navigate to the specified address. Either type a hexadecimal address to the text field or simply left-click on any address in the Disassembly window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<div class="rvps2">
<table width="100%" border="1" cellpadding="6" cellspacing="2" style="border-color: #000000; border-style: solid; border-spacing: 2px;">
<tr valign="top">
<td width="305" height="46" style="border-color: #000000; border-style: solid; padding: 6px;">
<p class="rvps2"><span class="rvts73">HINT: When entering the address manually, these convenient strings may be used instead of the hexadecimal memory address:</span></p>
<p class="rvps2"><span class="rvts73">NES special addresses:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts73">NMI/VBL - non-maskable interrupt vector (at FFFA)</span></li>
<li class="rvps2"><span class="rvts73">RST &nbsp; &nbsp; - reset vector (at FFFC)</span></li>
<li class="rvps2"><span class="rvts73">IRQ &nbsp; &nbsp; - interrupt vector (at FFFE)</span></li>
</ul>
<p class="rvps2"><span class="rvts73">FDS special addresses:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts73">NMI1 - non-maskable interrupt vector (at DFF6)</span></li>
<li class="rvps2"><span class="rvts73">NMI2 - non-maskable interrupt vector (at DFF8)</span></li>
<li class="rvps2"><span class="rvts73">NMI3 - non-maskable interrupt vector (at DFFA)</span></li>
<li class="rvps2"><span class="rvts73">RST &nbsp;- reset vector (at DFFC)</span></li>
<li class="rvps2"><span class="rvts73">IRQ &nbsp;- interrupt vector (at DFFE)</span></li>
</ul>
<p class="rvps2"><span class="rvts73">NSF special addresses:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts73">LOAD - NSF LOAD address</span></li>
<li class="rvps2"><span class="rvts73">INIT - NSF INIT address</span></li>
<li class="rvps2"><span class="rvts73">PLAY - NSF PLAY address</span></li>
</ul>
</td>
</tr>
</table>
</div>
<p><span class="rvts38"><br/></span></p>
<p>While execution is broken (emulation is paused), the program counter (PC) can be edited, as well as the three registers A/X/Y, and the status flags. Normally they should be left as-is, but changing them at runtime can be useful for more advanced debugging.</p>
<p><br/></p>
<p>The contents of memory starting at the stack pointer (somewhere in the range $0100-01FF) is displayed in the Stack frame below the A/X/Y registers.</p>
<p><br/></p>
<p>The current PPU memory address, sprite memory address, scanline, and rendering pixel are displayed below the stack and status flags. <span class="rvts15">Examples of Scanline number:</span> -1 means Prerender time, 240 is Idle scanline, 0-239 are visible scanlines, 241-260/310 are VBlank scanlines.</p>
<p><br/></p>
<p>To the right from the PPU section there's Cycles counter and Instructions counter that keep counting while the game is running. You can use the information for keeping statistics, for code profiling or writing PPU-synchronized code (e.g. raster effects). You can also make the debugger break automatically based on the counters values. The "Reset counters" button resets both counters to 0. You can also access the counters via <a class="rvts18" href="LuaFunctionsList.html">Lua</a>.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts45">Disassembly</span></p>
<p><br/></p>
<p>This large frame takes up the left side of the debugger window. It displays the current contents of memory accessible by the CPU with an automatic disassembly of that data into assembly instructions. The following memory ranges may contain useful data for inspection:</p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>0000-00FF - zero page (RAM)</li>
<li>0100-01FF - stack (RAM)</li>
<li>0200-07FF - RAM</li>
<li>4018-FFFF - mapper controlled (ROM or RAM, may be bankswitched)</li>
<p class="rvps2"><span class="rvts54"><br/></span></p>
<p class="rvps2"><span class="rvts6">While execution is broken (emulation is paused), the program counter (PC) can be edited, as well as the three registers A/X/Y, and the status flags. Normally they should be left as-is, but changing them at runtime can be useful for more advanced debugging.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The contents of memory starting at the stack pointer (somewhere in the range $0100-01FF) is displayed in the Stack frame below the A/X/Y registers.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The current PPU memory address, sprite memory address, scanline, and rendering pixel are displayed below the stack and status flags. </span><span class="rvts20">Examples of Scanline number:</span><span class="rvts6"> -1 means Prerender time, 240 is Idle scanline, 0-239 are visible scanlines, 241-260/310 are VBlank scanlines.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To the right from the PPU section there's Cycles counter and Instructions counter that keep counting while the game is running. You can use the information for keeping statistics, for code profiling or writing PPU-synchronized code (e.g. raster effects). You can also make the debugger break automatically based on the counters values. The "Reset counters" button resets both counters to 0. You can also access the counters via </span><a class="rvts71" href="LuaFunctionsList.html">Lua</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Disassembly</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This large frame takes up the left side of the debugger window. It displays the current contents of memory accessible by the CPU with an automatic disassembly of that data into assembly instructions. The following memory ranges may contain useful data for inspection:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">0000-00FF - zero page (RAM)</span></li>
<li class="rvps2"><span class="rvts6">0100-01FF - stack (RAM)</span></li>
<li class="rvps2"><span class="rvts6">0200-07FF - RAM</span></li>
<li class="rvps2"><span class="rvts6">4018-FFFF - mapper controlled (ROM or RAM, may be bankswitched)</span></li>
</ul>
<p><br/></p>
<p>Memory contents are displayed in this form:</p>
<p><br/></p>
<p><span class="rvts46">0F:C0A8:24 1F &nbsp; &nbsp; BIT $001F = #$80</span></p>
<p><span class="rvts46">bb:mmmm:dd dd dd &nbsp;iiiiiiiiiiiii...</span></p>
<p><br/></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>bb - 16k iNES bank, designates which 16k bank from the iNES file is mapped here. Note that the number may be not the same as the actual hardware bank of the mapper.</li>
<li>mmmm - physical address on the NES CPU data bus.</li>
<li>dd - data bytes belonging to the instruction beginning at this address.</li>
<li>iiii - assembly description of the instruction, possibly with symbolic decoration.</li>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Memory contents are displayed in this form:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts72">0F:C0A8:24 1F &nbsp; &nbsp; BIT $001F = #$80</span></p>
<p class="rvps2"><span class="rvts72">bb:mmmm:dd dd dd &nbsp;iiiiiiiiiiiii...</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">bb - 16k iNES bank, designates which 16k bank from the iNES file is mapped here. Note that the number may be not the same as the actual hardware bank of the mapper.</span></li>
<li class="rvps2"><span class="rvts6">mmmm - physical address on the NES CPU data bus.</span></li>
<li class="rvps2"><span class="rvts6">dd - data bytes belonging to the instruction beginning at this address.</span></li>
<li class="rvps2"><span class="rvts6">iiii - assembly description of the instruction, possibly with symbolic decoration.</span></li>
</ul>
<p><br/></p>
<p>When debugging an NSF program, the bank designation will be a 4k NSF bank instead of the 16k iNES bank.</p>
<p><br/></p>
<p>A single instruction may be one to three bytes, and will all appear on the line before the assembly code description of that instruction. An instruction with "= #$xx" at the end conveniently indicates the value currently in memory at the address referenced by the instruction.</p>
<p><br/></p>
<p>Hovering the mouse over the disassembly will display at the bottom of the window more detailed information about the location of this code in the iNES file.</p>
<p><br/></p>
<p>There is narrow column to the left of the Disassembly window. Left clicking on this column will open the <span class="rvts32">Inline Assembler</span>, which allows you to patch the ROM at runtime. Right clicking on this column will open the <a class="rvts18" href="HexEditor.html">Hex Editor</a>, which allows you to directly edit the ROM. Middle-clicking on this column will bring up the <a class="rvts18" href="GameGenieEncoderDecoder.html">Game Genie Encoder</a> at that address, so you can easily make Game Genie codes.</p>
<p>Also, when <a class="rvts18" href="CodeDataLogger.html">Code/Data Logger</a> is running, this small column displays whether the respective line of the disassembled memory was executed ("c") or it was read as Data ("d"), or it wasn't logged yet (empty space). This way you can easily distinguish which branches of the game code were executed and which weren't.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts45">Symbolic Debugging</span></p>
<p><br/></p>
<p>FCEUX allows you to label any address of RAM or ROM with a human-readable symbolic name.</p>
<p>For example, when you've figured out that at the address $C022 there's a subroutine which refills player HP, you can right-click the address and type a name like "AddHealthpoints". You can also add a comment, which will be seen while browsing the code near this address. From now on, the address will be substituted by the name everywhere - in all instructions referencing this address, in Hex Editor window, in the log produced by Trace Logger. E.g., JSR $C022 will look like JSR AddHealthpoints.</p>
<p><br/></p>
<p>When entering the name, you can use any symbols except #. It's also recommended to avoid whitespaces in names.</p>
<p>To rename an address, just right-click the name.</p>
<p><br/></p>
<p>The data for Symbolic Debugging is stored in <a class="rvts18" href="NLFilesFormat.html">NL files</a> in the same folder as the ROM. You can edit the files in any text editor (to reload all NL files of the currently active ROM file press the "Reload Symbols" button), but it's more convenient to use right-clicks.</p>
<p><br/></p>
<p>You can enable and disable symbolic debugging by clicking the checkbox "Symbolic debug" in the lower right corner. In general, there's no need to disable this feature. If you need to see the actual address which got substituted by a name, you can simply left-click the name and watch its address in the "Seek To" text field. This also works when clicking a name in the Trace Logger window.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts45">Breakpoints</span></p>
<p><br/></p>
<p>Breakpoints will automatically break execution when chosen conditions are met. To create a breakpoint, click the Add button in the Breakpoints frame in the upper right corner of the debugger.</p>
<p><br/></p>
<p>Each breakpoint has an address range to watch. Use only the left address field if you wish to watch a single byte address. When entering the address of a breakpoint, you can also use the aforementioned convenient strings (such as IRQ) instead of hexadecimal memory addresses.</p>
<p><br/></p>
<p>Check one or more of the options to watch for Read, Write, or Execute at the given address. Note that fetching of code from an address will not break as a Read; so use the Execute box for this case. Breakpoints can be given a name that will appear in the breakpoints list. The condition field can be used to break only on particular conditions; see "Conditional Breakpoints" below.</p>
<p><br/></p>
<p>Double click on a breakpoint in the Breakpoints list to quickly disable or enable this breakpoint. So you don't have to delete breakpoints to stop them from causing the debugger to halt the game.</p>
<p><br/></p>
<p>A special kind of breakpoints with the "Forbid" option will prevent any breakpoints from occurring within the specified memory address range. This can be enabled and disabled like other breakpoints.</p>
<p><br/></p>
<p>A quicker way to add PC breakpoints is to double click on any address in the Disassembly when you want to set the breakpoint to that address. <span class="rvts15">Example:</span> when you need to quickly advance emulation to a given line of code, double-click on the address part of the line, and the "Add Execute breakpoint here" dialog will appear, just click "OK" and then hit "Run", Debugger will break at this line of code.</p>
<p><br/></p>
<p>There is also an option to Break on Bad Opcodes, which will halt execution if a bad instruction opcode is reached.</p>
<p><br/></p>
<p>Finally, you can make the debugger break after executing a certain number of instructions or CPU cycles.</p>
<p><br/></p>
<p>More advanced breakpoints conditions and full automation may be achieved through Lua script breakpoints. See the <a class="rvts18" href="LuaFunctionsList.html#LuaBreakpoints">Lua reference</a> for more information.</p>
<p><br/></p>
<p>Breakpoints are listed in the following form:</p>
<p><br/></p>
<p><span class="rvts46">aaaa EmRWXF nnnn cccc</span></p>
<p><span class="rvts46">or</span></p>
<p><span class="rvts46">aaaa-aaaa EmRWXF nnnn cccc</span></p>
<p><br/></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>aaaa - address of breakpoint</li>
<li>E &nbsp; &nbsp;- enabled</li>
<li>m &nbsp; &nbsp;- memory area: C = CPU, P = PPU, S = sprite</li>
<li>R &nbsp; &nbsp;- read</li>
<li>W &nbsp; &nbsp;- write</li>
<li>X &nbsp; &nbsp;- execute</li>
<li>F &nbsp; &nbsp;- Forbid</li>
<li>nnnn - (optional) name of breakpoint</li>
<li>nnnn - (optional) condition of breakpoint</li>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When debugging an NSF program, the bank designation will be a 4k NSF bank instead of the 16k iNES bank.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A single instruction may be one to three bytes, and will all appear on the line before the assembly code description of that instruction. An instruction with "= #$xx" at the end conveniently indicates the value currently in memory at the address referenced by the instruction.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Hovering the mouse over the disassembly will display at the bottom of the window more detailed information about the location of this code in the iNES file.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">There is narrow column to the left of the Disassembly window. Left clicking on this column will open the </span><span class="rvts45">Inline Assembler</span><span class="rvts6">, which allows you to patch the ROM at runtime. Right clicking on this column will open the </span><a class="rvts71" href="HexEditor.html">Hex Editor</a><span class="rvts6">, which allows you to directly edit the ROM. Middle-clicking on this column will bring up the </span><a class="rvts71" href="GameGenieEncoderDecoder.html">Game Genie Encoder</a><span class="rvts6"> at that address, so you can easily make Game Genie codes.</span></p>
<p class="rvps2"><span class="rvts6">Also, when </span><a class="rvts71" href="CodeDataLogger.html">Code/Data Logger</a><span class="rvts6"> is running, this small column displays whether the respective line of the disassembled memory was executed ("c") or it was read as Data ("d"), or it wasn't logged yet (empty space). This way you can easily distinguish which branches of the game code were executed and which weren't.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Symbolic Debugging</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX allows you to label any address of RAM or ROM with a human-readable symbolic name.</span></p>
<p class="rvps2"><span class="rvts6">For example, when you've figured out that at the address $C022 there's a subroutine which refills player HP, you can right-click the address and type a name like "AddHealthpoints". You can also add a comment, which will be seen while browsing the code near this address. From now on, the address will be substituted by the name everywhere - in all instructions referencing this address, in Hex Editor window, in the log produced by Trace Logger. E.g., JSR $C022 will look like JSR AddHealthpoints.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When entering the name, you can use any symbols except #. It's also recommended to avoid whitespaces in names.</span></p>
<p class="rvps2"><span class="rvts6">To rename an address, just right-click the name.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The data for Symbolic Debugging is stored in </span><a class="rvts71" href="NLFilesFormat.html">NL files</a><span class="rvts6"> in the same folder as the ROM. You can edit the files in any text editor (to reload all NL files of the currently active ROM file press the "Reload Symbols" button), but it's more convenient to use right-clicks.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can enable and disable symbolic debugging by clicking the checkbox "Symbolic debug" in the lower right corner. In general, there's no need to disable this feature. If you need to see the actual address which got substituted by a name, you can simply left-click the name and watch its address in the "Seek To" text field. This also works when clicking a name in the Trace Logger window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Breakpoints</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Breakpoints will automatically break execution when chosen conditions are met. To create a breakpoint, click the Add button in the Breakpoints frame in the upper right corner of the debugger.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Each breakpoint has an address range to watch. Use only the left address field if you wish to watch a single byte address. When entering the address of a breakpoint, you can also use the aforementioned convenient strings (such as IRQ) instead of hexadecimal memory addresses.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Check one or more of the options to watch for Read, Write, or Execute at the given address. Note that fetching of code from an address will not break as a Read; so use the Execute box for this case. Breakpoints can be given a name that will appear in the breakpoints list. The condition field can be used to break only on particular conditions; see "Conditional Breakpoints" below.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Double click on a breakpoint in the Breakpoints list to quickly disable or enable this breakpoint. So you don't have to delete breakpoints to stop them from causing the debugger to halt the game.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A special kind of breakpoints with the "Forbid" option will prevent any breakpoints from occurring within the specified memory address range. This can be enabled and disabled like other breakpoints.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A quicker way to add PC breakpoints is to double click on any address in the Disassembly when you want to set the breakpoint to that address. </span><span class="rvts20">Example:</span><span class="rvts6"> when you need to quickly advance emulation to a given line of code, double-click on the address part of the line, and the "Add Execute breakpoint here" dialog will appear, just click "OK" and then hit "Run", Debugger will break at this line of code.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">There is also an option to Break on Bad Opcodes, which will halt execution if a bad instruction opcode is reached.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Finally, you can make the debugger break after executing a certain number of instructions or CPU cycles.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">More advanced breakpoints conditions and full automation may be achieved through Lua script breakpoints. See the </span><a class="rvts71" href="LuaFunctionsList.html#LuaBreakpoints">Lua reference</a><span class="rvts6"> for more information.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Breakpoints are listed in the following form:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts72">aaaa EmRWXF nnnn cccc</span></p>
<p class="rvps2"><span class="rvts72">or</span></p>
<p class="rvps2"><span class="rvts72">aaaa-aaaa EmRWXF nnnn cccc</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">aaaa - address of breakpoint</span></li>
<li class="rvps2"><span class="rvts6">E &nbsp; &nbsp;- enabled</span></li>
<li class="rvps2"><span class="rvts6">m &nbsp; &nbsp;- memory area: C = CPU, P = PPU, S = sprite</span></li>
<li class="rvps2"><span class="rvts6">R &nbsp; &nbsp;- read</span></li>
<li class="rvps2"><span class="rvts6">W &nbsp; &nbsp;- write</span></li>
<li class="rvps2"><span class="rvts6">X &nbsp; &nbsp;- execute</span></li>
<li class="rvps2"><span class="rvts6">F &nbsp; &nbsp;- Forbid</span></li>
<li class="rvps2"><span class="rvts6">nnnn - (optional) name of breakpoint</span></li>
<li class="rvps2"><span class="rvts6">nnnn - (optional) condition of breakpoint</span></li>
</ul>
<p><br/></p>
<p><br/></p>
<p><span class="rvts45">Conditional Breakpoints</span></p>
<p><br/></p>
<p>Breakpoints may also have a conditional statement that causes them to execute only if that statement evaluates to true. The conditional breakpoint grammar has this form:</p>
<p><br/></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>Connect &nbsp; -&gt; Compare { ('||' | '&amp;&amp;') Compare }</li>
<li>Compare &nbsp; -&gt; Sum { ('==' | '!=' | '&lt;=' | '&gt;=' | '&lt;' | '&gt;') Sum }</li>
<li>Sum &nbsp; &nbsp; &nbsp; -&gt; Product { ('+' | '-') Product }</li>
<li>Product &nbsp; -&gt; Primitive { ('*' | '/') Primitive }</li>
<li>Primitive -&gt; Number | Address | Register | Flag | PC Bank | Data Bank | '(' Connect ')'</li>
<li>Number &nbsp; &nbsp;-&gt; '#' [0123456789ABCDEF]*</li>
<li>Address &nbsp; -&gt; '$' [0123456789ABCDEF]* | '$' '[' Connect ']'</li>
<li>Register &nbsp;-&gt; 'A' | 'X' | 'Y' | 'P'</li>
<li>Flag &nbsp; &nbsp; &nbsp;-&gt; 'N' | 'C' | 'Z' | 'I' | 'B' | 'V' | 'D' | 'U'</li>
<li>PC Bank &nbsp; -&gt; 'K'</li>
<li>Data Bank &nbsp; -&gt; 'T'</li>
<li>Read/Write Value &nbsp; -&gt; 'R' | 'W'</li>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Conditional Breakpoints</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Breakpoints may also have a conditional statement that causes them to execute only if that statement evaluates to true. The conditional breakpoint grammar has this form:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Connect &nbsp; -&gt; Compare { ('||' | '&amp;&amp;') Compare }</span></li>
<li class="rvps2"><span class="rvts6">Compare &nbsp; -&gt; Sum { ('==' | '!=' | '&lt;=' | '&gt;=' | '&lt;' | '&gt;') Sum }</span></li>
<li class="rvps2"><span class="rvts6">Sum &nbsp; &nbsp; &nbsp; -&gt; Product { ('+' | '-') Product }</span></li>
<li class="rvps2"><span class="rvts6">Product &nbsp; -&gt; Primitive { ('*' | '/') Primitive }</span></li>
<li class="rvps2"><span class="rvts6">Primitive -&gt; Number | Address | Register | Flag | PC Bank | Data Bank | '(' Connect ')'</span></li>
<li class="rvps2"><span class="rvts6">Number &nbsp; &nbsp;-&gt; '#' [0123456789ABCDEF]*</span></li>
<li class="rvps2"><span class="rvts6">Address &nbsp; -&gt; '$' [0123456789ABCDEF]* | '$' '[' Connect ']'</span></li>
<li class="rvps2"><span class="rvts6">Register &nbsp;-&gt; 'A' | 'X' | 'Y' | 'P'</span></li>
<li class="rvps2"><span class="rvts6">Flag &nbsp; &nbsp; &nbsp;-&gt; 'N' | 'C' | 'Z' | 'I' | 'B' | 'V'</span></li>
<li class="rvps2"><span class="rvts6">PC Bank &nbsp; -&gt; 'K'</span></li>
<li class="rvps2"><span class="rvts6">Data Bank &nbsp; -&gt; 'T'</span></li>
</ul>
<p><br/></p>
<p>The parser is very strict. All numbers are hexadecimal. Always prefix a number with # for an immediate value, or $ for a memory address. If a memory address needs to be calculated use $[] with the calculation inside the brackets.</p>
<p><br/></p>
<p>Registers A/X/Y are 8-bit unsigned values. Register P is the 16-bit program counter.</p>
<p>Flags evaluate to 1 if set, 0 if clear. (U is the unused bit of the status register, and D is the unused decimal flag.)</p>
<p>For instructions that read or write a single byte (e.g. LDA, STY, PHA, ASL abs), condition R evaluates to the value that will be read by the instruction, and condition W evaluates to the value that will be written.</p>
<p><br/></p>
<p>Connecting operators || or &amp;&amp; combine boolean terms. Parentheses dictate order of operations.</p>
<p><br/></p>
<p><span class="rvts15">Example conditions:</span></p>
<p><br/></p>
<p>Break only if register A is less than value at memory address $0005:</p>
<p><span class="rvts46">A &lt; $0005</span></p>
<p><br/></p>
<p>Break only if the value at the indirect address is not equal to FF:</p>
<p><span class="rvts46">#FF != $[$10+($11*#100)]</span></p>
<p><br/></p>
<p>Break only if flag N is clear or A is not equal to 00:</p>
<p><span class="rvts46">(N==#0 || A!=#0)</span></p>
<p><br/></p>
<p>Break only when accessing a data from bank 2 (the condiition is relevant when using with Read/Write-type breakpoints):</p>
<p><span class="rvts46">T==#2</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts45">Bookmarks</span></p>
<p><br/></p>
<p>A list of bookmarked addresses can be kept in the Address Bookmarks frame to make memory navigation easier. Simply type a hexadecimal address (or a convenient string, such as "NMI") and click "Add" to add it to your bookmarks. Alternatively, just left-click any address in the Disassembly window, and the address will appear in the Bookmark Add field, so you don't have to type it.</p>
<p>Next time you wish to go to this address just double click on the bookmark.</p>
<p>You can also name bookmarks.</p>
<p>When you exit the emulator, bookmarks are saved in a .deb file named after the ROM of the debugged game. Next time you return to debugging the game, the list of bookmarks will be automatically loaded from the file.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts45">Inline Assembler</span></p>
<p><br/></p>
<p>Open the inline assembler by left-clicking in the empty column to the left of the memory view.</p>
<p><br/></p>
<p>The starting memory address is displayed in the PC field at the top of the inline assembler window. Type a line of assembly to add in the empty field just below this, and hit enter. The assembled code of your patch will appear below as you enter each line.</p>
<p><br/></p>
<p>Click Apply to apply your patch to the ROM in memory. Click Undo to remove the last assembled line. After applying a patch, clicking Save will allow you to save this patch directly to the ROM file.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts45">Other</span></p>
<p><br/></p>
<p>If the ".DEB files" checkbox in the lower right corner of the debugger window is checked, the emulator will automatically save debug settings such as breakpoints and bookmarks in a .deb file alongside the NES ROM, and load these settings next time you open the ROM.</p>
<p><br/></p>
<p>There is a "Rom Patcher" button that may be used to apply a small patch to a ROM, although <a class="rvts18" href="HexEditor.html">Hex Editor</a> is more convenient in general.</p>
<p><br/></p>
<p>The "ROM offsets" option will display ROM offsets instead of CPU addresses in the Disassembly window.</p>
<p><br/></p>
<p>The "Restore Original Window Size" button will restore the original size of the debugger window if you resized it manually.</p>
<p><br/></p>
<p>The "Auto-open" checkbox causes the debugger window to open automatically whenever an NES ROM is opened.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The parser is very strict. All numbers are hexadecimal. Always prefix a number with # for an immediate value, or $ for a memory address. If a memory address needs to be calculated use $[] with the calculation inside the brackets.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Registers A/X/Y are 8-bit unsigned values. Register P is the 16-bit program counter.</span></p>
<p class="rvps2"><span class="rvts6">Flags evaluate to 1 if set, 0 if clear.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Connecting operators || or &amp;&amp; combine boolean terms. Parentheses dictate order of operations.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts20">Example conditions:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Break only if register A is less than value at memory address $0005:</span></p>
<p class="rvps2"><span class="rvts72">A &lt; $0005</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Break only if the value at the indirect address is not equal to FF:</span></p>
<p class="rvps2"><span class="rvts72">#FF != $[$10+($11*#100)]</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Break only if flag N is clear or A is not equal to 00:</span></p>
<p class="rvps2"><span class="rvts72">(N==#0 || A!=#0)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Break only when accessing a data from bank 2 (the condiition is relevant when using with Read/Write-type breakpoints):</span></p>
<p class="rvps2"><span class="rvts72">T==#2</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Bookmarks</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A list of bookmarked addresses can be kept in the Address Bookmarks frame to make memory navigation easier. Simply type a hexadecimal address (or a convenient string, such as "NMI") and click "Add" to add it to your bookmarks. Alternatively, just left-click any address in the Disassembly window, and the address will appear in the Bookmark Add field, so you don't have to type it.</span></p>
<p class="rvps2"><span class="rvts6">Next time you wish to go to this address just double click on the bookmark.</span></p>
<p class="rvps2"><span class="rvts6">You can also name bookmarks.</span></p>
<p class="rvps2"><span class="rvts6">When you exit the emulator, bookmarks are saved in a .deb file named after the ROM of the debugged game. Next time you return to debugging the game, the list of bookmarks will be automatically loaded from the file.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Inline Assembler</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Open the inline assembler by left-clicking in the empty column to the left of the memory view.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The starting memory address is displayed in the PC field at the top of the inline assembler window. Type a line of assembly to add in the empty field just below this, and hit enter. The assembled code of your patch will appear below as you enter each line.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Click Apply to apply your patch to the ROM in memory. Click Undo to remove the last assembled line. After applying a patch, clicking Save will allow you to save this patch directly to the ROM file.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Other</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If the ".DEB files" checkbox in the lower right corner of the debugger window is checked, the emulator will automatically save debug settings such as breakpoints and bookmarks in a .deb file alongside the NES ROM, and load these settings next time you open the ROM.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">There is a "Rom Patcher" button that may be used to apply a small patch to a ROM, although </span><a class="rvts71" href="HexEditor.html">Hex Editor</a><span class="rvts6"> is more convenient in general.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The "ROM offsets" option will display ROM offsets instead of CPU addresses in the Disassembly window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The "Restore Original Window Size" button will restore the original size of the debugger window if you resized it manually.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The "Auto-open" checkbox causes the debugger window to open automatically whenever an NES ROM is opened.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Full-featured EBook editor</a></p>
</div>
<div id="topic_footer">
<p class="rvps4" style="clear: both;"><span class="rvts18">Created with the Personal Edition of HelpNDoc: </span><a class="rvts19" href="https://www.helpndoc.com/feature-tour">Easily create HTML Help documents</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">&times;</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>
<div id="topic_footer_content">
2016</div>
</div>
</body>
</html>

View File

@ -1,126 +1,317 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Directories</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Directories");
}
});
</script>
<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>Directories</title>
<meta name="description" content="" />
<meta name="keywords" content="Directory Overrides">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Directories">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Directories" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Directories</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="ToggleSwitchesHideMenuetc.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="GUI.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Directory Overrides</span></p>
<p><br/></p>
<p><br/></p>
<p>This menu sets a default directory override for various files relating to FCEU.</p>
<p><br/></p>
<p><span class="rvts16">Base Directory</span></p>
<p>sets the default directory FCEU will use. &nbsp;It will be the folder that FCEU creates all the sub folders (unless they are also overridden).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">ROMS</span></p>
<p>where FCEU will look for ROMS by default. &nbsp;(What folder will appear when selecting the Files &gt; Open...)</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Battery Saves</span></p>
<p>where .sav files will stored and opened from. &nbsp;These files contain the battery backed SRAM used in some games (such as Dragon Warrior).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Save States</span></p>
<p>where .fcs (savestate) files will be stored. </p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">FDS BIOS ROM</span></p>
<p>where FCEU can find disksys.rom. &nbsp;disksys.rom is a required file in order to load FDS (Famicom Disk System) games. &nbsp;If not specified, FCEUX will default to the base directory.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Screenshots</span></p>
<p>where screen captures (.png) files will be saved.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Save Screenshots as "&lt;filebase&gt;-&lt;x&gt;.png"</span></p>
<p>sets how the .png files will be named. &nbsp;Left unchecked, the file names will simply be 0.png, 1.png etc. &nbsp;Checked adds the ROM name into the file as well (such as Double Dragon 2 (U)-0.png)</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Cheats</span></p>
<p>where .cht files will be stored. &nbsp;.cht files store the active cheats set up in <a class="rvts18" href="CheatSearch.html">Cheat Search</a>.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Movies</span></p>
<p>where &nbsp;.fm2 files will be saved/loaded. &nbsp;These files are the input files used in <a class="rvts18" href="MovieRecording.html">movie recording</a>.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Memory Watch</span></p>
<p>where memory watch files are saved/loaded. &nbsp;These are used by <a class="rvts18" href="MemoryWatch.html">memory watch</a>.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Input Presets</span></p>
<p>where input presets will be saved/loaded. &nbsp;These are used in the presets section on the <a class="rvts18" href="Input.html">input config</a> window.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Lua Scripts</span></p>
<p>where Lua scripts will be saved/loaded. &nbsp;These are used when using the <span class="rvts18">Lua Scripting</span> tool.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">AVI Output</span></p>
<p>overrides which directory FCEUX will default to when saving a <a class="rvts18" href="AVICapturing.html">.avi file</a>.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Free EPub producer</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Directories"
data-hnd-context="43"
data-hnd-title="Directories"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="ToggleSwitchesHideMenuetc.html" title="Menu Items &amp; Submenus" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="GUI.html" title="GUI" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Directories</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Directory Overrides</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This menu sets a default directory override for various files relating to FCEU.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Base Directory</span></p>
<p class="rvps2"><span class="rvts6">sets the default directory FCEU will use. &nbsp;It will be the folder that FCEU creates all the sub folders (unless they are also overridden).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">ROMS</span></p>
<p class="rvps2"><span class="rvts6">where FCEU will look for ROMS by default. &nbsp;(What folder will appear when selecting the Files &gt; Open...)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Battery Saves</span></p>
<p class="rvps2"><span class="rvts6">where .sav files will stored and opened from. &nbsp;These files contain the battery backed SRAM used in some games (such as Dragon Warrior).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Save States</span></p>
<p class="rvps2"><span class="rvts6">where .fcs (savestate) files will be stored.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">FDS BIOS ROM</span></p>
<p class="rvps2"><span class="rvts6">where FCEU can find disksys.rom. &nbsp;disksys.rom is a required file in order to load FDS (Famicom Disk System) games. &nbsp;If not specified, FCEUX will default to the base directory.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Screenshots</span></p>
<p class="rvps2"><span class="rvts6">where screen captures (.png) files will be saved.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Save Screenshots as "&lt;filebase&gt;-&lt;x&gt;.png"</span></p>
<p class="rvps2"><span class="rvts6">sets how the .png files will be named. &nbsp;Left unchecked, the file names will simply be 0.png, 1.png etc. &nbsp;Checked adds the ROM name into the file as well (such as Double Dragon 2 (U)-0.png)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Cheats</span></p>
<p class="rvps2"><span class="rvts6">where .cht files will be stored. &nbsp;.cht files store the active cheats set up in </span><a class="rvts57" href="CheatSearch.html">Cheat Search</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Movies</span></p>
<p class="rvps2"><span class="rvts6">where &nbsp;.fm2 files will be saved/loaded. &nbsp;These files are the input files used in </span><a class="rvts57" href="MovieRecording.html">movie recording</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Memory Watch</span></p>
<p class="rvps2"><span class="rvts6">where memory watch files are saved/loaded. &nbsp;These are used by </span><a class="rvts57" href="MemoryWatch.html">memory watch</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Input Presets</span></p>
<p class="rvps2"><span class="rvts6">where input presets will be saved/loaded. &nbsp;These are used in the presets section on the </span><a class="rvts57" href="Input.html">input config</a><span class="rvts6"> window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Lua Scripts</span></p>
<p class="rvps2"><span class="rvts6">where Lua scripts will be saved/loaded. &nbsp;These are used when using the </span><span class="rvts57">Lua Scripting</span><span class="rvts6"> tool.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">AVI Output</span></p>
<p class="rvps2"><span class="rvts6">overrides which directory FCEUX will default to when saving a </span><a class="rvts57" href="AVICapturing.html">.avi file</a><span class="rvts6">.</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.helpndoc.com/create-epub-ebooks">Produce electronic books easily</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">&times;</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>

View File

@ -1,92 +1,287 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>FAQ / Guides</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("FAQGuides");
}
});
</script>
<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>FAQ / Guides</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="FAQ / Guides">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="FAQ / Guides" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>FAQ / Guides</h1>
</div>
<div id="topic_header_nav">
<a href="OverviewofIncludedScripts.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Troubleshooting.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">FAQ / Guides</span></p>
<p><br/></p>
<p>Information regarding various concepts such as TAS, ROM Hacking, RAM Mapping.</p>
<p><br/></p>
<p><a class="rvts80" href="ToolAssistedSpeedruns.html">Troubleshooting FAQ</a></p>
<p><br/></p>
<p>A guide to common problems people experience, and what to do about them.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts80" href="ToolAssistedSpeedruns.html">Tool Assisted Speedruns (TAS)</a></p>
<p><br/></p>
<p>Information regarding Tool Assisted Speedruns and the TAS community.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts80" href="ROMHacking.html">ROM Hacking</a></p>
<p><br/></p>
<p>Information regarding making ROM Hacks and the ROM Hacking community.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts80" href="NESRAMMappingFindingValues.html">NES RAM Mapping</a></p>
<p><br/></p>
<p>A guide to the layout of NES RAM, and how to interpret its contents.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free HTML Help documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="FAQGuides"
data-hnd-context="19"
data-hnd-title="FAQ / Guides"
>
<div class="navigation">
<ol class="breadcrumb">
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="OverviewofIncludedScripts.html" title="Overview of Included Scripts" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Troubleshooting.html" title="Troubleshooting" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>FAQ / Guides</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">FAQ / Guides</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Information regarding various concepts such as TAS, ROM Hacking, RAM Mapping.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="ToolAssistedSpeedruns.html">Troubleshooting FAQ</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A guide to common problems people experience, and what to do about them.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="ToolAssistedSpeedruns.html">Tool Assisted Speedruns (TAS)</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Information regarding Tool Assisted Speedruns and the TAS community.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="ROMHacking.html">ROM Hacking</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Information regarding making ROM Hacks and the ROM Hacking community.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="NESRAMMappingFindingValues.html">NES RAM Mapping</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A guide to the layout of NES RAM, and how to interpret its contents.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour/create-help-files-for-the-qt-help-framework">Produce online help for Qt applications</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">&times;</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>

View File

@ -1,149 +1,340 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>FCE Ultra Version History</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("FCEUltraVersionHistory");
}
});
</script>
<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>FCE Ultra Version History</title>
<meta name="description" content="" />
<meta name="keywords" content="History of FCEUX / FCE Ultra">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="FCE Ultra Version History">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="FCE Ultra Version History" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>FCE Ultra Version History</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Overview.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew230.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">History of FCEUX / FCE Ultra</span></p>
<p><br/></p>
<p>FCEUX was started in 2006 by zeromus and rheiny (sp) as an attempt to merge various branches of FCE Ultra into a unified emulator. &nbsp;Additional authors joined the project, including mz, adelikat, nitsujrehtona, maximus, CaH4e3, qFox, punkrockguy318, Sebastian Porst, AnS, feos, and rainwarrior.</p>
<p><br/></p>
<p>FCEUX contains all features and enhancements from FCE, FCE Ultra, FCEU rerecording, FCEUXD, and FCEUXDSP as well as many new mappers from FCEU-mm.</p>
<p><br/></p>
<p><a class="rvts18" href="https://sourceforge.net/projects/fceultra">FCEUX sourceforge page</a></p>
<p><br/></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts19">Version Releases</span></p>
<p><br/></p>
<p>Look at the Side Bar navigation for changelog information on FCEUX 2.1 and newer.</p>
<p><br/></p>
<p>FCEUX 2.0.3 - Released November 02, 2008 (see <a class="rvts18" href="WhatsNew203.html">changelog</a>)</p>
<p><br/></p>
<p>FCEUX 2.0.2 - Released August 14, 2008 (see <a class="rvts18" href="WhatsNew202.html">changelog</a>)</p>
<p><br/></p>
<p>FCEUX 2.0.1 - Released August 04, 2008 (see <a class="rvts18" href="WhatsNew201.html">changelog</a>)</p>
<p><br/></p>
<p>FCEUX 2.0.0 - Released August 02, 2008 (see <a class="rvts18" href="WhatsNew200.html">changelog</a>)</p>
<p><br/></p>
<p><span class="rvts16">FCE / FCEUltra</span></p>
<p><br/></p>
<p>Bero originally wrote a Nintendo Entertainment System/Famicom emulator that was referred to as <a class="rvts18" href="http://www.geocities.co.jp/Playtown/2004/fce.htm">FCE</a>. This name was apparently meant only to serve as a temporary name, but its usage remained. Xodnizel originally ported it to Linux SVGAlib, and made a few improvements. This code base was abandoned, and work began anew, under DOS, with the original FCE source code. At the end of November, 1998, FCE Ultra Beta 1 was released.</p>
<p><br/></p>
<p>FCE Ultra remained DOS-only until version 0.18, when it was ported to Linux SVGAlib, and released as a statically-linked executable. The first MS Windows port was released as version 0.25.</p>
<p><br/></p>
<p>The source code of 0.40 was released on November 12, 2000. It retained the simple license of FCE for a long time, which stated that "This software is freeware. You can use it non-commercially." Almost two years later, in June 2002, 0.80 was released, and FCE Ultra was re-licensed under the GNU GPL. </p>
<p><br/></p>
<p>It has been tested (and runs) under DOS, Linux SVGAlib, Linux X, Mac OS X, and Windows. A native GUI is provided for the Windows port, and the other ports use a command-line interface. The SDL port should run on any modern UNIX-like operating system (such as FreeBSD, Solaris or IRIX) with no code changes. It has also been ported to the GP2X, PlayStation Portable as PSPFceUltra, the Nintendo GameCube and Pepper Pad.</p>
<p><br/></p>
<p>FCE Ultra was created by Xodnizel. Development appeared to stop and the homepage and forums for the emulator were taken down. The last version before this was v0.98.13-pre, released in September 2004 as source-only. The last binary release was v0.98.12 in August 2004.</p>
<p><br/></p>
<p>However, it was resurrected again in March of 2006 by Anthony Giorgio and Mark Doliner.</p>
<p><br/></p>
<p>There is also a graphical frontend for FCE Ultra. GFCE Ultra is written in Python and uses the GTK2 user interface library. Because is it written in Python and with portability in mind, it can be run on any UNIX-like platform and any processor architecture that is supported by Python.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">FCEU Rerecording</span></p>
<p><br/></p>
<p>The "rerecording" version of FCE Ultra was implemented to FCE Ultra 0.98.10 with <a class="rvts18" href="MovieRecording.html">movie recording</a> support. &nbsp;This was done by blip, and was implemented for the purpose of creating <a class="rvts18" href="ToolAssistedSpeedruns.html">Tool-Assisted Speedruns</a>.</p>
<p><br/></p>
<p>The rerecording branch continued with 0.98.12, adding movie support features, such as "bullet proof" recording. &nbsp;In 2006, FCEU 0.98.16 was implemented by nitsuja and luke. &nbsp;Various tools such as read-only toggling, increased <a class="rvts18" href="MapHotkeys.html">hotkey mapping</a>, and <a class="rvts18" href="MemoryWatch.html">memory watch</a> were added.</p>
<p><br/></p>
<p>In 2008, FCEU rerecording was picked up again by mz, maximus, adelikat, and nitsujrehtona with various updates named FCEU.0.98.17 - 0.98.28</p>
<p><br/></p>
<p><a class="rvts18" href="http://code.google.com/p/fceu/">FCEU.28 GoogleCode Page</a></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">FCEUD / FCEUXD / FCEUXDSP / FCEUXDSP CE</span></p>
<p><br/></p>
<p><span class="rvts10">FCEUD</span></p>
<p>In 2002, Parasyte modified the then-current version (0.81.3) of FCE Ultra and added a Nesten-style debugger, along with several other features, and named it "FCEUD" (FCE Ultra Debugger).</p>
<p><br/></p>
<p><span class="rvts10">FCEUXD</span></p>
<p>In January 2004, bbitmaster began working on more features and called it "FCEUXD" (FCE Ultra Extended Debugger).</p>
<p>It is a branch of FCE Ultra that contains many extended debugging features compared to the original FCE Ultra code such as a trace logger, a built-in hex editor, a name table viewer, code/data logger, inline assembler, and Game Genie decoder/encoder in addition to the debugger and PPU viewer from FCEUD. &nbsp;The last version made was FCEUXD 1.0a.</p>
<p><br/></p>
<p><span class="rvts10">FCEUXDSP</span></p>
<p><span class="rvts10">FCEUXDSP </span>stands for FCEUXD "SP" version and is a branch of FCEUXD 1.0a.</p>
<p>It was created in 2006 by sp. &nbsp;The project extends the debugging tools even further compared to FCEUXD by adding new tools, functions, and usability of debugging tools. &nbsp;</p>
<p><br/></p>
<p>The last version of FCEUXDSP was 1.07 which adds a feature known as the RAM Filter. This has since been removed, due to functional redundancy.</p>
<p><br/></p>
<p><a class="rvts18" href="http://www.the-interweb.com/serendipity/index.php?/categories/9-FCEUXD-SP">FCEUXDSP homepage</a></p>
<p><br/></p>
<p><span class="rvts10">FCEUXDSP CE</span></p>
<p>CE stands for "Champion Edition" and is a branch of XDSP that adds a text hooker tool.</p>
<p><br/></p>
<p><a class="rvts18" href="http://www.ximwix.net/boneyard/design19/xb/texthooker.htm">FCEUXDSP CE homepage</a></p>
<p><br/></p>
<p><span class="rvts16">FCEU-mm</span></p>
<p><br/></p>
<p>FCEU "mappers modified" is an unofficial build of FCEU Ultra by CaH4e3, which supports a lot of new mappers including some obscure mappers such as one for unlicensed NES ROM's.</p>
<p><br/></p>
<p>FCEUX supports mappers from older versions of FCEU-mm.</p>
<p><br/></p>
<p><a class="rvts18" href="http://sourceforge.net/projects/fceumm/">FCEU-mm SourceForge page</a></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create CHM Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="FCEUltraVersionHistory"
data-hnd-context="3"
data-hnd-title="FCE Ultra Version History"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Overview.html" title="Overview" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Newtopic.html" title="What's New? 2.3.0 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>FCE Ultra Version History</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">History of FCEUX / FCE Ultra</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX was started in 2006 by zeromus and rheiny (sp) as an attempt to merge various branches of FCE Ultra into a unified emulator. &nbsp;Additional authors joined the project, including mz, adelikat, nitsujrehtona, maximus, CaH4e3, qFox, punkrockguy318, Sebastian Porst, AnS, feos, and rainwarrior.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX contains all features and enhancements from FCE, FCE Ultra, FCEU rerecording, FCEUXD, and FCEUXDSP as well as many new mappers from FCEU-mm.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts24" href="https://sourceforge.net/projects/fceultra">FCEUX sourceforge page</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts25">Version Releases</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Look at the Side Bar navigation for changelog information on FCEUX 2.1 and newer.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX 2.0.3 - Released November 02, 2008 (see </span><a class="rvts24" href="WhatsNew203.html">changelog</a><span class="rvts6">)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX 2.0.2 - Released August 14, 2008 (see </span><a class="rvts24" href="WhatsNew202.html">changelog</a><span class="rvts6">)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX 2.0.1 - Released August 04, 2008 (see </span><a class="rvts24" href="WhatsNew201.html">changelog</a><span class="rvts6">)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX 2.0.0 - Released August 02, 2008 (see </span><a class="rvts24" href="WhatsNew200.html">changelog</a><span class="rvts6">)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">FCE / FCEUltra</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Bero originally wrote a Nintendo Entertainment System/Famicom emulator that was referred to as </span><a class="rvts24" href="http://www.geocities.co.jp/Playtown/2004/fce.htm">FCE</a><span class="rvts6">. This name was apparently meant only to serve as a temporary name, but its usage remained. Xodnizel originally ported it to Linux SVGAlib, and made a few improvements. This code base was abandoned, and work began anew, under DOS, with the original FCE source code. At the end of November, 1998, FCE Ultra Beta 1 was released.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCE Ultra remained DOS-only until version 0.18, when it was ported to Linux SVGAlib, and released as a statically-linked executable. The first MS Windows port was released as version 0.25.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The source code of 0.40 was released on November 12, 2000. It retained the simple license of FCE for a long time, which stated that "This software is freeware. You can use it non-commercially." Almost two years later, in June 2002, 0.80 was released, and FCE Ultra was re-licensed under the GNU GPL.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">It has been tested (and runs) under DOS, Linux SVGAlib, Linux X, Mac OS X, and Windows. A native GUI is provided for the Windows port, and the other ports use a command-line interface. The SDL port should run on any modern UNIX-like operating system (such as FreeBSD, Solaris or IRIX) with no code changes. It has also been ported to the GP2X, PlayStation Portable as PSPFceUltra, the Nintendo GameCube and Pepper Pad.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCE Ultra was created by Xodnizel. Development appeared to stop and the homepage and forums for the emulator were taken down. The last version before this was v0.98.13-pre, released in September 2004 as source-only. The last binary release was v0.98.12 in August 2004.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">However, it was resurrected again in March of 2006 by Anthony Giorgio and Mark Doliner.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">There is also a graphical frontend for FCE Ultra. GFCE Ultra is written in Python and uses the GTK2 user interface library. Because is it written in Python and with portability in mind, it can be run on any UNIX-like platform and any processor architecture that is supported by Python.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">FCEU Rerecording</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The "rerecording" version of FCE Ultra was implemented to FCE Ultra 0.98.10 with </span><a class="rvts24" href="MovieRecording.html">movie recording</a><span class="rvts6"> support. &nbsp;This was done by blip, and was implemented for the purpose of creating </span><a class="rvts24" href="ToolAssistedSpeedruns.html">Tool-Assisted Speedruns</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The rerecording branch continued with 0.98.12, adding movie support features, such as "bullet proof" recording. &nbsp;In 2006, FCEU 0.98.16 was implemented by nitsuja and luke. &nbsp;Various tools such as read-only toggling, increased </span><a class="rvts24" href="MapHotkeys.html">hotkey mapping</a><span class="rvts6">, and </span><a class="rvts24" href="MemoryWatch.html">memory watch</a><span class="rvts6"> were added.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In 2008, FCEU rerecording was picked up again by mz, maximus, adelikat, and nitsujrehtona with various updates named FCEU.0.98.17 - 0.98.28</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts24" href="http://code.google.com/p/fceu/">FCEU.28 GoogleCode Page</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">FCEUD / FCEUXD / FCEUXDSP / FCEUXDSP CE</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">FCEUD</span></p>
<p class="rvps2"><span class="rvts6">In 2002, Parasyte modified the then-current version (0.81.3) of FCE Ultra and added a Nesten-style debugger, along with several other features, and named it "FCEUD" (FCE Ultra Debugger).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">FCEUXD</span></p>
<p class="rvps2"><span class="rvts6">In January 2004, bbitmaster began working on more features and called it "FCEUXD" (FCE Ultra Extended Debugger).</span></p>
<p class="rvps2"><span class="rvts6">It is a branch of FCE Ultra that contains many extended debugging features compared to the original FCE Ultra code such as a trace logger, a built-in hex editor, a name table viewer, code/data logger, inline assembler, and Game Genie decoder/encoder in addition to the debugger and PPU viewer from FCEUD. &nbsp;The last version made was FCEUXD 1.0a.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">FCEUXDSP</span></p>
<p class="rvps2"><span class="rvts15">FCEUXDSP </span><span class="rvts6">stands for FCEUXD "SP" version and is a branch of FCEUXD 1.0a.</span></p>
<p class="rvps2"><span class="rvts6">It was created in 2006 by sp. &nbsp;The project extends the debugging tools even further compared to FCEUXD by adding new tools, functions, and usability of debugging tools. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The last version of FCEUXDSP was 1.07 which adds a feature known as the </span><span class="rvts6">RAM Filter</span><span class="rvts6">. This has since been removed, due to functional redundancy.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts24" href="http://www.the-interweb.com/serendipity/index.php?/categories/9-FCEUXD-SP">FCEUXDSP homepage</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">FCEUXDSP CE</span></p>
<p class="rvps2"><span class="rvts6">CE stands for "Champion Edition" and is a branch of XDSP that adds a text hooker tool.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts24" href="http://www.ximwix.net/boneyard/design19/xb/texthooker.htm">FCEUXDSP CE homepage</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">FCEU-mm</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEU "mappers modified" is an unofficial build of FCEU Ultra by CaH4e3, which supports a lot of new mappers including some obscure mappers such as one for unlicensed NES ROM's.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX supports mappers from older versions of FCEU-mm.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts24" href="http://sourceforge.net/projects/fceumm/">FCEU-mm SourceForge page</a></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.helpndoc.com/help-authoring-tool">Free 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">&times;</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>

View File

@ -1,120 +1,311 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>GUI</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("GUI");
}
});
</script>
<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>GUI</title>
<meta name="description" content="" />
<meta name="keywords" content="context menu,GUI,right-click">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="GUI">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="GUI" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>GUI</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Directories.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Input.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">GUI</span></p>
<p><br/></p>
<p>Various toggle boxes related to the FCEUX main window.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Load "File Open" dialog when FCEUX starts.</span></p>
<p><br/></p>
<p>If enabled, FCEUX will ask for a ROM to open upon FCEUX start up. </p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Automatically hide menu on game load.</span></p>
<p><br/></p>
<p>If enabled, the FCEU Menu will be hidden while a ROM is loaded. &nbsp;To unhide it, press the ESC key.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Ask confirmation on exit attempt.</span></p>
<p><br/></p>
<p>If enabled, FCEUX will ask you before closing the window. &nbsp;(It may also say some other things...)</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Disable screen saver while game is loaded. </span></p>
<p><br/></p>
<p>This is enabled by default. &nbsp;If a game is running, the windows screen saver will not turn on.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Enable right-click context menu.</span></p>
<p><br/></p>
<p>This is enabled by default. &nbsp;This allows you to right-click on the emulator to get context menus. &nbsp;The context menu gives many common options for a given situation and has a few options not available otherwise.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Switch fullscreen by double-click</span></p>
<p><br/></p>
<p>If enabled, you may switch between fullscreen mode and windowed mode by a double-click on the emulator.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Partially disable Visual Themes (Requires restart)</span></p>
<p><br/></p>
<p>If enabled, dialog windows in FCEUX will use classic Visual Theme (a la Windows98 interface).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Single Instance Mode</span></p>
<p><br/></p>
<p>If enabled, starting a second copy of FCEUX with a path to a game will make FCEUX load the file into the first window, then exit. This will ensure that only one instance of FCEUX is running in your OS.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/help-authoring-tool">Single source CHM, PDF, DOC and HTML Help creation</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="GUI"
data-hnd-context="53"
data-hnd-title="GUI"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Directories.html" title="Directories" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Input.html" title="Input" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>GUI</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">GUI</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Various toggle boxes related to the FCEUX main window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Load "File Open" dialog when FCEUX starts.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If enabled, FCEUX will ask for a ROM to open upon FCEUX start up.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Automatically hide menu on game load.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If enabled, the FCEU Menu will be hidden while a ROM is loaded. &nbsp;To unhide it, press the ESC key.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Ask confirmation on exit attempt.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If enabled, FCEUX will ask you before closing the window. &nbsp;(It may also say some other things...)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Disable screen saver while game is loaded.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This is enabled by default. &nbsp;If a game is running, the windows screen saver will not turn on.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Enable right-click context menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This is enabled by default. &nbsp;This allows you to right-click on the emulator to get context menus. &nbsp;The context menu gives many common options for a given situation and has a few options not available otherwise.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Switch fullscreen by double-click</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If enabled, you may switch between fullscreen mode and windowed mode by a double-click on the emulator.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Partially disable Visual Themes (Requires restart)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If enabled, dialog windows in FCEUX will use classic Visual Theme (a la Windows98 interface).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Single Instance Mode</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If enabled, starting a second copy of FCEUX with a path to a game will make FCEUX load the file into the first window, then exit. This will ensure that only one instance of FCEUX is running in your OS.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/create-epub-ebooks">Free EPub producer</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">&times;</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>

View File

@ -1,104 +1,295 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Game Genie Encoder/Decoder</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("GameGenieEncoderDecoder");
}
});
</script>
<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>Game Genie Encoder/Decoder</title>
<meta name="description" content="" />
<meta name="keywords" content="Game Genie Decoder/Encoder,Making Game Genie codes">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Game Genie Encoder/Decoder">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Game Genie Encoder/Decoder" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Game Genie Encoder/Decoder</h1>
<div id="topic_breadcrumb">
<a href="Debug.html">Debug</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Debug.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="CodeDataLogger.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="LuaScripting.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Game Genie Decoder/Encoder</span></p>
<p><br/></p>
<p>This will take an NES address space PRG address ($8000-$FFFF), a comparison value (for 8-letter GG codes; refer to a Game Genie code FAQ for an explanation of what this does), and a Value that replaces the addressed byte.</p>
<p><br/></p>
<p>Filling in the Address and Value fields will produce a 6-letter code; if you also fill out the Compare field, it will produce an 8-letter code. &nbsp;The code so produced will appear in the Game Genie Code box immediately; you can then click "Add to Cheat List" to activate it.</p>
<p><br/></p>
<p>To decrypt a Game Genie code, enter it into the Game Genie Code box, and the Address and Value fields will be automatically filled in, as will the Compare field if it was an 8-letter code.</p>
<p><span class="rvts16"><br/></span></p>
<p><span class="rvts16">Adding Game Genie codes</span></p>
<p><br/></p>
<p>In the Game Genie Code Decoder/Encoder window, type the code into the Game Genie Code box and click "Add to Cheat List", which will add it to the <a class="rvts18" href="CheatSearch.html">Cheat Search</a> cheat list. You can then enable/disable them by double-clicking the code in the box (a * means the code is active).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Making Game Genie codes permanent</span></p>
<p><br/></p>
<p>Using the Game Genie Code Decoder/Encoder, enter in your code in the "Game Genie Code" box, and under "Possible Affected ROM File Addresses", a list of possible matches (usually from 1 to 5) is displayed. Using the built-in Hex Editor, go to the first listed address in the ROM, and change its value to the value given in the "Value" box (of the GG code Decoder/Encoder window). If the desired effect isn't achieved, undo the change (Ctrl+Z) and try the next address. Repeat until the desired effect is achieved, and then save the ROM.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">How do I make my own Game Genie codes?</span></p>
<p><br/></p>
<p>First of all, you must:</p>
<p><br/></p>
<p>* have a decent amount of ASM knowledge;</p>
<p>* know how to use the debugger;</p>
<p>* understand NES PRG-ROM bank switching.</p>
<p><br/></p>
<p>Once you've found a part of PRG-ROM you want to change to create a code effect, snap the <a class="rvts18" href="Debugger.html">Debugger</a> (if it's not so already) and find the code's location in the PRG-ROM's address space ($8000-$FFFF) (you'll want the debugger snapped so the game won't swap banks out from under you). Then, using the built-in <a class="rvts18" href="HexEditor.html">Hex Editor</a>, view the NES memory and go to the PRG-ROM address you wish to modify, then right-click the byte and choose "Create Game Genie Code at this Address". The Game Genie Code Decoder/Encoder will appear, with the Address and Compare boxes filled in (the Compare box represents the address's original value). Enter the new value into the "Value" box. </p>
<p><br/></p>
<p>An alternative way to enter the code is to locate the desired address in the debugger, and then middle-click on it, which will summon the GG Code Decoder/Encoder. Then enter the code as described above.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free EPub and documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="GameGenieEncoderDecoder"
data-hnd-context="40"
data-hnd-title="Game Genie Encoder/Decoder"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Debug.html">Debug</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Debug.html" title="Debug" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="CodeDataLogger.html" title="Code/Data Logger" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="LuaScripting.html" title="Lua Scripting" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Game Genie Encoder/Decoder</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Game Genie Decoder/Encoder</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This will take an NES address space PRG address ($8000-$FFFF), a comparison value (for 8-letter GG codes; refer to a Game Genie code FAQ for an explanation of what this does), and a Value that replaces the addressed byte.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Filling in the Address and Value fields will produce a 6-letter code; if you also fill out the Compare field, it will produce an 8-letter code. &nbsp;The code so produced will appear in the Game Genie Code box immediately; you can then click "Add to Cheat List" to activate it.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To decrypt a Game Genie code, enter it into the Game Genie Code box, and the Address and Value fields will be automatically filled in, as will the Compare field if it was an 8-letter code.</span></p>
<p class="rvps2"><span class="rvts21"><br/></span></p>
<p class="rvps2"><span class="rvts21">Adding Game Genie codes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In the Game Genie Code Decoder/Encoder window, type the code into the Game Genie Code box and click "Add to Cheat List", which will add it to the </span><a class="rvts89" href="CheatSearch.html">Cheat Search</a><span class="rvts6"> cheat list. You can then enable/disable them by double-clicking the code in the box (a * means the code is active).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Making Game Genie codes permanent</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Using the Game Genie Code Decoder/Encoder, enter in your code in the "Game Genie Code" box, and under "Possible Affected ROM File Addresses", a list of possible matches (usually from 1 to 5) is displayed. Using the built-in Hex Editor, go to the first listed address in the ROM, and change its value to the value given in the "Value" box (of the GG code Decoder/Encoder window). If the desired effect isn't achieved, undo the change (Ctrl+Z) and try the next address. Repeat until the desired effect is achieved, and then save the ROM.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">How do I make my own Game Genie codes?</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">First of all, you must:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* have a decent amount of ASM knowledge;</span></p>
<p class="rvps2"><span class="rvts6">* know how to use the debugger;</span></p>
<p class="rvps2"><span class="rvts6">* understand NES PRG-ROM bank switching.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Once you've found a part of PRG-ROM you want to change to create a code effect, snap the </span><a class="rvts89" href="Debugger.html">Debugger</a><span class="rvts6"> (if it's not so already) and find the code's location in the PRG-ROM's address space ($8000-$FFFF) (you'll want the debugger snapped so the game won't swap banks out from under you). Then, using the built-in </span><a class="rvts89" href="HexEditor.html">Hex Editor</a><span class="rvts6">, view the NES memory and go to the PRG-ROM address you wish to modify, then right-click the byte and choose "Create Game Genie Code at this Address". The Game Genie Code Decoder/Encoder will appear, with the Address and Compare boxes filled in (the Compare box represents the address's original value). Enter the new value into the "Value" box.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">An alternative way to enter the code is to locate the desired address in the debugger, and then middle-click on it, which will summon the GG Code Decoder/Encoder. Then enter the code as described above.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Full-featured Kindle eBooks generator</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">&times;</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>

View File

@ -1,100 +1,291 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Game file compatibility</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Gamefilecompatibility");
}
});
</script>
<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>Game file compatibility</title>
<meta name="description" content="" />
<meta name="keywords" content="Hacked Games,Valid Game Types">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Game file compatibility">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Game file compatibility" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Game file compatibility</h1>
<div id="topic_breadcrumb">
<a href="General.html">General</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="General.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Gettingstarted.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="CommandLineOptions.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">File Formats/Expansion Hardware</span></p>
<p><br/></p>
<p><span class="rvts16">Valid Game Types</span></p>
<p><br/></p>
<p>FCEUX supports the iNES, FDS(raw and with a header), UNIF, and NSF file formats. FDS ROM images in the iNES format are not supported; it would be silly to do so and storing them in that format is nonsensical.</p>
<p><br/></p>
<p>FCEUX supports loading ROM/disk images from some types of compressed files. FCEUX can load data from both PKZIP-format files and gzip-format files. Only the "deflate" algorithm is supported, but this is the most widely used algorithm for these formats.</p>
<p><span class="rvts16"><br/></span></p>
<p><span class="rvts16">Playing from compressed (.zip) files</span></p>
<p><br/></p>
<p>FCEUX is compatible with all compression types compatible with 7z. &nbsp;Compatible types include .7z, .zip, .rar, and .tar.</p>
<p><br/></p>
<p>If an archive file is opened, it will be scanned for the followings extensions: .nes, .fds, .nsf, .unf, .nez, .unif. &nbsp;If more than one valid type is detected, a dialog box will open up with a list of available choices.</p>
<p><br/></p>
<p><span class="rvts16">Automatic IPS Patching (Playing Hacked Games)</span></p>
<p><br/></p>
<p>FCEUX supports automatic IPS patching. &nbsp;</p>
<p><br/></p>
<p>Place the IPS file in the same directory as the file to load, and name it [filename.extension].ips.</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Examples: &nbsp; &nbsp; &nbsp; &nbsp;Boat.nes - &nbsp; &nbsp; &nbsp;Boat.nes.ips</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Boat.zip - &nbsp; &nbsp; &nbsp; Boat.zip.ips</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Boat.nes.gz - &nbsp;Boat.nes.gz.ips</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Boat &nbsp; &nbsp; - &nbsp; &nbsp; &nbsp; &nbsp; Boat.ips</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;</p>
<p><br/></p>
<p>(Some operating systems and environments will hide file extensions. Keep this in mind if you are having trouble.)</p>
<p><br/></p>
<p>Patching is supported for all supported formats (iNES, FDS, UNIF, and NSF), but it will probably only be useful for the iNES and FDS formats. UNIF files can't be patched well with the IPS format because they are chunk-based with no fixed offsets. </p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Gamefilecompatibility"
data-hnd-context="57"
data-hnd-title="Game file compatibility"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="General.html">General</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="General.html" title="General" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Gettingstarted.html" title="Getting Started" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="CommandLineOptions.html" title="Command Line Options" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Game file compatibility</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">File Formats/Expansion Hardware</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Valid Game Types</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX supports the iNES, FDS(raw and with a header), UNIF, and NSF file formats. FDS ROM images in the iNES format are not supported; it would be silly to do so and storing them in that format is nonsensical.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX supports loading ROM/disk images from some types of compressed files. FCEUX can load data from both PKZIP-format files and gzip-format files. Only the "deflate" algorithm is supported, but this is the most widely used algorithm for these formats.</span></p>
<p class="rvps2"><span class="rvts21"><br/></span></p>
<p class="rvps2"><span class="rvts21">Playing from compressed (.zip) files</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX is compatible with all compression types compatible with 7z. &nbsp;Compatible types include .7z, .zip, .rar, and .tar.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If an archive file is opened, it will be scanned for the followings extensions: .nes, .fds, .nsf, .unf, .nez, .unif. &nbsp;If more than one valid type is detected, a dialog box will open up with a list of available choices.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Automatic IPS Patching (Playing Hacked Games)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX supports automatic IPS patching. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Place the IPS file in the same directory as the file to load, and name it [filename.extension].ips.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; Examples:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Boat.nes - &nbsp; &nbsp; &nbsp;Boat.nes.ips</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Boat.zip - &nbsp; &nbsp; &nbsp; Boat.zip.ips</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Boat.nes.gz - &nbsp;Boat.nes.gz.ips</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Boat &nbsp; &nbsp; - &nbsp; &nbsp; &nbsp; &nbsp; Boat.ips</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">(Some operating systems and environments will hide file extensions. Keep this in mind if you are having trouble.)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Patching is supported for all supported formats (iNES, FDS, UNIF, and NSF), but it will probably only be useful for the iNES and FDS formats. UNIF files can't be patched well with the IPS format because they are chunk-based with no fixed offsets.&nbsp;</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.helpndoc.com">Easy EBook and documentation generator</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">&times;</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>

View File

@ -1,94 +1,289 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>General</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("General");
}
});
</script>
<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>General</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="General">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="General" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>General</h1>
</div>
<div id="topic_header_nav">
<a href="WhatsNew200.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Gettingstarted.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">General</span></p>
<p><br/></p>
<p>Guides for general uses of FCEUX.</p>
<p><br/></p>
<p><a class="rvts26" href="Gettingstarted.html">Getting Started</a></p>
<p><br/></p>
<p>A guide for loading games, setting up controls, etc.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts25" href="CommandLineOptions.html">Command Line Options</a></p>
<p><br/></p>
<p>FCEUX as an extensive set of options for running from command line (or .bat file). &nbsp;This guide explains all command options available.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts26" href="FamicomDiskSystem.html">Famicom Disk System</a></p>
<p><br/></p>
<p>A guide for playing Famicom Disk System (.fds) games.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts26" href="MovieRecording.html">Movie Recording</a></p>
<p><br/></p>
<p>A guide for playing and recording movie input files (.fm2).</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts26" href="AVICapturing.html">AVI Capturing</a></p>
<p><br/></p>
<p>A guide for capturing a game/movie file into an AVI file.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Full-featured Documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="General"
data-hnd-context="1"
data-hnd-title="General"
>
<div class="navigation">
<ol class="breadcrumb">
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="WhatsNew200.html" title="What's New? 2.0.0" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Gettingstarted.html" title="Getting Started" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>General</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">General</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Guides for general uses of FCEUX.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Gettingstarted.html">Getting Started</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A guide for loading games, setting up controls, etc.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="CommandLineOptions.html">Command Line Options</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX as an extensive set of options for running from command line (or .bat file). &nbsp;This guide explains all command options available.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="FamicomDiskSytem.html">Famicom Disk System</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A guide for playing Famicom Disk System (.fds) games.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="MovieRecording.html">Movie Recording</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A guide for playing and recording movie input files (.fm2).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="AVICapturing.html">AVI Capturing</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A guide for capturing a game/movie file into an AVI file.</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.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Generate Kindle eBooks with ease</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">&times;</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>

View File

@ -1,110 +1,301 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Getting Started</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Gettingstarted");
}
});
</script>
<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>Getting Started</title>
<meta name="description" content="" />
<meta name="keywords" content="Getting Started,Loadstate,Savestates,Undo">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Getting Started">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Getting Started" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Getting Started</h1>
<div id="topic_breadcrumb">
<a href="General.html">General</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="General.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="General.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Gamefilecompatibility.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Getting Started</span></p>
<p><br/></p>
<p><span class="rvts27">Playing Games</span></p>
<p><br/></p>
<p>The most basic function of FCEUX is to play Nintendo Entertainment System (NES) and Famicom Disk System (FDS) games.</p>
<p><br/></p>
<p>To play a game, simply open a ROM by selecting "Open" in the File Menu (or press Ctrl+O). &nbsp;(See <a class="rvts18" href="Gamefilecompatibility.html">Game Compatibility</a> for information regarding file types that are compatible with FCEU.)</p>
<p><br/></p>
<p>To get set up properly, you may need to configure any of the following:</p>
<p><br/></p>
<p>-<a class="rvts18" href="Input.html">Input</a></p>
<p>-<a class="rvts18" href="Video.html">Video</a></p>
<p>-<a class="rvts18" href="SoundOptions.html">Sound</a></p>
<p>-<a class="rvts18" href="Timing.html">Timing</a></p>
<p>-<a class="rvts18" href="GUI.html">GUI settings</a></p>
<p>-<a class="rvts18" href="MapHotkeys.html">Hotkeys</a></p>
<p>-<a class="rvts18" href="Directories.html">Directory Overrides</a></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Using Savestates</span></p>
<p><br/></p>
<p>In emulation, a savestate (alternatively called freeze state or game freeze) is a snapshot of all of an emulated device's state information at a given moment. This makes it possible to pause emulation, and restart it later, even in another instance of the emulator, or to test the emulated machines reaction to different series of inputs using the saved state as a common starting point. </p>
<p><br/></p>
<p>To make a savestate press shift + F1-F10 to save to a save slot (0-9). &nbsp;Or select a save slot with the number keys (0-9) and select the quick save command (Default hotkey is "I")</p>
<p><br/></p>
<p>To load a savestate press F1-F10. &nbsp;Or select a save slot with the number keys (0-9) and loadstate by navigating to File &gt; Savestate &gt; &nbsp;Loadstate or by pressing the loadstate hotkey (Default hotkey is "P").</p>
<p><br/></p>
<p>To save a state to a specific file, go to "Save state as..." in the FCEUX File menu.</p>
<p><br/></p>
<p>To load a specific savestate file, go to the "Load state from..." in the FCEUX File menu.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Undo Savestate / Loadstate</span></p>
<p><br/></p>
<p>If you load a state by accident, you can right-click and select "Undo Loadstate" to restore the emulator back to the state it was in before the loadstate. &nbsp;Upon using undo loadstate, a redo loadstate will appear as an option. &nbsp;</p>
<p><br/></p>
<p>If you make a savestate, it will overwrite the existing savestate for that slot. &nbsp;You have the option to undo this and restore the previous savestate file by right-clicking and selecting undo savestate. &nbsp;Once you undo, you will have the option to redo savestate to restore the savestate that you made. &nbsp;You can also map a <a class="rvts18" href="MapHotkeys.html">hotkey</a> to this function, by default it's mapped to Ctrl+Z.</p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/iphone-website-generation">Create iPhone web-based documentation</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Gettingstarted"
data-hnd-context="4"
data-hnd-title="Getting Started"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="General.html">General</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="General.html" title="General" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="General.html" title="General" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Gamefilecompatibility.html" title="Game file compatibility" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Getting Started</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Getting Started</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Playing Games</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The most basic function of FCEUX is to play Nintendo Entertainment System (NES) and Famicom Disk System (FDS) games.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To play a game, simply open a ROM by selecting "Open" in the File Menu (or press Ctrl+O). &nbsp;(See </span><a class="rvts38" href="Gamefilecompatibility.html">Game Compatibility</a><span class="rvts6"> for information regarding file types that are compatible with FCEU.)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To get set up properly, you may need to configure any of the following:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-</span><a class="rvts38" href="Input.html">Input</a></p>
<p class="rvps2"><span class="rvts6">-</span><a class="rvts38" href="Video.html">Video</a></p>
<p class="rvps2"><span class="rvts6">-</span><a class="rvts38" href="SoundOptions.html">Sound</a></p>
<p class="rvps2"><span class="rvts6">-</span><a class="rvts38" href="Timing.html">Timing</a></p>
<p class="rvps2"><span class="rvts6">-</span><a class="rvts38" href="GUI.html">GUI settings</a></p>
<p class="rvps2"><span class="rvts6">-</span><a class="rvts38" href="MapHotkeys.html">Hotkeys</a></p>
<p class="rvps2"><span class="rvts6">-</span><a class="rvts38" href="Directories.html">Directory Overrides</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Using Savestates</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In emulation, a savestate (alternatively called freeze state or game freeze) is a snapshot of all of an emulated device's state information at a given moment. This makes it possible to pause emulation, and restart it later, even in another instance of the emulator, or to test the emulated machines reaction to different series of inputs using the saved state as a common starting point.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To make a savestate press shift + F1-F10 to save to a save slot (0-9). &nbsp;Or select a save slot with the number keys (0-9) and select the quick save command (Default hotkey is "I")</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To load a savestate press F1-F10. &nbsp;Or select a save slot with the number keys (0-9) and loadstate by navigating to File &gt; Savestate &gt; &nbsp;Loadstate or by pressing the loadstate hotkey (Default hotkey is "P").</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To save a state to a specific file, go to "Save state as..." in the FCEUX File menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To load a specific savestate file, go to the "Load state from..." in the FCEUX File menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Undo Savestate / Loadstate</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If you load a state by accident, you can right-click and select "Undo Loadstate" to restore the emulator back to the state it was in before the loadstate. &nbsp;Upon using undo loadstate, a redo loadstate will appear as an option. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If you make a savestate, it will overwrite the existing savestate for that slot. &nbsp;You have the option to undo this and restore the previous savestate file by right-clicking and selecting undo savestate. &nbsp;Once you undo, you will have the option to redo savestate to restore the savestate that you made. &nbsp;You can also map a </span><a class="rvts38" href="MapHotkeys.html">hotkey</a><span class="rvts6"> to this function, by default it's mapped to Ctrl+Z.</span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour/create-help-files-for-the-qt-help-framework">Qt Help documentation made easy</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">&times;</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>

View File

@ -1,131 +1,319 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hex Editor</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("HexEditor");
}
});
</script>
<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>Hex Editor</title>
<meta name="description" content="" />
<meta name="keywords" content="Hex Editor">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Hex Editor">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Hex Editor" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Hex Editor</h1>
<div id="topic_breadcrumb">
<a href="Debug.html">Debug</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Debug.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="NameTableViewer.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="TraceLogger.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Hex Editor</span></p>
<p><br/></p>
<p><br/></p>
<p>The Hex Editor is a very powerful memory viewing/editing tool, it obsoletes the Memory Viewer tool from the FCE Ultra and FCEU Rerecording branches.</p>
<p><br/></p>
<p>It can do a wide range of things. &nbsp;It allows you to view the entire RAM &amp; ROM contents in a resizable dialog window. It makes it easy to edit the game's RAM, PPU memory, and even its currently-loaded ROM data by simply typing in values in the editor. You can also "freeze" parts of RAM (to prevent the game from modifying the data there), search for data (Ctrl+F), and even copy and paste data to/from the clipboard. &nbsp;Furthermore, table files are supported, so you can edit a game's text in real-time and see the result immediately.</p>
<p><br/></p>
<p>Basically, it lets you tinker with any part of a game's RAM or ROM while it is running.</p>
<p><br/></p>
<p><span class="rvts16">Using the Hex Editor</span></p>
<p><br/></p>
<p>The Hex Editor lets you edit three major areas:</p>
<p><br/></p>
<p><span class="rvts32">1. NES MEMORY</span></p>
<p>This allows you to directly edit all of the NES address space (System Bus - $0000-$FFFF). While you can easily modify RAM, or write directly to registers by typing in data, you cannot modify ROM data ($8000-$FFFF) itself. This is because most mappers have registers which are located in this space; so writing there can trigger mapper operations that may cause the game to crash or glitch if you don't know what you're doing. &nbsp;If you want to edit the ROM itself, right-click on the offset and select &nbsp;"Go here in ROM file"; that will take you directly to where you need to be so you can start editing. &nbsp;You can also freeze RAM by clicking on it with the middle mouse button, or by using the right-click menu. This works by adding it directly to the Cheat List, which you can see from the <a class="rvts18" href="CheatSearch.html">Cheat Console</a>. Finally, the right-click menu can be used to quickly add a read or write breakpoint to the debugger. When adding a breakpoint to the range of ROM addresses ($8000-$FFFF), the Hex Editor also takes into account the number of the bank in which the byte is located.</p>
<p><br/></p>
<p><span class="rvts32">2. PPU MEMORY</span></p>
<p>This allows you to directly view and write to PPU memory (VRAM).</p>
<p><br/></p>
<p><span class="rvts32">3. OAM MEMORY</span></p>
<p>This allows you to directly view and write to OAM memory (sprite RAM).</p>
<p><br/></p>
<p><span class="rvts32">4. THE ROM FILE</span></p>
<p>This allows you to edit the ROM file in real time, i.e. while the game is running. If you make a mistake, press Ctrl+Z or Edit-&gt;Undo to undo your change (then load a save-state if the game crashed).</p>
<p><br/></p>
<p>The Hex Editor also has support for table files (*.tbl) to map bytes to text. Each line consists of four characters of the form "xx=y", where "xx" is the hex value, and "y" is the character that that value represents. I have also added an extension to represent the Return key: &nbsp;xx=ret whereby pressing the Return key will enter that value into the ROM. &nbsp;You can copy/paste data or text by selecting it and using Ctrl+C (to copy) and Ctrl+V (to paste). Plus, there is an Edit-&gt;Find feature that you can use to search for data. This feature should be fairly intuitive, so I won't bother to explain it.</p>
<p><br/></p>
<p>When you're done editing, remember to save the ROM file (File-&gt;Save) or your changes will be lost when you close the ROM.</p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts16">Why can't I edit NES memory beyond $8000?</span></p>
<p><span class="rvts10"><br/></span></p>
<p>NES memory from $8000-$FFFF is where the game's PRG-ROM code is mapped. &nbsp;Whenever you type in a value in the NES memory editor, it effectively writes that value to that address. Many games use mappers, which are usually accessed by writing to $8000-$FFFF (which is read-only)... and if *you* were to do so, it may trigger a bankswitch, which could easily make the game crash. In any event, doing so will not modify the ROM itself. &nbsp;What you *can* do, though, is edit the PRG-ROM itself by right-clicking on the offset you wish to edit, and selecting "Go here in the ROM file", which should take you to that spot in the ROM instead, where you can change the data at instead.</p>
<p><br/></p>
<p><span class="rvts16">Highlighting</span></p>
<p><br/></p>
<p>The Hex Editor highlights certain bytes with different colors to help you distinguish different data.</p>
<p>Usually all bytes are colored black.</p>
<p>Bookmarked RAM addresses are highlighted by <span class="rvts49">green color</span>.</p>
<p>Freezed RAM addresses are highlighted by <span class="rvts48">blue color</span>.</p>
<p>Modified ROM bytes are highlighted by <span class="rvts50">red color</span>.</p>
<p>If you have the <a class="rvts18" href="CodeDataLogger.html">Code/Data Logger</a> running, bytes that were logged will be colored:</p>
<p>For PRG ROM segment:</p>
<p><span class="rvts52">Dark-yellow</span> - the byte is code</p>
<p><span class="rvts53">Blue</span> - the byte is data</p>
<p><span class="rvts54">Cyan</span> - the byte is PCM audio data</p>
<p><span class="rvts51">Green</span> - the byte is both code and data</p>
<p>For CHR ROM segment:</p>
<p><span class="rvts55">Yellow</span> - the byte was rendered</p>
<p><span class="rvts56">Light-blue</span> - the byte was read programmatically</p>
<p><span class="rvts57">Light-green</span> - the byte was both rendered and read programmatically</p>
<p><br/></p>
<p><span class="rvts16">Highlight Activity</span></p>
<p><br/></p>
<p>This feature of the Hex Editor can draw your attention to bytes that changed their value since the last frame, or since the last update of Hex Editor window (if "Fade when paused" option is enabled).</p>
<p>If you don't need this feature, you can switch it off in the "Highlighting" submenu.</p>
<p>You can customize this feature by changing "fading period".</p>
<p>IMPORTANT NOTE: this feature does not track the actual changes of RAM. It works by simply comparing current values to previously displayed values of the same addresses. That's why the feature works with RAM/PPU/OAM/ROM as well.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="HexEditor"
data-hnd-context="15"
data-hnd-title="Hex Editor"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Debug.html">Debug</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Debug.html" title="Debug" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="NameTableViewer.html" title="Name Table Viewer" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="TraceLogger.html" title="Trace Logger" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Hex Editor</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Hex Editor</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Hex Editor is a very powerful memory viewing/editing tool, it obsoletes the Memory Viewer tool from the FCE Ultra and FCEU Rerecording branches.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">It can do a wide range of things. &nbsp;It allows you to view the entire RAM &amp; ROM contents in a resizable dialog window. It makes it easy to edit the game's RAM, PPU memory, and even its currently-loaded ROM data by simply typing in values in the editor. You can also "freeze" parts of RAM (to prevent the game from modifying the data there), search for data (Ctrl+F), and even copy and paste data to/from the clipboard. &nbsp;Furthermore, table files are supported, so you can edit a game's text in real-time and see the result immediately.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Basically, it lets you tinker with any part of a game's RAM or ROM while it is running.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Using the Hex Editor</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Hex Editor lets you edit three major areas:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts45">1. NES MEMORY</span></p>
<p class="rvps2"><span class="rvts6">This allows you to directly edit all of the NES address space (System Bus - $0000-$FFFF). While you can easily modify RAM, or write directly to registers by typing in data, you cannot modify ROM data ($8000-$FFFF) itself. This is because most mappers have registers which are located in this space; so writing there can trigger mapper operations that may cause the game to crash or glitch if you don't know what you're doing. &nbsp;If you want to edit the ROM itself, right-click on the offset and select &nbsp;"Go here in ROM file"; that will take you directly to where you need to be so you can start editing. &nbsp;You can also freeze RAM by clicking on it with the middle mouse button, or by using the right-click menu. This works by adding it directly to the Cheat List, which you can see from the </span><a class="rvts75" href="CheatSearch.html">Cheat Console</a><span class="rvts6">. Finally, the right-click menu can be used to quickly add a read or write breakpoint to the debugger. When adding a breakpoint to the range of ROM addresses ($8000-$FFFF), the Hex Editor also takes into account the number of the bank in which the byte is located.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts45">2. PPU MEMORY</span></p>
<p class="rvps2"><span class="rvts6">This allows you to directly view and write to PPU memory (VRAM).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts45">3. THE ROM FILE</span></p>
<p class="rvps2"><span class="rvts6">This allows you to edit the ROM file in real time, i.e. while the game is running. If you make a mistake, press Ctrl+Z or Edit-&gt;Undo to undo your change (then load a save-state if the game crashed).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Hex Editor also has support for table files (*.tbl) to map bytes to text. Each line consists of four characters of the form "xx=y", where "xx" is the hex value, and "y" is the character that that value represents. I have also added an extension to represent the Return key: &nbsp;xx=ret whereby pressing the Return key will enter that value into the ROM. &nbsp;You can copy/paste data or text by selecting it and using Ctrl+C (to copy) and Ctrl+V (to paste). Plus, there is an Edit-&gt;Find feature that you can use to search for data. This feature should be fairly intuitive, so I won't bother to explain it.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When you're done editing, remember to save the ROM file (File-&gt;Save) or your changes will be lost when you close the ROM.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts21">Why can't I edit NES memory beyond $8000?</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts6">NES memory from $8000-$FFFF is where the game's PRG-ROM code is mapped. &nbsp;Whenever you type in a value in the NES memory editor, it effectively writes that value to that address. Many games use mappers, which are usually accessed by writing to $8000-$FFFF (which is read-only)... and if *you* were to do so, it may trigger a bankswitch, which could easily make the game crash. In any event, doing so will not modify the ROM itself. &nbsp;What you *can* do, though, is edit the PRG-ROM itself by right-clicking on the offset you wish to edit, and selecting "Go here in the ROM file", which should take you to that spot in the ROM instead, where you can change the data at instead.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Highlighting</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Hex Editor highlights certain bytes with different colors to help you distinguish different data.</span></p>
<p class="rvps2"><span class="rvts6">Usually all bytes are colored black.</span></p>
<p class="rvps2"><span class="rvts6">Bookmarked RAM addresses are highlighted by </span><span class="rvts77">green color</span><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6">Freezed RAM addresses are highlighted by </span><span class="rvts76">blue color</span><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6">Modified ROM bytes are highlighted by </span><span class="rvts78">red color</span><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6">If you have the </span><a class="rvts75" href="CodeDataLogger.html">Code/Data Logger</a><span class="rvts6"> running, bytes that were logged will be colored:</span></p>
<p class="rvps2"><span class="rvts6">For PRG ROM segment:</span></p>
<p class="rvps2"><span class="rvts80">Dark-yellow</span><span class="rvts6"> - the byte is code</span></p>
<p class="rvps2"><span class="rvts81">Blue</span><span class="rvts6"> - the byte is data</span></p>
<p class="rvps2"><span class="rvts82">Cyan</span><span class="rvts6"> - the byte is PCM audio data</span></p>
<p class="rvps2"><span class="rvts79">Green</span><span class="rvts6"> - the byte is both code and data</span></p>
<p class="rvps2"><span class="rvts6">For CHR ROM segment:</span></p>
<p class="rvps2"><span class="rvts83">Yellow</span><span class="rvts6"> - the byte was rendered</span></p>
<p class="rvps2"><span class="rvts84">Light-blue</span><span class="rvts6"> - the byte was read programmatically</span></p>
<p class="rvps2"><span class="rvts85">Light-green</span><span class="rvts6"> - the byte was both rendered and read programmatically</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Highlight Activity</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This feature of the Hex Editor can draw your attention to bytes that changed their value since the last frame, or since the last update of Hex Editor window (if "Fade when paused" option is enabled).</span></p>
<p class="rvps2"><span class="rvts6">If you don't need this feature, you can switch it off in the "Highlighting" submenu.</span></p>
<p class="rvps2"><span class="rvts6">You can customize this feature by changing "fading period".</span></p>
<p class="rvps2"><span class="rvts6">IMPORTANT NOTE: this feature does not track the actual changes of RAM. It works by simply comparing current values to previously displayed values of the same addresses. That's why the feature works with RAM/PPU/ROM as well.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com">Easy EBook and documentation generator</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">&times;</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>

View File

@ -1,123 +1,314 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Input</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Input");
}
});
</script>
<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>Input</title>
<meta name="description" content="" />
<meta name="keywords" content="Arkanoid Paddle,Auto-Hold,Disable left+right/up+down,Famicom Controllers,Input Configuration,Input Presets,Power Pad,Setting up controllers,Zapper">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Input">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Input" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Input</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="GUI.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="NetworkPlay.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Input Configuration</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Setting up controllers</span></p>
<p><br/></p>
<p>On the pull down menus, you can select the device you want to be emulated on input ports 1 and 2 (game pad, zapper, pad, paddle). Note: you can't change this setting while a movie is being played or recorded.</p>
<p>If you check the box labeled "Attach four-score(implies four gamepads)", you won't be able to select any of these options, because the four-score allows to use 2 extra controllers.</p>
<p>The device currently being emulated on each port is listed above the drop down list; loading certain games will override your settings, but only temporarily.</p>
<p><br/></p>
<p>To bind these controls to specific keys/joystick controls use the &nbsp;"configure" the device listed above each drop-down list.</p>
<p><br/></p>
<p><span class="rvts16">Zapper / Arkanoid Paddle</span></p>
<p><br/></p>
<p>Most Zapper NES games expect the Zapper to be plugged into port 2. and most VS Unisystem games expect the Zapper to be plugged into port 1.</p>
<p><br/></p>
<p>The left mouse button is the emulated trigger button for the Zapper. The right mouse button is also emulated as the trigger, but as long as you have the right mouse button held down, no color detection will take place, which is effectively like pulling the trigger while the Zapper is pointed away from the television screen. Note that you must hold the right button down for a short time to have the desired effect. </p>
<p><br/></p>
<p>The Arkanoid Paddle emulates the same way the zapper.</p>
<p><br/></p>
<p><span class="rvts16">Power Pad A / B</span></p>
<p><br/></p>
<p>Emulates the NES Power pad. &nbsp;The 12 pad buttons can be routed via the configure button. &nbsp;FCEUX allows up to 2 Power Pads to be emulated at once (Power Pad A and B).</p>
<p><br/></p>
<p><span class="rvts16">Famicom Controllers</span></p>
<p><br/></p>
<p>You can also select the input device to be emulated on the Famicom Expansion port. &nbsp;If you select a device for the Famicom Expansion Port, you should probably have emulated game pads on the emulated NES-style input ports. </p>
<p><br/></p>
<p>In addition to the traditional famicom controller, FCEUX can emulate the Famicom version of the Arkanoid controller, the "Space Shadow" gun, the Famicom 4-player adapter, the Family Keyboard, the HyperShot controller, the Mahjong controller, the Oeka Kids tablet, the Quiz King buzzers, the Family Trainer, and the Barcode World barcode reader.</p>
<p><br/></p>
<p><span class="rvts16">Replace Port 2 Start With Microphone</span></p>
<p><br/></p>
<p>Checking this box will replace the Start button used by controller 2 with the microphone option found on the famicom. Pressing the Microphone button is like blowing or yelling into it on the console equipment. The Port 2 controller used for the Famicom included a microphone and a volume control in place of the Start and Select buttons. This option isn't automatically detected, so it has to be manually enabled by the user. Movie files may also enable and use this feature. Both Famicom Cartridges and Famicom Disks have made use of this feature, such as both the cartridge and disk version of Zelda 1, Hikari Shinwa, and Takeshi no Chosenjo. Games other than those listed here use this feature.</p>
<p><br/></p>
<p><span class="rvts27">Input Presets</span></p>
<p><span class="rvts27"><br/></span></p>
<p>This feature allow you to set the current input configuration to one of three presets. &nbsp;This gives you the option to quickly change from one input configuration to another (such as toggling between 1 or 2 controllers and/or toggling from controller 2 being bound to controller 1 or having its own controls).</p>
<p><br/></p>
<p>To assign the current input configuration to a preset press the down arrow next to one of the presets. &nbsp;To assign the preset as the current input configuration press the up arrow or use the hotkey assigned to that specific preset. &nbsp;Preset hotkeys can be assigned in the <a class="rvts18" href="MapHotkeys.html">Map Hotkeys</a> menu.</p>
<p><br/></p>
<p><span class="rvts27">Disable left+right/up+down</span></p>
<p><br/></p>
<p>By default FCEUX allows you to press both the left and right controls at the same time (or up and down). &nbsp;To disable this feature uncheck the checkbox on the left. </p>
<p><br/></p>
<p><span class="rvts27">Auto-Hold</span></p>
<p><br/></p>
<p>Clicking the auto hold button will allow you to assign a hotkey to the auto-hold feature. &nbsp;</p>
<p>Clicking the clear button will allow you to assign a hotkey to the clear auto-holds feature.</p>
<p><br/></p>
<p>To use this feature, close the input config window and return to the FCEUX main window. &nbsp;Hold down the auto-hold hotkey and press one of your controller inputs. &nbsp;This will add it as one of the auto-hold assignments. &nbsp;The game will keep auto-hold assigned buttons held be default. &nbsp;Pressing one of these keys will release the button for the duration that it is held.</p>
<p><br/></p>
<p>To turn off all auto-hold assignments press the clear auto-holds hotkey.</p>
<p><span class="rvts10"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Generate EPub eBooks with ease</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Input"
data-hnd-context="42"
data-hnd-title="Input"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="GUI.html" title="GUI" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="NetworkPlay.html" title="Network Play" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Input</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Input Configuration</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Setting up controllers</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">On the pull down menus, you can select the device you want to be emulated on input ports 1 and 2 (game pad, zapper, pad, paddle). Note: you can't change this setting while a movie is being played or recorded.</span></p>
<p class="rvps2"><span class="rvts6">If you check the box labeled "Attach four-score(implies four gamepads)", you won't be able to select any of these options, because the four-score allows to use 2 extra controllers.</span></p>
<p class="rvps2"><span class="rvts6">The device currently being emulated on each port is listed above the drop down list; loading certain games will override your settings, but only temporarily.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To bind these controls to specific keys/joystick controls use the &nbsp;"configure" the device listed above each drop-down list.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Zapper / Arkanoid Paddle</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Most Zapper NES games expect the Zapper to be plugged into port 2. and most VS Unisystem games expect the Zapper to be plugged into port 1.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The left mouse button is the emulated trigger button for the Zapper. The right mouse button is also emulated as the trigger, but as long as you have the right mouse button held down, no color detection will take place, which is effectively like pulling the trigger while the Zapper is pointed away from the television screen. Note that you must hold the right button down for a short time to have the desired effect.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Arkanoid Paddle emulates the same way the zapper.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Power Pad A / B</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Emulates the NES Power pad. &nbsp;The 12 pad buttons can be routed via the configure button. &nbsp;FCEUX allows up to 2 Power Pads to be emulated at once (Power Pad A and B).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Famicom Controllers</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can also select the input device to be emulated on the Famicom Expansion port. &nbsp;If you select a device for the Famicom Expansion Port, you should probably have emulated game pads on the emulated NES-style input ports.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In addition to the traditional famicom controller, FCEUX can emulate the Famicom version of the Arkanoid controller, the "Space Shadow" gun, the Famicom 4-player adapter, the Family Keyboard, the HyperShot controller, the Mahjong controller, the Oeka Kids tablet, the Quiz King buzzers, the Family Trainer, and the Barcode World barcode reader.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Replace Port 2 Start With Microphone</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Checking this box will replace the Start button used by controller 2 with the microphone option found on the famicom. Pressing the Microphone button is like blowing or yelling into it on the console equipment. The Port 2 controller used for the Famicom included a microphone and a volume control in place of the Start and Select buttons. This option isn't automatically detected, so it has to be manually enabled by the user. Movie files may also enable and use this feature. Both Famicom Cartridges and Famicom Disks have made use of this feature, such as both the cartridge and disk version of Zelda 1, Hikari Shinwa, and Takeshi no Chosenjo. Games other than those listed here use this feature.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Input Presets</span></p>
<p class="rvps2"><span class="rvts37"><br/></span></p>
<p class="rvps2"><span class="rvts6">This feature allow you to set the current input configuration to one of three presets. &nbsp;This gives you the option to quickly change from one input configuration to another (such as toggling between 1 or 2 controllers and/or toggling from controller 2 being bound to controller 1 or having its own controls).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To assign the current input configuration to a preset press the down arrow next to one of the presets. &nbsp;To assign the preset as the current input configuration press the up arrow or use the hotkey assigned to that specific preset. &nbsp;Preset hotkeys can be assigned in the </span><a class="rvts58" href="MapHotkeys.html">Map Hotkeys</a><span class="rvts6"> menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Disable left+right/up+down</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">By default FCEUX allows you to press both the left and right controls at the same time (or up and down). &nbsp;To disable this feature uncheck the checkbox on the left.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Auto-Hold</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Clicking the auto hold button will allow you to assign a hotkey to the auto-hold feature. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6">Clicking the clear button will allow you to assign a hotkey to the clear auto-holds feature.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To use this feature, close the input config window and return to the FCEUX main window. &nbsp;Hold down the auto-hold hotkey and press one of your controller inputs. &nbsp;This will add it as one of the auto-hold assignments. &nbsp;The game will keep auto-hold assigned buttons held be default. &nbsp;Pressing one of these keys will release the button for the duration that it is held.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To turn off all auto-hold assignments press the clear auto-holds hotkey.</span></p>
<p class="rvps2"><span class="rvts15"><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">What is 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">&times;</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>

View File

@ -1,76 +1,273 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Introduction</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Intro");
}
});
</script>
<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>Introduction</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Introduction">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Introduction" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Introduction</h1>
</div>
<div id="topic_header_nav">
<a href="Introduction.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts12">Introduction</span></p>
<p><br/></p>
<p>Basic information about FCEUX and its features.</p>
<p><span class="rvts11"><br/></span></p>
<p><a class="rvts11" href="Introduction.html">Introduction</a></p>
<p><span class="rvts10"><br/></span></p>
<p><a class="rvts11" href="Overview.html">Overview</a></p>
<p><span class="rvts10"><br/></span></p>
<p><a class="rvts11" href="FCEUltraVersionHistory.html">FCE Ultra Version History</a></p>
<p><span class="rvts11"><br/></span></p>
<p><a class="rvts11" href="WhatsNew200.html">What's Combined In FCEUX?</a></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Write EPub books for the iPad</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Intro"
data-hnd-context="0"
data-hnd-title="Introduction"
>
<div class="navigation">
<ol class="breadcrumb">
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Introduction.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Introduction</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts17">Introduction</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Basic information about FCEUX and its features.</span></p>
<p class="rvps2"><span class="rvts16"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Introduction.html">Introduction</a></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Overview.html">Overview</a></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="FCEUltraVersionHistory.html">FCE Ultra Version History</a></p>
<p class="rvps2"><span class="rvts16"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="WhatsNew200.html">What's Combined In FCEUX?</a></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.helpndoc.com/create-epub-ebooks">Full-featured EBook editor</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">&times;</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>

View File

@ -1,113 +1,304 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Introduction</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Introduction");
}
});
</script>
<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>Introduction</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Introduction">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Introduction" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Introduction</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Intro.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Overview.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts16">Welcome to the FCEUX Help menu.</span></p>
<p><br/></p>
<p>The following information is about how to use FCEUX, its commands, how to use FCEUX to its fullest, and the communities for which FCEUX is designed.</p>
<p><span class="rvts15"><br/></span></p>
<p><br/></p>
<p><span class="rvts12">Introduction</span></p>
<p><br/></p>
<p>Basic information about FCEUX and its features.</p>
<p><a class="rvts11" href="Overview.html">Overview</a></p>
<p><a class="rvts11" href="FCEUltraVersionHistory.html">FCE Ultra Version History</a></p>
<p><a class="rvts11" href="WhatsNew200.html">What's Combined In FCEUX?</a></p>
<p><span class="rvts10"><br/></span></p>
<p><br/></p>
<p><span class="rvts12">Additional Chapters</span></p>
<p><br/></p>
<p><a class="rvts11" href="General.html">General</a></p>
<p>Guides for general uses of FCEUX and the FCEUX NES menu.</p>
<p><br/></p>
<p><a class="rvts11" href="Config.html">Config</a></p>
<p>Commands under FCEUX Config menu.</p>
<p><br/></p>
<p><a class="rvts11" href="Tools2.html">Tools</a></p>
<p>Commands under FCEUX Tools menu.</p>
<p><br/></p>
<p><a class="rvts11" href="Debug.html">Debug</a></p>
<p>Commands under FCEUX Debug menu.</p>
<p><br/></p>
<p><a class="rvts11" href="FAQGuides.html">FAQ / Guides</a></p>
<p>Information regarding various concepts such as TAS, ROM Hacking, RAM Mapping.</p>
<p><br/></p>
<p><a class="rvts11" href="Technicalinformation.html">Technical Information</a></p>
<p>Technical information relating to NES hardware emulation &amp; FCEUX file formats.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p>Help menu created by adelikat.</p>
<p>Updated &amp; maintained by AnS.</p>
<p>Information collected and/or written/edited by adelikat and AnS.</p>
<p>Minor edits of lua-related text by FatRatKnight.</p>
<p>Debugger documentation edits by rainwarrior.</p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/help-authoring-tool">Free help authoring environment</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Introduction"
data-hnd-context="59"
data-hnd-title="Introduction"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Overview.html" title="Overview" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Introduction</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts21">Welcome to the FCEUX Help menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The following information is about how to use FCEUX, its commands, how to use FCEUX to its fullest, and the communities for which FCEUX is designed.</span></p>
<p class="rvps2"><span class="rvts20"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Introduction</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Basic information about FCEUX and its features.</span></p>
<p class="rvps2"><a class="rvts16" href="Overview.html">Overview</a></p>
<p class="rvps2"><a class="rvts16" href="FCEUltraVersionHistory.html">FCE Ultra Version History</a></p>
<p class="rvps2"><a class="rvts16" href="WhatsNew200.html">What's Combined In FCEUX?</a></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Additional Chapters</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="General.html">General</a></p>
<p class="rvps2"><span class="rvts6">Guides for general uses of FCEUX and the FCEUX NES menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Config.html">Config</a></p>
<p class="rvps2"><span class="rvts6">Commands under FCEUX Config menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Tools2.html">Tools</a></p>
<p class="rvps2"><span class="rvts6">Commands under FCEUX Tools menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Debug.html">Debug</a></p>
<p class="rvps2"><span class="rvts6">Commands under FCEUX Debug menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="FAQGuides.html">FAQ / Guides</a></p>
<p class="rvps2"><span class="rvts6">Information regarding various concepts such as TAS, ROM Hacking, RAM Mapping.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Technicalinformation.html">Technical Information</a></p>
<p class="rvps2"><span class="rvts6">Technical information relating to NES hardware emulation &amp; FCEUX file formats.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Help menu created by adelikat.</span></p>
<p class="rvps2"><span class="rvts6">Updated &amp; maintained by AnS.</span></p>
<p class="rvps2"><span class="rvts6">Information collected and/or written/edited by adelikat and AnS.</span></p>
<p class="rvps2"><span class="rvts6">Minor edits of lua-related text by FatRatKnight.</span></p>
<p class="rvps2"><span class="rvts6">Debugger documentation edits by rainwarrior.</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.helpndoc.com">Easy EPub and documentation editor</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">&times;</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>

View File

@ -1,219 +1,410 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Lua Bot</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("LuaBot");
}
});
</script>
<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>Lua Bot</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Lua Bot">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Lua Bot" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Lua Bot</h1>
<div id="topic_breadcrumb">
<a href="LuaScripting.html">Lua Scripting</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="LuaScripting.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="LuaPerks.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="OverviewofIncludedScripts.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">LuaBot</span></p>
<p><br/></p>
<p>LuaBot employs a new concept in FCEUX Tool creation. &nbsp;It is an external lua script that creates the Basic bot GUI. &nbsp;The GUI then uses lua scripting to perform botting tasks.</p>
<p><br/></p>
<p>To run it you must have lua scripting enabled (see <a class="rvts18" href="LuaGettingStarted.html">Getting Started</a>). &nbsp;LuaBot is included in the lua pack under /luaScripts. &nbsp;to get started run &nbsp;luabot_framework.lua.</p>
<p><br/></p>
<p><span class="rvts12">What is Lua Bot?</span></p>
<p>LuaBot is...well, a bot. It uses a combination of probability, scripting and RAM monitoring to play games. &nbsp;Specifically &nbsp;basic bot is used to create portions of <a class="rvts18" href="ToolAssistedSpeedruns.html">Tool Assisted Speedrun</a>. &nbsp; It is most powerful for finding solutions in highly random situations, or highly improbably events (such as manipulating a critical hit in an RPG). &nbsp;Basic bot comes with a rather powerful scripting language in order to be "programmed" to handle these specific situations. &nbsp;LuaBot in its most extreme application can even be "taught" to play video games!</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts12">How to Use Lua Bot</span></p>
<p><br/></p>
<p>LuaBot is a trial and error script that exhausts the input-search-space by simply trying to push buttons. </p>
<p><br/></p>
<p>You can program it to limit this searchspace, as it can become exponentially large. You can press eight possible buttons at any frame, each on or off. That's 2 raised to the 8, or 256 possible combinations in that one frame. There are 60 frames in one second, so you have 256 raised to the power of 60. Write a three. Now start writing 144 zeroes after it. It's not a small number.</p>
<p><br/></p>
<p>Anyways, the bot has two parts. The frontend, which we'll call BeeBee, and the Lua part, which we call LuaBot.</p>
<p><br/></p>
<p>You start the bot by opening the LuaBot_front.lua script file. Make sure the LuaBot_backend.lua file is in the same directory.</p>
<p><br/></p>
<p>BeeBee</p>
<p><br/></p>
<p>BeeBee (who received it's name from BasicBot, its predecessor) just writes it's contents into the LuaBot framework and produces a big Lua script for you.</p>
<p>All you need to do is enter Lua code for the specific functions and the code will generate the script.</p>
<p><br/></p>
<p>You can also save and load the contents of the front-end. That way you can easily manage your bot scripts, without actually having to look into the LuaBot code.</p>
<p><br/></p>
<p>BeeBee is only a pasting mechanism. It does not compile Lua or warn for errors.</p>
<p><br/></p>
<p>LuaBot</p>
<p><br/></p>
<p>LuaBot is a generic trial-and-error script that serves as a bot framework. It will set inputs as you program them for a number of frames (called an attempt). When the isAttemptEnd() says the attempt ends, a new attempt is started. All the attempts fall under one segment. At the end of a segment (denoted by the isSegmentEnd() function), the best attempt is kept (judged by the score and tie functions) and the next segment is started. The bot is capable of rolling back if a segment runs into a dead end. This allows you to backtrack and restart a previous segment.</p>
<p><br/></p>
<p>The bot evaluates a true or false by checking to see whether the return value of a function is bigger then a certain value. It does this for EVERY function that returns something and every function that returns something must return a number (or Lua _will_ complain). For absolute true or false you can return "yes" and "no", "maxvalue" and "minvalue" or "pressed" and "released". Read variable info for more information.</p>
<p><br/></p>
<p>The script takes a number of variables and functions into account. Some variables become important to prevent desyncing over segments.</p>
<p><br/></p>
<p>- maxvalue</p>
<p>The maximum value (exclusive) of the random evaluation. If a value is higher than rand(minvalue, maxvalue), it evaluates as true, else false. By default this is set to 100.</p>
<p><br/></p>
<p>- minvalue</p>
<p>The lowest value (inclusive) of the random evaluation. If a value is lower than rand(minvalue, maxvalue), it evaluates to false, else true. By default this is set to 0.</p>
<p><br/></p>
<p>- yes / no</p>
<p>- pressed / released</p>
<p>These map to the minvalue/maxvalue.</p>
<p><br/></p>
<p>- loopcounter</p>
<p>The number of times a frameadvance has been called by the main botloop.</p>
<p><br/></p>
<p>- key1 key2 key3 key4</p>
<p>The input table of players 1-4. The keys are: A B up down left right select start. Set any to 1 if you want them to be set and to nil if you don't want them set.</p>
<p>Note that these get cleared right before onInputStart is called. This variable is saved in a pseudo-movie table if the attempt is better then the previous one and used for playback when moving to the next segment.</p>
<p><br/></p>
<p>- lastkey1 lastkey2 lastkey3 lastkey4</p>
<p>The inputs that were given to FCEU on the PREVIOUS frame. This holds for segments as well (at the beginning of a new segment, the lastkeys of the previous segment are set). This also goes for the start. If you use key1-4 in onStart, the first segment will have those keys as lastkey.</p>
<p><br/></p>
<p>- frame</p>
<p>The number of frames of the current attempt. Starts at 1.</p>
<p><br/></p>
<p>- attempt</p>
<p>The number of attempts in the current segment. Starts at 1.</p>
<p><br/></p>
<p>- segment</p>
<p>The segment the bot is currently running. Note that rolledback segments are deducted from this number.</p>
<p><br/></p>
<p>- okattempts</p>
<p>The number of attempts that have been deemed ok. This is a statistical variable. It might tell you how well your bot is doing (combined with the number of failed attempts).</p>
<p><br/></p>
<p>- failattempts</p>
<p>The number of attempts in the current segment that have been deemed bad. This is a statistical variable. It might tell you how well your bot is doing (combined with the number of approved attempts).</p>
<p><br/></p>
<p>- segments</p>
<p>This is the big table that holds everything together. Don't mess with it.</p>
<p><br/></p>
<p>- maxframes</p>
<p>You can set maxframes and check it in the isAttemptEnd function to simply limit a attempt by this many frames. You can also just ignore this and do something else instead.</p>
<p><br/></p>
<p>- maxattempts</p>
<p>Same as maxframes, except for attempts in a segment.</p>
<p><br/></p>
<p>- maxsegments</p>
<p>Same as maxframes, except for segments in a run.</p>
<p><br/></p>
<p>- playingbest</p>
<p>Will be set to true when the bot is playing back it's best attempt to advance to the next segment. Not really used by other functions.</p>
<p><br/></p>
<p>- keyrecording1-4</p>
<p>A simple table with the pressed keys for playback.</p>
<p><br/></p>
<p>- X Y Z P Q</p>
<p>Some "static" variables. These allow you to easily set them onStart and use them in various functions to return the same number. Like a global variable. The P and Q numbers used to denote a random number between 0 and P or Q, but they don't right now.</p>
<p><br/></p>
<p>- vars</p>
<p>This is your variable table. It's contents is saved at the end of an attempt and will be loaded at the beginning of a segment. On rollback, this table is also kept. Put any variable you want to keep across segments in this table.</p>
<p><br/></p>
<p><br/></p>
<p>Ok. That's it for the variables. Now for functions. There are basically three types of functions. The functions that determine whether a button is pressed (8 for each player), to determine whether an attempt/segment/run has ended or was ok and functions for certain events. This number is not evaluated by the random-eval function.</p>
<p><br/></p>
<p>- getScore</p>
<p>This returns how "well" the current attempt is. At the end of a segment, the best scoring good attempt will be used to continue to the next segment. In case of a tie, see the tie functions. This number is not evaluated by the random-eval function!</p>
<p><br/></p>
<p>- getTie1-4</p>
<p>If the score ends in a tie, that is, two attempts score equally well (have an equal number of points for instance), you can use these functions to break that tie. Like, which attempt has the most health or is the fastest or whatever. This number is not evaluated by the random-eval function!</p>
<p><br/></p>
<p>- isRunEnd</p>
<p>Return whether the bot should stop running. If the returned number is bigger then the random number rand(minvalue-maxvalue), the bot will stop.</p>
<p><br/></p>
<p>- mustRollBack</p>
<p>Returns whether the bot should rollback the current attempt. In such case, the previous segment is loaded and the current segment is completely discarded. If the returned number is bigger then the random number rand(minvalue-maxvalue), the segment will rollback one segment.</p>
<p><br/></p>
<p>- isSegmentEnd</p>
<p>If the returned number is bigger then the random number rand(minvalue-maxvalue), the bot will stop the current segment, play back the best recorded attempt and start a new segment. Mostly done when a certain number of attempts is reached, but possibly you know when have the best possible attempt and can move on.</p>
<p><br/></p>
<p>- isAttemptEnd</p>
<p>If the returned number is bigger then the random number rand(minvalue-maxvalue), the attempt will stop and a new attempt will be started. Some examples when this function should return yes is when you reached a certain goal, a number of frames or when you died (in which case the bot should try again :).</p>
<p><br/></p>
<p>- isAttemptOk</p>
<p>If the returned number is bigger then the random number rand(minvalue-maxvalue), the current attempt (which has just ended) is deemed ok. Only attempts that are deemed ok are up for being saved. For instance, when the player died in the current attempt, you should return no.</p>
<p><br/></p>
<p>- pressKeyX (pressKeyA1, pressKeyStart4, etc...)</p>
<p>These functions determine whether a button should be pressed in the next frame. If the returned number is bigger then the random number rand(minvalue-maxvalue), the button is pressed, otherwise it is not. To absolutely press a button, simply return yes or no. To use some odds, return a number between minvalue and maxvalue. For instance, using the default settings, if you return 50, there is a 50% chance the button will be pressed.</p>
<p><br/></p>
<p>- onStart</p>
<p>Maybe a little misleading, but the onStart function is called BEFORE the main botloop starts. You can do some non-generic startup stuff here like press start at the title screen and get the game started. Returns nothing.</p>
<p><br/></p>
<p>- onFinish</p>
<p>The opposite to onStart, this function is called when the main botloop exits. You can cleanup, or write stuff or whatever.</p>
<p><br/></p>
<p>- onSegmentStart</p>
<p>When a new segment is started, this is called. After initializing variables and such, but before onAttemptStart is called. Returns nothing.</p>
<p><br/></p>
<p>- onSegmentEnd</p>
<p>When isSegmentEnd evaluates to true, this function is called. Returns nothing.</p>
<p><br/></p>
<p>- onAttemptStart</p>
<p>Called at the start of a new attempt, after onSegmentStart (in case of a new segment) but before onInputStart. Returns nothing.</p>
<p><br/></p>
<p>- onAttemptEnd(wasOk)</p>
<p>Called at the end of an attempt. The only function to have a parameter (note: case sensitive). The parameter wasOk will return (boolean) whether isAttemptOk evaluated to true or false. Returns nothing.</p>
<p><br/></p>
<p>- onInputStart</p>
<p>In a frame, this is the first place where the key1-4 variables are cleared. This is called before all the input (pressKeyX) functions are called. Returns nothing.</p>
<p><br/></p>
<p>- onInputEnd</p>
<p>This is called immediately after the input (pressKeyX) functions have been called. Returns nothing.</p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="LuaBot"
data-hnd-context="63"
data-hnd-title="Lua Bot"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="LuaScripting.html">Lua Scripting</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="LuaScripting.html" title="Lua Scripting" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="LuaPerks.html" title="LuaPerks" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="OverviewofIncludedScripts.html" title="Overview of Included Scripts" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Lua Bot</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">LuaBot</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">LuaBot employs a new concept in FCEUX Tool creation. &nbsp;It is an external lua script that creates the Basic bot GUI. &nbsp;The GUI then uses lua scripting to perform botting tasks.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To run it you must have lua scripting enabled (see </span><a class="rvts23" href="LuaGettingStarted.html">Getting Started</a><span class="rvts6">). &nbsp;LuaBot is included in the lua pack under /luaScripts. &nbsp;to get started run &nbsp;luabot_framework.lua.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">What is Lua Bot?</span></p>
<p class="rvps2"><span class="rvts6">LuaBot is...well, a bot. It uses a combination of probability, scripting and RAM monitoring to play games. &nbsp;Specifically &nbsp;basic bot is used to create portions of </span><a class="rvts23" href="ToolAssistedSpeedruns.html">Tool Assisted Speedrun</a><span class="rvts6">. &nbsp; It is most powerful for finding solutions in highly random situations, or highly improbably events (such as manipulating a critical hit in an RPG). &nbsp;Basic bot comes with a rather powerful scripting language in order to be "programmed" to handle these specific situations. &nbsp;LuaBot in its most extreme application can even be "taught" to play video games!</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">How to Use Lua Bot</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">LuaBot is a trial and error script that exhausts the input-search-space by simply trying to push buttons.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can program it to limit this searchspace, as it can become exponentially large. You can press eight possible buttons at any frame, each on or off. That's 2 raised to the 8, or 256 possible combinations in that one frame. There are 60 frames in one second, so you have 256 raised to the power of 60. Write a three. Now start writing 144 zeroes after it. It's not a small number.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Anyways, the bot has two parts. The frontend, which we'll call BeeBee, and the Lua part, which we call LuaBot.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You start the bot by opening the LuaBot_front.lua script file. Make sure the LuaBot_backend.lua file is in the same directory.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">BeeBee</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">BeeBee (who received it's name from BasicBot, its predecessor) just writes it's contents into the LuaBot framework and produces a big Lua script for you.</span></p>
<p class="rvps2"><span class="rvts6">All you need to do is enter Lua code for the specific functions and the code will generate the script.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can also save and load the contents of the front-end. That way you can easily manage your bot scripts, without actually having to look into the LuaBot code.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">BeeBee is only a pasting mechanism. It does not compile Lua or warn for errors.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">LuaBot</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">LuaBot is a generic trial-and-error script that serves as a bot framework. It will set inputs as you program them for a number of frames (called an attempt). When the isAttemptEnd() says the attempt ends, a new attempt is started. All the attempts fall under one segment. At the end of a segment (denoted by the isSegmentEnd() function), the best attempt is kept (judged by the score and tie functions) and the next segment is started. The bot is capable of rolling back if a segment runs into a dead end. This allows you to backtrack and restart a previous segment.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The bot evaluates a true or false by checking to see whether the return value of a function is bigger then a certain value. It does this for EVERY function that returns something and every function that returns something must return a number (or Lua _will_ complain). For absolute true or false you can return "yes" and "no", "maxvalue" and "minvalue" or "pressed" and "released". Read variable info for more information.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The script takes a number of variables and functions into account. Some variables become important to prevent desyncing over segments.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- maxvalue</span></p>
<p class="rvps2"><span class="rvts6">The maximum value (exclusive) of the random evaluation. If a value is higher than rand(minvalue, maxvalue), it evaluates as true, else false. By default this is set to 100.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- minvalue</span></p>
<p class="rvps2"><span class="rvts6">The lowest value (inclusive) of the random evaluation. If a value is lower than rand(minvalue, maxvalue), it evaluates to false, else true. By default this is set to 0.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- yes / no</span></p>
<p class="rvps2"><span class="rvts6">- pressed / released</span></p>
<p class="rvps2"><span class="rvts6">These map to the minvalue/maxvalue.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- loopcounter</span></p>
<p class="rvps2"><span class="rvts6">The number of times a frameadvance has been called by the main botloop.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- key1 key2 key3 key4</span></p>
<p class="rvps2"><span class="rvts6">The input table of players 1-4. The keys are: A B up down left right select start. Set any to 1 if you want them to be set and to nil if you don't want them set.</span></p>
<p class="rvps2"><span class="rvts6">Note that these get cleared right before onInputStart is called. This variable is saved in a pseudo-movie table if the attempt is better then the previous one and used for playback when moving to the next segment.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- lastkey1 lastkey2 lastkey3 lastkey4</span></p>
<p class="rvps2"><span class="rvts6">The inputs that were given to FCEU on the PREVIOUS frame. This holds for segments as well (at the beginning of a new segment, the lastkeys of the previous segment are set). This also goes for the start. If you use key1-4 in onStart, the first segment will have those keys as lastkey.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- frame</span></p>
<p class="rvps2"><span class="rvts6">The number of frames of the current attempt. Starts at 1.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- attempt</span></p>
<p class="rvps2"><span class="rvts6">The number of attempts in the current segment. Starts at 1.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- segment</span></p>
<p class="rvps2"><span class="rvts6">The segment the bot is currently running. Note that rolledback segments are deducted from this number.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- okattempts</span></p>
<p class="rvps2"><span class="rvts6">The number of attempts that have been deemed ok. This is a statistical variable. It might tell you how well your bot is doing (combined with the number of failed attempts).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- failattempts</span></p>
<p class="rvps2"><span class="rvts6">The number of attempts in the current segment that have been deemed bad. This is a statistical variable. It might tell you how well your bot is doing (combined with the number of approved attempts).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- segments</span></p>
<p class="rvps2"><span class="rvts6">This is the big table that holds everything together. Don't mess with it.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- maxframes</span></p>
<p class="rvps2"><span class="rvts6">You can set maxframes and check it in the isAttemptEnd function to simply limit a attempt by this many frames. You can also just ignore this and do something else instead.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- maxattempts</span></p>
<p class="rvps2"><span class="rvts6">Same as maxframes, except for attempts in a segment.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- maxsegments</span></p>
<p class="rvps2"><span class="rvts6">Same as maxframes, except for segments in a run.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- playingbest</span></p>
<p class="rvps2"><span class="rvts6">Will be set to true when the bot is playing back it's best attempt to advance to the next segment. Not really used by other functions.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- keyrecording1-4</span></p>
<p class="rvps2"><span class="rvts6">A simple table with the pressed keys for playback.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- X Y Z P Q</span></p>
<p class="rvps2"><span class="rvts6">Some "static" variables. These allow you to easily set them onStart and use them in various functions to return the same number. Like a global variable. The P and Q numbers used to denote a random number between 0 and P or Q, but they don't right now.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- vars</span></p>
<p class="rvps2"><span class="rvts6">This is your variable table. It's contents is saved at the end of an attempt and will be loaded at the beginning of a segment. On rollback, this table is also kept. Put any variable you want to keep across segments in this table.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Ok. That's it for the variables. Now for functions. There are basically three types of functions. The functions that determine whether a button is pressed (8 for each player), to determine whether an attempt/segment/run has ended or was ok and functions for certain events. This number is not evaluated by the random-eval function.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- getScore</span></p>
<p class="rvps2"><span class="rvts6">This returns how "well" the current attempt is. At the end of a segment, the best scoring good attempt will be used to continue to the next segment. In case of a tie, see the tie functions. This number is not evaluated by the random-eval function!</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- getTie1-4</span></p>
<p class="rvps2"><span class="rvts6">If the score ends in a tie, that is, two attempts score equally well (have an equal number of points for instance), you can use these functions to break that tie. Like, which attempt has the most health or is the fastest or whatever. This number is not evaluated by the random-eval function!</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- isRunEnd</span></p>
<p class="rvps2"><span class="rvts6">Return whether the bot should stop running. If the returned number is bigger then the random number rand(minvalue-maxvalue), the bot will stop.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- mustRollBack</span></p>
<p class="rvps2"><span class="rvts6">Returns whether the bot should rollback the current attempt. In such case, the previous segment is loaded and the current segment is completely discarded. If the returned number is bigger then the random number rand(minvalue-maxvalue), the segment will rollback one segment.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- isSegmentEnd</span></p>
<p class="rvps2"><span class="rvts6">If the returned number is bigger then the random number rand(minvalue-maxvalue), the bot will stop the current segment, play back the best recorded attempt and start a new segment. Mostly done when a certain number of attempts is reached, but possibly you know when have the best possible attempt and can move on.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- isAttemptEnd</span></p>
<p class="rvps2"><span class="rvts6">If the returned number is bigger then the random number rand(minvalue-maxvalue), the attempt will stop and a new attempt will be started. Some examples when this function should return yes is when you reached a certain goal, a number of frames or when you died (in which case the bot should try again :).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- isAttemptOk</span></p>
<p class="rvps2"><span class="rvts6">If the returned number is bigger then the random number rand(minvalue-maxvalue), the current attempt (which has just ended) is deemed ok. Only attempts that are deemed ok are up for being saved. For instance, when the player died in the current attempt, you should return no.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- pressKeyX (pressKeyA1, pressKeyStart4, etc...)</span></p>
<p class="rvps2"><span class="rvts6">These functions determine whether a button should be pressed in the next frame. If the returned number is bigger then the random number rand(minvalue-maxvalue), the button is pressed, otherwise it is not. To absolutely press a button, simply return yes or no. To use some odds, return a number between minvalue and maxvalue. For instance, using the default settings, if you return 50, there is a 50% chance the button will be pressed.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- onStart</span></p>
<p class="rvps2"><span class="rvts6">Maybe a little misleading, but the onStart function is called BEFORE the main botloop starts. You can do some non-generic startup stuff here like press start at the title screen and get the game started. Returns nothing.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- onFinish</span></p>
<p class="rvps2"><span class="rvts6">The opposite to onStart, this function is called when the main botloop exits. You can cleanup, or write stuff or whatever.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- onSegmentStart</span></p>
<p class="rvps2"><span class="rvts6">When a new segment is started, this is called. After initializing variables and such, but before onAttemptStart is called. Returns nothing.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- onSegmentEnd</span></p>
<p class="rvps2"><span class="rvts6">When isSegmentEnd evaluates to true, this function is called. Returns nothing.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- onAttemptStart</span></p>
<p class="rvps2"><span class="rvts6">Called at the start of a new attempt, after onSegmentStart (in case of a new segment) but before onInputStart. Returns nothing.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- onAttemptEnd(wasOk)</span></p>
<p class="rvps2"><span class="rvts6">Called at the end of an attempt. The only function to have a parameter (note: case sensitive). The parameter wasOk will return (boolean) whether isAttemptOk evaluated to true or false. Returns nothing.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- onInputStart</span></p>
<p class="rvps2"><span class="rvts6">In a frame, this is the first place where the key1-4 variables are cleared. This is called before all the input (pressKeyX) functions are called. Returns nothing.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">- onInputEnd</span></p>
<p class="rvps2"><span class="rvts6">This is called immediately after the input (pressKeyX) functions have been called. Returns nothing.</span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour">Easily create PDF Help documents</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">&times;</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>

File diff suppressed because it is too large Load Diff

View File

@ -1,107 +1,298 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Getting Started</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("LuaGettingStarted");
}
});
</script>
<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>Getting Started</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Getting Started">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Getting Started" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Getting Started</h1>
<div id="topic_breadcrumb">
<a href="LuaScripting.html">Lua Scripting</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="LuaScripting.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="LuaScripting.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Commands.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts60">Using Lua scripting</span></p>
<p><span class="rvts32"><br/></span></p>
<p>Lua is built into FCEUX as of 2.1.2, and luapack DLL files are no longer needed in this and later versions.</p>
<p><br/></p>
<p>To run lua scripts in older versions of FCEUX, you will need the lua pack which can be found <a class="rvts18" href="http://fceux.com/luapack">here</a>. The .dll files must be unzipped in the same folder as fceux.exe.</p>
<p><span class="rvts60"><br/></span></p>
<p><span class="rvts60">Core Lua Documentation</span></p>
<p><span class="rvts32"><br/></span></p>
<p>If you have never programmed, you will probably want to start by learning the basic of Lua, which is too broad for the scope of this help file. &nbsp;Try searching on the Internet for "Lua tutorial". &nbsp;As of this writing, it's official homepage is <a class="rvts18" href="http://www.lua.org/">http://www.lua.org/</a></p>
<p><br/></p>
<p>If you are familiar with any programming language you will probably not have too much difficulty adjusting to the syntax and structure of Lua. &nbsp;You will probably also find useful information on the Internet.</p>
<p><span class="rvts60"><br/></span></p>
<p><span class="rvts60">GUI Frontend</span></p>
<p><br/></p>
<p>To use a Lua script, you need to create one in a text editor. &nbsp;The name of the file created should end in .lua to indicate that it is a Lua script.</p>
<p><br/></p>
<p>To run a Lua script, choose "Run Lua Script" ***from where*** &nbsp;In the dialog that pops up, click "Browse" and find the file you wish to run. &nbsp;This will insert the path of this file into the dialog. &nbsp;You can then click on "Run" to run the script or "Cancel" to return to FCEUX without running the script.</p>
<p><br/></p>
<p>To end a Lua script, choose "Stop Lua Script" ***from where***.</p>
<p><br/></p>
<p><span class="rvts60">FCEUX Lua Basics</span></p>
<p><br/></p>
<p>Your script will be constructed according to the rules of Lua, but you will use FCEUX-specific functions to interact with the emulator. &nbsp;For example, one of the most often-used functions is emu.frameadvance() which will tell the emulator to advance exactly one frame, which is the basic unit of time on an NES.</p>
<p><br/></p>
<p>In general, your script will probably want to be run until you tell it to stop, so it will look something like this:</p>
<p><br/></p>
<p>emu.speedmode("normal") -- Set the speed of the emulator</p>
<p><br/></p>
<p>-- Declare and set variables or functions if needed</p>
<p><br/></p>
<p>while true do</p>
<p> &nbsp; -- Execute instructions for FCEUX</p>
<p> &nbsp; emu.frameadvance() -- This essentially tells FCEUX to keep running</p>
<p>end</p>
<p><br/></p>
<p>The way instructions are sent to FCEUX is through a set of specially defined functions (and variables) which are called an API, the specification of which follows.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="LuaGettingStarted"
data-hnd-context="12"
data-hnd-title="Getting Started"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="LuaScripting.html">Lua Scripting</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="LuaScripting.html" title="Lua Scripting" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="LuaScripting.html" title="Lua Scripting" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Commands.html" title="Using Lua" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Getting Started</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts90">Using Lua scripting</span></p>
<p class="rvps2"><span class="rvts45"><br/></span></p>
<p class="rvps2"><span class="rvts6">Lua is built into FCEUX as of 2.1.2, and luapack DLL files are no longer needed in this and later versions.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To run lua scripts in older versions of FCEUX, you will need the lua pack which can be found </span><a class="rvts91" href="http://fceux.com/luapack">here</a><span class="rvts6">. The .dll files must be unzipped in the same folder as fceux.exe.</span></p>
<p class="rvps2"><span class="rvts90"><br/></span></p>
<p class="rvps2"><span class="rvts90">Core Lua Documentation</span></p>
<p class="rvps2"><span class="rvts45"><br/></span></p>
<p class="rvps2"><span class="rvts6">If you have never programmed, you will probably want to start by learning the basic of Lua, which is too broad for the scope of this help file. &nbsp;Try searching on the Internet for "Lua tutorial". &nbsp;As of this writing, it's official homepage is </span><a class="rvts91" href="http://www.lua.org/">http://www.lua.org/</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If you are familiar with any programming language you will probably not have too much difficulty adjusting to the syntax and structure of Lua. &nbsp;You will probably also find useful information on the Internet.</span></p>
<p class="rvps2"><span class="rvts90"><br/></span></p>
<p class="rvps2"><span class="rvts90">GUI Frontend</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To use a Lua script, you need to create one in a text editor. &nbsp;The name of the file created should end in .lua to indicate that it is a Lua script.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To run a Lua script, choose "Run Lua Script" ***from where*** &nbsp;In the dialog that pops up, click "Browse" and find the file you wish to run. &nbsp;This will insert the path of this file into the dialog. &nbsp;You can then click on "Run" to run the script or "Cancel" to return to FCEUX without running the script.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To end a Lua script, choose "Stop Lua Script" ***from where***.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts90">FCEUX Lua Basics</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Your script will be constructed according to the rules of Lua, but you will use FCEUX-specific functions to interact with the emulator. &nbsp;For example, one of the most often-used functions is emu.frameadvance() which will tell the emulator to advance exactly one frame, which is the basic unit of time on an NES.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In general, your script will probably want to be run until you tell it to stop, so it will look something like this:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">emu.speedmode("normal") -- Set the speed of the emulator</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-- Declare and set variables or functions if needed</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">while true do</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp;-- Execute instructions for FCEUX</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp;emu.frameadvance() -- This essentially tells FCEUX to keep running</span></p>
<p class="rvps2"><span class="rvts6">end</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The way instructions are sent to FCEUX is through a set of specially defined functions (and variables) which are called an API, the specification of which follows.</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.helpndoc.com/help-authoring-tool">Free help authoring environment</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">&times;</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>

View File

@ -1,123 +1,314 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>LuaPerks</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("LuaPerks");
}
});
</script>
<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>LuaPerks</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="LuaPerks">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="LuaPerks" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>LuaPerks</h1>
<div id="topic_breadcrumb">
<a href="LuaScripting.html">Lua Scripting</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="LuaScripting.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="LuaFunctionsList.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="LuaBot.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">LuaPerks</span></p>
<p><span class="rvts17"><br/></span></p>
<p>The following Lua libraries are integrated into FCEUX win32-executable (statically linked) and are available for using in your scripts. You can also use any other Lua library by placing its .dll files into FCEUX folder.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts62">IUP library</span></p>
<p><br/></p>
<p>IUP (Portable User Interface) is a toolkit for building graphical user interfaces.</p>
<p><br/></p>
<p>Usage example: \luaScripts\GUI-iup_example.lua </p>
<p><br/></p>
<p><a class="rvts79" href="http://www.tecgraf.puc-rio.br/iup/" target="_blank">http://www.tecgraf.puc-rio.br/iup/</a></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts62">IM library</span></p>
<p><br/></p>
<p>IM is a toolkit for Digital Imaging. The main goal of the library is to provide a simple API and abstraction of images for applications.</p>
<p>File formats supported: TIFF, BMP, PNG, JPEG, GIF and AVI. Image representation includes scientific data types. About a hundred Image Processing operations are available.</p>
<p><br/></p>
<p><a class="rvts79" href="http://www.tecgraf.puc-rio.br/im/" target="_blank">http://www.tecgraf.puc-rio.br/im/</a></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts62">CD library</span></p>
<p><br/></p>
<p>Canvas Draw is a graphics library.</p>
<p>The library contains functions to support both vector and image applications, and the visualization surface can be either a window or a more abstract surface, such as Image, Clipboard, Metafile, PS, and so on.</p>
<p><br/></p>
<p><a class="rvts79" href="http://www.tecgraf.puc-rio.br/cd/" target="_blank">http://www.tecgraf.puc-rio.br/cd/</a></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts62">LuaSocket library</span></p>
<p><br/></p>
<p>LuaSocket is a Lua extension library that is composed by two parts: a C core that provides support for the TCP and UDP transport layers, and a set of Lua modules that add support for the SMTP (sending e-mails), HTTP (WWW access) and FTP (uploading and downloading files) protocols and other functionality commonly needed by applications that deal with the Internet.</p>
<p><br/></p>
<p>Usage: netplay, local data transmission.</p>
<p><br/></p>
<p><a class="rvts79" href="http://w3.impa.br/~diego/software/luasocket/home.html" target="_blank">http://w3.impa.br/~diego/software/luasocket/home.html</a></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts62">WinAPI library</span></p>
<p><br/></p>
<p>This module provides basic tools for working with Windows system resources.</p>
<p><br/></p>
<p>Usage example: \luaScripts\JumpingFCEUXWindow.lua</p>
<p><br/></p>
<p><a class="rvts79" href="https://github.com/stevedonovan/winapi" target="_blank">https://github.com/stevedonovan/winapi</a></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free EBook and documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="LuaPerks"
data-hnd-context="81"
data-hnd-title="LuaPerks"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="LuaScripting.html">Lua Scripting</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="LuaScripting.html" title="Lua Scripting" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="LuaFunctionsList.html" title="Lua Functions List" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="LuaBot.html" title="Lua Bot" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>LuaPerks</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">LuaPerks</span></p>
<p class="rvps2"><span class="rvts22"><br/></span></p>
<p class="rvps2"><span class="rvts6">The following Lua libraries are integrated into FCEUX win32-executable (statically linked) and are available for using in your scripts. You can also use any other Lua library by placing its .dll files into FCEUX folder.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts94">IUP library</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">IUP (Portable User Interface) is a toolkit for building graphical user interfaces.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Usage example: \luaScripts\GUI-iup_example.lua&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts23" href="http://www.tecgraf.puc-rio.br/iup/" target="_blank">http://www.tecgraf.puc-rio.br/iup/</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts94">IM library</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">IM is a toolkit for Digital Imaging. The main goal of the library is to provide a simple API and abstraction of images for applications.</span></p>
<p class="rvps2"><span class="rvts6">File formats supported: TIFF, BMP, PNG, JPEG, GIF and AVI. Image representation includes scientific data types. About a hundred Image Processing operations are available.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts23" href="http://www.tecgraf.puc-rio.br/im/" target="_blank">http://www.tecgraf.puc-rio.br/im/</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts94">CD library</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Canvas Draw is a graphics library.</span></p>
<p class="rvps2"><span class="rvts6">The library contains functions to support both vector and image applications, and the visualization surface can be either a window or a more abstract surface, such as Image, Clipboard, Metafile, PS, and so on.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts23" href="http://www.tecgraf.puc-rio.br/cd/" target="_blank">http://www.tecgraf.puc-rio.br/cd/</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts94">LuaSocket library</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">LuaSocket is a Lua extension library that is composed by two parts: a C core that provides support for the TCP and UDP transport layers, and a set of Lua modules that add support for the SMTP (sending e-mails), HTTP (WWW access) and FTP (uploading and downloading files) protocols and other functionality commonly needed by applications that deal with the Internet.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Usage: netplay, local data transmission.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts23" href="http://w3.impa.br/~diego/software/luasocket/home.html" target="_blank">http://w3.impa.br/~diego/software/luasocket/home.html</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts94">WinAPI library</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This module provides basic tools for working with Windows system resources.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Usage example: \luaScripts\JumpingFCEUXWindow.lua</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts23" href="https://github.com/stevedonovan/winapi" target="_blank">https://github.com/stevedonovan/winapi</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour">Easily create CHM Help documents</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">&times;</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>

View File

@ -1,97 +1,292 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Lua Scripting</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("LuaScripting");
}
});
</script>
<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>Lua Scripting</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Lua Scripting">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Lua Scripting" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Lua Scripting</h1>
</div>
<div id="topic_header_nav">
<a href="GameGenieEncoderDecoder.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="LuaGettingStarted.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Lua Scripting</span></p>
<p><br/></p>
<p>Lua is a scripting language similar to Perl or Python. &nbsp;It allows for logical evaluation equivalent to languages like C but in a much more dynamic way that eliminates much of the need to compile programs and worry about low level resource management like deleting objects. &nbsp;In the context of FCEUX, Lua allows for direct control of the emulator through this logical construct.</p>
<p><br/></p>
<p>What this means to a non-"programmer" is that you can essentially automate certain tasks in FCEUX, such as holding controller inputs, displaying additional graphical information and saving/loading savestates.</p>
<p><br/></p>
<p>A bit of previous programming knowledge will be useful in taking advantage of this feature, but it is certainly not a requirement. &nbsp;Lua is specifically written with the intention of being easier than most languages for anyone to understand and use.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts59" href="LuaGettingStarted.html">Getting Started</a></p>
<p><br/></p>
<p>The basics of Lua scripting, its implementation into FCEUX, and how to get started using Lua.</p>
<p><br/></p>
<p><a class="rvts59" href="Commands.html">Using Lua</a></p>
<p><br/></p>
<p>How to use Lua and basic syntax/commands that are useable under FCEUX.</p>
<p><br/></p>
<p><a class="rvts59" href="LuaFunctionsList.html">Lua Functions List</a></p>
<p><br/></p>
<p>A list of Lua functions available in FCEUX and a brief description of each.</p>
<p><br/></p>
<p><a class="rvts59" href="LuaPerks.html">LuaPerks</a></p>
<p><br/></p>
<p>Additional libraries integrated into FCEUX.</p>
<p><br/></p>
<p><a class="rvts59" href="LuaBot.html">Lua Bot</a></p>
<p><br/></p>
<p>How to use Luau's version of Basic bot.</p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/iphone-website-generation">Free iPhone documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="LuaScripting"
data-hnd-context="11"
data-hnd-title="Lua Scripting"
>
<div class="navigation">
<ol class="breadcrumb">
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="GameGenieEncoderDecoder.html" title="Game Genie Encoder/Decoder" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="LuaGettingStarted.html" title="Getting Started" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Lua Scripting</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Lua Scripting</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Lua is a scripting language similar to Perl or Python. &nbsp;It allows for logical evaluation equivalent to languages like C but in a much more dynamic way that eliminates much of the need to compile programs and worry about low level resource management like deleting objects. &nbsp;In the context of FCEUX, Lua allows for direct control of the emulator through this logical construct.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">What this means to a non-"programmer" is that you can essentially automate certain tasks in FCEUX, such as holding controller inputs, displaying additional graphical information and saving/loading savestates.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A bit of previous programming knowledge will be useful in taking advantage of this feature, but it is certainly not a requirement. &nbsp;Lua is specifically written with the intention of being easier than most languages for anyone to understand and use.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="LuaGettingStarted.html">Getting Started</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The basics of Lua scripting, its implementation into FCEUX, and how to get started using Lua.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Commands.html">Using Lua</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">How to use Lua and basic syntax/commands that are useable under FCEUX.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="LuaFunctionsList.html">Lua Functions List</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A list of Lua functions available in FCEUX and a brief description of each.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="LuaPerks.html">LuaPerks</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Additional libraries integrated into FCEUX.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="LuaBot.html">Lua Bot</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">How to use Luau's version of Basic bot.</span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour/create-help-files-for-the-qt-help-framework">Create cross-platform Qt Help files</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">&times;</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>

View File

@ -1,80 +1,271 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Map Hotkeys</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("MapHotkeys");
}
});
</script>
<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>Map Hotkeys</title>
<meta name="description" content="" />
<meta name="keywords" content="Map Hotkeys">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Map Hotkeys">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Map Hotkeys" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Map Hotkeys</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="MovieOptions.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="ContextMenuItems.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Map Hotkeys</span></p>
<p><br/></p>
<p>The map hotkeys dialog allows you to assign hotkeys to various FCEUX commands.</p>
<p><br/></p>
<p>To assign or remove a hotkey assignment, double click on the name of the hotkey in the list box. &nbsp;Then press the key combination you wish to assign it. &nbsp;To clear the assignment, press the clear button.</p>
<p><br/></p>
<p>The filter pull down menu allows you to only see hotkey listings in various categories (the list shows all hotkey assignments by default).</p>
<p><br/></p>
<p>The Restore defaults button will change all hotkeys to their default values.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Full-featured Help generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="MapHotkeys"
data-hnd-context="46"
data-hnd-title="Map Hotkeys"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="MovieOptions.html" title="Movie Options" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="ContextMenuItems.html" title="Context Menu Items" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Map Hotkeys</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Map Hotkeys</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The map hotkeys dialog allows you to assign hotkeys to various FCEUX commands.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To assign or remove a hotkey assignment, double click on the name of the hotkey in the list box. &nbsp;Then press the key combination you wish to assign it. &nbsp;To clear the assignment, press the clear button.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The filter pull down menu allows you to only see hotkey listings in various categories (the list shows all hotkey assignments by default).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Restore defaults button will change all hotkeys to their default values.</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.helpndoc.com/feature-tour">Easily create Help documents</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">&times;</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>

View File

@ -1,133 +1,324 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Memory Watch</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("MemoryWatch");
}
});
</script>
<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>Memory Watch</title>
<meta name="description" content="" />
<meta name="keywords" content="Memory Watch">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Memory Watch">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Memory Watch" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Memory Watch</h1>
<div id="topic_breadcrumb">
<a href="Tools2.html">Tools</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Tools2.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="RAMWatch.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="TASEditor.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Memory Watch</span></p>
<p><span class="rvts12"><br/></span></p>
<p><span class="rvts12">Overview</span></p>
<p><span class="rvts12"><br/></span></p>
<p>Memory watch is a tool designed to values of specific known memory values in the game's <a class="rvts18" href="NESRAMMappingFindingValues.html">RAM</a>. Memory watch does not find values. &nbsp;To find useful values to monitor, see <a class="rvts18" href="CheatSearch.html">Cheats</a>, <span class="rvts18">Ram filter</span>, <a class="rvts18" href="HexEditor.html">Hex Editor</a>, and <a class="rvts18" href="Debugger.html">Debugger</a>.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Inserting Values</span></p>
<p><br/></p>
<p>To display a ram value, simply type its address into one of the address fields. &nbsp;The name field allows you to put a brief description of the value. &nbsp; </p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Prefixes</span></p>
<p><br/></p>
<p>You must put in the hexi-decimal value of the address, &nbsp;but the value will be displayed will be decimal by default.</p>
<p><br/></p>
<p>To display the value in hex, use a prefix of "x" (such as x00FD). &nbsp;</p>
<p><br/></p>
<p>Use the prefix "!" to display a 2 byte value. </p>
<p><br/></p>
<p>Use a prefix of "X" to watch a 2 byte value in hex.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Saving/Loading Watch files</span></p>
<p><br/></p>
<p>You can save your addresses into watch files, as well as loading previous files using the standard save,load,new options in the File menu.</p>
<p><br/></p>
<p>FCEUX uses the /memw folder by default but you can specify a new default folder in the <a class="rvts18" href="Directories.html">Directory Override</a> menu.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Options Menu</span></p>
<p><br/></p>
<p>If you select <span class="rvts32">Load on Start up</span>, Memory watch will load up automatically when FCEU is started. </p>
<p><br/></p>
<p>If you select <span class="rvts32">Load Last File on Start up</span>, the most recent file in the Recent folder will be loaded when memory watch is loaded.</p>
<p><br/></p>
<p>If you select <span class="rvts32">Collapse to 1 Column </span>(or press the right arrow button on the bottom left of the dialog), the memory watch dialog is reduced to just 1 column.</p>
<p><br/></p>
<p><span class="rvts16">Frozen Memory Addresses</span></p>
<p><br/></p>
<p>If one of the watched addresses is frozen by the <a class="rvts18" href="CheatSearch.html">cheats dialog</a> or the <a class="rvts18" href="HexEditor.html">hex editor</a>, it will display blue in the memory watch dialog.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts12">Memory Change Monitor</span></p>
<p><br/></p>
<p>The bottom of the memory watch dialog displays a memory change monitoring section. &nbsp;This monitors the 1st two values of each memory watch column. &nbsp;Rather than monitoring the value itself, this monitors the value's behavior. &nbsp;</p>
<p><br/></p>
<p>The address being monitored is under the address column.</p>
<p><br/></p>
<p>The Formula drop down box shows which criteria the change monitoring is using.</p>
<p><br/></p>
<p>The count value displays how many times the value has changed based on the criteria.</p>
<p><br/></p>
<p>Reset will reset the count to 0.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts43">Usage Example:</span></p>
<p><br/></p>
<p>As an example of the memory change monitoring, Let's say we are recording a movie of the game Super C and want to keep track of when the game lags.</p>
<p>The ram address 001C functions as a "lag flag". &nbsp;It will remain 0, then change to a positive value on a frame that the game lags.</p>
<p><br/></p>
<p>We could put 001C in one of the 1st two memory watch edit boxes. &nbsp;Then set the corresponding formula in the memory change monitoring to "&gt; then" (greater than). &nbsp;Now the count will show us how many lag frames occur in the movie.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create HTML Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="MemoryWatch"
data-hnd-context="10"
data-hnd-title="Memory Watch"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Tools2.html">Tools</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Tools2.html" title="Tools" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="RAMWatch.html" title="RAM Watch" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="TASEditor.html" title="TAS Editor" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Memory Watch</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Memory Watch</span></p>
<p class="rvps2"><span class="rvts17"><br/></span></p>
<p class="rvps2"><span class="rvts17">Overview</span></p>
<p class="rvps2"><span class="rvts17"><br/></span></p>
<p class="rvps2"><span class="rvts6">Memory watch is a tool designed to values of specific known memory values in the game's </span><a class="rvts67" href="NESRAMMappingFindingValues.html">RAM</a><span class="rvts6">. Memory watch does not find values. &nbsp;To find useful values to monitor, see </span><a class="rvts67" href="CheatSearch.html">Cheats</a><span class="rvts6">, </span><span class="rvts67">Ram filter</span><span class="rvts6">, </span><a class="rvts67" href="HexEditor.html">Hex Editor</a><span class="rvts6">, and </span><a class="rvts67" href="Debugger.html">Debugger</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Inserting Values</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To display a ram value, simply type its address into one of the address fields. &nbsp;The name field allows you to put a brief description of the value. &nbsp;&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Prefixes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You must put in the hexi-decimal value of the address, &nbsp;but the value will be displayed will be decimal by default.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To display the value in hex, use a prefix of "x" (such as x00FD). &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Use the prefix "!" to display a 2 byte value.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Use a prefix of "X" to watch a 2 byte value in hex.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Saving/Loading Watch files</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can save your addresses into watch files, as well as loading previous files using the standard save,load,new options in the File menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX uses the /memw folder by default but you can specify a new default folder in the </span><a class="rvts67" href="Directories.html">Directory Override</a><span class="rvts6"> menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Options Menu</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If you select </span><span class="rvts45">Load on Start up</span><span class="rvts6">, Memory watch will load up automatically when FCEU is started.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If you select </span><span class="rvts45">Load Last File on Start up</span><span class="rvts6">, the most recent file in the Recent folder will be loaded when memory watch is loaded.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If you select </span><span class="rvts45">Collapse to 1 Column </span><span class="rvts6">(or press the right arrow button on the bottom left of the dialog), the memory watch dialog is reduced to just 1 column.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Frozen Memory Addresses</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If one of the watched addresses is frozen by the </span><a class="rvts67" href="CheatSearch.html">cheats dialog</a><span class="rvts6"> or the </span><a class="rvts67" href="HexEditor.html">hex editor</a><span class="rvts6">, it will display blue in the memory watch dialog.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Memory Change Monitor</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The bottom of the memory watch dialog displays a memory change monitoring section. &nbsp;This monitors the 1st two values of each memory watch column. &nbsp;Rather than monitoring the value itself, this monitors the value's behavior. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The address being monitored is under the address column.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Formula drop down box shows which criteria the change monitoring is using.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The count value displays how many times the value has changed based on the criteria.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Reset will reset the count to 0.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts68">Usage Example:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">As an example of the memory change monitoring, Let's say we are recording a movie of the game Super C and want to keep track of when the game lags.</span></p>
<p class="rvps2"><span class="rvts6">The ram address 001C functions as a "lag flag". &nbsp;It will remain 0, then change to a positive value on a frame that the game lags.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">We could put 001C in one of the 1st two memory watch edit boxes. &nbsp;Then set the corresponding formula in the memory change monitoring to "&gt; then" (greater than). &nbsp;Now the count will show us how many lag frames occur in the movie.</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.helpndoc.com">Easy CHM and documentation editor</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">&times;</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>

View File

@ -1,118 +1,309 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Movie Options</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("MovieOptions");
}
});
</script>
<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>Movie Options</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Movie Options">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Movie Options" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Movie Options</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Video.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="MapHotkeys.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Movie Options</span></p>
<p><span class="rvts15"><br/></span></p>
<p><span class="rvts15"><br/></span></p>
<p>The movie option dialog has various settings related to movie making.</p>
<p><br/></p>
<p><span class="rvts16">Always suggest Read-Only replay</span></p>
<p><br/></p>
<p>If checked, FCEUX will automatically check "Open Read-Only" checkbox when showing "Play Movie" dialog. If unchecked, the "Open Read-Only" checkbox state will depend on current movie status.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Pause After Movie Playback</span></p>
<p><br/></p>
<p>If checked, FCEUX will automatically pause emulation when reaching the last frame of a movie file.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Close After Movie Playback</span></p>
<p><br/></p>
<p>If checked, FCEUX will close the movie after replaying its last frame. If unchecked, when reaching the last frame the movie will switch to "MOVIE_FINISHED" state, still allowing you to load its savestates.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Bind savestates to movies</span></p>
<p><br/></p>
<p>Affects the savestate naming system when a movie is loaded. &nbsp;If checked, the movie name will be appended to a savestate filename.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Display movie subtitles</span></p>
<p><br/></p>
<p>Toggles whether or not movie subtitles (imbedded into the .fm2 file, see <a class="rvts18" href="fm2.html">.fm2</a> documentation) will be displayed on screen.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Put movie subtitles in AVI</span></p>
<p><br/></p>
<p>Toggles whether or not movie subtitles will be recorded into a .avi file.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Automatically backup movies</span></p>
<p><br/></p>
<p>If checked, the auto-movie backup is toggled on. &nbsp;Whenever a movie is loaded then set into record mode (by loading a savestate while in read-write mode), a backup copy of the .fm2 is saved before changing the file. &nbsp;</p>
<p><br/></p>
<p>Movie backups will be created only once each time a movie is loaded into FCEUX. &nbsp;Movie backups are appended with a backup number and the .bak file extension.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Load full savestate-movies</span></p>
<p><br/></p>
<p>If checked, FCEUX will not truncate movie immediately when you load its savestate in Recording mode (thus behaving similar to VBA-rr and Snes9x emulators). If unchecked, the movie will always shrink to the frame of the savestate you loaded.</p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/help-authoring-tool">Single source CHM, PDF, DOC and HTML Help creation</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="MovieOptions"
data-hnd-context="66"
data-hnd-title="Movie Options"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Video.html" title="Video" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="MapHotkeys.html" title="Map Hotkeys" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Movie Options</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Movie Options</span></p>
<p class="rvps2"><span class="rvts20"><br/></span></p>
<p class="rvps2"><span class="rvts20"><br/></span></p>
<p class="rvps2"><span class="rvts6">The movie option dialog has various settings related to movie making.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Always suggest Read-Only replay</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If checked, FCEUX will automatically check "Open Read-Only" checkbox when showing "Play Movie" dialog. If unchecked, the "Open Read-Only" checkbox state will depend on current movie status.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Pause After Movie Playback</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If checked, FCEUX will automatically pause emulation when reaching the last frame of a movie file.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Close After Movie Playback</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If checked, FCEUX will close the movie after replaying its last frame. If unchecked, when reaching the last frame the movie will switch to "MOVIE_FINISHED" state, still allowing you to load its savestates.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Bind savestates to movies</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Affects the savestate naming system when a movie is loaded. &nbsp;If checked, the movie name will be appended to a savestate filename.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Display movie subtitles</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Toggles whether or not movie subtitles (imbedded into the .fm2 file, see </span><a class="rvts62" href="fm2.html">.fm2</a><span class="rvts6"> documentation) will be displayed on screen.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Put movie subtitles in AVI</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Toggles whether or not movie subtitles will be recorded into a .avi file.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Automatically backup movies</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If checked, the auto-movie backup is toggled on. &nbsp;Whenever a movie is loaded then set into record mode (by loading a savestate while in read-write mode), a backup copy of the .fm2 is saved before changing the file. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Movie backups will be created only once each time a movie is loaded into FCEUX. &nbsp;Movie backups are appended with a backup number and the .bak file extension.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Load full savestate-movies</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If checked, FCEUX will not truncate movie immediately when you load its savestate in Recording mode (thus behaving similar to VBA-rr and Snes9x emulators). If unchecked, the movie will always shrink to the frame of the savestate you loaded.</span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/create-epub-ebooks">Free EPub producer</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">&times;</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>

View File

@ -1,157 +1,348 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Movie Recording</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("MovieRecording");
}
});
</script>
<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>Movie Recording</title>
<meta name="description" content="" />
<meta name="keywords" content="Movie Recording">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Movie Recording">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Movie Recording" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Movie Recording</h1>
<div id="topic_breadcrumb">
<a href="General.html">General</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="General.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="AVICapturing.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="NES.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Movie Recording</span></p>
<p><br/></p>
<p><span class="rvts16">Introduction</span></p>
<p><br/></p>
<p>A movie file is a file which contains data needed to reconstruct actions in a game. In most emulators, the movie files consist of simply the buttons that were pressed during the game. Because the emulation is completely predictable (deterministic), it will always play back the same way.</p>
<p><br/></p>
<p>Unless the movie starts from the console power-on or from reset, the movie file might also contain a savestate that loads the beginning point of the game. &nbsp;Movie files dont contain any sound or image data. Such data is not needed, because the emulator can reconstruct it during movie playback. </p>
<p><br/></p>
<p>Movie files in FCEUX are .fm2 files. &nbsp;The file format is unique to FCEUX and not compatible with other movie recording versions of FCE Ultra. &nbsp;Movie files from other versions (.fcm) can be converted to .fm2 for playback with the <a class="rvts18" href="Covertfcm.html">.fcm to .fm2 converter</a>.</p>
<p><br/></p>
<p>Movie features in FCEUX are designed specifically for making Tool-assisted Speedruns. &nbsp;For more information visit <a class="rvts18" href="http://tasvideos.org" target="_blank">TASVideos</a>.</p>
<p><br/></p>
<p><span class="rvts16">Recording Movies</span></p>
<p><br/></p>
<p>To record a movie, open a ROM. &nbsp;Then simply select "Record Movie" in the File &gt; Movie Menu. &nbsp;You will be prompted to name the file and to select where to record from. &nbsp;Selecting "Start" will begin the recording from a Power-on (Hard Reset). &nbsp;If you select "Now", a savestate will be made at your current location in the game, and the movie will begin recording from there. &nbsp;If you select browse, you will be prompted to find a preexisting savestate file to begin recording from.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Savestates, Slowdown, and Frame Advance</span></p>
<p><br/></p>
<p>At anytime while recording, you can make a *savestate. &nbsp;This is a snapshot of the game's current memory contents. &nbsp;Once a savestate is made, it can be loaded with the *loadstate command. &nbsp;This will return the movie back to the spot in the game where the savestate was made. &nbsp;This can be used to undo mistakes or to test different strategies for a particular segment.</p>
<p><br/></p>
<p>(The default key for making a savestate is "I" and the default key for loading a state is "P". &nbsp;Both of these can be assigned under the <a class="rvts18" href="MapHotkeys.html">Map Hotkeys Menu</a>). &nbsp;Both can also be access through the File &gt; Savestate Menu</p>
<p><br/></p>
<p>Tool Assisted movies take advantage of slowing the emulator down in order to increase precision of the movie making process. &nbsp;Navigating to NES &gt; Emulation Speed &gt; Slow down or pressing the "-" key will slow down emulation. &nbsp;NES &gt; Emulation Speed &gt; Speed up or the "=" will speed it up. &nbsp;(These can be re-mapped in the <a class="rvts18" href="MapHotkeys.html">Map Hotkeys Menu</a>).</p>
<p><br/></p>
<p>Even greater precision can be made using the frame advance key. &nbsp;Pressing the frame advance key will pause emulation and advance it a single frame (1/60th of a second NTSC ). &nbsp;By holding down input and pressing the frame advance key, it will record that input for that particular frame.</p>
<p><br/></p>
<p>For more info seeing <a class="rvts18" href="ToolAssistedSpeedruns.html">Tool Assisted Speedruns</a>.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">"Bullet Proof Rerecording"</span></p>
<p><br/></p>
<p>All savestates made during movie recording contain the movie information up to the frame of the savestate. &nbsp;When a savestate is loaded, the movie file in the savestate is also loaded. &nbsp;This is referred to as "Bullet Proof Rerecording" because it prevents possible desyncs and lost data from improper/out of order savestate loading.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Playing Back Movies</span></p>
<p><br/></p>
<p>To play back a recorded movie, open the ROM. &nbsp;Then select "Replay Movie" in the File Menu. &nbsp;A movie dialog box will open where you can select the movie file. &nbsp;</p>
<p><br/></p>
<p>You can also select whether the movie is in Read-only mode. &nbsp;If a movie is in read-only mode, the movie file can not be altered in any way. &nbsp;If you make a savestate while playing the movie and load that state, the playback will simply "rewind" to that state. &nbsp;If the movie is not in read-only, however, loading a state will set the movie to record mode and begin recording from that savestate.</p>
<p><br/></p>
<p>You can also select "Pause movie at frame" x. &nbsp;If selected, the movie will automatically pause when reaching the frame selected (the default is the last frame of the movie).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Read only</span></p>
<p><br/></p>
<p>You can select read-only when playing a movie. &nbsp;You can also toggle the read-only status by navigating to File &gt; Movie &gt; Read only.</p>
<p>In read-only mode a movie can not be edited. &nbsp;Loading a savestate will take the movie to that point in the movie and stay in playback mode.</p>
<p><br/></p>
<p>In read-write status, loading a state will change a movie from playback mode to record mode.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Resuming Recording</span></p>
<p><br/></p>
<p>You can resume recording a previous movie by playing back the movie, setting the record status to read+write, and then loading a state.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Play Movie from Beginning</span></p>
<p><br/></p>
<p>At any point while recording or playing back a movie, you can navigate to File &gt; Movie &gt; Play Movie from Beginning. &nbsp;This will set the movie to read only status and reset playback to frame 0.</p>
<p><br/></p>
<p><span class="rvts16">Frame Counter</span></p>
<p><br/></p>
<p>The Frame counter displays what frame the movie is currently on. &nbsp;If the movie is playing in read-only mode, it will also display the total number of frames in the movie. &nbsp;The default key for toggling the Frame Counter display is the "." (period) key. &nbsp;(This can be re-mapped in the <a class="rvts18" href="MapHotkeys.html">Map Hotkeys Menu</a>).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Frame Advance</span></p>
<p><br/></p>
<p>The frame advance key ("backlash" key by default. &nbsp;Re-mappable under the <a class="rvts18" href="MapHotkeys.html">Map Hotkeys Menu</a>) will advance the game by a single frame and then pause the game. &nbsp; If the hotkey is held down, it will auto advance quickly through the game.</p>
<p><br/></p>
<p>This is a critical tool when perfecting input in movie recording.</p>
<p><br/></p>
<p><span class="rvts16">Metadata</span></p>
<p><br/></p>
<p>When you record a new movie via the record movie dialog there is an author field. &nbsp;This sends the info to the .fm2 file in the form of comment Author [author name] (see <a class="rvts18" href="fm2.html">.fm2</a>). &nbsp;</p>
<p><br/></p>
<p>Any line in the .fm2 that starts with "comment" is known as metadata. &nbsp;You can include any number of comments manually by editing the .fm2 file with any text editor. &nbsp;</p>
<p><br/></p>
<p>On the replay movie dialog, clicking the metadata button will display all metadata in a separate dialog box (If a movie is currently loaded you can also access the meta-data by right-clicking and selecting Metadata in the context menu).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Subtitles</span></p>
<p><br/></p>
<p>FCEUX now supports subtitles in the .fm2 file format. &nbsp;Subtitles will be displayed on the screen automatically as a movie plays. &nbsp;You can turn on/off subtitles by navigating to Config &gt; Movie Options &gt; Display movie subtitles (see <a class="rvts18" href="MovieOptions.html">Movie options</a>).</p>
<p><br/></p>
<p>For adding subtitles to a movie see the <a class="rvts18" href="fm2.html">.fm2 documentation</a>.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Web Help sites</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="MovieRecording"
data-hnd-context="5"
data-hnd-title="Movie Recording"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="General.html">General</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="General.html" title="General" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="AVICapturing.html" title="AVI Capturing" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="NES.html" title="NES Menu" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Movie Recording</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Movie Recording</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Introduction</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A movie file is a file which contains data needed to reconstruct actions in a game. In most emulators, the movie files consist of simply the buttons that were pressed during the game. Because the emulation is completely predictable (deterministic), it will always play back the same way.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Unless the movie starts from the console power-on or from reset, the movie file might also contain a savestate that loads the beginning point of the game. &nbsp;Movie files dont contain any sound or image data. Such data is not needed, because the emulator can reconstruct it during movie playback.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Movie files in FCEUX are .fm2 files. &nbsp;The file format is unique to FCEUX and not compatible with other movie recording versions of FCE Ultra. &nbsp;Movie files from other versions (.fcm) can be converted to .fm2 for playback with the </span><a class="rvts46" href="Covertfcm.html">.fcm to .fm2 converter</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Movie features in FCEUX are designed specifically for making Tool-assisted Speedruns. &nbsp;For more information visit </span><a class="rvts46" href="http://tasvideos.org" target="_blank">TASVideos</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Recording Movies</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To record a movie, open a ROM. &nbsp;Then simply select "Record Movie" in the File &gt; Movie Menu. &nbsp;You will be prompted to name the file and to select where to record from. &nbsp;Selecting "Start" will begin the recording from a Power-on (Hard Reset). &nbsp;If you select "Now", a savestate will be made at your current location in the game, and the movie will begin recording from there. &nbsp;If you select browse, you will be prompted to find a preexisting savestate file to begin recording from.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Savestates, Slowdown, and Frame Advance</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">At anytime while recording, you can make a *savestate. &nbsp;This is a snapshot of the game's current memory contents. &nbsp;Once a savestate is made, it can be loaded with the *loadstate command. &nbsp;This will return the movie back to the spot in the game where the savestate was made. &nbsp;This can be used to undo mistakes or to test different strategies for a particular segment.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">(The default key for making a savestate is "I" and the default key for loading a state is "P". &nbsp;Both of these can be assigned under the </span><a class="rvts46" href="MapHotkeys.html">Map Hotkeys Menu</a><span class="rvts6">). &nbsp;Both can also be access through the File &gt; Savestate Menu</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Tool Assisted movies take advantage of slowing the emulator down in order to increase precision of the movie making process. &nbsp;Navigating to NES &gt; Emulation Speed &gt; Slow down or pressing the "-" key will slow down emulation. &nbsp;NES &gt; Emulation Speed &gt; Speed up or the "=" will speed it up. &nbsp;(These can be re-mapped in the </span><a class="rvts46" href="MapHotkeys.html">Map Hotkeys Menu</a><span class="rvts6">).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Even greater precision can be made using the frame advance key. &nbsp;Pressing the frame advance key will pause emulation and advance it a single frame (1/60th of a second NTSC ). &nbsp;By holding down input and pressing the frame advance key, it will record that input for that particular frame.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For more info seeing </span><a class="rvts46" href="ToolAssistedSpeedruns.html">Tool Assisted Speedruns</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">"Bullet Proof Rerecording"</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">All savestates made during movie recording contain the movie information up to the frame of the savestate. &nbsp;When a savestate is loaded, the movie file in the savestate is also loaded. &nbsp;This is referred to as "Bullet Proof Rerecording" because it prevents possible desyncs and lost data from improper/out of order savestate loading.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Playing Back Movies</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">To play back a recorded movie, open the ROM. &nbsp;Then select "Replay Movie" in the File Menu. &nbsp;A movie dialog box will open where you can select the movie file. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can also select whether the movie is in Read-only mode. &nbsp;If a movie is in read-only mode, the movie file can not be altered in any way. &nbsp;If you make a savestate while playing the movie and load that state, the playback will simply "rewind" to that state. &nbsp;If the movie is not in read-only, however, loading a state will set the movie to record mode and begin recording from that savestate.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can also select "Pause movie at frame" x. &nbsp;If selected, the movie will automatically pause when reaching the frame selected (the default is the last frame of the movie).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Read only</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can select read-only when playing a movie. &nbsp;You can also toggle the read-only status by navigating to File &gt; Movie &gt; Read only.</span></p>
<p class="rvps2"><span class="rvts6">In read-only mode a movie can not be edited. &nbsp;Loading a savestate will take the movie to that point in the movie and stay in playback mode.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In read-write status, loading a state will change a movie from playback mode to record mode.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Resuming Recording</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can resume recording a previous movie by playing back the movie, setting the record status to read+write, and then loading a state.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Play Movie from Beginning</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">At any point while recording or playing back a movie, you can navigate to File &gt; Movie &gt; Play Movie from Beginning. &nbsp;This will set the movie to read only status and reset playback to frame 0.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Frame Counter</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Frame counter displays what frame the movie is currently on. &nbsp;If the movie is playing in read-only mode, it will also display the total number of frames in the movie. &nbsp;The default key for toggling the Frame Counter display is the "." (period) key. &nbsp;(This can be re-mapped in the </span><a class="rvts46" href="MapHotkeys.html">Map Hotkeys Menu</a><span class="rvts6">).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Frame Advance</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The frame advance key ("backlash" key by default. &nbsp;Re-mappable under the </span><a class="rvts46" href="MapHotkeys.html">Map Hotkeys Menu</a><span class="rvts6">) will advance the game by a single frame and then pause the game. &nbsp; If the hotkey is held down, it will auto advance quickly through the game.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This is a critical tool when perfecting input in movie recording.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Metadata</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When you record a new movie via the record movie dialog there is an author field. &nbsp;This sends the info to the .fm2 file in the form of comment Author [author name] (see </span><a class="rvts46" href="fm2.html">.fm2</a><span class="rvts6">). &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Any line in the .fm2 that starts with "comment" is known as metadata. &nbsp;You can include any number of comments manually by editing the .fm2 file with any text editor. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">On the replay movie dialog, clicking the metadata button will display all metadata in a separate dialog box (If a movie is currently loaded you can also access the meta-data by right-clicking and selecting Metadata in the context menu).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Subtitles</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX now supports subtitles in the .fm2 file format. &nbsp;Subtitles will be displayed on the screen automatically as a movie plays. &nbsp;You can turn on/off subtitles by navigating to Config &gt; Movie Options &gt; Display movie subtitles (see </span><a class="rvts46" href="MovieOptions.html">Movie options</a><span class="rvts6">).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For adding subtitles to a movie see the </span><a class="rvts46" href="fm2.html">.fm2 documentation</a><span class="rvts6">.</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.helpndoc.com/feature-tour/create-help-files-for-the-qt-help-framework">Produce online help for Qt applications</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">&times;</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>

View File

@ -1,80 +1,271 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Movie &amp; Savestate formats</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Movieformats");
}
});
</script>
<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>Movie &amp; Savestate formats</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Movie &amp; Savestate formats">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Movie &amp; Savestate formats" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Movie &amp; Savestate formats</h1>
<div id="topic_breadcrumb">
<a href="Technicalinformation.html">Technical Information</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Technicalinformation.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Technicalinformation.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="fm2.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Movie and Savestate File Formats</span></p>
<p><br/></p>
<p>The Following documentation deals with the specific technical information regarding the format of movie &amp; savestate files.</p>
<p><br/></p>
<p><a class="rvts25" href="fm2.html">.fm2</a> - FCEUX Movie file format</p>
<p><br/></p>
<p><a class="rvts25" href="fcm.html">.fcm</a> - Movie file format from previous FCEU versions (compatible with FCEUX via <a class="rvts18" href="Covertfcm.html">Convert FCM</a>)</p>
<p><br/></p>
<p><a class="rvts25" href="fcs.html">.fcs</a> - Savestate file format</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Easy CHM and documentation editor</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Movieformats"
data-hnd-context="24"
data-hnd-title="Movie & Savestate formats"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Technicalinformation.html">Technical Information</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Technicalinformation.html" title="Technical Information" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Technicalinformation.html" title="Technical Information" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="fm2.html" title=".fm2" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Movie &amp; Savestate formats</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Movie and Savestate File Formats</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Following documentation deals with the specific technical information regarding the format of movie &amp; savestate files.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="fm2.html">.fm2</a><span class="rvts6"> - FCEUX Movie file format</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="fcm.html">.fcm</a><span class="rvts6"> - Movie file format from previous FCEU versions (compatible with FCEUX via </span><a class="rvts23" href="Covertfcm.html">Convert FCM</a><span class="rvts6">)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="fcs.html">.fcs</a><span class="rvts6"> - Savestate file format</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.helpndoc.com/create-epub-ebooks">Full-featured EBook editor</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">&times;</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>

View File

@ -1,120 +1,311 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>NES Menu</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("NES");
}
});
</script>
<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>NES Menu</title>
<meta name="description" content="" />
<meta name="keywords" content="Eject/Insert Disk,Insert Coin,Power,Reset,Switch Disk Side">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="NES Menu">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="NES Menu" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>NES Menu</h1>
<div id="topic_breadcrumb">
<a href="General.html">General</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="General.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="MovieRecording.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="PaletteOptions.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">NES</span></p>
<p><br/></p>
<p>Explains commands in the NES menu of FCEUX.</p>
<p>All these commands can be mapped to a keyboard/joypad button in the <a class="rvts18" href="MapHotkeys.html">Map Hotkeys Menu</a>.</p>
<p><br/></p>
<p><span class="rvts16">Reset</span></p>
<p>Emulates the pressing of the Reset Button on the NES. ("Soft reset").</p>
<p><br/></p>
<p><span class="rvts16">Power</span></p>
<p>Emulates a power cycle, which is turning the power on and off with the Power button on the NES. ("Hard Reset")</p>
<p><br/></p>
<p><span class="rvts16">Eject/Insert Disk</span></p>
<p>Ejects or inserts a FDS disk. &nbsp;(See <a class="rvts18" href="FamicomDiskSystem.html">Famicom Disk System</a>)</p>
<p><br/></p>
<p><span class="rvts16">Switch Disk Side</span></p>
<p>Switches Sides of a FDS disk. (See <a class="rvts18" href="FamicomDiskSystem.html">Famicom Disk System</a>)</p>
<p><br/></p>
<p><span class="rvts16">Insert Coin</span></p>
<p>Emulates the inserting of a coin in an arcade-style game.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts33">Emulation Speed Sub Menu</span></p>
<p><br/></p>
<p><span class="rvts16">Speed Up</span></p>
<p>Speeds up emulation (emulation speed ranges from 1% to 6400%)</p>
<p><br/></p>
<p><span class="rvts16">Slow Down</span></p>
<p>Slows down emulation</p>
<p><br/></p>
<p><span class="rvts16">Slowest Speed</span></p>
<p>Sets emulation to 1% speed</p>
<p><br/></p>
<p><span class="rvts16">Normal Speed</span></p>
<p>Sets emulation speed to 100%</p>
<p><br/></p>
<p><span class="rvts16">Turbo</span></p>
<p>Toggles turbo mode. &nbsp; In turbo mode, emulation is set its fastest settings.</p>
<p><br/></p>
<p><span class="rvts16">Set Custom Speed</span></p>
<p>Allows you to define emulation speed by entering the number of percents (1-1000, default is 100%)</p>
<p><br/></p>
<p><span class="rvts16">Set FrameAdvance Delay</span></p>
<p>Here you can fine-tune the working of the Frame Advance key. This setting defines the delay between the moment you press Frame Advance and the moment it starts continuous emulation</p>
<p><br/></p>
<p><span class="rvts16">Set custom speed for FrameAdvance</span></p>
<p>Here you can fine-tune the working of the Frame Advance key. This setting defines the speed of continuous emulation while you're holding Frame Advance. If you leave it 0 (zero), the emulation speed will be the same as the current emulation speed (from 1% to 6400%), but if you enter a number from 1 to 1000, the current emulation speed will be ignored when holding Frame Advance.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Full-featured Kindle eBooks generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="NES"
data-hnd-context="56"
data-hnd-title="NES Menu"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="General.html">General</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="General.html" title="General" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="MovieRecording.html" title="Movie Recording" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="PaletteOptions.html" title="Palette Options" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>NES Menu</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">NES</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Explains commands in the NES menu of FCEUX.</span></p>
<p class="rvps2"><span class="rvts6">All these commands can be mapped to a keyboard/joypad button in the </span><a class="rvts47" href="MapHotkeys.html">Map Hotkeys Menu</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Reset</span></p>
<p class="rvps2"><span class="rvts6">Emulates the pressing of the Reset Button on the NES. ("Soft reset").</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Power</span></p>
<p class="rvps2"><span class="rvts6">Emulates a power cycle, which is turning the power on and off with the Power button on the NES. ("Hard Reset")</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Eject/Insert Disk</span></p>
<p class="rvps2"><span class="rvts6">Ejects or inserts a FDS disk. &nbsp;(See </span><a class="rvts47" href="FamicomDiskSytem.html">Famicom Disk System</a><span class="rvts6">)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Switch Disk Side</span></p>
<p class="rvps2"><span class="rvts6">Switches Sides of a FDS disk. (See </span><a class="rvts47" href="FamicomDiskSytem.html">Famicom Disk System</a><span class="rvts6">)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Insert Coin</span></p>
<p class="rvps2"><span class="rvts6">Emulates the inserting of a coin in an arcade-style game.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts48">Emulation Speed Sub Menu</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Speed Up</span></p>
<p class="rvps2"><span class="rvts6">Speeds up emulation (emulation speed ranges from 1% to 6400%)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Slow Down</span></p>
<p class="rvps2"><span class="rvts6">Slows down emulation</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Slowest Speed</span></p>
<p class="rvps2"><span class="rvts6">Sets emulation to 1% speed</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Normal Speed</span></p>
<p class="rvps2"><span class="rvts6">Sets emulation speed to 100%</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Turbo</span></p>
<p class="rvps2"><span class="rvts6">Toggles turbo mode. &nbsp; In turbo mode, emulation is set its fastest settings.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Set Custom Speed</span></p>
<p class="rvps2"><span class="rvts6">Allows you to define emulation speed by entering the number of percents (1-1000, default is 100%)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Set FrameAdvance Delay</span></p>
<p class="rvps2"><span class="rvts6">Here you can fine-tune the working of the Frame Advance key. This setting defines the delay between the moment you press Frame Advance and the moment it starts continuous emulation</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Set custom speed for FrameAdvance</span></p>
<p class="rvps2"><span class="rvts6">Here you can fine-tune the working of the Frame Advance key. This setting defines the speed of continuous emulation while you're holding Frame Advance. If you leave it 0 (zero), the emulation speed will be the same as the current emulation speed (from 1% to 6400%), but if you enter a number from 1 to 1000, the current emulation speed will be ignored when holding Frame Advance.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/help-authoring-tool">Easy to use tool to create HTML Help files and Help web sites</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">&times;</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>

View File

@ -1,82 +1,273 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>NES Processing</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("NESProcessor");
}
});
</script>
<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>NES Processing</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="NES Processing">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="NES Processing" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>NES Processing</h1>
<div id="topic_breadcrumb">
<a href="Technicalinformation.html">Technical Information</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Technicalinformation.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="NESSound.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="6502CPU.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">NES Processing</span></p>
<p><br/></p>
<p>Includes Technical Specifications for the emulation of the NES CPU (6502) and the NES PPU (2C02).</p>
<p><br/></p>
<p><a class="rvts18" href="6502CPU.html">CPU</a></p>
<p><br/></p>
<p><a class="rvts18" href="PPU.html">PPU</a></p>
<p><br/></p>
<p><a class="rvts18" href="NESScrolling1.html">NES Scrolling part 1</a></p>
<p><br/></p>
<p><a class="rvts18" href="NESScrolling2.html">NES Scrolling part 2 </a></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create HTML Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="NESProcessor"
data-hnd-context="31"
data-hnd-title="NES Processing"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Technicalinformation.html">Technical Information</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Technicalinformation.html" title="Technical Information" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="NESSound.html" title="NES Sound" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="6502CPU.html" title="CPU - 6502" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>NES Processing</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">NES Processing</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Includes Technical Specifications for the emulation of the NES CPU (6502) and the NES PPU (2C02).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts23" href="6502CPU.html">CPU</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts23" href="PPU.html">PPU</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts23" href="NESScrolling1.html">NES Scrolling part 1</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts23" href="NESScrolling2.html">NES Scrolling part 2&nbsp;</a></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">News and information about help authoring tools and software</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">&times;</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>

View File

@ -1,279 +1,470 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>NES RAM (Mapping/Finding Values)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("NESRAMMappingFindingValues");
}
});
</script>
<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>NES RAM (Mapping/Finding Values)</title>
<meta name="description" content="" />
<meta name="keywords" content="2C02 PPU memory map,Game RAM Details,Memory Map,NES Mapping">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="NES RAM (Mapping/Finding Values)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="NES RAM (Mapping/Finding Values)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>NES RAM (Mapping/Finding Values)</h1>
<div id="topic_breadcrumb">
<a href="FAQGuides.html">FAQ / Guides</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="FAQGuides.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="ROMHacking.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Technicalinformation.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">NES Mapping</span></p>
<p><br/></p>
<p>This guide gives a map of the addresses in the NES cpu and explains each portion in detail. &nbsp;</p>
<p><br/></p>
<p>It also provides information for the basic layout of ram values in typical NES games. &nbsp;This info can be used to quickly map and find useful values in the game's ram.</p>
<p><br/></p>
<p><span class="rvts12">Contents</span></p>
<p><br/></p>
<p><span class="rvts41">Memory Map</span></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Gives a diagram of the 2A03 CPU memory map .</p>
<p><br/></p>
<p><span class="rvts41">2C02 PPU memory map</span></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Gives more detailed info about each section of the Memory map diagram</p>
<p><br/></p>
<p><span class="rvts41">Game Ram Details</span></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;On board RAM Map ($000-$07FF) Map (gives specific info on the how NES games typically layout their ram values)</p>
<p><br/></p>
<p><span class="rvts41">Online Resources</span></p>
<p><a class="rvts18" href="http://en.wikibooks.org/wiki/NES_Programming">NES Programming - Wikipedia</a></p>
<p><a class="rvts18" href="http://everything2.com/e2node/NES%2520memory%2520map">NES Memory Map</a></p>
<p><br/></p>
<p><span class="rvts12"><br/></span></p>
<p><span class="rvts12">Memory Map </span><span class="rvts10">(NES RAM/ROM)</span></p>
<p><br/></p>
<p>2A03 CPU memory map</p>
<p>2A03 CPU is a 6502-compatible CPU without the decimal mode (CLD and SED do nothing). It has an on-die sound generator, very limited DMA capability, and an input device controller that can be accessed through the 2A03 registers.</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p>
<p><span class="rvts36">6502 CPU Memory Map &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p>Address Range &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Size in bytes &nbsp; &nbsp; &nbsp; &nbsp;Notes (Page size = 256bytes)</p>
<p><span class="rvts15">(Hexadecimal)</span><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><br/></p>
<p>$0000 - $07FF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2048 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Game Ram</p>
<p><br/></p>
<p>($0000 - $00FF) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;256 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Zero Page - Special Zero Page addressing modes give faster memory read/write access</p>
<p>($0100 - $01FF) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;256 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Stack memory</p>
<p>($0200 - $07FF) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1536 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RAM</p>
<p><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><br/></p>
<p>$0800 - $0FFF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2048 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Mirror of $0000-$07FF &nbsp; &nbsp; &nbsp; &nbsp;</p>
<p><br/></p>
<p>($0800 - $08FF) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;256 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Zero Page</p>
<p>($0900 - $09FF) &nbsp; &nbsp; &nbsp; &nbsp;256 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Stack</p>
<p>($0A00 - $0FFF) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1024 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ram</p>
<p><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><br/></p>
<p>$1000 - $17FF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2048 bytes &nbsp; &nbsp; &nbsp; &nbsp;Mirror of $0000-$07FF</p>
<p><br/></p>
<p>($1000 - $10FF) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;256 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Zero Page</p>
<p>$1100 - $11FF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;256 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Stack</p>
<p>$1200 - $17FF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1024 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RAM</p>
<p><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><br/></p>
<p>$1800 - $1FFF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2048 bytes &nbsp; &nbsp; &nbsp; &nbsp;Mirror of $0000-$07FF &nbsp; &nbsp; &nbsp; &nbsp;</p>
<p><br/></p>
<p>($1800 - $18FF) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;256 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Zero Page</p>
<p>($1900 - $19FF) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;256 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Stack</p>
<p>($1A00 - $1FFF) &nbsp; &nbsp; &nbsp; &nbsp;1024 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;RAM</p>
<p><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><br/></p>
<p>$2000 - $2007 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8 bytes &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Input / Output registers</p>
<p>$2008 - $3FFF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8184 bytes &nbsp; &nbsp; &nbsp; &nbsp;Mirror of $2000-$2007 (mulitple times)</p>
<p><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><br/></p>
<p>$4000 - $401F &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;32 bytes &nbsp; &nbsp; &nbsp; &nbsp;Input / Output registers</p>
<p>$4020 - $5FFF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8160 bytes &nbsp; &nbsp; &nbsp; &nbsp;Expansion ROM - Used with Nintendo's MMC5 to expand the capabilities of VRAM.</p>
<p><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><br/></p>
<p>$6000 - $7FFF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8192 bytes &nbsp; &nbsp; &nbsp; &nbsp;SRAM - Save Ram used to save data between game plays.</p>
<p><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><br/></p>
<p>$8000 - $BFFF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;16384 bytes &nbsp; &nbsp; &nbsp; &nbsp;PRG-ROM lower bank - executable code</p>
<p>$C000 - $FFFF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;16384 bytes &nbsp; &nbsp; &nbsp; &nbsp;PRG-ROM upper bank - executable code</p>
<p>$FFFA - $FFFB &nbsp; &nbsp; &nbsp; &nbsp;2 bytes &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Address of Non Maskable Interrupt (NMI) handler routine</p>
<p>$FFFC - $FFFD &nbsp; &nbsp; &nbsp; &nbsp;2 bytes &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Address of Power on reset handler routine</p>
<p>$FFFE - $FFFF &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2 bytes &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Address of Break (BRK instruction) handler routine</p>
<p><span class="rvts15"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts12">2C02 PPU memory map</span></p>
<p><br/></p>
<p>2C02 PPU is a character generator with sprites, designed by Nintendo specifically for the NES.</p>
<p><br/></p>
<p> &nbsp; &nbsp; __________________________________________</p>
<p>0000| Pattern table 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</p>
<p> &nbsp; &nbsp;|__________________________________________|</p>
<p>1000| Pattern table 1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</p>
<p> &nbsp; &nbsp;|__________________________________________| &nbsp; _____ _____</p>
<p>2000| Nametable 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;| &nbsp; &nbsp; | &nbsp; &nbsp; |</p>
<p> &nbsp; &nbsp;|__________________________________________| &nbsp;| &nbsp;0 &nbsp;| &nbsp;1 &nbsp;|</p>
<p>2400| Nametable 1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;|_____|_____|</p>
<p> &nbsp; &nbsp;|__________________________________________| &nbsp;| &nbsp; &nbsp; | &nbsp; &nbsp; |</p>
<p>2800| Nametable 2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;| &nbsp;2 &nbsp;| &nbsp;3 &nbsp;|</p>
<p> &nbsp; &nbsp;|__________________________________________| &nbsp;|_____|_____|</p>
<p>2c00| Nametable 3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</p>
<p> &nbsp; &nbsp;|__________________________________________|</p>
<p>3000| Mirror of $2000-$2eff &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</p>
<p> &nbsp; &nbsp;|__________________________________________|</p>
<p>3f00| Palette &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</p>
<p> &nbsp; &nbsp;|__________________________________________|</p>
<p>3f20| Mirrors of $3f00-$3f1f &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |</p>
<p> &nbsp; &nbsp;|__________________________________________|</p>
<p><br/></p>
<p>The NES PPU has enough RAM for two nametables (0 and 3); it brings some PPU nametable address lines to the cart edge so that the cart can decide whether to map 0 onto 2 and 1 onto 3 (vertical mirroring as in Super Mario Brothers and Contra) or 0 onto 1 and 2 onto 3 (horizontal mirroring as in Kid Icarus and Ikari), all screens to either 0 or 3 (as in many Rare games such as Battletoads and Jeopardy!), or all screens to RAM on the cartridge (as in Gauntlet). Split-screen games that scroll in all four directions (such as Super Mario Brothers 3 and Kirby's Adventure) often use vertical or one-screen mirroring (with a small amount of screen corruption at the sides due to tiles wrapping around the sides) and stick the status bar in some random unused area of the screen. </p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts12">Game RAM Details</span></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Mapping RAM/Finding Ram</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Written by: adelikat</p>
<p><br/></p>
<p>This guide is written specifically for finding useful values for TAS <a class="rvts18" href="MovieRecording.html">movie making</a>. &nbsp;</p>
<p>It does not tell you how to use specific tools to find values. &nbsp;For that refer to <a class="rvts18" href="HexEditor.html">Hex editor</a>, <a class="rvts18" href="CheatSearch.html">Cheat Search</a>, and <span class="rvts18">RAM filter</span>.</p>
<p><br/></p>
<p>Most games use the basic on board ram. &nbsp;The address range of this ram is $0000-$07FF. &nbsp;This translates to 2048 possible ram values.</p>
<p><br/></p>
<p><span class="rvts41">Pages</span></p>
<p><br/></p>
<p>This ram is broken down into 8 pages. &nbsp;A "page" is a block of 256 ram values.</p>
<p><br/></p>
<p>I will refer to these values as such:</p>
<p>Block 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$00xx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;($0000-$00FF)</p>
<p>Block 1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$01xx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;($0100-$01FF)</p>
<p>Block 2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$02xx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;($0200-$02FF)</p>
<p>Block 3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$03xx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;($0300-$03FF)</p>
<p>Block 4 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$04xx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;($0400-$04FF)</p>
<p>Block 5 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$05xx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;($0500-$05FF)</p>
<p>Block 6 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$06xx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;($0600-$06FF)</p>
<p>Block 7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$07xx &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;($0700-$07FF)</p>
<p><br/></p>
<p>Each block will be organized will similar data. &nbsp;For instance, all sprite data will be in the same block. &nbsp;Enemy/Player statistics (energy, coordinates, speed, etc.) will be in another. &nbsp;For instance, if you find the main character's HP and it is located in block 3, you know that the remaining stats for the character are also in that block. &nbsp;This can significantly cut down time when trying to find related values.</p>
<p><br/></p>
<p>There are always the following blocks:</p>
<p><br/></p>
<p><span class="rvts32">Sprite Data</span><span class="rvts32"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts32"> &nbsp; &nbsp; &nbsp; &nbsp;</span>Block 2</p>
<p><br/></p>
<p>I've yet to see map a game that does not use this block solely for sprite data. &nbsp;It will contain the "ID" numbers for all the items currently on the screen. &nbsp;Simply put, this data is precisely the data you see on the screen. &nbsp;For making TAS movies this is not useful data. &nbsp;If you are using cheat search and have narrowed it down your search to a few values, you can immediately discard any $02xx values.</p>
<p><br/></p>
<p>In games with a lot of sprite data, I've seen blocks 1 &amp; 3 also reserved for sprite data.</p>
<p><br/></p>
<p><span class="rvts32">Music &amp; Sound FX</span><span class="rvts32"> &nbsp; &nbsp; &nbsp; &nbsp;</span>Block 1 or 7, generally</p>
<p><br/></p>
<p>This one has more deviation, but almost all games reserve an entire block for memory allocated to the game's Music and Sound FX. &nbsp;Again, for TAS purposes these values are not *useful. By finding even 1 of these values, you can eliminate that block from your search possibilities. &nbsp; Finding which block is reserved for music is often quite simple with the <a class="rvts18" href="HexEditor.html">Hex editor</a>. &nbsp;Watching the ram values with the game playing, you can see which addresses "move to the beat". &nbsp;</p>
<p><br/></p>
<p>*Actually they can come in handy for "dancing to the beat"</p>
<p><br/></p>
<p><span class="rvts32">Player &amp; Enemy Stats</span> &nbsp; &nbsp; &nbsp; &nbsp;Blocks 1,3,4,5 generally (any or all of these)</p>
<p><br/></p>
<p>This is your "sweet spot" for movie making, as often you will be wanting to track the players speed or coordinates, enemy energy, or enemy coordinates.</p>
<p><br/></p>
<p>These values rarely (if at all) reside outside blocks 1, 3, 4, or 5. &nbsp;This knowledge already reduces your search possibilities in half!</p>
<p><br/></p>
<p><span class="rvts41">Rows </span></p>
<p><span class="rvts41"><br/></span></p>
<p>Each block is broken down into 16 "rows" of addresses. &nbsp;For example, in block 3, the first row is $030x ($0300-$030F).</p>
<p><br/></p>
<p>Each row of 16* will contain similar data. &nbsp;For instance all x coordinates will generally be in the same row. &nbsp;So xxx0 might be the main characters x position. &nbsp;xxxx1 would be "enemy 1" (1st enemy loaded onto the screen), and so on.</p>
<p><br/></p>
<p>The y coordinates would be in another row, x subpixel values in yet another row, etc.</p>
<p><br/></p>
<p>*Super Mario Bros. 2 (U) is a rare example that uses rows of 10</p>
<p><br/></p>
<p><span class="rvts41">Columns</span></p>
<p><br/></p>
<p>A column would be all the values of a block that share the same last digit. &nbsp;So a column would be 16 addresses such as $0300, $0310, $0320, etc.</p>
<p><br/></p>
<p>For enemy/player stats, columns usually refer to the same player or enemy.</p>
<p><br/></p>
<p>So for example, if a player's energy was stored in $0300. &nbsp;The remaining row will be other player/enemy's energy. &nbsp;</p>
<p><br/></p>
<p>If the next row ($031x) is x positions. &nbsp;$0310 would be the player's x position. &nbsp;The remaining positions of that row would correspond to the other player/enemy x positions in line with the hp values of the previous row.</p>
<p><br/></p>
<p><span class="rvts41">Example</span></p>
<p><br/></p>
<p>These distinctions are easier to see in a visual example. &nbsp;This is the enemy/player stats as they are mapped in the game <span class="rvts29">Teenage Mutant Ninja Turtles</span>.</p>
<p><br/></p>
<p><span class="rvts32">Block 4</span></p>
<p><span class="rvts81"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts81"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts81"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;P &nbsp;W1 W2 W3 E1 E2 E3 E4 E5 E6 E7 E8 X &nbsp;X &nbsp;X &nbsp;X &nbsp;</span></p>
<p><span class="rvts28">Sprite ID: &nbsp; &nbsp; &nbsp; &nbsp;040x: 09 00 00 00 00 9E 9E 9E 9E 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">ID counter: &nbsp; &nbsp; &nbsp; 041x: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">Timer/sp change: &nbsp;042x: 02 00 00 00 00 03 03 03 03 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">hit animation: &nbsp; &nbsp;043x: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">characteristics: &nbsp;044x: 00 00 00 00 00 8D 8D 8D 8D 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">characteristics: &nbsp;045x: C2 00 00 00 00 C2 C2 C3 C3 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">Y position: &nbsp; &nbsp; &nbsp; 046x: 4C 00 00 00 00 B4 B4 64 B4 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">Y subpixel: &nbsp; &nbsp; &nbsp; 047x: 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">X position: &nbsp; &nbsp; &nbsp; 048x: 50 00 00 00 00 79 B9 CC CC 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">X subpixel: &nbsp; &nbsp; &nbsp; 049x: 80 00 00 00 00 C0 C0 C0 00 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">Not used: &nbsp; &nbsp; &nbsp; &nbsp; 04ax: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">Y pix speed: &nbsp; &nbsp; &nbsp;04bx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">Y subpix speed: &nbsp; 04cx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">Not used: &nbsp; &nbsp; &nbsp; &nbsp; 04dx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">X pix speed: &nbsp; &nbsp; &nbsp;04ex: 00 00 00 00 00 01 01 FE FE 00 00 00 00 00 00 00</span></p>
<p><span class="rvts28">X subpix speed: &nbsp; 04fx: 00 00 00 00 00 60 60 A0 A0 00 00 00 00 00 00 00</span></p>
<p><br/></p>
<p>P = current turtle (player)</p>
<p>W = weapon (up to 3 on the screen at one time)</p>
<p>E = enemy (up to 8 on the screen at one time)</p>
<p>X = no use</p>
<p><br/></p>
<p>E1 = "Enemy slot 1" which will be the first enemy on the screen loaded into memory. &nbsp;The 2nd will be placed in "Enemy slot 2". &nbsp;When enemy 1 is removed from memory (killed or goes off screen), the next enemy will be loaded into that slot. &nbsp;Enemy's always take the lowest available slot when loaded. &nbsp;Note: usually enemy slots are in reverse order. &nbsp;So the first addresses is usually the last enemy slot loaded into memory. &nbsp;TMNT is an exception.</p>
<p><br/></p>
<p>All object (player, weapon, enemy) characteristics reside in block 4.</p>
<p>Each row is a different characteristic of each object on the screen (040x refers to a sprite ID of an object)</p>
<p>Each column corresponds to a specific object on the screen. &nbsp;(All 04x0 's refer to the player).</p>
<p><br/></p>
<p>See also, <a class="rvts18" href="MemoryWatch.html">Memory Watch</a>, <a class="rvts18" href="HexEditor.html">Hex Editor</a>,<a class="rvts18" href="CheatSearch.html"> Cheat Search</a>, <span class="rvts18">Ram Filter</span>, <a class="rvts18" href="MovieRecording.html">Movie Making</a>, <a class="rvts18" href="ToolAssistedSpeedruns.html">Tool Assisted Speedruns</a></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free CHM Help documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="NESRAMMappingFindingValues"
data-hnd-context="36"
data-hnd-title="NES RAM (Mapping/Finding Values)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="FAQGuides.html">FAQ / Guides</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="FAQGuides.html" title="FAQ / Guides" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="ROMHacking.html" title="ROM Hacking" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Technicalinformation.html" title="Technical Information" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>NES RAM (Mapping/Finding Values)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">NES Mapping</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This guide gives a map of the addresses in the NES cpu and explains each portion in detail. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">It also provides information for the basic layout of ram values in typical NES games. &nbsp;This info can be used to quickly map and find useful values in the game's ram.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Contents</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Memory Map</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Gives a diagram of the 2A03 CPU memory map .</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">2C02 PPU memory map</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Gives more detailed info about each section of the Memory map diagram</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Game Ram Details</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">On board RAM Map ($000-$07FF) Map (gives specific info on the how NES games typically layout their ram values)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Online Resources</span></p>
<p class="rvps2"><a class="rvts23" href="http://en.wikibooks.org/wiki/NES_Programming">NES Programming - Wikipedia</a></p>
<p class="rvps2"><a class="rvts23" href="http://everything2.com/e2node/NES%20memory%20map">NES Memory Map</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17"><br/></span></p>
<p class="rvps2"><span class="rvts17">Memory Map </span><span class="rvts15">(NES RAM/ROM)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">2A03 CPU memory map</span></p>
<p class="rvps2"><span class="rvts6">2A03 CPU is a 6502-compatible CPU without the decimal mode (CLD and SED do nothing). It has an on-die sound generator, very limited DMA capability, and an input device controller that can be accessed through the 2A03 registers.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p class="rvps2"><span class="rvts52">6502 CPU Memory Map &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p class="rvps2"><span class="rvts6">Address Range&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Size in bytes</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Notes (Page size = 256bytes)</span></p>
<p class="rvps2"><span class="rvts20">(Hexadecimal)</span><span class="rvts20"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts20"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts20"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts20"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts20"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">$0000 - $07FF</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">2048</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Game Ram</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">($0000 - $00FF)</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">256&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Zero Page - Special Zero Page addressing modes give faster memory read/write access</span></p>
<p class="rvps2"><span class="rvts6">($0100 - $01FF)</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">256&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Stack memory</span></p>
<p class="rvps2"><span class="rvts6">($0200 - $07FF)</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">1536&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">RAM</span></p>
<p class="rvps2"><span class="rvts20">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">$0800 - $0FFF&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">2048&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Mirror of $0000-$07FF&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">($0800 - $08FF)</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">256&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> Zero Page</span></p>
<p class="rvps2"><span class="rvts6">($0900 - $09FF)&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">256&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Stack</span></p>
<p class="rvps2"><span class="rvts6">($0A00 - $0FFF)</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">1024</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Ram</span></p>
<p class="rvps2"><span class="rvts20">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">$1000 - $17FF</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">2048 bytes</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Mirror of $0000-$07FF</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">($1000 - $10FF)</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">256</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Zero Page</span></p>
<p class="rvps2"><span class="rvts6">$1100 - $11FF</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">256</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Stack</span></p>
<p class="rvps2"><span class="rvts6">$1200 - $17FF&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">1024</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">RAM</span></p>
<p class="rvps2"><span class="rvts20">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">$1800 - $1FFF&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">2048 bytes&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Mirror of $0000-$07FF&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">($1800 - $18FF)</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">256</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Zero Page</span></p>
<p class="rvps2"><span class="rvts6">($1900 - $19FF)</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">256</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Stack</span></p>
<p class="rvps2"><span class="rvts6">($1A00 - $1FFF)&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">1024</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">RAM</span></p>
<p class="rvps2"><span class="rvts20">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">$2000 - $2007&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">8 bytes&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Input / Output registers</span></p>
<p class="rvps2"><span class="rvts6">$2008 - $3FFF&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">8184 bytes&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Mirror of $2000-$2007 (mulitple times)</span></p>
<p class="rvps2"><span class="rvts20">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">$4000 - $401F&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">32 bytes&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Input / Output registers</span></p>
<p class="rvps2"><span class="rvts6">$4020 - $5FFF&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">8160 bytes&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Expansion ROM - Used with Nintendo's MMC5 to expand the capabilities of VRAM.</span></p>
<p class="rvps2"><span class="rvts20">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">$6000 - $7FFF&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">8192 bytes&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">SRAM - Save Ram used to save data between game plays.</span></p>
<p class="rvps2"><span class="rvts20">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">$8000 - $BFFF&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">16384 bytes&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PRG-ROM lower bank - executable code</span></p>
<p class="rvps2"><span class="rvts6">$C000 - $FFFF&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">16384 bytes&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PRG-ROM upper bank - executable code</span></p>
<p class="rvps2"><span class="rvts6">$FFFA - $FFFB&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">2 bytes&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Address of Non Maskable Interrupt (NMI) handler routine</span></p>
<p class="rvps2"><span class="rvts6">$FFFC - $FFFD&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">2 bytes&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Address of Power on reset handler routine</span></p>
<p class="rvps2"><span class="rvts6">$FFFE - $FFFF&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">2 bytes&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Address of Break (BRK instruction) handler routine</span></p>
<p class="rvps2"><span class="rvts20">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">2C02 PPU memory map</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">2C02 PPU is a character generator with sprites, designed by Nintendo specifically for the NES.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp;__________________________________________</span></p>
<p class="rvps2"><span class="rvts6">0000| Pattern table 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; |__________________________________________|</span></p>
<p class="rvps2"><span class="rvts6">1000| Pattern table 1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; |__________________________________________| &nbsp; _____ _____</span></p>
<p class="rvps2"><span class="rvts6">2000| Nametable 0 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;| &nbsp; &nbsp; | &nbsp; &nbsp; |</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; |__________________________________________| &nbsp;| &nbsp;0 &nbsp;| &nbsp;1 &nbsp;|</span></p>
<p class="rvps2"><span class="rvts6">2400| Nametable 1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;|_____|_____|</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; |__________________________________________| &nbsp;| &nbsp; &nbsp; | &nbsp; &nbsp; |</span></p>
<p class="rvps2"><span class="rvts6">2800| Nametable 2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp;| &nbsp;2 &nbsp;| &nbsp;3 &nbsp;|</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; |__________________________________________| &nbsp;|_____|_____|</span></p>
<p class="rvps2"><span class="rvts6">2c00| Nametable 3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; |__________________________________________|</span></p>
<p class="rvps2"><span class="rvts6">3000| Mirror of $2000-$2eff &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; |__________________________________________|</span></p>
<p class="rvps2"><span class="rvts6">3f00| Palette &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; |__________________________________________|</span></p>
<p class="rvps2"><span class="rvts6">3f20| Mirrors of $3f00-$3f1f &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; |</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; |__________________________________________|</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The NES PPU has enough RAM for two nametables (0 and 3); it brings some PPU nametable address lines to the cart edge so that the cart can decide whether to map 0 onto 2 and 1 onto 3 (vertical mirroring as in Super Mario Brothers and Contra) or 0 onto 1 and 2 onto 3 (horizontal mirroring as in Kid Icarus and Ikari), all screens to either 0 or 3 (as in many Rare games such as Battletoads and Jeopardy!), or all screens to RAM on the cartridge (as in Gauntlet). Split-screen games that scroll in all four directions (such as Super Mario Brothers 3 and Kirby's Adventure) often use vertical or one-screen mirroring (with a small amount of screen corruption at the sides due to tiles wrapping around the sides) and stick the status bar in some random unused area of the screen.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Game RAM Details</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Mapping RAM/Finding Ram</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Written by: adelikat</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This guide is written specifically for finding useful values for TAS </span><a class="rvts23" href="MovieRecording.html">movie making</a><span class="rvts6">. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6">It does not tell you how to use specific tools to find values. &nbsp;For that refer to </span><a class="rvts23" href="HexEditor.html">Hex editor</a><span class="rvts6">, </span><a class="rvts23" href="CheatSearch.html">Cheat Search</a><span class="rvts6">, and </span><span class="rvts23">RAM filter</span><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Most games use the basic on board ram. &nbsp;The address range of this ram is $0000-$07FF. &nbsp;This translates to 2048 possible ram values.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Pages</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This ram is broken down into 8 pages. &nbsp;A "page" is a block of 256 ram values.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">I will refer to these values as such:</span></p>
<p class="rvps2"><span class="rvts6">Block 0</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">$00xx</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">($0000-$00FF)</span></p>
<p class="rvps2"><span class="rvts6">Block 1</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">$01xx</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">($0100-$01FF)</span></p>
<p class="rvps2"><span class="rvts6">Block 2</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">$02xx</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">($0200-$02FF)</span></p>
<p class="rvps2"><span class="rvts6">Block 3</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">$03xx</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">($0300-$03FF)</span></p>
<p class="rvps2"><span class="rvts6">Block 4</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">$04xx</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">($0400-$04FF)</span></p>
<p class="rvps2"><span class="rvts6">Block 5</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">$05xx</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">($0500-$05FF)</span></p>
<p class="rvps2"><span class="rvts6">Block 6</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">$06xx</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">($0600-$06FF)</span></p>
<p class="rvps2"><span class="rvts6">Block 7</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">$07xx</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">($0700-$07FF)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Each block will be organized will similar data. &nbsp;For instance, all sprite data will be in the same block. &nbsp;Enemy/Player statistics (energy, coordinates, speed, etc.) will be in another. &nbsp;For instance, if you find the main character's HP and it is located in block 3, you know that the remaining stats for the character are also in that block. &nbsp;This can significantly cut down time when trying to find related values.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">There are always the following blocks:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts45">Sprite Data</span><span class="rvts45"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts45"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Block 2</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">I've yet to see map a game that does not use this block solely for sprite data. &nbsp;It will contain the "ID" numbers for all the items currently on the screen. &nbsp;Simply put, this data is precisely the data you see on the screen. &nbsp;For making TAS movies this is not useful data. &nbsp;If you are using cheat search and have narrowed it down your search to a few values, you can immediately discard any $02xx values.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In games with a lot of sprite data, I've seen blocks 1 &amp; 3 also reserved for sprite data.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts45">Music &amp; Sound FX</span><span class="rvts45"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Block 1 or 7, generally</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This one has more deviation, but almost all games reserve an entire block for memory allocated to the game's Music and Sound FX. &nbsp;Again, for TAS purposes these values are not *useful. By finding even 1 of these values, you can eliminate that block from your search possibilities. &nbsp; Finding which block is reserved for music is often quite simple with the </span><a class="rvts23" href="HexEditor.html">Hex editor</a><span class="rvts6">. &nbsp;Watching the ram values with the game playing, you can see which addresses "move to the beat". &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Actually they can come in handy for "dancing to the beat"</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts45">Player &amp; Enemy Stats</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Blocks 1,3,4,5 generally (any or all of these)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This is your "sweet spot" for movie making, as often you will be wanting to track the players speed or coordinates, enemy energy, or enemy coordinates.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">These values rarely (if at all) reside outside blocks 1, 3, 4, or 5. &nbsp;This knowledge already reduces your search possibilities in half!</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Rows&nbsp;</span></p>
<p class="rvps2"><span class="rvts60"><br/></span></p>
<p class="rvps2"><span class="rvts6">Each block is broken down into 16 "rows" of addresses. &nbsp;For example, in block 3, the first row is $030x ($0300-$030F).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Each row of 16* will contain similar data. &nbsp;For instance all x coordinates will generally be in the same row. &nbsp;So xxx0 might be the main characters x position. &nbsp;xxxx1 would be "enemy 1" (1st enemy loaded onto the screen), and so on.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The y coordinates would be in another row, x subpixel values in yet another row, etc.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Super Mario Bros. 2 (U) is a rare example that uses rows of 10</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Columns</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A column would be all the values of a block that share the same last digit. &nbsp;So a column would be 16 addresses such as $0300, $0310, $0320, etc.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For enemy/player stats, columns usually refer to the same player or enemy.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">So for example, if a player's energy was stored in $0300. &nbsp;The remaining row will be other player/enemy's energy. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If the next row ($031x) is x positions. &nbsp;$0310 would be the player's x position. &nbsp;The remaining positions of that row would correspond to the other player/enemy x positions in line with the hp values of the previous row.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Example</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">These distinctions are easier to see in a visual example. &nbsp;This is the enemy/player stats as they are mapped in the game </span><span class="rvts40">Teenage Mutant Ninja Turtles</span><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts45">Block 4</span></p>
<p class="rvps2"><span class="rvts110"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts110"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts110"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;P &nbsp;W1 W2 W3 E1 E2 E3 E4 E5 E6 E7 E8 X &nbsp;X &nbsp;X &nbsp;X &nbsp;</span></p>
<p class="rvps2"><span class="rvts39">Sprite ID: &nbsp; &nbsp; &nbsp; &nbsp;040x: 09 00 00 00 00 9E 9E 9E 9E 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">ID counter: &nbsp; &nbsp; &nbsp; 041x: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">Timer/sp change: &nbsp;042x: 02 00 00 00 00 03 03 03 03 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">hit animation: &nbsp; &nbsp;043x: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">characteristics: &nbsp;044x: 00 00 00 00 00 8D 8D 8D 8D 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">characteristics: &nbsp;045x: C2 00 00 00 00 C2 C2 C3 C3 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">Y position: &nbsp; &nbsp; &nbsp; 046x: 4C 00 00 00 00 B4 B4 64 B4 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">Y subpixel: &nbsp; &nbsp; &nbsp; 047x: 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">X position: &nbsp; &nbsp; &nbsp; 048x: 50 00 00 00 00 79 B9 CC CC 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">X subpixel: &nbsp; &nbsp; &nbsp; 049x: 80 00 00 00 00 C0 C0 C0 00 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">Not used: &nbsp; &nbsp; &nbsp; &nbsp; 04ax: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">Y pix speed: &nbsp; &nbsp; &nbsp;04bx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">Y subpix speed: &nbsp; 04cx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">Not used: &nbsp; &nbsp; &nbsp; &nbsp; 04dx: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">X pix speed: &nbsp; &nbsp; &nbsp;04ex: 00 00 00 00 00 01 01 FE FE 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts39">X subpix speed: &nbsp; 04fx: 00 00 00 00 00 60 60 A0 A0 00 00 00 00 00 00 00</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">P = current turtle (player)</span></p>
<p class="rvps2"><span class="rvts6">W = weapon (up to 3 on the screen at one time)</span></p>
<p class="rvps2"><span class="rvts6">E = enemy (up to 8 on the screen at one time)</span></p>
<p class="rvps2"><span class="rvts6">X = no use</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">E1 = "Enemy slot 1" which will be the first enemy on the screen loaded into memory. &nbsp;The 2nd will be placed in "Enemy slot 2". &nbsp;When enemy 1 is removed from memory (killed or goes off screen), the next enemy will be loaded into that slot. &nbsp;Enemy's always take the lowest available slot when loaded. &nbsp;Note: usually enemy slots are in reverse order. &nbsp;So the first addresses is usually the last enemy slot loaded into memory. &nbsp;TMNT is an exception.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">All object (player, weapon, enemy) characteristics reside in block 4.</span></p>
<p class="rvps2"><span class="rvts6">Each row is a different characteristic of each object on the screen (040x refers to a sprite ID of an object)</span></p>
<p class="rvps2"><span class="rvts6">Each column corresponds to a specific object on the screen. &nbsp;(All 04x0 's refer to the player).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">See also, </span><a class="rvts23" href="MemoryWatch.html">Memory Watch</a><span class="rvts6">, </span><a class="rvts23" href="HexEditor.html">Hex Editor</a><span class="rvts6">,</span><a class="rvts23" href="CheatSearch.html"> Cheat Search</a><span class="rvts6">, </span><span class="rvts23">Ram Filter</span><span class="rvts6">, </span><a class="rvts23" href="MovieRecording.html">Movie Making</a><span class="rvts6">, </span><a class="rvts23" href="ToolAssistedSpeedruns.html">Tool Assisted Speedruns</a></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com">Easy CHM and documentation editor</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">&times;</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>

View File

@ -1,126 +1,317 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>NES Scrolling 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("NESScrolling1");
}
});
</script>
<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>NES Scrolling 1</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="NES Scrolling 1">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="NES Scrolling 1" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>NES Scrolling 1</h1>
<div id="topic_breadcrumb">
<a href="Technicalinformation.html">Technical Information</a> &rsaquo;&rsaquo; <a href="NESProcessor.html">NES Processing</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="NESProcessor.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="PPU.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="NESScrolling2.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p>Subject: [nesdev] the skinny on nes scrolling</p>
<p>Date: Tue, 13 Apr 1999 16:42:00 -0600</p>
<p>From: loopy &lt;zxcvzxcv@netzero.net&gt;</p>
<p>Reply-To: nesdev@onelist.com</p>
<p>To: nesdev@onelist.com</p>
<p><br/></p>
<p>From: loopy &lt;zxcvzxcv@netzero.net&gt;</p>
<p><br/></p>
<p>---------</p>
<p>the current information on background scrolling is sufficient for most games;</p>
<p>however, there are a few that require a more complete understanding.</p>
<p><br/></p>
<p>here are the related registers:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;(v) vram address, a.k.a. 2006 which we all know and love. &nbsp;(16 bits)</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;(t) another temp vram address (16 bits)</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (you can really call them 15 bits, the last isn't used)</p>
<p> &nbsp; &nbsp; &nbsp; (x) tile X offset (3 bits)</p>
<p><br/></p>
<p>the ppu uses the vram address for both reading/writing to vram thru 2007,</p>
<p>and for fetching nametable data to draw the background. &nbsp;as it's drawing the</p>
<p>background, it updates the address to point to the nametable data currently</p>
<p>being drawn. &nbsp;bits 0-11 hold the nametable address (-$2000). &nbsp;bits 12-14 are</p>
<p>the tile Y offset.</p>
<p><br/></p>
<p>---------</p>
<p>stuff that affects register contents:</p>
<p>(sorry for the shorthand logic but i think it's easier to see this way)</p>
<p><br/></p>
<p>2000 write:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;t:0000110000000000=d:00000011</p>
<p>2005 first write:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;t:0000000000011111=d:11111000</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;x=d:00000111</p>
<p>2005 second write:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;t:0000001111100000=d:11111000</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;t:0111000000000000=d:00000111</p>
<p>2006 first write:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;t:0011111100000000=d:00111111</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;t:1100000000000000=0</p>
<p>2006 second write:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;t:0000000011111111=d:11111111</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;v=t</p>
<p>scanline start (if background and sprites are enabled):</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;v:0000010000011111=t:0000010000011111</p>
<p>frame start (line 0) (if background and sprites are enabled):</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;v=t</p>
<p><br/></p>
<p>note! &nbsp;2005 and 2006 share the toggle that selects between first/second</p>
<p>writes. &nbsp;reading 2002 will clear it.</p>
<p><br/></p>
<p>note! &nbsp;all of this info agrees with the tests i've run on a real nes. &nbsp;BUT</p>
<p>if there's something you don't agree with, please let me know so i can verify</p>
<p>it.</p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free EPub and documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="NESScrolling1"
data-hnd-context="34"
data-hnd-title="NES Scrolling 1"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Technicalinformation.html">Technical Information</a></li><li><a href="NESProcessor.html">NES Processing</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="NESProcessor.html" title="NES Processing" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="PPU.html" title="PPU - 2C02" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="NESScrolling2.html" title="NES Scrolling 2" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>NES Scrolling 1</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts6">Subject: [nesdev] the skinny on nes scrolling</span></p>
<p class="rvps2"><span class="rvts6">Date: Tue, 13 Apr 1999 16:42:00 -0600</span></p>
<p class="rvps2"><span class="rvts6">From: loopy &lt;zxcvzxcv@netzero.net&gt;</span></p>
<p class="rvps2"><span class="rvts6">Reply-To: nesdev@onelist.com</span></p>
<p class="rvps2"><span class="rvts6">To: nesdev@onelist.com</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">From: loopy &lt;zxcvzxcv@netzero.net&gt;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">---------</span></p>
<p class="rvps2"><span class="rvts6">the current information on background scrolling is sufficient for most games;</span></p>
<p class="rvps2"><span class="rvts6">however, there are a few that require a more complete understanding.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">here are the related registers:</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; (v) vram address, a.k.a. 2006 which we all know and love. &nbsp;(16 bits)</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; (t) another temp vram address (16 bits)</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(you can really call them 15 bits, the last isn't used)</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp;(x) tile X offset (3 bits)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">the ppu uses the vram address for both reading/writing to vram thru 2007,</span></p>
<p class="rvps2"><span class="rvts6">and for fetching nametable data to draw the background. &nbsp;as it's drawing the</span></p>
<p class="rvps2"><span class="rvts6">background, it updates the address to point to the nametable data currently</span></p>
<p class="rvps2"><span class="rvts6">being drawn. &nbsp;bits 0-11 hold the nametable address (-$2000). &nbsp;bits 12-14 are</span></p>
<p class="rvps2"><span class="rvts6">the tile Y offset.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">---------</span></p>
<p class="rvps2"><span class="rvts6">stuff that affects register contents:</span></p>
<p class="rvps2"><span class="rvts6">(sorry for the shorthand logic but i think it's easier to see this way)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">2000 write:</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; t:0000110000000000=d:00000011</span></p>
<p class="rvps2"><span class="rvts6">2005 first write:</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; t:0000000000011111=d:11111000</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; x=d:00000111</span></p>
<p class="rvps2"><span class="rvts6">2005 second write:</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; t:0000001111100000=d:11111000</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; t:0111000000000000=d:00000111</span></p>
<p class="rvps2"><span class="rvts6">2006 first write:</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; t:0011111100000000=d:00111111</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; t:1100000000000000=0</span></p>
<p class="rvps2"><span class="rvts6">2006 second write:</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; t:0000000011111111=d:11111111</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; v=t</span></p>
<p class="rvps2"><span class="rvts6">scanline start (if background and sprites are enabled):</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; v:0000010000011111=t:0000010000011111</span></p>
<p class="rvps2"><span class="rvts6">frame start (line 0) (if background and sprites are enabled):</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; v=t</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">note! &nbsp;2005 and 2006 share the toggle that selects between first/second</span></p>
<p class="rvps2"><span class="rvts6">writes. &nbsp;reading 2002 will clear it.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">note! &nbsp;all of this info agrees with the tests i've run on a real nes. &nbsp;BUT</span></p>
<p class="rvps2"><span class="rvts6">if there's something you don't agree with, please let me know so i can verify</span></p>
<p class="rvps2"><span class="rvts6">it.</span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour/create-help-files-for-the-qt-help-framework">Qt Help documentation made easy</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">&times;</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>

View File

@ -1,96 +1,287 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>NES Scrolling 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("NESScrolling2");
}
});
</script>
<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>NES Scrolling 2</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="NES Scrolling 2">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="NES Scrolling 2" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>NES Scrolling 2</h1>
<div id="topic_breadcrumb">
<a href="Technicalinformation.html">Technical Information</a> &rsaquo;&rsaquo; <a href="NESProcessor.html">NES Processing</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="NESProcessor.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="NESScrolling1.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="NLFilesFormat.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p>nes scrolling</p>
<p><br/></p>
<p>Date: Tue, 13 Apr 1999 17:48:54 -0600</p>
<p>From: loopy &lt;zxcvzxcv@netzero.net&gt;</p>
<p>Reply-To: nesdev@onelist.com</p>
<p>To: nesdev@onelist.com</p>
<p><br/></p>
<p>From: loopy &lt;zxcvzxcv@netzero.net&gt;</p>
<p><br/></p>
<p>(more notes on ppu logic)</p>
<p><br/></p>
<p>you can think of bits 0,1,2,3,4 of the vram address as the "x scroll"(*8)</p>
<p>that the ppu increments as it draws. &nbsp;as it wraps from 31 to 0, bit 10 is</p>
<p>switched. &nbsp;you should see how this causes horizontal wrapping between name</p>
<p>tables (0,1) and (2,3).</p>
<p><br/></p>
<p>you can think of bits 5,6,7,8,9 as the "y scroll"(*8). &nbsp;this functions</p>
<p>slightly different from the X. &nbsp;it wraps to 0 and bit 11 is switched when</p>
<p>it's incremented from _29_ instead of 31. &nbsp;there are some odd side effects</p>
<p>from this.. if you manually set the value above 29 (from either 2005 or</p>
<p>2006), the wrapping from 29 obviously won't happen, and attrib data will be</p>
<p>used as name table data. &nbsp;the "y scroll" still wraps to 0 from 31, but</p>
<p>without switching bit 11. &nbsp;this explains why writing 240+ to 'Y' in 2005</p>
<p>appeared as a negative scroll value.</p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/help-authoring-tool">Free help authoring tool</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="NESScrolling2"
data-hnd-context="35"
data-hnd-title="NES Scrolling 2"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Technicalinformation.html">Technical Information</a></li><li><a href="NESProcessor.html">NES Processing</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="NESProcessor.html" title="NES Processing" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="NESScrolling1.html" title="NES Scrolling 1" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="NLFilesFormat.html" title=".nl files format" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>NES Scrolling 2</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts6">nes scrolling</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Date: Tue, 13 Apr 1999 17:48:54 -0600</span></p>
<p class="rvps2"><span class="rvts6">From: loopy &lt;zxcvzxcv@netzero.net&gt;</span></p>
<p class="rvps2"><span class="rvts6">Reply-To: nesdev@onelist.com</span></p>
<p class="rvps2"><span class="rvts6">To: nesdev@onelist.com</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">From: loopy &lt;zxcvzxcv@netzero.net&gt;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">(more notes on ppu logic)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">you can think of bits 0,1,2,3,4 of the vram address as the "x scroll"(*8)</span></p>
<p class="rvps2"><span class="rvts6">that the ppu increments as it draws. &nbsp;as it wraps from 31 to 0, bit 10 is</span></p>
<p class="rvps2"><span class="rvts6">switched. &nbsp;you should see how this causes horizontal wrapping between name</span></p>
<p class="rvps2"><span class="rvts6">tables (0,1) and (2,3).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">you can think of bits 5,6,7,8,9 as the "y scroll"(*8). &nbsp;this functions</span></p>
<p class="rvps2"><span class="rvts6">slightly different from the X. &nbsp;it wraps to 0 and bit 11 is switched when</span></p>
<p class="rvps2"><span class="rvts6">it's incremented from _29_ instead of 31. &nbsp;there are some odd side effects</span></p>
<p class="rvps2"><span class="rvts6">from this.. if you manually set the value above 29 (from either 2005 or</span></p>
<p class="rvps2"><span class="rvts6">2006), the wrapping from 29 obviously won't happen, and attrib data will be</span></p>
<p class="rvps2"><span class="rvts6">used as name table data. &nbsp;the "y scroll" still wraps to 0 from 31, but</span></p>
<p class="rvps2"><span class="rvts6">without switching bit 11. &nbsp;this explains why writing 240+ to 'Y' in 2005</span></p>
<p class="rvps2"><span class="rvts6">appeared as a negative scroll value.</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.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Free Kindle producer</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">&times;</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>

File diff suppressed because it is too large Load Diff

View File

@ -1,117 +1,310 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>.nl files format</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("NLFilesFormat");
}
});
</script>
<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>.nl files format</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content=".nl files format">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content=".nl files format" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>.nl files format</h1>
<div id="topic_breadcrumb">
<a href="Technicalinformation.html">Technical Information</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Technicalinformation.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="NESScrolling2.html"><img src="img/arrow_left.png" alt="Previous"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts12">.nl files format</span></p>
<p><br/></p>
<p><br/></p>
<p>FCEUX implements Symbolic Debugger which uses "NameList" files to store the data about labels and comments. The needed files are created automatically when user right-clicks an address in Disassembly and enters a symbolic name or a comment for it. The files are stored in the same folder as the debugged ROM, and they inherit the name of the ROM.</p>
<p>These files are simple ASCII text files. You can edit them in any text editor like Notepad.</p>
<p><br/></p>
<p>When reverse-engineering a game for which you don't have a source, you can reconstruct the logic incrementally, by adding labels/comments while debugging (right-clicking addresses).</p>
<p><br/></p>
<p>But if you want to debug your own homebrew game, you can setup your workflow to automatically export all names and comments when building the game using your favourite assembler (e.g. ca65 or ASM6). This way you can use FCEUX as a Source-Level Debugger.</p>
<p><br/></p>
<p><span class="rvts15">Example:</span> for the ROM called "NES Test Cart (PD).nes" the NL files will be named "NES Test Cart (PD).nes.0.nl", "NES Test Cart (PD).nes.ram.nl", etc. </p>
<p><br/></p>
<p><span class="rvts15">Example of contents of a NL file:</span></p>
<p><br/></p>
<p>$C000#NewName1#Comment1</p>
<p>$C002##Comment2</p>
<p>$C004#NewName2#</p>
<p>$C006#NewName3#MultilineComment-Part1</p>
<p>\MultilineComment-Part2</p>
<p>\MultilineComment-Part3</p>
<p>$C008/10#NewName4#</p>
<p><br/></p>
<p>Every line contains two # characters which separate the three parts of one line:</p>
<p>* The first part (starting with a $ character) is the address to be renamed. Optionally you can add a "/number" part which marks the offsets as a beginning of an array of the given size (the size must be specified in hex form).</p>
<p>* The second (optional) part is the new name of that address. Whenever the line of that address is shown in the disassembly window, an extra line saying "NewName1: " is shown above it. &nbsp;Instructions referencing this address, for example JSR $C000 are also changed to JSR NewName1 (in that example).</p>
<p>* The third (optional) part is the comment that's also added above the disassembly line the comment refers to. It works exactly like the additional name line, only the prefix of that line is different. Comment lines start with "; ". &nbsp;Multi-lines comments are possible. Lines in an NL file starting with the \ character are just appended to the comment of the preceding line. Multi-line comments are also shown in multiple lines in the disassembly window.</p>
<p><br/></p>
<p>In the example above, the first line contains all three parts. Using this NL file, all references to the address $C000 are replaced with NewName1, and whenever line $C000 is shown in the disassembly window (or Trace Logger window) an additional comment is also visible right above the actual disassembled line. The second example line defines only a comment while the third line defines only a name. Following that, there's a multi-line comment definition for address $C006. The last line defines an array called NewName4 of size 0x10 (= 16) bytes starting at offset $C008. FCEUX will regard the line like there are 16 lines describing 16 adjacent addresses with names like NewName4[0], NewName4[1], ... NewName4[F].</p>
<p><br/></p>
<p>NL files must follow a specific naming convention to account for bank swapping. Each bank needs its own NL file with a hexadecimal number of the bank.</p>
<p>For instance, an NES file named "mygame.nes" that has 4 banks (i.e. ROM size = 64k) would have these NL files:</p>
<p><br/></p>
<p>mygame.nes.ram.nl</p>
<p>mygame.nes.0.nl</p>
<p>mygame.nes.1.nl</p>
<p>mygame.nes.2.nl</p>
<p>mygame.nes.3.nl</p>
<p><br/></p>
<p>All NL files must be in the same directory as the ROM file itself.</p>
<p><br/></p>
<p>RAM can also be given its own NL file. In the *.ram.nl file you can name and comment RAM addresses (system bus range of 0x0000 - 0x7FFF) instead of ROM addresses. In this case, you might use a line such as:</p>
<p><br/></p>
<p>$00A5#Mic Test OK#00=Not Passed, 01=Passed</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Full-featured Kindle eBooks generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="NLFilesFormat"
data-hnd-context="83"
data-hnd-title=".nl files format"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Technicalinformation.html">Technical Information</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Technicalinformation.html" title="Technical Information" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="NESScrolling2.html" title="NES Scrolling 2" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>.nl files format</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts17">.nl files format</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX implements Symbolic Debugger which uses "NameList" files to store the data about labels and comments. The needed files are created automatically when user right-clicks an address in Disassembly and enters a symbolic name or a comment for it. The files are stored in the same folder as the debugged ROM, and they inherit the name of the ROM.</span></p>
<p class="rvps2"><span class="rvts6">These files are simple ASCII text files. You can edit them in any text editor like Notepad.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When reverse-engineering a game for which you don't have a source, you can reconstruct the logic incrementally, by adding labels/comments while debugging (right-clicking addresses).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">But if you want to debug your own homebrew game, you can setup your workflow to automatically export all names and comments when building the game using your favourite assembler (e.g. ca65 or ASM6). This way you can use FCEUX as a Source-Level Debugger.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts20">Example:</span><span class="rvts6"> for the ROM called "NES Test Cart (PD).nes" the NL files will be named "NES Test Cart (PD).nes.0.nl", "NES Test Cart (PD).nes.ram.nl", etc.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts20">Example of contents of a NL file:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">$C000#NewName1#Comment1</span></p>
<p class="rvps2"><span class="rvts6">$C002##Comment2</span></p>
<p class="rvps2"><span class="rvts6">$C004#NewName2#</span></p>
<p class="rvps2"><span class="rvts6">$C006#NewName3#MultilineComment-Part1</span></p>
<p class="rvps2"><span class="rvts6">\MultilineComment-Part2</span></p>
<p class="rvps2"><span class="rvts6">\MultilineComment-Part3</span></p>
<p class="rvps2"><span class="rvts6">$C008/10#NewName4#</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Every line contains two # characters which separate the three parts of one line:</span></p>
<p class="rvps2"><span class="rvts6">* The first part (starting with a $ character) is the address to be renamed. Optionally you can add a "/number" part which marks the offsets as a beginning of an array of the given size (the size must be specified in hex form).</span></p>
<p class="rvps2"><span class="rvts6">* The second (optional) part is the new name of that address. Whenever the line of that address is shown in the disassembly window, an extra line saying "NewName1: " is shown above it. &nbsp;Instructions referencing this address, for example JSR $C000 are also changed to JSR NewName1 (in that example).</span></p>
<p class="rvps2"><span class="rvts6">* The third (optional) part is the comment that's also added above the disassembly line the comment refers to. It works exactly like the additional name line, only the prefix of that line is different. Comment lines start with "; ". &nbsp;Multi-lines comments are possible. Lines in an NL file starting with the \ character are just appended to the comment of the preceding line. Multi-line comments are also shown in multiple lines in the disassembly window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In the example above, the first line contains all three parts. Using this NL file, all references to the address $C000 are replaced with NewName1, and whenever line $C000 is shown in the disassembly window (or Trace Logger window) an additional comment is also visible right above the actual disassembled line. The second example line defines only a comment while the third line defines only a name. Following that, there's a multi-line comment definition for address $C006. The last line defines an array called NewName4 of size 0x10 (= 16) bytes starting at offset $C008. FCEUX will regard the line like there are 16 lines describing 16 adjacent addresses with names like NewName4[0], NewName4[1], ... NewName4[F].</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">NL files must follow a specific naming convention to account for bank swapping. Each bank needs its own NL file with a hexadecimal number of the bank.</span></p>
<p class="rvps2"><span class="rvts6">For instance, an NES file named "mygame.nes" that has 4 banks (i.e. ROM size = 64k) would have these NL files:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">mygame.nes.ram.nl</span></p>
<p class="rvps2"><span class="rvts6">mygame.nes.0.nl</span></p>
<p class="rvps2"><span class="rvts6">mygame.nes.1.nl</span></p>
<p class="rvps2"><span class="rvts6">mygame.nes.2.nl</span></p>
<p class="rvps2"><span class="rvts6">mygame.nes.3.nl</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">All NL files must be in the same directory as the ROM file itself.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">RAM can also be given its own NL file. In the *.ram.nl file you can name and comment RAM addresses (system bus range of 0x0000 - 0x7FFF) instead of ROM addresses. In this case, you might use a line such as:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">$00A5#Mic Test OK#00=Not Passed, 01=Passed</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour">Easily create CHM Help documents</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">&times;</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>

File diff suppressed because it is too large Load Diff

View File

@ -1,96 +1,287 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Name Table Viewer</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("NameTableViewer");
}
});
</script>
<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>Name Table Viewer</title>
<meta name="description" content="" />
<meta name="keywords" content="Name Table Viewer">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Name Table Viewer">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Name Table Viewer" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Name Table Viewer</h1>
<div id="topic_breadcrumb">
<a href="Debug.html">Debug</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Debug.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="PPUViewer.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="HexEditor.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts35">Name Table Viewer</span></p>
<p><br/></p>
<p><span class="rvts12">Introduction</span></p>
<p><br/></p>
<p>This displays the name tables as they exist in PPU memory. Furthermore, it shows you the game's current mirroring, and the current state of the PPU's scroll registers (if the option for this is set). &nbsp;It also lets you change the mirroring on the fly (which will break most games).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Using the Name Table Viewer</span></p>
<p><br/></p>
<p>Note that the Name Table Viewer will display the name tables using whatever CHR is present at the time the "Display on Scanline" scanline is reached. So for example if it does not correctly display a game's status bar, try setting it to update on a scanline in which the status bar is displayed.</p>
<p><br/></p>
<p>The same applies to the Scroll Lines: they display the state of the PPU scroll registers when the "Display on Scanline" scanline is reached. So for example if said scanline is within the game's status bar, it will not display level scrolling because the horizontal scroll is always zero at the time that scanline is drawn. To display the level scrolling, set it to update on a scanline in which the level is displayed.</p>
<p><br/></p>
<p><span class="rvts10">Display on scanline</span></p>
<p>This will show what it looks like when the NES has finished drawing that many scanlines to screen including any PPU data scroll line movement</p>
<p><br/></p>
<p><span class="rvts10">Getting Tile Addresses</span></p>
<p>Placing the mouse cursor over the name table image will display the tile address of a given tile.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Full-featured Documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="NameTableViewer"
data-hnd-context="17"
data-hnd-title="Name Table Viewer"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Debug.html">Debug</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Debug.html" title="Debug" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="PPUViewer.html" title="PPU Viewer" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="HexEditor.html" title="Hex Editor" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Name Table Viewer</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts50">Name Table Viewer</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Introduction</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This displays the name tables as they exist in PPU memory. Furthermore, it shows you the game's current mirroring, and the current state of the PPU's scroll registers (if the option for this is set). &nbsp;It also lets you change the mirroring on the fly (which will break most games).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Using the Name Table Viewer</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Note that the Name Table Viewer will display the name tables using whatever CHR is present at the time the "Display on Scanline" scanline is reached. So for example if it does not correctly display a game's status bar, try setting it to update on a scanline in which the status bar is displayed.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The same applies to the Scroll Lines: they display the state of the PPU scroll registers when the "Display on Scanline" scanline is reached. So for example if said scanline is within the game's status bar, it will not display level scrolling because the horizontal scroll is always zero at the time that scanline is drawn. To display the level scrolling, set it to update on a scanline in which the level is displayed.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Display on scanline</span></p>
<p class="rvps2"><span class="rvts6">This will show what it looks like when the NES has finished drawing that many scanlines to screen including any PPU data scroll line movement</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Getting Tile Addresses</span></p>
<p class="rvps2"><span class="rvts6">Placing the mouse cursor over the name table image will display the tile address of a given tile.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com">Easy EBook and documentation generator</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">&times;</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>

View File

@ -1,78 +1,269 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Network Play</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("NetworkPlay");
}
});
</script>
<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>Network Play</title>
<meta name="description" content="" />
<meta name="keywords" content="Network Play">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Network Play">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Network Play" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Network Play</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Input.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Palette.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Network Play</span></p>
<p><br/></p>
<p>Allows you to play against a human opponent over the internet. &nbsp;Requires the use of FCEU server.</p>
<p><br/></p>
<p>Currently however, FCEU Server runs very poorly and is hardly useable. &nbsp;This issue will be resolved in a future release.</p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create CHM Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="NetworkPlay"
data-hnd-context="55"
data-hnd-title="Network Play"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Input.html" title="Input" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Palette.html" title="Palette" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Network Play</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Network Play</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Allows you to play against a human opponent over the internet. &nbsp;Requires the use of FCEU server.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Currently however, FCEU Server runs very poorly and is hardly useable. &nbsp;This issue will be resolved in a future release.</span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/help-authoring-tool">Free 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">&times;</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>

330
web/help/Newtopic.html Normal file
View File

@ -0,0 +1,330 @@
<!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>What's New? 2.3.0 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.3.0 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.3.0 (changelog)" />
<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="Newtopic"
data-hnd-context="84"
data-hnd-title="What's New? 2.3.0 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="FCEUltraVersionHistory.html" title="FCE Ultra Version History" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew223.html" title="What's New? 2.2.3 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.3.0 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.3.0</span></p>
<p class="rvps2"><span class="rvts6">Released -- 15 December 2020</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps5"><span class="rvts27">The 2.3.0 release includes 4 years worth of improvements and bug fixes.</span></p>
<p class="rvps5"><span class="rvts28"><br/></span></p>
<p class="rvps5"><span class="rvts29">Common</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps5"><span class="rvts27">64 bit build support</span></li>
</ul>
<p class="rvps2"><span class="rvts31"><br/></span></p>
<p class="rvps5"><span class="rvts28">Emulation</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps5"><span class="rvts27">Added Mapper 111 cheapocabra</span></li>
<li class="rvps5"><span class="rvts27">Added Mapper 190</span></li>
<li class="rvps5"><span class="rvts27">Added RAM Init Options: default (00 00 00 00 FF FF FF FF as always), all FF, all 00, random.</span></li>
<li class="rvps5"><span class="rvts27">New UNIF mappers</span></li>
</ul>
<p class="rvps5"><span class="rvts28"><br/></span></p>
<p class="rvps5"><span class="rvts28">Lua</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps5"><span class="rvts27">Various improvements and bug fixes to pre-existing functions</span></li>
<li class="rvps5"><span class="rvts27">Fix parsing of lua colors over 0x80000000 on 32bits systems</span></li>
<li class="rvps5"><span class="rvts27">Lua write callbacks: adding optional third parameter to retrieve the value written, added Sprites.lua script to visualize sprites</span></li>
</ul>
<p class="rvps5"><span class="rvts30"><br/></span></p>
<p class="rvps5"><span class="rvts30">New Lua functions:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps5"><span class="rvts27">emu.exit()</span></li>
<li class="rvps5"><span class="rvts27">rom.getfilename()</span></li>
</ul>
<p class="rvps5"><span class="rvts28"><br/></span></p>
<p class="rvps5"><span class="rvts28">Win32</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps5"><span class="rvts27">Various GUI improvements and bug fixes</span></li>
</ul>
<p class="rvps5"><span class="rvts28"><br/></span></p>
<p class="rvps5"><span class="rvts29">Debugger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps5"><span class="rvts27">Added memory read/write conditional breakpoint capability.</span></li>
<li class="rvps5"><span class="rvts27">Added illegal opcode support for breakpoints.</span></li>
<li class="rvps5"><span class="rvts27">Support for 'S' register in conditional debugger breakpoints</span></li>
</ul>
<p class="rvps5"><span class="rvts29"><br/></span></p>
<p class="rvps5"><span class="rvts29">Trace Logger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps5"><span class="rvts27">Added bank number log option</span></li>
</ul>
<p class="rvps5"><span class="rvts29"><br/></span></p>
<p class="rvps5"><span class="rvts29">CDLogger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps5"><span class="rvts27">Fix&nbsp;Fixed VRAM data logging glitch</span></li>
</ul>
<p class="rvps5"><span class="rvts30"><br/></span></p>
<p class="rvps5"><span class="rvts29">Hex Editor</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps5"><span class="rvts27">Added OAM view feature</span></li>
<li class="rvps5"><span class="rvts27">Bookmark fixes for all view region types</span></li>
<li class="rvps5"><span class="rvts27">Prevent middle mouse button from attempting to "FreezeRam" when not in RAM mode</span></li>
</ul>
<p class="rvps5"><span class="rvts28"><br/></span></p>
<p class="rvps5"><span class="rvts28">SDL</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps5"><span class="rvts27">GUI completely rewritten using Qt5. Replaces old GTK GUI.</span></li>
<li class="rvps5"><span class="rvts27">New Qt GUI now contains most of the debug tools that previously only existed in windows version.</span></li>
<li class="rvps5"><span class="rvts27">Build setup migrated to cmake. Replaces scons build setup.</span></li>
</ul>
<p class="rvps2"><span class="rvts31"><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.helpndoc.com/feature-tour/create-help-files-for-the-qt-help-framework">Create help files for the Qt Help Framework</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">&times;</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>

View File

@ -1,78 +1,269 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Overview</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Overview");
}
});
</script>
<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>Overview</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Overview">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Overview" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Overview</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Introduction.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="FCEUltraVersionHistory.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">FCEUX</span></p>
<p><br/></p>
<p>FCEUX is a cross platform, NTSC and PAL Famicom/NES and Dendy emulator that is an evolution of the original FCE Ultra emulator. &nbsp;Over time FCE Ultra had separated into many separate branches. &nbsp;</p>
<p><br/></p>
<p>The concept behind FCEUX is to merge elements from FCEU Ultra, FCEU rerecording, FCEUXD, FCEUXDSP, FCEUXDSP CE, and FCEU-mm into a single branch of FCEU. &nbsp;As the X implies, it is an all-encompassing version of the FCEU emulator that provides the best of all worlds for the general player, the <a class="rvts18" href="ROMHacking.html">ROM-hacking community</a>, and the <a class="rvts18" href="ToolAssistedSpeedruns.html">Tool-Assisted Speedrun Community</a>.</p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free CHM Help documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Overview"
data-hnd-context="2"
data-hnd-title="Overview"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Introduction.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="FCEUltraVersionHistory.html" title="FCE Ultra Version History" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Overview</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">FCEUX</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX is a cross platform, NTSC and PAL Famicom/NES and Dendy emulator that is an evolution of the original FCE Ultra emulator. &nbsp;Over time FCE Ultra had separated into many separate branches. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The concept behind FCEUX is to merge elements from FCEU Ultra, FCEU rerecording, FCEUXD, FCEUXDSP, FCEUXDSP CE, and FCEU-mm into a single branch of FCEU. &nbsp;As the X implies, it is an all-encompassing version of the FCEU emulator that provides the best of all worlds for the general player, the </span><a class="rvts23" href="ROMHacking.html">ROM-hacking community</a><span class="rvts6">, and the </span><a class="rvts23" href="ToolAssistedSpeedruns.html">Tool-Assisted Speedrun Community</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/create-epub-ebooks">Write EPub books for the iPad</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">&times;</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>

View File

@ -1,130 +1,320 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Overview of Included Scripts</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("OverviewofIncludedScripts");
}
});
</script>
<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>Overview of Included Scripts</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Overview of Included Scripts">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Overview of Included Scripts" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Overview of Included Scripts</h1>
<div id="topic_breadcrumb">
<a href="LuaScripting.html">Lua Scripting</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="LuaScripting.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="LuaBot.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="FAQGuides.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<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="OverviewofIncludedScripts"
data-hnd-context="79"
data-hnd-title="Overview of Included Scripts"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="LuaScripting.html">Lua Scripting</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="LuaScripting.html" title="Lua Scripting" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="LuaBot.html" title="Lua Bot" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="FAQGuides.html" title="FAQ / Guides" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Overview of Included Scripts</h2>
<div class="main-content">
<p></p>
<p>(written by FatRatKnight)</p>
<p><br/></p>
<p><span class="rvts17">Overview of Included Scripts</span></p>
<p><br/></p>
<p>Many users of FCEUX do not investigate the <span class="rvts32">luaScripts</span> folder, or, for that matter, ignore lua scripting altogether. The purpose of this text is to let users know that knowing how to <span class="rvts29">create</span> lua scripts is not a requirement in <span class="rvts29">using</span> them. Indeed, there are several scripts that, if you just load them, will explain themselves enough that you don't need to know how to program at all in order to use them. Besides, they shouldn't need to be re-programmed anyway if you are to use them, for if they needed programming experience just to be used, their existence is largely defeated by that very fact!</p>
<p><br/></p>
<p>FCEUX itself is a program that you load. Our amazing programmers did all the work already so you don't need to program up your own FCEUX to run it, do you? The same can be said of these scripts.</p>
<p><br/></p>
<p>So, open the <span class="rvts32">luaScripts</span> folder and actually take the time to look at some of these scripts. You may use a text-editing program to open these if you so wish.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts36">General Purpose scripts:</span></p>
<p>These may be used with any game freely. Else, the "General" part of General Purpose doesn't apply.</p>
<p><br/></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>Mutlitrack2.lua &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Tracks future input that FCEUX promptly loses on state-load, for <a class="rvts18" href="ToolAssistedSpeedruns.html">TAS</a></li>
<li>Subtitler.lua &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;For easier use of FCEUX's built-in subtitles for <a class="rvts18" href="fm2.html">.fm2</a> files</li>
<li>Rewinder.lua &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;A way to rewind backwards by pressing a button</li>
<li>Sprites.lua &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Sprite debugging highlights all sprites on screen, with mouse hover to inspect.</li>
<p class="rvps2"><span class="rvts6">(written by FatRatKnight)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts22">Overview of Included Scripts</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Many users of FCEUX do not investigate the </span><span class="rvts45">luaScripts</span><span class="rvts6"> folder, or, for that matter, ignore lua scripting altogether. The purpose of this text is to let users know that knowing how to </span><span class="rvts40">create</span><span class="rvts6"> lua scripts is not a requirement in </span><span class="rvts40">using</span><span class="rvts6"> them. Indeed, there are several scripts that, if you just load them, will explain themselves enough that you don't need to know how to program at all in order to use them. Besides, they shouldn't need to be re-programmed anyway if you are to use them, for if they needed programming experience just to be used, their existence is largely defeated by that very fact!</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX itself is a program that you load. Our amazing programmers did all the work already so you don't need to program up your own FCEUX to run it, do you? The same can be said of these scripts.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">So, open the </span><span class="rvts45">luaScripts</span><span class="rvts6"> folder and actually take the time to look at some of these scripts. You may use a text-editing program to open these if you so wish.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts52">General Purpose scripts:</span></p>
<p class="rvps2"><span class="rvts6">These may be used with any game freely. Else, the "General" part of General Purpose doesn't apply.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Mutlitrack2.lua</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">-</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Tracks future input that FCEUX promptly loses on state-load, for </span><a class="rvts23" href="ToolAssistedSpeedruns.html">TAS</a></li>
<li class="rvps2"><span class="rvts6">Subtitler.lua</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">-</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">For easier use of FCEUX's built-in subtitles for </span><a class="rvts23" href="fm2.html">.fm2</a><span class="rvts6"> files</span></li>
<li class="rvps2"><span class="rvts6">Rewinder.lua</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">-</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">A way to rewind backwards by pressing a button</span></li>
</ul>
<p><br/></p>
<p><br/></p>
<p><span class="rvts36">Game Specific scripts:</span></p>
<p>These scripts are built specifically for certain games. Attempting to run them while you've loaded another ROM will likely cause undesired results. The meaning of "undesired results" in this case are things like crashing the game, causing it to glitch in other ways, or having nonsense numbers and pixels show up.</p>
<p><br/></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>BugsBunnyBirthdayBlowout.lua</li>
<li>Excitingbike.lua</li>
<li>Excitingbike-speedometeronly.lua</li>
<li>Galaxian.lua</li>
<li>Gradius-BulletHell.lua</li>
<li>Machrider.lua</li>
<li>MegamanII-LaserEyes.lua</li>
<li>PunchOutChallenge.lua</li>
<li>PunchOutStats.lua</li>
<li>PunchOutTraining.lua</li>
<li>SMB2U.lua</li>
<li>SMB3-RainbowRiding.lua</li>
<li>SMB-AreaScrambler.lua</li>
<li>SMB-CompetitionRecorder.lua</li>
<li>SMB-HitBoxes.lua</li>
<li>SMB-Jetpack.lua</li>
<li>SMB-Lives&amp;HPDisplay.lua</li>
<li>SMB-Mouse.lua</li>
<li>SMB-Snow.lua</li>
<li>TeenageMutantNinjaTurtles.lua</li>
<li>tetris.lua</li>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts52">Game Specific scripts:</span></p>
<p class="rvps2"><span class="rvts6">These scripts are built specifically for certain games. Attempting to run them while you've loaded another ROM will likely cause undesired results. The meaning of "undesired results" in this case are things like crashing the game, causing it to glitch in other ways, or having nonsense numbers and pixels show up.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">BugsBunnyBirthdayBlowout.lua</span></li>
<li class="rvps2"><span class="rvts6">Excitingbike.lua</span></li>
<li class="rvps2"><span class="rvts6">Excitingbike-speedometeronly.lua</span></li>
<li class="rvps2"><span class="rvts6">Galaxian.lua</span></li>
<li class="rvps2"><span class="rvts6">Gradius-BulletHell.lua</span></li>
<li class="rvps2"><span class="rvts6">Machrider.lua</span></li>
<li class="rvps2"><span class="rvts6">MegamanII-LaserEyes.lua</span></li>
<li class="rvps2"><span class="rvts6">PunchOutChallenge.lua</span></li>
<li class="rvps2"><span class="rvts6">PunchOutStats.lua</span></li>
<li class="rvps2"><span class="rvts6">PunchOutTraining.lua</span></li>
<li class="rvps2"><span class="rvts6">SMB2U.lua</span></li>
<li class="rvps2"><span class="rvts6">SMB3-RainbowRiding.lua</span></li>
<li class="rvps2"><span class="rvts6">SMB-AreaScrambler.lua</span></li>
<li class="rvps2"><span class="rvts6">SMB-CompetitionRecorder.lua</span></li>
<li class="rvps2"><span class="rvts6">SMB-HitBoxes.lua</span></li>
<li class="rvps2"><span class="rvts6">SMB-Jetpack.lua</span></li>
<li class="rvps2"><span class="rvts6">SMB-Lives&amp;HPDisplay.lua</span></li>
<li class="rvps2"><span class="rvts6">SMB-Mouse.lua</span></li>
<li class="rvps2"><span class="rvts6">SMB-Snow.lua</span></li>
<li class="rvps2"><span class="rvts6">TeenageMutantNinjaTurtles.lua</span></li>
<li class="rvps2"><span class="rvts6">tetris.lua</span></li>
</ul>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts36">Auxiliary Functions scripts:</span></p>
<p>These scripts exist to make the life of programmers easier. As such, if you don't program, you may skip over these scripts. These should not be run by themselves, for they themselves probably don't have any programming to do any work usefully. It's like giving yourself a clip of bullets with no gun to use.</p>
<p><br/></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>FRKfunctions.lua &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;To aid with input.get, display, and registers</li>
<li>x_functions.lua</li>
<li>shapedefs.lua &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;Contains a few shape-drawing functions</li>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts52">Auxiliary Functions scripts:</span></p>
<p class="rvps2"><span class="rvts6">These scripts exist to make the life of programmers easier. As such, if you don't program, you may skip over these scripts. These should not be run by themselves, for they themselves probably don't have any programming to do any work usefully. It's like giving yourself a clip of bullets with no gun to use.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">FRKfunctions.lua</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">-</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">To aid with input.get, display, and registers</span></li>
<li class="rvps2"><span class="rvts6">x_functions.lua</span></li>
<li class="rvps2"><span class="rvts6">shapedefs.lua</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">-</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Contains a few shape-drawing functions</span></li>
</ul>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/help-authoring-tool">Single source CHM, PDF, DOC and HTML Help creation</a></p>
</div>
<div id="topic_footer">
<p class="rvps4" style="clear: both;"><span class="rvts18">Created with the Personal Edition of HelpNDoc: </span><a class="rvts19" href="https://www.helpndoc.com/create-epub-ebooks">Free EPub producer</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">&times;</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>
<div id="topic_footer_content">
2016</div>
</div>
</body>
</html>

View File

@ -1,367 +1,558 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>PPU - 2C02</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("PPU");
}
});
</script>
<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>PPU - 2C02</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="PPU - 2C02">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="PPU - 2C02" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>PPU - 2C02</h1>
<div id="topic_breadcrumb">
<a href="Technicalinformation.html">Technical Information</a> &rsaquo;&rsaquo; <a href="NESProcessor.html">NES Processing</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="NESProcessor.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="6502CPU.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="NESScrolling1.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p>*******************************</p>
<p>*NTSC 2C02 technical operation*</p>
<p>*******************************</p>
<p>Brad Taylor (big_time_software@hotmail.com)</p>
<p><br/></p>
<p>1st release: Sept 25th, Y2K</p>
<p>2nd release: Jan &nbsp;27th, 2K3</p>
<p>3rd release: Feb &nbsp; 4th, 2K3</p>
<p>4th release: Feb &nbsp;19th, 2K3</p>
<p><br/></p>
<p><br/></p>
<p> This document describes the low-level operation and technical details of the 2C02, the NES's PPU. In general, it contains important information in regards to PPU timing, which no NES coder/emulator author should be without. This document assumes that you already understand the basics of how the PPU works, like how the playfield/object images are generated, and the behaviour of scroll/address counters during playfield rendering.</p>
<p><br/></p>
<p> Alot of the concepts behind how the PPU works described here have been extracted from Nintendo's patent documentation (U.S.#4,824,106). With block diagrams of the PPU's architecture (and even some schematics), these papers will definetely aid in the comprehension of this complex device.</p>
<p><br/></p>
<p> Since the first release, this document has been given a major overhaul. Most sections of the document have been reworked, and new information has been added just about everywhere. If you've read the old version of this document before, I recommend that you read this new one in it's entirity; there's new information even in sections which may look like they haven't changed much.</p>
<p><br/></p>
<p> Topics discussed hereon are as follows.</p>
<p><br/></p>
<p> - Video signal generation</p>
<p> - PPU base timing</p>
<p> - Miscellanious PPU info</p>
<p> - PPU memory access cycles</p>
<p> - Frame rendering details</p>
<p> - Scanline rendering details</p>
<p> - In-range object evaluation</p>
<p> - Details of playfield render pipeline</p>
<p> - Details of object pattern fetch &amp; render</p>
<p> - Extra cycle frames</p>
<p> - The MMC3's scanline counter</p>
<p> - PPU pixel priority quirk</p>
<p> - Graphical enhancements</p>
<p><br/></p>
<p><br/></p>
<p>+-------+</p>
<p>|History|</p>
<p>+-------+</p>
<p> On the weekend of Sept. 25th, Y2K, I setup an experiment with my NTSC NES MB &amp; my PC so's I could RE the PPU's timing. What I did was (using a PC interface) analyse the changes that occur on the PPU's address and data pins on every rising &amp; falling edge of the PPU's clock. I was not planning on removing the PPU from the motherboard (yet), so basically I just kept everything intact (minus the stuff I added onto the MB so I could monitor the PPU's signals), and popped in a game, so that it would initialize the PPU for me (I used DK classics, since it was only taking somthing like 4 frames before it was turning on the background/sprites).</p>
<p><br/></p>
<p> The only change I made was taking out the 21 MHz clock generator circuitry. To replace the clock signal, I connected a port controlled latch to the NES's main clock line instead. Now, by writing a 0 or a 1 out to an PC ISA port of my choice (I was using $104), I was able to control the 21 MHz clockline of the NES. After I would create a rise or a fall on the NES's clock line, I would then read in the data that appeared on the PPU's address and data pins, which included monitoring what PPU registers the game read/wrote to (&amp; the data that was read/written).</p>
<p><br/></p>
<p><br/></p>
<p>+-----------------------+</p>
<p>|Video signal generation|</p>
<p>+-----------------------+</p>
<p> A 21.48 MHz clock signal is fed into the PPU. This is the NES's main clock line, which is shared by the CPU.</p>
<p><br/></p>
<p> Inside the PPU, the 21.48 MHz signal is used to clock a three-stage Johnson counter. The complimentery outputs of both master and slave portions of each stage are used to form 12 mutually exclusive output phases- all 3.58 MHz each (the NTSC colorburst). These 12 different phases form the basis of all color generation for the PPU's composite video output.</p>
<p><br/></p>
<p> Naturally, when the user programs the lower 4-bits of a palette register, they are essentially selecting any 1 of 12 phases to be routed to the PPU's video out pin (this corresponds to chrominance (tint/hue) video information) when the appropriate pixel indexes it. Other chrominance combinations (0 &amp; 13) are simply hardwired to a 1 or 0 to generate grayscale pixels.</p>
<p><br/></p>
<p> Bits 4 &amp; 5 of a palette entry selects 1 of 4 linear DC voltage offsets to apply to the selected chrominance signal (this corresponds to luminance (brightness) video information) for a pixel.</p>
<p><br/></p>
<p> Chrominance values 14 &amp; 15 yield a black pixel color, regardless of any luminance value setting. </p>
<p><br/></p>
<p> Luminance value 0, mixed with chrominance value 13 yield a "blacker than black" pixel color. This super black pixel has an output voltage level close to the vertical/horizontal syncronization pulses. Because of this, some video monitors will display warped/distorted screens for games which use this color for black (Game Genie is the best example of this). Essentially what is happening is the video monitor's horizontal timing is compromised by what it thinks are extra syncronization pulses in the scanline. This is not damaging to the monitors which are effected by it, but use of the super black color should be avoided, due to the graphical distortion it causes.</p>
<p><br/></p>
<p> The amplitude of the selected chrominance signal (via the 4 lower bits of a palette register) remain constant regardless of bits 4 or 5. Thus it is not possible to adjust the saturation level of a particular color.</p>
<p><br/></p>
<p><br/></p>
<p>+---------------+</p>
<p>|PPU base timing|</p>
<p>+---------------+</p>
<p> Other than the 3-stage Johnson counter, the 21.48 MHz signal is not used directly by any other PPU hardware. Instead, the signal is divided by 4 to get 5.37 MHz, and is used as the smallest unit of timing in the PPU. All following references to PPU clock cycle (abbr. "cc") timing in this document will be in respect to this timing base, unless otherwise indicated.</p>
<p><br/></p>
<p> - Pixels are rendered at the same rate as the base PPU clock. In other words, 1 clock cycle= 1 pixel.</p>
<p><br/></p>
<p> - 341 PPU cc's make up the time of a typical scanline (or 341/3 CPU cc's).</p>
<p><br/></p>
<p> - One frame consists of 262 scanlines. This equals 341*262 PPU cc's per frame (divide by 3 for # of CPU cc's).</p>
<p><br/></p>
<p><br/></p>
<p>+------------------------+</p>
<p>|PPU memory access cycles|</p>
<p>+------------------------+</p>
<p> All PPU memory access cycles are 2 clocks long, and can be made back-to-back (typically done during rendering). Here's how the access breaks down:</p>
<p><br/></p>
<p> At the beginning of the access cycle, PPU address lines 8..13 are updated with the target address. This data remains here until the next time an access cycle occurs.</p>
<p><br/></p>
<p> The lower 8-bits of the PPU address lines are multiplexed with the data bus, to reduce the PPU's pin count. On the first clock cycle of the access, A0..A7 are put on the PPU's data bus, and the ALE (address latch enable) line is activated for the first half of the cycle. This loads the lower 8-bit address into an external 8-bit transparent latch strobed by ALE (74LS373 is used).</p>
<p><br/></p>
<p> On the second clock cycle, the /RD (or /WR) line is activated, and stays active for the entire cycle. Appropriate data is driven onto the bus during this time.</p>
<p><br/></p>
<p><br/></p>
<p>+----------------------+</p>
<p>|Miscellanious PPU info|</p>
<p>+----------------------+</p>
<p> - Sprite DMA is 1536 clock cycles long (512 CPU cc's). 256 individual transfers are made from CPU memory to a temp register inside the CPU, then from the CPU's temp reg, to $2004.</p>
<p><br/></p>
<p> - The PPU makes NO external access to the PPU bus, unless the playfield or objects are enabled during a scanline outside vblank. This means that the PPU's address and data busses are dead while in this state.</p>
<p><br/></p>
<p> - palette RAM is accessed internally during playfield rendering (i.e., the palette address/data is never put on the PPU bus during this time). Additionally, when the programmer accesses palette RAM via $2006/7, the palette address accessed actually does show up on the PPU address bus, but the PPU's /RD &amp; /WR flags are not activated. This is required; to prevent writing over name table data falling under the approprite mirrored area (since the name table RAM's address decoder simply consists of an inverter connected to the A13 line- effectively decoding all addresses in $2000-$3FFF).</p>
<p><br/></p>
<p> - the VINT impulse (NMI) and bit $2002.7 are set simultaniously. Reading $2002 will reset bit 7, but it seems that the VINT flag goes down on it's own. Because of this, when the PPU generates a VINT, it doesn't require any acknowledgement whatsoever; it will continue firing off VINTs, regardless of inservice to $2002. The only way to stop VINTs is to clear $2000.7.</p>
<p><br/></p>
<p> - Because the PPU cannot make a read from PPU memory immediately upon request (via $2007), there is an internal buffer, which acts as a 1-stage data pipeline. As a read is requested, the contents of the read buffer are returned to the NES's CPU. After this, at the PPU's earliest convience (according to PPU read cycle timings), the PPU will fetch the requested data from the PPU memory, and throw it in the read buffer. Writes to PPU mem via $2007 are pipelined as well, but it is unknown to me if the PPU uses this same buffer (this could be easily tested by writing somthing to $2007, and seeing if the same value is returned immediately after reading).</p>
<p><br/></p>
<p><br/></p>
<p>+-----------------------+</p>
<p>|Frame rendering details|</p>
<p>+-----------------------+</p>
<p> &nbsp;The following describes the PPU's status during all 262 scanlines of a frame. Any scanlines where work is done (like image rendering), consists of the steps which will be described in the next section.</p>
<p><br/></p>
<p> 0..19: &nbsp; &nbsp; &nbsp; &nbsp;Starting at the instant the VINT flag is pulled down (when a NMI is generated), 20 scanlines make up the period of time on the PPU which I like to call the VINT period. During this time, the PPU makes no access to it's external memory (i.e. name / pattern tables, etc.).</p>
<p><br/></p>
<p> 20: &nbsp; &nbsp; &nbsp; &nbsp;After 20 scanlines worth of time go by (since the VINT flag was set), the PPU starts to render scanlines. This first scanline is a dummy one; although it will access it's external memory in the same sequence it would for drawing a valid scanline, no on-screen pixels are rendered during this time, making the fetched background data immaterial. Both horizontal *and* vertical scroll counters are updated (presumably) at cc offset 256 in this scanline. Other than that, the operation of this scanline is identical to any other. The primary reason this scanline exists is to start the object render pipeline, since it takes 256 cc's worth of time to determine which objects are in range or not for any particular scanline.</p>
<p><br/></p>
<p> 21..260: after rendering 1 dummy scanline, the PPU starts to render the actual data to be displayed on the screen. This is done for 240 scanlines, of course.</p>
<p><br/></p>
<p> 261: &nbsp; &nbsp; &nbsp; &nbsp;after the very last rendered scanline finishes, the PPU does nothing for 1 scanline (i.e. the programmer gets screwed out of perfectly good VINT time). When this scanline finishes, the VINT flag is set, and the process of drawing lines starts all over again.</p>
<p><br/></p>
<p><br/></p>
<p>+--------------------------+</p>
<p>|Scanline rendering details|</p>
<p>+--------------------------+</p>
<p> Naturally, the PPU will fetch data from name, attribute, and pattern tables during a scanline to produce an image on the screen. This section details the PPU's doings during this time.</p>
<p><br/></p>
<p> As explained before, external PPU memory can be accessed every 2 cc's. With 341 cc's per scanline, this gives the PPU enough time to make 170 memory accesses per scanline (and it uses all of them!). After the 170th fetch, the PPU does nothing for 1 clock cycle. Remember that a single pixel is rendered every clock cycle.</p>
<p><br/></p>
<p><br/></p>
<p> Memory fetch phase 1 thru 128</p>
<p> -----------------------------</p>
<p> 1. Name table byte</p>
<p> 2. Attribute table byte</p>
<p> 3. Pattern table bitmap #0</p>
<p> 4. Pattern table bitmap #1</p>
<p><br/></p>
<p> This process is repeated 32 times (32 tiles in a scanline).</p>
<p><br/></p>
<p><br/></p>
<p> This is when the PPU retrieves the appropriate data from PPU memory for rendering the playfield. The first playfield tile fetched here is actually the 3rd to be drawn on the screen (the playfield data for the first 2 tiles to be rendered on this scanline are fetched at the end of the scanline prior to this one).</p>
<p><br/></p>
<p> All valid on-screen pixel data arrives at the PPU's video out pin during this time (256 clocks). For determining the precise delay between when a tile's bitmap fetch phase starts (the whole 4 memory fetches), and when the first pixel of that tile's bitmap data hits the video out pin, the formula is (16-n) clock cycles, where n is the fine horizontal scroll offset (0..7 pixels). This information is relivant for understanding the exact timing operation of the "object 0 collision" flag.</p>
<p><br/></p>
<p> Note that the PPU fetches an attribute table byte for every 8 sequential horizontal pixels it draws. This essentially limits the PPU's color area (the area of pixels which are forced to use the same 3-color palette) to only 8 horizontally sequential pixels.</p>
<p><br/></p>
<p> It is also during this time that the PPU evaluates the "Y coordinate" entries of all 64 objects in object attribute RAM (OAM), to see if the objects are within range (to be drawn on the screen) for the *next* scanline (this is why Y-coordinate entries in the OAM must be programmed to a value 1 less than the scanline the object is to appear on). Each evaluation (presumably) takes 4 clock cycles, for a total of 256 (which is why it's done during on-screen pixel rendering).</p>
<p><br/></p>
<p><br/></p>
<p> In-range object evaluation</p>
<p> --------------------------</p>
<p> An 8-bit comparator is used to calculate the 9-bit difference between the current scanline (minus 21), and each Y-coordinate (plus 1) of every object entry in the OAM. Objects are considered in range if the comparator produces a difference in the range of 0..7 (if $2000.5 currently = 0), or 0..15 (if $2000.5 currently = 1).</p>
<p><br/></p>
<p> (Note that a 9-bit comparison result is generated. This means that setting object scanline coordinates for ranges -1..-15 are actually interpreted as ranges 241..255. For this reason, objects with these ranges will never be considered to be part of any on-screen scanline range, and will not allow smooth object scrolling off the top of the screen.)</p>
<p><br/></p>
<p> Tile index (8 bits), X-coordinate (8 bits), &amp; attribute information (4 bits; vertical inversion is excluded) from the in-range OAM element, plus the associated 4-bit result of the range comparison accumulate in a part of the PPU called the "sprite temporary memory". Logical inversion is applied to the loaded 4-bit range comparison result, if the object's vertical inversion attribute bit is set.</p>
<p><br/></p>
<p> Since object range evaluations occur sequentially through the OAM (starting from entry 0 to 63), the sprite temporary memory always fills in order from the highest priority in-range object, to lower ones. A 4-bit "in-range" counter is used to determine the number of found objects on the scanline (from 0 up to 8), and serves as an index pointer for placement of found object data into the 8-element sprite temporary memory. The counter is reset at the beginning of the object evaluation phase, and is post-incremented everytime an object is found in-range. This occurs until the counter equals 8, when found object data after this is discarded, and a flag (bit 5 of $2002) is raised, indicating that it is going to be dropping objects for the next scanline.</p>
<p><br/></p>
<p> An additional memory bit associated with the sprite temporary memory is used to indicate that the primary object (#0) was found to be in range. This will be used later on to detect primary object-to-playfield pixel collisions.</p>
<p><br/></p>
<p><br/></p>
<p> Playfield render pipeline details</p>
<p> ---------------------------------</p>
<p> As pattern table &amp; palette select data is fetched, it is loaded into internal latches (the palette select data is selected from the fetched byte via a 2-bit 1-of-4 selector).</p>
<p><br/></p>
<p> At the start of a new tile fetch phase (every 8 cc's), both latched pattern table bitmaps are loaded into the upper 8-bits of 2- 16-bit shift registers (which both shift right every clock cycle). The palette select data is also transfered into another latch during this time (which feeds the serial inputs of 2 8-bit right shift registers shifted every clock). The pixel data is fed into these extra shift registers in order to implement fine horizontal scrolling, since the periods when the PPU fetch tile data is fixed.</p>
<p><br/></p>
<p> A single bit from each shift register is selected, to form the valid 4-bit playfield pixel for the current clock cycle. The bit selection offset is based on the fine horizontal scroll value (this selects bit positions 0..7 for all 4 shift registers). The selected 4-bit pixel data will then be fed into the multiplexer (described later) to be mixed with object data.</p>
<p><br/></p>
<p><br/></p>
<p> Memory fetch phase 129 thru 160</p>
<p> -------------------------------</p>
<p> 1. Garbage name table byte</p>
<p> 2. Garbage name table byte</p>
<p> 3. Pattern table bitmap #0 for applicable object (for next scanline)</p>
<p> 4. Pattern table bitmap #1 for applicable object (for next scanline)</p>
<p><br/></p>
<p> This process is repeated 8 times.</p>
<p><br/></p>
<p><br/></p>
<p> This is the period of time when the PPU retrieves the appropriate pattern table data for the objects to be drawn on the *next* scanline. When less than 8 objects exist on the next scanline (as the in-range object evaluation counter indicates), dummy pattern table fetches take place for the remaining fetches. Internally, the fetched dummy-data is discarded, and replaced with completely transparent bitmap patterns).</p>
<p><br/></p>
<p> Although the fetched name table data is thrown away, and the name table address is somewhat unpredictable, the address does seem to relate to the first name table tile to be fetched for the next scanline. This would seem to imply that PPU cc #256 is when the PPU's scroll/address counters have their horizontal scroll values automatically updated.</p>
<p><br/></p>
<p> It should also be noted that because this fetch is required for objects on the next scanline, it is neccessary for a garbage scanline to exist prior to the very first scanline to be actually rendered, so that object attribute RAM entries can be evaluated, and the appropriate bitmap data retrieved.</p>
<p><br/></p>
<p> As far as the wasted fetch phases here, well, what can I say. Either Nintendo's engineers were VERY lazy, and didn't want to add the small amount of extra circuitry to the PPU so that 16 object fetches could take place per scanline, or Nintendo couldn't spot the extra memory required to implement 16 object scanlines. Thing is though- between the object attribute mem, sprite temporary &amp; buffer mem, and palette mem, that's already 2406 bits of RAM; I don't think it would've killed them to just add the 408 bits it would've took for an extra 8 objects, which would've made games with horrible OAM cycling (Double Dragon 2 w/ 2 players) look half-decent (hell, with 16 object scanlines, games would hardly even need OAM cycling).</p>
<p><br/></p>
<p> </p>
<p> Details of object pattern fetch &amp; render</p>
<p> ----------------------------------------</p>
<p> Where the PPU fetches pattern table data for an individual object is conditioned on the contents of the sprite temporary memory element, and $2000.5. If $2000.5 = 0, the tile index data is used as usual, and $2000.3 selects the pattern table to use. If $2000.5 = 1, the MSB of the range result value become the LSB of the indexed tile, and the LSB of the tile index value determines pattern table selection. The lower 3 bits of the range result value are always used as the fine vertical offset into the selected pattern.</p>
<p><br/></p>
<p> Horizontal inversion (bit order reversing) is applied to fetched bitmaps, if indicated in the sprite temporary memory element.</p>
<p><br/></p>
<p> The fetched pattern table data (which is 2 bytes), plus the associated 3 attribute bits (palette select &amp; priority), and the x coordinate byte in sprite temporary memory are then loaded into a part of the PPU called the "sprite buffer memory" (the primary object present bit is also copied). This memory area again, is large enough to hold the contents for 8 sprites.</p>
<p><br/></p>
<p> The composition of one sprite buffer element here is: 2 8-bit shift registers (the fetched pattern table data is loaded in here, where it will be serialized at the appropriate time), a 3-bit latch (which holds the color &amp; priority data for an object), and an 8-bit down counter (this is where the x coordinate is loaded).</p>
<p><br/></p>
<p> The counter is decremented every time the PPU renders a pixel (the first 256 cc's of a scanline; see "Memory fetch phase 1 thru 128" above). When the counter equals 0, the pattern table data in the shift registers will start to serialize (1 shift per clock). Before this time, or 8 clocks after, consider the outputs of the serializers for each stage to be 0 (transparency).</p>
<p><br/></p>
<p> The streams of all 8 object serializers are prioritized, and ultimately only one stream (with palette select &amp; priority information) is selected for output to the multiplexer (where object &amp; playfield pixels are prioritized).</p>
<p><br/></p>
<p> The data for the first sprite buffer entry (including the primary object present flag) has the first chance to enter the multiplexer, if it's output pixel is non-transparent (non-zero). Otherwise, priority is passed to the next serializer in the sprite buffer memory, and the test for non-transparency is made again (the primary object present status will always be passed to the multiplexer as false in this case). This is done until the last (8th) stage is reached, when the object data is passed through unconditionally. Keep in mind that this whole process occurs every clock cycle (hardware is used to determine priority instantly).</p>
<p><br/></p>
<p> The multiplexer does 2 things: determines primary object collisions, and decides which pixel data to pass through to index the palette RAM- either the playfield's or the object's.</p>
<p><br/></p>
<p> Primary object collisions occur when a non-transparent playfield pixel coincides with a non-transparent object pixel, while the primary object present status entering the multiplexer for the current clock cycle is true. This causes a flip-flop ($2002.6) to be set, and remains set (presumably) some time after the VINT occurence (prehaps up until scanline 20?).</p>
<p><br/></p>
<p> The decision for selecting the data to pass through to the palette index is made rather easilly. The condition to use object (opposed to playfield) data is:</p>
<p><br/></p>
<p> (OBJpri=foreground OR PFpixel=xparent) AND OBJpixel&lt;&gt;xparent</p>
<p><br/></p>
<p> Since the PPU has 2 palettes; one for objects, and one for playfield, the appropriate palette will be selected depending on which pixel data is passed through.</p>
<p><br/></p>
<p> After the palette look-up, the operation of events follows the aforementioned steps in the "video signal generation" section.</p>
<p><br/></p>
<p><br/></p>
<p> Memory fetch phase 161 thru 168</p>
<p> -------------------------------</p>
<p> 1. Name table byte</p>
<p> 2. Attribute table byte</p>
<p> 3. Pattern table bitmap #0 (for next scanline)</p>
<p> 4. Pattern table bitmap #1 (for next scanline)</p>
<p><br/></p>
<p> This process is repeated 2 times.</p>
<p><br/></p>
<p><br/></p>
<p> It is during this time that the PPU fetches the appliciable playfield data for the first and second tiles to be rendered on the screen for the *next* scanline. These fetches initialize the internal playfield pixel pipelines (2- 16-bit shift registers) with valid bitmap data. The rest of tiles (3..32) are fetched at the beginning of the following scanline.</p>
<p><br/></p>
<p><br/></p>
<p> Memory fetch phase 169 thru 170</p>
<p> -------------------------------</p>
<p> 1. Name table byte</p>
<p> 2. Name table byte</p>
<p><br/></p>
<p><br/></p>
<p> I'm unclear of the reason why this particular access to memory is made. The name table address that is accessed 2 times in a row here, is also the same nametable address that points to the 3rd tile to be rendered on the screen (or basically, the first name table address that will be accessed when the PPU is fetching playfield data on the next scanline).</p>
<p><br/></p>
<p><br/></p>
<p> After memory access 170</p>
<p> -----------------------</p>
<p> The PPU simply rests for 1 cycle here (or the equivelant of half a memory access cycle) before repeating the whole pixel/scanline rendering process.</p>
<p><br/></p>
<p><br/></p>
<p>+------------------+</p>
<p>|Extra cycle frames|</p>
<p>+------------------+</p>
<p> Scanline 20 is the only scanline that has variable length. On every odd frame, this scanline is only 340 cycles (the dead cycle at the end is removed). This is done to cause a shift in the NTSC colorburst phase.</p>
<p><br/></p>
<p> You see, a 3.58 MHz signal, the NTSC colorburst, is required to be modulated into a luminance carrying signal in order for color to be generated on an NTSC monitor. Since the PPU's video out consists of basically square waves (as opposed to sine waves, which would be preferred), it takes an entire colorburst cycle (1/3.58 MHz) for an NTSC monitor to identify the color of a PPU pixel accurately.</p>
<p><br/></p>
<p> But now you remember that the PPU renders pixels at 5.37 MHz- 1.5x the rate of the colorburst. This means that if a single pixel resides on a scanline with a color different to those surrounding it, the pixel will probably be misrepresented on the screen, sometimes appearing faintly.</p>
<p><br/></p>
<p> Well, to somewhat fix this problem, they added this extra pixel into every odd frame (shifting the colorburst phase over a bit), and changing the way the monitor interprets isolated colored pixels each frame. This is why when you play games with detailed background graphics, the background seems to flicker a bit. Once you start scrolling the screen however, it seems as if some pixels become invisible; this is how stationary PPU images would look without this cycle removed from odd frames.</p>
<p><br/></p>
<p> Certain scroll rates expose this NTSC PPU color caveat regardless of the toggling phase shift. Some of Zelda 2's dungeon backgrounds are a good place to see this effect.</p>
<p><br/></p>
<p><br/></p>
<p>+---------------------------+</p>
<p>|The MMC3's scanline counter|</p>
<p>+---------------------------+</p>
<p> As most people know, the MMC3 bases it's scanline counter on PPU address line A13 (which is why IRQ's can be fired off manually by toggling A13 a bunch of times via $2006). What's not common knowledge is the number of times A13 is expected to toggle in a scanline (although if you've been paying close attention to the doc here, you should already know ;)</p>
<p><br/></p>
<p> A13 was probably used for the IRQ counter (as opposed to using the PPU's /READ line) because this address line already needed to be connected to the MMC for bankswitching purposes (so in other words, to reduce the MMC3's pin count by 1). They also probably used this method of counting (as opposed to a CPU cycle counter) since A13 cycles (0 -&gt; 1) exactly 42 times per scanline, whereas the CPU count of cycles per scanline is not an exact integer (113.67). Having said that, I guess Nintendo wanted to provide an "easy-to-use" method of generating special image effects, without making programmers have to figure out how many clock cycles to program an IRQ counter with (a pretty lame excuse for not providing an IRQ counter with CPU clock cycle precision (which would have been more useful and versatile)).</p>
<p><br/></p>
<p> Regardless of any values PPU registers are programmed with, A13 will operate in a predictable fashion during image rendering (and if you understand how PPU addressing works, you should understand that A13 is the *only* address line with fixed behaviour during image rendering).</p>
<p><br/></p>
<p><br/></p>
<p>+------------------------+</p>
<p>|PPU pixel priority quirk|</p>
<p>+------------------------+</p>
<p> Object data is prioritized between itself, then prioritized between the playfield. There are some odd side effects to this scheme of rendering, however. For instance, imagine a low priority object pixel with foreground priority, a high priority object pixel with background priority, and a playfield pixel all coinciding (all non-transparent).</p>
<p><br/></p>
<p> Ideally, the playfield is considered to be the middle layer between background and foreground priority objects. This means that the playfield pixel should hide the background priority object pixel (regardless of object priority), and the foreground priority object should appear atop the PF pixel.</p>
<p><br/></p>
<p> However, because of the way the PPU renders (as just described), OBJ priority is evaluated first, and therefore the background object pixel wins, which means that you'll only be seeing the PF pixel after this mess.</p>
<p><br/></p>
<p> A good game to demonstrate this behaviour is Megaman 2. Go into airman's stage. First, jump into the energy bar, just to confirm that megaman's sprite is of a higher priority than the energy bar's. Now, get to the second half of the stage, where the clouds cover the energy bar. The energy bar will be ontop of the clouds, but megaman will be behind them. Now, look what happens when you jump into the energy bar here... you see the clouds where megaman underlaps the energy bar.</p>
<p><br/></p>
<p><br/></p>
<p>+----------------------+</p>
<p>|Graphical enhancements|</p>
<p>+----------------------+</p>
<p> Since an NES cartridge has access to the PPU bus, any number of on-cart hardware schemes can be used to enhance the graphic capabilities of the NES. After all, the PPU's playfield pipeline is very simple: it fetches 272 playfield pixels per scanline (as 34*2 byte fetches, in real-time), and outputs 256 of them to the screen (with the 0..7 pixel offset determined by the fine X scroll register), along with object data combined with it.</p>
<p><br/></p>
<p> Essentially, you can bypass the PPU's simple scrolling system, implement a custom one on your cart (fetching bitmap data in your own fashion), and feed the PPU bitmap data in your own order.</p>
<p><br/></p>
<p> The possibilities of this are endless (like sporting multiple playfields, or even playfield rotation/scaling), but of course what it comes down to is the amount of cartridge hardware required.</p>
<p><br/></p>
<p> Generally, playfield rotation/scaling can be done quite easily- it only requires a few sets of 16-bit registers and adders (the 16 bits are broken up into 8.8 fixed point values). But this kind of implementation is more suited for an integrated circuit, since this would require dozens of discrete logic chips.</p>
<p><br/></p>
<p> Multiple playfields are another thing which could be easily done. The caveat here is that pixel pipelines (i.e., shift registers) and a multiplexer would have to be implemented on the cart (not to mention exclusive name table RAM) in order to process the playfield bitmaps from multiple sources. The access to the CHR-ROM/RAM would also have to increased- but as it stands, the CHR-ROM/RAM bandwidth is 1.34 MHz, a rather low frequency. With a memory device capable of a 10.74 MHz bandwith, you could have 8 playfields to work with. Generally, this would be very useful for displaying multiple huge objects on the screen- without ever having to worry about annoying flicker.</p>
<p><br/></p>
<p> The only restriction to doing any of this is that:</p>
<p><br/></p>
<p> - every 8 sequential horizontal pixels sent to the PPU must share the same palette select value. Because of this, hardware would have to be implemented to decide which palette select value to feed the PPU between 8 horizontally sequential pixels, if they do not all share the same palette select value. The on-screen results of this may not be too flattering sometimes, but this is a small price to pay to do some neat graphical tricks on the NES.</p>
<p><br/></p>
<p> -only the playfield palette can be used. As usual, this pretty much limits your randomly accessable colors to about 12+1.</p>
<p><br/></p>
<p> It's a damn shame that Nintendo never created a MMC which would enhance graphics on the NES in useful ways as mentioned above. The MMC5 was the only device that came close, and it's only selling features were the single-tile color area, and the vertical split screen mode (which I don't think any game ever used). Considering the amount of pins (100) the MMC5 had, and number of gates they put in it just for the EXRAM (which was 1K bytes), they could've put some really useful graphics hardware inside there instead.</p>
<p><br/></p>
<p> Prehaps the infamous Color Dreams "Hellraiser" cart was the closest the NES ever came to seeing such sophisticated graphics. The cart was never released, but from what I've read, it was going to use some sort of frame buffer, and a Z80 CPU to do the graphical rendering. It had been rumored that the game had 3D graphics (or at least 2.5D) in it. If so (and the game was actually good), prehaps it would have raised a few eyebrows in the industry, and inspired Nintendo to develop a new MMC chip with similar capabilities, in order to keep the NES in it's profit margin for another few years (and allow it to compete somewhat with the more advanced systems of the time).</p>
<p><br/></p>
<p>EOF</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create CHM Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="PPU"
data-hnd-context="33"
data-hnd-title="PPU - 2C02"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Technicalinformation.html">Technical Information</a></li><li><a href="NESProcessor.html">NES Processing</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="NESProcessor.html" title="NES Processing" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="6502CPU.html" title="CPU - 6502" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="NESScrolling1.html" title="NES Scrolling 1" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>PPU - 2C02</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts6">*******************************</span></p>
<p class="rvps2"><span class="rvts6">*NTSC 2C02 technical operation*</span></p>
<p class="rvps2"><span class="rvts6">*******************************</span></p>
<p class="rvps2"><span class="rvts6">Brad Taylor (big_time_software@hotmail.com)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">1st release: Sept 25th, Y2K</span></p>
<p class="rvps2"><span class="rvts6">2nd release: Jan &nbsp;27th, 2K3</span></p>
<p class="rvps2"><span class="rvts6">3rd release: Feb &nbsp; 4th, 2K3</span></p>
<p class="rvps2"><span class="rvts6">4th release: Feb &nbsp;19th, 2K3</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;This document describes the low-level operation and technical details of the 2C02, the NES's PPU. In general, it contains important information in regards to PPU timing, which no NES coder/emulator author should be without. This document assumes that you already understand the basics of how the PPU works, like how the playfield/object images are generated, and the behaviour of scroll/address counters during playfield rendering.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Alot of the concepts behind how the PPU works described here have been extracted from Nintendo's patent documentation (U.S.#4,824,106). With block diagrams of the PPU's architecture (and even some schematics), these papers will definetely aid in the comprehension of this complex device.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Since the first release, this document has been given a major overhaul. Most sections of the document have been reworked, and new information has been added just about everywhere. If you've read the old version of this document before, I recommend that you read this new one in it's entirity; there's new information even in sections which may look like they haven't changed much.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Topics discussed hereon are as follows.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- Video signal generation</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- PPU base timing</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- Miscellanious PPU info</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- PPU memory access cycles</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- Frame rendering details</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- Scanline rendering details</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- In-range object evaluation</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- Details of playfield render pipeline</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- Details of object pattern fetch &amp; render</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- Extra cycle frames</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- The MMC3's scanline counter</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- PPU pixel priority quirk</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- Graphical enhancements</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">+-------+</span></p>
<p class="rvps2"><span class="rvts6">|History|</span></p>
<p class="rvps2"><span class="rvts6">+-------+</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;On the weekend of Sept. 25th, Y2K, I setup an experiment with my NTSC NES MB &amp; my PC so's I could RE the PPU's timing. What I did was (using a PC interface) analyse the changes that occur on the PPU's address and data pins on every rising &amp; falling edge of the PPU's clock. I was not planning on removing the PPU from the motherboard (yet), so basically I just kept everything intact (minus the stuff I added onto the MB so I could monitor the PPU's signals), and popped in a game, so that it would initialize the PPU for me (I used DK classics, since it was only taking somthing like 4 frames before it was turning on the background/sprites).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The only change I made was taking out the 21 MHz clock generator circuitry. To replace the clock signal, I connected a port controlled latch to the NES's main clock line instead. Now, by writing a 0 or a 1 out to an PC ISA port of my choice (I was using $104), I was able to control the 21 MHz clockline of the NES. After I would create a rise or a fall on the NES's clock line, I would then read in the data that appeared on the PPU's address and data pins, which included monitoring what PPU registers the game read/wrote to (&amp; the data that was read/written).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">+-----------------------+</span></p>
<p class="rvps2"><span class="rvts6">|Video signal generation|</span></p>
<p class="rvps2"><span class="rvts6">+-----------------------+</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;A 21.48 MHz clock signal is fed into the PPU. This is the NES's main clock line, which is shared by the CPU.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Inside the PPU, the 21.48 MHz signal is used to clock a three-stage Johnson counter. The complimentery outputs of both master and slave portions of each stage are used to form 12 mutually exclusive output phases- all 3.58 MHz each (the NTSC colorburst). These 12 different phases form the basis of all color generation for the PPU's composite video output.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Naturally, when the user programs the lower 4-bits of a palette register, they are essentially selecting any 1 of 12 phases to be routed to the PPU's video out pin (this corresponds to chrominance (tint/hue) video information) when the appropriate pixel indexes it. Other chrominance combinations (0 &amp; 13) are simply hardwired to a 1 or 0 to generate grayscale pixels.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Bits 4 &amp; 5 of a palette entry selects 1 of 4 linear DC voltage offsets to apply to the selected chrominance signal (this corresponds to luminance (brightness) video information) for a pixel.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Chrominance values 14 &amp; 15 yield a black pixel color, regardless of any luminance value setting.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Luminance value 0, mixed with chrominance value 13 yield a "blacker than black" pixel color. This super black pixel has an output voltage level close to the vertical/horizontal syncronization pulses. Because of this, some video monitors will display warped/distorted screens for games which use this color for black (Game Genie is the best example of this). Essentially what is happening is the video monitor's horizontal timing is compromised by what it thinks are extra syncronization pulses in the scanline. This is not damaging to the monitors which are effected by it, but use of the super black color should be avoided, due to the graphical distortion it causes.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The amplitude of the selected chrominance signal (via the 4 lower bits of a palette register) remain constant regardless of bits 4 or 5. Thus it is not possible to adjust the saturation level of a particular color.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">+---------------+</span></p>
<p class="rvps2"><span class="rvts6">|PPU base timing|</span></p>
<p class="rvps2"><span class="rvts6">+---------------+</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Other than the 3-stage Johnson counter, the 21.48 MHz signal is not used directly by any other PPU hardware. Instead, the signal is divided by 4 to get 5.37 MHz, and is used as the smallest unit of timing in the PPU. All following references to PPU clock cycle (abbr. "cc") timing in this document will be in respect to this timing base, unless otherwise indicated.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- Pixels are rendered at the same rate as the base PPU clock. In other words, 1 clock cycle= 1 pixel.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- 341 PPU cc's make up the time of a typical scanline (or 341/3 CPU cc's).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- One frame consists of 262 scanlines. This equals 341*262 PPU cc's per frame (divide by 3 for # of CPU cc's).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">+------------------------+</span></p>
<p class="rvps2"><span class="rvts6">|PPU memory access cycles|</span></p>
<p class="rvps2"><span class="rvts6">+------------------------+</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;All PPU memory access cycles are 2 clocks long, and can be made back-to-back (typically done during rendering). Here's how the access breaks down:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;At the beginning of the access cycle, PPU address lines 8..13 are updated with the target address. This data remains here until the next time an access cycle occurs.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The lower 8-bits of the PPU address lines are multiplexed with the data bus, to reduce the PPU's pin count. On the first clock cycle of the access, A0..A7 are put on the PPU's data bus, and the ALE (address latch enable) line is activated for the first half of the cycle. This loads the lower 8-bit address into an external 8-bit transparent latch strobed by ALE (74LS373 is used).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;On the second clock cycle, the /RD (or /WR) line is activated, and stays active for the entire cycle. Appropriate data is driven onto the bus during this time.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">+----------------------+</span></p>
<p class="rvps2"><span class="rvts6">|Miscellanious PPU info|</span></p>
<p class="rvps2"><span class="rvts6">+----------------------+</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- Sprite DMA is 1536 clock cycles long (512 CPU cc's). 256 individual transfers are made from CPU memory to a temp register inside the CPU, then from the CPU's temp reg, to $2004.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- The PPU makes NO external access to the PPU bus, unless the playfield or objects are enabled during a scanline outside vblank. This means that the PPU's address and data busses are dead while in this state.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- palette RAM is accessed internally during playfield rendering (i.e., the palette address/data is never put on the PPU bus during this time). Additionally, when the programmer accesses palette RAM via $2006/7, the palette address accessed actually does show up on the PPU address bus, but the PPU's /RD &amp; /WR flags are not activated. This is required; to prevent writing over name table data falling under the approprite mirrored area (since the name table RAM's address decoder simply consists of an inverter connected to the A13 line- effectively decoding all addresses in $2000-$3FFF).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- the VINT impulse (NMI) and bit $2002.7 are set simultaniously. Reading $2002 will reset bit 7, but it seems that the VINT flag goes down on it's own. Because of this, when the PPU generates a VINT, it doesn't require any acknowledgement whatsoever; it will continue firing off VINTs, regardless of inservice to $2002. The only way to stop VINTs is to clear $2000.7.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- Because the PPU cannot make a read from PPU memory immediately upon request (via $2007), there is an internal buffer, which acts as a 1-stage data pipeline. As a read is requested, the contents of the read buffer are returned to the NES's CPU. After this, at the PPU's earliest convience (according to PPU read cycle timings), the PPU will fetch the requested data from the PPU memory, and throw it in the read buffer. Writes to PPU mem via $2007 are pipelined as well, but it is unknown to me if the PPU uses this same buffer (this could be easily tested by writing somthing to $2007, and seeing if the same value is returned immediately after reading).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">+-----------------------+</span></p>
<p class="rvps2"><span class="rvts6">|Frame rendering details|</span></p>
<p class="rvps2"><span class="rvts6">+-----------------------+</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; The following describes the PPU's status during all 262 scanlines of a frame. Any scanlines where work is done (like image rendering), consists of the steps which will be described in the next section.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;0..19:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Starting at the instant the VINT flag is pulled down (when a NMI is generated), 20 scanlines make up the period of time on the PPU which I like to call the VINT period. During this time, the PPU makes no access to it's external memory (i.e. name / pattern tables, etc.).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;20:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">After 20 scanlines worth of time go by (since the VINT flag was set), the PPU starts to render scanlines. This first scanline is a dummy one; although it will access it's external memory in the same sequence it would for drawing a valid scanline, no on-screen pixels are rendered during this time, making the fetched background data immaterial. Both horizontal *and* vertical scroll counters are updated (presumably) at cc offset 256 in this scanline. Other than that, the operation of this scanline is identical to any other. The primary reason this scanline exists is to start the object render pipeline, since it takes 256 cc's worth of time to determine which objects are in range or not for any particular scanline.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;21..260: after rendering 1 dummy scanline, the PPU starts to render the actual data to be displayed on the screen. This is done for 240 scanlines, of course.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;261:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">after the very last rendered scanline finishes, the PPU does nothing for 1 scanline (i.e. the programmer gets screwed out of perfectly good VINT time). When this scanline finishes, the VINT flag is set, and the process of drawing lines starts all over again.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">+--------------------------+</span></p>
<p class="rvps2"><span class="rvts6">|Scanline rendering details|</span></p>
<p class="rvps2"><span class="rvts6">+--------------------------+</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Naturally, the PPU will fetch data from name, attribute, and pattern tables during a scanline to produce an image on the screen. This section details the PPU's doings during this time.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;As explained before, external PPU memory can be accessed every 2 cc's. With 341 cc's per scanline, this gives the PPU enough time to make 170 memory accesses per scanline (and it uses all of them!). After the 170th fetch, the PPU does nothing for 1 clock cycle. Remember that a single pixel is rendered every clock cycle.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Memory fetch phase 1 thru 128</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;-----------------------------</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;1. Name table byte</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;2. Attribute table byte</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;3. Pattern table bitmap #0</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;4. Pattern table bitmap #1</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;This process is repeated 32 times (32 tiles in a scanline).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;This is when the PPU retrieves the appropriate data from PPU memory for rendering the playfield. The first playfield tile fetched here is actually the 3rd to be drawn on the screen (the playfield data for the first 2 tiles to be rendered on this scanline are fetched at the end of the scanline prior to this one).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;All valid on-screen pixel data arrives at the PPU's video out pin during this time (256 clocks). For determining the precise delay between when a tile's bitmap fetch phase starts (the whole 4 memory fetches), and when the first pixel of that tile's bitmap data hits the video out pin, the formula is (16-n) clock cycles, where n is the fine horizontal scroll offset (0..7 pixels). This information is relivant for understanding the exact timing operation of the "object 0 collision" flag.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Note that the PPU fetches an attribute table byte for every 8 sequential horizontal pixels it draws. This essentially limits the PPU's color area (the area of pixels which are forced to use the same 3-color palette) to only 8 horizontally sequential pixels.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;It is also during this time that the PPU evaluates the "Y coordinate" entries of all 64 objects in object attribute RAM (OAM), to see if the objects are within range (to be drawn on the screen) for the *next* scanline (this is why Y-coordinate entries in the OAM must be programmed to a value 1 less than the scanline the object is to appear on). Each evaluation (presumably) takes 4 clock cycles, for a total of 256 (which is why it's done during on-screen pixel rendering).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;In-range object evaluation</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;--------------------------</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;An 8-bit comparator is used to calculate the 9-bit difference between the current scanline (minus 21), and each Y-coordinate (plus 1) of every object entry in the OAM. Objects are considered in range if the comparator produces a difference in the range of 0..7 (if $2000.5 currently = 0), or 0..15 (if $2000.5 currently = 1).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;(Note that a 9-bit comparison result is generated. This means that setting object scanline coordinates for ranges -1..-15 are actually interpreted as ranges 241..255. For this reason, objects with these ranges will never be considered to be part of any on-screen scanline range, and will not allow smooth object scrolling off the top of the screen.)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Tile index (8 bits), X-coordinate (8 bits), &amp; attribute information (4 bits; vertical inversion is excluded) from the in-range OAM element, plus the associated 4-bit result of the range comparison accumulate in a part of the PPU called the "sprite temporary memory". Logical inversion is applied to the loaded 4-bit range comparison result, if the object's vertical inversion attribute bit is set.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Since object range evaluations occur sequentially through the OAM (starting from entry 0 to 63), the sprite temporary memory always fills in order from the highest priority in-range object, to lower ones. A 4-bit "in-range" counter is used to determine the number of found objects on the scanline (from 0 up to 8), and serves as an index pointer for placement of found object data into the 8-element sprite temporary memory. The counter is reset at the beginning of the object evaluation phase, and is post-incremented everytime an object is found in-range. This occurs until the counter equals 8, when found object data after this is discarded, and a flag (bit 5 of $2002) is raised, indicating that it is going to be dropping objects for the next scanline.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;An additional memory bit associated with the sprite temporary memory is used to indicate that the primary object (#0) was found to be in range. This will be used later on to detect primary object-to-playfield pixel collisions.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Playfield render pipeline details</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;---------------------------------</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;As pattern table &amp; palette select data is fetched, it is loaded into internal latches (the palette select data is selected from the fetched byte via a 2-bit 1-of-4 selector).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;At the start of a new tile fetch phase (every 8 cc's), both latched pattern table bitmaps are loaded into the upper 8-bits of 2- 16-bit shift registers (which both shift right every clock cycle). The palette select data is also transfered into another latch during this time (which feeds the serial inputs of 2 8-bit right shift registers shifted every clock). The pixel data is fed into these extra shift registers in order to implement fine horizontal scrolling, since the periods when the PPU fetch tile data is fixed.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;A single bit from each shift register is selected, to form the valid 4-bit playfield pixel for the current clock cycle. The bit selection offset is based on the fine horizontal scroll value (this selects bit positions 0..7 for all 4 shift registers). The selected 4-bit pixel data will then be fed into the multiplexer (described later) to be mixed with object data.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Memory fetch phase 129 thru 160</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;-------------------------------</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;1. Garbage name table byte</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;2. Garbage name table byte</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;3. Pattern table bitmap #0 for applicable object (for next scanline)</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;4. Pattern table bitmap #1 for applicable object (for next scanline)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;This process is repeated 8 times.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;This is the period of time when the PPU retrieves the appropriate pattern table data for the objects to be drawn on the *next* scanline. When less than 8 objects exist on the next scanline (as the in-range object evaluation counter indicates), dummy pattern table fetches take place for the remaining fetches. Internally, the fetched dummy-data is discarded, and replaced with completely transparent bitmap patterns).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Although the fetched name table data is thrown away, and the name table address is somewhat unpredictable, the address does seem to relate to the first name table tile to be fetched for the next scanline. This would seem to imply that PPU cc #256 is when the PPU's scroll/address counters have their horizontal scroll values automatically updated.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;It should also be noted that because this fetch is required for objects on the next scanline, it is neccessary for a garbage scanline to exist prior to the very first scanline to be actually rendered, so that object attribute RAM entries can be evaluated, and the appropriate bitmap data retrieved.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;As far as the wasted fetch phases here, well, what can I say. Either Nintendo's engineers were VERY lazy, and didn't want to add the small amount of extra circuitry to the PPU so that 16 object fetches could take place per scanline, or Nintendo couldn't spot the extra memory required to implement 16 object scanlines. Thing is though- between the object attribute mem, sprite temporary &amp; buffer mem, and palette mem, that's already 2406 bits of RAM; I don't think it would've killed them to just add the 408 bits it would've took for an extra 8 objects, which would've made games with horrible OAM cycling (Double Dragon 2 w/ 2 players) look half-decent (hell, with 16 object scanlines, games would hardly even need OAM cycling).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Details of object pattern fetch &amp; render</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;----------------------------------------</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Where the PPU fetches pattern table data for an individual object is conditioned on the contents of the sprite temporary memory element, and $2000.5. If $2000.5 = 0, the tile index data is used as usual, and $2000.3 selects the pattern table to use. If $2000.5 = 1, the MSB of the range result value become the LSB of the indexed tile, and the LSB of the tile index value determines pattern table selection. The lower 3 bits of the range result value are always used as the fine vertical offset into the selected pattern.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Horizontal inversion (bit order reversing) is applied to fetched bitmaps, if indicated in the sprite temporary memory element.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The fetched pattern table data (which is 2 bytes), plus the associated 3 attribute bits (palette select &amp; priority), and the x coordinate byte in sprite temporary memory are then loaded into a part of the PPU called the "sprite buffer memory" (the primary object present bit is also copied). This memory area again, is large enough to hold the contents for 8 sprites.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The composition of one sprite buffer element here is: 2 8-bit shift registers (the fetched pattern table data is loaded in here, where it will be serialized at the appropriate time), a 3-bit latch (which holds the color &amp; priority data for an object), and an 8-bit down counter (this is where the x coordinate is loaded).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The counter is decremented every time the PPU renders a pixel (the first 256 cc's of a scanline; see "Memory fetch phase 1 thru 128" above). When the counter equals 0, the pattern table data in the shift registers will start to serialize (1 shift per clock). Before this time, or 8 clocks after, consider the outputs of the serializers for each stage to be 0 (transparency).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The streams of all 8 object serializers are prioritized, and ultimately only one stream (with palette select &amp; priority information) is selected for output to the multiplexer (where object &amp; playfield pixels are prioritized).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The data for the first sprite buffer entry (including the primary object present flag) has the first chance to enter the multiplexer, if it's output pixel is non-transparent (non-zero). Otherwise, priority is passed to the next serializer in the sprite buffer memory, and the test for non-transparency is made again (the primary object present status will always be passed to the multiplexer as false in this case). This is done until the last (8th) stage is reached, when the object data is passed through unconditionally. Keep in mind that this whole process occurs every clock cycle (hardware is used to determine priority instantly).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The multiplexer does 2 things: determines primary object collisions, and decides which pixel data to pass through to index the palette RAM- either the playfield's or the object's.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Primary object collisions occur when a non-transparent playfield pixel coincides with a non-transparent object pixel, while the primary object present status entering the multiplexer for the current clock cycle is true. This causes a flip-flop ($2002.6) to be set, and remains set (presumably) some time after the VINT occurence (prehaps up until scanline 20?).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The decision for selecting the data to pass through to the palette index is made rather easilly. The condition to use object (opposed to playfield) data is:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;(OBJpri=foreground OR PFpixel=xparent) AND OBJpixel&lt;&gt;xparent</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Since the PPU has 2 palettes; one for objects, and one for playfield, the appropriate palette will be selected depending on which pixel data is passed through.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;After the palette look-up, the operation of events follows the aforementioned steps in the "video signal generation" section.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Memory fetch phase 161 thru 168</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;-------------------------------</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;1. Name table byte</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;2. Attribute table byte</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;3. Pattern table bitmap #0 (for next scanline)</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;4. Pattern table bitmap #1 (for next scanline)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;This process is repeated 2 times.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;It is during this time that the PPU fetches the appliciable playfield data for the first and second tiles to be rendered on the screen for the *next* scanline. These fetches initialize the internal playfield pixel pipelines (2- 16-bit shift registers) with valid bitmap data. The rest of tiles (3..32) are fetched at the beginning of the following scanline.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Memory fetch phase 169 thru 170</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;-------------------------------</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;1. Name table byte</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;2. Name table byte</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;I'm unclear of the reason why this particular access to memory is made. The name table address that is accessed 2 times in a row here, is also the same nametable address that points to the 3rd tile to be rendered on the screen (or basically, the first name table address that will be accessed when the PPU is fetching playfield data on the next scanline).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;After memory access 170</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;-----------------------</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The PPU simply rests for 1 cycle here (or the equivelant of half a memory access cycle) before repeating the whole pixel/scanline rendering process.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">+------------------+</span></p>
<p class="rvps2"><span class="rvts6">|Extra cycle frames|</span></p>
<p class="rvps2"><span class="rvts6">+------------------+</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Scanline 20 is the only scanline that has variable length. On every odd frame, this scanline is only 340 cycles (the dead cycle at the end is removed). This is done to cause a shift in the NTSC colorburst phase.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;You see, a 3.58 MHz signal, the NTSC colorburst, is required to be modulated into a luminance carrying signal in order for color to be generated on an NTSC monitor. Since the PPU's video out consists of basically square waves (as opposed to sine waves, which would be preferred), it takes an entire colorburst cycle (1/3.58 MHz) for an NTSC monitor to identify the color of a PPU pixel accurately.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;But now you remember that the PPU renders pixels at 5.37 MHz- 1.5x the rate of the colorburst. This means that if a single pixel resides on a scanline with a color different to those surrounding it, the pixel will probably be misrepresented on the screen, sometimes appearing faintly.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Well, to somewhat fix this problem, they added this extra pixel into every odd frame (shifting the colorburst phase over a bit), and changing the way the monitor interprets isolated colored pixels each frame. This is why when you play games with detailed background graphics, the background seems to flicker a bit. Once you start scrolling the screen however, it seems as if some pixels become invisible; this is how stationary PPU images would look without this cycle removed from odd frames.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Certain scroll rates expose this NTSC PPU color caveat regardless of the toggling phase shift. Some of Zelda 2's dungeon backgrounds are a good place to see this effect.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">+---------------------------+</span></p>
<p class="rvps2"><span class="rvts6">|The MMC3's scanline counter|</span></p>
<p class="rvps2"><span class="rvts6">+---------------------------+</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;As most people know, the MMC3 bases it's scanline counter on PPU address line A13 (which is why IRQ's can be fired off manually by toggling A13 a bunch of times via $2006). What's not common knowledge is the number of times A13 is expected to toggle in a scanline (although if you've been paying close attention to the doc here, you should already know ;)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;A13 was probably used for the IRQ counter (as opposed to using the PPU's /READ line) because this address line already needed to be connected to the MMC for bankswitching purposes (so in other words, to reduce the MMC3's pin count by 1). They also probably used this method of counting (as opposed to a CPU cycle counter) since A13 cycles (0 -&gt; 1) exactly 42 times per scanline, whereas the CPU count of cycles per scanline is not an exact integer (113.67). Having said that, I guess Nintendo wanted to provide an "easy-to-use" method of generating special image effects, without making programmers have to figure out how many clock cycles to program an IRQ counter with (a pretty lame excuse for not providing an IRQ counter with CPU clock cycle precision (which would have been more useful and versatile)).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Regardless of any values PPU registers are programmed with, A13 will operate in a predictable fashion during image rendering (and if you understand how PPU addressing works, you should understand that A13 is the *only* address line with fixed behaviour during image rendering).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">+------------------------+</span></p>
<p class="rvps2"><span class="rvts6">|PPU pixel priority quirk|</span></p>
<p class="rvps2"><span class="rvts6">+------------------------+</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Object data is prioritized between itself, then prioritized between the playfield. There are some odd side effects to this scheme of rendering, however. For instance, imagine a low priority object pixel with foreground priority, a high priority object pixel with background priority, and a playfield pixel all coinciding (all non-transparent).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Ideally, the playfield is considered to be the middle layer between background and foreground priority objects. This means that the playfield pixel should hide the background priority object pixel (regardless of object priority), and the foreground priority object should appear atop the PF pixel.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;However, because of the way the PPU renders (as just described), OBJ priority is evaluated first, and therefore the background object pixel wins, which means that you'll only be seeing the PF pixel after this mess.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;A good game to demonstrate this behaviour is Megaman 2. Go into airman's stage. First, jump into the energy bar, just to confirm that megaman's sprite is of a higher priority than the energy bar's. Now, get to the second half of the stage, where the clouds cover the energy bar. The energy bar will be ontop of the clouds, but megaman will be behind them. Now, look what happens when you jump into the energy bar here... you see the clouds where megaman underlaps the energy bar.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">+----------------------+</span></p>
<p class="rvps2"><span class="rvts6">|Graphical enhancements|</span></p>
<p class="rvps2"><span class="rvts6">+----------------------+</span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Since an NES cartridge has access to the PPU bus, any number of on-cart hardware schemes can be used to enhance the graphic capabilities of the NES. After all, the PPU's playfield pipeline is very simple: it fetches 272 playfield pixels per scanline (as 34*2 byte fetches, in real-time), and outputs 256 of them to the screen (with the 0..7 pixel offset determined by the fine X scroll register), along with object data combined with it.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Essentially, you can bypass the PPU's simple scrolling system, implement a custom one on your cart (fetching bitmap data in your own fashion), and feed the PPU bitmap data in your own order.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The possibilities of this are endless (like sporting multiple playfields, or even playfield rotation/scaling), but of course what it comes down to is the amount of cartridge hardware required.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Generally, playfield rotation/scaling can be done quite easily- it only requires a few sets of 16-bit registers and adders (the 16 bits are broken up into 8.8 fixed point values). But this kind of implementation is more suited for an integrated circuit, since this would require dozens of discrete logic chips.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Multiple playfields are another thing which could be easily done. The caveat here is that pixel pipelines (i.e., shift registers) and a multiplexer would have to be implemented on the cart (not to mention exclusive name table RAM) in order to process the playfield bitmaps from multiple sources. The access to the CHR-ROM/RAM would also have to increased- but as it stands, the CHR-ROM/RAM bandwidth is 1.34 MHz, a rather low frequency. With a memory device capable of a 10.74 MHz bandwith, you could have 8 playfields to work with. Generally, this would be very useful for displaying multiple huge objects on the screen- without ever having to worry about annoying flicker.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;The only restriction to doing any of this is that:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;- every 8 sequential horizontal pixels sent to the PPU must share the same palette select value. Because of this, hardware would have to be implemented to decide which palette select value to feed the PPU between 8 horizontally sequential pixels, if they do not all share the same palette select value. The on-screen results of this may not be too flattering sometimes, but this is a small price to pay to do some neat graphical tricks on the NES.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;-only the playfield palette can be used. As usual, this pretty much limits your randomly accessable colors to about 12+1.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;It's a damn shame that Nintendo never created a MMC which would enhance graphics on the NES in useful ways as mentioned above. The MMC5 was the only device that came close, and it's only selling features were the single-tile color area, and the vertical split screen mode (which I don't think any game ever used). Considering the amount of pins (100) the MMC5 had, and number of gates they put in it just for the EXRAM (which was 1K bytes), they could've put some really useful graphics hardware inside there instead.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp;Prehaps the infamous Color Dreams "Hellraiser" cart was the closest the NES ever came to seeing such sophisticated graphics. The cart was never released, but from what I've read, it was going to use some sort of frame buffer, and a Z80 CPU to do the graphical rendering. It had been rumored that the game had 3D graphics (or at least 2.5D) in it. If so (and the game was actually good), prehaps it would have raised a few eyebrows in the industry, and inspired Nintendo to develop a new MMC chip with similar capabilities, in order to keep the NES in it's profit margin for another few years (and allow it to compete somewhat with the more advanced systems of the time).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">EOF</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.helpndoc.com">Free Qt Help documentation generator</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">&times;</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>

View File

@ -1,101 +1,291 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>PPU Viewer</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("PPUViewer");
}
});
</script>
<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>PPU Viewer</title>
<meta name="description" content="" />
<meta name="keywords" content="PPU Viewer">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="PPU Viewer">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="PPU Viewer" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>PPU Viewer</h1>
<div id="topic_breadcrumb">
<a href="Debug.html">Debug</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Debug.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Debugger.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="NameTableViewer.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">PPU Viewer</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts12">Introduction</span></p>
<p><br/></p>
<p>The NES architecture includes a 6502 CPU as well as a custom video controller known as a PPU (Picture Processing Unit). &nbsp;The PPU's video memory is separated from the main CPU memory and can be read/written via special ports (see <a class="rvts18" href="PPU.html">PPU Memory</a>).</p>
<p><br/></p>
<p>The PPU viewer will only display the contents of the current PPU memory. It does not alter game data in any way.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Using PPU Viewer</span></p>
<p><br/></p>
<p><span class="rvts10">Show on Scanline</span></p>
<p>This options makes it show what the PPU looks like when the screen is drawing that particular scanline. It is useful for games like SMB, that swap pattern tables mid-frame (e.g. for status bar stuff).</p>
<p><br/></p>
<p>Right clicking on one of the PPU panels will change the palette it is shown with, cycling though pattern palettes, then sprite ones, then a ninth fixed grey palette (useful for inspecting CHR if all the palettes are currently black).</p>
<p><br/></p>
<p>Putting the mouse cursor over a tile will display the tile address. Moving cursor over palette color will give palette address.</p>
<p><br/></p>
<p>When <a class="rvts18" href="CodeDataLogger.html">Code/Data Logger</a> is running, you can also use the "Mask unused graphics" feature. Alternatively, you can only mask tiles that were used (drawn or otherwise accessed) and emphasize the tiles that weren't used (e.g. in order to find secret sprites).</p>
<p>Note: this feature only works with games that use CHR ROM, because Code/Data Logger only logs accesses to CHR ROM.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Produce electronic books easily</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="PPUViewer"
data-hnd-context="16"
data-hnd-title="PPU Viewer"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Debug.html">Debug</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Debug.html" title="Debug" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Debugger.html" title="Debugger" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="NameTableViewer.html" title="Name Table Viewer" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>PPU Viewer</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">PPU Viewer</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Introduction</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The NES architecture includes a 6502 CPU as well as a custom video controller known as a PPU (Picture Processing Unit). &nbsp;The PPU's video memory is separated from the main CPU memory and can be read/written via special ports (see </span><a class="rvts74" href="PPU.html">PPU Memory</a><span class="rvts6">).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The PPU viewer will only display the contents of the current PPU memory. It does not alter game data in any way.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Using PPU Viewer</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Show on Scanline</span></p>
<p class="rvps2"><span class="rvts6">This options makes it show what the PPU looks like when the screen is drawing that particular scanline. It is useful for games like SMB, that swap pattern tables mid-frame (e.g. for status bar stuff).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Right clicking on one of the PPU panels will change the palette it is shown with, cycling though pattern palettes and then sprite ones.</span></p>
<p class="rvps2"><span class="rvts6">Putting the mouse cursor over a tile will display the tile address. Moving cursor over palette color will give palette address.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When </span><a class="rvts74" href="CodeDataLogger.html">Code/Data Logger</a><span class="rvts6"> is running, you can also use the "Mask unused graphics" feature. Alternatively, you can only mask tiles that were used (drawn or otherwise accessed) and emphasize the tiles that weren't used (e.g. in order to find secret sprites).</span></p>
<p class="rvps2"><span class="rvts6">Note: this feature only works with games that use CHR ROM, because Code/Data Logger only logs accesses to CHR ROM.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/help-authoring-tool">Free 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">&times;</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>

View File

@ -1,118 +1,309 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Palette</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Palette");
}
});
</script>
<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>Palette</title>
<meta name="description" content="" />
<meta name="keywords" content="Palette">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Palette">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Palette" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Palette</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="NetworkPlay.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="SoundOptions.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Palette</span></p>
<p><br/></p>
<p>Settings related to the emulator's color palette choices.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts12">NES Palette</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts16">Use Custom Palette</span></p>
<p>Check or uncheck this to switch between default palette and currently loaded custom palette.</p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts16">Load Palette</span></p>
<p>Allows you to load a custom color palette (.pal) file to use for the current game loaded.</p>
<p><br/></p>
<p>A note on on the format of external palettes; Palette files are expected to contain 64 8-bit RGB triplets (each in that order; red comes first in the triplet in the file, then green, then blue). Each 8-bit value represents brightness for that particular color. 0 is minimum, 255 is maximum.</p>
<p><br/></p>
<p>Palettes can be set on a per-game basis. To do this, put a palette file in the same directory the game is in, and add the extension "pal". Examples:</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; File name: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Palette file name:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BigBad.nes &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BigBad.pal</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BigBad.zip &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BigBad.pal</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BigBad.Better.nes &nbsp; BigBad.Better.pal</p>
<p><br/></p>
<p><br/></p>
<p>With so many ways to choose a palette, figuring out which one will be active may be difficult. Here's a list of what palettes will be used, in order from highest priority to least priority(if a condition doesn't exist for a higher priority palette, the emulator will continue down its list of palettes).</p>
<p><br/></p>
<p> &nbsp; &nbsp;* NSF Palette(for NSFs only)</p>
<p> &nbsp; &nbsp;* Palette loaded from the "gameinfo" directory.</p>
<p> &nbsp; &nbsp;* NTSC Color Emulation(only for NTSC NES games).</p>
<p> &nbsp; &nbsp;* VS Unisystem palette(if the game is a VS Unisystem game and a palette is available).</p>
<p> &nbsp; &nbsp;* Custom global palette.</p>
<p> &nbsp; &nbsp;* Default NES palette.</p>
<p><br/></p>
<p><span class="rvts16">Force Grayscale</span></p>
<p>Applies simple Grayscale filter, no matter what palette is currently used.</p>
<p><br/></p>
<p><span class="rvts16">De-emphasis bit swap</span></p>
<p>Every PAL PPU has de-emphasis bits for green and red colors swapped. This option simulates that behavior.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">NTSC Color Emulation</span></p>
<p><br/></p>
<p>If enabled, FCEUX will simulate actual NTSC signal processing. &nbsp;The result should be the actual colors you would see if outputting to an actual NTSC television.</p>
<p><br/></p>
<p>The Tint and Hue knobs can be used to make adjustments to the resulting color change.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free CHM Help documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Palette"
data-hnd-context="54"
data-hnd-title="Palette"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="NetworkPlay.html" title="Network Play" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="SoundOptions.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>Palette</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Palette</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Settings related to the emulator's color palette choices.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">NES Palette</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts21">Use Custom Palette</span></p>
<p class="rvps2"><span class="rvts6">Check or uncheck this to switch between default palette and currently loaded custom palette.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts21">Load Palette</span></p>
<p class="rvps2"><span class="rvts6">Allows you to load a custom color palette (.pal) file to use for the current game loaded.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A note on on the format of external palettes; Palette files are expected to contain 64 8-bit RGB triplets (each in that order; red comes first in the triplet in the file, then green, then blue). Each 8-bit value represents brightness for that particular color. 0 is minimum, 255 is maximum.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Palettes can be set on a per-game basis. To do this, put a palette file in the same directory the game is in, and add the extension "pal". Examples:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;File name: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Palette file name:</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BigBad.nes &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BigBad.pal</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BigBad.zip &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BigBad.pal</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;BigBad.Better.nes &nbsp; BigBad.Better.pal</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">With so many ways to choose a palette, figuring out which one will be active may be difficult. Here's a list of what palettes will be used, in order from highest priority to least priority(if a condition doesn't exist for a higher priority palette, the emulator will continue down its list of palettes).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; * NSF Palette(for NSFs only)</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; * Palette loaded from the "gameinfo" directory.</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; * NTSC Color Emulation(only for NTSC NES games).</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; * VS Unisystem palette(if the game is a VS Unisystem game and a palette is available).</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; * Custom global palette.</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; * Default NES palette.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Force Grayscale</span></p>
<p class="rvps2"><span class="rvts6">Applies simple Grayscale filter, no matter what palette is currently used.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">De-emphasis bit swap</span></p>
<p class="rvps2"><span class="rvts6">Every PAL PPU has de-emphasis bits for green and red colors swapped. This option simulates that behavior.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">NTSC Color Emulation</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If enabled, FCEUX will simulate actual NTSC signal processing. &nbsp;The result should be the actual colors you would see if outputting to an actual NTSC television.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Tint and Hue knobs can be used to make adjustments to the resulting color change.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour/create-help-files-for-the-qt-help-framework">Create help files for the Qt Help Framework</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">&times;</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>

View File

@ -1,108 +1,299 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Palette Options</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("PaletteOptions");
}
});
</script>
<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>Palette Options</title>
<meta name="description" content="" />
<meta name="keywords" content="FCEU-13-default_nitsuja.pal,FCEU-15-nitsuja-new.pal,FCEUX.pal,Nestopia,Palette">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Palette Options">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Palette Options" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Palette Options</h1>
<div id="topic_breadcrumb">
<a href="General.html">General</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="General.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="NES.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Config.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Palette Options</span></p>
<p><br/></p>
<p>FCEUX comes packaged with several palette files. This page describes details for each one.</p>
<p>To load a palette file, see <a class="rvts18" href="Palette.html">Palette config</a>.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts10">FCEUX.pal</span></p>
<p><br/></p>
<p>This is the default palette that FCEUX uses. It is the same palette used in FCEU.12 or earlier, and FCEUD/FCEUXD/FCEUXDSP.</p>
<p><br/></p>
<p><span class="rvts10">FCEU-13-default_nitsuja.pal</span></p>
<p><br/></p>
<p>This is the palette added to FCEU.13 rerecording by Nitsuja.</p>
<p><br/></p>
<p><span class="rvts10">FCEU-15-nitsuja-new.pal</span></p>
<p><br/></p>
<p>This is the palette added to FCEU.15 rerecording by Nitsuja. &nbsp;It is a slight adjustment to the FCEU.13 palette.</p>
<p><br/></p>
<p><span class="rvts10">NESTOPIA_RGB.pal &amp; NESTOPIA_YUV.pal</span></p>
<p><br/></p>
<p>Default palettes of Nestopia.</p>
<p><br/></p>
<p><span class="rvts10">BMF_final2.pal &amp; BMF_final3.pal</span></p>
<p><br/></p>
<p>These palettes were designed by BMF. &nbsp;He customized these by looking at snapshots of his television screen and attempting to replicate them as close as possible.</p>
<p><br/></p>
<p><span class="rvts10">ASQ_realityA.pal &amp; ASQ_realityB.pal</span></p>
<p><br/></p>
<p>BMF palettes had some flaws. &nbsp;AspiringSquire tweaked BMF's palettes and came up with this. &nbsp;They fix issues mostly related to brightness.</p>
<p><br/></p>
<p><span class="rvts10">SONY_CXA2025AS_US.pal</span></p>
<p><br/></p>
<p>This palette is based on the CXA2025AS integrated circuit used in Sony TV-sets.</p>
<p><br/></p>
<p><span class="rvts10">Unsaturated-V6.pal</span></p>
<p><br/></p>
<p>This palette by FirebrandX offers a more realistic brightness/contrast scale of the original console. It was developed using a direct-capture device hooked up to the NES, then error-corrected to the current and final 6th version.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Full-featured Documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="PaletteOptions"
data-hnd-context="69"
data-hnd-title="Palette Options"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="General.html">General</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="General.html" title="General" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="NES.html" title="NES Menu" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Palette Options</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Palette Options</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX comes packaged with several palette files. This page describes details for each one.</span></p>
<p class="rvps2"><span class="rvts6">To load a palette file, see </span><a class="rvts49" href="Palette.html">Palette config</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">FCEUX.pal</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This is the default palette that FCEUX uses. It is the same palette used in FCEU.12 or earlier, and FCEUD/FCEUXD/FCEUXDSP.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">FCEU-13-default_nitsuja.pal</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This is the palette added to FCEU.13 rerecording by Nitsuja.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">FCEU-15-nitsuja-new.pal</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This is the palette added to FCEU.15 rerecording by Nitsuja. &nbsp;It is a slight adjustment to the FCEU.13 palette.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">NESTOPIA_RGB.pal &amp; NESTOPIA_YUV.pal</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Default palettes of Nestopia.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">BMF_final2.pal &amp; BMF_final3.pal</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">These palettes were designed by BMF. &nbsp;He customized these by looking at snapshots of his television screen and attempting to replicate them as close as possible.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">ASQ_realityA.pal &amp; ASQ_realityB.pal</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">BMF palettes had some flaws. &nbsp;AspiringSquire tweaked BMF's palettes and came up with this. &nbsp;They fix issues mostly related to brightness.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">SONY_CXA2025AS_US.pal</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This palette is based on the CXA2025AS integrated circuit used in Sony TV-sets.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Unsaturated-V6.pal</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This palette by FirebrandX offers a more realistic brightness/contrast scale of the original console. It was developed using a direct-capture device hooked up to the NES, then error-corrected to the current and final 6th version.</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.helpndoc.com">Easy EBook and documentation generator</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">&times;</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>

View File

@ -1,83 +1,274 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>RAM Search</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("RAMSearch");
}
});
</script>
<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>RAM Search</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="RAM Search">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="RAM Search" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>RAM Search</h1>
<div id="topic_breadcrumb">
<a href="Tools2.html">Tools</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Tools2.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="CheatSearch.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="RAMWatch.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Ram Search</span></p>
<p><br/></p>
<p>Ram Search is a tool originally written for <a class="rvts18" href="http://code.google.com/p/gens-rerecording/" target="_blank">GENS rerecording</a>. &nbsp;It was ported to FCEUX in version 2.1.2. &nbsp;This dialog has also been ported to <a class="rvts18" href="http://code.google.com/p/snes9x-rr/" target="_blank">SNELS9x-rr</a>, <a class="rvts18" href="http://desmume.org/" target="_blank">Desmume</a>, <a class="rvts18" href="http://code.google.com/p/pcejin/" target="_blank">PCEjin</a>, <a class="rvts18" href="http://code.google.com/p/vba-rerecording/" target="_blank">VBA-rr</a>, <a class="rvts18" href="http://code.google.com/p/pcsxrr/" target="_blank">PCSX-rr</a>, <a class="rvts18" href="http://code.google.com/p/yabause-rr/" target="_blank">Yabause</a>, <a class="rvts18" href="http://code.google.com/p/vbjin/">VBjin</a>, and <a class="rvts18" href="http://code.google.com/p/fbarr/" target="_blank">FBA-rr</a>.</p>
<p><br/></p>
<p><br/></p>
<p>It is designed to filter RAM values just like in the <a class="rvts18" href="CheatSearch.html">Cheat Search</a> dialog. &nbsp;However, it features many options that are lacking in the Cheat Search dialog. &nbsp;Among these are search undo, search preview, a modulus filter, a data size option, signed/unsigned/hex options, autosearch, and several more compare by options.</p>
<p><br/></p>
<p>Documentation on this dialog can be found on TASVideos <a class="rvts18" href="http://tasvideos.org/EmulatorResources/RamSearch.html" target="_blank">here</a>.</p>
<p><br/></p>
<p><span class="rvts41">Hotkeys</span></p>
<p><br/></p>
<p><a class="rvts18" href="MapHotkeys.html">Hotkeys</a> can be assigned to common search commands so they can be easily selected while in the main window.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free HTML Help documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="RAMSearch"
data-hnd-context="18"
data-hnd-title="RAM Search"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Tools2.html">Tools</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Tools2.html" title="Tools" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="CheatSearch.html" title="Cheat Search" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="RAMWatch.html" title="RAM Watch" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>RAM Search</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Ram Search</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Ram Search is a tool originally written for </span><a class="rvts65" href="http://code.google.com/p/gens-rerecording/" target="_blank">GENS rerecording</a><span class="rvts6">. &nbsp;It was ported to FCEUX in version 2.1.2. &nbsp;This dialog has also been ported to </span><a class="rvts65" href="http://code.google.com/p/snes9x-rr/" target="_blank">SNELS9x-rr</a><span class="rvts6">, </span><a class="rvts65" href="http://desmume.org/" target="_blank">Desmume</a><span class="rvts6">, </span><a class="rvts65" href="http://code.google.com/p/pcejin/" target="_blank">PCEjin</a><span class="rvts6">, </span><a class="rvts65" href="http://code.google.com/p/vba-rerecording/" target="_blank">VBA-rr</a><span class="rvts6">, </span><a class="rvts65" href="http://code.google.com/p/pcsxrr/" target="_blank">PCSX-rr</a><span class="rvts6">, </span><a class="rvts65" href="http://code.google.com/p/yabause-rr/" target="_blank">Yabause</a><span class="rvts6">, </span><a class="rvts65" href="http://code.google.com/p/vbjin/">VBjin</a><span class="rvts6">, and </span><a class="rvts65" href="http://code.google.com/p/fbarr/" target="_blank">FBA-rr</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">It is designed to filter RAM values just like in the </span><a class="rvts65" href="CheatSearch.html">Cheat Search</a><span class="rvts6"> dialog. &nbsp;However, it features many options that are lacking in the Cheat Search dialog. &nbsp;Among these are search undo, search preview, a modulus filter, a data size option, signed/unsigned/hex options, autosearch, and several more compare by options.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Documentation on this dialog can be found on TASVideos </span><a class="rvts65" href="http://tasvideos.org/EmulatorResources/RamSearch.html" target="_blank">here</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Hotkeys</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts65" href="MapHotkeys.html">Hotkeys</a><span class="rvts6"> can be assigned to common search commands so they can be easily selected while in the main window.</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.helpndoc.com/create-epub-ebooks">Free EPub producer</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">&times;</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>

View File

@ -1,78 +1,269 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>RAM Watch</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("RAMWatch");
}
});
</script>
<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>RAM Watch</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="RAM Watch">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="RAM Watch" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>RAM Watch</h1>
<div id="topic_breadcrumb">
<a href="Tools2.html">Tools</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Tools2.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="RAMSearch.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="MemoryWatch.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Ram Watch</span></p>
<p><br/></p>
<p>Ram Watch is a tool originally written for <a class="rvts18" href="http://code.google.com/p/gens-rerecording/" target="_blank">GENS rerecording</a>. &nbsp;It was ported to FCEUX in version 2.1.2. &nbsp;This dialog has also been ported to <a class="rvts18" href="http://code.google.com/p/snes9x-rr/" target="_blank">SNES9x-rr</a>, <a class="rvts18" href="http://desmume.org/" target="_blank">Desmume</a>, <a class="rvts18" href="http://code.google.com/p/pcejin/" target="_blank">PCEjin</a>, <a class="rvts18" href="http://code.google.com/p/vba-rerecording/" target="_blank">VBA-rr</a>, <a class="rvts18" href="http://code.google.com/p/pcsxrr/" target="_blank">PCSX-rr</a>, <a class="rvts18" href="http://code.google.com/p/yabause-rr/" target="_blank">Yabause</a>, and <a class="rvts18" href="http://code.google.com/p/fbarr/" target="_blank">FBA-rr</a>.</p>
<p><br/></p>
<p>It is designed to filter ram values just like in the <a class="rvts18" href="CheatSearch.html">Cheat Search</a> dialog. &nbsp;However, it features many options that are lacking in the Cheat Search dialog. &nbsp;Among these are search undo, search preview, a modulus filter, a data size option, signed/unsigned/hex options, autosearch, and several more compare by options.</p>
<p><br/></p>
<p>Documentation on this dialog can be found on TASVideos <a class="rvts18" href="http://tasvideos.org/EmulatorResources/RamWatch.html" target="_blank">here</a>.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/help-authoring-tool">Free help authoring environment</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="RAMWatch"
data-hnd-context="74"
data-hnd-title="RAM Watch"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Tools2.html">Tools</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Tools2.html" title="Tools" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="RAMSearch.html" title="RAM Search" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="MemoryWatch.html" title="Memory Watch" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>RAM Watch</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Ram Watch</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Ram Watch is a tool originally written for </span><a class="rvts66" href="http://code.google.com/p/gens-rerecording/" target="_blank">GENS rerecording</a><span class="rvts6">. &nbsp;It was ported to FCEUX in version 2.1.2. &nbsp;This dialog has also been ported to </span><a class="rvts66" href="http://code.google.com/p/snes9x-rr/" target="_blank">SNES9x-rr</a><span class="rvts6">, </span><a class="rvts66" href="http://desmume.org/" target="_blank">Desmume</a><span class="rvts6">, </span><a class="rvts66" href="http://code.google.com/p/pcejin/" target="_blank">PCEjin</a><span class="rvts6">, </span><a class="rvts66" href="http://code.google.com/p/vba-rerecording/" target="_blank">VBA-rr</a><span class="rvts6">, </span><a class="rvts66" href="http://code.google.com/p/pcsxrr/" target="_blank">PCSX-rr</a><span class="rvts6">, </span><a class="rvts66" href="http://code.google.com/p/yabause-rr/" target="_blank">Yabause</a><span class="rvts6">, and </span><a class="rvts66" href="http://code.google.com/p/fbarr/" target="_blank">FBA-rr</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">It is designed to filter ram values just like in the </span><a class="rvts66" href="CheatSearch.html">Cheat Search</a><span class="rvts6"> dialog. &nbsp;However, it features many options that are lacking in the Cheat Search dialog. &nbsp;Among these are search undo, search preview, a modulus filter, a data size option, signed/unsigned/hex options, autosearch, and several more compare by options.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Documentation on this dialog can be found on TASVideos </span><a class="rvts66" href="http://tasvideos.org/EmulatorResources/RamWatch.html" target="_blank">here</a><span class="rvts6">.</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.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Produce Kindle eBooks easily</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">&times;</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>

View File

@ -1,98 +1,289 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>ROM Hacking</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("ROMHacking");
}
});
</script>
<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>ROM Hacking</title>
<meta name="description" content="" />
<meta name="keywords" content="ROM Hacking">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="ROM Hacking">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="ROM Hacking" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>ROM Hacking</h1>
<div id="topic_breadcrumb">
<a href="FAQGuides.html">FAQ / Guides</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="FAQGuides.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="ToolAssistedSpeedruns.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="NESRAMMappingFindingValues.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">ROM Hacking</span></p>
<p><br/></p>
<p><span class="rvts16">What is ROM Hacking?</span></p>
<p><br/></p>
<p>ROM Hacking is the process of modifying a video game ROM image to alter the game's graphics, dialogue, levels, gameplay, or other gameplay elements. This is usually done by technically-inclined video game fans to breathe new life into a cherished old game, as a creative outlet, or to make essentially new unofficial games using an old game as a foundation.</p>
<p><br/></p>
<p>ROM hacking is generally accomplished through use of a hex editor (a program for editing non-textual data) and various specialized tools such as tile editors, and game-specific tools which are generally used for editing levels, items, and the like, although more advanced tools such as assemblers and debuggers are occasionally used. Once ready, they are usually distributed on the Internet for others to play on an emulator.</p>
<p><br/></p>
<p>For more information on ROM Hacking:</p>
<p><a class="rvts18" href="http://www.gamefaqs.com/console/nes/file/916386/2948">"The ROM Hackers Bible"</a></p>
<p><a class="rvts18" href="http://nesdev.parodius.com/">Parodius - ROM Hacking Community</a></p>
<p><a class="rvts18" href="http://www.rom-hacking.net/old-site/">ROM-Hacking.net Archive</a></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">FCEUX ROM-Hacking Features</span></p>
<p><br/></p>
<p>FCEUX provides a wealth of tools and resources to aid in hacking NES &amp; FDS games. &nbsp;It features the most current and cutting edge tools debugging and hacking games as well as making the process quicker an easier.</p>
<p><br/></p>
<p><span class="rvts10">Debugging / Reverse engineering:</span></p>
<p><a class="rvts18" href="Debugger.html">Debugge</a><a class="rvts18" href="Debugger.html">r</a>, <a class="rvts18" href="TraceLogger.html">Trace Logger</a>, <a class="rvts18" href="CodeDataLogger.html">Code/Data Logger</a>, <a class="rvts18" href="CheatSearch.html">Cheat Search</a>, <span class="rvts18">RAM Filter</span>, <a class="rvts18" href="MovieRecording.html">Movie Making tools/Frame Advance</a></p>
<p><br/></p>
<p><span class="rvts10">Memory &amp; PPU Viewing:</span></p>
<p><a class="rvts18" href="Debugger.html">Debugger</a>, <a class="rvts18" href="PPUViewer.html">PPU Viewer</a>, <a class="rvts18" href="HexEditor.html">Hex Editor</a>, <a class="rvts18" href="TraceLogger.html">Trace Logger</a>, <a class="rvts18" href="CodeDataLogger.html">Code/Data Logger</a></p>
<p><br/></p>
<p><span class="rvts10">ROM Editing / Game Genie Codes</span></p>
<p><a class="rvts18" href="Debugger.html">Debugger</a>, <a class="rvts18" href="HexEditor.html">Hex Editor</a>, <a class="rvts18" href="CheatSearch.html">Cheat Search</a>, <a class="rvts18" href="GameGenieEncoderDecoder.html">Game Genie Decoder/Encoder</a></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Generate EPub eBooks with ease</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="ROMHacking"
data-hnd-context="21"
data-hnd-title="ROM Hacking"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="FAQGuides.html">FAQ / Guides</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="FAQGuides.html" title="FAQ / Guides" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="ToolAssistedSpeedruns.html" title="Tool Assisted Speedruns" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="NESRAMMappingFindingValues.html" title="NES RAM (Mapping/Finding Values)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>ROM Hacking</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">ROM Hacking</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">What is ROM Hacking?</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">ROM Hacking is the process of modifying a video game ROM image to alter the game's graphics, dialogue, levels, gameplay, or other gameplay elements. This is usually done by technically-inclined video game fans to breathe new life into a cherished old game, as a creative outlet, or to make essentially new unofficial games using an old game as a foundation.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">ROM hacking is generally accomplished through use of a hex editor (a program for editing non-textual data) and various specialized tools such as tile editors, and game-specific tools which are generally used for editing levels, items, and the like, although more advanced tools such as assemblers and debuggers are occasionally used. Once ready, they are usually distributed on the Internet for others to play on an emulator.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For more information on ROM Hacking:</span></p>
<p class="rvps2"><a class="rvts23" href="http://www.gamefaqs.com/console/nes/file/916386/2948">"The ROM Hackers Bible"</a></p>
<p class="rvps2"><a class="rvts23" href="http://nesdev.parodius.com/">Parodius - ROM Hacking Community</a></p>
<p class="rvps2"><a class="rvts23" href="http://www.rom-hacking.net/old-site/">ROM-Hacking.net Archive</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">FCEUX ROM-Hacking Features</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX provides a wealth of tools and resources to aid in hacking NES &amp; FDS games. &nbsp;It features the most current and cutting edge tools debugging and hacking games as well as making the process quicker an easier.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Debugging / Reverse engineering:</span></p>
<p class="rvps2"><a class="rvts23" href="Debugger.html">Debugge</a><a class="rvts23" href="Debugger.html">r</a><span class="rvts6">, </span><a class="rvts23" href="TraceLogger.html">Trace Logger</a><span class="rvts6">, </span><a class="rvts23" href="CodeDataLogger.html">Code/Data Logger</a><span class="rvts6">, </span><a class="rvts23" href="CheatSearch.html">Cheat Search</a><span class="rvts6">, </span><span class="rvts23">RAM Filter</span><span class="rvts6">, </span><a class="rvts23" href="MovieRecording.html">Movie Making tools/Frame Advance</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Memory &amp; PPU Viewing:</span></p>
<p class="rvps2"><a class="rvts23" href="Debugger.html">Debugger</a><span class="rvts6">, </span><a class="rvts23" href="PPUViewer.html">PPU Viewer</a><span class="rvts6">, </span><a class="rvts23" href="HexEditor.html">Hex Editor</a><span class="rvts6">, </span><a class="rvts23" href="TraceLogger.html">Trace Logger</a><span class="rvts6">, </span><a class="rvts23" href="CodeDataLogger.html">Code/Data Logger</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">ROM Editing / Game Genie Codes</span></p>
<p class="rvps2"><a class="rvts23" href="Debugger.html">Debugger</a><span class="rvts6">, </span><a class="rvts23" href="HexEditor.html">Hex Editor</a><span class="rvts6">, </span><a class="rvts23" href="CheatSearch.html">Cheat Search</a><span class="rvts6">, </span><a class="rvts23" href="GameGenieEncoderDecoder.html">Game Genie Decoder/Encoder</a></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">What is 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">&times;</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>

View File

@ -1,79 +1,270 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Sound</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Sound");
}
});
</script>
<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>Sound</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Sound">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Sound" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Sound</h1>
<div id="topic_breadcrumb">
<a href="Technicalinformation.html">Technical Information</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Technicalinformation.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="fcs.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="NSFFormat.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Sound</span></p>
<p><br/></p>
<p>Includes specifications for the NSF Format &amp; NES Sound core </p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts18" href="NSFFormat.html">NSF Format</a></p>
<p><br/></p>
<p><a class="rvts18" href="NESSound.html">NES Sound</a></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/iphone-website-generation">Create iPhone web-based documentation</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Sound"
data-hnd-context="28"
data-hnd-title="Sound"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Technicalinformation.html">Technical Information</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Technicalinformation.html" title="Technical Information" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="fcs.html" title="Savestate (.fcs)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="NSFFormat.html" title="NSF Format" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Sound</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Sound</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Includes specifications for the NSF Format &amp; NES Sound core&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts23" href="NSFFormat.html">NSF Format</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts23" href="NESSound.html">NES Sound</a></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.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Write eBooks for the Kindle</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">&times;</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>

View File

@ -1,119 +1,310 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Sound</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("SoundOptions");
}
});
</script>
<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>Sound</title>
<meta name="description" content="" />
<meta name="keywords" content="Mute frame advance,Sound Configuration,Volume">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Sound">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Sound" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Sound</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Palette.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Timing.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Sound Configuration</span></p>
<p><br/></p>
<p>where you can configure sound</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Input/Output format</span></p>
<p><br/></p>
<p>The sound enabled/disabled checkbox will turn on/off FCEUX's sound.<br/><br/></p>
<p>The force 8-bit sound checkbox will override the current sound configuration and use 8-bit sound instead.</p>
<p><br/></p>
<p>You can select the sound quality in the sound quality pull down menu.</p>
<p><br/></p>
<p>Rate sets the audio sample rate.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Mute frame advance</span></p>
<p><br/></p>
<p>If checked, no sound will be produce when frame advance is pressed.</p>
<p><br/></p>
<p><span class="rvts16">Mute Turbo</span></p>
<p><br/></p>
<p>If checked, the sound processing will be bypassed when emulation is in turbo mode</p>
<p><br/></p>
<p><span class="rvts16">Swap Duty Cycles</span></p>
<p><br/></p>
<p>If checked, replicates the behavior of some famiclones that have duty cycles swapped for square channels.</p>
<p><br/></p>
<p><span class="rvts16">Buffering</span></p>
<p><br/></p>
<p>On older machines, increased buffering may be necessary. &nbsp;If the sound is glitchy or crackling, increasing the buffing time may resolve the issue. &nbsp;Lower buffering settings can reduce sound latency.</p>
<p><br/></p>
<p><span class="rvts16">Volume Control</span></p>
<p><br/></p>
<p>Sets the sound volume of the master sound or individual sound channels.</p>
<p><br/></p>
<p><span class="rvts10">Master</span></p>
<p><br/></p>
<p>Sets the Master volume level. &nbsp;You can also set volume levels using the sound volume up, volume down, mute, and volume normal hotkeys under map <a class="rvts18" href="MapHotkeys.html">hotkeys menu</a>.</p>
<p><br/></p>
<p><span class="rvts10">Triangle/Square 1/Square 2/Noise/PCM</span></p>
<p><br/></p>
<p>Sets the volume to each individual sound channel.</p>
<p><br/></p>
<p>Note: When using low quality sound, the amount of channel control is greatly limited. &nbsp;Some sound channels are disabled.</p>
<p><br/></p>
<p><span class="rvts10">Restore Defaults</span></p>
<p><br/></p>
<p>Restores the master and individual sound channel volumes to their default location.</p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Web Help sites</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="SoundOptions"
data-hnd-context="44"
data-hnd-title="Sound"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Palette.html" title="Palette" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Timing.html" title="Timing" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Sound</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Sound Configuration</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">where you can configure sound</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Input/Output format</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The sound enabled/disabled checkbox will turn on/off FCEUX's sound.</span><br/><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The force 8-bit sound checkbox will override the current sound configuration and use 8-bit sound instead.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can select the sound quality in the sound quality pull down menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Rate sets the audio sample rate.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Mute frame advance</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If checked, no sound will be produce when frame advance is pressed.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Mute Turbo</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If checked, the sound processing will be bypassed when emulation is in turbo mode</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Swap Duty Cycles</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If checked, replicates the behavior of some famiclones that have duty cycles swapped for square channels.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Buffering</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">On older machines, increased buffering may be necessary. &nbsp;If the sound is glitchy or crackling, increasing the buffing time may resolve the issue. &nbsp;Lower buffering settings can reduce sound latency.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Volume Control</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Sets the sound volume of the master sound or individual sound channels.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Master</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Sets the Master volume level. &nbsp;You can also set volume levels using the sound volume up, volume down, mute, and volume normal hotkeys under map </span><a class="rvts59" href="MapHotkeys.html">hotkeys menu</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Triangle/Square 1/Square 2/Noise/PCM</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Sets the volume to each individual sound channel.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Note: When using low quality sound, the amount of channel control is greatly limited. &nbsp;Some sound channels are disabled.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Restore Defaults</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Restores the master and individual sound channel volumes to their default location.</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.helpndoc.com/feature-tour/create-help-files-for-the-qt-help-framework">Produce online help for Qt applications</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">&times;</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>

View File

@ -1,83 +1,274 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>TAS Editor</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("TASEditor");
}
});
</script>
<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>TAS Editor</title>
<meta name="description" content="" />
<meta name="keywords" content="TAS Edit">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="TAS Editor">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="TAS Editor" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>TAS Editor</h1>
<div id="topic_breadcrumb">
<a href="Tools2.html">Tools</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Tools2.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="MemoryWatch.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Covertfcm.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">TAS Editor</span></p>
<p><br/></p>
<p><br/></p>
<p>TAS Editor is an overhaul in the logic of creating TAS movies (see <a class="rvts18" href="ToolAssistedSpeedruns.html">Tool Assisted Speedruns</a>). It is a powerful new design that takes movie making from a "recording" concept to a "creating an input file" way of thinking.</p>
<p><br/></p>
<p>In the 2.2.0 release the TAS Editor was completely redesigned and rewritten, incorporating new experimental ideas.</p>
<p>Now it also has its own Manual, see <span class="rvts32">taseditor.chm</span> or <a class="rvts18" href="http://www.fceux.com/web/help/taseditor/" target="_blank">fceux.com/web/help/taseditor/</a></p>
<p><br/></p>
<p>The tool is only available in Windows version of FCEUX.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Write eBooks for the Kindle</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="TASEditor"
data-hnd-context="49"
data-hnd-title="TAS Editor"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Tools2.html">Tools</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Tools2.html" title="Tools" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="MemoryWatch.html" title="Memory Watch" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Covertfcm.html" title="Convert fcm" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>TAS Editor</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">TAS Editor</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">TAS Editor is an overhaul in the logic of creating TAS movies (see </span><a class="rvts69" href="ToolAssistedSpeedruns.html">Tool Assisted Speedruns</a><span class="rvts6">). It is a powerful new design that takes movie making from a "recording" concept to a "creating an input file" way of thinking.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In the 2.2.0 release the TAS Editor was completely redesigned and rewritten, incorporating new experimental ideas.</span></p>
<p class="rvps2"><span class="rvts6">Now it also has its own Manual, see </span><span class="rvts45">taseditor.chm</span><span class="rvts6"> or </span><a class="rvts69" href="http://www.fceux.com/web/help/taseditor/" target="_blank">fceux.com/web/help/taseditor/</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The tool is only available in Windows version of FCEUX.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/help-authoring-tool">Full-featured multi-format Help generator</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">&times;</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>

View File

@ -1,74 +1,269 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Technical Information</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Technicalinformation");
}
});
</script>
<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>Technical Information</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Technical Information">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Technical Information" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Technical Information</h1>
</div>
<div id="topic_header_nav">
<a href="NESRAMMappingFindingValues.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Movieformats.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Technical Information</span></p>
<p><span class="rvts17"><br/></span></p>
<p>These chapters deal with documentation of specific hardware configurations of the NES and/or how the FCEU core emulates these aspects.</p>
<p><br/></p>
<p>More documentation about NES and Famicom hardware specifications can be found at: <a class="rvts18" href="http://nesdev.parodius.com/">http://nesdev.parodius.com/</a></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Produce Kindle eBooks easily</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Technicalinformation"
data-hnd-context="23"
data-hnd-title="Technical Information"
>
<div class="navigation">
<ol class="breadcrumb">
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="NESRAMMappingFindingValues.html" title="NES RAM (Mapping/Finding Values)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Movieformats.html" title="Movie &amp; Savestate formats" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Technical Information</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Technical Information</span></p>
<p class="rvps2"><span class="rvts22"><br/></span></p>
<p class="rvps2"><span class="rvts6">These chapters deal with documentation of specific hardware configurations of the NES and/or how the FCEU core emulates these aspects.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">More documentation about NES and Famicom hardware specifications can be found at: </span><a class="rvts23" href="http://nesdev.parodius.com/">http://nesdev.parodius.com/</a></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/help-authoring-tool">Free help authoring environment</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">&times;</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>

View File

@ -1,167 +1,358 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Text Hooker</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("TextHooker");
}
});
</script>
<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>Text Hooker</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Text Hooker">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Text Hooker" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Text Hooker</h1>
<div id="topic_breadcrumb">
<a href="Tools2.html">Tools</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Tools2.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="AutoFireConfigurations.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Debug.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Text Hooker</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">(written by Ugly Joe, author of the Text Hooker tool)</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts27">What is Text Hooker? </span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Here's a premise for you. Suppose you've pirated a bunch of Japanese NES roms and you load one of them up at random. Cool music. Cool title screen. You go to start a game, put in ???? at the name entry screen, and get to the actual game. Well, big surprise here, it's an RPG. You soon realize that you have no idea what people are saying, what shops are selling, or what your battle options are. It can be fun to trial-and-error for a while, but you're ultimately stuck in the first town. Time to load up a new ROM.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Well, being the aspiring Japanophile that I am, I have all kinds of translation tools and websites at my disposal. It's not impossible for me to figure out the kana for an item name, put it into a website somewhere, and figure out what it is. It's a slow process, but I can figure out short, simple strings of Japanese text. Sometimes, this is all I need to know to get by.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">This is why I made the Text Hooker. What it allows you to do is highlight text boxes in the game and copy the kana right to the clipboard. I no longer have to look up stuff, I can just copy from the emulator, paste into the website, and go from there. While developing it, I took it a bit further by adding a (shoddy) translator right into the app, and added features such as word substitutions (so you only have to look up the word once and then the app will know what it is as soon as you copy it). What you end up with is kind of like a translator's notebook. It keeps commonly used words in a dictionary and helps you get through a Japanese game without having too much knowledge of the Japanese language.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts27">What do I need to use to use it?</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts16">Some knowledge of the Japanese language</span></p>
<p><span class="rvts10">I really can't say how much you need to know, but I suppose the more you know the better. I could be wrong, but I think you need to know at least something about the language before you can start copy/pasting translations.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts16">Know how to make a Japanese table file</span></p>
<p><span class="rvts10">I'm not going to explain how to do this since there are adequate tutorials already out there. You'll need to be able to do this per game in order for the Text Hooker to work.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Japanese font support</span></p>
<p><span class="rvts10">Okay, I have tested this thing on a Win98 installation with no Japanese font. It still works. However, I didn't test it for very long and I'm not sure how well translation websites are going to work without it. So, it might work without Japanese font support, but I'm not officially saying it does.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">A Japanese ROM</span></p>
<p><span class="rvts10">Duh, you'll need a game to play. Find it yourself.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts27">How do I use the Text Hooker?</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">First of all, you need to make your table file. The text hooker doesn't use Thingy tables, but uses a modified Thingy table instead. So, make your standard Thingy table file, but save it with a .tht extension (instead of .tbl). What you need to add to the table are the dakuten and handakuten marks (tenten and maru). The byte for the dakuten mark needs to be set to tenten and the byte for the handakuten mark needs to be set to tenten. Like:</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">DC=tenten</span></p>
<p><span class="rvts10">DD=maru</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">If you don't do this, the Text Hooker will fail miserabley when copying the text over from the game.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Once you have your table file ready, open up your rom in FCEUXDSP CE and open the text hooker window (Tools -&gt; Text Hooker). Click on the "Load Table" button and open up your .tht file. Now you can really get ready to work.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts16">Basic Usage</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">A warning</span></p>
<p><span class="rvts10">All information is saved in the table file. You have to save your table manually using the Save Table button. If you close the Text Hooker window or load a different table, your changes since the last save will be lost. You will not be prompted to save changes. Please remember to save!</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Making Selections</span></p>
<p><span class="rvts10">The Selection Window is where you select the text in the game. It is basically the same view as the actual emulator window, but it updates less often and does not show sprites (text is not drawn with sprites, so they are not needed). To make a selection, click on a deselected tile and drag your mouse. To remove a selection, click on a selected tile and drag your mouse. It works a lot like a pen tool and an eraser tool in standard paint programs.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Once you have made a selection, you can save it for later use. This comes in handy since most RPGs will display their text boxes and battle menus in the same place throughout the entire game. To save a selection, type a name for the selection into the New Selection Name field and press the Save Selection button. Note that this selection will not be saved to your table file until you press the Save Table button.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">You can also use the Clear Selection button to deselect all of the tiles in the selection window.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Please note that when you select text, you should not select the mostly blank rows that contains the dakuten and handakuten marks. You're essentially selecting every other row. Please see the UI image above for an example.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Translating Text</span></p>
<p><span class="rvts10">Once you've made a selection, press the big Snap button to copy the text into the Hooked Text window. Only the tiles that are defined in your table file will be copied over. All other tiles will be ignored. Once you have some Japanese text in your Hooked Text window, you have a few options. You can press the Excite.co.jp button to receive a really bad translation (better than Babelfish, but still bad) in the Translated Text window, or you can select all or part of the text in the Hooked Text window and copy/paste it into another translation tool or website. If you're translating a block of text (as opposed to item names or menus), you should probably use the Trim button to clean up the excess whitespace.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Please bear in mind that, due to the limitations of the NES, Japenese games use very little kanji. This means you'll have to look up the kana representation of what would normally be a kanji. Most translation tools will give you a hard time about this.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">The word substitution feature can be used to process the selected text before it is sent to the Hooked Text window. By entering in Japanese-to-English definitions, you build up your word subs dictionary. If word subs are enabled and you press the snap button, the selected text is checked against your dictionary and any words that it finds are replaced by their definition.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">This is useful for a few reason. One, many words written in katakana don't translate too well. You can use this to stop the translators from mangling them. Two, character names are often the same thing as words. For example, if your character's name is ??? (Sakura), the translator will likely translate it to “cherry blossom”. If you define ??? as Sakura, then you won't have to worry about that. Three, you only really need to translate menus and items once. Once you have them figured out, add them to your dictionary. This way, you can just select your menu (perhaps from a saved selection?) and press Snap -- instant menu translation! Four, I'm not positive about this, but if you know that a string of kana is going to always mean a particular kanji, you could put the kana in the Japanese side and the kanji in the English side. This would aid translators since it wouldn't have to try and figure it out itself. Note that I haven't tested that last one since I don't know enough kanji to put it to the test.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Again, please remember that your dictionary will not be saved unless you use the Save Table button.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts16">Tweaking</span></p>
<p><span class="rvts10">Here are some other helpful features.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Pause Button: this is used to pause and unpause the emulator.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Scanline: this is used to determine on what scanline the Selection Window will be updated. Some games will switch their font tiles in and out of the PPU. If this happens, you may need to change the scanline to a bigger number in order to see the tiles you're looking for. For example, this happens a lot in the game Metal Slader Glory.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Update every x frames: this is used to determine how often the Selection Window is updated. The smaller the number, the slower the emulator will go.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Selection Window checkbox: this is used to determine whether or not the selection window should be updated. If you're not going to be needing the Text Hooker for a while, you should probably uncheck this box while you play.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Word Substitution checkbox: this is used to determine whether or not word substitution will be used.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">(han)dakuten mark position checkbox: this is used to tell the text hooker where the dakuten and handakuten marks are located in relation to the kana. Most games will use Above, but some games that try to squeeze in as much text into a small area as possible will use Right.</span></p>
<p><span class="rvts10">Features &gt; Text Hooker &gt; Reference</span></p>
<p><span class="rvts10">Features &gt; Text Hooker &gt; Reference &gt; Text Hooker Table file reference</span></p>
<p><span class="rvts10">I suppose this is the kind of thing that should be documented, so here it is. When I started to make this thing, I was just using Thingy tables. When I started to add other features, I knew I needed to save them somewhere. It seemed kind of dumb to me to store this information in separate files, so I decided I would append the other sections to the end of the table files. In the far off chance that there becomes some kind of archive for Text Hooker table files, I decided to use a different extension.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">A .tht file is comprised of three parts (and possibly more in the future). The first part resembles a Thingy table, since it's more or less that same thing. You have a hex byte value, and equals sign, and the corresponding character after the equals sign. The biggest difference from Thingy tables is that the tenten and maru marks must be defined using the words tenten and maru.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">The next section is the Selections storage. This section begins with a</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">[selections]</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">declaration. What follows are hashes for saved selections (name of selection, equals sign, hash). The hashes should be safe for viewing and saving in any text editor that is capable of viewing and saving Japanese text. These hashes are, admittedly, under tested. If anyone can find a situation in which the selection hashes are corrupted but the rest of the table file is not, please let me know.</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">Up next is the Word Substitution Dictionary. This section begins with a</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">[words]</span></p>
<p><span class="rvts10"><br/></span></p>
<p><span class="rvts10">declaration. These lines are formatted in a Japanese=English manner. You should be able to have Japanese or English on either or both sides. It's nothing more than a list of values used during a search and replace function. </span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Easy EPub and documentation editor</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="TextHooker"
data-hnd-context="60"
data-hnd-title="Text Hooker"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Tools2.html">Tools</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Tools2.html" title="Tools" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="AutoFireConfigurations.html" title="Auto Fire Settings" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Debug.html" title="Debug" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Text Hooker</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Text Hooker</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">(written by Ugly Joe, author of the Text Hooker tool)</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts37">What is Text Hooker?&nbsp;</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Here's a premise for you. Suppose you've pirated a bunch of Japanese NES roms and you load one of them up at random. Cool music. Cool title screen. You go to start a game, put in ???? at the name entry screen, and get to the actual game. Well, big surprise here, it's an RPG. You soon realize that you have no idea what people are saying, what shops are selling, or what your battle options are. It can be fun to trial-and-error for a while, but you're ultimately stuck in the first town. Time to load up a new ROM.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Well, being the aspiring Japanophile that I am, I have all kinds of translation tools and websites at my disposal. It's not impossible for me to figure out the kana for an item name, put it into a website somewhere, and figure out what it is. It's a slow process, but I can figure out short, simple strings of Japanese text. Sometimes, this is all I need to know to get by.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">This is why I made the Text Hooker. What it allows you to do is highlight text boxes in the game and copy the kana right to the clipboard. I no longer have to look up stuff, I can just copy from the emulator, paste into the website, and go from there. While developing it, I took it a bit further by adding a (shoddy) translator right into the app, and added features such as word substitutions (so you only have to look up the word once and then the app will know what it is as soon as you copy it). What you end up with is kind of like a translator's notebook. It keeps commonly used words in a dictionary and helps you get through a Japanese game without having too much knowledge of the Japanese language.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts37">What do I need to use to use it?</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts21">Some knowledge of the Japanese language</span></p>
<p class="rvps2"><span class="rvts15">I really can't say how much you need to know, but I suppose the more you know the better. I could be wrong, but I think you need to know at least something about the language before you can start copy/pasting translations.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts21">Know how to make a Japanese table file</span></p>
<p class="rvps2"><span class="rvts15">I'm not going to explain how to do this since there are adequate tutorials already out there. You'll need to be able to do this per game in order for the Text Hooker to work.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Japanese font support</span></p>
<p class="rvps2"><span class="rvts15">Okay, I have tested this thing on a Win98 installation with no Japanese font. It still works. However, I didn't test it for very long and I'm not sure how well translation websites are going to work without it. So, it might work without Japanese font support, but I'm not officially saying it does.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">A Japanese ROM</span></p>
<p class="rvps2"><span class="rvts15">Duh, you'll need a game to play. Find it yourself.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts37">How do I use the Text Hooker?</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">First of all, you need to make your table file. The text hooker doesn't use Thingy tables, but uses a modified Thingy table instead. So, make your standard Thingy table file, but save it with a .tht extension (instead of .tbl). What you need to add to the table are the dakuten and handakuten marks (tenten and maru). The byte for the dakuten mark needs to be set to tenten and the byte for the handakuten mark needs to be set to tenten. Like:</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">DC=tenten</span></p>
<p class="rvps2"><span class="rvts15">DD=maru</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">If you don't do this, the Text Hooker will fail miserabley when copying the text over from the game.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Once you have your table file ready, open up your rom in FCEUXDSP CE and open the text hooker window (Tools -&gt; Text Hooker). Click on the "Load Table" button and open up your .tht file. Now you can really get ready to work.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts21">Basic Usage</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">A warning</span></p>
<p class="rvps2"><span class="rvts15">All information is saved in the table file. You have to save your table manually using the Save Table button. If you close the Text Hooker window or load a different table, your changes since the last save will be lost. You will not be prompted to save changes. Please remember to save!</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Making Selections</span></p>
<p class="rvps2"><span class="rvts15">The Selection Window is where you select the text in the game. It is basically the same view as the actual emulator window, but it updates less often and does not show sprites (text is not drawn with sprites, so they are not needed). To make a selection, click on a deselected tile and drag your mouse. To remove a selection, click on a selected tile and drag your mouse. It works a lot like a pen tool and an eraser tool in standard paint programs.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Once you have made a selection, you can save it for later use. This comes in handy since most RPGs will display their text boxes and battle menus in the same place throughout the entire game. To save a selection, type a name for the selection into the New Selection Name field and press the Save Selection button. Note that this selection will not be saved to your table file until you press the Save Table button.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">You can also use the Clear Selection button to deselect all of the tiles in the selection window.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Please note that when you select text, you should not select the mostly blank rows that contains the dakuten and handakuten marks. You're essentially selecting every other row. Please see the UI image above for an example.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Translating Text</span></p>
<p class="rvps2"><span class="rvts15">Once you've made a selection, press the big Snap button to copy the text into the Hooked Text window. Only the tiles that are defined in your table file will be copied over. All other tiles will be ignored. Once you have some Japanese text in your Hooked Text window, you have a few options. You can press the Excite.co.jp button to receive a really bad translation (better than Babelfish, but still bad) in the Translated Text window, or you can select all or part of the text in the Hooked Text window and copy/paste it into another translation tool or website. If you're translating a block of text (as opposed to item names or menus), you should probably use the Trim button to clean up the excess whitespace.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Please bear in mind that, due to the limitations of the NES, Japenese games use very little kanji. This means you'll have to look up the kana representation of what would normally be a kanji. Most translation tools will give you a hard time about this.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">The word substitution feature can be used to process the selected text before it is sent to the Hooked Text window. By entering in Japanese-to-English definitions, you build up your word subs dictionary. If word subs are enabled and you press the snap button, the selected text is checked against your dictionary and any words that it finds are replaced by their definition.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">This is useful for a few reason. One, many words written in katakana don't translate too well. You can use this to stop the translators from mangling them. Two, character names are often the same thing as words. For example, if your character's name is ??? (Sakura), the translator will likely translate it to “cherry blossom”. If you define ??? as Sakura, then you won't have to worry about that. Three, you only really need to translate menus and items once. Once you have them figured out, add them to your dictionary. This way, you can just select your menu (perhaps from a saved selection?) and press Snap -- instant menu translation! Four, I'm not positive about this, but if you know that a string of kana is going to always mean a particular kanji, you could put the kana in the Japanese side and the kanji in the English side. This would aid translators since it wouldn't have to try and figure it out itself. Note that I haven't tested that last one since I don't know enough kanji to put it to the test.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Again, please remember that your dictionary will not be saved unless you use the Save Table button.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts21">Tweaking</span></p>
<p class="rvps2"><span class="rvts15">Here are some other helpful features.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Pause Button: this is used to pause and unpause the emulator.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Scanline: this is used to determine on what scanline the Selection Window will be updated. Some games will switch their font tiles in and out of the PPU. If this happens, you may need to change the scanline to a bigger number in order to see the tiles you're looking for. For example, this happens a lot in the game Metal Slader Glory.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Update every x frames: this is used to determine how often the Selection Window is updated. The smaller the number, the slower the emulator will go.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Selection Window checkbox: this is used to determine whether or not the selection window should be updated. If you're not going to be needing the Text Hooker for a while, you should probably uncheck this box while you play.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Word Substitution checkbox: this is used to determine whether or not word substitution will be used.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">(han)dakuten mark position checkbox: this is used to tell the text hooker where the dakuten and handakuten marks are located in relation to the kana. Most games will use Above, but some games that try to squeeze in as much text into a small area as possible will use Right.</span></p>
<p class="rvps2"><span class="rvts15">Features &gt; Text Hooker &gt; Reference</span></p>
<p class="rvps2"><span class="rvts15">Features &gt; Text Hooker &gt; Reference &gt; Text Hooker Table file reference</span></p>
<p class="rvps2"><span class="rvts15">I suppose this is the kind of thing that should be documented, so here it is. When I started to make this thing, I was just using Thingy tables. When I started to add other features, I knew I needed to save them somewhere. It seemed kind of dumb to me to store this information in separate files, so I decided I would append the other sections to the end of the table files. In the far off chance that there becomes some kind of archive for Text Hooker table files, I decided to use a different extension.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">A .tht file is comprised of three parts (and possibly more in the future). The first part resembles a Thingy table, since it's more or less that same thing. You have a hex byte value, and equals sign, and the corresponding character after the equals sign. The biggest difference from Thingy tables is that the tenten and maru marks must be defined using the words tenten and maru.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">The next section is the Selections storage. This section begins with a</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">[selections]</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">declaration. What follows are hashes for saved selections (name of selection, equals sign, hash). The hashes should be safe for viewing and saving in any text editor that is capable of viewing and saving Japanese text. These hashes are, admittedly, under tested. If anyone can find a situation in which the selection hashes are corrupted but the rest of the table file is not, please let me know.</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">Up next is the Word Substitution Dictionary. This section begins with a</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">[words]</span></p>
<p class="rvps2"><span class="rvts15"><br/></span></p>
<p class="rvps2"><span class="rvts15">declaration. These lines are formatted in a Japanese=English manner. You should be able to have Japanese or English on either or both sides. It's nothing more than a list of values used during a search and replace function.&nbsp;</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.helpndoc.com">Free EPub and documentation generator</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">&times;</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>

View File

@ -1,93 +1,284 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Timing</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Timing");
}
});
</script>
<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>Timing</title>
<meta name="description" content="" />
<meta name="keywords" content="Timings">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Timing">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Timing" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Timing</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="SoundOptions.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Video.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Timings</span></p>
<p><br/></p>
<p>Settings related to emulation timing.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Disable Speed Throttling Used When Sound is Disabled</span></p>
<p><br/></p>
<p>If checked, speed throttling will not be used while sound is disabled. &nbsp;(Speed throttling gives a performance boost while sound is off).</p>
<p><span class="rvts16"><br/></span></p>
<p><span class="rvts16">Set High Priority Thread</span></p>
<p><br/></p>
<p>Sets processing priority. &nbsp;Enabling can help slower computers keep a steady 60fps (or 50fps) framerate.</p>
<p><span class="rvts16"><br/></span></p>
<p><span class="rvts16">Overclocking (old PPU only)</span></p>
<p><br/></p>
<p>Overclocks the console by adding dummy scanlines to the usual PPU loop, causing CPU to run more cycles per frame. Can be done in two different ways: by adding <span class="rvts32">Post-render scanlines</span> and by adding <span class="rvts32">Vblank scanlines</span>. The method to be used depends on the game. Maximum value is 999.</p>
<p><span class="rvts16"><br/></span></p>
<p><span class="rvts16">Don't overclock 7-bit samples</span></p>
<p><br/></p>
<p>Such samples are played by the game at the rate it wants, so by running extra cycles, it will generate extra samples. To prevent those from being sped up, this option allows to cancel all the dummy scanlines once a 7-bit sample starts. This hardly affects gameplay, since such samples cause heavy lag, preventing the game from actually operating, so disabling overclocking during them won't slow the game down.</p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Full-featured EBook editor</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Timing"
data-hnd-context="52"
data-hnd-title="Timing"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="SoundOptions.html" title="Sound" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Video.html" title="Video" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Timing</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Timings</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Settings related to emulation timing.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Disable Speed Throttling Used When Sound is Disabled</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If checked, speed throttling will not be used while sound is disabled. &nbsp;(Speed throttling gives a performance boost while sound is off).</span></p>
<p class="rvps2"><span class="rvts21"><br/></span></p>
<p class="rvps2"><span class="rvts21">Set High Priority Thread</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Sets processing priority. &nbsp;Enabling can help slower computers keep a steady 60fps (or 50fps) framerate.</span></p>
<p class="rvps2"><span class="rvts21"><br/></span></p>
<p class="rvps2"><span class="rvts21">Overclocking (old PPU only)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Overclocks the console by adding dummy scanlines to the usual PPU loop, causing CPU to run more cycles per frame. Can be done in two different ways: by adding </span><span class="rvts45">Post-render scanlines</span><span class="rvts6"> and by adding </span><span class="rvts45">Vblank scanlines</span><span class="rvts6">. The method to be used depends on the game. Maximum value is 999.</span></p>
<p class="rvps2"><span class="rvts21"><br/></span></p>
<p class="rvps2"><span class="rvts21">Don't overclock 7-bit samples</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Such samples are played by the game at the rate it wants, so by running extra cycles, it will generate extra samples. To prevent those from being sped up, this option allows to cancel all the dummy scanlines once a 7-bit sample starts. This hardly affects gameplay, since such samples cause heavy lag, preventing the game from actually operating, so disabling overclocking during them won't slow the game down.</span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com">Free EBook and documentation generator</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">&times;</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>

View File

@ -1,205 +1,396 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Menu Items &amp; Submenus</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("ToggleSwitchesHideMenuetc");
}
});
</script>
<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>Menu Items &amp; Submenus</title>
<meta name="description" content="" />
<meta name="keywords" content="Enable Background Input,Enable Rewind,Enable Run in Background,Game Genie,Hide Menu,PAL Emulation,Pause After Movie Playback,Show Movie Status Icon">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Menu Items &amp; Submenus">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Menu Items &amp; Submenus" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Menu Items &amp; Submenus</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Config.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Directories.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts35">Config Toggle Switches</span></p>
<p><br/></p>
<p>Explains the various toggle switch commands in the top two groups of commands under the Config Menu.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Hide Menu</span></p>
<p><br/></p>
<p>Hides the Menu commands on the FCEUX main window. &nbsp;Press ESC to unhide the menu.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Region</span></p>
<p><br/></p>
<p>Allows to choose between NTSC (224p@60fps), PAL and Dendy (240p@50fps) modes. For PAL, FCEUX will detect the proper choice when loading a ROM and set the flag accordingly (based on file name, where<span class="rvts40"> (E) </span>is used by GoodTools to mark European ROMs). Dendy mode (sometimes also called Hybrid) is a modification of the NTSC one, it was used in some Famiclones and supports games released for the NTSC region, slowing them down to PAL speed.</p>
<p>Note: you can't change this setting while a movie is being played or recorded.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts33">PPU </span><span class="rvts36">(Sub-menu)</span></p>
<p><br/></p>
<p><span class="rvts32">New PPU / Old PPU</span></p>
<p>As of FCEUX 2.1.2, FCEUX has a new PPU core. &nbsp;The new PPU has improved accuracy and greater game compatibility than the old PPU. &nbsp;However, some games may not work properly and there will be slight timing differences that would hurt movie compatibility. Also then New PPU is much slower than the Old PPU. Therefore, the old PPU is still the preferred setting.</p>
<p>Note: you can't change this setting while a movie is being played or recorded.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts33">Enable </span><span class="rvts36">(Sub-menu)</span></p>
<p><br/></p>
<p><span class="rvts16">Run in Background</span></p>
<p><br/></p>
<p>If enabled, FCEUX will continue to emulate when the window is not in focus. &nbsp;If disabled, the emulator will pause when out of focus.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Background Input</span></p>
<p><br/></p>
<p>If enabled, FCEUX can continue to receive input while not in focus. &nbsp;(Useful for playing 2 FCEUX's simultaneously)</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Auto-savestates</span></p>
<p><br/></p>
<p>Enables the Auto-save feature. &nbsp;If enabled, FCEUX will make periodic savestates (once per every 256 frames) as you play or record a movie. &nbsp;You can right-click and select the "load last auto-save" in the context menu or press "Load Last Auto-save" <a class="rvts18" href="MapHotkeys.html">hotkey</a> to back up to the last auto-save savestate.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Frame Adv. - Skip Lag</span></p>
<p><br/></p>
<p>This feature, if enabled, will cause the frame advance key (see <a class="rvts18" href="MovieRecording.html">movie recording</a>) to skip over lag frames. &nbsp;It does this by reading the lag counter and skipping past any frames where input is not polled. &nbsp;</p>
<p><br/></p>
<p>For instance, in a 30fps game (such as double dragon), frame advance will advance 2 frames instead of 1.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Backup Savestates</span></p>
<p><br/></p>
<p>Enabled by default. &nbsp;This option allows for savestate &amp; loadstate Undo (&amp; redo).&nbsp;<span class="rvts38"> (see </span><a class="rvts39" href="ContextMenuItems.html">context menu</a><span class="rvts38">)</span></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Compress Savestates</span></p>
<p><br/></p>
<p>Enabled by default. &nbsp;This option compresses non movie savestates.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Game Genie ROM</span></p>
<p><br/></p>
<p>Allows the use of the game genie ROM. &nbsp;You must have a game genie ROM named gg.rom (it is safe to rename a game genie.nes file to gg.rom) and it must be in the FCEUX base directory (which is the folder fceux.exe is in unless you specified a different folder in the <a class="rvts18" href="Directories.html">Directory Override Menu</a>).</p>
<p><br/></p>
<p>If enabled, FCEUX will open gg.rom first when you load a new game. &nbsp;Any codes applied in the game genie screen will be applied to the game just like on a real NES. &nbsp;</p>
<p><br/></p>
<p>(Remember that enabling/disabling Game Genie emulation will not take effect until a new game is loaded)</p>
<p><br/></p>
<p>Note: &nbsp;Game genie codes can also be added with the <a class="rvts18" href="GameGenieEncoderDecoder.html">Game Genie Encoder/Decoder</a> via the <a class="rvts18" href="CheatSearch.html">Cheat Search Menu</a> (and this method does not require a game genie ROM).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Auto-resume old play session</span></p>
<p><br/></p>
<p>If enabled, FCEUX will make a special savestate every time you close ROM, and will automatically load the savestate when you open this ROM next time, so you can continue from where you left the game. In addition, when this option is enabled, FCEUX automatically loads the last used ROM on startup.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts33">Display </span><span class="rvts36">(Sub-Menu)</span></p>
<p><br/></p>
<p><span class="rvts16">Input Display</span></p>
<p><br/></p>
<p>The input display will display 1-4 pictures of a NES controller at the bottom of the screen. &nbsp;When playing/recording a movie, these controllers will display the input that is captured in the file. &nbsp;</p>
<p><br/></p>
<p>When input comes from a movie file rather than then user, it is displayed in a different color (silver)</p>
<p><br/></p>
<p>The input display can also be toggled by hotkey. &nbsp;The default key for toggling the Input display is the "," (comma) key. &nbsp;(This can be re-mapped in the <a class="rvts18" href="MapHotkeys.html">Map Hotkeys Menu</a>).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Lag Counter</span></p>
<p><br/></p>
<p>The lag counter will increment every time to the game fails to poll for user input. &nbsp;It will display in red on any frame that is currently lagging and will increment the lag counter by 1. &nbsp;These situations occur when the game is lagging (too much information to process), or the game is in a screen transition state (so not polling for user input). &nbsp;In &nbsp;a 30fps game (such as Double Dragon 2), it will increment every other frame.</p>
<p><br/></p>
<p>The lag counter value is stored in savestates. &nbsp; &nbsp;</p>
<p><br/></p>
<p>Displaying the lag counter can also be toggled by hotkey. &nbsp;The default key is the "/" (slash) key. &nbsp;(This can be re-mapped in the <a class="rvts18" href="MapHotkeys.html">Map Hokeys Menu)</a>.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Frame Counter</span></p>
<p><br/></p>
<p>Toggles the display of the frame counter. &nbsp;The frame counter will increment once per frame.</p>
<p><br/></p>
<p>The frame counter display can also be toggled by hotkey. &nbsp;The default key is the "." (period) key. &nbsp;(This can be re-mapped in the <a class="rvts18" href="MapHotkeys.html">Map Hotkeys Menu</a>).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Rerecord Counter</span></p>
<p><br/></p>
<p>Toggles the display of the number of Rerecords done when making a movie. &nbsp;The Rerecord counter will increment every time you load a savestate in Recording mode.</p>
<p><br/></p>
<p>The rerecord counter display can also be toggled by hotkey. &nbsp;The default key is the "M" key. &nbsp;(This can be re-mapped in the <a class="rvts18" href="MapHotkeys.html">Map Hotkeys Menu</a>).</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Movie status icon</span></p>
<p><br/></p>
<p>Toggles the display of "pause", "play" or "record" icons in the lower right corner.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">FPS</span></p>
<p><br/></p>
<p>Toggles the display of average FPS counter in the upper right corner.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Graphics: BG</span></p>
<p><br/></p>
<p>Turning this off will turn off the backgrounds in the game.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Graphics: OBJ</span></p>
<p><br/></p>
<p>Turning this off will turn off the objects (sprites) in the game.</p>
<p><br/></p>
<p>Note: You can set the default color when the Backgrounds are turned off. &nbsp;To do so, open fceux.cfg and change the value of the entry named: <span class="rvts37">gNoBGFillColor </span></p>
<p><span class="rvts37"><br/></span></p>
<p><span class="rvts37"><br/></span></p>
<p><span class="rvts16">Save Config File</span></p>
<p><span class="rvts37"><br/></span></p>
<p><span class="rvts21">Saves current settings to fceux.cfg. &nbsp;Normally settings are not saved until FCEUX is closed.</span></p>
<p><span class="rvts37"><br/></span></p>
<p><span class="rvts37"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/iphone-website-generation">Free iPhone documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="ToggleSwitchesHideMenuetc"
data-hnd-context="51"
data-hnd-title="Menu Items & Submenus"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="Directories.html" title="Directories" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Menu Items &amp; Submenus</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts50">Config Toggle Switches</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Explains the various toggle switch commands in the top two groups of commands under the Config Menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Hide Menu</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Hides the Menu commands on the FCEUX main window. &nbsp;Press ESC to unhide the menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Region</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Allows to choose between NTSC (224p@60fps), PAL and Dendy (240p@50fps) modes. For PAL, FCEUX will detect the proper choice when loading a ROM and set the flag accordingly (based on file name, where</span><span class="rvts56"> (E) </span><span class="rvts6">is used by GoodTools to mark European ROMs). Dendy mode (sometimes also called Hybrid) is a modification of the NTSC one, it was used in some Famiclones and supports games released for the NTSC region, slowing them down to PAL speed.</span></p>
<p class="rvps2"><span class="rvts6">Note: you can't change this setting while a movie is being played or recorded.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts48">PPU </span><span class="rvts52">(Sub-menu)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts45">New PPU / Old PPU</span></p>
<p class="rvps2"><span class="rvts6">As of FCEUX 2.1.2, FCEUX has a new PPU core. &nbsp;The new PPU has improved accuracy and greater game compatibility than the old PPU. &nbsp;However, some games may not work properly and there will be slight timing differences that would hurt movie compatibility. Also then New PPU is much slower than the Old PPU. Therefore, the old PPU is still the preferred setting.</span></p>
<p class="rvps2"><span class="rvts6">Note: you can't change this setting while a movie is being played or recorded.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts48">Enable </span><span class="rvts52">(Sub-menu)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Run in Background</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If enabled, FCEUX will continue to emulate when the window is not in focus. &nbsp;If disabled, the emulator will pause when out of focus.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Background Input</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If enabled, FCEUX can continue to receive input while not in focus. &nbsp;(Useful for playing 2 FCEUX's simultaneously)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Auto-savestates</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Enables the Auto-save feature. &nbsp;If enabled, FCEUX will make periodic savestates (once per every 256 frames) as you play or record a movie. &nbsp;You can right-click and select the "load last auto-save" in the context menu or press "Load Last Auto-save" </span><a class="rvts51" href="MapHotkeys.html">hotkey</a><span class="rvts6"> to back up to the last auto-save savestate.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Frame Adv. - Skip Lag</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This feature, if enabled, will cause the frame advance key (see </span><a class="rvts51" href="MovieRecording.html">movie recording</a><span class="rvts6">) to skip over lag frames. &nbsp;It does this by reading the lag counter and skipping past any frames where input is not polled. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For instance, in a 30fps game (such as double dragon), frame advance will advance 2 frames instead of 1.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Backup Savestates</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Enabled by default. &nbsp;This option allows for savestate &amp; loadstate Undo (&amp; redo).&nbsp;</span><span class="rvts54"> (see </span><a class="rvts55" href="ContextMenuItems.html">context menu</a><span class="rvts54">)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Compress Savestates</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Enabled by default. &nbsp;This option compresses non movie savestates.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Game Genie ROM</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Allows the use of the game genie ROM. &nbsp;You must have a game genie ROM named gg.rom (it is safe to rename a game genie.nes file to gg.rom) and it must be in the FCEUX base directory (which is the folder fceux.exe is in unless you specified a different folder in the </span><a class="rvts51" href="Directories.html">Directory Override Menu</a><span class="rvts6">).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If enabled, FCEUX will open gg.rom first when you load a new game. &nbsp;Any codes applied in the game genie screen will be applied to the game just like on a real NES. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">(Remember that enabling/disabling Game Genie emulation will not take effect until a new game is loaded)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Note: &nbsp;Game genie codes can also be added with the </span><a class="rvts51" href="GameGenieEncoderDecoder.html">Game Genie Encoder/Decoder</a><span class="rvts6"> via the </span><a class="rvts51" href="CheatSearch.html">Cheat Search Menu</a><span class="rvts6"> (and this method does not require a game genie ROM).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Auto-resume old play session</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If enabled, FCEUX will make a special savestate every time you close ROM, and will automatically load the savestate when you open this ROM next time, so you can continue from where you left the game. In addition, when this option is enabled, FCEUX automatically loads the last used ROM on startup.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts48">Display </span><span class="rvts52">(Sub-Menu)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Input Display</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The input display will display 1-4 pictures of a NES controller at the bottom of the screen. &nbsp;When playing/recording a movie, these controllers will display the input that is captured in the file. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When input comes from a movie file rather than then user, it is displayed in a different color (silver)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The input display can also be toggled by hotkey. &nbsp;The default key for toggling the Input display is the "," (comma) key. &nbsp;(This can be re-mapped in the </span><a class="rvts51" href="MapHotkeys.html">Map Hotkeys Menu</a><span class="rvts6">).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Lag Counter</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The lag counter will increment every time to the game fails to poll for user input. &nbsp;It will display in red on any frame that is currently lagging and will increment the lag counter by 1. &nbsp;These situations occur when the game is lagging (too much information to process), or the game is in a screen transition state (so not polling for user input). &nbsp;In &nbsp;a 30fps game (such as Double Dragon 2), it will increment every other frame.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The lag counter value is stored in savestates. &nbsp; &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Displaying the lag counter can also be toggled by hotkey. &nbsp;The default key is the "/" (slash) key. &nbsp;(This can be re-mapped in the </span><a class="rvts51" href="MapHotkeys.html">Map Hokeys Menu)</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Frame Counter</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Toggles the display of the frame counter. &nbsp;The frame counter will increment once per frame.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The frame counter display can also be toggled by hotkey. &nbsp;The default key is the "." (period) key. &nbsp;(This can be re-mapped in the </span><a class="rvts51" href="MapHotkeys.html">Map Hotkeys Menu</a><span class="rvts6">).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Rerecord Counter</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Toggles the display of the number of Rerecords done when making a movie. &nbsp;The Rerecord counter will increment every time you load a savestate in Recording mode.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The rerecord counter display can also be toggled by hotkey. &nbsp;The default key is the "M" key. &nbsp;(This can be re-mapped in the </span><a class="rvts51" href="MapHotkeys.html">Map Hotkeys Menu</a><span class="rvts6">).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Movie status icon</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Toggles the display of "pause", "play" or "record" icons in the lower right corner.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">FPS</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Toggles the display of average FPS counter in the upper right corner.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Graphics: BG</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Turning this off will turn off the backgrounds in the game.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Graphics: OBJ</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Turning this off will turn off the objects (sprites) in the game.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Note: You can set the default color when the Backgrounds are turned off. &nbsp;To do so, open fceux.cfg and change the value of the entry named: </span><span class="rvts53">gNoBGFillColor&nbsp;</span></p>
<p class="rvps2"><span class="rvts53"><br/></span></p>
<p class="rvps2"><span class="rvts53"><br/></span></p>
<p class="rvps2"><span class="rvts21">Save Config File</span></p>
<p class="rvps2"><span class="rvts53"><br/></span></p>
<p class="rvps2"><span class="rvts32">Saves current settings to fceux.cfg. &nbsp;Normally settings are not saved until FCEUX is closed.</span></p>
<p class="rvps2"><span class="rvts53"><br/></span></p>
<p class="rvps2"><span class="rvts53"><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.helpndoc.com/feature-tour">Full-featured Help generator</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">&times;</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>

View File

@ -1,127 +1,318 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tool Assisted Speedruns</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("ToolAssistedSpeedruns");
}
});
</script>
<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>Tool Assisted Speedruns</title>
<meta name="description" content="" />
<meta name="keywords" content="Tool Assisted Speedruns">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Tool Assisted Speedruns">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Tool Assisted Speedruns" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Tool Assisted Speedruns</h1>
<div id="topic_breadcrumb">
<a href="FAQGuides.html">FAQ / Guides</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="FAQGuides.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Troubleshooting.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="ROMHacking.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Tool Assisted Speedruns</span></p>
<p><br/></p>
<p><span class="rvts16">What is Tool Assisted Speedrunning?</span></p>
<p><br/></p>
<p>A tool-assisted speedrun (commonly abbreviated TAS) is a speedrun movie or performance produced with the use of tools such as slow motion and re-recording. The basic premise of these runs is that a "tool" (such as an emulator that provides the author with features that are unavailable in regular playing) is used in order to overcome human limitations such as skill and reflex.</p>
<p><br/></p>
<p>Creating a tool-assisted speed run is the process of finding the ideal set of inputs to complete a given criterion - usually completing a game as fast as possible. No limits are imposed on the tools used for this search, but the result has to be a set of timed key-presses that, when played back on the actual console, achieves the target criterion. Traditionally, the only available tool for this was an emulator with re-recording - the ability to use savestate while recording key-presses. However, due to advances in the field, it is now often expected that frame-advance, stepping through emulation one frame at a time, is used. A tool-assisted speed run done without this technique may be criticised as "sloppy play". Before Frame Advance became common, playing in slow motion was a common technique, but Frame Advance has displaced this.</p>
<p><br/></p>
<p>In essence, Tool Assistance allows one to overcome human limitations of skill and reflex in order to push a game to its limits. &nbsp;One important thing to remember is that TAS movies are not competing in terms of playing skill, nor do they claim to. </p>
<p><br/></p>
<p>For more info on Tool Assisted Speedruns:</p>
<p><a class="rvts18" href="http://tasvideos.org/">http://tasvideos.org/</a></p>
<p><a class="rvts18" href="http://tasvideos.org/WhyAndHow.html">http://tasvideos.org/WhyAndHow.html</a></p>
<p><a class="rvts18" href="http://en.wikipedia.org/wiki/Tool-assisted_speedrun">http://en.wikipedia.org/wiki/Tool-assisted_speedrun</a></p>
<p><br/></p>
<p><span class="rvts16">FCEUX TAS features</span></p>
<p><br/></p>
<p>FCEUX provides a wealth of tools and resources for creating TAS Movies for NES &amp; FDS games. &nbsp;It features the most current and cutting edge tools for optimizing movies and making the process of movie making quicker an easier.</p>
<p><br/></p>
<p><span class="rvts10">Basic Recording features:</span></p>
<p><a class="rvts18" href="MovieRecording.html">Frame advance, Slow-downs, "bullet-proof" rerecording</a>, <a class="rvts18" href="TASEditor.html">TAS Editor</a></p>
<p><br/></p>
<p><span class="rvts10">Advanced Recording features </span></p>
<p><a class="rvts18" href="Input.html">Input presets</a>, <a class="rvts18" href="AutoFireConfigurations.html">Auto Hold &amp; Auto-Fire</a></p>
<p><br/></p>
<p><span class="rvts10">Automated Movie Making Processes</span></p>
<p><span class="rvts18">Macros &amp; &nbsp;Multi-tracking</span>, <span class="rvts18">Lua scripting</span>, <span class="rvts18">Basic Bot</span>, </p>
<p><br/></p>
<p><span class="rvts10">Finding RAM values:</span></p>
<p><a class="rvts18" href="CheatSearch.html">Cheat Search</a>, <span class="rvts18">RAM Filter</span>, <a class="rvts18" href="HexEditor.html">Hex Editor</a>, <a class="rvts18" href="Debugger.html">Debugger</a>, <a class="rvts18" href="NESRAMMappingFindingValues.html">NES RAM Guide</a></p>
<p><br/></p>
<p><span class="rvts10">RAM Monitoring:</span></p>
<p><a class="rvts18" href="MemoryWatch.html">Memory Watch</a>, <a class="rvts18" href="HexEditor.html">Hex Editor</a></p>
<p><br/></p>
<p><span class="rvts10">Movie Splicing Editing</span></p>
<p><a class="rvts18" href="fm2.html">Text based file format</a></p>
<p><br/></p>
<p><span class="rvts10">Integrated development system</span></p>
<p><a class="rvts18" href="TASEditor.html">TAS Editor</a></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Movie making</span></p>
<p><span class="rvts16"><br/></span></p>
<p>To get started making a Tool Assisted Movie, simply begin recording a movie (see <a class="rvts18" href="MovieRecording.html">Movie Recording</a>). &nbsp;The basic premise of TASing, however, is to use re-records to optimize the execution of a decided upon goal (usually to complete the game as fast as possible). &nbsp;Re-recording is the act of replacing an already recorded part (of a movie) with something else; also called undo.</p>
<p><br/></p>
<p>In the making of emulator movies, re-recording is done by loading a savestate of earlier event in the movie and continuing playing from that point. &nbsp;The emulator will update the movie file to undo everything that was cancelled by the savestate loading, and continue recording from that point. &nbsp;The makers of tool-assisted speedruns use re-recording very extensively to reach perfection and to avoid mistakes.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;* In single-segment non-assisted speedruns, re-recording is starting over from beginning. The recording of the failed playing is usually not preserved. &nbsp; &nbsp;</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;* In multi-segment non-assisted speedruns, re-recording is starting over from the beginning of current segment. The recording of the failed segment is not preserved. &nbsp; &nbsp;</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;* In tool-assisted speedruns, re-recording only undoes a small part of playing. The undone part will not be seen in the resulting movie. &nbsp;A tool-assisted movie may have been re-recorded anything between 50 and 200000 times, depending on the precision of the movie and the difficulty of the game. &nbsp;Often, the same small passage of the game (could be as small as fractions of second long) is attempted tens of times before continuing. </p>
<p><br/></p>
<p>For more info on making TAS movies:</p>
<p><a class="rvts18" href="http://tasvideos.org/CommonTricks.html">http://tasvideos.org/CommonTricks.html</a></p>
<p><a class="rvts18" href="http://tasvideos.org/GenericTips.html">http://tasvideos.org/GenericTips.html</a></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free HTML Help documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="ToolAssistedSpeedruns"
data-hnd-context="20"
data-hnd-title="Tool Assisted Speedruns"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="FAQGuides.html">FAQ / Guides</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="FAQGuides.html" title="FAQ / Guides" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Troubleshooting.html" title="Troubleshooting" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="ROMHacking.html" title="ROM Hacking" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Tool Assisted Speedruns</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Tool Assisted Speedruns</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">What is Tool Assisted Speedrunning?</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A tool-assisted speedrun (commonly abbreviated TAS) is a speedrun movie or performance produced with the use of tools such as slow motion and re-recording. The basic premise of these runs is that a "tool" (such as an emulator that provides the author with features that are unavailable in regular playing) is used in order to overcome human limitations such as skill and reflex.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Creating a tool-assisted speed run is the process of finding the ideal set of inputs to complete a given criterion - usually completing a game as fast as possible. No limits are imposed on the tools used for this search, but the result has to be a set of timed key-presses that, when played back on the actual console, achieves the target criterion. Traditionally, the only available tool for this was an emulator with re-recording - the ability to use savestate while recording key-presses. However, due to advances in the field, it is now often expected that frame-advance, stepping through emulation one frame at a time, is used. A tool-assisted speed run done without this technique may be criticised as "sloppy play". Before Frame Advance became common, playing in slow motion was a common technique, but Frame Advance has displaced this.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In essence, Tool Assistance allows one to overcome human limitations of skill and reflex in order to push a game to its limits. &nbsp;One important thing to remember is that TAS movies are not competing in terms of playing skill, nor do they claim to.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For more info on Tool Assisted Speedruns:</span></p>
<p class="rvps2"><a class="rvts23" href="http://tasvideos.org/">http://tasvideos.org/</a></p>
<p class="rvps2"><a class="rvts23" href="http://tasvideos.org/WhyAndHow.html">http://tasvideos.org/WhyAndHow.html</a></p>
<p class="rvps2"><a class="rvts23" href="http://en.wikipedia.org/wiki/Tool-assisted_speedrun">http://en.wikipedia.org/wiki/Tool-assisted_speedrun</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">FCEUX TAS features</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX provides a wealth of tools and resources for creating TAS Movies for NES &amp; FDS games. &nbsp;It features the most current and cutting edge tools for optimizing movies and making the process of movie making quicker an easier.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Basic Recording features:</span></p>
<p class="rvps2"><a class="rvts23" href="MovieRecording.html">Frame advance, Slow-downs, "bullet-proof" rerecording</a><span class="rvts6">, </span><a class="rvts23" href="TASEditor.html">TAS Editor</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Advanced Recording features&nbsp;</span></p>
<p class="rvps2"><a class="rvts23" href="Input.html">Input presets</a><span class="rvts6">, </span><a class="rvts23" href="AutoFireConfigurations.html">Auto Hold &amp; Auto-Fire</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Automated Movie Making Processes</span></p>
<p class="rvps2"><span class="rvts23">Macros &amp; &nbsp;Multi-tracking</span><span class="rvts6">, </span><span class="rvts23">Lua scripting</span><span class="rvts6">, </span><span class="rvts23">Basic Bot</span><span class="rvts6">,&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Finding RAM values:</span></p>
<p class="rvps2"><a class="rvts23" href="CheatSearch.html">Cheat Search</a><span class="rvts6">, </span><span class="rvts23">RAM Filter</span><span class="rvts6">, </span><a class="rvts23" href="HexEditor.html">Hex Editor</a><span class="rvts6">, </span><a class="rvts23" href="Debugger.html">Debugger</a><span class="rvts6">, </span><a class="rvts23" href="NESRAMMappingFindingValues.html">NES RAM Guide</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">RAM Monitoring:</span></p>
<p class="rvps2"><a class="rvts23" href="MemoryWatch.html">Memory Watch</a><span class="rvts6">, </span><a class="rvts23" href="HexEditor.html">Hex Editor</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Movie Splicing Editing</span></p>
<p class="rvps2"><a class="rvts23" href="fm2.html">Text based file format</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts15">Integrated development system</span></p>
<p class="rvps2"><a class="rvts23" href="TASEditor.html">TAS Editor</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Movie making</span></p>
<p class="rvps2"><span class="rvts21"><br/></span></p>
<p class="rvps2"><span class="rvts6">To get started making a Tool Assisted Movie, simply begin recording a movie (see </span><a class="rvts23" href="MovieRecording.html">Movie Recording</a><span class="rvts6">). &nbsp;The basic premise of TASing, however, is to use re-records to optimize the execution of a decided upon goal (usually to complete the game as fast as possible). &nbsp;Re-recording is the act of replacing an already recorded part (of a movie) with something else; also called undo.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In the making of emulator movies, re-recording is done by loading a savestate of earlier event in the movie and continuing playing from that point. &nbsp;The emulator will update the movie file to undo everything that was cancelled by the savestate loading, and continue recording from that point. &nbsp;The makers of tool-assisted speedruns use re-recording very extensively to reach perfection and to avoid mistakes.</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">* In single-segment non-assisted speedruns, re-recording is starting over from beginning. The recording of the failed playing is usually not preserved. &nbsp; &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">* In multi-segment non-assisted speedruns, re-recording is starting over from the beginning of current segment. The recording of the failed segment is not preserved. &nbsp; &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">* In tool-assisted speedruns, re-recording only undoes a small part of playing. The undone part will not be seen in the resulting movie. &nbsp;A tool-assisted movie may have been re-recorded anything between 50 and 200000 times, depending on the precision of the movie and the difficulty of the game. &nbsp;Often, the same small passage of the game (could be as small as fractions of second long) is attempted tens of times before continuing.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For more info on making TAS movies:</span></p>
<p class="rvps2"><a class="rvts23" href="http://tasvideos.org/CommonTricks.html">http://tasvideos.org/CommonTricks.html</a></p>
<p class="rvps2"><a class="rvts23" href="http://tasvideos.org/GenericTips.html">http://tasvideos.org/GenericTips.html</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com">Free PDF documentation generator</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">&times;</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>

View File

@ -1,108 +1,303 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Tools</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Tools2");
}
});
</script>
<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>Tools</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Tools">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Tools" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Tools</h1>
</div>
<div id="topic_header_nav">
<a href="ContextMenuItems.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="CheatSearch.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Tools</span></p>
<p><br/></p>
<p><br/></p>
<p>Guides for the specific tools and settings under FCEUX's Tools menu.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts42" href="CheatSearch.html">Cheat Search</a></p>
<p><br/></p>
<p>A guide to using the cheat search tool.</p>
<p><br/></p>
<p><a class="rvts42" href="MemoryWatch.html"><br/></a></p>
<p><a class="rvts42" href="MemoryWatch.html">Memory Watch</a></p>
<p><br/></p>
<p>A guide to using the Memory Watch tool.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts25">RAM Filter</span></p>
<p><br/></p>
<p>A guide to using the RAM filter tool.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts42" href="TASEditor.html">TAS Editor</a></p>
<p><br/></p>
<p>A new tool for making TAS movies.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts42" href="Covertfcm.html">Convert fcm</a></p>
<p><br/></p>
<p>A tool that will convert .fcm movie files to the .fm2 file format.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts42" href="AutoFireConfigurations.html">Auto Fire settings</a></p>
<p><br/></p>
<p>A guide for setting auto-fire, auto-fire offset, and alternate A and B options.</p>
<p><br/></p>
<p><br/></p>
<p><a class="rvts42" href="TextHooker.html">Text Hooker</a></p>
<p><br/></p>
<p>A guide for using the text hooking tool.</p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Free Kindle producer</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Tools2"
data-hnd-context="8"
data-hnd-title="Tools"
>
<div class="navigation">
<ol class="breadcrumb">
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="ContextMenuItems.html" title="Context Menu Items" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="CheatSearch.html" title="Cheat Search" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Tools</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Tools</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Guides for the specific tools and settings under FCEUX's Tools menu.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="CheatSearch.html">Cheat Search</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A guide to using the cheat search tool.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="MemoryWatch.html"><br/></a></p>
<p class="rvps2"><a class="rvts16" href="MemoryWatch.html">Memory Watch</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A guide to using the Memory Watch tool.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts16">RAM Filter</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A guide to using the RAM filter tool.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="TASEditor.html">TAS Editor</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A new tool for making TAS movies.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Covertfcm.html">Convert fcm</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A tool that will convert .fcm movie files to the .fm2 file format.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="AutoFireConfigurations.html">Auto Fire settings</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A guide for setting auto-fire, auto-fire offset, and alternate A and B options.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="TextHooker.html">Text Hooker</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">A guide for using the text hooking tool.</span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/help-authoring-tool">Free 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">&times;</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>

View File

@ -1,104 +1,295 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Trace Logger</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("TraceLogger");
}
});
</script>
<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>Trace Logger</title>
<meta name="description" content="" />
<meta name="keywords" content="Trace Logger">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Trace Logger">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Trace Logger" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Trace Logger</h1>
<div id="topic_breadcrumb">
<a href="Debug.html">Debug</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Debug.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="HexEditor.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="CodeDataLogger.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<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="TraceLogger"
data-hnd-context="38"
data-hnd-title="Trace Logger"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Debug.html">Debug</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Debug.html" title="Debug" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="HexEditor.html" title="Hex Editor" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="CodeDataLogger.html" title="Code/Data Logger" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Trace Logger</h2>
<div class="main-content">
<p></p>
<p><span class="rvts58">Trace Logger</span></p>
<p><br/></p>
<p><span class="rvts16">Introduction</span></p>
<p><br/></p>
<p>The Trace Logger logs every executed instruction and every byte of ROM accessed to the window, or a file if you prefer. &nbsp;Logging to a file is useful if you just want to dump everything that was executed and then search through it later. Logging to the window is useful when you wish to see the instructions that were executed prior to a breakpoint being hit. Both options produce the same data, but the desire to keep that data for a short amount of time or a long amount of time will determine which is best for you.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Using the Trace Logger</span></p>
<p><br/></p>
<p>The Trace Logger is a very nice feature which logs each instruction as it is being executed. If you choose to log to the window, you can set how many lines it will retain before discarding old lines. The higher this setting, the more RAM it will consume, but the more lines you'll have available to work with.</p>
<p><br/></p>
<p>Normally, when logging to window, the Tracer only shows the log if you pause emulator by Pause or Frame Advance hotkey, or by snapping the Debugger. But there is the option to automatically update the log window while the game runs - this is normally useless, unless it is working with the Code/Data Logger to only show newly-executed instructions.</p>
<p><br/></p>
<p class="rvps3"><span class="rvts24">When the code is logged to window, you can browse it using mouse wheel or vertical scrollbar. Double-clicking any address in this window will bring the </span><a class="rvts18" href="Debugger.html">Debugger</a><span class="rvts24"> window at this address. Right-clicking any address allows you to label the address (see Symbolic Debug).</span></p>
<p><br/></p>
<p>You can customize the format of text output in the log:</p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li>whether to log registers state for every instruction, and where to put the data in every text line (to the left or to the right from the code disassembly)</li>
<li>whether to log current frame number, cycles counter, instructions counter</li>
<li>whether to log emulator messages (such as "State 1 loaded")</li>
<li>whether to log Breakpoint Hits (when you use debugger while tracing)</li>
<li>whether to apply Symbolic Debug names when logging. See <a class="rvts18" href="Debugger.html">Debugger</a> section for details</li>
<p class="rvps2"><span class="rvts86">Trace Logger</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Introduction</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Trace Logger logs every executed instruction and every byte of ROM accessed to the window, or a file if you prefer. &nbsp;Logging to a file is useful if you just want to dump everything that was executed and then search through it later. Logging to the window is useful when you wish to see the instructions that were executed prior to a breakpoint being hit. Both options produce the same data, but the desire to keep that data for a short amount of time or a long amount of time will determine which is best for you.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Using the Trace Logger</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Trace Logger is a very nice feature which logs each instruction as it is being executed. If you choose to log to the window, you can set how many lines it will retain before discarding old lines. The higher this setting, the more RAM it will consume, but the more lines you'll have available to work with.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Normally, when logging to window, the Tracer only shows the log if you pause emulator by Pause or Frame Advance hotkey, or by snapping the Debugger. But there is the option to automatically update the log window while the game runs - this is normally useless, unless it is working with the Code/Data Logger to only show newly-executed instructions.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">When the code is logged to window, you can browse it using mouse wheel or vertical scrollbar. Double-clicking any address in this window will bring the </span><a class="rvts87" href="Debugger.html">Debugger</a><span class="rvts6"> window at this address. Right-clicking any address allows you to label the address (see Symbolic Debug).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">You can customize the format of text output in the log:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">whether to log registers state for every instruction, and where to put the data in every text line (to the left or to the right from the code disassembly)</span></li>
<li class="rvps2"><span class="rvts6">whether to log current frame number, cycles counter, instructions counter</span></li>
<li class="rvps2"><span class="rvts6">whether to log emulator messages (such as "State 1 loaded")</span></li>
<li class="rvps2"><span class="rvts6">whether to log Breakpoint Hits (when you use debugger while tracing)</span></li>
<li class="rvps2"><span class="rvts6">whether to apply Symbolic Debug names when logging. See </span><a class="rvts87" href="Debugger.html">Debugger</a><span class="rvts6"> section for details</span></li>
</ul>
<p><br/></p>
<p>For nice visualization of JSRs nesting you can use Stack Pointer for lines tabbing. Since NES games mostly use stack for subroutine calls (and rarely store variables in the stack), this option will likely produce a more readable disassembly. With this option you may also want to put registers data to the left from disassembly text, so they won't be tabbed.</p>
<p><br/></p>
<p>The Trace Logger has extra options which work with the Code/Data Logger so that Tracer only shows instructions executed for the first time, or those which access data for the first time. This can be quite useful for finding certain key routines or finding otherwise impossible-to-find data in almost any game. &nbsp;The best way to use this feature is in conjunction with the option to automatically update the window while logging. Then, as you play the game, you can watch new results appear at once. If you're searching for something specific, first try to get everything (EXCEPT what you're looking for) to execute, then watch closely as what you're looking for executes for the first time.</p>
<p><br/></p>
<p>There are two ways to filter what the Code/Data Logger shows. The first filter lets you log only newly-executed code (so that an instruction is not logged again if it has already been logged). The second logs only instructions when they access data which hadn't been accessed before. Note that both filters can be used at once (which shows bytes that pass either filter).</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">For nice visualization of JSRs nesting you can use Stack Pointer for lines tabbing. Since NES games mostly use stack for subroutine calls (and rarely store variables in the stack), this option will likely produce a more readable disassembly. With this option you may also want to put registers data to the left from disassembly text, so they won't be tabbed.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The Trace Logger has extra options which work with the Code/Data Logger so that Tracer only shows instructions executed for the first time, or those which access data for the first time. This can be quite useful for finding certain key routines or finding otherwise impossible-to-find data in almost any game. &nbsp;The best way to use this feature is in conjunction with the option to automatically update the window while logging. Then, as you play the game, you can watch new results appear at once. If you're searching for something specific, first try to get everything (EXCEPT what you're looking for) to execute, then watch closely as what you're looking for executes for the first time.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">There are two ways to filter what the Code/Data Logger shows. The first filter lets you log only newly-executed code (so that an instruction is not logged again if it has already been logged). The second logs only instructions when they access data which hadn't been accessed before. Note that both filters can be used at once (which shows bytes that pass either filter).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Write eBooks for the Kindle</a></p>
</div>
<div id="topic_footer">
<p class="rvps4" style="clear: both;"><span class="rvts18">Created with the Personal Edition of HelpNDoc: </span><a class="rvts19" href="https://www.helpndoc.com/create-epub-ebooks">Full-featured EPub generator</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">&times;</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>
<div id="topic_footer_content">
2016</div>
</div>
</body>
</html>

View File

@ -1,128 +1,319 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Troubleshooting</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Troubleshooting");
}
});
</script>
<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>Troubleshooting</title>
<meta name="description" content="" />
<meta name="keywords" content="&quot;Can't find FDS Bios image when I attempt to load a .fds game!&quot;,&quot;Directdraw: Error creating secondary surface&quot;,crash,desyncs,Directdraw,disksys.rom,error,fds,FDS Bios,fm2,Full screen,Lua,Palette,slow emulation,Sound crackle,Troubleshooting,Vista">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Troubleshooting">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Troubleshooting" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Troubleshooting</h1>
<div id="topic_breadcrumb">
<a href="FAQGuides.html">FAQ / Guides</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="FAQGuides.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="FAQGuides.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="ToolAssistedSpeedruns.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Troubleshooting</span></p>
<p><br/></p>
<p><br/></p>
<p>This section describes potential problems/question that could arise when using FCEUX.</p>
<p><br/></p>
<p><span class="rvts41">Slow emulation / Sound crackle</span></p>
<p><br/></p>
<p>FCEUX may not run well on slow CPUs.</p>
<p>Ensure that you're using the Old PPU, because the New PPU engine is very slow. Check Config -&gt; PPU -&gt; Old PPU.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">Sound crackle</span></p>
<p><br/></p>
<p>If you enable hardware acceleration and Vsync (Wait for VBlank), and your monitor has a framerate different from 60FPS, you may experience minor sound cracle. This is a known issue and will probably be resolved in a future release.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">Emulated picture is blurred (similar to the bilinear filter)</span></p>
<p><br/></p>
<p>Try choosing different options in the "DirectDraw" list in the <a class="rvts18" href="Video.html">Video</a> config dialog.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">Slow savestates when recording movies</span></p>
<p><br/></p>
<p>On slower computers, savestates can be slow with long movies. &nbsp;A small speedup can be done by disabling Config -&gt; Enable -&gt; Backup savestates.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">The colors in game X do not look right!</span></p>
<p><br/></p>
<p>There's no such thing as a universally right palette for NES games.</p>
<p>FCEUX uses the color palette of the old FCEU / FCEUXD branches. Also FCEUX comes pre-packaged with several additional color palettes. For more information see <a class="rvts18" href="Palette.html">Palette config</a> and <a class="rvts18" href="PaletteOptions.html">Palette options</a>.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">I converted a .fcm file to .fm2, but the .fm2 desyncs</span></p>
<p><br/></p>
<p>Depending on what version of FCEU / Game your .fcm was made, there maybe a number of sync issues. In addition, the .fm2 conversion tool has had some issues on certain operating systems including Vista and Mac. you can try using an external program for movie conversion.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">Can't find FDS Bios image when I attempt to load a .fds game!</span></p>
<p><br/></p>
<p>FCEUX requires the FDS Bios to be named <span class="rvts32">disksys.rom</span>. It must be located in the root directory (where fceux.exe is stored) or in the folder of the FDS Directory override (see <a class="rvts18" href="Directories.html">Directory overrides</a>).</p>
<p><br/></p>
<p>In addition, there are some bad versions of disksys.rom. The one FDS requires is 8192 bytes in size.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">How can I use Netplay / Where can I get FCEU Server?</span></p>
<p><br/></p>
<p>Currently, the Windows version of FCEUX is barely compatible with the FCEU-server code. This is a known issue and will probably be resolved in a future release.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts41">I have a Game Genie rom, how can I use it with FCEUX?</span></p>
<p><br/></p>
<p>While FCEUX has a <a class="rvts18" href="GameGenieEncoderDecoder.html">Game Genie code converter</a>, you can also use game genie codes with an old-school Game Genie ROM. &nbsp;It must be named <span class="rvts32">gg.rom</span> and must be placed in the root directory (where fceux.exe is stored). You must also check <span class="rvts21">Config-&gt;Enable-&gt;Game Genie ROM</span> in the main menu. Then the Game Genie ROM will activate every time you open a ROM, so you can enter GG codes letter-by-letter like they did in the past.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Produce electronic books easily</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Troubleshooting"
data-hnd-context="70"
data-hnd-title="Troubleshooting"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="FAQGuides.html">FAQ / Guides</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="FAQGuides.html" title="FAQ / Guides" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="FAQGuides.html" title="FAQ / Guides" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="ToolAssistedSpeedruns.html" title="Tool Assisted Speedruns" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Troubleshooting</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Troubleshooting</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This section describes potential problems/question that could arise when using FCEUX.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Slow emulation / Sound crackle</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX may not run well on slow CPUs.</span></p>
<p class="rvps2"><span class="rvts6">Ensure that you're using the Old PPU, because the New PPU engine is very slow. Check Config -&gt; PPU -&gt; Old PPU.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Sound crackle</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">If you enable hardware acceleration and Vsync (Wait for VBlank), and your monitor has a framerate different from 60FPS, you may experience minor sound cracle. This is a known issue and will probably be resolved in a future release.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Emulated picture is blurred (similar to the bilinear filter)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Try choosing different options in the "DirectDraw" list in the </span><a class="rvts23" href="Video.html">Video</a><span class="rvts6"> config dialog.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Slow savestates when recording movies</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">On slower computers, savestates can be slow with long movies. &nbsp;A small speedup can be done by disabling Config -&gt; Enable -&gt; Backup savestates.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">The colors in game X do not look right!</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">There's no such thing as a universally right palette for NES games.</span></p>
<p class="rvps2"><span class="rvts6">FCEUX uses the color palette of the old FCEU / FCEUXD branches. Also FCEUX comes pre-packaged with several additional color palettes. For more information see </span><a class="rvts23" href="Palette.html">Palette config</a><span class="rvts6"> and </span><a class="rvts23" href="PaletteOptions.html">Palette options</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">I converted a .fcm file to .fm2, but the .fm2 desyncs</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Depending on what version of FCEU / Game your .fcm was made, there maybe a number of sync issues. In addition, the .fm2 conversion tool has had some issues on certain operating systems including Vista and Mac. you can try using an external program for movie conversion.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Can't find FDS Bios image when I attempt to load a .fds game!</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX requires the FDS Bios to be named </span><span class="rvts45">disksys.rom</span><span class="rvts6">. It must be located in the root directory (where fceux.exe is stored) or in the folder of the FDS Directory override (see </span><a class="rvts23" href="Directories.html">Directory overrides</a><span class="rvts6">).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">In addition, there are some bad versions of disksys.rom. The one FDS requires is 8192 bytes in size.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">How can I use Netplay / Where can I get FCEU Server?</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Currently, the Windows version of FCEUX is barely compatible with the FCEU-server code. This is a known issue and will probably be resolved in a future release.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">I have a Game Genie rom, how can I use it with FCEUX?</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">While FCEUX has a </span><a class="rvts23" href="GameGenieEncoderDecoder.html">Game Genie code converter</a><span class="rvts6">, you can also use game genie codes with an old-school Game Genie ROM. &nbsp;It must be named </span><span class="rvts45">gg.rom</span><span class="rvts6"> and must be placed in the root directory (where fceux.exe is stored). You must also check </span><span class="rvts32">Config-&gt;Enable-&gt;Game Genie ROM</span><span class="rvts6"> in the main menu. Then the Game Genie ROM will activate every time you open a ROM, so you can enter GG codes letter-by-letter like they did in the past.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour">Easily create Web Help sites</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">&times;</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>

View File

@ -1,168 +1,359 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Video</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("Video");
}
});
</script>
<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>Video</title>
<meta name="description" content="" />
<meta name="keywords" content="slow emulation,Video Configuration">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Video">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="Video" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Video</h1>
<div id="topic_breadcrumb">
<a href="Config.html">Config</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Config.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="Timing.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="MovieOptions.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">Video Configuration</span></p>
<p><br/></p>
<p>This window sets various graphics emulation options.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts12">Full Screen Settings</span></p>
<p><br/></p>
<p><span class="rvts41">Full Screen</span></p>
<p>Check this checkbox to enter full screen mode.</p>
<p>Alternatively, you can use a hotkey (Alt+Enter by default) or a double-click (if the "Switch fullscreen by double-click" option is enabled in <a class="rvts18" href="GUI.html">GUI options</a>).</p>
<p><br/></p>
<p><span class="rvts41">Enter full screen mode after game is loaded</span></p>
<p>If checked, FCEUX will enter full screen mode when a game is loaded.</p>
<p><br/></p>
<p><span class="rvts41">Hide mouse cursor</span></p>
<p>If checked, FCEUX will hide mouse cursor when in full screen mode.</p>
<p><br/></p>
<p><span class="rvts41">Mode</span></p>
<p>Sets the image size during full screen mode. By default this is automatically set to match current display resolution. You can change the resolution by entering different values.</p>
<p><br/></p>
<p><span class="rvts41">Special Scaler</span></p>
<p>Within this box is eight options: hq2x, Scale2x, NTSC 2x, hq3x, Scale3x, Prescale2x, Prescale3x, and Prescale4x.</p>
<p>- Scale2x/3x just attempts to render out the corners of the pixels to make them look a bit rounder. "2x" means two times bigger than 1x1 and "3x" means three times bigger than 1x1.</p>
<p>- Hq2x/3x does a much better job than scale2x/3x by smearing the pixels together with a slight blur. However, Hq2x/3x requires a faster computer for decent speed (at least 1 GHz and above). "2x" means two times bigger than 1x1 and "3x" means three times bigger than 1x1.</p>
<p>- NTSC 2x simulates visual artifacts that are produced by analog (composite) video sygnal that the real console generates.</p>
<p>- Prescale2x/3x/4x upscales the source picture using a pixel based (nearest neighbor) algorithm, that allows to change the level of interpolation, applied when using hardware acceleration.</p>
<p><br/></p>
<p><span class="rvts41">Sync Method</span></p>
<p>If the emulator is running poorly, trying out these sync options can help make it run smoother (fix image tearing).</p>
<p><br/></p>
<p><span class="rvts41">DirectDraw</span></p>
<p>If the image is blurry, here you can disable hardware acceleration.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts12">Windowed Settings</span></p>
<p><br/></p>
<p><span class="rvts41">Size Multiplier</span></p>
<p>Takes the image size and multiples the X and Y by a specific amount. You can also change these by clicking and dragging the border of the FCEUX window.</p>
<p><br/></p>
<p><span class="rvts41">Force Integral Scaling Factors</span></p>
<p>If checked, FCEUX window can only be stretched by even amounts (1x, 2x, 3x, etc.). &nbsp;If unchecked, it can be stretched by any amount.</p>
<p>When you are resizing FCEUX window by dragging its borders, you can hold Shift to temporarily invert this option.</p>
<p><br/></p>
<p><span class="rvts41">Force Aspect Ratio Correction</span></p>
<p>Checking this will only allow the correct aspect ratio while resizing the window.</p>
<p><br/></p>
<p><span class="rvts41">Special Scaler</span></p>
<p>Within this box is eight options: hq2x, Scale2x, NTSC 2x, hq3x, Scale3x, Prescale2x, Prescale3x, and Prescale4x.</p>
<p><br/></p>
<p><span class="rvts41">Sync Method</span></p>
<p>If the emulator is running poorly, trying out these sync options can help make it run smoother (fix image tearing).</p>
<p><br/></p>
<p><span class="rvts41">DirectDraw</span></p>
<p>If Vsync doesn't work, here you can enable hardware acceleration.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; </p>
<p><br/></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;"/>
<p><br/></p>
<p>The following options affect both Fullscreen and windowed mode.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Aspect ratio</span></p>
<p><br/></p>
<p><span class="rvts41">Best Fit</span></p>
<p>This is checked by default, so FCEUX will automatically maintain correct aspect ratio for any size of the window. If you uncheck this, the image will be stretched to fill the whole window area.</p>
<p><br/></p>
<p><span class="rvts41">BG color</span></p>
<p>When window size is wider or taller than image size, empty areas of the window are colored black by default. Checking this option will color these areas according to current "background" color of NES palette.</p>
<p><br/></p>
<p><span class="rvts41">Square pixels</span></p>
<p>This is checked by default, so FCEUX will limit the max size of the image to make all pixels share the same width/height. If you uncheck this, the image will be stretched to fill the whole width or height of the window area.</p>
<p><br/></p>
<p><span class="rvts41">TV Aspect</span></p>
<p>Check this if you want to change the image aspect ratio (e.g. to 4:3). You can enter different values in adjacent text fields.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Drawing Area</span></p>
<p><br/></p>
<p><span class="rvts41">First Line</span></p>
<p>Sets the first scan line for NTSC and PAL Modes. This should be left on the default of 8 for NTSC and 0 for PAL.</p>
<p><br/></p>
<p><span class="rvts41">Last Line</span></p>
<p>Sets the last scan line for NTSC and PAL Modes. This should be left on the default of 231 for NTSC and 239 for PAL.</p>
<p><br/></p>
<p><span class="rvts41">Clip left and right sides</span><span class="rvts32"> (8 px on each)</span></p>
<p>If enabled, 8 pixels from each side of the windows will be removed. Some NES games show grapical artifacts on the sides of screen when scrolling (on real hardware too!), so you may hide those artifacts by checking the option.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts27">Emulation</span></p>
<p><br/></p>
<p><span class="rvts41">Allow more than 8 sprites per scanline</span></p>
<p>On real NES hardware, more than 8 sprites on the screen causes flickering. Enabling this option can reduce flickering by allowing more sprites to be visible at once. But if you prefer to stay "true" to NES hardware, this should not be checked, because some games rely on the limitation.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/iphone-website-generation">Create iPhone web-based documentation</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="Video"
data-hnd-context="45"
data-hnd-title="Video"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Config.html">Config</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Config.html" title="Config" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Timing.html" title="Timing" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="MovieOptions.html" title="Movie Options" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>Video</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">Video Configuration</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This window sets various graphics emulation options.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Full Screen Settings</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Full Screen</span></p>
<p class="rvps2"><span class="rvts6">Check this checkbox to enter full screen mode.</span></p>
<p class="rvps2"><span class="rvts6">Alternatively, you can use a hotkey (Alt+Enter by default) or a double-click (if the "Switch fullscreen by double-click" option is enabled in </span><a class="rvts61" href="GUI.html">GUI options</a><span class="rvts6">).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Enter full screen mode after game is loaded</span></p>
<p class="rvps2"><span class="rvts6">If checked, FCEUX will enter full screen mode when a game is loaded.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Hide mouse cursor</span></p>
<p class="rvps2"><span class="rvts6">If checked, FCEUX will hide mouse cursor when in full screen mode.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Mode</span></p>
<p class="rvps2"><span class="rvts6">Sets the image size during full screen mode. By default this is automatically set to match current display resolution. You can change the resolution by entering different values.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Special Scaler</span></p>
<p class="rvps2"><span class="rvts6">Within this box is eight options: hq2x, Scale2x, NTSC 2x, hq3x, Scale3x, Prescale2x, Prescale3x, and Prescale4x.</span></p>
<p class="rvps2"><span class="rvts6">- Scale2x/3x just attempts to render out the corners of the pixels to make them look a bit rounder. "2x" means two times bigger than 1x1 and "3x" means three times bigger than 1x1.</span></p>
<p class="rvps2"><span class="rvts6">- Hq2x/3x does a much better job than scale2x/3x by smearing the pixels together with a slight blur. However, Hq2x/3x requires a faster computer for decent speed (at least 1 GHz and above). "2x" means two times bigger than 1x1 and "3x" means three times bigger than 1x1.</span></p>
<p class="rvps2"><span class="rvts6">- NTSC 2x simulates visual artifacts that are produced by analog (composite) video sygnal that the real console generates.</span></p>
<p class="rvps2"><span class="rvts6">- Prescale2x/3x/4x upscales the source picture using a pixel based (nearest neighbor) algorithm, that allows to change the level of interpolation, applied when using hardware acceleration.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Sync Method</span></p>
<p class="rvps2"><span class="rvts6">If the emulator is running poorly, trying out these sync options can help make it run smoother (fix image tearing).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">DirectDraw</span></p>
<p class="rvps2"><span class="rvts6">If the image is blurry, here you can disable hardware acceleration.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts17">Windowed Settings</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Size Multiplier</span></p>
<p class="rvps2"><span class="rvts6">Takes the image size and multiples the X and Y by a specific amount. You can also change these by clicking and dragging the border of the FCEUX window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Force Integral Scaling Factors</span></p>
<p class="rvps2"><span class="rvts6">If checked, FCEUX window can only be stretched by even amounts (1x, 2x, 3x, etc.). &nbsp;If unchecked, it can be stretched by any amount.</span></p>
<p class="rvps2"><span class="rvts6">When you are resizing FCEUX window by dragging its borders, you can hold Shift to temporarily invert this option.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Force Aspect Ratio Correction</span></p>
<p class="rvps2"><span class="rvts6">Checking this will only allow the correct aspect ratio while resizing the window.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Special Scaler</span></p>
<p class="rvps2"><span class="rvts6">Within this box is eight options: hq2x, Scale2x, NTSC 2x, hq3x, Scale3x, Prescale2x, Prescale3x, and Prescale4x.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Sync Method</span></p>
<p class="rvps2"><span class="rvts6">If the emulator is running poorly, trying out these sync options can help make it run smoother (fix image tearing).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">DirectDraw</span></p>
<p class="rvps2"><span class="rvts6">If Vsync doesn't work, here you can enable hardware acceleration.</span></p>
<p class="rvps2"><span class="rvts6">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<hr style="height: 1px; color : #000000; background-color : #000000; border-width : 0px;">
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The following options affect both Fullscreen and windowed mode.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Aspect ratio</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Best Fit</span></p>
<p class="rvps2"><span class="rvts6">This is checked by default, so FCEUX will automatically maintain correct aspect ratio for any size of the window. If you uncheck this, the image will be stretched to fill the whole window area.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">BG color</span></p>
<p class="rvps2"><span class="rvts6">When window size is wider or taller than image size, empty areas of the window are colored black by default. Checking this option will color these areas according to current "background" color of NES palette.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Square pixels</span></p>
<p class="rvps2"><span class="rvts6">This is checked by default, so FCEUX will limit the max size of the image to make all pixels share the same width/height. If you uncheck this, the image will be stretched to fill the whole width or height of the window area.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">TV Aspect</span></p>
<p class="rvps2"><span class="rvts6">Check this if you want to change the image aspect ratio (e.g. to 4:3). You can enter different values in adjacent text fields.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Drawing Area</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">First Line</span></p>
<p class="rvps2"><span class="rvts6">Sets the first scan line for NTSC and PAL Modes. This should be left on the default of 8 for NTSC and 0 for PAL.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Last Line</span></p>
<p class="rvps2"><span class="rvts6">Sets the last scan line for NTSC and PAL Modes. This should be left on the default of 231 for NTSC and 239 for PAL.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Clip left and right sides</span><span class="rvts45"> (8 px on each)</span></p>
<p class="rvps2"><span class="rvts6">If enabled, 8 pixels from each side of the windows will be removed. Some NES games show grapical artifacts on the sides of screen when scrolling (on real hardware too!), so you may hide those artifacts by checking the option.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts37">Emulation</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts60">Allow more than 8 sprites per scanline</span></p>
<p class="rvps2"><span class="rvts6">On real NES hardware, more than 8 sprites on the screen causes flickering. Enabling this option can reduce flickering by allowing more sprites to be visible at once. But if you prefer to stay "true" to NES hardware, this should not be checked, because some games rely on the limitation.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Write eBooks for the Kindle</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">&times;</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>

View File

@ -1,178 +1,369 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.0.0</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew200");
}
});
</script>
<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>What's New? 2.0.0</title>
<meta name="description" content="" />
<meta name="keywords" content="What's New?">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.0.0">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.0.0" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.0.0</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew201.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="General.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.0.0</span></p>
<p>Released August 02, 2008</p>
<p><br/></p>
<p>FCEUX has all the latest tools, enhancements, and features from FCEU 0.28 rerecording and FCEUXDSP 1.07 &nbsp;In addition, it has many new tools, bug fixes, and enhancements not seen in previous branches.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts20">General</span></p>
<p><br/></p>
<p>-A detailed Help Menu! &nbsp;No longer are you aimlessly searching the internet for long lost info on FCEU's options!</p>
<p>-Numerous Dialog box reformats.</p>
<p>-FCEU remembers its last screen (x,y) position.</p>
<p>-Increased <a class="rvts18" href="CommandLineOptions.html">command line options</a></p>
<p>-More options under the <a class="rvts18" href="Directories.html">Directory Override Menu</a></p>
<p>-A Turbo Toggle option (turbo now can be toggled on rather than having to hold the key down)</p>
<p>-More hotkey assignable options in the <a class="rvts18" href="MapHotkeys.html">Map Hotkeys Menu</a>.</p>
<p>-A lag counter</p>
<p>-Autofire uses the lag counter (so it will skip over lag frames)</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts20">Movie support</span></p>
<p><br/></p>
<p>Overhauls in both the movie and savestate file formats.</p>
<p><br/></p>
<p><span class="rvts16">.fm2 File format</span></p>
<p><br/></p>
<p>The .fcm file format has been overhauled into a new .fm2 format. &nbsp;Changes include:</p>
<p><br/></p>
<p>-Uncompressed and text based format. &nbsp;Movie editing can be done simply in a text editor.</p>
<p>-Recording from soft reset option removed.</p>
<p>-Recording from start (hard reset) no longer has an empty savestate at the beginning.</p>
<p>-GUID inserted into movies for better savestate/loadstate error handling.</p>
<p>-Rather than an Author field, it has a full metadata menu where an author can put any info needed.</p>
<p>-A tool to <a class="rvts18" href="Covertfcm.html">convert .fcm</a> files to .fm2 files.</p>
<p>-More specific info on .fm2 files in the <a class="rvts18" href="fm2.html">.fm2 documentation</a>. </p>
<p><br/></p>
<p><span class="rvts16">Savestate/Loadstate</span></p>
<p><br/></p>
<p>-New savestate file format. &nbsp;NOTE: &nbsp;Savestates from previous FCEU versions CAN NOT be used in FCEUX.</p>
<p>-Fully functional error handling (savestates from other movies cannot be loaded).</p>
<p>-Read-only toggling related bugs fixed.</p>
<p>-Savestate filenames include the name of the movie (if a movie was playing when made). &nbsp;This prevents loading wrong savestates. (This also means that savestate 0 is different when a movie is playing and when it is not).</p>
<p><br/></p>
<p><span class="rvts16">7z Archive Support</span></p>
<p><br/></p>
<p>-ROMs in any 7z compatible compressed format can be opened directly.</p>
<p>-If more than one valid ROM exists in an archive file, then a dialog box will open with a list of available ROM choices.</p>
<p><br/></p>
<p><span class="rvts16">TAS Edit</span></p>
<p><br/></p>
<p>-A brand new powerful movie making tool that revolutionizes the way TAS movies are made. &nbsp;See <a class="rvts18" href="TASEditor.html">TAS edit</a>.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts20">New Tools</span></p>
<p><br/></p>
<p><a class="rvts25" href="TASEditor.html">TAS Edit</a> - a revolutionary new way of making TAS movies.</p>
<p><br/></p>
<p><a class="rvts25" href="Input.html">Input Presets</a> - a system for quickly toggling different input configurations.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts20">Tool Upgrades</span></p>
<p><br/></p>
<p>Numerous enhancements have been made to various Tools/Options.</p>
<p><br/></p>
<p><span class="rvts16">Memory Watch</span></p>
<p><br/></p>
<p>-Resource management optimized so that memory watch now uses a minimal amount of CPU</p>
<p>-FCEUX remembers memory watch's last screen position (x,y)</p>
<p>-Tab-able Edit boxes</p>
<p>-Edit boxes now can hold 64 characters</p>
<p>-A Menu bar for all Memory watch functions</p>
<p>-Both "Save as" and "Save" options</p>
<p>-Hotkeys for New, Open, Save, Save As and Close</p>
<p>-A recent files Menu</p>
<p>-A "load on startup" option. If checked, memory watch will open automatically when FCEUX is opened</p>
<p>-A "load last file" option. &nbsp;If checked, memory watch will load the last file used</p>
<p><br/></p>
<p><span class="rvts16">Cheat Search</span></p>
<p><br/></p>
<p>-Now has a minimize button</p>
<p>-Cheat Search Menu from FCEUXDSP (a major overhaul compared to other FCEU branches)</p>
<p>-Possibilities update while playing/frame advancing a game</p>
<p>-Double clicking a value in the possibilities window sends the value directly to Memory Watch</p>
<p><br/></p>
<p><span class="rvts16">RAM Filter</span></p>
<p><br/></p>
<p>-Double clicking a value in the possibilities window sends the value directly to Memory Watch</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Lua Scripting</span></p>
<p><br/></p>
<p>-Uses the latest features of <span class="rvts18">Lua Scripting</span> from FCEU 0.28</p>
<p>-Many enhancements and new commands including dialog creation commands! &nbsp;Now scripts can create their own dialog's and GUI features.</p>
<p><br/></p>
<p><span class="rvts16">Lua Basic Bot</span></p>
<p><br/></p>
<p>-Basicbot removed (from the rerecording version of FCE Ultra). &nbsp;In its place is <a class="rvts18" href="LuaBot.html">lua bot.</a></p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts20">AVI Recording</span></p>
<p><br/></p>
<p>-"Movie playback stopped" message recorded in AVI by default</p>
<p>-Turbo Toggle Hotkey. &nbsp;(Allows turbo to be left on for a faster AVI capture).</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Full-featured Help generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew200"
data-hnd-context="22"
data-hnd-title="What's New? 2.0.0"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew201.html" title="What's New? 2.0.1 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="General.html" title="General" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.0.0</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.0.0</span></p>
<p class="rvps2"><span class="rvts6">Released August 02, 2008</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">FCEUX has all the latest tools, enhancements, and features from FCEU 0.28 rerecording and FCEUXDSP 1.07 &nbsp;In addition, it has many new tools, bug fixes, and enhancements not seen in previous branches.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts26">General</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-A detailed Help Menu! &nbsp;No longer are you aimlessly searching the internet for long lost info on FCEU's options!</span></p>
<p class="rvps2"><span class="rvts6">-Numerous Dialog box reformats.</span></p>
<p class="rvps2"><span class="rvts6">-FCEU remembers its last screen (x,y) position.</span></p>
<p class="rvps2"><span class="rvts6">-Increased </span><a class="rvts36" href="CommandLineOptions.html">command line options</a></p>
<p class="rvps2"><span class="rvts6">-More options under the </span><a class="rvts36" href="Directories.html">Directory Override Menu</a></p>
<p class="rvps2"><span class="rvts6">-A Turbo Toggle option (turbo now can be toggled on rather than having to hold the key down)</span></p>
<p class="rvps2"><span class="rvts6">-More hotkey assignable options in the </span><a class="rvts36" href="MapHotkeys.html">Map Hotkeys Menu</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6">-A lag counter</span></p>
<p class="rvps2"><span class="rvts6">-Autofire uses the lag counter (so it will skip over lag frames)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts26">Movie support</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Overhauls in both the movie and savestate file formats.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">.fm2 File format</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The .fcm file format has been overhauled into a new .fm2 format. &nbsp;Changes include:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-Uncompressed and text based format. &nbsp;Movie editing can be done simply in a text editor.</span></p>
<p class="rvps2"><span class="rvts6">-Recording from soft reset option removed.</span></p>
<p class="rvps2"><span class="rvts6">-Recording from start (hard reset) no longer has an empty savestate at the beginning.</span></p>
<p class="rvps2"><span class="rvts6">-GUID inserted into movies for better savestate/loadstate error handling.</span></p>
<p class="rvps2"><span class="rvts6">-Rather than an Author field, it has a full metadata menu where an author can put any info needed.</span></p>
<p class="rvps2"><span class="rvts6">-A tool to </span><a class="rvts36" href="Covertfcm.html">convert .fcm</a><span class="rvts6"> files to .fm2 files.</span></p>
<p class="rvps2"><span class="rvts6">-More specific info on .fm2 files in the </span><a class="rvts36" href="fm2.html">.fm2 documentation</a><span class="rvts6">.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Savestate/Loadstate</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-New savestate file format. &nbsp;NOTE: &nbsp;Savestates from previous FCEU versions CAN NOT be used in FCEUX.</span></p>
<p class="rvps2"><span class="rvts6">-Fully functional error handling (savestates from other movies cannot be loaded).</span></p>
<p class="rvps2"><span class="rvts6">-Read-only toggling related bugs fixed.</span></p>
<p class="rvps2"><span class="rvts6">-Savestate filenames include the name of the movie (if a movie was playing when made). &nbsp;This prevents loading wrong savestates. (This also means that savestate 0 is different when a movie is playing and when it is not).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">7z Archive Support</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-ROMs in any 7z compatible compressed format can be opened directly.</span></p>
<p class="rvps2"><span class="rvts6">-If more than one valid ROM exists in an archive file, then a dialog box will open with a list of available ROM choices.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">TAS Edit</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-A brand new powerful movie making tool that revolutionizes the way TAS movies are made. &nbsp;See </span><a class="rvts36" href="TASEditor.html">TAS edit</a><span class="rvts6">.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts26">New Tools</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="TASEditor.html">TAS Edit</a><span class="rvts6"> - a revolutionary new way of making TAS movies.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><a class="rvts16" href="Input.html">Input Presets</a><span class="rvts6"> - a system for quickly toggling different input configurations.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts26">Tool Upgrades</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Numerous enhancements have been made to various Tools/Options.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Memory Watch</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-Resource management optimized so that memory watch now uses a minimal amount of CPU</span></p>
<p class="rvps2"><span class="rvts6">-FCEUX remembers memory watch's last screen position (x,y)</span></p>
<p class="rvps2"><span class="rvts6">-Tab-able Edit boxes</span></p>
<p class="rvps2"><span class="rvts6">-Edit boxes now can hold 64 characters</span></p>
<p class="rvps2"><span class="rvts6">-A Menu bar for all Memory watch functions</span></p>
<p class="rvps2"><span class="rvts6">-Both "Save as" and "Save" options</span></p>
<p class="rvps2"><span class="rvts6">-Hotkeys for New, Open, Save, Save As and Close</span></p>
<p class="rvps2"><span class="rvts6">-A recent files Menu</span></p>
<p class="rvps2"><span class="rvts6">-A "load on startup" option. If checked, memory watch will open automatically when FCEUX is opened</span></p>
<p class="rvps2"><span class="rvts6">-A "load last file" option. &nbsp;If checked, memory watch will load the last file used</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Cheat Search</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-Now has a minimize button</span></p>
<p class="rvps2"><span class="rvts6">-Cheat Search Menu from FCEUXDSP (a major overhaul compared to other FCEU branches)</span></p>
<p class="rvps2"><span class="rvts6">-Possibilities update while playing/frame advancing a game</span></p>
<p class="rvps2"><span class="rvts6">-Double clicking a value in the possibilities window sends the value directly to Memory Watch</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">RAM Filter</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-Double clicking a value in the possibilities window sends the value directly to Memory Watch</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Lua Scripting</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-Uses the latest features of </span><span class="rvts36">Lua Scripting</span><span class="rvts6"> from FCEU 0.28</span></p>
<p class="rvps2"><span class="rvts6">-Many enhancements and new commands including dialog creation commands! &nbsp;Now scripts can create their own dialog's and GUI features.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Lua Basic Bot</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-Basicbot removed (from the rerecording version of FCE Ultra). &nbsp;In its place is </span><a class="rvts36" href="LuaBot.html">lua bot.</a></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts26">AVI Recording</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">-"Movie playback stopped" message recorded in AVI by default</span></p>
<p class="rvps2"><span class="rvts6">-Turbo Toggle Hotkey. &nbsp;(Allows turbo to be left on for a faster AVI capture).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour">Easily create Help documents</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">&times;</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>

View File

@ -1,86 +1,277 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.0.1 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew201");
}
});
</script>
<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>What's New? 2.0.1 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.0.1 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.0.1 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.0.1 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew202.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew200.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.0.1</span></p>
<p>Released August 04, 2008</p>
<p><br/></p>
<p>This was a maintenance release that fixes a few oversights in the 2.0.0 release.</p>
<p><br/></p>
<p>* reorganize display toggle options in the menu</p>
<p>* autofire fix (wasn't initializing to any autofire pattern from a fresh .cfg)</p>
<p>* homebrew mmc5 games now have 64KB of exwram instead of only 8KB</p>
<p>* fix crash related to player2 in lua scripts</p>
<p>* fixed player2 in lua scripts</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Full-featured Kindle eBooks generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew201"
data-hnd-context="48"
data-hnd-title="What's New? 2.0.1 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew202.html" title="What's New? 2.0.2 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew200.html" title="What's New? 2.0.0" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.0.1 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.0.1</span></p>
<p class="rvps2"><span class="rvts6">Released August 04, 2008</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This was a maintenance release that fixes a few oversights in the 2.0.0 release.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* reorganize display toggle options in the menu</span></p>
<p class="rvps2"><span class="rvts6">* autofire fix (wasn't initializing to any autofire pattern from a fresh .cfg)</span></p>
<p class="rvps2"><span class="rvts6">* homebrew mmc5 games now have 64KB of exwram instead of only 8KB</span></p>
<p class="rvps2"><span class="rvts6">* fix crash related to player2 in lua scripts</span></p>
<p class="rvps2"><span class="rvts6">* fixed player2 in lua scripts</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Free Kindle producer</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">&times;</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>

View File

@ -1,166 +1,357 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.0.2 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew202");
}
});
</script>
<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>What's New? 2.0.2 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.0.2 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.0.2 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.0.2 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew203.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew201.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.0.2</span></p>
<p>Released August 14, 2008</p>
<p><br/></p>
<p>This release includes a large number of bug fixes, feature enhancements, and new features.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Fixed Crashing Bugs</span></p>
<p><br/></p>
<p>* restore savestate error recovery functionality. &nbsp;Will prevent crashes after savestate error messages</p>
<p>* Fixed - Low speeds (1%) crash FCEUX</p>
<p>* fixes bug where palflag 1 in .fm2 files crashes fceux</p>
<p>* FCEUX no longer crashes when attempting to open a non movie file</p>
<p>* Buffer overflow (change vsprintf to vsnprintf)</p>
<p><br/></p>
<p><span class="rvts16">Minor Bug fixes</span></p>
<p><br/></p>
<p>* SRAM not wiped on power cycle (during movies)</p>
<p>* Moviefilenames without extension now automatically get fm2</p>
<p>* auto-fill .fcs extension in save state as dialog</p>
<p>* FCM&gt;FM2 converter releases file handle</p>
<p>* fix a new bug in windows build which caused fourscore emulation to fail in some cases</p>
<p>* Player 3 no longer inputs when not used</p>
<p>* prints a special message when trying to open an FCM reminding user to convert.</p>
<p>* fixes bug where Avi recording with no sound messes up the format</p>
<p>* Fixed bug where Convert .fcm didn't do special characters</p>
<p>* fixed the (null) in the default lua directory listing</p>
<p>* Ctrl+X now works in the memory watch dialog</p>
<p>* Dialog window positions won't "disappear" (-32000 protection on all dialogs that remember x,y)</p>
<p>* fixed View Slots bug - will now always show the used slots</p>
<p><br/></p>
<p>* added shift+L as default hotkey for reload lua script</p>
<p>* added input display to the FCEUX main menu</p>
<p>* change config filename from fceu98.cfg to fceux.cfg</p>
<p><br/></p>
<p><span class="rvts16">New Features</span></p>
<p><br/></p>
<p>* restore IPS patching capability which was lost when archive support was added</p>
<p>* restore ungzipping (and unzipping in sdl) capability which was lost when archive support was added</p>
<p>* re-enable an "author" text field in the record movie dialog</p>
<p>* re-enable support for old-format savestates. (Note: can not be loaded into a movie!)</p>
<p><br/></p>
<p>* Added new toggle - frame adv. - lag skip (menu item + hotkey mapping + saved in config), will cause frame adv. to skip frames where input is not read</p>
<p>* Added support for loading movies from archives (just like ROM files). &nbsp;Note: Movies loaded from an archive file will be read-only.</p>
<p>* movie replay dialog displays fractions of a second on movie length</p>
<p><br/></p>
<p>* Savestates now save the Lagcounter information.</p>
<p>* added a mute turbo option in sound config</p>
<p><br/></p>
<p>* add an option to pick a constant color to draw in place of BG when BG rendering is disabled (look for gNoBGFillColor in config).</p>
<p><br/></p>
<p><span class="rvts16">Mappers</span></p>
<p><br/></p>
<p>* remove cnrom chr rom size limit for homebrew roms</p>
<p>* mmc5 - 64KB WRAM games now work correctly</p>
<p>* mmc5 - use of chr A regs for BG in sprite 8x8 mode is fixed</p>
<p>* upgrade to cah4e3's latest mapper 163&amp;164 code to fix a crash in a game</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Debugging Tools</span></p>
<p><br/></p>
<p>* Debugger - restore snap functionality</p>
<p>* Debugger - add FORBID breakpoints - regions which block breakpoints from happening if they contain the PC</p>
<p>* Debugger - debugger window is now resizeable</p>
<p>* nametable viewer &nbsp;will display correct NT,CHR,ATTR data in more cases (specifically, including some exotic mmc5 cases).</p>
<p><br/></p>
<p><span class="rvts16">Lua</span></p>
<p><br/></p>
<p>* Savestates remember Lua painting</p>
<p>* add memory.readbyterange to emulua</p>
<p><br/></p>
<p><span class="rvts16">SDL only</span></p>
<p><br/></p>
<p>* SDL: fixed --input(1-4) options. &nbsp;input1 and 2 are regular inputs, input3 and 4 are famicom expansion inputs</p>
<p>* SDL fix configfile woes. configfile now goes to ~/.fceux/fceux.cfg</p>
<p>* SDL: fixed segfault when opening .fcm files</p>
<p>* SDL: Saner sound defaults for less choppy sound</p>
<p>* SDL: "--special" option fixed for special video scaling filters</p>
<p>* SDL: cleaned up the SConsruct</p>
<p>* SDL: fixed issue where fceu would lock up when file dialogs were opened during fullscreen</p>
<p>* SDL: fixed bug where fceux would close when file dialogs were closed</p>
<p>* SDL: File open dialog is now used to movie playback</p>
<p>* SDL: File open wrapper now takes a titlebar argument</p>
<p>* SDL: Cleanup of usage</p>
<p>* SDL: rename options --no8lim -&gt; --nospritelim and --color -&gt; --ntsccolor</p>
<p>* SDL: Screenshots now always prepend the game name.</p>
<p>* SDL: Changed default A/B from numpad 2 and 3 to j and k.</p>
<p>* SDL: Enable frameskip by default</p>
<p>* SDL: Fixed a bug that would crash fceux if the emulation speed was overincreased</p>
<p>* SDL: New default hotkeys to more closely match win32 defaults</p>
<p>* SDL: Added lua script loading hotkey (f3). &nbsp;Non win32 SDL requires zenity for this to function.</p>
<p>* SDL: Build script cleanup; also added option for DEBUG builds.</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Produce Kindle eBooks easily</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew202"
data-hnd-context="62"
data-hnd-title="What's New? 2.0.2 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew203.html" title="What's New? 2.0.3 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew201.html" title="What's New? 2.0.1 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.0.2 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.0.2</span></p>
<p class="rvps2"><span class="rvts6">Released August 14, 2008</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This release includes a large number of bug fixes, feature enhancements, and new features.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Fixed Crashing Bugs</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* restore savestate error recovery functionality. &nbsp;Will prevent crashes after savestate error messages</span></p>
<p class="rvps2"><span class="rvts6">* Fixed - Low speeds (1%) crash FCEUX</span></p>
<p class="rvps2"><span class="rvts6">* fixes bug where palflag 1 in .fm2 files crashes fceux</span></p>
<p class="rvps2"><span class="rvts6">* FCEUX no longer crashes when attempting to open a non movie file</span></p>
<p class="rvps2"><span class="rvts6">* Buffer overflow (change vsprintf to vsnprintf)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Minor Bug fixes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* SRAM not wiped on power cycle (during movies)</span></p>
<p class="rvps2"><span class="rvts6">* Moviefilenames without extension now automatically get fm2</span></p>
<p class="rvps2"><span class="rvts6">* auto-fill .fcs extension in save state as dialog</span></p>
<p class="rvps2"><span class="rvts6">* FCM&gt;FM2 converter releases file handle</span></p>
<p class="rvps2"><span class="rvts6">* fix a new bug in windows build which caused fourscore emulation to fail in some cases</span></p>
<p class="rvps2"><span class="rvts6">* Player 3 no longer inputs when not used</span></p>
<p class="rvps2"><span class="rvts6">* prints a special message when trying to open an FCM reminding user to convert.</span></p>
<p class="rvps2"><span class="rvts6">* fixes bug where Avi recording with no sound messes up the format</span></p>
<p class="rvps2"><span class="rvts6">* Fixed bug where Convert .fcm didn't do special characters</span></p>
<p class="rvps2"><span class="rvts6">* fixed the (null) in the default lua directory listing</span></p>
<p class="rvps2"><span class="rvts6">* Ctrl+X now works in the memory watch dialog</span></p>
<p class="rvps2"><span class="rvts6">* Dialog window positions won't "disappear" (-32000 protection on all dialogs that remember x,y)</span></p>
<p class="rvps2"><span class="rvts6">* fixed View Slots bug - will now always show the used slots</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* added shift+L as default hotkey for reload lua script</span></p>
<p class="rvps2"><span class="rvts6">* added input display to the FCEUX main menu</span></p>
<p class="rvps2"><span class="rvts6">* change config filename from fceu98.cfg to fceux.cfg</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">New Features</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* restore IPS patching capability which was lost when archive support was added</span></p>
<p class="rvps2"><span class="rvts6">* restore ungzipping (and unzipping in sdl) capability which was lost when archive support was added</span></p>
<p class="rvps2"><span class="rvts6">* re-enable an "author" text field in the record movie dialog</span></p>
<p class="rvps2"><span class="rvts6">* re-enable support for old-format savestates. (Note: can not be loaded into a movie!)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* Added new toggle - frame adv. - lag skip (menu item + hotkey mapping + saved in config), will cause frame adv. to skip frames where input is not read</span></p>
<p class="rvps2"><span class="rvts6">* Added support for loading movies from archives (just like ROM files). &nbsp;Note: Movies loaded from an archive file will be read-only.</span></p>
<p class="rvps2"><span class="rvts6">* movie replay dialog displays fractions of a second on movie length</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* Savestates now save the Lagcounter information.</span></p>
<p class="rvps2"><span class="rvts6">* added a mute turbo option in sound config</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* add an option to pick a constant color to draw in place of BG when BG rendering is disabled (look for gNoBGFillColor in config).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Mappers</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* remove cnrom chr rom size limit for homebrew roms</span></p>
<p class="rvps2"><span class="rvts6">* mmc5 - 64KB WRAM games now work correctly</span></p>
<p class="rvps2"><span class="rvts6">* mmc5 - use of chr A regs for BG in sprite 8x8 mode is fixed</span></p>
<p class="rvps2"><span class="rvts6">* upgrade to cah4e3's latest mapper 163&amp;164 code to fix a crash in a game</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Debugging Tools</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* Debugger - restore snap functionality</span></p>
<p class="rvps2"><span class="rvts6">* Debugger - add FORBID breakpoints - regions which block breakpoints from happening if they contain the PC</span></p>
<p class="rvps2"><span class="rvts6">* Debugger - debugger window is now resizeable</span></p>
<p class="rvps2"><span class="rvts6">* nametable viewer &nbsp;will display correct NT,CHR,ATTR data in more cases (specifically, including some exotic mmc5 cases).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Lua</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* Savestates remember Lua painting</span></p>
<p class="rvps2"><span class="rvts6">* add memory.readbyterange to emulua</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">SDL only</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* SDL: fixed --input(1-4) options. &nbsp;input1 and 2 are regular inputs, input3 and 4 are famicom expansion inputs</span></p>
<p class="rvps2"><span class="rvts6">* SDL fix configfile woes. configfile now goes to ~/.fceux/fceux.cfg</span></p>
<p class="rvps2"><span class="rvts6">* SDL: fixed segfault when opening .fcm files</span></p>
<p class="rvps2"><span class="rvts6">* SDL: Saner sound defaults for less choppy sound</span></p>
<p class="rvps2"><span class="rvts6">* SDL: "--special" option fixed for special video scaling filters</span></p>
<p class="rvps2"><span class="rvts6">* SDL: cleaned up the SConsruct</span></p>
<p class="rvps2"><span class="rvts6">* SDL: fixed issue where fceu would lock up when file dialogs were opened during fullscreen</span></p>
<p class="rvps2"><span class="rvts6">* SDL: fixed bug where fceux would close when file dialogs were closed</span></p>
<p class="rvps2"><span class="rvts6">* SDL: File open dialog is now used to movie playback</span></p>
<p class="rvps2"><span class="rvts6">* SDL: File open wrapper now takes a titlebar argument</span></p>
<p class="rvps2"><span class="rvts6">* SDL: Cleanup of usage</span></p>
<p class="rvps2"><span class="rvts6">* SDL: rename options --no8lim -&gt; --nospritelim and --color -&gt; --ntsccolor</span></p>
<p class="rvps2"><span class="rvts6">* SDL: Screenshots now always prepend the game name.</span></p>
<p class="rvps2"><span class="rvts6">* SDL: Changed default A/B from numpad 2 and 3 to j and k.</span></p>
<p class="rvps2"><span class="rvts6">* SDL: Enable frameskip by default</span></p>
<p class="rvps2"><span class="rvts6">* SDL: Fixed a bug that would crash fceux if the emulation speed was overincreased</span></p>
<p class="rvps2"><span class="rvts6">* SDL: New default hotkeys to more closely match win32 defaults</span></p>
<p class="rvps2"><span class="rvts6">* SDL: Added lua script loading hotkey (f3). &nbsp;Non win32 SDL requires zenity for this to function.</span></p>
<p class="rvps2"><span class="rvts6">* SDL: Build script cleanup; also added option for DEBUG builds.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/help-authoring-tool">Free help authoring environment</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">&times;</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>

View File

@ -1,126 +1,317 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.0.3 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew203");
}
});
</script>
<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>What's New? 2.0.3 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.0.3 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.0.3 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.0.3 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew210.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew202.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.0.2</span></p>
<p>Released November 02, 2008</p>
<p><br/></p>
<p>This release includes some key bug fixes and feature enhancements.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">Major Bug / Crash Bug Fixes</span></p>
<p><br/></p>
<p>* Reset/Power-on recording for .fm2 files!</p>
<p>* fix ..fcm conversion, recording, and playback of reset and power commands</p>
<p>* Win32 - auto-load the only useful ROM or movie from an archive, in cases where there is only one</p>
<p>* Win32 - permit user optionally to proceed through the movie savestate mismatch error condition, in case he knows what he is doing.</p>
<p>* Win32 - fix a bug in the savestate recovery code which prevent aborted savestate loads from recovering emulator state correctly.</p>
<p>* gracefully handle non-convertible broken UTF-8 text without crashing</p>
<p>* Win32 - don't read every archive file when scanning for replay dialog. scan them, and only look for *.fm2</p>
<p><br/></p>
<p><span class="rvts16">New Features Win32</span></p>
<p><br/></p>
<p>* Win32 - added a toggle for binding savestates to movies</p>
<p>* Win32 - added -cfg (config file) command line argument</p>
<p><br/></p>
<p><span class="rvts16">Minor Bug fixes</span></p>
<p><br/></p>
<p>* Win32 - Sound config dialog will now look to see if Mute Turbo should be checked</p>
<p>* Win32 - Debugger - Fix Child windows inside debugging window get invalid sizes</p>
<p>* Win32 - bind a menu option for display frame counter</p>
<p>* Win32 - fix problem where replay dialog couldn't work when the process current directory had changed to something other than emulator base directory</p>
<p>* Lua ignores second joypad.set()</p>
<p>* Load state as... does not use the savestate override dir (fixed; now, it does)</p>
<p>*Win32 - debugger - fix issue where keyboard keys get stuck when switching between debugger window and main window</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">SDL </span></p>
<p><br/></p>
<p>* SDL - added support for AVI creation for SDL, see documentation/Videolog.txt for more</p>
<p>* SDL - --inputcfg can now be used without a filename</p>
<p>* SDL - should fix issues with missing author field crashing FCEUX</p>
<p>* SDL - toggle lag frame counter for SDL, default hotkey F8</p>
<p>* SDL - toggle skipping of lag frames for SDL, default hotkey F6</p>
<p>* SDL - user ability to toggle "bind savestates to movie" added for SDL, default hotkey F2</p>
<p>* SDL - Lua is now optional, thanks Shinydoofy for a patch. &nbsp;also fixed some build issues.</p>
<p>* SDL - fixed an issue where flawed movie would crash FCEUX on every startup</p>
<p>* SDL - fixed issue where windowed mode would always be set to 32 bpp</p>
<p>* SDL - fixed ppc build errors and added LSB_FIRST option to build scripts</p>
<p>* SDL - --newppu option added to SDL, disabled by default</p>
<p><br/></p>
<p><span class="rvts16">GFCEUX (SDL)</span></p>
<p><br/></p>
<p>* GFCEUX - made the input config window more usable</p>
<p>* GFCEUX - added uninstall script for GFCEUX</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create PDF Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew203"
data-hnd-context="65"
data-hnd-title="What's New? 2.0.3 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew210.html" title="What's New? 2.1 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew202.html" title="What's New? 2.0.2 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.0.3 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.0.2</span></p>
<p class="rvps2"><span class="rvts6">Released November 02, 2008</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This release includes some key bug fixes and feature enhancements.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Major Bug / Crash Bug Fixes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* Reset/Power-on recording for .fm2 files!</span></p>
<p class="rvps2"><span class="rvts6">* fix ..fcm conversion, recording, and playback of reset and power commands</span></p>
<p class="rvps2"><span class="rvts6">* Win32 - auto-load the only useful ROM or movie from an archive, in cases where there is only one</span></p>
<p class="rvps2"><span class="rvts6">* Win32 - permit user optionally to proceed through the movie savestate mismatch error condition, in case he knows what he is doing.</span></p>
<p class="rvps2"><span class="rvts6">* Win32 - fix a bug in the savestate recovery code which prevent aborted savestate loads from recovering emulator state correctly.</span></p>
<p class="rvps2"><span class="rvts6">* gracefully handle non-convertible broken UTF-8 text without crashing</span></p>
<p class="rvps2"><span class="rvts6">* Win32 - don't read every archive file when scanning for replay dialog. scan them, and only look for *.fm2</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">New Features Win32</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* Win32 - added a toggle for binding savestates to movies</span></p>
<p class="rvps2"><span class="rvts6">* Win32 - added -cfg (config file) command line argument</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Minor Bug fixes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* Win32 - Sound config dialog will now look to see if Mute Turbo should be checked</span></p>
<p class="rvps2"><span class="rvts6">* Win32 - Debugger - Fix Child windows inside debugging window get invalid sizes</span></p>
<p class="rvps2"><span class="rvts6">* Win32 - bind a menu option for display frame counter</span></p>
<p class="rvps2"><span class="rvts6">* Win32 - fix problem where replay dialog couldn't work when the process current directory had changed to something other than emulator base directory</span></p>
<p class="rvps2"><span class="rvts6">* Lua ignores second joypad.set()</span></p>
<p class="rvps2"><span class="rvts6">* Load state as... does not use the savestate override dir (fixed; now, it does)</span></p>
<p class="rvps2"><span class="rvts6">*Win32 - debugger - fix issue where keyboard keys get stuck when switching between debugger window and main window</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">SDL&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* SDL - added support for AVI creation for SDL, see documentation/Videolog.txt for more</span></p>
<p class="rvps2"><span class="rvts6">* SDL - --inputcfg can now be used without a filename</span></p>
<p class="rvps2"><span class="rvts6">* SDL - should fix issues with missing author field crashing FCEUX</span></p>
<p class="rvps2"><span class="rvts6">* SDL - toggle lag frame counter for SDL, default hotkey F8</span></p>
<p class="rvps2"><span class="rvts6">* SDL - toggle skipping of lag frames for SDL, default hotkey F6</span></p>
<p class="rvps2"><span class="rvts6">* SDL - user ability to toggle "bind savestates to movie" added for SDL, default hotkey F2</span></p>
<p class="rvps2"><span class="rvts6">* SDL - Lua is now optional, thanks Shinydoofy for a patch. &nbsp;also fixed some build issues.</span></p>
<p class="rvps2"><span class="rvts6">* SDL - fixed an issue where flawed movie would crash FCEUX on every startup</span></p>
<p class="rvps2"><span class="rvts6">* SDL - fixed issue where windowed mode would always be set to 32 bpp</span></p>
<p class="rvps2"><span class="rvts6">* SDL - fixed ppc build errors and added LSB_FIRST option to build scripts</span></p>
<p class="rvps2"><span class="rvts6">* SDL - --newppu option added to SDL, disabled by default</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">GFCEUX (SDL)</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">* GFCEUX - made the input config window more usable</span></p>
<p class="rvps2"><span class="rvts6">* GFCEUX - added uninstall script for GFCEUX</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/feature-tour">Easily create EBooks</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">&times;</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>

View File

@ -1,246 +1,437 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.1 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew210");
}
});
</script>
<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>What's New? 2.1 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.1 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.1 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.1 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew211.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew203.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.1</span></p>
<p>Released March 29, 2009</p>
<p><br/></p>
<p>This release includes a multitude of new features, major fixes, and enhancements.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts16">New Features Win32</span></p>
<p><br/></p>
<p>*The latest mappers and mapper fixes from FCEU-mm. &nbsp;Adds support for many new games such as Warioland II (Unl), Shu Qi Yu, &nbsp;and Street Dance</p>
<p>*Full screen mode fixed! &nbsp;Also, Alt+Enter properly toggles full screen.</p>
<p>*Individual control for sound channels! (See <a class="rvts18" href="SoundOptions.html">sound config</a> for details).</p>
<p>*Undo/Redo Savestate/Loadstate features installed! &nbsp;No more loss of data to unintentional presses. &nbsp;(See <a class="rvts18" href="Gettingstarted.html">getting started</a> for details).</p>
<p>*Movie subtitles can now be included in .fm2 files. &nbsp;See <a class="rvts18" href="fm2.html">.fm2 documentation</a> for details and <a class="rvts18" href="MovieOptions.html">Movie options</a> for details on customizing.</p>
<p>*Auto-backup for movie files. &nbsp;(See <a class="rvts18" href="MovieOptions.html">movie options</a> for details).</p>
<p>*A Ram change monitor for the Memory watch dialog. (see <a class="rvts18" href="MemoryWatch.html">memwatch</a> for details).</p>
<p>*Frame counter works even without a movie loaded.</p>
<p>*AVI Directory Override option.</p>
<p><br/></p>
<p><span class="rvts16">Major Bug / Crash Bug Fixes</span></p>
<p><br/></p>
<p>*Fixed throttling problems that resulted on AMD Dualcore processors. (Caused FCEUX to appear to be in turbo mode).</p>
<p>*Fix major crash issue where NROM game (such as SMB) savestates were writing erroneous information if a non NROM game was loaded prior.</p>
<p>*Fixed a bug that caused a new sav file to not get created when loading a 2nd battery backed game.</p>
<p>*Fix Directory Overrides so to allow users to have no override. &nbsp;Also fixes directory override reset bug.</p>
<p><br/></p>
<p><span class="rvts16">Minor Bug fixes</span></p>
<p><br/></p>
<p>*Hotkeys - prevent "Hotkey explosion" where some laptop keys set off all unassigned hotkeys</p>
<p>*Timing - "disable throttling when sound is off" now only affects FCEUX when sound is off</p>
<p>*Clip Left and Right sides taken into account when drawing on screen (record/play/pause, lag &amp; frame counters, messages, etc)</p>
<p>*Fixed bug where having sound off and Mute turbo caused chirps when toggling</p>
<p>*Video settings - fixed bug when both aspect ratio correction and special scaling 3x are set, video was getting resized incorrectly</p>
<p>*Auto-save cleanup -prevent loading an auto-save from previous session. &nbsp;Added flags for enabling auto-save menu item.</p>
<p>*Fixed issues related to big endian compiling. </p>
<p>*Fix bug so that Escape can now be assigned as a hotkey</p>
<p>*Fixed bug in screenshot numbering that caused numbering to not reset when changing games.</p>
<p><br/></p>
<p><span class="rvts16">GUI / Menu Enhancements</span></p>
<p><br/></p>
<p>*A right-click context menu added! &nbsp;Includes many commonly used items for a variety of situations.</p>
<p>*Menu items that are hotkey mappable now show their current hotkey mapping</p>
<p>*Major overhaul to the Menu organization. &nbsp;</p>
<p>*All FCEUX features are now accessible in the menu</p>
<p>*Alt Menu Shortcuts properly configured</p>
<p>*Menu items are properly grayed when not useable</p>
<p>*All movie related menu items moved to a<a class="rvts18" href="MovieOptions.html"> Movie options</a> dialog </p>
<p>*Removed hard-coded Accel keys and replaced with re-mappable hotkeys (Open &amp; Close ROM)</p>
<p>*Drag &amp; Drop for .fm2 and .lua files</p>
<p>*Many new functions added to the context menu (See <a class="rvts18" href="ContextMenuItems.html">context menu</a> for details)</p>
<p>*New Mappable Hotkeys: Open Cheats, Open ROM, Close ROM, Undo/Redo savestate, Toggle Movie Subtitles</p>
<p><br/></p>
<p><span class="rvts16">Lua</span></p>
<p><br/></p>
<p>*Added input.get() ! &nbsp;Returns the mouse info and all keyboard buttons pressed by the user.</p>
<p>*Fixed joypad.set(). &nbsp;False now sets a button to off. &nbsp;Nil does not affect the button at all (allowing the user to still control it).</p>
<p>*gui.text() Increased height (to approx. 7 lines).</p>
<p>*speedmode("turbo") now turns on turbo (which employs frame-skipping) rather than max speed.</p>
<p>*memory.readbyte will recognize frozen addresses (cheats).</p>
<p>*movie.framecount() always return a number, even when no movie is playing (since the frame counter is implemented without a movie loaded).</p>
<p>*Added FCEU.poweron()</p>
<p>*Added FCEU.softreset()</p>
<p>*Added FCEU.lagged()</p>
<p>*Added FCEU.lagcount()</p>
<p>*Added FCEU.getreadonly()</p>
<p>*Added FCEU.setreadonly()</p>
<p>*Added FCEU.fceu_setrenderplanes(sprites, background) </p>
<p>*Added movie.active()</p>
<p>*Added movie.rerecordcount()</p>
<p>*Added movie.length()</p>
<p>*Added movie.getname()</p>
<p>*Added movie.playbeginning()</p>
<p>*Added -lua command line argment, loads a Lua script on startup</p>
<p>*Added zapper.read() - returns the zapper (mouse) data. &nbsp;(Currently does return zapper data in movie playback).</p>
<p>*Added joypad.write and joypad.get for naming consistency. </p>
<p>*Added rom.readbyte()</p>
<p>*Added rom.readbytesigned()</p>
<p><br/></p>
<p><span class="rvts16">Sound Config</span></p>
<p><br/></p>
<p>*Turning sound off disabled sound config controls</p>
<p>*Re-enabled sound buffer time slider control</p>
<p><br/></p>
<p><span class="rvts16">Hex Editor</span></p>
<p><br/></p>
<p>*Freezing ram addresses automatically updates the Cheats dialog if it is open.</p>
<p>* Added prevention from freezing more than 256 addresses at once (doing so caused crash bugs).</p>
<p>*Dialog remembers window size.</p>
<p>*Dump Rom &amp; Dump PPU to file Dialogs use ROM to build default filename</p>
<p>*Maximize and minimize buttons added.</p>
<p>*Help menu item added</p>
<p><br/></p>
<p><span class="rvts16">Memory Watch</span></p>
<p><br/></p>
<p>*Dialog now includes Ram change monitoring. (see <a class="rvts18" href="MemoryWatch.html">memwatch</a> for details).</p>
<p>*Dialog is now collapsible to 1 column.</p>
<p>*No longer crashes when attempting to load an invalid file from the recent file menu.</p>
<p>*Cancel option added to the save changes dialog.</p>
<p>*Memory address values that are frozen by the debugger or hex editor are displayed in blue.</p>
<p>*Fixed bug that caused dialog to "disappear" due to saving -32000 as its window position.</p>
<p>*Save as dialog uses ROM name to build a default memory watch filename if there was no last used memory watch filename</p>
<p>*Drag and drop for .txt (memory watch) files.</p>
<p>*Minor menu and hotkey fixes.</p>
<p>*Watch values now compatible with custom windows dialog colors.</p>
<p><br/></p>
<p><span class="rvts16">Debugger</span></p>
<p><br/></p>
<p>*Shows scanlines and PPU pixel values</p>
<p>*Shows scanlines even while in VBlank</p>
<p>*Added a Run Line button (runs 1 scanline per click)</p>
<p>*Run 128 Lines button (runs 128 scanlines per click)</p>
<p>*Number of active cheats listed.</p>
<p>*Cheats list automatically updated if ram addresses are frozen in the hex editor.</p>
<p>*Fixed bug that caused dialog to "disappear" due to saving -32000 as its window position.</p>
<p>*Debugger now has a minimum valid size</p>
<p>*Added "Restore original window size" button</p>
<p><br/></p>
<p><span class="rvts16">PPU Viewer </span></p>
<p><br/></p>
<p>*Default refresh value set to 15</p>
<p>*Refresh value stored in the .cfg file</p>
<p><br/></p>
<p><span class="rvts16">Nametable Viewer</span></p>
<p><br/></p>
<p>*Default refresh value set to 15</p>
<p>*Refresh value stored in the .cfg file</p>
<p><br/></p>
<p><span class="rvts16">Trace Logger</span></p>
<p><br/></p>
<p>*Fixed bug where user can't scroll the log window while it is auto-updating.</p>
<p>*Changed message about F2 pause (left over from FCEUXDSP) to display the current hotkey mapping.</p>
<p><br/></p>
<p><span class="rvts16">Text Hooker</span></p>
<p><br/></p>
<p>*Saving a .tht file no longer crashes</p>
<p>*Dialog updates every frame</p>
<p>*Initialization error checking reinstalled,</p>
<p>*Dialog remembers window position</p>
<p>*Fixed bug where canceling save as produces an error message.</p>
<p>*Save As produces default filename based on the current ROM</p>
<p><br/></p>
<p><span class="rvts16">Message Log</span></p>
<p><br/></p>
<p>*Remembers X,Y position</p>
<p>*Resized width and height</p>
<p>*Allowed more lines of text to appear on the screen at once.</p>
<p><br/></p>
<p><span class="rvts16">Metadata</span></p>
<p><br/></p>
<p>*Remembers window position</p>
<p>*Can be called from the context menu if a movie is loaded (see <a class="rvts18" href="ContextMenuItems.html">context menu</a> for details).</p>
<p><br/></p>
<p><span class="rvts16">TASEdit</span></p>
<p><br/></p>
<p>*added help menu item</p>
<p>*disabled menu items that are not currently implemented.</p>
<p><br/></p>
<p><span class="rvts16">Turbo</span></p>
<p>*Turbo now employs frame skip, greatly increasing its speed</p>
<p>*The mute turbo option completely bypasses sound processing (another big speed boost)</p>
<p>*Turbo now works with the Lazy wait for VBlank sync setting</p>
<p><br/></p>
<p><span class="rvts16">SDL </span></p>
<p>*SDL Movie subtitle support and subtitle toggle hotkey added.</p>
<p>*SDL Added fcm to fm2 converter tool to SDL version.</p>
<p>*SDL Improved the SDL sound code; drastically improves quality of sound.</p>
<p>*SDL Savestate slots are now mappable.</p>
<p>*SDL Major updates to SDL documentation</p>
<p>*SDL Added Shift+M for toggling automatic movie backups.</p>
<p>*SDL Added option to mute FCEUX for avi capturing, check the documentation for more details.</p>
<p>*SDL Added --noconfig command line option</p>
<p>*SDL Frame Advance Skip Lag frames toggle implemented</p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour/create-ebooks-for-amazon-kindle">Write eBooks for the Kindle</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew210"
data-hnd-context="67"
data-hnd-title="What's New? 2.1 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew211.html" title="What's New? 2.1.1 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew203.html" title="What's New? 2.0.3 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.1 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.1</span></p>
<p class="rvps2"><span class="rvts6">Released March 29, 2009</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This release includes a multitude of new features, major fixes, and enhancements.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">New Features Win32</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*The latest mappers and mapper fixes from FCEU-mm. &nbsp;Adds support for many new games such as Warioland II (Unl), Shu Qi Yu, &nbsp;and Street Dance</span></p>
<p class="rvps2"><span class="rvts6">*Full screen mode fixed! &nbsp;Also, Alt+Enter properly toggles full screen.</span></p>
<p class="rvps2"><span class="rvts6">*Individual control for sound channels! (See </span><a class="rvts35" href="SoundOptions.html">sound config</a><span class="rvts6"> for details).</span></p>
<p class="rvps2"><span class="rvts6">*Undo/Redo Savestate/Loadstate features installed! &nbsp;No more loss of data to unintentional presses. &nbsp;(See </span><a class="rvts35" href="Gettingstarted.html">getting started</a><span class="rvts6"> for details).</span></p>
<p class="rvps2"><span class="rvts6">*Movie subtitles can now be included in .fm2 files. &nbsp;See </span><a class="rvts35" href="fm2.html">.fm2 documentation</a><span class="rvts6"> for details and </span><a class="rvts35" href="MovieOptions.html">Movie options</a><span class="rvts6"> for details on customizing.</span></p>
<p class="rvps2"><span class="rvts6">*Auto-backup for movie files. &nbsp;(See </span><a class="rvts35" href="MovieOptions.html">movie options</a><span class="rvts6"> for details).</span></p>
<p class="rvps2"><span class="rvts6">*A Ram change monitor for the Memory watch dialog. (see </span><a class="rvts35" href="MemoryWatch.html">memwatch</a><span class="rvts6"> for details).</span></p>
<p class="rvps2"><span class="rvts6">*Frame counter works even without a movie loaded.</span></p>
<p class="rvps2"><span class="rvts6">*AVI Directory Override option.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Major Bug / Crash Bug Fixes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Fixed throttling problems that resulted on AMD Dualcore processors. (Caused FCEUX to appear to be in turbo mode).</span></p>
<p class="rvps2"><span class="rvts6">*Fix major crash issue where NROM game (such as SMB) savestates were writing erroneous information if a non NROM game was loaded prior.</span></p>
<p class="rvps2"><span class="rvts6">*Fixed a bug that caused a new sav file to not get created when loading a 2nd battery backed game.</span></p>
<p class="rvps2"><span class="rvts6">*Fix Directory Overrides so to allow users to have no override. &nbsp;Also fixes directory override reset bug.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Minor Bug fixes</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Hotkeys - prevent "Hotkey explosion" where some laptop keys set off all unassigned hotkeys</span></p>
<p class="rvps2"><span class="rvts6">*Timing - "disable throttling when sound is off" now only affects FCEUX when sound is off</span></p>
<p class="rvps2"><span class="rvts6">*Clip Left and Right sides taken into account when drawing on screen (record/play/pause, lag &amp; frame counters, messages, etc)</span></p>
<p class="rvps2"><span class="rvts6">*Fixed bug where having sound off and Mute turbo caused chirps when toggling</span></p>
<p class="rvps2"><span class="rvts6">*Video settings - fixed bug when both aspect ratio correction and special scaling 3x are set, video was getting resized incorrectly</span></p>
<p class="rvps2"><span class="rvts6">*Auto-save cleanup -prevent loading an auto-save from previous session. &nbsp;Added flags for enabling auto-save menu item.</span></p>
<p class="rvps2"><span class="rvts6">*Fixed issues related to big endian compiling.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6">*Fix bug so that Escape can now be assigned as a hotkey</span></p>
<p class="rvps2"><span class="rvts6">*Fixed bug in screenshot numbering that caused numbering to not reset when changing games.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">GUI / Menu Enhancements</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*A right-click context menu added! &nbsp;Includes many commonly used items for a variety of situations.</span></p>
<p class="rvps2"><span class="rvts6">*Menu items that are hotkey mappable now show their current hotkey mapping</span></p>
<p class="rvps2"><span class="rvts6">*Major overhaul to the Menu organization. &nbsp;</span></p>
<p class="rvps2"><span class="rvts6">*All FCEUX features are now accessible in the menu</span></p>
<p class="rvps2"><span class="rvts6">*Alt Menu Shortcuts properly configured</span></p>
<p class="rvps2"><span class="rvts6">*Menu items are properly grayed when not useable</span></p>
<p class="rvps2"><span class="rvts6">*All movie related menu items moved to a</span><a class="rvts35" href="MovieOptions.html"> Movie options</a><span class="rvts6"> dialog&nbsp;</span></p>
<p class="rvps2"><span class="rvts6">*Removed hard-coded Accel keys and replaced with re-mappable hotkeys (Open &amp; Close ROM)</span></p>
<p class="rvps2"><span class="rvts6">*Drag &amp; Drop for .fm2 and .lua files</span></p>
<p class="rvps2"><span class="rvts6">*Many new functions added to the context menu (See </span><a class="rvts35" href="ContextMenuItems.html">context menu</a><span class="rvts6"> for details)</span></p>
<p class="rvps2"><span class="rvts6">*New Mappable Hotkeys: Open Cheats, Open ROM, Close ROM, Undo/Redo savestate, Toggle Movie Subtitles</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Lua</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Added input.get() ! &nbsp;Returns the mouse info and all keyboard buttons pressed by the user.</span></p>
<p class="rvps2"><span class="rvts6">*Fixed joypad.set(). &nbsp;False now sets a button to off. &nbsp;Nil does not affect the button at all (allowing the user to still control it).</span></p>
<p class="rvps2"><span class="rvts6">*gui.text() Increased height (to approx. 7 lines).</span></p>
<p class="rvps2"><span class="rvts6">*speedmode("turbo") now turns on turbo (which employs frame-skipping) rather than max speed.</span></p>
<p class="rvps2"><span class="rvts6">*memory.readbyte will recognize frozen addresses (cheats).</span></p>
<p class="rvps2"><span class="rvts6">*movie.framecount() always return a number, even when no movie is playing (since the frame counter is implemented without a movie loaded).</span></p>
<p class="rvps2"><span class="rvts6">*Added FCEU.poweron()</span></p>
<p class="rvps2"><span class="rvts6">*Added FCEU.softreset()</span></p>
<p class="rvps2"><span class="rvts6">*Added FCEU.lagged()</span></p>
<p class="rvps2"><span class="rvts6">*Added FCEU.lagcount()</span></p>
<p class="rvps2"><span class="rvts6">*Added FCEU.getreadonly()</span></p>
<p class="rvps2"><span class="rvts6">*Added FCEU.setreadonly()</span></p>
<p class="rvps2"><span class="rvts6">*Added FCEU.fceu_setrenderplanes(sprites, background)&nbsp;</span></p>
<p class="rvps2"><span class="rvts6">*Added movie.active()</span></p>
<p class="rvps2"><span class="rvts6">*Added movie.rerecordcount()</span></p>
<p class="rvps2"><span class="rvts6">*Added movie.length()</span></p>
<p class="rvps2"><span class="rvts6">*Added movie.getname()</span></p>
<p class="rvps2"><span class="rvts6">*Added movie.playbeginning()</span></p>
<p class="rvps2"><span class="rvts6">*Added -lua command line argment, loads a Lua script on startup</span></p>
<p class="rvps2"><span class="rvts6">*Added zapper.read() - returns the zapper (mouse) data. &nbsp;(Currently does return zapper data in movie playback).</span></p>
<p class="rvps2"><span class="rvts6">*Added joypad.write and joypad.get for naming consistency.&nbsp;</span></p>
<p class="rvps2"><span class="rvts6">*Added rom.readbyte()</span></p>
<p class="rvps2"><span class="rvts6">*Added rom.readbytesigned()</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Sound Config</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Turning sound off disabled sound config controls</span></p>
<p class="rvps2"><span class="rvts6">*Re-enabled sound buffer time slider control</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Hex Editor</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Freezing ram addresses automatically updates the Cheats dialog if it is open.</span></p>
<p class="rvps2"><span class="rvts6">* Added prevention from freezing more than 256 addresses at once (doing so caused crash bugs).</span></p>
<p class="rvps2"><span class="rvts6">*Dialog remembers window size.</span></p>
<p class="rvps2"><span class="rvts6">*Dump Rom &amp; Dump PPU to file Dialogs use ROM to build default filename</span></p>
<p class="rvps2"><span class="rvts6">*Maximize and minimize buttons added.</span></p>
<p class="rvps2"><span class="rvts6">*Help menu item added</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Memory Watch</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Dialog now includes Ram change monitoring. (see </span><a class="rvts35" href="MemoryWatch.html">memwatch</a><span class="rvts6"> for details).</span></p>
<p class="rvps2"><span class="rvts6">*Dialog is now collapsible to 1 column.</span></p>
<p class="rvps2"><span class="rvts6">*No longer crashes when attempting to load an invalid file from the recent file menu.</span></p>
<p class="rvps2"><span class="rvts6">*Cancel option added to the save changes dialog.</span></p>
<p class="rvps2"><span class="rvts6">*Memory address values that are frozen by the debugger or hex editor are displayed in blue.</span></p>
<p class="rvps2"><span class="rvts6">*Fixed bug that caused dialog to "disappear" due to saving -32000 as its window position.</span></p>
<p class="rvps2"><span class="rvts6">*Save as dialog uses ROM name to build a default memory watch filename if there was no last used memory watch filename</span></p>
<p class="rvps2"><span class="rvts6">*Drag and drop for .txt (memory watch) files.</span></p>
<p class="rvps2"><span class="rvts6">*Minor menu and hotkey fixes.</span></p>
<p class="rvps2"><span class="rvts6">*Watch values now compatible with custom windows dialog colors.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Debugger</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Shows scanlines and PPU pixel values</span></p>
<p class="rvps2"><span class="rvts6">*Shows scanlines even while in VBlank</span></p>
<p class="rvps2"><span class="rvts6">*Added a Run Line button (runs 1 scanline per click)</span></p>
<p class="rvps2"><span class="rvts6">*Run 128 Lines button (runs 128 scanlines per click)</span></p>
<p class="rvps2"><span class="rvts6">*Number of active cheats listed.</span></p>
<p class="rvps2"><span class="rvts6">*Cheats list automatically updated if ram addresses are frozen in the hex editor.</span></p>
<p class="rvps2"><span class="rvts6">*Fixed bug that caused dialog to "disappear" due to saving -32000 as its window position.</span></p>
<p class="rvps2"><span class="rvts6">*Debugger now has a minimum valid size</span></p>
<p class="rvps2"><span class="rvts6">*Added "Restore original window size" button</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">PPU Viewer&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Default refresh value set to 15</span></p>
<p class="rvps2"><span class="rvts6">*Refresh value stored in the .cfg file</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Nametable Viewer</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Default refresh value set to 15</span></p>
<p class="rvps2"><span class="rvts6">*Refresh value stored in the .cfg file</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Trace Logger</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Fixed bug where user can't scroll the log window while it is auto-updating.</span></p>
<p class="rvps2"><span class="rvts6">*Changed message about F2 pause (left over from FCEUXDSP) to display the current hotkey mapping.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Text Hooker</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Saving a .tht file no longer crashes</span></p>
<p class="rvps2"><span class="rvts6">*Dialog updates every frame</span></p>
<p class="rvps2"><span class="rvts6">*Initialization error checking reinstalled,</span></p>
<p class="rvps2"><span class="rvts6">*Dialog remembers window position</span></p>
<p class="rvps2"><span class="rvts6">*Fixed bug where canceling save as produces an error message.</span></p>
<p class="rvps2"><span class="rvts6">*Save As produces default filename based on the current ROM</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Message Log</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Remembers X,Y position</span></p>
<p class="rvps2"><span class="rvts6">*Resized width and height</span></p>
<p class="rvps2"><span class="rvts6">*Allowed more lines of text to appear on the screen at once.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Metadata</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*Remembers window position</span></p>
<p class="rvps2"><span class="rvts6">*Can be called from the context menu if a movie is loaded (see </span><a class="rvts35" href="ContextMenuItems.html">context menu</a><span class="rvts6"> for details).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">TASEdit</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">*added help menu item</span></p>
<p class="rvps2"><span class="rvts6">*disabled menu items that are not currently implemented.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">Turbo</span></p>
<p class="rvps2"><span class="rvts6">*Turbo now employs frame skip, greatly increasing its speed</span></p>
<p class="rvps2"><span class="rvts6">*The mute turbo option completely bypasses sound processing (another big speed boost)</span></p>
<p class="rvps2"><span class="rvts6">*Turbo now works with the Lazy wait for VBlank sync setting</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts21">SDL&nbsp;</span></p>
<p class="rvps2"><span class="rvts6">*SDL Movie subtitle support and subtitle toggle hotkey added.</span></p>
<p class="rvps2"><span class="rvts6">*SDL Added fcm to fm2 converter tool to SDL version.</span></p>
<p class="rvps2"><span class="rvts6">*SDL Improved the SDL sound code; drastically improves quality of sound.</span></p>
<p class="rvps2"><span class="rvts6">*SDL Savestate slots are now mappable.</span></p>
<p class="rvps2"><span class="rvts6">*SDL Major updates to SDL documentation</span></p>
<p class="rvps2"><span class="rvts6">*SDL Added Shift+M for toggling automatic movie backups.</span></p>
<p class="rvps2"><span class="rvts6">*SDL Added option to mute FCEUX for avi capturing, check the documentation for more details.</span></p>
<p class="rvps2"><span class="rvts6">*SDL Added --noconfig command line option</span></p>
<p class="rvps2"><span class="rvts6">*SDL Frame Advance Skip Lag frames toggle implemented</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></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.helpndoc.com/create-epub-ebooks">Full-featured EPub generator</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">&times;</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>

View File

@ -1,156 +1,347 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.1.1 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew211");
}
});
</script>
<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>What's New? 2.1.1 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.1.1 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.1.1 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.1.1 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew212.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew210.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.1.1</span></p>
<p>Released July 29, 2009</p>
<p><br/></p>
<p>This release includes a multitude of new features, major fixes, and enhancements.</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts21">The 2.1 new release fixes some bugs of 2.1.0a, improves the accuracy of the sound core, and adds useability enhancements to the windows port.</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Common - Bug fixes</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed reported issue 2746924 (md5_asciistr() doesn't produce correct string)</span></li>
<li><span class="rvts21">Made default save slot 0 instead of 1</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Improved Sound core/PPU</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed the noise value, it seems that the noise logic was shifting the values to the left by 1 when reloading, but this doesn't work for PAL since one of the PAL reload value is odd, so fix the logic and used the old tables. Revert a stupid CPU ignore logic in PPU. Sorry about that. </span></li>
<li><span class="rvts21">Updated with the correct values for the noise and DMC table, </span></li>
<li><span class="rvts21">Fixed the CPU unofficial opcode ATX, ORing with correct constant $FF instead of $EE, as tested by blargg's. These fixes passes the IRQ flags test from blargg, and also one more &nbsp;opcode test from blargg's cpu.nes test.</span></li>
<li><span class="rvts21">Square 1 &amp; square 2 volume controls no longer backwards</span></li>
<li><span class="rvts21">Length counters for APU now correct variables</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">NewPPU</span><span class="rvts21"> (still experimental, enabled by setting newppu 1 in the config file)</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added experimental $2004 reading support to play micro machines with (little) shakes, and fixed some timing in the new PPU.</span></li>
<li><span class="rvts21">Added palette reading cases for the new PPU.</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Win32</span></p>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Minor Bug fixes</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Replay movie dialog - Stop movie at frame x feature - fixed off by 1 error on the stop frame number</span></li>
<li><span class="rvts21">Hex Editor - changed ROM values again dsiplay as red, saved in the config as RomFreezeColor</span></li>
<li><span class="rvts21">Fixed bug in memory watch that would make the first watch value drawn in the wrong place if watch file was full</span></li>
<li><span class="rvts21">Debugger - Step type functions now update other dialogs such as ppu, nametable, code/data, trace logger, etc.</span></li>
<li><span class="rvts21">"Disable screen saver" gui option now also diables the monitor powersave</span></li>
<li><span class="rvts21">Recent menus - no longer crash if item no longer exists, instead it ask the user if they want to remove the item from the list</span></li>
<li><span class="rvts21">Sound Config Dialog - When sound is off, all controls are grayed out</span></li>
<li><span class="rvts21">Memory Watch - fixed a regression made in 2.0.1 that broke the Save As menu item</span></li>
<li><span class="rvts21">Memory Watch - save menu item is grayed if file hasn't changed</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">GUI/Enhancements</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Last save slot used is stored in the config file</span></li>
<li><span class="rvts21">Made fullscreen toggle (Alt+Enter) remappable</span></li>
<li><span class="rvts21">Hex editor - Reverted fixedFontHeight to 13 instead of 14. &nbsp;Gave the option of adjusting the height by modifying RowHeightBorder in the .cfg file</span></li>
<li><span class="rvts21">Hex Editor - allowed the user to customize the color scheme by use of RGB values stored in the .cfg file</span></li>
<li><span class="rvts21">Hex editor - freeze/unfreeze ram addresses now causes the colors to update immediately, but only with groups of addresses highlighted at once (single ones still don't yet update)</span></li>
<li><span class="rvts21">Hex Editor - Save Rom As... menu option enabled and implemented</span></li>
<li><span class="rvts21">Window caption shows the name of the ROM loaded</span></li>
<li><span class="rvts21">Recent Movie Menu added</span></li>
<li><span class="rvts21">Load Last Movie context menu item added</span></li>
<li><span class="rvts21">Save Movie As... context menu item (for when a movie is loaded in read+write mode)</span></li>
<li><span class="rvts21">Drag &amp; Drop support for all files related to FCEUX including:</span></li>
</ul>
<p><span class="rvts21"> &nbsp; &nbsp;.fcm (autoconverts to .fm2 and begins movie playback)</span></p>
<p><span class="rvts21"> &nbsp; &nbsp;Savestates</span></p>
<p><span class="rvts21"> &nbsp; &nbsp;Palette files (.pal)</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Commandline - -palette commandline option</span></li>
<li><span class="rvts21">Memory Watch - option to bind to main window, if checked it gives GENS dialog style control, where there is no extra task bar item, and it minimizes when FCEUX is minimized</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">SDL</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">added --subtitles</span></li>
<li><span class="rvts21">fixed Four Score movie playback</span></li>
<li><span class="rvts21">added --ripsubs for converting fm2 movie subtitles to an srt file</span></li>
<li><span class="rvts21">Lua is optional again, fixed the real issue</span></li>
<li><span class="rvts21">Lua is NO longer optional, so the SConscripts have been updated to reflect that change. &nbsp;This fixes the mysterious non-working input issue.</span></li>
<li><span class="rvts21">implemented saving/loading a savestate from a specific file on Alt+S/L</span></li>
<li><span class="rvts21">implemented starting an FM2 movie on Alt+R</span></li>
<li><span class="rvts21">added --pauseframe to pause movie playback on frame x</span></li>
<li><span class="rvts21">dropped UTFConverter.c from SDL build</span></li>
<li><span class="rvts21">added hotkey Q for toggling read-only/read+write movie playback</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free PDF documentation generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew211"
data-hnd-context="72"
data-hnd-title="What's New? 2.1.1 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew212.html" title="What's New? 2.1.2 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew210.html" title="What's New? 2.1 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.1.1 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.1.1</span></p>
<p class="rvps2"><span class="rvts6">Released July 29, 2009</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">This release includes a multitude of new features, major fixes, and enhancements.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts32">The 2.1 new release fixes some bugs of 2.1.0a, improves the accuracy of the sound core, and adds useability enhancements to the windows port.</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Common - Bug fixes</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed reported issue 2746924 (md5_asciistr() doesn't produce correct string)</span></li>
<li class="rvps2"><span class="rvts32">Made default save slot 0 instead of 1</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Improved Sound core/PPU</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed the noise value, it seems that the noise logic was shifting the values to the left by 1 when reloading, but this doesn't work for PAL since one of the PAL reload value is odd, so fix the logic and used the old tables. Revert a stupid CPU ignore logic in PPU. Sorry about that.&nbsp;</span></li>
<li class="rvps2"><span class="rvts32">Updated with the correct values for the noise and DMC table,&nbsp;</span></li>
<li class="rvps2"><span class="rvts32">Fixed the CPU unofficial opcode ATX, ORing with correct constant $FF instead of $EE, as tested by blargg's. These fixes passes the IRQ flags test from blargg, and also one more &nbsp;opcode test from blargg's cpu.nes test.</span></li>
<li class="rvps2"><span class="rvts32">Square 1 &amp; square 2 volume controls no longer backwards</span></li>
<li class="rvps2"><span class="rvts32">Length counters for APU now correct variables</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">NewPPU</span><span class="rvts32"> (still experimental, enabled by setting newppu 1 in the config file)</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added experimental $2004 reading support to play micro machines with (little) shakes, and fixed some timing in the new PPU.</span></li>
<li class="rvps2"><span class="rvts32">Added palette reading cases for the new PPU.</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Win32</span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Minor Bug fixes</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Replay movie dialog - Stop movie at frame x feature - fixed off by 1 error on the stop frame number</span></li>
<li class="rvps2"><span class="rvts32">Hex Editor - changed ROM values again dsiplay as red, saved in the config as RomFreezeColor</span></li>
<li class="rvps2"><span class="rvts32">Fixed bug in memory watch that would make the first watch value drawn in the wrong place if watch file was full</span></li>
<li class="rvps2"><span class="rvts32">Debugger - Step type functions now update other dialogs such as ppu, nametable, code/data, trace logger, etc.</span></li>
<li class="rvps2"><span class="rvts32">"Disable screen saver" gui option now also diables the monitor powersave</span></li>
<li class="rvps2"><span class="rvts32">Recent menus - no longer crash if item no longer exists, instead it ask the user if they want to remove the item from the list</span></li>
<li class="rvps2"><span class="rvts32">Sound Config Dialog - When sound is off, all controls are grayed out</span></li>
<li class="rvps2"><span class="rvts32">Memory Watch - fixed a regression made in 2.0.1 that broke the Save As menu item</span></li>
<li class="rvps2"><span class="rvts32">Memory Watch - save menu item is grayed if file hasn't changed</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">GUI/Enhancements</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Last save slot used is stored in the config file</span></li>
<li class="rvps2"><span class="rvts32">Made fullscreen toggle (Alt+Enter) remappable</span></li>
<li class="rvps2"><span class="rvts32">Hex editor - Reverted fixedFontHeight to 13 instead of 14. &nbsp;Gave the option of adjusting the height by modifying RowHeightBorder in the .cfg file</span></li>
<li class="rvps2"><span class="rvts32">Hex Editor - allowed the user to customize the color scheme by use of RGB values stored in the .cfg file</span></li>
<li class="rvps2"><span class="rvts32">Hex editor - freeze/unfreeze ram addresses now causes the colors to update immediately, but only with groups of addresses highlighted at once (single ones still don't yet update)</span></li>
<li class="rvps2"><span class="rvts32">Hex Editor - Save Rom As... menu option enabled and implemented</span></li>
<li class="rvps2"><span class="rvts32">Window caption shows the name of the ROM loaded</span></li>
<li class="rvps2"><span class="rvts32">Recent Movie Menu added</span></li>
<li class="rvps2"><span class="rvts32">Load Last Movie context menu item added</span></li>
<li class="rvps2"><span class="rvts32">Save Movie As... context menu item (for when a movie is loaded in read+write mode)</span></li>
<li class="rvps2"><span class="rvts32">Drag &amp; Drop support for all files related to FCEUX including:</span></li>
</ul>
<p class="rvps2"><span class="rvts32">&nbsp; &nbsp; .fcm (autoconverts to .fm2 and begins movie playback)</span></p>
<p class="rvps2"><span class="rvts32">&nbsp; &nbsp; Savestates</span></p>
<p class="rvps2"><span class="rvts32">&nbsp; &nbsp; Palette files (.pal)</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Commandline - -palette commandline option</span></li>
<li class="rvps2"><span class="rvts32">Memory Watch - option to bind to main window, if checked it gives GENS dialog style control, where there is no extra task bar item, and it minimizes when FCEUX is minimized</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">SDL</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">added --subtitles</span></li>
<li class="rvps2"><span class="rvts32">fixed Four Score movie playback</span></li>
<li class="rvps2"><span class="rvts32">added --ripsubs for converting fm2 movie subtitles to an srt file</span></li>
<li class="rvps2"><span class="rvts32">Lua is optional again, fixed the real issue</span></li>
<li class="rvps2"><span class="rvts32">Lua is NO longer optional, so the SConscripts have been updated to reflect that change. &nbsp;This fixes the mysterious non-working input issue.</span></li>
<li class="rvps2"><span class="rvts32">implemented saving/loading a savestate from a specific file on Alt+S/L</span></li>
<li class="rvps2"><span class="rvts32">implemented starting an FM2 movie on Alt+R</span></li>
<li class="rvps2"><span class="rvts32">added --pauseframe to pause movie playback on frame x</span></li>
<li class="rvps2"><span class="rvts32">dropped UTFConverter.c from SDL build</span></li>
<li class="rvps2"><span class="rvts32">added hotkey Q for toggling read-only/read+write movie playback</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><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.helpndoc.com/feature-tour/create-help-files-for-the-qt-help-framework">Create help files for the Qt Help Framework</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">&times;</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>

View File

@ -1,136 +1,327 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.1.2 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew212");
}
});
</script>
<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>What's New? 2.1.2 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.1.2 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.1.2 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.1.2 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew213.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew211.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.1.2</span></p>
<p>Released November 3, 2009</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts21">The 2.1.2 release fixes some bugs of 2.1.0a, increases game compatibility, launches a new PPU core, and adds usability enhancements to the windows port.</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Common </span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">New PPU is now functional! &nbsp;You can access it by changing the newPPU flag in the config file. &nbsp;Windows users can access it from Config &gt; PPU &gt; New PPU</span></li>
<li><span class="rvts21">Dragon Ball Z 3 now playable again</span></li>
<li><span class="rvts21">Fixed action 52 game that was broken in post-FCEUX 2.0.3 versions</span></li>
<li><span class="rvts21">Mapper 253 mostly implemented</span></li>
<li><span class="rvts21">Mapper 43 fixed bug</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Win32</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Imported NSF features from FCEUXDSP-NSF. &nbsp;Debugging tools are now compatible with NSF files.</span></li>
<li><span class="rvts21">Movies now record FDS disk swapping commands</span></li>
<li><span class="rvts21">Movie play dialog displays movie time based on ~60.1 (~50.1 PAL) instead of 60 &amp; 50</span></li>
<li><span class="rvts21">Ram Watch and Ram Search dialogs imported from GENS rerecording</span></li>
<li><span class="rvts21">Ram Filter dialog removed (now redundant compared to both cheat search and ram search)</span></li>
<li><span class="rvts21">Lua script window ported from GENS</span></li>
<li><span class="rvts21">Fix for the directory overrides bug that caused overrides to reset</span></li>
<li><span class="rvts21">Debugger: &nbsp;.deb file saving/loading restored</span></li>
<li><span class="rvts21">"Save config file" menu item</span></li>
<li><span class="rvts21">"New PPU" menu item</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Minor Bug fixes</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Minor fixes to recent menus</span></li>
<li><span class="rvts21">Fixed a bug that prevented the Map Hotkeys dialog's X button from closing the dialog</span></li>
<li><span class="rvts21">Restored DPCM Logging when Code/Data Logger is active</span></li>
<li><span class="rvts21">Memory watch - Save Changes Prompt - clicking save will default to quicksave first and save as 2nd (instead of always defaulting to save as)</span></li>
<li><span class="rvts21">Made Trace Logger refresh adequately when using stepping options in the debugger.</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">Lua</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">joypad.set() fixed. &nbsp;True,False, and Nil now work properly for all buttons. &nbsp;In addition there is a new "invert" option.</span></li>
<li><span class="rvts21">Lua5.1.dll no longer required to use lua.</span></li>
<li><span class="rvts21">fceu.unpause()</span></li>
<li><span class="rvts21">Added savestate.registerload(), savestate.registersave(), savestate.loadscriptdata()</span></li>
<li><span class="rvts21">emu. library, has all the same functions as fceu. library for better compatibility between lua emulators</span></li>
<li><span class="rvts21">Many additional function names to increase consistency with other lua emulators</span></li>
<li><span class="rvts21">Added movie.recording() and movie.playing()</span></li>
<li><span class="rvts21">Added memory.getregister() and memory.setregister()</span></li>
<li><span class="rvts21">Added gui.popup and input.popup</span></li>
<li><span class="rvts21">Added savestate.registerload(), savestate.registersave(), and savestate.loadscriptdata()</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">New Lua Scripts</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">A multi-track movie recording tools written by FatRatKnight. &nbsp;Allows input for different players to be recorded separately.</span></li>
<li><span class="rvts21">A rewinding tool by Antony Lavelle</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Help documents</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew212"
data-hnd-context="73"
data-hnd-title="What's New? 2.1.2 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew213.html" title="What's New? 2.1.3 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew211.html" title="What's New? 2.1.1 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.1.2 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.1.2</span></p>
<p class="rvps2"><span class="rvts6">Released November 3, 2009</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts32">The 2.1.2 release fixes some bugs of 2.1.0a, increases game compatibility, launches a new PPU core, and adds usability enhancements to the windows port.</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Common&nbsp;</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">New PPU is now functional! &nbsp;You can access it by changing the newPPU flag in the config file. &nbsp;Windows users can access it from Config &gt; PPU &gt; New PPU</span></li>
<li class="rvps2"><span class="rvts32">Dragon Ball Z 3 now playable again</span></li>
<li class="rvps2"><span class="rvts32">Fixed action 52 game that was broken in post-FCEUX 2.0.3 versions</span></li>
<li class="rvps2"><span class="rvts32">Mapper 253 mostly implemented</span></li>
<li class="rvps2"><span class="rvts32">Mapper 43 fixed bug</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Win32</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Imported NSF features from FCEUXDSP-NSF. &nbsp;Debugging tools are now compatible with NSF files.</span></li>
<li class="rvps2"><span class="rvts32">Movies now record FDS disk swapping commands</span></li>
<li class="rvps2"><span class="rvts32">Movie play dialog displays movie time based on ~60.1 (~50.1 PAL) instead of 60 &amp; 50</span></li>
<li class="rvps2"><span class="rvts32">Ram Watch and Ram Search dialogs imported from GENS rerecording</span></li>
<li class="rvps2"><span class="rvts32">Ram Filter dialog removed (now redundant compared to both cheat search and ram search)</span></li>
<li class="rvps2"><span class="rvts32">Lua script window ported from GENS</span></li>
<li class="rvps2"><span class="rvts32">Fix for the directory overrides bug that caused overrides to reset</span></li>
<li class="rvps2"><span class="rvts32">Debugger: &nbsp;.deb file saving/loading restored</span></li>
<li class="rvps2"><span class="rvts32">"Save config file" menu item</span></li>
<li class="rvps2"><span class="rvts32">"New PPU" menu item</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Minor Bug fixes</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Minor fixes to recent menus</span></li>
<li class="rvps2"><span class="rvts32">Fixed a bug that prevented the Map Hotkeys dialog's X button from closing the dialog</span></li>
<li class="rvps2"><span class="rvts32">Restored DPCM Logging when Code/Data Logger is active</span></li>
<li class="rvps2"><span class="rvts32">Memory watch - Save Changes Prompt - clicking save will default to quicksave first and save as 2nd (instead of always defaulting to save as)</span></li>
<li class="rvps2"><span class="rvts32">Made Trace Logger refresh adequately when using stepping options in the debugger.</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Lua</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">joypad.set() fixed. &nbsp;True,False, and Nil now work properly for all buttons. &nbsp;In addition there is a new "invert" option.</span></li>
<li class="rvps2"><span class="rvts32">Lua5.1.dll no longer required to use lua.</span></li>
<li class="rvps2"><span class="rvts32">fceu.unpause()</span></li>
<li class="rvps2"><span class="rvts32">Added savestate.registerload(), savestate.registersave(), savestate.loadscriptdata()</span></li>
<li class="rvps2"><span class="rvts32">emu. library, has all the same functions as fceu. library for better compatibility between lua emulators</span></li>
<li class="rvps2"><span class="rvts32">Many additional function names to increase consistency with other lua emulators</span></li>
<li class="rvps2"><span class="rvts32">Added movie.recording() and movie.playing()</span></li>
<li class="rvps2"><span class="rvts32">Added memory.getregister() and memory.setregister()</span></li>
<li class="rvps2"><span class="rvts32">Added gui.popup and input.popup</span></li>
<li class="rvps2"><span class="rvts32">Added savestate.registerload(), savestate.registersave(), and savestate.loadscriptdata()</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">New Lua Scripts</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">A multi-track movie recording tools written by FatRatKnight. &nbsp;Allows input for different players to be recorded separately.</span></li>
<li class="rvps2"><span class="rvts32">A rewinding tool by Antony Lavelle</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><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.helpndoc.com/help-authoring-tool">Free help authoring environment</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">&times;</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>

View File

@ -1,132 +1,323 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.1.3 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew213");
}
});
</script>
<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>What's New? 2.1.3 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.1.3 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.1.3 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.1.3 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew214.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew212.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.1.3</span></p>
<p>Released April 8, 2010</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts21">The 2.1.3 release fixes some bugs of 2.1.2, increases game compatibility, and adds usability enhancements to the windows port and adds a GUI to the SDL port.</span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Common </span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed mappers 82, 25, 21, and 18. &nbsp;Games such as SD Kiji Blader, Ganbare Goemon Gaiden, and Ganbare Goemon Gaiden 2, Jajamaru Gekimadden are now playable</span></li>
<li><span class="rvts21">Fixes for mappers 253 &amp; 226 - fixes games such as Fire Emblem (J) and Fire Emblem Gaiden (J)</span></li>
<li><span class="rvts21">Fix crashing on game loading for any battery backed ROMs with mappers from MapInitTab (fixes Esper Dream 2 - Aratanaru Tatakai (J)</span></li>
<li><span class="rvts21">FDS - show name of missing bios file in error message</span></li>
<li><span class="rvts21">NewPPU - fixed sprite hit before 255 and for non transparent hits only, thanks to dwedit for providing the fix</span></li>
<li><span class="rvts21">.fm2 file format header now has an FDS flag</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">SDL</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">A GUI! &nbsp;A graphic user interface (using GTK) with many basic menu options</span></li>
<li><span class="rvts21">ported to SDL 1.3; compatibility maintained with 1.2</span></li>
<li><span class="rvts21">unix netplay is now functional; gtk network gui created</span></li>
<li><span class="rvts21">now prints the name of the mapper on ROM load</span></li>
<li><span class="rvts21">fixed dpad/joyhat support</span></li>
<li><span class="rvts21">VS unisystem keys now configable</span></li>
<li><span class="rvts21">changed default hotkeys and keys to match Win32</span></li>
<li><span class="rvts21">disallow --inputcfg gamepad0 and gamepad5</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">Win32</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Made savestate backups optional (config - enable - backup savestates)</span></li>
<li><span class="rvts21">Made savestate compression togglable (config - enable - compress savestates)</span></li>
<li><span class="rvts21">Cheats dialog - Pause while active checkbox</span></li>
<li><span class="rvts21">Cheats dialog - Toggling a cheat in the cheats list now updates the active cheats count</span></li>
<li><span class="rvts21">Debugger - added an auto-load feature</span></li>
<li><span class="rvts21">Debugger - Fix so it doesn't crash if unminimized with no game loaded </span></li>
<li><span class="rvts21">Closing minimized windows no longer moves them the next time they get opened</span></li>
<li><span class="rvts21">Lua console - added a menu</span></li>
<li><span class="rvts21">Lua console - filename updates when lua scripts are dragged to emulator or recent filenames invoked</span></li>
<li><span class="rvts21">Name Table Viewer - Fix for use with New PPU</span></li>
<li><span class="rvts21">Trace Logger - Trace logger now logs the values of the stack pointer register</span></li>
<li><span class="rvts21">If a .fm2 file is drag and dropped with no ROM load, the open ROM dialog will appear</span></li>
<li><span class="rvts21">disable movie messages menu item</span></li>
<li><span class="rvts21">Added more window positions bounds checks. Accounts for -32000 positions and less out-of-range too</span></li>
<li><span class="rvts21">TASEdit - Added interface functionality (save/load, running TASEdit mid-movie, etc.)</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">Lua</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">New lua functions: gui.parsecolor(), joypad.getup(), joypad.getdown(), emu.emulating()</span></li>
<li><span class="rvts21">Change gui.line, gui.box, joypad.get to function consistently with other lua emulators such as GENS rerecording</span></li>
<li><span class="rvts21">fixed zapper.read() to read movie data if a movie is playing. &nbsp;Also changed the struct values to x,y,fire. This breaks lua scripts that used it previous, sorry</span></li>
<li><span class="rvts21">gui.text() now has out of bounds checking</span></li>
<li><span class="rvts21">Lua no longer unpauses the emulator when a script is loaded</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Full-featured EBook editor</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew213"
data-hnd-context="75"
data-hnd-title="What's New? 2.1.3 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew214.html" title="What's New? 2.1.4 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew212.html" title="What's New? 2.1.2 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.1.3 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.1.3</span></p>
<p class="rvps2"><span class="rvts6">Released April 8, 2010</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts32">The 2.1.3 release fixes some bugs of 2.1.2, increases game compatibility, and adds usability enhancements to the windows port and adds a GUI to the SDL port.</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Common&nbsp;</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed mappers 82, 25, 21, and 18. &nbsp;Games such as SD Kiji Blader, Ganbare Goemon Gaiden, and Ganbare Goemon Gaiden 2, Jajamaru Gekimadden are now playable</span></li>
<li class="rvps2"><span class="rvts32">Fixes for mappers 253 &amp; 226 - fixes games such as Fire Emblem (J) and Fire Emblem Gaiden (J)</span></li>
<li class="rvps2"><span class="rvts32">Fix crashing on game loading for any battery backed ROMs with mappers from MapInitTab (fixes Esper Dream 2 - Aratanaru Tatakai (J)</span></li>
<li class="rvps2"><span class="rvts32">FDS - show name of missing bios file in error message</span></li>
<li class="rvps2"><span class="rvts32">NewPPU - fixed sprite hit before 255 and for non transparent hits only, thanks to dwedit for providing the fix</span></li>
<li class="rvps2"><span class="rvts32">.fm2 file format header now has an FDS flag</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">SDL</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">A GUI! &nbsp;A graphic user interface (using GTK) with many basic menu options</span></li>
<li class="rvps2"><span class="rvts32">ported to SDL 1.3; compatibility maintained with 1.2</span></li>
<li class="rvps2"><span class="rvts32">unix netplay is now functional; gtk network gui created</span></li>
<li class="rvps2"><span class="rvts32">now prints the name of the mapper on ROM load</span></li>
<li class="rvps2"><span class="rvts32">fixed dpad/joyhat support</span></li>
<li class="rvps2"><span class="rvts32">VS unisystem keys now configable</span></li>
<li class="rvps2"><span class="rvts32">changed default hotkeys and keys to match Win32</span></li>
<li class="rvps2"><span class="rvts32">disallow --inputcfg gamepad0 and gamepad5</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Win32</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Made savestate backups optional (config - enable - backup savestates)</span></li>
<li class="rvps2"><span class="rvts32">Made savestate compression togglable (config - enable - compress savestates)</span></li>
<li class="rvps2"><span class="rvts32">Cheats dialog - Pause while active checkbox</span></li>
<li class="rvps2"><span class="rvts32">Cheats dialog - Toggling a cheat in the cheats list now updates the active cheats count</span></li>
<li class="rvps2"><span class="rvts32">Debugger - added an auto-load feature</span></li>
<li class="rvps2"><span class="rvts32">Debugger - Fix so it doesn't crash if unminimized with no game loaded&nbsp;</span></li>
<li class="rvps2"><span class="rvts32">Closing minimized windows no longer moves them the next time they get opened</span></li>
<li class="rvps2"><span class="rvts32">Lua console - added a menu</span></li>
<li class="rvps2"><span class="rvts32">Lua console - filename updates when lua scripts are dragged to emulator or recent filenames invoked</span></li>
<li class="rvps2"><span class="rvts32">Name Table Viewer - Fix for use with New PPU</span></li>
<li class="rvps2"><span class="rvts32">Trace Logger - Trace logger now logs the values of the stack pointer register</span></li>
<li class="rvps2"><span class="rvts32">If a .fm2 file is drag and dropped with no ROM load, the open ROM dialog will appear</span></li>
<li class="rvps2"><span class="rvts32">disable movie messages menu item</span></li>
<li class="rvps2"><span class="rvts32">Added more window positions bounds checks. Accounts for -32000 positions and less out-of-range too</span></li>
<li class="rvps2"><span class="rvts32">TASEdit - Added interface functionality (save/load, running TASEdit mid-movie, etc.)</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Lua</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">New lua functions: gui.parsecolor(), joypad.getup(), joypad.getdown(), emu.emulating()</span></li>
<li class="rvps2"><span class="rvts32">Change gui.line, gui.box, joypad.get to function consistently with other lua emulators such as GENS rerecording</span></li>
<li class="rvps2"><span class="rvts32">fixed zapper.read() to read movie data if a movie is playing. &nbsp;Also changed the struct values to x,y,fire. This breaks lua scripts that used it previous, sorry</span></li>
<li class="rvps2"><span class="rvts32">gui.text() now has out of bounds checking</span></li>
<li class="rvps2"><span class="rvts32">Lua no longer unpauses the emulator when a script is loaded</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><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.helpndoc.com/help-authoring-tool">Full-featured multi-format Help generator</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">&times;</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>

View File

@ -1,179 +1,370 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.1.4 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew214");
}
});
</script>
<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>What's New? 2.1.4 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.1.4 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.1.4 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.1.4 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew215.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew213.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.1.4a</span></p>
<p>Released 01 June 2010</p>
<p>2.1.4 is a maintenance release that fixes these bugs in 2.1.4:</p>
<p>fix crash bug on .fcm convert</p>
<p>fix erroneous reporting of savestate past the end of movie error during read-only loadstates</p>
<p><br/></p>
<p>Released 31 May 2010</p>
<p><br/></p>
<p><br/></p>
<p><span class="rvts21">The 2.1.4 release fixes many bugs and adds new features compared to 2.1.3. In addition it also fixes up the movie code significantly; fixing implementation problems, loading speed, adding new features, and fixing bugs. </span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Common </span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added microphone support option. When enabled, Port 2 Start activates the Microphone</span></li>
<li><span class="rvts21">Prevent .zip files containing no recognized files from causing crash</span></li>
<li><span class="rvts21">Autohold - Added player 3 and 4 to autohold notification window, labeled controller input</span></li>
<li><span class="rvts21">mapper 19 savestate fix mirroring for "Dream Master (J)" corrected to "four-screen" by CRC check</span></li>
<li><span class="rvts21">Disable auto-savestates during turbo </span></li>
<li><span class="rvts21">Fixed so Gotcha! auto-enables the zapper</span></li>
<li><span class="rvts21">Autohold - Added player 3 and 4 to autohold notification window, labeled controller input</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Movies</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fully implemented "bulletproof" read-only</span></li>
<li><span class="rvts21">Movie code now fully conforms to the Savestate section of the Laws of TAS</span></li>
<li><span class="rvts21">Fixed a potential desync that plays out an extra frame without an update to the frame count involving heavy lua use, joypad.get, and a loadstate</span></li>
<li><span class="rvts21">Movie support for microphone</span></li>
<li><span class="rvts21">Movies now have a "finished" mode. &nbsp;If a playback stops the movie isn't cleared from memory, and can be replayed or a state loaded Similar functionality as DeSmuME and GENS rerecording</span></li>
<li><span class="rvts21">New PPU flag in movie headers (doesn't change an emulators PPU state when loading a movie)</span></li>
<li><span class="rvts21">Much faster movie loading and movie-savestate loading</span></li>
<li><span class="rvts21">Made gamepad 2 off by default (so less movies should have unused player 2 data)</span></li>
<li><span class="rvts21">Implemented a "full savestate-movie load" mode similar to the implementation in VBA-rr and SNES9x-rr. &nbsp;In this mode loading a savestate in read+write doesn't truncate the movie to its frame count immediately. &nbsp;Instead it waits until input is recording into the movie (next frame). &nbsp;For win32 this feature is togglable in movie options and the context menu. &nbsp;For SDL this is off by default and a toggle will need to be added</span></li>
<li><span class="rvts21">Movie + loadstate errors are handled more gracefully now, with more informative error messages and the movie doesn't have to stop if backups are enabled</span></li>
<li><span class="rvts21">Fix PlayMovieFromBeginning when using a movie that starts from savestate</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">Lua</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">fix bug that caused zapper.read() to crash when movie playback ends</span></li>
<li><span class="rvts21">Win32 - Added option for palette selection as color for LUA colors. Included is a LUA script to display all choices with the value used to pick displayed color</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">New Lua functions</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">movie.ispoweron()</span></li>
<li><span class="rvts21">movie.isfromsavestate()</span></li>
<li><span class="rvts21">emu.addgamegenie()</span></li>
<li><span class="rvts21">emu.delgamegenie()</span></li>
<li><span class="rvts21">savestate.object() which is savestate.create() with intuitive numbering under windows</span></li>
<li><span class="rvts21">gui.getpixel() which gets any gui.pixel() set pixel colors, and possibly other functions</span></li>
<li><span class="rvts21">emu.getscreenpixel() which gets the RGB and Palette of any pixel on the screen</span></li>
<li><span class="rvts21">lua function movie.getfilename() which returns the current movie filename without the path included</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">Input Display</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Input display updates on loadstate</span></li>
<li><span class="rvts21">Input display overhaul that uses different colors for different input contexts</span></li>
<li><span class="rvts21">Input display now shows both currently pressed buttons and buttons held the previous frame</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">Win32</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added NTSC 2x scalar option with some CFG config options of it's own Added Ram Search hotkeys for the first 6 search types in the list</span></li>
<li><span class="rvts21">Add Cheat buttons for Ram Search and Ram Watch</span></li>
<li><span class="rvts21">With special scaler in window mode, it's possible to resize to anything above the minimum.</span></li>
<li><span class="rvts21">Recording a new movie adds it to recent movies list</span></li>
<li><span class="rvts21">Replay dialog, when selecting a movie in a relative path (.\movies for example), the recent movies list stores an absolute path instead</span></li>
<li><span class="rvts21">Replay dialog shows PAL flag and New PPU flags</span></li>
<li><span class="rvts21">CDLogger - fixed bug preventing correct interrupt vectors from logging</span></li>
<li><span class="rvts21">Memwatch - ignore spaces at the beginnign of an address in the address boxes</span></li>
<li><span class="rvts21">Replay dialog - fix bug that was causing it to always report savestate movies as soft-reset</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Debugger</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added conditional debugging option 'K', for bank PC is on</span></li>
<li><span class="rvts21">Fixed bug involving pausing emulation outside of the debugger, then trying to use the debugger commands, and having the CPU registers become corrupted</span></li>
<li><span class="rvts21">Made debugger able to break on and distinguish Stack reads/writes</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">Hex Editor</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added "Goto" command</span></li>
<li><span class="rvts21">Made the Hex Editor display the Frozen, Bookmarked, etc. status of the selected address, and made the Frozen color override the Bookmarked color.</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">Cheat Search</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Made enabling/disabling cheats no longer deselect the selected cheat</span></li>
<li><span class="rvts21">Added context menu to Cheat Dialog Cheat Listbox, populated list with Toggle Cheat, Poke Cheat Value, and Goto In Hex Editor</span></li>
<li><span class="rvts21">Enabled multi-select for Cheat menu to allow multiple toggles and deletes</span></li>
<li><span class="rvts21">Made cheat menu's Pause When Active effect immediate</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">GUI</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added Tools - GUI option to partially disable visual themes, so the emulator can be made to look like it did in 2.1.1 and earlier releases. Drag &amp; Drop - if dropping a .fcm with no ROM loaded, prompt for one (same functionality that was added to .fm2 files)</span></li>
<li><span class="rvts21">Added single-instance mode, which makes starting a second copy of FCEUX load the file into the first, then exit.Mode off by default, togglable under Config - GUI</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/help-authoring-tool">Single source CHM, PDF, DOC and HTML Help creation</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew214"
data-hnd-context="77"
data-hnd-title="What's New? 2.1.4 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew215.html" title="What's New? 2.1.5 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew213.html" title="What's New? 2.1.3 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.1.4 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.1.4a</span></p>
<p class="rvps2"><span class="rvts6">Released 01 June 2010</span></p>
<p class="rvps2"><span class="rvts6">2.1.4 is a maintenance release that fixes these bugs in 2.1.4:</span></p>
<p class="rvps2"><span class="rvts6">fix crash bug on .fcm convert</span></p>
<p class="rvps2"><span class="rvts6">fix erroneous reporting of savestate past the end of movie error during read-only loadstates</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Released 31 May 2010</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts32">The 2.1.4 release fixes many bugs and adds new features compared to 2.1.3. In addition it also fixes up the movie code significantly; fixing implementation problems, loading speed, adding new features, and fixing bugs.&nbsp;</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Common&nbsp;</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added microphone support option. When enabled, Port 2 Start activates the Microphone</span></li>
<li class="rvps2"><span class="rvts32">Prevent .zip files containing no recognized files from causing crash</span></li>
<li class="rvps2"><span class="rvts32">Autohold - Added player 3 and 4 to autohold notification window, labeled controller input</span></li>
<li class="rvps2"><span class="rvts32">mapper 19 savestate fix mirroring for "Dream Master (J)" corrected to "four-screen" by CRC check</span></li>
<li class="rvps2"><span class="rvts32">Disable auto-savestates during turbo&nbsp;</span></li>
<li class="rvps2"><span class="rvts32">Fixed so Gotcha! auto-enables the zapper</span></li>
<li class="rvps2"><span class="rvts32">Autohold - Added player 3 and 4 to autohold notification window, labeled controller input</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Movies</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fully implemented "bulletproof" read-only</span></li>
<li class="rvps2"><span class="rvts32">Movie code now fully conforms to the Savestate section of the Laws of TAS</span></li>
<li class="rvps2"><span class="rvts32">Fixed a potential desync that plays out an extra frame without an update to the frame count involving heavy lua use, joypad.get, and a loadstate</span></li>
<li class="rvps2"><span class="rvts32">Movie support for microphone</span></li>
<li class="rvps2"><span class="rvts32">Movies now have a "finished" mode. &nbsp;If a playback stops the movie isn't cleared from memory, and can be replayed or a state loaded Similar functionality as DeSmuME and GENS rerecording</span></li>
<li class="rvps2"><span class="rvts32">New PPU flag in movie headers (doesn't change an emulators PPU state when loading a movie)</span></li>
<li class="rvps2"><span class="rvts32">Much faster movie loading and movie-savestate loading</span></li>
<li class="rvps2"><span class="rvts32">Made gamepad 2 off by default (so less movies should have unused player 2 data)</span></li>
<li class="rvps2"><span class="rvts32">Implemented a "full savestate-movie load" mode similar to the implementation in VBA-rr and SNES9x-rr. &nbsp;In this mode loading a savestate in read+write doesn't truncate the movie to its frame count immediately. &nbsp;Instead it waits until input is recording into the movie (next frame). &nbsp;For win32 this feature is togglable in movie options and the context menu. &nbsp;For SDL this is off by default and a toggle will need to be added</span></li>
<li class="rvps2"><span class="rvts32">Movie + loadstate errors are handled more gracefully now, with more informative error messages and the movie doesn't have to stop if backups are enabled</span></li>
<li class="rvps2"><span class="rvts32">Fix PlayMovieFromBeginning when using a movie that starts from savestate</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Lua</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">fix bug that caused zapper.read() to crash when movie playback ends</span></li>
<li class="rvps2"><span class="rvts32">Win32 - Added option for palette selection as color for LUA colors. Included is a LUA script to display all choices with the value used to pick displayed color</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">New Lua functions</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">movie.ispoweron()</span></li>
<li class="rvps2"><span class="rvts32">movie.isfromsavestate()</span></li>
<li class="rvps2"><span class="rvts32">emu.addgamegenie()</span></li>
<li class="rvps2"><span class="rvts32">emu.delgamegenie()</span></li>
<li class="rvps2"><span class="rvts32">savestate.object() which is savestate.create() with intuitive numbering under windows</span></li>
<li class="rvps2"><span class="rvts32">gui.getpixel() which gets any gui.pixel() set pixel colors, and possibly other functions</span></li>
<li class="rvps2"><span class="rvts32">emu.getscreenpixel() which gets the RGB and Palette of any pixel on the screen</span></li>
<li class="rvps2"><span class="rvts32">lua function movie.getfilename() which returns the current movie filename without the path included</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Input Display</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Input display updates on loadstate</span></li>
<li class="rvps2"><span class="rvts32">Input display overhaul that uses different colors for different input contexts</span></li>
<li class="rvps2"><span class="rvts32">Input display now shows both currently pressed buttons and buttons held the previous frame</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Win32</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added NTSC 2x scalar option with some CFG config options of it's own Added Ram Search hotkeys for the first 6 search types in the list</span></li>
<li class="rvps2"><span class="rvts32">Add Cheat buttons for Ram Search and Ram Watch</span></li>
<li class="rvps2"><span class="rvts32">With special scaler in window mode, it's possible to resize to anything above the minimum.</span></li>
<li class="rvps2"><span class="rvts32">Recording a new movie adds it to recent movies list</span></li>
<li class="rvps2"><span class="rvts32">Replay dialog, when selecting a movie in a relative path (.\movies for example), the recent movies list stores an absolute path instead</span></li>
<li class="rvps2"><span class="rvts32">Replay dialog shows PAL flag and New PPU flags</span></li>
<li class="rvps2"><span class="rvts32">CDLogger - fixed bug preventing correct interrupt vectors from logging</span></li>
<li class="rvps2"><span class="rvts32">Memwatch - ignore spaces at the beginnign of an address in the address boxes</span></li>
<li class="rvps2"><span class="rvts32">Replay dialog - fix bug that was causing it to always report savestate movies as soft-reset</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Debugger</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added conditional debugging option 'K', for bank PC is on</span></li>
<li class="rvps2"><span class="rvts32">Fixed bug involving pausing emulation outside of the debugger, then trying to use the debugger commands, and having the CPU registers become corrupted</span></li>
<li class="rvps2"><span class="rvts32">Made debugger able to break on and distinguish Stack reads/writes</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Hex Editor</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added "Goto" command</span></li>
<li class="rvps2"><span class="rvts32">Made the Hex Editor display the Frozen, Bookmarked, etc. status of the selected address, and made the Frozen color override the Bookmarked color.</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Cheat Search</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Made enabling/disabling cheats no longer deselect the selected cheat</span></li>
<li class="rvps2"><span class="rvts32">Added context menu to Cheat Dialog Cheat Listbox, populated list with Toggle Cheat, Poke Cheat Value, and Goto In Hex Editor</span></li>
<li class="rvps2"><span class="rvts32">Enabled multi-select for Cheat menu to allow multiple toggles and deletes</span></li>
<li class="rvps2"><span class="rvts32">Made cheat menu's Pause When Active effect immediate</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">GUI</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added Tools - GUI option to partially disable visual themes, so the emulator can be made to look like it did in 2.1.1 and earlier releases. Drag &amp; Drop - if dropping a .fcm with no ROM loaded, prompt for one (same functionality that was added to .fm2 files)</span></li>
<li class="rvps2"><span class="rvts32">Added single-instance mode, which makes starting a second copy of FCEUX load the file into the first, then exit.Mode off by default, togglable under Config - GUI</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><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.helpndoc.com/create-epub-ebooks">Produce electronic books easily</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">&times;</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>

View File

@ -1,148 +1,339 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.1.5 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew215");
}
});
</script>
<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>What's New? 2.1.5 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.1.5 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.1.5 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.1.5 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew220.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew214.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.1.5</span></p>
<p>Released 04 June 2011</p>
<p><br/></p>
<p><br/></p>
<p>The 2.1.5 release fixes a lot of bugs and brings various improvements to the prior 2.1.4a release. In addition, the SDL port has improved signficantly; completely overhauling the GTK2 GUI, fixing many sound issues, and fixing a variety of bugs.</p>
<p><br/></p>
<p><span class="rvts22">Common </span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed compatibility issue with Young Indiana Jones Chronicles</span></li>
<li><span class="rvts21">Fixed bug in new PPU that made some intensify bits not get applied to output (fixed flashing siren screen in Werefolf)</span></li>
<li><span class="rvts21">Fix many segmentation faults related to file handling</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Movies</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Slight performance increase when loading movies</span></li>
<li><span class="rvts21">Fixed read-only loadstate error messages and logic</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">Lua</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Lua socket added to built-in lua library</span></li>
<li><span class="rvts21">Fixed speed.mode() function so that normal turns off turbo</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">New Lua functions</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">gui.savescreenshotas()</span></li>
<li><span class="rvts21">sound.get()</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts23">Win32</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed bug where PPU toggling toggled the Game Genie as well</span></li>
<li><span class="rvts21">Fixed some minor GUI issues</span></li>
<li><span class="rvts21">Added avi capture commandline argument and related parameters</span></li>
<li><span class="rvts21">Fix input selection for Famicom Expansion port</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Debugger</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed Ram Search to only display valid RAM addresses (0000-07FF and 6000-7FFF)</span></li>
<li><span class="rvts21">Fixed crash when re-opening debugging window</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Hex Editor</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added a confirmation prompt before removing all bookmarks</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">Ram Watch / Ram Search</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed the multiple selection of watches</span></li>
<li><span class="rvts21">Added support for Multiple selection of addresses in RamWatch Fixed issue with restoration of the selection range in RamWatch</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">TasEdit</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">General cleanup</span></li>
<li><span class="rvts21">Fixed crash when truncating while turbo was enabled</span></li>
<li><span class="rvts21">Invalidate greenzone when re-recording earlier portions of a movie</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts22">GUI</span></p>
<p><span class="rvts21"><br/></span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added "SaveStateAs" menu item</span></li>
<li><span class="rvts21">Display movie name at the top of the main window</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/help-authoring-tool">Free help authoring tool</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew215"
data-hnd-context="78"
data-hnd-title="What's New? 2.1.5 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew220.html" title="What's New? 2.2.0 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew214.html" title="What's New? 2.1.4 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.1.5 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.1.5</span></p>
<p class="rvps2"><span class="rvts6">Released 04 June 2011</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The 2.1.5 release fixes a lot of bugs and brings various improvements to the prior 2.1.4a release. In addition, the SDL port has improved signficantly; completely overhauling the GTK2 GUI, fixing many sound issues, and fixing a variety of bugs.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts33">Common&nbsp;</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed compatibility issue with Young Indiana Jones Chronicles</span></li>
<li class="rvps2"><span class="rvts32">Fixed bug in new PPU that made some intensify bits not get applied to output (fixed flashing siren screen in Werefolf)</span></li>
<li class="rvps2"><span class="rvts32">Fix many segmentation faults related to file handling</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Movies</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Slight performance increase when loading movies</span></li>
<li class="rvps2"><span class="rvts32">Fixed read-only loadstate error messages and logic</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Lua</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Lua socket added to built-in lua library</span></li>
<li class="rvps2"><span class="rvts32">Fixed speed.mode() function so that normal turns off turbo</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">New Lua functions</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">gui.savescreenshotas()</span></li>
<li class="rvps2"><span class="rvts32">sound.get()</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Win32</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed bug where PPU toggling toggled the Game Genie as well</span></li>
<li class="rvps2"><span class="rvts32">Fixed some minor GUI issues</span></li>
<li class="rvps2"><span class="rvts32">Added avi capture commandline argument and related parameters</span></li>
<li class="rvps2"><span class="rvts32">Fix input selection for Famicom Expansion port</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Debugger</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed Ram Search to only display valid RAM addresses (0000-07FF and 6000-7FFF)</span></li>
<li class="rvps2"><span class="rvts32">Fixed crash when re-opening debugging window</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Hex Editor</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added a confirmation prompt before removing all bookmarks</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">Ram Watch / Ram Search</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed the multiple selection of watches</span></li>
<li class="rvps2"><span class="rvts32">Added support for Multiple selection of addresses in RamWatch Fixed issue with restoration of the selection range in RamWatch</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">TasEdit</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">General cleanup</span></li>
<li class="rvps2"><span class="rvts32">Fixed crash when truncating while turbo was enabled</span></li>
<li class="rvps2"><span class="rvts32">Invalidate greenzone when re-recording earlier portions of a movie</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts33">GUI</span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added "SaveStateAs" menu item</span></li>
<li class="rvps2"><span class="rvts32">Display movie name at the top of the main window</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><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.helpndoc.com/feature-tour/iphone-website-generation">iPhone web sites made easy</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">&times;</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>

View File

@ -1,252 +1,443 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.2.0 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew220");
}
});
</script>
<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>What's New? 2.2.0 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.2.0 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.2.0 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.2.0 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew221.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew215.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.2.0</span></p>
<p>Released -- 27 November 2012</p>
<p><br/></p>
<p><br/></p>
<p>The 2.2.0 release fixes a lot of bugs and adds many new features to prior releases, <span class="rvts21">increasing game compatibility and enhancing usability of both Windows and SDL ports</span>. The Windows version also includes major improvement of debugging tools and introduces the new powerful toolset TAS Editor v1.0 created to boost efficiency and ease of Tool-Assisted Speedrunning.</p>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Common </span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed crash when using machine with no sound card</span></li>
<li><span class="rvts21">Fixed long savestate messages containing path</span></li>
<li><span class="rvts21">Soft reset and power switch messages</span></li>
<li><span class="rvts21">All onscreen messages are now logged to Message Log</span></li>
<li><span class="rvts21">Fixed wrong default palette entry</span></li>
<li><span class="rvts21">Fixed bug when loading UNIF games</span></li>
<li><span class="rvts21">Improved HUD text rendering wrapping</span></li>
<li><span class="rvts21">"Display FPS" option</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Emulation</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">PAL/NTSC noise channel bug fixed</span></li>
<li><span class="rvts21">All latest mapper changes from fceu-mm</span></li>
<li><span class="rvts21">Also added mappers 176, 116, 156, 252, 28</span></li>
<li><span class="rvts21">Fixed mappers 242, 227, 115, 248, 12, 164, 15, 253, 23, 178, 90, 73 and many others</span></li>
<li><span class="rvts21">Straighten out bandai m159/m016 handling and add valid null-EEPROM emulation to get those games booting.</span></li>
<li><span class="rvts21">Add ability for CNROM games to choose whether they have bus conflicts (fixes Colorful Dragon (Unl) (Sachen), since it flakes out if bus conflicts are emulated)</span></li>
<li><span class="rvts21">Fixed bus conflict emulation, no kage no densetsu bug anymore</span></li>
<li><span class="rvts21">Fixed newppu bug which prevented metroid from booting, CHR RAM was not getting initialized to anything</span></li>
<li><span class="rvts21">Newppu - fix bug in scroll reg logic causing mis-scrolls in p'radikus conflict</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Movies</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed old bug in "Play Movie From Beginning"</span></li>
<li><span class="rvts21">Fixed replay engine bug that doubles the last input of the movie</span></li>
<li><span class="rvts21">Fixed movie savestates logic, loading post-movie savestates from different timeline is not allowed in read-only</span></li>
<li><span class="rvts21">Fixed savestates filenaming bug when working with a movie</span></li>
<li><span class="rvts21">Added support for HUD recording in AVI dumping</span></li>
<li><span class="rvts21">Rerecords counter display</span></li>
<li><span class="rvts21">Config-&gt;Movie options-&gt;Always suggest Read-Only replay (for Replay dialog). No more accidental rewrites!</span></li>
<li><span class="rvts21">Removed "Lag Counter Reset" hotkey, as it was obsolete since FCEUX 2.0.2</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Lua</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed lua drawing alpha blending</span></li>
<li><span class="rvts21">Auto-clearing previous frame drawings (same behaviour as other emulators)</span></li>
<li><span class="rvts21">New library: taseditor (Windows-only) - contains 24 functions, see taseditor.chm</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">New Lua functions:</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">emu.paused()</span></li>
<li><span class="rvts21">emu.setlagflag()</span></li>
<li><span class="rvts21">joypad.getimmediate()</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">New scripts:</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">BoulderDash_AmoebaAI.lua</span></li>
<li><span class="rvts21">ButtonCount.lua</span></li>
<li><span class="rvts21">CustomLagIndicator_RvT.lua</span></li>
<li><span class="rvts21">RBIBaseball.lua</span></li>
<li><span class="rvts21">SoundDisplay.lua</span></li>
<li><span class="rvts21">SoundDisplay2.lua</span></li>
<li><span class="rvts21">taseditor\InputDisplay_for_Selection.lua</span></li>
<li><span class="rvts21">taseditor\InvertSelection.lua</span></li>
<li><span class="rvts21">taseditor\RecordBackwards.lua</span></li>
<li><span class="rvts21">taseditor\ShowNotes.lua</span></li>
<li><span class="rvts21">taseditor\Swap1P2P.lua</span></li>
<li><span class="rvts21">taseditor\TrackNoise.lua</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Win32</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Total revamp of fulscreen support</span></li>
<li><span class="rvts21">Fixed graphic tearing with vertical sync enabled</span></li>
<li><span class="rvts21">Added "Maintain aspect ratio" option to Video config</span></li>
<li><span class="rvts21">Added "Hide mouse cursor" and "Use console BG color for empty areas" options to Video config</span></li>
<li><span class="rvts21">Added "Switch fullscreen by double-click" option to GUI config</span></li>
<li><span class="rvts21">Added "Force Grayscale" option to Palette config</span></li>
<li><span class="rvts21">Fixed crashes and bugs caused by 2.1.5 allowing hotkeys without ROM loaded</span></li>
<li><span class="rvts21">Lua console now gets proper file path when selecting a file from the recent menu</span></li>
<li><span class="rvts21">Fixed context menus to use rightclicks in context menus correctly</span></li>
<li><span class="rvts21">Reload hotkey now also supports removing invalid filenames in Recent ROMs</span></li>
<li><span class="rvts21">Replay dialog speedup, it doesn't search for movies in fceux root folder anymore</span></li>
<li><span class="rvts21">Support multibyte languages for opening files through drag&amp;drop (except for Lua files)</span></li>
<li><span class="rvts21">Loading TAS Editor projects (*.fm3) by drag&amp;drop</span></li>
<li><span class="rvts21">Fixed bug with Input Config not displaying some key names</span></li>
<li><span class="rvts21">Launch tools hotkeys shown in menu; general cleanup of menu/settings, changed some checkboxes to radiobuttons</span></li>
<li><span class="rvts21">Added "Clear" button to Message Log</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">TAS Editor</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Completely rewritten tool with brand new architecture and design. Too many changes to enlist, see taseditor.chm</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Debugger</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">General window layout cleanup; different font; ".DEB files" can be switched off; etc</span></li>
<li><span class="rvts21">Deleting a breakpoint/bookmark leaves selection in the list</span></li>
<li><span class="rvts21">Fixed mysterious out of bounds condition while editing breakpoints</span></li>
<li><span class="rvts21">Fixed RAM peek by a rightclick on left pane</span></li>
<li><span class="rvts21">Allow Frame Advancing when Debugger is in breakpoint state</span></li>
<li><span class="rvts21">Disabled breakpoints now don't impose slowdown</span></li>
<li><span class="rvts21">When a breakpoint is hit, it becomes highlighed (selected) in the breakpoints list</span></li>
<li><span class="rvts21">Show the number of breakpoints (enabled and total) above the breakpoints list</span></li>
<li><span class="rvts21">"&gt;" points at current line in disassembly</span></li>
<li><span class="rvts21">Improved stack display</span></li>
<li><span class="rvts21">Added "CPU cycles" and "Instructions" counters (cumulative and delta)</span></li>
<li><span class="rvts21">Added "Cycles counter exceeds N" and "Instructions counter exceeds N" type of breakpoints</span></li>
<li><span class="rvts21">Single click on any address copies this address to the "Seek To" field and "Bookmark Add" field</span></li>
<li><span class="rvts21">Double-click on any address prompts "Add Breakpoint here" dialog</span></li>
<li><span class="rvts21">"ROM offsets" option displays real ROM addresses in the Disassembly window</span></li>
<li><span class="rvts21">Fixed conditional breakpoints bug: the error message didn't appear when editing a breakpoint</span></li>
<li><span class="rvts21">Fixed and improved Symbolic debug (Names and Comments display)</span></li>
<li><span class="rvts21">Added Bookmarks naming</span></li>
<li><span class="rvts21">Cleaned up and vastly improved debugging documentation</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Trace Logger</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added "Symbolic trace" option</span></li>
<li><span class="rvts21">"RTS" instructions now output the subroutine address/name</span></li>
<li><span class="rvts21">Added "Use Stack Pointer for code tabbing (nesting visualization)" option</span></li>
<li><span class="rvts21">Added "To the left from disassembly text" option for log format customization</span></li>
<li><span class="rvts21">Added "Log current Frame number" option</span></li>
<li><span class="rvts21">Added "Log emulator messages" option</span></li>
<li><span class="rvts21">Added "Log breakpoint hits" option</span></li>
<li><span class="rvts21">Fixed bug with trying to log to file without choosing a filename</span></li>
<li><span class="rvts21">Tracer now also updates its window when user pauses the game, not just when Debugger snaps</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Code/Data Logger</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Now can log data access from RAM code</span></li>
<li><span class="rvts21">"Save Unused Data" button complements "Save Stripped iNes Rom" feature</span></li>
<li><span class="rvts21">Now can log VROM access (CHR banks of the ROM) when NewPPU is enabled</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Hex Editor</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Display 0x5000-0x5FFF contents</span></li>
<li><span class="rvts21">Ctrl+F opens Find dialog</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">RAM Watch / RAM Search</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Updating list when emulator is paused (on Power or when resetting search)</span></li>
<li><span class="rvts21">Fixed loading Data Size and Data Type from a .wch, now corrupted .wch won't crash</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Cheats</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added Compare box to the Cheats window</span></li>
<li><span class="rvts21">Don't lose cheat compare value when toggle cheat enables through UI</span></li>
<li><span class="rvts21">Parse cheat files with non-ASCII characters properly</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">SDL</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">gtk 2.24 now recommended</span></li>
<li><span class="rvts21">added gtk hotkey configuration dialog</span></li>
<li><span class="rvts21">updated/added various gui elements for options</span></li>
<li><span class="rvts21">new option: SDL.ShowFPS</span></li>
<li><span class="rvts21">new option: SDL.Input..EnableOppositeDirectional - allow/disallow simultaneous right+left/up+down input</span></li>
<li><span class="rvts21">fixed various build issues</span></li>
<li><span class="rvts21">fixed segfault occuring during particular sequences in the cheat menu</span></li>
<li><span class="rvts21">fixed potential segfault with gui</span></li>
<li><span class="rvts21">fixed segfault issue on debian/ubuntu with proprietary nvidia drivers</span></li>
<li><span class="rvts21">now compatible with llvm/clang++ </span></li>
<li><span class="rvts21">added build option to dynamically link lua</span></li>
<li><span class="rvts21">updated default server configuration file to "fceux-server.conf" (from "fceu-server.conf")</span></li>
<li><span class="rvts21">updated manpage and documentation</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Free Web Help generator</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew220"
data-hnd-context="80"
data-hnd-title="What's New? 2.2.0 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew221.html" title="What's New? 2.2.1 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew215.html" title="What's New? 2.1.5 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.2.0 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.2.0</span></p>
<p class="rvps2"><span class="rvts6">Released -- 27 November 2012</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The 2.2.0 release fixes a lot of bugs and adds many new features to prior releases, </span><span class="rvts32">increasing game compatibility and enhancing usability of both Windows and SDL ports</span><span class="rvts6">. The Windows version also includes major improvement of debugging tools and introduces the new powerful toolset TAS Editor v1.0 created to boost efficiency and ease of Tool-Assisted Speedrunning.</span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Common&nbsp;</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed crash when using machine with no sound card</span></li>
<li class="rvps2"><span class="rvts32">Fixed long savestate messages containing path</span></li>
<li class="rvps2"><span class="rvts32">Soft reset and power switch messages</span></li>
<li class="rvps2"><span class="rvts32">All onscreen messages are now logged to Message Log</span></li>
<li class="rvps2"><span class="rvts32">Fixed wrong default palette entry</span></li>
<li class="rvps2"><span class="rvts32">Fixed bug when loading UNIF games</span></li>
<li class="rvps2"><span class="rvts32">Improved HUD text rendering wrapping</span></li>
<li class="rvps2"><span class="rvts32">"Display FPS" option</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Emulation</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">PAL/NTSC noise channel bug fixed</span></li>
<li class="rvps2"><span class="rvts32">All latest mapper changes from fceu-mm</span></li>
<li class="rvps2"><span class="rvts32">Also added mappers 176, 116, 156, 252, 28</span></li>
<li class="rvps2"><span class="rvts32">Fixed mappers 242, 227, 115, 248, 12, 164, 15, 253, 23, 178, 90, 73 and many others</span></li>
<li class="rvps2"><span class="rvts32">Straighten out bandai m159/m016 handling and add valid null-EEPROM emulation to get those games booting.</span></li>
<li class="rvps2"><span class="rvts32">Add ability for CNROM games to choose whether they have bus conflicts (fixes Colorful Dragon (Unl) (Sachen), since it flakes out if bus conflicts are emulated)</span></li>
<li class="rvps2"><span class="rvts32">Fixed bus conflict emulation, no kage no densetsu bug anymore</span></li>
<li class="rvps2"><span class="rvts32">Fixed newppu bug which prevented metroid from booting, CHR RAM was not getting initialized to anything</span></li>
<li class="rvps2"><span class="rvts32">Newppu - fix bug in scroll reg logic causing mis-scrolls in p'radikus conflict</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Movies</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed old bug in "Play Movie From Beginning"</span></li>
<li class="rvps2"><span class="rvts32">Fixed replay engine bug that doubles the last input of the movie</span></li>
<li class="rvps2"><span class="rvts32">Fixed movie savestates logic, loading post-movie savestates from different timeline is not allowed in read-only</span></li>
<li class="rvps2"><span class="rvts32">Fixed savestates filenaming bug when working with a movie</span></li>
<li class="rvps2"><span class="rvts32">Added support for HUD recording in AVI dumping</span></li>
<li class="rvps2"><span class="rvts32">Rerecords counter display</span></li>
<li class="rvps2"><span class="rvts32">Config-&gt;Movie options-&gt;Always suggest Read-Only replay (for Replay dialog). No more accidental rewrites!</span></li>
<li class="rvps2"><span class="rvts32">Removed "Lag Counter Reset" hotkey, as it was obsolete since FCEUX 2.0.2</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Lua</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed lua drawing alpha blending</span></li>
<li class="rvps2"><span class="rvts32">Auto-clearing previous frame drawings (same behaviour as other emulators)</span></li>
<li class="rvps2"><span class="rvts32">New library: taseditor (Windows-only) - contains 24 functions, see taseditor.chm</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">New Lua functions:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">emu.paused()</span></li>
<li class="rvps2"><span class="rvts32">emu.setlagflag()</span></li>
<li class="rvps2"><span class="rvts32">joypad.getimmediate()</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">New scripts:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">BoulderDash_AmoebaAI.lua</span></li>
<li class="rvps2"><span class="rvts32">ButtonCount.lua</span></li>
<li class="rvps2"><span class="rvts32">CustomLagIndicator_RvT.lua</span></li>
<li class="rvps2"><span class="rvts32">RBIBaseball.lua</span></li>
<li class="rvps2"><span class="rvts32">SoundDisplay.lua</span></li>
<li class="rvps2"><span class="rvts32">SoundDisplay2.lua</span></li>
<li class="rvps2"><span class="rvts32">taseditor\InputDisplay_for_Selection.lua</span></li>
<li class="rvps2"><span class="rvts32">taseditor\InvertSelection.lua</span></li>
<li class="rvps2"><span class="rvts32">taseditor\RecordBackwards.lua</span></li>
<li class="rvps2"><span class="rvts32">taseditor\ShowNotes.lua</span></li>
<li class="rvps2"><span class="rvts32">taseditor\Swap1P2P.lua</span></li>
<li class="rvps2"><span class="rvts32">taseditor\TrackNoise.lua</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Win32</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Total revamp of fulscreen support</span></li>
<li class="rvps2"><span class="rvts32">Fixed graphic tearing with vertical sync enabled</span></li>
<li class="rvps2"><span class="rvts32">Added "Maintain aspect ratio" option to Video config</span></li>
<li class="rvps2"><span class="rvts32">Added "Hide mouse cursor" and "Use console BG color for empty areas" options to Video config</span></li>
<li class="rvps2"><span class="rvts32">Added "Switch fullscreen by double-click" option to GUI config</span></li>
<li class="rvps2"><span class="rvts32">Added "Force Grayscale" option to Palette config</span></li>
<li class="rvps2"><span class="rvts32">Fixed crashes and bugs caused by 2.1.5 allowing hotkeys without ROM loaded</span></li>
<li class="rvps2"><span class="rvts32">Lua console now gets proper file path when selecting a file from the recent menu</span></li>
<li class="rvps2"><span class="rvts32">Fixed context menus to use rightclicks in context menus correctly</span></li>
<li class="rvps2"><span class="rvts32">Reload hotkey now also supports removing invalid filenames in Recent ROMs</span></li>
<li class="rvps2"><span class="rvts32">Replay dialog speedup, it doesn't search for movies in fceux root folder anymore</span></li>
<li class="rvps2"><span class="rvts32">Support multibyte languages for opening files through drag&amp;drop (except for Lua files)</span></li>
<li class="rvps2"><span class="rvts32">Loading TAS Editor projects (*.fm3) by drag&amp;drop</span></li>
<li class="rvps2"><span class="rvts32">Fixed bug with Input Config not displaying some key names</span></li>
<li class="rvps2"><span class="rvts32">Launch tools hotkeys shown in menu; general cleanup of menu/settings, changed some checkboxes to radiobuttons</span></li>
<li class="rvps2"><span class="rvts32">Added "Clear" button to Message Log</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">TAS Editor</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Completely rewritten tool with brand new architecture and design. Too many changes to enlist, see taseditor.chm</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Debugger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">General window layout cleanup; different font; ".DEB files" can be switched off; etc</span></li>
<li class="rvps2"><span class="rvts32">Deleting a breakpoint/bookmark leaves selection in the list</span></li>
<li class="rvps2"><span class="rvts32">Fixed mysterious out of bounds condition while editing breakpoints</span></li>
<li class="rvps2"><span class="rvts32">Fixed RAM peek by a rightclick on left pane</span></li>
<li class="rvps2"><span class="rvts32">Allow Frame Advancing when Debugger is in breakpoint state</span></li>
<li class="rvps2"><span class="rvts32">Disabled breakpoints now don't impose slowdown</span></li>
<li class="rvps2"><span class="rvts32">When a breakpoint is hit, it becomes highlighed (selected) in the breakpoints list</span></li>
<li class="rvps2"><span class="rvts32">Show the number of breakpoints (enabled and total) above the breakpoints list</span></li>
<li class="rvps2"><span class="rvts32">"&gt;" points at current line in disassembly</span></li>
<li class="rvps2"><span class="rvts32">Improved stack display</span></li>
<li class="rvps2"><span class="rvts32">Added "CPU cycles" and "Instructions" counters (cumulative and delta)</span></li>
<li class="rvps2"><span class="rvts32">Added "Cycles counter exceeds N" and "Instructions counter exceeds N" type of breakpoints</span></li>
<li class="rvps2"><span class="rvts32">Single click on any address copies this address to the "Seek To" field and "Bookmark Add" field</span></li>
<li class="rvps2"><span class="rvts32">Double-click on any address prompts "Add Breakpoint here" dialog</span></li>
<li class="rvps2"><span class="rvts32">"ROM offsets" option displays real ROM addresses in the Disassembly window</span></li>
<li class="rvps2"><span class="rvts32">Fixed conditional breakpoints bug: the error message didn't appear when editing a breakpoint</span></li>
<li class="rvps2"><span class="rvts32">Fixed and improved Symbolic debug (Names and Comments display)</span></li>
<li class="rvps2"><span class="rvts32">Added Bookmarks naming</span></li>
<li class="rvps2"><span class="rvts32">Cleaned up and vastly improved debugging documentation</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Trace Logger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added "Symbolic trace" option</span></li>
<li class="rvps2"><span class="rvts32">"RTS" instructions now output the subroutine address/name</span></li>
<li class="rvps2"><span class="rvts32">Added "Use Stack Pointer for code tabbing (nesting visualization)" option</span></li>
<li class="rvps2"><span class="rvts32">Added "To the left from disassembly text" option for log format customization</span></li>
<li class="rvps2"><span class="rvts32">Added "Log current Frame number" option</span></li>
<li class="rvps2"><span class="rvts32">Added "Log emulator messages" option</span></li>
<li class="rvps2"><span class="rvts32">Added "Log breakpoint hits" option</span></li>
<li class="rvps2"><span class="rvts32">Fixed bug with trying to log to file without choosing a filename</span></li>
<li class="rvps2"><span class="rvts32">Tracer now also updates its window when user pauses the game, not just when Debugger snaps</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Code/Data Logger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Now can log data access from RAM code</span></li>
<li class="rvps2"><span class="rvts32">"Save Unused Data" button complements "Save Stripped iNes Rom" feature</span></li>
<li class="rvps2"><span class="rvts32">Now can log VROM access (CHR banks of the ROM) when NewPPU is enabled</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Hex Editor</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Display 0x5000-0x5FFF contents</span></li>
<li class="rvps2"><span class="rvts32">Ctrl+F opens Find dialog</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">RAM Watch / RAM Search</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Updating list when emulator is paused (on Power or when resetting search)</span></li>
<li class="rvps2"><span class="rvts32">Fixed loading Data Size and Data Type from a .wch, now corrupted .wch won't crash</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Cheats</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added Compare box to the Cheats window</span></li>
<li class="rvps2"><span class="rvts32">Don't lose cheat compare value when toggle cheat enables through UI</span></li>
<li class="rvps2"><span class="rvts32">Parse cheat files with non-ASCII characters properly</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">SDL</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">gtk 2.24 now recommended</span></li>
<li class="rvps2"><span class="rvts32">added gtk hotkey configuration dialog</span></li>
<li class="rvps2"><span class="rvts32">updated/added various gui elements for options</span></li>
<li class="rvps2"><span class="rvts32">new option: SDL.ShowFPS</span></li>
<li class="rvps2"><span class="rvts32">new option: SDL.Input..EnableOppositeDirectional - allow/disallow simultaneous right+left/up+down input</span></li>
<li class="rvps2"><span class="rvts32">fixed various build issues</span></li>
<li class="rvps2"><span class="rvts32">fixed segfault occuring during particular sequences in the cheat menu</span></li>
<li class="rvps2"><span class="rvts32">fixed potential segfault with gui</span></li>
<li class="rvps2"><span class="rvts32">fixed segfault issue on debian/ubuntu with proprietary nvidia drivers</span></li>
<li class="rvps2"><span class="rvts32">now compatible with llvm/clang++&nbsp;</span></li>
<li class="rvps2"><span class="rvts32">added build option to dynamically link lua</span></li>
<li class="rvps2"><span class="rvts32">updated default server configuration file to "fceux-server.conf" (from "fceu-server.conf")</span></li>
<li class="rvps2"><span class="rvts32">updated manpage and documentation</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32"><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.helpndoc.com">Free HTML Help documentation generator</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">&times;</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>

View File

@ -1,186 +1,377 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.2.1 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew221");
}
});
</script>
<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>What's New? 2.2.1 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.2.1 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.2.1 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.2.1 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew222.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew220.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.2.1</span></p>
<p>Released -- 10 March 2013</p>
<p><br/></p>
<p><br/></p>
<p>The 2.2.1 release fixes many bugs and adds a couple of new features. The most notable feature is "Auto-resume old play session", which is similar to "Suspending Play". Enable this option in the Config menu and now you can close ROMs or emulator anytime, next time the game state will be resumed from the closing point.</p>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Common </span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Speed up HUD text drawing</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Emulation</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Finished mappers to boards conversion</span></li>
<li><span class="rvts21">Fixed mappers 99, 228, 18, 198, 24, 26, 69, 19</span></li>
<li><span class="rvts21">Mapper 115 - redesign according to the hardware tests</span></li>
<li><span class="rvts21">Fixed "you ling xing dong" by assigning to mapper 192</span></li>
<li><span class="rvts21">Fixed crash when four-screen bit is set after CRC check</span></li>
<li><span class="rvts21">UNIF: verbose/safe chunk loading, fixes some crashes</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Lua</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">removed "shadow pixels" from gui.text()</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">New Lua functions:</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">gui.parsecolor()</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">New scripts:</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">JumpingFCEUXWindow.lua</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Win32</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed "Enter New Input" dialog (Hotkeys mapping)</span></li>
<li><span class="rvts21">Fixed zapper and mouse positioning in fullscreen</span></li>
<li><span class="rvts21">Remodel "Video config" dialog</span></li>
<li><span class="rvts21">Added "TV Aspect (4:3)"</span></li>
<li><span class="rvts21">Holding Shift when resizing FCEUX window inverts "Force integral factors" meaning</span></li>
<li><span class="rvts21">Fixed window regions redrawing</span></li>
<li><span class="rvts21">Added the option to define custom emulation speed (NES-&gt;Emulation Speed-&gt;Set Custom Speed)</span></li>
<li><span class="rvts21">Now Frame Advance timings (initial delay and speed) can be tweaked by user</span></li>
<li><span class="rvts21">Added Config-&gt;Enable-&gt;Auto-resume old play session</span></li>
<li><span class="rvts21">Moved "Config-&gt;Game Genie" to "Config-&gt;Enable-&gt;Game Genie ROM"</span></li>
<li><span class="rvts21">Play movie dialog shows New PPU in red if the required setting does not match</span></li>
<li><span class="rvts21">Fixed NameTable Viewer crash when the corresponding nametable RAM is not available on the cart</span></li>
<li><span class="rvts21">The number of active cheats is displayed on screen when a ROM is loaded</span></li>
<li><span class="rvts21">PPU/PAL/Input type changing is disabled when a movie is playing</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">TAS Editor</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed keyboard accelerators when editing Notes</span></li>
<li><span class="rvts21">Fixed Greenzone saving while emulator is unpaused</span></li>
<li><span class="rvts21">Fixed drawing bugs when the Playback cursor moves more than once within one update</span></li>
<li><span class="rvts21">Changed "Compact save" dialog, added 4 options of Greenzone saving</span></li>
<li><span class="rvts21">Added "Config-&gt;Project file saving options"</span></li>
<li><span class="rvts21">Changed "Follow cursor" logic, now the Piano Roll doesn't follow Playback cursor while seeking</span></li>
<li><span class="rvts21">No "Autopause at the end of the Movie" when Recording</span></li>
<li><span class="rvts21">Fixed bug when adding new item to History Log</span></li>
<li><span class="rvts21">Fixed Bookmarks List height on Windows 7</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Trace Logger</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed RAM-located code logging when CDLogger options are enabled</span></li>
<li><span class="rvts21">Fixed automatic window update when a breakpoint is hit</span></li>
<li><span class="rvts21">Fixed RTS padding</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Code/Data Logger</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added current CDL filename field and default CDL naming</span></li>
<li><span class="rvts21">Added "Auto-save .CDL when closing ROMs" option</span></li>
<li><span class="rvts21">Added "Auto-load .CDL when opening the window" option</span></li>
<li><span class="rvts21">Added "Auto-resume logging when loading ROMs" option</span></li>
<li><span class="rvts21">Improved CHR logging, now it also logs the data when using Old PPU</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Hex Editor</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Show symbolic names in the window caption when "Symbolic debug" is enabled</span></li>
<li><span class="rvts21">Fixed crash when trying to save ROM to an invalid path</span></li>
<li><span class="rvts21">Fixed ROM coloring when using CDLogger data</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">RAM Search</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added "Search ROM" option</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Cheats</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added "Add from CHT file..." button</span></li>
<li><span class="rvts21">Update the list of cheats when ROM is changed</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">SDL</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Use desktop resolution for fullscreen by setting SDL.XResolution and SDL.YResolution to 0 (new default is 0)</span></li>
<li><span class="rvts21">Fixed bug where "quit" hotkey would do nothing in '--nogui' mode</span></li>
<li><span class="rvts21">Fixed fullscreen zapper issues</span></li>
<li><span class="rvts21">Display a message dialog on errors in addition to printing to stderr</span></li>
<li><span class="rvts21">Added "Options-&gt;Auto-Resume Play"</span></li>
<li><span class="rvts21">Fixed build issues on various versions of OS X</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com">Easy CHM and documentation editor</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew221"
data-hnd-context="76"
data-hnd-title="What's New? 2.2.1 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew222.html" title="What's New? 2.2.2 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew220.html" title="What's New? 2.2.0 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.2.1 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.2.1</span></p>
<p class="rvps2"><span class="rvts6">Released -- 10 March 2013</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The 2.2.1 release fixes many bugs and adds a couple of new features. The most notable feature is "Auto-resume old play session", which is similar to "Suspending Play". Enable this option in the Config menu and now you can close ROMs or emulator anytime, next time the game state will be resumed from the closing point.</span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Common&nbsp;</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Speed up HUD text drawing</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Emulation</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Finished mappers to boards conversion</span></li>
<li class="rvps2"><span class="rvts32">Fixed mappers 99, 228, 18, 198, 24, 26, 69, 19</span></li>
<li class="rvps2"><span class="rvts32">Mapper 115 - redesign according to the hardware tests</span></li>
<li class="rvps2"><span class="rvts32">Fixed "you ling xing dong" by assigning to mapper 192</span></li>
<li class="rvps2"><span class="rvts32">Fixed crash when four-screen bit is set after CRC check</span></li>
<li class="rvps2"><span class="rvts32">UNIF: verbose/safe chunk loading, fixes some crashes</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Lua</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">removed "shadow pixels" from gui.text()</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">New Lua functions:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">gui.parsecolor()</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">New scripts:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">JumpingFCEUXWindow.lua</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Win32</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed "Enter New Input" dialog (Hotkeys mapping)</span></li>
<li class="rvps2"><span class="rvts32">Fixed zapper and mouse positioning in fullscreen</span></li>
<li class="rvps2"><span class="rvts32">Remodel "Video config" dialog</span></li>
<li class="rvps2"><span class="rvts32">Added "TV Aspect (4:3)"</span></li>
<li class="rvps2"><span class="rvts32">Holding Shift when resizing FCEUX window inverts "Force integral factors" meaning</span></li>
<li class="rvps2"><span class="rvts32">Fixed window regions redrawing</span></li>
<li class="rvps2"><span class="rvts32">Added the option to define custom emulation speed (NES-&gt;Emulation Speed-&gt;Set Custom Speed)</span></li>
<li class="rvps2"><span class="rvts32">Now Frame Advance timings (initial delay and speed) can be tweaked by user</span></li>
<li class="rvps2"><span class="rvts32">Added Config-&gt;Enable-&gt;Auto-resume old play session</span></li>
<li class="rvps2"><span class="rvts32">Moved "Config-&gt;Game Genie" to "Config-&gt;Enable-&gt;Game Genie ROM"</span></li>
<li class="rvps2"><span class="rvts32">Play movie dialog shows New PPU in red if the required setting does not match</span></li>
<li class="rvps2"><span class="rvts32">Fixed NameTable Viewer crash when the corresponding nametable RAM is not available on the cart</span></li>
<li class="rvps2"><span class="rvts32">The number of active cheats is displayed on screen when a ROM is loaded</span></li>
<li class="rvps2"><span class="rvts32">PPU/PAL/Input type changing is disabled when a movie is playing</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">TAS Editor</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed keyboard accelerators when editing Notes</span></li>
<li class="rvps2"><span class="rvts32">Fixed Greenzone saving while emulator is unpaused</span></li>
<li class="rvps2"><span class="rvts32">Fixed drawing bugs when the Playback cursor moves more than once within one update</span></li>
<li class="rvps2"><span class="rvts32">Changed "Compact save" dialog, added 4 options of Greenzone saving</span></li>
<li class="rvps2"><span class="rvts32">Added "Config-&gt;Project file saving options"</span></li>
<li class="rvps2"><span class="rvts32">Changed "Follow cursor" logic, now the Piano Roll doesn't follow Playback cursor while seeking</span></li>
<li class="rvps2"><span class="rvts32">No "Autopause at the end of the Movie" when Recording</span></li>
<li class="rvps2"><span class="rvts32">Fixed bug when adding new item to History Log</span></li>
<li class="rvps2"><span class="rvts32">Fixed Bookmarks List height on Windows 7</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Trace Logger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed RAM-located code logging when CDLogger options are enabled</span></li>
<li class="rvps2"><span class="rvts32">Fixed automatic window update when a breakpoint is hit</span></li>
<li class="rvps2"><span class="rvts32">Fixed RTS padding</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Code/Data Logger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added current CDL filename field and default CDL naming</span></li>
<li class="rvps2"><span class="rvts32">Added "Auto-save .CDL when closing ROMs" option</span></li>
<li class="rvps2"><span class="rvts32">Added "Auto-load .CDL when opening the window" option</span></li>
<li class="rvps2"><span class="rvts32">Added "Auto-resume logging when loading ROMs" option</span></li>
<li class="rvps2"><span class="rvts32">Improved CHR logging, now it also logs the data when using Old PPU</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Hex Editor</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Show symbolic names in the window caption when "Symbolic debug" is enabled</span></li>
<li class="rvps2"><span class="rvts32">Fixed crash when trying to save ROM to an invalid path</span></li>
<li class="rvps2"><span class="rvts32">Fixed ROM coloring when using CDLogger data</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">RAM Search</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added "Search ROM" option</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Cheats</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added "Add from CHT file..." button</span></li>
<li class="rvps2"><span class="rvts32">Update the list of cheats when ROM is changed</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">SDL</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Use desktop resolution for fullscreen by setting SDL.XResolution and SDL.YResolution to 0 (new default is 0)</span></li>
<li class="rvps2"><span class="rvts32">Fixed bug where "quit" hotkey would do nothing in '--nogui' mode</span></li>
<li class="rvps2"><span class="rvts32">Fixed fullscreen zapper issues</span></li>
<li class="rvps2"><span class="rvts32">Display a message dialog on errors in addition to printing to stderr</span></li>
<li class="rvps2"><span class="rvts32">Added "Options-&gt;Auto-Resume Play"</span></li>
<li class="rvps2"><span class="rvts32">Fixed build issues on various versions of OS X</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34"><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.helpndoc.com/create-epub-ebooks">Full-featured EBook editor</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">&times;</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>

View File

@ -1,195 +1,386 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.2.2 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew222");
}
});
</script>
<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>What's New? 2.2.2 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.2.2 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.2.2 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.2.2 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew223.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew221.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts17">What's New? </span><span class="rvts20">2.2.2</span></p>
<p>Released -- 23 September 2013</p>
<p><br/></p>
<p><br/></p>
<p>The 2.2.2 release fixes a number of emulation bugs and adds many new features, most of which are related to debugging and reverse engineering.</p>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Common </span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts24">Properly savestate NSF files</span></li>
<li class="rvps3"><span class="rvts24">"Auto-resume old play session" now also works with NSFs</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Emulation</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Fixed mappers 178, 28, 53, 154, 43, 253, 19, 2</span></li>
<li class="rvps3"><span class="rvts24">Mapper 012 - added hardware dip for language select</span></li>
<li class="rvps3"><span class="rvts24">UNIF PEC-586 - fixed render, added 512K cartridges suppport</span></li>
<li><span class="rvts24">Fixed UNIF 8157, UNIF T-262, UNIF DANCE2000</span></li>
<li class="rvps3"><span class="rvts24">Palette RAM reading fix for Old PPU</span></li>
<li class="rvps3"><span class="rvts24">Bring some improvements to New PPU from BizHawk, fix vtoggle5/6 back to vtoggle</span></li>
<li class="rvps3"><span class="rvts24">Fixed mmc5 savestates</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Lua</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts24">Fix wrong frequency calculation in sound.get() function</span></li>
</ul>
<p><span class="rvts21"><br/></span></p>
<p><span class="rvts21">New Lua functions:</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">tobitstring()</span></li>
<li><span class="rvts21">memory.readword()</span></li>
<li><span class="rvts21">memory.readwordsigned()</span></li>
<li><span class="rvts21">debugger.hitbreakpoint()</span></li>
<li><span class="rvts21">debugger.getcyclescount()</span></li>
<li><span class="rvts21">debugger.getinstructionscount()</span></li>
<li><span class="rvts21">debugger.resetcyclescount()</span></li>
<li><span class="rvts21">debugger.resetinstructionscount()</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">Win32</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts24">Added "Square pixels" option to Video Config</span></li>
<li class="rvps3"><span class="rvts24">"TV Aspect" ratio can be customized, by default it's 4:3</span></li>
<li class="rvps3"><span class="rvts24">Changed "Disable hardware acceleration" checkbox to a drop-down list with 3 options</span></li>
<li class="rvps3"><span class="rvts24">Movie recording: remember last Author name when creating a new movie</span></li>
<li class="rvps3"><span class="rvts24">Movie recording: added ability to record "Insert coin" command (for VS games)</span></li>
<li class="rvps3"><span class="rvts24">When no script is currently running, Shift+L loads the most recent Lua script</span></li>
<li class="rvps3"><span class="rvts24">Dynamic link to lua51.dll instead of static linking, because some external libraries might crash without lua51.dll</span></li>
<li class="rvps3"><span class="rvts24">Updated 7z.dll to v9.22</span></li>
<li class="rvps3"><span class="rvts24">A couple of fixes which deal with "multiple ROMs in a single archive" case</span></li>
<li class="rvps3"><span class="rvts24">Auto-disable "Game Genie ROM" feature when no "gg.rom" file is found</span></li>
<li class="rvps3"><span class="rvts24">Fixed "Single Instance Mode"</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">TAS Editor</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts24">Comply with Lua movie.rerecordcounting() setting</span></li>
<li class="rvps3"><span class="rvts24">Fixed workflow with "Auto-adjust Input according to Lag" disabled</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Debugger</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts24">Smart scrolling up/down by whole instructions - ported from an obscure version of FCEUXD 1.1</span></li>
<li class="rvps3"><span class="rvts24">Scrolling maintains relative position of the "&gt;" pointer inside the Disassembly window</span></li>
<li class="rvps3"><span class="rvts24">Highlight PC pointer line when a breakpoint is hit</span></li>
<li class="rvps3"><span class="rvts24">debuggerFontSize can be specified in fceux.cfg</span></li>
<li class="rvps3"><span class="rvts24">Fixed storing and loading .deb files when working with archived ROMs</span></li>
<li class="rvps3"><span class="rvts24">Fixed Cycles counter reset when loading an earlier savestate</span></li>
<li class="rvps3"><span class="rvts24">Added Symbolic Debug naming by right-clicking any address or name</span></li>
<li class="rvps3"><span class="rvts24">Symbolic names behave the same way as usual addresses</span></li>
<li class="rvps3"><span class="rvts24">Newly created Bookmarks inherit existing symbolic name by default</span></li>
<li class="rvps3"><span class="rvts24">Added CDL data column to the left from Disassembly, to distinguish executed branches of code from not executed</span></li>
<li class="rvps3"><span class="rvts24">Added 'T' condition for breakpoints (it checks the bank of the accessed data, see docs)</span></li>
</ul>
<p><span class="rvts22"><br/></span></p>
<p><span class="rvts22">Trace Logger</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts24">The dialog window can be resized</span></li>
<li class="rvps3"><span class="rvts24">Do not clear window log when stopping the logging</span></li>
<li class="rvps3"><span class="rvts24">Added "Log Cycles count" and "Log Instructions count" options</span></li>
<li class="rvps3"><span class="rvts24">Added Symbolic Debug naming by right-clicking any address or name</span></li>
<li class="rvps3"><span class="rvts24">Clicking any address select the address</span></li>
<li class="rvps3"><span class="rvts24">Double-clicking any address brings Debugger at the address</span></li>
<li class="rvps3"><span class="rvts24">Added mouse wheel support</span></li>
<li><span class="rvts21">Only output "from $XXXX" when the subroutine was called by JSR</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">PPU Viewer</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added "Mask unused graphics" feature (needs Code/Data Logger running)</span></li>
<li><span class="rvts21">Fixed window layout when using big fonts</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">Hex Editor</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts24">Added "Highlighting" submenu and "Highlight Activity" feature</span></li>
<li class="rvps3"><span class="rvts24">Added Symbolic Debug naming by right-clicking any address</span></li>
<li class="rvps3"><span class="rvts24">Specify Data bank condition when adding a Breakpoint by context menu</span></li>
<li class="rvps3"><span class="rvts24">Fixed bugs when saving files while working with ROMs in archives</span></li>
<li class="rvps3"><span class="rvts24">hexeditorFontSize can be specified in fceux.cfg</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts22">RAM Search/RAM Watch</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li><span class="rvts21">Added "Hex Editor" button to RAM Search (right-clicking an address works as well)</span></li>
<li><span class="rvts21">Fixed RAM Watch bug when contents of old .wch file were mixed with the newly saved data</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23">SDL</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts24">"--periodicsaves" command line option</span></li>
<li class="rvps3"><span class="rvts24">"--4buttonexit" command line option</span></li>
<li class="rvps3"><span class="rvts24">"--loadstate X" and "--savestate X" command line options</span></li>
<li class="rvps3"><span class="rvts24">Added Unity desktop support</span></li>
<li class="rvps3"><span class="rvts24">Added otion to use system-provided LUA library instead of statically linked LUA</span></li>
<li class="rvps3"><span class="rvts24">Fix issue where battery backup save was not being saved when using "Quit" hotkey</span></li>
<li class="rvps3"><span class="rvts24">Fixed bug where FCEUX would take exclusive grab of input in windowed mode when resuming from pause</span></li>
</ul>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23"><br/></span></p>
<p><span class="rvts23"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/create-epub-ebooks">Generate EPub eBooks with ease</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew222"
data-hnd-context="82"
data-hnd-title="What's New? 2.2.2 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew223.html" title="What's New? 2.2.3 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew221.html" title="What's New? 2.2.1 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.2.2 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.2.2</span></p>
<p class="rvps2"><span class="rvts6">Released -- 23 September 2013</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The 2.2.2 release fixes a number of emulation bugs and adds many new features, most of which are related to debugging and reverse engineering.</span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Common&nbsp;</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Properly savestate NSF files</span></li>
<li class="rvps2"><span class="rvts6">"Auto-resume old play session" now also works with NSFs</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Emulation</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed mappers 178, 28, 53, 154, 43, 253, 19, 2</span></li>
<li class="rvps2"><span class="rvts6">Mapper 012 - added hardware dip for language select</span></li>
<li class="rvps2"><span class="rvts6">UNIF PEC-586 - fixed render, added 512K cartridges suppport</span></li>
<li class="rvps2"><span class="rvts6">Fixed UNIF 8157, UNIF T-262, UNIF DANCE2000</span></li>
<li class="rvps2"><span class="rvts6">Palette RAM reading fix for Old PPU</span></li>
<li class="rvps2"><span class="rvts6">Bring some improvements to New PPU from BizHawk, fix vtoggle5/6 back to vtoggle</span></li>
<li class="rvps2"><span class="rvts6">Fixed mmc5 savestates</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Lua</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Fix wrong frequency calculation in sound.get() function</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">New Lua functions:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">tobitstring()</span></li>
<li class="rvps2"><span class="rvts32">memory.readword()</span></li>
<li class="rvps2"><span class="rvts32">memory.readwordsigned()</span></li>
<li class="rvps2"><span class="rvts32">debugger.hitbreakpoint()</span></li>
<li class="rvps2"><span class="rvts32">debugger.getcyclescount()</span></li>
<li class="rvps2"><span class="rvts32">debugger.getinstructionscount()</span></li>
<li class="rvps2"><span class="rvts32">debugger.resetcyclescount()</span></li>
<li class="rvps2"><span class="rvts32">debugger.resetinstructionscount()</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Win32</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Added "Square pixels" option to Video Config</span></li>
<li class="rvps2"><span class="rvts6">"TV Aspect" ratio can be customized, by default it's 4:3</span></li>
<li class="rvps2"><span class="rvts6">Changed "Disable hardware acceleration" checkbox to a drop-down list with 3 options</span></li>
<li class="rvps2"><span class="rvts6">Movie recording: remember last Author name when creating a new movie</span></li>
<li class="rvps2"><span class="rvts6">Movie recording: added ability to record "Insert coin" command (for VS games)</span></li>
<li class="rvps2"><span class="rvts6">When no script is currently running, Shift+L loads the most recent Lua script</span></li>
<li class="rvps2"><span class="rvts6">Dynamic link to lua51.dll instead of static linking, because some external libraries might crash without lua51.dll</span></li>
<li class="rvps2"><span class="rvts6">Updated 7z.dll to v9.22</span></li>
<li class="rvps2"><span class="rvts6">A couple of fixes which deal with "multiple ROMs in a single archive" case</span></li>
<li class="rvps2"><span class="rvts6">Auto-disable "Game Genie ROM" feature when no "gg.rom" file is found</span></li>
<li class="rvps2"><span class="rvts6">Fixed "Single Instance Mode"</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">TAS Editor</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Comply with Lua movie.rerecordcounting() setting</span></li>
<li class="rvps2"><span class="rvts6">Fixed workflow with "Auto-adjust Input according to Lag" disabled</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Debugger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Smart scrolling up/down by whole instructions - ported from an obscure version of FCEUXD 1.1</span></li>
<li class="rvps2"><span class="rvts6">Scrolling maintains relative position of the "&gt;" pointer inside the Disassembly window</span></li>
<li class="rvps2"><span class="rvts6">Highlight PC pointer line when a breakpoint is hit</span></li>
<li class="rvps2"><span class="rvts6">debuggerFontSize can be specified in fceux.cfg</span></li>
<li class="rvps2"><span class="rvts6">Fixed storing and loading .deb files when working with archived ROMs</span></li>
<li class="rvps2"><span class="rvts6">Fixed Cycles counter reset when loading an earlier savestate</span></li>
<li class="rvps2"><span class="rvts6">Added Symbolic Debug naming by right-clicking any address or name</span></li>
<li class="rvps2"><span class="rvts6">Symbolic names behave the same way as usual addresses</span></li>
<li class="rvps2"><span class="rvts6">Newly created Bookmarks inherit existing symbolic name by default</span></li>
<li class="rvps2"><span class="rvts6">Added CDL data column to the left from Disassembly, to distinguish executed branches of code from not executed</span></li>
<li class="rvps2"><span class="rvts6">Added 'T' condition for breakpoints (it checks the bank of the accessed data, see docs)</span></li>
</ul>
<p class="rvps2"><span class="rvts33"><br/></span></p>
<p class="rvps2"><span class="rvts33">Trace Logger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">The dialog window can be resized</span></li>
<li class="rvps2"><span class="rvts6">Do not clear window log when stopping the logging</span></li>
<li class="rvps2"><span class="rvts6">Added "Log Cycles count" and "Log Instructions count" options</span></li>
<li class="rvps2"><span class="rvts6">Added Symbolic Debug naming by right-clicking any address or name</span></li>
<li class="rvps2"><span class="rvts6">Clicking any address select the address</span></li>
<li class="rvps2"><span class="rvts6">Double-clicking any address brings Debugger at the address</span></li>
<li class="rvps2"><span class="rvts6">Added mouse wheel support</span></li>
<li class="rvps2"><span class="rvts32">Only output "from $XXXX" when the subroutine was called by JSR</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">PPU Viewer</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added "Mask unused graphics" feature (needs Code/Data Logger running)</span></li>
<li class="rvps2"><span class="rvts32">Fixed window layout when using big fonts</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Hex Editor</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Added "Highlighting" submenu and "Highlight Activity" feature</span></li>
<li class="rvps2"><span class="rvts6">Added Symbolic Debug naming by right-clicking any address</span></li>
<li class="rvps2"><span class="rvts6">Specify Data bank condition when adding a Breakpoint by context menu</span></li>
<li class="rvps2"><span class="rvts6">Fixed bugs when saving files while working with ROMs in archives</span></li>
<li class="rvps2"><span class="rvts6">hexeditorFontSize can be specified in fceux.cfg</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">RAM Search/RAM Watch</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added "Hex Editor" button to RAM Search (right-clicking an address works as well)</span></li>
<li class="rvps2"><span class="rvts32">Fixed RAM Watch bug when contents of old .wch file were mixed with the newly saved data</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">SDL</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">"--periodicsaves" command line option</span></li>
<li class="rvps2"><span class="rvts6">"--4buttonexit" command line option</span></li>
<li class="rvps2"><span class="rvts6">"--loadstate X" and "--savestate X" command line options</span></li>
<li class="rvps2"><span class="rvts6">Added Unity desktop support</span></li>
<li class="rvps2"><span class="rvts6">Added otion to use system-provided LUA library instead of statically linked LUA</span></li>
<li class="rvps2"><span class="rvts6">Fix issue where battery backup save was not being saved when using "Quit" hotkey</span></li>
<li class="rvps2"><span class="rvts6">Fixed bug where FCEUX would take exclusive grab of input in windowed mode when resuming from pause</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34"><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.helpndoc.com/feature-tour">Easily create EBooks</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">&times;</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>

View File

@ -1,208 +1,399 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>What's New? 2.2.3 (changelog)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("WhatsNew223");
}
});
</script>
<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>What's New? 2.2.3 (changelog)</title>
<meta name="description" content="" />
<meta name="keywords" content="">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="What's New? 2.2.3 (changelog)">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content="What's New? 2.2.3 (changelog)" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>What's New? 2.2.3 (changelog)</h1>
<div id="topic_breadcrumb">
<a href="Intro.html">Introduction</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Intro.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="WhatsNew230.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="WhatsNew222.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p class="rvps3"><span class="rvts17">What's New? </span><span class="rvts20">2.2.3</span></p>
<p class="rvps3">Released -- 28 July 2016</p>
<p class="rvps3"><br/></p>
<p class="rvps3"><br/></p>
<p class="rvps3">The 2.2.3 release fixes a number of emulation bugs, features overclocking (for lag reduction) and Dendy mode, and adds support for a bunch of new ROM dumps (mostly unlicensed). Reverse engineering tools and Lua scripting have got some updates, new input devices are supported, new palette files have beed added. The SDL port has been fixed and updated as well.</p>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts22">Common</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3">Customizable overclocking</li>
<li class="rvps3">Dendy mode</li>
<li class="rvps3"><span class="rvts21">Fixed rerecord counting broken outside taseditor</span></li>
</ul>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts23">Emulation</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Added mappers: 29, 30, </span></li>
<li class="rvps3"><span class="rvts21">Fixed mappers: 225, 119, 4, 35, 31, 69, 212, 45, </span></li>
<li class="rvps3"><span class="rvts21">Fixed mmc5 IRQ handling</span></li>
<li class="rvps3"><span class="rvts21">Fixed mmc1 reg#3 masking</span></li>
<li class="rvps3"><span class="rvts21">Fixed vrc7 sound savestates</span></li>
<li class="rvps3"><span class="rvts21">Added CoolBoy, KS7010, SB200, UNIF 158B, UNIF DRAGONFIGHTER, UNIF BMC-10-24-C-A1, UNIF EH8813A, UNIF HP898F, UNIF F-15, UNIF RT-01, UNIF UNL-KS7017, UNIF BMC-81-01-31-C, UNIF UNL-8-IN-1</span></li>
<li class="rvps3"><span class="rvts21">NES 2.0 support</span></li>
<li class="rvps3"><span class="rvts21">Fixed UNIF BMC 12 IN 1, UNIF OneBus</span></li>
</ul>
<p class="rvps3"><span class="rvts21"><br/></span></p>
<p class="rvps3"><span class="rvts23">Movies</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Fixed a bug with FDS flag being always set when converting a FCM</span></li>
</ul>
<p class="rvps3"><span class="rvts21"><br/></span></p>
<p class="rvps3"><span class="rvts23">Video</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Prescale filter for 2x, 3x and 4x resolutions</span></li>
<li class="rvps3"><span class="rvts21">Made NTSC filter internal resolution closer to 4:3</span></li>
</ul>
<p class="rvps3"><span class="rvts21"><br/></span></p>
<p class="rvps3"><span class="rvts23">Palette</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Support 512 color palettes</span></li>
<li class="rvps3">Added external palettes: SONY_CXA2025AS_US.pal, RP2C03.pal (and its versions), Unsaturated-V6.pal</li>
<li class="rvps3"><span class="rvts21">Option to swap deemphasis bits</span></li>
</ul>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts23">Sound</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3">Option to swap duty cycles</li>
<li class="rvps3"><span class="rvts21">NSF can be set to Dendy mode</span></li>
</ul>
<p class="rvps3"><span class="rvts21"><br/></span></p>
<p class="rvps3"><span class="rvts23">Input</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Fix Mouse input implementation</span></li>
<li class="rvps3"><span class="rvts21">Support for SNES mouse</span></li>
<li class="rvps3"><span class="rvts21">PEC-586 russian keyboard support</span></li>
</ul>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts23">Lua</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Removed speed notification per script reload, if it remained 100%</span></li>
<li class="rvps3"><span class="rvts21">Fixed lua drawings in NSF</span></li>
<li class="rvps3"><span class="rvts21">Proper halo for lua font</span></li>
<li class="rvps3"><span class="rvts21">Fixes to sound.get() region consistency and frequency/midikey detection for Noise and DPCM channels</span></li>
</ul>
<p class="rvps3"><span class="rvts21"><br/></span></p>
<p class="rvps3"><span class="rvts21">New Lua functions:</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">emu.getpath()</span></li>
<li class="rvps3"><span class="rvts21">emu.loadrom()</span></li>
<li class="rvps3"><span class="rvts21">rom.writebyte()</span></li>
<li class="rvps3"><span class="rvts21">gethash()</span></li>
</ul>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts23">Win32</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Added -dumpinput and -playinput functions</span></li>
<li class="rvps3"><span class="rvts21">Support for SNES pad</span></li>
<li class="rvps3"><span class="rvts21">Added onscreen messages when region changes</span></li>
</ul>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts22">Debugger</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Added debuggerPageSize config variable which lets you pick whether 8KB physical PRG pages are used, or 16KB (the original). It defaults to 14 (1&lt;&lt;14 == 16KB).</span></li>
<li class="rvps3"><span class="rvts21">Set symbolic debugger name entry dialog text limits when creating a new label</span></li>
<li class="rvps3"><span class="rvts21">Fixed new-PPU debug information (address and pixel)</span></li>
<li class="rvps3"><span class="rvts21">Step Into hotkey</span></li>
<li class="rvps3"><span class="rvts21">More granular accounting of scanline and dot</span></li>
</ul>
<p class="rvps3"><span class="rvts22"><br/></span></p>
<p class="rvps3"><span class="rvts22">Trace Logger</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Fixed incorrect display of resolved address for (FF,x)</span></li>
</ul>
<p class="rvps3"><span class="rvts22"><br/></span></p>
<p class="rvps3"><span class="rvts22">Symbolic debugging</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Optionally display register names</span></li>
</ul>
<p class="rvps3"><span class="rvts22"><br/></span></p>
<p class="rvps3"><span class="rvts22">CDLogger</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3">Fix <span class="rvts21">crash when attempting to open file picked as target for Save Stripped ROM operation</span></li>
</ul>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts22">PPU Viewer</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">8x16 sprite display mode</span></li>
</ul>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts22">Hex Editor</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Added option to dump entire 64k memory space</span></li>
<li class="rvps3"><span class="rvts21">Don't forget to load the symbols, when hex editor is first launched before debugger</span></li>
<li class="rvps3"><span class="rvts21">Show values for registers $4000-$4017</span></li>
</ul>
<p class="rvps3"><span class="rvts22"><br/></span></p>
<p class="rvps3"><span class="rvts22">Cheats</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">mmc5 Akumajou Dracula crash fix</span></li>
<li class="rvps3"><span class="rvts21">More RAM available in search</span></li>
</ul>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts23">SDL</span></p>
<ul style="text-indent: 0px; margin-left: 24px; list-style-position: outside;">
<li class="rvps3"><span class="rvts21">Added apply button to video config dialog</span></li>
<li class="rvps3"><span class="rvts21">Added link to libgd project download page in readme</span></li>
<li class="rvps3"><span class="rvts21">Noted optional libgd dependency in readme</span></li>
<li class="rvps3"><span class="rvts21">SCons: Fixed logic for LOGO and CREATE_AVI options</span></li>
<li class="rvps3"><span class="rvts21">Manpage updates</span></li>
<li class="rvps3"><span class="rvts21">Added hotkeys for volume up/down</span></li>
<li class="rvps3"><span class="rvts21">Menu toggling with the Alt key</span></li>
<li class="rvps3"><span class="rvts21">Print error when opengl/scalers are both enabled</span></li>
<li class="rvps3"><span class="rvts21">Fixed bug where lua open file gui would default to home directory</span></li>
</ul>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p class="rvps3"><span class="rvts23"><br/></span></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/feature-tour">Easily create Web Help sites</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="WhatsNew223"
data-hnd-context="47"
data-hnd-title="What's New? 2.2.3 (changelog)"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Intro.html">Introduction</a></li>
</ol>
<div class="nav-arrows">
<div class="btn-group btn-group-xs" role="group"><a class="btn btn-default" href="Intro.html" title="Introduction" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="Newtopic.html" title="What's New? 2.3.0 (changelog)" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="WhatsNew222.html" title="What's New? 2.2.2 (changelog)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>What's New? 2.2.3 (changelog)</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts22">What's New? </span><span class="rvts26">2.2.3</span></p>
<p class="rvps2"><span class="rvts6">Released -- 28 July 2016</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The 2.2.3 release fixes a number of emulation bugs, features overclocking (for lag reduction) and Dendy mode, and adds support for a bunch of new ROM dumps (mostly unlicensed). Reverse engineering tools and Lua scripting have got some updates, new input devices are supported, new palette files have beed added. The SDL port has been fixed and updated as well.</span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Common</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Customizable overclocking</span></li>
<li class="rvps2"><span class="rvts6">Dendy mode</span></li>
<li class="rvps2"><span class="rvts32">Fixed rerecord counting broken outside taseditor</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Emulation</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added mappers: 29, 30,&nbsp;</span></li>
<li class="rvps2"><span class="rvts32">Fixed mappers: 225, 119, 4, 35, 31, 69, 212, 45,&nbsp;</span></li>
<li class="rvps2"><span class="rvts32">Fixed mmc5 IRQ handling</span></li>
<li class="rvps2"><span class="rvts32">Fixed mmc1 reg#3 masking</span></li>
<li class="rvps2"><span class="rvts32">Fixed vrc7 sound savestates</span></li>
<li class="rvps2"><span class="rvts32">Added CoolBoy, KS7010, SB200, UNIF 158B, UNIF DRAGONFIGHTER, UNIF BMC-10-24-C-A1, UNIF EH8813A, UNIF HP898F, UNIF F-15, UNIF RT-01, UNIF UNL-KS7017, UNIF BMC-81-01-31-C, UNIF UNL-8-IN-1</span></li>
<li class="rvps2"><span class="rvts32">NES 2.0 support</span></li>
<li class="rvps2"><span class="rvts32">Fixed UNIF BMC 12 IN 1, UNIF OneBus</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Movies</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed a bug with FDS flag being always set when converting a FCM</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Video</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Prescale filter for 2x, 3x and 4x resolutions</span></li>
<li class="rvps2"><span class="rvts32">Made NTSC filter internal resolution closer to 4:3</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Palette</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Support 512 color palettes</span></li>
<li class="rvps2"><span class="rvts6">Added external palettes: SONY_CXA2025AS_US.pal, RP2C03.pal (and its versions), Unsaturated-V6.pal</span></li>
<li class="rvps2"><span class="rvts32">Option to swap deemphasis bits</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Sound</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Option to swap duty cycles</span></li>
<li class="rvps2"><span class="rvts32">NSF can be set to Dendy mode</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts34">Input</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fix Mouse input implementation</span></li>
<li class="rvps2"><span class="rvts32">Support for SNES mouse</span></li>
<li class="rvps2"><span class="rvts32">PEC-586 russian keyboard support</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Lua</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Removed speed notification per script reload, if it remained 100%</span></li>
<li class="rvps2"><span class="rvts32">Fixed lua drawings in NSF</span></li>
<li class="rvps2"><span class="rvts32">Proper halo for lua font</span></li>
<li class="rvps2"><span class="rvts32">Fixes to sound.get() region consistency and frequency/midikey detection for Noise and DPCM channels</span></li>
</ul>
<p class="rvps2"><span class="rvts32"><br/></span></p>
<p class="rvps2"><span class="rvts32">New Lua functions:</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">emu.getpath()</span></li>
<li class="rvps2"><span class="rvts32">emu.loadrom()</span></li>
<li class="rvps2"><span class="rvts32">rom.writebyte()</span></li>
<li class="rvps2"><span class="rvts32">gethash()</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">Win32</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added -dumpinput and -playinput functions</span></li>
<li class="rvps2"><span class="rvts32">Support for SNES pad</span></li>
<li class="rvps2"><span class="rvts32">Added onscreen messages when region changes</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Debugger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added debuggerPageSize config variable which lets you pick whether 8KB physical PRG pages are used, or 16KB (the original). It defaults to 14 (1&lt;&lt;14 == 16KB).</span></li>
<li class="rvps2"><span class="rvts32">Set symbolic debugger name entry dialog text limits when creating a new label</span></li>
<li class="rvps2"><span class="rvts32">Fixed new-PPU debug information (address and pixel)</span></li>
<li class="rvps2"><span class="rvts32">Step Into hotkey</span></li>
<li class="rvps2"><span class="rvts32">More granular accounting of scanline and dot</span></li>
</ul>
<p class="rvps2"><span class="rvts33"><br/></span></p>
<p class="rvps2"><span class="rvts33">Trace Logger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Fixed incorrect display of resolved address for (FF,x)</span></li>
</ul>
<p class="rvps2"><span class="rvts33"><br/></span></p>
<p class="rvps2"><span class="rvts33">Symbolic debugging</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Optionally display register names</span></li>
</ul>
<p class="rvps2"><span class="rvts33"><br/></span></p>
<p class="rvps2"><span class="rvts33">CDLogger</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts6">Fix </span><span class="rvts32">crash when attempting to open file picked as target for Save Stripped ROM operation</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">PPU Viewer</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">8x16 sprite display mode</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts33">Hex Editor</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added option to dump entire 64k memory space</span></li>
<li class="rvps2"><span class="rvts32">Don't forget to load the symbols, when hex editor is first launched before debugger</span></li>
<li class="rvps2"><span class="rvts32">Show values for registers $4000-$4017</span></li>
</ul>
<p class="rvps2"><span class="rvts33"><br/></span></p>
<p class="rvps2"><span class="rvts33">Cheats</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">mmc5 Akumajou Dracula crash fix</span></li>
<li class="rvps2"><span class="rvts32">More RAM available in search</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34">SDL</span></p>
<ul style="text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;">
<li class="rvps2"><span class="rvts32">Added apply button to video config dialog</span></li>
<li class="rvps2"><span class="rvts32">Added link to libgd project download page in readme</span></li>
<li class="rvps2"><span class="rvts32">Noted optional libgd dependency in readme</span></li>
<li class="rvps2"><span class="rvts32">SCons: Fixed logic for LOGO and CREATE_AVI options</span></li>
<li class="rvps2"><span class="rvts32">Manpage updates</span></li>
<li class="rvps2"><span class="rvts32">Added hotkeys for volume up/down</span></li>
<li class="rvps2"><span class="rvts32">Menu toggling with the Alt key</span></li>
<li class="rvps2"><span class="rvts32">Print error when opengl/scalers are both enabled</span></li>
<li class="rvps2"><span class="rvts32">Fixed bug where lua open file gui would default to home directory</span></li>
</ul>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34"><br/></span></p>
<p class="rvps2"><span class="rvts34"><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">&times;</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>

1
web/help/_keywords.json Normal file

File diff suppressed because one or more lines are too long

1
web/help/_toc.json Normal file

File diff suppressed because one or more lines are too long

11
web/help/_translations.js Normal file
View File

@ -0,0 +1,11 @@
function hnd_ut(a){
a.TRANSLATIONS['Search term too short'] = "Search term too short";
a.TRANSLATIONS['No results'] = "No results";
a.TRANSLATIONS['Please enter 3 or more characters'] = "Please enter 3 or more characters";
a.TRANSLATIONS['Word list not ready yet. Please wait until the word list is fully downloaded'] = "Word list not ready yet. Please wait until the word list is fully downloaded";
a.TRANSLATIONS['Incorrect or corrupt search data. Please check your HelpNDoc template'] = "Incorrect or corrupt search data. Please check your HelpNDoc template";
a.TRANSLATIONS['Related topics...'] = "Related topics...";
a.TRANSLATIONS['Loading...'] = "Loading...";
a.TRANSLATIONS['Close'] = "Close";
}

5
web/help/css/effects.min.css vendored Normal file
View File

@ -0,0 +1,5 @@
/*!
* HelpNDoc HTML template
* Copyright (C) IBE Software - All rights reserved.
* Can only be used in documentation generated by HelpNDoc: http://www.helpndoc.com
*/header{transition:top 0.3s ease, padding-left 0.3s ease}div#main{transition:margin-left 0.3s ease}nav{transition:left 0.3s ease, margin-top 0.3s ease, opacity 0.3s ease}.mask{transition:visibility 0s, opacity 0.3s ease}.tab-tabs>li::after{transition:transform 250ms ease 0s}#hnd-splitter{transition:background-color 0.15s linear}

View File

@ -0,0 +1,755 @@
/* ========== Text Styles ========== */
hr { color: #000000}
.main-content, .main-content table span.rvts0 /* Normal text */
{
font-size: 10pt;
font-family: 'Arial', 'Helvetica', sans-serif;
font-style: normal;
font-weight: normal;
color: #000000;
text-decoration: none;
}
span.rvts1 /* Heading */
{
font-weight: bold;
color: #0000ff;
}
span.rvts2 /* Subheading */
{
font-weight: bold;
color: #000080;
}
span.rvts3 /* Keywords */
{
font-style: italic;
color: #800000;
}
a.rvts4, span.rvts4 /* Jump 1 */
{
color: #008000;
text-decoration: underline;
}
a.rvts5, span.rvts5 /* Jump 2 */
{
color: #008000;
text-decoration: underline;
}
span.rvts6
{
}
span.rvts7
{
font-weight: bold;
color: #0000ff;
}
span.rvts8
{
font-weight: bold;
color: #000080;
}
span.rvts9
{
font-style: italic;
color: #800000;
}
a.rvts10, span.rvts10
{
color: #008000;
text-decoration: underline;
}
span.rvts11
{
color: #a0a0a0;
}
span.rvts12
{
font-size: 15pt;
font-family: 'Tahoma', 'Geneva', sans-serif;
font-weight: bold;
color: #696969;
}
span.rvts13
{
font-weight: bold;
color: #a0a0a0;
}
span.rvts14
{
font-style: italic;
color: #a0a0a0;
}
span.rvts15
{
font-size: 12pt;
}
a.rvts16, span.rvts16
{
font-size: 12pt;
color: #0000ff;
text-decoration: underline;
}
a.rvts16:hover
{
color: #0000ff;
}
span.rvts17
{
font-size: 18pt;
}
span.rvts18 /* Font Style */
{
font-family: 'Tahoma', 'Geneva', sans-serif;
font-style: italic;
color: #c0c0c0;
}
a.rvts19, span.rvts19 /* Font Style */
{
font-family: 'Tahoma', 'Geneva', sans-serif;
font-style: italic;
color: #6666ff;
text-decoration: underline;
}
span.rvts20
{
text-decoration: underline;
}
span.rvts21
{
font-size: 14pt;
}
span.rvts22
{
font-size: 24pt;
text-decoration: underline;
}
a.rvts23, span.rvts23
{
color: #0000ff;
text-decoration: underline;
}
a.rvts23:hover
{
color: #0000ff;
}
a.rvts24, span.rvts24
{
color: #0000ff;
text-decoration: underline;
}
a.rvts24:hover
{
color: #0000ff;
}
span.rvts25
{
font-size: 12pt;
text-decoration: underline;
}
span.rvts26
{
font-size: 18pt;
text-decoration: underline;
}
span.rvts27
{
color: #000000;
}
span.rvts28
{
font-size: 16pt;
color: #000000;
}
span.rvts29
{
font-size: 14pt;
color: #000000;
}
span.rvts30
{
font-size: 12pt;
color: #000000;
}
span.rvts31
{
font-size: 12pt;
font-family: 'Times New Roman', 'Times', serif;
color: #000000;
}
span.rvts32
{
}
span.rvts33
{
font-size: 14pt;
}
span.rvts34
{
font-size: 16pt;
}
a.rvts35, span.rvts35
{
color: #0000ff;
text-decoration: underline;
}
a.rvts35:hover
{
color: #0000ff;
}
a.rvts36, span.rvts36
{
color: #0000ff;
text-decoration: underline;
}
a.rvts36:hover
{
color: #0000ff;
}
span.rvts37
{
font-size: 16pt;
}
a.rvts38, span.rvts38
{
color: #0000ff;
text-decoration: underline;
}
a.rvts38:hover
{
color: #0000ff;
}
span.rvts39
{
font-family: 'Lucida Console', 'Monaco', monospace;
}
span.rvts40
{
font-style: italic;
}
a.rvts41, span.rvts41
{
color: #0000ff;
text-decoration: underline;
}
a.rvts41:hover
{
color: #0000ff;
}
span.rvts42
{
font-family: 'Times New Roman', 'Times', serif;
}
span.rvts43
{
font-size: 11pt;
font-family: 'Courier New', 'Courier', monospace;
}
a.rvts44, span.rvts44
{
color: #0000ff;
text-decoration: underline;
}
a.rvts44:hover
{
color: #0000ff;
}
span.rvts45
{
font-weight: bold;
}
a.rvts46, span.rvts46
{
color: #0000ff;
text-decoration: underline;
}
a.rvts46:hover
{
color: #0000ff;
}
a.rvts47, span.rvts47
{
color: #0000ff;
text-decoration: underline;
}
a.rvts47:hover
{
color: #0000ff;
}
span.rvts48
{
font-size: 16pt;
text-decoration: underline;
}
a.rvts49, span.rvts49
{
color: #0000ff;
text-decoration: underline;
}
a.rvts49:hover
{
color: #0000ff;
}
span.rvts50
{
font-size: 24pt;
}
a.rvts51, span.rvts51
{
color: #0000ff;
text-decoration: underline;
}
a.rvts51:hover
{
color: #0000ff;
}
span.rvts52
{
font-size: 14pt;
text-decoration: underline;
}
span.rvts53
{
font-family: 'Courier New', 'Courier', monospace;
}
span.rvts54
{
font-size: 9pt;
}
a.rvts55, span.rvts55
{
font-size: 9pt;
color: #0000ff;
text-decoration: underline;
}
a.rvts55:hover
{
color: #0000ff;
}
span.rvts56
{
font-family: 'Courier New', 'Courier', monospace;
}
a.rvts57, span.rvts57
{
color: #0000ff;
text-decoration: underline;
}
a.rvts57:hover
{
color: #0000ff;
}
a.rvts58, span.rvts58
{
color: #0000ff;
text-decoration: underline;
}
a.rvts58:hover
{
color: #0000ff;
}
a.rvts59, span.rvts59
{
color: #0000ff;
text-decoration: underline;
}
a.rvts59:hover
{
color: #0000ff;
}
span.rvts60
{
font-size: 12pt;
font-weight: bold;
}
a.rvts61, span.rvts61
{
color: #0000ff;
text-decoration: underline;
}
a.rvts61:hover
{
color: #0000ff;
}
a.rvts62, span.rvts62
{
color: #0000ff;
text-decoration: underline;
}
a.rvts62:hover
{
color: #0000ff;
}
a.rvts63, span.rvts63
{
color: #0000ff;
text-decoration: underline;
}
a.rvts63:hover
{
color: #0000ff;
}
a.rvts64, span.rvts64
{
color: #0000ff;
text-decoration: underline;
}
a.rvts64:hover
{
color: #0000ff;
}
a.rvts65, span.rvts65
{
color: #0000ff;
text-decoration: underline;
}
a.rvts65:hover
{
color: #0000ff;
}
a.rvts66, span.rvts66
{
color: #0000ff;
text-decoration: underline;
}
a.rvts66:hover
{
color: #0000ff;
}
a.rvts67, span.rvts67
{
color: #0000ff;
text-decoration: underline;
}
a.rvts67:hover
{
color: #0000ff;
}
span.rvts68
{
font-size: 12pt;
font-weight: bold;
text-decoration: underline;
}
a.rvts69, span.rvts69
{
color: #0000ff;
text-decoration: underline;
}
a.rvts69:hover
{
color: #0000ff;
}
a.rvts70, span.rvts70
{
color: #0000ff;
text-decoration: underline;
}
a.rvts70:hover
{
color: #0000ff;
}
a.rvts71, span.rvts71
{
color: #0000ff;
text-decoration: underline;
}
a.rvts71:hover
{
color: #0000ff;
}
span.rvts72
{
font-size: 11pt;
font-weight: bold;
}
span.rvts73
{
font-size: 8pt;
}
a.rvts74, span.rvts74
{
color: #0000ff;
text-decoration: underline;
}
a.rvts74:hover
{
color: #0000ff;
}
a.rvts75, span.rvts75
{
color: #0000ff;
text-decoration: underline;
}
a.rvts75:hover
{
color: #0000ff;
}
span.rvts76
{
color: #0000ff;
}
span.rvts77
{
color: #00cc00;
}
span.rvts78
{
color: #ff0000;
}
span.rvts79
{
color: #00be00;
}
span.rvts80
{
color: #a08c00;
}
span.rvts81
{
color: #0000c3;
}
span.rvts82
{
color: #0082a0;
}
span.rvts83
{
color: #d2be00;
}
span.rvts84
{
color: #0a0aff;
}
span.rvts85
{
color: #05ff05;
}
span.rvts86
{
font-size: 22pt;
text-decoration: underline;
}
a.rvts87, span.rvts87
{
color: #0000ff;
text-decoration: underline;
}
a.rvts87:hover
{
color: #0000ff;
}
a.rvts88, span.rvts88
{
color: #0000ff;
text-decoration: underline;
}
a.rvts88:hover
{
color: #0000ff;
}
a.rvts89, span.rvts89
{
color: #0000ff;
text-decoration: underline;
}
a.rvts89:hover
{
color: #0000ff;
}
span.rvts90
{
font-size: 18pt;
font-weight: bold;
}
a.rvts91, span.rvts91
{
color: #0000ff;
text-decoration: underline;
}
a.rvts91:hover
{
color: #0000ff;
}
a.rvts92, span.rvts92
{
color: #0000ff;
text-decoration: underline;
}
a.rvts92:hover
{
color: #0000ff;
}
span.rvts93
{
font-size: 12pt;
font-family: 'Courier New', 'Courier', monospace;
font-weight: bold;
}
span.rvts94
{
font-size: 14pt;
font-weight: bold;
}
span.rvts95
{
font-size: 12pt;
font-family: 'Courier New', 'Courier', monospace;
color: #000080;
}
span.rvts96
{
font-size: 12pt;
font-family: 'Courier New', 'Courier', monospace;
color: #333399;
}
span.rvts97
{
font-family: 'Courier New', 'Courier', monospace;
color: #000080;
}
span.rvts98
{
font-size: 16pt;
font-family: 'Courier New', 'Courier', monospace;
font-weight: bold;
}
span.rvts99
{
font-size: 11pt;
font-family: 'Courier New', 'Courier', monospace;
font-weight: bold;
}
span.rvts100
{
font-family: 'Courier New', 'Courier', monospace;
font-weight: bold;
}
span.rvts101
{
font-size: 12pt;
font-family: 'Courier New', 'Courier', monospace;
color: #000080;
}
a.rvts102, span.rvts102
{
font-family: 'Courier New', 'Courier', monospace;
color: #0000ff;
text-decoration: underline;
}
a.rvts102:hover
{
color: #0000ff;
}
span.rvts103
{
font-size: 14pt;
font-weight: bold;
}
span.rvts104
{
font-family: 'Courier New', 'Courier', monospace;
font-weight: bold;
text-decoration: underline;
}
span.rvts105
{
font-size: 12pt;
font-family: 'Courier New', 'Courier', monospace;
color: #00007f;
}
span.rvts106
{
font-size: 14pt;
font-family: 'Courier New', 'Courier', monospace;
}
span.rvts107
{
font-size: 12pt;
font-family: 'Courier New', 'Courier', monospace;
}
span.rvts108
{
font-size: 12pt;
font-family: 'Courier New', 'Courier', monospace;
color: #00007f;
}
span.rvts109
{
font-family: 'Courier New', 'Courier', monospace;
color: ;
}
span.rvts110
{
font-family: 'Lucida Console', 'Monaco', monospace;
text-decoration: underline;
}
span.rvts111
{
font-weight: bold;
text-decoration: underline;
}
span.rvts112
{
font-size: 11pt;
text-decoration: underline;
}
span.rvts113
{
font-size: 5pt;
}
span.rvts114
{
font-size: 5pt;
font-weight: bold;
}
/* ========== Para Styles ========== */
p,ul,ol /* Paragraph Style */
{
text-align: left;
text-indent: 0px;
padding: 0px 0px 0px 0px;
margin: 0px 0px 0px 0px;
}
.rvps1 /* Centered */
{
text-align: center;
}
.rvps2
{
}
.rvps3
{
text-align: center;
}
.rvps4 /* Paragraph Style */
{
text-align: center;
border-color: #c0c0c0;
border-style: solid;
border-width: 1px;
border-right: none;
border-left: none;
padding: 2px 0px 2px 0px;
margin: 7px 0px 7px 0px;
}
.rvps5
{
background: #ffffff;
}
.rvps6
{
text-indent: 48px;
}
.rvps7
{
text-indent: 48px;
margin: 0px 0px 0px 48px;
}
/* ========== Lists ========== */
.list0 {text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: disc;}
.list1 {text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: circle;}
.list2 {text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside; list-style-type: square;}
.list3 {text-indent: 0px; padding: 0; margin: 0 0 0 48px; list-style-position: outside; list-style-type: circle;}
.list4 {text-indent: 0px; padding: 0; margin: 0 0 0 48px; list-style-position: outside; list-style-type: square;}
.list5 {text-indent: 0px; padding: 0; margin: 0 0 0 48px; list-style-position: outside; list-style-type: disc;}
.list6 {text-indent: 0px; padding: 0; margin: 0 0 0 24px; list-style-position: outside;}
.list7 {text-indent: 0px; padding: 0; margin: 0 0 0 36px; list-style-position: outside; list-style-type: circle;}

5
web/help/css/layout.min.css vendored Normal file

File diff suppressed because one or more lines are too long

5
web/help/css/print.min.css vendored Normal file
View File

@ -0,0 +1,5 @@
/*!
* HelpNDoc HTML template
* Copyright (C) IBE Software - All rights reserved.
* Can only be used in documentation generated by HelpNDoc: http://www.helpndoc.com
*/header,nav,footer{display:none}div#main{margin:0}div#main>article .navigation{border-bottom:1px solid #aaa}div#main>article .navigation .nav-arrows{display:none}

5
web/help/css/theme-dark-blue.min.css vendored Normal file
View File

@ -0,0 +1,5 @@
/*!
* HelpNDoc HTML template
* Copyright (C) IBE Software - All rights reserved.
* Can only be used in documentation generated by HelpNDoc: http://www.helpndoc.com
*/a{color:#3598dc}a:focus,a:hover{color:#1d6fa7}header{background-color:#333;border-bottom-color:#1a1a1a;color:#eee}header .hnd-toggle .icon-bar{background-color:#fff}header .hnd-toggle.active,header .hnd-toggle:active,header .hnd-toggle.focus,header .hnd-toggle:focus,header .hnd-toggle:active:focus,header .hnd-toggle:hover{background-color:#292929;border-color:#0f0f0f}header .hnd-toggle.active .icon-bar,header .hnd-toggle:active .icon-bar,header .hnd-toggle.focus .icon-bar,header .hnd-toggle:focus .icon-bar,header .hnd-toggle:active:focus .icon-bar,header .hnd-toggle:hover .icon-bar{background-color:#3598dc}nav{background-color:#333}nav .tab-tabs{border-bottom-color:#1a1a1a}nav .tab-tabs .hnd-toggle{background-color:#2e2e2e;border-color:#1a1a1a;color:#eee}nav .tab-tabs .hnd-toggle.active,nav .tab-tabs .hnd-toggle:active,nav .tab-tabs .hnd-toggle.focus,nav .tab-tabs .hnd-toggle:focus,nav .tab-tabs .hnd-toggle:active:focus,nav .tab-tabs .hnd-toggle:hover{background-color:#292929;border-color:#0f0f0f;color:#3598dc}nav .tab-tabs>li>a,nav .tab-tabs>li.active>a,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{color:#eee}nav .tab-tabs>li.active>a{background-color:#2e2e2e;color:#3598dc}nav .tab-tabs>li>a:focus,nav .tab-tabs>li>a:hover,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{background-color:#292929;color:#3598dc}nav .tab-tabs>li.tab::after{background:#3598dc}nav #search-info{border-left-color:#eee;color:#eee}.jstree .jstree-anchor{color:#eee}.jstree .jstree-node .jstree-clicked{background-color:#1f1f1f;border-color:#121212}.jstree .jstree-node .jstree-hovered{background-color:#141414;border-color:#080808}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:before{color:#eee}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:hover:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:hover:before{color:#3598dc}div#main>article .navigation{border-bottom-color:#f2f2f2}div#main>article .navigation .breadcrumb>li::after{color:#ccc}div#main>article .navigation .nav-arrows a{color:#333}div#main>article .navigation .nav-arrows a:hover,div#main>article .navigation .nav-arrows a:focus:hover{color:#3598dc}

5
web/help/css/theme-dark-green.min.css vendored Normal file
View File

@ -0,0 +1,5 @@
/*!
* HelpNDoc HTML template
* Copyright (C) IBE Software - All rights reserved.
* Can only be used in documentation generated by HelpNDoc: http://www.helpndoc.com
*/a{color:#82b440}a:focus,a:hover{color:#597c2c}header{background-color:#333;border-bottom-color:#1a1a1a;color:#eee}header .hnd-toggle .icon-bar{background-color:#fff}header .hnd-toggle.active,header .hnd-toggle:active,header .hnd-toggle.focus,header .hnd-toggle:focus,header .hnd-toggle:active:focus,header .hnd-toggle:hover{background-color:#292929;border-color:#0f0f0f}header .hnd-toggle.active .icon-bar,header .hnd-toggle:active .icon-bar,header .hnd-toggle.focus .icon-bar,header .hnd-toggle:focus .icon-bar,header .hnd-toggle:active:focus .icon-bar,header .hnd-toggle:hover .icon-bar{background-color:#82b440}nav{background-color:#333}nav .tab-tabs{border-bottom-color:#1a1a1a}nav .tab-tabs .hnd-toggle{background-color:#2e2e2e;border-color:#1a1a1a;color:#eee}nav .tab-tabs .hnd-toggle.active,nav .tab-tabs .hnd-toggle:active,nav .tab-tabs .hnd-toggle.focus,nav .tab-tabs .hnd-toggle:focus,nav .tab-tabs .hnd-toggle:active:focus,nav .tab-tabs .hnd-toggle:hover{background-color:#292929;border-color:#0f0f0f;color:#82b440}nav .tab-tabs>li>a,nav .tab-tabs>li.active>a,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{color:#eee}nav .tab-tabs>li.active>a{background-color:#2e2e2e;color:#82b440}nav .tab-tabs>li>a:focus,nav .tab-tabs>li>a:hover,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{background-color:#292929;color:#82b440}nav .tab-tabs>li.tab::after{background:#82b440}nav #search-info{border-left-color:#eee;color:#eee}.jstree .jstree-anchor{color:#eee}.jstree .jstree-node .jstree-clicked{background-color:#1f1f1f;border-color:#121212}.jstree .jstree-node .jstree-hovered{background-color:#141414;border-color:#080808}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:before{color:#eee}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:hover:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:hover:before{color:#82b440}div#main>article .navigation{border-bottom-color:#f2f2f2}div#main>article .navigation .breadcrumb>li::after{color:#ccc}div#main>article .navigation .nav-arrows a{color:#333}div#main>article .navigation .nav-arrows a:hover,div#main>article .navigation .nav-arrows a:focus:hover{color:#82b440}

View File

@ -0,0 +1,5 @@
/*!
* HelpNDoc HTML template
* Copyright (C) IBE Software - All rights reserved.
* Can only be used in documentation generated by HelpNDoc: http://www.helpndoc.com
*/a{color:#f40}a:focus,a:hover{color:#b33000}header{background-color:#333;border-bottom-color:#1a1a1a;color:#eee}header .hnd-toggle .icon-bar{background-color:#fff}header .hnd-toggle.active,header .hnd-toggle:active,header .hnd-toggle.focus,header .hnd-toggle:focus,header .hnd-toggle:active:focus,header .hnd-toggle:hover{background-color:#292929;border-color:#0f0f0f}header .hnd-toggle.active .icon-bar,header .hnd-toggle:active .icon-bar,header .hnd-toggle.focus .icon-bar,header .hnd-toggle:focus .icon-bar,header .hnd-toggle:active:focus .icon-bar,header .hnd-toggle:hover .icon-bar{background-color:#f40}nav{background-color:#333}nav .tab-tabs{border-bottom-color:#1a1a1a}nav .tab-tabs .hnd-toggle{background-color:#2e2e2e;border-color:#1a1a1a;color:#eee}nav .tab-tabs .hnd-toggle.active,nav .tab-tabs .hnd-toggle:active,nav .tab-tabs .hnd-toggle.focus,nav .tab-tabs .hnd-toggle:focus,nav .tab-tabs .hnd-toggle:active:focus,nav .tab-tabs .hnd-toggle:hover{background-color:#292929;border-color:#0f0f0f;color:#f40}nav .tab-tabs>li>a,nav .tab-tabs>li.active>a,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{color:#eee}nav .tab-tabs>li.active>a{background-color:#2e2e2e;color:#f40}nav .tab-tabs>li>a:focus,nav .tab-tabs>li>a:hover,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{background-color:#292929;color:#f40}nav .tab-tabs>li.tab::after{background:#f40}nav #search-info{border-left-color:#eee;color:#eee}.jstree .jstree-anchor{color:#eee}.jstree .jstree-node .jstree-clicked{background-color:#1f1f1f;border-color:#121212}.jstree .jstree-node .jstree-hovered{background-color:#141414;border-color:#080808}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:before{color:#eee}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:hover:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:hover:before{color:#f40}div#main>article .navigation{border-bottom-color:#f2f2f2}div#main>article .navigation .breadcrumb>li::after{color:#ccc}div#main>article .navigation .nav-arrows a{color:#333}div#main>article .navigation .nav-arrows a:hover,div#main>article .navigation .nav-arrows a:focus:hover{color:#f40}

View File

@ -0,0 +1,5 @@
/*!
* HelpNDoc HTML template
* Copyright (C) IBE Software - All rights reserved.
* Can only be used in documentation generated by HelpNDoc: http://www.helpndoc.com
*/a{color:#D400FF}a:focus,a:hover{color:#9400b3}header{background-color:#333;border-bottom-color:#1a1a1a;color:#eee}header .hnd-toggle .icon-bar{background-color:#fff}header .hnd-toggle.active,header .hnd-toggle:active,header .hnd-toggle.focus,header .hnd-toggle:focus,header .hnd-toggle:active:focus,header .hnd-toggle:hover{background-color:#292929;border-color:#0f0f0f}header .hnd-toggle.active .icon-bar,header .hnd-toggle:active .icon-bar,header .hnd-toggle.focus .icon-bar,header .hnd-toggle:focus .icon-bar,header .hnd-toggle:active:focus .icon-bar,header .hnd-toggle:hover .icon-bar{background-color:#D400FF}nav{background-color:#333}nav .tab-tabs{border-bottom-color:#1a1a1a}nav .tab-tabs .hnd-toggle{background-color:#2e2e2e;border-color:#1a1a1a;color:#eee}nav .tab-tabs .hnd-toggle.active,nav .tab-tabs .hnd-toggle:active,nav .tab-tabs .hnd-toggle.focus,nav .tab-tabs .hnd-toggle:focus,nav .tab-tabs .hnd-toggle:active:focus,nav .tab-tabs .hnd-toggle:hover{background-color:#292929;border-color:#0f0f0f;color:#D400FF}nav .tab-tabs>li>a,nav .tab-tabs>li.active>a,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{color:#eee}nav .tab-tabs>li.active>a{background-color:#2e2e2e;color:#D400FF}nav .tab-tabs>li>a:focus,nav .tab-tabs>li>a:hover,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{background-color:#292929;color:#D400FF}nav .tab-tabs>li.tab::after{background:#D400FF}nav #search-info{border-left-color:#eee;color:#eee}.jstree .jstree-anchor{color:#eee}.jstree .jstree-node .jstree-clicked{background-color:#1f1f1f;border-color:#121212}.jstree .jstree-node .jstree-hovered{background-color:#141414;border-color:#080808}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:before{color:#eee}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:hover:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:hover:before{color:#D400FF}div#main>article .navigation{border-bottom-color:#f2f2f2}div#main>article .navigation .breadcrumb>li::after{color:#ccc}div#main>article .navigation .nav-arrows a{color:#333}div#main>article .navigation .nav-arrows a:hover,div#main>article .navigation .nav-arrows a:focus:hover{color:#D400FF}

5
web/help/css/theme-light-blue.min.css vendored Normal file
View File

@ -0,0 +1,5 @@
/*!
* HelpNDoc HTML template
* Copyright (C) IBE Software - All rights reserved.
* Can only be used in documentation generated by HelpNDoc: http://www.helpndoc.com
*/a{color:#337ab7}a:focus,a:hover{color:#22527b}header{background-color:#fff;border-bottom-color:#e6e6e6;color:#222}header .hnd-toggle .icon-bar{background-color:#6f6f6f}header .hnd-toggle.active,header .hnd-toggle:active,header .hnd-toggle.focus,header .hnd-toggle:focus,header .hnd-toggle:active:focus,header .hnd-toggle:hover{background-color:#f5f5f5;border-color:#dbdbdb}header .hnd-toggle.active .icon-bar,header .hnd-toggle:active .icon-bar,header .hnd-toggle.focus .icon-bar,header .hnd-toggle:focus .icon-bar,header .hnd-toggle:active:focus .icon-bar,header .hnd-toggle:hover .icon-bar{background-color:#337ab7}nav{background-color:#f7f7f7}nav .tab-tabs{border-bottom-color:#dedede}nav .tab-tabs .hnd-toggle{background-color:#f2f2f2;border-color:#dedede;color:#666}nav .tab-tabs .hnd-toggle.active,nav .tab-tabs .hnd-toggle:active,nav .tab-tabs .hnd-toggle.focus,nav .tab-tabs .hnd-toggle:focus,nav .tab-tabs .hnd-toggle:active:focus,nav .tab-tabs .hnd-toggle:hover{background-color:#ededed;border-color:#d3d3d3;color:#337ab7}nav .tab-tabs>li>a,nav .tab-tabs>li.active>a,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{color:#666}nav .tab-tabs>li.active>a{background-color:#f2f2f2;color:#337ab7}nav .tab-tabs>li>a:focus,nav .tab-tabs>li>a:hover,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{background-color:#ededed;color:#337ab7}nav .tab-tabs>li.tab::after{background:#337ab7}nav #search-info{border-left-color:#666;color:#666}.jstree .jstree-anchor{color:#666}.jstree .jstree-node .jstree-clicked{background-color:#e3e3e3;border-color:#d6d6d6}.jstree .jstree-node .jstree-hovered{background-color:#d8d8d8;border-color:#ccc}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:before{color:#666}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:hover:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:hover:before{color:#337ab7}div#main>article .navigation{border-bottom-color:#f2f2f2}div#main>article .navigation .breadcrumb>li::after{color:#ccc}div#main>article .navigation .nav-arrows a{color:#222}div#main>article .navigation .nav-arrows a:hover,div#main>article .navigation .nav-arrows a:focus:hover{color:#337ab7}

View File

@ -0,0 +1,5 @@
/*!
* HelpNDoc HTML template
* Copyright (C) IBE Software - All rights reserved.
* Can only be used in documentation generated by HelpNDoc: http://www.helpndoc.com
*/a{color:#6f9a37}a:focus,a:hover{color:#466223}header{background-color:#fff;border-bottom-color:#e6e6e6;color:#222}header .hnd-toggle .icon-bar{background-color:#6f6f6f}header .hnd-toggle.active,header .hnd-toggle:active,header .hnd-toggle.focus,header .hnd-toggle:focus,header .hnd-toggle:active:focus,header .hnd-toggle:hover{background-color:#f5f5f5;border-color:#dbdbdb}header .hnd-toggle.active .icon-bar,header .hnd-toggle:active .icon-bar,header .hnd-toggle.focus .icon-bar,header .hnd-toggle:focus .icon-bar,header .hnd-toggle:active:focus .icon-bar,header .hnd-toggle:hover .icon-bar{background-color:#6f9a37}nav{background-color:#f7f7f7}nav .tab-tabs{border-bottom-color:#dedede}nav .tab-tabs .hnd-toggle{background-color:#f2f2f2;border-color:#dedede;color:#666}nav .tab-tabs .hnd-toggle.active,nav .tab-tabs .hnd-toggle:active,nav .tab-tabs .hnd-toggle.focus,nav .tab-tabs .hnd-toggle:focus,nav .tab-tabs .hnd-toggle:active:focus,nav .tab-tabs .hnd-toggle:hover{background-color:#ededed;border-color:#d3d3d3;color:#6f9a37}nav .tab-tabs>li>a,nav .tab-tabs>li.active>a,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{color:#666}nav .tab-tabs>li.active>a{background-color:#f2f2f2;color:#6f9a37}nav .tab-tabs>li>a:focus,nav .tab-tabs>li>a:hover,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{background-color:#ededed;color:#6f9a37}nav .tab-tabs>li.tab::after{background:#6f9a37}nav #search-info{border-left-color:#666;color:#666}.jstree .jstree-anchor{color:#666}.jstree .jstree-node .jstree-clicked{background-color:#e3e3e3;border-color:#d6d6d6}.jstree .jstree-node .jstree-hovered{background-color:#d8d8d8;border-color:#ccc}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:before{color:#666}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:hover:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:hover:before{color:#6f9a37}div#main>article .navigation{border-bottom-color:#f2f2f2}div#main>article .navigation .breadcrumb>li::after{color:#ccc}div#main>article .navigation .nav-arrows a{color:#222}div#main>article .navigation .nav-arrows a:hover,div#main>article .navigation .nav-arrows a:focus:hover{color:#6f9a37}

View File

@ -0,0 +1,5 @@
/*!
* HelpNDoc HTML template
* Copyright (C) IBE Software - All rights reserved.
* Can only be used in documentation generated by HelpNDoc: http://www.helpndoc.com
*/a{color:#B23000}a:focus,a:hover{color:#661b00}header{background-color:#fff;border-bottom-color:#e6e6e6;color:#222}header .hnd-toggle .icon-bar{background-color:#6f6f6f}header .hnd-toggle.active,header .hnd-toggle:active,header .hnd-toggle.focus,header .hnd-toggle:focus,header .hnd-toggle:active:focus,header .hnd-toggle:hover{background-color:#f5f5f5;border-color:#dbdbdb}header .hnd-toggle.active .icon-bar,header .hnd-toggle:active .icon-bar,header .hnd-toggle.focus .icon-bar,header .hnd-toggle:focus .icon-bar,header .hnd-toggle:active:focus .icon-bar,header .hnd-toggle:hover .icon-bar{background-color:#B23000}nav{background-color:#f7f7f7}nav .tab-tabs{border-bottom-color:#dedede}nav .tab-tabs .hnd-toggle{background-color:#f2f2f2;border-color:#dedede;color:#666}nav .tab-tabs .hnd-toggle.active,nav .tab-tabs .hnd-toggle:active,nav .tab-tabs .hnd-toggle.focus,nav .tab-tabs .hnd-toggle:focus,nav .tab-tabs .hnd-toggle:active:focus,nav .tab-tabs .hnd-toggle:hover{background-color:#ededed;border-color:#d3d3d3;color:#B23000}nav .tab-tabs>li>a,nav .tab-tabs>li.active>a,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{color:#666}nav .tab-tabs>li.active>a{background-color:#f2f2f2;color:#B23000}nav .tab-tabs>li>a:focus,nav .tab-tabs>li>a:hover,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{background-color:#ededed;color:#B23000}nav .tab-tabs>li.tab::after{background:#B23000}nav #search-info{border-left-color:#666;color:#666}.jstree .jstree-anchor{color:#666}.jstree .jstree-node .jstree-clicked{background-color:#e3e3e3;border-color:#d6d6d6}.jstree .jstree-node .jstree-hovered{background-color:#d8d8d8;border-color:#ccc}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:before{color:#666}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:hover:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:hover:before{color:#B23000}div#main>article .navigation{border-bottom-color:#f2f2f2}div#main>article .navigation .breadcrumb>li::after{color:#ccc}div#main>article .navigation .nav-arrows a{color:#222}div#main>article .navigation .nav-arrows a:hover,div#main>article .navigation .nav-arrows a:focus:hover{color:#B23000}

View File

@ -0,0 +1,5 @@
/*!
* HelpNDoc HTML template
* Copyright (C) IBE Software - All rights reserved.
* Can only be used in documentation generated by HelpNDoc: http://www.helpndoc.com
*/a{color:#9400B2}a:focus,a:hover{color:#540066}header{background-color:#fff;border-bottom-color:#e6e6e6;color:#222}header .hnd-toggle .icon-bar{background-color:#6f6f6f}header .hnd-toggle.active,header .hnd-toggle:active,header .hnd-toggle.focus,header .hnd-toggle:focus,header .hnd-toggle:active:focus,header .hnd-toggle:hover{background-color:#f5f5f5;border-color:#dbdbdb}header .hnd-toggle.active .icon-bar,header .hnd-toggle:active .icon-bar,header .hnd-toggle.focus .icon-bar,header .hnd-toggle:focus .icon-bar,header .hnd-toggle:active:focus .icon-bar,header .hnd-toggle:hover .icon-bar{background-color:#9400B2}nav{background-color:#f7f7f7}nav .tab-tabs{border-bottom-color:#dedede}nav .tab-tabs .hnd-toggle{background-color:#f2f2f2;border-color:#dedede;color:#666}nav .tab-tabs .hnd-toggle.active,nav .tab-tabs .hnd-toggle:active,nav .tab-tabs .hnd-toggle.focus,nav .tab-tabs .hnd-toggle:focus,nav .tab-tabs .hnd-toggle:active:focus,nav .tab-tabs .hnd-toggle:hover{background-color:#ededed;border-color:#d3d3d3;color:#9400B2}nav .tab-tabs>li>a,nav .tab-tabs>li.active>a,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{color:#666}nav .tab-tabs>li.active>a{background-color:#f2f2f2;color:#9400B2}nav .tab-tabs>li>a:focus,nav .tab-tabs>li>a:hover,nav .tab-tabs>li.active>a:focus,nav .tab-tabs>li.active>a:hover{background-color:#ededed;color:#9400B2}nav .tab-tabs>li.tab::after{background:#9400B2}nav #search-info{border-left-color:#666;color:#666}.jstree .jstree-anchor{color:#666}.jstree .jstree-node .jstree-clicked{background-color:#e3e3e3;border-color:#d6d6d6}.jstree .jstree-node .jstree-hovered{background-color:#d8d8d8;border-color:#ccc}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:before{color:#666}.jstree .jstree-node.jstree-closed>.jstree-icon.jstree-ocl:hover:before,.jstree .jstree-node.jstree-open>.jstree-icon.jstree-ocl:hover:before{color:#9400B2}div#main>article .navigation{border-bottom-color:#f2f2f2}div#main>article .navigation .breadcrumb>li::after{color:#ccc}div#main>article .navigation .nav-arrows a{color:#222}div#main>article .navigation .nav-arrows a:hover,div#main>article .navigation .nav-arrows a:focus:hover{color:#9400B2}

File diff suppressed because one or more lines are too long

View File

@ -1,101 +1,292 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>.fcm</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("fcm");
}
});
</script>
<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>.fcm</title>
<meta name="description" content="" />
<meta name="keywords" content="FCM">
<!-- Twitter Card data -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content=".fcm">
<meta name="twitter:description" content="">
<!-- Open Graph data -->
<meta property="og:title" content=".fcm" />
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>.fcm</h1>
<div id="topic_breadcrumb">
<a href="Technicalinformation.html">Technical Information</a> &rsaquo;&rsaquo; <a href="Movieformats.html">Movie &amp; Savestate formats</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Movieformats.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="fm2.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="fcs.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p><span class="rvts12">FCE Ultra Movie File Format</span></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;- Updated March 22, 2004</p>
<p><br/></p>
<p>The FCM file format is a somewhat "joined" file format. &nbsp;The first part of a FCM</p>
<p>file will contain an FCS-format state save. &nbsp;After this data, the FCM-specific data</p>
<p>begins, which is being referred to from this point.</p>
<p><br/></p>
<p><br/></p>
<p>Currently, the only supported input scheme for a FCM is four joysticks.</p>
<p><br/></p>
<p>The FCM data consists of a stream of joystick commands:</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;dLLjjbbb</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;d &nbsp;= Dummy update, if set. &nbsp;Used to reset frame timestamp.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;LL &nbsp;= timestamp length, in bytes(maximum of 3 bytes).</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;jj &nbsp;= Which joystick(0-3).</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;bbb = Which button(0-7).</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;If the dummy update bit is set, a command can also have occurred. &nbsp;Look at the</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;lower 5 bits:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 &nbsp; &nbsp; &nbsp; &nbsp;= &nbsp; &nbsp; &nbsp; &nbsp;Just a dummy update.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1 &nbsp; &nbsp; &nbsp; &nbsp;= &nbsp; &nbsp; &nbsp; &nbsp;Reset</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2 &nbsp; &nbsp; &nbsp; &nbsp;= &nbsp; &nbsp; &nbsp; &nbsp;Power</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;The timestamp is stored after the joystick command, in LSB-first format. &nbsp;It is</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;the number of frames since the last event. &nbsp;A timestamp length of "0" is valid, to</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;be used when several different buttons need to change state at the same time(same frame,</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;at least).</p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/help-authoring-tool">Create HTML Help, DOC, PDF and print manuals from 1 single source</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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="fcm"
data-hnd-context="26"
data-hnd-title=".fcm"
>
<div class="navigation">
<ol class="breadcrumb">
<li><a href="Technicalinformation.html">Technical Information</a></li><li><a href="Movieformats.html">Movie &amp; 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 &amp; Savestate formats" role="button"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span></a><a class="btn btn-default" href="fm2.html" title=".fm2" role="button"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span></a><a class="btn btn-default" href="fcs.html" title="Savestate (.fcs)" role="button"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span></a></div>
</div>
</div>
<a id="main-content"></a>
<h2>.fcm</h2>
<div class="main-content">
<p></p>
<p class="rvps2"><span class="rvts17">FCE Ultra Movie File Format</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">- Updated March 22, 2004</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The FCM file format is a somewhat "joined" file format. &nbsp;The first part of a FCM</span></p>
<p class="rvps2"><span class="rvts6">file will contain an FCS-format state save. &nbsp;After this data, the FCM-specific data</span></p>
<p class="rvps2"><span class="rvts6">begins, which is being referred to from this point.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">Currently, the only supported input scheme for a FCM is four joysticks.</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The FCM data consists of a stream of joystick commands:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">dLLjjbbb</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">d &nbsp;= Dummy update, if set. &nbsp;Used to reset frame timestamp.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">LL &nbsp;= timestamp length, in bytes(maximum of 3 bytes).</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">jj &nbsp;= Which joystick(0-3).</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">bbb = Which button(0-7).</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">If the dummy update bit is set, a command can also have occurred. &nbsp;Look at the</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">lower 5 bits:</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">0</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">=</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Just a dummy update.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">1</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">=</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Reset</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">2</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">=</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Power</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">The timestamp is stored after the joystick command, in LSB-first format. &nbsp;It is</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">the number of frames since the last event. &nbsp;A timestamp length of "0" is valid, to</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">be used when several different buttons need to change state at the same time(same frame,</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">at least).</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.helpndoc.com/feature-tour/create-help-files-for-the-qt-help-framework">Create cross-platform Qt Help files</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">&times;</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>

View File

@ -1,227 +1,418 @@
<html>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Savestate (.fcs)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="generator" content="HelpNDoc Personal Edition 3.8.0.560">
<link type="text/css" rel="stylesheet" media="all" href="css/reset.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/base.css" />
<link type="text/css" rel="stylesheet" media="all" href="css/hnd.css" />
<!--[if lte IE 8]>
<link type="text/css" rel="stylesheet" media="all" href="css/ielte8.css" />
<![endif]-->
<style type="text/css">
#topic_header
{
background-color: #EFEFEF;
}
</style>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/hnd.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
if (top.frames.length == 0)
{
var sTopicUrl = top.location.href.substring(top.location.href.lastIndexOf("/") + 1, top.location.href.length);
top.location.href = "fceux.html?" + sTopicUrl;
}
else if (top && top.FrameTOC && top.FrameTOC.SelectTocItem)
{
top.FrameTOC.SelectTocItem("fcs");
}
});
</script>
<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>
<body class="md-nav-expanded">
<div id="topic_header">
<div id="topic_header_content">
<h1>Savestate (.fcs)</h1>
<div id="topic_breadcrumb">
<a href="Technicalinformation.html">Technical Information</a> &rsaquo;&rsaquo; <a href="Movieformats.html">Movie &amp; Savestate formats</a> &rsaquo;&rsaquo; </div>
</div>
<div id="topic_header_nav">
<a href="Movieformats.html"><img src="img/arrow_up.png" alt="Parent"/></a>
<a href="fcm.html"><img src="img/arrow_left.png" alt="Previous"/></a>
<a href="Sound.html"><img src="img/arrow_right.png" alt="Next"/></a>
</div>
<div class="clear"></div>
</div>
<div id="topic_content">
<p></p>
<p>FCE Ultra Save State Format</p>
<p> Updated: &nbsp;Mar 9, 2003</p>
<p>---------------------------------------</p>
<p><br/></p>
<p>FCE Ultra's save state format is now designed to be as forward and backwards</p>
<p>compatible as possible. &nbsp;This is achieved through the (over)use of chunks.</p>
<p>All multiple-byte variables are stored LSB(least significant byte)-first.</p>
<p>Data types:</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;(u)int8 - (un)signed 8 bit variable(also referred to as "byte")</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;(u)int16 - (un)signed 16 bit variable</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;(u)int32 - (un)signed 32 bit variable</p>
<p><br/></p>
<p>-- Main File Header:</p>
<p><br/></p>
<p>The main file header is 16-bytes in length. &nbsp;The first three bytes contain</p>
<p>the string "FCS". &nbsp;The next byte contains the version of FCE Ultra that saved</p>
<p>this save state. &nbsp;This document only applies to version "53"(.53) and higher.</p>
<p>After the version byte, the size of the entire file in bytes(minus the 16 byte</p>
<p>main file header) is stored. &nbsp;If oldversion is set to 255, the 32-bit version</p>
<p>field will be used. &nbsp;In this field, a version such as 0.98.10 is stored as "9810"(decimal).</p>
<p>The rest of the header is currently unused and should be nulled out. &nbsp;</p>
<p>Example of relevant parts:</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;FCS &lt;uint8 oldversion&gt; &lt;uint32 totalsize&gt; &lt;uint32 version&gt;</p>
<p><br/></p>
<p>-- Section Chunks:</p>
<p><br/></p>
<p>Sections chunk headers are 5-bytes in length. &nbsp;The first byte defines what </p>
<p>section it &nbsp;is, the next four bytes define the total size of the section</p>
<p>(including the section chunk header).</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;&lt;uint8 section&gt; &lt;uint32 size&gt;</p>
<p><br/></p>
<p>Section definitions:</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;1 &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;"CPU"</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;2 &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;"CPUC"</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;3 &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;"PPU"</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;4 &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;"CTLR"</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;5 &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;"SND"</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;16 &nbsp; &nbsp; &nbsp; &nbsp;- &nbsp; &nbsp; &nbsp; &nbsp;"EXTRA"</p>
<p><br/></p>
<p>-- Subsection Chunks</p>
<p><br/></p>
<p>Subsection chunks are stored within section chunks. &nbsp;They contain the actual</p>
<p>state data. &nbsp;Each subsection chunk is composed of an 8-byte header and the data.</p>
<p>The header contains a description(a name) and the size of the data contained </p>
<p>in the chunk:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;uint8 description[4]&gt; &lt;uint32 size&gt;</p>
<p><br/></p>
<p>The name is a four-byte string. &nbsp;It does not need to be null-terminated.</p>
<p>If the string is less than four bytes in length, the remaining unused bytes</p>
<p>must be null.</p>
<p><br/></p>
<p>-- Subsection Chunk Description Definitions</p>
<p><br/></p>
<p>Note that not all subsection chunk description definitions listed below</p>
<p>are guaranteed to be in the section chunk. &nbsp;It's just a list of what CAN</p>
<p>be in a section chunk. &nbsp;This especially applies to the "EXTRA" subsection.</p>
<p><br/></p>
<p>---- Section "CPU"</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Name: &nbsp; &nbsp; &nbsp; &nbsp;Type: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Description:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;PC &nbsp; &nbsp; &nbsp; &nbsp;uint16 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Program Counter</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;A &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Accumulator</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;P &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Processor status register</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;X &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;X register</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Y &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Y register</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;S &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Stack pointer</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;RAM &nbsp; &nbsp; &nbsp; &nbsp;uint8[0x800] &nbsp; &nbsp; &nbsp; &nbsp;2KB work RAM</p>
<p><br/></p>
<p>---- Section "CPUC" (emulator specific)</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Name: &nbsp; &nbsp; &nbsp; &nbsp;Type: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Description:</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;JAMM &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Non-zero value if CPU in a "jammed" state</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;IRQL &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Non-zero value if IRQs are to be generated constantly</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;ICoa &nbsp; &nbsp; &nbsp; &nbsp;int32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Temporary cycle counter</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;ICou &nbsp; &nbsp; &nbsp; &nbsp;int32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Cycle counter</p>
<p><br/></p>
<p>---- Section "PPU"</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Name: &nbsp; &nbsp; &nbsp; &nbsp;Type: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Description:</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;NTAR &nbsp; &nbsp; &nbsp; &nbsp;uint8[0x800] &nbsp; &nbsp; &nbsp; &nbsp;2 KB of name/attribute table RAM</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;PRAM &nbsp; &nbsp; &nbsp; &nbsp;uint8[32] &nbsp; &nbsp; &nbsp; &nbsp;32 bytes of palette index RAM</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;SPRA &nbsp; &nbsp; &nbsp; &nbsp;uint8[0x100] &nbsp; &nbsp; &nbsp; &nbsp;256 bytes of sprite RAM</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;PPU &nbsp; &nbsp; &nbsp; &nbsp;uint8[4] &nbsp; &nbsp; &nbsp; &nbsp;Last values written to $2000 and $2001, the PPU</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;status register, and the last value written to</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$2003.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;XOFF &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Tile X-offset.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;VTOG &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Toggle used by $2005 and $2006.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;RADD &nbsp; &nbsp; &nbsp; &nbsp;uint16 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PPU Address Register(address written to/read from</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;when $2007 is accessed).</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;TADD &nbsp; &nbsp; &nbsp; &nbsp;uint16 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PPU Address Register</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;VBUF &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;VRAM Read Buffer</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;PGEN &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PPU "general" latch. &nbsp;See Ki's document.</p>
<p><br/></p>
<p>---- Section "CTLR" (somewhat emulator specific)</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Name: &nbsp; &nbsp; &nbsp; &nbsp;Type: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Description:</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;J1RB &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Bit to be returned when first joystick is read.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;J2RB &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Bit to be returned when second joystick is read.</p>
<p><br/></p>
<p>---- Section "SND" (somewhat emulator specific)</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;NREG &nbsp; &nbsp; &nbsp; &nbsp;uint16 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Noise LFSR.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;P17 &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Last byte written to $4017.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;PBIN &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DMC bit index.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;PAIN &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DMC address index(from $8000).</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;PSIN &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DMC length counter(how many bytes left </p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;to fetch).</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;&lt;to be finished&gt;</p>
<p><br/></p>
<p>---- Section "EXTRA" (varying emulator specificness)</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;For iNES-format games(incomplete, and doesn't apply to every game):</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Name: &nbsp; &nbsp; &nbsp; &nbsp;Type: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Description:</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;WRAM &nbsp; &nbsp; &nbsp; &nbsp;uint8[0x2000] &nbsp; &nbsp; &nbsp; &nbsp;8KB of WRAM at $6000-$7fff</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;MEXR &nbsp; &nbsp; &nbsp; &nbsp;uint8[0x8000] &nbsp; &nbsp; &nbsp; &nbsp;(very emulator specific)</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;CHRR &nbsp; &nbsp; &nbsp; &nbsp;uint8[0x2000] &nbsp; &nbsp; &nbsp; &nbsp;8KB of CHR RAM at $0000-$1fff(in PPU address space).</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;EXNR &nbsp; &nbsp; &nbsp; &nbsp;uint8[0x800] &nbsp; &nbsp; &nbsp; &nbsp;Extra 2KB of name/attribute table RAM.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;MPBY &nbsp; &nbsp; &nbsp; &nbsp;uint8[32] &nbsp; &nbsp; &nbsp; &nbsp;(very emulator specific)</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;MIRR &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Current mirroring:</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0 = "Horizontal"</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1 = "Vertical"</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$10 = Mirror from $2000</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;$11 = Mirror from $2400</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;IRQC &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Generic IRQ counter</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;IQL1 &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Generic IRQ latch</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;IQL2 &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Generic IRQ latch</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;IRQA &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Generic IRQ on/off register.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;PBL &nbsp; &nbsp; &nbsp; &nbsp;uint8[4] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;List of 4 8KB ROM banks paged in at $8000-$FFFF</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;CBL &nbsp; &nbsp; &nbsp; &nbsp;uint8[8] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;List of 8 1KB VROM banks page in at $0000-$1FFF(PPU).</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;For FDS games(incomplete):</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;Name: &nbsp; &nbsp; &nbsp; &nbsp;Type: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Description:</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;DDT&lt;x&gt; &nbsp;uint8[65500] &nbsp; &nbsp;Disk data for side x(0-3).</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;FDSR &nbsp; &nbsp; &nbsp; &nbsp;uint8[0x8000] &nbsp; &nbsp; &nbsp; &nbsp;32 KB of work RAM</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;CHRR &nbsp; &nbsp; &nbsp; &nbsp;uint8[0x2000] &nbsp; &nbsp; &nbsp; &nbsp;8 KB of CHR RAM</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;IRQC &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IRQ counter</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;IQL1 &nbsp; &nbsp; &nbsp; &nbsp;uint32 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IRQ latch</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;IRQA &nbsp; &nbsp; &nbsp; &nbsp;uint8 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IRQ on/off.</p>
<p><br/></p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;WAVE &nbsp; &nbsp; &nbsp; &nbsp;uint8[64] &nbsp; &nbsp; &nbsp; &nbsp;Carrier waveform data.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;MWAV &nbsp; &nbsp; &nbsp; &nbsp;uint8[32] &nbsp; &nbsp; &nbsp; &nbsp;Modulator waveform data.</p>
<p> &nbsp; &nbsp; &nbsp; &nbsp;AMPL &nbsp; &nbsp; &nbsp; &nbsp;uint8[2] &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Amplitude data.</p>
<p><br/></p>
<p></p>
<p class="rvps2"><span class="rvts13">Created with the Personal Edition of HelpNDoc: </span><a class="rvts14" href="http://www.helpndoc.com/help-authoring-tool">Create HTML Help, DOC, PDF and print manuals from 1 single source</a></p>
</div>
<div id="topic_footer">
<div id="topic_footer_content">
2016</div>
</div>
</body>
<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 &amp; 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 &amp; 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">&nbsp;Updated: &nbsp;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. &nbsp;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"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">(u)int16 - (un)signed 16 bit variable</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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. &nbsp;The first three bytes contain</span></p>
<p class="rvps2"><span class="rvts6">the string "FCS". &nbsp;The next byte contains the version of FCE Ultra that saved</span></p>
<p class="rvps2"><span class="rvts6">this save state. &nbsp;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. &nbsp;If oldversion is set to 255, the 32-bit version</span></p>
<p class="rvps2"><span class="rvts6">field will be used. &nbsp;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. &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">FCS &lt;uint8 oldversion&gt; &lt;uint32 totalsize&gt; &lt;uint32 version&gt;</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. &nbsp;The first byte defines what&nbsp;</span></p>
<p class="rvps2"><span class="rvts6">section it &nbsp;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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">&lt;uint8 section&gt; &lt;uint32 size&gt;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">1</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">-</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">"CPU"</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">2</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">-</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">"CPUC"</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">3</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">-</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">"PPU"</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">4</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">-</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">"CTLR"</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">5</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">-</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">"SND"</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">16</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">-</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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. &nbsp;They contain the actual</span></p>
<p class="rvps2"><span class="rvts6">state data. &nbsp;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&nbsp;</span></p>
<p class="rvps2"><span class="rvts6">in the chunk:</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">&lt;uint8 description[4]&gt; &lt;uint32 size&gt;</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6">The name is a four-byte string. &nbsp;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. &nbsp;It's just a list of what CAN</span></p>
<p class="rvps2"><span class="rvts6">be in a section chunk. &nbsp;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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Name:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Type:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Description:</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PC</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint16</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Program Counter</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">A</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Accumulator</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">P</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Processor status register</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">X</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">X register</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Y</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Y register</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">S</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Stack pointer</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">RAM</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[0x800]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Name:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Type:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">JAMM</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">IRQL</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">ICoa</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">int32</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Temporary cycle counter</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">ICou</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">int32</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Name:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Type:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">NTAR</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[0x800]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">2 KB of name/attribute table RAM</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PRAM</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[32]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">32 bytes of palette index RAM</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">SPRA</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[0x100]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">256 bytes of sprite RAM</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PPU</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[4]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">status register, and the last value written to</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">$2003.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">XOFF</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Tile X-offset.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">VTOG</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Toggle used by $2005 and $2006.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">RADD</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint16</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PPU Address Register(address written to/read from</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">when $2007 is accessed).</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">TADD</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint16</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PPU Address Register</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">VBUF</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">VRAM Read Buffer</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PGEN</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PPU "general" latch. &nbsp;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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Name:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Type:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">J1RB</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">J2RB</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">NREG</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint16</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Noise LFSR.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">P17</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Last byte written to $4017.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PBIN</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">DMC bit index.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PAIN</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint32</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">DMC address index(from $8000).</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PSIN</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint32</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">DMC length counter(how many bytes left&nbsp;</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">&lt;to be finished&gt;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Name:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Type:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">WRAM</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[0x2000]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">8KB of WRAM at $6000-$7fff</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">MEXR</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[0x8000]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">(very emulator specific)</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">CHRR</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[0x2000]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">EXNR</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[0x800]&nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Extra 2KB of name/attribute table RAM.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">MPBY</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[32]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">(very emulator specific)</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">MIRR</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Current mirroring:</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">0 = "Horizontal"</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">1 = "Vertical"</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">$10 = Mirror from $2000</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">$11 = Mirror from $2400</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">IRQC</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint32</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Generic IRQ counter</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">IQL1</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint32</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Generic IRQ latch</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">IQL2</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint32</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Generic IRQ latch</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">IRQA</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Generic IRQ on/off register.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">PBL</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[4]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">CBL</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[8]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Name:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Type:</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Description:</span></p>
<p class="rvps2"><span class="rvts6"><br/></span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">DDT&lt;x&gt; &nbsp;uint8[65500] &nbsp; &nbsp;Disk data for side x(0-3).</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">FDSR</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[0x8000]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">32 KB of work RAM</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">CHRR</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[0x2000]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">8 KB of CHR RAM</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">IRQC</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint32</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">IRQ counter</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">IQL1</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint32</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">IRQ latch</span></p>
<p class="rvps2"><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">IRQA</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">WAVE</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[64]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Carrier waveform data.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">MWAV</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[32]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">Modulator waveform data.</span></p>
<p class="rvps2"><span class="rvts6"></span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">AMPL</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6">uint8[2]</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</span><span class="rvts6"> &nbsp; &nbsp; &nbsp; &nbsp;</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">&times;</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>

Some files were not shown because too many files have changed in this diff Show More