git.y1.nz

gbdk-2020

GameBoy Development Kit
download: https://git.y1.nz/archives/gbdk.tar.gz
README | Files | Log | Refs | LICENSE

docs/api/nes_8h.html

      1 <!-- HTML header for doxygen 1.8.14-->
      2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      3 <html xmlns="http://www.w3.org/1999/xhtml">
      4 <head>
      5 <meta http-equiv="cache-control" content="max-age=86400"/>
      6 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
      7 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
      8 <meta name="generator" content="Doxygen 1.9.2"/>
      9 <meta name="viewport" content="width=device-width, initial-scale=1"/>
     10 <title>GBDK 2020 Docs: gbdk-lib/include/nes/nes.h File Reference</title>
     11 <link href="tabs.css" rel="stylesheet" type="text/css"/>
     12 <script type="text/javascript" src="jquery.js"></script>
     13 <script type="text/javascript" src="dynsections.js"></script>
     14 <link href="navtree.css" rel="stylesheet" type="text/css"/>
     15 <script type="text/javascript" src="resize.js"></script>
     16 <script type="text/javascript" src="navtreedata.js"></script>
     17 <script type="text/javascript" src="navtree.js"></script>
     18 <link href="search/search.css" rel="stylesheet" type="text/css"/>
     19 <script type="text/javascript" src="search/searchdata.js"></script>
     20 <script type="text/javascript" src="search/search.js"></script>
     21 <link href="doxygen.css" rel="stylesheet" type="text/css" />
     22 <link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
     23 <link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
     24 <link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
     25 <!-- BEGIN: doxygen-awesome-css -->
     26         <script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
     27         <script type="text/javascript">
     28             DoxygenAwesomeDarkModeToggle.init()
     29         </script>
     30         <script type="text/javascript" src="doxygen-awesome-paragraph-link.js"></script>
     31         <script type="text/javascript">
     32             DoxygenAwesomeParagraphLink.init()
     33         </script>        
     34 <!-- END: doxygen-awesome-css -->
     35 </head>
     36 <body>
     37 <div id="top"><!-- do not remove this div, it is closed by doxygen! -->
     38 <div id="titlearea">
     39 <table cellspacing="0" cellpadding="0">
     40  <tbody>
     41  <tr style="height: 56px;">
     42   <td id="projectalign" style="padding-left: 0.5em;">
     43    <div id="projectname">GBDK 2020 Docs
     44    &#160;<span id="projectnumber">4.5.0</span>
     45    </div>
     46    <div id="projectbrief">API Documentation for GBDK 2020</div>
     47   </td>
     48  </tr>
     49  </tbody>
     50 </table>
     51 </div>
     52 <!-- end header part -->
     53 <!-- Generated by Doxygen 1.9.2 -->
     54 <script type="text/javascript">
     55 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
     56 var searchBox = new SearchBox("searchBox", "search",'Search','.html');
     57 /* @license-end */
     58 </script>
     59 <script type="text/javascript" src="menudata.js"></script>
     60 <script type="text/javascript" src="menu.js"></script>
     61 <script type="text/javascript">
     62 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
     63 $(function() {
     64   initMenu('',true,false,'search.php','Search');
     65   $(document).ready(function() { init_search(); });
     66 });
     67 /* @license-end */
     68 </script>
     69 <div id="main-nav"></div>
     70 </div><!-- top -->
     71 <div id="side-nav" class="ui-resizable side-nav-resizable">
     72   <div id="nav-tree">
     73     <div id="nav-tree-contents">
     74       <div id="nav-sync" class="sync"></div>
     75     </div>
     76   </div>
     77   <div id="splitbar" style="-moz-user-select:none;" 
     78        class="ui-resizable-handle">
     79   </div>
     80 </div>
     81 <script type="text/javascript">
     82 /* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
     83 $(document).ready(function(){initNavTree('nes_8h.html',''); initResizable(); });
     84 /* @license-end */
     85 </script>
     86 <div id="doc-content">
     87 <!-- window showing the filter options -->
     88 <div id="MSearchSelectWindow"
     89      onmouseover="return searchBox.OnSearchSelectShow()"
     90      onmouseout="return searchBox.OnSearchSelectHide()"
     91      onkeydown="return searchBox.OnSearchSelectKey(event)">
     92 </div>
     93 
     94 <!-- iframe showing the search results (closed by default) -->
     95 <div id="MSearchResultsWindow">
     96 <iframe src="javascript:void(0)" frameborder="0" 
     97         name="MSearchResults" id="MSearchResults">
     98 </iframe>
     99 </div>
    100 
    101 <div class="header">
    102   <div class="summary">
    103 <a href="#nested-classes">Data Structures</a> &#124;
    104 <a href="#define-members">Macros</a> &#124;
    105 <a href="#typedef-members">Typedefs</a> &#124;
    106 <a href="#func-members">Functions</a> &#124;
    107 <a href="#var-members">Variables</a>  </div>
    108   <div class="headertitle"><div class="title">nes.h File Reference</div></div>
    109 </div><!--header-->
    110 <div class="contents">
    111 <div class="textblock"><code>#include &lt;types.h&gt;</code><br />
    112 <code>#include &lt;<a class="el" href="stdint_8h_source.html">stdint.h</a>&gt;</code><br />
    113 <code>#include &lt;<a class="el" href="version_8h_source.html">gbdk/version.h</a>&gt;</code><br />
    114 <code>#include &lt;<a class="el" href="nes_2hardware_8h_source.html">nes/hardware.h</a>&gt;</code><br />
    115 <code>#include &lt;<a class="el" href="rgb__to__nes__macro_8h_source.html">nes/rgb_to_nes_macro.h</a>&gt;</code><br />
    116 </div>
    117 <p><a href="nes_8h_source.html">Go to the source code of this file.</a></p>
    118 <table class="memberdecls">
    119 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
    120 Data Structures</h2></td></tr>
    121 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structjoypads__t.html">joypads_t</a></td></tr>
    122 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
    123 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_o_a_m__item__t.html">OAM_item_t</a></td></tr>
    124 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
    125 </table><table class="memberdecls">
    126 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
    127 Macros</h2></td></tr>
    128 <tr class="memitem:NINTENDO_NES"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#NINTENDO_NES">NINTENDO_NES</a></td></tr>
    129 <tr class="separator:NINTENDO_NES"><td class="memSeparator" colspan="2">&#160;</td></tr>
    130 <tr class="memitem:SYSTEM_BITS_NTSC"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SYSTEM_BITS_NTSC">SYSTEM_BITS_NTSC</a>&#160;&#160;&#160;0x00</td></tr>
    131 <tr class="separator:SYSTEM_BITS_NTSC"><td class="memSeparator" colspan="2">&#160;</td></tr>
    132 <tr class="memitem:SYSTEM_BITS_PAL"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SYSTEM_BITS_PAL">SYSTEM_BITS_PAL</a>&#160;&#160;&#160;0x40</td></tr>
    133 <tr class="separator:SYSTEM_BITS_PAL"><td class="memSeparator" colspan="2">&#160;</td></tr>
    134 <tr class="memitem:SYSTEM_BITS_DENDY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SYSTEM_BITS_DENDY">SYSTEM_BITS_DENDY</a>&#160;&#160;&#160;0x80</td></tr>
    135 <tr class="separator:SYSTEM_BITS_DENDY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    136 <tr class="memitem:SYSTEM_60HZ"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SYSTEM_60HZ">SYSTEM_60HZ</a>&#160;&#160;&#160;0x00</td></tr>
    137 <tr class="separator:SYSTEM_60HZ"><td class="memSeparator" colspan="2">&#160;</td></tr>
    138 <tr class="memitem:SYSTEM_50HZ"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SYSTEM_50HZ">SYSTEM_50HZ</a>&#160;&#160;&#160;0x01</td></tr>
    139 <tr class="separator:SYSTEM_50HZ"><td class="memSeparator" colspan="2">&#160;</td></tr>
    140 <tr class="memitem:TIMER_VBLANK_PARITY_MODE_SYSTEM_"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#TIMER_VBLANK_PARITY_MODE_SYSTEM_">TIMER_VBLANK_PARITY_MODE_SYSTEM_60HZ</a>&#160;&#160;&#160;0x78</td></tr>
    141 <tr class="separator:TIMER_VBLANK_PARITY_MODE_SYSTEM_"><td class="memSeparator" colspan="2">&#160;</td></tr>
    142 <tr class="memitem:TIMER_VBLANK_PARITY_MODE_SYSTEM_"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#TIMER_VBLANK_PARITY_MODE_SYSTEM_">TIMER_VBLANK_PARITY_MODE_SYSTEM_50HZ</a>&#160;&#160;&#160;0x5D</td></tr>
    143 <tr class="separator:TIMER_VBLANK_PARITY_MODE_SYSTEM_"><td class="memSeparator" colspan="2">&#160;</td></tr>
    144 <tr class="memitem:RGB"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB">RGB</a>(r,  g,  <a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;<a class="el" href="rgb__to__nes__macro_8h.html#RGB_TO_NES">RGB_TO_NES</a>(((r) | ((g) &lt;&lt; 2) | ((<a class="el" href="sms_8h.html#b">b</a>) &lt;&lt; 4)))</td></tr>
    145 <tr class="separator:RGB"><td class="memSeparator" colspan="2">&#160;</td></tr>
    146 <tr class="memitem:RGB8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB8">RGB8</a>(r,  g,  <a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;<a class="el" href="rgb__to__nes__macro_8h.html#RGB_TO_NES">RGB_TO_NES</a>((((r) &gt;&gt; 6) | (((g) &gt;&gt; 6) &lt;&lt; 2) | (((<a class="el" href="sms_8h.html#b">b</a>) &gt;&gt; 6) &lt;&lt; 4)))</td></tr>
    147 <tr class="separator:RGB8"><td class="memSeparator" colspan="2">&#160;</td></tr>
    148 <tr class="memitem:RGBHTML"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGBHTML">RGBHTML</a>(RGB24bit)&#160;&#160;&#160;<a class="el" href="rgb__to__nes__macro_8h.html#RGB_TO_NES">RGB_TO_NES</a>((((RGB24bit) &gt;&gt; 22) | ((((RGB24bit) &amp; 0xFFFF) &gt;&gt; 14) &lt;&lt; 2) | ((((RGB24bit) &amp; 0xFF) &gt;&gt; 6) &lt;&lt; 4)))</td></tr>
    149 <tr class="separator:RGBHTML"><td class="memSeparator" colspan="2">&#160;</td></tr>
    150 <tr class="memitem:RGB_RED"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_RED">RGB_RED</a>&#160;&#160;&#160;0x16</td></tr>
    151 <tr class="separator:RGB_RED"><td class="memSeparator" colspan="2">&#160;</td></tr>
    152 <tr class="memitem:RGB_DARKRED"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_DARKRED">RGB_DARKRED</a>&#160;&#160;&#160;0x06</td></tr>
    153 <tr class="separator:RGB_DARKRED"><td class="memSeparator" colspan="2">&#160;</td></tr>
    154 <tr class="memitem:RGB_GREEN"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_GREEN">RGB_GREEN</a>&#160;&#160;&#160;0x2A</td></tr>
    155 <tr class="separator:RGB_GREEN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    156 <tr class="memitem:RGB_DARKGREEN"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_DARKGREEN">RGB_DARKGREEN</a>&#160;&#160;&#160;0x1A</td></tr>
    157 <tr class="separator:RGB_DARKGREEN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    158 <tr class="memitem:RGB_BLUE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_BLUE">RGB_BLUE</a>&#160;&#160;&#160;0x12</td></tr>
    159 <tr class="separator:RGB_BLUE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    160 <tr class="memitem:RGB_DARKBLUE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_DARKBLUE">RGB_DARKBLUE</a>&#160;&#160;&#160;0x02</td></tr>
    161 <tr class="separator:RGB_DARKBLUE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    162 <tr class="memitem:RGB_YELLOW"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_YELLOW">RGB_YELLOW</a>&#160;&#160;&#160;0x28</td></tr>
    163 <tr class="separator:RGB_YELLOW"><td class="memSeparator" colspan="2">&#160;</td></tr>
    164 <tr class="memitem:RGB_DARKYELLOW"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_DARKYELLOW">RGB_DARKYELLOW</a>&#160;&#160;&#160;0x18</td></tr>
    165 <tr class="separator:RGB_DARKYELLOW"><td class="memSeparator" colspan="2">&#160;</td></tr>
    166 <tr class="memitem:RGB_CYAN"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_CYAN">RGB_CYAN</a>&#160;&#160;&#160;0x2C</td></tr>
    167 <tr class="separator:RGB_CYAN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    168 <tr class="memitem:RGB_AQUA"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_AQUA">RGB_AQUA</a>&#160;&#160;&#160;0x1C</td></tr>
    169 <tr class="separator:RGB_AQUA"><td class="memSeparator" colspan="2">&#160;</td></tr>
    170 <tr class="memitem:RGB_PINK"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_PINK">RGB_PINK</a>&#160;&#160;&#160;0x24</td></tr>
    171 <tr class="separator:RGB_PINK"><td class="memSeparator" colspan="2">&#160;</td></tr>
    172 <tr class="memitem:RGB_PURPLE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_PURPLE">RGB_PURPLE</a>&#160;&#160;&#160;0x14</td></tr>
    173 <tr class="separator:RGB_PURPLE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    174 <tr class="memitem:RGB_BLACK"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_BLACK">RGB_BLACK</a>&#160;&#160;&#160;0x0F</td></tr>
    175 <tr class="separator:RGB_BLACK"><td class="memSeparator" colspan="2">&#160;</td></tr>
    176 <tr class="memitem:RGB_DARKGRAY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_DARKGRAY">RGB_DARKGRAY</a>&#160;&#160;&#160;0x00</td></tr>
    177 <tr class="separator:RGB_DARKGRAY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    178 <tr class="memitem:RGB_LIGHTGRAY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_LIGHTGRAY">RGB_LIGHTGRAY</a>&#160;&#160;&#160;0x10</td></tr>
    179 <tr class="separator:RGB_LIGHTGRAY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    180 <tr class="memitem:RGB_WHITE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#RGB_WHITE">RGB_WHITE</a>&#160;&#160;&#160;0x30</td></tr>
    181 <tr class="separator:RGB_WHITE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    182 <tr class="memitem:J_UP"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#J_UP">J_UP</a>&#160;&#160;&#160;0x08U</td></tr>
    183 <tr class="separator:J_UP"><td class="memSeparator" colspan="2">&#160;</td></tr>
    184 <tr class="memitem:J_DOWN"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#J_DOWN">J_DOWN</a>&#160;&#160;&#160;0x04U</td></tr>
    185 <tr class="separator:J_DOWN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    186 <tr class="memitem:J_LEFT"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#J_LEFT">J_LEFT</a>&#160;&#160;&#160;0x02U</td></tr>
    187 <tr class="separator:J_LEFT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    188 <tr class="memitem:J_RIGHT"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#J_RIGHT">J_RIGHT</a>&#160;&#160;&#160;0x01U</td></tr>
    189 <tr class="separator:J_RIGHT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    190 <tr class="memitem:J_A"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#J_A">J_A</a>&#160;&#160;&#160;0x80U</td></tr>
    191 <tr class="separator:J_A"><td class="memSeparator" colspan="2">&#160;</td></tr>
    192 <tr class="memitem:J_B"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#J_B">J_B</a>&#160;&#160;&#160;0x40U</td></tr>
    193 <tr class="separator:J_B"><td class="memSeparator" colspan="2">&#160;</td></tr>
    194 <tr class="memitem:J_SELECT"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#J_SELECT">J_SELECT</a>&#160;&#160;&#160;0x20U</td></tr>
    195 <tr class="separator:J_SELECT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    196 <tr class="memitem:J_START"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#J_START">J_START</a>&#160;&#160;&#160;0x10U</td></tr>
    197 <tr class="separator:J_START"><td class="memSeparator" colspan="2">&#160;</td></tr>
    198 <tr class="memitem:M_DRAWING"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#M_DRAWING">M_DRAWING</a>&#160;&#160;&#160;0x01U</td></tr>
    199 <tr class="separator:M_DRAWING"><td class="memSeparator" colspan="2">&#160;</td></tr>
    200 <tr class="memitem:M_TEXT_OUT"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#M_TEXT_OUT">M_TEXT_OUT</a>&#160;&#160;&#160;0x02U</td></tr>
    201 <tr class="separator:M_TEXT_OUT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    202 <tr class="memitem:M_TEXT_INOUT"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#M_TEXT_INOUT">M_TEXT_INOUT</a>&#160;&#160;&#160;0x03U</td></tr>
    203 <tr class="separator:M_TEXT_INOUT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    204 <tr class="memitem:M_NO_SCROLL"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#M_NO_SCROLL">M_NO_SCROLL</a>&#160;&#160;&#160;0x04U</td></tr>
    205 <tr class="separator:M_NO_SCROLL"><td class="memSeparator" colspan="2">&#160;</td></tr>
    206 <tr class="memitem:M_NO_INTERP"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#M_NO_INTERP">M_NO_INTERP</a>&#160;&#160;&#160;0x08U</td></tr>
    207 <tr class="separator:M_NO_INTERP"><td class="memSeparator" colspan="2">&#160;</td></tr>
    208 <tr class="memitem:S_PALETTE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#S_PALETTE">S_PALETTE</a>&#160;&#160;&#160;0x10U</td></tr>
    209 <tr class="separator:S_PALETTE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    210 <tr class="memitem:S_FLIPX"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#S_FLIPX">S_FLIPX</a>&#160;&#160;&#160;0x40U</td></tr>
    211 <tr class="separator:S_FLIPX"><td class="memSeparator" colspan="2">&#160;</td></tr>
    212 <tr class="memitem:S_FLIPY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#S_FLIPY">S_FLIPY</a>&#160;&#160;&#160;0x80U</td></tr>
    213 <tr class="separator:S_FLIPY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    214 <tr class="memitem:S_PRIORITY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#S_PRIORITY">S_PRIORITY</a>&#160;&#160;&#160;0x20U</td></tr>
    215 <tr class="separator:S_PRIORITY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    216 <tr class="memitem:S_PAL"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#S_PAL">S_PAL</a>(n)&#160;&#160;&#160;n</td></tr>
    217 <tr class="separator:S_PAL"><td class="memSeparator" colspan="2">&#160;</td></tr>
    218 <tr class="memitem:EMPTY_IFLAG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#EMPTY_IFLAG">EMPTY_IFLAG</a>&#160;&#160;&#160;0x00U</td></tr>
    219 <tr class="separator:EMPTY_IFLAG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    220 <tr class="memitem:VBL_IFLAG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#VBL_IFLAG">VBL_IFLAG</a>&#160;&#160;&#160;0x01U</td></tr>
    221 <tr class="separator:VBL_IFLAG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    222 <tr class="memitem:LCD_IFLAG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#LCD_IFLAG">LCD_IFLAG</a>&#160;&#160;&#160;0x02U</td></tr>
    223 <tr class="separator:LCD_IFLAG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    224 <tr class="memitem:TIM_IFLAG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#TIM_IFLAG">TIM_IFLAG</a>&#160;&#160;&#160;0x04U</td></tr>
    225 <tr class="separator:TIM_IFLAG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    226 <tr class="memitem:DMG_BLACK"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#DMG_BLACK">DMG_BLACK</a>&#160;&#160;&#160;0x03</td></tr>
    227 <tr class="separator:DMG_BLACK"><td class="memSeparator" colspan="2">&#160;</td></tr>
    228 <tr class="memitem:DMG_DARK_GRAY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#DMG_DARK_GRAY">DMG_DARK_GRAY</a>&#160;&#160;&#160;0x02</td></tr>
    229 <tr class="separator:DMG_DARK_GRAY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    230 <tr class="memitem:DMG_LITE_GRAY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#DMG_LITE_GRAY">DMG_LITE_GRAY</a>&#160;&#160;&#160;0x01</td></tr>
    231 <tr class="separator:DMG_LITE_GRAY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    232 <tr class="memitem:DMG_WHITE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#DMG_WHITE">DMG_WHITE</a>&#160;&#160;&#160;0x00</td></tr>
    233 <tr class="separator:DMG_WHITE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    234 <tr class="memitem:DMG_PALETTE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#DMG_PALETTE">DMG_PALETTE</a>(C0,  C1,  C2,  C3)&#160;&#160;&#160;((<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>)((((C3) &amp; 0x03) &lt;&lt; 6) | (((C2) &amp; 0x03) &lt;&lt; 4) | (((C1) &amp; 0x03) &lt;&lt; 2) | ((C0) &amp; 0x03)))</td></tr>
    235 <tr class="separator:DMG_PALETTE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    236 <tr class="memitem:SCREENWIDTH"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SCREENWIDTH">SCREENWIDTH</a>&#160;&#160;&#160;<a class="el" href="sms_2hardware_8h.html#DEVICE_SCREEN_PX_WIDTH">DEVICE_SCREEN_PX_WIDTH</a></td></tr>
    237 <tr class="separator:SCREENWIDTH"><td class="memSeparator" colspan="2">&#160;</td></tr>
    238 <tr class="memitem:SCREENHEIGHT"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SCREENHEIGHT">SCREENHEIGHT</a>&#160;&#160;&#160;<a class="el" href="sms_2hardware_8h.html#DEVICE_SCREEN_PX_HEIGHT">DEVICE_SCREEN_PX_HEIGHT</a></td></tr>
    239 <tr class="separator:SCREENHEIGHT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    240 <tr class="memitem:MAX_LCD_ISR_CALLS"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#MAX_LCD_ISR_CALLS">MAX_LCD_ISR_CALLS</a>&#160;&#160;&#160;4</td></tr>
    241 <tr class="separator:MAX_LCD_ISR_CALLS"><td class="memSeparator" colspan="2">&#160;</td></tr>
    242 <tr class="memitem:CURRENT_BANK"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#CURRENT_BANK">CURRENT_BANK</a>&#160;&#160;&#160;<a class="el" href="nes_8h.html#_current_bank">_current_bank</a></td></tr>
    243 <tr class="separator:CURRENT_BANK"><td class="memSeparator" colspan="2">&#160;</td></tr>
    244 <tr class="memitem:BANK"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#BANK">BANK</a>(VARNAME)&#160;&#160;&#160;( (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>) &amp; __bank_ ## VARNAME )</td></tr>
    245 <tr class="separator:BANK"><td class="memSeparator" colspan="2">&#160;</td></tr>
    246 <tr class="memitem:BANKREF"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#BANKREF">BANKREF</a>(VARNAME)</td></tr>
    247 <tr class="separator:BANKREF"><td class="memSeparator" colspan="2">&#160;</td></tr>
    248 <tr class="memitem:BANKREF_EXTERN"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#BANKREF_EXTERN">BANKREF_EXTERN</a>(VARNAME)&#160;&#160;&#160;extern const void __bank_ ## VARNAME;</td></tr>
    249 <tr class="separator:BANKREF_EXTERN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    250 <tr class="memitem:SWITCH_ROM_DUMMY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SWITCH_ROM_DUMMY">SWITCH_ROM_DUMMY</a>(<a class="el" href="sms_8h.html#b">b</a>)</td></tr>
    251 <tr class="separator:SWITCH_ROM_DUMMY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    252 <tr class="memitem:SWITCH_ROM_UNROM"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SWITCH_ROM_UNROM">SWITCH_ROM_UNROM</a>(<a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;<a class="el" href="nes_8h.html#_switch_prg0">_switch_prg0</a>(<a class="el" href="sms_8h.html#b">b</a>)</td></tr>
    253 <tr class="separator:SWITCH_ROM_UNROM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    254 <tr class="memitem:SWITCH_ROM"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SWITCH_ROM">SWITCH_ROM</a>&#160;&#160;&#160;<a class="el" href="nes_8h.html#SWITCH_ROM_UNROM">SWITCH_ROM_UNROM</a></td></tr>
    255 <tr class="separator:SWITCH_ROM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    256 <tr class="memitem:SWITCH_RAM"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SWITCH_RAM">SWITCH_RAM</a>(<a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;0</td></tr>
    257 <tr class="separator:SWITCH_RAM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    258 <tr class="memitem:ENABLE_RAM"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#ENABLE_RAM">ENABLE_RAM</a></td></tr>
    259 <tr class="separator:ENABLE_RAM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    260 <tr class="memitem:DISABLE_RAM"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#DISABLE_RAM">DISABLE_RAM</a></td></tr>
    261 <tr class="separator:DISABLE_RAM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    262 <tr class="memitem:DISPLAY_ON"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#DISPLAY_ON">DISPLAY_ON</a>&#160;&#160;&#160;  <a class="el" href="nes_8h.html#display_on">display_on</a>();</td></tr>
    263 <tr class="separator:DISPLAY_ON"><td class="memSeparator" colspan="2">&#160;</td></tr>
    264 <tr class="memitem:DISPLAY_OFF"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#DISPLAY_OFF">DISPLAY_OFF</a>&#160;&#160;&#160;  <a class="el" href="sms_8h.html#display_off">display_off</a>();</td></tr>
    265 <tr class="separator:DISPLAY_OFF"><td class="memSeparator" colspan="2">&#160;</td></tr>
    266 <tr class="memitem:HIDE_LEFT_COLUMN"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#HIDE_LEFT_COLUMN">HIDE_LEFT_COLUMN</a>&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> &amp;= ~(<a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_BG_LC">PPUMASK_SHOW_BG_LC</a> | <a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_SPR_LC">PPUMASK_SHOW_SPR_LC</a>); \</td></tr>
    267 <tr class="separator:HIDE_LEFT_COLUMN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    268 <tr class="memitem:SHOW_LEFT_COLUMN"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SHOW_LEFT_COLUMN">SHOW_LEFT_COLUMN</a>&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> |= (<a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_BG_LC">PPUMASK_SHOW_BG_LC</a> | <a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_SPR_LC">PPUMASK_SHOW_SPR_LC</a>);</td></tr>
    269 <tr class="separator:SHOW_LEFT_COLUMN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    270 <tr class="memitem:SET_BORDER_COLOR"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SET_BORDER_COLOR">SET_BORDER_COLOR</a>(C)</td></tr>
    271 <tr class="separator:SET_BORDER_COLOR"><td class="memSeparator" colspan="2">&#160;</td></tr>
    272 <tr class="memitem:SHOW_BKG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SHOW_BKG">SHOW_BKG</a>&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> |= <a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_BG">PPUMASK_SHOW_BG</a>;</td></tr>
    273 <tr class="separator:SHOW_BKG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    274 <tr class="memitem:HIDE_BKG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#HIDE_BKG">HIDE_BKG</a>&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> &amp;= ~<a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_BG">PPUMASK_SHOW_BG</a>;</td></tr>
    275 <tr class="separator:HIDE_BKG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    276 <tr class="memitem:SHOW_SPRITES"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SHOW_SPRITES">SHOW_SPRITES</a>&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> |= <a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_SPR">PPUMASK_SHOW_SPR</a>;</td></tr>
    277 <tr class="separator:SHOW_SPRITES"><td class="memSeparator" colspan="2">&#160;</td></tr>
    278 <tr class="memitem:HIDE_SPRITES"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#HIDE_SPRITES">HIDE_SPRITES</a>&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> &amp;= ~<a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_SPR">PPUMASK_SHOW_SPR</a>;</td></tr>
    279 <tr class="separator:HIDE_SPRITES"><td class="memSeparator" colspan="2">&#160;</td></tr>
    280 <tr class="memitem:SPRITES_8x16"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SPRITES_8x16">SPRITES_8x16</a>&#160;&#160;&#160;  <a class="el" href="nes_2hardware_8h.html#shadow_PPUCTRL">shadow_PPUCTRL</a> |= <a class="el" href="nes_2hardware_8h.html#PPUCTRL_SPR_8X16">PPUCTRL_SPR_8X16</a>;</td></tr>
    281 <tr class="separator:SPRITES_8x16"><td class="memSeparator" colspan="2">&#160;</td></tr>
    282 <tr class="memitem:SPRITES_8x8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SPRITES_8x8">SPRITES_8x8</a>&#160;&#160;&#160;  <a class="el" href="nes_2hardware_8h.html#shadow_PPUCTRL">shadow_PPUCTRL</a> &amp;= ~<a class="el" href="nes_2hardware_8h.html#PPUCTRL_SPR_8X16">PPUCTRL_SPR_8X16</a>;</td></tr>
    283 <tr class="separator:SPRITES_8x8"><td class="memSeparator" colspan="2">&#160;</td></tr>
    284 <tr class="memitem:COMPAT_PALETTE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#COMPAT_PALETTE">COMPAT_PALETTE</a>(C0,  C1,  C2,  C3)&#160;&#160;&#160;((<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>)(((C3) &lt;&lt; 6) | ((C2) &lt;&lt; 4) | ((C1) &lt;&lt; 2) | (C0)))</td></tr>
    285 <tr class="separator:COMPAT_PALETTE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    286 <tr class="memitem:set_bkg_2bpp_data"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_2bpp_data">set_bkg_2bpp_data</a>&#160;&#160;&#160;<a class="el" href="sms_8h.html#set_bkg_data">set_bkg_data</a></td></tr>
    287 <tr class="separator:set_bkg_2bpp_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    288 <tr class="memitem:set_tile_map"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_tile_map">set_tile_map</a>&#160;&#160;&#160;<a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a></td></tr>
    289 <tr class="separator:set_tile_map"><td class="memSeparator" colspan="2">&#160;</td></tr>
    290 <tr class="memitem:set_tile_submap"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_tile_submap">set_tile_submap</a>&#160;&#160;&#160;<a class="el" href="nes_8h.html#set_bkg_submap">set_bkg_submap</a></td></tr>
    291 <tr class="separator:set_tile_submap"><td class="memSeparator" colspan="2">&#160;</td></tr>
    292 <tr class="memitem:set_tile_xy"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_tile_xy">set_tile_xy</a>&#160;&#160;&#160;<a class="el" href="nes_8h.html#set_bkg_tile_xy">set_bkg_tile_xy</a></td></tr>
    293 <tr class="separator:set_tile_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    294 <tr class="memitem:set_attribute_xy"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_attribute_xy">set_attribute_xy</a>&#160;&#160;&#160;<a class="el" href="nes_8h.html#set_bkg_attribute_xy">set_bkg_attribute_xy</a></td></tr>
    295 <tr class="separator:set_attribute_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    296 <tr class="memitem:set_sprite_2bpp_data"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_sprite_2bpp_data">set_sprite_2bpp_data</a>&#160;&#160;&#160;<a class="el" href="sms_8h.html#set_sprite_data">set_sprite_data</a></td></tr>
    297 <tr class="separator:set_sprite_2bpp_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    298 <tr class="memitem:DISABLE_OAM_DMA"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#DISABLE_OAM_DMA">DISABLE_OAM_DMA</a>&#160;&#160;&#160;    <a class="el" href="sms_8h.html#_shadow_OAM_base">_shadow_OAM_base</a> = 0</td></tr>
    299 <tr class="separator:DISABLE_OAM_DMA"><td class="memSeparator" colspan="2">&#160;</td></tr>
    300 <tr class="memitem:DISABLE_VBL_TRANSFER"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#DISABLE_VBL_TRANSFER">DISABLE_VBL_TRANSFER</a>&#160;&#160;&#160;<a class="el" href="nes_8h.html#DISABLE_OAM_DMA">DISABLE_OAM_DMA</a></td></tr>
    301 <tr class="separator:DISABLE_VBL_TRANSFER"><td class="memSeparator" colspan="2">&#160;</td></tr>
    302 <tr class="memitem:ENABLE_OAM_DMA"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#ENABLE_OAM_DMA">ENABLE_OAM_DMA</a>&#160;&#160;&#160;    <a class="el" href="sms_8h.html#_shadow_OAM_base">_shadow_OAM_base</a> = (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>)((<a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>)&amp;<a class="el" href="sms_8h.html#shadow_OAM">shadow_OAM</a> &gt;&gt; 8)</td></tr>
    303 <tr class="separator:ENABLE_OAM_DMA"><td class="memSeparator" colspan="2">&#160;</td></tr>
    304 <tr class="memitem:ENABLE_VBL_TRANSFER"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#ENABLE_VBL_TRANSFER">ENABLE_VBL_TRANSFER</a>&#160;&#160;&#160;<a class="el" href="nes_8h.html#ENABLE_OAM_DMA">ENABLE_OAM_DMA</a></td></tr>
    305 <tr class="separator:ENABLE_VBL_TRANSFER"><td class="memSeparator" colspan="2">&#160;</td></tr>
    306 <tr class="memitem:MAX_HARDWARE_SPRITES"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#MAX_HARDWARE_SPRITES">MAX_HARDWARE_SPRITES</a>&#160;&#160;&#160;64</td></tr>
    307 <tr class="separator:MAX_HARDWARE_SPRITES"><td class="memSeparator" colspan="2">&#160;</td></tr>
    308 <tr class="memitem:HARDWARE_SPRITE_CAN_FLIP_X"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#HARDWARE_SPRITE_CAN_FLIP_X">HARDWARE_SPRITE_CAN_FLIP_X</a>&#160;&#160;&#160;1</td></tr>
    309 <tr class="separator:HARDWARE_SPRITE_CAN_FLIP_X"><td class="memSeparator" colspan="2">&#160;</td></tr>
    310 <tr class="memitem:HARDWARE_SPRITE_CAN_FLIP_Y"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#HARDWARE_SPRITE_CAN_FLIP_Y">HARDWARE_SPRITE_CAN_FLIP_Y</a>&#160;&#160;&#160;1</td></tr>
    311 <tr class="separator:HARDWARE_SPRITE_CAN_FLIP_Y"><td class="memSeparator" colspan="2">&#160;</td></tr>
    312 <tr class="memitem:fill_rect"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#fill_rect">fill_rect</a>&#160;&#160;&#160;<a class="el" href="nes_8h.html#fill_bkg_rect">fill_bkg_rect</a></td></tr>
    313 <tr class="separator:fill_rect"><td class="memSeparator" colspan="2">&#160;</td></tr>
    314 </table><table class="memberdecls">
    315 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
    316 Typedefs</h2></td></tr>
    317 <tr class="memitem:palette_color_t"><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#palette_color_t">palette_color_t</a></td></tr>
    318 <tr class="separator:palette_color_t"><td class="memSeparator" colspan="2">&#160;</td></tr>
    319 <tr class="memitem:int_handler"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#int_handler">int_handler</a>) (void) <a class="el" href="asm_2types_8h.html#NONBANKED">NONBANKED</a></td></tr>
    320 <tr class="separator:int_handler"><td class="memSeparator" colspan="2">&#160;</td></tr>
    321 <tr class="memitem:OAM_item_t"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="struct_o_a_m__item__t.html">OAM_item_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#OAM_item_t">OAM_item_t</a></td></tr>
    322 <tr class="separator:OAM_item_t"><td class="memSeparator" colspan="2">&#160;</td></tr>
    323 </table><table class="memberdecls">
    324 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
    325 Functions</h2></td></tr>
    326 <tr class="memitem:set_bkg_palette"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_palette">set_bkg_palette</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> first_palette, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb_palettes, const <a class="el" href="cgb_8h.html#palette_color_t">palette_color_t</a> *rgb_data) NO_OVERLAY_LOCALS</td></tr>
    327 <tr class="separator:set_bkg_palette"><td class="memSeparator" colspan="2">&#160;</td></tr>
    328 <tr class="memitem:set_sprite_palette"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_sprite_palette">set_sprite_palette</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> first_palette, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb_palettes, const <a class="el" href="cgb_8h.html#palette_color_t">palette_color_t</a> *rgb_data) NO_OVERLAY_LOCALS</td></tr>
    329 <tr class="separator:set_sprite_palette"><td class="memSeparator" colspan="2">&#160;</td></tr>
    330 <tr class="memitem:set_bkg_palette_entry"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_palette_entry">set_bkg_palette_entry</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> palette, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> entry, <a class="el" href="cgb_8h.html#palette_color_t">palette_color_t</a> rgb_data) NO_OVERLAY_LOCALS</td></tr>
    331 <tr class="separator:set_bkg_palette_entry"><td class="memSeparator" colspan="2">&#160;</td></tr>
    332 <tr class="memitem:set_sprite_palette_entry"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_sprite_palette_entry">set_sprite_palette_entry</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> palette, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> entry, <a class="el" href="cgb_8h.html#palette_color_t">palette_color_t</a> rgb_data) NO_OVERLAY_LOCALS</td></tr>
    333 <tr class="separator:set_sprite_palette_entry"><td class="memSeparator" colspan="2">&#160;</td></tr>
    334 <tr class="memitem:remove_VBL"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#remove_VBL">remove_VBL</a> (<a class="el" href="sms_8h.html#int_handler">int_handler</a> <a class="el" href="sms_8h.html#h">h</a>) NO_OVERLAY_LOCALS</td></tr>
    335 <tr class="separator:remove_VBL"><td class="memSeparator" colspan="2">&#160;</td></tr>
    336 <tr class="memitem:remove_LCD"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#remove_LCD">remove_LCD</a> (<a class="el" href="sms_8h.html#int_handler">int_handler</a> <a class="el" href="sms_8h.html#h">h</a>) NO_OVERLAY_LOCALS</td></tr>
    337 <tr class="separator:remove_LCD"><td class="memSeparator" colspan="2">&#160;</td></tr>
    338 <tr class="memitem:remove_TIM"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#remove_TIM">remove_TIM</a> (<a class="el" href="sms_8h.html#int_handler">int_handler</a> <a class="el" href="sms_8h.html#h">h</a>) NO_OVERLAY_LOCALS</td></tr>
    339 <tr class="separator:remove_TIM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    340 <tr class="memitem:add_VBL"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#add_VBL">add_VBL</a> (<a class="el" href="sms_8h.html#int_handler">int_handler</a> <a class="el" href="sms_8h.html#h">h</a>) NO_OVERLAY_LOCALS</td></tr>
    341 <tr class="separator:add_VBL"><td class="memSeparator" colspan="2">&#160;</td></tr>
    342 <tr class="memitem:add_LCD"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#add_LCD">add_LCD</a> (<a class="el" href="sms_8h.html#int_handler">int_handler</a> <a class="el" href="sms_8h.html#h">h</a>) NO_OVERLAY_LOCALS</td></tr>
    343 <tr class="separator:add_LCD"><td class="memSeparator" colspan="2">&#160;</td></tr>
    344 <tr class="memitem:add_TIM"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#add_TIM">add_TIM</a> (<a class="el" href="sms_8h.html#int_handler">int_handler</a> <a class="el" href="sms_8h.html#h">h</a>) NO_OVERLAY_LOCALS</td></tr>
    345 <tr class="separator:add_TIM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    346 <tr class="memitem:mode"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#mode">mode</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> m) NO_OVERLAY_LOCALS</td></tr>
    347 <tr class="separator:mode"><td class="memSeparator" colspan="2">&#160;</td></tr>
    348 <tr class="memitem:get_mode"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#get_mode">get_mode</a> (void) NO_OVERLAY_LOCALS</td></tr>
    349 <tr class="separator:get_mode"><td class="memSeparator" colspan="2">&#160;</td></tr>
    350 <tr class="memitem:get_system"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#get_system">get_system</a> (void)</td></tr>
    351 <tr class="separator:get_system"><td class="memSeparator" colspan="2">&#160;</td></tr>
    352 <tr class="memitem:delay"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#delay">delay</a> (<a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> <a class="el" href="sms_8h.html#d">d</a>) NO_OVERLAY_LOCALS</td></tr>
    353 <tr class="separator:delay"><td class="memSeparator" colspan="2">&#160;</td></tr>
    354 <tr class="memitem:joypad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#joypad">joypad</a> (void) NO_OVERLAY_LOCALS</td></tr>
    355 <tr class="separator:joypad"><td class="memSeparator" colspan="2">&#160;</td></tr>
    356 <tr class="memitem:waitpad"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#waitpad">waitpad</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> mask) NO_OVERLAY_LOCALS</td></tr>
    357 <tr class="separator:waitpad"><td class="memSeparator" colspan="2">&#160;</td></tr>
    358 <tr class="memitem:waitpadup"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#waitpadup">waitpadup</a> (void) NO_OVERLAY_LOCALS</td></tr>
    359 <tr class="separator:waitpadup"><td class="memSeparator" colspan="2">&#160;</td></tr>
    360 <tr class="memitem:joypad_init"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#joypad_init">joypad_init</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> npads, <a class="el" href="structjoypads__t.html">joypads_t</a> *joypads) NO_OVERLAY_LOCALS</td></tr>
    361 <tr class="separator:joypad_init"><td class="memSeparator" colspan="2">&#160;</td></tr>
    362 <tr class="memitem:joypad_ex"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#joypad_ex">joypad_ex</a> (<a class="el" href="structjoypads__t.html">joypads_t</a> *joypads) NO_OVERLAY_LOCALS</td></tr>
    363 <tr class="separator:joypad_ex"><td class="memSeparator" colspan="2">&#160;</td></tr>
    364 <tr class="memitem:enable_interrupts"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#enable_interrupts">enable_interrupts</a> (void)</td></tr>
    365 <tr class="separator:enable_interrupts"><td class="memSeparator" colspan="2">&#160;</td></tr>
    366 <tr class="memitem:disable_interrupts"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#disable_interrupts">disable_interrupts</a> (void)</td></tr>
    367 <tr class="separator:disable_interrupts"><td class="memSeparator" colspan="2">&#160;</td></tr>
    368 <tr class="memitem:set_interrupts"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_interrupts">set_interrupts</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> flags) NO_OVERLAY_LOCALS</td></tr>
    369 <tr class="separator:set_interrupts"><td class="memSeparator" colspan="2">&#160;</td></tr>
    370 <tr class="memitem:reset"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#reset">reset</a> (void)</td></tr>
    371 <tr class="separator:reset"><td class="memSeparator" colspan="2">&#160;</td></tr>
    372 <tr class="memitem:vsync"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#vsync">vsync</a> (void) NO_OVERLAY_LOCALS</td></tr>
    373 <tr class="separator:vsync"><td class="memSeparator" colspan="2">&#160;</td></tr>
    374 <tr class="memitem:wait_vbl_done"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#wait_vbl_done">wait_vbl_done</a> (void) NO_OVERLAY_LOCALS</td></tr>
    375 <tr class="separator:wait_vbl_done"><td class="memSeparator" colspan="2">&#160;</td></tr>
    376 <tr class="memitem:display_on"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#display_on">display_on</a> (void) NO_OVERLAY_LOCALS</td></tr>
    377 <tr class="separator:display_on"><td class="memSeparator" colspan="2">&#160;</td></tr>
    378 <tr class="memitem:display_off"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#display_off">display_off</a> (void) NO_OVERLAY_LOCALS</td></tr>
    379 <tr class="separator:display_off"><td class="memSeparator" colspan="2">&#160;</td></tr>
    380 <tr class="memitem:refresh_OAM"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#refresh_OAM">refresh_OAM</a> (void) NO_OVERLAY_LOCALS</td></tr>
    381 <tr class="separator:refresh_OAM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    382 <tr class="memitem:set_vram_byte"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_vram_byte">set_vram_byte</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *addr, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> v) NO_OVERLAY_LOCALS</td></tr>
    383 <tr class="separator:set_vram_byte"><td class="memSeparator" colspan="2">&#160;</td></tr>
    384 <tr class="memitem:get_bkg_xy_addr"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#get_bkg_xy_addr">get_bkg_xy_addr</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y) NO_OVERLAY_LOCALS</td></tr>
    385 <tr class="separator:get_bkg_xy_addr"><td class="memSeparator" colspan="2">&#160;</td></tr>
    386 <tr class="memitem:set_2bpp_palette"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_2bpp_palette">set_2bpp_palette</a> (<a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> palette)</td></tr>
    387 <tr class="separator:set_2bpp_palette"><td class="memSeparator" colspan="2">&#160;</td></tr>
    388 <tr class="memitem:set_1bpp_colors_ex"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_1bpp_colors_ex">set_1bpp_colors_ex</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> fgcolor, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> bgcolor, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#mode">mode</a>) NO_OVERLAY_LOCALS</td></tr>
    389 <tr class="separator:set_1bpp_colors_ex"><td class="memSeparator" colspan="2">&#160;</td></tr>
    390 <tr class="memitem:set_1bpp_colors"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_1bpp_colors">set_1bpp_colors</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> fgcolor, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> bgcolor)</td></tr>
    391 <tr class="separator:set_1bpp_colors"><td class="memSeparator" colspan="2">&#160;</td></tr>
    392 <tr class="memitem:set_bkg_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_data">set_bkg_data</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> first_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb_tiles, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data) NO_OVERLAY_LOCALS</td></tr>
    393 <tr class="separator:set_bkg_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    394 <tr class="memitem:set_bkg_1bpp_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_1bpp_data">set_bkg_1bpp_data</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> first_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb_tiles, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data) NO_OVERLAY_LOCALS</td></tr>
    395 <tr class="separator:set_bkg_1bpp_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    396 <tr class="memitem:set_bkg_tiles"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#h">h</a>, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *tiles) NO_OVERLAY_LOCALS</td></tr>
    397 <tr class="separator:set_bkg_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    398 <tr class="memitem:set_bkg_attributes_nes16x16"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_attributes_nes16x16">set_bkg_attributes_nes16x16</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#h">h</a>, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *attributes) NO_OVERLAY_LOCALS</td></tr>
    399 <tr class="separator:set_bkg_attributes_nes16x16"><td class="memSeparator" colspan="2">&#160;</td></tr>
    400 <tr class="memitem:set_bkg_attributes"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_attributes">set_bkg_attributes</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#h">h</a>, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *attributes)</td></tr>
    401 <tr class="separator:set_bkg_attributes"><td class="memSeparator" colspan="2">&#160;</td></tr>
    402 <tr class="memitem:set_bkg_submap_attributes_nes16x"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_submap_attributes_nes16x">set_bkg_submap_attributes_nes16x16</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#h">h</a>, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *map, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> map_w) NO_OVERLAY_LOCALS</td></tr>
    403 <tr class="separator:set_bkg_submap_attributes_nes16x"><td class="memSeparator" colspan="2">&#160;</td></tr>
    404 <tr class="memitem:set_bkg_submap_attributes"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_submap_attributes">set_bkg_submap_attributes</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#h">h</a>, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *attributes, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> map_w)</td></tr>
    405 <tr class="separator:set_bkg_submap_attributes"><td class="memSeparator" colspan="2">&#160;</td></tr>
    406 <tr class="memitem:set_bkg_based_tiles"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_based_tiles">set_bkg_based_tiles</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#h">h</a>, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *tiles, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_tile)</td></tr>
    407 <tr class="separator:set_bkg_based_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    408 <tr class="memitem:set_bkg_submap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_submap">set_bkg_submap</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#h">h</a>, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *map, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> map_w) NO_OVERLAY_LOCALS</td></tr>
    409 <tr class="separator:set_bkg_submap"><td class="memSeparator" colspan="2">&#160;</td></tr>
    410 <tr class="memitem:set_bkg_based_submap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_based_submap">set_bkg_based_submap</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#h">h</a>, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *map, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> map_w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_tile)</td></tr>
    411 <tr class="separator:set_bkg_based_submap"><td class="memSeparator" colspan="2">&#160;</td></tr>
    412 <tr class="memitem:get_bkg_tiles"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#get_bkg_tiles">get_bkg_tiles</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#h">h</a>, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *tiles) NO_OVERLAY_LOCALS</td></tr>
    413 <tr class="separator:get_bkg_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    414 <tr class="memitem:set_bkg_tile_xy"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_tile_xy">set_bkg_tile_xy</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> t) NO_OVERLAY_LOCALS</td></tr>
    415 <tr class="separator:set_bkg_tile_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    416 <tr class="memitem:set_bkg_attribute_xy_nes16x16"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_attribute_xy_nes16x16">set_bkg_attribute_xy_nes16x16</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> a) NO_OVERLAY_LOCALS</td></tr>
    417 <tr class="separator:set_bkg_attribute_xy_nes16x16"><td class="memSeparator" colspan="2">&#160;</td></tr>
    418 <tr class="memitem:set_bkg_attribute_xy"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_attribute_xy">set_bkg_attribute_xy</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> a)</td></tr>
    419 <tr class="separator:set_bkg_attribute_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    420 <tr class="memitem:get_bkg_tile_xy"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#get_bkg_tile_xy">get_bkg_tile_xy</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y) NO_OVERLAY_LOCALS</td></tr>
    421 <tr class="separator:get_bkg_tile_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    422 <tr class="memitem:move_bkg"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#move_bkg">move_bkg</a> (<a class="el" href="nes_2hardware_8h.html#scroll_x_t">scroll_x_t</a> x, <a class="el" href="nes_2hardware_8h.html#scroll_y_t">scroll_y_t</a> y)</td></tr>
    423 <tr class="separator:move_bkg"><td class="memSeparator" colspan="2">&#160;</td></tr>
    424 <tr class="memitem:scroll_bkg"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#scroll_bkg">scroll_bkg</a> (<a class="el" href="stdint_8h.html#int8_t">int8_t</a> x, <a class="el" href="stdint_8h.html#int8_t">int8_t</a> y)</td></tr>
    425 <tr class="separator:scroll_bkg"><td class="memSeparator" colspan="2">&#160;</td></tr>
    426 <tr class="memitem:set_sprite_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_sprite_data">set_sprite_data</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> first_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb_tiles, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data) NO_OVERLAY_LOCALS</td></tr>
    427 <tr class="separator:set_sprite_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    428 <tr class="memitem:set_sprite_1bpp_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_sprite_1bpp_data">set_sprite_1bpp_data</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> first_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb_tiles, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data) NO_OVERLAY_LOCALS</td></tr>
    429 <tr class="separator:set_sprite_1bpp_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    430 <tr class="memitem:SET_SHADOW_OAM_ADDRESS"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#SET_SHADOW_OAM_ADDRESS">SET_SHADOW_OAM_ADDRESS</a> (void *address)</td></tr>
    431 <tr class="separator:SET_SHADOW_OAM_ADDRESS"><td class="memSeparator" colspan="2">&#160;</td></tr>
    432 <tr class="memitem:set_sprite_tile"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_sprite_tile">set_sprite_tile</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> tile) NO_OVERLAY_LOCALS</td></tr>
    433 <tr class="separator:set_sprite_tile"><td class="memSeparator" colspan="2">&#160;</td></tr>
    434 <tr class="memitem:get_sprite_tile"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#get_sprite_tile">get_sprite_tile</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb) NO_OVERLAY_LOCALS</td></tr>
    435 <tr class="separator:get_sprite_tile"><td class="memSeparator" colspan="2">&#160;</td></tr>
    436 <tr class="memitem:set_sprite_prop"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_sprite_prop">set_sprite_prop</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> prop) NO_OVERLAY_LOCALS</td></tr>
    437 <tr class="separator:set_sprite_prop"><td class="memSeparator" colspan="2">&#160;</td></tr>
    438 <tr class="memitem:get_sprite_prop"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#get_sprite_prop">get_sprite_prop</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb) NO_OVERLAY_LOCALS</td></tr>
    439 <tr class="separator:get_sprite_prop"><td class="memSeparator" colspan="2">&#160;</td></tr>
    440 <tr class="memitem:move_sprite"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#move_sprite">move_sprite</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y) NO_OVERLAY_LOCALS</td></tr>
    441 <tr class="separator:move_sprite"><td class="memSeparator" colspan="2">&#160;</td></tr>
    442 <tr class="memitem:scroll_sprite"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#scroll_sprite">scroll_sprite</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb, <a class="el" href="stdint_8h.html#int8_t">int8_t</a> x, <a class="el" href="stdint_8h.html#int8_t">int8_t</a> y) NO_OVERLAY_LOCALS</td></tr>
    443 <tr class="separator:scroll_sprite"><td class="memSeparator" colspan="2">&#160;</td></tr>
    444 <tr class="memitem:hide_sprite"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#hide_sprite">hide_sprite</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb) NO_OVERLAY_LOCALS</td></tr>
    445 <tr class="separator:hide_sprite"><td class="memSeparator" colspan="2">&#160;</td></tr>
    446 <tr class="memitem:set_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_data">set_data</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *vram_addr, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data, <a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> len) NO_OVERLAY_LOCALS</td></tr>
    447 <tr class="separator:set_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    448 <tr class="memitem:set_tiles"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_tiles">set_tiles</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#h">h</a>, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *vram_addr, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *tiles) NO_OVERLAY_LOCALS</td></tr>
    449 <tr class="separator:set_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    450 <tr class="memitem:set_tile_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_tile_data">set_tile_data</a> (<a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> first_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb_tiles, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data)</td></tr>
    451 <tr class="separator:set_tile_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    452 <tr class="memitem:set_bkg_native_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_bkg_native_data">set_bkg_native_data</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> first_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb_tiles, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data) NO_OVERLAY_LOCALS</td></tr>
    453 <tr class="separator:set_bkg_native_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    454 <tr class="memitem:set_sprite_native_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_sprite_native_data">set_sprite_native_data</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> first_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb_tiles, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data) NO_OVERLAY_LOCALS</td></tr>
    455 <tr class="separator:set_sprite_native_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    456 <tr class="memitem:set_native_tile_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#set_native_tile_data">set_native_tile_data</a> (<a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> first_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb_tiles, const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data)</td></tr>
    457 <tr class="separator:set_native_tile_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    458 <tr class="memitem:init_bkg"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#init_bkg">init_bkg</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#c">c</a>) NO_OVERLAY_LOCALS</td></tr>
    459 <tr class="separator:init_bkg"><td class="memSeparator" colspan="2">&#160;</td></tr>
    460 <tr class="memitem:vmemset"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#vmemset">vmemset</a> (void *s, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#c">c</a>, <a class="el" href="asm_2mos6502_2types_8h.html#size_t">size_t</a> n) NO_OVERLAY_LOCALS</td></tr>
    461 <tr class="separator:vmemset"><td class="memSeparator" colspan="2">&#160;</td></tr>
    462 <tr class="memitem:fill_bkg_rect"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#fill_bkg_rect">fill_bkg_rect</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> x, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> y, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> w, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="sms_8h.html#h">h</a>, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> tile) NO_OVERLAY_LOCALS</td></tr>
    463 <tr class="separator:fill_bkg_rect"><td class="memSeparator" colspan="2">&#160;</td></tr>
    464 <tr class="memitem:flush_shadow_attributes"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#flush_shadow_attributes">flush_shadow_attributes</a> (void) NO_OVERLAY_LOCALS</td></tr>
    465 <tr class="separator:flush_shadow_attributes"><td class="memSeparator" colspan="2">&#160;</td></tr>
    466 <tr class="memitem:_switch_prg0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#_switch_prg0">_switch_prg0</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> bank) NO_OVERLAY_LOCALS</td></tr>
    467 <tr class="separator:_switch_prg0"><td class="memSeparator" colspan="2">&#160;</td></tr>
    468 </table><table class="memberdecls">
    469 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
    470 Variables</h2></td></tr>
    471 <tr class="memitem:_SYSTEM"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#_SYSTEM">_SYSTEM</a></td></tr>
    472 <tr class="separator:_SYSTEM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    473 <tr class="memitem:sys_time"><td class="memItemLeft" align="right" valign="top">volatile <a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#sys_time">sys_time</a></td></tr>
    474 <tr class="separator:sys_time"><td class="memSeparator" colspan="2">&#160;</td></tr>
    475 <tr class="memitem:_current_bank"><td class="memItemLeft" align="right" valign="top">volatile <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#_current_bank">_current_bank</a></td></tr>
    476 <tr class="separator:_current_bank"><td class="memSeparator" colspan="2">&#160;</td></tr>
    477 <tr class="memitem:_current_1bpp_colors"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#_current_1bpp_colors">_current_1bpp_colors</a></td></tr>
    478 <tr class="separator:_current_1bpp_colors"><td class="memSeparator" colspan="2">&#160;</td></tr>
    479 <tr class="memitem:shadow_OAM"><td class="memItemLeft" align="right" valign="top">volatile struct <a class="el" href="struct_o_a_m__item__t.html">OAM_item_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#shadow_OAM">shadow_OAM</a> []</td></tr>
    480 <tr class="separator:shadow_OAM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    481 <tr class="memitem:_shadow_OAM_base"><td class="memItemLeft" align="right" valign="top"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="nes_8h.html#_shadow_OAM_base">_shadow_OAM_base</a></td></tr>
    482 <tr class="separator:_shadow_OAM_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
    483 </table>
    484 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
    485 <div class="textblock"><p >NES specific functions. </p>
    486 </div><h2 class="groupheader">Macro Definition Documentation</h2>
    487 <a id="NINTENDO_NES" name="NINTENDO_NES"></a>
    488 <h2 class="memtitle"><span class="permalink"><a href="#NINTENDO_NES">&#9670;&nbsp;</a></span>NINTENDO_NES</h2>
    489 
    490 <div class="memitem">
    491 <div class="memproto">
    492       <table class="memname">
    493         <tr>
    494           <td class="memname">#define NINTENDO_NES</td>
    495         </tr>
    496       </table>
    497 </div><div class="memdoc">
    498 
    499 </div>
    500 </div>
    501 <a id="SYSTEM_BITS_NTSC" name="SYSTEM_BITS_NTSC"></a>
    502 <h2 class="memtitle"><span class="permalink"><a href="#SYSTEM_BITS_NTSC">&#9670;&nbsp;</a></span>SYSTEM_BITS_NTSC</h2>
    503 
    504 <div class="memitem">
    505 <div class="memproto">
    506       <table class="memname">
    507         <tr>
    508           <td class="memname">#define SYSTEM_BITS_NTSC&#160;&#160;&#160;0x00</td>
    509         </tr>
    510       </table>
    511 </div><div class="memdoc">
    512 
    513 </div>
    514 </div>
    515 <a id="SYSTEM_BITS_PAL" name="SYSTEM_BITS_PAL"></a>
    516 <h2 class="memtitle"><span class="permalink"><a href="#SYSTEM_BITS_PAL">&#9670;&nbsp;</a></span>SYSTEM_BITS_PAL</h2>
    517 
    518 <div class="memitem">
    519 <div class="memproto">
    520       <table class="memname">
    521         <tr>
    522           <td class="memname">#define SYSTEM_BITS_PAL&#160;&#160;&#160;0x40</td>
    523         </tr>
    524       </table>
    525 </div><div class="memdoc">
    526 
    527 </div>
    528 </div>
    529 <a id="SYSTEM_BITS_DENDY" name="SYSTEM_BITS_DENDY"></a>
    530 <h2 class="memtitle"><span class="permalink"><a href="#SYSTEM_BITS_DENDY">&#9670;&nbsp;</a></span>SYSTEM_BITS_DENDY</h2>
    531 
    532 <div class="memitem">
    533 <div class="memproto">
    534       <table class="memname">
    535         <tr>
    536           <td class="memname">#define SYSTEM_BITS_DENDY&#160;&#160;&#160;0x80</td>
    537         </tr>
    538       </table>
    539 </div><div class="memdoc">
    540 
    541 </div>
    542 </div>
    543 <a id="SYSTEM_60HZ" name="SYSTEM_60HZ"></a>
    544 <h2 class="memtitle"><span class="permalink"><a href="#SYSTEM_60HZ">&#9670;&nbsp;</a></span>SYSTEM_60HZ</h2>
    545 
    546 <div class="memitem">
    547 <div class="memproto">
    548       <table class="memname">
    549         <tr>
    550           <td class="memname">#define SYSTEM_60HZ&#160;&#160;&#160;0x00</td>
    551         </tr>
    552       </table>
    553 </div><div class="memdoc">
    554 
    555 </div>
    556 </div>
    557 <a id="SYSTEM_50HZ" name="SYSTEM_50HZ"></a>
    558 <h2 class="memtitle"><span class="permalink"><a href="#SYSTEM_50HZ">&#9670;&nbsp;</a></span>SYSTEM_50HZ</h2>
    559 
    560 <div class="memitem">
    561 <div class="memproto">
    562       <table class="memname">
    563         <tr>
    564           <td class="memname">#define SYSTEM_50HZ&#160;&#160;&#160;0x01</td>
    565         </tr>
    566       </table>
    567 </div><div class="memdoc">
    568 
    569 </div>
    570 </div>
    571 <a id="TIMER_VBLANK_PARITY_MODE_SYSTEM_" name="TIMER_VBLANK_PARITY_MODE_SYSTEM_"></a>
    572 <h2 class="memtitle"><span class="permalink"><a href="#TIMER_VBLANK_PARITY_MODE_SYSTEM_">&#9670;&nbsp;</a></span>TIMER_VBLANK_PARITY_MODE_SYSTEM_60HZ</h2>
    573 
    574 <div class="memitem">
    575 <div class="memproto">
    576       <table class="memname">
    577         <tr>
    578           <td class="memname">#define TIMER_VBLANK_PARITY_MODE_SYSTEM_60HZ&#160;&#160;&#160;0x78</td>
    579         </tr>
    580       </table>
    581 </div><div class="memdoc">
    582 
    583 </div>
    584 </div>
    585 <a id="TIMER_VBLANK_PARITY_MODE_SYSTEM_" name="TIMER_VBLANK_PARITY_MODE_SYSTEM_"></a>
    586 <h2 class="memtitle"><span class="permalink"><a href="#TIMER_VBLANK_PARITY_MODE_SYSTEM_">&#9670;&nbsp;</a></span>TIMER_VBLANK_PARITY_MODE_SYSTEM_50HZ</h2>
    587 
    588 <div class="memitem">
    589 <div class="memproto">
    590       <table class="memname">
    591         <tr>
    592           <td class="memname">#define TIMER_VBLANK_PARITY_MODE_SYSTEM_50HZ&#160;&#160;&#160;0x5D</td>
    593         </tr>
    594       </table>
    595 </div><div class="memdoc">
    596 
    597 </div>
    598 </div>
    599 <a id="RGB" name="RGB"></a>
    600 <h2 class="memtitle"><span class="permalink"><a href="#RGB">&#9670;&nbsp;</a></span>RGB</h2>
    601 
    602 <div class="memitem">
    603 <div class="memproto">
    604       <table class="memname">
    605         <tr>
    606           <td class="memname">#define RGB</td>
    607           <td>(</td>
    608           <td class="paramtype">&#160;</td>
    609           <td class="paramname">r, </td>
    610         </tr>
    611         <tr>
    612           <td class="paramkey"></td>
    613           <td></td>
    614           <td class="paramtype">&#160;</td>
    615           <td class="paramname">g, </td>
    616         </tr>
    617         <tr>
    618           <td class="paramkey"></td>
    619           <td></td>
    620           <td class="paramtype">&#160;</td>
    621           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a>&#160;</td>
    622         </tr>
    623         <tr>
    624           <td></td>
    625           <td>)</td>
    626           <td></td><td>&#160;&#160;&#160;<a class="el" href="rgb__to__nes__macro_8h.html#RGB_TO_NES">RGB_TO_NES</a>(((r) | ((g) &lt;&lt; 2) | ((<a class="el" href="sms_8h.html#b">b</a>) &lt;&lt; 4)))</td>
    627         </tr>
    628       </table>
    629 </div><div class="memdoc">
    630 
    631 </div>
    632 </div>
    633 <a id="RGB8" name="RGB8"></a>
    634 <h2 class="memtitle"><span class="permalink"><a href="#RGB8">&#9670;&nbsp;</a></span>RGB8</h2>
    635 
    636 <div class="memitem">
    637 <div class="memproto">
    638       <table class="memname">
    639         <tr>
    640           <td class="memname">#define RGB8</td>
    641           <td>(</td>
    642           <td class="paramtype">&#160;</td>
    643           <td class="paramname">r, </td>
    644         </tr>
    645         <tr>
    646           <td class="paramkey"></td>
    647           <td></td>
    648           <td class="paramtype">&#160;</td>
    649           <td class="paramname">g, </td>
    650         </tr>
    651         <tr>
    652           <td class="paramkey"></td>
    653           <td></td>
    654           <td class="paramtype">&#160;</td>
    655           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a>&#160;</td>
    656         </tr>
    657         <tr>
    658           <td></td>
    659           <td>)</td>
    660           <td></td><td>&#160;&#160;&#160;<a class="el" href="rgb__to__nes__macro_8h.html#RGB_TO_NES">RGB_TO_NES</a>((((r) &gt;&gt; 6) | (((g) &gt;&gt; 6) &lt;&lt; 2) | (((<a class="el" href="sms_8h.html#b">b</a>) &gt;&gt; 6) &lt;&lt; 4)))</td>
    661         </tr>
    662       </table>
    663 </div><div class="memdoc">
    664 
    665 </div>
    666 </div>
    667 <a id="RGBHTML" name="RGBHTML"></a>
    668 <h2 class="memtitle"><span class="permalink"><a href="#RGBHTML">&#9670;&nbsp;</a></span>RGBHTML</h2>
    669 
    670 <div class="memitem">
    671 <div class="memproto">
    672       <table class="memname">
    673         <tr>
    674           <td class="memname">#define RGBHTML</td>
    675           <td>(</td>
    676           <td class="paramtype">&#160;</td>
    677           <td class="paramname">RGB24bit</td><td>)</td>
    678           <td>&#160;&#160;&#160;<a class="el" href="rgb__to__nes__macro_8h.html#RGB_TO_NES">RGB_TO_NES</a>((((RGB24bit) &gt;&gt; 22) | ((((RGB24bit) &amp; 0xFFFF) &gt;&gt; 14) &lt;&lt; 2) | ((((RGB24bit) &amp; 0xFF) &gt;&gt; 6) &lt;&lt; 4)))</td>
    679         </tr>
    680       </table>
    681 </div><div class="memdoc">
    682 
    683 </div>
    684 </div>
    685 <a id="RGB_RED" name="RGB_RED"></a>
    686 <h2 class="memtitle"><span class="permalink"><a href="#RGB_RED">&#9670;&nbsp;</a></span>RGB_RED</h2>
    687 
    688 <div class="memitem">
    689 <div class="memproto">
    690       <table class="memname">
    691         <tr>
    692           <td class="memname">#define RGB_RED&#160;&#160;&#160;0x16</td>
    693         </tr>
    694       </table>
    695 </div><div class="memdoc">
    696 <p >Common colors based on the EGA default palette.</p>
    697 <p >Manually entered from <a href="https://www.nesdev.org/wiki/PPU_palettes#RGBI">https://www.nesdev.org/wiki/PPU_palettes#RGBI</a> </p>
    698 
    699 </div>
    700 </div>
    701 <a id="RGB_DARKRED" name="RGB_DARKRED"></a>
    702 <h2 class="memtitle"><span class="permalink"><a href="#RGB_DARKRED">&#9670;&nbsp;</a></span>RGB_DARKRED</h2>
    703 
    704 <div class="memitem">
    705 <div class="memproto">
    706       <table class="memname">
    707         <tr>
    708           <td class="memname">#define RGB_DARKRED&#160;&#160;&#160;0x06</td>
    709         </tr>
    710       </table>
    711 </div><div class="memdoc">
    712 
    713 </div>
    714 </div>
    715 <a id="RGB_GREEN" name="RGB_GREEN"></a>
    716 <h2 class="memtitle"><span class="permalink"><a href="#RGB_GREEN">&#9670;&nbsp;</a></span>RGB_GREEN</h2>
    717 
    718 <div class="memitem">
    719 <div class="memproto">
    720       <table class="memname">
    721         <tr>
    722           <td class="memname">#define RGB_GREEN&#160;&#160;&#160;0x2A</td>
    723         </tr>
    724       </table>
    725 </div><div class="memdoc">
    726 
    727 </div>
    728 </div>
    729 <a id="RGB_DARKGREEN" name="RGB_DARKGREEN"></a>
    730 <h2 class="memtitle"><span class="permalink"><a href="#RGB_DARKGREEN">&#9670;&nbsp;</a></span>RGB_DARKGREEN</h2>
    731 
    732 <div class="memitem">
    733 <div class="memproto">
    734       <table class="memname">
    735         <tr>
    736           <td class="memname">#define RGB_DARKGREEN&#160;&#160;&#160;0x1A</td>
    737         </tr>
    738       </table>
    739 </div><div class="memdoc">
    740 
    741 </div>
    742 </div>
    743 <a id="RGB_BLUE" name="RGB_BLUE"></a>
    744 <h2 class="memtitle"><span class="permalink"><a href="#RGB_BLUE">&#9670;&nbsp;</a></span>RGB_BLUE</h2>
    745 
    746 <div class="memitem">
    747 <div class="memproto">
    748       <table class="memname">
    749         <tr>
    750           <td class="memname">#define RGB_BLUE&#160;&#160;&#160;0x12</td>
    751         </tr>
    752       </table>
    753 </div><div class="memdoc">
    754 
    755 </div>
    756 </div>
    757 <a id="RGB_DARKBLUE" name="RGB_DARKBLUE"></a>
    758 <h2 class="memtitle"><span class="permalink"><a href="#RGB_DARKBLUE">&#9670;&nbsp;</a></span>RGB_DARKBLUE</h2>
    759 
    760 <div class="memitem">
    761 <div class="memproto">
    762       <table class="memname">
    763         <tr>
    764           <td class="memname">#define RGB_DARKBLUE&#160;&#160;&#160;0x02</td>
    765         </tr>
    766       </table>
    767 </div><div class="memdoc">
    768 
    769 </div>
    770 </div>
    771 <a id="RGB_YELLOW" name="RGB_YELLOW"></a>
    772 <h2 class="memtitle"><span class="permalink"><a href="#RGB_YELLOW">&#9670;&nbsp;</a></span>RGB_YELLOW</h2>
    773 
    774 <div class="memitem">
    775 <div class="memproto">
    776       <table class="memname">
    777         <tr>
    778           <td class="memname">#define RGB_YELLOW&#160;&#160;&#160;0x28</td>
    779         </tr>
    780       </table>
    781 </div><div class="memdoc">
    782 
    783 </div>
    784 </div>
    785 <a id="RGB_DARKYELLOW" name="RGB_DARKYELLOW"></a>
    786 <h2 class="memtitle"><span class="permalink"><a href="#RGB_DARKYELLOW">&#9670;&nbsp;</a></span>RGB_DARKYELLOW</h2>
    787 
    788 <div class="memitem">
    789 <div class="memproto">
    790       <table class="memname">
    791         <tr>
    792           <td class="memname">#define RGB_DARKYELLOW&#160;&#160;&#160;0x18</td>
    793         </tr>
    794       </table>
    795 </div><div class="memdoc">
    796 
    797 </div>
    798 </div>
    799 <a id="RGB_CYAN" name="RGB_CYAN"></a>
    800 <h2 class="memtitle"><span class="permalink"><a href="#RGB_CYAN">&#9670;&nbsp;</a></span>RGB_CYAN</h2>
    801 
    802 <div class="memitem">
    803 <div class="memproto">
    804       <table class="memname">
    805         <tr>
    806           <td class="memname">#define RGB_CYAN&#160;&#160;&#160;0x2C</td>
    807         </tr>
    808       </table>
    809 </div><div class="memdoc">
    810 
    811 </div>
    812 </div>
    813 <a id="RGB_AQUA" name="RGB_AQUA"></a>
    814 <h2 class="memtitle"><span class="permalink"><a href="#RGB_AQUA">&#9670;&nbsp;</a></span>RGB_AQUA</h2>
    815 
    816 <div class="memitem">
    817 <div class="memproto">
    818       <table class="memname">
    819         <tr>
    820           <td class="memname">#define RGB_AQUA&#160;&#160;&#160;0x1C</td>
    821         </tr>
    822       </table>
    823 </div><div class="memdoc">
    824 
    825 </div>
    826 </div>
    827 <a id="RGB_PINK" name="RGB_PINK"></a>
    828 <h2 class="memtitle"><span class="permalink"><a href="#RGB_PINK">&#9670;&nbsp;</a></span>RGB_PINK</h2>
    829 
    830 <div class="memitem">
    831 <div class="memproto">
    832       <table class="memname">
    833         <tr>
    834           <td class="memname">#define RGB_PINK&#160;&#160;&#160;0x24</td>
    835         </tr>
    836       </table>
    837 </div><div class="memdoc">
    838 
    839 </div>
    840 </div>
    841 <a id="RGB_PURPLE" name="RGB_PURPLE"></a>
    842 <h2 class="memtitle"><span class="permalink"><a href="#RGB_PURPLE">&#9670;&nbsp;</a></span>RGB_PURPLE</h2>
    843 
    844 <div class="memitem">
    845 <div class="memproto">
    846       <table class="memname">
    847         <tr>
    848           <td class="memname">#define RGB_PURPLE&#160;&#160;&#160;0x14</td>
    849         </tr>
    850       </table>
    851 </div><div class="memdoc">
    852 
    853 </div>
    854 </div>
    855 <a id="RGB_BLACK" name="RGB_BLACK"></a>
    856 <h2 class="memtitle"><span class="permalink"><a href="#RGB_BLACK">&#9670;&nbsp;</a></span>RGB_BLACK</h2>
    857 
    858 <div class="memitem">
    859 <div class="memproto">
    860       <table class="memname">
    861         <tr>
    862           <td class="memname">#define RGB_BLACK&#160;&#160;&#160;0x0F</td>
    863         </tr>
    864       </table>
    865 </div><div class="memdoc">
    866 
    867 </div>
    868 </div>
    869 <a id="RGB_DARKGRAY" name="RGB_DARKGRAY"></a>
    870 <h2 class="memtitle"><span class="permalink"><a href="#RGB_DARKGRAY">&#9670;&nbsp;</a></span>RGB_DARKGRAY</h2>
    871 
    872 <div class="memitem">
    873 <div class="memproto">
    874       <table class="memname">
    875         <tr>
    876           <td class="memname">#define RGB_DARKGRAY&#160;&#160;&#160;0x00</td>
    877         </tr>
    878       </table>
    879 </div><div class="memdoc">
    880 
    881 </div>
    882 </div>
    883 <a id="RGB_LIGHTGRAY" name="RGB_LIGHTGRAY"></a>
    884 <h2 class="memtitle"><span class="permalink"><a href="#RGB_LIGHTGRAY">&#9670;&nbsp;</a></span>RGB_LIGHTGRAY</h2>
    885 
    886 <div class="memitem">
    887 <div class="memproto">
    888       <table class="memname">
    889         <tr>
    890           <td class="memname">#define RGB_LIGHTGRAY&#160;&#160;&#160;0x10</td>
    891         </tr>
    892       </table>
    893 </div><div class="memdoc">
    894 
    895 </div>
    896 </div>
    897 <a id="RGB_WHITE" name="RGB_WHITE"></a>
    898 <h2 class="memtitle"><span class="permalink"><a href="#RGB_WHITE">&#9670;&nbsp;</a></span>RGB_WHITE</h2>
    899 
    900 <div class="memitem">
    901 <div class="memproto">
    902       <table class="memname">
    903         <tr>
    904           <td class="memname">#define RGB_WHITE&#160;&#160;&#160;0x30</td>
    905         </tr>
    906       </table>
    907 </div><div class="memdoc">
    908 
    909 </div>
    910 </div>
    911 <a id="J_UP" name="J_UP"></a>
    912 <h2 class="memtitle"><span class="permalink"><a href="#J_UP">&#9670;&nbsp;</a></span>J_UP</h2>
    913 
    914 <div class="memitem">
    915 <div class="memproto">
    916       <table class="memname">
    917         <tr>
    918           <td class="memname">#define J_UP&#160;&#160;&#160;0x08U</td>
    919         </tr>
    920       </table>
    921 </div><div class="memdoc">
    922 <p >Joypad bits. A logical OR of these is used in the wait_pad and joypad functions. For example, to see if the B button is pressed try</p>
    923 <p >uint8_t keys; keys = <a class="el" href="nes_8h.html#joypad">joypad()</a>; if (keys &amp; J_B) { ... }</p>
    924 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#joypad">joypad</a> </dd></dl>
    925 
    926 </div>
    927 </div>
    928 <a id="J_DOWN" name="J_DOWN"></a>
    929 <h2 class="memtitle"><span class="permalink"><a href="#J_DOWN">&#9670;&nbsp;</a></span>J_DOWN</h2>
    930 
    931 <div class="memitem">
    932 <div class="memproto">
    933       <table class="memname">
    934         <tr>
    935           <td class="memname">#define J_DOWN&#160;&#160;&#160;0x04U</td>
    936         </tr>
    937       </table>
    938 </div><div class="memdoc">
    939 
    940 </div>
    941 </div>
    942 <a id="J_LEFT" name="J_LEFT"></a>
    943 <h2 class="memtitle"><span class="permalink"><a href="#J_LEFT">&#9670;&nbsp;</a></span>J_LEFT</h2>
    944 
    945 <div class="memitem">
    946 <div class="memproto">
    947       <table class="memname">
    948         <tr>
    949           <td class="memname">#define J_LEFT&#160;&#160;&#160;0x02U</td>
    950         </tr>
    951       </table>
    952 </div><div class="memdoc">
    953 
    954 </div>
    955 </div>
    956 <a id="J_RIGHT" name="J_RIGHT"></a>
    957 <h2 class="memtitle"><span class="permalink"><a href="#J_RIGHT">&#9670;&nbsp;</a></span>J_RIGHT</h2>
    958 
    959 <div class="memitem">
    960 <div class="memproto">
    961       <table class="memname">
    962         <tr>
    963           <td class="memname">#define J_RIGHT&#160;&#160;&#160;0x01U</td>
    964         </tr>
    965       </table>
    966 </div><div class="memdoc">
    967 
    968 </div>
    969 </div>
    970 <a id="J_A" name="J_A"></a>
    971 <h2 class="memtitle"><span class="permalink"><a href="#J_A">&#9670;&nbsp;</a></span>J_A</h2>
    972 
    973 <div class="memitem">
    974 <div class="memproto">
    975       <table class="memname">
    976         <tr>
    977           <td class="memname">#define J_A&#160;&#160;&#160;0x80U</td>
    978         </tr>
    979       </table>
    980 </div><div class="memdoc">
    981 
    982 </div>
    983 </div>
    984 <a id="J_B" name="J_B"></a>
    985 <h2 class="memtitle"><span class="permalink"><a href="#J_B">&#9670;&nbsp;</a></span>J_B</h2>
    986 
    987 <div class="memitem">
    988 <div class="memproto">
    989       <table class="memname">
    990         <tr>
    991           <td class="memname">#define J_B&#160;&#160;&#160;0x40U</td>
    992         </tr>
    993       </table>
    994 </div><div class="memdoc">
    995 
    996 </div>
    997 </div>
    998 <a id="J_SELECT" name="J_SELECT"></a>
    999 <h2 class="memtitle"><span class="permalink"><a href="#J_SELECT">&#9670;&nbsp;</a></span>J_SELECT</h2>
   1000 
   1001 <div class="memitem">
   1002 <div class="memproto">
   1003       <table class="memname">
   1004         <tr>
   1005           <td class="memname">#define J_SELECT&#160;&#160;&#160;0x20U</td>
   1006         </tr>
   1007       </table>
   1008 </div><div class="memdoc">
   1009 
   1010 </div>
   1011 </div>
   1012 <a id="J_START" name="J_START"></a>
   1013 <h2 class="memtitle"><span class="permalink"><a href="#J_START">&#9670;&nbsp;</a></span>J_START</h2>
   1014 
   1015 <div class="memitem">
   1016 <div class="memproto">
   1017       <table class="memname">
   1018         <tr>
   1019           <td class="memname">#define J_START&#160;&#160;&#160;0x10U</td>
   1020         </tr>
   1021       </table>
   1022 </div><div class="memdoc">
   1023 
   1024 </div>
   1025 </div>
   1026 <a id="M_DRAWING" name="M_DRAWING"></a>
   1027 <h2 class="memtitle"><span class="permalink"><a href="#M_DRAWING">&#9670;&nbsp;</a></span>M_DRAWING</h2>
   1028 
   1029 <div class="memitem">
   1030 <div class="memproto">
   1031       <table class="memname">
   1032         <tr>
   1033           <td class="memname">#define M_DRAWING&#160;&#160;&#160;0x01U</td>
   1034         </tr>
   1035       </table>
   1036 </div><div class="memdoc">
   1037 <p >Screen modes. Normally used by internal functions only. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#mode">mode()</a> </dd></dl>
   1038 
   1039 </div>
   1040 </div>
   1041 <a id="M_TEXT_OUT" name="M_TEXT_OUT"></a>
   1042 <h2 class="memtitle"><span class="permalink"><a href="#M_TEXT_OUT">&#9670;&nbsp;</a></span>M_TEXT_OUT</h2>
   1043 
   1044 <div class="memitem">
   1045 <div class="memproto">
   1046       <table class="memname">
   1047         <tr>
   1048           <td class="memname">#define M_TEXT_OUT&#160;&#160;&#160;0x02U</td>
   1049         </tr>
   1050       </table>
   1051 </div><div class="memdoc">
   1052 
   1053 </div>
   1054 </div>
   1055 <a id="M_TEXT_INOUT" name="M_TEXT_INOUT"></a>
   1056 <h2 class="memtitle"><span class="permalink"><a href="#M_TEXT_INOUT">&#9670;&nbsp;</a></span>M_TEXT_INOUT</h2>
   1057 
   1058 <div class="memitem">
   1059 <div class="memproto">
   1060       <table class="memname">
   1061         <tr>
   1062           <td class="memname">#define M_TEXT_INOUT&#160;&#160;&#160;0x03U</td>
   1063         </tr>
   1064       </table>
   1065 </div><div class="memdoc">
   1066 
   1067 </div>
   1068 </div>
   1069 <a id="M_NO_SCROLL" name="M_NO_SCROLL"></a>
   1070 <h2 class="memtitle"><span class="permalink"><a href="#M_NO_SCROLL">&#9670;&nbsp;</a></span>M_NO_SCROLL</h2>
   1071 
   1072 <div class="memitem">
   1073 <div class="memproto">
   1074       <table class="memname">
   1075         <tr>
   1076           <td class="memname">#define M_NO_SCROLL&#160;&#160;&#160;0x04U</td>
   1077         </tr>
   1078       </table>
   1079 </div><div class="memdoc">
   1080 <p >Set this in addition to the others to disable scrolling</p>
   1081 <p >If scrolling is disabled, the cursor returns to (0,0) </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#mode">mode()</a> </dd></dl>
   1082 
   1083 </div>
   1084 </div>
   1085 <a id="M_NO_INTERP" name="M_NO_INTERP"></a>
   1086 <h2 class="memtitle"><span class="permalink"><a href="#M_NO_INTERP">&#9670;&nbsp;</a></span>M_NO_INTERP</h2>
   1087 
   1088 <div class="memitem">
   1089 <div class="memproto">
   1090       <table class="memname">
   1091         <tr>
   1092           <td class="memname">#define M_NO_INTERP&#160;&#160;&#160;0x08U</td>
   1093         </tr>
   1094       </table>
   1095 </div><div class="memdoc">
   1096 <p >Set this to disable interpretation </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#mode">mode()</a> </dd></dl>
   1097 
   1098 </div>
   1099 </div>
   1100 <a id="S_PALETTE" name="S_PALETTE"></a>
   1101 <h2 class="memtitle"><span class="permalink"><a href="#S_PALETTE">&#9670;&nbsp;</a></span>S_PALETTE</h2>
   1102 
   1103 <div class="memitem">
   1104 <div class="memproto">
   1105       <table class="memname">
   1106         <tr>
   1107           <td class="memname">#define S_PALETTE&#160;&#160;&#160;0x10U</td>
   1108         </tr>
   1109       </table>
   1110 </div><div class="memdoc">
   1111 <p >If this is set, sprite colours come from OBJ1PAL. Else they come from OBJ0PAL </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_sprite_prop">set_sprite_prop()</a>. </dd></dl>
   1112 
   1113 </div>
   1114 </div>
   1115 <a id="S_FLIPX" name="S_FLIPX"></a>
   1116 <h2 class="memtitle"><span class="permalink"><a href="#S_FLIPX">&#9670;&nbsp;</a></span>S_FLIPX</h2>
   1117 
   1118 <div class="memitem">
   1119 <div class="memproto">
   1120       <table class="memname">
   1121         <tr>
   1122           <td class="memname">#define S_FLIPX&#160;&#160;&#160;0x40U</td>
   1123         </tr>
   1124       </table>
   1125 </div><div class="memdoc">
   1126 <p >If set the sprite will be flipped horizontally. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_sprite_prop">set_sprite_prop()</a> </dd></dl>
   1127 
   1128 </div>
   1129 </div>
   1130 <a id="S_FLIPY" name="S_FLIPY"></a>
   1131 <h2 class="memtitle"><span class="permalink"><a href="#S_FLIPY">&#9670;&nbsp;</a></span>S_FLIPY</h2>
   1132 
   1133 <div class="memitem">
   1134 <div class="memproto">
   1135       <table class="memname">
   1136         <tr>
   1137           <td class="memname">#define S_FLIPY&#160;&#160;&#160;0x80U</td>
   1138         </tr>
   1139       </table>
   1140 </div><div class="memdoc">
   1141 <p >If set the sprite will be flipped vertically. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_sprite_prop">set_sprite_prop()</a> </dd></dl>
   1142 
   1143 </div>
   1144 </div>
   1145 <a id="S_PRIORITY" name="S_PRIORITY"></a>
   1146 <h2 class="memtitle"><span class="permalink"><a href="#S_PRIORITY">&#9670;&nbsp;</a></span>S_PRIORITY</h2>
   1147 
   1148 <div class="memitem">
   1149 <div class="memproto">
   1150       <table class="memname">
   1151         <tr>
   1152           <td class="memname">#define S_PRIORITY&#160;&#160;&#160;0x20U</td>
   1153         </tr>
   1154       </table>
   1155 </div><div class="memdoc">
   1156 <p >If this bit is clear, then the sprite will be displayed on top of the background and window. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_sprite_prop">set_sprite_prop()</a> </dd></dl>
   1157 
   1158 </div>
   1159 </div>
   1160 <a id="S_PAL" name="S_PAL"></a>
   1161 <h2 class="memtitle"><span class="permalink"><a href="#S_PAL">&#9670;&nbsp;</a></span>S_PAL</h2>
   1162 
   1163 <div class="memitem">
   1164 <div class="memproto">
   1165       <table class="memname">
   1166         <tr>
   1167           <td class="memname">#define S_PAL</td>
   1168           <td>(</td>
   1169           <td class="paramtype">&#160;</td>
   1170           <td class="paramname">n</td><td>)</td>
   1171           <td>&#160;&#160;&#160;n</td>
   1172         </tr>
   1173       </table>
   1174 </div><div class="memdoc">
   1175 <p >Defines how palette number is encoded in OAM. Required for the png2asset tool's metasprite output. </p>
   1176 
   1177 </div>
   1178 </div>
   1179 <a id="EMPTY_IFLAG" name="EMPTY_IFLAG"></a>
   1180 <h2 class="memtitle"><span class="permalink"><a href="#EMPTY_IFLAG">&#9670;&nbsp;</a></span>EMPTY_IFLAG</h2>
   1181 
   1182 <div class="memitem">
   1183 <div class="memproto">
   1184       <table class="memname">
   1185         <tr>
   1186           <td class="memname">#define EMPTY_IFLAG&#160;&#160;&#160;0x00U</td>
   1187         </tr>
   1188       </table>
   1189 </div><div class="memdoc">
   1190 <p >Disable calling of interrupt service routines </p>
   1191 
   1192 </div>
   1193 </div>
   1194 <a id="VBL_IFLAG" name="VBL_IFLAG"></a>
   1195 <h2 class="memtitle"><span class="permalink"><a href="#VBL_IFLAG">&#9670;&nbsp;</a></span>VBL_IFLAG</h2>
   1196 
   1197 <div class="memitem">
   1198 <div class="memproto">
   1199       <table class="memname">
   1200         <tr>
   1201           <td class="memname">#define VBL_IFLAG&#160;&#160;&#160;0x01U</td>
   1202         </tr>
   1203       </table>
   1204 </div><div class="memdoc">
   1205 <p >VBlank Interrupt occurs at the start of the vertical blank.</p>
   1206 <p >During this period the video ram may be freely accessed. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_interrupts">set_interrupts()</a>, </dd>
   1207 <dd>
   1208 <a class="el" href="nes_8h.html#add_VBL">add_VBL</a> </dd></dl>
   1209 
   1210 </div>
   1211 </div>
   1212 <a id="LCD_IFLAG" name="LCD_IFLAG"></a>
   1213 <h2 class="memtitle"><span class="permalink"><a href="#LCD_IFLAG">&#9670;&nbsp;</a></span>LCD_IFLAG</h2>
   1214 
   1215 <div class="memitem">
   1216 <div class="memproto">
   1217       <table class="memname">
   1218         <tr>
   1219           <td class="memname">#define LCD_IFLAG&#160;&#160;&#160;0x02U</td>
   1220         </tr>
   1221       </table>
   1222 </div><div class="memdoc">
   1223 <p >LCD Interrupt when triggered by the STAT register. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_interrupts">set_interrupts()</a>, </dd>
   1224 <dd>
   1225 <a class="el" href="nes_8h.html#add_LCD">add_LCD</a> </dd></dl>
   1226 
   1227 </div>
   1228 </div>
   1229 <a id="TIM_IFLAG" name="TIM_IFLAG"></a>
   1230 <h2 class="memtitle"><span class="permalink"><a href="#TIM_IFLAG">&#9670;&nbsp;</a></span>TIM_IFLAG</h2>
   1231 
   1232 <div class="memitem">
   1233 <div class="memproto">
   1234       <table class="memname">
   1235         <tr>
   1236           <td class="memname">#define TIM_IFLAG&#160;&#160;&#160;0x04U</td>
   1237         </tr>
   1238       </table>
   1239 </div><div class="memdoc">
   1240 <p >Timer Interrupt when the timer <a class="el" href="sms_2hardware_8h.html#TIMA_REG">TIMA_REG</a> overflows. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_interrupts">set_interrupts()</a>, </dd>
   1241 <dd>
   1242 <a class="el" href="nes_8h.html#add_TIM">add_TIM</a> </dd></dl>
   1243 
   1244 </div>
   1245 </div>
   1246 <a id="DMG_BLACK" name="DMG_BLACK"></a>
   1247 <h2 class="memtitle"><span class="permalink"><a href="#DMG_BLACK">&#9670;&nbsp;</a></span>DMG_BLACK</h2>
   1248 
   1249 <div class="memitem">
   1250 <div class="memproto">
   1251       <table class="memname">
   1252         <tr>
   1253           <td class="memname">#define DMG_BLACK&#160;&#160;&#160;0x03</td>
   1254         </tr>
   1255       </table>
   1256 </div><div class="memdoc">
   1257 
   1258 </div>
   1259 </div>
   1260 <a id="DMG_DARK_GRAY" name="DMG_DARK_GRAY"></a>
   1261 <h2 class="memtitle"><span class="permalink"><a href="#DMG_DARK_GRAY">&#9670;&nbsp;</a></span>DMG_DARK_GRAY</h2>
   1262 
   1263 <div class="memitem">
   1264 <div class="memproto">
   1265       <table class="memname">
   1266         <tr>
   1267           <td class="memname">#define DMG_DARK_GRAY&#160;&#160;&#160;0x02</td>
   1268         </tr>
   1269       </table>
   1270 </div><div class="memdoc">
   1271 
   1272 </div>
   1273 </div>
   1274 <a id="DMG_LITE_GRAY" name="DMG_LITE_GRAY"></a>
   1275 <h2 class="memtitle"><span class="permalink"><a href="#DMG_LITE_GRAY">&#9670;&nbsp;</a></span>DMG_LITE_GRAY</h2>
   1276 
   1277 <div class="memitem">
   1278 <div class="memproto">
   1279       <table class="memname">
   1280         <tr>
   1281           <td class="memname">#define DMG_LITE_GRAY&#160;&#160;&#160;0x01</td>
   1282         </tr>
   1283       </table>
   1284 </div><div class="memdoc">
   1285 
   1286 </div>
   1287 </div>
   1288 <a id="DMG_WHITE" name="DMG_WHITE"></a>
   1289 <h2 class="memtitle"><span class="permalink"><a href="#DMG_WHITE">&#9670;&nbsp;</a></span>DMG_WHITE</h2>
   1290 
   1291 <div class="memitem">
   1292 <div class="memproto">
   1293       <table class="memname">
   1294         <tr>
   1295           <td class="memname">#define DMG_WHITE&#160;&#160;&#160;0x00</td>
   1296         </tr>
   1297       </table>
   1298 </div><div class="memdoc">
   1299 
   1300 </div>
   1301 </div>
   1302 <a id="DMG_PALETTE" name="DMG_PALETTE"></a>
   1303 <h2 class="memtitle"><span class="permalink"><a href="#DMG_PALETTE">&#9670;&nbsp;</a></span>DMG_PALETTE</h2>
   1304 
   1305 <div class="memitem">
   1306 <div class="memproto">
   1307       <table class="memname">
   1308         <tr>
   1309           <td class="memname">#define DMG_PALETTE</td>
   1310           <td>(</td>
   1311           <td class="paramtype">&#160;</td>
   1312           <td class="paramname">C0, </td>
   1313         </tr>
   1314         <tr>
   1315           <td class="paramkey"></td>
   1316           <td></td>
   1317           <td class="paramtype">&#160;</td>
   1318           <td class="paramname">C1, </td>
   1319         </tr>
   1320         <tr>
   1321           <td class="paramkey"></td>
   1322           <td></td>
   1323           <td class="paramtype">&#160;</td>
   1324           <td class="paramname">C2, </td>
   1325         </tr>
   1326         <tr>
   1327           <td class="paramkey"></td>
   1328           <td></td>
   1329           <td class="paramtype">&#160;</td>
   1330           <td class="paramname">C3&#160;</td>
   1331         </tr>
   1332         <tr>
   1333           <td></td>
   1334           <td>)</td>
   1335           <td></td><td>&#160;&#160;&#160;((<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>)((((C3) &amp; 0x03) &lt;&lt; 6) | (((C2) &amp; 0x03) &lt;&lt; 4) | (((C1) &amp; 0x03) &lt;&lt; 2) | ((C0) &amp; 0x03)))</td>
   1336         </tr>
   1337       </table>
   1338 </div><div class="memdoc">
   1339 <p >Macro to create a DMG palette from 4 colors</p>
   1340 <dl class="params"><dt>Parameters</dt><dd>
   1341   <table class="params">
   1342     <tr><td class="paramname">C0</td><td>Color for Index 0 </td></tr>
   1343     <tr><td class="paramname">C1</td><td>Color for Index 1 </td></tr>
   1344     <tr><td class="paramname">C2</td><td>Color for Index 2 </td></tr>
   1345     <tr><td class="paramname">C3</td><td>Color for Index 3</td></tr>
   1346   </table>
   1347   </dd>
   1348 </dl>
   1349 <p>The resulting format is four greyscale colors packed into a single unsigned byte.</p>
   1350 <p >Example: </p><div class="fragment"><div class="line">REG_BGP = <a class="code hl_define" href="gb_8h.html#DMG_PALETTE">DMG_PALETTE</a>(<a class="code hl_define" href="gb_8h.html#DMG_BLACK">DMG_BLACK</a>, <a class="code hl_define" href="gb_8h.html#DMG_DARK_GRAY">DMG_DARK_GRAY</a>, <a class="code hl_define" href="gb_8h.html#DMG_LITE_GRAY">DMG_LITE_GRAY</a>, <a class="code hl_define" href="gb_8h.html#DMG_WHITE">DMG_WHITE</a>);</div>
   1351 <div class="ttc" id="agb_8h_html_DMG_BLACK"><div class="ttname"><a href="gb_8h.html#DMG_BLACK">DMG_BLACK</a></div><div class="ttdeci">#define DMG_BLACK</div><div class="ttdef"><b>Definition:</b> gb.h:136</div></div>
   1352 <div class="ttc" id="agb_8h_html_DMG_DARK_GRAY"><div class="ttname"><a href="gb_8h.html#DMG_DARK_GRAY">DMG_DARK_GRAY</a></div><div class="ttdeci">#define DMG_DARK_GRAY</div><div class="ttdef"><b>Definition:</b> gb.h:137</div></div>
   1353 <div class="ttc" id="agb_8h_html_DMG_LITE_GRAY"><div class="ttname"><a href="gb_8h.html#DMG_LITE_GRAY">DMG_LITE_GRAY</a></div><div class="ttdeci">#define DMG_LITE_GRAY</div><div class="ttdef"><b>Definition:</b> gb.h:138</div></div>
   1354 <div class="ttc" id="agb_8h_html_DMG_PALETTE"><div class="ttname"><a href="gb_8h.html#DMG_PALETTE">DMG_PALETTE</a></div><div class="ttdeci">#define DMG_PALETTE(C0, C1, C2, C3)</div><div class="ttdef"><b>Definition:</b> gb.h:159</div></div>
   1355 <div class="ttc" id="agb_8h_html_DMG_WHITE"><div class="ttname"><a href="gb_8h.html#DMG_WHITE">DMG_WHITE</a></div><div class="ttdeci">#define DMG_WHITE</div><div class="ttdef"><b>Definition:</b> gb.h:139</div></div>
   1356 </div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_2hardware_8h.html#OBP0_REG">OBP0_REG</a>, <a class="el" href="gb_2hardware_8h.html#OBP1_REG">OBP1_REG</a>, <a class="el" href="gb_2hardware_8h.html#BGP_REG">BGP_REG</a> </dd>
   1357 <dd>
   1358 <a class="el" href="nes_8h.html#DMG_BLACK">DMG_BLACK</a>, <a class="el" href="nes_8h.html#DMG_DARK_GRAY">DMG_DARK_GRAY</a>, <a class="el" href="nes_8h.html#DMG_LITE_GRAY">DMG_LITE_GRAY</a>, <a class="el" href="nes_8h.html#DMG_WHITE">DMG_WHITE</a> </dd></dl>
   1359 
   1360 </div>
   1361 </div>
   1362 <a id="SCREENWIDTH" name="SCREENWIDTH"></a>
   1363 <h2 class="memtitle"><span class="permalink"><a href="#SCREENWIDTH">&#9670;&nbsp;</a></span>SCREENWIDTH</h2>
   1364 
   1365 <div class="memitem">
   1366 <div class="memproto">
   1367       <table class="memname">
   1368         <tr>
   1369           <td class="memname">#define SCREENWIDTH&#160;&#160;&#160;<a class="el" href="sms_2hardware_8h.html#DEVICE_SCREEN_PX_WIDTH">DEVICE_SCREEN_PX_WIDTH</a></td>
   1370         </tr>
   1371       </table>
   1372 </div><div class="memdoc">
   1373 <p >Width of the visible screen in pixels. </p>
   1374 
   1375 </div>
   1376 </div>
   1377 <a id="SCREENHEIGHT" name="SCREENHEIGHT"></a>
   1378 <h2 class="memtitle"><span class="permalink"><a href="#SCREENHEIGHT">&#9670;&nbsp;</a></span>SCREENHEIGHT</h2>
   1379 
   1380 <div class="memitem">
   1381 <div class="memproto">
   1382       <table class="memname">
   1383         <tr>
   1384           <td class="memname">#define SCREENHEIGHT&#160;&#160;&#160;<a class="el" href="sms_2hardware_8h.html#DEVICE_SCREEN_PX_HEIGHT">DEVICE_SCREEN_PX_HEIGHT</a></td>
   1385         </tr>
   1386       </table>
   1387 </div><div class="memdoc">
   1388 <p >Height of the visible screen in pixels. </p>
   1389 
   1390 </div>
   1391 </div>
   1392 <a id="MAX_LCD_ISR_CALLS" name="MAX_LCD_ISR_CALLS"></a>
   1393 <h2 class="memtitle"><span class="permalink"><a href="#MAX_LCD_ISR_CALLS">&#9670;&nbsp;</a></span>MAX_LCD_ISR_CALLS</h2>
   1394 
   1395 <div class="memitem">
   1396 <div class="memproto">
   1397       <table class="memname">
   1398         <tr>
   1399           <td class="memname">#define MAX_LCD_ISR_CALLS&#160;&#160;&#160;4</td>
   1400         </tr>
   1401       </table>
   1402 </div><div class="memdoc">
   1403 <p >The maximum number of times the LCD handler will be called per frame. </p>
   1404 
   1405 </div>
   1406 </div>
   1407 <a id="CURRENT_BANK" name="CURRENT_BANK"></a>
   1408 <h2 class="memtitle"><span class="permalink"><a href="#CURRENT_BANK">&#9670;&nbsp;</a></span>CURRENT_BANK</h2>
   1409 
   1410 <div class="memitem">
   1411 <div class="memproto">
   1412       <table class="memname">
   1413         <tr>
   1414           <td class="memname">#define CURRENT_BANK&#160;&#160;&#160;<a class="el" href="nes_8h.html#_current_bank">_current_bank</a></td>
   1415         </tr>
   1416       </table>
   1417 </div><div class="memdoc">
   1418 
   1419 </div>
   1420 </div>
   1421 <a id="BANK" name="BANK"></a>
   1422 <h2 class="memtitle"><span class="permalink"><a href="#BANK">&#9670;&nbsp;</a></span>BANK</h2>
   1423 
   1424 <div class="memitem">
   1425 <div class="memproto">
   1426       <table class="memname">
   1427         <tr>
   1428           <td class="memname">#define BANK</td>
   1429           <td>(</td>
   1430           <td class="paramtype">&#160;</td>
   1431           <td class="paramname">VARNAME</td><td>)</td>
   1432           <td>&#160;&#160;&#160;( (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>) &amp; __bank_ ## VARNAME )</td>
   1433         </tr>
   1434       </table>
   1435 </div><div class="memdoc">
   1436 <p >Obtains the <b>bank number</b> of VARNAME</p>
   1437 <dl class="params"><dt>Parameters</dt><dd>
   1438   <table class="params">
   1439     <tr><td class="paramname">VARNAME</td><td>Name of the variable which has a __bank_VARNAME companion symbol which is adjusted by bankpack</td></tr>
   1440   </table>
   1441   </dd>
   1442 </dl>
   1443 <p>Use this to obtain the bank number from a bank reference created with <a class="el" href="gb_8h.html#BANKREF">BANKREF()</a>.</p>
   1444 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#BANKREF_EXTERN">BANKREF_EXTERN()</a>, <a class="el" href="nes_8h.html#BANKREF">BANKREF()</a> </dd></dl>
   1445 
   1446 </div>
   1447 </div>
   1448 <a id="BANKREF" name="BANKREF"></a>
   1449 <h2 class="memtitle"><span class="permalink"><a href="#BANKREF">&#9670;&nbsp;</a></span>BANKREF</h2>
   1450 
   1451 <div class="memitem">
   1452 <div class="memproto">
   1453       <table class="memname">
   1454         <tr>
   1455           <td class="memname">#define BANKREF</td>
   1456           <td>(</td>
   1457           <td class="paramtype">&#160;</td>
   1458           <td class="paramname">VARNAME</td><td>)</td>
   1459           <td></td>
   1460         </tr>
   1461       </table>
   1462 </div><div class="memdoc">
   1463 <b>Value:</b><div class="fragment"><div class="line"><span class="keywordtype">void</span> __func_ ## VARNAME(<span class="keywordtype">void</span>) __banked __naked { \</div>
   1464 <div class="line">__asm \</div>
   1465 <div class="line">    .local b___func_ ## VARNAME \</div>
   1466 <div class="line">    ___bank_ ## VARNAME = b___func_ ## VARNAME \</div>
   1467 <div class="line">    .globl ___bank_ ## VARNAME \</div>
   1468 <div class="line">__endasm; \</div>
   1469 <div class="line">}</div>
   1470 </div><!-- fragment --><p >Creates a reference for retrieving the bank number of a variable or function</p>
   1471 <dl class="params"><dt>Parameters</dt><dd>
   1472   <table class="params">
   1473     <tr><td class="paramname">VARNAME</td><td>Variable name to use, which may be an existing identifier</td></tr>
   1474   </table>
   1475   </dd>
   1476 </dl>
   1477 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#BANK">BANK()</a> for obtaining the bank number of the included data.</dd></dl>
   1478 <p>More than one <code><a class="el" href="nes_8h.html#BANKREF">BANKREF()</a></code> may be created per file, but each call should always use a unique VARNAME.</p>
   1479 <p >Use <a class="el" href="gb_8h.html#BANKREF_EXTERN">BANKREF_EXTERN()</a> within another source file to make the variable and it's data accesible there. </p>
   1480 
   1481 </div>
   1482 </div>
   1483 <a id="BANKREF_EXTERN" name="BANKREF_EXTERN"></a>
   1484 <h2 class="memtitle"><span class="permalink"><a href="#BANKREF_EXTERN">&#9670;&nbsp;</a></span>BANKREF_EXTERN</h2>
   1485 
   1486 <div class="memitem">
   1487 <div class="memproto">
   1488       <table class="memname">
   1489         <tr>
   1490           <td class="memname">#define BANKREF_EXTERN</td>
   1491           <td>(</td>
   1492           <td class="paramtype">&#160;</td>
   1493           <td class="paramname">VARNAME</td><td>)</td>
   1494           <td>&#160;&#160;&#160;extern const void __bank_ ## VARNAME;</td>
   1495         </tr>
   1496       </table>
   1497 </div><div class="memdoc">
   1498 <p >Creates extern references for accessing a <a class="el" href="nes_8h.html#BANKREF">BANKREF()</a> generated variable.</p>
   1499 <dl class="params"><dt>Parameters</dt><dd>
   1500   <table class="params">
   1501     <tr><td class="paramname">VARNAME</td><td>Name of the variable used with <a class="el" href="gb_8h.html#BANKREF">BANKREF()</a></td></tr>
   1502   </table>
   1503   </dd>
   1504 </dl>
   1505 <p>This makes a <a class="el" href="gb_8h.html#BANKREF">BANKREF()</a> reference in another source file accessible in the current file for use with <a class="el" href="gb_8h.html#BANK">BANK()</a>.</p>
   1506 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#BANKREF">BANKREF()</a>, <a class="el" href="nes_8h.html#BANK">BANK()</a> </dd></dl>
   1507 
   1508 </div>
   1509 </div>
   1510 <a id="SWITCH_ROM_DUMMY" name="SWITCH_ROM_DUMMY"></a>
   1511 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_ROM_DUMMY">&#9670;&nbsp;</a></span>SWITCH_ROM_DUMMY</h2>
   1512 
   1513 <div class="memitem">
   1514 <div class="memproto">
   1515       <table class="memname">
   1516         <tr>
   1517           <td class="memname">#define SWITCH_ROM_DUMMY</td>
   1518           <td>(</td>
   1519           <td class="paramtype">&#160;</td>
   1520           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a></td><td>)</td>
   1521           <td></td>
   1522         </tr>
   1523       </table>
   1524 </div><div class="memdoc">
   1525 <p >Dummy macro for no-bank-switching WIP prototype </p><dl class="params"><dt>Parameters</dt><dd>
   1526   <table class="params">
   1527     <tr><td class="paramname">b</td><td>ROM bank to switch to </td></tr>
   1528   </table>
   1529   </dd>
   1530 </dl>
   1531 
   1532 </div>
   1533 </div>
   1534 <a id="SWITCH_ROM_UNROM" name="SWITCH_ROM_UNROM"></a>
   1535 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_ROM_UNROM">&#9670;&nbsp;</a></span>SWITCH_ROM_UNROM</h2>
   1536 
   1537 <div class="memitem">
   1538 <div class="memproto">
   1539       <table class="memname">
   1540         <tr>
   1541           <td class="memname">#define SWITCH_ROM_UNROM</td>
   1542           <td>(</td>
   1543           <td class="paramtype">&#160;</td>
   1544           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a></td><td>)</td>
   1545           <td>&#160;&#160;&#160;<a class="el" href="nes_8h.html#_switch_prg0">_switch_prg0</a>(<a class="el" href="sms_8h.html#b">b</a>)</td>
   1546         </tr>
   1547       </table>
   1548 </div><div class="memdoc">
   1549 <p >Macro for simple UNROM-like switching (write bank# to single 8-bit register) </p><dl class="params"><dt>Parameters</dt><dd>
   1550   <table class="params">
   1551     <tr><td class="paramname">b</td><td>ROM bank to switch to </td></tr>
   1552   </table>
   1553   </dd>
   1554 </dl>
   1555 
   1556 </div>
   1557 </div>
   1558 <a id="SWITCH_ROM" name="SWITCH_ROM"></a>
   1559 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_ROM">&#9670;&nbsp;</a></span>SWITCH_ROM</h2>
   1560 
   1561 <div class="memitem">
   1562 <div class="memproto">
   1563       <table class="memname">
   1564         <tr>
   1565           <td class="memname">#define SWITCH_ROM&#160;&#160;&#160;<a class="el" href="nes_8h.html#SWITCH_ROM_UNROM">SWITCH_ROM_UNROM</a></td>
   1566         </tr>
   1567       </table>
   1568 </div><div class="memdoc">
   1569 <p >Makes default mapper switch the active ROM bank </p><dl class="params"><dt>Parameters</dt><dd>
   1570   <table class="params">
   1571     <tr><td class="paramname">b</td><td>ROM bank to switch to (max 255)</td></tr>
   1572   </table>
   1573   </dd>
   1574 </dl>
   1575 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#SWITCH_ROM_UNROM">SWITCH_ROM_UNROM</a> </dd></dl>
   1576 
   1577 </div>
   1578 </div>
   1579 <a id="SWITCH_RAM" name="SWITCH_RAM"></a>
   1580 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_RAM">&#9670;&nbsp;</a></span>SWITCH_RAM</h2>
   1581 
   1582 <div class="memitem">
   1583 <div class="memproto">
   1584       <table class="memname">
   1585         <tr>
   1586           <td class="memname">#define SWITCH_RAM</td>
   1587           <td>(</td>
   1588           <td class="paramtype">&#160;</td>
   1589           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a></td><td>)</td>
   1590           <td>&#160;&#160;&#160;0</td>
   1591         </tr>
   1592       </table>
   1593 </div><div class="memdoc">
   1594 <p >No-op at the moment. Placeholder for future mappers / test compatibility. </p><dl class="params"><dt>Parameters</dt><dd>
   1595   <table class="params">
   1596     <tr><td class="paramname">b</td><td>SRAM bank to switch to </td></tr>
   1597   </table>
   1598   </dd>
   1599 </dl>
   1600 
   1601 </div>
   1602 </div>
   1603 <a id="ENABLE_RAM" name="ENABLE_RAM"></a>
   1604 <h2 class="memtitle"><span class="permalink"><a href="#ENABLE_RAM">&#9670;&nbsp;</a></span>ENABLE_RAM</h2>
   1605 
   1606 <div class="memitem">
   1607 <div class="memproto">
   1608       <table class="memname">
   1609         <tr>
   1610           <td class="memname">#define ENABLE_RAM</td>
   1611         </tr>
   1612       </table>
   1613 </div><div class="memdoc">
   1614 <p >No-op at the moment. Placeholder for future mappers / test compatibility. </p>
   1615 
   1616 </div>
   1617 </div>
   1618 <a id="DISABLE_RAM" name="DISABLE_RAM"></a>
   1619 <h2 class="memtitle"><span class="permalink"><a href="#DISABLE_RAM">&#9670;&nbsp;</a></span>DISABLE_RAM</h2>
   1620 
   1621 <div class="memitem">
   1622 <div class="memproto">
   1623       <table class="memname">
   1624         <tr>
   1625           <td class="memname">#define DISABLE_RAM</td>
   1626         </tr>
   1627       </table>
   1628 </div><div class="memdoc">
   1629 <p >No-op at the moment. Placeholder for future mappers / test compatibility. </p>
   1630 
   1631 </div>
   1632 </div>
   1633 <a id="DISPLAY_ON" name="DISPLAY_ON"></a>
   1634 <h2 class="memtitle"><span class="permalink"><a href="#DISPLAY_ON">&#9670;&nbsp;</a></span>DISPLAY_ON</h2>
   1635 
   1636 <div class="memitem">
   1637 <div class="memproto">
   1638       <table class="memname">
   1639         <tr>
   1640           <td class="memname">#define DISPLAY_ON&#160;&#160;&#160;  <a class="el" href="nes_8h.html#display_on">display_on</a>();</td>
   1641         </tr>
   1642       </table>
   1643 </div><div class="memdoc">
   1644 <p >Turns the display back on. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#display_off">display_off</a>, <a class="el" href="nes_8h.html#DISPLAY_OFF">DISPLAY_OFF</a> </dd></dl>
   1645 
   1646 </div>
   1647 </div>
   1648 <a id="DISPLAY_OFF" name="DISPLAY_OFF"></a>
   1649 <h2 class="memtitle"><span class="permalink"><a href="#DISPLAY_OFF">&#9670;&nbsp;</a></span>DISPLAY_OFF</h2>
   1650 
   1651 <div class="memitem">
   1652 <div class="memproto">
   1653       <table class="memname">
   1654         <tr>
   1655           <td class="memname">#define DISPLAY_OFF&#160;&#160;&#160;  <a class="el" href="sms_8h.html#display_off">display_off</a>();</td>
   1656         </tr>
   1657       </table>
   1658 </div><div class="memdoc">
   1659 <p >Turns the display off immediately. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#display_off">display_off</a>, <a class="el" href="nes_8h.html#DISPLAY_ON">DISPLAY_ON</a> </dd></dl>
   1660 
   1661 </div>
   1662 </div>
   1663 <a id="HIDE_LEFT_COLUMN" name="HIDE_LEFT_COLUMN"></a>
   1664 <h2 class="memtitle"><span class="permalink"><a href="#HIDE_LEFT_COLUMN">&#9670;&nbsp;</a></span>HIDE_LEFT_COLUMN</h2>
   1665 
   1666 <div class="memitem">
   1667 <div class="memproto">
   1668       <table class="memname">
   1669         <tr>
   1670           <td class="memname">#define HIDE_LEFT_COLUMN&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> &amp;= ~(<a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_BG_LC">PPUMASK_SHOW_BG_LC</a> | <a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_SPR_LC">PPUMASK_SHOW_SPR_LC</a>); \</td>
   1671         </tr>
   1672       </table>
   1673 </div><div class="memdoc">
   1674 <p >Blanks leftmost column, so it is not garbaged when you use horizontal scroll </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#SHOW_LEFT_COLUMN">SHOW_LEFT_COLUMN</a> </dd></dl>
   1675 
   1676 </div>
   1677 </div>
   1678 <a id="SHOW_LEFT_COLUMN" name="SHOW_LEFT_COLUMN"></a>
   1679 <h2 class="memtitle"><span class="permalink"><a href="#SHOW_LEFT_COLUMN">&#9670;&nbsp;</a></span>SHOW_LEFT_COLUMN</h2>
   1680 
   1681 <div class="memitem">
   1682 <div class="memproto">
   1683       <table class="memname">
   1684         <tr>
   1685           <td class="memname">#define SHOW_LEFT_COLUMN&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> |= (<a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_BG_LC">PPUMASK_SHOW_BG_LC</a> | <a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_SPR_LC">PPUMASK_SHOW_SPR_LC</a>);</td>
   1686         </tr>
   1687       </table>
   1688 </div><div class="memdoc">
   1689 <p >Shows leftmost column </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#HIDE_LEFT_COLUMN">HIDE_LEFT_COLUMN</a> </dd></dl>
   1690 
   1691 </div>
   1692 </div>
   1693 <a id="SET_BORDER_COLOR" name="SET_BORDER_COLOR"></a>
   1694 <h2 class="memtitle"><span class="permalink"><a href="#SET_BORDER_COLOR">&#9670;&nbsp;</a></span>SET_BORDER_COLOR</h2>
   1695 
   1696 <div class="memitem">
   1697 <div class="memproto">
   1698       <table class="memname">
   1699         <tr>
   1700           <td class="memname">#define SET_BORDER_COLOR</td>
   1701           <td>(</td>
   1702           <td class="paramtype">&#160;</td>
   1703           <td class="paramname">C</td><td>)</td>
   1704           <td></td>
   1705         </tr>
   1706       </table>
   1707 </div><div class="memdoc">
   1708 <p >Does nothing for NES not implemented yet </p>
   1709 
   1710 </div>
   1711 </div>
   1712 <a id="SHOW_BKG" name="SHOW_BKG"></a>
   1713 <h2 class="memtitle"><span class="permalink"><a href="#SHOW_BKG">&#9670;&nbsp;</a></span>SHOW_BKG</h2>
   1714 
   1715 <div class="memitem">
   1716 <div class="memproto">
   1717       <table class="memname">
   1718         <tr>
   1719           <td class="memname">#define SHOW_BKG&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> |= <a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_BG">PPUMASK_SHOW_BG</a>;</td>
   1720         </tr>
   1721       </table>
   1722 </div><div class="memdoc">
   1723 <p >Turns on the background layer. Sets bit 0 of the LCDC register to 1. </p>
   1724 
   1725 </div>
   1726 </div>
   1727 <a id="HIDE_BKG" name="HIDE_BKG"></a>
   1728 <h2 class="memtitle"><span class="permalink"><a href="#HIDE_BKG">&#9670;&nbsp;</a></span>HIDE_BKG</h2>
   1729 
   1730 <div class="memitem">
   1731 <div class="memproto">
   1732       <table class="memname">
   1733         <tr>
   1734           <td class="memname">#define HIDE_BKG&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> &amp;= ~<a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_BG">PPUMASK_SHOW_BG</a>;</td>
   1735         </tr>
   1736       </table>
   1737 </div><div class="memdoc">
   1738 <p >Turns off the background layer. Sets bit 0 of the LCDC register to 0. </p>
   1739 
   1740 </div>
   1741 </div>
   1742 <a id="SHOW_SPRITES" name="SHOW_SPRITES"></a>
   1743 <h2 class="memtitle"><span class="permalink"><a href="#SHOW_SPRITES">&#9670;&nbsp;</a></span>SHOW_SPRITES</h2>
   1744 
   1745 <div class="memitem">
   1746 <div class="memproto">
   1747       <table class="memname">
   1748         <tr>
   1749           <td class="memname">#define SHOW_SPRITES&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> |= <a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_SPR">PPUMASK_SHOW_SPR</a>;</td>
   1750         </tr>
   1751       </table>
   1752 </div><div class="memdoc">
   1753 <p >Turns on the sprites layer. Sets bit 1 of the LCDC register to 1. </p>
   1754 
   1755 </div>
   1756 </div>
   1757 <a id="HIDE_SPRITES" name="HIDE_SPRITES"></a>
   1758 <h2 class="memtitle"><span class="permalink"><a href="#HIDE_SPRITES">&#9670;&nbsp;</a></span>HIDE_SPRITES</h2>
   1759 
   1760 <div class="memitem">
   1761 <div class="memproto">
   1762       <table class="memname">
   1763         <tr>
   1764           <td class="memname">#define HIDE_SPRITES&#160;&#160;&#160;    <a class="el" href="nes_2hardware_8h.html#shadow_PPUMASK">shadow_PPUMASK</a> &amp;= ~<a class="el" href="nes_2hardware_8h.html#PPUMASK_SHOW_SPR">PPUMASK_SHOW_SPR</a>;</td>
   1765         </tr>
   1766       </table>
   1767 </div><div class="memdoc">
   1768 <p >Turns off the sprites layer. Clears bit 1 of the LCDC register to 0. </p>
   1769 
   1770 </div>
   1771 </div>
   1772 <a id="SPRITES_8x16" name="SPRITES_8x16"></a>
   1773 <h2 class="memtitle"><span class="permalink"><a href="#SPRITES_8x16">&#9670;&nbsp;</a></span>SPRITES_8x16</h2>
   1774 
   1775 <div class="memitem">
   1776 <div class="memproto">
   1777       <table class="memname">
   1778         <tr>
   1779           <td class="memname">#define SPRITES_8x16&#160;&#160;&#160;  <a class="el" href="nes_2hardware_8h.html#shadow_PPUCTRL">shadow_PPUCTRL</a> |= <a class="el" href="nes_2hardware_8h.html#PPUCTRL_SPR_8X16">PPUCTRL_SPR_8X16</a>;</td>
   1780         </tr>
   1781       </table>
   1782 </div><div class="memdoc">
   1783 <p >Sets sprite size to 8x16 pixels, two tiles one above the other. Sets bit 2 of the LCDC register to 1. </p>
   1784 
   1785 </div>
   1786 </div>
   1787 <a id="SPRITES_8x8" name="SPRITES_8x8"></a>
   1788 <h2 class="memtitle"><span class="permalink"><a href="#SPRITES_8x8">&#9670;&nbsp;</a></span>SPRITES_8x8</h2>
   1789 
   1790 <div class="memitem">
   1791 <div class="memproto">
   1792       <table class="memname">
   1793         <tr>
   1794           <td class="memname">#define SPRITES_8x8&#160;&#160;&#160;  <a class="el" href="nes_2hardware_8h.html#shadow_PPUCTRL">shadow_PPUCTRL</a> &amp;= ~<a class="el" href="nes_2hardware_8h.html#PPUCTRL_SPR_8X16">PPUCTRL_SPR_8X16</a>;</td>
   1795         </tr>
   1796       </table>
   1797 </div><div class="memdoc">
   1798 <p >Sets sprite size to 8x8 pixels, one tile. Clears bit 2 of the LCDC register to 0. </p>
   1799 
   1800 </div>
   1801 </div>
   1802 <a id="COMPAT_PALETTE" name="COMPAT_PALETTE"></a>
   1803 <h2 class="memtitle"><span class="permalink"><a href="#COMPAT_PALETTE">&#9670;&nbsp;</a></span>COMPAT_PALETTE</h2>
   1804 
   1805 <div class="memitem">
   1806 <div class="memproto">
   1807       <table class="memname">
   1808         <tr>
   1809           <td class="memname">#define COMPAT_PALETTE</td>
   1810           <td>(</td>
   1811           <td class="paramtype">&#160;</td>
   1812           <td class="paramname">C0, </td>
   1813         </tr>
   1814         <tr>
   1815           <td class="paramkey"></td>
   1816           <td></td>
   1817           <td class="paramtype">&#160;</td>
   1818           <td class="paramname">C1, </td>
   1819         </tr>
   1820         <tr>
   1821           <td class="paramkey"></td>
   1822           <td></td>
   1823           <td class="paramtype">&#160;</td>
   1824           <td class="paramname">C2, </td>
   1825         </tr>
   1826         <tr>
   1827           <td class="paramkey"></td>
   1828           <td></td>
   1829           <td class="paramtype">&#160;</td>
   1830           <td class="paramname">C3&#160;</td>
   1831         </tr>
   1832         <tr>
   1833           <td></td>
   1834           <td>)</td>
   1835           <td></td><td>&#160;&#160;&#160;((<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>)(((C3) &lt;&lt; 6) | ((C2) &lt;&lt; 4) | ((C1) &lt;&lt; 2) | (C0)))</td>
   1836         </tr>
   1837       </table>
   1838 </div><div class="memdoc">
   1839 
   1840 </div>
   1841 </div>
   1842 <a id="set_bkg_2bpp_data" name="set_bkg_2bpp_data"></a>
   1843 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_2bpp_data">&#9670;&nbsp;</a></span>set_bkg_2bpp_data</h2>
   1844 
   1845 <div class="memitem">
   1846 <div class="memproto">
   1847       <table class="memname">
   1848         <tr>
   1849           <td class="memname">#define set_bkg_2bpp_data&#160;&#160;&#160;<a class="el" href="sms_8h.html#set_bkg_data">set_bkg_data</a></td>
   1850         </tr>
   1851       </table>
   1852 </div><div class="memdoc">
   1853 
   1854 </div>
   1855 </div>
   1856 <a id="set_tile_map" name="set_tile_map"></a>
   1857 <h2 class="memtitle"><span class="permalink"><a href="#set_tile_map">&#9670;&nbsp;</a></span>set_tile_map</h2>
   1858 
   1859 <div class="memitem">
   1860 <div class="memproto">
   1861       <table class="memname">
   1862         <tr>
   1863           <td class="memname">#define set_tile_map&#160;&#160;&#160;<a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a></td>
   1864         </tr>
   1865       </table>
   1866 </div><div class="memdoc">
   1867 
   1868 </div>
   1869 </div>
   1870 <a id="set_tile_submap" name="set_tile_submap"></a>
   1871 <h2 class="memtitle"><span class="permalink"><a href="#set_tile_submap">&#9670;&nbsp;</a></span>set_tile_submap</h2>
   1872 
   1873 <div class="memitem">
   1874 <div class="memproto">
   1875       <table class="memname">
   1876         <tr>
   1877           <td class="memname">#define set_tile_submap&#160;&#160;&#160;<a class="el" href="nes_8h.html#set_bkg_submap">set_bkg_submap</a></td>
   1878         </tr>
   1879       </table>
   1880 </div><div class="memdoc">
   1881 
   1882 </div>
   1883 </div>
   1884 <a id="set_tile_xy" name="set_tile_xy"></a>
   1885 <h2 class="memtitle"><span class="permalink"><a href="#set_tile_xy">&#9670;&nbsp;</a></span>set_tile_xy</h2>
   1886 
   1887 <div class="memitem">
   1888 <div class="memproto">
   1889       <table class="memname">
   1890         <tr>
   1891           <td class="memname">#define set_tile_xy&#160;&#160;&#160;<a class="el" href="nes_8h.html#set_bkg_tile_xy">set_bkg_tile_xy</a></td>
   1892         </tr>
   1893       </table>
   1894 </div><div class="memdoc">
   1895 
   1896 </div>
   1897 </div>
   1898 <a id="set_attribute_xy" name="set_attribute_xy"></a>
   1899 <h2 class="memtitle"><span class="permalink"><a href="#set_attribute_xy">&#9670;&nbsp;</a></span>set_attribute_xy</h2>
   1900 
   1901 <div class="memitem">
   1902 <div class="memproto">
   1903       <table class="memname">
   1904         <tr>
   1905           <td class="memname">#define set_attribute_xy&#160;&#160;&#160;<a class="el" href="nes_8h.html#set_bkg_attribute_xy">set_bkg_attribute_xy</a></td>
   1906         </tr>
   1907       </table>
   1908 </div><div class="memdoc">
   1909 
   1910 </div>
   1911 </div>
   1912 <a id="set_sprite_2bpp_data" name="set_sprite_2bpp_data"></a>
   1913 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_2bpp_data">&#9670;&nbsp;</a></span>set_sprite_2bpp_data</h2>
   1914 
   1915 <div class="memitem">
   1916 <div class="memproto">
   1917       <table class="memname">
   1918         <tr>
   1919           <td class="memname">#define set_sprite_2bpp_data&#160;&#160;&#160;<a class="el" href="sms_8h.html#set_sprite_data">set_sprite_data</a></td>
   1920         </tr>
   1921       </table>
   1922 </div><div class="memdoc">
   1923 
   1924 </div>
   1925 </div>
   1926 <a id="DISABLE_OAM_DMA" name="DISABLE_OAM_DMA"></a>
   1927 <h2 class="memtitle"><span class="permalink"><a href="#DISABLE_OAM_DMA">&#9670;&nbsp;</a></span>DISABLE_OAM_DMA</h2>
   1928 
   1929 <div class="memitem">
   1930 <div class="memproto">
   1931       <table class="memname">
   1932         <tr>
   1933           <td class="memname">#define DISABLE_OAM_DMA&#160;&#160;&#160;    <a class="el" href="sms_8h.html#_shadow_OAM_base">_shadow_OAM_base</a> = 0</td>
   1934         </tr>
   1935       </table>
   1936 </div><div class="memdoc">
   1937 
   1938 </div>
   1939 </div>
   1940 <a id="DISABLE_VBL_TRANSFER" name="DISABLE_VBL_TRANSFER"></a>
   1941 <h2 class="memtitle"><span class="permalink"><a href="#DISABLE_VBL_TRANSFER">&#9670;&nbsp;</a></span>DISABLE_VBL_TRANSFER</h2>
   1942 
   1943 <div class="memitem">
   1944 <div class="memproto">
   1945       <table class="memname">
   1946         <tr>
   1947           <td class="memname">#define DISABLE_VBL_TRANSFER&#160;&#160;&#160;<a class="el" href="nes_8h.html#DISABLE_OAM_DMA">DISABLE_OAM_DMA</a></td>
   1948         </tr>
   1949       </table>
   1950 </div><div class="memdoc">
   1951 <p >Disable OAM DMA copy each VBlank </p>
   1952 
   1953 </div>
   1954 </div>
   1955 <a id="ENABLE_OAM_DMA" name="ENABLE_OAM_DMA"></a>
   1956 <h2 class="memtitle"><span class="permalink"><a href="#ENABLE_OAM_DMA">&#9670;&nbsp;</a></span>ENABLE_OAM_DMA</h2>
   1957 
   1958 <div class="memitem">
   1959 <div class="memproto">
   1960       <table class="memname">
   1961         <tr>
   1962           <td class="memname">#define ENABLE_OAM_DMA&#160;&#160;&#160;    <a class="el" href="sms_8h.html#_shadow_OAM_base">_shadow_OAM_base</a> = (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>)((<a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>)&amp;<a class="el" href="sms_8h.html#shadow_OAM">shadow_OAM</a> &gt;&gt; 8)</td>
   1963         </tr>
   1964       </table>
   1965 </div><div class="memdoc">
   1966 
   1967 </div>
   1968 </div>
   1969 <a id="ENABLE_VBL_TRANSFER" name="ENABLE_VBL_TRANSFER"></a>
   1970 <h2 class="memtitle"><span class="permalink"><a href="#ENABLE_VBL_TRANSFER">&#9670;&nbsp;</a></span>ENABLE_VBL_TRANSFER</h2>
   1971 
   1972 <div class="memitem">
   1973 <div class="memproto">
   1974       <table class="memname">
   1975         <tr>
   1976           <td class="memname">#define ENABLE_VBL_TRANSFER&#160;&#160;&#160;<a class="el" href="nes_8h.html#ENABLE_OAM_DMA">ENABLE_OAM_DMA</a></td>
   1977         </tr>
   1978       </table>
   1979 </div><div class="memdoc">
   1980 <p >Enable OAM DMA copy each VBlank and set it to transfer default shadow_OAM array </p>
   1981 
   1982 </div>
   1983 </div>
   1984 <a id="MAX_HARDWARE_SPRITES" name="MAX_HARDWARE_SPRITES"></a>
   1985 <h2 class="memtitle"><span class="permalink"><a href="#MAX_HARDWARE_SPRITES">&#9670;&nbsp;</a></span>MAX_HARDWARE_SPRITES</h2>
   1986 
   1987 <div class="memitem">
   1988 <div class="memproto">
   1989       <table class="memname">
   1990         <tr>
   1991           <td class="memname">#define MAX_HARDWARE_SPRITES&#160;&#160;&#160;64</td>
   1992         </tr>
   1993       </table>
   1994 </div><div class="memdoc">
   1995 <p >Amount of hardware sprites in OAM </p>
   1996 
   1997 </div>
   1998 </div>
   1999 <a id="HARDWARE_SPRITE_CAN_FLIP_X" name="HARDWARE_SPRITE_CAN_FLIP_X"></a>
   2000 <h2 class="memtitle"><span class="permalink"><a href="#HARDWARE_SPRITE_CAN_FLIP_X">&#9670;&nbsp;</a></span>HARDWARE_SPRITE_CAN_FLIP_X</h2>
   2001 
   2002 <div class="memitem">
   2003 <div class="memproto">
   2004       <table class="memname">
   2005         <tr>
   2006           <td class="memname">#define HARDWARE_SPRITE_CAN_FLIP_X&#160;&#160;&#160;1</td>
   2007         </tr>
   2008       </table>
   2009 </div><div class="memdoc">
   2010 <p >True if sprite hardware can flip sprites by X (horizontally) </p>
   2011 
   2012 </div>
   2013 </div>
   2014 <a id="HARDWARE_SPRITE_CAN_FLIP_Y" name="HARDWARE_SPRITE_CAN_FLIP_Y"></a>
   2015 <h2 class="memtitle"><span class="permalink"><a href="#HARDWARE_SPRITE_CAN_FLIP_Y">&#9670;&nbsp;</a></span>HARDWARE_SPRITE_CAN_FLIP_Y</h2>
   2016 
   2017 <div class="memitem">
   2018 <div class="memproto">
   2019       <table class="memname">
   2020         <tr>
   2021           <td class="memname">#define HARDWARE_SPRITE_CAN_FLIP_Y&#160;&#160;&#160;1</td>
   2022         </tr>
   2023       </table>
   2024 </div><div class="memdoc">
   2025 <p >True if sprite hardware can flip sprites by Y (vertically) </p>
   2026 
   2027 </div>
   2028 </div>
   2029 <a id="fill_rect" name="fill_rect"></a>
   2030 <h2 class="memtitle"><span class="permalink"><a href="#fill_rect">&#9670;&nbsp;</a></span>fill_rect</h2>
   2031 
   2032 <div class="memitem">
   2033 <div class="memproto">
   2034       <table class="memname">
   2035         <tr>
   2036           <td class="memname">#define fill_rect&#160;&#160;&#160;<a class="el" href="nes_8h.html#fill_bkg_rect">fill_bkg_rect</a></td>
   2037         </tr>
   2038       </table>
   2039 </div><div class="memdoc">
   2040 
   2041 </div>
   2042 </div>
   2043 <h2 class="groupheader">Typedef Documentation</h2>
   2044 <a id="palette_color_t" name="palette_color_t"></a>
   2045 <h2 class="memtitle"><span class="permalink"><a href="#palette_color_t">&#9670;&nbsp;</a></span>palette_color_t</h2>
   2046 
   2047 <div class="memitem">
   2048 <div class="memproto">
   2049       <table class="memname">
   2050         <tr>
   2051           <td class="memname">typedef <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> <a class="el" href="cgb_8h.html#palette_color_t">palette_color_t</a></td>
   2052         </tr>
   2053       </table>
   2054 </div><div class="memdoc">
   2055 
   2056 </div>
   2057 </div>
   2058 <a id="int_handler" name="int_handler"></a>
   2059 <h2 class="memtitle"><span class="permalink"><a href="#int_handler">&#9670;&nbsp;</a></span>int_handler</h2>
   2060 
   2061 <div class="memitem">
   2062 <div class="memproto">
   2063       <table class="memname">
   2064         <tr>
   2065           <td class="memname">typedef void(* int_handler) (void) <a class="el" href="asm_2types_8h.html#NONBANKED">NONBANKED</a></td>
   2066         </tr>
   2067       </table>
   2068 </div><div class="memdoc">
   2069 <p >Interrupt handlers </p>
   2070 
   2071 </div>
   2072 </div>
   2073 <a id="OAM_item_t" name="OAM_item_t"></a>
   2074 <h2 class="memtitle"><span class="permalink"><a href="#OAM_item_t">&#9670;&nbsp;</a></span>OAM_item_t</h2>
   2075 
   2076 <div class="memitem">
   2077 <div class="memproto">
   2078       <table class="memname">
   2079         <tr>
   2080           <td class="memname">typedef struct <a class="el" href="struct_o_a_m__item__t.html">OAM_item_t</a> <a class="el" href="struct_o_a_m__item__t.html">OAM_item_t</a></td>
   2081         </tr>
   2082       </table>
   2083 </div><div class="memdoc">
   2084 <p >Sprite Attributes structure </p><dl class="params"><dt>Parameters</dt><dd>
   2085   <table class="params">
   2086     <tr><td class="paramname">x</td><td>X Coordinate of the sprite on screen </td></tr>
   2087     <tr><td class="paramname">y</td><td>Y Coordinate of the sprite on screen - 1 </td></tr>
   2088     <tr><td class="paramname">tile</td><td>Sprite tile number (see <a class="el" href="sms_8h.html#set_sprite_tile">set_sprite_tile</a>) </td></tr>
   2089     <tr><td class="paramname">prop</td><td>OAM Property Flags (see <a class="el" href="sms_8h.html#set_sprite_prop">set_sprite_prop</a>) </td></tr>
   2090   </table>
   2091   </dd>
   2092 </dl>
   2093 
   2094 </div>
   2095 </div>
   2096 <h2 class="groupheader">Function Documentation</h2>
   2097 <a id="set_bkg_palette" name="set_bkg_palette"></a>
   2098 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_palette">&#9670;&nbsp;</a></span>set_bkg_palette()</h2>
   2099 
   2100 <div class="memitem">
   2101 <div class="memproto">
   2102       <table class="memname">
   2103         <tr>
   2104           <td class="memname">void set_bkg_palette </td>
   2105           <td>(</td>
   2106           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2107           <td class="paramname"><em>first_palette</em>, </td>
   2108         </tr>
   2109         <tr>
   2110           <td class="paramkey"></td>
   2111           <td></td>
   2112           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2113           <td class="paramname"><em>nb_palettes</em>, </td>
   2114         </tr>
   2115         <tr>
   2116           <td class="paramkey"></td>
   2117           <td></td>
   2118           <td class="paramtype">const <a class="el" href="cgb_8h.html#palette_color_t">palette_color_t</a> *&#160;</td>
   2119           <td class="paramname"><em>rgb_data</em>&#160;</td>
   2120         </tr>
   2121         <tr>
   2122           <td></td>
   2123           <td>)</td>
   2124           <td></td><td></td>
   2125         </tr>
   2126       </table>
   2127 </div><div class="memdoc">
   2128 
   2129 </div>
   2130 </div>
   2131 <a id="set_sprite_palette" name="set_sprite_palette"></a>
   2132 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_palette">&#9670;&nbsp;</a></span>set_sprite_palette()</h2>
   2133 
   2134 <div class="memitem">
   2135 <div class="memproto">
   2136       <table class="memname">
   2137         <tr>
   2138           <td class="memname">void set_sprite_palette </td>
   2139           <td>(</td>
   2140           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2141           <td class="paramname"><em>first_palette</em>, </td>
   2142         </tr>
   2143         <tr>
   2144           <td class="paramkey"></td>
   2145           <td></td>
   2146           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2147           <td class="paramname"><em>nb_palettes</em>, </td>
   2148         </tr>
   2149         <tr>
   2150           <td class="paramkey"></td>
   2151           <td></td>
   2152           <td class="paramtype">const <a class="el" href="cgb_8h.html#palette_color_t">palette_color_t</a> *&#160;</td>
   2153           <td class="paramname"><em>rgb_data</em>&#160;</td>
   2154         </tr>
   2155         <tr>
   2156           <td></td>
   2157           <td>)</td>
   2158           <td></td><td></td>
   2159         </tr>
   2160       </table>
   2161 </div><div class="memdoc">
   2162 
   2163 </div>
   2164 </div>
   2165 <a id="set_bkg_palette_entry" name="set_bkg_palette_entry"></a>
   2166 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_palette_entry">&#9670;&nbsp;</a></span>set_bkg_palette_entry()</h2>
   2167 
   2168 <div class="memitem">
   2169 <div class="memproto">
   2170       <table class="memname">
   2171         <tr>
   2172           <td class="memname">void set_bkg_palette_entry </td>
   2173           <td>(</td>
   2174           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2175           <td class="paramname"><em>palette</em>, </td>
   2176         </tr>
   2177         <tr>
   2178           <td class="paramkey"></td>
   2179           <td></td>
   2180           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2181           <td class="paramname"><em>entry</em>, </td>
   2182         </tr>
   2183         <tr>
   2184           <td class="paramkey"></td>
   2185           <td></td>
   2186           <td class="paramtype"><a class="el" href="cgb_8h.html#palette_color_t">palette_color_t</a>&#160;</td>
   2187           <td class="paramname"><em>rgb_data</em>&#160;</td>
   2188         </tr>
   2189         <tr>
   2190           <td></td>
   2191           <td>)</td>
   2192           <td></td><td></td>
   2193         </tr>
   2194       </table>
   2195 </div><div class="memdoc">
   2196 
   2197 </div>
   2198 </div>
   2199 <a id="set_sprite_palette_entry" name="set_sprite_palette_entry"></a>
   2200 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_palette_entry">&#9670;&nbsp;</a></span>set_sprite_palette_entry()</h2>
   2201 
   2202 <div class="memitem">
   2203 <div class="memproto">
   2204       <table class="memname">
   2205         <tr>
   2206           <td class="memname">void set_sprite_palette_entry </td>
   2207           <td>(</td>
   2208           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2209           <td class="paramname"><em>palette</em>, </td>
   2210         </tr>
   2211         <tr>
   2212           <td class="paramkey"></td>
   2213           <td></td>
   2214           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2215           <td class="paramname"><em>entry</em>, </td>
   2216         </tr>
   2217         <tr>
   2218           <td class="paramkey"></td>
   2219           <td></td>
   2220           <td class="paramtype"><a class="el" href="cgb_8h.html#palette_color_t">palette_color_t</a>&#160;</td>
   2221           <td class="paramname"><em>rgb_data</em>&#160;</td>
   2222         </tr>
   2223         <tr>
   2224           <td></td>
   2225           <td>)</td>
   2226           <td></td><td></td>
   2227         </tr>
   2228       </table>
   2229 </div><div class="memdoc">
   2230 
   2231 </div>
   2232 </div>
   2233 <a id="remove_VBL" name="remove_VBL"></a>
   2234 <h2 class="memtitle"><span class="permalink"><a href="#remove_VBL">&#9670;&nbsp;</a></span>remove_VBL()</h2>
   2235 
   2236 <div class="memitem">
   2237 <div class="memproto">
   2238       <table class="memname">
   2239         <tr>
   2240           <td class="memname">void remove_VBL </td>
   2241           <td>(</td>
   2242           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2243           <td class="paramname"><em>h</em></td><td>)</td>
   2244           <td></td>
   2245         </tr>
   2246       </table>
   2247 </div><div class="memdoc">
   2248 <p >The remove functions will remove any interrupt handler.</p>
   2249 <p >A handler of NULL will cause bad things to happen if the given interrupt is enabled.</p>
   2250 <p >Removes the VBL interrupt handler. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#add_VBL">add_VBL()</a></dd></dl>
   2251 <p>Removes the VBL interrupt handler. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#add_VBL">add_VBL()</a> </dd></dl>
   2252 
   2253 </div>
   2254 </div>
   2255 <a id="remove_LCD" name="remove_LCD"></a>
   2256 <h2 class="memtitle"><span class="permalink"><a href="#remove_LCD">&#9670;&nbsp;</a></span>remove_LCD()</h2>
   2257 
   2258 <div class="memitem">
   2259 <div class="memproto">
   2260       <table class="memname">
   2261         <tr>
   2262           <td class="memname">void remove_LCD </td>
   2263           <td>(</td>
   2264           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2265           <td class="paramname"><em>h</em></td><td>)</td>
   2266           <td></td>
   2267         </tr>
   2268       </table>
   2269 </div><div class="memdoc">
   2270 <p >Removes the LCD interrupt handler. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#add_LCD">add_LCD()</a>, <a class="el" href="nes_8h.html#remove_VBL">remove_VBL()</a> </dd></dl>
   2271 
   2272 </div>
   2273 </div>
   2274 <a id="remove_TIM" name="remove_TIM"></a>
   2275 <h2 class="memtitle"><span class="permalink"><a href="#remove_TIM">&#9670;&nbsp;</a></span>remove_TIM()</h2>
   2276 
   2277 <div class="memitem">
   2278 <div class="memproto">
   2279       <table class="memname">
   2280         <tr>
   2281           <td class="memname">void remove_TIM </td>
   2282           <td>(</td>
   2283           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2284           <td class="paramname"><em>h</em></td><td>)</td>
   2285           <td></td>
   2286         </tr>
   2287       </table>
   2288 </div><div class="memdoc">
   2289 <p >Removes the TIM interrupt handler. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#add_TIM">add_TIM()</a>, <a class="el" href="nes_8h.html#remove_VBL">remove_VBL()</a> </dd></dl>
   2290 
   2291 </div>
   2292 </div>
   2293 <a id="add_VBL" name="add_VBL"></a>
   2294 <h2 class="memtitle"><span class="permalink"><a href="#add_VBL">&#9670;&nbsp;</a></span>add_VBL()</h2>
   2295 
   2296 <div class="memitem">
   2297 <div class="memproto">
   2298       <table class="memname">
   2299         <tr>
   2300           <td class="memname">void add_VBL </td>
   2301           <td>(</td>
   2302           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2303           <td class="paramname"><em>h</em></td><td>)</td>
   2304           <td></td>
   2305         </tr>
   2306       </table>
   2307 </div><div class="memdoc">
   2308 <p >Adds a Vertical Blanking interrupt handler.</p>
   2309 <dl class="params"><dt>Parameters</dt><dd>
   2310   <table class="params">
   2311     <tr><td class="paramname">h</td><td>The handler to be called whenever a V-blank interrupt occurs.</td></tr>
   2312   </table>
   2313   </dd>
   2314 </dl>
   2315 <p>Only a single handler is currently supported for NES.</p>
   2316 <p ><b>Do not</b> use the function definition attributes <a class="el" href="asm_2types_8h.html#CRITICAL">CRITICAL</a> and <a class="el" href="asm_2types_8h.html#INTERRUPT">INTERRUPT</a> when declaring ISR functions added via <a class="el" href="msx_8h.html#add_VBL">add_VBL()</a> (or LCD, etc). Those attributes are only required when constructing a bare jump from the interrupt vector itself (such as with <a class="el" href="isr_8h.html#ISR_VECTOR">ISR_VECTOR()</a>).</p>
   2317 <p >ISR handlers added using <a class="el" href="msx_8h.html#add_VBL">add_VBL()</a>/etc are instead called via the GBDK ISR dispatcher which makes the extra function attributes unecessary.</p>
   2318 <dl class="section note"><dt>Note</dt><dd>The default GBDK VBL is installed automatically.</dd>
   2319 <dd>
   2320 On the current NES implementation, this handler is actually faked, and called before vblank occurs, by <a class="el" href="gb_8h.html#vsync">vsync()</a>. Writes to PPU registers should be done to the shadow_ versions, so they are updated by the default VBL handler only when vblank actually occurs.</dd></dl>
   2321 <dl class="section see"><dt>See also</dt><dd><a class="el" href="isr_8h.html#ISR_VECTOR">ISR_VECTOR()</a></dd></dl>
   2322 <p>Adds a V-blank interrupt handler. </p>
   2323 
   2324 </div>
   2325 </div>
   2326 <a id="add_LCD" name="add_LCD"></a>
   2327 <h2 class="memtitle"><span class="permalink"><a href="#add_LCD">&#9670;&nbsp;</a></span>add_LCD()</h2>
   2328 
   2329 <div class="memitem">
   2330 <div class="memproto">
   2331       <table class="memname">
   2332         <tr>
   2333           <td class="memname">void add_LCD </td>
   2334           <td>(</td>
   2335           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2336           <td class="paramname"><em>h</em></td><td>)</td>
   2337           <td></td>
   2338         </tr>
   2339       </table>
   2340 </div><div class="memdoc">
   2341 <p >Adds a LCD interrupt handler.</p>
   2342 <p >Called when the scanline matches the _lcd_scanline variables.</p>
   2343 <p >Only a single handler is currently supported for NES.</p>
   2344 <p >The use-case is to indicate to the user when the video hardware is about to redraw a given LCD line. This can be useful for dynamically controlling the scrolling registers to perform special video effects.</p>
   2345 <p ><b>Do not</b> use the function definition attributes <a class="el" href="asm_2types_8h.html#CRITICAL">CRITICAL</a> and <a class="el" href="asm_2types_8h.html#INTERRUPT">INTERRUPT</a> when declaring ISR functions added via <a class="el" href="msx_8h.html#add_VBL">add_VBL()</a> (or LCD, etc). Those attributes are only required when constructing a bare jump from the interrupt vector itself (such as with <a class="el" href="isr_8h.html#ISR_VECTOR">ISR_VECTOR()</a>).</p>
   2346 <p >ISR handlers added using <a class="el" href="msx_8h.html#add_VBL">add_VBL()</a>/etc are instead called via the GBDK ISR dispatcher which makes the extra function attributes unecessary.</p>
   2347 <dl class="section note"><dt>Note</dt><dd>On the current NES implementation, this handler is actually faked, and called by the default VBL handler after a manual delay loop. Only one such faked "interrupt" is possible per frame. This means the CPU cycles wasted in the delay loop increase with higher values of _lcd_scanline. In practice, it makes this functionality mostly suited for a top status bar.</dd></dl>
   2348 <dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#add_VBL">add_VBL</a>, <a class="el" href="gb_8h.html#nowait_int_handler">nowait_int_handler</a>, <a class="el" href="isr_8h.html#ISR_VECTOR">ISR_VECTOR()</a></dd></dl>
   2349 <p>Adds a LCD interrupt handler. </p>
   2350 
   2351 </div>
   2352 </div>
   2353 <a id="add_TIM" name="add_TIM"></a>
   2354 <h2 class="memtitle"><span class="permalink"><a href="#add_TIM">&#9670;&nbsp;</a></span>add_TIM()</h2>
   2355 
   2356 <div class="memitem">
   2357 <div class="memproto">
   2358       <table class="memname">
   2359         <tr>
   2360           <td class="memname">void add_TIM </td>
   2361           <td>(</td>
   2362           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2363           <td class="paramname"><em>h</em></td><td>)</td>
   2364           <td></td>
   2365         </tr>
   2366       </table>
   2367 </div><div class="memdoc">
   2368 <p >Adds a timer interrupt handler.</p>
   2369 <p >Can not be used together with <a class="el" href="gb_8h.html#add_low_priority_TIM">add_low_priority_TIM</a></p>
   2370 <p >This interrupt handler is invoked at the end of the NMI handler for gbdk-nes, after first processing the registers writes done by the VBL and and LCD handlers. It is therefore currently limited to 60Hz / 50Hz (depending on system).</p>
   2371 <dl class="section note"><dt>Note</dt><dd>Make sure to wrap TIM interrupt handlers with a nooverlay pragma. For more details see <a class="el" href="docs_supported_consoles.html#docs_nes_tim_overlay">docs_nes_tim_overlay</a></dd></dl>
   2372 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#add_VBL">add_VBL</a> </dd>
   2373 <dd>
   2374 <a class="el" href="nes_8h.html#set_interrupts">set_interrupts()</a> with <a class="el" href="nes_8h.html#TIM_IFLAG">TIM_IFLAG</a>, <a class="el" href="isr_8h.html#ISR_VECTOR">ISR_VECTOR()</a> </dd></dl>
   2375 
   2376 </div>
   2377 </div>
   2378 <a id="mode" name="mode"></a>
   2379 <h2 class="memtitle"><span class="permalink"><a href="#mode">&#9670;&nbsp;</a></span>mode()</h2>
   2380 
   2381 <div class="memitem">
   2382 <div class="memproto">
   2383       <table class="memname">
   2384         <tr>
   2385           <td class="memname">void mode </td>
   2386           <td>(</td>
   2387           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2388           <td class="paramname"><em>m</em></td><td>)</td>
   2389           <td></td>
   2390         </tr>
   2391       </table>
   2392 </div><div class="memdoc">
   2393 <p >Set the current screen mode - one of M_* modes</p>
   2394 <p >Normally used by internal functions only.</p>
   2395 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#M_DRAWING">M_DRAWING</a>, <a class="el" href="nes_8h.html#M_TEXT_OUT">M_TEXT_OUT</a>, <a class="el" href="nes_8h.html#M_TEXT_INOUT">M_TEXT_INOUT</a>, <a class="el" href="nes_8h.html#M_NO_SCROLL">M_NO_SCROLL</a>, <a class="el" href="nes_8h.html#M_NO_INTERP">M_NO_INTERP</a> </dd></dl>
   2396 
   2397 </div>
   2398 </div>
   2399 <a id="get_mode" name="get_mode"></a>
   2400 <h2 class="memtitle"><span class="permalink"><a href="#get_mode">&#9670;&nbsp;</a></span>get_mode()</h2>
   2401 
   2402 <div class="memitem">
   2403 <div class="memproto">
   2404       <table class="memname">
   2405         <tr>
   2406           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_mode </td>
   2407           <td>(</td>
   2408           <td class="paramtype">void&#160;</td>
   2409           <td class="paramname"></td><td>)</td>
   2410           <td></td>
   2411         </tr>
   2412       </table>
   2413 </div><div class="memdoc">
   2414 <p >Returns the current mode</p>
   2415 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#M_DRAWING">M_DRAWING</a>, <a class="el" href="nes_8h.html#M_TEXT_OUT">M_TEXT_OUT</a>, <a class="el" href="nes_8h.html#M_TEXT_INOUT">M_TEXT_INOUT</a>, <a class="el" href="nes_8h.html#M_NO_SCROLL">M_NO_SCROLL</a>, <a class="el" href="nes_8h.html#M_NO_INTERP">M_NO_INTERP</a> </dd></dl>
   2416 
   2417 </div>
   2418 </div>
   2419 <a id="get_system" name="get_system"></a>
   2420 <h2 class="memtitle"><span class="permalink"><a href="#get_system">&#9670;&nbsp;</a></span>get_system()</h2>
   2421 
   2422 <div class="memitem">
   2423 <div class="memproto">
   2424 <table class="mlabels">
   2425   <tr>
   2426   <td class="mlabels-left">
   2427       <table class="memname">
   2428         <tr>
   2429           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_system </td>
   2430           <td>(</td>
   2431           <td class="paramtype">void&#160;</td>
   2432           <td class="paramname"></td><td>)</td>
   2433           <td></td>
   2434         </tr>
   2435       </table>
   2436   </td>
   2437   <td class="mlabels-right">
   2438 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   2439   </tr>
   2440 </table>
   2441 </div><div class="memdoc">
   2442 <p >Returns the system gbdk is running on. </p>
   2443 
   2444 </div>
   2445 </div>
   2446 <a id="delay" name="delay"></a>
   2447 <h2 class="memtitle"><span class="permalink"><a href="#delay">&#9670;&nbsp;</a></span>delay()</h2>
   2448 
   2449 <div class="memitem">
   2450 <div class="memproto">
   2451       <table class="memname">
   2452         <tr>
   2453           <td class="memname">void delay </td>
   2454           <td>(</td>
   2455           <td class="paramtype"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td>
   2456           <td class="paramname"><em>d</em></td><td>)</td>
   2457           <td></td>
   2458         </tr>
   2459       </table>
   2460 </div><div class="memdoc">
   2461 <p >Delays the given number of milliseconds. Uses no timers or interrupts, and can be called with interrupts disabled </p>
   2462 
   2463 </div>
   2464 </div>
   2465 <a id="joypad" name="joypad"></a>
   2466 <h2 class="memtitle"><span class="permalink"><a href="#joypad">&#9670;&nbsp;</a></span>joypad()</h2>
   2467 
   2468 <div class="memitem">
   2469 <div class="memproto">
   2470       <table class="memname">
   2471         <tr>
   2472           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> joypad </td>
   2473           <td>(</td>
   2474           <td class="paramtype">void&#160;</td>
   2475           <td class="paramname"></td><td>)</td>
   2476           <td></td>
   2477         </tr>
   2478       </table>
   2479 </div><div class="memdoc">
   2480 <p >Reads and returns the current state of the joypad. Return value is an OR of J_*</p>
   2481 <p >When testing for multiple different buttons, it's best to read the joypad state <em>once</em> into a variable and then test using that variable.</p>
   2482 <dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#J_START">J_START</a>, <a class="el" href="msx_8h.html#J_SELECT">J_SELECT</a>, <a class="el" href="msx_8h.html#J_A">J_A</a>, <a class="el" href="msx_8h.html#J_B">J_B</a>, <a class="el" href="msx_8h.html#J_UP">J_UP</a>, <a class="el" href="msx_8h.html#J_DOWN">J_DOWN</a>, <a class="el" href="msx_8h.html#J_LEFT">J_LEFT</a>, <a class="el" href="msx_8h.html#J_RIGHT">J_RIGHT</a></dd></dl>
   2483 <p>Reads and returns the current state of the joypad. Follows Nintendo's guidelines for reading the pad. Return value is an OR of J_*</p>
   2484 <p >When testing for multiple different buttons, it's best to read the joypad state <em>once</em> into a variable and then test using that variable.</p>
   2485 <dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#J_START">J_START</a>, <a class="el" href="msx_8h.html#J_SELECT">J_SELECT</a>, <a class="el" href="msx_8h.html#J_A">J_A</a>, <a class="el" href="msx_8h.html#J_B">J_B</a>, <a class="el" href="msx_8h.html#J_UP">J_UP</a>, <a class="el" href="msx_8h.html#J_DOWN">J_DOWN</a>, <a class="el" href="msx_8h.html#J_LEFT">J_LEFT</a>, <a class="el" href="msx_8h.html#J_RIGHT">J_RIGHT</a></dd></dl>
   2486 <p>Reads and returns the current state of the joypad. </p>
   2487 
   2488 </div>
   2489 </div>
   2490 <a id="waitpad" name="waitpad"></a>
   2491 <h2 class="memtitle"><span class="permalink"><a href="#waitpad">&#9670;&nbsp;</a></span>waitpad()</h2>
   2492 
   2493 <div class="memitem">
   2494 <div class="memproto">
   2495       <table class="memname">
   2496         <tr>
   2497           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> waitpad </td>
   2498           <td>(</td>
   2499           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2500           <td class="paramname"><em>mask</em></td><td>)</td>
   2501           <td></td>
   2502         </tr>
   2503       </table>
   2504 </div><div class="memdoc">
   2505 <p >Waits until at least one of the buttons given in mask are pressed.</p>
   2506 <p >Normally only used for checking one key, but it will support many, even J_LEFT at the same time as J_RIGHT. :)</p>
   2507 <dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#joypad">joypad</a> </dd>
   2508 <dd>
   2509 <a class="el" href="msx_8h.html#J_START">J_START</a>, <a class="el" href="msx_8h.html#J_SELECT">J_SELECT</a>, <a class="el" href="msx_8h.html#J_A">J_A</a>, <a class="el" href="msx_8h.html#J_B">J_B</a>, <a class="el" href="msx_8h.html#J_UP">J_UP</a>, <a class="el" href="msx_8h.html#J_DOWN">J_DOWN</a>, <a class="el" href="msx_8h.html#J_LEFT">J_LEFT</a>, <a class="el" href="msx_8h.html#J_RIGHT">J_RIGHT</a></dd></dl>
   2510 <p>Waits until at least one of the buttons given in mask are pressed.</p>
   2511 <dl class="params"><dt>Parameters</dt><dd>
   2512   <table class="params">
   2513     <tr><td class="paramname">mask</td><td>Bitmask indicating which buttons to wait for</td></tr>
   2514   </table>
   2515   </dd>
   2516 </dl>
   2517 <p>Normally only used for checking one key, but it will support many, even J_LEFT at the same time as J_RIGHT. :)</p>
   2518 <dl class="section note"><dt>Note</dt><dd>Checks in a loop that doesn't HALT at all, so the CPU will be maxed out until this call returns. </dd></dl>
   2519 <dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#joypad">joypad</a> </dd>
   2520 <dd>
   2521 <a class="el" href="msx_8h.html#J_START">J_START</a>, <a class="el" href="msx_8h.html#J_SELECT">J_SELECT</a>, <a class="el" href="msx_8h.html#J_A">J_A</a>, <a class="el" href="msx_8h.html#J_B">J_B</a>, <a class="el" href="msx_8h.html#J_UP">J_UP</a>, <a class="el" href="msx_8h.html#J_DOWN">J_DOWN</a>, <a class="el" href="msx_8h.html#J_LEFT">J_LEFT</a>, <a class="el" href="msx_8h.html#J_RIGHT">J_RIGHT</a></dd></dl>
   2522 <p>Waits until at least one of the buttons given in mask are pressed. </p>
   2523 
   2524 </div>
   2525 </div>
   2526 <a id="waitpadup" name="waitpadup"></a>
   2527 <h2 class="memtitle"><span class="permalink"><a href="#waitpadup">&#9670;&nbsp;</a></span>waitpadup()</h2>
   2528 
   2529 <div class="memitem">
   2530 <div class="memproto">
   2531       <table class="memname">
   2532         <tr>
   2533           <td class="memname">void waitpadup </td>
   2534           <td>(</td>
   2535           <td class="paramtype">void&#160;</td>
   2536           <td class="paramname"></td><td>)</td>
   2537           <td></td>
   2538         </tr>
   2539       </table>
   2540 </div><div class="memdoc">
   2541 <p >Waits for the directional pad and all buttons to be released.</p>
   2542 <p >Waits for the directional pad and all buttons to be released.</p>
   2543 <dl class="section note"><dt>Note</dt><dd>Checks in a loop that doesn't HALT at all, so the CPU will be maxed out until this call returns.</dd></dl>
   2544 <p>Waits for the directional pad and all buttons to be released.</p>
   2545 <p >Note: Checks in a loop that doesn't HALT at all, so the CPU will be maxed out until this call returns. </p>
   2546 
   2547 </div>
   2548 </div>
   2549 <a id="joypad_init" name="joypad_init"></a>
   2550 <h2 class="memtitle"><span class="permalink"><a href="#joypad_init">&#9670;&nbsp;</a></span>joypad_init()</h2>
   2551 
   2552 <div class="memitem">
   2553 <div class="memproto">
   2554       <table class="memname">
   2555         <tr>
   2556           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> joypad_init </td>
   2557           <td>(</td>
   2558           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2559           <td class="paramname"><em>npads</em>, </td>
   2560         </tr>
   2561         <tr>
   2562           <td class="paramkey"></td>
   2563           <td></td>
   2564           <td class="paramtype"><a class="el" href="structjoypads__t.html">joypads_t</a> *&#160;</td>
   2565           <td class="paramname"><em>joypads</em>&#160;</td>
   2566         </tr>
   2567         <tr>
   2568           <td></td>
   2569           <td>)</td>
   2570           <td></td><td></td>
   2571         </tr>
   2572       </table>
   2573 </div><div class="memdoc">
   2574 <p >Initializes <a class="el" href="structjoypads__t.html">joypads_t</a> structure for polling multiple joypads </p><dl class="params"><dt>Parameters</dt><dd>
   2575   <table class="params">
   2576     <tr><td class="paramname">npads</td><td>number of joypads requested (1, 2 or 4) </td></tr>
   2577     <tr><td class="paramname">joypads</td><td>pointer to <a class="el" href="structjoypads__t.html">joypads_t</a> structure to be initialized</td></tr>
   2578   </table>
   2579   </dd>
   2580 </dl>
   2581 <p>Only required for <a class="el" href="sms_8h.html#joypad_ex">joypad_ex</a>, not required for calls to regular <a class="el" href="gb_8h.html#joypad">joypad()</a> </p><dl class="section return"><dt>Returns</dt><dd>number of joypads avaliable </dd></dl>
   2582 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#joypad_ex">joypad_ex()</a>, <a class="el" href="structjoypads__t.html">joypads_t</a> </dd></dl>
   2583 
   2584 </div>
   2585 </div>
   2586 <a id="joypad_ex" name="joypad_ex"></a>
   2587 <h2 class="memtitle"><span class="permalink"><a href="#joypad_ex">&#9670;&nbsp;</a></span>joypad_ex()</h2>
   2588 
   2589 <div class="memitem">
   2590 <div class="memproto">
   2591       <table class="memname">
   2592         <tr>
   2593           <td class="memname">void joypad_ex </td>
   2594           <td>(</td>
   2595           <td class="paramtype"><a class="el" href="structjoypads__t.html">joypads_t</a> *&#160;</td>
   2596           <td class="paramname"><em>joypads</em></td><td>)</td>
   2597           <td></td>
   2598         </tr>
   2599       </table>
   2600 </div><div class="memdoc">
   2601 <p >Polls all avaliable joypads</p>
   2602 <dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#joypad_init">joypad_init()</a>, <a class="el" href="structjoypads__t.html">joypads_t</a></dd></dl>
   2603 <p>Polls all avaliable joypads (for the GB and ones connected via SGB) </p><dl class="params"><dt>Parameters</dt><dd>
   2604   <table class="params">
   2605     <tr><td class="paramname">joypads</td><td>pointer to <a class="el" href="structjoypads__t.html">joypads_t</a> structure to be filled with joypad statuses, must be previously initialized with <a class="el" href="msx_8h.html#joypad_init">joypad_init()</a></td></tr>
   2606   </table>
   2607   </dd>
   2608 </dl>
   2609 <dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#joypad_init">joypad_init()</a>, <a class="el" href="structjoypads__t.html">joypads_t</a></dd></dl>
   2610 <p>Polls all avaliable joypads </p><dl class="params"><dt>Parameters</dt><dd>
   2611   <table class="params">
   2612     <tr><td class="paramname">joypads</td><td>pointer to <a class="el" href="structjoypads__t.html">joypads_t</a> structure to be filled with joypad statuses, must be previously initialized with <a class="el" href="msx_8h.html#joypad_init">joypad_init()</a></td></tr>
   2613   </table>
   2614   </dd>
   2615 </dl>
   2616 <dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#joypad_init">joypad_init()</a>, <a class="el" href="structjoypads__t.html">joypads_t</a> </dd></dl>
   2617 
   2618 </div>
   2619 </div>
   2620 <a id="enable_interrupts" name="enable_interrupts"></a>
   2621 <h2 class="memtitle"><span class="permalink"><a href="#enable_interrupts">&#9670;&nbsp;</a></span>enable_interrupts()</h2>
   2622 
   2623 <div class="memitem">
   2624 <div class="memproto">
   2625 <table class="mlabels">
   2626   <tr>
   2627   <td class="mlabels-left">
   2628       <table class="memname">
   2629         <tr>
   2630           <td class="memname">void enable_interrupts </td>
   2631           <td>(</td>
   2632           <td class="paramtype">void&#160;</td>
   2633           <td class="paramname"></td><td>)</td>
   2634           <td></td>
   2635         </tr>
   2636       </table>
   2637   </td>
   2638   <td class="mlabels-right">
   2639 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   2640   </tr>
   2641 </table>
   2642 </div><div class="memdoc">
   2643 <p >Enables unmasked interrupts</p>
   2644 <dl class="section note"><dt>Note</dt><dd>Use <a class="el" href="asm_2types_8h.html#CRITICAL">CRITICAL</a> {...} instead for creating a block of of code which should execute with interrupts temporarily turned off.</dd></dl>
   2645 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#disable_interrupts">disable_interrupts</a>, <a class="el" href="nes_8h.html#set_interrupts">set_interrupts</a>, <a class="el" href="asm_2types_8h.html#CRITICAL">CRITICAL</a> </dd></dl>
   2646 
   2647 </div>
   2648 </div>
   2649 <a id="disable_interrupts" name="disable_interrupts"></a>
   2650 <h2 class="memtitle"><span class="permalink"><a href="#disable_interrupts">&#9670;&nbsp;</a></span>disable_interrupts()</h2>
   2651 
   2652 <div class="memitem">
   2653 <div class="memproto">
   2654 <table class="mlabels">
   2655   <tr>
   2656   <td class="mlabels-left">
   2657       <table class="memname">
   2658         <tr>
   2659           <td class="memname">void disable_interrupts </td>
   2660           <td>(</td>
   2661           <td class="paramtype">void&#160;</td>
   2662           <td class="paramname"></td><td>)</td>
   2663           <td></td>
   2664         </tr>
   2665       </table>
   2666   </td>
   2667   <td class="mlabels-right">
   2668 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   2669   </tr>
   2670 </table>
   2671 </div><div class="memdoc">
   2672 <p >Disables interrupts</p>
   2673 <dl class="section note"><dt>Note</dt><dd>Use <a class="el" href="asm_2types_8h.html#CRITICAL">CRITICAL</a> {...} instead for creating a block of of code which should execute with interrupts temporarily turned off.</dd></dl>
   2674 <p>This function may be called as many times as you like; however the first call to <a class="el" href="sms_8h.html#enable_interrupts">enable_interrupts</a> will re-enable them.</p>
   2675 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#enable_interrupts">enable_interrupts</a>, <a class="el" href="nes_8h.html#set_interrupts">set_interrupts</a>, <a class="el" href="asm_2types_8h.html#CRITICAL">CRITICAL</a> </dd></dl>
   2676 
   2677 </div>
   2678 </div>
   2679 <a id="set_interrupts" name="set_interrupts"></a>
   2680 <h2 class="memtitle"><span class="permalink"><a href="#set_interrupts">&#9670;&nbsp;</a></span>set_interrupts()</h2>
   2681 
   2682 <div class="memitem">
   2683 <div class="memproto">
   2684       <table class="memname">
   2685         <tr>
   2686           <td class="memname">void set_interrupts </td>
   2687           <td>(</td>
   2688           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2689           <td class="paramname"><em>flags</em></td><td>)</td>
   2690           <td></td>
   2691         </tr>
   2692       </table>
   2693 </div><div class="memdoc">
   2694 <p >Sets the interrupt mask to flags. </p><dl class="params"><dt>Parameters</dt><dd>
   2695   <table class="params">
   2696     <tr><td class="paramname">flags</td><td>A logical OR of *_IFLAGS</td></tr>
   2697   </table>
   2698   </dd>
   2699 </dl>
   2700 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#VBL_IFLAG">VBL_IFLAG</a>, <a class="el" href="gb_8h.html#LCD_IFLAG">LCD_IFLAG</a>, <a class="el" href="gb_8h.html#TIM_IFLAG">TIM_IFLAG</a></dd></dl>
   2701 <p>Clears any pending interrupts and sets the interrupt mask register IO to flags. </p><dl class="params"><dt>Parameters</dt><dd>
   2702   <table class="params">
   2703     <tr><td class="paramname">flags</td><td>A logical OR of *_IFLAGS</td></tr>
   2704   </table>
   2705   </dd>
   2706 </dl>
   2707 <dl class="section note"><dt>Note</dt><dd>This disables and then re-enables interrupts so it must be used outside of a critical section.</dd></dl>
   2708 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#enable_interrupts">enable_interrupts()</a>, <a class="el" href="gb_8h.html#disable_interrupts">disable_interrupts()</a> </dd>
   2709 <dd>
   2710 <a class="el" href="gb_8h.html#VBL_IFLAG">VBL_IFLAG</a>, <a class="el" href="gb_8h.html#LCD_IFLAG">LCD_IFLAG</a>, <a class="el" href="gb_8h.html#TIM_IFLAG">TIM_IFLAG</a>, <a class="el" href="gb_8h.html#SIO_IFLAG">SIO_IFLAG</a>, <a class="el" href="gb_8h.html#JOY_IFLAG">JOY_IFLAG</a> </dd></dl>
   2711 
   2712 </div>
   2713 </div>
   2714 <a id="reset" name="reset"></a>
   2715 <h2 class="memtitle"><span class="permalink"><a href="#reset">&#9670;&nbsp;</a></span>reset()</h2>
   2716 
   2717 <div class="memitem">
   2718 <div class="memproto">
   2719 <table class="mlabels">
   2720   <tr>
   2721   <td class="mlabels-left">
   2722       <table class="memname">
   2723         <tr>
   2724           <td class="memname">void reset </td>
   2725           <td>(</td>
   2726           <td class="paramtype">void&#160;</td>
   2727           <td class="paramname"></td><td>)</td>
   2728           <td></td>
   2729         </tr>
   2730       </table>
   2731   </td>
   2732   <td class="mlabels-right">
   2733 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   2734   </tr>
   2735 </table>
   2736 </div><div class="memdoc">
   2737 <p >Performs a soft reset.</p>
   2738 <p >For the Game Boy and related it does this by jumping to address 0x0150 which is in crt0.s (the c-runtime that executes before main() is called).</p>
   2739 <p >This performs various startup steps such as resetting the stack, clearing WRAM and OAM, resetting initialized variables and some display registers (scroll, window, LCDC), etc.</p>
   2740 <p >This is not the same a hard power reset. </p>
   2741 
   2742 </div>
   2743 </div>
   2744 <a id="vsync" name="vsync"></a>
   2745 <h2 class="memtitle"><span class="permalink"><a href="#vsync">&#9670;&nbsp;</a></span>vsync()</h2>
   2746 
   2747 <div class="memitem">
   2748 <div class="memproto">
   2749       <table class="memname">
   2750         <tr>
   2751           <td class="memname">void vsync </td>
   2752           <td>(</td>
   2753           <td class="paramtype">void&#160;</td>
   2754           <td class="paramname"></td><td>)</td>
   2755           <td></td>
   2756         </tr>
   2757       </table>
   2758 </div><div class="memdoc">
   2759 <p >Waits for the vertical blank interrupt.</p>
   2760 <p >This is often used in main loops to idle the CPU until it's time to start the next frame. It's also useful for syncing animation with the screen re-draw.</p>
   2761 <p >Warning: If the VBL interrupt is disabled, this function will never return.</p>
   2762 <p >HALTs the CPU and waits for the vertical blank interrupt and then returns when all registered VBL ISRs have completed.</p>
   2763 <p >This is often used in main loops to idle the CPU at low power until it's time to start the next frame. It's also useful for syncing animation with the screen re-draw.</p>
   2764 <p >Warning: If the VBL interrupt is disabled, this function will never return. If the screen is off this function returns immediately.</p>
   2765 <p >HALTs the CPU and waits for the vertical blank interrupt.</p>
   2766 <p >This is often used in main loops to idle the CPU at low power until it's time to start the next frame. It's also useful for syncing animation with the screen re-draw.</p>
   2767 <p >Warning: If the VBL interrupt is disabled, this function will never return. If the screen is off this function returns immediately. </p>
   2768 
   2769 </div>
   2770 </div>
   2771 <a id="wait_vbl_done" name="wait_vbl_done"></a>
   2772 <h2 class="memtitle"><span class="permalink"><a href="#wait_vbl_done">&#9670;&nbsp;</a></span>wait_vbl_done()</h2>
   2773 
   2774 <div class="memitem">
   2775 <div class="memproto">
   2776       <table class="memname">
   2777         <tr>
   2778           <td class="memname">void wait_vbl_done </td>
   2779           <td>(</td>
   2780           <td class="paramtype">void&#160;</td>
   2781           <td class="paramname"></td><td>)</td>
   2782           <td></td>
   2783         </tr>
   2784       </table>
   2785 </div><div class="memdoc">
   2786 <p >Obsolete. This function has been replaced by <a class="el" href="nes_8h.html#vsync">vsync()</a>, which has identical behavior. </p>
   2787 
   2788 </div>
   2789 </div>
   2790 <a id="display_on" name="display_on"></a>
   2791 <h2 class="memtitle"><span class="permalink"><a href="#display_on">&#9670;&nbsp;</a></span>display_on()</h2>
   2792 
   2793 <div class="memitem">
   2794 <div class="memproto">
   2795       <table class="memname">
   2796         <tr>
   2797           <td class="memname">void display_on </td>
   2798           <td>(</td>
   2799           <td class="paramtype">void&#160;</td>
   2800           <td class="paramname"></td><td>)</td>
   2801           <td></td>
   2802         </tr>
   2803       </table>
   2804 </div><div class="memdoc">
   2805 <p >Turns the display on.</p>
   2806 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#DISPLAY_ON">DISPLAY_ON</a> </dd></dl>
   2807 
   2808 </div>
   2809 </div>
   2810 <a id="display_off" name="display_off"></a>
   2811 <h2 class="memtitle"><span class="permalink"><a href="#display_off">&#9670;&nbsp;</a></span>display_off()</h2>
   2812 
   2813 <div class="memitem">
   2814 <div class="memproto">
   2815 <table class="mlabels">
   2816   <tr>
   2817   <td class="mlabels-left">
   2818       <table class="memname">
   2819         <tr>
   2820           <td class="memname">void display_off </td>
   2821           <td>(</td>
   2822           <td class="paramtype">void&#160;</td>
   2823           <td class="paramname"></td><td>)</td>
   2824           <td></td>
   2825         </tr>
   2826       </table>
   2827   </td>
   2828   <td class="mlabels-right">
   2829 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   2830   </tr>
   2831 </table>
   2832 </div><div class="memdoc">
   2833 <p >Turns the display off immediately. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#DISPLAY_ON">DISPLAY_ON</a></dd></dl>
   2834 <p>Turns the display off.</p>
   2835 <p >Waits until the VBL before turning the display off. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#DISPLAY_ON">DISPLAY_ON</a></dd></dl>
   2836 <p>Turns the display off.</p>
   2837 <dl class="section see"><dt>See also</dt><dd><a class="el" href="msx_8h.html#DISPLAY_ON">DISPLAY_ON</a> </dd></dl>
   2838 
   2839 </div>
   2840 </div>
   2841 <a id="refresh_OAM" name="refresh_OAM"></a>
   2842 <h2 class="memtitle"><span class="permalink"><a href="#refresh_OAM">&#9670;&nbsp;</a></span>refresh_OAM()</h2>
   2843 
   2844 <div class="memitem">
   2845 <div class="memproto">
   2846       <table class="memname">
   2847         <tr>
   2848           <td class="memname">void refresh_OAM </td>
   2849           <td>(</td>
   2850           <td class="paramtype">void&#160;</td>
   2851           <td class="paramname"></td><td>)</td>
   2852           <td></td>
   2853         </tr>
   2854       </table>
   2855 </div><div class="memdoc">
   2856 <p >Copies data from shadow OAM to OAM </p>
   2857 
   2858 </div>
   2859 </div>
   2860 <a id="set_vram_byte" name="set_vram_byte"></a>
   2861 <h2 class="memtitle"><span class="permalink"><a href="#set_vram_byte">&#9670;&nbsp;</a></span>set_vram_byte()</h2>
   2862 
   2863 <div class="memitem">
   2864 <div class="memproto">
   2865       <table class="memname">
   2866         <tr>
   2867           <td class="memname">void set_vram_byte </td>
   2868           <td>(</td>
   2869           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   2870           <td class="paramname"><em>addr</em>, </td>
   2871         </tr>
   2872         <tr>
   2873           <td class="paramkey"></td>
   2874           <td></td>
   2875           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2876           <td class="paramname"><em>v</em>&#160;</td>
   2877         </tr>
   2878         <tr>
   2879           <td></td>
   2880           <td>)</td>
   2881           <td></td><td></td>
   2882         </tr>
   2883       </table>
   2884 </div><div class="memdoc">
   2885 <p >Set byte in vram at given memory location</p>
   2886 <dl class="params"><dt>Parameters</dt><dd>
   2887   <table class="params">
   2888     <tr><td class="paramname">addr</td><td>address to write to </td></tr>
   2889     <tr><td class="paramname">v</td><td>value </td></tr>
   2890   </table>
   2891   </dd>
   2892 </dl>
   2893 
   2894 </div>
   2895 </div>
   2896 <a id="get_bkg_xy_addr" name="get_bkg_xy_addr"></a>
   2897 <h2 class="memtitle"><span class="permalink"><a href="#get_bkg_xy_addr">&#9670;&nbsp;</a></span>get_bkg_xy_addr()</h2>
   2898 
   2899 <div class="memitem">
   2900 <div class="memproto">
   2901       <table class="memname">
   2902         <tr>
   2903           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> * get_bkg_xy_addr </td>
   2904           <td>(</td>
   2905           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2906           <td class="paramname"><em>x</em>, </td>
   2907         </tr>
   2908         <tr>
   2909           <td class="paramkey"></td>
   2910           <td></td>
   2911           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2912           <td class="paramname"><em>y</em>&#160;</td>
   2913         </tr>
   2914         <tr>
   2915           <td></td>
   2916           <td>)</td>
   2917           <td></td><td></td>
   2918         </tr>
   2919       </table>
   2920 </div><div class="memdoc">
   2921 <p >Get address of X,Y tile of background map </p>
   2922 
   2923 </div>
   2924 </div>
   2925 <a id="set_2bpp_palette" name="set_2bpp_palette"></a>
   2926 <h2 class="memtitle"><span class="permalink"><a href="#set_2bpp_palette">&#9670;&nbsp;</a></span>set_2bpp_palette()</h2>
   2927 
   2928 <div class="memitem">
   2929 <div class="memproto">
   2930 <table class="mlabels">
   2931   <tr>
   2932   <td class="mlabels-left">
   2933       <table class="memname">
   2934         <tr>
   2935           <td class="memname">void set_2bpp_palette </td>
   2936           <td>(</td>
   2937           <td class="paramtype"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td>
   2938           <td class="paramname"><em>palette</em></td><td>)</td>
   2939           <td></td>
   2940         </tr>
   2941       </table>
   2942   </td>
   2943   <td class="mlabels-right">
   2944 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   2945   </tr>
   2946 </table>
   2947 </div><div class="memdoc">
   2948 <p >Sets palette for 2bpp color translation for GG/SMS, does nothing on GB </p>
   2949 
   2950 </div>
   2951 </div>
   2952 <a id="set_1bpp_colors_ex" name="set_1bpp_colors_ex"></a>
   2953 <h2 class="memtitle"><span class="permalink"><a href="#set_1bpp_colors_ex">&#9670;&nbsp;</a></span>set_1bpp_colors_ex()</h2>
   2954 
   2955 <div class="memitem">
   2956 <div class="memproto">
   2957       <table class="memname">
   2958         <tr>
   2959           <td class="memname">void set_1bpp_colors_ex </td>
   2960           <td>(</td>
   2961           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2962           <td class="paramname"><em>fgcolor</em>, </td>
   2963         </tr>
   2964         <tr>
   2965           <td class="paramkey"></td>
   2966           <td></td>
   2967           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2968           <td class="paramname"><em>bgcolor</em>, </td>
   2969         </tr>
   2970         <tr>
   2971           <td class="paramkey"></td>
   2972           <td></td>
   2973           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2974           <td class="paramname"><em>mode</em>&#160;</td>
   2975         </tr>
   2976         <tr>
   2977           <td></td>
   2978           <td>)</td>
   2979           <td></td><td></td>
   2980         </tr>
   2981       </table>
   2982 </div><div class="memdoc">
   2983 
   2984 </div>
   2985 </div>
   2986 <a id="set_1bpp_colors" name="set_1bpp_colors"></a>
   2987 <h2 class="memtitle"><span class="permalink"><a href="#set_1bpp_colors">&#9670;&nbsp;</a></span>set_1bpp_colors()</h2>
   2988 
   2989 <div class="memitem">
   2990 <div class="memproto">
   2991 <table class="mlabels">
   2992   <tr>
   2993   <td class="mlabels-left">
   2994       <table class="memname">
   2995         <tr>
   2996           <td class="memname">void set_1bpp_colors </td>
   2997           <td>(</td>
   2998           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2999           <td class="paramname"><em>fgcolor</em>, </td>
   3000         </tr>
   3001         <tr>
   3002           <td class="paramkey"></td>
   3003           <td></td>
   3004           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3005           <td class="paramname"><em>bgcolor</em>&#160;</td>
   3006         </tr>
   3007         <tr>
   3008           <td></td>
   3009           <td>)</td>
   3010           <td></td><td></td>
   3011         </tr>
   3012       </table>
   3013   </td>
   3014   <td class="mlabels-right">
   3015 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3016   </tr>
   3017 </table>
   3018 </div><div class="memdoc">
   3019 
   3020 </div>
   3021 </div>
   3022 <a id="set_bkg_data" name="set_bkg_data"></a>
   3023 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_data">&#9670;&nbsp;</a></span>set_bkg_data()</h2>
   3024 
   3025 <div class="memitem">
   3026 <div class="memproto">
   3027       <table class="memname">
   3028         <tr>
   3029           <td class="memname">void set_bkg_data </td>
   3030           <td>(</td>
   3031           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3032           <td class="paramname"><em>first_tile</em>, </td>
   3033         </tr>
   3034         <tr>
   3035           <td class="paramkey"></td>
   3036           <td></td>
   3037           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3038           <td class="paramname"><em>nb_tiles</em>, </td>
   3039         </tr>
   3040         <tr>
   3041           <td class="paramkey"></td>
   3042           <td></td>
   3043           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3044           <td class="paramname"><em>data</em>&#160;</td>
   3045         </tr>
   3046         <tr>
   3047           <td></td>
   3048           <td>)</td>
   3049           <td></td><td></td>
   3050         </tr>
   3051       </table>
   3052 </div><div class="memdoc">
   3053 <p >Sets VRAM Tile Pattern data for the Background</p>
   3054 <p >Writes <b>nb_tiles</b> tiles to VRAM starting at <b>first_tile</b>, tile data is sourced from <b>data</b>. Each Tile is 16 bytes in size (8x8 pixels, 2 bits-per-pixel).</p>
   3055 <p >Note: Sprite Tiles 128-255 share the same memory region as Background Tiles 128-255.</p>
   3056 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_tile_data">set_tile_data</a></dd></dl>
   3057 <p>Sets VRAM Tile Pattern data for the Background / Window</p>
   3058 <dl class="params"><dt>Parameters</dt><dd>
   3059   <table class="params">
   3060     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   3061     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   3062     <tr><td class="paramname">data</td><td>Pointer to (2 bpp) source tile data</td></tr>
   3063   </table>
   3064   </dd>
   3065 </dl>
   3066 <p>Writes <b>nb_tiles</b> tiles to VRAM starting at <b>first_tile</b>, tile data is sourced from <b>data</b>. Each Tile is 16 bytes in size (8x8 pixels, 2 bits-per-pixel).</p>
   3067 <dl class="section note"><dt>Note</dt><dd>Sprite Tiles 128-255 share the same memory region as Background Tiles 128-255.</dd></dl>
   3068 <p>GBC only: <a class="el" href="gb_2hardware_8h.html#VBK_REG">VBK_REG</a> determines which bank of tile patterns are written to. </p><ul>
   3069 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_0">VBK_BANK_0</a> indicates the first bank </li>
   3070 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_1">VBK_BANK_1</a> indicates the second</li>
   3071 </ul>
   3072 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_win_data">set_win_data</a>, <a class="el" href="gb_8h.html#set_tile_data">set_tile_data</a> </dd></dl>
   3073 
   3074 </div>
   3075 </div>
   3076 <a id="set_bkg_1bpp_data" name="set_bkg_1bpp_data"></a>
   3077 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_1bpp_data">&#9670;&nbsp;</a></span>set_bkg_1bpp_data()</h2>
   3078 
   3079 <div class="memitem">
   3080 <div class="memproto">
   3081       <table class="memname">
   3082         <tr>
   3083           <td class="memname">void set_bkg_1bpp_data </td>
   3084           <td>(</td>
   3085           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3086           <td class="paramname"><em>first_tile</em>, </td>
   3087         </tr>
   3088         <tr>
   3089           <td class="paramkey"></td>
   3090           <td></td>
   3091           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3092           <td class="paramname"><em>nb_tiles</em>, </td>
   3093         </tr>
   3094         <tr>
   3095           <td class="paramkey"></td>
   3096           <td></td>
   3097           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3098           <td class="paramname"><em>data</em>&#160;</td>
   3099         </tr>
   3100         <tr>
   3101           <td></td>
   3102           <td>)</td>
   3103           <td></td><td></td>
   3104         </tr>
   3105       </table>
   3106 </div><div class="memdoc">
   3107 <p >Sets VRAM Tile Pattern data for the Background using 1bpp source data</p>
   3108 <p >Similar to <a class="el" href="sms_8h.html#set_bkg_data">set_bkg_data</a>, except source data is 1 bit-per-pixel which gets expanded into 2 bits-per-pixel.</p>
   3109 <p >For a given bit that represent a pixel: </p><ul>
   3110 <li>0 will be expanded into color 0 </li>
   3111 <li>1 will be expanded into color 1, 2 or 3 depending on color argument</li>
   3112 </ul>
   3113 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_BKG">SHOW_BKG</a>, <a class="el" href="gb_8h.html#HIDE_BKG">HIDE_BKG</a>, <a class="el" href="gb_8h.html#set_bkg_tiles">set_bkg_tiles</a></dd></dl>
   3114 <p>Sets VRAM Tile Pattern data for the Background / Window using 1bpp source data</p>
   3115 <dl class="params"><dt>Parameters</dt><dd>
   3116   <table class="params">
   3117     <tr><td class="paramname">first_tile</td><td>Index of the first Tile to write </td></tr>
   3118     <tr><td class="paramname">nb_tiles</td><td>Number of Tiles to write </td></tr>
   3119     <tr><td class="paramname">data</td><td>Pointer to (1bpp) source Tile Pattern data</td></tr>
   3120   </table>
   3121   </dd>
   3122 </dl>
   3123 <p>Similar to <a class="el" href="sms_8h.html#set_bkg_data">set_bkg_data</a>, except source data is 1 bit-per-pixel which gets expanded into 2 bits-per-pixel.</p>
   3124 <p >For a given bit that represent a pixel: </p><ul>
   3125 <li>0 will be expanded into the Background color </li>
   3126 <li>1 will be expanded into the Foreground color</li>
   3127 </ul>
   3128 <p>See <a class="el" href="sms_8h.html#set_1bpp_colors">set_1bpp_colors</a> for details about setting the Foreground and Background colors.</p>
   3129 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_BKG">SHOW_BKG</a>, <a class="el" href="gb_8h.html#HIDE_BKG">HIDE_BKG</a>, <a class="el" href="gb_8h.html#set_bkg_tiles">set_bkg_tiles</a> </dd>
   3130 <dd>
   3131 <a class="el" href="gb_8h.html#set_win_1bpp_data">set_win_1bpp_data</a>, <a class="el" href="gb_8h.html#set_sprite_1bpp_data">set_sprite_1bpp_data</a> </dd></dl>
   3132 
   3133 </div>
   3134 </div>
   3135 <a id="set_bkg_tiles" name="set_bkg_tiles"></a>
   3136 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_tiles">&#9670;&nbsp;</a></span>set_bkg_tiles()</h2>
   3137 
   3138 <div class="memitem">
   3139 <div class="memproto">
   3140       <table class="memname">
   3141         <tr>
   3142           <td class="memname">void set_bkg_tiles </td>
   3143           <td>(</td>
   3144           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3145           <td class="paramname"><em>x</em>, </td>
   3146         </tr>
   3147         <tr>
   3148           <td class="paramkey"></td>
   3149           <td></td>
   3150           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3151           <td class="paramname"><em>y</em>, </td>
   3152         </tr>
   3153         <tr>
   3154           <td class="paramkey"></td>
   3155           <td></td>
   3156           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3157           <td class="paramname"><em>w</em>, </td>
   3158         </tr>
   3159         <tr>
   3160           <td class="paramkey"></td>
   3161           <td></td>
   3162           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3163           <td class="paramname"><em>h</em>, </td>
   3164         </tr>
   3165         <tr>
   3166           <td class="paramkey"></td>
   3167           <td></td>
   3168           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3169           <td class="paramname"><em>tiles</em>&#160;</td>
   3170         </tr>
   3171         <tr>
   3172           <td></td>
   3173           <td>)</td>
   3174           <td></td><td></td>
   3175         </tr>
   3176       </table>
   3177 </div><div class="memdoc">
   3178 <p >Sets a rectangular region of Background Tile Map.</p>
   3179 <p >Entries are copied from map at <b>tiles</b> to the Background Tile Map starting at <b>x</b>, <b>y</b> writing across for <b>w</b> tiles and down for <b>h</b> tiles.</p>
   3180 <p >Use <a class="el" href="sms_8h.html#set_bkg_submap">set_bkg_submap()</a> instead when: </p><ul>
   3181 <li>Source map is wider than 32 tiles. </li>
   3182 <li>Writing a width that does not match the source map width <b>and</b> more than one row high at a time.</li>
   3183 </ul>
   3184 <p>One byte per source tile map entry.</p>
   3185 <p >Writes that exceed coordinate 31 on the x or y axis will wrap around to the Left and Top edges.</p>
   3186 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   3187 <dd>
   3188 <a class="el" href="gb_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="gb_8h.html#set_bkg_submap">set_bkg_submap</a>, <a class="el" href="gb_8h.html#set_win_tiles">set_win_tiles</a>, <a class="el" href="gb_8h.html#set_tiles">set_tiles</a></dd></dl>
   3189 <p>Sets a rectangular region of Background Tile Map.</p>
   3190 <dl class="params"><dt>Parameters</dt><dd>
   3191   <table class="params">
   3192     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3193     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3194     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   3195     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   3196     <tr><td class="paramname">tiles</td><td>Pointer to source tile map data</td></tr>
   3197   </table>
   3198   </dd>
   3199 </dl>
   3200 <p>Entries are copied from map at <b>tiles</b> to the Background Tile Map starting at <b>x</b>, <b>y</b> writing across for <b>w</b> tiles and down for <b>h</b> tiles.</p>
   3201 <p >Use <a class="el" href="sms_8h.html#set_bkg_submap">set_bkg_submap()</a> instead when: </p><ul>
   3202 <li>Source map is wider than 32 tiles. </li>
   3203 <li>Writing a width that does not match the source map width <b>and</b> more than one row high at a time.</li>
   3204 </ul>
   3205 <p>One byte per source tile map entry.</p>
   3206 <p >Writes that exceed coordinate 31 on the x or y axis will wrap around to the Left and Top edges.</p>
   3207 <dl class="section note"><dt>Note</dt><dd>Patterns 128-255 overlap with patterns 128-255 of the sprite Tile Pattern table.</dd></dl>
   3208 <p>GBC only: <a class="el" href="gb_2hardware_8h.html#VBK_REG">VBK_REG</a> determines whether Tile Numbers or Tile Attributes get set. </p><ul>
   3209 <li>VBK_REG = <a class="el" href="sms_2hardware_8h.html#VBK_TILES">VBK_TILES</a> Tile Numbers are written </li>
   3210 <li>VBK_REG = <a class="el" href="sms_2hardware_8h.html#VBK_ATTRIBUTES">VBK_ATTRIBUTES</a> Tile Attributes are written</li>
   3211 </ul>
   3212 <p>GBC Tile Attributes are defined as: </p><ul>
   3213 <li>Bit 7 - Priority flag. When this is set, it puts the tile above the sprites with colour 0 being transparent. <br  />
   3214  0: Below sprites <br  />
   3215  1: Above sprites <br  />
   3216  Note: <a class="el" href="sms_8h.html#SHOW_BKG">SHOW_BKG</a> needs to be set for these priorities to take place. </li>
   3217 <li>Bit 6 - Vertical flip. Dictates which way up the tile is drawn vertically. <br  />
   3218  0: Normal <br  />
   3219  1: Flipped Vertically </li>
   3220 <li>Bit 5 - Horizontal flip. Dictates which way up the tile is drawn horizontally. <br  />
   3221  0: Normal <br  />
   3222  1: Flipped Horizontally </li>
   3223 <li>Bit 4 - Not used </li>
   3224 <li>Bit 3 - Character Bank specification. Dictates from which bank of Background Tile Patterns the tile is taken. <br  />
   3225  0: Bank 0 <br  />
   3226  1: Bank 1 </li>
   3227 <li>Bit 2 - See bit 0. </li>
   3228 <li>Bit 1 - See bit 0. </li>
   3229 <li>Bit 0 - Bits 0-2 indicate which of the 7 BKG colour palettes the tile is assigned.</li>
   3230 </ul>
   3231 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   3232 <dd>
   3233 <a class="el" href="gb_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="gb_8h.html#set_bkg_submap">set_bkg_submap</a>, <a class="el" href="gb_8h.html#set_win_tiles">set_win_tiles</a>, <a class="el" href="gb_8h.html#set_tiles">set_tiles</a> </dd></dl>
   3234 
   3235 </div>
   3236 </div>
   3237 <a id="set_bkg_attributes_nes16x16" name="set_bkg_attributes_nes16x16"></a>
   3238 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_attributes_nes16x16">&#9670;&nbsp;</a></span>set_bkg_attributes_nes16x16()</h2>
   3239 
   3240 <div class="memitem">
   3241 <div class="memproto">
   3242       <table class="memname">
   3243         <tr>
   3244           <td class="memname">void set_bkg_attributes_nes16x16 </td>
   3245           <td>(</td>
   3246           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3247           <td class="paramname"><em>x</em>, </td>
   3248         </tr>
   3249         <tr>
   3250           <td class="paramkey"></td>
   3251           <td></td>
   3252           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3253           <td class="paramname"><em>y</em>, </td>
   3254         </tr>
   3255         <tr>
   3256           <td class="paramkey"></td>
   3257           <td></td>
   3258           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3259           <td class="paramname"><em>w</em>, </td>
   3260         </tr>
   3261         <tr>
   3262           <td class="paramkey"></td>
   3263           <td></td>
   3264           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3265           <td class="paramname"><em>h</em>, </td>
   3266         </tr>
   3267         <tr>
   3268           <td class="paramkey"></td>
   3269           <td></td>
   3270           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3271           <td class="paramname"><em>attributes</em>&#160;</td>
   3272         </tr>
   3273         <tr>
   3274           <td></td>
   3275           <td>)</td>
   3276           <td></td><td></td>
   3277         </tr>
   3278       </table>
   3279 </div><div class="memdoc">
   3280 <p >Sets a rectangular region of Background Tile Map Attributes.</p>
   3281 <dl class="params"><dt>Parameters</dt><dd>
   3282   <table class="params">
   3283     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 15 </td></tr>
   3284     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 14 </td></tr>
   3285     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 16 </td></tr>
   3286     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 15 </td></tr>
   3287     <tr><td class="paramname">attributes</td><td>Pointer to source tile map attribute data</td></tr>
   3288   </table>
   3289   </dd>
   3290 </dl>
   3291 <p>Entries are copied from map at <b>tiles</b> to the Background Tile Map starting at <b>x</b>, <b>y</b> writing across for <b>w</b> tiles and down for <b>h</b> tiles.</p>
   3292 <p >NES 16x16 Tile Attributes are tightly packed into 4 attributes per byte, with each 16x16 area of a 32x32 pixel block using the bits as follows: D1-D0: Top-left 16x16 pixels D3-D2: Top-right 16x16 pixels D5-D4: Bottom-left 16x16 pixels D7-D6: Bottom-right 16x16 pixels</p>
   3293 <p ><a href="https://www.nesdev.org/wiki/PPU_attribute_tables">https://www.nesdev.org/wiki/PPU_attribute_tables</a></p>
   3294 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   3295 <dd>
   3296 <a class="el" href="nes_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="nes_8h.html#set_bkg_submap_attributes">set_bkg_submap_attributes</a>, <a class="el" href="gb_8h.html#set_win_tiles">set_win_tiles</a>, <a class="el" href="nes_8h.html#set_tiles">set_tiles</a> </dd></dl>
   3297 
   3298 </div>
   3299 </div>
   3300 <a id="set_bkg_attributes" name="set_bkg_attributes"></a>
   3301 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_attributes">&#9670;&nbsp;</a></span>set_bkg_attributes()</h2>
   3302 
   3303 <div class="memitem">
   3304 <div class="memproto">
   3305 <table class="mlabels">
   3306   <tr>
   3307   <td class="mlabels-left">
   3308       <table class="memname">
   3309         <tr>
   3310           <td class="memname">void set_bkg_attributes </td>
   3311           <td>(</td>
   3312           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3313           <td class="paramname"><em>x</em>, </td>
   3314         </tr>
   3315         <tr>
   3316           <td class="paramkey"></td>
   3317           <td></td>
   3318           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3319           <td class="paramname"><em>y</em>, </td>
   3320         </tr>
   3321         <tr>
   3322           <td class="paramkey"></td>
   3323           <td></td>
   3324           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3325           <td class="paramname"><em>w</em>, </td>
   3326         </tr>
   3327         <tr>
   3328           <td class="paramkey"></td>
   3329           <td></td>
   3330           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3331           <td class="paramname"><em>h</em>, </td>
   3332         </tr>
   3333         <tr>
   3334           <td class="paramkey"></td>
   3335           <td></td>
   3336           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3337           <td class="paramname"><em>attributes</em>&#160;</td>
   3338         </tr>
   3339         <tr>
   3340           <td></td>
   3341           <td>)</td>
   3342           <td></td><td></td>
   3343         </tr>
   3344       </table>
   3345   </td>
   3346   <td class="mlabels-right">
   3347 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3348   </tr>
   3349 </table>
   3350 </div><div class="memdoc">
   3351 <p >Sets a rectangular region of Background Tile Map Attributes.</p>
   3352 <p >Entries are copied from map at <b>tiles</b> to the Background Tile Map starting at <b>x</b>, <b>y</b> writing across for <b>w</b> tiles and down for <b>h</b> tiles.</p>
   3353 <p >Use <a class="el" href="gb_8h.html#set_bkg_submap_attributes">set_bkg_submap_attributes()</a> instead when: </p><ul>
   3354 <li>Source map is wider than 32 tiles. </li>
   3355 <li>Writing a width that does not match the source map width <b>and</b> more than one row high at a time.</li>
   3356 </ul>
   3357 <p>One byte per source tile map attribute entry.</p>
   3358 <p >Writes that exceed coordinate 31 on the x or y axis will wrap around to the Left and Top edges.</p>
   3359 <p >Please note that this is just a wrapper function for <a class="el" href="nes_8h.html#set_bkg_attributes_nes16x16">set_bkg_attributes_nes16x16()</a> and divides the coordinates and dimensions by 2 to achieve this. It is intended to make code more portable by using the same coordinate system that systems with the much more common 8x8 attribute resolution would use.</p>
   3360 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   3361 <dd>
   3362 <a class="el" href="nes_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="nes_8h.html#set_bkg_submap_attributes">set_bkg_submap_attributes</a>, <a class="el" href="gb_8h.html#set_win_tiles">set_win_tiles</a>, <a class="el" href="nes_8h.html#set_tiles">set_tiles</a> </dd></dl>
   3363 
   3364 </div>
   3365 </div>
   3366 <a id="set_bkg_submap_attributes_nes16x" name="set_bkg_submap_attributes_nes16x"></a>
   3367 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_submap_attributes_nes16x">&#9670;&nbsp;</a></span>set_bkg_submap_attributes_nes16x16()</h2>
   3368 
   3369 <div class="memitem">
   3370 <div class="memproto">
   3371       <table class="memname">
   3372         <tr>
   3373           <td class="memname">void set_bkg_submap_attributes_nes16x16 </td>
   3374           <td>(</td>
   3375           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3376           <td class="paramname"><em>x</em>, </td>
   3377         </tr>
   3378         <tr>
   3379           <td class="paramkey"></td>
   3380           <td></td>
   3381           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3382           <td class="paramname"><em>y</em>, </td>
   3383         </tr>
   3384         <tr>
   3385           <td class="paramkey"></td>
   3386           <td></td>
   3387           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3388           <td class="paramname"><em>w</em>, </td>
   3389         </tr>
   3390         <tr>
   3391           <td class="paramkey"></td>
   3392           <td></td>
   3393           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3394           <td class="paramname"><em>h</em>, </td>
   3395         </tr>
   3396         <tr>
   3397           <td class="paramkey"></td>
   3398           <td></td>
   3399           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3400           <td class="paramname"><em>map</em>, </td>
   3401         </tr>
   3402         <tr>
   3403           <td class="paramkey"></td>
   3404           <td></td>
   3405           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3406           <td class="paramname"><em>map_w</em>&#160;</td>
   3407         </tr>
   3408         <tr>
   3409           <td></td>
   3410           <td>)</td>
   3411           <td></td><td></td>
   3412         </tr>
   3413       </table>
   3414 </div><div class="memdoc">
   3415 <p >Sets a rectangular area of the Background Tile Map using a sub-region from a source tile map. Useful for scrolling implementations of maps larger than 32 x 30 tiles / 16x15 attributes.</p>
   3416 <dl class="params"><dt>Parameters</dt><dd>
   3417   <table class="params">
   3418     <tr><td class="paramname">x</td><td>X Start position in both the Source Attribute Map and hardware Background Map attribute coordinates. Range 0 - 255 </td></tr>
   3419     <tr><td class="paramname">y</td><td>Y Start position in both the Source Attribute Map and hardware Background Map attribute coordinates. Range 0 - 255 </td></tr>
   3420     <tr><td class="paramname">w</td><td>Width of area to set in Attributes. Range 1 - 127 </td></tr>
   3421     <tr><td class="paramname">h</td><td>Height of area to set in Attributes. Range 1 - 127 </td></tr>
   3422     <tr><td class="paramname">map</td><td>Pointer to source tile map data </td></tr>
   3423     <tr><td class="paramname">map_w</td><td>Width of source tile map in tiles. Range 1 - 127</td></tr>
   3424   </table>
   3425   </dd>
   3426 </dl>
   3427 <p>Entries are copied from <b>map</b> to the Background Attribute Map starting at <b>x</b>, <b>y</b> writing across for <b>w</b> tiles and down for <b>h</b> attributes, using <b>map_w</b> as the rowstride for the source attribute map.</p>
   3428 <p >The <b>x</b> and <b>y</b> parameters are in Source Attribute Map Attribute coordinates. The location tiles will be written to on the hardware Background Map is derived from those, but only uses the lower 5 bits of each axis, for range of 0-15 (they are bit-masked: <code>x &amp; 0xF</code> and <code>y &amp; 0xF</code>). As a result the two coordinate systems are aligned together.</p>
   3429 <p >In order to transfer tile map data in a way where the coordinate systems are not aligned, an offset from the Source Attribute Map pointer can be passed in: <code>(map_ptr + x + (y * map_width))</code>.</p>
   3430 <p >For example, if you want the tile id at <code>1,2</code> from the source map to show up at <code>0,0</code> on the hardware Background Map (instead of at <code>1,2</code>) then modify the pointer address that is passed in: <code>map_ptr + 1 + (2 * map_width)</code></p>
   3431 <p >Use this instead of <a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a> when the source map is wider than 32 tiles or when writing a width that does not match the source map width.</p>
   3432 <p >One byte per source attribute map entry.</p>
   3433 <p >Writes that exceed coordinate 15/14 on the x / y axis will wrap around to the Left and Top edges.</p>
   3434 <p >See <a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a> for setting CGB attribute maps with <a class="el" href="gb_2hardware_8h.html#VBK_REG">VBK_REG</a>.</p>
   3435 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   3436 <dd>
   3437 <a class="el" href="nes_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a>, <a class="el" href="msx_8h.html#set_win_submap">set_win_submap</a>, <a class="el" href="nes_8h.html#set_tiles">set_tiles</a> </dd></dl>
   3438 
   3439 </div>
   3440 </div>
   3441 <a id="set_bkg_submap_attributes" name="set_bkg_submap_attributes"></a>
   3442 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_submap_attributes">&#9670;&nbsp;</a></span>set_bkg_submap_attributes()</h2>
   3443 
   3444 <div class="memitem">
   3445 <div class="memproto">
   3446 <table class="mlabels">
   3447   <tr>
   3448   <td class="mlabels-left">
   3449       <table class="memname">
   3450         <tr>
   3451           <td class="memname">void set_bkg_submap_attributes </td>
   3452           <td>(</td>
   3453           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3454           <td class="paramname"><em>x</em>, </td>
   3455         </tr>
   3456         <tr>
   3457           <td class="paramkey"></td>
   3458           <td></td>
   3459           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3460           <td class="paramname"><em>y</em>, </td>
   3461         </tr>
   3462         <tr>
   3463           <td class="paramkey"></td>
   3464           <td></td>
   3465           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3466           <td class="paramname"><em>w</em>, </td>
   3467         </tr>
   3468         <tr>
   3469           <td class="paramkey"></td>
   3470           <td></td>
   3471           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3472           <td class="paramname"><em>h</em>, </td>
   3473         </tr>
   3474         <tr>
   3475           <td class="paramkey"></td>
   3476           <td></td>
   3477           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3478           <td class="paramname"><em>attributes</em>, </td>
   3479         </tr>
   3480         <tr>
   3481           <td class="paramkey"></td>
   3482           <td></td>
   3483           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3484           <td class="paramname"><em>map_w</em>&#160;</td>
   3485         </tr>
   3486         <tr>
   3487           <td></td>
   3488           <td>)</td>
   3489           <td></td><td></td>
   3490         </tr>
   3491       </table>
   3492   </td>
   3493   <td class="mlabels-right">
   3494 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3495   </tr>
   3496 </table>
   3497 </div><div class="memdoc">
   3498 <p >Sets a rectangular area of the Background Tile Map attributes using a sub-region from a source tile map. Useful for scrolling implementations of maps larger than 32 x 30 tiles.</p>
   3499 <p >Please note that this is just a wrapper function for <a class="el" href="nes_8h.html#set_bkg_submap_attributes_nes16x">set_bkg_submap_attributes_nes16x16()</a> and divides the coordinates and dimensions by 2 to achieve this. It is intended to make code more portable by using the same coordinate system that systems with the much more common 8x8 attribute resolution would use.</p>
   3500 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   3501 <dd>
   3502 <a class="el" href="nes_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a>, <a class="el" href="msx_8h.html#set_win_submap">set_win_submap</a>, <a class="el" href="nes_8h.html#set_tiles">set_tiles</a> </dd></dl>
   3503 
   3504 </div>
   3505 </div>
   3506 <a id="set_bkg_based_tiles" name="set_bkg_based_tiles"></a>
   3507 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_based_tiles">&#9670;&nbsp;</a></span>set_bkg_based_tiles()</h2>
   3508 
   3509 <div class="memitem">
   3510 <div class="memproto">
   3511 <table class="mlabels">
   3512   <tr>
   3513   <td class="mlabels-left">
   3514       <table class="memname">
   3515         <tr>
   3516           <td class="memname">void set_bkg_based_tiles </td>
   3517           <td>(</td>
   3518           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3519           <td class="paramname"><em>x</em>, </td>
   3520         </tr>
   3521         <tr>
   3522           <td class="paramkey"></td>
   3523           <td></td>
   3524           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3525           <td class="paramname"><em>y</em>, </td>
   3526         </tr>
   3527         <tr>
   3528           <td class="paramkey"></td>
   3529           <td></td>
   3530           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3531           <td class="paramname"><em>w</em>, </td>
   3532         </tr>
   3533         <tr>
   3534           <td class="paramkey"></td>
   3535           <td></td>
   3536           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3537           <td class="paramname"><em>h</em>, </td>
   3538         </tr>
   3539         <tr>
   3540           <td class="paramkey"></td>
   3541           <td></td>
   3542           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3543           <td class="paramname"><em>tiles</em>, </td>
   3544         </tr>
   3545         <tr>
   3546           <td class="paramkey"></td>
   3547           <td></td>
   3548           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3549           <td class="paramname"><em>base_tile</em>&#160;</td>
   3550         </tr>
   3551         <tr>
   3552           <td></td>
   3553           <td>)</td>
   3554           <td></td><td></td>
   3555         </tr>
   3556       </table>
   3557   </td>
   3558   <td class="mlabels-right">
   3559 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3560   </tr>
   3561 </table>
   3562 </div><div class="memdoc">
   3563 <p >Sets a rectangular region of Background Tile Map. The offset value in <b>base_tile</b> is added to the tile ID for each map entry.</p>
   3564 <dl class="params"><dt>Parameters</dt><dd>
   3565   <table class="params">
   3566     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3567     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3568     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   3569     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   3570     <tr><td class="paramname">tiles</td><td>Pointer to source tile map data </td></tr>
   3571     <tr><td class="paramname">base_tile</td><td>Offset each tile ID entry of the source map by this value. Range 1 - 255</td></tr>
   3572   </table>
   3573   </dd>
   3574 </dl>
   3575 <p>This is identical to <a class="el" href="msx_8h.html#set_bkg_tiles">set_bkg_tiles()</a> except that it adds the <b>base_tile</b> parameter for when a tile map's tiles don't start at index zero. (For example, the tiles used by the map range from 100 -&gt; 120 in VRAM instead of 0 -&gt; 20).</p>
   3576 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a> for more details </dd></dl>
   3577 
   3578 </div>
   3579 </div>
   3580 <a id="set_bkg_submap" name="set_bkg_submap"></a>
   3581 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_submap">&#9670;&nbsp;</a></span>set_bkg_submap()</h2>
   3582 
   3583 <div class="memitem">
   3584 <div class="memproto">
   3585 <table class="mlabels">
   3586   <tr>
   3587   <td class="mlabels-left">
   3588       <table class="memname">
   3589         <tr>
   3590           <td class="memname">void set_bkg_submap </td>
   3591           <td>(</td>
   3592           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3593           <td class="paramname"><em>x</em>, </td>
   3594         </tr>
   3595         <tr>
   3596           <td class="paramkey"></td>
   3597           <td></td>
   3598           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3599           <td class="paramname"><em>y</em>, </td>
   3600         </tr>
   3601         <tr>
   3602           <td class="paramkey"></td>
   3603           <td></td>
   3604           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3605           <td class="paramname"><em>w</em>, </td>
   3606         </tr>
   3607         <tr>
   3608           <td class="paramkey"></td>
   3609           <td></td>
   3610           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3611           <td class="paramname"><em>h</em>, </td>
   3612         </tr>
   3613         <tr>
   3614           <td class="paramkey"></td>
   3615           <td></td>
   3616           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3617           <td class="paramname"><em>map</em>, </td>
   3618         </tr>
   3619         <tr>
   3620           <td class="paramkey"></td>
   3621           <td></td>
   3622           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3623           <td class="paramname"><em>map_w</em>&#160;</td>
   3624         </tr>
   3625         <tr>
   3626           <td></td>
   3627           <td>)</td>
   3628           <td></td><td></td>
   3629         </tr>
   3630       </table>
   3631   </td>
   3632   <td class="mlabels-right">
   3633 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3634   </tr>
   3635 </table>
   3636 </div><div class="memdoc">
   3637 <p >Sets a rectangular area of the Background Tile Map using a sub-region from a source tile map. Useful for scrolling implementations of maps larger than 32 x 32 tiles.</p>
   3638 <p >@ param x X Start position in Background Map tile coordinates. Range 0 - 31 @ param y Y Start position in Background Map tile coordinates. Range 0 - 31 @ param w Width of area to set in tiles. Range 1 - 255 @ param h Height of area to set in tiles. Range 1 - 255 @ param map Pointer to source tile map data @ param map_w Width of source tile map in tiles. Range 1 - 255</p>
   3639 <p >Entries are copied from <b>map</b> to the Background Tile Map starting at <b>x</b>, <b>y</b> writing across for <b>w</b> tiles and down for <b>h</b> tiles, using <b>map_w</b> as the rowstride for the source tile map.</p>
   3640 <p >Use this instead of <a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a> when the source map is wider than 32 tiles or when writing a width that does not match the source map width.</p>
   3641 <p >One byte per source tile map entry.</p>
   3642 <p >Writes that exceed coordinate 31 on the x or y axis will wrap around to the Left and Top edges.</p>
   3643 <p >See <a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a> for setting CGB attribute maps with <a class="el" href="gb_2hardware_8h.html#VBK_REG">VBK_REG</a>.</p>
   3644 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   3645 <dd>
   3646 <a class="el" href="gb_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="gb_8h.html#set_bkg_tiles">set_bkg_tiles</a>, <a class="el" href="gb_8h.html#set_win_submap">set_win_submap</a>, <a class="el" href="gb_8h.html#set_tiles">set_tiles</a></dd></dl>
   3647 <p>Sets a rectangular area of the Background Tile Map using a sub-region from a source tile map. Useful for scrolling implementations of maps larger than 32 x 32 tiles.</p>
   3648 <dl class="params"><dt>Parameters</dt><dd>
   3649   <table class="params">
   3650     <tr><td class="paramname">x</td><td>X Start position in both the Source Tile Map and hardware Background Map tile coordinates. Range 0 - 255 </td></tr>
   3651     <tr><td class="paramname">y</td><td>Y Start position in both the Source Tile Map and hardware Background Map tile coordinates. Range 0 - 255 </td></tr>
   3652     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 255 </td></tr>
   3653     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 255 </td></tr>
   3654     <tr><td class="paramname">map</td><td>Pointer to source tile map data </td></tr>
   3655     <tr><td class="paramname">map_w</td><td>Width of source tile map in tiles. Range 1 - 255</td></tr>
   3656   </table>
   3657   </dd>
   3658 </dl>
   3659 <p>Entries are copied from <b>map</b> to the Background Tile Map starting at <b>x</b>, <b>y</b> writing across for <b>w</b> tiles and down for <b>h</b> tiles, using <b>map_w</b> as the rowstride for the source tile map.</p>
   3660 <p >The <b>x</b> and <b>y</b> parameters are in Source Tile Map tile coordinates. The location tiles will be written to on the hardware Background Map is derived from those, but only uses the lower 5 bits of each axis, for range of 0-31 (they are bit-masked: <code>x &amp; 0x1F</code> and <code>y &amp; 0x1F</code>). As a result the two coordinate systems are aligned together.</p>
   3661 <p >In order to transfer tile map data in a way where the coordinate systems are not aligned, an offset from the Source Tile Map pointer can be passed in: <code>(map_ptr + x + (y * map_width))</code>.</p>
   3662 <p >For example, if you want the tile id at <code>1,2</code> from the source map to show up at <code>0,0</code> on the hardware Background Map (instead of at <code>1,2</code>) then modify the pointer address that is passed in: <code>map_ptr + 1 + (2 * map_width)</code></p>
   3663 <p >Use this instead of <a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a> when the source map is wider than 32 tiles or when writing a width that does not match the source map width.</p>
   3664 <p >One byte per source tile map entry.</p>
   3665 <p >Writes that exceed coordinate 31 on the x or y axis will wrap around to the Left and Top edges.</p>
   3666 <p >See <a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a> for setting CGB attribute maps with <a class="el" href="gb_2hardware_8h.html#VBK_REG">VBK_REG</a>.</p>
   3667 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   3668 <dd>
   3669 <a class="el" href="gb_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="gb_8h.html#set_bkg_tiles">set_bkg_tiles</a>, <a class="el" href="gb_8h.html#set_win_submap">set_win_submap</a>, <a class="el" href="gb_8h.html#set_tiles">set_tiles</a> </dd></dl>
   3670 
   3671 </div>
   3672 </div>
   3673 <a id="set_bkg_based_submap" name="set_bkg_based_submap"></a>
   3674 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_based_submap">&#9670;&nbsp;</a></span>set_bkg_based_submap()</h2>
   3675 
   3676 <div class="memitem">
   3677 <div class="memproto">
   3678 <table class="mlabels">
   3679   <tr>
   3680   <td class="mlabels-left">
   3681       <table class="memname">
   3682         <tr>
   3683           <td class="memname">void set_bkg_based_submap </td>
   3684           <td>(</td>
   3685           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3686           <td class="paramname"><em>x</em>, </td>
   3687         </tr>
   3688         <tr>
   3689           <td class="paramkey"></td>
   3690           <td></td>
   3691           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3692           <td class="paramname"><em>y</em>, </td>
   3693         </tr>
   3694         <tr>
   3695           <td class="paramkey"></td>
   3696           <td></td>
   3697           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3698           <td class="paramname"><em>w</em>, </td>
   3699         </tr>
   3700         <tr>
   3701           <td class="paramkey"></td>
   3702           <td></td>
   3703           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3704           <td class="paramname"><em>h</em>, </td>
   3705         </tr>
   3706         <tr>
   3707           <td class="paramkey"></td>
   3708           <td></td>
   3709           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3710           <td class="paramname"><em>map</em>, </td>
   3711         </tr>
   3712         <tr>
   3713           <td class="paramkey"></td>
   3714           <td></td>
   3715           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3716           <td class="paramname"><em>map_w</em>, </td>
   3717         </tr>
   3718         <tr>
   3719           <td class="paramkey"></td>
   3720           <td></td>
   3721           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3722           <td class="paramname"><em>base_tile</em>&#160;</td>
   3723         </tr>
   3724         <tr>
   3725           <td></td>
   3726           <td>)</td>
   3727           <td></td><td></td>
   3728         </tr>
   3729       </table>
   3730   </td>
   3731   <td class="mlabels-right">
   3732 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3733   </tr>
   3734 </table>
   3735 </div><div class="memdoc">
   3736 <p >Sets a rectangular area of the Background Tile Map using a sub-region from a source tile map. The offset value in <b>base_tile</b> is added to the tile ID for each map entry.</p>
   3737 <dl class="params"><dt>Parameters</dt><dd>
   3738   <table class="params">
   3739     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3740     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3741     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 255 </td></tr>
   3742     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 255 </td></tr>
   3743     <tr><td class="paramname">map</td><td>Pointer to source tile map data </td></tr>
   3744     <tr><td class="paramname">map_w</td><td>Width of source tile map in tiles. Range 1 - 255 </td></tr>
   3745     <tr><td class="paramname">base_tile</td><td>Offset each tile ID entry of the source map by this value. Range 1 - 255</td></tr>
   3746   </table>
   3747   </dd>
   3748 </dl>
   3749 <p>This is identical to <a class="el" href="sms_8h.html#set_bkg_submap">set_bkg_submap()</a> except that it adds the <b>base_tile</b> parameter for when a tile map's tiles don't start at index zero. (For example, the tiles used by the map range from 100 -&gt; 120 in VRAM instead of 0 -&gt; 20).</p>
   3750 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_bkg_submap">set_bkg_submap</a> for more details</dd></dl>
   3751 <p>Sets a rectangular area of the Background Tile Map using a sub-region from a source tile map. The offset value in <b>base_tile</b> is added to the tile ID for each map entry.</p>
   3752 <dl class="params"><dt>Parameters</dt><dd>
   3753   <table class="params">
   3754     <tr><td class="paramname">x</td><td>X Start position in both the Source Tile Map and hardware Background Map tile coordinates. Range 0 - 255 </td></tr>
   3755     <tr><td class="paramname">y</td><td>Y Start position in both the Source Tile Map and hardware Background Map tile coordinates. Range 0 - 255 </td></tr>
   3756     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 255 </td></tr>
   3757     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 255 </td></tr>
   3758     <tr><td class="paramname">map</td><td>Pointer to source tile map data </td></tr>
   3759     <tr><td class="paramname">map_w</td><td>Width of source tile map in tiles. Range 1 - 255 </td></tr>
   3760     <tr><td class="paramname">base_tile</td><td>Offset each tile ID entry of the source map by this value. Range 1 - 255</td></tr>
   3761   </table>
   3762   </dd>
   3763 </dl>
   3764 <p>This is identical to <a class="el" href="sms_8h.html#set_bkg_submap">set_bkg_submap()</a> except that it adds the <b>base_tile</b> parameter for when a tile map's tiles don't start at index zero. (For example, the tiles used by the map range from 100 -&gt; 120 in VRAM instead of 0 -&gt; 20).</p>
   3765 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_bkg_submap">set_bkg_submap</a> for more details </dd></dl>
   3766 
   3767 </div>
   3768 </div>
   3769 <a id="get_bkg_tiles" name="get_bkg_tiles"></a>
   3770 <h2 class="memtitle"><span class="permalink"><a href="#get_bkg_tiles">&#9670;&nbsp;</a></span>get_bkg_tiles()</h2>
   3771 
   3772 <div class="memitem">
   3773 <div class="memproto">
   3774       <table class="memname">
   3775         <tr>
   3776           <td class="memname">void get_bkg_tiles </td>
   3777           <td>(</td>
   3778           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3779           <td class="paramname"><em>x</em>, </td>
   3780         </tr>
   3781         <tr>
   3782           <td class="paramkey"></td>
   3783           <td></td>
   3784           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3785           <td class="paramname"><em>y</em>, </td>
   3786         </tr>
   3787         <tr>
   3788           <td class="paramkey"></td>
   3789           <td></td>
   3790           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3791           <td class="paramname"><em>w</em>, </td>
   3792         </tr>
   3793         <tr>
   3794           <td class="paramkey"></td>
   3795           <td></td>
   3796           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3797           <td class="paramname"><em>h</em>, </td>
   3798         </tr>
   3799         <tr>
   3800           <td class="paramkey"></td>
   3801           <td></td>
   3802           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3803           <td class="paramname"><em>tiles</em>&#160;</td>
   3804         </tr>
   3805         <tr>
   3806           <td></td>
   3807           <td>)</td>
   3808           <td></td><td></td>
   3809         </tr>
   3810       </table>
   3811 </div><div class="memdoc">
   3812 <p >Copies a rectangular region of Background Tile Map entries into a buffer.</p>
   3813 <p >Entries are copied into <b>tiles</b> from the Background Tile Map starting at <b>x</b>, <b>y</b> reading across for <b>w</b> tiles and down for <b>h</b> tiles.</p>
   3814 <p >One byte per tile.</p>
   3815 <p >The buffer pointed to by <b>tiles</b> should be at least <b>x</b> x <b>y</b> bytes in size.</p>
   3816 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#get_bkg_tile_xy">get_bkg_tile_xy</a>, <a class="el" href="gb_8h.html#get_tiles">get_tiles</a></dd></dl>
   3817 <p>Copies a rectangular region of Background Tile Map entries into a buffer.</p>
   3818 <dl class="params"><dt>Parameters</dt><dd>
   3819   <table class="params">
   3820     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3821     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3822     <tr><td class="paramname">w</td><td>Width of area to copy in tiles. Range 0 - 31 </td></tr>
   3823     <tr><td class="paramname">h</td><td>Height of area to copy in tiles. Range 0 - 31 </td></tr>
   3824     <tr><td class="paramname">tiles</td><td>Pointer to destination buffer for Tile Map data</td></tr>
   3825   </table>
   3826   </dd>
   3827 </dl>
   3828 <dl class="section note"><dt>Note</dt><dd>In general <b>avoid reading from VRAM</b> since that memory is not accessible at all times. It is also not supported by GBDK on the NES platform. See <a class="el" href="docs_coding_guidelines.html#best_practice_dont_read_vram">coding guidelines</a> for more details.</dd></dl>
   3829 <p>Entries are copied into <b>tiles</b> from the Background Tile Map starting at <b>x</b>, <b>y</b> reading across for <b>w</b> tiles and down for <b>h</b> tiles.</p>
   3830 <p >One byte per tile.</p>
   3831 <p >The buffer pointed to by <b>tiles</b> should be at least <b>x</b> x <b>y</b> bytes in size.</p>
   3832 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#get_win_tiles">get_win_tiles</a>, <a class="el" href="gb_8h.html#get_bkg_tile_xy">get_bkg_tile_xy</a>, <a class="el" href="gb_8h.html#get_tiles">get_tiles</a>, <a class="el" href="gb_8h.html#get_vram_byte">get_vram_byte</a> </dd></dl>
   3833 
   3834 </div>
   3835 </div>
   3836 <a id="set_bkg_tile_xy" name="set_bkg_tile_xy"></a>
   3837 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_tile_xy">&#9670;&nbsp;</a></span>set_bkg_tile_xy()</h2>
   3838 
   3839 <div class="memitem">
   3840 <div class="memproto">
   3841       <table class="memname">
   3842         <tr>
   3843           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> * set_bkg_tile_xy </td>
   3844           <td>(</td>
   3845           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3846           <td class="paramname"><em>x</em>, </td>
   3847         </tr>
   3848         <tr>
   3849           <td class="paramkey"></td>
   3850           <td></td>
   3851           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3852           <td class="paramname"><em>y</em>, </td>
   3853         </tr>
   3854         <tr>
   3855           <td class="paramkey"></td>
   3856           <td></td>
   3857           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3858           <td class="paramname"><em>t</em>&#160;</td>
   3859         </tr>
   3860         <tr>
   3861           <td></td>
   3862           <td>)</td>
   3863           <td></td><td></td>
   3864         </tr>
   3865       </table>
   3866 </div><div class="memdoc">
   3867 <p >Set single tile t on background layer at x,y </p><dl class="params"><dt>Parameters</dt><dd>
   3868   <table class="params">
   3869     <tr><td class="paramname">x</td><td>X-coordinate </td></tr>
   3870     <tr><td class="paramname">y</td><td>Y-coordinate </td></tr>
   3871     <tr><td class="paramname">t</td><td>tile index </td></tr>
   3872   </table>
   3873   </dd>
   3874 </dl>
   3875 <dl class="section return"><dt>Returns</dt><dd>returns the address of tile, so you may use faster <a class="el" href="nes_8h.html#set_vram_byte">set_vram_byte()</a> later </dd></dl>
   3876 
   3877 </div>
   3878 </div>
   3879 <a id="set_bkg_attribute_xy_nes16x16" name="set_bkg_attribute_xy_nes16x16"></a>
   3880 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_attribute_xy_nes16x16">&#9670;&nbsp;</a></span>set_bkg_attribute_xy_nes16x16()</h2>
   3881 
   3882 <div class="memitem">
   3883 <div class="memproto">
   3884       <table class="memname">
   3885         <tr>
   3886           <td class="memname">void set_bkg_attribute_xy_nes16x16 </td>
   3887           <td>(</td>
   3888           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3889           <td class="paramname"><em>x</em>, </td>
   3890         </tr>
   3891         <tr>
   3892           <td class="paramkey"></td>
   3893           <td></td>
   3894           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3895           <td class="paramname"><em>y</em>, </td>
   3896         </tr>
   3897         <tr>
   3898           <td class="paramkey"></td>
   3899           <td></td>
   3900           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3901           <td class="paramname"><em>a</em>&#160;</td>
   3902         </tr>
   3903         <tr>
   3904           <td></td>
   3905           <td>)</td>
   3906           <td></td><td></td>
   3907         </tr>
   3908       </table>
   3909 </div><div class="memdoc">
   3910 <p >Set single attribute data a on background layer at x,y</p>
   3911 <dl class="params"><dt>Parameters</dt><dd>
   3912   <table class="params">
   3913     <tr><td class="paramname">x</td><td>X-coordinate </td></tr>
   3914     <tr><td class="paramname">y</td><td>Y-coordinate </td></tr>
   3915     <tr><td class="paramname">a</td><td>tile attributes </td></tr>
   3916   </table>
   3917   </dd>
   3918 </dl>
   3919 
   3920 </div>
   3921 </div>
   3922 <a id="set_bkg_attribute_xy" name="set_bkg_attribute_xy"></a>
   3923 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_attribute_xy">&#9670;&nbsp;</a></span>set_bkg_attribute_xy()</h2>
   3924 
   3925 <div class="memitem">
   3926 <div class="memproto">
   3927 <table class="mlabels">
   3928   <tr>
   3929   <td class="mlabels-left">
   3930       <table class="memname">
   3931         <tr>
   3932           <td class="memname">void set_bkg_attribute_xy </td>
   3933           <td>(</td>
   3934           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3935           <td class="paramname"><em>x</em>, </td>
   3936         </tr>
   3937         <tr>
   3938           <td class="paramkey"></td>
   3939           <td></td>
   3940           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3941           <td class="paramname"><em>y</em>, </td>
   3942         </tr>
   3943         <tr>
   3944           <td class="paramkey"></td>
   3945           <td></td>
   3946           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3947           <td class="paramname"><em>a</em>&#160;</td>
   3948         </tr>
   3949         <tr>
   3950           <td></td>
   3951           <td>)</td>
   3952           <td></td><td></td>
   3953         </tr>
   3954       </table>
   3955   </td>
   3956   <td class="mlabels-right">
   3957 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3958   </tr>
   3959 </table>
   3960 </div><div class="memdoc">
   3961 <p >Set single attribute data a on background layer at x,y</p>
   3962 <p >Please note that this is just a wrapper function for <a class="el" href="nes_8h.html#set_bkg_submap_attributes_nes16x">set_bkg_submap_attributes_nes16x16()</a> and divides the coordinates and dimensions by 2 to achieve this. It is intended to make code more portable by using the same coordinate system that systems with the much more common 8x8 attribute resolution would use.</p>
   3963 <dl class="params"><dt>Parameters</dt><dd>
   3964   <table class="params">
   3965     <tr><td class="paramname">x</td><td>X-coordinate </td></tr>
   3966     <tr><td class="paramname">y</td><td>Y-coordinate </td></tr>
   3967     <tr><td class="paramname">a</td><td>tile attributes </td></tr>
   3968   </table>
   3969   </dd>
   3970 </dl>
   3971 
   3972 </div>
   3973 </div>
   3974 <a id="get_bkg_tile_xy" name="get_bkg_tile_xy"></a>
   3975 <h2 class="memtitle"><span class="permalink"><a href="#get_bkg_tile_xy">&#9670;&nbsp;</a></span>get_bkg_tile_xy()</h2>
   3976 
   3977 <div class="memitem">
   3978 <div class="memproto">
   3979       <table class="memname">
   3980         <tr>
   3981           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_bkg_tile_xy </td>
   3982           <td>(</td>
   3983           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3984           <td class="paramname"><em>x</em>, </td>
   3985         </tr>
   3986         <tr>
   3987           <td class="paramkey"></td>
   3988           <td></td>
   3989           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3990           <td class="paramname"><em>y</em>&#160;</td>
   3991         </tr>
   3992         <tr>
   3993           <td></td>
   3994           <td>)</td>
   3995           <td></td><td></td>
   3996         </tr>
   3997       </table>
   3998 </div><div class="memdoc">
   3999 <p >Get single tile t on background layer at x,y </p><dl class="params"><dt>Parameters</dt><dd>
   4000   <table class="params">
   4001     <tr><td class="paramname">x</td><td>X-coordinate </td></tr>
   4002     <tr><td class="paramname">y</td><td>Y-coordinate </td></tr>
   4003   </table>
   4004   </dd>
   4005 </dl>
   4006 <dl class="section return"><dt>Returns</dt><dd>returns tile index</dd></dl>
   4007 <p>Get single tile t on background layer at x,y </p><dl class="params"><dt>Parameters</dt><dd>
   4008   <table class="params">
   4009     <tr><td class="paramname">x</td><td>X-coordinate </td></tr>
   4010     <tr><td class="paramname">y</td><td>Y-coordinate</td></tr>
   4011   </table>
   4012   </dd>
   4013 </dl>
   4014 <dl class="section return"><dt>Returns</dt><dd>returns tile index</dd></dl>
   4015 <dl class="section note"><dt>Note</dt><dd>In general <b>avoid reading from VRAM</b> since that memory is not accessible at all times. It is also not supported by GBDK on the NES platform. See <a class="el" href="docs_coding_guidelines.html#best_practice_dont_read_vram">coding guidelines</a> for more details. </dd></dl>
   4016 
   4017 </div>
   4018 </div>
   4019 <a id="move_bkg" name="move_bkg"></a>
   4020 <h2 class="memtitle"><span class="permalink"><a href="#move_bkg">&#9670;&nbsp;</a></span>move_bkg()</h2>
   4021 
   4022 <div class="memitem">
   4023 <div class="memproto">
   4024 <table class="mlabels">
   4025   <tr>
   4026   <td class="mlabels-left">
   4027       <table class="memname">
   4028         <tr>
   4029           <td class="memname">void move_bkg </td>
   4030           <td>(</td>
   4031           <td class="paramtype"><a class="el" href="nes_2hardware_8h.html#scroll_x_t">scroll_x_t</a>&#160;</td>
   4032           <td class="paramname"><em>x</em>, </td>
   4033         </tr>
   4034         <tr>
   4035           <td class="paramkey"></td>
   4036           <td></td>
   4037           <td class="paramtype"><a class="el" href="nes_2hardware_8h.html#scroll_y_t">scroll_y_t</a>&#160;</td>
   4038           <td class="paramname"><em>y</em>&#160;</td>
   4039         </tr>
   4040         <tr>
   4041           <td></td>
   4042           <td>)</td>
   4043           <td></td><td></td>
   4044         </tr>
   4045       </table>
   4046   </td>
   4047   <td class="mlabels-right">
   4048 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4049   </tr>
   4050 </table>
   4051 </div><div class="memdoc">
   4052 <p >Moves the Background Layer to the position specified in <b>x</b> and <b>y</b> in pixels.</p>
   4053 <dl class="params"><dt>Parameters</dt><dd>
   4054   <table class="params">
   4055     <tr><td class="paramname">x</td><td>X axis screen coordinate for Left edge of the Background </td></tr>
   4056     <tr><td class="paramname">y</td><td>Y axis screen coordinate for Top edge of the Background</td></tr>
   4057   </table>
   4058   </dd>
   4059 </dl>
   4060 <p>0,0 is the top left corner of the GB screen. The Background Layer wraps around the screen, so when part of it goes off the screen it appears on the opposite side (factoring in the larger size of the Background Layer versus the screen size).</p>
   4061 <p >The background layer is always under the Window Layer.</p>
   4062 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#SHOW_BKG">SHOW_BKG</a>, <a class="el" href="nes_8h.html#HIDE_BKG">HIDE_BKG</a> </dd></dl>
   4063 
   4064 </div>
   4065 </div>
   4066 <a id="scroll_bkg" name="scroll_bkg"></a>
   4067 <h2 class="memtitle"><span class="permalink"><a href="#scroll_bkg">&#9670;&nbsp;</a></span>scroll_bkg()</h2>
   4068 
   4069 <div class="memitem">
   4070 <div class="memproto">
   4071 <table class="mlabels">
   4072   <tr>
   4073   <td class="mlabels-left">
   4074       <table class="memname">
   4075         <tr>
   4076           <td class="memname">void scroll_bkg </td>
   4077           <td>(</td>
   4078           <td class="paramtype"><a class="el" href="stdint_8h.html#int8_t">int8_t</a>&#160;</td>
   4079           <td class="paramname"><em>x</em>, </td>
   4080         </tr>
   4081         <tr>
   4082           <td class="paramkey"></td>
   4083           <td></td>
   4084           <td class="paramtype"><a class="el" href="stdint_8h.html#int8_t">int8_t</a>&#160;</td>
   4085           <td class="paramname"><em>y</em>&#160;</td>
   4086         </tr>
   4087         <tr>
   4088           <td></td>
   4089           <td>)</td>
   4090           <td></td><td></td>
   4091         </tr>
   4092       </table>
   4093   </td>
   4094   <td class="mlabels-right">
   4095 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4096   </tr>
   4097 </table>
   4098 </div><div class="memdoc">
   4099 <p >Moves the Background relative to it's current position.</p>
   4100 <dl class="params"><dt>Parameters</dt><dd>
   4101   <table class="params">
   4102     <tr><td class="paramname">x</td><td>Number of pixels to move the Background on the <b>X axis</b> <br  />
   4103  Range: -128 - 127 </td></tr>
   4104     <tr><td class="paramname">y</td><td>Number of pixels to move the Background on the <b>Y axis</b> <br  />
   4105  Range: -128 - 127</td></tr>
   4106   </table>
   4107   </dd>
   4108 </dl>
   4109 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#move_bkg">move_bkg</a> </dd></dl>
   4110 
   4111 </div>
   4112 </div>
   4113 <a id="set_sprite_data" name="set_sprite_data"></a>
   4114 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_data">&#9670;&nbsp;</a></span>set_sprite_data()</h2>
   4115 
   4116 <div class="memitem">
   4117 <div class="memproto">
   4118       <table class="memname">
   4119         <tr>
   4120           <td class="memname">void set_sprite_data </td>
   4121           <td>(</td>
   4122           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4123           <td class="paramname"><em>first_tile</em>, </td>
   4124         </tr>
   4125         <tr>
   4126           <td class="paramkey"></td>
   4127           <td></td>
   4128           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4129           <td class="paramname"><em>nb_tiles</em>, </td>
   4130         </tr>
   4131         <tr>
   4132           <td class="paramkey"></td>
   4133           <td></td>
   4134           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4135           <td class="paramname"><em>data</em>&#160;</td>
   4136         </tr>
   4137         <tr>
   4138           <td></td>
   4139           <td>)</td>
   4140           <td></td><td></td>
   4141         </tr>
   4142       </table>
   4143 </div><div class="memdoc">
   4144 <p >Sets VRAM Tile Pattern data for Sprites</p>
   4145 <p >Writes <b>nb_tiles</b> tiles to VRAM starting at <b>first_tile</b>, tile data is sourced from <b>data</b>. Each Tile is 16 bytes in size (8x8 pixels, 2 bits-per-pixel).</p>
   4146 <p >Note: Sprite Tiles 128-255 share the same memory region as Background Tiles 128-255.</p>
   4147 <p >GBC only: <a class="el" href="gb_2hardware_8h.html#VBK_REG">VBK_REG</a> determines which bank of tile patterns are written to. </p><ul>
   4148 <li>VBK_REG=0 indicates the first bank </li>
   4149 <li>VBK_REG=1 indicates the second</li>
   4150 </ul>
   4151 <p>Sets VRAM Tile Pattern data for Sprites</p>
   4152 <dl class="params"><dt>Parameters</dt><dd>
   4153   <table class="params">
   4154     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   4155     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   4156     <tr><td class="paramname">data</td><td>Pointer to (2 bpp) source Tile Pattern data</td></tr>
   4157   </table>
   4158   </dd>
   4159 </dl>
   4160 <p>Writes <b>nb_tiles</b> tiles to VRAM starting at <b>first_tile</b>, tile data is sourced from <b>data</b>. Each Tile is 16 bytes in size (8x8 pixels, 2 bits-per-pixel).</p>
   4161 <dl class="section note"><dt>Note</dt><dd>Sprite Tiles 128-255 share the same memory region as Background Tiles 128-255.</dd></dl>
   4162 <p>GBC only: <a class="el" href="gb_2hardware_8h.html#VBK_REG">VBK_REG</a> determines which bank of tile patterns are written to. </p><ul>
   4163 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_0">VBK_BANK_0</a> indicates the first bank </li>
   4164 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_1">VBK_BANK_1</a> indicates the second </li>
   4165 </ul>
   4166 
   4167 </div>
   4168 </div>
   4169 <a id="set_sprite_1bpp_data" name="set_sprite_1bpp_data"></a>
   4170 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_1bpp_data">&#9670;&nbsp;</a></span>set_sprite_1bpp_data()</h2>
   4171 
   4172 <div class="memitem">
   4173 <div class="memproto">
   4174       <table class="memname">
   4175         <tr>
   4176           <td class="memname">void set_sprite_1bpp_data </td>
   4177           <td>(</td>
   4178           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4179           <td class="paramname"><em>first_tile</em>, </td>
   4180         </tr>
   4181         <tr>
   4182           <td class="paramkey"></td>
   4183           <td></td>
   4184           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4185           <td class="paramname"><em>nb_tiles</em>, </td>
   4186         </tr>
   4187         <tr>
   4188           <td class="paramkey"></td>
   4189           <td></td>
   4190           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4191           <td class="paramname"><em>data</em>&#160;</td>
   4192         </tr>
   4193         <tr>
   4194           <td></td>
   4195           <td>)</td>
   4196           <td></td><td></td>
   4197         </tr>
   4198       </table>
   4199 </div><div class="memdoc">
   4200 <p >Sets VRAM Tile Pattern data for Sprites using 1bpp source data</p>
   4201 <p >Similar to <a class="el" href="sms_8h.html#set_sprite_data">set_sprite_data</a>, except source data is 1 bit-per-pixel which gets expanded into 2 bits-per-pixel.</p>
   4202 <p >For a given bit that represent a pixel: </p><ul>
   4203 <li>0 will be expanded into color 0 </li>
   4204 <li>1 will be expanded into color 3</li>
   4205 </ul>
   4206 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_SPRITES">SHOW_SPRITES</a>, <a class="el" href="gb_8h.html#HIDE_SPRITES">HIDE_SPRITES</a>, <a class="el" href="gb_8h.html#set_sprite_tile">set_sprite_tile</a></dd></dl>
   4207 <p>Sets VRAM Tile Pattern data for Sprites using 1bpp source data</p>
   4208 <dl class="params"><dt>Parameters</dt><dd>
   4209   <table class="params">
   4210     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   4211     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   4212     <tr><td class="paramname">data</td><td>Pointer to (1bpp) source Tile Pattern data</td></tr>
   4213   </table>
   4214   </dd>
   4215 </dl>
   4216 <p>Similar to <a class="el" href="sms_8h.html#set_sprite_data">set_sprite_data</a>, except source data is 1 bit-per-pixel which gets expanded into 2 bits-per-pixel.</p>
   4217 <p >For a given bit that represent a pixel: </p><ul>
   4218 <li>0 will be expanded into the Background color </li>
   4219 <li>1 will be expanded into the Foreground color</li>
   4220 </ul>
   4221 <p>See <a class="el" href="sms_8h.html#set_1bpp_colors">set_1bpp_colors</a> for details about setting the Foreground and Background colors.</p>
   4222 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_SPRITES">SHOW_SPRITES</a>, <a class="el" href="gb_8h.html#HIDE_SPRITES">HIDE_SPRITES</a>, <a class="el" href="gb_8h.html#set_sprite_tile">set_sprite_tile</a> </dd>
   4223 <dd>
   4224 <a class="el" href="gb_8h.html#set_bkg_1bpp_data">set_bkg_1bpp_data</a>, <a class="el" href="gb_8h.html#set_win_1bpp_data">set_win_1bpp_data</a> </dd></dl>
   4225 
   4226 </div>
   4227 </div>
   4228 <a id="SET_SHADOW_OAM_ADDRESS" name="SET_SHADOW_OAM_ADDRESS"></a>
   4229 <h2 class="memtitle"><span class="permalink"><a href="#SET_SHADOW_OAM_ADDRESS">&#9670;&nbsp;</a></span>SET_SHADOW_OAM_ADDRESS()</h2>
   4230 
   4231 <div class="memitem">
   4232 <div class="memproto">
   4233 <table class="mlabels">
   4234   <tr>
   4235   <td class="mlabels-left">
   4236       <table class="memname">
   4237         <tr>
   4238           <td class="memname">void SET_SHADOW_OAM_ADDRESS </td>
   4239           <td>(</td>
   4240           <td class="paramtype">void *&#160;</td>
   4241           <td class="paramname"><em>address</em></td><td>)</td>
   4242           <td></td>
   4243         </tr>
   4244       </table>
   4245   </td>
   4246   <td class="mlabels-right">
   4247 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4248   </tr>
   4249 </table>
   4250 </div><div class="memdoc">
   4251 <p >Enable OAM DMA copy each VBlank and set it to transfer any 256-byte aligned array </p>
   4252 
   4253 </div>
   4254 </div>
   4255 <a id="set_sprite_tile" name="set_sprite_tile"></a>
   4256 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_tile">&#9670;&nbsp;</a></span>set_sprite_tile()</h2>
   4257 
   4258 <div class="memitem">
   4259 <div class="memproto">
   4260 <table class="mlabels">
   4261   <tr>
   4262   <td class="mlabels-left">
   4263       <table class="memname">
   4264         <tr>
   4265           <td class="memname">void set_sprite_tile </td>
   4266           <td>(</td>
   4267           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4268           <td class="paramname"><em>nb</em>, </td>
   4269         </tr>
   4270         <tr>
   4271           <td class="paramkey"></td>
   4272           <td></td>
   4273           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4274           <td class="paramname"><em>tile</em>&#160;</td>
   4275         </tr>
   4276         <tr>
   4277           <td></td>
   4278           <td>)</td>
   4279           <td></td><td></td>
   4280         </tr>
   4281       </table>
   4282   </td>
   4283   <td class="mlabels-right">
   4284 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4285   </tr>
   4286 </table>
   4287 </div><div class="memdoc">
   4288 <p >Sets sprite number <b>nb__in the OAM to display tile number __tile</b>.</p>
   4289 <dl class="params"><dt>Parameters</dt><dd>
   4290   <table class="params">
   4291     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 63 </td></tr>
   4292     <tr><td class="paramname">tile</td><td>Selects a tile (0 - 255) from PPU memory at 0000h - 0FFFh / 1000h - 1FFFh</td></tr>
   4293   </table>
   4294   </dd>
   4295 </dl>
   4296 <p>In 8x16 mode: </p><ul>
   4297 <li>The sprite will also display the next tile (<b>tile</b> + 1) directly below (y + 8) the first tile. </li>
   4298 <li>The lower bit of the tile number is ignored: the upper 8x8 tile is (<b>tile</b> &amp; 0xFE), and the lower 8x8 tile is (<b>tile</b> | 0x01). </li>
   4299 <li>See: <a class="el" href="sms_8h.html#SPRITES_8x16">SPRITES_8x16</a></li>
   4300 </ul>
   4301 <p>Sets sprite number <b>nb__in the OAM to display tile number __tile</b>.</p>
   4302 <dl class="params"><dt>Parameters</dt><dd>
   4303   <table class="params">
   4304     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   4305     <tr><td class="paramname">tile</td><td>Selects a tile (0 - 255) from memory at 8000h - 8FFFh <br  />
   4306  In CGB Mode this could be either in VRAM Bank <br  />
   4307  0 or 1, depending on Bit 3 of the OAM Attribute Flag <br  />
   4308  (see <a class="el" href="sms_8h.html#set_sprite_prop">set_sprite_prop</a>)</td></tr>
   4309   </table>
   4310   </dd>
   4311 </dl>
   4312 <p>In 8x16 mode: </p><ul>
   4313 <li>The sprite will also display the next tile (<b>tile</b> + 1) directly below (y + 8) the first tile. </li>
   4314 <li>The lower bit of the tile number is ignored: the upper 8x8 tile is (<b>tile</b> &amp; 0xFE), and the lower 8x8 tile is (<b>tile</b> | 0x01). </li>
   4315 <li>See: <a class="el" href="sms_8h.html#SPRITES_8x16">SPRITES_8x16</a> </li>
   4316 </ul>
   4317 
   4318 </div>
   4319 </div>
   4320 <a id="get_sprite_tile" name="get_sprite_tile"></a>
   4321 <h2 class="memtitle"><span class="permalink"><a href="#get_sprite_tile">&#9670;&nbsp;</a></span>get_sprite_tile()</h2>
   4322 
   4323 <div class="memitem">
   4324 <div class="memproto">
   4325 <table class="mlabels">
   4326   <tr>
   4327   <td class="mlabels-left">
   4328       <table class="memname">
   4329         <tr>
   4330           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_sprite_tile </td>
   4331           <td>(</td>
   4332           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4333           <td class="paramname"><em>nb</em></td><td>)</td>
   4334           <td></td>
   4335         </tr>
   4336       </table>
   4337   </td>
   4338   <td class="mlabels-right">
   4339 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4340   </tr>
   4341 </table>
   4342 </div><div class="memdoc">
   4343 <p >Returns the tile number of sprite number <b>nb</b> in the OAM.</p>
   4344 <dl class="params"><dt>Parameters</dt><dd>
   4345   <table class="params">
   4346     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 63</td></tr>
   4347   </table>
   4348   </dd>
   4349 </dl>
   4350 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_sprite_tile">set_sprite_tile</a> for more details</dd></dl>
   4351 <p>Returns the tile number of sprite number <b>nb</b> in the OAM.</p>
   4352 <dl class="params"><dt>Parameters</dt><dd>
   4353   <table class="params">
   4354     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39</td></tr>
   4355   </table>
   4356   </dd>
   4357 </dl>
   4358 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_sprite_tile">set_sprite_tile</a> for more details </dd></dl>
   4359 
   4360 </div>
   4361 </div>
   4362 <a id="set_sprite_prop" name="set_sprite_prop"></a>
   4363 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_prop">&#9670;&nbsp;</a></span>set_sprite_prop()</h2>
   4364 
   4365 <div class="memitem">
   4366 <div class="memproto">
   4367 <table class="mlabels">
   4368   <tr>
   4369   <td class="mlabels-left">
   4370       <table class="memname">
   4371         <tr>
   4372           <td class="memname">void set_sprite_prop </td>
   4373           <td>(</td>
   4374           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4375           <td class="paramname"><em>nb</em>, </td>
   4376         </tr>
   4377         <tr>
   4378           <td class="paramkey"></td>
   4379           <td></td>
   4380           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4381           <td class="paramname"><em>prop</em>&#160;</td>
   4382         </tr>
   4383         <tr>
   4384           <td></td>
   4385           <td>)</td>
   4386           <td></td><td></td>
   4387         </tr>
   4388       </table>
   4389   </td>
   4390   <td class="mlabels-right">
   4391 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4392   </tr>
   4393 </table>
   4394 </div><div class="memdoc">
   4395 <p >Sets the OAM Property Flags of sprite number <b>nb</b> to those defined in <b>prop</b>.</p>
   4396 <dl class="params"><dt>Parameters</dt><dd>
   4397   <table class="params">
   4398     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   4399     <tr><td class="paramname">prop</td><td>Property setting (see bitfield description)</td></tr>
   4400   </table>
   4401   </dd>
   4402 </dl>
   4403 <p>The bits in <b>prop</b> represent: </p><ul>
   4404 <li>Bit 7 - Vertical flip. Dictates which way up the sprite is drawn vertically. <br  />
   4405  0: normal <br  />
   4406  1: upside down </li>
   4407 <li>Bit 6 - Horizontal flip. Dictates which way up the sprite is drawn horizontally. <br  />
   4408  0: normal <br  />
   4409  1: back to front </li>
   4410 <li>Bit 5 - Priority flag. When this is set, the sprites appear behind the background and window layer. <br  />
   4411  0: infront <br  />
   4412  1: behind </li>
   4413 <li>Bit 4 - Unimplemented </li>
   4414 <li>Bit 3 - Unimplemented </li>
   4415 <li>Bit 2 - Unimplemented </li>
   4416 <li>Bit 1 - See bit 0. </li>
   4417 <li>Bit 0 - Bits 0-1 indicate which color palette the sprite should use. Note: only palettes 4 to 7 will be available for NES sprites.</li>
   4418 </ul>
   4419 <p>It's recommended to use GBDK constants (eg: S_FLIPY) to configure sprite properties as these are crossplatform.</p>
   4420 <div class="fragment"><div class="line"><span class="comment">// Load palette data into the first palette</span></div>
   4421 <div class="line"><a class="code hl_define" href="msx_8h.html#set_sprite_palette">set_sprite_palette</a>(4, 1, exampleSprite_palettes)</div>
   4422 <div class="line"> </div>
   4423 <div class="line"><span class="comment">// Set the OAM value for the sprite</span></div>
   4424 <div class="line"><span class="comment">// These flags tell the sprite to use the first sprite palette (palette 4) and to flip the sprite both vertically and horizontally.</span></div>
   4425 <div class="line"><a class="code hl_function" href="gb_8h.html#set_sprite_prop">set_sprite_prop</a>(0, <a class="code hl_define" href="gb_8h.html#S_FLIPY">S_FLIPY</a> | <a class="code hl_define" href="gb_8h.html#S_FLIPX">S_FLIPX</a>);</div>
   4426 <div class="ttc" id="agb_8h_html_S_FLIPX"><div class="ttname"><a href="gb_8h.html#S_FLIPX">S_FLIPX</a></div><div class="ttdeci">#define S_FLIPX</div><div class="ttdef"><b>Definition:</b> gb.h:92</div></div>
   4427 <div class="ttc" id="agb_8h_html_S_FLIPY"><div class="ttname"><a href="gb_8h.html#S_FLIPY">S_FLIPY</a></div><div class="ttdeci">#define S_FLIPY</div><div class="ttdef"><b>Definition:</b> gb.h:96</div></div>
   4428 <div class="ttc" id="agb_8h_html_set_sprite_prop"><div class="ttname"><a href="gb_8h.html#set_sprite_prop">set_sprite_prop</a></div><div class="ttdeci">void set_sprite_prop(uint8_t nb, uint8_t prop)</div><div class="ttdef"><b>Definition:</b> gb.h:1945</div></div>
   4429 <div class="ttc" id="amsx_8h_html_set_sprite_palette"><div class="ttname"><a href="msx_8h.html#set_sprite_palette">set_sprite_palette</a></div><div class="ttdeci">#define set_sprite_palette(first_palette, nb_palettes, rgb_data)</div><div class="ttdef"><b>Definition:</b> msx.h:558</div></div>
   4430 </div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="sms_8h.html#S_PALETTE">S_PALETTE</a>, <a class="el" href="sms_8h.html#S_FLIPX">S_FLIPX</a>, <a class="el" href="sms_8h.html#S_FLIPY">S_FLIPY</a>, <a class="el" href="sms_8h.html#S_PRIORITY">S_PRIORITY</a></dd></dl>
   4431 <p>Sets the OAM Property Flags of sprite number <b>nb</b> to those defined in <b>prop</b>.</p>
   4432 <dl class="params"><dt>Parameters</dt><dd>
   4433   <table class="params">
   4434     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   4435     <tr><td class="paramname">prop</td><td>Property setting (see bitfield description)</td></tr>
   4436   </table>
   4437   </dd>
   4438 </dl>
   4439 <p>The bits in <b>prop</b> represent: </p><ul>
   4440 <li>Bit 7 - Priority flag. When this is set the sprites appear behind the background and window layer. <br  />
   4441  0: infront <br  />
   4442  1: behind </li>
   4443 <li>Bit 6 - Vertical flip. Dictates which way up the sprite is drawn vertically. <br  />
   4444  0: normal <br  />
   4445  1:upside down </li>
   4446 <li>Bit 5 - Horizontal flip. Dictates which way up the sprite is drawn horizontally. <br  />
   4447  0: normal <br  />
   4448  1:back to front </li>
   4449 <li>Bit 4 - DMG/Non-CGB Mode Only. Assigns either one of the two b/w palettes to the sprite. <br  />
   4450  0: OBJ palette 0 <br  />
   4451  1: OBJ palette 1 </li>
   4452 <li>Bit 3 - GBC only. Dictates from which bank of Sprite Tile Patterns the tile is taken. <br  />
   4453  0: Bank 0 <br  />
   4454  1: Bank 1 </li>
   4455 <li>Bit 2 - See bit 0. </li>
   4456 <li>Bit 1 - See bit 0. </li>
   4457 <li>Bit 0 - GBC only. Bits 0-2 indicate which of the 7 OBJ colour palettes the sprite is assigned.</li>
   4458 </ul>
   4459 <p>It's recommended to use GBDK constants (eg: S_FLIPY) to configure sprite properties as these are crossplatform.</p>
   4460 <div class="fragment"><div class="line"><span class="comment">// Load palette data into the first palette</span></div>
   4461 <div class="line"><a class="code hl_define" href="msx_8h.html#set_sprite_palette">set_sprite_palette</a>(4, 1, exampleSprite_palettes)</div>
   4462 <div class="line"> </div>
   4463 <div class="line"><span class="comment">// Set the OAM value for the sprite</span></div>
   4464 <div class="line"><span class="comment">// These flags tell the sprite to flip both vertically and horizontally.</span></div>
   4465 <div class="line"><a class="code hl_function" href="gb_8h.html#set_sprite_prop">set_sprite_prop</a>(0, <a class="code hl_define" href="gb_8h.html#S_FLIPY">S_FLIPY</a> | <a class="code hl_define" href="gb_8h.html#S_FLIPX">S_FLIPX</a>);</div>
   4466 </div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="sms_8h.html#S_PALETTE">S_PALETTE</a>, <a class="el" href="sms_8h.html#S_FLIPX">S_FLIPX</a>, <a class="el" href="sms_8h.html#S_FLIPY">S_FLIPY</a>, <a class="el" href="sms_8h.html#S_PRIORITY">S_PRIORITY</a></dd></dl>
   4467 <p>Function has no affect on sms.</p>
   4468 <p >This function is only here to enable game portability </p>
   4469 
   4470 </div>
   4471 </div>
   4472 <a id="get_sprite_prop" name="get_sprite_prop"></a>
   4473 <h2 class="memtitle"><span class="permalink"><a href="#get_sprite_prop">&#9670;&nbsp;</a></span>get_sprite_prop()</h2>
   4474 
   4475 <div class="memitem">
   4476 <div class="memproto">
   4477 <table class="mlabels">
   4478   <tr>
   4479   <td class="mlabels-left">
   4480       <table class="memname">
   4481         <tr>
   4482           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_sprite_prop </td>
   4483           <td>(</td>
   4484           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4485           <td class="paramname"><em>nb</em></td><td>)</td>
   4486           <td></td>
   4487         </tr>
   4488       </table>
   4489   </td>
   4490   <td class="mlabels-right">
   4491 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4492   </tr>
   4493 </table>
   4494 </div><div class="memdoc">
   4495 <p >Returns the OAM Property Flags of sprite number <b>nb</b>.</p>
   4496 <dl class="params"><dt>Parameters</dt><dd>
   4497   <table class="params">
   4498     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   4499   </table>
   4500   </dd>
   4501 </dl>
   4502 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_sprite_prop">set_sprite_prop</a> for property bitfield settings </dd></dl>
   4503 
   4504 </div>
   4505 </div>
   4506 <a id="move_sprite" name="move_sprite"></a>
   4507 <h2 class="memtitle"><span class="permalink"><a href="#move_sprite">&#9670;&nbsp;</a></span>move_sprite()</h2>
   4508 
   4509 <div class="memitem">
   4510 <div class="memproto">
   4511 <table class="mlabels">
   4512   <tr>
   4513   <td class="mlabels-left">
   4514       <table class="memname">
   4515         <tr>
   4516           <td class="memname">void move_sprite </td>
   4517           <td>(</td>
   4518           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4519           <td class="paramname"><em>nb</em>, </td>
   4520         </tr>
   4521         <tr>
   4522           <td class="paramkey"></td>
   4523           <td></td>
   4524           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4525           <td class="paramname"><em>x</em>, </td>
   4526         </tr>
   4527         <tr>
   4528           <td class="paramkey"></td>
   4529           <td></td>
   4530           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4531           <td class="paramname"><em>y</em>&#160;</td>
   4532         </tr>
   4533         <tr>
   4534           <td></td>
   4535           <td>)</td>
   4536           <td></td><td></td>
   4537         </tr>
   4538       </table>
   4539   </td>
   4540   <td class="mlabels-right">
   4541 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4542   </tr>
   4543 </table>
   4544 </div><div class="memdoc">
   4545 <p >Moves sprite number <b>nb</b> to the <b>x</b>, <b>y</b> position on the screen.</p>
   4546 <dl class="params"><dt>Parameters</dt><dd>
   4547   <table class="params">
   4548     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 63 </td></tr>
   4549     <tr><td class="paramname">x</td><td>X Position. Specifies the sprites horizontal position on the screen (minus 8). </td></tr>
   4550     <tr><td class="paramname">y</td><td>Y Position. Specifies the sprites vertical position on the screen (minus 16). <br  />
   4551  An offscreen value (Y&gt;=240) hides the sprite.</td></tr>
   4552   </table>
   4553   </dd>
   4554 </dl>
   4555 <p>Moving the sprite to 0,0 (or similar off-screen location) will hide it.</p>
   4556 <p >Moves sprite number <b>nb</b> to the <b>x</b>, <b>y</b> position on the screen.</p>
   4557 <dl class="params"><dt>Parameters</dt><dd>
   4558   <table class="params">
   4559     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   4560     <tr><td class="paramname">x</td><td>X Position. Specifies the sprites horizontal position on the screen (minus 8). <br  />
   4561  An offscreen value (X=0 or X&gt;=168) hides the sprite, but the sprite still affects the priority ordering - a better way to hide a sprite is to set its Y-coordinate offscreen. </td></tr>
   4562     <tr><td class="paramname">y</td><td>Y Position. Specifies the sprites vertical position on the screen (minus 16). <br  />
   4563  An offscreen value (for example, Y=0 or Y&gt;=160) hides the sprite.</td></tr>
   4564   </table>
   4565   </dd>
   4566 </dl>
   4567 <p>Moving the sprite to 0,0 (or similar off-screen location) will hide it. </p>
   4568 
   4569 </div>
   4570 </div>
   4571 <a id="scroll_sprite" name="scroll_sprite"></a>
   4572 <h2 class="memtitle"><span class="permalink"><a href="#scroll_sprite">&#9670;&nbsp;</a></span>scroll_sprite()</h2>
   4573 
   4574 <div class="memitem">
   4575 <div class="memproto">
   4576 <table class="mlabels">
   4577   <tr>
   4578   <td class="mlabels-left">
   4579       <table class="memname">
   4580         <tr>
   4581           <td class="memname">void scroll_sprite </td>
   4582           <td>(</td>
   4583           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4584           <td class="paramname"><em>nb</em>, </td>
   4585         </tr>
   4586         <tr>
   4587           <td class="paramkey"></td>
   4588           <td></td>
   4589           <td class="paramtype"><a class="el" href="stdint_8h.html#int8_t">int8_t</a>&#160;</td>
   4590           <td class="paramname"><em>x</em>, </td>
   4591         </tr>
   4592         <tr>
   4593           <td class="paramkey"></td>
   4594           <td></td>
   4595           <td class="paramtype"><a class="el" href="stdint_8h.html#int8_t">int8_t</a>&#160;</td>
   4596           <td class="paramname"><em>y</em>&#160;</td>
   4597         </tr>
   4598         <tr>
   4599           <td></td>
   4600           <td>)</td>
   4601           <td></td><td></td>
   4602         </tr>
   4603       </table>
   4604   </td>
   4605   <td class="mlabels-right">
   4606 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4607   </tr>
   4608 </table>
   4609 </div><div class="memdoc">
   4610 <p >Moves sprite number <b>nb</b> relative to its current position.</p>
   4611 <dl class="params"><dt>Parameters</dt><dd>
   4612   <table class="params">
   4613     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 63 </td></tr>
   4614     <tr><td class="paramname">x</td><td>Number of pixels to move the sprite on the <b>X axis</b> <br  />
   4615  Range: -128 - 127 </td></tr>
   4616     <tr><td class="paramname">y</td><td>Number of pixels to move the sprite on the <b>Y axis</b> <br  />
   4617  Range: -128 - 127</td></tr>
   4618   </table>
   4619   </dd>
   4620 </dl>
   4621 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#move_sprite">move_sprite</a> for more details about the X and Y position</dd></dl>
   4622 <p>Moves sprite number <b>nb</b> relative to its current position.</p>
   4623 <dl class="params"><dt>Parameters</dt><dd>
   4624   <table class="params">
   4625     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   4626     <tr><td class="paramname">x</td><td>Number of pixels to move the sprite on the <b>X axis</b> <br  />
   4627  Range: -128 - 127 </td></tr>
   4628     <tr><td class="paramname">y</td><td>Number of pixels to move the sprite on the <b>Y axis</b> <br  />
   4629  Range: -128 - 127</td></tr>
   4630   </table>
   4631   </dd>
   4632 </dl>
   4633 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#move_sprite">move_sprite</a> for more details about the X and Y position </dd></dl>
   4634 
   4635 </div>
   4636 </div>
   4637 <a id="hide_sprite" name="hide_sprite"></a>
   4638 <h2 class="memtitle"><span class="permalink"><a href="#hide_sprite">&#9670;&nbsp;</a></span>hide_sprite()</h2>
   4639 
   4640 <div class="memitem">
   4641 <div class="memproto">
   4642 <table class="mlabels">
   4643   <tr>
   4644   <td class="mlabels-left">
   4645       <table class="memname">
   4646         <tr>
   4647           <td class="memname">void hide_sprite </td>
   4648           <td>(</td>
   4649           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4650           <td class="paramname"><em>nb</em></td><td>)</td>
   4651           <td></td>
   4652         </tr>
   4653       </table>
   4654   </td>
   4655   <td class="mlabels-right">
   4656 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4657   </tr>
   4658 </table>
   4659 </div><div class="memdoc">
   4660 <p >Hides sprite number <b>nb</b> by moving it to Y position 240.</p>
   4661 <dl class="params"><dt>Parameters</dt><dd>
   4662   <table class="params">
   4663     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 63</td></tr>
   4664   </table>
   4665   </dd>
   4666 </dl>
   4667 <p>Hides sprite number <b>nb</b> by moving it to zero position by Y.</p>
   4668 <dl class="params"><dt>Parameters</dt><dd>
   4669   <table class="params">
   4670     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39</td></tr>
   4671   </table>
   4672   </dd>
   4673 </dl>
   4674 <dl class="section see"><dt>See also</dt><dd><a class="el" href="sms_2metasprites_8h.html#hide_sprites_range">hide_sprites_range</a>, <a class="el" href="msx_8h.html#HIDE_SPRITES">HIDE_SPRITES</a></dd></dl>
   4675 <p>Hides sprite number <b>nb</b> by moving it to zero position by Y.</p>
   4676 <dl class="params"><dt>Parameters</dt><dd>
   4677   <table class="params">
   4678     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   4679   </table>
   4680   </dd>
   4681 </dl>
   4682 
   4683 </div>
   4684 </div>
   4685 <a id="set_data" name="set_data"></a>
   4686 <h2 class="memtitle"><span class="permalink"><a href="#set_data">&#9670;&nbsp;</a></span>set_data()</h2>
   4687 
   4688 <div class="memitem">
   4689 <div class="memproto">
   4690       <table class="memname">
   4691         <tr>
   4692           <td class="memname">void set_data </td>
   4693           <td>(</td>
   4694           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4695           <td class="paramname"><em>vram_addr</em>, </td>
   4696         </tr>
   4697         <tr>
   4698           <td class="paramkey"></td>
   4699           <td></td>
   4700           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4701           <td class="paramname"><em>data</em>, </td>
   4702         </tr>
   4703         <tr>
   4704           <td class="paramkey"></td>
   4705           <td></td>
   4706           <td class="paramtype"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td>
   4707           <td class="paramname"><em>len</em>&#160;</td>
   4708         </tr>
   4709         <tr>
   4710           <td></td>
   4711           <td>)</td>
   4712           <td></td><td></td>
   4713         </tr>
   4714       </table>
   4715 </div><div class="memdoc">
   4716 <p >Copies arbitrary data to an address in VRAM without taking into account the state of LCDC bits 3 or 4.</p>
   4717 <p >Copies <b>len</b> bytes from a buffer at <b>data</b> to VRAM starting at <b>vram_addr</b>.</p>
   4718 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="gb_8h.html#set_win_data">set_win_data</a>, <a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a>, <a class="el" href="gb_8h.html#set_win_tiles">set_win_tiles</a>, <a class="el" href="nes_8h.html#set_tile_data">set_tile_data</a>, <a class="el" href="nes_8h.html#set_tiles">set_tiles</a> </dd></dl>
   4719 
   4720 </div>
   4721 </div>
   4722 <a id="set_tiles" name="set_tiles"></a>
   4723 <h2 class="memtitle"><span class="permalink"><a href="#set_tiles">&#9670;&nbsp;</a></span>set_tiles()</h2>
   4724 
   4725 <div class="memitem">
   4726 <div class="memproto">
   4727       <table class="memname">
   4728         <tr>
   4729           <td class="memname">void set_tiles </td>
   4730           <td>(</td>
   4731           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4732           <td class="paramname"><em>x</em>, </td>
   4733         </tr>
   4734         <tr>
   4735           <td class="paramkey"></td>
   4736           <td></td>
   4737           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4738           <td class="paramname"><em>y</em>, </td>
   4739         </tr>
   4740         <tr>
   4741           <td class="paramkey"></td>
   4742           <td></td>
   4743           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4744           <td class="paramname"><em>w</em>, </td>
   4745         </tr>
   4746         <tr>
   4747           <td class="paramkey"></td>
   4748           <td></td>
   4749           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4750           <td class="paramname"><em>h</em>, </td>
   4751         </tr>
   4752         <tr>
   4753           <td class="paramkey"></td>
   4754           <td></td>
   4755           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4756           <td class="paramname"><em>vram_addr</em>, </td>
   4757         </tr>
   4758         <tr>
   4759           <td class="paramkey"></td>
   4760           <td></td>
   4761           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4762           <td class="paramname"><em>tiles</em>&#160;</td>
   4763         </tr>
   4764         <tr>
   4765           <td></td>
   4766           <td>)</td>
   4767           <td></td><td></td>
   4768         </tr>
   4769       </table>
   4770 </div><div class="memdoc">
   4771 <p >Sets a rectangular region of Tile Map entries at a given VRAM Address.</p>
   4772 <dl class="params"><dt>Parameters</dt><dd>
   4773   <table class="params">
   4774     <tr><td class="paramname">x</td><td>X Start position in Map tile coordinates. Range 0 - 31 </td></tr>
   4775     <tr><td class="paramname">y</td><td>Y Start position in Map tile coordinates. Range 0 - 31 </td></tr>
   4776     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   4777     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   4778     <tr><td class="paramname">vram_addr</td><td>Pointer to destination VRAM Address </td></tr>
   4779     <tr><td class="paramname">tiles</td><td>Pointer to source Tile Map data</td></tr>
   4780   </table>
   4781   </dd>
   4782 </dl>
   4783 <p>Entries are copied from <b>tiles</b> to Tile Map at address vram_addr starting at <b>x</b>, <b>y</b> writing across for <b>w</b> tiles and down for <b>h</b> tiles.</p>
   4784 <p >One byte per source tile map entry.</p>
   4785 <p >There are two 32x30 Tile Maps in VRAM at addresses 2000h-23FFh and 2400h-27FFh.</p>
   4786 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a> </dd></dl>
   4787 
   4788 </div>
   4789 </div>
   4790 <a id="set_tile_data" name="set_tile_data"></a>
   4791 <h2 class="memtitle"><span class="permalink"><a href="#set_tile_data">&#9670;&nbsp;</a></span>set_tile_data()</h2>
   4792 
   4793 <div class="memitem">
   4794 <div class="memproto">
   4795 <table class="mlabels">
   4796   <tr>
   4797   <td class="mlabels-left">
   4798       <table class="memname">
   4799         <tr>
   4800           <td class="memname">void set_tile_data </td>
   4801           <td>(</td>
   4802           <td class="paramtype"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td>
   4803           <td class="paramname"><em>first_tile</em>, </td>
   4804         </tr>
   4805         <tr>
   4806           <td class="paramkey"></td>
   4807           <td></td>
   4808           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4809           <td class="paramname"><em>nb_tiles</em>, </td>
   4810         </tr>
   4811         <tr>
   4812           <td class="paramkey"></td>
   4813           <td></td>
   4814           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4815           <td class="paramname"><em>data</em>&#160;</td>
   4816         </tr>
   4817         <tr>
   4818           <td></td>
   4819           <td>)</td>
   4820           <td></td><td></td>
   4821         </tr>
   4822       </table>
   4823   </td>
   4824   <td class="mlabels-right">
   4825 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4826   </tr>
   4827 </table>
   4828 </div><div class="memdoc">
   4829 <p >Sets VRAM Tile Pattern data starting from given base address without taking into account the state of PPUMASK.</p>
   4830 <dl class="section see"><dt>See also</dt><dd><a class="el" href="nes_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="nes_8h.html#set_data">set_data</a> </dd></dl>
   4831 
   4832 </div>
   4833 </div>
   4834 <a id="set_bkg_native_data" name="set_bkg_native_data"></a>
   4835 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_native_data">&#9670;&nbsp;</a></span>set_bkg_native_data()</h2>
   4836 
   4837 <div class="memitem">
   4838 <div class="memproto">
   4839 <table class="mlabels">
   4840   <tr>
   4841   <td class="mlabels-left">
   4842       <table class="memname">
   4843         <tr>
   4844           <td class="memname">void set_bkg_native_data </td>
   4845           <td>(</td>
   4846           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4847           <td class="paramname"><em>first_tile</em>, </td>
   4848         </tr>
   4849         <tr>
   4850           <td class="paramkey"></td>
   4851           <td></td>
   4852           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4853           <td class="paramname"><em>nb_tiles</em>, </td>
   4854         </tr>
   4855         <tr>
   4856           <td class="paramkey"></td>
   4857           <td></td>
   4858           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4859           <td class="paramname"><em>data</em>&#160;</td>
   4860         </tr>
   4861         <tr>
   4862           <td></td>
   4863           <td>)</td>
   4864           <td></td><td></td>
   4865         </tr>
   4866       </table>
   4867   </td>
   4868   <td class="mlabels-right">
   4869 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4870   </tr>
   4871 </table>
   4872 </div><div class="memdoc">
   4873 <p >Sets VRAM Tile Pattern data for the Background in the native format</p>
   4874 <dl class="params"><dt>Parameters</dt><dd>
   4875   <table class="params">
   4876     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   4877     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   4878     <tr><td class="paramname">data</td><td>Pointer to source tile data</td></tr>
   4879   </table>
   4880   </dd>
   4881 </dl>
   4882 <p>Writes <b>nb_tiles</b> tiles to VRAM starting at <b>first_tile</b>, tile data is sourced from <b>data</b>.</p>
   4883 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_tile_data">set_tile_data</a></dd></dl>
   4884 <p>Sets VRAM Tile Pattern data for the Background / Window in the native format</p>
   4885 <dl class="params"><dt>Parameters</dt><dd>
   4886   <table class="params">
   4887     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   4888     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   4889     <tr><td class="paramname">data</td><td>Pointer to source tile data</td></tr>
   4890   </table>
   4891   </dd>
   4892 </dl>
   4893 <p>Writes <b>nb_tiles</b> tiles to VRAM starting at <b>first_tile</b>, tile data is sourced from <b>data</b>.</p>
   4894 <p >GBC only: <a class="el" href="gb_2hardware_8h.html#VBK_REG">VBK_REG</a> determines which bank of tile patterns are written to. </p><ul>
   4895 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_0">VBK_BANK_0</a> indicates the first bank </li>
   4896 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_1">VBK_BANK_1</a> indicates the second</li>
   4897 </ul>
   4898 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_win_data">set_win_data</a>, <a class="el" href="gb_8h.html#set_tile_data">set_tile_data</a> </dd></dl>
   4899 
   4900 </div>
   4901 </div>
   4902 <a id="set_sprite_native_data" name="set_sprite_native_data"></a>
   4903 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_native_data">&#9670;&nbsp;</a></span>set_sprite_native_data()</h2>
   4904 
   4905 <div class="memitem">
   4906 <div class="memproto">
   4907 <table class="mlabels">
   4908   <tr>
   4909   <td class="mlabels-left">
   4910       <table class="memname">
   4911         <tr>
   4912           <td class="memname">void set_sprite_native_data </td>
   4913           <td>(</td>
   4914           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4915           <td class="paramname"><em>first_tile</em>, </td>
   4916         </tr>
   4917         <tr>
   4918           <td class="paramkey"></td>
   4919           <td></td>
   4920           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4921           <td class="paramname"><em>nb_tiles</em>, </td>
   4922         </tr>
   4923         <tr>
   4924           <td class="paramkey"></td>
   4925           <td></td>
   4926           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4927           <td class="paramname"><em>data</em>&#160;</td>
   4928         </tr>
   4929         <tr>
   4930           <td></td>
   4931           <td>)</td>
   4932           <td></td><td></td>
   4933         </tr>
   4934       </table>
   4935   </td>
   4936   <td class="mlabels-right">
   4937 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4938   </tr>
   4939 </table>
   4940 </div><div class="memdoc">
   4941 <p >Sets VRAM Tile Pattern data for Sprites in the native format</p>
   4942 <dl class="params"><dt>Parameters</dt><dd>
   4943   <table class="params">
   4944     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   4945     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   4946     <tr><td class="paramname">data</td><td>Pointer to source tile data</td></tr>
   4947   </table>
   4948   </dd>
   4949 </dl>
   4950 <p>Writes <b>nb_tiles</b> tiles to VRAM starting at <b>first_tile</b>, tile data is sourced from <b>data</b>.</p>
   4951 <p >Sets VRAM Tile Pattern data for Sprites in the native format</p>
   4952 <dl class="params"><dt>Parameters</dt><dd>
   4953   <table class="params">
   4954     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   4955     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   4956     <tr><td class="paramname">data</td><td>Pointer to source tile data</td></tr>
   4957   </table>
   4958   </dd>
   4959 </dl>
   4960 <p>Writes <b>nb_tiles</b> tiles to VRAM starting at <b>first_tile</b>, tile data is sourced from <b>data</b>.</p>
   4961 <p >GBC only: <a class="el" href="gb_2hardware_8h.html#VBK_REG">VBK_REG</a> determines which bank of tile patterns are written to. </p><ul>
   4962 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_0">VBK_BANK_0</a> indicates the first bank </li>
   4963 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_1">VBK_BANK_1</a> indicates the second </li>
   4964 </ul>
   4965 
   4966 </div>
   4967 </div>
   4968 <a id="set_native_tile_data" name="set_native_tile_data"></a>
   4969 <h2 class="memtitle"><span class="permalink"><a href="#set_native_tile_data">&#9670;&nbsp;</a></span>set_native_tile_data()</h2>
   4970 
   4971 <div class="memitem">
   4972 <div class="memproto">
   4973 <table class="mlabels">
   4974   <tr>
   4975   <td class="mlabels-left">
   4976       <table class="memname">
   4977         <tr>
   4978           <td class="memname">void set_native_tile_data </td>
   4979           <td>(</td>
   4980           <td class="paramtype"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td>
   4981           <td class="paramname"><em>first_tile</em>, </td>
   4982         </tr>
   4983         <tr>
   4984           <td class="paramkey"></td>
   4985           <td></td>
   4986           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4987           <td class="paramname"><em>nb_tiles</em>, </td>
   4988         </tr>
   4989         <tr>
   4990           <td class="paramkey"></td>
   4991           <td></td>
   4992           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4993           <td class="paramname"><em>data</em>&#160;</td>
   4994         </tr>
   4995         <tr>
   4996           <td></td>
   4997           <td>)</td>
   4998           <td></td><td></td>
   4999         </tr>
   5000       </table>
   5001   </td>
   5002   <td class="mlabels-right">
   5003 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5004   </tr>
   5005 </table>
   5006 </div><div class="memdoc">
   5007 <p >Sets VRAM Tile Pattern data in the native format</p>
   5008 <dl class="params"><dt>Parameters</dt><dd>
   5009   <table class="params">
   5010     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write (0 - 511) </td></tr>
   5011     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   5012     <tr><td class="paramname">data</td><td>Pointer to source Tile Pattern data.</td></tr>
   5013   </table>
   5014   </dd>
   5015 </dl>
   5016 <p>When <code>first_tile</code> is larger than 256 on the GB/AP, it will write to sprite data instead of background data.</p>
   5017 <p >The bit depth of the source Tile Pattern data depends on which console is being used: </p><ul>
   5018 <li>NES: loads 2bpp tiles data </li>
   5019 </ul>
   5020 
   5021 </div>
   5022 </div>
   5023 <a id="init_bkg" name="init_bkg"></a>
   5024 <h2 class="memtitle"><span class="permalink"><a href="#init_bkg">&#9670;&nbsp;</a></span>init_bkg()</h2>
   5025 
   5026 <div class="memitem">
   5027 <div class="memproto">
   5028       <table class="memname">
   5029         <tr>
   5030           <td class="memname">void init_bkg </td>
   5031           <td>(</td>
   5032           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5033           <td class="paramname"><em>c</em></td><td>)</td>
   5034           <td></td>
   5035         </tr>
   5036       </table>
   5037 </div><div class="memdoc">
   5038 <p >Initializes the entire Background Tile Map with Tile Number <b>c</b> </p><dl class="params"><dt>Parameters</dt><dd>
   5039   <table class="params">
   5040     <tr><td class="paramname">c</td><td>Tile number to fill with</td></tr>
   5041   </table>
   5042   </dd>
   5043 </dl>
   5044 <p>Note: This function avoids writes during modes 2 &amp; 3</p>
   5045 <p >Initializes the entire Background Tile Map with Tile Number <b>c</b> </p><dl class="params"><dt>Parameters</dt><dd>
   5046   <table class="params">
   5047     <tr><td class="paramname">c</td><td>Tile number to fill with</td></tr>
   5048   </table>
   5049   </dd>
   5050 </dl>
   5051 <dl class="section note"><dt>Note</dt><dd>This function avoids writes during modes 2 &amp; 3 </dd></dl>
   5052 
   5053 </div>
   5054 </div>
   5055 <a id="vmemset" name="vmemset"></a>
   5056 <h2 class="memtitle"><span class="permalink"><a href="#vmemset">&#9670;&nbsp;</a></span>vmemset()</h2>
   5057 
   5058 <div class="memitem">
   5059 <div class="memproto">
   5060       <table class="memname">
   5061         <tr>
   5062           <td class="memname">void vmemset </td>
   5063           <td>(</td>
   5064           <td class="paramtype">void *&#160;</td>
   5065           <td class="paramname"><em>s</em>, </td>
   5066         </tr>
   5067         <tr>
   5068           <td class="paramkey"></td>
   5069           <td></td>
   5070           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5071           <td class="paramname"><em>c</em>, </td>
   5072         </tr>
   5073         <tr>
   5074           <td class="paramkey"></td>
   5075           <td></td>
   5076           <td class="paramtype"><a class="el" href="asm_2mos6502_2types_8h.html#size_t">size_t</a>&#160;</td>
   5077           <td class="paramname"><em>n</em>&#160;</td>
   5078         </tr>
   5079         <tr>
   5080           <td></td>
   5081           <td>)</td>
   5082           <td></td><td></td>
   5083         </tr>
   5084       </table>
   5085 </div><div class="memdoc">
   5086 <p >Fills the VRAM memory region <b>s</b> of size <b>n</b> with Tile Number <b>c</b> </p><dl class="params"><dt>Parameters</dt><dd>
   5087   <table class="params">
   5088     <tr><td class="paramname">s</td><td>Start address in VRAM </td></tr>
   5089     <tr><td class="paramname">c</td><td>Tile number to fill with </td></tr>
   5090     <tr><td class="paramname">n</td><td>Size of memory region (in bytes) to fill</td></tr>
   5091   </table>
   5092   </dd>
   5093 </dl>
   5094 <p>Note: This function avoids writes during modes 2 &amp; 3</p>
   5095 <p >Fills the VRAM memory region <b>s</b> of size <b>n</b> with Tile Number <b>c</b> </p><dl class="params"><dt>Parameters</dt><dd>
   5096   <table class="params">
   5097     <tr><td class="paramname">s</td><td>Start address in VRAM </td></tr>
   5098     <tr><td class="paramname">c</td><td>Tile number to fill with </td></tr>
   5099     <tr><td class="paramname">n</td><td>Size of memory region (in bytes) to fill</td></tr>
   5100   </table>
   5101   </dd>
   5102 </dl>
   5103 <dl class="section note"><dt>Note</dt><dd>This function avoids writes during modes 2 &amp; 3 </dd></dl>
   5104 
   5105 </div>
   5106 </div>
   5107 <a id="fill_bkg_rect" name="fill_bkg_rect"></a>
   5108 <h2 class="memtitle"><span class="permalink"><a href="#fill_bkg_rect">&#9670;&nbsp;</a></span>fill_bkg_rect()</h2>
   5109 
   5110 <div class="memitem">
   5111 <div class="memproto">
   5112       <table class="memname">
   5113         <tr>
   5114           <td class="memname">void fill_bkg_rect </td>
   5115           <td>(</td>
   5116           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5117           <td class="paramname"><em>x</em>, </td>
   5118         </tr>
   5119         <tr>
   5120           <td class="paramkey"></td>
   5121           <td></td>
   5122           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5123           <td class="paramname"><em>y</em>, </td>
   5124         </tr>
   5125         <tr>
   5126           <td class="paramkey"></td>
   5127           <td></td>
   5128           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5129           <td class="paramname"><em>w</em>, </td>
   5130         </tr>
   5131         <tr>
   5132           <td class="paramkey"></td>
   5133           <td></td>
   5134           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5135           <td class="paramname"><em>h</em>, </td>
   5136         </tr>
   5137         <tr>
   5138           <td class="paramkey"></td>
   5139           <td></td>
   5140           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5141           <td class="paramname"><em>tile</em>&#160;</td>
   5142         </tr>
   5143         <tr>
   5144           <td></td>
   5145           <td>)</td>
   5146           <td></td><td></td>
   5147         </tr>
   5148       </table>
   5149 </div><div class="memdoc">
   5150 <p >Fills a rectangular region of Tile Map entries for the Background layer with tile.</p>
   5151 <dl class="params"><dt>Parameters</dt><dd>
   5152   <table class="params">
   5153     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   5154     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   5155     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   5156     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   5157     <tr><td class="paramname">tile</td><td>Fill value </td></tr>
   5158   </table>
   5159   </dd>
   5160 </dl>
   5161 
   5162 </div>
   5163 </div>
   5164 <a id="flush_shadow_attributes" name="flush_shadow_attributes"></a>
   5165 <h2 class="memtitle"><span class="permalink"><a href="#flush_shadow_attributes">&#9670;&nbsp;</a></span>flush_shadow_attributes()</h2>
   5166 
   5167 <div class="memitem">
   5168 <div class="memproto">
   5169       <table class="memname">
   5170         <tr>
   5171           <td class="memname">void flush_shadow_attributes </td>
   5172           <td>(</td>
   5173           <td class="paramtype">void&#160;</td>
   5174           <td class="paramname"></td><td>)</td>
   5175           <td></td>
   5176         </tr>
   5177       </table>
   5178 </div><div class="memdoc">
   5179 <p >"Flushes" the updates to the shadow attributes so they are written to the transfer buffer, and then written to PPU memory on next vblank.</p>
   5180 <p >This function must be called to see visible changes to attributes on the NES target. But it will automatically be called by <a class="el" href="gb_8h.html#vsync">vsync()</a>, so the use-cases for calling it manually are rare in practice. </p>
   5181 
   5182 </div>
   5183 </div>
   5184 <a id="_switch_prg0" name="_switch_prg0"></a>
   5185 <h2 class="memtitle"><span class="permalink"><a href="#_switch_prg0">&#9670;&nbsp;</a></span>_switch_prg0()</h2>
   5186 
   5187 <div class="memitem">
   5188 <div class="memproto">
   5189       <table class="memname">
   5190         <tr>
   5191           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> _switch_prg0 </td>
   5192           <td>(</td>
   5193           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5194           <td class="paramname"><em>bank</em></td><td>)</td>
   5195           <td></td>
   5196         </tr>
   5197       </table>
   5198 </div><div class="memdoc">
   5199 
   5200 </div>
   5201 </div>
   5202 <h2 class="groupheader">Variable Documentation</h2>
   5203 <a id="_SYSTEM" name="_SYSTEM"></a>
   5204 <h2 class="memtitle"><span class="permalink"><a href="#_SYSTEM">&#9670;&nbsp;</a></span>_SYSTEM</h2>
   5205 
   5206 <div class="memitem">
   5207 <div class="memproto">
   5208 <table class="mlabels">
   5209   <tr>
   5210   <td class="mlabels-left">
   5211       <table class="memname">
   5212         <tr>
   5213           <td class="memname">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> _SYSTEM</td>
   5214         </tr>
   5215       </table>
   5216   </td>
   5217   <td class="mlabels-right">
   5218 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   5219   </tr>
   5220 </table>
   5221 </div><div class="memdoc">
   5222 
   5223 </div>
   5224 </div>
   5225 <a id="sys_time" name="sys_time"></a>
   5226 <h2 class="memtitle"><span class="permalink"><a href="#sys_time">&#9670;&nbsp;</a></span>sys_time</h2>
   5227 
   5228 <div class="memitem">
   5229 <div class="memproto">
   5230 <table class="mlabels">
   5231   <tr>
   5232   <td class="mlabels-left">
   5233       <table class="memname">
   5234         <tr>
   5235           <td class="memname">volatile <a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> sys_time</td>
   5236         </tr>
   5237       </table>
   5238   </td>
   5239   <td class="mlabels-right">
   5240 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   5241   </tr>
   5242 </table>
   5243 </div><div class="memdoc">
   5244 <p >Global Time Counter in VBL periods (60Hz)</p>
   5245 <p >Increments once per Frame</p>
   5246 <p >Will wrap around every ~18 minutes (unsigned 16 bits = 65535 / 60 / 60 = 18.2) </p>
   5247 
   5248 </div>
   5249 </div>
   5250 <a id="_current_bank" name="_current_bank"></a>
   5251 <h2 class="memtitle"><span class="permalink"><a href="#_current_bank">&#9670;&nbsp;</a></span>_current_bank</h2>
   5252 
   5253 <div class="memitem">
   5254 <div class="memproto">
   5255 <table class="mlabels">
   5256   <tr>
   5257   <td class="mlabels-left">
   5258       <table class="memname">
   5259         <tr>
   5260           <td class="memname">volatile <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> _current_bank</td>
   5261         </tr>
   5262       </table>
   5263   </td>
   5264   <td class="mlabels-right">
   5265 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   5266   </tr>
   5267 </table>
   5268 </div><div class="memdoc">
   5269 <p >Tracks current active ROM bank</p>
   5270 <p >The active bank number is not tracked by <a class="el" href="nes_8h.html#_current_bank">_current_bank</a> when <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5_8M">SWITCH_ROM_MBC5_8M</a> is used.</p>
   5271 <p >This variable is updated automatically when you call SWITCH_ROM_MBC1 or SWITCH_ROM_MBC5, <a class="el" href="gb_8h.html#SWITCH_ROM">SWITCH_ROM()</a>, or call a BANKED function.</p>
   5272 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SWITCH_ROM_MBC1">SWITCH_ROM_MBC1()</a>, <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5">SWITCH_ROM_MBC5()</a>, <a class="el" href="gb_8h.html#SWITCH_ROM">SWITCH_ROM()</a></dd></dl>
   5273 <p>Tracks current active ROM bank</p>
   5274 <p >In most cases the <a class="el" href="sms_8h.html#CURRENT_BANK">CURRENT_BANK</a> macro for this variable is recommended for use instead of the variable itself.</p>
   5275 <p >The active bank number is not tracked by <a class="el" href="nes_8h.html#_current_bank">_current_bank</a> when <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5_8M">SWITCH_ROM_MBC5_8M</a> is used.</p>
   5276 <p >This variable is updated automatically when you call SWITCH_ROM_MBC1 or SWITCH_ROM_MBC5, <a class="el" href="gb_8h.html#SWITCH_ROM">SWITCH_ROM()</a>, or call a BANKED function.</p>
   5277 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SWITCH_ROM_MBC1">SWITCH_ROM_MBC1()</a>, <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5">SWITCH_ROM_MBC5()</a>, <a class="el" href="gb_8h.html#SWITCH_ROM">SWITCH_ROM()</a> </dd></dl>
   5278 
   5279 </div>
   5280 </div>
   5281 <a id="_current_1bpp_colors" name="_current_1bpp_colors"></a>
   5282 <h2 class="memtitle"><span class="permalink"><a href="#_current_1bpp_colors">&#9670;&nbsp;</a></span>_current_1bpp_colors</h2>
   5283 
   5284 <div class="memitem">
   5285 <div class="memproto">
   5286 <table class="mlabels">
   5287   <tr>
   5288   <td class="mlabels-left">
   5289       <table class="memname">
   5290         <tr>
   5291           <td class="memname"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> _current_1bpp_colors</td>
   5292         </tr>
   5293       </table>
   5294   </td>
   5295   <td class="mlabels-right">
   5296 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   5297   </tr>
   5298 </table>
   5299 </div><div class="memdoc">
   5300 
   5301 </div>
   5302 </div>
   5303 <a id="shadow_OAM" name="shadow_OAM"></a>
   5304 <h2 class="memtitle"><span class="permalink"><a href="#shadow_OAM">&#9670;&nbsp;</a></span>shadow_OAM</h2>
   5305 
   5306 <div class="memitem">
   5307 <div class="memproto">
   5308 <table class="mlabels">
   5309   <tr>
   5310   <td class="mlabels-left">
   5311       <table class="memname">
   5312         <tr>
   5313           <td class="memname">volatile struct <a class="el" href="struct_o_a_m__item__t.html">OAM_item_t</a> shadow_OAM[]</td>
   5314         </tr>
   5315       </table>
   5316   </td>
   5317   <td class="mlabels-right">
   5318 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   5319   </tr>
   5320 </table>
   5321 </div><div class="memdoc">
   5322 <p >Shadow OAM array in WRAM, that is DMA-transferred into the real OAM each VBlank </p>
   5323 
   5324 </div>
   5325 </div>
   5326 <a id="_shadow_OAM_base" name="_shadow_OAM_base"></a>
   5327 <h2 class="memtitle"><span class="permalink"><a href="#_shadow_OAM_base">&#9670;&nbsp;</a></span>_shadow_OAM_base</h2>
   5328 
   5329 <div class="memitem">
   5330 <div class="memproto">
   5331 <table class="mlabels">
   5332   <tr>
   5333   <td class="mlabels-left">
   5334       <table class="memname">
   5335         <tr>
   5336           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> _shadow_OAM_base</td>
   5337         </tr>
   5338       </table>
   5339   </td>
   5340   <td class="mlabels-right">
   5341 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   5342   </tr>
   5343 </table>
   5344 </div><div class="memdoc">
   5345 <p >MSB of shadow_OAM address is used by OAM DMA copying routine </p>
   5346 
   5347 </div>
   5348 </div>
   5349 </div><!-- contents -->
   5350 </div><!-- doc-content -->
   5351 <!-- start footer part -->
   5352 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   5353   <ul>
   5354     <li class="navelem"><a class="el" href="dir_8bd3092e915ccc8a773a74e0a10d4d15.html">gbdk-lib</a></li><li class="navelem"><a class="el" href="dir_a9f896cff747ba031115e41245385c17.html">include</a></li><li class="navelem"><a class="el" href="dir_af92cb28f7f9115544c8de6a3c7e6d6b.html">nes</a></li><li class="navelem"><a class="el" href="nes_8h.html">nes.h</a></li>
   5355     <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.2 </li>
   5356   </ul>
   5357 </div>
   5358 </body>
   5359 </html>

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.