Arduboyのシミュレータを試してみた

Arduboyのコミュニティサイトを見ていたら、Arduboy用のスケッチをVisual Studioでコンパイルして動作させるシミュレータがあったので試してみました。

Proton Arduboy Simulator (for Windows Visual C++ 2005) – Arduboy / Development – Community

Protonというクロスプラットホームのゲーム開発プラットホームを開発されている方が作られたようです。
エミュレーションではなくシミュレータなので、ArduboyのライブラリのAPIと互換のライブラリをWindows上に作成し、Arduboy用に書かれたスケッチファイルをコンパイルしてWindows用のアプリを生成します。

Proton Arduboy SimulatorをダウンロードするにはSVNクライアントが必要です。
以下の説明にあるように「TortoiseSVN」をインストールし、ダウンロード先のフォルダで右クリックから「SVN Checkout…」を選択します。
するとリポジトリのURLを入力するウインドウが出るので、下記のリンク先にあるとおり「svn://~」のURLを入力します。

proton:download [RTsoft Wiki]

arduboysym00.png

ファイルにはArduboyのサンプルにあるブロック崩しが最初から含まれています。
プロジェクトファイルは「ArduboySim\windows」の中にあります。
Visual Studio 2015 Communityで問題なく実行できました。

arduboysym01.png

次に、自分で作ったブロック崩しを動作させてみました。
設定の仕方は以下のページに書かれています。

proton:arduboysim [RTsoft Wiki]

スケッチファイルは「ArduboySim\Arduboy」フォルダの中に、「ardu_main.cpp」というファイル名で入れます。
そして、スケッチファイルの「setup()」と「loop()」をそれぞれ「main_setup()」「main_loop()」という名前に変更します。

次に、Visual Studioでプロジェクトファイルを開き、プロジェクトエクスプローラで「ardu_main.cpp」ファイルを探します。
そして、右クリックで「プロパティ」を選択します。

arduboysym03.png

プロパティウインドウが開いたら、「C/C++」の「プリコンパイル済みヘッダー」を「使用しない」に設定します。

arduboysym02.png

なお、もともとのサンプルに含まれていた「bitmaps.h」「bitmaps.cpp」はプロジェクトから削除しておきます。

これで準備OKです。実行するとシミュレータ上でArduboy用スケッチが動作します。
カーソルキーとCTRLとZが十字ボタン・Aボタン・Bボタンに対応します。

arduboysym04.png

実際にはWindows用のプログラムとして動作していますので、ブレークポイントの設定や変数値の確認なども、下図のように通常のWindowsでのデバッグと同様に行えます。
これは素晴らしいですね。

ちなみに、SDL Debug GLの構成で動作しない場合は、ソリューションエクスプローラーのwinArduboySim上で右クリック→プロパティ→全般 で出力ディレクトリが「..\bin\」になっているかどうか確認してください。

arduboysym05.png

なお、「App.cpp」ファイルの「#define RT_ARDU_LANDSCAPE」の行がコメントアウトされているのを有効にすると、Arduboyを横にした状態で動作を確認することができます。
(ただ、残念ながらカーソルキーの動作までは回転してくれませんでした。)

arduboysym06.png
arduboysym07.png

さらに、この実行コードをHTML5ファイルに変換することができます。
さすがクロスプラットホーム用ツールです。
方法は下記のページに書かれています。

proton:html5_setup [RTsoft Wiki]

まずEmscriptenをインストールします。

Download and install — Emscripten 1.36.5 documentation

インストールしたらスタートメニューのEmscriptenから「Emscripten Command Prompt」を開き、「emsdk」と入力して応答があればインストール完了です。
環境変数PATHにEmscriptenのフォルダが追加されているので、いったんPCを再起動します。

HTMLファイルの生成コマンドは、「ArduboySim\html5」フォルダの中の「build_release.bat」です。
ただし、最初から入っている「build_release.bat」はサンプルのブロック崩しのソースファイルに合わせてありますので、編集が必要です。
現時点では56行目あたりからがその場所になります。

REM **************************************** APP SOURCE CODE FILES
REM set APP_SRC=%APP%\App.cpp %ARDUBOY%\ardu_main.cpp %ARDUBOY%\breakout_bitmaps.cpp
set APP_SRC=%APP%\App.cpp %ARDUBOY%\ardu_main.cpp
REM **************************************** END SOURCE

ソースファイルのリストにbreakout_bitmaps.cppというファイルが含まれていますので、これを取り除いています。

また、現在のバージョンはコンパイル時にSDLのインクルードファイルが見つからないというエラーが出ました。
やむなく音声は無しの指定にしました。(下記引用の赤い部分を削除)

2016/9/15:作者さんが修正してくれました。

SET CUSTOM_FLAGS= -DHAS_SOCKLEN_T -DBOOST_ALL_NO_LIB -DPLATFORM_HTML5 -DRT_USE_SDL_AUDIO -DNDEBUG -DC_GL_MODE -s LEGACY_GL_EMULATION=1 –memory-init-file 0 -Wno-switch -D__AVR_ATmega32U4__ -DRT_ARDUDEV -DRT_RUNS_IN_BACKGROUND -DRT_EMTERPRETER_ENABLED -s EMTERPRETIFY=1 -s EMTERPRETIFY_ASYNC=1

これで、「build_release.bat」ダブルクリックすればHTML5ファイルが生成されます。
(結構時間がかかります。)

結果、こんな感じのHTMLファイルが生成されました。
ちゃんと遊ぶことができます。(実物は→こちら
一緒に生成されたJavaScriptのファイルは3.6MBほどありました。

arduboysym08.png

Arduinoのシミュレータは世の中にはあまりありません。
開発ボードも周辺ボードも数が多いので、実際問題、サポートが困難なのでしょう。
関連のトピックが下記にありました。

Arduino simulator for debugging

しかし、ArduboyはArduinoベースとはいえ、ハードウェアのスペックは固定されており、外付けの機器も無く、用途もゲームのみ、ということでシミュレータが作りやすい条件だったのかもしれません。
かなり実用的なので、ありがたく使わせて頂こうと思います。

コメント