# gbdk-2020 ``` Note: gbdk-2020(v3.0.1)のコードリーディングを行ったメモ書きです ``` # 概要 sdccはすでにGameBoy開発をサポートするライブラリを含んでいますが、リンカが壊れていてバンクシステムをサポートしていません。 数年前、link-gbz80を古いままにすることでsdccをアップデートしてもリンクが可能なことがわかりました。gbdk-2020こそがそのアップデートを行ったものなのです。 # ツール構成 gbdkを構成するツールについての説明です。 ```sh # gbdk-2020/bin/ ├── as-gbz80 # アセンブラ。古いものをそのまま利用(新しいものだと.orgに問題アリ) ├── lcc # retargetableコンパイラ。最新のsdcc, sdccp, sdasgbをサポートするものに変更 ├── link-gbz80 # リンカ。バンクシステムをサポートするため古いまま └── SDCC ├── sdcc # コンパイラ。古いものは置き換えて最新のsdccを利用する └── sdccp # プリプロセッサ。最新版を利用 ``` # lcc gbdkでgb ROMをbuildするときに呼び出されるのがこのlccです 内部ではSDCCでコンパイルできるようにソースコードを修正し、SDCCコンパイラを呼び出してgbファイルを出力しているようです。 ```sh # gbdk-2020/gbdk-support/lcc/ ├── gb.c # SDCCを使ったgbz80のためのコマンドを生成する └── lcc.c # gb.cで作ったコマンドを実行する ```