388 lines
No EOL
18 KiB
HTML
388 lines
No EOL
18 KiB
HTML
<!doctype html><html lang=en class="js csstransforms3d">
|
|
<head>
|
|
<meta charset=utf-8>
|
|
<meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
|
|
<meta name=generator content="Hugo 0.89.4">
|
|
<meta name=description content>
|
|
<link rel="shortcut icon" href=../images/favicon.png type=image/x-icon>
|
|
<link rel=icon href=../images/favicon.png type=image/x-icon>
|
|
<title>PPU Viewer :: Mesen Documentation</title>
|
|
<link href=../css/nucleus.css?1637878444 rel=stylesheet>
|
|
<link href=../css/font-awesome.min.css?1637878444 rel=stylesheet>
|
|
<link href=../css/hybrid.css?1637878444 rel=stylesheet>
|
|
<link href=../css/featherlight.min.css?1637878444 rel=stylesheet>
|
|
<link href=../css/perfect-scrollbar.min.css?1637878444 rel=stylesheet>
|
|
<link href=../css/horsey.css?1637878444 rel=stylesheet>
|
|
<link href=../css/theme.css?1637878444 rel=stylesheet>
|
|
<link href=../css/hugo-theme.css?1637878444 rel=stylesheet>
|
|
<link href=../css/custom.css?1637878444 rel=stylesheet>
|
|
<link href=../css/theme-green.css?1637878444 rel=stylesheet>
|
|
<script src=../js/jquery-2.x.min.js?1637878444></script>
|
|
<style type=text/css>:root #header+#content>#left>#rlblock_left{display:none!important}</style>
|
|
</head>
|
|
<body data-url=../debugging/ppuviewer.html>
|
|
<nav id=sidebar>
|
|
<div id=header-wrapper>
|
|
<div id=header>
|
|
<a id=logo href=../index.html>
|
|
<img src=../images/MesenIcon.png>
|
|
</a>
|
|
</div>
|
|
<div class=searchbox>
|
|
<label for=search-by><i class="fa fa-search"></i></label>
|
|
<input data-search-input id=search-by type=text placeholder=Search...>
|
|
<span data-search-clear><i class="fa fa-close"></i></span>
|
|
</div>
|
|
<script type=text/javascript src=../js/lunr.min.js?1637878444></script>
|
|
<script type=text/javascript src=../js/horsey.js?1637878444></script>
|
|
<script type=text/javascript>var baseurl=""</script>
|
|
<script type=text/javascript src=../js/searchjson.js?1637878444></script>
|
|
<script type=text/javascript src=../js/search.js?1637878444></script>
|
|
</div>
|
|
<div class=highlightable>
|
|
<ul class=topics>
|
|
<li data-nav-id=/gettingstarted.html title="Getting Started" class=dd-item>
|
|
<a href=../gettingstarted.html>
|
|
Getting Started
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/configuration.html title=Configuration class=dd-item>
|
|
<a href=../configuration.html>
|
|
Configuration
|
|
</a>
|
|
<ul>
|
|
<li data-nav-id=/configuration/audio.html title="Audio Options" class=dd-item>
|
|
<a href=../configuration/audio.html>
|
|
Audio Options
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/configuration/input.html title="Input Options" class=dd-item>
|
|
<a href=../configuration/input.html>
|
|
Input Options
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/configuration/video.html title="Video Options" class=dd-item>
|
|
<a href=../configuration/video.html>
|
|
Video Options
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/configuration/emulation.html title="Emulation Options" class=dd-item>
|
|
<a href=../configuration/emulation.html>
|
|
Emulation Options
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/configuration/preferences.html title=Preferences class=dd-item>
|
|
<a href=../configuration/preferences.html>
|
|
Preferences
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li data-nav-id=/tools.html title=Tools class=dd-item>
|
|
<a href=../tools.html>
|
|
Tools
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/debugging.html title="Debugging Tools" class="dd-item
|
|
parent">
|
|
<a href=../debugging.html>
|
|
Debugging Tools
|
|
</a>
|
|
<ul>
|
|
<li data-nav-id=/debugging/debugger.html title=Debugger class=dd-item>
|
|
<a href=../debugging/debugger.html>
|
|
Debugger
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/debugging/apuviewer.html title="APU Viewer" class=dd-item>
|
|
<a href=../debugging/apuviewer.html>
|
|
APU Viewer
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/debugging/assembler.html title=Assembler class=dd-item>
|
|
<a href=../debugging/assembler.html>
|
|
Assembler
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/debugging/eventviewer.html title="Event Viewer" class=dd-item>
|
|
<a href=../debugging/eventviewer.html>
|
|
Event Viewer
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/debugging/memorytools.html title="Memory Tools" class=dd-item>
|
|
<a href=../debugging/memorytools.html>
|
|
Memory Tools
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/debugging/performanceprofiler.html title="Performance Profiler" class=dd-item>
|
|
<a href=../debugging/performanceprofiler.html>
|
|
Performance Profiler
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/debugging/ppuviewer.html title="PPU Viewer" class="dd-item active">
|
|
<a href=../debugging/ppuviewer.html>
|
|
PPU Viewer
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/debugging/scriptwindow.html title="Script Window" class=dd-item>
|
|
<a href=../debugging/scriptwindow.html>
|
|
Script Window
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/debugging/texthooker.html title="Text Hooker" class=dd-item>
|
|
<a href=../debugging/texthooker.html>
|
|
Text Hooker
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/debugging/tracelogger.html title="Trace Logger" class=dd-item>
|
|
<a href=../debugging/tracelogger.html>
|
|
Trace Logger
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/debugging/debuggerintegration.html title="Integration with compilers" class=dd-item>
|
|
<a href=../debugging/debuggerintegration.html>
|
|
Integration with compilers
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li data-nav-id=/hdpacks.html title="HD Packs" class=dd-item>
|
|
<a href=../hdpacks.html>
|
|
HD Packs
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/apireference.html title="Lua API reference" class=dd-item>
|
|
<a href=../apireference.html>
|
|
Lua API reference
|
|
</a>
|
|
<ul>
|
|
<li data-nav-id=/apireference/changelog.html title=Changelog class=dd-item>
|
|
<a href=../apireference/changelog.html>
|
|
Changelog
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/apireference/callbacks.html title=Callbacks class=dd-item>
|
|
<a href=../apireference/callbacks.html>
|
|
Callbacks
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/apireference/drawing.html title=Drawing class=dd-item>
|
|
<a href=../apireference/drawing.html>
|
|
Drawing
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/apireference/emulation.html title=Emulation class=dd-item>
|
|
<a href=../apireference/emulation.html>
|
|
Emulation
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/apireference/input.html title=Input class=dd-item>
|
|
<a href=../apireference/input.html>
|
|
Input
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/apireference/logging.html title=Logging class=dd-item>
|
|
<a href=../apireference/logging.html>
|
|
Logging
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/apireference/memoryaccess.html title="Memory Access" class=dd-item>
|
|
<a href=../apireference/memoryaccess.html>
|
|
Memory Access
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/apireference/misc.html title=Miscellaneous class=dd-item>
|
|
<a href=../apireference/misc.html>
|
|
Miscellaneous
|
|
</a>
|
|
</li>
|
|
<li data-nav-id=/apireference/enums.html title=Enums class=dd-item>
|
|
<a href=../apireference/enums.html>
|
|
Enums
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<section id=shortcuts>
|
|
<h3>More</h3>
|
|
<ul>
|
|
<li role>
|
|
<a class=padding href=https://www.mesen.ca><img style=vertical-align:middle src=../images/favicon.png> <span style=display:inline;vertical-align:middle>Website</span></a>
|
|
</li>
|
|
<li role>
|
|
<a class=padding href=https://github.com/SourMesen/Mesen><i class="fa fa-github"></i> GitHub</a>
|
|
</li>
|
|
</ul>
|
|
</section>
|
|
<div id=menuspacer></div>
|
|
<section id=footer>
|
|
<div class=menuFooter>
|
|
<div class=donateButton><a href=https://www.mesen.ca/Donate.php><img src=../images/patreon.png alt="Become a Patron!" width=66% height=66%></a></div>
|
|
<div class=donateButton><a class=bmc-button target=_blank href=https://www.mesen.ca/BuyCoffee.php><img src=../images/BMC-btn-logo.svg alt=Donate><span style=margin-left:5px>Donate</span></a></div>
|
|
Version: <b>0.9.9</b><br>
|
|
Last Updated: <b>2021-11-25</b>
|
|
</div>
|
|
</section>
|
|
</div>
|
|
</nav>
|
|
<section id=body>
|
|
<div id=overlay></div>
|
|
<div class="padding highlightable sticky-parent">
|
|
<div class=sticky-spacer>
|
|
<div id=top-bar>
|
|
<div id=breadcrumbs itemscope itemtype=http://data-vocabulary.org/Breadcrumb>
|
|
<span id=sidebar-toggle-span>
|
|
<a href=# id=sidebar-toggle data-sidebar-toggle>
|
|
<i class="fa fa-bars"></i>
|
|
</a>
|
|
</span>
|
|
<span id=toc-menu><i class="fa fa-list-alt"></i></span>
|
|
<span class=links>
|
|
<a href=../>Home</a> > <a href=../debugging.html>Debugging Tools</a> > PPU Viewer
|
|
</span>
|
|
</div>
|
|
<div class=progress>
|
|
<div class=wrapper>
|
|
<nav id=TableOfContents>
|
|
<ul>
|
|
<li><a href=#nametable-viewer>Nametable Viewer</a>
|
|
<ul>
|
|
<li><a href=#update-highlighting>Update Highlighting</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href=#chr-viewereditor>CHR Viewer/Editor</a>
|
|
<ul>
|
|
<li><a href=#display-options>Display Options</a></li>
|
|
<li><a href=#editing-tiles>Editing Tiles</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href=#sprite-viewer>Sprite Viewer</a></li>
|
|
<li><a href=#palette-viewereditor>Palette Viewer/Editor</a></li>
|
|
<li><a href=#compact-view>Compact View</a></li>
|
|
<li><a href=#zoomed-view>Zoomed View</a></li>
|
|
</ul>
|
|
</nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id=body-inner>
|
|
<h1>PPU Viewer</h1>
|
|
<div class=toc>
|
|
<div><nav id=TableOfContents>
|
|
<ul>
|
|
<li><a href=#nametable-viewer>Nametable Viewer</a>
|
|
<ul>
|
|
<li><a href=#update-highlighting>Update Highlighting</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href=#chr-viewereditor>CHR Viewer/Editor</a>
|
|
<ul>
|
|
<li><a href=#display-options>Display Options</a></li>
|
|
<li><a href=#editing-tiles>Editing Tiles</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href=#sprite-viewer>Sprite Viewer</a></li>
|
|
<li><a href=#palette-viewereditor>Palette Viewer/Editor</a></li>
|
|
<li><a href=#compact-view>Compact View</a></li>
|
|
<li><a href=#zoomed-view>Zoomed View</a></li>
|
|
</ul>
|
|
</nav></div>
|
|
</div>
|
|
<p>The PPU Viewer is a collection of tools allowing you to view/edit the current state of various parts of the PPU’s memory: nametable RAM, CHR ROM/RAM, palette RAM and OAM (sprite) RAM.</p>
|
|
<p>All tabs share some common settings:</p>
|
|
<ul>
|
|
<li><strong>Auto-refresh</strong>: Enabled by default, this makes the PPU viewer refresh at a rate of 15 FPS.</li>
|
|
<li><strong>Auto-refresh speed</strong>: Configures at what speed the PPU viewer will refresh itself (15/30/60 FPS)</li>
|
|
<li><strong>Show information overlay</strong>: When enabled, a mouse-over overlay is shown in the nametable/CHR/sprite viewers with information on the tile/sprite below the mouse cursor.</li>
|
|
<li><strong>When emulation is running, show PPU data at scanline [y] and cycle <input checked disabled type=checkbox> </strong>: When using the auto-refresh option, this allows you to control at which point in a frame (cycle & scanline) the data is refreshed while the emulation is running. This is useful for games that perform CHR bank switching in the middle of a frame, for example.</li>
|
|
</ul>
|
|
<h2 id=nametable-viewer>Nametable Viewer</h2>
|
|
<p>The nametable viewer displays the contents of all 4 nametables (PPU addresses $2000 to $2FFF).<br>
|
|
Mouve-over a tile to display that tile’s information on the right.
|
|
<strong>Double-click</strong> on a tile in the nametable viewer to view/edit it in the CHR Viewer.</p>
|
|
<p>Additionally, you can <strong>right-click</strong> on a tile to get more options:</p>
|
|
<ul>
|
|
<li><strong>Edit in Memory Viewer</strong>: Opens up the memory tools at this specific tile’s location in nametable memory.</li>
|
|
<li><strong>View in CHR Viewer</strong>: Switches to the CHR Viewer and selects the tile (same as double-clicking)</li>
|
|
<li><strong>Copy Tile (HD Pack format)</strong>: Copies the tile’s information (text) to the clipboard (for use with <a href=../hdpacks.html>HD Packs</a>).</li>
|
|
<li><strong>Copy image to clipboard</strong>: Copies the nametable to the clipboard.</li>
|
|
<li><strong>Export image to PNG</strong>: Exports the current nametable image to a PNG file.</li>
|
|
</ul>
|
|
<p>There are also a number of display options:</p>
|
|
<ul>
|
|
<li><strong>Show PPU Scroll Overlay</strong>: Shows a blue rectangular overlay showing the current scroll position of the screen.</li>
|
|
<li><strong>Show attribute colors only</strong>: When enabled, the viewer will show the 4 colors available in each tile, rather than the actual contents of the nametables. This can be useful when trying to debug attribute-related coloring issues.</li>
|
|
<li><strong>Show Tile Grid</strong>: Displays a 8x8 pixels red grid.</li>
|
|
<li><strong>Show Attribute Grid</strong>: Displays a 16x16 pixels blue grid.</li>
|
|
<li><strong>Use Grayscale Palette</strong>: Forces the nametables to be shown in a 4-color grayscale palette.</li>
|
|
<li><strong>Highlight tile selected in CHR viewer</strong>: When enabled, click on a tile in the CHR viewer to select it, all occurrences of that tile will then be marked by a red rectangle in the nametable viewer.</li>
|
|
</ul>
|
|
<h3 id=update-highlighting>Update Highlighting</h3>
|
|
<p>The nametable viewer can display nametable (tiles and attributes) updates by highlighting the tiles affected by the updates.</p>
|
|
<ul>
|
|
<li><strong>Tile Updates</strong>: Displays a 8x8 red square overlay over tiles that have changed since the last frame.</li>
|
|
<li><strong>Attribute Updates</strong>: Displays a 16x16 yellow square overlay over attributes that have changed since the last frame.</li>
|
|
<li><strong>Ignore writes that do not alter data</strong>: By default, all memory locations written to during the last frame will be highlighted. By enabling this option, only memory locations that have changed value will be highlighted.</li>
|
|
</ul>
|
|
<h2 id=chr-viewereditor>CHR Viewer/Editor</h2>
|
|
<p>The CHR Viewer tab displays up to 2 4kb banks of CHR data at once. It can display any portion of CHR RAM/ROM, even banks that are not currently selected.<br>
|
|
It also doubles up as a very simple graphic editor.</p>
|
|
<p>You can <strong>right-click</strong> on a tile to copy the tile’s information (based on the currently selected palette) to the clipboard (for use with <a href=../hdpacks.html>HD Packs</a>).</p>
|
|
<h3 id=display-options>Display Options</h3>
|
|
<ul>
|
|
<li><strong>CHR Selection</strong>: Select which portion of CHR memory to display in the viewer - by default, the portions of CHR memory mapped to the $0000-$1FFF range in PPU memory are shown.</li>
|
|
<li><strong>Palette Selection</strong>: Selects which palette to use to render the tiles - the first 4 palettes are for tiles, the last 4 palettes are for sprites. There is also a 9th palette named “Grayscale” which forces the CHR viewer to display tiles in a 4-color grayscale palette.</li>
|
|
<li><strong>Highlight</strong>: This option allows tiles to be highlighted/dimmed based on the CDL file’s current data. This makes it possible to highlight/dim tiles that have never been drawn by the PPU, or vice versa. <em>This option is only available for CHR ROM games</em>.</li>
|
|
<li><strong>Display as 16x8 sprites</strong>: When enabled, changes the display order of the tiles to make it easier to visualize 16x8 sprites.</li>
|
|
<li><strong>Display tiles using their last known palette</strong>: When enabled, any tile that has appeared in nametable memory since the debugger was opened will be shown using their last known palette (this overrides the palette selection dropdown for those tiles)</li>
|
|
<li><strong>Show single color tiles using grayscale palette</strong>: When enabled, any tile that contains a single color will be displayed using the grayscale palette instead (this overrides the palette selection dropdown for those tiles)</li>
|
|
</ul>
|
|
<h3 id=editing-tiles>Editing Tiles</h3>
|
|
<p>To edit a tile, first click on the tile you want to edit in the left-side of the window. This will select the tile and highlight it with a transparent square.</p>
|
|
<p>You can select the color you want to use by clicking on the <code>Color Picker</code>. You can also press keys 1 to 4 on your keyboard to quickly switch between the four colors.</p>
|
|
<p>With a tile selected, move your mouse to the tile preview above the <code>Color Picker</code> and <strong>click+drag</strong> to start drawing. <strong>Right-click</strong> can be used to draw as well – it always draws color #0.</p>
|
|
<h2 id=sprite-viewer>Sprite Viewer</h2>
|
|
<p>The Sprite Viewer displays the contents of OAM RAM. Mouve-over a sprite to display that sprite’s information on the right.</p>
|
|
<p>The <code>Screen Preview</code> displays all sprites as they will be shown on the screen, based on the current OAM data.</p>
|
|
<p>Like the nametable viewer, <strong>double-click</strong> on a tile to view/edit it in the CHR Viewer – this works in the <code>Screen Preview</code> as well.</p>
|
|
<p>Additionally, you can <strong>right-click</strong> on a tile to copy the tile’s information to the clipboard (for use with <a href=../hdpacks.html>HD Packs</a>).</p>
|
|
<p><strong>Display outline around all sprites in preview</strong>: When enabled, all the sprites shown in the preview screen will be highlighted by a white rectangle.</p>
|
|
<h2 id=palette-viewereditor>Palette Viewer/Editor</h2>
|
|
<p>The Palette Viewer displays basic information about the current state of palette RAM.<br>
|
|
It shows which colors are configured in each of the 8 available palettes.<br>
|
|
You can click on any color to select another color for that slot.</p>
|
|
<h2 id=compact-view>Compact View</h2>
|
|
<p>All PPU viewer tabs can be toggled to a standalone compact window, this can be done by pressing on the green arrow at the top right of the window. There is also a customizable keyboard shortcut for this (Default: <code>Ctrl+Q</code>) and the windows can be opened in compact mode directly using keyboard shortcuts or the <code>PPU Viewer (Compact)</code> menu in the <code>Tools</code> or <code>Debug</code> menus.</p>
|
|
<p>The compact viewers save their own position independently from the regular full-sized PPU window.</p>
|
|
<h2 id=zoomed-view>Zoomed View</h2>
|
|
<p>In addition to the compact view, it’s also possible to double the size of the viewers by clicking on the <code>2x</code> button next to the compact view button at the top right of the window. There is a shortcut for this as well (Default: <code>Ctrl+W</code>).</p>
|
|
<footer class=footline>
|
|
</footer>
|
|
</div>
|
|
</div>
|
|
<div id=navigation>
|
|
<a class="nav nav-prev" href=../debugging/performanceprofiler.html title="Performance Profiler"> <i class="fa fa-chevron-left"></i></a>
|
|
<a class="nav nav-next" href=../debugging/scriptwindow.html title="Script Window" style=margin-right:0><i class="fa fa-chevron-right"></i></a>
|
|
</div>
|
|
</section>
|
|
<div style=left:-1000px;overflow:scroll;position:absolute;top:-1000px;border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px>
|
|
<div style=border:none;box-sizing:content-box;height:200px;margin:0;padding:0;width:200px></div>
|
|
</div>
|
|
<script src=../js/clipboard.min.js?1637878444></script>
|
|
<script src=../js/perfect-scrollbar.min.js?1637878444></script>
|
|
<script src=../js/perfect-scrollbar.jquery.min.js?1637878444></script>
|
|
<script src=../js/jquery.sticky-kit.min.js?1637878444></script>
|
|
<script src=../js/featherlight.min.js?1637878444></script>
|
|
<script src=../js/html5shiv-printshiv.min.js?1637878444></script>
|
|
<script src=../js/highlight.pack.js?1637878444></script>
|
|
<script>hljs.initHighlightingOnLoad()</script>
|
|
<script src=../js/modernizr.custom.71422.js?1637878444></script>
|
|
<script src=../js/learn.js?1637878444></script>
|
|
<script src=../js/hugo-learn.js?1637878444></script>
|
|
<link href=../mermaid/mermaid.css?1637878444 type=text/css rel=stylesheet>
|
|
<script src=../mermaid/mermaid.js?1637878444></script>
|
|
<script>mermaid.initialize({startOnLoad:!0})</script>
|
|
</body>
|
|
</html> |