Help us understand the problem. What is going on with this article?

Visual Studio 2015でゲームボーイ開発をやってみる

More than 3 years have passed since last update.

はじめに

ゲームボーイ開発をすごくやりたくなってしまったのですが,さすがにテキストエディタで開発するのはつらいなと思いました.
なので,Visual Studioで開発できるように環境構築してみました.

コンパイラの準備

ゲームボーイ開発に使われるコンパイラとしてGBDKが有名です.
コンパイラのダウンロードについては,下記のエントリを参考にしてください.
開発環境の導入(GBDK / Windows)

エミュレータの準備

エミュレータは好きなものを使ってください.VisualBoyAdvanceが国産なのでお勧めです.

Visual Studioでの環境構築

面倒くさいのでVisual Studio用のプロジェクトテンプレート作りました.
GBDK用のプロジェクトテンプレート

各種パスを通す

テンプレートで使用しているパスは,GBDK_PATHとGB_EMULATOR_PATHの2種類です.この2つを環境変数に追加してください.

GBDK_PATHには,GBDKをインストールしたフォルダを指定してください.

GB_EMULATOR_PATHには,エミュレータの実行ファイルの絶対パスを指定してください.

プロジェクトテンプレートの配置

プロジェクトテンプレートは,C:\Users\%ユーザ名%\Documents\Visual Studio 2015\Templates\ProjectTemplatesに置かれています.
ダウンロードしたテンプレートをそこに入れてください.

Makefileの書き換え

一応,メイクファイル プロジェクトということになっているので,Makefileの書き換えが必須です.
Makefileを開くと,だいたい以下のようなソースになっています.

LCC = lcc -Wa-l -Wl-m -Wl-j -DUSE_SFR_FOR_REG

# 変更すると面倒くさいので変更しないで!
TARGET = output.gb

# コンパイルしたいCファイルを全て書く
SOURCES = main.c test.c

OBJECTS = $(SOURCES:.c=.o)
source_to_objs:
    $(LCC) -c $(SOURCES) -o $(OBJECTS)
    $(LCC) -o $(TARGET) $(OBJECTS)

clean:
    rm -f *.o *.lst *.map *.gb *~ *.rel *.cdb *.ihx *.lnk *.sym *.asm

このプロジェクトは,VCみたいにすべて自動的にコンパイルすることができません.SOURCESマクロを適宜書き換えて使用することになります.

例えば,hoge.c,test.c,main.cみたいな感じでCファイルがあってヘッダファイルなどで参照されていたりしたら,

SOURCES = main.c test.c hoge.c

みたいな形で書き換えて使ってください.
もし,もっとスマートな方法があれば教えて下さい.

デバッグする

デバッガは付いていませんが,F5を押すとエミュレータが起動するようになっています.ただし,コマンドを書いておいたのですが出力されないので手動で設定する必要があります.
まず,プロジェクトのプロパティを開いて,[構成プロパティ]-[デバッグ]-[コマンド]に$(GB_EMULATOR_PATH)を追加します.
次に,[コマンド引数]にoutput.gbを追加します.

これで,デバッグ時にエミュレータが起動するようになります.
中にはVisual Studioと連携できるエミュレータもあるかもしれません.オプションを変更したりして遊んでみてください.

おわりに

これでGBDKでゲームボーイ開発ができるようになります.アセンブラはmakefileのほうに書いてないので,使いたい人は適宜追加してください.
nmakeがあまりにもわがままで使えないので疲れました.nmakeでのMakefileのいい書き方があれば教えて下さい.それではさようなら.

GRGSIBERIA
なんでもやる人.元未踏クリエータ.三次元幾何学と音響工学を少々.
http://www.grgsiberia.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした