メガドライブ用のソフト作成ツールであるSGDKがすばらしいそうなので、統合開発環境と共に設定して付属のサンプルを再コンパイルできるように環境を整えてみました。ここでの説明はWindowsですが、MacやLinuxでも出来るみたいですね。 公式サイトにもCode::Blocksでの設定方法が詳しく書かれているので、ここに書かれているのは、それをなぞって確認したようなものです。
公式サイトをみると、Code::blocks以外にも、EclipseやQtCreatorも使えるようですが、SGDKに付属しているサンプルプロジェクトはCode::Blocks用みたいです、たぶん。
補足:この資料を書いている時はSGDKのバージョンが1.12でしたが、その後のバージョンアップでライブラリがガラッと変わっているので、一部、最新のSDGKとは異なる説明箇所があります。
SGDKをダウンロードして展開します。
https://github.com/Stephane-D/SGDK/wiki/Download
これを書いてる時点では、SGDK 1.12が最新でした。
ファイルの展開先はどこでも自分で扱いやすい場所でいいですが、展開先フォルダを後で移動するのはダメです。あと、フォルダ名にスペースが入ってると何かと面倒な事になるので、C:\SGDK\とかわかりやすいところにします。私はD:\SGDKとしました。
最初にWindowsの環境変数を設定しておきます。これが一番面倒な作業です。Windows10の場合、デスクトップのコンピュータを右クリックで管理をクリック→左端のシステムの詳細設定で設定ウィンドウを開いて下部の環境変数...ボタンを押して、 ユーザ環境変数の「新規...」ボタンを押します。
設定する環境変数は、GDKとGDK_WINの二つです。
[!注意!]フォルダがd:¥sgdkの場合、ここで設定するのは、d:/sgdkです。¥記号は/に置き換えて入力してください。
続いて、統合開発環境のCode::Blocksをインストール&設定します。
Downloads->Binariesからファイルをダウンロードします。
ダウンロードするファイルは、codeblocks-13.12mingw-setup.exeでよさそうです。 codeblocks-13.12mingw-setup-TDM-GCC-481.exeに入っているコンパイラの方がバージョンが高いのですが、codeblocks-13.12mingw-setup.exeに含まれているコンパイラのが信頼度が高いようです。
ダウンロードしたファイルをインストーラに従ってインストールします。インストールの設定は全てデフォルトのままでよさそうです。 最後に、Code::Blocksを起動するかどうか聞かれるので、「はい」を選んで起動します。起動途中に、コンパイラを選ぶ画面が表示されますがここはそのままでOKを押します。
起動後、C,C++のファイルの拡張子の関連付け設定を聞かれます。普段、VisualStudioとかの他のCコンパイラを使っていたり、別のテキストエディタに関連付けしているのであれば 「No, leave everything as it is」を選んでおきます。
メニューから、Setting→Compiler...を選びます。
Copy...ボタンを押します。
表示されるウィンドウに「Sega Genesis Compiler」と入力してOKを押します。直後に「The new compiler has been added!...」と表示されますからOKを押します。
そのままToolchain executablesのタブに切り換えて、Compiler's installation directoryに、SGDKを展開したフォルダを...ボタンで選択&入力します。 それから、C compiler, C++ Compiler...以下の項目を次のように設定します。手打ちしてもいいですが「...」ボタンで 個別に選んだ方が安全です。
OKボタンを押します。
Code::blockのFile→Open...を選択して、SGDKのsample\spriteフォルダにある、sprite.cbpファイルを選択します。 spriteサンプルのプロジェクトが開かれますが、このままではBuild(コンパイル)出来ません。ワークスペース名を 右クリックでメニューを開き、Properties...を選びます。
Makefileの箇所に、SGDKを展開したフォルダに入っているmakefile.genを指定します。 デフォルトだと d:\apps\GenDev\makefile.gen になっていると思いますが、これを書き換えます。
OKボタンを押してPropetiesウィンドウを閉じます。
spriteプロジェクトをマウス右クリックしてcleanを選択します。何か聞かれますがYesボタンを押します。
再び、spriteプロジェクトをマウス右クリックしてBuildを選択します。spriteサンプルの作成完了です。ここまでで何か設定ミスがあるとエラーが出ます。 私の場合、最初に設定した環境変数のパスがスラッシュではなく¥になっていました。warningは気にしなくてよさそうです。
sample\sprite\outフォルダに色々なファイルが今の日時で再作成されているはずです。
その中のrom.binをメガドラエミュレータに放り込めば、ソニックっぽいspriteのサンプルが動きます。
サンプルプロジェクトを動かし飽きたら、自分でプロジェクトを最初から作成してみます。
Code::BlockのメニューからFile→New→Project...を選択します。
Empty Projectのアイコンを選んでGoボタンを押します。
Next>ボタンを押します。
プロジェクト名を入力して、プロジェクトの保存先を選択して、Next>ボタンを押します。
CompilerはSega Genesis Compilerを選択します。 Create "Debug" configurationのチェックは外します。 Create "Release" configurationは、defaultと入力し、その下の2つの項目はout\と入力しておきます。この辺の設定に、どういう意味があるのかわかりませんが、気にせず設定しておきます。→意味がわかったので補足「プロジェクト設定を見直す」
Finishボタンを押します。
Code::Block右端のWorkspaceに、新しく作成したプロジェクトが追加されているので、これをマウス右ボタンクリックして、Properties...を選択します。
サンプルを開いた時と同じように、Makefileの箇所に、SGDKを展開したフォルダに入っているmakefile.genを指定します。
メニューからFile→New→Fileと選択して、C/C++ sourceを選んでGoボタンを押すと、CかC++かを聞かれるので、C言語にしておきます。
ソースファイルファイル名を指定しますが、ここでファイルの保存先も指定しておく必要があります。また、SGDKではソースファイルをsrcフォルダに保存しておく必要があるようですから、プロジェクトのフォルダにsrcというフォルダを作成して、その中にソースファイルを置くようにします。ファイル名はmain.cにしておきます。
Finishボタンを押すと、main.cファイルが開いた状態になります。 プログラムを入力して保存します。
File→Build→Buildを選択するとコンパイルが始まって、エラーが無ければ、プロジェクトフォルダ内にoutというフォルダが勝手に作られています。rom.binがエミュレータで実行可能なファイルですから、適当なエミュレータでrom.binを実行して確認します。 簡単!
デバッガが使えないので、開発時の実行テストではありがたみ半減です。でも、開発中のファイル編集やコンパイルエラー修正とかでは非常に便利ですね。
あとで教えてもらったのですが、GDBで連携することも出来るようです。まだよくわかりません。
エミュレータは、Gens KModというのがデバッグしやすそうです。