WASMを使い組み込み向けプログラムをブラウザでも動作させる
スクリプト言語を使っても似たような構成が取れるが、WASMを使ってPCブラウザ用にビルドするほうが、実機ではネイティブで動くため速度も確保できて良さそう デバイス依存で実装しなければいけない関数は、machineDependent.hに定義してある。M5StickC PLUS向けの実装はこのヘッダファイル内の関数をC++で実装した。
ブラウザ向けの実装は、Emscriptenの--js-libraryオプションでブリッジのコードを指定してC言語側からJavaScript側の関数呼び出しを、JavaScript側からC言語側の関数はModule.ccallで呼び出している。
ブラウザで動くようにしておくと、いちいちデバイスへバイナリをビルド・転送する必要なく、PC上だけでデバッグ・動作確認できるのが、ゲーム開発の効率上も良い。Arduino IDEのビルドってなぜが非常に遅いし。ブリッジ部分でポインタのやり取りをしたり、Emscriptenのコンパイラに与える適切なオプションを模索したりという部分はそれなりに面倒だが、それでもやっておく価値はある。
一般的にこれを実現する方法をしりたいinajob.icon
まずはHelloWorldとかでやってみたい