git.y1.nz

gbdk-2020

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

docs/api/docs_links_and_tools.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: Links, Tools and Debugging</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('docs_links_and_tools.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><div class="header">
    102   <div class="headertitle"><div class="title">Links, Tools and Debugging </div></div>
    103 </div><!--header-->
    104 <div class="contents">
    105 <div class="textblock"><p >This is a brief list of useful tools and information. It is not meant to be complete or exhaustive, for a larger list see the <a class="el" href="docs_links_and_tools.html#awesome_gb">Awesome Game Boy Development</a> list.</p>
    106 <p ><a class="anchor" id="links_sdcc_docs"></a></p>
    107 <h1><a class="anchor" id="autotoc_md25"></a>
    108 SDCC Compiler Suite User Manual</h1>
    109 <ul>
    110 <li>GBDK-2020 uses the SDCC compiler and related tools. The SDCC manual goes into much more detail about available features and how to use them. <br  />
    111  <a href="http://sdcc.sourceforge.net/doc/sdccman.pdf">http://sdcc.sourceforge.net/doc/sdccman.pdf</a> <br  />
    112  <a href="http://sdcc.sourceforge.net">http://sdcc.sourceforge.net</a></li>
    113 <li>The SDCC assembler and linker (sdas / asxxxx and aslink) manual. <br  />
    114  <a href="https://sourceforge.net/p/sdcc/code/HEAD/tree/trunk/sdcc/sdas/doc/asmlnk.txt">https://sourceforge.net/p/sdcc/code/HEAD/tree/trunk/sdcc/sdas/doc/asmlnk.txt</a></li>
    115 </ul>
    116 <p ><a class="anchor" id="links_help_and_community"></a></p>
    117 <h1><a class="anchor" id="autotoc_md26"></a>
    118 Getting Help</h1>
    119 <ul>
    120 <li>GBDK Discord community: <br  />
    121  <a href="https://github.com/gbdk-2020/gbdk-2020/#discord-servers">https://github.com/gbdk-2020/gbdk-2020/#discord-servers</a></li>
    122 <li>Game Boy discussion forum: <br  />
    123  <a href="https://gbdev.gg8.se/forums/">https://gbdev.gg8.se/forums/</a></li>
    124 </ul>
    125 <p ><a class="anchor" id="links_gameboy_docs"></a></p>
    126 <h1><a class="anchor" id="autotoc_md27"></a>
    127 Game Boy Documentation</h1>
    128 <ul>
    129 <li><a class="anchor" id="Pandocs"></a> <b>Pandocs</b> <br  />
    130  Extensive and up-to-date technical documentation about the Game Boy and related hardware. <br  />
    131  <a href="https://gbdev.io/pandocs/">https://gbdev.io/pandocs/</a></li>
    132 <li><a class="anchor" id="awesome_gb"></a> <b>Awesome Game Boy Development list</b> <br  />
    133  A list of Game Boy/Color development resources, tools, docs, related projects and homebrew. <br  />
    134  <a href="https://gbdev.io/resources.html">https://gbdev.io/resources.html</a></li>
    135 </ul>
    136 <p ><a class="anchor" id="links_sms_gg_docs"></a></p>
    137 <h1><a class="anchor" id="autotoc_md28"></a>
    138 Sega Master System / Game Gear Documentation</h1>
    139 <ul>
    140 <li><a class="anchor" id="smspower"></a> <b>SMS Power!</b> <br  />
    141  Community site with technical documentation, reviews and other content related to the Sega 8-bit systems. <br  />
    142  <a href="https://www.smspower.org/">https://www.smspower.org/</a></li>
    143 </ul>
    144 <p ><a class="anchor" id="links_megaduck_docs"></a></p>
    145 <h1><a class="anchor" id="autotoc_md29"></a>
    146 Mega Duck / Cougar Boy Documentation</h1>
    147 <ul>
    148 <li><a class="anchor" id="megaduckdev"></a> <b>MegaDuck.dev</b> <br  />
    149  A collection of technical information and resources for the Mega Duck / Cougar Boy console. <br  />
    150  <a href="https://megaduck.dev/">https://megaduck.dev/</a></li>
    151 </ul>
    152 <p ><a class="anchor" id="links_gbdk_tutorials"></a></p>
    153 <h1><a class="anchor" id="autotoc_md30"></a>
    154 Tutorials</h1>
    155 <ul>
    156 <li><a class="anchor" id="tutorials_larolds"></a> <b>Larold's Jubilant Junkyard Tutorials</b> <br  />
    157  Several walk throughs about the fundamentals of developing for the Game Boy with GBDK-2020. There are simple examples with source code. <br  />
    158  <a href="https://laroldsjubilantjunkyard.com/tutorials/">https://laroldsjubilantjunkyard.com/tutorials/</a></li>
    159 <li><a class="anchor" id="tutorials_gamingmonsters"></a> <b>Gaming Monsters Tutorials</b> <br  />
    160  Several video tutorials and code for making games with GBDK/GBDK-2020. <br  />
    161  <a href="https://www.youtube.com/playlist?list=PLeEj4c2zF7PaFv5MPYhNAkBGrkx4iPGJo">https://www.youtube.com/playlist?list=PLeEj4c2zF7PaFv5MPYhNAkBGrkx4iPGJo</a> <br  />
    162  <a href="https://github.com/gingemonster/GamingMonstersGameBoySampleCode">https://github.com/gingemonster/GamingMonstersGameBoySampleCode</a></li>
    163 <li><a class="anchor" id="tutorials_typorter"></a> <b>Pocket Leage Tutorial</b> <br  />
    164  <a href="https://blog.ty-porter.dev/development/2021/04/04/writing-a-gameboy-game-in-2021-pt-0.html">https://blog.ty-porter.dev/development/2021/04/04/writing-a-gameboy-game-in-2021-pt-0.html</a></li>
    165 </ul>
    166 <p ><a class="anchor" id="link_examples"></a></p>
    167 <h1><a class="anchor" id="autotoc_md31"></a>
    168 Example code</h1>
    169 <ul>
    170 <li><a class="anchor" id="examples_gbdk_playground"></a> <b>Simplified GBDK examples</b> <br  />
    171  <a href="https://github.com/mrombout/gbdk_playground/commits/master">https://github.com/mrombout/gbdk_playground/commits/master</a></li>
    172 </ul>
    173 <p ><a class="anchor" id="links_graphic"></a></p>
    174 <h1><a class="anchor" id="autotoc_md32"></a>
    175 Graphics Tools</h1>
    176 <ul>
    177 <li><a class="anchor" id="gbtd_gbmb"></a><a class="anchor" id="gbmb"></a><a class="anchor" id="gbtd"></a> <br  />
    178  <a class="anchor" id="toxa_gbtd_gbmb"></a> <b>Game Boy Tile Designer and Map Builder (GBTD / GBMB)</b> <br  />
    179  Sprite / Tile editor and Map Builder that can export to C that works with GBDK. <br  />
    180  This is an updated version with const export fixed and other improvements. <br  />
    181  <a href="https://github.com/gbdk-2020/GBTD_GBMB">https://github.com/gbdk-2020/GBTD_GBMB</a><ul>
    182 <li>A GIMP plugin to read/write GBR/GBM files and do map conversion: <br  />
    183  <a href="https://github.com/bbbbbr/gimp-tilemap-gb">https://github.com/bbbbbr/gimp-tilemap-gb</a></li>
    184 <li>Command line version of the above tool that doesn't require GIMP (png2gbtiles): <br  />
    185  <a href="https://github.com/bbbbbr/gimp-tilemap-gb/tree/master/console">https://github.com/bbbbbr/gimp-tilemap-gb/tree/master/console</a></li>
    186 </ul>
    187 </li>
    188 <li><a class="anchor" id="Tilemap_Studio"></a> <b>Tilemap Studio</b> <br  />
    189  A tilemap editor for Game Boy, GBC, GBA, or SNES projects. <br  />
    190  <a href="https://github.com/Rangi42/tilemap-studio/">https://github.com/Rangi42/tilemap-studio/</a></li>
    191 </ul>
    192 <p ><a class="anchor" id="tools_music"></a></p>
    193 <h1><a class="anchor" id="autotoc_md33"></a>
    194 Music And Sound Effects for the Game Boy</h1>
    195 <ul>
    196 <li><a class="anchor" id="hUGEdriver"></a> <b>hUGEtracker</b> and <b>hUGEdriver</b> <br  />
    197  A tracker and music driver that work with GBDK and RGBDS. It is smaller, more efficient and more versatile than gbt_player. <br  />
    198  <a href="https://github.com/SuperDisk/hUGEDriver">https://github.com/SuperDisk/hUGEDriver</a> <br  />
    199  <a href="https://github.com/SuperDisk/hUGETracker">https://github.com/SuperDisk/hUGETracker</a></li>
    200 <li><a class="anchor" id="CBT-FX"></a> <b>CBT-FX</b> <br  />
    201  A sound effects driver which can play effects created in FX Hammer. <a href="https://github.com/datguywitha3ds/CBT-FX">https://github.com/datguywitha3ds/CBT-FX</a></li>
    202 <li><a class="anchor" id="VGM2GBSFX"></a> <b>VGM2GBSFX</b> <br  />
    203  A sound effects converter and driver for DMG VGM files, FX Hammer and PCM WAV files. <a href="https://github.com/untoxa/VGM2GBSFX">https://github.com/untoxa/VGM2GBSFX</a></li>
    204 <li><a class="anchor" id="gbt-player"></a> <b>GBT Player</b> <br  />
    205  A .mod converter and music driver that works with GBDK and RGBDS. <br  />
    206  <a href="https://github.com/AntonioND/gbt-player">https://github.com/AntonioND/gbt-player</a> <br  />
    207  Docs from GBStudio that should mostly apply: <a href="https://www.gbstudio.dev/docs/music/">https://www.gbstudio.dev/docs/music/</a></li>
    208 </ul>
    209 <h1><a class="anchor" id="autotoc_md34"></a>
    210 Music And Sound Effects for the SMS/Game Gear</h1>
    211 <ul>
    212 <li><a class="anchor" id="Banjo"></a> <b>Banjo</b> <br  />
    213  A sound driver for Sega Master System and Game Gear which can import from Furnace tracker. <br  />
    214 <ul>
    215 <li><a href="https://github.com/joffb/banjo">https://github.com/joffb/banjo</a> An example of using it with GBDK can be found in the CrossZGB engine.</li>
    216 <li><a href="https://github.com/gbdk-2020/CrossZGB/commit/8ecd46639f3af420cfe139fc155740e8aa14d7c5">https://github.com/gbdk-2020/CrossZGB/commit/8ecd46639f3af420cfe139fc155740e8aa14d7c5</a></li>
    217 </ul>
    218 </li>
    219 </ul>
    220 <p ><a class="anchor" id="tools_emulators"></a></p>
    221 <h1><a class="anchor" id="autotoc_md35"></a>
    222 Emulators</h1>
    223 <ul>
    224 <li><a class="anchor" id="emulicious"></a> <b>Emulicious</b> <br  />
    225  An accurate emulator with extensive tools including source level debugging. <a href="https://emulicious.net/">https://emulicious.net/</a></li>
    226 <li><a class="anchor" id="bgb"></a> <b>BGB</b> <br  />
    227  Accurate emulator, has useful debugging tools. <br  />
    228  <a href="http://bgb.bircd.org/">http://bgb.bircd.org/</a></li>
    229 <li><a class="anchor" id="superjuniorsameduck"></a> <b>Super Junior SameDuck</b> The only MegaDuck emulator with support for the Mega Duck Laptop models (Quique and Junior Super Computer) <a href="https://github.com/bbbbbr/SuperJuniorSameDuck">https://github.com/bbbbbr/SuperJuniorSameDuck</a> <br  />
    230 </li>
    231 </ul>
    232 <p ><a class="anchor" id="code_editors_hinting"></a>Intellisense in VSCode may have trouble identifying some GBDK types or functions, and therefore flag them as warnings or unidentified.</p>
    233 <p >GBDK platform constants can be declared so that header files are parsed more completely in VSCode. The following <code>c_cpp_properties.json</code> example may be adapted for your own project. </p><pre class="fragment">    {
    234         "configurations": [
    235             {
    236                 "name": "gameboy",
    237                 "includePath": [
    238                     "${workspaceFolder}/src/**",
    239                     "${workspaceFolder}/res/**",
    240                     "${workspaceFolder}/include/**",
    241                     "${workspaceFolder}/../../../gbdk/include/**"
    242                 ],
    243                 "defines": ["__PORT_sm83", "__TARGET_gb"],
    244                 "compilerPath": "",
    245                 "cStandard": "c11",
    246                 "intelliSenseMode": "${default}",
    247                 "compilerArgs": [],
    248                 "browse": {
    249                     "limitSymbolsToIncludedHeaders": true
    250                 }
    251             }
    252         ],
    253         "version": 4
    254     }
    255 </pre><p ><a class="anchor" id="tools_debug"></a></p>
    256 <h1><a class="anchor" id="autotoc_md36"></a>
    257 Debugging tools</h1>
    258 <ul>
    259 <li><a class="anchor" id="Emulicious_debug"></a> <b>Emulicious debug adapter</b> <br  />
    260  Provides source-level debugging in VS Code and Sublime Text that works with GBDK2020. <br  />
    261  <a href="https://marketplace.visualstudio.com/items?itemName=emulicious.emulicious-debugger">https://marketplace.visualstudio.com/items?itemName=emulicious.emulicious-debugger</a><ul>
    262 <li>If compiler optimization is making the program source hard to step through in the debugger then adding this flag to <a class="el" href="docs_toolchain.html#lcc">lcc</a> can help. Note that using this flag will likely reduce code performance and increase code size while enabled, so it is best to only use it temporarily.<ul>
    263 <li><code>-Wf--max-allocs-per-node0</code></li>
    264 </ul>
    265 </li>
    266 </ul>
    267 </li>
    268 <li><a class="anchor" id="romusage"></a> <b>romusage</b> <br  />
    269  Calculate used and free space in banks (ROM/RAM) and warn about errors such as bank overflows. <br  />
    270  See <a class="el" href="docs_toolchain_settings.html#romusage-settings">romusage-settings</a></li>
    271 <li><a class="anchor" id="bgb_symbol_conversion"></a> <b>noi file to sym conversion for bgb</b> <br  />
    272  Debug information in .noi files can be converted to a symbol format that <a class="el" href="docs_links_and_tools.html#bgb">BGB</a> recognizes using:<ul>
    273 <li><a class="el" href="docs_toolchain.html#lcc">lcc</a> : <code>-Wm-yS</code> (with <code>--debug</code>, or <code>-Wl-j</code> to create the .noi)</li>
    274 <li>directly with <a class="el" href="docs_toolchain.html#makebin">makebin</a> : <code>-yS</code> (with <code>-j</code> passed to the linker)</li>
    275 </ul>
    276 </li>
    277 <li><a class="anchor" id="src2sym"></a> <b>src2sym.pl</b> <br  />
    278  Add line-by-line C source code to the main symbol file in a BGB compatible format. This allows for C source-like debugging in BGB in a limited way. <a href="https://gbdev.gg8.se/forums/viewtopic.php?id=710">https://gbdev.gg8.se/forums/viewtopic.php?id=710</a></li>
    279 </ul>
    280 <p ><a class="anchor" id="links_optimizing"></a></p>
    281 <h1><a class="anchor" id="autotoc_md37"></a>
    282 Optimizing Assembly</h1>
    283 <ul>
    284 <li><a class="anchor" id="optimizing_assembly"></a> <b>Optimizing Assembly Code</b> <br  />
    285  Pret has a useful guide to optimizing assembly for the Game Boy for times when asm using in a project in addition to C. <a href="https://github.com/pret/pokecrystal/wiki/Optimizing-assembly-code">https://github.com/pret/pokecrystal/wiki/Optimizing-assembly-code</a></li>
    286 </ul>
    287 <p ><a class="anchor" id="tools_build_ci_cd"></a></p>
    288 <h1><a class="anchor" id="autotoc_md38"></a>
    289 Continuous Integration and Deployment</h1>
    290 <ul>
    291 <li><a class="anchor" id="GBDK_GitHub_Action_Builder"></a> <b>GBDK GitHub Action Builder</b> <br  />
    292  A Github Action which provides basic CI/CD for building projects based on GBDK (not for building GBDK itself). <br  />
    293  <a href="https://github.com/wujood/gbdk-2020-github-builder">https://github.com/wujood/gbdk-2020-github-builder</a> </li>
    294 </ul>
    295 </div></div><!-- contents -->
    296 </div><!-- PageDoc -->
    297 </div><!-- doc-content -->
    298 <!-- start footer part -->
    299 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
    300   <ul>
    301     <li class="navelem"><a class="el" href="index.html">General Documentation</a></li>
    302     <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>
    303   </ul>
    304 </div>
    305 </body>
    306 </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.