Common Source Code Project のPCエミュレータを Android で動作できるように移植しました。ソースがだいぶおちついてきたので、公開します。
元ソースとの差分でおいてあります。ビルド済みAPKファイルの公開は今のところ考えていません。(というか、公開可能なAPK作成方法もよくわかってないです…w)
Common Source Code Project for Android
https://github.com/shikarunochi/CommonSourceCodeProjectAndroid
ビルドは以下の手順となります。
AndroidStudio & NDK のインストール
こちら参考にどうぞ。
Android:はじめてのAndroid NDK
http://shikarunochi.matrix.jp/?p=4080
プロジェクトファイルをそろえる
Android版ソースファイルを一式取得。
https://github.com/shikarunochi/CommonSourceCodeProjectAndroid/tree/master/emulator
武田さんのページのソースファイルを取得。
http://takeda-toshiya.my.coocan.jp/common/history/index.html
移植ベースは、2020-04-06 版です。以下のようにソースコピーしてください。
/source/src/*.cpp → emulator/app/src/main/cpp/*.cpp
/source/src/*.h → emulator/app/src/main/cpp/*.h
/source/src/vm/* → emulator/app/src/main/cpp/vm/*
このとき同名ファイルの上書きは「しない」でください。
サウンド用 oboeライブラリソースファイルをコピー
以下のようにソースコピーしてください。
/include/oboe/* → emulator/oboe/include/oboe/*
/src/* → emulator/oboe/src/*
/CMakeLists.txt → emulator/oboe/CMakeLists.txt
AndroidStudioでプロジェクトを開く
emulatorディレクトリを開きます。
読み込みや解析が入るので、AndroidStudioが落ち着くまでしばらくまってください。
グルグル…。
View – Tool Windows の Build Variants を開きます。
ビルド対象を選択します。Debug版を選択してください。対象機種の増やし方は、またのちほど。
ビルドしてエラーが出ないことを確認してください。
初回は上のダイアログ表示の後、しばらく時間かかるかも。
Androidへのインストール
インストールするAndroid端末をPCに接続して実行してください。Android端末にインストールされます。
build.gradle で minSdkVersion 26 指定してるので、Android 8 (Oreo) 以降が対象です。minSdkVersion 21 (Android 5 Lollipop)あたりでも大丈夫かも。あんまり深く探ってないです。
インストール直後は、ストレージ権限がないために、必要なストレージにアクセスできません。アプリ権限を付与して、アプリ再起動してください。
権限付与の方式はAndroid機種ごとに微妙に違うかも?アプリ→権限→ストレージで見てみてください。
BIOS系ROMイメージファイルは「/Documents/emulator/ [エミュレータ名] + ROM/」に入れてください。MZ-1500であれば「/Documents/emulator/mz1500ROM」となります。
上記ディレクトリの下、FDイメージファイルは「DISK」、テープイメージファイルは「TAPE」、カートリッジイメージファイルは「CART」、QDイメージファイルは「QD」に入れてください。
MZ-1500のTAPEファイルであれば「/Documents/emulator/mz1500ROM/TAPE」になります。
これで、起動できると思います。起動に必要なROM等のファイルは武田さんのPC版と同じなので、まずはPC版で起動することを確認してみてください。
ビルド対象機種の追加方法
機種用のソース一覧を追加。
emulator/app/src/main/cpp/*.txt
元ソースの vc++2013/*.vcxproj を参考に、必要な *.c ファイルと *.h ファイルを列記してください。
emulator/app/src/main/cpp/CMakeLists.txt に、機種用の記載を追加
emulator/app/build.gradle に、機種用の記載を追加
いずれも、他の機種を参考に追加してください。
また、以下のファイルを用意すると、アイコンとアプリ名が表示されます。なければ、アプリ名emulatorsで、ドロイド君アイコンになります。
emulator/app/src/[機種名]/res/ 以下
minmao-***/ アイコン画像ファイル
values/string.xml アプリ名
アイコン画像ファイルは、元ソースのアイコンファイルから生成しました。おおもとは天ぷら工房さんのアイコンですね。
現状、全機種をビルドしてみてはいないので、ビルド時にエラーが出たり、動作が変になる機種もあるかもしれないです。(たぶんあります)
ふふー。充実…!