mirror of
https://github.com/gbdk-2020/gbdk-2020.git
synced 2026-02-26 03:31:51 +01:00
307 lines
17 KiB
HTML
307 lines
17 KiB
HTML
<!-- HTML header for doxygen 1.8.14-->
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="cache-control" content="max-age=86400"/>
|
|
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
|
<meta name="generator" content="Doxygen 1.9.2"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<title>GBDK 2020 Docs: Links, Tools and Debugging</title>
|
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="jquery.js"></script>
|
|
<script type="text/javascript" src="dynsections.js"></script>
|
|
<link href="navtree.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="resize.js"></script>
|
|
<script type="text/javascript" src="navtreedata.js"></script>
|
|
<script type="text/javascript" src="navtree.js"></script>
|
|
<link href="search/search.css" rel="stylesheet" type="text/css"/>
|
|
<script type="text/javascript" src="search/searchdata.js"></script>
|
|
<script type="text/javascript" src="search/search.js"></script>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css" />
|
|
<link href="doxygen-awesome.css" rel="stylesheet" type="text/css"/>
|
|
<link href="doxygen-awesome-sidebar-only.css" rel="stylesheet" type="text/css"/>
|
|
<link href="doxygen-awesome-sidebar-only-darkmode-toggle.css" rel="stylesheet" type="text/css"/>
|
|
<!-- BEGIN: doxygen-awesome-css -->
|
|
<script type="text/javascript" src="doxygen-awesome-darkmode-toggle.js"></script>
|
|
<script type="text/javascript">
|
|
DoxygenAwesomeDarkModeToggle.init()
|
|
</script>
|
|
<script type="text/javascript" src="doxygen-awesome-paragraph-link.js"></script>
|
|
<script type="text/javascript">
|
|
DoxygenAwesomeParagraphLink.init()
|
|
</script>
|
|
<!-- END: doxygen-awesome-css -->
|
|
</head>
|
|
<body>
|
|
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
|
<div id="titlearea">
|
|
<table cellspacing="0" cellpadding="0">
|
|
<tbody>
|
|
<tr style="height: 56px;">
|
|
<td id="projectalign" style="padding-left: 0.5em;">
|
|
<div id="projectname">GBDK 2020 Docs
|
|
 <span id="projectnumber">4.5.0</span>
