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_2metasprites_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/metasprites.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_2metasprites_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">metasprites.h File Reference</div></div>
    109 </div><!--header-->
    110 <div class="contents">
    111 <div class="textblock"><code>#include &lt;<a class="el" href="gb_2hardware_8h_source.html">gb/hardware.h</a>&gt;</code><br />
    112 <code>#include &lt;types.h&gt;</code><br />
    113 <code>#include &lt;<a class="el" href="stdint_8h_source.html">stdint.h</a>&gt;</code><br />
    114 </div>
    115 <p><a href="gb_2metasprites_8h_source.html">Go to the source code of this file.</a></p>
    116 <table class="memberdecls">
    117 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="nested-classes" name="nested-classes"></a>
    118 Data Structures</h2></td></tr>
    119 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structmetasprite__t.html">metasprite_t</a></td></tr>
    120 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
    121 </table><table class="memberdecls">
    122 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
    123 Macros</h2></td></tr>
    124 <tr class="memitem:metasprite_end"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_2metasprites_8h.html#metasprite_end">metasprite_end</a>&#160;&#160;&#160;-128</td></tr>
    125 <tr class="separator:metasprite_end"><td class="memSeparator" colspan="2">&#160;</td></tr>
    126 <tr class="memitem:METASPR_ITEM"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_2metasprites_8h.html#METASPR_ITEM">METASPR_ITEM</a>(dy,  dx,  dt,  a)&#160;&#160;&#160;{(dy),(dx),(dt),(a)}</td></tr>
    127 <tr class="separator:METASPR_ITEM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    128 <tr class="memitem:METASPR_TERM"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_2metasprites_8h.html#METASPR_TERM">METASPR_TERM</a>&#160;&#160;&#160;{<a class="el" href="sms_2metasprites_8h.html#metasprite_end">metasprite_end</a>}</td></tr>
    129 <tr class="separator:METASPR_TERM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    130 </table><table class="memberdecls">
    131 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
    132 Typedefs</h2></td></tr>
    133 <tr class="memitem:metasprite_t"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structmetasprite__t.html">metasprite_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_2metasprites_8h.html#metasprite_t">metasprite_t</a></td></tr>
    134 <tr class="separator:metasprite_t"><td class="memSeparator" colspan="2">&#160;</td></tr>
    135 </table><table class="memberdecls">
    136 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
    137 Functions</h2></td></tr>
    138 <tr class="memitem:hide_sprites_range"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_2metasprites_8h.html#hide_sprites_range">hide_sprites_range</a> (<a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> from, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> to)</td></tr>
    139 <tr class="separator:hide_sprites_range"><td class="memSeparator" colspan="2">&#160;</td></tr>
    140 <tr class="memitem:move_metasprite_ex"><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_2metasprites_8h.html#move_metasprite_ex">move_metasprite_ex</a> (const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *metasprite, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_prop, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_sprite, <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>
    141 <tr class="separator:move_metasprite_ex"><td class="memSeparator" colspan="2">&#160;</td></tr>
    142 <tr class="memitem:move_metasprite"><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_2metasprites_8h.html#move_metasprite">move_metasprite</a> (const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *metasprite, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_sprite, <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>
    143 <tr class="separator:move_metasprite"><td class="memSeparator" colspan="2">&#160;</td></tr>
    144 <tr class="memitem:move_metasprite_flipx"><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_2metasprites_8h.html#move_metasprite_flipx">move_metasprite_flipx</a> (const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *metasprite, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_prop, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_sprite, <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>
    145 <tr class="separator:move_metasprite_flipx"><td class="memSeparator" colspan="2">&#160;</td></tr>
    146 <tr class="memitem:move_metasprite_vflip"><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_2metasprites_8h.html#move_metasprite_vflip">move_metasprite_vflip</a> (const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *metasprite, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_sprite, <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>
    147 <tr class="separator:move_metasprite_vflip"><td class="memSeparator" colspan="2">&#160;</td></tr>
    148 <tr class="memitem:move_metasprite_flipy"><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_2metasprites_8h.html#move_metasprite_flipy">move_metasprite_flipy</a> (const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *metasprite, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_prop, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_sprite, <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>
    149 <tr class="separator:move_metasprite_flipy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    150 <tr class="memitem:move_metasprite_hflip"><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_2metasprites_8h.html#move_metasprite_hflip">move_metasprite_hflip</a> (const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *metasprite, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_sprite, <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>
    151 <tr class="separator:move_metasprite_hflip"><td class="memSeparator" colspan="2">&#160;</td></tr>
    152 <tr class="memitem:move_metasprite_flipxy"><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_2metasprites_8h.html#move_metasprite_flipxy">move_metasprite_flipxy</a> (const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *metasprite, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_prop, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_sprite, <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>
    153 <tr class="separator:move_metasprite_flipxy"><td class="memSeparator" colspan="2">&#160;</td></tr>
    154 <tr class="memitem:move_metasprite_hvflip"><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_2metasprites_8h.html#move_metasprite_hvflip">move_metasprite_hvflip</a> (const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *metasprite, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_tile, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_sprite, <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>
    155 <tr class="separator:move_metasprite_hvflip"><td class="memSeparator" colspan="2">&#160;</td></tr>
    156 <tr class="memitem:hide_metasprite"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_2metasprites_8h.html#hide_metasprite">hide_metasprite</a> (const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *metasprite, <a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> base_sprite)</td></tr>
    157 <tr class="separator:hide_metasprite"><td class="memSeparator" colspan="2">&#160;</td></tr>
    158 </table><table class="memberdecls">
    159 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="var-members" name="var-members"></a>
    160 Variables</h2></td></tr>
    161 <tr class="memitem:__current_metasprite"><td class="memItemLeft" align="right" valign="top">const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="gb_2metasprites_8h.html#__current_metasprite">__current_metasprite</a></td></tr>
    162 <tr class="separator:__current_metasprite"><td class="memSeparator" colspan="2">&#160;</td></tr>
    163 <tr class="memitem:__current_base_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_2metasprites_8h.html#__current_base_tile">__current_base_tile</a></td></tr>
    164 <tr class="separator:__current_base_tile"><td class="memSeparator" colspan="2">&#160;</td></tr>
    165 <tr class="memitem:__current_base_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_2metasprites_8h.html#__current_base_prop">__current_base_prop</a></td></tr>
    166 <tr class="separator:__current_base_prop"><td class="memSeparator" colspan="2">&#160;</td></tr>
    167 <tr class="memitem:__render_shadow_OAM"><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_2metasprites_8h.html#__render_shadow_OAM">__render_shadow_OAM</a></td></tr>
    168 <tr class="separator:__render_shadow_OAM"><td class="memSeparator" colspan="2">&#160;</td></tr>
    169 </table>
    170 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
    171 <div class="textblock"><p ><a class="anchor" id="metasprite_main_docs"></a></p>
    172 <h1><a class="anchor" id="autotoc_md311"></a>
    173 Metasprite support</h1>
    174 <p >A metasprite is a larger sprite made up from a collection of smaller individual hardware sprites. Different frames of the same metasprites can share tile data.</p>
    175 <p >The api supports metasprites in both <a class="el" href="sms_8h.html#SPRITES_8x8">SPRITES_8x8</a> and <a class="el" href="sms_8h.html#SPRITES_8x16">SPRITES_8x16</a> mode. If 8x16 mode is used then the height of the metasprite must be a multiple of 16.</p>
    176 <p >The origin (pivot) for the metasprite is not required to be in the upper left-hand corner as with regular hardware sprites.</p>
    177 <p >Use the <a class="el" href="docs_toolchain.html#utility_png2asset">utility_png2asset</a> tool to convert single or multiple frames of graphics into metasprite structured data for use with the ...metasprite...() functions.</p>
    178 <h1><a class="anchor" id="autotoc_md312"></a>
    179 Metasprites composed of variable numbers of sprites</h1>
    180 <p >When using png2asset, it's common for the output of different frames to be composed of different numbers of hardware sprites (since it's trying to create each frame as efficiently as possible). Due to that, it's good practice to clear out (hide) unused sprites in the shadow_OAM that have been set by previous frames.</p>
    181 <div class="fragment"><div class="line"><span class="comment">// Example:</span></div>
    182 <div class="line"><span class="comment">// Hide rest of the hardware sprites, because amount</span></div>
    183 <div class="line"><span class="comment">// of sprites differ between animation frames.</span></div>
    184 <div class="line"><span class="comment">// (where hiwater == last hardware sprite used + 1)</span></div>
    185 <div class="line"><a class="code hl_function" href="gb_2metasprites_8h.html#hide_sprites_range">hide_sprites_range</a>(hiwater, <a class="code hl_define" href="gb_8h.html#MAX_HARDWARE_SPRITES">MAX_HARDWARE_SPRITES</a>);</div>
    186 <div class="ttc" id="agb_2metasprites_8h_html_hide_sprites_range"><div class="ttname"><a href="gb_2metasprites_8h.html#hide_sprites_range">hide_sprites_range</a></div><div class="ttdeci">void hide_sprites_range(uint8_t from, uint8_t to)</div></div>
    187 <div class="ttc" id="agb_8h_html_MAX_HARDWARE_SPRITES"><div class="ttname"><a href="gb_8h.html#MAX_HARDWARE_SPRITES">MAX_HARDWARE_SPRITES</a></div><div class="ttdeci">#define MAX_HARDWARE_SPRITES</div><div class="ttdef"><b>Definition:</b> gb.h:1854</div></div>
    188 </div><!-- fragment --><p ><a class="anchor" id="metasprite_and_sprite_properties"></a></p>
    189 <h1><a class="anchor" id="autotoc_md313"></a>
    190 Metasprites and sprite properties (including cgb palette)</h1>
    191 <p >When the move_metasprite_*() functions are called they update all properties for the affected sprites in the Shadow OAM. This means any existing property flags set for a sprite (CGB palette, BG/WIN priority, Tile VRAM Bank) will get overwritten.</p>
    192 <p >How to use sprite property flags with metasprites:</p><ul>
    193 <li>Primary method: Use the <code>base_prop</code> parameter for the move_metasprite_*() functions.<ul>
    194 <li>For more details about the properties on the Game Boy see: <a href="https://gbdev.io/pandocs/OAM.html#byte-3&ndash;attributesflags">https://gbdev.io/pandocs/OAM.html#byte-3&amp;ndash;attributesflags</a></li>
    195 <li>This can be left at zero for defaults</li>
    196 <li>Various <code>OAMF_*</code> flags can be used depending on the platform:<ul>
    197 <li><a class="el" href="gb_2hardware_8h.html#OAMF_BANK0">OAMF_BANK0</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_BANK1">OAMF_BANK1</a></li>
    198 <li><a class="el" href="gb_2hardware_8h.html#OAMF_CGB_PAL0">OAMF_CGB_PAL0</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_CGB_PAL1">OAMF_CGB_PAL1</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_CGB_PAL2">OAMF_CGB_PAL2</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_CGB_PAL3">OAMF_CGB_PAL3</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_CGB_PAL4">OAMF_CGB_PAL4</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_CGB_PAL5">OAMF_CGB_PAL5</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_CGB_PAL6">OAMF_CGB_PAL6</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_CGB_PAL7">OAMF_CGB_PAL7</a>,</li>
    199 <li><a class="el" href="gb_2hardware_8h.html#OAMF_PAL0">OAMF_PAL0</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_PAL1">OAMF_PAL1</a>,</li>
    200 <li><a class="el" href="gb_2hardware_8h.html#OAMF_PALMASK">OAMF_PALMASK</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_PRI">OAMF_PRI</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_XFLIP">OAMF_XFLIP</a>, <a class="el" href="gb_2hardware_8h.html#OAMF_YFLIP">OAMF_YFLIP</a></li>
    201 </ul>
    202 </li>
    203 </ul>
    204 </li>
    205 <li>Alternate method: The metasprite structures can have the property flags modified before compilation (such as with <code>-sp &lt;props&gt;</code> in the <a class="el" href="docs_toolchain.html#utility_png2asset">png2asset</a> tool).</li>
    206 </ul>
    207 <p >The following functions only support hardware sprite flipping on the Game Boy / Mega Duck and NES. For other consoles which do not have hardware sprite flipping see the cross-platform metasprite example for a workaround (with some performance penalty).</p>
    208 <ul>
    209 <li><a class="el" href="gb_2metasprites_8h.html#move_metasprite_flipx">move_metasprite_flipx()</a></li>
    210 <li><a class="el" href="gb_2metasprites_8h.html#move_metasprite_flipy">move_metasprite_flipy()</a></li>
    211 <li><a class="el" href="gb_2metasprites_8h.html#move_metasprite_flipxy">move_metasprite_flipxy()</a></li>
    212 </ul>
    213 <p >To test for hardware support see <a class="el" href="sms_8h.html#HARDWARE_SPRITE_CAN_FLIP_X">HARDWARE_SPRITE_CAN_FLIP_X</a> and <a class="el" href="sms_8h.html#HARDWARE_SPRITE_CAN_FLIP_Y">HARDWARE_SPRITE_CAN_FLIP_Y</a>. Also see <a class="el" href="docs_supported_consoles.html#docs_consoles_supported_list">docs_consoles_supported_list</a> for a brief summary of console capabilities. </p>
    214 </div><h2 class="groupheader">Macro Definition Documentation</h2>
    215 <a id="metasprite_end" name="metasprite_end"></a>
    216 <h2 class="memtitle"><span class="permalink"><a href="#metasprite_end">&#9670;&nbsp;</a></span>metasprite_end</h2>
    217 
    218 <div class="memitem">
    219 <div class="memproto">
    220       <table class="memname">
    221         <tr>
    222           <td class="memname">#define metasprite_end&#160;&#160;&#160;-128</td>
    223         </tr>
    224       </table>
    225 </div><div class="memdoc">
    226 
    227 </div>
    228 </div>
    229 <a id="METASPR_ITEM" name="METASPR_ITEM"></a>
    230 <h2 class="memtitle"><span class="permalink"><a href="#METASPR_ITEM">&#9670;&nbsp;</a></span>METASPR_ITEM</h2>
    231 
    232 <div class="memitem">
    233 <div class="memproto">
    234       <table class="memname">
    235         <tr>
    236           <td class="memname">#define METASPR_ITEM</td>
    237           <td>(</td>
    238           <td class="paramtype">&#160;</td>
    239           <td class="paramname">dy, </td>
    240         </tr>
    241         <tr>
    242           <td class="paramkey"></td>
    243           <td></td>
    244           <td class="paramtype">&#160;</td>
    245           <td class="paramname">dx, </td>
    246         </tr>
    247         <tr>
    248           <td class="paramkey"></td>
    249           <td></td>
    250           <td class="paramtype">&#160;</td>
    251           <td class="paramname">dt, </td>
    252         </tr>
    253         <tr>
    254           <td class="paramkey"></td>
    255           <td></td>
    256           <td class="paramtype">&#160;</td>
    257           <td class="paramname">a&#160;</td>
    258         </tr>
    259         <tr>
    260           <td></td>
    261           <td>)</td>
    262           <td></td><td>&#160;&#160;&#160;{(dy),(dx),(dt),(a)}</td>
    263         </tr>
    264       </table>
    265 </div><div class="memdoc">
    266 
    267 </div>
    268 </div>
    269 <a id="METASPR_TERM" name="METASPR_TERM"></a>
    270 <h2 class="memtitle"><span class="permalink"><a href="#METASPR_TERM">&#9670;&nbsp;</a></span>METASPR_TERM</h2>
    271 
    272 <div class="memitem">
    273 <div class="memproto">
    274       <table class="memname">
    275         <tr>
    276           <td class="memname">#define METASPR_TERM&#160;&#160;&#160;{<a class="el" href="sms_2metasprites_8h.html#metasprite_end">metasprite_end</a>}</td>
    277         </tr>
    278       </table>
    279 </div><div class="memdoc">
    280 
    281 </div>
    282 </div>
    283 <h2 class="groupheader">Typedef Documentation</h2>
    284 <a id="metasprite_t" name="metasprite_t"></a>
    285 <h2 class="memtitle"><span class="permalink"><a href="#metasprite_t">&#9670;&nbsp;</a></span>metasprite_t</h2>
    286 
    287 <div class="memitem">
    288 <div class="memproto">
    289       <table class="memname">
    290         <tr>
    291           <td class="memname">typedef struct <a class="el" href="structmetasprite__t.html">metasprite_t</a> <a class="el" href="structmetasprite__t.html">metasprite_t</a></td>
    292         </tr>
    293       </table>
    294 </div><div class="memdoc">
    295 <p >Metasprite sub-item structure </p><dl class="params"><dt>Parameters</dt><dd>
    296   <table class="params">
    297     <tr><td class="paramname">dy</td><td>(int8_t) Y coordinate of the sprite relative to the metasprite origin (pivot) </td></tr>
    298     <tr><td class="paramname">dx</td><td>(int8_t) X coordinate of the sprite relative to the metasprite origin (pivot) </td></tr>
    299     <tr><td class="paramname">dtile</td><td>(uint8_t) Start tile relative to the metasprites own set of tiles </td></tr>
    300     <tr><td class="paramname">props</td><td>(uint8_t) Property Flags</td></tr>
    301   </table>
    302   </dd>
    303 </dl>
    304 <p>Metasprites are built from multiple <a class="el" href="structmetasprite__t.html">metasprite_t</a> items (one for each sub-sprite) and a pool of tiles they reference. If a metasprite has multiple frames then each frame will be built from some number of <a class="el" href="structmetasprite__t.html">metasprite_t</a> items (which may vary based on how many sprites are required for that particular frame).</p>
    305 <p >A metasprite frame is terminated with a {metasprite_end} entry. </p>
    306 
    307 </div>
    308 </div>
    309 <h2 class="groupheader">Function Documentation</h2>
    310 <a id="hide_sprites_range" name="hide_sprites_range"></a>
    311 <h2 class="memtitle"><span class="permalink"><a href="#hide_sprites_range">&#9670;&nbsp;</a></span>hide_sprites_range()</h2>
    312 
    313 <div class="memitem">
    314 <div class="memproto">
    315       <table class="memname">
    316         <tr>
    317           <td class="memname">void hide_sprites_range </td>
    318           <td>(</td>
    319           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    320           <td class="paramname"><em>from</em>, </td>
    321         </tr>
    322         <tr>
    323           <td class="paramkey"></td>
    324           <td></td>
    325           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    326           <td class="paramname"><em>to</em>&#160;</td>
    327         </tr>
    328         <tr>
    329           <td></td>
    330           <td>)</td>
    331           <td></td><td></td>
    332         </tr>
    333       </table>
    334 </div><div class="memdoc">
    335 <p >Hides all hardware sprites in range from &lt;= X &lt; to </p><dl class="params"><dt>Parameters</dt><dd>
    336   <table class="params">
    337     <tr><td class="paramname">from</td><td>start OAM index </td></tr>
    338     <tr><td class="paramname">to</td><td>finish OAM index (must be &lt;= MAX_HARDWARE_SPRITES)</td></tr>
    339   </table>
    340   </dd>
    341 </dl>
    342 <dl class="section see"><dt>See also</dt><dd><a class="el" href="sms_8h.html#hide_sprite">hide_sprite</a>, <a class="el" href="sms_8h.html#MAX_HARDWARE_SPRITES">MAX_HARDWARE_SPRITES</a></dd></dl>
    343 <p>Hides all hardware sprites in range from &lt;= X &lt; to </p><dl class="params"><dt>Parameters</dt><dd>
    344   <table class="params">
    345     <tr><td class="paramname">from</td><td>start OAM index </td></tr>
    346     <tr><td class="paramname">to</td><td>finish OAM index </td></tr>
    347   </table>
    348   </dd>
    349 </dl>
    350 
    351 </div>
    352 </div>
    353 <a id="move_metasprite_ex" name="move_metasprite_ex"></a>
    354 <h2 class="memtitle"><span class="permalink"><a href="#move_metasprite_ex">&#9670;&nbsp;</a></span>move_metasprite_ex()</h2>
    355 
    356 <div class="memitem">
    357 <div class="memproto">
    358 <table class="mlabels">
    359   <tr>
    360   <td class="mlabels-left">
    361       <table class="memname">
    362         <tr>
    363           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> move_metasprite_ex </td>
    364           <td>(</td>
    365           <td class="paramtype">const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *&#160;</td>
    366           <td class="paramname"><em>metasprite</em>, </td>
    367         </tr>
    368         <tr>
    369           <td class="paramkey"></td>
    370           <td></td>
    371           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    372           <td class="paramname"><em>base_tile</em>, </td>
    373         </tr>
    374         <tr>
    375           <td class="paramkey"></td>
    376           <td></td>
    377           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    378           <td class="paramname"><em>base_prop</em>, </td>
    379         </tr>
    380         <tr>
    381           <td class="paramkey"></td>
    382           <td></td>
    383           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    384           <td class="paramname"><em>base_sprite</em>, </td>
    385         </tr>
    386         <tr>
    387           <td class="paramkey"></td>
    388           <td></td>
    389           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    390           <td class="paramname"><em>x</em>, </td>
    391         </tr>
    392         <tr>
    393           <td class="paramkey"></td>
    394           <td></td>
    395           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    396           <td class="paramname"><em>y</em>&#160;</td>
    397         </tr>
    398         <tr>
    399           <td></td>
    400           <td>)</td>
    401           <td></td><td></td>
    402         </tr>
    403       </table>
    404   </td>
    405   <td class="mlabels-right">
    406 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
    407   </tr>
    408 </table>
    409 </div><div class="memdoc">
    410 <p >Moves metasprite to the absolute position x and y</p>
    411 <dl class="params"><dt>Parameters</dt><dd>
    412   <table class="params">
    413     <tr><td class="paramname">metasprite</td><td>Pointer to the first struct of the metasprite (for the desired frame) </td></tr>
    414     <tr><td class="paramname">base_tile</td><td>Number of the first tile where the metasprite's tiles start </td></tr>
    415     <tr><td class="paramname">base_prop</td><td>Base sprite property flags (can be used to set palette, etc) </td></tr>
    416     <tr><td class="paramname">base_sprite</td><td>Number of the first hardware sprite to be used by the metasprite </td></tr>
    417     <tr><td class="paramname">x</td><td>Absolute x coordinate of the sprite </td></tr>
    418     <tr><td class="paramname">y</td><td>Absolute y coordinate of the sprite</td></tr>
    419   </table>
    420   </dd>
    421 </dl>
    422 <p>Moves <b>metasprite</b> to the absolute position <b>x</b> and <b>y</b> (with <b>no flip</b> on the X or Y axis). Hardware sprites are allocated starting from <b>base_sprite</b>, using tiles starting from <b>base_tile</b>.</p>
    423 <p >Sets: </p><ul>
    424 <li>__current_metasprite = metasprite; </li>
    425 <li>__current_base_tile = base_tile;</li>
    426 </ul>
    427 <p>Note: Overwrites OAM sprite properties (such as CGB Palette), see <a class="el" href="gb_2metasprites_8h.html#metasprite_and_sprite_properties">Metasprites and sprite properties</a>.</p>
    428 <dl class="section return"><dt>Returns</dt><dd>Number of hardware sprites used to draw this metasprite </dd></dl>
    429 
    430 </div>
    431 </div>
    432 <a id="move_metasprite" name="move_metasprite"></a>
    433 <h2 class="memtitle"><span class="permalink"><a href="#move_metasprite">&#9670;&nbsp;</a></span>move_metasprite()</h2>
    434 
    435 <div class="memitem">
    436 <div class="memproto">
    437 <table class="mlabels">
    438   <tr>
    439   <td class="mlabels-left">
    440       <table class="memname">
    441         <tr>
    442           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> move_metasprite </td>
    443           <td>(</td>
    444           <td class="paramtype">const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *&#160;</td>
    445           <td class="paramname"><em>metasprite</em>, </td>
    446         </tr>
    447         <tr>
    448           <td class="paramkey"></td>
    449           <td></td>
    450           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    451           <td class="paramname"><em>base_tile</em>, </td>
    452         </tr>
    453         <tr>
    454           <td class="paramkey"></td>
    455           <td></td>
    456           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    457           <td class="paramname"><em>base_sprite</em>, </td>
    458         </tr>
    459         <tr>
    460           <td class="paramkey"></td>
    461           <td></td>
    462           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    463           <td class="paramname"><em>x</em>, </td>
    464         </tr>
    465         <tr>
    466           <td class="paramkey"></td>
    467           <td></td>
    468           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    469           <td class="paramname"><em>y</em>&#160;</td>
    470         </tr>
    471         <tr>
    472           <td></td>
    473           <td>)</td>
    474           <td></td><td></td>
    475         </tr>
    476       </table>
    477   </td>
    478   <td class="mlabels-right">
    479 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
    480   </tr>
    481 </table>
    482 </div><div class="memdoc">
    483 <p >Obsolete. This function has been replaced by <a class="el" href="gb_2metasprites_8h.html#move_metasprite_ex">move_metasprite_ex()</a> </p>
    484 
    485 </div>
    486 </div>
    487 <a id="move_metasprite_flipx" name="move_metasprite_flipx"></a>
    488 <h2 class="memtitle"><span class="permalink"><a href="#move_metasprite_flipx">&#9670;&nbsp;</a></span>move_metasprite_flipx()</h2>
    489 
    490 <div class="memitem">
    491 <div class="memproto">
    492 <table class="mlabels">
    493   <tr>
    494   <td class="mlabels-left">
    495       <table class="memname">
    496         <tr>
    497           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> move_metasprite_flipx </td>
    498           <td>(</td>
    499           <td class="paramtype">const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *&#160;</td>
    500           <td class="paramname"><em>metasprite</em>, </td>
    501         </tr>
    502         <tr>
    503           <td class="paramkey"></td>
    504           <td></td>
    505           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    506           <td class="paramname"><em>base_tile</em>, </td>
    507         </tr>
    508         <tr>
    509           <td class="paramkey"></td>
    510           <td></td>
    511           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    512           <td class="paramname"><em>base_prop</em>, </td>
    513         </tr>
    514         <tr>
    515           <td class="paramkey"></td>
    516           <td></td>
    517           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    518           <td class="paramname"><em>base_sprite</em>, </td>
    519         </tr>
    520         <tr>
    521           <td class="paramkey"></td>
    522           <td></td>
    523           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    524           <td class="paramname"><em>x</em>, </td>
    525         </tr>
    526         <tr>
    527           <td class="paramkey"></td>
    528           <td></td>
    529           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    530           <td class="paramname"><em>y</em>&#160;</td>
    531         </tr>
    532         <tr>
    533           <td></td>
    534           <td>)</td>
    535           <td></td><td></td>
    536         </tr>
    537       </table>
    538   </td>
    539   <td class="mlabels-right">
    540 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
    541   </tr>
    542 </table>
    543 </div><div class="memdoc">
    544 <p >Moves metasprite to the absolute position x and y, <b>flipped by X (horizontally)</b></p>
    545 <dl class="params"><dt>Parameters</dt><dd>
    546   <table class="params">
    547     <tr><td class="paramname">metasprite</td><td>Pointer to the first struct of the metasprite (for the desired frame) </td></tr>
    548     <tr><td class="paramname">base_tile</td><td>Number of the first tile where the metasprite's tiles start </td></tr>
    549     <tr><td class="paramname">base_prop</td><td>Base sprite property flags (can be used to set palette, etc) </td></tr>
    550     <tr><td class="paramname">base_sprite</td><td>Number of the first hardware sprite to be used by the metasprite </td></tr>
    551     <tr><td class="paramname">x</td><td>Absolute x coordinate of the sprite </td></tr>
    552     <tr><td class="paramname">y</td><td>Absolute y coordinate of the sprite</td></tr>
    553   </table>
    554   </dd>
    555 </dl>
    556 <p>Same as <a class="el" href="gb_2metasprites_8h.html#move_metasprite">move_metasprite()</a>, but with the metasprite flipped by X (horizontally).</p>
    557 <p >Sets: </p><ul>
    558 <li>__current_metasprite = metasprite; </li>
    559 <li>__current_base_tile = base_tile;</li>
    560 </ul>
    561 <p>Note: Overwrites OAM sprite properties (such as CGB palette), see <a class="el" href="gb_2metasprites_8h.html#metasprite_and_sprite_properties">Metasprites and sprite properties</a>.</p>
    562 <p >This function is only available on Game Boy and related clone consoles.</p>
    563 <dl class="section return"><dt>Returns</dt><dd>Number of hardware sprites used to draw this metasprite</dd></dl>
    564 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_2metasprites_8h.html#move_metasprite">move_metasprite()</a> </dd></dl>
    565 
    566 </div>
    567 </div>
    568 <a id="move_metasprite_vflip" name="move_metasprite_vflip"></a>
    569 <h2 class="memtitle"><span class="permalink"><a href="#move_metasprite_vflip">&#9670;&nbsp;</a></span>move_metasprite_vflip()</h2>
    570 
    571 <div class="memitem">
    572 <div class="memproto">
    573 <table class="mlabels">
    574   <tr>
    575   <td class="mlabels-left">
    576       <table class="memname">
    577         <tr>
    578           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> move_metasprite_vflip </td>
    579           <td>(</td>
    580           <td class="paramtype">const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *&#160;</td>
    581           <td class="paramname"><em>metasprite</em>, </td>
    582         </tr>
    583         <tr>
    584           <td class="paramkey"></td>
    585           <td></td>
    586           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    587           <td class="paramname"><em>base_tile</em>, </td>
    588         </tr>
    589         <tr>
    590           <td class="paramkey"></td>
    591           <td></td>
    592           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    593           <td class="paramname"><em>base_sprite</em>, </td>
    594         </tr>
    595         <tr>
    596           <td class="paramkey"></td>
    597           <td></td>
    598           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    599           <td class="paramname"><em>x</em>, </td>
    600         </tr>
    601         <tr>
    602           <td class="paramkey"></td>
    603           <td></td>
    604           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    605           <td class="paramname"><em>y</em>&#160;</td>
    606         </tr>
    607         <tr>
    608           <td></td>
    609           <td>)</td>
    610           <td></td><td></td>
    611         </tr>
    612       </table>
    613   </td>
    614   <td class="mlabels-right">
    615 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
    616   </tr>
    617 </table>
    618 </div><div class="memdoc">
    619 <p >Obsolete. This function has been replaced by <a class="el" href="gb_2metasprites_8h.html#move_metasprite_flipx">move_metasprite_flipx()</a> </p>
    620 
    621 </div>
    622 </div>
    623 <a id="move_metasprite_flipy" name="move_metasprite_flipy"></a>
    624 <h2 class="memtitle"><span class="permalink"><a href="#move_metasprite_flipy">&#9670;&nbsp;</a></span>move_metasprite_flipy()</h2>
    625 
    626 <div class="memitem">
    627 <div class="memproto">
    628 <table class="mlabels">
    629   <tr>
    630   <td class="mlabels-left">
    631       <table class="memname">
    632         <tr>
    633           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> move_metasprite_flipy </td>
    634           <td>(</td>
    635           <td class="paramtype">const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *&#160;</td>
    636           <td class="paramname"><em>metasprite</em>, </td>
    637         </tr>
    638         <tr>
    639           <td class="paramkey"></td>
    640           <td></td>
    641           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    642           <td class="paramname"><em>base_tile</em>, </td>
    643         </tr>
    644         <tr>
    645           <td class="paramkey"></td>
    646           <td></td>
    647           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    648           <td class="paramname"><em>base_prop</em>, </td>
    649         </tr>
    650         <tr>
    651           <td class="paramkey"></td>
    652           <td></td>
    653           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    654           <td class="paramname"><em>base_sprite</em>, </td>
    655         </tr>
    656         <tr>
    657           <td class="paramkey"></td>
    658           <td></td>
    659           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    660           <td class="paramname"><em>x</em>, </td>
    661         </tr>
    662         <tr>
    663           <td class="paramkey"></td>
    664           <td></td>
    665           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    666           <td class="paramname"><em>y</em>&#160;</td>
    667         </tr>
    668         <tr>
    669           <td></td>
    670           <td>)</td>
    671           <td></td><td></td>
    672         </tr>
    673       </table>
    674   </td>
    675   <td class="mlabels-right">
    676 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
    677   </tr>
    678 </table>
    679 </div><div class="memdoc">
    680 <p >Moves metasprite to the absolute position x and y, <b>flipped by Y (vertically)</b></p>
    681 <dl class="params"><dt>Parameters</dt><dd>
    682   <table class="params">
    683     <tr><td class="paramname">metasprite</td><td>Pointer to the first struct of the metasprite (for the desired frame) </td></tr>
    684     <tr><td class="paramname">base_tile</td><td>Number of the first tile where the metasprite's tiles start </td></tr>
    685     <tr><td class="paramname">base_prop</td><td>Base sprite property flags (can be used to set palette, etc) </td></tr>
    686     <tr><td class="paramname">base_sprite</td><td>Number of the first hardware sprite to be used by the metasprite </td></tr>
    687     <tr><td class="paramname">x</td><td>Absolute x coordinate of the sprite </td></tr>
    688     <tr><td class="paramname">y</td><td>Absolute y coordinate of the sprite</td></tr>
    689   </table>
    690   </dd>
    691 </dl>
    692 <p>Same as <a class="el" href="gb_2metasprites_8h.html#move_metasprite">move_metasprite()</a>, but with the metasprite flipped by Y (vertically).</p>
    693 <p >Sets: </p><ul>
    694 <li>__current_metasprite = metasprite; </li>
    695 <li>__current_base_tile = base_tile;</li>
    696 </ul>
    697 <p>Note: Overwrites OAM sprite properties (such as CGB palette), see <a class="el" href="gb_2metasprites_8h.html#metasprite_and_sprite_properties">Metasprites and sprite properties</a>.</p>
    698 <p >This function is only available on Game Boy and related clone consoles.</p>
    699 <dl class="section return"><dt>Returns</dt><dd>Number of hardware sprites used to draw this metasprite</dd></dl>
    700 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_2metasprites_8h.html#move_metasprite">move_metasprite()</a> </dd></dl>
    701 
    702 </div>
    703 </div>
    704 <a id="move_metasprite_hflip" name="move_metasprite_hflip"></a>
    705 <h2 class="memtitle"><span class="permalink"><a href="#move_metasprite_hflip">&#9670;&nbsp;</a></span>move_metasprite_hflip()</h2>
    706 
    707 <div class="memitem">
    708 <div class="memproto">
    709 <table class="mlabels">
    710   <tr>
    711   <td class="mlabels-left">
    712       <table class="memname">
    713         <tr>
    714           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> move_metasprite_hflip </td>
    715           <td>(</td>
    716           <td class="paramtype">const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *&#160;</td>
    717           <td class="paramname"><em>metasprite</em>, </td>
    718         </tr>
    719         <tr>
    720           <td class="paramkey"></td>
    721           <td></td>
    722           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    723           <td class="paramname"><em>base_tile</em>, </td>
    724         </tr>
    725         <tr>
    726           <td class="paramkey"></td>
    727           <td></td>
    728           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    729           <td class="paramname"><em>base_sprite</em>, </td>
    730         </tr>
    731         <tr>
    732           <td class="paramkey"></td>
    733           <td></td>
    734           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    735           <td class="paramname"><em>x</em>, </td>
    736         </tr>
    737         <tr>
    738           <td class="paramkey"></td>
    739           <td></td>
    740           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    741           <td class="paramname"><em>y</em>&#160;</td>
    742         </tr>
    743         <tr>
    744           <td></td>
    745           <td>)</td>
    746           <td></td><td></td>
    747         </tr>
    748       </table>
    749   </td>
    750   <td class="mlabels-right">
    751 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
    752   </tr>
    753 </table>
    754 </div><div class="memdoc">
    755 <p >Obsolete. This function has been replaced by <a class="el" href="gb_2metasprites_8h.html#move_metasprite_flipy">move_metasprite_flipy()</a> </p>
    756 
    757 </div>
    758 </div>
    759 <a id="move_metasprite_flipxy" name="move_metasprite_flipxy"></a>
    760 <h2 class="memtitle"><span class="permalink"><a href="#move_metasprite_flipxy">&#9670;&nbsp;</a></span>move_metasprite_flipxy()</h2>
    761 
    762 <div class="memitem">
    763 <div class="memproto">
    764 <table class="mlabels">
    765   <tr>
    766   <td class="mlabels-left">
    767       <table class="memname">
    768         <tr>
    769           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> move_metasprite_flipxy </td>
    770           <td>(</td>
    771           <td class="paramtype">const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *&#160;</td>
    772           <td class="paramname"><em>metasprite</em>, </td>
    773         </tr>
    774         <tr>
    775           <td class="paramkey"></td>
    776           <td></td>
    777           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    778           <td class="paramname"><em>base_tile</em>, </td>
    779         </tr>
    780         <tr>
    781           <td class="paramkey"></td>
    782           <td></td>
    783           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    784           <td class="paramname"><em>base_prop</em>, </td>
    785         </tr>
    786         <tr>
    787           <td class="paramkey"></td>
    788           <td></td>
    789           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    790           <td class="paramname"><em>base_sprite</em>, </td>
    791         </tr>
    792         <tr>
    793           <td class="paramkey"></td>
    794           <td></td>
    795           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    796           <td class="paramname"><em>x</em>, </td>
    797         </tr>
    798         <tr>
    799           <td class="paramkey"></td>
    800           <td></td>
    801           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    802           <td class="paramname"><em>y</em>&#160;</td>
    803         </tr>
    804         <tr>
    805           <td></td>
    806           <td>)</td>
    807           <td></td><td></td>
    808         </tr>
    809       </table>
    810   </td>
    811   <td class="mlabels-right">
    812 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
    813   </tr>
    814 </table>
    815 </div><div class="memdoc">
    816 <p >Moves metasprite to the absolute position x and y, <b>flipped by X and Y (horizontally and vertically)</b></p>
    817 <dl class="params"><dt>Parameters</dt><dd>
    818   <table class="params">
    819     <tr><td class="paramname">metasprite</td><td>Pointer to the first struct of the metasprite (for the desired frame) </td></tr>
    820     <tr><td class="paramname">base_tile</td><td>Number of the first tile where the metasprite's tiles start </td></tr>
    821     <tr><td class="paramname">base_prop</td><td>Base sprite property flags (can be used to set palette, etc) </td></tr>
    822     <tr><td class="paramname">base_sprite</td><td>Number of the first hardware sprite to be used by the metasprite </td></tr>
    823     <tr><td class="paramname">x</td><td>Absolute x coordinate of the sprite </td></tr>
    824     <tr><td class="paramname">y</td><td>Absolute y coordinate of the sprite</td></tr>
    825   </table>
    826   </dd>
    827 </dl>
    828 <p>Same as <a class="el" href="gb_2metasprites_8h.html#move_metasprite">move_metasprite()</a>, but with the metasprite flipped by X and Y (horizontally and vertically).</p>
    829 <p >Sets: </p><ul>
    830 <li>__current_metasprite = metasprite; </li>
    831 <li>__current_base_tile = base_tile;</li>
    832 </ul>
    833 <p>Note: Overwrites OAM sprite properties (such as CGB palette), see <a class="el" href="gb_2metasprites_8h.html#metasprite_and_sprite_properties">Metasprites and sprite properties</a>.</p>
    834 <p >This function is only available on Game Boy and related clone consoles.</p>
    835 <dl class="section return"><dt>Returns</dt><dd>Number of hardware sprites used to draw this metasprite</dd></dl>
    836 <dl class="section see"><dt>See also</dt><dd><a class="el" href="gb_2metasprites_8h.html#move_metasprite">move_metasprite()</a> </dd></dl>
    837 
    838 </div>
    839 </div>
    840 <a id="move_metasprite_hvflip" name="move_metasprite_hvflip"></a>
    841 <h2 class="memtitle"><span class="permalink"><a href="#move_metasprite_hvflip">&#9670;&nbsp;</a></span>move_metasprite_hvflip()</h2>
    842 
    843 <div class="memitem">
    844 <div class="memproto">
    845 <table class="mlabels">
    846   <tr>
    847   <td class="mlabels-left">
    848       <table class="memname">
    849         <tr>
    850           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> move_metasprite_hvflip </td>
    851           <td>(</td>
    852           <td class="paramtype">const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *&#160;</td>
    853           <td class="paramname"><em>metasprite</em>, </td>
    854         </tr>
    855         <tr>
    856           <td class="paramkey"></td>
    857           <td></td>
    858           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    859           <td class="paramname"><em>base_tile</em>, </td>
    860         </tr>
    861         <tr>
    862           <td class="paramkey"></td>
    863           <td></td>
    864           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    865           <td class="paramname"><em>base_sprite</em>, </td>
    866         </tr>
    867         <tr>
    868           <td class="paramkey"></td>
    869           <td></td>
    870           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    871           <td class="paramname"><em>x</em>, </td>
    872         </tr>
    873         <tr>
    874           <td class="paramkey"></td>
    875           <td></td>
    876           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    877           <td class="paramname"><em>y</em>&#160;</td>
    878         </tr>
    879         <tr>
    880           <td></td>
    881           <td>)</td>
    882           <td></td><td></td>
    883         </tr>
    884       </table>
    885   </td>
    886   <td class="mlabels-right">
    887 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
    888   </tr>
    889 </table>
    890 </div><div class="memdoc">
    891 <p >Obsolete. This function has been replaced by <a class="el" href="gb_2metasprites_8h.html#move_metasprite_flipxy">move_metasprite_flipxy()</a> </p>
    892 
    893 </div>
    894 </div>
    895 <a id="hide_metasprite" name="hide_metasprite"></a>
    896 <h2 class="memtitle"><span class="permalink"><a href="#hide_metasprite">&#9670;&nbsp;</a></span>hide_metasprite()</h2>
    897 
    898 <div class="memitem">
    899 <div class="memproto">
    900 <table class="mlabels">
    901   <tr>
    902   <td class="mlabels-left">
    903       <table class="memname">
    904         <tr>
    905           <td class="memname">void hide_metasprite </td>
    906           <td>(</td>
    907           <td class="paramtype">const <a class="el" href="structmetasprite__t.html">metasprite_t</a> *&#160;</td>
    908           <td class="paramname"><em>metasprite</em>, </td>
    909         </tr>
    910         <tr>
    911           <td class="paramkey"></td>
    912           <td></td>
    913           <td class="paramtype"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a>&#160;</td>
    914           <td class="paramname"><em>base_sprite</em>&#160;</td>
    915         </tr>
    916         <tr>
    917           <td></td>
    918           <td>)</td>
    919           <td></td><td></td>
    920         </tr>
    921       </table>
    922   </td>
    923   <td class="mlabels-right">
    924 <span class="mlabels"><span class="mlabel">inline</span></span>  </td>
    925   </tr>
    926 </table>
    927 </div><div class="memdoc">
    928 <p >Hides a metasprite from the screen</p>
    929 <dl class="params"><dt>Parameters</dt><dd>
    930   <table class="params">
    931     <tr><td class="paramname">metasprite</td><td>Pointer to first struct of the desired metasprite frame </td></tr>
    932     <tr><td class="paramname">base_sprite</td><td>Number of hardware sprite to start with</td></tr>
    933   </table>
    934   </dd>
    935 </dl>
    936 <p>Sets: </p><ul>
    937 <li>__current_metasprite = metasprite; </li>
    938 </ul>
    939 
    940 </div>
    941 </div>
    942 <h2 class="groupheader">Variable Documentation</h2>
    943 <a id="__current_metasprite" name="__current_metasprite"></a>
    944 <h2 class="memtitle"><span class="permalink"><a href="#__current_metasprite">&#9670;&nbsp;</a></span>__current_metasprite</h2>
    945 
    946 <div class="memitem">
    947 <div class="memproto">
    948 <table class="mlabels">
    949   <tr>
    950   <td class="mlabels-left">
    951       <table class="memname">
    952         <tr>
    953           <td class="memname">const void* __current_metasprite</td>
    954         </tr>
    955       </table>
    956   </td>
    957   <td class="mlabels-right">
    958 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
    959   </tr>
    960 </table>
    961 </div><div class="memdoc">
    962 
    963 </div>
    964 </div>
    965 <a id="__current_base_tile" name="__current_base_tile"></a>
    966 <h2 class="memtitle"><span class="permalink"><a href="#__current_base_tile">&#9670;&nbsp;</a></span>__current_base_tile</h2>
    967 
    968 <div class="memitem">
    969 <div class="memproto">
    970 <table class="mlabels">
    971   <tr>
    972   <td class="mlabels-left">
    973       <table class="memname">
    974         <tr>
    975           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> __current_base_tile</td>
    976         </tr>
    977       </table>
    978   </td>
    979   <td class="mlabels-right">
    980 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
    981   </tr>
    982 </table>
    983 </div><div class="memdoc">
    984 
    985 </div>
    986 </div>
    987 <a id="__current_base_prop" name="__current_base_prop"></a>
    988 <h2 class="memtitle"><span class="permalink"><a href="#__current_base_prop">&#9670;&nbsp;</a></span>__current_base_prop</h2>
    989 
    990 <div class="memitem">
    991 <div class="memproto">
    992 <table class="mlabels">
    993   <tr>
    994   <td class="mlabels-left">
    995       <table class="memname">
    996         <tr>
    997           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> __current_base_prop</td>
    998         </tr>
    999       </table>
   1000   </td>
   1001   <td class="mlabels-right">
   1002 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   1003   </tr>
   1004 </table>
   1005 </div><div class="memdoc">
   1006 
   1007 </div>
   1008 </div>
   1009 <a id="__render_shadow_OAM" name="__render_shadow_OAM"></a>
   1010 <h2 class="memtitle"><span class="permalink"><a href="#__render_shadow_OAM">&#9670;&nbsp;</a></span>__render_shadow_OAM</h2>
   1011 
   1012 <div class="memitem">
   1013 <div class="memproto">
   1014 <table class="mlabels">
   1015   <tr>
   1016   <td class="mlabels-left">
   1017       <table class="memname">
   1018         <tr>
   1019           <td class="memname"><a class="el" href="stdint_8h.html#uint8_t">uint8_t</a> __render_shadow_OAM</td>
   1020         </tr>
   1021       </table>
   1022   </td>
   1023   <td class="mlabels-right">
   1024 <span class="mlabels"><span class="mlabel">extern</span></span>  </td>
   1025   </tr>
   1026 </table>
   1027 </div><div class="memdoc">
   1028 
   1029 </div>
   1030 </div>
   1031 </div><!-- contents -->
   1032 </div><!-- doc-content -->
   1033 <!-- start footer part -->
   1034 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   1035   <ul>
   1036     <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_2metasprites_8h.html">metasprites.h</a></li>
   1037     <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>
   1038   </ul>
   1039 </div>
   1040 </body>
   1041 </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.