git.y1.nz

gbdk-2020

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

docs/api/gb_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/gb/gb.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('gb_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">gb.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="gb_2hardware_8h_source.html">gb/hardware.h</a>&gt;</code><br />
    115 </div>
    116 <p><a href="gb_8h_source.html">Go to the source code of this file.</a></p>
    117 <table class="memberdecls">
    118 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
    119 Data Structures</h2></td></tr>
    120 <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>
    121 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
    122 <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>
    123 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
    124 </table><table class="memberdecls">
    125 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
    126 Macros</h2></td></tr>
    127 <tr class="memitem:NINTENDO"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#NINTENDO">NINTENDO</a></td></tr>
    128 <tr class="separator:NINTENDO"><td class="memSeparator" colspan="2">&#160;</td></tr>
    129 <tr class="memitem:SYSTEM_60HZ"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SYSTEM_60HZ">SYSTEM_60HZ</a>&#160;&#160;&#160;0x00</td></tr>
    130 <tr class="separator:SYSTEM_60HZ"><td class="memSeparator" colspan="2">&#160;</td></tr>
    131 <tr class="memitem:SYSTEM_50HZ"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SYSTEM_50HZ">SYSTEM_50HZ</a>&#160;&#160;&#160;0x01</td></tr>
    132 <tr class="separator:SYSTEM_50HZ"><td class="memSeparator" colspan="2">&#160;</td></tr>
    133 <tr class="memitem:GAMEBOY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#GAMEBOY">GAMEBOY</a></td></tr>
    134 <tr class="separator:GAMEBOY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    135 <tr class="memitem:J_UP"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#J_UP">J_UP</a>&#160;&#160;&#160;0x04U</td></tr>
    136 <tr class="separator:J_UP"><td class="memSeparator" colspan="2">&#160;</td></tr>
    137 <tr class="memitem:J_DOWN"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#J_DOWN">J_DOWN</a>&#160;&#160;&#160;0x08U</td></tr>
    138 <tr class="separator:J_DOWN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    139 <tr class="memitem:J_LEFT"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#J_LEFT">J_LEFT</a>&#160;&#160;&#160;0x02U</td></tr>
    140 <tr class="separator:J_LEFT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    141 <tr class="memitem:J_RIGHT"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#J_RIGHT">J_RIGHT</a>&#160;&#160;&#160;0x01U</td></tr>
    142 <tr class="separator:J_RIGHT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    143 <tr class="memitem:J_A"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#J_A">J_A</a>&#160;&#160;&#160;0x10U</td></tr>
    144 <tr class="separator:J_A"><td class="memSeparator" colspan="2">&#160;</td></tr>
    145 <tr class="memitem:J_B"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#J_B">J_B</a>&#160;&#160;&#160;0x20U</td></tr>
    146 <tr class="separator:J_B"><td class="memSeparator" colspan="2">&#160;</td></tr>
    147 <tr class="memitem:J_SELECT"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#J_SELECT">J_SELECT</a>&#160;&#160;&#160;0x40U</td></tr>
    148 <tr class="separator:J_SELECT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    149 <tr class="memitem:J_START"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#J_START">J_START</a>&#160;&#160;&#160;0x80U</td></tr>
    150 <tr class="separator:J_START"><td class="memSeparator" colspan="2">&#160;</td></tr>
    151 <tr class="memitem:M_DRAWING"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#M_DRAWING">M_DRAWING</a>&#160;&#160;&#160;0x01U</td></tr>
    152 <tr class="separator:M_DRAWING"><td class="memSeparator" colspan="2">&#160;</td></tr>
    153 <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="gb_8h.html#M_TEXT_OUT">M_TEXT_OUT</a>&#160;&#160;&#160;0x02U</td></tr>
    154 <tr class="separator:M_TEXT_OUT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    155 <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="gb_8h.html#M_TEXT_INOUT">M_TEXT_INOUT</a>&#160;&#160;&#160;0x03U</td></tr>
    156 <tr class="separator:M_TEXT_INOUT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    157 <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="gb_8h.html#M_NO_SCROLL">M_NO_SCROLL</a>&#160;&#160;&#160;0x04U</td></tr>
    158 <tr class="separator:M_NO_SCROLL"><td class="memSeparator" colspan="2">&#160;</td></tr>
    159 <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="gb_8h.html#M_NO_INTERP">M_NO_INTERP</a>&#160;&#160;&#160;0x08U</td></tr>
    160 <tr class="separator:M_NO_INTERP"><td class="memSeparator" colspan="2">&#160;</td></tr>
    161 <tr class="memitem:S_BANK"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#S_BANK">S_BANK</a>&#160;&#160;&#160;0x08U</td></tr>
    162 <tr class="separator:S_BANK"><td class="memSeparator" colspan="2">&#160;</td></tr>
    163 <tr class="memitem:S_PALETTE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#S_PALETTE">S_PALETTE</a>&#160;&#160;&#160;0x10U</td></tr>
    164 <tr class="separator:S_PALETTE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    165 <tr class="memitem:S_FLIPX"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#S_FLIPX">S_FLIPX</a>&#160;&#160;&#160;0x20U</td></tr>
    166 <tr class="separator:S_FLIPX"><td class="memSeparator" colspan="2">&#160;</td></tr>
    167 <tr class="memitem:S_FLIPY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#S_FLIPY">S_FLIPY</a>&#160;&#160;&#160;0x40U</td></tr>
    168 <tr class="separator:S_FLIPY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    169 <tr class="memitem:S_PRIORITY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#S_PRIORITY">S_PRIORITY</a>&#160;&#160;&#160;0x80U</td></tr>
    170 <tr class="separator:S_PRIORITY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    171 <tr class="memitem:S_PAL"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#S_PAL">S_PAL</a>(n)&#160;&#160;&#160;n</td></tr>
    172 <tr class="separator:S_PAL"><td class="memSeparator" colspan="2">&#160;</td></tr>
    173 <tr class="memitem:EMPTY_IFLAG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#EMPTY_IFLAG">EMPTY_IFLAG</a>&#160;&#160;&#160;0x00U</td></tr>
    174 <tr class="separator:EMPTY_IFLAG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    175 <tr class="memitem:VBL_IFLAG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#VBL_IFLAG">VBL_IFLAG</a>&#160;&#160;&#160;0x01U</td></tr>
    176 <tr class="separator:VBL_IFLAG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    177 <tr class="memitem:LCD_IFLAG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#LCD_IFLAG">LCD_IFLAG</a>&#160;&#160;&#160;0x02U</td></tr>
    178 <tr class="separator:LCD_IFLAG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    179 <tr class="memitem:TIM_IFLAG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#TIM_IFLAG">TIM_IFLAG</a>&#160;&#160;&#160;0x04U</td></tr>
    180 <tr class="separator:TIM_IFLAG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    181 <tr class="memitem:SIO_IFLAG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SIO_IFLAG">SIO_IFLAG</a>&#160;&#160;&#160;0x08U</td></tr>
    182 <tr class="separator:SIO_IFLAG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    183 <tr class="memitem:JOY_IFLAG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#JOY_IFLAG">JOY_IFLAG</a>&#160;&#160;&#160;0x10U</td></tr>
    184 <tr class="separator:JOY_IFLAG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    185 <tr class="memitem:DMG_BLACK"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#DMG_BLACK">DMG_BLACK</a>&#160;&#160;&#160;0x03</td></tr>
    186 <tr class="separator:DMG_BLACK"><td class="memSeparator" colspan="2">&#160;</td></tr>
    187 <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="gb_8h.html#DMG_DARK_GRAY">DMG_DARK_GRAY</a>&#160;&#160;&#160;0x02</td></tr>
    188 <tr class="separator:DMG_DARK_GRAY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    189 <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="gb_8h.html#DMG_LITE_GRAY">DMG_LITE_GRAY</a>&#160;&#160;&#160;0x01</td></tr>
    190 <tr class="separator:DMG_LITE_GRAY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    191 <tr class="memitem:DMG_WHITE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#DMG_WHITE">DMG_WHITE</a>&#160;&#160;&#160;0x00</td></tr>
    192 <tr class="separator:DMG_WHITE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    193 <tr class="memitem:DMG_PALETTE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>
    194 <tr class="separator:DMG_PALETTE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    195 <tr class="memitem:SCREENWIDTH"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>
    196 <tr class="separator:SCREENWIDTH"><td class="memSeparator" colspan="2">&#160;</td></tr>
    197 <tr class="memitem:SCREENHEIGHT"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>
    198 <tr class="separator:SCREENHEIGHT"><td class="memSeparator" colspan="2">&#160;</td></tr>
    199 <tr class="memitem:MINWNDPOSX"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#MINWNDPOSX">MINWNDPOSX</a>&#160;&#160;&#160;<a class="el" href="nes_2hardware_8h.html#DEVICE_WINDOW_PX_OFFSET_X">DEVICE_WINDOW_PX_OFFSET_X</a></td></tr>
    200 <tr class="separator:MINWNDPOSX"><td class="memSeparator" colspan="2">&#160;</td></tr>
    201 <tr class="memitem:MINWNDPOSY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#MINWNDPOSY">MINWNDPOSY</a>&#160;&#160;&#160;<a class="el" href="nes_2hardware_8h.html#DEVICE_WINDOW_PX_OFFSET_Y">DEVICE_WINDOW_PX_OFFSET_Y</a></td></tr>
    202 <tr class="separator:MINWNDPOSY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    203 <tr class="memitem:MAXWNDPOSX"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#MAXWNDPOSX">MAXWNDPOSX</a>&#160;&#160;&#160;(<a class="el" href="nes_2hardware_8h.html#DEVICE_WINDOW_PX_OFFSET_X">DEVICE_WINDOW_PX_OFFSET_X</a> + <a class="el" href="sms_2hardware_8h.html#DEVICE_SCREEN_PX_WIDTH">DEVICE_SCREEN_PX_WIDTH</a> - 1)</td></tr>
    204 <tr class="separator:MAXWNDPOSX"><td class="memSeparator" colspan="2">&#160;</td></tr>
    205 <tr class="memitem:MAXWNDPOSY"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#MAXWNDPOSY">MAXWNDPOSY</a>&#160;&#160;&#160;(<a class="el" href="nes_2hardware_8h.html#DEVICE_WINDOW_PX_OFFSET_Y">DEVICE_WINDOW_PX_OFFSET_Y</a> + <a class="el" href="sms_2hardware_8h.html#DEVICE_SCREEN_PX_HEIGHT">DEVICE_SCREEN_PX_HEIGHT</a> - 1)</td></tr>
    206 <tr class="separator:MAXWNDPOSY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    207 <tr class="memitem:DMG_TYPE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#DMG_TYPE">DMG_TYPE</a>&#160;&#160;&#160;0x01</td></tr>
    208 <tr class="separator:DMG_TYPE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    209 <tr class="memitem:MGB_TYPE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#MGB_TYPE">MGB_TYPE</a>&#160;&#160;&#160;0xFF</td></tr>
    210 <tr class="separator:MGB_TYPE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    211 <tr class="memitem:CGB_TYPE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#CGB_TYPE">CGB_TYPE</a>&#160;&#160;&#160;0x11</td></tr>
    212 <tr class="separator:CGB_TYPE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    213 <tr class="memitem:GBA_NOT_DETECTED"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#GBA_NOT_DETECTED">GBA_NOT_DETECTED</a>&#160;&#160;&#160;0x00</td></tr>
    214 <tr class="separator:GBA_NOT_DETECTED"><td class="memSeparator" colspan="2">&#160;</td></tr>
    215 <tr class="memitem:GBA_DETECTED"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#GBA_DETECTED">GBA_DETECTED</a>&#160;&#160;&#160;0x01</td></tr>
    216 <tr class="separator:GBA_DETECTED"><td class="memSeparator" colspan="2">&#160;</td></tr>
    217 <tr class="memitem:DEVICE_SUPPORTS_COLOR"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#DEVICE_SUPPORTS_COLOR">DEVICE_SUPPORTS_COLOR</a>&#160;&#160;&#160;(<a class="el" href="gb_8h.html#_cpu">_cpu</a> == <a class="el" href="gb_8h.html#CGB_TYPE">CGB_TYPE</a>)</td></tr>
    218 <tr class="separator:DEVICE_SUPPORTS_COLOR"><td class="memSeparator" colspan="2">&#160;</td></tr>
    219 <tr class="memitem:VBL_DONE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#VBL_DONE">VBL_DONE</a>&#160;&#160;&#160;<a class="el" href="sms_8h.html#_vbl_done">_vbl_done</a></td></tr>
    220 <tr class="separator:VBL_DONE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    221 <tr class="memitem:IO_IDLE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#IO_IDLE">IO_IDLE</a>&#160;&#160;&#160;0x00U</td></tr>
    222 <tr class="separator:IO_IDLE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    223 <tr class="memitem:IO_SENDING"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#IO_SENDING">IO_SENDING</a>&#160;&#160;&#160;0x01U</td></tr>
    224 <tr class="separator:IO_SENDING"><td class="memSeparator" colspan="2">&#160;</td></tr>
    225 <tr class="memitem:IO_RECEIVING"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#IO_RECEIVING">IO_RECEIVING</a>&#160;&#160;&#160;0x02U</td></tr>
    226 <tr class="separator:IO_RECEIVING"><td class="memSeparator" colspan="2">&#160;</td></tr>
    227 <tr class="memitem:IO_ERROR"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#IO_ERROR">IO_ERROR</a>&#160;&#160;&#160;0x04U</td></tr>
    228 <tr class="separator:IO_ERROR"><td class="memSeparator" colspan="2">&#160;</td></tr>
    229 <tr class="memitem:CURRENT_BANK"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#CURRENT_BANK">CURRENT_BANK</a>&#160;&#160;&#160;<a class="el" href="nes_8h.html#_current_bank">_current_bank</a></td></tr>
    230 <tr class="separator:CURRENT_BANK"><td class="memSeparator" colspan="2">&#160;</td></tr>
    231 <tr class="memitem:BANK"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>
    232 <tr class="separator:BANK"><td class="memSeparator" colspan="2">&#160;</td></tr>
    233 <tr class="memitem:BANKREF"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#BANKREF">BANKREF</a>(VARNAME)</td></tr>
    234 <tr class="separator:BANKREF"><td class="memSeparator" colspan="2">&#160;</td></tr>
    235 <tr class="memitem:BANKREF_EXTERN"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#BANKREF_EXTERN">BANKREF_EXTERN</a>(VARNAME)&#160;&#160;&#160;extern const void __bank_ ## VARNAME;</td></tr>
    236 <tr class="separator:BANKREF_EXTERN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    237 <tr class="memitem:SWITCH_ROM"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SWITCH_ROM">SWITCH_ROM</a>(<a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;(<a class="el" href="nes_8h.html#_current_bank">_current_bank</a> = (<a class="el" href="sms_8h.html#b">b</a>), <a class="el" href="gb_2hardware_8h.html#rROMB0">rROMB0</a> = (<a class="el" href="sms_8h.html#b">b</a>))</td></tr>
    238 <tr class="separator:SWITCH_ROM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    239 <tr class="memitem:SWITCH_RAM"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SWITCH_RAM">SWITCH_RAM</a>(<a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;(<a class="el" href="gb_2hardware_8h.html#rRAMB">rRAMB</a> = (<a class="el" href="sms_8h.html#b">b</a>))</td></tr>
    240 <tr class="separator:SWITCH_RAM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    241 <tr class="memitem:ENABLE_RAM"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#ENABLE_RAM">ENABLE_RAM</a>&#160;&#160;&#160;(<a class="el" href="gb_2hardware_8h.html#rRAMG">rRAMG</a> = 0x0A)</td></tr>
    242 <tr class="separator:ENABLE_RAM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    243 <tr class="memitem:DISABLE_RAM"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#DISABLE_RAM">DISABLE_RAM</a>&#160;&#160;&#160;(<a class="el" href="gb_2hardware_8h.html#rRAMG">rRAMG</a> = 0x00)</td></tr>
    244 <tr class="separator:DISABLE_RAM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    245 <tr class="memitem:SWITCH_ROM_MEGADUCK"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SWITCH_ROM_MEGADUCK">SWITCH_ROM_MEGADUCK</a>(<a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;<a class="el" href="msx_8h.html#SWITCH_ROM">SWITCH_ROM</a>(<a class="el" href="sms_8h.html#b">b</a>)</td></tr>
    246 <tr class="separator:SWITCH_ROM_MEGADUCK"><td class="memSeparator" colspan="2">&#160;</td></tr>
    247 <tr class="memitem:SWITCH_ROM_MBC1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SWITCH_ROM_MBC1">SWITCH_ROM_MBC1</a>(<a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;<a class="el" href="msx_8h.html#SWITCH_ROM">SWITCH_ROM</a>(<a class="el" href="sms_8h.html#b">b</a>)</td></tr>
    248 <tr class="separator:SWITCH_ROM_MBC1"><td class="memSeparator" colspan="2">&#160;</td></tr>
    249 <tr class="memitem:SWITCH_RAM_MBC1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SWITCH_RAM_MBC1">SWITCH_RAM_MBC1</a>(<a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;<a class="el" href="sms_8h.html#SWITCH_RAM">SWITCH_RAM</a>(<a class="el" href="sms_8h.html#b">b</a>)</td></tr>
    250 <tr class="separator:SWITCH_RAM_MBC1"><td class="memSeparator" colspan="2">&#160;</td></tr>
    251 <tr class="memitem:ENABLE_RAM_MBC1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#ENABLE_RAM_MBC1">ENABLE_RAM_MBC1</a>&#160;&#160;&#160;<a class="el" href="sms_8h.html#ENABLE_RAM">ENABLE_RAM</a></td></tr>
    252 <tr class="separator:ENABLE_RAM_MBC1"><td class="memSeparator" colspan="2">&#160;</td></tr>
    253 <tr class="memitem:DISABLE_RAM_MBC1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#DISABLE_RAM_MBC1">DISABLE_RAM_MBC1</a>&#160;&#160;&#160;<a class="el" href="sms_8h.html#DISABLE_RAM">DISABLE_RAM</a></td></tr>
    254 <tr class="separator:DISABLE_RAM_MBC1"><td class="memSeparator" colspan="2">&#160;</td></tr>
    255 <tr class="memitem:SWITCH_16_8_MODE_MBC1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SWITCH_16_8_MODE_MBC1">SWITCH_16_8_MODE_MBC1</a>&#160;&#160;&#160;(*(volatile <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *)0x6000 = 0x00)</td></tr>
    256 <tr class="separator:SWITCH_16_8_MODE_MBC1"><td class="memSeparator" colspan="2">&#160;</td></tr>
    257 <tr class="memitem:SWITCH_4_32_MODE_MBC1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SWITCH_4_32_MODE_MBC1">SWITCH_4_32_MODE_MBC1</a>&#160;&#160;&#160;(*(volatile <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *)0x6000 = 0x01)</td></tr>
    258 <tr class="separator:SWITCH_4_32_MODE_MBC1"><td class="memSeparator" colspan="2">&#160;</td></tr>
    259 <tr class="memitem:SWITCH_ROM_MBC5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SWITCH_ROM_MBC5">SWITCH_ROM_MBC5</a>(<a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;(<a class="el" href="nes_8h.html#_current_bank">_current_bank</a> = (<a class="el" href="sms_8h.html#b">b</a>), <a class="el" href="gb_2hardware_8h.html#rROMB1">rROMB1</a> = 0, <a class="el" href="gb_2hardware_8h.html#rROMB0">rROMB0</a> = (<a class="el" href="sms_8h.html#b">b</a>))</td></tr>
    260 <tr class="separator:SWITCH_ROM_MBC5"><td class="memSeparator" colspan="2">&#160;</td></tr>
    261 <tr class="memitem:SWITCH_ROM_MBC5_8M"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SWITCH_ROM_MBC5_8M">SWITCH_ROM_MBC5_8M</a>(<a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;(<a class="el" href="gb_2hardware_8h.html#rROMB1">rROMB1</a> = ((<a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>)(<a class="el" href="sms_8h.html#b">b</a>) &gt;&gt; 8), <a class="el" href="gb_2hardware_8h.html#rROMB0">rROMB0</a> = (<a class="el" href="sms_8h.html#b">b</a>))</td></tr>
    262 <tr class="separator:SWITCH_ROM_MBC5_8M"><td class="memSeparator" colspan="2">&#160;</td></tr>
    263 <tr class="memitem:SWITCH_RAM_MBC5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SWITCH_RAM_MBC5">SWITCH_RAM_MBC5</a>(<a class="el" href="sms_8h.html#b">b</a>)&#160;&#160;&#160;<a class="el" href="sms_8h.html#SWITCH_RAM">SWITCH_RAM</a>(<a class="el" href="sms_8h.html#b">b</a>)</td></tr>
    264 <tr class="separator:SWITCH_RAM_MBC5"><td class="memSeparator" colspan="2">&#160;</td></tr>
    265 <tr class="memitem:ENABLE_RAM_MBC5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#ENABLE_RAM_MBC5">ENABLE_RAM_MBC5</a>&#160;&#160;&#160;<a class="el" href="sms_8h.html#ENABLE_RAM">ENABLE_RAM</a></td></tr>
    266 <tr class="separator:ENABLE_RAM_MBC5"><td class="memSeparator" colspan="2">&#160;</td></tr>
    267 <tr class="memitem:DISABLE_RAM_MBC5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#DISABLE_RAM_MBC5">DISABLE_RAM_MBC5</a>&#160;&#160;&#160;<a class="el" href="sms_8h.html#DISABLE_RAM">DISABLE_RAM</a></td></tr>
    268 <tr class="separator:DISABLE_RAM_MBC5"><td class="memSeparator" colspan="2">&#160;</td></tr>
    269 <tr class="memitem:DISPLAY_ON"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#DISPLAY_ON">DISPLAY_ON</a>&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>|=<a class="el" href="gb_2hardware_8h.html#LCDCF_ON">LCDCF_ON</a></td></tr>
    270 <tr class="separator:DISPLAY_ON"><td class="memSeparator" colspan="2">&#160;</td></tr>
    271 <tr class="memitem:DISPLAY_OFF"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#DISPLAY_OFF">DISPLAY_OFF</a>&#160;&#160;&#160;  <a class="el" href="sms_8h.html#display_off">display_off</a>();</td></tr>
    272 <tr class="separator:DISPLAY_OFF"><td class="memSeparator" colspan="2">&#160;</td></tr>
    273 <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="gb_8h.html#HIDE_LEFT_COLUMN">HIDE_LEFT_COLUMN</a></td></tr>
    274 <tr class="separator:HIDE_LEFT_COLUMN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    275 <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="gb_8h.html#SHOW_LEFT_COLUMN">SHOW_LEFT_COLUMN</a></td></tr>
    276 <tr class="separator:SHOW_LEFT_COLUMN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    277 <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="gb_8h.html#SET_BORDER_COLOR">SET_BORDER_COLOR</a>(C)</td></tr>
    278 <tr class="separator:SET_BORDER_COLOR"><td class="memSeparator" colspan="2">&#160;</td></tr>
    279 <tr class="memitem:SHOW_BKG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SHOW_BKG">SHOW_BKG</a>&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>|=<a class="el" href="gb_2hardware_8h.html#LCDCF_BGON">LCDCF_BGON</a></td></tr>
    280 <tr class="separator:SHOW_BKG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    281 <tr class="memitem:HIDE_BKG"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#HIDE_BKG">HIDE_BKG</a>&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>&amp;=~<a class="el" href="gb_2hardware_8h.html#LCDCF_BGON">LCDCF_BGON</a></td></tr>
    282 <tr class="separator:HIDE_BKG"><td class="memSeparator" colspan="2">&#160;</td></tr>
    283 <tr class="memitem:SHOW_WIN"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SHOW_WIN">SHOW_WIN</a>&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>|=<a class="el" href="gb_2hardware_8h.html#LCDCF_WINON">LCDCF_WINON</a></td></tr>
    284 <tr class="separator:SHOW_WIN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    285 <tr class="memitem:HIDE_WIN"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#HIDE_WIN">HIDE_WIN</a>&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>&amp;=~<a class="el" href="gb_2hardware_8h.html#LCDCF_WINON">LCDCF_WINON</a></td></tr>
    286 <tr class="separator:HIDE_WIN"><td class="memSeparator" colspan="2">&#160;</td></tr>
    287 <tr class="memitem:SHOW_SPRITES"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SHOW_SPRITES">SHOW_SPRITES</a>&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>|=<a class="el" href="gb_2hardware_8h.html#LCDCF_OBJON">LCDCF_OBJON</a></td></tr>
    288 <tr class="separator:SHOW_SPRITES"><td class="memSeparator" colspan="2">&#160;</td></tr>
    289 <tr class="memitem:HIDE_SPRITES"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#HIDE_SPRITES">HIDE_SPRITES</a>&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>&amp;=~<a class="el" href="gb_2hardware_8h.html#LCDCF_OBJON">LCDCF_OBJON</a></td></tr>
    290 <tr class="separator:HIDE_SPRITES"><td class="memSeparator" colspan="2">&#160;</td></tr>
    291 <tr class="memitem:SPRITES_8x16"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SPRITES_8x16">SPRITES_8x16</a>&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>|=<a class="el" href="gb_2hardware_8h.html#LCDCF_OBJ16">LCDCF_OBJ16</a></td></tr>
    292 <tr class="separator:SPRITES_8x16"><td class="memSeparator" colspan="2">&#160;</td></tr>
    293 <tr class="memitem:SPRITES_8x8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#SPRITES_8x8">SPRITES_8x8</a>&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>&amp;=~<a class="el" href="gb_2hardware_8h.html#LCDCF_OBJ16">LCDCF_OBJ16</a></td></tr>
    294 <tr class="separator:SPRITES_8x8"><td class="memSeparator" colspan="2">&#160;</td></tr>
    295 <tr class="memitem:COMPAT_PALETTE"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>
    296 <tr class="separator:COMPAT_PALETTE"><td class="memSeparator" colspan="2">&#160;</td></tr>
    297 <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="gb_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>
    298 <tr class="separator:set_bkg_2bpp_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    299 <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="gb_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>
    300 <tr class="separator:set_tile_map"><td class="memSeparator" colspan="2">&#160;</td></tr>
    301 <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="gb_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>
    302 <tr class="separator:set_tile_submap"><td class="memSeparator" colspan="2">&#160;</td></tr>
    303 <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="gb_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>
    304 <tr class="separator:set_tile_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    305 <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="gb_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>
    306 <tr class="separator:set_attribute_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    307 <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="gb_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>
    308 <tr class="separator:set_sprite_2bpp_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    309 <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="gb_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>
    310 <tr class="separator:DISABLE_OAM_DMA"><td class="memSeparator" colspan="2">&#160;</td></tr>
    311 <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="gb_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>
    312 <tr class="separator:DISABLE_VBL_TRANSFER"><td class="memSeparator" colspan="2">&#160;</td></tr>
    313 <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="gb_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>
    314 <tr class="separator:ENABLE_OAM_DMA"><td class="memSeparator" colspan="2">&#160;</td></tr>
    315 <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="gb_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>
    316 <tr class="separator:ENABLE_VBL_TRANSFER"><td class="memSeparator" colspan="2">&#160;</td></tr>
    317 <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="gb_8h.html#MAX_HARDWARE_SPRITES">MAX_HARDWARE_SPRITES</a>&#160;&#160;&#160;40</td></tr>
    318 <tr class="separator:MAX_HARDWARE_SPRITES"><td class="memSeparator" colspan="2">&#160;</td></tr>
    319 <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="gb_8h.html#HARDWARE_SPRITE_CAN_FLIP_X">HARDWARE_SPRITE_CAN_FLIP_X</a>&#160;&#160;&#160;1</td></tr>
    320 <tr class="separator:HARDWARE_SPRITE_CAN_FLIP_X"><td class="memSeparator" colspan="2">&#160;</td></tr>
    321 <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="gb_8h.html#HARDWARE_SPRITE_CAN_FLIP_Y">HARDWARE_SPRITE_CAN_FLIP_Y</a>&#160;&#160;&#160;1</td></tr>
    322 <tr class="separator:HARDWARE_SPRITE_CAN_FLIP_Y"><td class="memSeparator" colspan="2">&#160;</td></tr>
    323 <tr class="memitem:fill_rect"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>
    324 <tr class="separator:fill_rect"><td class="memSeparator" colspan="2">&#160;</td></tr>
    325 </table><table class="memberdecls">
    326 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
    327 Typedefs</h2></td></tr>
    328 <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="gb_8h.html#int_handler">int_handler</a>) (void) <a class="el" href="asm_2types_8h.html#NONBANKED">NONBANKED</a></td></tr>
    329 <tr class="separator:int_handler"><td class="memSeparator" colspan="2">&#160;</td></tr>
    330 <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="gb_8h.html#OAM_item_t">OAM_item_t</a></td></tr>
    331 <tr class="separator:OAM_item_t"><td class="memSeparator" colspan="2">&#160;</td></tr>
    332 </table><table class="memberdecls">
    333 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
    334 Functions</h2></td></tr>
    335 <tr class="memitem:remove_VBL"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>)</td></tr>
    336 <tr class="separator:remove_VBL"><td class="memSeparator" colspan="2">&#160;</td></tr>
    337 <tr class="memitem:remove_LCD"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>)</td></tr>
    338 <tr class="separator:remove_LCD"><td class="memSeparator" colspan="2">&#160;</td></tr>
    339 <tr class="memitem:remove_TIM"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>)</td></tr>
    340 <tr class="separator:remove_TIM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    341 <tr class="memitem:remove_SIO"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#remove_SIO">remove_SIO</a> (<a class="el" href="sms_8h.html#int_handler">int_handler</a> <a class="el" href="sms_8h.html#h">h</a>)</td></tr>
    342 <tr class="separator:remove_SIO"><td class="memSeparator" colspan="2">&#160;</td></tr>
    343 <tr class="memitem:remove_JOY"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#remove_JOY">remove_JOY</a> (<a class="el" href="sms_8h.html#int_handler">int_handler</a> <a class="el" href="sms_8h.html#h">h</a>)</td></tr>
    344 <tr class="separator:remove_JOY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    345 <tr class="memitem:add_VBL"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>)</td></tr>
    346 <tr class="separator:add_VBL"><td class="memSeparator" colspan="2">&#160;</td></tr>
    347 <tr class="memitem:add_LCD"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>)</td></tr>
    348 <tr class="separator:add_LCD"><td class="memSeparator" colspan="2">&#160;</td></tr>
    349 <tr class="memitem:add_TIM"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>)</td></tr>
    350 <tr class="separator:add_TIM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    351 <tr class="memitem:add_low_priority_TIM"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#add_low_priority_TIM">add_low_priority_TIM</a> (<a class="el" href="sms_8h.html#int_handler">int_handler</a> <a class="el" href="sms_8h.html#h">h</a>)</td></tr>
    352 <tr class="separator:add_low_priority_TIM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    353 <tr class="memitem:add_SIO"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#add_SIO">add_SIO</a> (<a class="el" href="sms_8h.html#int_handler">int_handler</a> <a class="el" href="sms_8h.html#h">h</a>)</td></tr>
    354 <tr class="separator:add_SIO"><td class="memSeparator" colspan="2">&#160;</td></tr>
    355 <tr class="memitem:add_JOY"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#add_JOY">add_JOY</a> (<a class="el" href="sms_8h.html#int_handler">int_handler</a> <a class="el" href="sms_8h.html#h">h</a>)</td></tr>
    356 <tr class="separator:add_JOY"><td class="memSeparator" colspan="2">&#160;</td></tr>
    357 <tr class="memitem:nowait_int_handler"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#nowait_int_handler">nowait_int_handler</a> (void)</td></tr>
    358 <tr class="separator:nowait_int_handler"><td class="memSeparator" colspan="2">&#160;</td></tr>
    359 <tr class="memitem:wait_int_handler"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#wait_int_handler">wait_int_handler</a> (void)</td></tr>
    360 <tr class="separator:wait_int_handler"><td class="memSeparator" colspan="2">&#160;</td></tr>
    361 <tr class="memitem:cancel_pending_interrupts"><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="gb_8h.html#cancel_pending_interrupts">cancel_pending_interrupts</a> (void)</td></tr>
    362 <tr class="separator:cancel_pending_interrupts"><td class="memSeparator" colspan="2">&#160;</td></tr>
    363 <tr class="memitem:mode"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#mode">mode</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> m)</td></tr>
    364 <tr class="separator:mode"><td class="memSeparator" colspan="2">&#160;</td></tr>
    365 <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="gb_8h.html#get_mode">get_mode</a> (void) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    366 <tr class="separator:get_mode"><td class="memSeparator" colspan="2">&#160;</td></tr>
    367 <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="gb_8h.html#get_system">get_system</a> (void)</td></tr>
    368 <tr class="separator:get_system"><td class="memSeparator" colspan="2">&#160;</td></tr>
    369 <tr class="memitem:send_byte"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#send_byte">send_byte</a> (void)</td></tr>
    370 <tr class="separator:send_byte"><td class="memSeparator" colspan="2">&#160;</td></tr>
    371 <tr class="memitem:receive_byte"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#receive_byte">receive_byte</a> (void)</td></tr>
    372 <tr class="separator:receive_byte"><td class="memSeparator" colspan="2">&#160;</td></tr>
    373 <tr class="memitem:delay"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#h">h</a></td></tr>
    374 <tr class="separator:delay"><td class="memSeparator" colspan="2">&#160;</td></tr>
    375 <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="gb_8h.html#joypad">joypad</a> (void) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    376 <tr class="separator:joypad"><td class="memSeparator" colspan="2">&#160;</td></tr>
    377 <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="gb_8h.html#waitpad">waitpad</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> mask) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    378 <tr class="separator:waitpad"><td class="memSeparator" colspan="2">&#160;</td></tr>
    379 <tr class="memitem:waitpadup"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#waitpadup">waitpadup</a> (void) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(a</td></tr>
    380 <tr class="separator:waitpadup"><td class="memSeparator" colspan="2">&#160;</td></tr>
    381 <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="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a></td></tr>
    382 <tr class="separator:joypad_init"><td class="memSeparator" colspan="2">&#160;</td></tr>
    383 <tr class="memitem:joypad_ex"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#joypad_ex">joypad_ex</a> (<a class="el" href="structjoypads__t.html">joypads_t</a> *joypads) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    384 <tr class="separator:joypad_ex"><td class="memSeparator" colspan="2">&#160;</td></tr>
    385 <tr class="memitem:enable_interrupts"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#enable_interrupts">enable_interrupts</a> (void) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(a</td></tr>
    386 <tr class="separator:enable_interrupts"><td class="memSeparator" colspan="2">&#160;</td></tr>
    387 <tr class="memitem:disable_interrupts"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#disable_interrupts">disable_interrupts</a> (void) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(a</td></tr>
    388 <tr class="separator:disable_interrupts"><td class="memSeparator" colspan="2">&#160;</td></tr>
    389 <tr class="memitem:set_interrupts"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#set_interrupts">set_interrupts</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> flags) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    390 <tr class="separator:set_interrupts"><td class="memSeparator" colspan="2">&#160;</td></tr>
    391 <tr class="memitem:reset"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#reset">reset</a> (void)</td></tr>
    392 <tr class="separator:reset"><td class="memSeparator" colspan="2">&#160;</td></tr>
    393 <tr class="memitem:vsync"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#vsync">vsync</a> (void) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    394 <tr class="separator:vsync"><td class="memSeparator" colspan="2">&#160;</td></tr>
    395 <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="gb_8h.html#wait_vbl_done">wait_vbl_done</a> (void) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    396 <tr class="separator:wait_vbl_done"><td class="memSeparator" colspan="2">&#160;</td></tr>
    397 <tr class="memitem:display_off"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#display_off">display_off</a> (void) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    398 <tr class="separator:display_off"><td class="memSeparator" colspan="2">&#160;</td></tr>
    399 <tr class="memitem:refresh_OAM"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#refresh_OAM">refresh_OAM</a> (void) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    400 <tr class="separator:refresh_OAM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    401 <tr class="memitem:hiramcpy"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#hiramcpy">hiramcpy</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> dst, const void *src, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> n) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    402 <tr class="separator:hiramcpy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    403 <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="gb_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) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    404 <tr class="separator:set_vram_byte"><td class="memSeparator" colspan="2">&#160;</td></tr>
    405 <tr class="memitem:get_vram_byte"><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="gb_8h.html#get_vram_byte">get_vram_byte</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *addr) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    406 <tr class="separator:get_vram_byte"><td class="memSeparator" colspan="2">&#160;</td></tr>
    407 <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="gb_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) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#h">h</a></td></tr>
    408 <tr class="separator:get_bkg_xy_addr"><td class="memSeparator" colspan="2">&#160;</td></tr>
    409 <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="gb_8h.html#set_2bpp_palette">set_2bpp_palette</a> (<a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> palette)</td></tr>
    410 <tr class="separator:set_2bpp_palette"><td class="memSeparator" colspan="2">&#160;</td></tr>
    411 <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="gb_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>) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a></td></tr>
    412 <tr class="separator:set_1bpp_colors_ex"><td class="memSeparator" colspan="2">&#160;</td></tr>
    413 <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="gb_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>
    414 <tr class="separator:set_1bpp_colors"><td class="memSeparator" colspan="2">&#160;</td></tr>
    415 <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="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    416 <tr class="separator:set_bkg_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    417 <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="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    418 <tr class="separator:set_bkg_1bpp_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    419 <tr class="memitem:get_bkg_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#get_bkg_data">get_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, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    420 <tr class="separator:get_bkg_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    421 <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="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    422 <tr class="separator:set_bkg_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    423 <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="gb_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>
    424 <tr class="separator:set_bkg_based_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    425 <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="gb_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> *tiles)</td></tr>
    426 <tr class="separator:set_bkg_attributes"><td class="memSeparator" colspan="2">&#160;</td></tr>
    427 <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="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a></td></tr>
    428 <tr class="separator:set_bkg_submap"><td class="memSeparator" colspan="2">&#160;</td></tr>
    429 <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="gb_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>
    430 <tr class="separator:set_bkg_based_submap"><td class="memSeparator" colspan="2">&#160;</td></tr>
    431 <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="gb_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> *map, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> map_w)</td></tr>
    432 <tr class="separator:set_bkg_submap_attributes"><td class="memSeparator" colspan="2">&#160;</td></tr>
    433 <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="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    434 <tr class="separator:get_bkg_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    435 <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="gb_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)</td></tr>
    436 <tr class="separator:set_bkg_tile_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    437 <tr class="memitem:set_bkg_attribute_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="gb_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>
    438 <tr class="separator:set_bkg_attribute_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    439 <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="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    440 <tr class="separator:get_bkg_tile_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    441 <tr class="memitem:move_bkg"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#move_bkg">move_bkg</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)</td></tr>
    442 <tr class="separator:move_bkg"><td class="memSeparator" colspan="2">&#160;</td></tr>
    443 <tr class="memitem:scroll_bkg"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>
    444 <tr class="separator:scroll_bkg"><td class="memSeparator" colspan="2">&#160;</td></tr>
    445 <tr class="memitem:get_win_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="gb_8h.html#get_win_xy_addr">get_win_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) <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#h">h</a></td></tr>
    446 <tr class="separator:get_win_xy_addr"><td class="memSeparator" colspan="2">&#160;</td></tr>
    447 <tr class="memitem:set_win_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#set_win_data">set_win_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    448 <tr class="separator:set_win_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    449 <tr class="memitem:set_win_1bpp_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#set_win_1bpp_data">set_win_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    450 <tr class="separator:set_win_1bpp_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    451 <tr class="memitem:get_win_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#get_win_data">get_win_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, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    452 <tr class="separator:get_win_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    453 <tr class="memitem:set_win_tiles"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#set_win_tiles">set_win_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="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    454 <tr class="separator:set_win_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    455 <tr class="memitem:set_win_based_tiles"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#set_win_based_tiles">set_win_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>
    456 <tr class="separator:set_win_based_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    457 <tr class="memitem:set_win_submap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#set_win_submap">set_win_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="asm_2types_8h.html#OLDCALL">OLDCALL</a></td></tr>
    458 <tr class="separator:set_win_submap"><td class="memSeparator" colspan="2">&#160;</td></tr>
    459 <tr class="memitem:set_win_based_submap"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#set_win_based_submap">set_win_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>
    460 <tr class="separator:set_win_based_submap"><td class="memSeparator" colspan="2">&#160;</td></tr>
    461 <tr class="memitem:get_win_tiles"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#get_win_tiles">get_win_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    462 <tr class="separator:get_win_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    463 <tr class="memitem:set_win_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="gb_8h.html#set_win_tile_xy">set_win_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)</td></tr>
    464 <tr class="separator:set_win_tile_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    465 <tr class="memitem:get_win_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="gb_8h.html#get_win_tile_xy">get_win_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="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    466 <tr class="separator:get_win_tile_xy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    467 <tr class="memitem:move_win"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#move_win">move_win</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)</td></tr>
    468 <tr class="separator:move_win"><td class="memSeparator" colspan="2">&#160;</td></tr>
    469 <tr class="memitem:scroll_win"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#scroll_win">scroll_win</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>
    470 <tr class="separator:scroll_win"><td class="memSeparator" colspan="2">&#160;</td></tr>
    471 <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="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    472 <tr class="separator:set_sprite_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    473 <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="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    474 <tr class="separator:set_sprite_1bpp_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    475 <tr class="memitem:get_sprite_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#get_sprite_data">get_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, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    476 <tr class="separator:get_sprite_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    477 <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="gb_8h.html#SET_SHADOW_OAM_ADDRESS">SET_SHADOW_OAM_ADDRESS</a> (void *address)</td></tr>
    478 <tr class="separator:SET_SHADOW_OAM_ADDRESS"><td class="memSeparator" colspan="2">&#160;</td></tr>
    479 <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="gb_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)</td></tr>
    480 <tr class="separator:set_sprite_tile"><td class="memSeparator" colspan="2">&#160;</td></tr>
    481 <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="gb_8h.html#get_sprite_tile">get_sprite_tile</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb)</td></tr>
    482 <tr class="separator:get_sprite_tile"><td class="memSeparator" colspan="2">&#160;</td></tr>
    483 <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="gb_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)</td></tr>
    484 <tr class="separator:set_sprite_prop"><td class="memSeparator" colspan="2">&#160;</td></tr>
    485 <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="gb_8h.html#get_sprite_prop">get_sprite_prop</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb)</td></tr>
    486 <tr class="separator:get_sprite_prop"><td class="memSeparator" colspan="2">&#160;</td></tr>
    487 <tr class="memitem:move_sprite"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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)</td></tr>
    488 <tr class="separator:move_sprite"><td class="memSeparator" colspan="2">&#160;</td></tr>
    489 <tr class="memitem:scroll_sprite"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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)</td></tr>
    490 <tr class="separator:scroll_sprite"><td class="memSeparator" colspan="2">&#160;</td></tr>
    491 <tr class="memitem:hide_sprite"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#hide_sprite">hide_sprite</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> nb)</td></tr>
    492 <tr class="separator:hide_sprite"><td class="memSeparator" colspan="2">&#160;</td></tr>
    493 <tr class="memitem:set_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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)</td></tr>
    494 <tr class="separator:set_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    495 <tr class="memitem:get_data"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#get_data">get_data</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *data, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *vram_addr, <a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> len)</td></tr>
    496 <tr class="separator:get_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    497 <tr class="memitem:vmemcpy"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#vmemcpy">vmemcpy</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *dest, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *sour, <a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> len)</td></tr>
    498 <tr class="separator:vmemcpy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    499 <tr class="memitem:set_tiles"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a></td></tr>
    500 <tr class="separator:set_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    501 <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="gb_8h.html#set_tile_data">set_tile_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, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    502 <tr class="separator:set_tile_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    503 <tr class="memitem:get_tiles"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#get_tiles">get_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, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *tiles) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a></td></tr>
    504 <tr class="separator:get_tiles"><td class="memSeparator" colspan="2">&#160;</td></tr>
    505 <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="gb_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>
    506 <tr class="separator:set_native_tile_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    507 <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="gb_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)</td></tr>
    508 <tr class="separator:set_bkg_native_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    509 <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="gb_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)</td></tr>
    510 <tr class="separator:set_sprite_native_data"><td class="memSeparator" colspan="2">&#160;</td></tr>
    511 <tr class="memitem:init_win"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#init_win">init_win</a> (<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_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    512 <tr class="separator:init_win"><td class="memSeparator" colspan="2">&#160;</td></tr>
    513 <tr class="memitem:init_bkg"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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>) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    514 <tr class="separator:init_bkg"><td class="memSeparator" colspan="2">&#160;</td></tr>
    515 <tr class="memitem:vmemset"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    516 <tr class="separator:vmemset"><td class="memSeparator" colspan="2">&#160;</td></tr>
    517 <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="gb_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    518 <tr class="separator:fill_bkg_rect"><td class="memSeparator" colspan="2">&#160;</td></tr>
    519 <tr class="memitem:fill_win_rect"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#fill_win_rect">fill_win_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) <a class="el" href="asm_2types_8h.html#OLDCALL">OLDCALL</a> <a class="el" href="asm_2types_8h.html#PRESERVES_REGS">PRESERVES_REGS</a>(<a class="el" href="sms_8h.html#b">b</a></td></tr>
    520 <tr class="separator:fill_win_rect"><td class="memSeparator" colspan="2">&#160;</td></tr>
    521 </table><table class="memberdecls">
    522 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
    523 Variables</h2></td></tr>
    524 <tr class="memitem:c"><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="gb_8h.html#c">c</a></td></tr>
    525 <tr class="separator:c"><td class="memSeparator" colspan="2">&#160;</td></tr>
    526 <tr class="memitem:d"><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="gb_8h.html#d">d</a></td></tr>
    527 <tr class="separator:d"><td class="memSeparator" colspan="2">&#160;</td></tr>
    528 <tr class="memitem:e"><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="gb_8h.html#e">e</a></td></tr>
    529 <tr class="separator:e"><td class="memSeparator" colspan="2">&#160;</td></tr>
    530 <tr class="memitem:h"><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="gb_8h.html#h">h</a></td></tr>
    531 <tr class="separator:h"><td class="memSeparator" colspan="2">&#160;</td></tr>
    532 <tr class="memitem:l"><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="gb_8h.html#l">l</a></td></tr>
    533 <tr class="separator:l"><td class="memSeparator" colspan="2">&#160;</td></tr>
    534 <tr class="memitem:_cpu"><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="gb_8h.html#_cpu">_cpu</a></td></tr>
    535 <tr class="separator:_cpu"><td class="memSeparator" colspan="2">&#160;</td></tr>
    536 <tr class="memitem:_is_GBA"><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="gb_8h.html#_is_GBA">_is_GBA</a></td></tr>
    537 <tr class="separator:_is_GBA"><td class="memSeparator" colspan="2">&#160;</td></tr>
    538 <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="gb_8h.html#sys_time">sys_time</a></td></tr>
    539 <tr class="separator:sys_time"><td class="memSeparator" colspan="2">&#160;</td></tr>
    540 <tr class="memitem:_vbl_done"><td class="memItemLeft" align="right" valign="top"><a class="el" href="nes_2hardware_8h.html#__REG">__REG</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#_vbl_done">_vbl_done</a></td></tr>
    541 <tr class="separator:_vbl_done"><td class="memSeparator" colspan="2">&#160;</td></tr>
    542 <tr class="memitem:_io_status"><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="gb_8h.html#_io_status">_io_status</a></td></tr>
    543 <tr class="separator:_io_status"><td class="memSeparator" colspan="2">&#160;</td></tr>
    544 <tr class="memitem:_io_in"><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="gb_8h.html#_io_in">_io_in</a></td></tr>
    545 <tr class="separator:_io_in"><td class="memSeparator" colspan="2">&#160;</td></tr>
    546 <tr class="memitem:_io_out"><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="gb_8h.html#_io_out">_io_out</a></td></tr>
    547 <tr class="separator:_io_out"><td class="memSeparator" colspan="2">&#160;</td></tr>
    548 <tr class="memitem:_current_bank"><td class="memItemLeft" align="right" valign="top"><a class="el" href="nes_2hardware_8h.html#__REG">__REG</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#_current_bank">_current_bank</a></td></tr>
    549 <tr class="separator:_current_bank"><td class="memSeparator" colspan="2">&#160;</td></tr>
    550 <tr class="memitem:b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#b">b</a></td></tr>
    551 <tr class="separator:b"><td class="memSeparator" colspan="2">&#160;</td></tr>
    552 <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="gb_8h.html#_current_1bpp_colors">_current_1bpp_colors</a></td></tr>
    553 <tr class="separator:_current_1bpp_colors"><td class="memSeparator" colspan="2">&#160;</td></tr>
    554 <tr class="memitem:_map_tile_offset"><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="gb_8h.html#_map_tile_offset">_map_tile_offset</a></td></tr>
    555 <tr class="separator:_map_tile_offset"><td class="memSeparator" colspan="2">&#160;</td></tr>
    556 <tr class="memitem:_submap_tile_offset"><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="gb_8h.html#_submap_tile_offset">_submap_tile_offset</a></td></tr>
    557 <tr class="separator:_submap_tile_offset"><td class="memSeparator" colspan="2">&#160;</td></tr>
    558 <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="gb_8h.html#shadow_OAM">shadow_OAM</a> []</td></tr>
    559 <tr class="separator:shadow_OAM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    560 <tr class="memitem:_shadow_OAM_base"><td class="memItemLeft" align="right" valign="top"><a class="el" href="nes_2hardware_8h.html#__REG">__REG</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_8h.html#_shadow_OAM_base">_shadow_OAM_base</a></td></tr>
    561 <tr class="separator:_shadow_OAM_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
    562 </table>
    563 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
    564 <div class="textblock"><p >Gameboy specific functions. </p>
    565 </div><h2 class="groupheader">Macro Definition Documentation</h2>
    566 <a id="NINTENDO" name="NINTENDO"></a>
    567 <h2 class="memtitle"><span class="permalink"><a href="#NINTENDO">&#9670;&nbsp;</a></span>NINTENDO</h2>
    568 
    569 <div class="memitem">
    570 <div class="memproto">
    571       <table class="memname">
    572         <tr>
    573           <td class="memname">#define NINTENDO</td>
    574         </tr>
    575       </table>
    576 </div><div class="memdoc">
    577 
    578 </div>
    579 </div>
    580 <a id="SYSTEM_60HZ" name="SYSTEM_60HZ"></a>
    581 <h2 class="memtitle"><span class="permalink"><a href="#SYSTEM_60HZ">&#9670;&nbsp;</a></span>SYSTEM_60HZ</h2>
    582 
    583 <div class="memitem">
    584 <div class="memproto">
    585       <table class="memname">
    586         <tr>
    587           <td class="memname">#define SYSTEM_60HZ&#160;&#160;&#160;0x00</td>
    588         </tr>
    589       </table>
    590 </div><div class="memdoc">
    591 
    592 </div>
    593 </div>
    594 <a id="SYSTEM_50HZ" name="SYSTEM_50HZ"></a>
    595 <h2 class="memtitle"><span class="permalink"><a href="#SYSTEM_50HZ">&#9670;&nbsp;</a></span>SYSTEM_50HZ</h2>
    596 
    597 <div class="memitem">
    598 <div class="memproto">
    599       <table class="memname">
    600         <tr>
    601           <td class="memname">#define SYSTEM_50HZ&#160;&#160;&#160;0x01</td>
    602         </tr>
    603       </table>
    604 </div><div class="memdoc">
    605 
    606 </div>
    607 </div>
    608 <a id="GAMEBOY" name="GAMEBOY"></a>
    609 <h2 class="memtitle"><span class="permalink"><a href="#GAMEBOY">&#9670;&nbsp;</a></span>GAMEBOY</h2>
    610 
    611 <div class="memitem">
    612 <div class="memproto">
    613       <table class="memname">
    614         <tr>
    615           <td class="memname">#define GAMEBOY</td>
    616         </tr>
    617       </table>
    618 </div><div class="memdoc">
    619 
    620 </div>
    621 </div>
    622 <a id="J_UP" name="J_UP"></a>
    623 <h2 class="memtitle"><span class="permalink"><a href="#J_UP">&#9670;&nbsp;</a></span>J_UP</h2>
    624 
    625 <div class="memitem">
    626 <div class="memproto">
    627       <table class="memname">
    628         <tr>
    629           <td class="memname">#define J_UP&#160;&#160;&#160;0x04U</td>
    630         </tr>
    631       </table>
    632 </div><div class="memdoc">
    633 <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>
    634 <p >uint8_t keys; keys = <a class="el" href="gb_8h.html#joypad">joypad()</a>; if (keys &amp; J_B) { ... }</p>
    635 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#joypad">joypad</a> </dd></dl>
    636 
    637 </div>
    638 </div>
    639 <a id="J_DOWN" name="J_DOWN"></a>
    640 <h2 class="memtitle"><span class="permalink"><a href="#J_DOWN">&#9670;&nbsp;</a></span>J_DOWN</h2>
    641 
    642 <div class="memitem">
    643 <div class="memproto">
    644       <table class="memname">
    645         <tr>
    646           <td class="memname">#define J_DOWN&#160;&#160;&#160;0x08U</td>
    647         </tr>
    648       </table>
    649 </div><div class="memdoc">
    650 
    651 </div>
    652 </div>
    653 <a id="J_LEFT" name="J_LEFT"></a>
    654 <h2 class="memtitle"><span class="permalink"><a href="#J_LEFT">&#9670;&nbsp;</a></span>J_LEFT</h2>
    655 
    656 <div class="memitem">
    657 <div class="memproto">
    658       <table class="memname">
    659         <tr>
    660           <td class="memname">#define J_LEFT&#160;&#160;&#160;0x02U</td>
    661         </tr>
    662       </table>
    663 </div><div class="memdoc">
    664 
    665 </div>
    666 </div>
    667 <a id="J_RIGHT" name="J_RIGHT"></a>
    668 <h2 class="memtitle"><span class="permalink"><a href="#J_RIGHT">&#9670;&nbsp;</a></span>J_RIGHT</h2>
    669 
    670 <div class="memitem">
    671 <div class="memproto">
    672       <table class="memname">
    673         <tr>
    674           <td class="memname">#define J_RIGHT&#160;&#160;&#160;0x01U</td>
    675         </tr>
    676       </table>
    677 </div><div class="memdoc">
    678 
    679 </div>
    680 </div>
    681 <a id="J_A" name="J_A"></a>
    682 <h2 class="memtitle"><span class="permalink"><a href="#J_A">&#9670;&nbsp;</a></span>J_A</h2>
    683 
    684 <div class="memitem">
    685 <div class="memproto">
    686       <table class="memname">
    687         <tr>
    688           <td class="memname">#define J_A&#160;&#160;&#160;0x10U</td>
    689         </tr>
    690       </table>
    691 </div><div class="memdoc">
    692 
    693 </div>
    694 </div>
    695 <a id="J_B" name="J_B"></a>
    696 <h2 class="memtitle"><span class="permalink"><a href="#J_B">&#9670;&nbsp;</a></span>J_B</h2>
    697 
    698 <div class="memitem">
    699 <div class="memproto">
    700       <table class="memname">
    701         <tr>
    702           <td class="memname">#define J_B&#160;&#160;&#160;0x20U</td>
    703         </tr>
    704       </table>
    705 </div><div class="memdoc">
    706 
    707 </div>
    708 </div>
    709 <a id="J_SELECT" name="J_SELECT"></a>
    710 <h2 class="memtitle"><span class="permalink"><a href="#J_SELECT">&#9670;&nbsp;</a></span>J_SELECT</h2>
    711 
    712 <div class="memitem">
    713 <div class="memproto">
    714       <table class="memname">
    715         <tr>
    716           <td class="memname">#define J_SELECT&#160;&#160;&#160;0x40U</td>
    717         </tr>
    718       </table>
    719 </div><div class="memdoc">
    720 
    721 </div>
    722 </div>
    723 <a id="J_START" name="J_START"></a>
    724 <h2 class="memtitle"><span class="permalink"><a href="#J_START">&#9670;&nbsp;</a></span>J_START</h2>
    725 
    726 <div class="memitem">
    727 <div class="memproto">
    728       <table class="memname">
    729         <tr>
    730           <td class="memname">#define J_START&#160;&#160;&#160;0x80U</td>
    731         </tr>
    732       </table>
    733 </div><div class="memdoc">
    734 
    735 </div>
    736 </div>
    737 <a id="M_DRAWING" name="M_DRAWING"></a>
    738 <h2 class="memtitle"><span class="permalink"><a href="#M_DRAWING">&#9670;&nbsp;</a></span>M_DRAWING</h2>
    739 
    740 <div class="memitem">
    741 <div class="memproto">
    742       <table class="memname">
    743         <tr>
    744           <td class="memname">#define M_DRAWING&#160;&#160;&#160;0x01U</td>
    745         </tr>
    746       </table>
    747 </div><div class="memdoc">
    748 <p >Screen modes. Normally used by internal functions only. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#mode">mode()</a> </dd></dl>
    749 
    750 </div>
    751 </div>
    752 <a id="M_TEXT_OUT" name="M_TEXT_OUT"></a>
    753 <h2 class="memtitle"><span class="permalink"><a href="#M_TEXT_OUT">&#9670;&nbsp;</a></span>M_TEXT_OUT</h2>
    754 
    755 <div class="memitem">
    756 <div class="memproto">
    757       <table class="memname">
    758         <tr>
    759           <td class="memname">#define M_TEXT_OUT&#160;&#160;&#160;0x02U</td>
    760         </tr>
    761       </table>
    762 </div><div class="memdoc">
    763 
    764 </div>
    765 </div>
    766 <a id="M_TEXT_INOUT" name="M_TEXT_INOUT"></a>
    767 <h2 class="memtitle"><span class="permalink"><a href="#M_TEXT_INOUT">&#9670;&nbsp;</a></span>M_TEXT_INOUT</h2>
    768 
    769 <div class="memitem">
    770 <div class="memproto">
    771       <table class="memname">
    772         <tr>
    773           <td class="memname">#define M_TEXT_INOUT&#160;&#160;&#160;0x03U</td>
    774         </tr>
    775       </table>
    776 </div><div class="memdoc">
    777 
    778 </div>
    779 </div>
    780 <a id="M_NO_SCROLL" name="M_NO_SCROLL"></a>
    781 <h2 class="memtitle"><span class="permalink"><a href="#M_NO_SCROLL">&#9670;&nbsp;</a></span>M_NO_SCROLL</h2>
    782 
    783 <div class="memitem">
    784 <div class="memproto">
    785       <table class="memname">
    786         <tr>
    787           <td class="memname">#define M_NO_SCROLL&#160;&#160;&#160;0x04U</td>
    788         </tr>
    789       </table>
    790 </div><div class="memdoc">
    791 <p >Set this in addition to the others to disable scrolling</p>
    792 <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="gb_8h.html#mode">mode()</a> </dd></dl>
    793 
    794 </div>
    795 </div>
    796 <a id="M_NO_INTERP" name="M_NO_INTERP"></a>
    797 <h2 class="memtitle"><span class="permalink"><a href="#M_NO_INTERP">&#9670;&nbsp;</a></span>M_NO_INTERP</h2>
    798 
    799 <div class="memitem">
    800 <div class="memproto">
    801       <table class="memname">
    802         <tr>
    803           <td class="memname">#define M_NO_INTERP&#160;&#160;&#160;0x08U</td>
    804         </tr>
    805       </table>
    806 </div><div class="memdoc">
    807 <p >Set this to disable interpretation </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#mode">mode()</a> </dd></dl>
    808 
    809 </div>
    810 </div>
    811 <a id="S_BANK" name="S_BANK"></a>
    812 <h2 class="memtitle"><span class="permalink"><a href="#S_BANK">&#9670;&nbsp;</a></span>S_BANK</h2>
    813 
    814 <div class="memitem">
    815 <div class="memproto">
    816       <table class="memname">
    817         <tr>
    818           <td class="memname">#define S_BANK&#160;&#160;&#160;0x08U</td>
    819         </tr>
    820       </table>
    821 </div><div class="memdoc">
    822 <p >If this bit set clear, the tile from the second VRAM bank is used </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_sprite_prop">set_sprite_prop()</a> </dd></dl>
    823 
    824 </div>
    825 </div>
    826 <a id="S_PALETTE" name="S_PALETTE"></a>
    827 <h2 class="memtitle"><span class="permalink"><a href="#S_PALETTE">&#9670;&nbsp;</a></span>S_PALETTE</h2>
    828 
    829 <div class="memitem">
    830 <div class="memproto">
    831       <table class="memname">
    832         <tr>
    833           <td class="memname">#define S_PALETTE&#160;&#160;&#160;0x10U</td>
    834         </tr>
    835       </table>
    836 </div><div class="memdoc">
    837 <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="gb_8h.html#set_sprite_prop">set_sprite_prop()</a>. </dd></dl>
    838 
    839 </div>
    840 </div>
    841 <a id="S_FLIPX" name="S_FLIPX"></a>
    842 <h2 class="memtitle"><span class="permalink"><a href="#S_FLIPX">&#9670;&nbsp;</a></span>S_FLIPX</h2>
    843 
    844 <div class="memitem">
    845 <div class="memproto">
    846       <table class="memname">
    847         <tr>
    848           <td class="memname">#define S_FLIPX&#160;&#160;&#160;0x20U</td>
    849         </tr>
    850       </table>
    851 </div><div class="memdoc">
    852 <p >If set the sprite will be flipped horizontally. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_sprite_prop">set_sprite_prop()</a> </dd></dl>
    853 
    854 </div>
    855 </div>
    856 <a id="S_FLIPY" name="S_FLIPY"></a>
    857 <h2 class="memtitle"><span class="permalink"><a href="#S_FLIPY">&#9670;&nbsp;</a></span>S_FLIPY</h2>
    858 
    859 <div class="memitem">
    860 <div class="memproto">
    861       <table class="memname">
    862         <tr>
    863           <td class="memname">#define S_FLIPY&#160;&#160;&#160;0x40U</td>
    864         </tr>
    865       </table>
    866 </div><div class="memdoc">
    867 <p >If set the sprite will be flipped vertically. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_sprite_prop">set_sprite_prop()</a> </dd></dl>
    868 
    869 </div>
    870 </div>
    871 <a id="S_PRIORITY" name="S_PRIORITY"></a>
    872 <h2 class="memtitle"><span class="permalink"><a href="#S_PRIORITY">&#9670;&nbsp;</a></span>S_PRIORITY</h2>
    873 
    874 <div class="memitem">
    875 <div class="memproto">
    876       <table class="memname">
    877         <tr>
    878           <td class="memname">#define S_PRIORITY&#160;&#160;&#160;0x80U</td>
    879         </tr>
    880       </table>
    881 </div><div class="memdoc">
    882 <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="gb_8h.html#set_sprite_prop">set_sprite_prop()</a> </dd></dl>
    883 
    884 </div>
    885 </div>
    886 <a id="S_PAL" name="S_PAL"></a>
    887 <h2 class="memtitle"><span class="permalink"><a href="#S_PAL">&#9670;&nbsp;</a></span>S_PAL</h2>
    888 
    889 <div class="memitem">
    890 <div class="memproto">
    891       <table class="memname">
    892         <tr>
    893           <td class="memname">#define S_PAL</td>
    894           <td>(</td>
    895           <td class="paramtype">&#160;</td>
    896           <td class="paramname">n</td><td>)</td>
    897           <td>&#160;&#160;&#160;n</td>
    898         </tr>
    899       </table>
    900 </div><div class="memdoc">
    901 <p >Defines how palette number is encoded in OAM. Required for the png2asset tool's metasprite output. </p>
    902 
    903 </div>
    904 </div>
    905 <a id="EMPTY_IFLAG" name="EMPTY_IFLAG"></a>
    906 <h2 class="memtitle"><span class="permalink"><a href="#EMPTY_IFLAG">&#9670;&nbsp;</a></span>EMPTY_IFLAG</h2>
    907 
    908 <div class="memitem">
    909 <div class="memproto">
    910       <table class="memname">
    911         <tr>
    912           <td class="memname">#define EMPTY_IFLAG&#160;&#160;&#160;0x00U</td>
    913         </tr>
    914       </table>
    915 </div><div class="memdoc">
    916 <p >Disable calling of interrupt service routines </p>
    917 
    918 </div>
    919 </div>
    920 <a id="VBL_IFLAG" name="VBL_IFLAG"></a>
    921 <h2 class="memtitle"><span class="permalink"><a href="#VBL_IFLAG">&#9670;&nbsp;</a></span>VBL_IFLAG</h2>
    922 
    923 <div class="memitem">
    924 <div class="memproto">
    925       <table class="memname">
    926         <tr>
    927           <td class="memname">#define VBL_IFLAG&#160;&#160;&#160;0x01U</td>
    928         </tr>
    929       </table>
    930 </div><div class="memdoc">
    931 <p >VBlank Interrupt occurs at the start of the vertical blank.</p>
    932 <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="gb_8h.html#set_interrupts">set_interrupts()</a>, </dd>
    933 <dd>
    934 <a class="el" href="gb_8h.html#add_VBL">add_VBL</a> </dd></dl>
    935 
    936 </div>
    937 </div>
    938 <a id="LCD_IFLAG" name="LCD_IFLAG"></a>
    939 <h2 class="memtitle"><span class="permalink"><a href="#LCD_IFLAG">&#9670;&nbsp;</a></span>LCD_IFLAG</h2>
    940 
    941 <div class="memitem">
    942 <div class="memproto">
    943       <table class="memname">
    944         <tr>
    945           <td class="memname">#define LCD_IFLAG&#160;&#160;&#160;0x02U</td>
    946         </tr>
    947       </table>
    948 </div><div class="memdoc">
    949 <p >LCD Interrupt when triggered by the STAT register. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_interrupts">set_interrupts()</a>, </dd>
    950 <dd>
    951 <a class="el" href="gb_8h.html#add_LCD">add_LCD</a> </dd></dl>
    952 
    953 </div>
    954 </div>
    955 <a id="TIM_IFLAG" name="TIM_IFLAG"></a>
    956 <h2 class="memtitle"><span class="permalink"><a href="#TIM_IFLAG">&#9670;&nbsp;</a></span>TIM_IFLAG</h2>
    957 
    958 <div class="memitem">
    959 <div class="memproto">
    960       <table class="memname">
    961         <tr>
    962           <td class="memname">#define TIM_IFLAG&#160;&#160;&#160;0x04U</td>
    963         </tr>
    964       </table>
    965 </div><div class="memdoc">
    966 <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="gb_8h.html#set_interrupts">set_interrupts()</a>, </dd>
    967 <dd>
    968 <a class="el" href="gb_8h.html#add_TIM">add_TIM</a> </dd></dl>
    969 
    970 </div>
    971 </div>
    972 <a id="SIO_IFLAG" name="SIO_IFLAG"></a>
    973 <h2 class="memtitle"><span class="permalink"><a href="#SIO_IFLAG">&#9670;&nbsp;</a></span>SIO_IFLAG</h2>
    974 
    975 <div class="memitem">
    976 <div class="memproto">
    977       <table class="memname">
    978         <tr>
    979           <td class="memname">#define SIO_IFLAG&#160;&#160;&#160;0x08U</td>
    980         </tr>
    981       </table>
    982 </div><div class="memdoc">
    983 <p >Serial Link Interrupt occurs when the serial transfer has completed. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_interrupts">set_interrupts()</a>, </dd>
    984 <dd>
    985 <a class="el" href="gb_8h.html#add_SIO">add_SIO</a> </dd></dl>
    986 
    987 </div>
    988 </div>
    989 <a id="JOY_IFLAG" name="JOY_IFLAG"></a>
    990 <h2 class="memtitle"><span class="permalink"><a href="#JOY_IFLAG">&#9670;&nbsp;</a></span>JOY_IFLAG</h2>
    991 
    992 <div class="memitem">
    993 <div class="memproto">
    994       <table class="memname">
    995         <tr>
    996           <td class="memname">#define JOY_IFLAG&#160;&#160;&#160;0x10U</td>
    997         </tr>
    998       </table>
    999 </div><div class="memdoc">
   1000 <p >Joypad Interrupt occurs on a transition of the keypad. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_interrupts">set_interrupts()</a>, </dd>
   1001 <dd>
   1002 <a class="el" href="gb_8h.html#add_JOY">add_JOY</a> </dd></dl>
   1003 
   1004 </div>
   1005 </div>
   1006 <a id="DMG_BLACK" name="DMG_BLACK"></a>
   1007 <h2 class="memtitle"><span class="permalink"><a href="#DMG_BLACK">&#9670;&nbsp;</a></span>DMG_BLACK</h2>
   1008 
   1009 <div class="memitem">
   1010 <div class="memproto">
   1011       <table class="memname">
   1012         <tr>
   1013           <td class="memname">#define DMG_BLACK&#160;&#160;&#160;0x03</td>
   1014         </tr>
   1015       </table>
   1016 </div><div class="memdoc">
   1017 
   1018 </div>
   1019 </div>
   1020 <a id="DMG_DARK_GRAY" name="DMG_DARK_GRAY"></a>
   1021 <h2 class="memtitle"><span class="permalink"><a href="#DMG_DARK_GRAY">&#9670;&nbsp;</a></span>DMG_DARK_GRAY</h2>
   1022 
   1023 <div class="memitem">
   1024 <div class="memproto">
   1025       <table class="memname">
   1026         <tr>
   1027           <td class="memname">#define DMG_DARK_GRAY&#160;&#160;&#160;0x02</td>
   1028         </tr>
   1029       </table>
   1030 </div><div class="memdoc">
   1031 
   1032 </div>
   1033 </div>
   1034 <a id="DMG_LITE_GRAY" name="DMG_LITE_GRAY"></a>
   1035 <h2 class="memtitle"><span class="permalink"><a href="#DMG_LITE_GRAY">&#9670;&nbsp;</a></span>DMG_LITE_GRAY</h2>
   1036 
   1037 <div class="memitem">
   1038 <div class="memproto">
   1039       <table class="memname">
   1040         <tr>
   1041           <td class="memname">#define DMG_LITE_GRAY&#160;&#160;&#160;0x01</td>
   1042         </tr>
   1043       </table>
   1044 </div><div class="memdoc">
   1045 
   1046 </div>
   1047 </div>
   1048 <a id="DMG_WHITE" name="DMG_WHITE"></a>
   1049 <h2 class="memtitle"><span class="permalink"><a href="#DMG_WHITE">&#9670;&nbsp;</a></span>DMG_WHITE</h2>
   1050 
   1051 <div class="memitem">
   1052 <div class="memproto">
   1053       <table class="memname">
   1054         <tr>
   1055           <td class="memname">#define DMG_WHITE&#160;&#160;&#160;0x00</td>
   1056         </tr>
   1057       </table>
   1058 </div><div class="memdoc">
   1059 
   1060 </div>
   1061 </div>
   1062 <a id="DMG_PALETTE" name="DMG_PALETTE"></a>
   1063 <h2 class="memtitle"><span class="permalink"><a href="#DMG_PALETTE">&#9670;&nbsp;</a></span>DMG_PALETTE</h2>
   1064 
   1065 <div class="memitem">
   1066 <div class="memproto">
   1067       <table class="memname">
   1068         <tr>
   1069           <td class="memname">#define DMG_PALETTE</td>
   1070           <td>(</td>
   1071           <td class="paramtype">&#160;</td>
   1072           <td class="paramname">C0, </td>
   1073         </tr>
   1074         <tr>
   1075           <td class="paramkey"></td>
   1076           <td></td>
   1077           <td class="paramtype">&#160;</td>
   1078           <td class="paramname">C1, </td>
   1079         </tr>
   1080         <tr>
   1081           <td class="paramkey"></td>
   1082           <td></td>
   1083           <td class="paramtype">&#160;</td>
   1084           <td class="paramname">C2, </td>
   1085         </tr>
   1086         <tr>
   1087           <td class="paramkey"></td>
   1088           <td></td>
   1089           <td class="paramtype">&#160;</td>
   1090           <td class="paramname">C3&#160;</td>
   1091         </tr>
   1092         <tr>
   1093           <td></td>
   1094           <td>)</td>
   1095           <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>
   1096         </tr>
   1097       </table>
   1098 </div><div class="memdoc">
   1099 <p >Macro to create a DMG palette from 4 colors</p>
   1100 <dl class="params"><dt>Parameters</dt><dd>
   1101   <table class="params">
   1102     <tr><td class="paramname">C0</td><td>Color for Index 0 </td></tr>
   1103     <tr><td class="paramname">C1</td><td>Color for Index 1 </td></tr>
   1104     <tr><td class="paramname">C2</td><td>Color for Index 2 </td></tr>
   1105     <tr><td class="paramname">C3</td><td>Color for Index 3</td></tr>
   1106   </table>
   1107   </dd>
   1108 </dl>
   1109 <p>The resulting format is four greyscale colors packed into a single unsigned byte.</p>
   1110 <p >Example: </p><div class="fragment"><div class="line"><a class="code hl_variable" href="gb_2hardware_8h.html#BGP_REG">BGP_REG</a> = <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>
   1111 <div class="ttc" id="agb_2hardware_8h_html_BGP_REG"><div class="ttname"><a href="gb_2hardware_8h.html#BGP_REG">BGP_REG</a></div><div class="ttdeci">__REG BGP_REG</div><div class="ttdef"><b>Definition:</b> hardware.h:315</div></div>
   1112 <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>
   1113 <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>
   1114 <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>
   1115 <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>
   1116 <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>
   1117 </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>
   1118 <dd>
   1119 <a class="el" href="gb_8h.html#DMG_BLACK">DMG_BLACK</a>, <a class="el" href="gb_8h.html#DMG_DARK_GRAY">DMG_DARK_GRAY</a>, <a class="el" href="gb_8h.html#DMG_LITE_GRAY">DMG_LITE_GRAY</a>, <a class="el" href="gb_8h.html#DMG_WHITE">DMG_WHITE</a> </dd></dl>
   1120 
   1121 </div>
   1122 </div>
   1123 <a id="SCREENWIDTH" name="SCREENWIDTH"></a>
   1124 <h2 class="memtitle"><span class="permalink"><a href="#SCREENWIDTH">&#9670;&nbsp;</a></span>SCREENWIDTH</h2>
   1125 
   1126 <div class="memitem">
   1127 <div class="memproto">
   1128       <table class="memname">
   1129         <tr>
   1130           <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>
   1131         </tr>
   1132       </table>
   1133 </div><div class="memdoc">
   1134 <p >Width of the visible screen in pixels. </p>
   1135 
   1136 </div>
   1137 </div>
   1138 <a id="SCREENHEIGHT" name="SCREENHEIGHT"></a>
   1139 <h2 class="memtitle"><span class="permalink"><a href="#SCREENHEIGHT">&#9670;&nbsp;</a></span>SCREENHEIGHT</h2>
   1140 
   1141 <div class="memitem">
   1142 <div class="memproto">
   1143       <table class="memname">
   1144         <tr>
   1145           <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>
   1146         </tr>
   1147       </table>
   1148 </div><div class="memdoc">
   1149 <p >Height of the visible screen in pixels. </p>
   1150 
   1151 </div>
   1152 </div>
   1153 <a id="MINWNDPOSX" name="MINWNDPOSX"></a>
   1154 <h2 class="memtitle"><span class="permalink"><a href="#MINWNDPOSX">&#9670;&nbsp;</a></span>MINWNDPOSX</h2>
   1155 
   1156 <div class="memitem">
   1157 <div class="memproto">
   1158       <table class="memname">
   1159         <tr>
   1160           <td class="memname">#define MINWNDPOSX&#160;&#160;&#160;<a class="el" href="nes_2hardware_8h.html#DEVICE_WINDOW_PX_OFFSET_X">DEVICE_WINDOW_PX_OFFSET_X</a></td>
   1161         </tr>
   1162       </table>
   1163 </div><div class="memdoc">
   1164 <p >The Minimum X position of the Window Layer (Left edge of screen) </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#move_win">move_win()</a> </dd></dl>
   1165 
   1166 </div>
   1167 </div>
   1168 <a id="MINWNDPOSY" name="MINWNDPOSY"></a>
   1169 <h2 class="memtitle"><span class="permalink"><a href="#MINWNDPOSY">&#9670;&nbsp;</a></span>MINWNDPOSY</h2>
   1170 
   1171 <div class="memitem">
   1172 <div class="memproto">
   1173       <table class="memname">
   1174         <tr>
   1175           <td class="memname">#define MINWNDPOSY&#160;&#160;&#160;<a class="el" href="nes_2hardware_8h.html#DEVICE_WINDOW_PX_OFFSET_Y">DEVICE_WINDOW_PX_OFFSET_Y</a></td>
   1176         </tr>
   1177       </table>
   1178 </div><div class="memdoc">
   1179 <p >The Minimum Y position of the Window Layer (Top edge of screen) </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#move_win">move_win()</a> </dd></dl>
   1180 
   1181 </div>
   1182 </div>
   1183 <a id="MAXWNDPOSX" name="MAXWNDPOSX"></a>
   1184 <h2 class="memtitle"><span class="permalink"><a href="#MAXWNDPOSX">&#9670;&nbsp;</a></span>MAXWNDPOSX</h2>
   1185 
   1186 <div class="memitem">
   1187 <div class="memproto">
   1188       <table class="memname">
   1189         <tr>
   1190           <td class="memname">#define MAXWNDPOSX&#160;&#160;&#160;(<a class="el" href="nes_2hardware_8h.html#DEVICE_WINDOW_PX_OFFSET_X">DEVICE_WINDOW_PX_OFFSET_X</a> + <a class="el" href="sms_2hardware_8h.html#DEVICE_SCREEN_PX_WIDTH">DEVICE_SCREEN_PX_WIDTH</a> - 1)</td>
   1191         </tr>
   1192       </table>
   1193 </div><div class="memdoc">
   1194 <p >The Maximum X position of the Window Layer (Right edge of screen) </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#move_win">move_win()</a> </dd></dl>
   1195 
   1196 </div>
   1197 </div>
   1198 <a id="MAXWNDPOSY" name="MAXWNDPOSY"></a>
   1199 <h2 class="memtitle"><span class="permalink"><a href="#MAXWNDPOSY">&#9670;&nbsp;</a></span>MAXWNDPOSY</h2>
   1200 
   1201 <div class="memitem">
   1202 <div class="memproto">
   1203       <table class="memname">
   1204         <tr>
   1205           <td class="memname">#define MAXWNDPOSY&#160;&#160;&#160;(<a class="el" href="nes_2hardware_8h.html#DEVICE_WINDOW_PX_OFFSET_Y">DEVICE_WINDOW_PX_OFFSET_Y</a> + <a class="el" href="sms_2hardware_8h.html#DEVICE_SCREEN_PX_HEIGHT">DEVICE_SCREEN_PX_HEIGHT</a> - 1)</td>
   1206         </tr>
   1207       </table>
   1208 </div><div class="memdoc">
   1209 <p >The Maximum Y position of the Window Layer (Bottom edge of screen) </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#move_win">move_win()</a> </dd></dl>
   1210 
   1211 </div>
   1212 </div>
   1213 <a id="DMG_TYPE" name="DMG_TYPE"></a>
   1214 <h2 class="memtitle"><span class="permalink"><a href="#DMG_TYPE">&#9670;&nbsp;</a></span>DMG_TYPE</h2>
   1215 
   1216 <div class="memitem">
   1217 <div class="memproto">
   1218       <table class="memname">
   1219         <tr>
   1220           <td class="memname">#define DMG_TYPE&#160;&#160;&#160;0x01</td>
   1221         </tr>
   1222       </table>
   1223 </div><div class="memdoc">
   1224 <p >Hardware Model: Original GB or Super GB. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#_cpu">_cpu</a> </dd></dl>
   1225 
   1226 </div>
   1227 </div>
   1228 <a id="MGB_TYPE" name="MGB_TYPE"></a>
   1229 <h2 class="memtitle"><span class="permalink"><a href="#MGB_TYPE">&#9670;&nbsp;</a></span>MGB_TYPE</h2>
   1230 
   1231 <div class="memitem">
   1232 <div class="memproto">
   1233       <table class="memname">
   1234         <tr>
   1235           <td class="memname">#define MGB_TYPE&#160;&#160;&#160;0xFF</td>
   1236         </tr>
   1237       </table>
   1238 </div><div class="memdoc">
   1239 <p >Hardware Model: Pocket GB or Super GB 2. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#_cpu">_cpu</a> </dd></dl>
   1240 
   1241 </div>
   1242 </div>
   1243 <a id="CGB_TYPE" name="CGB_TYPE"></a>
   1244 <h2 class="memtitle"><span class="permalink"><a href="#CGB_TYPE">&#9670;&nbsp;</a></span>CGB_TYPE</h2>
   1245 
   1246 <div class="memitem">
   1247 <div class="memproto">
   1248       <table class="memname">
   1249         <tr>
   1250           <td class="memname">#define CGB_TYPE&#160;&#160;&#160;0x11</td>
   1251         </tr>
   1252       </table>
   1253 </div><div class="memdoc">
   1254 <p >Hardware Model: Color GB. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#_cpu">_cpu</a> </dd></dl>
   1255 
   1256 </div>
   1257 </div>
   1258 <a id="GBA_NOT_DETECTED" name="GBA_NOT_DETECTED"></a>
   1259 <h2 class="memtitle"><span class="permalink"><a href="#GBA_NOT_DETECTED">&#9670;&nbsp;</a></span>GBA_NOT_DETECTED</h2>
   1260 
   1261 <div class="memitem">
   1262 <div class="memproto">
   1263       <table class="memname">
   1264         <tr>
   1265           <td class="memname">#define GBA_NOT_DETECTED&#160;&#160;&#160;0x00</td>
   1266         </tr>
   1267       </table>
   1268 </div><div class="memdoc">
   1269 <p >Hardware Model: DMG, CGB or MGB. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#_cpu">_cpu</a>, <a class="el" href="gb_8h.html#_is_GBA">_is_GBA</a> </dd></dl>
   1270 
   1271 </div>
   1272 </div>
   1273 <a id="GBA_DETECTED" name="GBA_DETECTED"></a>
   1274 <h2 class="memtitle"><span class="permalink"><a href="#GBA_DETECTED">&#9670;&nbsp;</a></span>GBA_DETECTED</h2>
   1275 
   1276 <div class="memitem">
   1277 <div class="memproto">
   1278       <table class="memname">
   1279         <tr>
   1280           <td class="memname">#define GBA_DETECTED&#160;&#160;&#160;0x01</td>
   1281         </tr>
   1282       </table>
   1283 </div><div class="memdoc">
   1284 <p >Hardware Model: GBA. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#_cpu">_cpu</a>, <a class="el" href="gb_8h.html#_is_GBA">_is_GBA</a> </dd></dl>
   1285 
   1286 </div>
   1287 </div>
   1288 <a id="DEVICE_SUPPORTS_COLOR" name="DEVICE_SUPPORTS_COLOR"></a>
   1289 <h2 class="memtitle"><span class="permalink"><a href="#DEVICE_SUPPORTS_COLOR">&#9670;&nbsp;</a></span>DEVICE_SUPPORTS_COLOR</h2>
   1290 
   1291 <div class="memitem">
   1292 <div class="memproto">
   1293       <table class="memname">
   1294         <tr>
   1295           <td class="memname">#define DEVICE_SUPPORTS_COLOR&#160;&#160;&#160;(<a class="el" href="gb_8h.html#_cpu">_cpu</a> == <a class="el" href="gb_8h.html#CGB_TYPE">CGB_TYPE</a>)</td>
   1296         </tr>
   1297       </table>
   1298 </div><div class="memdoc">
   1299 <p >Macro returns TRUE if device supports color </p>
   1300 
   1301 </div>
   1302 </div>
   1303 <a id="VBL_DONE" name="VBL_DONE"></a>
   1304 <h2 class="memtitle"><span class="permalink"><a href="#VBL_DONE">&#9670;&nbsp;</a></span>VBL_DONE</h2>
   1305 
   1306 <div class="memitem">
   1307 <div class="memproto">
   1308       <table class="memname">
   1309         <tr>
   1310           <td class="memname">#define VBL_DONE&#160;&#160;&#160;<a class="el" href="sms_8h.html#_vbl_done">_vbl_done</a></td>
   1311         </tr>
   1312       </table>
   1313 </div><div class="memdoc">
   1314 
   1315 </div>
   1316 </div>
   1317 <a id="IO_IDLE" name="IO_IDLE"></a>
   1318 <h2 class="memtitle"><span class="permalink"><a href="#IO_IDLE">&#9670;&nbsp;</a></span>IO_IDLE</h2>
   1319 
   1320 <div class="memitem">
   1321 <div class="memproto">
   1322       <table class="memname">
   1323         <tr>
   1324           <td class="memname">#define IO_IDLE&#160;&#160;&#160;0x00U</td>
   1325         </tr>
   1326       </table>
   1327 </div><div class="memdoc">
   1328 <p >Serial Link IO is completed </p>
   1329 
   1330 </div>
   1331 </div>
   1332 <a id="IO_SENDING" name="IO_SENDING"></a>
   1333 <h2 class="memtitle"><span class="permalink"><a href="#IO_SENDING">&#9670;&nbsp;</a></span>IO_SENDING</h2>
   1334 
   1335 <div class="memitem">
   1336 <div class="memproto">
   1337       <table class="memname">
   1338         <tr>
   1339           <td class="memname">#define IO_SENDING&#160;&#160;&#160;0x01U</td>
   1340         </tr>
   1341       </table>
   1342 </div><div class="memdoc">
   1343 <p >Serial Link Sending data </p>
   1344 
   1345 </div>
   1346 </div>
   1347 <a id="IO_RECEIVING" name="IO_RECEIVING"></a>
   1348 <h2 class="memtitle"><span class="permalink"><a href="#IO_RECEIVING">&#9670;&nbsp;</a></span>IO_RECEIVING</h2>
   1349 
   1350 <div class="memitem">
   1351 <div class="memproto">
   1352       <table class="memname">
   1353         <tr>
   1354           <td class="memname">#define IO_RECEIVING&#160;&#160;&#160;0x02U</td>
   1355         </tr>
   1356       </table>
   1357 </div><div class="memdoc">
   1358 <p >Serial Link Receiving data </p>
   1359 
   1360 </div>
   1361 </div>
   1362 <a id="IO_ERROR" name="IO_ERROR"></a>
   1363 <h2 class="memtitle"><span class="permalink"><a href="#IO_ERROR">&#9670;&nbsp;</a></span>IO_ERROR</h2>
   1364 
   1365 <div class="memitem">
   1366 <div class="memproto">
   1367       <table class="memname">
   1368         <tr>
   1369           <td class="memname">#define IO_ERROR&#160;&#160;&#160;0x04U</td>
   1370         </tr>
   1371       </table>
   1372 </div><div class="memdoc">
   1373 <p >Serial Link Error </p>
   1374 
   1375 </div>
   1376 </div>
   1377 <a id="CURRENT_BANK" name="CURRENT_BANK"></a>
   1378 <h2 class="memtitle"><span class="permalink"><a href="#CURRENT_BANK">&#9670;&nbsp;</a></span>CURRENT_BANK</h2>
   1379 
   1380 <div class="memitem">
   1381 <div class="memproto">
   1382       <table class="memname">
   1383         <tr>
   1384           <td class="memname">#define CURRENT_BANK&#160;&#160;&#160;<a class="el" href="nes_8h.html#_current_bank">_current_bank</a></td>
   1385         </tr>
   1386       </table>
   1387 </div><div class="memdoc">
   1388 
   1389 </div>
   1390 </div>
   1391 <a id="BANK" name="BANK"></a>
   1392 <h2 class="memtitle"><span class="permalink"><a href="#BANK">&#9670;&nbsp;</a></span>BANK</h2>
   1393 
   1394 <div class="memitem">
   1395 <div class="memproto">
   1396       <table class="memname">
   1397         <tr>
   1398           <td class="memname">#define BANK</td>
   1399           <td>(</td>
   1400           <td class="paramtype">&#160;</td>
   1401           <td class="paramname">VARNAME</td><td>)</td>
   1402           <td>&#160;&#160;&#160;( (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>) &amp; __bank_ ## VARNAME )</td>
   1403         </tr>
   1404       </table>
   1405 </div><div class="memdoc">
   1406 <p >Obtains the <b>bank number</b> of VARNAME</p>
   1407 <dl class="params"><dt>Parameters</dt><dd>
   1408   <table class="params">
   1409     <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>
   1410   </table>
   1411   </dd>
   1412 </dl>
   1413 <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>
   1414 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#BANKREF_EXTERN">BANKREF_EXTERN()</a>, <a class="el" href="gb_8h.html#BANKREF">BANKREF()</a> </dd></dl>
   1415 
   1416 </div>
   1417 </div>
   1418 <a id="BANKREF" name="BANKREF"></a>
   1419 <h2 class="memtitle"><span class="permalink"><a href="#BANKREF">&#9670;&nbsp;</a></span>BANKREF</h2>
   1420 
   1421 <div class="memitem">
   1422 <div class="memproto">
   1423       <table class="memname">
   1424         <tr>
   1425           <td class="memname">#define BANKREF</td>
   1426           <td>(</td>
   1427           <td class="paramtype">&#160;</td>
   1428           <td class="paramname">VARNAME</td><td>)</td>
   1429           <td></td>
   1430         </tr>
   1431       </table>
   1432 </div><div class="memdoc">
   1433 <b>Value:</b><div class="fragment"><div class="line"><span class="keywordtype">void</span> __func_ ## VARNAME(<span class="keywordtype">void</span>) __banked __naked { \</div>
   1434 <div class="line">__asm \</div>
   1435 <div class="line">    .local b___func_ ## VARNAME \</div>
   1436 <div class="line">    ___bank_ ## VARNAME = b___func_ ## VARNAME \</div>
   1437 <div class="line">    .globl ___bank_ ## VARNAME \</div>
   1438 <div class="line">__endasm; \</div>
   1439 <div class="line">}</div>
   1440 </div><!-- fragment --><p >Creates a reference for retrieving the bank number of a variable or function</p>
   1441 <dl class="params"><dt>Parameters</dt><dd>
   1442   <table class="params">
   1443     <tr><td class="paramname">VARNAME</td><td>Variable name to use, which may be an existing identifier</td></tr>
   1444   </table>
   1445   </dd>
   1446 </dl>
   1447 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#BANK">BANK()</a> for obtaining the bank number of the included data.</dd></dl>
   1448 <p>More than one <code><a class="el" href="gb_8h.html#BANKREF">BANKREF()</a></code> may be created per file, but each call should always use a unique VARNAME.</p>
   1449 <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>
   1450 
   1451 </div>
   1452 </div>
   1453 <a id="BANKREF_EXTERN" name="BANKREF_EXTERN"></a>
   1454 <h2 class="memtitle"><span class="permalink"><a href="#BANKREF_EXTERN">&#9670;&nbsp;</a></span>BANKREF_EXTERN</h2>
   1455 
   1456 <div class="memitem">
   1457 <div class="memproto">
   1458       <table class="memname">
   1459         <tr>
   1460           <td class="memname">#define BANKREF_EXTERN</td>
   1461           <td>(</td>
   1462           <td class="paramtype">&#160;</td>
   1463           <td class="paramname">VARNAME</td><td>)</td>
   1464           <td>&#160;&#160;&#160;extern const void __bank_ ## VARNAME;</td>
   1465         </tr>
   1466       </table>
   1467 </div><div class="memdoc">
   1468 <p >Creates extern references for accessing a <a class="el" href="gb_8h.html#BANKREF">BANKREF()</a> generated variable.</p>
   1469 <dl class="params"><dt>Parameters</dt><dd>
   1470   <table class="params">
   1471     <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>
   1472   </table>
   1473   </dd>
   1474 </dl>
   1475 <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>
   1476 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#BANKREF">BANKREF()</a>, <a class="el" href="gb_8h.html#BANK">BANK()</a> </dd></dl>
   1477 
   1478 </div>
   1479 </div>
   1480 <a id="SWITCH_ROM" name="SWITCH_ROM"></a>
   1481 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_ROM">&#9670;&nbsp;</a></span>SWITCH_ROM</h2>
   1482 
   1483 <div class="memitem">
   1484 <div class="memproto">
   1485       <table class="memname">
   1486         <tr>
   1487           <td class="memname">#define SWITCH_ROM</td>
   1488           <td>(</td>
   1489           <td class="paramtype">&#160;</td>
   1490           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a></td><td>)</td>
   1491           <td>&#160;&#160;&#160;(<a class="el" href="nes_8h.html#_current_bank">_current_bank</a> = (<a class="el" href="sms_8h.html#b">b</a>), <a class="el" href="gb_2hardware_8h.html#rROMB0">rROMB0</a> = (<a class="el" href="sms_8h.html#b">b</a>))</td>
   1492         </tr>
   1493       </table>
   1494 </div><div class="memdoc">
   1495 <p >Makes default platform MBC switch the active ROM bank </p><dl class="params"><dt>Parameters</dt><dd>
   1496   <table class="params">
   1497     <tr><td class="paramname">b</td><td>ROM bank to switch to (max 255)</td></tr>
   1498   </table>
   1499   </dd>
   1500 </dl>
   1501 <ul>
   1502 <li>When used with MBC1 the max bank is Bank 31 (512K). </li>
   1503 <li>When used with MBC5 the max bank is Bank 255 (4MB). </li>
   1504 <li>To use the full 8MB size of MBC5 see <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5_8M">SWITCH_ROM_MBC5_8M()</a>.</li>
   1505 </ul>
   1506 <ul>
   1507 <li>For MBC1 some banks in it's range are unavailable (typically 0x20, 0x40, 0x60).</li>
   1508 </ul>
   1509 <dl class="section note"><dt>Note</dt><dd>Using <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5_8M">SWITCH_ROM_MBC5_8M()</a> should not be mixed with using <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5">SWITCH_ROM_MBC5()</a> and <a class="el" href="gb_8h.html#SWITCH_ROM">SWITCH_ROM()</a>.</dd></dl>
   1510 <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_MEGADUCK">SWITCH_ROM_MEGADUCK</a> </dd></dl>
   1511 
   1512 </div>
   1513 </div>
   1514 <a id="SWITCH_RAM" name="SWITCH_RAM"></a>
   1515 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_RAM">&#9670;&nbsp;</a></span>SWITCH_RAM</h2>
   1516 
   1517 <div class="memitem">
   1518 <div class="memproto">
   1519       <table class="memname">
   1520         <tr>
   1521           <td class="memname">#define SWITCH_RAM</td>
   1522           <td>(</td>
   1523           <td class="paramtype">&#160;</td>
   1524           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a></td><td>)</td>
   1525           <td>&#160;&#160;&#160;(<a class="el" href="gb_2hardware_8h.html#rRAMB">rRAMB</a> = (<a class="el" href="sms_8h.html#b">b</a>))</td>
   1526         </tr>
   1527       </table>
   1528 </div><div class="memdoc">
   1529 <p >Switches SRAM bank on MBC1 and other compatible MBCs </p><dl class="params"><dt>Parameters</dt><dd>
   1530   <table class="params">
   1531     <tr><td class="paramname">b</td><td>SRAM bank to switch to</td></tr>
   1532   </table>
   1533   </dd>
   1534 </dl>
   1535 <p>Before switching SRAM banks enable it using <a class="el" href="sms_8h.html#ENABLE_RAM">ENABLE_RAM</a></p>
   1536 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SWITCH_RAM_MBC1">SWITCH_RAM_MBC1</a>, <a class="el" href="gb_8h.html#SWITCH_RAM_MBC5">SWITCH_RAM_MBC5</a> </dd></dl>
   1537 
   1538 </div>
   1539 </div>
   1540 <a id="ENABLE_RAM" name="ENABLE_RAM"></a>
   1541 <h2 class="memtitle"><span class="permalink"><a href="#ENABLE_RAM">&#9670;&nbsp;</a></span>ENABLE_RAM</h2>
   1542 
   1543 <div class="memitem">
   1544 <div class="memproto">
   1545       <table class="memname">
   1546         <tr>
   1547           <td class="memname">#define ENABLE_RAM&#160;&#160;&#160;(<a class="el" href="gb_2hardware_8h.html#rRAMG">rRAMG</a> = 0x0A)</td>
   1548         </tr>
   1549       </table>
   1550 </div><div class="memdoc">
   1551 <p >Enables SRAM on MBC1 and other compatible MBCs </p>
   1552 
   1553 </div>
   1554 </div>
   1555 <a id="DISABLE_RAM" name="DISABLE_RAM"></a>
   1556 <h2 class="memtitle"><span class="permalink"><a href="#DISABLE_RAM">&#9670;&nbsp;</a></span>DISABLE_RAM</h2>
   1557 
   1558 <div class="memitem">
   1559 <div class="memproto">
   1560       <table class="memname">
   1561         <tr>
   1562           <td class="memname">#define DISABLE_RAM&#160;&#160;&#160;(<a class="el" href="gb_2hardware_8h.html#rRAMG">rRAMG</a> = 0x00)</td>
   1563         </tr>
   1564       </table>
   1565 </div><div class="memdoc">
   1566 <p >Disables SRAM on MBC1 and other compatible MBCs </p>
   1567 
   1568 </div>
   1569 </div>
   1570 <a id="SWITCH_ROM_MEGADUCK" name="SWITCH_ROM_MEGADUCK"></a>
   1571 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_ROM_MEGADUCK">&#9670;&nbsp;</a></span>SWITCH_ROM_MEGADUCK</h2>
   1572 
   1573 <div class="memitem">
   1574 <div class="memproto">
   1575       <table class="memname">
   1576         <tr>
   1577           <td class="memname">#define SWITCH_ROM_MEGADUCK</td>
   1578           <td>(</td>
   1579           <td class="paramtype">&#160;</td>
   1580           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a></td><td>)</td>
   1581           <td>&#160;&#160;&#160;<a class="el" href="msx_8h.html#SWITCH_ROM">SWITCH_ROM</a>(<a class="el" href="sms_8h.html#b">b</a>)</td>
   1582         </tr>
   1583       </table>
   1584 </div><div class="memdoc">
   1585 <p >Makes MEGADUCK MBC switch the active ROM bank </p><dl class="params"><dt>Parameters</dt><dd>
   1586   <table class="params">
   1587     <tr><td class="paramname">b</td><td>ROM bank to switch to (max <code>3</code> for 64K, or <code>7</code> for 128K) </td></tr>
   1588   </table>
   1589   </dd>
   1590 </dl>
   1591 
   1592 </div>
   1593 </div>
   1594 <a id="SWITCH_ROM_MBC1" name="SWITCH_ROM_MBC1"></a>
   1595 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_ROM_MBC1">&#9670;&nbsp;</a></span>SWITCH_ROM_MBC1</h2>
   1596 
   1597 <div class="memitem">
   1598 <div class="memproto">
   1599       <table class="memname">
   1600         <tr>
   1601           <td class="memname">#define SWITCH_ROM_MBC1</td>
   1602           <td>(</td>
   1603           <td class="paramtype">&#160;</td>
   1604           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a></td><td>)</td>
   1605           <td>&#160;&#160;&#160;<a class="el" href="msx_8h.html#SWITCH_ROM">SWITCH_ROM</a>(<a class="el" href="sms_8h.html#b">b</a>)</td>
   1606         </tr>
   1607       </table>
   1608 </div><div class="memdoc">
   1609 <p >Makes MBC1 and other compatible MBCs switch the active ROM bank </p><dl class="params"><dt>Parameters</dt><dd>
   1610   <table class="params">
   1611     <tr><td class="paramname">b</td><td>ROM bank to switch to</td></tr>
   1612   </table>
   1613   </dd>
   1614 </dl>
   1615 <p>For MBC1 some banks in it's range are unavailable (typically 0x20, 0x40, 0x60).</p>
   1616 <p >See pandocs for more details <a href="https://gbdev.io/pandocs/MBC1">https://gbdev.io/pandocs/MBC1</a> </p>
   1617 
   1618 </div>
   1619 </div>
   1620 <a id="SWITCH_RAM_MBC1" name="SWITCH_RAM_MBC1"></a>
   1621 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_RAM_MBC1">&#9670;&nbsp;</a></span>SWITCH_RAM_MBC1</h2>
   1622 
   1623 <div class="memitem">
   1624 <div class="memproto">
   1625       <table class="memname">
   1626         <tr>
   1627           <td class="memname">#define SWITCH_RAM_MBC1</td>
   1628           <td>(</td>
   1629           <td class="paramtype">&#160;</td>
   1630           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a></td><td>)</td>
   1631           <td>&#160;&#160;&#160;<a class="el" href="sms_8h.html#SWITCH_RAM">SWITCH_RAM</a>(<a class="el" href="sms_8h.html#b">b</a>)</td>
   1632         </tr>
   1633       </table>
   1634 </div><div class="memdoc">
   1635 <p >Switches SRAM bank on MBC1 and other compatible MBCs </p><dl class="params"><dt>Parameters</dt><dd>
   1636   <table class="params">
   1637     <tr><td class="paramname">b</td><td>SRAM bank to switch to</td></tr>
   1638   </table>
   1639   </dd>
   1640 </dl>
   1641 <p>Before switching SRAM banks enable it using <a class="el" href="sms_8h.html#ENABLE_RAM">ENABLE_RAM</a></p>
   1642 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SWITCH_RAM">SWITCH_RAM</a>, <a class="el" href="gb_8h.html#SWITCH_RAM_MBC5">SWITCH_RAM_MBC5</a> </dd></dl>
   1643 
   1644 </div>
   1645 </div>
   1646 <a id="ENABLE_RAM_MBC1" name="ENABLE_RAM_MBC1"></a>
   1647 <h2 class="memtitle"><span class="permalink"><a href="#ENABLE_RAM_MBC1">&#9670;&nbsp;</a></span>ENABLE_RAM_MBC1</h2>
   1648 
   1649 <div class="memitem">
   1650 <div class="memproto">
   1651       <table class="memname">
   1652         <tr>
   1653           <td class="memname">#define ENABLE_RAM_MBC1&#160;&#160;&#160;<a class="el" href="sms_8h.html#ENABLE_RAM">ENABLE_RAM</a></td>
   1654         </tr>
   1655       </table>
   1656 </div><div class="memdoc">
   1657 <p >Enables SRAM on MBC1 </p>
   1658 
   1659 </div>
   1660 </div>
   1661 <a id="DISABLE_RAM_MBC1" name="DISABLE_RAM_MBC1"></a>
   1662 <h2 class="memtitle"><span class="permalink"><a href="#DISABLE_RAM_MBC1">&#9670;&nbsp;</a></span>DISABLE_RAM_MBC1</h2>
   1663 
   1664 <div class="memitem">
   1665 <div class="memproto">
   1666       <table class="memname">
   1667         <tr>
   1668           <td class="memname">#define DISABLE_RAM_MBC1&#160;&#160;&#160;<a class="el" href="sms_8h.html#DISABLE_RAM">DISABLE_RAM</a></td>
   1669         </tr>
   1670       </table>
   1671 </div><div class="memdoc">
   1672 <p >Disables SRAM on MBC1 </p>
   1673 
   1674 </div>
   1675 </div>
   1676 <a id="SWITCH_16_8_MODE_MBC1" name="SWITCH_16_8_MODE_MBC1"></a>
   1677 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_16_8_MODE_MBC1">&#9670;&nbsp;</a></span>SWITCH_16_8_MODE_MBC1</h2>
   1678 
   1679 <div class="memitem">
   1680 <div class="memproto">
   1681       <table class="memname">
   1682         <tr>
   1683           <td class="memname">#define SWITCH_16_8_MODE_MBC1&#160;&#160;&#160;(*(volatile <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *)0x6000 = 0x00)</td>
   1684         </tr>
   1685       </table>
   1686 </div><div class="memdoc">
   1687 
   1688 </div>
   1689 </div>
   1690 <a id="SWITCH_4_32_MODE_MBC1" name="SWITCH_4_32_MODE_MBC1"></a>
   1691 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_4_32_MODE_MBC1">&#9670;&nbsp;</a></span>SWITCH_4_32_MODE_MBC1</h2>
   1692 
   1693 <div class="memitem">
   1694 <div class="memproto">
   1695       <table class="memname">
   1696         <tr>
   1697           <td class="memname">#define SWITCH_4_32_MODE_MBC1&#160;&#160;&#160;(*(volatile <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *)0x6000 = 0x01)</td>
   1698         </tr>
   1699       </table>
   1700 </div><div class="memdoc">
   1701 
   1702 </div>
   1703 </div>
   1704 <a id="SWITCH_ROM_MBC5" name="SWITCH_ROM_MBC5"></a>
   1705 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_ROM_MBC5">&#9670;&nbsp;</a></span>SWITCH_ROM_MBC5</h2>
   1706 
   1707 <div class="memitem">
   1708 <div class="memproto">
   1709       <table class="memname">
   1710         <tr>
   1711           <td class="memname">#define SWITCH_ROM_MBC5</td>
   1712           <td>(</td>
   1713           <td class="paramtype">&#160;</td>
   1714           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a></td><td>)</td>
   1715           <td>&#160;&#160;&#160;(<a class="el" href="nes_8h.html#_current_bank">_current_bank</a> = (<a class="el" href="sms_8h.html#b">b</a>), <a class="el" href="gb_2hardware_8h.html#rROMB1">rROMB1</a> = 0, <a class="el" href="gb_2hardware_8h.html#rROMB0">rROMB0</a> = (<a class="el" href="sms_8h.html#b">b</a>))</td>
   1716         </tr>
   1717       </table>
   1718 </div><div class="memdoc">
   1719 <p >Makes MBC5 switch to the active ROM bank </p><dl class="params"><dt>Parameters</dt><dd>
   1720   <table class="params">
   1721     <tr><td class="paramname">b</td><td>ROM bank to switch to (max 255)</td></tr>
   1722   </table>
   1723   </dd>
   1724 </dl>
   1725 <p>Supports up to ROM bank 255 (4 MB).</p>
   1726 <p ><a class="el" href="gb_8h.html#SWITCH_ROM_MBC5_8M">SWITCH_ROM_MBC5_8M</a> may be used if the full 8MB size is needed.</p>
   1727 <dl class="section note"><dt>Note</dt><dd>Using <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5_8M">SWITCH_ROM_MBC5_8M()</a> should not be mixed with using <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5">SWITCH_ROM_MBC5()</a> and <a class="el" href="gb_8h.html#SWITCH_ROM">SWITCH_ROM()</a>.</dd></dl>
   1728 <p>Note the order used here. Writing the other way around on a MBC1 always selects bank 1 </p>
   1729 
   1730 </div>
   1731 </div>
   1732 <a id="SWITCH_ROM_MBC5_8M" name="SWITCH_ROM_MBC5_8M"></a>
   1733 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_ROM_MBC5_8M">&#9670;&nbsp;</a></span>SWITCH_ROM_MBC5_8M</h2>
   1734 
   1735 <div class="memitem">
   1736 <div class="memproto">
   1737       <table class="memname">
   1738         <tr>
   1739           <td class="memname">#define SWITCH_ROM_MBC5_8M</td>
   1740           <td>(</td>
   1741           <td class="paramtype">&#160;</td>
   1742           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a></td><td>)</td>
   1743           <td>&#160;&#160;&#160;(<a class="el" href="gb_2hardware_8h.html#rROMB1">rROMB1</a> = ((<a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>)(<a class="el" href="sms_8h.html#b">b</a>) &gt;&gt; 8), <a class="el" href="gb_2hardware_8h.html#rROMB0">rROMB0</a> = (<a class="el" href="sms_8h.html#b">b</a>))</td>
   1744         </tr>
   1745       </table>
   1746 </div><div class="memdoc">
   1747 <p >Makes MBC5 to switch the active ROM bank using the full 8MB size. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#CURRENT_BANK">CURRENT_BANK</a> </dd></dl>
   1748 <dl class="params"><dt>Parameters</dt><dd>
   1749   <table class="params">
   1750     <tr><td class="paramname">b</td><td>ROM bank to switch to</td></tr>
   1751   </table>
   1752   </dd>
   1753 </dl>
   1754 <p>This is an alternate to <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5">SWITCH_ROM_MBC5</a> which is limited to 4MB.</p>
   1755 <p >Note: </p><ul>
   1756 <li>Banked SDCC calls are not supported if you use this macro. </li>
   1757 <li>The active bank number is not tracked by <a class="el" href="sms_8h.html#CURRENT_BANK">CURRENT_BANK</a> if you use this macro. </li>
   1758 <li>Using <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5_8M">SWITCH_ROM_MBC5_8M()</a> should not be mixed with using <a class="el" href="gb_8h.html#SWITCH_ROM_MBC5">SWITCH_ROM_MBC5()</a> and <a class="el" href="gb_8h.html#SWITCH_ROM">SWITCH_ROM()</a>.</li>
   1759 </ul>
   1760 <p>Note the order used here. Writing the other way around on a MBC1 always selects bank 1 </p>
   1761 
   1762 </div>
   1763 </div>
   1764 <a id="SWITCH_RAM_MBC5" name="SWITCH_RAM_MBC5"></a>
   1765 <h2 class="memtitle"><span class="permalink"><a href="#SWITCH_RAM_MBC5">&#9670;&nbsp;</a></span>SWITCH_RAM_MBC5</h2>
   1766 
   1767 <div class="memitem">
   1768 <div class="memproto">
   1769       <table class="memname">
   1770         <tr>
   1771           <td class="memname">#define SWITCH_RAM_MBC5</td>
   1772           <td>(</td>
   1773           <td class="paramtype">&#160;</td>
   1774           <td class="paramname"><a class="el" href="sms_8h.html#b">b</a></td><td>)</td>
   1775           <td>&#160;&#160;&#160;<a class="el" href="sms_8h.html#SWITCH_RAM">SWITCH_RAM</a>(<a class="el" href="sms_8h.html#b">b</a>)</td>
   1776         </tr>
   1777       </table>
   1778 </div><div class="memdoc">
   1779 <p >Switches SRAM bank on MBC5 </p><dl class="params"><dt>Parameters</dt><dd>
   1780   <table class="params">
   1781     <tr><td class="paramname">b</td><td>SRAM bank to switch to</td></tr>
   1782   </table>
   1783   </dd>
   1784 </dl>
   1785 <p>Before switching SRAM banks enable it using <a class="el" href="sms_8h.html#ENABLE_RAM">ENABLE_RAM</a> </p>
   1786 
   1787 </div>
   1788 </div>
   1789 <a id="ENABLE_RAM_MBC5" name="ENABLE_RAM_MBC5"></a>
   1790 <h2 class="memtitle"><span class="permalink"><a href="#ENABLE_RAM_MBC5">&#9670;&nbsp;</a></span>ENABLE_RAM_MBC5</h2>
   1791 
   1792 <div class="memitem">
   1793 <div class="memproto">
   1794       <table class="memname">
   1795         <tr>
   1796           <td class="memname">#define ENABLE_RAM_MBC5&#160;&#160;&#160;<a class="el" href="sms_8h.html#ENABLE_RAM">ENABLE_RAM</a></td>
   1797         </tr>
   1798       </table>
   1799 </div><div class="memdoc">
   1800 <p >Enables SRAM on MBC5 </p>
   1801 
   1802 </div>
   1803 </div>
   1804 <a id="DISABLE_RAM_MBC5" name="DISABLE_RAM_MBC5"></a>
   1805 <h2 class="memtitle"><span class="permalink"><a href="#DISABLE_RAM_MBC5">&#9670;&nbsp;</a></span>DISABLE_RAM_MBC5</h2>
   1806 
   1807 <div class="memitem">
   1808 <div class="memproto">
   1809       <table class="memname">
   1810         <tr>
   1811           <td class="memname">#define DISABLE_RAM_MBC5&#160;&#160;&#160;<a class="el" href="sms_8h.html#DISABLE_RAM">DISABLE_RAM</a></td>
   1812         </tr>
   1813       </table>
   1814 </div><div class="memdoc">
   1815 <p >Disables SRAM on MBC5 </p>
   1816 
   1817 </div>
   1818 </div>
   1819 <a id="DISPLAY_ON" name="DISPLAY_ON"></a>
   1820 <h2 class="memtitle"><span class="permalink"><a href="#DISPLAY_ON">&#9670;&nbsp;</a></span>DISPLAY_ON</h2>
   1821 
   1822 <div class="memitem">
   1823 <div class="memproto">
   1824       <table class="memname">
   1825         <tr>
   1826           <td class="memname">#define DISPLAY_ON&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>|=<a class="el" href="gb_2hardware_8h.html#LCDCF_ON">LCDCF_ON</a></td>
   1827         </tr>
   1828       </table>
   1829 </div><div class="memdoc">
   1830 <p >Turns the display back on. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#display_off">display_off</a>, <a class="el" href="gb_8h.html#DISPLAY_OFF">DISPLAY_OFF</a> </dd></dl>
   1831 
   1832 </div>
   1833 </div>
   1834 <a id="DISPLAY_OFF" name="DISPLAY_OFF"></a>
   1835 <h2 class="memtitle"><span class="permalink"><a href="#DISPLAY_OFF">&#9670;&nbsp;</a></span>DISPLAY_OFF</h2>
   1836 
   1837 <div class="memitem">
   1838 <div class="memproto">
   1839       <table class="memname">
   1840         <tr>
   1841           <td class="memname">#define DISPLAY_OFF&#160;&#160;&#160;  <a class="el" href="sms_8h.html#display_off">display_off</a>();</td>
   1842         </tr>
   1843       </table>
   1844 </div><div class="memdoc">
   1845 <p >Turns the display off</p>
   1846 <p >Waits until the VBL before turning the display off. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#display_off">display_off</a>, <a class="el" href="gb_8h.html#DISPLAY_ON">DISPLAY_ON</a> </dd></dl>
   1847 
   1848 </div>
   1849 </div>
   1850 <a id="HIDE_LEFT_COLUMN" name="HIDE_LEFT_COLUMN"></a>
   1851 <h2 class="memtitle"><span class="permalink"><a href="#HIDE_LEFT_COLUMN">&#9670;&nbsp;</a></span>HIDE_LEFT_COLUMN</h2>
   1852 
   1853 <div class="memitem">
   1854 <div class="memproto">
   1855       <table class="memname">
   1856         <tr>
   1857           <td class="memname">#define HIDE_LEFT_COLUMN</td>
   1858         </tr>
   1859       </table>
   1860 </div><div class="memdoc">
   1861 <p >Does nothing for GB </p>
   1862 
   1863 </div>
   1864 </div>
   1865 <a id="SHOW_LEFT_COLUMN" name="SHOW_LEFT_COLUMN"></a>
   1866 <h2 class="memtitle"><span class="permalink"><a href="#SHOW_LEFT_COLUMN">&#9670;&nbsp;</a></span>SHOW_LEFT_COLUMN</h2>
   1867 
   1868 <div class="memitem">
   1869 <div class="memproto">
   1870       <table class="memname">
   1871         <tr>
   1872           <td class="memname">#define SHOW_LEFT_COLUMN</td>
   1873         </tr>
   1874       </table>
   1875 </div><div class="memdoc">
   1876 <p >Does nothing for GB </p>
   1877 
   1878 </div>
   1879 </div>
   1880 <a id="SET_BORDER_COLOR" name="SET_BORDER_COLOR"></a>
   1881 <h2 class="memtitle"><span class="permalink"><a href="#SET_BORDER_COLOR">&#9670;&nbsp;</a></span>SET_BORDER_COLOR</h2>
   1882 
   1883 <div class="memitem">
   1884 <div class="memproto">
   1885       <table class="memname">
   1886         <tr>
   1887           <td class="memname">#define SET_BORDER_COLOR</td>
   1888           <td>(</td>
   1889           <td class="paramtype">&#160;</td>
   1890           <td class="paramname">C</td><td>)</td>
   1891           <td></td>
   1892         </tr>
   1893       </table>
   1894 </div><div class="memdoc">
   1895 <p >Does nothing for GB </p>
   1896 
   1897 </div>
   1898 </div>
   1899 <a id="SHOW_BKG" name="SHOW_BKG"></a>
   1900 <h2 class="memtitle"><span class="permalink"><a href="#SHOW_BKG">&#9670;&nbsp;</a></span>SHOW_BKG</h2>
   1901 
   1902 <div class="memitem">
   1903 <div class="memproto">
   1904       <table class="memname">
   1905         <tr>
   1906           <td class="memname">#define SHOW_BKG&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>|=<a class="el" href="gb_2hardware_8h.html#LCDCF_BGON">LCDCF_BGON</a></td>
   1907         </tr>
   1908       </table>
   1909 </div><div class="memdoc">
   1910 <p >Turns on the background layer. Sets bit 0 of the LCDC register to 1.</p>
   1911 <p >Doesn't work in CGB mode - the bit is reused to control sprite priority over background and window layers instead. </p><ul>
   1912 <li>If 1 (SHOW_BKG), everything works as usual. </li>
   1913 <li>If 0 (HIDE_BKG), all sprites are always drawn over background and window, ignoring any other priority settings. </li>
   1914 </ul>
   1915 
   1916 </div>
   1917 </div>
   1918 <a id="HIDE_BKG" name="HIDE_BKG"></a>
   1919 <h2 class="memtitle"><span class="permalink"><a href="#HIDE_BKG">&#9670;&nbsp;</a></span>HIDE_BKG</h2>
   1920 
   1921 <div class="memitem">
   1922 <div class="memproto">
   1923       <table class="memname">
   1924         <tr>
   1925           <td class="memname">#define HIDE_BKG&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>&amp;=~<a class="el" href="gb_2hardware_8h.html#LCDCF_BGON">LCDCF_BGON</a></td>
   1926         </tr>
   1927       </table>
   1928 </div><div class="memdoc">
   1929 <p >Turns off the background layer. Sets bit 0 of the LCDC register to 0.</p>
   1930 <p >Doesn't work in CGB mode - the bit is reused to control sprite priority over background and window layers instead. </p><ul>
   1931 <li>If 1 (SHOW_BKG), everything works as usual. </li>
   1932 <li>If 0 (HIDE_BKG), all sprites are always drawn over background and window, ignoring any other priority settings. </li>
   1933 </ul>
   1934 
   1935 </div>
   1936 </div>
   1937 <a id="SHOW_WIN" name="SHOW_WIN"></a>
   1938 <h2 class="memtitle"><span class="permalink"><a href="#SHOW_WIN">&#9670;&nbsp;</a></span>SHOW_WIN</h2>
   1939 
   1940 <div class="memitem">
   1941 <div class="memproto">
   1942       <table class="memname">
   1943         <tr>
   1944           <td class="memname">#define SHOW_WIN&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>|=<a class="el" href="gb_2hardware_8h.html#LCDCF_WINON">LCDCF_WINON</a></td>
   1945         </tr>
   1946       </table>
   1947 </div><div class="memdoc">
   1948 <p >Turns on the Window layer Sets bit 5 of the LCDC register to 1.</p>
   1949 <p >This only controls Window visibility. If either the Background layer (which the window is part of) or the Display are not turned then the Window contents will not be visible. Those can be turned on using <a class="el" href="sms_8h.html#SHOW_BKG">SHOW_BKG</a> and <a class="el" href="sms_8h.html#DISPLAY_ON">DISPLAY_ON</a>. </p>
   1950 
   1951 </div>
   1952 </div>
   1953 <a id="HIDE_WIN" name="HIDE_WIN"></a>
   1954 <h2 class="memtitle"><span class="permalink"><a href="#HIDE_WIN">&#9670;&nbsp;</a></span>HIDE_WIN</h2>
   1955 
   1956 <div class="memitem">
   1957 <div class="memproto">
   1958       <table class="memname">
   1959         <tr>
   1960           <td class="memname">#define HIDE_WIN&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>&amp;=~<a class="el" href="gb_2hardware_8h.html#LCDCF_WINON">LCDCF_WINON</a></td>
   1961         </tr>
   1962       </table>
   1963 </div><div class="memdoc">
   1964 <p >Turns off the window layer. Clears bit 5 of the LCDC register to 0. </p>
   1965 
   1966 </div>
   1967 </div>
   1968 <a id="SHOW_SPRITES" name="SHOW_SPRITES"></a>
   1969 <h2 class="memtitle"><span class="permalink"><a href="#SHOW_SPRITES">&#9670;&nbsp;</a></span>SHOW_SPRITES</h2>
   1970 
   1971 <div class="memitem">
   1972 <div class="memproto">
   1973       <table class="memname">
   1974         <tr>
   1975           <td class="memname">#define SHOW_SPRITES&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>|=<a class="el" href="gb_2hardware_8h.html#LCDCF_OBJON">LCDCF_OBJON</a></td>
   1976         </tr>
   1977       </table>
   1978 </div><div class="memdoc">
   1979 <p >Turns on the sprites layer. Sets bit 1 of the LCDC register to 1. </p>
   1980 
   1981 </div>
   1982 </div>
   1983 <a id="HIDE_SPRITES" name="HIDE_SPRITES"></a>
   1984 <h2 class="memtitle"><span class="permalink"><a href="#HIDE_SPRITES">&#9670;&nbsp;</a></span>HIDE_SPRITES</h2>
   1985 
   1986 <div class="memitem">
   1987 <div class="memproto">
   1988       <table class="memname">
   1989         <tr>
   1990           <td class="memname">#define HIDE_SPRITES&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>&amp;=~<a class="el" href="gb_2hardware_8h.html#LCDCF_OBJON">LCDCF_OBJON</a></td>
   1991         </tr>
   1992       </table>
   1993 </div><div class="memdoc">
   1994 <p >Turns off the sprites layer. Clears bit 1 of the LCDC register to 0.</p>
   1995 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#hide_sprite">hide_sprite</a>, <a class="el" href="sms_2metasprites_8h.html#hide_sprites_range">hide_sprites_range</a> </dd></dl>
   1996 
   1997 </div>
   1998 </div>
   1999 <a id="SPRITES_8x16" name="SPRITES_8x16"></a>
   2000 <h2 class="memtitle"><span class="permalink"><a href="#SPRITES_8x16">&#9670;&nbsp;</a></span>SPRITES_8x16</h2>
   2001 
   2002 <div class="memitem">
   2003 <div class="memproto">
   2004       <table class="memname">
   2005         <tr>
   2006           <td class="memname">#define SPRITES_8x16&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>|=<a class="el" href="gb_2hardware_8h.html#LCDCF_OBJ16">LCDCF_OBJ16</a></td>
   2007         </tr>
   2008       </table>
   2009 </div><div class="memdoc">
   2010 <p >Sets sprite size to 8x16 pixels, two tiles one above the other. Sets bit 2 of the LCDC register to 1. </p>
   2011 
   2012 </div>
   2013 </div>
   2014 <a id="SPRITES_8x8" name="SPRITES_8x8"></a>
   2015 <h2 class="memtitle"><span class="permalink"><a href="#SPRITES_8x8">&#9670;&nbsp;</a></span>SPRITES_8x8</h2>
   2016 
   2017 <div class="memitem">
   2018 <div class="memproto">
   2019       <table class="memname">
   2020         <tr>
   2021           <td class="memname">#define SPRITES_8x8&#160;&#160;&#160;  <a class="el" href="gb_2hardware_8h.html#LCDC_REG">LCDC_REG</a>&amp;=~<a class="el" href="gb_2hardware_8h.html#LCDCF_OBJ16">LCDCF_OBJ16</a></td>
   2022         </tr>
   2023       </table>
   2024 </div><div class="memdoc">
   2025 <p >Sets sprite size to 8x8 pixels, one tile. Clears bit 2 of the LCDC register to 0. </p>
   2026 
   2027 </div>
   2028 </div>
   2029 <a id="COMPAT_PALETTE" name="COMPAT_PALETTE"></a>
   2030 <h2 class="memtitle"><span class="permalink"><a href="#COMPAT_PALETTE">&#9670;&nbsp;</a></span>COMPAT_PALETTE</h2>
   2031 
   2032 <div class="memitem">
   2033 <div class="memproto">
   2034       <table class="memname">
   2035         <tr>
   2036           <td class="memname">#define COMPAT_PALETTE</td>
   2037           <td>(</td>
   2038           <td class="paramtype">&#160;</td>
   2039           <td class="paramname">C0, </td>
   2040         </tr>
   2041         <tr>
   2042           <td class="paramkey"></td>
   2043           <td></td>
   2044           <td class="paramtype">&#160;</td>
   2045           <td class="paramname">C1, </td>
   2046         </tr>
   2047         <tr>
   2048           <td class="paramkey"></td>
   2049           <td></td>
   2050           <td class="paramtype">&#160;</td>
   2051           <td class="paramname">C2, </td>
   2052         </tr>
   2053         <tr>
   2054           <td class="paramkey"></td>
   2055           <td></td>
   2056           <td class="paramtype">&#160;</td>
   2057           <td class="paramname">C3&#160;</td>
   2058         </tr>
   2059         <tr>
   2060           <td></td>
   2061           <td>)</td>
   2062           <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>
   2063         </tr>
   2064       </table>
   2065 </div><div class="memdoc">
   2066 
   2067 </div>
   2068 </div>
   2069 <a id="set_bkg_2bpp_data" name="set_bkg_2bpp_data"></a>
   2070 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_2bpp_data">&#9670;&nbsp;</a></span>set_bkg_2bpp_data</h2>
   2071 
   2072 <div class="memitem">
   2073 <div class="memproto">
   2074       <table class="memname">
   2075         <tr>
   2076           <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>
   2077         </tr>
   2078       </table>
   2079 </div><div class="memdoc">
   2080 
   2081 </div>
   2082 </div>
   2083 <a id="set_tile_map" name="set_tile_map"></a>
   2084 <h2 class="memtitle"><span class="permalink"><a href="#set_tile_map">&#9670;&nbsp;</a></span>set_tile_map</h2>
   2085 
   2086 <div class="memitem">
   2087 <div class="memproto">
   2088       <table class="memname">
   2089         <tr>
   2090           <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>
   2091         </tr>
   2092       </table>
   2093 </div><div class="memdoc">
   2094 
   2095 </div>
   2096 </div>
   2097 <a id="set_tile_submap" name="set_tile_submap"></a>
   2098 <h2 class="memtitle"><span class="permalink"><a href="#set_tile_submap">&#9670;&nbsp;</a></span>set_tile_submap</h2>
   2099 
   2100 <div class="memitem">
   2101 <div class="memproto">
   2102       <table class="memname">
   2103         <tr>
   2104           <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>
   2105         </tr>
   2106       </table>
   2107 </div><div class="memdoc">
   2108 
   2109 </div>
   2110 </div>
   2111 <a id="set_tile_xy" name="set_tile_xy"></a>
   2112 <h2 class="memtitle"><span class="permalink"><a href="#set_tile_xy">&#9670;&nbsp;</a></span>set_tile_xy</h2>
   2113 
   2114 <div class="memitem">
   2115 <div class="memproto">
   2116       <table class="memname">
   2117         <tr>
   2118           <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>
   2119         </tr>
   2120       </table>
   2121 </div><div class="memdoc">
   2122 
   2123 </div>
   2124 </div>
   2125 <a id="set_attribute_xy" name="set_attribute_xy"></a>
   2126 <h2 class="memtitle"><span class="permalink"><a href="#set_attribute_xy">&#9670;&nbsp;</a></span>set_attribute_xy</h2>
   2127 
   2128 <div class="memitem">
   2129 <div class="memproto">
   2130       <table class="memname">
   2131         <tr>
   2132           <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>
   2133         </tr>
   2134       </table>
   2135 </div><div class="memdoc">
   2136 
   2137 </div>
   2138 </div>
   2139 <a id="set_sprite_2bpp_data" name="set_sprite_2bpp_data"></a>
   2140 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_2bpp_data">&#9670;&nbsp;</a></span>set_sprite_2bpp_data</h2>
   2141 
   2142 <div class="memitem">
   2143 <div class="memproto">
   2144       <table class="memname">
   2145         <tr>
   2146           <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>
   2147         </tr>
   2148       </table>
   2149 </div><div class="memdoc">
   2150 
   2151 </div>
   2152 </div>
   2153 <a id="DISABLE_OAM_DMA" name="DISABLE_OAM_DMA"></a>
   2154 <h2 class="memtitle"><span class="permalink"><a href="#DISABLE_OAM_DMA">&#9670;&nbsp;</a></span>DISABLE_OAM_DMA</h2>
   2155 
   2156 <div class="memitem">
   2157 <div class="memproto">
   2158       <table class="memname">
   2159         <tr>
   2160           <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>
   2161         </tr>
   2162       </table>
   2163 </div><div class="memdoc">
   2164 
   2165 </div>
   2166 </div>
   2167 <a id="DISABLE_VBL_TRANSFER" name="DISABLE_VBL_TRANSFER"></a>
   2168 <h2 class="memtitle"><span class="permalink"><a href="#DISABLE_VBL_TRANSFER">&#9670;&nbsp;</a></span>DISABLE_VBL_TRANSFER</h2>
   2169 
   2170 <div class="memitem">
   2171 <div class="memproto">
   2172       <table class="memname">
   2173         <tr>
   2174           <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>
   2175         </tr>
   2176       </table>
   2177 </div><div class="memdoc">
   2178 <p >Disable OAM DMA copy each VBlank </p>
   2179 
   2180 </div>
   2181 </div>
   2182 <a id="ENABLE_OAM_DMA" name="ENABLE_OAM_DMA"></a>
   2183 <h2 class="memtitle"><span class="permalink"><a href="#ENABLE_OAM_DMA">&#9670;&nbsp;</a></span>ENABLE_OAM_DMA</h2>
   2184 
   2185 <div class="memitem">
   2186 <div class="memproto">
   2187       <table class="memname">
   2188         <tr>
   2189           <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>
   2190         </tr>
   2191       </table>
   2192 </div><div class="memdoc">
   2193 
   2194 </div>
   2195 </div>
   2196 <a id="ENABLE_VBL_TRANSFER" name="ENABLE_VBL_TRANSFER"></a>
   2197 <h2 class="memtitle"><span class="permalink"><a href="#ENABLE_VBL_TRANSFER">&#9670;&nbsp;</a></span>ENABLE_VBL_TRANSFER</h2>
   2198 
   2199 <div class="memitem">
   2200 <div class="memproto">
   2201       <table class="memname">
   2202         <tr>
   2203           <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>
   2204         </tr>
   2205       </table>
   2206 </div><div class="memdoc">
   2207 <p >Enable OAM DMA copy each VBlank and set it to transfer default shadow_OAM array </p>
   2208 
   2209 </div>
   2210 </div>
   2211 <a id="MAX_HARDWARE_SPRITES" name="MAX_HARDWARE_SPRITES"></a>
   2212 <h2 class="memtitle"><span class="permalink"><a href="#MAX_HARDWARE_SPRITES">&#9670;&nbsp;</a></span>MAX_HARDWARE_SPRITES</h2>
   2213 
   2214 <div class="memitem">
   2215 <div class="memproto">
   2216       <table class="memname">
   2217         <tr>
   2218           <td class="memname">#define MAX_HARDWARE_SPRITES&#160;&#160;&#160;40</td>
   2219         </tr>
   2220       </table>
   2221 </div><div class="memdoc">
   2222 <p >Amount of hardware sprites in OAM </p>
   2223 
   2224 </div>
   2225 </div>
   2226 <a id="HARDWARE_SPRITE_CAN_FLIP_X" name="HARDWARE_SPRITE_CAN_FLIP_X"></a>
   2227 <h2 class="memtitle"><span class="permalink"><a href="#HARDWARE_SPRITE_CAN_FLIP_X">&#9670;&nbsp;</a></span>HARDWARE_SPRITE_CAN_FLIP_X</h2>
   2228 
   2229 <div class="memitem">
   2230 <div class="memproto">
   2231       <table class="memname">
   2232         <tr>
   2233           <td class="memname">#define HARDWARE_SPRITE_CAN_FLIP_X&#160;&#160;&#160;1</td>
   2234         </tr>
   2235       </table>
   2236 </div><div class="memdoc">
   2237 <p >True if sprite hardware can flip sprites by X (horizontally) </p>
   2238 
   2239 </div>
   2240 </div>
   2241 <a id="HARDWARE_SPRITE_CAN_FLIP_Y" name="HARDWARE_SPRITE_CAN_FLIP_Y"></a>
   2242 <h2 class="memtitle"><span class="permalink"><a href="#HARDWARE_SPRITE_CAN_FLIP_Y">&#9670;&nbsp;</a></span>HARDWARE_SPRITE_CAN_FLIP_Y</h2>
   2243 
   2244 <div class="memitem">
   2245 <div class="memproto">
   2246       <table class="memname">
   2247         <tr>
   2248           <td class="memname">#define HARDWARE_SPRITE_CAN_FLIP_Y&#160;&#160;&#160;1</td>
   2249         </tr>
   2250       </table>
   2251 </div><div class="memdoc">
   2252 <p >True if sprite hardware can flip sprites by Y (vertically) </p>
   2253 
   2254 </div>
   2255 </div>
   2256 <a id="fill_rect" name="fill_rect"></a>
   2257 <h2 class="memtitle"><span class="permalink"><a href="#fill_rect">&#9670;&nbsp;</a></span>fill_rect</h2>
   2258 
   2259 <div class="memitem">
   2260 <div class="memproto">
   2261       <table class="memname">
   2262         <tr>
   2263           <td class="memname">#define fill_rect&#160;&#160;&#160;<a class="el" href="nes_8h.html#fill_bkg_rect">fill_bkg_rect</a></td>
   2264         </tr>
   2265       </table>
   2266 </div><div class="memdoc">
   2267 
   2268 </div>
   2269 </div>
   2270 <h2 class="groupheader">Typedef Documentation</h2>
   2271 <a id="int_handler" name="int_handler"></a>
   2272 <h2 class="memtitle"><span class="permalink"><a href="#int_handler">&#9670;&nbsp;</a></span>int_handler</h2>
   2273 
   2274 <div class="memitem">
   2275 <div class="memproto">
   2276       <table class="memname">
   2277         <tr>
   2278           <td class="memname">typedef void(* int_handler) (void) <a class="el" href="asm_2types_8h.html#NONBANKED">NONBANKED</a></td>
   2279         </tr>
   2280       </table>
   2281 </div><div class="memdoc">
   2282 <p >Interrupt handlers </p>
   2283 
   2284 </div>
   2285 </div>
   2286 <a id="OAM_item_t" name="OAM_item_t"></a>
   2287 <h2 class="memtitle"><span class="permalink"><a href="#OAM_item_t">&#9670;&nbsp;</a></span>OAM_item_t</h2>
   2288 
   2289 <div class="memitem">
   2290 <div class="memproto">
   2291       <table class="memname">
   2292         <tr>
   2293           <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>
   2294         </tr>
   2295       </table>
   2296 </div><div class="memdoc">
   2297 <p >Sprite Attributes structure </p><dl class="params"><dt>Parameters</dt><dd>
   2298   <table class="params">
   2299     <tr><td class="paramname">x</td><td>X Coordinate of the sprite on screen </td></tr>
   2300     <tr><td class="paramname">y</td><td>Y Coordinate of the sprite on screen </td></tr>
   2301     <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>
   2302     <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>
   2303   </table>
   2304   </dd>
   2305 </dl>
   2306 
   2307 </div>
   2308 </div>
   2309 <h2 class="groupheader">Function Documentation</h2>
   2310 <a id="remove_VBL" name="remove_VBL"></a>
   2311 <h2 class="memtitle"><span class="permalink"><a href="#remove_VBL">&#9670;&nbsp;</a></span>remove_VBL()</h2>
   2312 
   2313 <div class="memitem">
   2314 <div class="memproto">
   2315       <table class="memname">
   2316         <tr>
   2317           <td class="memname">void remove_VBL </td>
   2318           <td>(</td>
   2319           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2320           <td class="paramname"><em>h</em></td><td>)</td>
   2321           <td></td>
   2322         </tr>
   2323       </table>
   2324 </div><div class="memdoc">
   2325 <p >The remove functions will remove any interrupt handler.</p>
   2326 <p >A handler of NULL will cause bad things to happen if the given interrupt is enabled.</p>
   2327 <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>
   2328 <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>
   2329 
   2330 </div>
   2331 </div>
   2332 <a id="remove_LCD" name="remove_LCD"></a>
   2333 <h2 class="memtitle"><span class="permalink"><a href="#remove_LCD">&#9670;&nbsp;</a></span>remove_LCD()</h2>
   2334 
   2335 <div class="memitem">
   2336 <div class="memproto">
   2337       <table class="memname">
   2338         <tr>
   2339           <td class="memname">void remove_LCD </td>
   2340           <td>(</td>
   2341           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2342           <td class="paramname"><em>h</em></td><td>)</td>
   2343           <td></td>
   2344         </tr>
   2345       </table>
   2346 </div><div class="memdoc">
   2347 <p >Removes the LCD interrupt handler. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#add_LCD">add_LCD()</a>, <a class="el" href="gb_8h.html#remove_VBL">remove_VBL()</a> </dd></dl>
   2348 
   2349 </div>
   2350 </div>
   2351 <a id="remove_TIM" name="remove_TIM"></a>
   2352 <h2 class="memtitle"><span class="permalink"><a href="#remove_TIM">&#9670;&nbsp;</a></span>remove_TIM()</h2>
   2353 
   2354 <div class="memitem">
   2355 <div class="memproto">
   2356       <table class="memname">
   2357         <tr>
   2358           <td class="memname">void remove_TIM </td>
   2359           <td>(</td>
   2360           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2361           <td class="paramname"><em>h</em></td><td>)</td>
   2362           <td></td>
   2363         </tr>
   2364       </table>
   2365 </div><div class="memdoc">
   2366 <p >Removes the TIM interrupt handler. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#add_TIM">add_TIM()</a>, <a class="el" href="gb_8h.html#remove_VBL">remove_VBL()</a> </dd></dl>
   2367 
   2368 </div>
   2369 </div>
   2370 <a id="remove_SIO" name="remove_SIO"></a>
   2371 <h2 class="memtitle"><span class="permalink"><a href="#remove_SIO">&#9670;&nbsp;</a></span>remove_SIO()</h2>
   2372 
   2373 <div class="memitem">
   2374 <div class="memproto">
   2375       <table class="memname">
   2376         <tr>
   2377           <td class="memname">void remove_SIO </td>
   2378           <td>(</td>
   2379           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2380           <td class="paramname"><em>h</em></td><td>)</td>
   2381           <td></td>
   2382         </tr>
   2383       </table>
   2384 </div><div class="memdoc">
   2385 <p >Removes the Serial Link / SIO interrupt handler. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#add_SIO">add_SIO()</a>, </dd>
   2386 <dd>
   2387 <a class="el" href="gb_8h.html#remove_VBL">remove_VBL()</a></dd></dl>
   2388 <p>The default SIO ISR gets installed automatically if any of the standard SIO calls are used (<a class="el" href="gb_8h.html#send_byte">send_byte()</a>, <a class="el" href="gb_8h.html#receive_byte">receive_byte()</a>).</p>
   2389 <p >Once installed the default SIO ISR cannot be removed. Only secondary chained SIO ISRs (added with <a class="el" href="gb_8h.html#add_SIO">add_SIO()</a>) can be removed. </p>
   2390 
   2391 </div>
   2392 </div>
   2393 <a id="remove_JOY" name="remove_JOY"></a>
   2394 <h2 class="memtitle"><span class="permalink"><a href="#remove_JOY">&#9670;&nbsp;</a></span>remove_JOY()</h2>
   2395 
   2396 <div class="memitem">
   2397 <div class="memproto">
   2398       <table class="memname">
   2399         <tr>
   2400           <td class="memname">void remove_JOY </td>
   2401           <td>(</td>
   2402           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2403           <td class="paramname"><em>h</em></td><td>)</td>
   2404           <td></td>
   2405         </tr>
   2406       </table>
   2407 </div><div class="memdoc">
   2408 <p >Removes the JOY interrupt handler. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#add_JOY">add_JOY()</a>, <a class="el" href="gb_8h.html#remove_VBL">remove_VBL()</a> </dd></dl>
   2409 
   2410 </div>
   2411 </div>
   2412 <a id="add_VBL" name="add_VBL"></a>
   2413 <h2 class="memtitle"><span class="permalink"><a href="#add_VBL">&#9670;&nbsp;</a></span>add_VBL()</h2>
   2414 
   2415 <div class="memitem">
   2416 <div class="memproto">
   2417       <table class="memname">
   2418         <tr>
   2419           <td class="memname">void add_VBL </td>
   2420           <td>(</td>
   2421           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2422           <td class="paramname"><em>h</em></td><td>)</td>
   2423           <td></td>
   2424         </tr>
   2425       </table>
   2426 </div><div class="memdoc">
   2427 <p >Adds a Vertical Blanking interrupt handler.</p>
   2428 <dl class="params"><dt>Parameters</dt><dd>
   2429   <table class="params">
   2430     <tr><td class="paramname">h</td><td>The handler to be called whenever a V-blank interrupt occurs.</td></tr>
   2431   </table>
   2432   </dd>
   2433 </dl>
   2434 <p>Up to 4 handlers may be added, with the last added being called last.</p>
   2435 <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>
   2436 <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>
   2437 <dl class="section note"><dt>Note</dt><dd>The default GBDK VBL is installed automatically.</dd></dl>
   2438 <dl class="section see"><dt>See also</dt><dd><a class="el" href="isr_8h.html#ISR_VECTOR">ISR_VECTOR()</a></dd></dl>
   2439 <p>Adds a V-blank interrupt handler. </p>
   2440 
   2441 </div>
   2442 </div>
   2443 <a id="add_LCD" name="add_LCD"></a>
   2444 <h2 class="memtitle"><span class="permalink"><a href="#add_LCD">&#9670;&nbsp;</a></span>add_LCD()</h2>
   2445 
   2446 <div class="memitem">
   2447 <div class="memproto">
   2448       <table class="memname">
   2449         <tr>
   2450           <td class="memname">void add_LCD </td>
   2451           <td>(</td>
   2452           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2453           <td class="paramname"><em>h</em></td><td>)</td>
   2454           <td></td>
   2455         </tr>
   2456       </table>
   2457 </div><div class="memdoc">
   2458 <p >Adds a LCD interrupt handler.</p>
   2459 <p >Called when the LCD interrupt occurs.</p>
   2460 <p >Up to 3 handlers may be added, with the last added being called last.</p>
   2461 <p >There are various sources controlled by the <a class="el" href="gb_2hardware_8h.html#STAT_REG">STAT_REG</a> register ($FF41) which can trigger this interrupt. Common examples include triggering on specific scanlines using <a class="el" href="gb_2hardware_8h.html#LY_REG">LY_REG</a> == <a class="el" href="gb_2hardware_8h.html#LYC_REG">LYC_REG</a>. Another is applying graphics effects on a per-scanline basis such as modifying the X and Y scroll registers (<a class="el" href="gb_2hardware_8h.html#SCX_REG">SCX_REG</a> / <a class="el" href="gb_2hardware_8h.html#SCY_REG">SCY_REG</a> registers).</p>
   2462 <dl class="section note"><dt>Note</dt><dd>LYC may not trigger with scanline 0 in the same way as other scanlines due to particular behavior with scanlines 153 and 0. Instead, using an <a class="el" href="msx_8h.html#add_VBL">add_VBL()</a> interrupt handler for start of frame behavior may be more suitable.</dd></dl>
   2463 <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>
   2464 <p >ISR handlers added using add_VBL/LCD/etc are instead called via the GBDK ISR dispatcher which makes the extra function attributes unecessary.</p>
   2465 <p >If this ISR is to be called once per each scanline then make sure that the time it takes to execute is less than the duration of a scanline.</p>
   2466 <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>
   2467 <p>Adds a LCD interrupt handler. </p>
   2468 
   2469 </div>
   2470 </div>
   2471 <a id="add_TIM" name="add_TIM"></a>
   2472 <h2 class="memtitle"><span class="permalink"><a href="#add_TIM">&#9670;&nbsp;</a></span>add_TIM()</h2>
   2473 
   2474 <div class="memitem">
   2475 <div class="memproto">
   2476       <table class="memname">
   2477         <tr>
   2478           <td class="memname">void add_TIM </td>
   2479           <td>(</td>
   2480           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2481           <td class="paramname"><em>h</em></td><td>)</td>
   2482           <td></td>
   2483         </tr>
   2484       </table>
   2485 </div><div class="memdoc">
   2486 <p >Adds a timer interrupt handler.</p>
   2487 <p >Can not be used together with <a class="el" href="gb_8h.html#add_low_priority_TIM">add_low_priority_TIM</a></p>
   2488 <p >This interrupt occurs when the <a class="el" href="sms_2hardware_8h.html#TIMA_REG">TIMA_REG</a> register ($FF05) changes from $FF to $00.</p>
   2489 <p >Up to 4 handlers may be added, with the last added being called last.</p>
   2490 <dl class="section note"><dt>Note</dt><dd>For NES 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>
   2491 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#add_VBL">add_VBL</a> </dd>
   2492 <dd>
   2493 <a class="el" href="gb_8h.html#set_interrupts">set_interrupts()</a> with <a class="el" href="gb_8h.html#TIM_IFLAG">TIM_IFLAG</a>, <a class="el" href="isr_8h.html#ISR_VECTOR">ISR_VECTOR()</a> </dd></dl>
   2494 
   2495 </div>
   2496 </div>
   2497 <a id="add_low_priority_TIM" name="add_low_priority_TIM"></a>
   2498 <h2 class="memtitle"><span class="permalink"><a href="#add_low_priority_TIM">&#9670;&nbsp;</a></span>add_low_priority_TIM()</h2>
   2499 
   2500 <div class="memitem">
   2501 <div class="memproto">
   2502       <table class="memname">
   2503         <tr>
   2504           <td class="memname">void add_low_priority_TIM </td>
   2505           <td>(</td>
   2506           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2507           <td class="paramname"><em>h</em></td><td>)</td>
   2508           <td></td>
   2509         </tr>
   2510       </table>
   2511 </div><div class="memdoc">
   2512 <p >Adds a timer interrupt handler, that could be interrupted by the other interrupts, as well as itself, if it runs too slow.</p>
   2513 <p >Can not be used together with <a class="el" href="sms_8h.html#add_TIM">add_TIM</a></p>
   2514 <p >This interrupt occurs when the <a class="el" href="sms_2hardware_8h.html#TIMA_REG">TIMA_REG</a> register ($FF05) changes from $FF to $00.</p>
   2515 <p >Up to 4 handlers may be added, with the last added being called last.</p>
   2516 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#add_VBL">add_VBL</a> </dd>
   2517 <dd>
   2518 <a class="el" href="gb_8h.html#set_interrupts">set_interrupts()</a> with <a class="el" href="gb_8h.html#TIM_IFLAG">TIM_IFLAG</a>, <a class="el" href="isr_8h.html#ISR_VECTOR">ISR_VECTOR()</a> </dd></dl>
   2519 
   2520 </div>
   2521 </div>
   2522 <a id="add_SIO" name="add_SIO"></a>
   2523 <h2 class="memtitle"><span class="permalink"><a href="#add_SIO">&#9670;&nbsp;</a></span>add_SIO()</h2>
   2524 
   2525 <div class="memitem">
   2526 <div class="memproto">
   2527       <table class="memname">
   2528         <tr>
   2529           <td class="memname">void add_SIO </td>
   2530           <td>(</td>
   2531           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2532           <td class="paramname"><em>h</em></td><td>)</td>
   2533           <td></td>
   2534         </tr>
   2535       </table>
   2536 </div><div class="memdoc">
   2537 <p >Adds a Serial Link transmit complete interrupt handler.</p>
   2538 <p >This interrupt occurs when a serial transfer has completed on the game link port.</p>
   2539 <p >Up to 4 handlers may be added, with the last added being called last.</p>
   2540 <p >The default SIO ISR gets installed automatically if any of the standard SIO calls are used (<a class="el" href="gb_8h.html#send_byte">send_byte()</a>, <a class="el" href="gb_8h.html#receive_byte">receive_byte()</a>).</p>
   2541 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#send_byte">send_byte</a>, <a class="el" href="gb_8h.html#receive_byte">receive_byte()</a>, <a class="el" href="gb_8h.html#add_VBL">add_VBL()</a> </dd>
   2542 <dd>
   2543 <a class="el" href="gb_8h.html#set_interrupts">set_interrupts()</a> with <a class="el" href="gb_8h.html#SIO_IFLAG">SIO_IFLAG</a> </dd></dl>
   2544 
   2545 </div>
   2546 </div>
   2547 <a id="add_JOY" name="add_JOY"></a>
   2548 <h2 class="memtitle"><span class="permalink"><a href="#add_JOY">&#9670;&nbsp;</a></span>add_JOY()</h2>
   2549 
   2550 <div class="memitem">
   2551 <div class="memproto">
   2552       <table class="memname">
   2553         <tr>
   2554           <td class="memname">void add_JOY </td>
   2555           <td>(</td>
   2556           <td class="paramtype"><a class="el" href="sms_8h.html#int_handler">int_handler</a>&#160;</td>
   2557           <td class="paramname"><em>h</em></td><td>)</td>
   2558           <td></td>
   2559         </tr>
   2560       </table>
   2561 </div><div class="memdoc">
   2562 <p >Adds a joypad button change interrupt handler.</p>
   2563 <p >This interrupt occurs on a transition of any of the keypad input lines from high to low, if the relevant <a class="el" href="gb_2hardware_8h.html#P1_REG">P1_REG</a> bits 4 or 5 are set.</p>
   2564 <p >For details about configuring flags or reading the data see: <a href="https://gbdev.io/pandocs/Interrupt_Sources.html#int-60&ndash;joypad-interrupt">https://gbdev.io/pandocs/Interrupt_Sources.html#int-60&amp;ndash;joypad-interrupt</a> <a href="https://gbdev.io/pandocs/Joypad_Input.html#ff00&ndash;p1joyp-joypad">https://gbdev.io/pandocs/Joypad_Input.html#ff00&amp;ndash;p1joyp-joypad</a></p>
   2565 <p >Due to the fact that keypad "bounce" is virtually always present, software should expect this interrupt to occur one or more times for every button press and one or more times for every button release.</p>
   2566 <p >Up to 4 handlers may be added, with the last added being called last.</p>
   2567 <p >An example use of this is allowing the user to trigger an exit from the lower-power STOP cpu state.</p>
   2568 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#joypad">joypad()</a>, <a class="el" href="gb_8h.html#add_VBL">add_VBL()</a>, <a class="el" href="gb_2hardware_8h.html#IEF_HILO">IEF_HILO</a>, <a class="el" href="gb_2hardware_8h.html#P1F_5">P1F_5</a>, <a class="el" href="gb_2hardware_8h.html#P1F_4">P1F_4</a>, <a class="el" href="gb_2hardware_8h.html#P1F_3">P1F_3</a>, <a class="el" href="gb_2hardware_8h.html#P1F_2">P1F_2</a>, <a class="el" href="gb_2hardware_8h.html#P1F_1">P1F_1</a>, <a class="el" href="gb_2hardware_8h.html#P1F_0">P1F_0</a>, <a class="el" href="gb_2hardware_8h.html#P1F_GET_DPAD">P1F_GET_DPAD</a>, <a class="el" href="gb_2hardware_8h.html#P1F_GET_BTN">P1F_GET_BTN</a>, <a class="el" href="gb_2hardware_8h.html#P1F_GET_NONE">P1F_GET_NONE</a> </dd></dl>
   2569 
   2570 </div>
   2571 </div>
   2572 <a id="nowait_int_handler" name="nowait_int_handler"></a>
   2573 <h2 class="memtitle"><span class="permalink"><a href="#nowait_int_handler">&#9670;&nbsp;</a></span>nowait_int_handler()</h2>
   2574 
   2575 <div class="memitem">
   2576 <div class="memproto">
   2577       <table class="memname">
   2578         <tr>
   2579           <td class="memname">void nowait_int_handler </td>
   2580           <td>(</td>
   2581           <td class="paramtype">void&#160;</td>
   2582           <td class="paramname"></td><td>)</td>
   2583           <td></td>
   2584         </tr>
   2585       </table>
   2586 </div><div class="memdoc">
   2587 <p >Interrupt handler chain terminator that does <b>not</b> wait for .STAT</p>
   2588 <p >You must add this handler last in every interrupt handler chain if you want to change the default interrupt handler behaviour that waits for LCD controller mode to become 1 or 0 before return from the interrupt.</p>
   2589 <p >Example: </p><div class="fragment"><div class="line"><a class="code hl_define" href="asm_2types_8h.html#CRITICAL">CRITICAL</a> {</div>
   2590 <div class="line">    <a class="code hl_function" href="gb_8h.html#add_SIO">add_SIO</a>(<a class="code hl_function" href="gb_8h.html#nowait_int_handler">nowait_int_handler</a>); <span class="comment">// Disable wait on VRAM state before returning from SIO interrupt</span></div>
   2591 <div class="line">}</div>
   2592 <div class="ttc" id="aasm_2types_8h_html_CRITICAL"><div class="ttname"><a href="asm_2types_8h.html#CRITICAL">CRITICAL</a></div><div class="ttdeci">#define CRITICAL</div><div class="ttdef"><b>Definition:</b> types.h:46</div></div>
   2593 <div class="ttc" id="agb_8h_html_add_SIO"><div class="ttname"><a href="gb_8h.html#add_SIO">add_SIO</a></div><div class="ttdeci">void add_SIO(int_handler h)</div></div>
   2594 <div class="ttc" id="agb_8h_html_nowait_int_handler"><div class="ttname"><a href="gb_8h.html#nowait_int_handler">nowait_int_handler</a></div><div class="ttdeci">void nowait_int_handler(void)</div></div>
   2595 </div><!-- fragment --> <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#wait_int_handler">wait_int_handler()</a> </dd></dl>
   2596 
   2597 </div>
   2598 </div>
   2599 <a id="wait_int_handler" name="wait_int_handler"></a>
   2600 <h2 class="memtitle"><span class="permalink"><a href="#wait_int_handler">&#9670;&nbsp;</a></span>wait_int_handler()</h2>
   2601 
   2602 <div class="memitem">
   2603 <div class="memproto">
   2604       <table class="memname">
   2605         <tr>
   2606           <td class="memname">void wait_int_handler </td>
   2607           <td>(</td>
   2608           <td class="paramtype">void&#160;</td>
   2609           <td class="paramname"></td><td>)</td>
   2610           <td></td>
   2611         </tr>
   2612       </table>
   2613 </div><div class="memdoc">
   2614 <p >Default Interrupt handler chain terminator that waits for </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_2hardware_8h.html#STAT_REG">STAT_REG</a> and <b>only</b> returns at the BEGINNING of either Mode 0 or Mode 1.</dd></dl>
   2615 <p>Used by default at the end of interrupt chains to help prevent graphical glitches. The glitches are caused when an ISR interrupts a graphics operation in one mode but returns in a different mode for which that graphics operation is not allowed.</p>
   2616 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#nowait_int_handler">nowait_int_handler()</a> </dd></dl>
   2617 
   2618 </div>
   2619 </div>
   2620 <a id="cancel_pending_interrupts" name="cancel_pending_interrupts"></a>
   2621 <h2 class="memtitle"><span class="permalink"><a href="#cancel_pending_interrupts">&#9670;&nbsp;</a></span>cancel_pending_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"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> cancel_pending_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 >Cancel pending interrupts </p>
   2644 
   2645 </div>
   2646 </div>
   2647 <a id="mode" name="mode"></a>
   2648 <h2 class="memtitle"><span class="permalink"><a href="#mode">&#9670;&nbsp;</a></span>mode()</h2>
   2649 
   2650 <div class="memitem">
   2651 <div class="memproto">
   2652       <table class="memname">
   2653         <tr>
   2654           <td class="memname">void mode </td>
   2655           <td>(</td>
   2656           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2657           <td class="paramname"><em>m</em></td><td>)</td>
   2658           <td></td>
   2659         </tr>
   2660       </table>
   2661 </div><div class="memdoc">
   2662 <p >Set the current screen mode - one of M_* modes</p>
   2663 <p >Normally used by internal functions only.</p>
   2664 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#M_DRAWING">M_DRAWING</a>, <a class="el" href="gb_8h.html#M_TEXT_OUT">M_TEXT_OUT</a>, <a class="el" href="gb_8h.html#M_TEXT_INOUT">M_TEXT_INOUT</a>, <a class="el" href="gb_8h.html#M_NO_SCROLL">M_NO_SCROLL</a>, <a class="el" href="gb_8h.html#M_NO_INTERP">M_NO_INTERP</a> </dd></dl>
   2665 
   2666 </div>
   2667 </div>
   2668 <a id="get_mode" name="get_mode"></a>
   2669 <h2 class="memtitle"><span class="permalink"><a href="#get_mode">&#9670;&nbsp;</a></span>get_mode()</h2>
   2670 
   2671 <div class="memitem">
   2672 <div class="memproto">
   2673       <table class="memname">
   2674         <tr>
   2675           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_mode </td>
   2676           <td>(</td>
   2677           <td class="paramtype">void&#160;</td>
   2678           <td class="paramname"></td><td>)</td>
   2679           <td></td>
   2680         </tr>
   2681       </table>
   2682 </div><div class="memdoc">
   2683 <p >Returns the current mode</p>
   2684 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#M_DRAWING">M_DRAWING</a>, <a class="el" href="gb_8h.html#M_TEXT_OUT">M_TEXT_OUT</a>, <a class="el" href="gb_8h.html#M_TEXT_INOUT">M_TEXT_INOUT</a>, <a class="el" href="gb_8h.html#M_NO_SCROLL">M_NO_SCROLL</a>, <a class="el" href="gb_8h.html#M_NO_INTERP">M_NO_INTERP</a> </dd></dl>
   2685 
   2686 </div>
   2687 </div>
   2688 <a id="get_system" name="get_system"></a>
   2689 <h2 class="memtitle"><span class="permalink"><a href="#get_system">&#9670;&nbsp;</a></span>get_system()</h2>
   2690 
   2691 <div class="memitem">
   2692 <div class="memproto">
   2693 <table class="mlabels">
   2694   <tr>
   2695   <td class="mlabels-left">
   2696       <table class="memname">
   2697         <tr>
   2698           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_system </td>
   2699           <td>(</td>
   2700           <td class="paramtype">void&#160;</td>
   2701           <td class="paramname"></td><td>)</td>
   2702           <td></td>
   2703         </tr>
   2704       </table>
   2705   </td>
   2706   <td class="mlabels-right">
   2707 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   2708   </tr>
   2709 </table>
   2710 </div><div class="memdoc">
   2711 <p >Returns the system gbdk is running on.</p>
   2712 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SYSTEM_50HZ">SYSTEM_50HZ</a>, <a class="el" href="gb_8h.html#SYSTEM_60HZ">SYSTEM_60HZ</a>, <a class="el" href="nes_8h.html#SYSTEM_BITS_DENDY">SYSTEM_BITS_DENDY</a>, <a class="el" href="nes_8h.html#SYSTEM_BITS_NTSC">SYSTEM_BITS_NTSC</a>, <a class="el" href="nes_8h.html#SYSTEM_BITS_PAL">SYSTEM_BITS_PAL</a>, <a class="el" href="msx_2hardware_8h.html#SYSTEM_NTSC">SYSTEM_NTSC</a> <a class="el" href="msx_2hardware_8h.html#SYSTEM_PAL">SYSTEM_PAL</a> </dd></dl>
   2713 
   2714 </div>
   2715 </div>
   2716 <a id="send_byte" name="send_byte"></a>
   2717 <h2 class="memtitle"><span class="permalink"><a href="#send_byte">&#9670;&nbsp;</a></span>send_byte()</h2>
   2718 
   2719 <div class="memitem">
   2720 <div class="memproto">
   2721       <table class="memname">
   2722         <tr>
   2723           <td class="memname">void send_byte </td>
   2724           <td>(</td>
   2725           <td class="paramtype">void&#160;</td>
   2726           <td class="paramname"></td><td>)</td>
   2727           <td></td>
   2728         </tr>
   2729       </table>
   2730 </div><div class="memdoc">
   2731 <p >Serial Link: Send the byte in <a class="el" href="gb_8h.html#_io_out">_io_out</a> out through the serial port</p>
   2732 <p >Make sure to enable interrupts for the Serial Link before trying to transfer data. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#add_SIO">add_SIO()</a>, <a class="el" href="gb_8h.html#remove_SIO">remove_SIO()</a> </dd>
   2733 <dd>
   2734 <a class="el" href="gb_8h.html#set_interrupts">set_interrupts()</a> with <a class="el" href="sms_8h.html#SIO_IFLAG">SIO_IFLAG</a> </dd></dl>
   2735 
   2736 </div>
   2737 </div>
   2738 <a id="receive_byte" name="receive_byte"></a>
   2739 <h2 class="memtitle"><span class="permalink"><a href="#receive_byte">&#9670;&nbsp;</a></span>receive_byte()</h2>
   2740 
   2741 <div class="memitem">
   2742 <div class="memproto">
   2743       <table class="memname">
   2744         <tr>
   2745           <td class="memname">void receive_byte </td>
   2746           <td>(</td>
   2747           <td class="paramtype">void&#160;</td>
   2748           <td class="paramname"></td><td>)</td>
   2749           <td></td>
   2750         </tr>
   2751       </table>
   2752 </div><div class="memdoc">
   2753 <p >Serial Link: Receive a byte from the serial port into <a class="el" href="gb_8h.html#_io_in">_io_in</a></p>
   2754 <p >Make sure to enable interrupts for the Serial Link before trying to transfer data. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#add_SIO">add_SIO()</a>, <a class="el" href="gb_8h.html#remove_SIO">remove_SIO()</a> </dd>
   2755 <dd>
   2756 <a class="el" href="gb_8h.html#set_interrupts">set_interrupts()</a> with <a class="el" href="sms_8h.html#SIO_IFLAG">SIO_IFLAG</a> </dd></dl>
   2757 
   2758 </div>
   2759 </div>
   2760 <a id="delay" name="delay"></a>
   2761 <h2 class="memtitle"><span class="permalink"><a href="#delay">&#9670;&nbsp;</a></span>delay()</h2>
   2762 
   2763 <div class="memitem">
   2764 <div class="memproto">
   2765       <table class="memname">
   2766         <tr>
   2767           <td class="memname">void delay </td>
   2768           <td>(</td>
   2769           <td class="paramtype"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td>
   2770           <td class="paramname"><em>d</em></td><td>)</td>
   2771           <td></td>
   2772         </tr>
   2773       </table>
   2774 </div><div class="memdoc">
   2775 <p >Delays the given number of milliseconds. Uses no timers or interrupts, and can be called with interrupts disabled </p>
   2776 
   2777 </div>
   2778 </div>
   2779 <a id="joypad" name="joypad"></a>
   2780 <h2 class="memtitle"><span class="permalink"><a href="#joypad">&#9670;&nbsp;</a></span>joypad()</h2>
   2781 
   2782 <div class="memitem">
   2783 <div class="memproto">
   2784       <table class="memname">
   2785         <tr>
   2786           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> joypad </td>
   2787           <td>(</td>
   2788           <td class="paramtype">void&#160;</td>
   2789           <td class="paramname"></td><td>)</td>
   2790           <td></td>
   2791         </tr>
   2792       </table>
   2793 </div><div class="memdoc">
   2794 <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>
   2795 <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>
   2796 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#J_START">J_START</a>, <a class="el" href="gb_8h.html#J_SELECT">J_SELECT</a>, <a class="el" href="gb_8h.html#J_A">J_A</a>, <a class="el" href="gb_8h.html#J_B">J_B</a>, <a class="el" href="gb_8h.html#J_UP">J_UP</a>, <a class="el" href="gb_8h.html#J_DOWN">J_DOWN</a>, <a class="el" href="gb_8h.html#J_LEFT">J_LEFT</a>, <a class="el" href="gb_8h.html#J_RIGHT">J_RIGHT</a> </dd></dl>
   2797 
   2798 </div>
   2799 </div>
   2800 <a id="waitpad" name="waitpad"></a>
   2801 <h2 class="memtitle"><span class="permalink"><a href="#waitpad">&#9670;&nbsp;</a></span>waitpad()</h2>
   2802 
   2803 <div class="memitem">
   2804 <div class="memproto">
   2805       <table class="memname">
   2806         <tr>
   2807           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> waitpad </td>
   2808           <td>(</td>
   2809           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2810           <td class="paramname"><em>mask</em></td><td>)</td>
   2811           <td></td>
   2812         </tr>
   2813       </table>
   2814 </div><div class="memdoc">
   2815 <p >Waits until at least one of the buttons given in mask are pressed.</p>
   2816 <dl class="params"><dt>Parameters</dt><dd>
   2817   <table class="params">
   2818     <tr><td class="paramname">mask</td><td>Bitmask indicating which buttons to wait for</td></tr>
   2819   </table>
   2820   </dd>
   2821 </dl>
   2822 <p>Normally only used for checking one key, but it will support many, even J_LEFT at the same time as J_RIGHT. :)</p>
   2823 <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>
   2824 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#joypad">joypad</a> </dd>
   2825 <dd>
   2826 <a class="el" href="gb_8h.html#J_START">J_START</a>, <a class="el" href="gb_8h.html#J_SELECT">J_SELECT</a>, <a class="el" href="gb_8h.html#J_A">J_A</a>, <a class="el" href="gb_8h.html#J_B">J_B</a>, <a class="el" href="gb_8h.html#J_UP">J_UP</a>, <a class="el" href="gb_8h.html#J_DOWN">J_DOWN</a>, <a class="el" href="gb_8h.html#J_LEFT">J_LEFT</a>, <a class="el" href="gb_8h.html#J_RIGHT">J_RIGHT</a> </dd></dl>
   2827 
   2828 </div>
   2829 </div>
   2830 <a id="waitpadup" name="waitpadup"></a>
   2831 <h2 class="memtitle"><span class="permalink"><a href="#waitpadup">&#9670;&nbsp;</a></span>waitpadup()</h2>
   2832 
   2833 <div class="memitem">
   2834 <div class="memproto">
   2835       <table class="memname">
   2836         <tr>
   2837           <td class="memname">void waitpadup </td>
   2838           <td>(</td>
   2839           <td class="paramtype">void&#160;</td>
   2840           <td class="paramname"></td><td>)</td>
   2841           <td></td>
   2842         </tr>
   2843       </table>
   2844 </div><div class="memdoc">
   2845 <p >Waits for the directional pad and all buttons to be released.</p>
   2846 <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>
   2847 
   2848 </div>
   2849 </div>
   2850 <a id="joypad_init" name="joypad_init"></a>
   2851 <h2 class="memtitle"><span class="permalink"><a href="#joypad_init">&#9670;&nbsp;</a></span>joypad_init()</h2>
   2852 
   2853 <div class="memitem">
   2854 <div class="memproto">
   2855       <table class="memname">
   2856         <tr>
   2857           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> joypad_init </td>
   2858           <td>(</td>
   2859           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2860           <td class="paramname"><em>npads</em>, </td>
   2861         </tr>
   2862         <tr>
   2863           <td class="paramkey"></td>
   2864           <td></td>
   2865           <td class="paramtype"><a class="el" href="structjoypads__t.html">joypads_t</a> *&#160;</td>
   2866           <td class="paramname"><em>joypads</em>&#160;</td>
   2867         </tr>
   2868         <tr>
   2869           <td></td>
   2870           <td>)</td>
   2871           <td></td><td></td>
   2872         </tr>
   2873       </table>
   2874 </div><div class="memdoc">
   2875 <p >Initializes <a class="el" href="structjoypads__t.html">joypads_t</a> structure for polling multiple joypads (for the GB and ones connected via SGB) </p><dl class="params"><dt>Parameters</dt><dd>
   2876   <table class="params">
   2877     <tr><td class="paramname">npads</td><td>number of joypads requested (1, 2 or 4) </td></tr>
   2878     <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>
   2879   </table>
   2880   </dd>
   2881 </dl>
   2882 <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>
   2883 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#joypad_ex">joypad_ex()</a>, <a class="el" href="structjoypads__t.html">joypads_t</a> </dd></dl>
   2884 
   2885 </div>
   2886 </div>
   2887 <a id="joypad_ex" name="joypad_ex"></a>
   2888 <h2 class="memtitle"><span class="permalink"><a href="#joypad_ex">&#9670;&nbsp;</a></span>joypad_ex()</h2>
   2889 
   2890 <div class="memitem">
   2891 <div class="memproto">
   2892       <table class="memname">
   2893         <tr>
   2894           <td class="memname">void joypad_ex </td>
   2895           <td>(</td>
   2896           <td class="paramtype"><a class="el" href="structjoypads__t.html">joypads_t</a> *&#160;</td>
   2897           <td class="paramname"><em>joypads</em></td><td>)</td>
   2898           <td></td>
   2899         </tr>
   2900       </table>
   2901 </div><div class="memdoc">
   2902 <p >Polls all avaliable joypads (for the GB and ones connected via SGB) </p><dl class="params"><dt>Parameters</dt><dd>
   2903   <table class="params">
   2904     <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="gb_8h.html#joypad_init">joypad_init()</a></td></tr>
   2905   </table>
   2906   </dd>
   2907 </dl>
   2908 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#joypad_init">joypad_init()</a>, <a class="el" href="structjoypads__t.html">joypads_t</a> </dd></dl>
   2909 
   2910 </div>
   2911 </div>
   2912 <a id="enable_interrupts" name="enable_interrupts"></a>
   2913 <h2 class="memtitle"><span class="permalink"><a href="#enable_interrupts">&#9670;&nbsp;</a></span>enable_interrupts()</h2>
   2914 
   2915 <div class="memitem">
   2916 <div class="memproto">
   2917 <table class="mlabels">
   2918   <tr>
   2919   <td class="mlabels-left">
   2920       <table class="memname">
   2921         <tr>
   2922           <td class="memname">void enable_interrupts </td>
   2923           <td>(</td>
   2924           <td class="paramtype">void&#160;</td>
   2925           <td class="paramname"></td><td>)</td>
   2926           <td></td>
   2927         </tr>
   2928       </table>
   2929   </td>
   2930   <td class="mlabels-right">
   2931 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   2932   </tr>
   2933 </table>
   2934 </div><div class="memdoc">
   2935 <p >Enables unmasked interrupts</p>
   2936 <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>
   2937 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#disable_interrupts">disable_interrupts</a>, <a class="el" href="gb_8h.html#set_interrupts">set_interrupts</a>, <a class="el" href="asm_2types_8h.html#CRITICAL">CRITICAL</a> </dd></dl>
   2938 
   2939 </div>
   2940 </div>
   2941 <a id="disable_interrupts" name="disable_interrupts"></a>
   2942 <h2 class="memtitle"><span class="permalink"><a href="#disable_interrupts">&#9670;&nbsp;</a></span>disable_interrupts()</h2>
   2943 
   2944 <div class="memitem">
   2945 <div class="memproto">
   2946 <table class="mlabels">
   2947   <tr>
   2948   <td class="mlabels-left">
   2949       <table class="memname">
   2950         <tr>
   2951           <td class="memname">void disable_interrupts </td>
   2952           <td>(</td>
   2953           <td class="paramtype">void&#160;</td>
   2954           <td class="paramname"></td><td>)</td>
   2955           <td></td>
   2956         </tr>
   2957       </table>
   2958   </td>
   2959   <td class="mlabels-right">
   2960 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   2961   </tr>
   2962 </table>
   2963 </div><div class="memdoc">
   2964 <p >Disables interrupts</p>
   2965 <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>
   2966 <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>
   2967 <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#set_interrupts">set_interrupts</a>, <a class="el" href="asm_2types_8h.html#CRITICAL">CRITICAL</a> </dd></dl>
   2968 
   2969 </div>
   2970 </div>
   2971 <a id="set_interrupts" name="set_interrupts"></a>
   2972 <h2 class="memtitle"><span class="permalink"><a href="#set_interrupts">&#9670;&nbsp;</a></span>set_interrupts()</h2>
   2973 
   2974 <div class="memitem">
   2975 <div class="memproto">
   2976       <table class="memname">
   2977         <tr>
   2978           <td class="memname">void set_interrupts </td>
   2979           <td>(</td>
   2980           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   2981           <td class="paramname"><em>flags</em></td><td>)</td>
   2982           <td></td>
   2983         </tr>
   2984       </table>
   2985 </div><div class="memdoc">
   2986 <p >Clears any pending interrupts and sets the interrupt mask register IO to flags. </p><dl class="params"><dt>Parameters</dt><dd>
   2987   <table class="params">
   2988     <tr><td class="paramname">flags</td><td>A logical OR of *_IFLAGS</td></tr>
   2989   </table>
   2990   </dd>
   2991 </dl>
   2992 <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>
   2993 <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>
   2994 <dd>
   2995 <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>
   2996 
   2997 </div>
   2998 </div>
   2999 <a id="reset" name="reset"></a>
   3000 <h2 class="memtitle"><span class="permalink"><a href="#reset">&#9670;&nbsp;</a></span>reset()</h2>
   3001 
   3002 <div class="memitem">
   3003 <div class="memproto">
   3004 <table class="mlabels">
   3005   <tr>
   3006   <td class="mlabels-left">
   3007       <table class="memname">
   3008         <tr>
   3009           <td class="memname">void reset </td>
   3010           <td>(</td>
   3011           <td class="paramtype">void&#160;</td>
   3012           <td class="paramname"></td><td>)</td>
   3013           <td></td>
   3014         </tr>
   3015       </table>
   3016   </td>
   3017   <td class="mlabels-right">
   3018 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3019   </tr>
   3020 </table>
   3021 </div><div class="memdoc">
   3022 <p >Performs a soft reset.</p>
   3023 <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>
   3024 <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>
   3025 <p >This is not the same a hard power reset. </p>
   3026 
   3027 </div>
   3028 </div>
   3029 <a id="vsync" name="vsync"></a>
   3030 <h2 class="memtitle"><span class="permalink"><a href="#vsync">&#9670;&nbsp;</a></span>vsync()</h2>
   3031 
   3032 <div class="memitem">
   3033 <div class="memproto">
   3034       <table class="memname">
   3035         <tr>
   3036           <td class="memname">void vsync </td>
   3037           <td>(</td>
   3038           <td class="paramtype">void&#160;</td>
   3039           <td class="paramname"></td><td>)</td>
   3040           <td></td>
   3041         </tr>
   3042       </table>
   3043 </div><div class="memdoc">
   3044 <p >HALTs the CPU and waits for the vertical blank interrupt and then returns when all registered VBL ISRs have completed.</p>
   3045 <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>
   3046 <p >Warning: If the VBL interrupt is disabled, this function will never return. If the screen is off this function returns immediately. </p>
   3047 
   3048 </div>
   3049 </div>
   3050 <a id="wait_vbl_done" name="wait_vbl_done"></a>
   3051 <h2 class="memtitle"><span class="permalink"><a href="#wait_vbl_done">&#9670;&nbsp;</a></span>wait_vbl_done()</h2>
   3052 
   3053 <div class="memitem">
   3054 <div class="memproto">
   3055       <table class="memname">
   3056         <tr>
   3057           <td class="memname">void wait_vbl_done </td>
   3058           <td>(</td>
   3059           <td class="paramtype">void&#160;</td>
   3060           <td class="paramname"></td><td>)</td>
   3061           <td></td>
   3062         </tr>
   3063       </table>
   3064 </div><div class="memdoc">
   3065 <p >Obsolete. This function has been replaced by <a class="el" href="gb_8h.html#vsync">vsync()</a>, which has identical behavior. </p>
   3066 
   3067 </div>
   3068 </div>
   3069 <a id="display_off" name="display_off"></a>
   3070 <h2 class="memtitle"><span class="permalink"><a href="#display_off">&#9670;&nbsp;</a></span>display_off()</h2>
   3071 
   3072 <div class="memitem">
   3073 <div class="memproto">
   3074       <table class="memname">
   3075         <tr>
   3076           <td class="memname">void display_off </td>
   3077           <td>(</td>
   3078           <td class="paramtype">void&#160;</td>
   3079           <td class="paramname"></td><td>)</td>
   3080           <td></td>
   3081         </tr>
   3082       </table>
   3083 </div><div class="memdoc">
   3084 <p >Turns the display off.</p>
   3085 <p >Waits until the VBL before turning the display off. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#DISPLAY_ON">DISPLAY_ON</a> </dd></dl>
   3086 
   3087 </div>
   3088 </div>
   3089 <a id="refresh_OAM" name="refresh_OAM"></a>
   3090 <h2 class="memtitle"><span class="permalink"><a href="#refresh_OAM">&#9670;&nbsp;</a></span>refresh_OAM()</h2>
   3091 
   3092 <div class="memitem">
   3093 <div class="memproto">
   3094       <table class="memname">
   3095         <tr>
   3096           <td class="memname">void refresh_OAM </td>
   3097           <td>(</td>
   3098           <td class="paramtype">void&#160;</td>
   3099           <td class="paramname"></td><td>)</td>
   3100           <td></td>
   3101         </tr>
   3102       </table>
   3103 </div><div class="memdoc">
   3104 <p >Copies data from shadow OAM to OAM </p>
   3105 
   3106 </div>
   3107 </div>
   3108 <a id="hiramcpy" name="hiramcpy"></a>
   3109 <h2 class="memtitle"><span class="permalink"><a href="#hiramcpy">&#9670;&nbsp;</a></span>hiramcpy()</h2>
   3110 
   3111 <div class="memitem">
   3112 <div class="memproto">
   3113       <table class="memname">
   3114         <tr>
   3115           <td class="memname">void hiramcpy </td>
   3116           <td>(</td>
   3117           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3118           <td class="paramname"><em>dst</em>, </td>
   3119         </tr>
   3120         <tr>
   3121           <td class="paramkey"></td>
   3122           <td></td>
   3123           <td class="paramtype">const void *&#160;</td>
   3124           <td class="paramname"><em>src</em>, </td>
   3125         </tr>
   3126         <tr>
   3127           <td class="paramkey"></td>
   3128           <td></td>
   3129           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3130           <td class="paramname"><em>n</em>&#160;</td>
   3131         </tr>
   3132         <tr>
   3133           <td></td>
   3134           <td>)</td>
   3135           <td></td><td></td>
   3136         </tr>
   3137       </table>
   3138 </div><div class="memdoc">
   3139 <p >Copies data from somewhere in the lower address space to part of hi-ram. </p><dl class="params"><dt>Parameters</dt><dd>
   3140   <table class="params">
   3141     <tr><td class="paramname">dst</td><td>Offset in high ram (0xFF00 and above) to copy to. </td></tr>
   3142     <tr><td class="paramname">src</td><td>Area to copy from </td></tr>
   3143     <tr><td class="paramname">n</td><td>Number of bytes to copy. </td></tr>
   3144   </table>
   3145   </dd>
   3146 </dl>
   3147 
   3148 </div>
   3149 </div>
   3150 <a id="set_vram_byte" name="set_vram_byte"></a>
   3151 <h2 class="memtitle"><span class="permalink"><a href="#set_vram_byte">&#9670;&nbsp;</a></span>set_vram_byte()</h2>
   3152 
   3153 <div class="memitem">
   3154 <div class="memproto">
   3155       <table class="memname">
   3156         <tr>
   3157           <td class="memname">void set_vram_byte </td>
   3158           <td>(</td>
   3159           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3160           <td class="paramname"><em>addr</em>, </td>
   3161         </tr>
   3162         <tr>
   3163           <td class="paramkey"></td>
   3164           <td></td>
   3165           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3166           <td class="paramname"><em>v</em>&#160;</td>
   3167         </tr>
   3168         <tr>
   3169           <td></td>
   3170           <td>)</td>
   3171           <td></td><td></td>
   3172         </tr>
   3173       </table>
   3174 </div><div class="memdoc">
   3175 <p >Set byte in vram at given memory location</p>
   3176 <dl class="params"><dt>Parameters</dt><dd>
   3177   <table class="params">
   3178     <tr><td class="paramname">addr</td><td>address to write to </td></tr>
   3179     <tr><td class="paramname">v</td><td>value </td></tr>
   3180   </table>
   3181   </dd>
   3182 </dl>
   3183 
   3184 </div>
   3185 </div>
   3186 <a id="get_vram_byte" name="get_vram_byte"></a>
   3187 <h2 class="memtitle"><span class="permalink"><a href="#get_vram_byte">&#9670;&nbsp;</a></span>get_vram_byte()</h2>
   3188 
   3189 <div class="memitem">
   3190 <div class="memproto">
   3191       <table class="memname">
   3192         <tr>
   3193           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_vram_byte </td>
   3194           <td>(</td>
   3195           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3196           <td class="paramname"><em>addr</em></td><td>)</td>
   3197           <td></td>
   3198         </tr>
   3199       </table>
   3200 </div><div class="memdoc">
   3201 <p >Get byte from vram at given memory location </p><dl class="params"><dt>Parameters</dt><dd>
   3202   <table class="params">
   3203     <tr><td class="paramname">addr</td><td>address to read from </td></tr>
   3204   </table>
   3205   </dd>
   3206 </dl>
   3207 <dl class="section return"><dt>Returns</dt><dd>read value</dd></dl>
   3208 <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>
   3209 
   3210 </div>
   3211 </div>
   3212 <a id="get_bkg_xy_addr" name="get_bkg_xy_addr"></a>
   3213 <h2 class="memtitle"><span class="permalink"><a href="#get_bkg_xy_addr">&#9670;&nbsp;</a></span>get_bkg_xy_addr()</h2>
   3214 
   3215 <div class="memitem">
   3216 <div class="memproto">
   3217       <table class="memname">
   3218         <tr>
   3219           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> * get_bkg_xy_addr </td>
   3220           <td>(</td>
   3221           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3222           <td class="paramname"><em>x</em>, </td>
   3223         </tr>
   3224         <tr>
   3225           <td class="paramkey"></td>
   3226           <td></td>
   3227           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3228           <td class="paramname"><em>y</em>&#160;</td>
   3229         </tr>
   3230         <tr>
   3231           <td></td>
   3232           <td>)</td>
   3233           <td></td><td></td>
   3234         </tr>
   3235       </table>
   3236 </div><div class="memdoc">
   3237 <p >Get address of X,Y tile of background map </p>
   3238 
   3239 </div>
   3240 </div>
   3241 <a id="set_2bpp_palette" name="set_2bpp_palette"></a>
   3242 <h2 class="memtitle"><span class="permalink"><a href="#set_2bpp_palette">&#9670;&nbsp;</a></span>set_2bpp_palette()</h2>
   3243 
   3244 <div class="memitem">
   3245 <div class="memproto">
   3246 <table class="mlabels">
   3247   <tr>
   3248   <td class="mlabels-left">
   3249       <table class="memname">
   3250         <tr>
   3251           <td class="memname">void set_2bpp_palette </td>
   3252           <td>(</td>
   3253           <td class="paramtype"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td>
   3254           <td class="paramname"><em>palette</em></td><td>)</td>
   3255           <td></td>
   3256         </tr>
   3257       </table>
   3258   </td>
   3259   <td class="mlabels-right">
   3260 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3261   </tr>
   3262 </table>
   3263 </div><div class="memdoc">
   3264 <p >Sets palette for 2bpp color translation for GG/SMS, does nothing on GB </p>
   3265 
   3266 </div>
   3267 </div>
   3268 <a id="set_1bpp_colors_ex" name="set_1bpp_colors_ex"></a>
   3269 <h2 class="memtitle"><span class="permalink"><a href="#set_1bpp_colors_ex">&#9670;&nbsp;</a></span>set_1bpp_colors_ex()</h2>
   3270 
   3271 <div class="memitem">
   3272 <div class="memproto">
   3273       <table class="memname">
   3274         <tr>
   3275           <td class="memname">void set_1bpp_colors_ex </td>
   3276           <td>(</td>
   3277           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3278           <td class="paramname"><em>fgcolor</em>, </td>
   3279         </tr>
   3280         <tr>
   3281           <td class="paramkey"></td>
   3282           <td></td>
   3283           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3284           <td class="paramname"><em>bgcolor</em>, </td>
   3285         </tr>
   3286         <tr>
   3287           <td class="paramkey"></td>
   3288           <td></td>
   3289           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3290           <td class="paramname"><em>mode</em>&#160;</td>
   3291         </tr>
   3292         <tr>
   3293           <td></td>
   3294           <td>)</td>
   3295           <td></td><td></td>
   3296         </tr>
   3297       </table>
   3298 </div><div class="memdoc">
   3299 <p >Sets the Foreground and Background colors used by the set_*_1bpp_*() functions </p><dl class="params"><dt>Parameters</dt><dd>
   3300   <table class="params">
   3301     <tr><td class="paramname">fgcolor</td><td>Foreground color </td></tr>
   3302     <tr><td class="paramname">bgcolor</td><td>Background color </td></tr>
   3303     <tr><td class="paramname">mode</td><td>Draw Mode</td></tr>
   3304   </table>
   3305   </dd>
   3306 </dl>
   3307 <p>See <a class="el" href="sms_8h.html#set_1bpp_colors">set_1bpp_colors</a> for details. </p>
   3308 
   3309 </div>
   3310 </div>
   3311 <a id="set_1bpp_colors" name="set_1bpp_colors"></a>
   3312 <h2 class="memtitle"><span class="permalink"><a href="#set_1bpp_colors">&#9670;&nbsp;</a></span>set_1bpp_colors()</h2>
   3313 
   3314 <div class="memitem">
   3315 <div class="memproto">
   3316 <table class="mlabels">
   3317   <tr>
   3318   <td class="mlabels-left">
   3319       <table class="memname">
   3320         <tr>
   3321           <td class="memname">void set_1bpp_colors </td>
   3322           <td>(</td>
   3323           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3324           <td class="paramname"><em>fgcolor</em>, </td>
   3325         </tr>
   3326         <tr>
   3327           <td class="paramkey"></td>
   3328           <td></td>
   3329           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3330           <td class="paramname"><em>bgcolor</em>&#160;</td>
   3331         </tr>
   3332         <tr>
   3333           <td></td>
   3334           <td>)</td>
   3335           <td></td><td></td>
   3336         </tr>
   3337       </table>
   3338   </td>
   3339   <td class="mlabels-right">
   3340 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3341   </tr>
   3342 </table>
   3343 </div><div class="memdoc">
   3344 <p >Sets the Foreground and Background colors used by the set_*_1bpp_*() functions </p><dl class="params"><dt>Parameters</dt><dd>
   3345   <table class="params">
   3346     <tr><td class="paramname">fgcolor</td><td>Foreground color to use </td></tr>
   3347     <tr><td class="paramname">bgcolor</td><td>Background color to use</td></tr>
   3348   </table>
   3349   </dd>
   3350 </dl>
   3351 <p>The default colors are: </p><ul>
   3352 <li>Foreground: DMG_BLACK </li>
   3353 <li>Background: DMG_WHITE</li>
   3354 </ul>
   3355 <p>Example: </p><div class="fragment"><div class="line"><span class="comment">// Use DMG_BLACK as the Foreground color and DMG_LITE_GRAY</span></div>
   3356 <div class="line"><span class="comment">// as the Background color when loading 1bpp tile data.</span></div>
   3357 <div class="line"><a class="code hl_function" href="gb_8h.html#set_1bpp_colors">set_1bpp_colors</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_LITE_GRAY">DMG_LITE_GRAY</a>);</div>
   3358 <div class="ttc" id="agb_8h_html_set_1bpp_colors"><div class="ttname"><a href="gb_8h.html#set_1bpp_colors">set_1bpp_colors</a></div><div class="ttdeci">void set_1bpp_colors(uint8_t fgcolor, uint8_t bgcolor)</div><div class="ttdef"><b>Definition:</b> gb.h:1038</div></div>
   3359 </div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#DMG_BLACK">DMG_BLACK</a>, <a class="el" href="gb_8h.html#DMG_DARK_GRAY">DMG_DARK_GRAY</a>, <a class="el" href="gb_8h.html#DMG_LITE_GRAY">DMG_LITE_GRAY</a>, <a class="el" href="gb_8h.html#DMG_WHITE">DMG_WHITE</a> </dd>
   3360 <dd>
   3361 <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>, <a class="el" href="gb_8h.html#set_sprite_1bpp_data">set_sprite_1bpp_data</a> </dd></dl>
   3362 
   3363 </div>
   3364 </div>
   3365 <a id="set_bkg_data" name="set_bkg_data"></a>
   3366 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_data">&#9670;&nbsp;</a></span>set_bkg_data()</h2>
   3367 
   3368 <div class="memitem">
   3369 <div class="memproto">
   3370       <table class="memname">
   3371         <tr>
   3372           <td class="memname">void set_bkg_data </td>
   3373           <td>(</td>
   3374           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3375           <td class="paramname"><em>first_tile</em>, </td>
   3376         </tr>
   3377         <tr>
   3378           <td class="paramkey"></td>
   3379           <td></td>
   3380           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3381           <td class="paramname"><em>nb_tiles</em>, </td>
   3382         </tr>
   3383         <tr>
   3384           <td class="paramkey"></td>
   3385           <td></td>
   3386           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3387           <td class="paramname"><em>data</em>&#160;</td>
   3388         </tr>
   3389         <tr>
   3390           <td></td>
   3391           <td>)</td>
   3392           <td></td><td></td>
   3393         </tr>
   3394       </table>
   3395 </div><div class="memdoc">
   3396 <p >Sets VRAM Tile Pattern data for the Background / Window</p>
   3397 <dl class="params"><dt>Parameters</dt><dd>
   3398   <table class="params">
   3399     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   3400     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   3401     <tr><td class="paramname">data</td><td>Pointer to (2 bpp) source tile data</td></tr>
   3402   </table>
   3403   </dd>
   3404 </dl>
   3405 <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>
   3406 <dl class="section note"><dt>Note</dt><dd>Sprite Tiles 128-255 share the same memory region as Background Tiles 128-255.</dd></dl>
   3407 <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>
   3408 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_0">VBK_BANK_0</a> indicates the first bank </li>
   3409 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_1">VBK_BANK_1</a> indicates the second</li>
   3410 </ul>
   3411 <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>
   3412 
   3413 </div>
   3414 </div>
   3415 <a id="set_bkg_1bpp_data" name="set_bkg_1bpp_data"></a>
   3416 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_1bpp_data">&#9670;&nbsp;</a></span>set_bkg_1bpp_data()</h2>
   3417 
   3418 <div class="memitem">
   3419 <div class="memproto">
   3420       <table class="memname">
   3421         <tr>
   3422           <td class="memname">void set_bkg_1bpp_data </td>
   3423           <td>(</td>
   3424           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3425           <td class="paramname"><em>first_tile</em>, </td>
   3426         </tr>
   3427         <tr>
   3428           <td class="paramkey"></td>
   3429           <td></td>
   3430           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3431           <td class="paramname"><em>nb_tiles</em>, </td>
   3432         </tr>
   3433         <tr>
   3434           <td class="paramkey"></td>
   3435           <td></td>
   3436           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3437           <td class="paramname"><em>data</em>&#160;</td>
   3438         </tr>
   3439         <tr>
   3440           <td></td>
   3441           <td>)</td>
   3442           <td></td><td></td>
   3443         </tr>
   3444       </table>
   3445 </div><div class="memdoc">
   3446 <p >Sets VRAM Tile Pattern data for the Background / Window using 1bpp source data</p>
   3447 <dl class="params"><dt>Parameters</dt><dd>
   3448   <table class="params">
   3449     <tr><td class="paramname">first_tile</td><td>Index of the first Tile to write </td></tr>
   3450     <tr><td class="paramname">nb_tiles</td><td>Number of Tiles to write </td></tr>
   3451     <tr><td class="paramname">data</td><td>Pointer to (1bpp) source Tile Pattern data</td></tr>
   3452   </table>
   3453   </dd>
   3454 </dl>
   3455 <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>
   3456 <p >For a given bit that represent a pixel: </p><ul>
   3457 <li>0 will be expanded into the Background color </li>
   3458 <li>1 will be expanded into the Foreground color</li>
   3459 </ul>
   3460 <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>
   3461 <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>
   3462 <dd>
   3463 <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>
   3464 
   3465 </div>
   3466 </div>
   3467 <a id="get_bkg_data" name="get_bkg_data"></a>
   3468 <h2 class="memtitle"><span class="permalink"><a href="#get_bkg_data">&#9670;&nbsp;</a></span>get_bkg_data()</h2>
   3469 
   3470 <div class="memitem">
   3471 <div class="memproto">
   3472       <table class="memname">
   3473         <tr>
   3474           <td class="memname">void get_bkg_data </td>
   3475           <td>(</td>
   3476           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3477           <td class="paramname"><em>first_tile</em>, </td>
   3478         </tr>
   3479         <tr>
   3480           <td class="paramkey"></td>
   3481           <td></td>
   3482           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3483           <td class="paramname"><em>nb_tiles</em>, </td>
   3484         </tr>
   3485         <tr>
   3486           <td class="paramkey"></td>
   3487           <td></td>
   3488           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3489           <td class="paramname"><em>data</em>&#160;</td>
   3490         </tr>
   3491         <tr>
   3492           <td></td>
   3493           <td>)</td>
   3494           <td></td><td></td>
   3495         </tr>
   3496       </table>
   3497 </div><div class="memdoc">
   3498 <p >Copies from Background / Window VRAM Tile Pattern data into a buffer</p>
   3499 <dl class="params"><dt>Parameters</dt><dd>
   3500   <table class="params">
   3501     <tr><td class="paramname">first_tile</td><td>Index of the first Tile to read from </td></tr>
   3502     <tr><td class="paramname">nb_tiles</td><td>Number of Tiles to read </td></tr>
   3503     <tr><td class="paramname">data</td><td>Pointer to destination buffer for Tile Pattern data</td></tr>
   3504   </table>
   3505   </dd>
   3506 </dl>
   3507 <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>
   3508 <p>Copies <b>nb_tiles</b> tiles from VRAM starting at <b>first_tile</b>, Tile data is copied into <b>data</b>.</p>
   3509 <p >Each Tile is 16 bytes, so the buffer pointed to by <b>data</b> should be at least <b>nb_tiles</b> x 16 bytes in size.</p>
   3510 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#get_win_data">get_win_data</a>, <a class="el" href="gb_8h.html#get_data">get_data</a> </dd></dl>
   3511 
   3512 </div>
   3513 </div>
   3514 <a id="set_bkg_tiles" name="set_bkg_tiles"></a>
   3515 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_tiles">&#9670;&nbsp;</a></span>set_bkg_tiles()</h2>
   3516 
   3517 <div class="memitem">
   3518 <div class="memproto">
   3519       <table class="memname">
   3520         <tr>
   3521           <td class="memname">void set_bkg_tiles </td>
   3522           <td>(</td>
   3523           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3524           <td class="paramname"><em>x</em>, </td>
   3525         </tr>
   3526         <tr>
   3527           <td class="paramkey"></td>
   3528           <td></td>
   3529           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3530           <td class="paramname"><em>y</em>, </td>
   3531         </tr>
   3532         <tr>
   3533           <td class="paramkey"></td>
   3534           <td></td>
   3535           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3536           <td class="paramname"><em>w</em>, </td>
   3537         </tr>
   3538         <tr>
   3539           <td class="paramkey"></td>
   3540           <td></td>
   3541           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3542           <td class="paramname"><em>h</em>, </td>
   3543         </tr>
   3544         <tr>
   3545           <td class="paramkey"></td>
   3546           <td></td>
   3547           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3548           <td class="paramname"><em>tiles</em>&#160;</td>
   3549         </tr>
   3550         <tr>
   3551           <td></td>
   3552           <td>)</td>
   3553           <td></td><td></td>
   3554         </tr>
   3555       </table>
   3556 </div><div class="memdoc">
   3557 <p >Sets a rectangular region of Background Tile Map.</p>
   3558 <dl class="params"><dt>Parameters</dt><dd>
   3559   <table class="params">
   3560     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3561     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3562     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   3563     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   3564     <tr><td class="paramname">tiles</td><td>Pointer to source tile map data</td></tr>
   3565   </table>
   3566   </dd>
   3567 </dl>
   3568 <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>
   3569 <p >Use <a class="el" href="sms_8h.html#set_bkg_submap">set_bkg_submap()</a> instead when: </p><ul>
   3570 <li>Source map is wider than 32 tiles. </li>
   3571 <li>Writing a width that does not match the source map width <b>and</b> more than one row high at a time.</li>
   3572 </ul>
   3573 <p>One byte per source tile map entry.</p>
   3574 <p >Writes that exceed coordinate 31 on the x or y axis will wrap around to the Left and Top edges.</p>
   3575 <dl class="section note"><dt>Note</dt><dd>Patterns 128-255 overlap with patterns 128-255 of the sprite Tile Pattern table.</dd></dl>
   3576 <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>
   3577 <li>VBK_REG = <a class="el" href="sms_2hardware_8h.html#VBK_TILES">VBK_TILES</a> Tile Numbers are written </li>
   3578 <li>VBK_REG = <a class="el" href="sms_2hardware_8h.html#VBK_ATTRIBUTES">VBK_ATTRIBUTES</a> Tile Attributes are written</li>
   3579 </ul>
   3580 <p>GBC Tile Attributes are defined as: </p><ul>
   3581 <li>Bit 7 - Priority flag. When this is set, it puts the tile above the sprites with colour 0 being transparent. <br  />
   3582  0: Below sprites <br  />
   3583  1: Above sprites <br  />
   3584  Note: <a class="el" href="sms_8h.html#SHOW_BKG">SHOW_BKG</a> needs to be set for these priorities to take place. </li>
   3585 <li>Bit 6 - Vertical flip. Dictates which way up the tile is drawn vertically. <br  />
   3586  0: Normal <br  />
   3587  1: Flipped Vertically </li>
   3588 <li>Bit 5 - Horizontal flip. Dictates which way up the tile is drawn horizontally. <br  />
   3589  0: Normal <br  />
   3590  1: Flipped Horizontally </li>
   3591 <li>Bit 4 - Not used </li>
   3592 <li>Bit 3 - Character Bank specification. Dictates from which bank of Background Tile Patterns the tile is taken. <br  />
   3593  0: Bank 0 <br  />
   3594  1: Bank 1 </li>
   3595 <li>Bit 2 - See bit 0. </li>
   3596 <li>Bit 1 - See bit 0. </li>
   3597 <li>Bit 0 - Bits 0-2 indicate which of the 7 BKG colour palettes the tile is assigned.</li>
   3598 </ul>
   3599 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   3600 <dd>
   3601 <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>
   3602 
   3603 </div>
   3604 </div>
   3605 <a id="set_bkg_based_tiles" name="set_bkg_based_tiles"></a>
   3606 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_based_tiles">&#9670;&nbsp;</a></span>set_bkg_based_tiles()</h2>
   3607 
   3608 <div class="memitem">
   3609 <div class="memproto">
   3610 <table class="mlabels">
   3611   <tr>
   3612   <td class="mlabels-left">
   3613       <table class="memname">
   3614         <tr>
   3615           <td class="memname">void set_bkg_based_tiles </td>
   3616           <td>(</td>
   3617           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3618           <td class="paramname"><em>x</em>, </td>
   3619         </tr>
   3620         <tr>
   3621           <td class="paramkey"></td>
   3622           <td></td>
   3623           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3624           <td class="paramname"><em>y</em>, </td>
   3625         </tr>
   3626         <tr>
   3627           <td class="paramkey"></td>
   3628           <td></td>
   3629           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3630           <td class="paramname"><em>w</em>, </td>
   3631         </tr>
   3632         <tr>
   3633           <td class="paramkey"></td>
   3634           <td></td>
   3635           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3636           <td class="paramname"><em>h</em>, </td>
   3637         </tr>
   3638         <tr>
   3639           <td class="paramkey"></td>
   3640           <td></td>
   3641           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3642           <td class="paramname"><em>tiles</em>, </td>
   3643         </tr>
   3644         <tr>
   3645           <td class="paramkey"></td>
   3646           <td></td>
   3647           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3648           <td class="paramname"><em>base_tile</em>&#160;</td>
   3649         </tr>
   3650         <tr>
   3651           <td></td>
   3652           <td>)</td>
   3653           <td></td><td></td>
   3654         </tr>
   3655       </table>
   3656   </td>
   3657   <td class="mlabels-right">
   3658 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3659   </tr>
   3660 </table>
   3661 </div><div class="memdoc">
   3662 <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>
   3663 <dl class="params"><dt>Parameters</dt><dd>
   3664   <table class="params">
   3665     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3666     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3667     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   3668     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   3669     <tr><td class="paramname">tiles</td><td>Pointer to source tile map data </td></tr>
   3670     <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>
   3671   </table>
   3672   </dd>
   3673 </dl>
   3674 <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>
   3675 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_bkg_tiles">set_bkg_tiles</a> for more details </dd></dl>
   3676 
   3677 </div>
   3678 </div>
   3679 <a id="set_bkg_attributes" name="set_bkg_attributes"></a>
   3680 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_attributes">&#9670;&nbsp;</a></span>set_bkg_attributes()</h2>
   3681 
   3682 <div class="memitem">
   3683 <div class="memproto">
   3684 <table class="mlabels">
   3685   <tr>
   3686   <td class="mlabels-left">
   3687       <table class="memname">
   3688         <tr>
   3689           <td class="memname">void set_bkg_attributes </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>x</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>y</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>w</em>, </td>
   3705         </tr>
   3706         <tr>
   3707           <td class="paramkey"></td>
   3708           <td></td>
   3709           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3710           <td class="paramname"><em>h</em>, </td>
   3711         </tr>
   3712         <tr>
   3713           <td class="paramkey"></td>
   3714           <td></td>
   3715           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3716           <td class="paramname"><em>tiles</em>&#160;</td>
   3717         </tr>
   3718         <tr>
   3719           <td></td>
   3720           <td>)</td>
   3721           <td></td><td></td>
   3722         </tr>
   3723       </table>
   3724   </td>
   3725   <td class="mlabels-right">
   3726 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3727   </tr>
   3728 </table>
   3729 </div><div class="memdoc">
   3730 <p >Sets a rectangular region of Background Tile Map Attributes.</p>
   3731 <dl class="params"><dt>Parameters</dt><dd>
   3732   <table class="params">
   3733     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3734     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   3735     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   3736     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   3737     <tr><td class="paramname">tiles</td><td>Pointer to source tile map attribute data</td></tr>
   3738   </table>
   3739   </dd>
   3740 </dl>
   3741 <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>
   3742 <p >Use <a class="el" href="gb_8h.html#set_bkg_submap_attributes">set_bkg_submap_attributes()</a> instead when: </p><ul>
   3743 <li>Source map is wider than 32 tiles. </li>
   3744 <li>Writing a width that does not match the source map width <b>and</b> more than one row high at a time.</li>
   3745 </ul>
   3746 <p>One byte per source tile map entry.</p>
   3747 <p >Writes that exceed coordinate 31 on the x or y axis will wrap around to the Left and Top edges.</p>
   3748 <p >GBC Tile Attributes are defined as: </p><ul>
   3749 <li>Bit 7 - Priority flag. When this is set, it puts the tile above the sprites with colour 0 being transparent. <br  />
   3750  0: Below sprites <br  />
   3751  1: Above sprites <br  />
   3752  Note: <a class="el" href="sms_8h.html#SHOW_BKG">SHOW_BKG</a> needs to be set for these priorities to take place. </li>
   3753 <li>Bit 6 - Vertical flip. Dictates which way up the tile is drawn vertically. <br  />
   3754  0: Normal <br  />
   3755  1: Flipped Vertically </li>
   3756 <li>Bit 5 - Horizontal flip. Dictates which way up the tile is drawn horizontally. <br  />
   3757  0: Normal <br  />
   3758  1: Flipped Horizontally </li>
   3759 <li>Bit 4 - Not used </li>
   3760 <li>Bit 3 - Character Bank specification. Dictates from which bank of Background Tile Patterns the tile is taken. <br  />
   3761  0: Bank 0 <br  />
   3762  1: Bank 1 </li>
   3763 <li>Bit 2 - See bit 0. </li>
   3764 <li>Bit 1 - See bit 0. </li>
   3765 <li>Bit 0 - Bits 0-2 indicate which of the 7 BKG colour palettes the tile is assigned.</li>
   3766 </ul>
   3767 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   3768 <dd>
   3769 <a class="el" href="gb_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="gb_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="gb_8h.html#set_tiles">set_tiles</a></dd></dl>
   3770 <dl class="section note"><dt>Note</dt><dd>On the Game Boy this is only usable in Game Boy Color mode </dd></dl>
   3771 
   3772 </div>
   3773 </div>
   3774 <a id="set_bkg_submap" name="set_bkg_submap"></a>
   3775 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_submap">&#9670;&nbsp;</a></span>set_bkg_submap()</h2>
   3776 
   3777 <div class="memitem">
   3778 <div class="memproto">
   3779 <table class="mlabels">
   3780   <tr>
   3781   <td class="mlabels-left">
   3782       <table class="memname">
   3783         <tr>
   3784           <td class="memname">void set_bkg_submap </td>
   3785           <td>(</td>
   3786           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3787           <td class="paramname"><em>x</em>, </td>
   3788         </tr>
   3789         <tr>
   3790           <td class="paramkey"></td>
   3791           <td></td>
   3792           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3793           <td class="paramname"><em>y</em>, </td>
   3794         </tr>
   3795         <tr>
   3796           <td class="paramkey"></td>
   3797           <td></td>
   3798           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3799           <td class="paramname"><em>w</em>, </td>
   3800         </tr>
   3801         <tr>
   3802           <td class="paramkey"></td>
   3803           <td></td>
   3804           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3805           <td class="paramname"><em>h</em>, </td>
   3806         </tr>
   3807         <tr>
   3808           <td class="paramkey"></td>
   3809           <td></td>
   3810           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3811           <td class="paramname"><em>map</em>, </td>
   3812         </tr>
   3813         <tr>
   3814           <td class="paramkey"></td>
   3815           <td></td>
   3816           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3817           <td class="paramname"><em>map_w</em>&#160;</td>
   3818         </tr>
   3819         <tr>
   3820           <td></td>
   3821           <td>)</td>
   3822           <td></td><td></td>
   3823         </tr>
   3824       </table>
   3825   </td>
   3826   <td class="mlabels-right">
   3827 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3828   </tr>
   3829 </table>
   3830 </div><div class="memdoc">
   3831 <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>
   3832 <dl class="params"><dt>Parameters</dt><dd>
   3833   <table class="params">
   3834     <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>
   3835     <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>
   3836     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 255 </td></tr>
   3837     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 255 </td></tr>
   3838     <tr><td class="paramname">map</td><td>Pointer to source tile map data </td></tr>
   3839     <tr><td class="paramname">map_w</td><td>Width of source tile map in tiles. Range 1 - 255</td></tr>
   3840   </table>
   3841   </dd>
   3842 </dl>
   3843 <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>
   3844 <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>
   3845 <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>
   3846 <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>
   3847 <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>
   3848 <p >One byte per source tile map entry.</p>
   3849 <p >Writes that exceed coordinate 31 on the x or y axis will wrap around to the Left and Top edges.</p>
   3850 <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>
   3851 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   3852 <dd>
   3853 <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>
   3854 
   3855 </div>
   3856 </div>
   3857 <a id="set_bkg_based_submap" name="set_bkg_based_submap"></a>
   3858 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_based_submap">&#9670;&nbsp;</a></span>set_bkg_based_submap()</h2>
   3859 
   3860 <div class="memitem">
   3861 <div class="memproto">
   3862 <table class="mlabels">
   3863   <tr>
   3864   <td class="mlabels-left">
   3865       <table class="memname">
   3866         <tr>
   3867           <td class="memname">void set_bkg_based_submap </td>
   3868           <td>(</td>
   3869           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3870           <td class="paramname"><em>x</em>, </td>
   3871         </tr>
   3872         <tr>
   3873           <td class="paramkey"></td>
   3874           <td></td>
   3875           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3876           <td class="paramname"><em>y</em>, </td>
   3877         </tr>
   3878         <tr>
   3879           <td class="paramkey"></td>
   3880           <td></td>
   3881           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3882           <td class="paramname"><em>w</em>, </td>
   3883         </tr>
   3884         <tr>
   3885           <td class="paramkey"></td>
   3886           <td></td>
   3887           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3888           <td class="paramname"><em>h</em>, </td>
   3889         </tr>
   3890         <tr>
   3891           <td class="paramkey"></td>
   3892           <td></td>
   3893           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3894           <td class="paramname"><em>map</em>, </td>
   3895         </tr>
   3896         <tr>
   3897           <td class="paramkey"></td>
   3898           <td></td>
   3899           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3900           <td class="paramname"><em>map_w</em>, </td>
   3901         </tr>
   3902         <tr>
   3903           <td class="paramkey"></td>
   3904           <td></td>
   3905           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3906           <td class="paramname"><em>base_tile</em>&#160;</td>
   3907         </tr>
   3908         <tr>
   3909           <td></td>
   3910           <td>)</td>
   3911           <td></td><td></td>
   3912         </tr>
   3913       </table>
   3914   </td>
   3915   <td class="mlabels-right">
   3916 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3917   </tr>
   3918 </table>
   3919 </div><div class="memdoc">
   3920 <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>
   3921 <dl class="params"><dt>Parameters</dt><dd>
   3922   <table class="params">
   3923     <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>
   3924     <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>
   3925     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 255 </td></tr>
   3926     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 255 </td></tr>
   3927     <tr><td class="paramname">map</td><td>Pointer to source tile map data </td></tr>
   3928     <tr><td class="paramname">map_w</td><td>Width of source tile map in tiles. Range 1 - 255 </td></tr>
   3929     <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>
   3930   </table>
   3931   </dd>
   3932 </dl>
   3933 <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>
   3934 <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>
   3935 
   3936 </div>
   3937 </div>
   3938 <a id="set_bkg_submap_attributes" name="set_bkg_submap_attributes"></a>
   3939 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_submap_attributes">&#9670;&nbsp;</a></span>set_bkg_submap_attributes()</h2>
   3940 
   3941 <div class="memitem">
   3942 <div class="memproto">
   3943 <table class="mlabels">
   3944   <tr>
   3945   <td class="mlabels-left">
   3946       <table class="memname">
   3947         <tr>
   3948           <td class="memname">void set_bkg_submap_attributes </td>
   3949           <td>(</td>
   3950           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3951           <td class="paramname"><em>x</em>, </td>
   3952         </tr>
   3953         <tr>
   3954           <td class="paramkey"></td>
   3955           <td></td>
   3956           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3957           <td class="paramname"><em>y</em>, </td>
   3958         </tr>
   3959         <tr>
   3960           <td class="paramkey"></td>
   3961           <td></td>
   3962           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3963           <td class="paramname"><em>w</em>, </td>
   3964         </tr>
   3965         <tr>
   3966           <td class="paramkey"></td>
   3967           <td></td>
   3968           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3969           <td class="paramname"><em>h</em>, </td>
   3970         </tr>
   3971         <tr>
   3972           <td class="paramkey"></td>
   3973           <td></td>
   3974           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   3975           <td class="paramname"><em>map</em>, </td>
   3976         </tr>
   3977         <tr>
   3978           <td class="paramkey"></td>
   3979           <td></td>
   3980           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   3981           <td class="paramname"><em>map_w</em>&#160;</td>
   3982         </tr>
   3983         <tr>
   3984           <td></td>
   3985           <td>)</td>
   3986           <td></td><td></td>
   3987         </tr>
   3988       </table>
   3989   </td>
   3990   <td class="mlabels-right">
   3991 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   3992   </tr>
   3993 </table>
   3994 </div><div class="memdoc">
   3995 <p >Sets a rectangular area of the Background Tile Map Attributes using a sub-region from a source tile attribute map. Useful for scrolling implementations of maps larger than 32 x 32 tiles.</p>
   3996 <dl class="params"><dt>Parameters</dt><dd>
   3997   <table class="params">
   3998     <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>
   3999     <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>
   4000     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 255 </td></tr>
   4001     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 255 </td></tr>
   4002     <tr><td class="paramname">map</td><td>Pointer to source tile map attribute data </td></tr>
   4003     <tr><td class="paramname">map_w</td><td>Width of source tile map in tiles. Range 1 - 255</td></tr>
   4004   </table>
   4005   </dd>
   4006 </dl>
   4007 <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>
   4008 <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>
   4009 <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>
   4010 <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>
   4011 <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>
   4012 <p >One byte per source tile map entry.</p>
   4013 <p >Writes that exceed coordinate 31 on the x or y axis will wrap around to the Left and Top edges.</p>
   4014 <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>
   4015 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_BKG">SHOW_BKG</a> </dd>
   4016 <dd>
   4017 <a class="el" href="gb_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="gb_8h.html#set_bkg_attributes">set_bkg_attributes</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>
   4018 <dl class="section note"><dt>Note</dt><dd>On the Game Boy this is only usable in Game Boy Color mode </dd></dl>
   4019 
   4020 </div>
   4021 </div>
   4022 <a id="get_bkg_tiles" name="get_bkg_tiles"></a>
   4023 <h2 class="memtitle"><span class="permalink"><a href="#get_bkg_tiles">&#9670;&nbsp;</a></span>get_bkg_tiles()</h2>
   4024 
   4025 <div class="memitem">
   4026 <div class="memproto">
   4027       <table class="memname">
   4028         <tr>
   4029           <td class="memname">void get_bkg_tiles </td>
   4030           <td>(</td>
   4031           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_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="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4038           <td class="paramname"><em>y</em>, </td>
   4039         </tr>
   4040         <tr>
   4041           <td class="paramkey"></td>
   4042           <td></td>
   4043           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4044           <td class="paramname"><em>w</em>, </td>
   4045         </tr>
   4046         <tr>
   4047           <td class="paramkey"></td>
   4048           <td></td>
   4049           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4050           <td class="paramname"><em>h</em>, </td>
   4051         </tr>
   4052         <tr>
   4053           <td class="paramkey"></td>
   4054           <td></td>
   4055           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4056           <td class="paramname"><em>tiles</em>&#160;</td>
   4057         </tr>
   4058         <tr>
   4059           <td></td>
   4060           <td>)</td>
   4061           <td></td><td></td>
   4062         </tr>
   4063       </table>
   4064 </div><div class="memdoc">
   4065 <p >Copies a rectangular region of Background Tile Map entries into a buffer.</p>
   4066 <dl class="params"><dt>Parameters</dt><dd>
   4067   <table class="params">
   4068     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   4069     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   4070     <tr><td class="paramname">w</td><td>Width of area to copy in tiles. Range 0 - 31 </td></tr>
   4071     <tr><td class="paramname">h</td><td>Height of area to copy in tiles. Range 0 - 31 </td></tr>
   4072     <tr><td class="paramname">tiles</td><td>Pointer to destination buffer for Tile Map data</td></tr>
   4073   </table>
   4074   </dd>
   4075 </dl>
   4076 <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>
   4077 <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>
   4078 <p >One byte per tile.</p>
   4079 <p >The buffer pointed to by <b>tiles</b> should be at least <b>x</b> x <b>y</b> bytes in size.</p>
   4080 <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>
   4081 
   4082 </div>
   4083 </div>
   4084 <a id="set_bkg_tile_xy" name="set_bkg_tile_xy"></a>
   4085 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_tile_xy">&#9670;&nbsp;</a></span>set_bkg_tile_xy()</h2>
   4086 
   4087 <div class="memitem">
   4088 <div class="memproto">
   4089       <table class="memname">
   4090         <tr>
   4091           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> * set_bkg_tile_xy </td>
   4092           <td>(</td>
   4093           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4094           <td class="paramname"><em>x</em>, </td>
   4095         </tr>
   4096         <tr>
   4097           <td class="paramkey"></td>
   4098           <td></td>
   4099           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4100           <td class="paramname"><em>y</em>, </td>
   4101         </tr>
   4102         <tr>
   4103           <td class="paramkey"></td>
   4104           <td></td>
   4105           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4106           <td class="paramname"><em>t</em>&#160;</td>
   4107         </tr>
   4108         <tr>
   4109           <td></td>
   4110           <td>)</td>
   4111           <td></td><td></td>
   4112         </tr>
   4113       </table>
   4114 </div><div class="memdoc">
   4115 <p >Set single tile t on background layer at x,y </p><dl class="params"><dt>Parameters</dt><dd>
   4116   <table class="params">
   4117     <tr><td class="paramname">x</td><td>X-coordinate </td></tr>
   4118     <tr><td class="paramname">y</td><td>Y-coordinate </td></tr>
   4119     <tr><td class="paramname">t</td><td>tile index</td></tr>
   4120   </table>
   4121   </dd>
   4122 </dl>
   4123 <dl class="section return"><dt>Returns</dt><dd>returns the address of tile, so you may use faster <a class="el" href="gb_8h.html#set_vram_byte">set_vram_byte()</a> later </dd></dl>
   4124 
   4125 </div>
   4126 </div>
   4127 <a id="set_bkg_attribute_xy" name="set_bkg_attribute_xy"></a>
   4128 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_attribute_xy">&#9670;&nbsp;</a></span>set_bkg_attribute_xy()</h2>
   4129 
   4130 <div class="memitem">
   4131 <div class="memproto">
   4132 <table class="mlabels">
   4133   <tr>
   4134   <td class="mlabels-left">
   4135       <table class="memname">
   4136         <tr>
   4137           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> * set_bkg_attribute_xy </td>
   4138           <td>(</td>
   4139           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4140           <td class="paramname"><em>x</em>, </td>
   4141         </tr>
   4142         <tr>
   4143           <td class="paramkey"></td>
   4144           <td></td>
   4145           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4146           <td class="paramname"><em>y</em>, </td>
   4147         </tr>
   4148         <tr>
   4149           <td class="paramkey"></td>
   4150           <td></td>
   4151           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4152           <td class="paramname"><em>a</em>&#160;</td>
   4153         </tr>
   4154         <tr>
   4155           <td></td>
   4156           <td>)</td>
   4157           <td></td><td></td>
   4158         </tr>
   4159       </table>
   4160   </td>
   4161   <td class="mlabels-right">
   4162 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4163   </tr>
   4164 </table>
   4165 </div><div class="memdoc">
   4166 <p >Set single attribute data a on background layer at x,y </p><dl class="params"><dt>Parameters</dt><dd>
   4167   <table class="params">
   4168     <tr><td class="paramname">x</td><td>X-coordinate </td></tr>
   4169     <tr><td class="paramname">y</td><td>Y-coordinate </td></tr>
   4170     <tr><td class="paramname">a</td><td>tile attributes </td></tr>
   4171   </table>
   4172   </dd>
   4173 </dl>
   4174 <dl class="section return"><dt>Returns</dt><dd>returns the address of tile attribute, so you may use faster <a class="el" href="gb_8h.html#set_vram_byte">set_vram_byte()</a> later</dd></dl>
   4175 <dl class="section note"><dt>Note</dt><dd>On the Game Boy this is only usable in Game Boy Color mode </dd></dl>
   4176 
   4177 </div>
   4178 </div>
   4179 <a id="get_bkg_tile_xy" name="get_bkg_tile_xy"></a>
   4180 <h2 class="memtitle"><span class="permalink"><a href="#get_bkg_tile_xy">&#9670;&nbsp;</a></span>get_bkg_tile_xy()</h2>
   4181 
   4182 <div class="memitem">
   4183 <div class="memproto">
   4184       <table class="memname">
   4185         <tr>
   4186           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_bkg_tile_xy </td>
   4187           <td>(</td>
   4188           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4189           <td class="paramname"><em>x</em>, </td>
   4190         </tr>
   4191         <tr>
   4192           <td class="paramkey"></td>
   4193           <td></td>
   4194           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4195           <td class="paramname"><em>y</em>&#160;</td>
   4196         </tr>
   4197         <tr>
   4198           <td></td>
   4199           <td>)</td>
   4200           <td></td><td></td>
   4201         </tr>
   4202       </table>
   4203 </div><div class="memdoc">
   4204 <p >Get single tile t on background layer at x,y </p><dl class="params"><dt>Parameters</dt><dd>
   4205   <table class="params">
   4206     <tr><td class="paramname">x</td><td>X-coordinate </td></tr>
   4207     <tr><td class="paramname">y</td><td>Y-coordinate</td></tr>
   4208   </table>
   4209   </dd>
   4210 </dl>
   4211 <dl class="section return"><dt>Returns</dt><dd>returns tile index</dd></dl>
   4212 <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>
   4213 
   4214 </div>
   4215 </div>
   4216 <a id="move_bkg" name="move_bkg"></a>
   4217 <h2 class="memtitle"><span class="permalink"><a href="#move_bkg">&#9670;&nbsp;</a></span>move_bkg()</h2>
   4218 
   4219 <div class="memitem">
   4220 <div class="memproto">
   4221 <table class="mlabels">
   4222   <tr>
   4223   <td class="mlabels-left">
   4224       <table class="memname">
   4225         <tr>
   4226           <td class="memname">void move_bkg </td>
   4227           <td>(</td>
   4228           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4229           <td class="paramname"><em>x</em>, </td>
   4230         </tr>
   4231         <tr>
   4232           <td class="paramkey"></td>
   4233           <td></td>
   4234           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4235           <td class="paramname"><em>y</em>&#160;</td>
   4236         </tr>
   4237         <tr>
   4238           <td></td>
   4239           <td>)</td>
   4240           <td></td><td></td>
   4241         </tr>
   4242       </table>
   4243   </td>
   4244   <td class="mlabels-right">
   4245 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4246   </tr>
   4247 </table>
   4248 </div><div class="memdoc">
   4249 <p >Moves the Background Layer to the position specified in <b>x</b> and <b>y</b> in pixels.</p>
   4250 <dl class="params"><dt>Parameters</dt><dd>
   4251   <table class="params">
   4252     <tr><td class="paramname">x</td><td>X axis screen coordinate for Left edge of the Background </td></tr>
   4253     <tr><td class="paramname">y</td><td>Y axis screen coordinate for Top edge of the Background</td></tr>
   4254   </table>
   4255   </dd>
   4256 </dl>
   4257 <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>
   4258 <p >The background layer is always under the Window Layer.</p>
   4259 <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> </dd></dl>
   4260 
   4261 </div>
   4262 </div>
   4263 <a id="scroll_bkg" name="scroll_bkg"></a>
   4264 <h2 class="memtitle"><span class="permalink"><a href="#scroll_bkg">&#9670;&nbsp;</a></span>scroll_bkg()</h2>
   4265 
   4266 <div class="memitem">
   4267 <div class="memproto">
   4268 <table class="mlabels">
   4269   <tr>
   4270   <td class="mlabels-left">
   4271       <table class="memname">
   4272         <tr>
   4273           <td class="memname">void scroll_bkg </td>
   4274           <td>(</td>
   4275           <td class="paramtype"><a class="el" href="stdint_8h.html#int8_t">int8_t</a>&#160;</td>
   4276           <td class="paramname"><em>x</em>, </td>
   4277         </tr>
   4278         <tr>
   4279           <td class="paramkey"></td>
   4280           <td></td>
   4281           <td class="paramtype"><a class="el" href="stdint_8h.html#int8_t">int8_t</a>&#160;</td>
   4282           <td class="paramname"><em>y</em>&#160;</td>
   4283         </tr>
   4284         <tr>
   4285           <td></td>
   4286           <td>)</td>
   4287           <td></td><td></td>
   4288         </tr>
   4289       </table>
   4290   </td>
   4291   <td class="mlabels-right">
   4292 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4293   </tr>
   4294 </table>
   4295 </div><div class="memdoc">
   4296 <p >Moves the Background relative to it's current position.</p>
   4297 <dl class="params"><dt>Parameters</dt><dd>
   4298   <table class="params">
   4299     <tr><td class="paramname">x</td><td>Number of pixels to move the Background on the <b>X axis</b> <br  />
   4300  Range: -128 - 127 </td></tr>
   4301     <tr><td class="paramname">y</td><td>Number of pixels to move the Background on the <b>Y axis</b> <br  />
   4302  Range: -128 - 127</td></tr>
   4303   </table>
   4304   </dd>
   4305 </dl>
   4306 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#move_bkg">move_bkg</a> </dd></dl>
   4307 
   4308 </div>
   4309 </div>
   4310 <a id="get_win_xy_addr" name="get_win_xy_addr"></a>
   4311 <h2 class="memtitle"><span class="permalink"><a href="#get_win_xy_addr">&#9670;&nbsp;</a></span>get_win_xy_addr()</h2>
   4312 
   4313 <div class="memitem">
   4314 <div class="memproto">
   4315       <table class="memname">
   4316         <tr>
   4317           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> * get_win_xy_addr </td>
   4318           <td>(</td>
   4319           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4320           <td class="paramname"><em>x</em>, </td>
   4321         </tr>
   4322         <tr>
   4323           <td class="paramkey"></td>
   4324           <td></td>
   4325           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4326           <td class="paramname"><em>y</em>&#160;</td>
   4327         </tr>
   4328         <tr>
   4329           <td></td>
   4330           <td>)</td>
   4331           <td></td><td></td>
   4332         </tr>
   4333       </table>
   4334 </div><div class="memdoc">
   4335 <p >Get address of X,Y tile of window map </p>
   4336 
   4337 </div>
   4338 </div>
   4339 <a id="set_win_data" name="set_win_data"></a>
   4340 <h2 class="memtitle"><span class="permalink"><a href="#set_win_data">&#9670;&nbsp;</a></span>set_win_data()</h2>
   4341 
   4342 <div class="memitem">
   4343 <div class="memproto">
   4344       <table class="memname">
   4345         <tr>
   4346           <td class="memname">void set_win_data </td>
   4347           <td>(</td>
   4348           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4349           <td class="paramname"><em>first_tile</em>, </td>
   4350         </tr>
   4351         <tr>
   4352           <td class="paramkey"></td>
   4353           <td></td>
   4354           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4355           <td class="paramname"><em>nb_tiles</em>, </td>
   4356         </tr>
   4357         <tr>
   4358           <td class="paramkey"></td>
   4359           <td></td>
   4360           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4361           <td class="paramname"><em>data</em>&#160;</td>
   4362         </tr>
   4363         <tr>
   4364           <td></td>
   4365           <td>)</td>
   4366           <td></td><td></td>
   4367         </tr>
   4368       </table>
   4369 </div><div class="memdoc">
   4370 <p >Sets VRAM Tile Pattern data for the Window / Background</p>
   4371 <dl class="params"><dt>Parameters</dt><dd>
   4372   <table class="params">
   4373     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   4374     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   4375     <tr><td class="paramname">data</td><td>Pointer to (2 bpp) source Tile Pattern data.</td></tr>
   4376   </table>
   4377   </dd>
   4378 </dl>
   4379 <p>This is the same as <a class="el" href="sms_8h.html#set_bkg_data">set_bkg_data</a>, since the Window Layer and Background Layer share the same Tile pattern data.</p>
   4380 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_bkg_data">set_bkg_data</a> </dd>
   4381 <dd>
   4382 <a class="el" href="gb_8h.html#set_win_tiles">set_win_tiles</a>, <a class="el" href="gb_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="gb_8h.html#set_data">set_data</a> </dd>
   4383 <dd>
   4384 <a class="el" href="gb_8h.html#SHOW_WIN">SHOW_WIN</a>, <a class="el" href="gb_8h.html#HIDE_WIN">HIDE_WIN</a> </dd></dl>
   4385 
   4386 </div>
   4387 </div>
   4388 <a id="set_win_1bpp_data" name="set_win_1bpp_data"></a>
   4389 <h2 class="memtitle"><span class="permalink"><a href="#set_win_1bpp_data">&#9670;&nbsp;</a></span>set_win_1bpp_data()</h2>
   4390 
   4391 <div class="memitem">
   4392 <div class="memproto">
   4393       <table class="memname">
   4394         <tr>
   4395           <td class="memname">void set_win_1bpp_data </td>
   4396           <td>(</td>
   4397           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4398           <td class="paramname"><em>first_tile</em>, </td>
   4399         </tr>
   4400         <tr>
   4401           <td class="paramkey"></td>
   4402           <td></td>
   4403           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4404           <td class="paramname"><em>nb_tiles</em>, </td>
   4405         </tr>
   4406         <tr>
   4407           <td class="paramkey"></td>
   4408           <td></td>
   4409           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4410           <td class="paramname"><em>data</em>&#160;</td>
   4411         </tr>
   4412         <tr>
   4413           <td></td>
   4414           <td>)</td>
   4415           <td></td><td></td>
   4416         </tr>
   4417       </table>
   4418 </div><div class="memdoc">
   4419 <p >Sets VRAM Tile Pattern data for the Window / Background using 1bpp source data</p>
   4420 <dl class="params"><dt>Parameters</dt><dd>
   4421   <table class="params">
   4422     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   4423     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   4424     <tr><td class="paramname">data</td><td>Pointer to (1bpp) source Tile Pattern data</td></tr>
   4425   </table>
   4426   </dd>
   4427 </dl>
   4428 <p>This is the same as <a class="el" href="sms_8h.html#set_bkg_1bpp_data">set_bkg_1bpp_data</a>, since the Window Layer and Background Layer share the same Tile pattern data.</p>
   4429 <p >For a given bit that represent a pixel: </p><ul>
   4430 <li>0 will be expanded into the Background color </li>
   4431 <li>1 will be expanded into the Foreground color</li>
   4432 </ul>
   4433 <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>
   4434 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_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="gb_8h.html#set_1bpp_colors">set_1bpp_colors</a> </dd>
   4435 <dd>
   4436 <a class="el" href="gb_8h.html#set_bkg_1bpp_data">set_bkg_1bpp_data</a>, <a class="el" href="gb_8h.html#set_sprite_1bpp_data">set_sprite_1bpp_data</a> </dd></dl>
   4437 
   4438 </div>
   4439 </div>
   4440 <a id="get_win_data" name="get_win_data"></a>
   4441 <h2 class="memtitle"><span class="permalink"><a href="#get_win_data">&#9670;&nbsp;</a></span>get_win_data()</h2>
   4442 
   4443 <div class="memitem">
   4444 <div class="memproto">
   4445       <table class="memname">
   4446         <tr>
   4447           <td class="memname">void get_win_data </td>
   4448           <td>(</td>
   4449           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4450           <td class="paramname"><em>first_tile</em>, </td>
   4451         </tr>
   4452         <tr>
   4453           <td class="paramkey"></td>
   4454           <td></td>
   4455           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4456           <td class="paramname"><em>nb_tiles</em>, </td>
   4457         </tr>
   4458         <tr>
   4459           <td class="paramkey"></td>
   4460           <td></td>
   4461           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4462           <td class="paramname"><em>data</em>&#160;</td>
   4463         </tr>
   4464         <tr>
   4465           <td></td>
   4466           <td>)</td>
   4467           <td></td><td></td>
   4468         </tr>
   4469       </table>
   4470 </div><div class="memdoc">
   4471 <p >Copies from Window / Background VRAM Tile Pattern data into a buffer</p>
   4472 <dl class="params"><dt>Parameters</dt><dd>
   4473   <table class="params">
   4474     <tr><td class="paramname">first_tile</td><td>Index of the first Tile to read from </td></tr>
   4475     <tr><td class="paramname">nb_tiles</td><td>Number of Tiles to read </td></tr>
   4476     <tr><td class="paramname">data</td><td>Pointer to destination buffer for Tile Pattern Data</td></tr>
   4477   </table>
   4478   </dd>
   4479 </dl>
   4480 <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>
   4481 <p>This is the same as <a class="el" href="gb_8h.html#get_bkg_data">get_bkg_data</a>, since the Window Layer and Background Layer share the same Tile pattern data.</p>
   4482 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#get_bkg_data">get_bkg_data</a>, <a class="el" href="gb_8h.html#get_data">get_data</a> </dd></dl>
   4483 
   4484 </div>
   4485 </div>
   4486 <a id="set_win_tiles" name="set_win_tiles"></a>
   4487 <h2 class="memtitle"><span class="permalink"><a href="#set_win_tiles">&#9670;&nbsp;</a></span>set_win_tiles()</h2>
   4488 
   4489 <div class="memitem">
   4490 <div class="memproto">
   4491       <table class="memname">
   4492         <tr>
   4493           <td class="memname">void set_win_tiles </td>
   4494           <td>(</td>
   4495           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4496           <td class="paramname"><em>x</em>, </td>
   4497         </tr>
   4498         <tr>
   4499           <td class="paramkey"></td>
   4500           <td></td>
   4501           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4502           <td class="paramname"><em>y</em>, </td>
   4503         </tr>
   4504         <tr>
   4505           <td class="paramkey"></td>
   4506           <td></td>
   4507           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4508           <td class="paramname"><em>w</em>, </td>
   4509         </tr>
   4510         <tr>
   4511           <td class="paramkey"></td>
   4512           <td></td>
   4513           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4514           <td class="paramname"><em>h</em>, </td>
   4515         </tr>
   4516         <tr>
   4517           <td class="paramkey"></td>
   4518           <td></td>
   4519           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4520           <td class="paramname"><em>tiles</em>&#160;</td>
   4521         </tr>
   4522         <tr>
   4523           <td></td>
   4524           <td>)</td>
   4525           <td></td><td></td>
   4526         </tr>
   4527       </table>
   4528 </div><div class="memdoc">
   4529 <p >Sets a rectangular region of the Window Tile Map.</p>
   4530 <dl class="params"><dt>Parameters</dt><dd>
   4531   <table class="params">
   4532     <tr><td class="paramname">x</td><td>X Start position in Window Map tile coordinates. Range 0 - 31 </td></tr>
   4533     <tr><td class="paramname">y</td><td>Y Start position in Window Map tile coordinates. Range 0 - 31 </td></tr>
   4534     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   4535     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   4536     <tr><td class="paramname">tiles</td><td>Pointer to source tile map data</td></tr>
   4537   </table>
   4538   </dd>
   4539 </dl>
   4540 <p>Entries are copied from map at <b>tiles</b> to the Window 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>
   4541 <p >Use <a class="el" href="sms_8h.html#set_win_submap">set_win_submap()</a> instead when: </p><ul>
   4542 <li>Source map is wider than 32 tiles. </li>
   4543 <li>Writing a width that does not match the source map width <b>and</b> more than one row high at a time.</li>
   4544 </ul>
   4545 <p>One byte per source tile map entry.</p>
   4546 <p >Writes that exceed coordinate 31 on the x or y axis will wrap around to the Left and Top edges.</p>
   4547 <dl class="section note"><dt>Note</dt><dd>Patterns 128-255 overlap with patterns 128-255 of the sprite Tile Pattern table.</dd></dl>
   4548 <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>
   4549 <li>VBK_REG = <a class="el" href="sms_2hardware_8h.html#VBK_TILES">VBK_TILES</a> Tile Numbers are written </li>
   4550 <li>VBK_REG = <a class="el" href="sms_2hardware_8h.html#VBK_ATTRIBUTES">VBK_ATTRIBUTES</a> Tile Attributes are written</li>
   4551 </ul>
   4552 <p>For more details about GBC Tile Attributes see <a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a>.</p>
   4553 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_WIN">SHOW_WIN</a>, <a class="el" href="gb_8h.html#HIDE_WIN">HIDE_WIN</a>, <a class="el" href="gb_8h.html#set_win_submap">set_win_submap</a>, <a class="el" href="gb_8h.html#set_bkg_tiles">set_bkg_tiles</a>, <a class="el" href="gb_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="gb_8h.html#set_tiles">set_tiles</a> </dd></dl>
   4554 
   4555 </div>
   4556 </div>
   4557 <a id="set_win_based_tiles" name="set_win_based_tiles"></a>
   4558 <h2 class="memtitle"><span class="permalink"><a href="#set_win_based_tiles">&#9670;&nbsp;</a></span>set_win_based_tiles()</h2>
   4559 
   4560 <div class="memitem">
   4561 <div class="memproto">
   4562 <table class="mlabels">
   4563   <tr>
   4564   <td class="mlabels-left">
   4565       <table class="memname">
   4566         <tr>
   4567           <td class="memname">void set_win_based_tiles </td>
   4568           <td>(</td>
   4569           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4570           <td class="paramname"><em>x</em>, </td>
   4571         </tr>
   4572         <tr>
   4573           <td class="paramkey"></td>
   4574           <td></td>
   4575           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4576           <td class="paramname"><em>y</em>, </td>
   4577         </tr>
   4578         <tr>
   4579           <td class="paramkey"></td>
   4580           <td></td>
   4581           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4582           <td class="paramname"><em>w</em>, </td>
   4583         </tr>
   4584         <tr>
   4585           <td class="paramkey"></td>
   4586           <td></td>
   4587           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4588           <td class="paramname"><em>h</em>, </td>
   4589         </tr>
   4590         <tr>
   4591           <td class="paramkey"></td>
   4592           <td></td>
   4593           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4594           <td class="paramname"><em>tiles</em>, </td>
   4595         </tr>
   4596         <tr>
   4597           <td class="paramkey"></td>
   4598           <td></td>
   4599           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4600           <td class="paramname"><em>base_tile</em>&#160;</td>
   4601         </tr>
   4602         <tr>
   4603           <td></td>
   4604           <td>)</td>
   4605           <td></td><td></td>
   4606         </tr>
   4607       </table>
   4608   </td>
   4609   <td class="mlabels-right">
   4610 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4611   </tr>
   4612 </table>
   4613 </div><div class="memdoc">
   4614 <p >Sets a rectangular region of the Window Tile Map. The offset value in <b>base_tile</b> is added to the tile ID for each map entry.</p>
   4615 <dl class="params"><dt>Parameters</dt><dd>
   4616   <table class="params">
   4617     <tr><td class="paramname">x</td><td>X Start position in Window Map tile coordinates. Range 0 - 31 </td></tr>
   4618     <tr><td class="paramname">y</td><td>Y Start position in Window Map tile coordinates. Range 0 - 31 </td></tr>
   4619     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   4620     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   4621     <tr><td class="paramname">tiles</td><td>Pointer to source tile map data </td></tr>
   4622     <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>
   4623   </table>
   4624   </dd>
   4625 </dl>
   4626 <p>This is identical to <a class="el" href="msx_8h.html#set_win_tiles">set_win_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>
   4627 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_win_tiles">set_win_tiles</a> for more details </dd></dl>
   4628 
   4629 </div>
   4630 </div>
   4631 <a id="set_win_submap" name="set_win_submap"></a>
   4632 <h2 class="memtitle"><span class="permalink"><a href="#set_win_submap">&#9670;&nbsp;</a></span>set_win_submap()</h2>
   4633 
   4634 <div class="memitem">
   4635 <div class="memproto">
   4636 <table class="mlabels">
   4637   <tr>
   4638   <td class="mlabels-left">
   4639       <table class="memname">
   4640         <tr>
   4641           <td class="memname">void set_win_submap </td>
   4642           <td>(</td>
   4643           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4644           <td class="paramname"><em>x</em>, </td>
   4645         </tr>
   4646         <tr>
   4647           <td class="paramkey"></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>y</em>, </td>
   4651         </tr>
   4652         <tr>
   4653           <td class="paramkey"></td>
   4654           <td></td>
   4655           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4656           <td class="paramname"><em>w</em>, </td>
   4657         </tr>
   4658         <tr>
   4659           <td class="paramkey"></td>
   4660           <td></td>
   4661           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4662           <td class="paramname"><em>h</em>, </td>
   4663         </tr>
   4664         <tr>
   4665           <td class="paramkey"></td>
   4666           <td></td>
   4667           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4668           <td class="paramname"><em>map</em>, </td>
   4669         </tr>
   4670         <tr>
   4671           <td class="paramkey"></td>
   4672           <td></td>
   4673           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4674           <td class="paramname"><em>map_w</em>&#160;</td>
   4675         </tr>
   4676         <tr>
   4677           <td></td>
   4678           <td>)</td>
   4679           <td></td><td></td>
   4680         </tr>
   4681       </table>
   4682   </td>
   4683   <td class="mlabels-right">
   4684 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4685   </tr>
   4686 </table>
   4687 </div><div class="memdoc">
   4688 <p >Sets a rectangular area of the Window Tile Map using a sub-region from a source tile map.</p>
   4689 <dl class="params"><dt>Parameters</dt><dd>
   4690   <table class="params">
   4691     <tr><td class="paramname">x</td><td>X Start position in both the Source Tile Map and hardware Window Map tile coordinates. Range 0 - 255 </td></tr>
   4692     <tr><td class="paramname">y</td><td>Y Start position in both the Source Tile Map and hardware Window Map tile coordinates. Range 0 - 255 </td></tr>
   4693     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 255 </td></tr>
   4694     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 255 </td></tr>
   4695     <tr><td class="paramname">map</td><td>Pointer to source tile map data </td></tr>
   4696     <tr><td class="paramname">map_w</td><td>Width of source tile map in tiles. Range 1 - 255</td></tr>
   4697   </table>
   4698   </dd>
   4699 </dl>
   4700 <p>Entries are copied from <b>map</b> to the Window 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>
   4701 <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>
   4702 <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>
   4703 <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>
   4704 <p >Use this instead of <a class="el" href="gb_8h.html#set_win_tiles">set_win_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>
   4705 <p >One byte per source tile map entry.</p>
   4706 <p >Writes that exceed coordinate 31 on the x or y axis will wrap around to the Left and Top edges.</p>
   4707 <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>
   4708 <li>VBK_REG = <a class="el" href="sms_2hardware_8h.html#VBK_TILES">VBK_TILES</a> Tile Numbers are written </li>
   4709 <li>VBK_REG = <a class="el" href="sms_2hardware_8h.html#VBK_ATTRIBUTES">VBK_ATTRIBUTES</a> Tile Attributes are written</li>
   4710 </ul>
   4711 <p>See <a class="el" href="nes_8h.html#set_bkg_tiles">set_bkg_tiles</a> for details about CGB attribute maps with <a class="el" href="gb_2hardware_8h.html#VBK_REG">VBK_REG</a>.</p>
   4712 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_WIN">SHOW_WIN</a>, <a class="el" href="gb_8h.html#HIDE_WIN">HIDE_WIN</a>, <a class="el" href="gb_8h.html#set_win_tiles">set_win_tiles</a>, <a class="el" href="gb_8h.html#set_bkg_submap">set_bkg_submap</a>, <a class="el" href="gb_8h.html#set_bkg_tiles">set_bkg_tiles</a>, <a class="el" href="gb_8h.html#set_bkg_data">set_bkg_data</a>, <a class="el" href="gb_8h.html#set_tiles">set_tiles</a> </dd></dl>
   4713 
   4714 </div>
   4715 </div>
   4716 <a id="set_win_based_submap" name="set_win_based_submap"></a>
   4717 <h2 class="memtitle"><span class="permalink"><a href="#set_win_based_submap">&#9670;&nbsp;</a></span>set_win_based_submap()</h2>
   4718 
   4719 <div class="memitem">
   4720 <div class="memproto">
   4721 <table class="mlabels">
   4722   <tr>
   4723   <td class="mlabels-left">
   4724       <table class="memname">
   4725         <tr>
   4726           <td class="memname">void set_win_based_submap </td>
   4727           <td>(</td>
   4728           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4729           <td class="paramname"><em>x</em>, </td>
   4730         </tr>
   4731         <tr>
   4732           <td class="paramkey"></td>
   4733           <td></td>
   4734           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4735           <td class="paramname"><em>y</em>, </td>
   4736         </tr>
   4737         <tr>
   4738           <td class="paramkey"></td>
   4739           <td></td>
   4740           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4741           <td class="paramname"><em>w</em>, </td>
   4742         </tr>
   4743         <tr>
   4744           <td class="paramkey"></td>
   4745           <td></td>
   4746           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4747           <td class="paramname"><em>h</em>, </td>
   4748         </tr>
   4749         <tr>
   4750           <td class="paramkey"></td>
   4751           <td></td>
   4752           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4753           <td class="paramname"><em>map</em>, </td>
   4754         </tr>
   4755         <tr>
   4756           <td class="paramkey"></td>
   4757           <td></td>
   4758           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4759           <td class="paramname"><em>map_w</em>, </td>
   4760         </tr>
   4761         <tr>
   4762           <td class="paramkey"></td>
   4763           <td></td>
   4764           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4765           <td class="paramname"><em>base_tile</em>&#160;</td>
   4766         </tr>
   4767         <tr>
   4768           <td></td>
   4769           <td>)</td>
   4770           <td></td><td></td>
   4771         </tr>
   4772       </table>
   4773   </td>
   4774   <td class="mlabels-right">
   4775 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4776   </tr>
   4777 </table>
   4778 </div><div class="memdoc">
   4779 <p >Sets a rectangular area of the Window 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>
   4780 <dl class="params"><dt>Parameters</dt><dd>
   4781   <table class="params">
   4782     <tr><td class="paramname">x</td><td>X Start position in both the Source Tile Map and hardware Window Map tile coordinates. Range 0 - 255 </td></tr>
   4783     <tr><td class="paramname">y</td><td>Y Start position in both the Source Tile Map and hardware Window Map tile coordinates. Range 0 - 255 </td></tr>
   4784     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 255 </td></tr>
   4785     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 255 </td></tr>
   4786     <tr><td class="paramname">map</td><td>Pointer to source tile map data </td></tr>
   4787     <tr><td class="paramname">map_w</td><td>Width of source tile map in tiles. Range 1 - 255 </td></tr>
   4788     <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>
   4789   </table>
   4790   </dd>
   4791 </dl>
   4792 <p>This is identical to <a class="el" href="sms_8h.html#set_win_submap">set_win_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>
   4793 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_win_submap">set_win_submap</a> for more details </dd></dl>
   4794 
   4795 </div>
   4796 </div>
   4797 <a id="get_win_tiles" name="get_win_tiles"></a>
   4798 <h2 class="memtitle"><span class="permalink"><a href="#get_win_tiles">&#9670;&nbsp;</a></span>get_win_tiles()</h2>
   4799 
   4800 <div class="memitem">
   4801 <div class="memproto">
   4802       <table class="memname">
   4803         <tr>
   4804           <td class="memname">void get_win_tiles </td>
   4805           <td>(</td>
   4806           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4807           <td class="paramname"><em>x</em>, </td>
   4808         </tr>
   4809         <tr>
   4810           <td class="paramkey"></td>
   4811           <td></td>
   4812           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4813           <td class="paramname"><em>y</em>, </td>
   4814         </tr>
   4815         <tr>
   4816           <td class="paramkey"></td>
   4817           <td></td>
   4818           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4819           <td class="paramname"><em>w</em>, </td>
   4820         </tr>
   4821         <tr>
   4822           <td class="paramkey"></td>
   4823           <td></td>
   4824           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4825           <td class="paramname"><em>h</em>, </td>
   4826         </tr>
   4827         <tr>
   4828           <td class="paramkey"></td>
   4829           <td></td>
   4830           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   4831           <td class="paramname"><em>tiles</em>&#160;</td>
   4832         </tr>
   4833         <tr>
   4834           <td></td>
   4835           <td>)</td>
   4836           <td></td><td></td>
   4837         </tr>
   4838       </table>
   4839 </div><div class="memdoc">
   4840 <p >Copies a rectangular region of Window Tile Map entries into a buffer.</p>
   4841 <dl class="params"><dt>Parameters</dt><dd>
   4842   <table class="params">
   4843     <tr><td class="paramname">x</td><td>X Start position in Window Map tile coordinates. Range 0 - 31 </td></tr>
   4844     <tr><td class="paramname">y</td><td>Y Start position in Window Map tile coordinates. Range 0 - 31 </td></tr>
   4845     <tr><td class="paramname">w</td><td>Width of area to copy in tiles. Range 0 - 31 </td></tr>
   4846     <tr><td class="paramname">h</td><td>Height of area to copy in tiles. Range 0 - 31 </td></tr>
   4847     <tr><td class="paramname">tiles</td><td>Pointer to destination buffer for Tile Map data</td></tr>
   4848   </table>
   4849   </dd>
   4850 </dl>
   4851 <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>
   4852 <p>Entries are copied into <b>tiles</b> from the Window 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>
   4853 <p >One byte per tile.</p>
   4854 <p >The buffer pointed to by <b>tiles</b> should be at least <b>x</b> x <b>y</b> bytes in size.</p>
   4855 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#get_bkg_tiles">get_bkg_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>
   4856 
   4857 </div>
   4858 </div>
   4859 <a id="set_win_tile_xy" name="set_win_tile_xy"></a>
   4860 <h2 class="memtitle"><span class="permalink"><a href="#set_win_tile_xy">&#9670;&nbsp;</a></span>set_win_tile_xy()</h2>
   4861 
   4862 <div class="memitem">
   4863 <div class="memproto">
   4864       <table class="memname">
   4865         <tr>
   4866           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> * set_win_tile_xy </td>
   4867           <td>(</td>
   4868           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4869           <td class="paramname"><em>x</em>, </td>
   4870         </tr>
   4871         <tr>
   4872           <td class="paramkey"></td>
   4873           <td></td>
   4874           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4875           <td class="paramname"><em>y</em>, </td>
   4876         </tr>
   4877         <tr>
   4878           <td class="paramkey"></td>
   4879           <td></td>
   4880           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4881           <td class="paramname"><em>t</em>&#160;</td>
   4882         </tr>
   4883         <tr>
   4884           <td></td>
   4885           <td>)</td>
   4886           <td></td><td></td>
   4887         </tr>
   4888       </table>
   4889 </div><div class="memdoc">
   4890 <p >Set single tile t on window layer at x,y </p><dl class="params"><dt>Parameters</dt><dd>
   4891   <table class="params">
   4892     <tr><td class="paramname">x</td><td>X-coordinate </td></tr>
   4893     <tr><td class="paramname">y</td><td>Y-coordinate </td></tr>
   4894     <tr><td class="paramname">t</td><td>tile index </td></tr>
   4895   </table>
   4896   </dd>
   4897 </dl>
   4898 <dl class="section return"><dt>Returns</dt><dd>returns the address of tile, so you may use faster <a class="el" href="gb_8h.html#set_vram_byte">set_vram_byte()</a> later </dd></dl>
   4899 
   4900 </div>
   4901 </div>
   4902 <a id="get_win_tile_xy" name="get_win_tile_xy"></a>
   4903 <h2 class="memtitle"><span class="permalink"><a href="#get_win_tile_xy">&#9670;&nbsp;</a></span>get_win_tile_xy()</h2>
   4904 
   4905 <div class="memitem">
   4906 <div class="memproto">
   4907       <table class="memname">
   4908         <tr>
   4909           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_win_tile_xy </td>
   4910           <td>(</td>
   4911           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4912           <td class="paramname"><em>x</em>, </td>
   4913         </tr>
   4914         <tr>
   4915           <td class="paramkey"></td>
   4916           <td></td>
   4917           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4918           <td class="paramname"><em>y</em>&#160;</td>
   4919         </tr>
   4920         <tr>
   4921           <td></td>
   4922           <td>)</td>
   4923           <td></td><td></td>
   4924         </tr>
   4925       </table>
   4926 </div><div class="memdoc">
   4927 <p >Get single tile t on window layer at x,y </p><dl class="params"><dt>Parameters</dt><dd>
   4928   <table class="params">
   4929     <tr><td class="paramname">x</td><td>X-coordinate </td></tr>
   4930     <tr><td class="paramname">y</td><td>Y-coordinate </td></tr>
   4931   </table>
   4932   </dd>
   4933 </dl>
   4934 <dl class="section return"><dt>Returns</dt><dd>returns the tile index</dd></dl>
   4935 <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>
   4936 
   4937 </div>
   4938 </div>
   4939 <a id="move_win" name="move_win"></a>
   4940 <h2 class="memtitle"><span class="permalink"><a href="#move_win">&#9670;&nbsp;</a></span>move_win()</h2>
   4941 
   4942 <div class="memitem">
   4943 <div class="memproto">
   4944 <table class="mlabels">
   4945   <tr>
   4946   <td class="mlabels-left">
   4947       <table class="memname">
   4948         <tr>
   4949           <td class="memname">void move_win </td>
   4950           <td>(</td>
   4951           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4952           <td class="paramname"><em>x</em>, </td>
   4953         </tr>
   4954         <tr>
   4955           <td class="paramkey"></td>
   4956           <td></td>
   4957           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   4958           <td class="paramname"><em>y</em>&#160;</td>
   4959         </tr>
   4960         <tr>
   4961           <td></td>
   4962           <td>)</td>
   4963           <td></td><td></td>
   4964         </tr>
   4965       </table>
   4966   </td>
   4967   <td class="mlabels-right">
   4968 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   4969   </tr>
   4970 </table>
   4971 </div><div class="memdoc">
   4972 <p >Moves the Window to the <b>x</b>, <b>y</b> position on the screen.</p>
   4973 <dl class="params"><dt>Parameters</dt><dd>
   4974   <table class="params">
   4975     <tr><td class="paramname">x</td><td>X coordinate for Left edge of the Window (actual displayed location will be X - 7) </td></tr>
   4976     <tr><td class="paramname">y</td><td>Y coordinate for Top edge of the Window</td></tr>
   4977   </table>
   4978   </dd>
   4979 </dl>
   4980 <p>7,0 is the top left corner of the screen in Window coordinates. The Window is locked to the bottom right corner.</p>
   4981 <p >The Window is always over the Background layer.</p>
   4982 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#SHOW_WIN">SHOW_WIN</a>, <a class="el" href="gb_8h.html#HIDE_WIN">HIDE_WIN</a> </dd></dl>
   4983 
   4984 </div>
   4985 </div>
   4986 <a id="scroll_win" name="scroll_win"></a>
   4987 <h2 class="memtitle"><span class="permalink"><a href="#scroll_win">&#9670;&nbsp;</a></span>scroll_win()</h2>
   4988 
   4989 <div class="memitem">
   4990 <div class="memproto">
   4991 <table class="mlabels">
   4992   <tr>
   4993   <td class="mlabels-left">
   4994       <table class="memname">
   4995         <tr>
   4996           <td class="memname">void scroll_win </td>
   4997           <td>(</td>
   4998           <td class="paramtype"><a class="el" href="stdint_8h.html#int8_t">int8_t</a>&#160;</td>
   4999           <td class="paramname"><em>x</em>, </td>
   5000         </tr>
   5001         <tr>
   5002           <td class="paramkey"></td>
   5003           <td></td>
   5004           <td class="paramtype"><a class="el" href="stdint_8h.html#int8_t">int8_t</a>&#160;</td>
   5005           <td class="paramname"><em>y</em>&#160;</td>
   5006         </tr>
   5007         <tr>
   5008           <td></td>
   5009           <td>)</td>
   5010           <td></td><td></td>
   5011         </tr>
   5012       </table>
   5013   </td>
   5014   <td class="mlabels-right">
   5015 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5016   </tr>
   5017 </table>
   5018 </div><div class="memdoc">
   5019 <p >Move the Window relative to its current position.</p>
   5020 <dl class="params"><dt>Parameters</dt><dd>
   5021   <table class="params">
   5022     <tr><td class="paramname">x</td><td>Number of pixels to move the window on the <b>X axis</b> <br  />
   5023  Range: -128 - 127 </td></tr>
   5024     <tr><td class="paramname">y</td><td>Number of pixels to move the window on the <b>Y axis</b> <br  />
   5025  Range: -128 - 127</td></tr>
   5026   </table>
   5027   </dd>
   5028 </dl>
   5029 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#move_win">move_win</a> </dd></dl>
   5030 
   5031 </div>
   5032 </div>
   5033 <a id="set_sprite_data" name="set_sprite_data"></a>
   5034 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_data">&#9670;&nbsp;</a></span>set_sprite_data()</h2>
   5035 
   5036 <div class="memitem">
   5037 <div class="memproto">
   5038       <table class="memname">
   5039         <tr>
   5040           <td class="memname">void set_sprite_data </td>
   5041           <td>(</td>
   5042           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5043           <td class="paramname"><em>first_tile</em>, </td>
   5044         </tr>
   5045         <tr>
   5046           <td class="paramkey"></td>
   5047           <td></td>
   5048           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5049           <td class="paramname"><em>nb_tiles</em>, </td>
   5050         </tr>
   5051         <tr>
   5052           <td class="paramkey"></td>
   5053           <td></td>
   5054           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5055           <td class="paramname"><em>data</em>&#160;</td>
   5056         </tr>
   5057         <tr>
   5058           <td></td>
   5059           <td>)</td>
   5060           <td></td><td></td>
   5061         </tr>
   5062       </table>
   5063 </div><div class="memdoc">
   5064 <p >Sets VRAM Tile Pattern data for Sprites</p>
   5065 <dl class="params"><dt>Parameters</dt><dd>
   5066   <table class="params">
   5067     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   5068     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   5069     <tr><td class="paramname">data</td><td>Pointer to (2 bpp) source Tile Pattern data</td></tr>
   5070   </table>
   5071   </dd>
   5072 </dl>
   5073 <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>
   5074 <dl class="section note"><dt>Note</dt><dd>Sprite Tiles 128-255 share the same memory region as Background Tiles 128-255.</dd></dl>
   5075 <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>
   5076 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_0">VBK_BANK_0</a> indicates the first bank </li>
   5077 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_1">VBK_BANK_1</a> indicates the second </li>
   5078 </ul>
   5079 
   5080 </div>
   5081 </div>
   5082 <a id="set_sprite_1bpp_data" name="set_sprite_1bpp_data"></a>
   5083 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_1bpp_data">&#9670;&nbsp;</a></span>set_sprite_1bpp_data()</h2>
   5084 
   5085 <div class="memitem">
   5086 <div class="memproto">
   5087       <table class="memname">
   5088         <tr>
   5089           <td class="memname">void set_sprite_1bpp_data </td>
   5090           <td>(</td>
   5091           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5092           <td class="paramname"><em>first_tile</em>, </td>
   5093         </tr>
   5094         <tr>
   5095           <td class="paramkey"></td>
   5096           <td></td>
   5097           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5098           <td class="paramname"><em>nb_tiles</em>, </td>
   5099         </tr>
   5100         <tr>
   5101           <td class="paramkey"></td>
   5102           <td></td>
   5103           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5104           <td class="paramname"><em>data</em>&#160;</td>
   5105         </tr>
   5106         <tr>
   5107           <td></td>
   5108           <td>)</td>
   5109           <td></td><td></td>
   5110         </tr>
   5111       </table>
   5112 </div><div class="memdoc">
   5113 <p >Sets VRAM Tile Pattern data for Sprites using 1bpp source data</p>
   5114 <dl class="params"><dt>Parameters</dt><dd>
   5115   <table class="params">
   5116     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   5117     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   5118     <tr><td class="paramname">data</td><td>Pointer to (1bpp) source Tile Pattern data</td></tr>
   5119   </table>
   5120   </dd>
   5121 </dl>
   5122 <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>
   5123 <p >For a given bit that represent a pixel: </p><ul>
   5124 <li>0 will be expanded into the Background color </li>
   5125 <li>1 will be expanded into the Foreground color</li>
   5126 </ul>
   5127 <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>
   5128 <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>
   5129 <dd>
   5130 <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>
   5131 
   5132 </div>
   5133 </div>
   5134 <a id="get_sprite_data" name="get_sprite_data"></a>
   5135 <h2 class="memtitle"><span class="permalink"><a href="#get_sprite_data">&#9670;&nbsp;</a></span>get_sprite_data()</h2>
   5136 
   5137 <div class="memitem">
   5138 <div class="memproto">
   5139       <table class="memname">
   5140         <tr>
   5141           <td class="memname">void get_sprite_data </td>
   5142           <td>(</td>
   5143           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5144           <td class="paramname"><em>first_tile</em>, </td>
   5145         </tr>
   5146         <tr>
   5147           <td class="paramkey"></td>
   5148           <td></td>
   5149           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5150           <td class="paramname"><em>nb_tiles</em>, </td>
   5151         </tr>
   5152         <tr>
   5153           <td class="paramkey"></td>
   5154           <td></td>
   5155           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5156           <td class="paramname"><em>data</em>&#160;</td>
   5157         </tr>
   5158         <tr>
   5159           <td></td>
   5160           <td>)</td>
   5161           <td></td><td></td>
   5162         </tr>
   5163       </table>
   5164 </div><div class="memdoc">
   5165 <p >Copies from Sprite VRAM Tile Pattern data into a buffer</p>
   5166 <dl class="params"><dt>Parameters</dt><dd>
   5167   <table class="params">
   5168     <tr><td class="paramname">first_tile</td><td>Index of the first tile to read from </td></tr>
   5169     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to read </td></tr>
   5170     <tr><td class="paramname">data</td><td>Pointer to destination buffer for Tile Pattern data</td></tr>
   5171   </table>
   5172   </dd>
   5173 </dl>
   5174 <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>
   5175 <p>Copies <b>nb_tiles</b> tiles from VRAM starting at <b>first_tile</b>, tile data is copied into <b>data</b>.</p>
   5176 <p >Each Tile is 16 bytes, so the buffer pointed to by <b>data</b> should be at least <b>nb_tiles</b> x 16 bytes in size. </p>
   5177 
   5178 </div>
   5179 </div>
   5180 <a id="SET_SHADOW_OAM_ADDRESS" name="SET_SHADOW_OAM_ADDRESS"></a>
   5181 <h2 class="memtitle"><span class="permalink"><a href="#SET_SHADOW_OAM_ADDRESS">&#9670;&nbsp;</a></span>SET_SHADOW_OAM_ADDRESS()</h2>
   5182 
   5183 <div class="memitem">
   5184 <div class="memproto">
   5185 <table class="mlabels">
   5186   <tr>
   5187   <td class="mlabels-left">
   5188       <table class="memname">
   5189         <tr>
   5190           <td class="memname">void SET_SHADOW_OAM_ADDRESS </td>
   5191           <td>(</td>
   5192           <td class="paramtype">void *&#160;</td>
   5193           <td class="paramname"><em>address</em></td><td>)</td>
   5194           <td></td>
   5195         </tr>
   5196       </table>
   5197   </td>
   5198   <td class="mlabels-right">
   5199 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5200   </tr>
   5201 </table>
   5202 </div><div class="memdoc">
   5203 <p >Enable OAM DMA copy each VBlank and set it to transfer any 256-byte aligned array </p>
   5204 
   5205 </div>
   5206 </div>
   5207 <a id="set_sprite_tile" name="set_sprite_tile"></a>
   5208 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_tile">&#9670;&nbsp;</a></span>set_sprite_tile()</h2>
   5209 
   5210 <div class="memitem">
   5211 <div class="memproto">
   5212 <table class="mlabels">
   5213   <tr>
   5214   <td class="mlabels-left">
   5215       <table class="memname">
   5216         <tr>
   5217           <td class="memname">void set_sprite_tile </td>
   5218           <td>(</td>
   5219           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5220           <td class="paramname"><em>nb</em>, </td>
   5221         </tr>
   5222         <tr>
   5223           <td class="paramkey"></td>
   5224           <td></td>
   5225           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5226           <td class="paramname"><em>tile</em>&#160;</td>
   5227         </tr>
   5228         <tr>
   5229           <td></td>
   5230           <td>)</td>
   5231           <td></td><td></td>
   5232         </tr>
   5233       </table>
   5234   </td>
   5235   <td class="mlabels-right">
   5236 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5237   </tr>
   5238 </table>
   5239 </div><div class="memdoc">
   5240 <p >Sets sprite number <b>nb__in the OAM to display tile number __tile</b>.</p>
   5241 <dl class="params"><dt>Parameters</dt><dd>
   5242   <table class="params">
   5243     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   5244     <tr><td class="paramname">tile</td><td>Selects a tile (0 - 255) from memory at 8000h - 8FFFh <br  />
   5245  In CGB Mode this could be either in VRAM Bank <br  />
   5246  0 or 1, depending on Bit 3 of the OAM Attribute Flag <br  />
   5247  (see <a class="el" href="sms_8h.html#set_sprite_prop">set_sprite_prop</a>)</td></tr>
   5248   </table>
   5249   </dd>
   5250 </dl>
   5251 <p>In 8x16 mode: </p><ul>
   5252 <li>The sprite will also display the next tile (<b>tile</b> + 1) directly below (y + 8) the first tile. </li>
   5253 <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>
   5254 <li>See: <a class="el" href="sms_8h.html#SPRITES_8x16">SPRITES_8x16</a> </li>
   5255 </ul>
   5256 
   5257 </div>
   5258 </div>
   5259 <a id="get_sprite_tile" name="get_sprite_tile"></a>
   5260 <h2 class="memtitle"><span class="permalink"><a href="#get_sprite_tile">&#9670;&nbsp;</a></span>get_sprite_tile()</h2>
   5261 
   5262 <div class="memitem">
   5263 <div class="memproto">
   5264 <table class="mlabels">
   5265   <tr>
   5266   <td class="mlabels-left">
   5267       <table class="memname">
   5268         <tr>
   5269           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_sprite_tile </td>
   5270           <td>(</td>
   5271           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5272           <td class="paramname"><em>nb</em></td><td>)</td>
   5273           <td></td>
   5274         </tr>
   5275       </table>
   5276   </td>
   5277   <td class="mlabels-right">
   5278 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5279   </tr>
   5280 </table>
   5281 </div><div class="memdoc">
   5282 <p >Returns the tile number of sprite number <b>nb</b> in the OAM.</p>
   5283 <dl class="params"><dt>Parameters</dt><dd>
   5284   <table class="params">
   5285     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39</td></tr>
   5286   </table>
   5287   </dd>
   5288 </dl>
   5289 <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>
   5290 
   5291 </div>
   5292 </div>
   5293 <a id="set_sprite_prop" name="set_sprite_prop"></a>
   5294 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_prop">&#9670;&nbsp;</a></span>set_sprite_prop()</h2>
   5295 
   5296 <div class="memitem">
   5297 <div class="memproto">
   5298 <table class="mlabels">
   5299   <tr>
   5300   <td class="mlabels-left">
   5301       <table class="memname">
   5302         <tr>
   5303           <td class="memname">void set_sprite_prop </td>
   5304           <td>(</td>
   5305           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5306           <td class="paramname"><em>nb</em>, </td>
   5307         </tr>
   5308         <tr>
   5309           <td class="paramkey"></td>
   5310           <td></td>
   5311           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5312           <td class="paramname"><em>prop</em>&#160;</td>
   5313         </tr>
   5314         <tr>
   5315           <td></td>
   5316           <td>)</td>
   5317           <td></td><td></td>
   5318         </tr>
   5319       </table>
   5320   </td>
   5321   <td class="mlabels-right">
   5322 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5323   </tr>
   5324 </table>
   5325 </div><div class="memdoc">
   5326 <p >Sets the OAM Property Flags of sprite number <b>nb</b> to those defined in <b>prop</b>.</p>
   5327 <dl class="params"><dt>Parameters</dt><dd>
   5328   <table class="params">
   5329     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   5330     <tr><td class="paramname">prop</td><td>Property setting (see bitfield description)</td></tr>
   5331   </table>
   5332   </dd>
   5333 </dl>
   5334 <p>The bits in <b>prop</b> represent: </p><ul>
   5335 <li>Bit 7 - Priority flag. When this is set the sprites appear behind the background and window layer. <br  />
   5336  0: infront <br  />
   5337  1: behind </li>
   5338 <li>Bit 6 - Vertical flip. Dictates which way up the sprite is drawn vertically. <br  />
   5339  0: normal <br  />
   5340  1:upside down </li>
   5341 <li>Bit 5 - Horizontal flip. Dictates which way up the sprite is drawn horizontally. <br  />
   5342  0: normal <br  />
   5343  1:back to front </li>
   5344 <li>Bit 4 - DMG/Non-CGB Mode Only. Assigns either one of the two b/w palettes to the sprite. <br  />
   5345  0: OBJ palette 0 <br  />
   5346  1: OBJ palette 1 </li>
   5347 <li>Bit 3 - GBC only. Dictates from which bank of Sprite Tile Patterns the tile is taken. <br  />
   5348  0: Bank 0 <br  />
   5349  1: Bank 1 </li>
   5350 <li>Bit 2 - See bit 0. </li>
   5351 <li>Bit 1 - See bit 0. </li>
   5352 <li>Bit 0 - GBC only. Bits 0-2 indicate which of the 7 OBJ colour palettes the sprite is assigned.</li>
   5353 </ul>
   5354 <p>It's recommended to use GBDK constants (eg: S_FLIPY) to configure sprite properties as these are crossplatform.</p>
   5355 <div class="fragment"><div class="line"><span class="comment">// Load palette data into the first palette</span></div>
   5356 <div class="line"><a class="code hl_define" href="msx_8h.html#set_sprite_palette">set_sprite_palette</a>(4, 1, exampleSprite_palettes)</div>
   5357 <div class="line"> </div>
   5358 <div class="line"><span class="comment">// Set the OAM value for the sprite</span></div>
   5359 <div class="line"><span class="comment">// These flags tell the sprite to flip both vertically and horizontally.</span></div>
   5360 <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>
   5361 <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>
   5362 <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>
   5363 <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>
   5364 <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>
   5365 </div><!-- fragment --><dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#S_PALETTE">S_PALETTE</a>, <a class="el" href="gb_8h.html#S_FLIPX">S_FLIPX</a>, <a class="el" href="gb_8h.html#S_FLIPY">S_FLIPY</a>, <a class="el" href="gb_8h.html#S_PRIORITY">S_PRIORITY</a> </dd></dl>
   5366 
   5367 </div>
   5368 </div>
   5369 <a id="get_sprite_prop" name="get_sprite_prop"></a>
   5370 <h2 class="memtitle"><span class="permalink"><a href="#get_sprite_prop">&#9670;&nbsp;</a></span>get_sprite_prop()</h2>
   5371 
   5372 <div class="memitem">
   5373 <div class="memproto">
   5374 <table class="mlabels">
   5375   <tr>
   5376   <td class="mlabels-left">
   5377       <table class="memname">
   5378         <tr>
   5379           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> get_sprite_prop </td>
   5380           <td>(</td>
   5381           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5382           <td class="paramname"><em>nb</em></td><td>)</td>
   5383           <td></td>
   5384         </tr>
   5385       </table>
   5386   </td>
   5387   <td class="mlabels-right">
   5388 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5389   </tr>
   5390 </table>
   5391 </div><div class="memdoc">
   5392 <p >Returns the OAM Property Flags of sprite number <b>nb</b>.</p>
   5393 <dl class="params"><dt>Parameters</dt><dd>
   5394   <table class="params">
   5395     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   5396   </table>
   5397   </dd>
   5398 </dl>
   5399 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_sprite_prop">set_sprite_prop</a> for property bitfield settings </dd></dl>
   5400 
   5401 </div>
   5402 </div>
   5403 <a id="move_sprite" name="move_sprite"></a>
   5404 <h2 class="memtitle"><span class="permalink"><a href="#move_sprite">&#9670;&nbsp;</a></span>move_sprite()</h2>
   5405 
   5406 <div class="memitem">
   5407 <div class="memproto">
   5408 <table class="mlabels">
   5409   <tr>
   5410   <td class="mlabels-left">
   5411       <table class="memname">
   5412         <tr>
   5413           <td class="memname">void move_sprite </td>
   5414           <td>(</td>
   5415           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5416           <td class="paramname"><em>nb</em>, </td>
   5417         </tr>
   5418         <tr>
   5419           <td class="paramkey"></td>
   5420           <td></td>
   5421           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5422           <td class="paramname"><em>x</em>, </td>
   5423         </tr>
   5424         <tr>
   5425           <td class="paramkey"></td>
   5426           <td></td>
   5427           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5428           <td class="paramname"><em>y</em>&#160;</td>
   5429         </tr>
   5430         <tr>
   5431           <td></td>
   5432           <td>)</td>
   5433           <td></td><td></td>
   5434         </tr>
   5435       </table>
   5436   </td>
   5437   <td class="mlabels-right">
   5438 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5439   </tr>
   5440 </table>
   5441 </div><div class="memdoc">
   5442 <p >Moves sprite number <b>nb</b> to the <b>x</b>, <b>y</b> position on the screen.</p>
   5443 <dl class="params"><dt>Parameters</dt><dd>
   5444   <table class="params">
   5445     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   5446     <tr><td class="paramname">x</td><td>X Position. Specifies the sprites horizontal position on the screen (minus 8). <br  />
   5447  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>
   5448     <tr><td class="paramname">y</td><td>Y Position. Specifies the sprites vertical position on the screen (minus 16). <br  />
   5449  An offscreen value (for example, Y=0 or Y&gt;=160) hides the sprite.</td></tr>
   5450   </table>
   5451   </dd>
   5452 </dl>
   5453 <p>Moving the sprite to 0,0 (or similar off-screen location) will hide it. </p>
   5454 
   5455 </div>
   5456 </div>
   5457 <a id="scroll_sprite" name="scroll_sprite"></a>
   5458 <h2 class="memtitle"><span class="permalink"><a href="#scroll_sprite">&#9670;&nbsp;</a></span>scroll_sprite()</h2>
   5459 
   5460 <div class="memitem">
   5461 <div class="memproto">
   5462 <table class="mlabels">
   5463   <tr>
   5464   <td class="mlabels-left">
   5465       <table class="memname">
   5466         <tr>
   5467           <td class="memname">void scroll_sprite </td>
   5468           <td>(</td>
   5469           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5470           <td class="paramname"><em>nb</em>, </td>
   5471         </tr>
   5472         <tr>
   5473           <td class="paramkey"></td>
   5474           <td></td>
   5475           <td class="paramtype"><a class="el" href="stdint_8h.html#int8_t">int8_t</a>&#160;</td>
   5476           <td class="paramname"><em>x</em>, </td>
   5477         </tr>
   5478         <tr>
   5479           <td class="paramkey"></td>
   5480           <td></td>
   5481           <td class="paramtype"><a class="el" href="stdint_8h.html#int8_t">int8_t</a>&#160;</td>
   5482           <td class="paramname"><em>y</em>&#160;</td>
   5483         </tr>
   5484         <tr>
   5485           <td></td>
   5486           <td>)</td>
   5487           <td></td><td></td>
   5488         </tr>
   5489       </table>
   5490   </td>
   5491   <td class="mlabels-right">
   5492 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5493   </tr>
   5494 </table>
   5495 </div><div class="memdoc">
   5496 <p >Moves sprite number <b>nb</b> relative to its current position.</p>
   5497 <dl class="params"><dt>Parameters</dt><dd>
   5498   <table class="params">
   5499     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39 </td></tr>
   5500     <tr><td class="paramname">x</td><td>Number of pixels to move the sprite on the <b>X axis</b> <br  />
   5501  Range: -128 - 127 </td></tr>
   5502     <tr><td class="paramname">y</td><td>Number of pixels to move the sprite on the <b>Y axis</b> <br  />
   5503  Range: -128 - 127</td></tr>
   5504   </table>
   5505   </dd>
   5506 </dl>
   5507 <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>
   5508 
   5509 </div>
   5510 </div>
   5511 <a id="hide_sprite" name="hide_sprite"></a>
   5512 <h2 class="memtitle"><span class="permalink"><a href="#hide_sprite">&#9670;&nbsp;</a></span>hide_sprite()</h2>
   5513 
   5514 <div class="memitem">
   5515 <div class="memproto">
   5516 <table class="mlabels">
   5517   <tr>
   5518   <td class="mlabels-left">
   5519       <table class="memname">
   5520         <tr>
   5521           <td class="memname">void hide_sprite </td>
   5522           <td>(</td>
   5523           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5524           <td class="paramname"><em>nb</em></td><td>)</td>
   5525           <td></td>
   5526         </tr>
   5527       </table>
   5528   </td>
   5529   <td class="mlabels-right">
   5530 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5531   </tr>
   5532 </table>
   5533 </div><div class="memdoc">
   5534 <p >Hides sprite number <b>nb</b> by moving it to zero position by Y.</p>
   5535 <dl class="params"><dt>Parameters</dt><dd>
   5536   <table class="params">
   5537     <tr><td class="paramname">nb</td><td>Sprite number, range 0 - 39</td></tr>
   5538   </table>
   5539   </dd>
   5540 </dl>
   5541 <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="gb_8h.html#HIDE_SPRITES">HIDE_SPRITES</a> </dd></dl>
   5542 
   5543 </div>
   5544 </div>
   5545 <a id="set_data" name="set_data"></a>
   5546 <h2 class="memtitle"><span class="permalink"><a href="#set_data">&#9670;&nbsp;</a></span>set_data()</h2>
   5547 
   5548 <div class="memitem">
   5549 <div class="memproto">
   5550       <table class="memname">
   5551         <tr>
   5552           <td class="memname">void set_data </td>
   5553           <td>(</td>
   5554           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5555           <td class="paramname"><em>vram_addr</em>, </td>
   5556         </tr>
   5557         <tr>
   5558           <td class="paramkey"></td>
   5559           <td></td>
   5560           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5561           <td class="paramname"><em>data</em>, </td>
   5562         </tr>
   5563         <tr>
   5564           <td class="paramkey"></td>
   5565           <td></td>
   5566           <td class="paramtype"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td>
   5567           <td class="paramname"><em>len</em>&#160;</td>
   5568         </tr>
   5569         <tr>
   5570           <td></td>
   5571           <td>)</td>
   5572           <td></td><td></td>
   5573         </tr>
   5574       </table>
   5575 </div><div class="memdoc">
   5576 <p >Copies arbitrary data to an address in VRAM without taking into account the state of LCDC bits 3 or 4.</p>
   5577 <dl class="params"><dt>Parameters</dt><dd>
   5578   <table class="params">
   5579     <tr><td class="paramname">vram_addr</td><td>Pointer to destination VRAM Address </td></tr>
   5580     <tr><td class="paramname">data</td><td>Pointer to source buffer </td></tr>
   5581     <tr><td class="paramname">len</td><td>Number of bytes to copy</td></tr>
   5582   </table>
   5583   </dd>
   5584 </dl>
   5585 <p>Copies <b>len</b> bytes from a buffer at <b>data</b> to VRAM starting at <b>vram_addr</b>.</p>
   5586 <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>
   5587 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_0">VBK_BANK_0</a> indicates the first bank </li>
   5588 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_1">VBK_BANK_1</a> indicates the second</li>
   5589 </ul>
   5590 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_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="gb_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="gb_8h.html#set_tile_data">set_tile_data</a>, <a class="el" href="gb_8h.html#set_tiles">set_tiles</a> </dd></dl>
   5591 
   5592 </div>
   5593 </div>
   5594 <a id="get_data" name="get_data"></a>
   5595 <h2 class="memtitle"><span class="permalink"><a href="#get_data">&#9670;&nbsp;</a></span>get_data()</h2>
   5596 
   5597 <div class="memitem">
   5598 <div class="memproto">
   5599       <table class="memname">
   5600         <tr>
   5601           <td class="memname">void get_data </td>
   5602           <td>(</td>
   5603           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5604           <td class="paramname"><em>data</em>, </td>
   5605         </tr>
   5606         <tr>
   5607           <td class="paramkey"></td>
   5608           <td></td>
   5609           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5610           <td class="paramname"><em>vram_addr</em>, </td>
   5611         </tr>
   5612         <tr>
   5613           <td class="paramkey"></td>
   5614           <td></td>
   5615           <td class="paramtype"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td>
   5616           <td class="paramname"><em>len</em>&#160;</td>
   5617         </tr>
   5618         <tr>
   5619           <td></td>
   5620           <td>)</td>
   5621           <td></td><td></td>
   5622         </tr>
   5623       </table>
   5624 </div><div class="memdoc">
   5625 <p >Copies arbitrary data from an address in VRAM into a buffer without taking into account the state of LCDC bits 3 or 4.</p>
   5626 <dl class="params"><dt>Parameters</dt><dd>
   5627   <table class="params">
   5628     <tr><td class="paramname">vram_addr</td><td>Pointer to source VRAM Address </td></tr>
   5629     <tr><td class="paramname">data</td><td>Pointer to destination buffer </td></tr>
   5630     <tr><td class="paramname">len</td><td>Number of bytes to copy</td></tr>
   5631   </table>
   5632   </dd>
   5633 </dl>
   5634 <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>
   5635 <p>Copies <b>len</b> bytes from VRAM starting at <b>vram_addr</b> into a buffer at <b>data</b>.</p>
   5636 <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>
   5637 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_0">VBK_BANK_0</a> indicates the first bank </li>
   5638 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_1">VBK_BANK_1</a> indicates the second</li>
   5639 </ul>
   5640 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#get_bkg_data">get_bkg_data</a>, <a class="el" href="gb_8h.html#get_win_data">get_win_data</a>, <a class="el" href="gb_8h.html#get_bkg_tiles">get_bkg_tiles</a>, <a class="el" href="gb_8h.html#get_win_tiles">get_win_tiles</a>, <a class="el" href="gb_8h.html#get_tiles">get_tiles</a> </dd></dl>
   5641 
   5642 </div>
   5643 </div>
   5644 <a id="vmemcpy" name="vmemcpy"></a>
   5645 <h2 class="memtitle"><span class="permalink"><a href="#vmemcpy">&#9670;&nbsp;</a></span>vmemcpy()</h2>
   5646 
   5647 <div class="memitem">
   5648 <div class="memproto">
   5649       <table class="memname">
   5650         <tr>
   5651           <td class="memname">void vmemcpy </td>
   5652           <td>(</td>
   5653           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5654           <td class="paramname"><em>dest</em>, </td>
   5655         </tr>
   5656         <tr>
   5657           <td class="paramkey"></td>
   5658           <td></td>
   5659           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5660           <td class="paramname"><em>sour</em>, </td>
   5661         </tr>
   5662         <tr>
   5663           <td class="paramkey"></td>
   5664           <td></td>
   5665           <td class="paramtype"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td>
   5666           <td class="paramname"><em>len</em>&#160;</td>
   5667         </tr>
   5668         <tr>
   5669           <td></td>
   5670           <td>)</td>
   5671           <td></td><td></td>
   5672         </tr>
   5673       </table>
   5674 </div><div class="memdoc">
   5675 <p >Copies arbitrary data from an address in VRAM into a buffer</p>
   5676 <dl class="params"><dt>Parameters</dt><dd>
   5677   <table class="params">
   5678     <tr><td class="paramname">dest</td><td>Pointer to destination buffer (may be in VRAM) </td></tr>
   5679     <tr><td class="paramname">sour</td><td>Pointer to source buffer (may be in VRAM) </td></tr>
   5680     <tr><td class="paramname">len</td><td>Number of bytes to copy</td></tr>
   5681   </table>
   5682   </dd>
   5683 </dl>
   5684 <p>Copies <b>len</b> bytes from or to VRAM starting at <b>sour</b> into a buffer or to VRAM at <b>dest</b>.</p>
   5685 <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>
   5686 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_0">VBK_BANK_0</a> indicates the first bank </li>
   5687 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_1">VBK_BANK_1</a> indicates the second </li>
   5688 </ul>
   5689 
   5690 </div>
   5691 </div>
   5692 <a id="set_tiles" name="set_tiles"></a>
   5693 <h2 class="memtitle"><span class="permalink"><a href="#set_tiles">&#9670;&nbsp;</a></span>set_tiles()</h2>
   5694 
   5695 <div class="memitem">
   5696 <div class="memproto">
   5697       <table class="memname">
   5698         <tr>
   5699           <td class="memname">void set_tiles </td>
   5700           <td>(</td>
   5701           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5702           <td class="paramname"><em>x</em>, </td>
   5703         </tr>
   5704         <tr>
   5705           <td class="paramkey"></td>
   5706           <td></td>
   5707           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5708           <td class="paramname"><em>y</em>, </td>
   5709         </tr>
   5710         <tr>
   5711           <td class="paramkey"></td>
   5712           <td></td>
   5713           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5714           <td class="paramname"><em>w</em>, </td>
   5715         </tr>
   5716         <tr>
   5717           <td class="paramkey"></td>
   5718           <td></td>
   5719           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5720           <td class="paramname"><em>h</em>, </td>
   5721         </tr>
   5722         <tr>
   5723           <td class="paramkey"></td>
   5724           <td></td>
   5725           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5726           <td class="paramname"><em>vram_addr</em>, </td>
   5727         </tr>
   5728         <tr>
   5729           <td class="paramkey"></td>
   5730           <td></td>
   5731           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5732           <td class="paramname"><em>tiles</em>&#160;</td>
   5733         </tr>
   5734         <tr>
   5735           <td></td>
   5736           <td>)</td>
   5737           <td></td><td></td>
   5738         </tr>
   5739       </table>
   5740 </div><div class="memdoc">
   5741 <p >Sets a rectangular region of Tile Map entries at a given VRAM Address without taking into account the state of LCDC bit 3.</p>
   5742 <dl class="params"><dt>Parameters</dt><dd>
   5743   <table class="params">
   5744     <tr><td class="paramname">x</td><td>X Start position in Map tile coordinates. Range 0 - 31 </td></tr>
   5745     <tr><td class="paramname">y</td><td>Y Start position in Map tile coordinates. Range 0 - 31 </td></tr>
   5746     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   5747     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   5748     <tr><td class="paramname">vram_addr</td><td>Pointer to destination VRAM Address </td></tr>
   5749     <tr><td class="paramname">tiles</td><td>Pointer to source Tile Map data</td></tr>
   5750   </table>
   5751   </dd>
   5752 </dl>
   5753 <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>
   5754 <p >One byte per source tile map entry.</p>
   5755 <p >There are two 32x32 Tile Maps in VRAM at addresses 9800h-9BFFh and 9C00h-9FFFh.</p>
   5756 <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>
   5757 <li>VBK_REG = <a class="el" href="sms_2hardware_8h.html#VBK_TILES">VBK_TILES</a> Tile Numbers are written </li>
   5758 <li>VBK_REG = <a class="el" href="sms_2hardware_8h.html#VBK_ATTRIBUTES">VBK_ATTRIBUTES</a> Tile Attributes are written</li>
   5759 </ul>
   5760 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#set_bkg_tiles">set_bkg_tiles</a>, <a class="el" href="gb_8h.html#set_win_tiles">set_win_tiles</a> </dd></dl>
   5761 
   5762 </div>
   5763 </div>
   5764 <a id="set_tile_data" name="set_tile_data"></a>
   5765 <h2 class="memtitle"><span class="permalink"><a href="#set_tile_data">&#9670;&nbsp;</a></span>set_tile_data()</h2>
   5766 
   5767 <div class="memitem">
   5768 <div class="memproto">
   5769       <table class="memname">
   5770         <tr>
   5771           <td class="memname">void set_tile_data </td>
   5772           <td>(</td>
   5773           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5774           <td class="paramname"><em>first_tile</em>, </td>
   5775         </tr>
   5776         <tr>
   5777           <td class="paramkey"></td>
   5778           <td></td>
   5779           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5780           <td class="paramname"><em>nb_tiles</em>, </td>
   5781         </tr>
   5782         <tr>
   5783           <td class="paramkey"></td>
   5784           <td></td>
   5785           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5786           <td class="paramname"><em>data</em>, </td>
   5787         </tr>
   5788         <tr>
   5789           <td class="paramkey"></td>
   5790           <td></td>
   5791           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5792           <td class="paramname"><em>base</em>&#160;</td>
   5793         </tr>
   5794         <tr>
   5795           <td></td>
   5796           <td>)</td>
   5797           <td></td><td></td>
   5798         </tr>
   5799       </table>
   5800 </div><div class="memdoc">
   5801 <p >Sets VRAM Tile Pattern data starting from given base address without taking into account the state of LCDC bit 4.</p>
   5802 <dl class="params"><dt>Parameters</dt><dd>
   5803   <table class="params">
   5804     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   5805     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   5806     <tr><td class="paramname">data</td><td>Pointer to (2 bpp) source Tile Pattern data. </td></tr>
   5807     <tr><td class="paramname">base</td><td>MSB of the destination address in VRAM (usually 0x80 or 0x90 which gives 0x8000 or 0x9000)</td></tr>
   5808   </table>
   5809   </dd>
   5810 </dl>
   5811 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_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="gb_8h.html#set_data">set_data</a> </dd></dl>
   5812 
   5813 </div>
   5814 </div>
   5815 <a id="get_tiles" name="get_tiles"></a>
   5816 <h2 class="memtitle"><span class="permalink"><a href="#get_tiles">&#9670;&nbsp;</a></span>get_tiles()</h2>
   5817 
   5818 <div class="memitem">
   5819 <div class="memproto">
   5820       <table class="memname">
   5821         <tr>
   5822           <td class="memname">void get_tiles </td>
   5823           <td>(</td>
   5824           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5825           <td class="paramname"><em>x</em>, </td>
   5826         </tr>
   5827         <tr>
   5828           <td class="paramkey"></td>
   5829           <td></td>
   5830           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5831           <td class="paramname"><em>y</em>, </td>
   5832         </tr>
   5833         <tr>
   5834           <td class="paramkey"></td>
   5835           <td></td>
   5836           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5837           <td class="paramname"><em>w</em>, </td>
   5838         </tr>
   5839         <tr>
   5840           <td class="paramkey"></td>
   5841           <td></td>
   5842           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5843           <td class="paramname"><em>h</em>, </td>
   5844         </tr>
   5845         <tr>
   5846           <td class="paramkey"></td>
   5847           <td></td>
   5848           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5849           <td class="paramname"><em>vram_addr</em>, </td>
   5850         </tr>
   5851         <tr>
   5852           <td class="paramkey"></td>
   5853           <td></td>
   5854           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5855           <td class="paramname"><em>tiles</em>&#160;</td>
   5856         </tr>
   5857         <tr>
   5858           <td></td>
   5859           <td>)</td>
   5860           <td></td><td></td>
   5861         </tr>
   5862       </table>
   5863 </div><div class="memdoc">
   5864 <p >Copies a rectangular region of Tile Map entries from a given VRAM Address into a buffer without taking into account the state of LCDC bit 3.</p>
   5865 <dl class="params"><dt>Parameters</dt><dd>
   5866   <table class="params">
   5867     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   5868     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   5869     <tr><td class="paramname">w</td><td>Width of area to copy in tiles. Range 0 - 31 </td></tr>
   5870     <tr><td class="paramname">h</td><td>Height of area to copy in tiles. Range 0 - 31 </td></tr>
   5871     <tr><td class="paramname">vram_addr</td><td>Pointer to source VRAM Address </td></tr>
   5872     <tr><td class="paramname">tiles</td><td>Pointer to destination buffer for Tile Map data</td></tr>
   5873   </table>
   5874   </dd>
   5875 </dl>
   5876 <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>
   5877 <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>
   5878 <p >One byte per tile.</p>
   5879 <p >There are two 32x32 Tile Maps in VRAM at addresses 9800h - 9BFFh and 9C00h - 9FFFh.</p>
   5880 <p >The buffer pointed to by <b>tiles</b> should be at least <b>x</b> x <b>y</b> bytes in size.</p>
   5881 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#get_bkg_tiles">get_bkg_tiles</a>, <a class="el" href="gb_8h.html#get_win_tiles">get_win_tiles</a> </dd></dl>
   5882 
   5883 </div>
   5884 </div>
   5885 <a id="set_native_tile_data" name="set_native_tile_data"></a>
   5886 <h2 class="memtitle"><span class="permalink"><a href="#set_native_tile_data">&#9670;&nbsp;</a></span>set_native_tile_data()</h2>
   5887 
   5888 <div class="memitem">
   5889 <div class="memproto">
   5890 <table class="mlabels">
   5891   <tr>
   5892   <td class="mlabels-left">
   5893       <table class="memname">
   5894         <tr>
   5895           <td class="memname">void set_native_tile_data </td>
   5896           <td>(</td>
   5897           <td class="paramtype"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a>&#160;</td>
   5898           <td class="paramname"><em>first_tile</em>, </td>
   5899         </tr>
   5900         <tr>
   5901           <td class="paramkey"></td>
   5902           <td></td>
   5903           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5904           <td class="paramname"><em>nb_tiles</em>, </td>
   5905         </tr>
   5906         <tr>
   5907           <td class="paramkey"></td>
   5908           <td></td>
   5909           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5910           <td class="paramname"><em>data</em>&#160;</td>
   5911         </tr>
   5912         <tr>
   5913           <td></td>
   5914           <td>)</td>
   5915           <td></td><td></td>
   5916         </tr>
   5917       </table>
   5918   </td>
   5919   <td class="mlabels-right">
   5920 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5921   </tr>
   5922 </table>
   5923 </div><div class="memdoc">
   5924 <p >Sets VRAM Tile Pattern data in the native format</p>
   5925 <dl class="params"><dt>Parameters</dt><dd>
   5926   <table class="params">
   5927     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write (0 - 511) </td></tr>
   5928     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   5929     <tr><td class="paramname">data</td><td>Pointer to source Tile Pattern data.</td></tr>
   5930   </table>
   5931   </dd>
   5932 </dl>
   5933 <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>
   5934 <p >The bit depth of the source Tile Pattern data depends on which console is being used: </p><ul>
   5935 <li>Game Boy/Analogue Pocket: loads 2bpp tiles data </li>
   5936 <li>SMS/GG: loads 4bpp tile data </li>
   5937 </ul>
   5938 
   5939 </div>
   5940 </div>
   5941 <a id="set_bkg_native_data" name="set_bkg_native_data"></a>
   5942 <h2 class="memtitle"><span class="permalink"><a href="#set_bkg_native_data">&#9670;&nbsp;</a></span>set_bkg_native_data()</h2>
   5943 
   5944 <div class="memitem">
   5945 <div class="memproto">
   5946 <table class="mlabels">
   5947   <tr>
   5948   <td class="mlabels-left">
   5949       <table class="memname">
   5950         <tr>
   5951           <td class="memname">void set_bkg_native_data </td>
   5952           <td>(</td>
   5953           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5954           <td class="paramname"><em>first_tile</em>, </td>
   5955         </tr>
   5956         <tr>
   5957           <td class="paramkey"></td>
   5958           <td></td>
   5959           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   5960           <td class="paramname"><em>nb_tiles</em>, </td>
   5961         </tr>
   5962         <tr>
   5963           <td class="paramkey"></td>
   5964           <td></td>
   5965           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   5966           <td class="paramname"><em>data</em>&#160;</td>
   5967         </tr>
   5968         <tr>
   5969           <td></td>
   5970           <td>)</td>
   5971           <td></td><td></td>
   5972         </tr>
   5973       </table>
   5974   </td>
   5975   <td class="mlabels-right">
   5976 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   5977   </tr>
   5978 </table>
   5979 </div><div class="memdoc">
   5980 <p >Sets VRAM Tile Pattern data for the Background / Window in the native format</p>
   5981 <dl class="params"><dt>Parameters</dt><dd>
   5982   <table class="params">
   5983     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   5984     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   5985     <tr><td class="paramname">data</td><td>Pointer to source tile data</td></tr>
   5986   </table>
   5987   </dd>
   5988 </dl>
   5989 <p>Writes <b>nb_tiles</b> tiles to VRAM starting at <b>first_tile</b>, tile data is sourced from <b>data</b>.</p>
   5990 <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>
   5991 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_0">VBK_BANK_0</a> indicates the first bank </li>
   5992 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_1">VBK_BANK_1</a> indicates the second</li>
   5993 </ul>
   5994 <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>
   5995 
   5996 </div>
   5997 </div>
   5998 <a id="set_sprite_native_data" name="set_sprite_native_data"></a>
   5999 <h2 class="memtitle"><span class="permalink"><a href="#set_sprite_native_data">&#9670;&nbsp;</a></span>set_sprite_native_data()</h2>
   6000 
   6001 <div class="memitem">
   6002 <div class="memproto">
   6003 <table class="mlabels">
   6004   <tr>
   6005   <td class="mlabels-left">
   6006       <table class="memname">
   6007         <tr>
   6008           <td class="memname">void set_sprite_native_data </td>
   6009           <td>(</td>
   6010           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6011           <td class="paramname"><em>first_tile</em>, </td>
   6012         </tr>
   6013         <tr>
   6014           <td class="paramkey"></td>
   6015           <td></td>
   6016           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6017           <td class="paramname"><em>nb_tiles</em>, </td>
   6018         </tr>
   6019         <tr>
   6020           <td class="paramkey"></td>
   6021           <td></td>
   6022           <td class="paramtype">const <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> *&#160;</td>
   6023           <td class="paramname"><em>data</em>&#160;</td>
   6024         </tr>
   6025         <tr>
   6026           <td></td>
   6027           <td>)</td>
   6028           <td></td><td></td>
   6029         </tr>
   6030       </table>
   6031   </td>
   6032   <td class="mlabels-right">
   6033 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
   6034   </tr>
   6035 </table>
   6036 </div><div class="memdoc">
   6037 <p >Sets VRAM Tile Pattern data for Sprites in the native format</p>
   6038 <dl class="params"><dt>Parameters</dt><dd>
   6039   <table class="params">
   6040     <tr><td class="paramname">first_tile</td><td>Index of the first tile to write </td></tr>
   6041     <tr><td class="paramname">nb_tiles</td><td>Number of tiles to write </td></tr>
   6042     <tr><td class="paramname">data</td><td>Pointer to source tile data</td></tr>
   6043   </table>
   6044   </dd>
   6045 </dl>
   6046 <p>Writes <b>nb_tiles</b> tiles to VRAM starting at <b>first_tile</b>, tile data is sourced from <b>data</b>.</p>
   6047 <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>
   6048 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_0">VBK_BANK_0</a> indicates the first bank </li>
   6049 <li>VBK_REG = <a class="el" href="gb_2hardware_8h.html#VBK_BANK_1">VBK_BANK_1</a> indicates the second </li>
   6050 </ul>
   6051 
   6052 </div>
   6053 </div>
   6054 <a id="init_win" name="init_win"></a>
   6055 <h2 class="memtitle"><span class="permalink"><a href="#init_win">&#9670;&nbsp;</a></span>init_win()</h2>
   6056 
   6057 <div class="memitem">
   6058 <div class="memproto">
   6059       <table class="memname">
   6060         <tr>
   6061           <td class="memname">void init_win </td>
   6062           <td>(</td>
   6063           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6064           <td class="paramname"><em>c</em></td><td>)</td>
   6065           <td></td>
   6066         </tr>
   6067       </table>
   6068 </div><div class="memdoc">
   6069 <p >Initializes the entire Window Tile Map with Tile Number <b>c</b> </p><dl class="params"><dt>Parameters</dt><dd>
   6070   <table class="params">
   6071     <tr><td class="paramname">c</td><td>Tile number to fill with</td></tr>
   6072   </table>
   6073   </dd>
   6074 </dl>
   6075 <dl class="section note"><dt>Note</dt><dd>This function avoids writes during modes 2 &amp; 3 </dd></dl>
   6076 
   6077 </div>
   6078 </div>
   6079 <a id="init_bkg" name="init_bkg"></a>
   6080 <h2 class="memtitle"><span class="permalink"><a href="#init_bkg">&#9670;&nbsp;</a></span>init_bkg()</h2>
   6081 
   6082 <div class="memitem">
   6083 <div class="memproto">
   6084       <table class="memname">
   6085         <tr>
   6086           <td class="memname">void init_bkg </td>
   6087           <td>(</td>
   6088           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6089           <td class="paramname"><em>c</em></td><td>)</td>
   6090           <td></td>
   6091         </tr>
   6092       </table>
   6093 </div><div class="memdoc">
   6094 <p >Initializes the entire Background Tile Map with Tile Number <b>c</b> </p><dl class="params"><dt>Parameters</dt><dd>
   6095   <table class="params">
   6096     <tr><td class="paramname">c</td><td>Tile number to fill with</td></tr>
   6097   </table>
   6098   </dd>
   6099 </dl>
   6100 <dl class="section note"><dt>Note</dt><dd>This function avoids writes during modes 2 &amp; 3 </dd></dl>
   6101 
   6102 </div>
   6103 </div>
   6104 <a id="vmemset" name="vmemset"></a>
   6105 <h2 class="memtitle"><span class="permalink"><a href="#vmemset">&#9670;&nbsp;</a></span>vmemset()</h2>
   6106 
   6107 <div class="memitem">
   6108 <div class="memproto">
   6109       <table class="memname">
   6110         <tr>
   6111           <td class="memname">void vmemset </td>
   6112           <td>(</td>
   6113           <td class="paramtype">void *&#160;</td>
   6114           <td class="paramname"><em>s</em>, </td>
   6115         </tr>
   6116         <tr>
   6117           <td class="paramkey"></td>
   6118           <td></td>
   6119           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6120           <td class="paramname"><em>c</em>, </td>
   6121         </tr>
   6122         <tr>
   6123           <td class="paramkey"></td>
   6124           <td></td>
   6125           <td class="paramtype"><a class="el" href="asm_2mos6502_2types_8h.html#size_t">size_t</a>&#160;</td>
   6126           <td class="paramname"><em>n</em>&#160;</td>
   6127         </tr>
   6128         <tr>
   6129           <td></td>
   6130           <td>)</td>
   6131           <td></td><td></td>
   6132         </tr>
   6133       </table>
   6134 </div><div class="memdoc">
   6135 <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>
   6136   <table class="params">
   6137     <tr><td class="paramname">s</td><td>Start address in VRAM </td></tr>
   6138     <tr><td class="paramname">c</td><td>Tile number to fill with </td></tr>
   6139     <tr><td class="paramname">n</td><td>Size of memory region (in bytes) to fill</td></tr>
   6140   </table>
   6141   </dd>
   6142 </dl>
   6143 <dl class="section note"><dt>Note</dt><dd>This function avoids writes during modes 2 &amp; 3 </dd></dl>
   6144 
   6145 </div>
   6146 </div>
   6147 <a id="fill_bkg_rect" name="fill_bkg_rect"></a>
   6148 <h2 class="memtitle"><span class="permalink"><a href="#fill_bkg_rect">&#9670;&nbsp;</a></span>fill_bkg_rect()</h2>
   6149 
   6150 <div class="memitem">
   6151 <div class="memproto">
   6152       <table class="memname">
   6153         <tr>
   6154           <td class="memname">void fill_bkg_rect </td>
   6155           <td>(</td>
   6156           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6157           <td class="paramname"><em>x</em>, </td>
   6158         </tr>
   6159         <tr>
   6160           <td class="paramkey"></td>
   6161           <td></td>
   6162           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6163           <td class="paramname"><em>y</em>, </td>
   6164         </tr>
   6165         <tr>
   6166           <td class="paramkey"></td>
   6167           <td></td>
   6168           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6169           <td class="paramname"><em>w</em>, </td>
   6170         </tr>
   6171         <tr>
   6172           <td class="paramkey"></td>
   6173           <td></td>
   6174           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6175           <td class="paramname"><em>h</em>, </td>
   6176         </tr>
   6177         <tr>
   6178           <td class="paramkey"></td>
   6179           <td></td>
   6180           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6181           <td class="paramname"><em>tile</em>&#160;</td>
   6182         </tr>
   6183         <tr>
   6184           <td></td>
   6185           <td>)</td>
   6186           <td></td><td></td>
   6187         </tr>
   6188       </table>
   6189 </div><div class="memdoc">
   6190 <p >Fills a rectangular region of Tile Map entries for the Background layer with tile.</p>
   6191 <dl class="params"><dt>Parameters</dt><dd>
   6192   <table class="params">
   6193     <tr><td class="paramname">x</td><td>X Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   6194     <tr><td class="paramname">y</td><td>Y Start position in Background Map tile coordinates. Range 0 - 31 </td></tr>
   6195     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   6196     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   6197     <tr><td class="paramname">tile</td><td>Fill value </td></tr>
   6198   </table>
   6199   </dd>
   6200 </dl>
   6201 
   6202 </div>
   6203 </div>
   6204 <a id="fill_win_rect" name="fill_win_rect"></a>
   6205 <h2 class="memtitle"><span class="permalink"><a href="#fill_win_rect">&#9670;&nbsp;</a></span>fill_win_rect()</h2>
   6206 
   6207 <div class="memitem">
   6208 <div class="memproto">
   6209       <table class="memname">
   6210         <tr>
   6211           <td class="memname">void fill_win_rect </td>
   6212           <td>(</td>
   6213           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6214           <td class="paramname"><em>x</em>, </td>
   6215         </tr>
   6216         <tr>
   6217           <td class="paramkey"></td>
   6218           <td></td>
   6219           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6220           <td class="paramname"><em>y</em>, </td>
   6221         </tr>
   6222         <tr>
   6223           <td class="paramkey"></td>
   6224           <td></td>
   6225           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6226           <td class="paramname"><em>w</em>, </td>
   6227         </tr>
   6228         <tr>
   6229           <td class="paramkey"></td>
   6230           <td></td>
   6231           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6232           <td class="paramname"><em>h</em>, </td>
   6233         </tr>
   6234         <tr>
   6235           <td class="paramkey"></td>
   6236           <td></td>
   6237           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
   6238           <td class="paramname"><em>tile</em>&#160;</td>
   6239         </tr>
   6240         <tr>
   6241           <td></td>
   6242           <td>)</td>
   6243           <td></td><td></td>
   6244         </tr>
   6245       </table>
   6246 </div><div class="memdoc">
   6247 <p >Fills a rectangular region of Tile Map entries for the Window layer with tile.</p>
   6248 <dl class="params"><dt>Parameters</dt><dd>
   6249   <table class="params">
   6250     <tr><td class="paramname">x</td><td>X Start position in Window Map tile coordinates. Range 0 - 31 </td></tr>
   6251     <tr><td class="paramname">y</td><td>Y Start position in Window Map tile coordinates. Range 0 - 31 </td></tr>
   6252     <tr><td class="paramname">w</td><td>Width of area to set in tiles. Range 1 - 32 </td></tr>
   6253     <tr><td class="paramname">h</td><td>Height of area to set in tiles. Range 1 - 32 </td></tr>
   6254     <tr><td class="paramname">tile</td><td>Fill value </td></tr>
   6255   </table>
   6256   </dd>
   6257 </dl>
   6258 
   6259 </div>
   6260 </div>
   6261 <h2 class="groupheader">Variable Documentation</h2>
   6262 <a id="c" name="c"></a>
   6263 <h2 class="memtitle"><span class="permalink"><a href="#c">&#9670;&nbsp;</a></span>c</h2>
   6264 
   6265 <div class="memitem">
   6266 <div class="memproto">
   6267       <table class="memname">
   6268         <tr>
   6269           <td class="memname">void c</td>
   6270         </tr>
   6271       </table>
   6272 </div><div class="memdoc">
   6273 
   6274 </div>
   6275 </div>
   6276 <a id="d" name="d"></a>
   6277 <h2 class="memtitle"><span class="permalink"><a href="#d">&#9670;&nbsp;</a></span>d</h2>
   6278 
   6279 <div class="memitem">
   6280 <div class="memproto">
   6281       <table class="memname">
   6282         <tr>
   6283           <td class="memname">void d</td>
   6284         </tr>
   6285       </table>
   6286 </div><div class="memdoc">
   6287 
   6288 </div>
   6289 </div>
   6290 <a id="e" name="e"></a>
   6291 <h2 class="memtitle"><span class="permalink"><a href="#e">&#9670;&nbsp;</a></span>e</h2>
   6292 
   6293 <div class="memitem">
   6294 <div class="memproto">
   6295       <table class="memname">
   6296         <tr>
   6297           <td class="memname">void e</td>
   6298         </tr>
   6299       </table>
   6300 </div><div class="memdoc">
   6301 
   6302 </div>
   6303 </div>
   6304 <a id="h" name="h"></a>
   6305 <h2 class="memtitle"><span class="permalink"><a href="#h">&#9670;&nbsp;</a></span>h</h2>
   6306 
   6307 <div class="memitem">
   6308 <div class="memproto">
   6309       <table class="memname">
   6310         <tr>
   6311           <td class="memname">void h</td>
   6312         </tr>
   6313       </table>
   6314 </div><div class="memdoc">
   6315 
   6316 </div>
   6317 </div>
   6318 <a id="l" name="l"></a>
   6319 <h2 class="memtitle"><span class="permalink"><a href="#l">&#9670;&nbsp;</a></span>l</h2>
   6320 
   6321 <div class="memitem">
   6322 <div class="memproto">
   6323       <table class="memname">
   6324         <tr>
   6325           <td class="memname">void l</td>
   6326         </tr>
   6327       </table>
   6328 </div><div class="memdoc">
   6329 <b>Initial value:</b><div class="fragment"><div class="line">{</div>
   6330 <div class="line">    __asm__(<span class="stringliteral">&quot;ei&quot;</span>)</div>
   6331 </div><!-- fragment -->
   6332 </div>
   6333 </div>
   6334 <a id="_cpu" name="_cpu"></a>
   6335 <h2 class="memtitle"><span class="permalink"><a href="#_cpu">&#9670;&nbsp;</a></span>_cpu</h2>
   6336 
   6337 <div class="memitem">
   6338 <div class="memproto">
   6339 <table class="mlabels">
   6340   <tr>
   6341   <td class="mlabels-left">
   6342       <table class="memname">
   6343         <tr>
   6344           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> _cpu</td>
   6345         </tr>
   6346       </table>
   6347   </td>
   6348   <td class="mlabels-right">
   6349 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   6350   </tr>
   6351 </table>
   6352 </div><div class="memdoc">
   6353 <p >GB CPU type</p>
   6354 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#DMG_TYPE">DMG_TYPE</a>, <a class="el" href="gb_8h.html#MGB_TYPE">MGB_TYPE</a>, <a class="el" href="gb_8h.html#CGB_TYPE">CGB_TYPE</a>, <a class="el" href="cgb_8h.html#cpu_fast">cpu_fast()</a>, <a class="el" href="cgb_8h.html#cpu_slow">cpu_slow()</a>, <a class="el" href="gb_8h.html#_is_GBA">_is_GBA</a> </dd></dl>
   6355 
   6356 </div>
   6357 </div>
   6358 <a id="_is_GBA" name="_is_GBA"></a>
   6359 <h2 class="memtitle"><span class="permalink"><a href="#_is_GBA">&#9670;&nbsp;</a></span>_is_GBA</h2>
   6360 
   6361 <div class="memitem">
   6362 <div class="memproto">
   6363 <table class="mlabels">
   6364   <tr>
   6365   <td class="mlabels-left">
   6366       <table class="memname">
   6367         <tr>
   6368           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> _is_GBA</td>
   6369         </tr>
   6370       </table>
   6371   </td>
   6372   <td class="mlabels-right">
   6373 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   6374   </tr>
   6375 </table>
   6376 </div><div class="memdoc">
   6377 <p >GBA detection</p>
   6378 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_8h.html#GBA_DETECTED">GBA_DETECTED</a>, <a class="el" href="gb_8h.html#GBA_NOT_DETECTED">GBA_NOT_DETECTED</a>, <a class="el" href="gb_8h.html#_cpu">_cpu</a> </dd></dl>
   6379 
   6380 </div>
   6381 </div>
   6382 <a id="sys_time" name="sys_time"></a>
   6383 <h2 class="memtitle"><span class="permalink"><a href="#sys_time">&#9670;&nbsp;</a></span>sys_time</h2>
   6384 
   6385 <div class="memitem">
   6386 <div class="memproto">
   6387 <table class="mlabels">
   6388   <tr>
   6389   <td class="mlabels-left">
   6390       <table class="memname">
   6391         <tr>
   6392           <td class="memname">volatile <a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> sys_time</td>
   6393         </tr>
   6394       </table>
   6395   </td>
   6396   <td class="mlabels-right">
   6397 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   6398   </tr>
   6399 </table>
   6400 </div><div class="memdoc">
   6401 <p >Global Time Counter in VBL periods (60Hz)</p>
   6402 <p >Increments once per Frame</p>
   6403 <p >Will wrap around every ~18 minutes (unsigned 16 bits = 65535 / 60 / 60 = 18.2) </p>
   6404 
   6405 </div>
   6406 </div>
   6407 <a id="_vbl_done" name="_vbl_done"></a>
   6408 <h2 class="memtitle"><span class="permalink"><a href="#_vbl_done">&#9670;&nbsp;</a></span>_vbl_done</h2>
   6409 
   6410 <div class="memitem">
   6411 <div class="memproto">
   6412       <table class="memname">
   6413         <tr>
   6414           <td class="memname"><a class="el" href="nes_2hardware_8h.html#__REG">__REG</a> _vbl_done</td>
   6415         </tr>
   6416       </table>
   6417 </div><div class="memdoc">
   6418 <p >Flag indicating the VBlank ISR has run</p>
   6419 <p >Flag gets cleared at the start of <a class="el" href="gb_8h.html#vsync">vsync()</a> / <a class="el" href="gb_8h.html#wait_vbl_done">wait_vbl_done()</a> and set in the default VBlank ISR handler. </p>
   6420 
   6421 </div>
   6422 </div>
   6423 <a id="_io_status" name="_io_status"></a>
   6424 <h2 class="memtitle"><span class="permalink"><a href="#_io_status">&#9670;&nbsp;</a></span>_io_status</h2>
   6425 
   6426 <div class="memitem">
   6427 <div class="memproto">
   6428 <table class="mlabels">
   6429   <tr>
   6430   <td class="mlabels-left">
   6431       <table class="memname">
   6432         <tr>
   6433           <td class="memname">volatile <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> _io_status</td>
   6434         </tr>
   6435       </table>
   6436   </td>
   6437   <td class="mlabels-right">
   6438 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   6439   </tr>
   6440 </table>
   6441 </div><div class="memdoc">
   6442 <p >Serial Link: Current IO Status. An OR of IO_* </p>
   6443 
   6444 </div>
   6445 </div>
   6446 <a id="_io_in" name="_io_in"></a>
   6447 <h2 class="memtitle"><span class="permalink"><a href="#_io_in">&#9670;&nbsp;</a></span>_io_in</h2>
   6448 
   6449 <div class="memitem">
   6450 <div class="memproto">
   6451 <table class="mlabels">
   6452   <tr>
   6453   <td class="mlabels-left">
   6454       <table class="memname">
   6455         <tr>
   6456           <td class="memname">volatile <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> _io_in</td>
   6457         </tr>
   6458       </table>
   6459   </td>
   6460   <td class="mlabels-right">
   6461 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   6462   </tr>
   6463 </table>
   6464 </div><div class="memdoc">
   6465 <p >Serial Link: Byte just read after calling <a class="el" href="gb_8h.html#receive_byte">receive_byte()</a> </p>
   6466 
   6467 </div>
   6468 </div>
   6469 <a id="_io_out" name="_io_out"></a>
   6470 <h2 class="memtitle"><span class="permalink"><a href="#_io_out">&#9670;&nbsp;</a></span>_io_out</h2>
   6471 
   6472 <div class="memitem">
   6473 <div class="memproto">
   6474 <table class="mlabels">
   6475   <tr>
   6476   <td class="mlabels-left">
   6477       <table class="memname">
   6478         <tr>
   6479           <td class="memname">volatile <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> _io_out</td>
   6480         </tr>
   6481       </table>
   6482   </td>
   6483   <td class="mlabels-right">
   6484 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   6485   </tr>
   6486 </table>
   6487 </div><div class="memdoc">
   6488 <p >Serial Link: Write byte to send here before calling <a class="el" href="gb_8h.html#send_byte">send_byte()</a> </p>
   6489 
   6490 </div>
   6491 </div>
   6492 <a id="_current_bank" name="_current_bank"></a>
   6493 <h2 class="memtitle"><span class="permalink"><a href="#_current_bank">&#9670;&nbsp;</a></span>_current_bank</h2>
   6494 
   6495 <div class="memitem">
   6496 <div class="memproto">
   6497       <table class="memname">
   6498         <tr>
   6499           <td class="memname"><a class="el" href="nes_2hardware_8h.html#__REG">__REG</a> _current_bank</td>
   6500         </tr>
   6501       </table>
   6502 </div><div class="memdoc">
   6503 <p >Tracks current active ROM bank</p>
   6504 <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>
   6505 <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>
   6506 <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>
   6507 <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>
   6508 
   6509 </div>
   6510 </div>
   6511 <a id="b" name="b"></a>
   6512 <h2 class="memtitle"><span class="permalink"><a href="#b">&#9670;&nbsp;</a></span>b</h2>
   6513 
   6514 <div class="memitem">
   6515 <div class="memproto">
   6516       <table class="memname">
   6517         <tr>
   6518           <td class="memname">void b</td>
   6519         </tr>
   6520       </table>
   6521 </div><div class="memdoc">
   6522 
   6523 </div>
   6524 </div>
   6525 <a id="_current_1bpp_colors" name="_current_1bpp_colors"></a>
   6526 <h2 class="memtitle"><span class="permalink"><a href="#_current_1bpp_colors">&#9670;&nbsp;</a></span>_current_1bpp_colors</h2>
   6527 
   6528 <div class="memitem">
   6529 <div class="memproto">
   6530 <table class="mlabels">
   6531   <tr>
   6532   <td class="mlabels-left">
   6533       <table class="memname">
   6534         <tr>
   6535           <td class="memname"><a class="el" href="stdint_8h.html#uint16_t">uint16_t</a> _current_1bpp_colors</td>
   6536         </tr>
   6537       </table>
   6538   </td>
   6539   <td class="mlabels-right">
   6540 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   6541   </tr>
   6542 </table>
   6543 </div><div class="memdoc">
   6544 
   6545 </div>
   6546 </div>
   6547 <a id="_map_tile_offset" name="_map_tile_offset"></a>
   6548 <h2 class="memtitle"><span class="permalink"><a href="#_map_tile_offset">&#9670;&nbsp;</a></span>_map_tile_offset</h2>
   6549 
   6550 <div class="memitem">
   6551 <div class="memproto">
   6552 <table class="mlabels">
   6553   <tr>
   6554   <td class="mlabels-left">
   6555       <table class="memname">
   6556         <tr>
   6557           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> _map_tile_offset</td>
   6558         </tr>
   6559       </table>
   6560   </td>
   6561   <td class="mlabels-right">
   6562 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   6563   </tr>
   6564 </table>
   6565 </div><div class="memdoc">
   6566 
   6567 </div>
   6568 </div>
   6569 <a id="_submap_tile_offset" name="_submap_tile_offset"></a>
   6570 <h2 class="memtitle"><span class="permalink"><a href="#_submap_tile_offset">&#9670;&nbsp;</a></span>_submap_tile_offset</h2>
   6571 
   6572 <div class="memitem">
   6573 <div class="memproto">
   6574 <table class="mlabels">
   6575   <tr>
   6576   <td class="mlabels-left">
   6577       <table class="memname">
   6578         <tr>
   6579           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> _submap_tile_offset</td>
   6580         </tr>
   6581       </table>
   6582   </td>
   6583   <td class="mlabels-right">
   6584 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   6585   </tr>
   6586 </table>
   6587 </div><div class="memdoc">
   6588 
   6589 </div>
   6590 </div>
   6591 <a id="shadow_OAM" name="shadow_OAM"></a>
   6592 <h2 class="memtitle"><span class="permalink"><a href="#shadow_OAM">&#9670;&nbsp;</a></span>shadow_OAM</h2>
   6593 
   6594 <div class="memitem">
   6595 <div class="memproto">
   6596 <table class="mlabels">
   6597   <tr>
   6598   <td class="mlabels-left">
   6599       <table class="memname">
   6600         <tr>
   6601           <td class="memname">volatile struct <a class="el" href="struct_o_a_m__item__t.html">OAM_item_t</a> shadow_OAM[]</td>
   6602         </tr>
   6603       </table>
   6604   </td>
   6605   <td class="mlabels-right">
   6606 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   6607   </tr>
   6608 </table>
   6609 </div><div class="memdoc">
   6610 <p >Shadow OAM array in WRAM, that is DMA-transferred into the real OAM each VBlank </p>
   6611 
   6612 </div>
   6613 </div>
   6614 <a id="_shadow_OAM_base" name="_shadow_OAM_base"></a>
   6615 <h2 class="memtitle"><span class="permalink"><a href="#_shadow_OAM_base">&#9670;&nbsp;</a></span>_shadow_OAM_base</h2>
   6616 
   6617 <div class="memitem">
   6618 <div class="memproto">
   6619       <table class="memname">
   6620         <tr>
   6621           <td class="memname"><a class="el" href="nes_2hardware_8h.html#__REG">__REG</a> _shadow_OAM_base</td>
   6622         </tr>
   6623       </table>
   6624 </div><div class="memdoc">
   6625 <p >MSB of shadow_OAM address is used by OAM DMA copying routine </p>
   6626 
   6627 </div>
   6628 </div>
   6629 </div><!-- contents -->
   6630 </div><!-- doc-content -->
   6631 <!-- start footer part -->
   6632 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   6633   <ul>
   6634     <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_bdfe001eb73b667f67d57fb851301eb1.html">gb</a></li><li class="navelem"><a class="el" href="gb_8h.html">gb.h</a></li>
   6635     <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>
   6636   </ul>
   6637 </div>
   6638 </body>
   6639 </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.