|
|
</div>
|
|
<div id="projectbrief">API Documentation for GBDK 2020</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<!-- end header part -->
|
|
<!-- Generated by Doxygen 1.9.2 -->
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
var searchBox = new SearchBox("searchBox", "search",'Search','.html');
|
|
/* @license-end */
|
|
</script>
|
|
<script type="text/javascript" src="menudata.js"></script>
|
|
<script type="text/javascript" src="menu.js"></script>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(function() {
|
|
initMenu('',true,false,'search.php','Search');
|
|
$(document).ready(function() { init_search(); });
|
|
});
|
|
/* @license-end */
|
|
</script>
|
|
<div id="main-nav"></div>
|
|
</div><!-- top -->
|
|
<div id="side-nav" class="ui-resizable side-nav-resizable">
|
|
<div id="nav-tree">
|
|
<div id="nav-tree-contents">
|
|
<div id="nav-sync" class="sync"></div>
|
|
</div>
|
|
</div>
|
|
<div id="splitbar" style="-moz-user-select:none;"
|
|
class="ui-resizable-handle">
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt MIT */
|
|
$(document).ready(function(){initNavTree('docs_links_and_tools.html',''); initResizable(); });
|
|
/* @license-end */
|
|
</script>
|
|
<div id="doc-content">
|
|
<!-- window showing the filter options -->
|
|
<div id="MSearchSelectWindow"
|
|
onmouseover="return searchBox.OnSearchSelectShow()"
|
|
onmouseout="return searchBox.OnSearchSelectHide()"
|
|
onkeydown="return searchBox.OnSearchSelectKey(event)">
|
|
</div>
|
|
|
|
<!-- iframe showing the search results (closed by default) -->
|
|
<div id="MSearchResultsWindow">
|
|
<iframe src="javascript:void(0)" frameborder="0"
|
|
name="MSearchResults" id="MSearchResults">
|
|
</iframe>
|
|
</div>
|
|
|
|
<div><div class="header">
|
|
<div class="headertitle"><div class="title">Links, Tools and Debugging </div></div>
|
|
</div><!--header-->
|
|
<div class="contents">
|
|
<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>
|
|
<p ><a class="anchor" id="links_sdcc_docs"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md25"></a>
|
|
SDCC Compiler Suite User Manual</h1>
|
|
<ul>
|
|
<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 />
|
|
<a href="http://sdcc.sourceforge.net/doc/sdccman.pdf">http://sdcc.sourceforge.net/doc/sdccman.pdf</a> <br />
|
|
<a href="http://sdcc.sourceforge.net">http://sdcc.sourceforge.net</a></li>
|
|
<li>The SDCC assembler and linker (sdas / asxxxx and aslink) manual. <br />
|
|
<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>
|
|
</ul>
|
|
<p ><a class="anchor" id="links_help_and_community"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md26"></a>
|
|
Getting Help</h1>
|
|
<ul>
|
|
<li>GBDK Discord community: <br />
|
|
<a href="https://github.com/gbdk-2020/gbdk-2020/#discord-servers">https://github.com/gbdk-2020/gbdk-2020/#discord-servers</a></li>
|
|
<li>Game Boy discussion forum: <br />
|
|
<a href="https://gbdev.gg8.se/forums/">https://gbdev.gg8.se/forums/</a></li>
|
|
</ul>
|
|
<p ><a class="anchor" id="links_gameboy_docs"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md27"></a>
|
|
Game Boy Documentation</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="Pandocs"></a> <b>Pandocs</b> <br />
|
|
Extensive and up-to-date technical documentation about the Game Boy and related hardware. <br />
|
|
<a href="https://gbdev.io/pandocs/">https://gbdev.io/pandocs/</a></li>
|
|
<li><a class="anchor" id="awesome_gb"></a> <b>Awesome Game Boy Development list</b> <br />
|
|
A list of Game Boy/Color development resources, tools, docs, related projects and homebrew. <br />
|
|
<a href="https://gbdev.io/resources.html">https://gbdev.io/resources.html</a></li>
|
|
</ul>
|
|
<p ><a class="anchor" id="links_sms_gg_docs"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md28"></a>
|
|
Sega Master System / Game Gear Documentation</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="smspower"></a> <b>SMS Power!</b> <br />
|
|
Community site with technical documentation, reviews and other content related to the Sega 8-bit systems. <br />
|
|
<a href="https://www.smspower.org/">https://www.smspower.org/</a></li>
|
|
</ul>
|
|
<p ><a class="anchor" id="links_megaduck_docs"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md29"></a>
|
|
Mega Duck / Cougar Boy Documentation</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="megaduckdev"></a> <b>MegaDuck.dev</b> <br />
|
|
A collection of technical information and resources for the Mega Duck / Cougar Boy console. <br />
|
|
<a href="https://megaduck.dev/">https://megaduck.dev/</a></li>
|
|
</ul>
|
|
<p ><a class="anchor" id="links_gbdk_tutorials"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md30"></a>
|
|
Tutorials</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="tutorials_larolds"></a> <b>Larold's Jubilant Junkyard Tutorials</b> <br />
|
|
Several walk throughs about the fundamentals of developing for the Game Boy with GBDK-2020. There are simple examples with source code. <br />
|
|
<a href="https://laroldsjubilantjunkyard.com/tutorials/">https://laroldsjubilantjunkyard.com/tutorials/</a></li>
|
|
<li><a class="anchor" id="tutorials_gamingmonsters"></a> <b>Gaming Monsters Tutorials</b> <br />
|
|
Several video tutorials and code for making games with GBDK/GBDK-2020. <br />
|
|
<a href="https://www.youtube.com/playlist?list=PLeEj4c2zF7PaFv5MPYhNAkBGrkx4iPGJo">https://www.youtube.com/playlist?list=PLeEj4c2zF7PaFv5MPYhNAkBGrkx4iPGJo</a> <br />
|
|
<a href="https://github.com/gingemonster/GamingMonstersGameBoySampleCode">https://github.com/gingemonster/GamingMonstersGameBoySampleCode</a></li>
|
|
<li><a class="anchor" id="tutorials_typorter"></a> <b>Pocket Leage Tutorial</b> <br />
|
|
<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>
|
|
</ul>
|
|
<p ><a class="anchor" id="link_examples"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md31"></a>
|
|
Example code</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="examples_gbdk_playground"></a> <b>Simplified GBDK examples</b> <br />
|
|
<a href="https://github.com/mrombout/gbdk_playground/commits/master">https://github.com/mrombout/gbdk_playground/commits/master</a></li>
|
|
</ul>
|
|
<p ><a class="anchor" id="links_graphic"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md32"></a>
|
|
Graphics Tools</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="gbtd_gbmb"></a><a class="anchor" id="gbmb"></a><a class="anchor" id="gbtd"></a> <br />
|
|
<a class="anchor" id="toxa_gbtd_gbmb"></a> <b>Game Boy Tile Designer and Map Builder (GBTD / GBMB)</b> <br />
|
|
Sprite / Tile editor and Map Builder that can export to C that works with GBDK. <br />
|
|
This is an updated version with const export fixed and other improvements. <br />
|
|
<a href="https://github.com/gbdk-2020/GBTD_GBMB">https://github.com/gbdk-2020/GBTD_GBMB</a><ul>
|
|
<li>A GIMP plugin to read/write GBR/GBM files and do map conversion: <br />
|
|
<a href="https://github.com/bbbbbr/gimp-tilemap-gb">https://github.com/bbbbbr/gimp-tilemap-gb</a></li>
|
|
<li>Command line version of the above tool that doesn't require GIMP (png2gbtiles): <br />
|
|
<a href="https://github.com/bbbbbr/gimp-tilemap-gb/tree/master/console">https://github.com/bbbbbr/gimp-tilemap-gb/tree/master/console</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a class="anchor" id="Tilemap_Studio"></a> <b>Tilemap Studio</b> <br />
|
|
A tilemap editor for Game Boy, GBC, GBA, or SNES projects. <br />
|
|
<a href="https://github.com/Rangi42/tilemap-studio/">https://github.com/Rangi42/tilemap-studio/</a></li>
|
|
</ul>
|
|
<p ><a class="anchor" id="tools_music"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md33"></a>
|
|
Music And Sound Effects for the Game Boy</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="hUGEdriver"></a> <b>hUGEtracker</b> and <b>hUGEdriver</b> <br />
|
|
A tracker and music driver that work with GBDK and RGBDS. It is smaller, more efficient and more versatile than gbt_player. <br />
|
|
<a href="https://github.com/SuperDisk/hUGEDriver">https://github.com/SuperDisk/hUGEDriver</a> <br />
|
|
<a href="https://github.com/SuperDisk/hUGETracker">https://github.com/SuperDisk/hUGETracker</a></li>
|
|
<li><a class="anchor" id="CBT-FX"></a> <b>CBT-FX</b> <br />
|
|
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>
|
|
<li><a class="anchor" id="VGM2GBSFX"></a> <b>VGM2GBSFX</b> <br />
|
|
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>
|
|
<li><a class="anchor" id="gbt-player"></a> <b>GBT Player</b> <br />
|
|
A .mod converter and music driver that works with GBDK and RGBDS. <br />
|
|
<a href="https://github.com/AntonioND/gbt-player">https://github.com/AntonioND/gbt-player</a> <br />
|
|
Docs from GBStudio that should mostly apply: <a href="https://www.gbstudio.dev/docs/music/">https://www.gbstudio.dev/docs/music/</a></li>
|
|
</ul>
|
|
<h1><a class="anchor" id="autotoc_md34"></a>
|
|
Music And Sound Effects for the SMS/Game Gear</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="Banjo"></a> <b>Banjo</b> <br />
|
|
A sound driver for Sega Master System and Game Gear which can import from Furnace tracker. <br />
|
|
<ul>
|
|
<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>
|
|
<li><a href="https://github.com/gbdk-2020/CrossZGB/commit/8ecd46639f3af420cfe139fc155740e8aa14d7c5">https://github.com/gbdk-2020/CrossZGB/commit/8ecd46639f3af420cfe139fc155740e8aa14d7c5</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
<p ><a class="anchor" id="tools_emulators"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md35"></a>
|
|
Emulators</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="emulicious"></a> <b>Emulicious</b> <br />
|
|
An accurate emulator with extensive tools including source level debugging. <a href="https://emulicious.net/">https://emulicious.net/</a></li>
|
|
<li><a class="anchor" id="bgb"></a> <b>BGB</b> <br />
|
|
Accurate emulator, has useful debugging tools. <br />
|
|
<a href="http://bgb.bircd.org/">http://bgb.bircd.org/</a></li>
|
|
<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 />
|
|
</li>
|
|
</ul>
|
|
<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>
|
|
<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"> {
|
|
"configurations": [
|
|
{
|
|
"name": "gameboy",
|
|
"includePath": [
|
|
"${workspaceFolder}/src/**",
|
|
"${workspaceFolder}/res/**",
|
|
"${workspaceFolder}/include/**",
|
|
"${workspaceFolder}/../../../gbdk/include/**"
|
|
],
|
|
"defines": ["__PORT_sm83", "__TARGET_gb"],
|
|
"compilerPath": "",
|
|
"cStandard": "c11",
|
|
"intelliSenseMode": "${default}",
|
|
"compilerArgs": [],
|
|
"browse": {
|
|
"limitSymbolsToIncludedHeaders": true
|
|
}
|
|
}
|
|
],
|
|
"version": 4
|
|
}
|
|
</pre><p ><a class="anchor" id="tools_debug"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md36"></a>
|
|
Debugging tools</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="Emulicious_debug"></a> <b>Emulicious debug adapter</b> <br />
|
|
Provides source-level debugging in VS Code and Sublime Text that works with GBDK2020. <br />
|
|
<a href="https://marketplace.visualstudio.com/items?itemName=emulicious.emulicious-debugger">https://marketplace.visualstudio.com/items?itemName=emulicious.emulicious-debugger</a><ul>
|
|
<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>
|
|
<li><code>-Wf--max-allocs-per-node0</code></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li><a class="anchor" id="romusage"></a> <b>romusage</b> <br />
|
|
Calculate used and free space in banks (ROM/RAM) and warn about errors such as bank overflows. <br />
|
|
See <a class="el" href="docs_toolchain_settings.html#romusage-settings">romusage-settings</a></li>
|
|
<li><a class="anchor" id="bgb_symbol_conversion"></a> <b>noi file to sym conversion for bgb</b> <br />
|
|
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>
|
|
<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>
|
|
<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>
|
|
</ul>
|
|
</li>
|
|
<li><a class="anchor" id="src2sym"></a> <b>src2sym.pl</b> <br />
|
|
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>
|
|
</ul>
|
|
<p ><a class="anchor" id="links_optimizing"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md37"></a>
|
|
Optimizing Assembly</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="optimizing_assembly"></a> <b>Optimizing Assembly Code</b> <br />
|
|
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>
|
|
</ul>
|
|
<p ><a class="anchor" id="tools_build_ci_cd"></a></p>
|
|
<h1><a class="anchor" id="autotoc_md38"></a>
|
|
Continuous Integration and Deployment</h1>
|
|
<ul>
|
|
<li><a class="anchor" id="GBDK_GitHub_Action_Builder"></a> <b>GBDK GitHub Action Builder</b> <br />
|
|
A Github Action which provides basic CI/CD for building projects based on GBDK (not for building GBDK itself). <br />
|
|
<a href="https://github.com/wujood/gbdk-2020-github-builder">https://github.com/wujood/gbdk-2020-github-builder</a> </li>
|
|
</ul>
|
|
</div></div><!-- contents -->
|
|
</div><!-- PageDoc -->
|
|
</div><!-- doc-content -->
|
|
<!-- start footer part -->
|
|
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
|
<ul>
|
|
<li class="navelem"><a class="el" href="index.html">General Documentation</a></li>
|
|
<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>
|
|
</ul>
|
|
</div>
|
|
</body>
|
|
</html>
|