PC6001VX を iOS 向けにビルドしようぜ
PC6001VX を iOS向けにビルドした時のざっくりとしたメモです。
Apple の開発者登録は必須になります。(無償版でもいけるかも?わかりません。すいません。)
あくまでざっくりとしたメモなので、手取り足取り書いてません。
自分でQtや、iOS のプログラムを組んだことのある方を想定しています。
- Mac を用意します。
- Xcodeを入れます。
- Qt(オープンソース版)を落としてきます。
- Qt のインストールをします。
- Qt のiOS 向けのコンポーネントもインストールします。
- PC6001VXのソースリスト を落としてきます。
Qt Creator を起動して、iOS 向けのビルドができるように設定する
iOS を選択して、Configure Projectボタンを押す
キットとして、Qt x.xx for iOS を選択
ビルドする
iOS 端末でのインストール&実行に失敗するときは?
- ビルドディレクトリー( Debug とか)を開く
- Xcode のプロジェクトファイル(PC6001VX.xcodeproj)を Xcodeで開く
- Xcodeで、インストールしたい端末などを設定する
- ビルドする
うまくいけば、iOS端末で、PC6001VX と書かれた起動画面が観れます。
Q. 起動しても、真っ黒な画面から動かないときは?
A. Qt 5.13.1 for iOSだと、メッセージボックスでこける問題?があるみたい、下記のパッチファイルを参考にしながら、修正を行ってください。
(メッセージボックスを開かずに、いきなり互換ROMで起動するように修正しています。)
--- p6vxapp.cpp.orig 2019-10-08 00:05:16.000000000 +0900
+++ p6vxapp.cpp 2019-10-12 15:58:15.000000000 +0900
@@ -596,6 +596,7 @@
Error::SetError( Error::NoError );
}
}else{
+#if 0 // <-----追加
bool romFolderSpecified = false;
if(OSD_Message( QString(tr("ROMファイルが見つかりません。\n"
"ROMフォルダ(%1)にROMファイルをコピーするか、"
@@ -626,16 +627,19 @@
int ret = OSD_Message( tr("エミュレーター内蔵の互換ROMを使用しますか?").toUtf8().constData(),
NULL, OSDM_YESNO | OSDM_ICONQUESTION );
if(ret == OSDR_YES) {
- enableCompatibleRomMode(&Cfg, true);
+#endif // <-----追加
+ enableCompatibleRomMode(&Cfg, true);
Cfg.Write();
Restart = EL6::Restart;
- } else {
+#if 0 // <-----追加
+ } else {
terminateEmulation();
exit();
return;
}
}
- emit vmRestart();
+#endif // <-----追加
+ emit vmRestart();
return;
}
再度、ビルド、ランする
互換ROMはPC6001VXに内蔵されているので、ROMがなくても、PC-6001として起動します。
ここまで動くのは感涙もの。。。うるうる。。
本当に eighttailes さんには感謝しかありません。
使い方
エミュレータの画面をタップすると、メニューが表示されます。
System →Virtual keyboard をオンにすると、下の方に仮想キーボードが現れます。
Q. メニューの日本語が化けている場合
A. 一時的に、言語設定を「英語」にする。
Qt for iOS の問題だと思われます。
iOS 13 から、アプリごとに言語設定を弄れるようになっているようですが、それには対応しておりません。すいません。
[注意事項]
Qt 5.13.1 では、メッセージボックスを開くとこけるようなので、機種を変更しない。
About Qt を開くと、閉じることができない
などの不具合がありました。早く治して欲しいです。
あと、Phone 8 でやっていると、System メニューを選ぼうとしても、すぐに閉じてしまったり、キーボードが押しにくかったりするような。iPhone 11 Pro /11 Pro Max とか、iPad の方がいいのかもしれないです。