上から下へ 並んでいます。
ついに、移植してしまいました。 PC6001V が、Macでも動いちゃいます。(^^;
何故、移植したかというと、私のMacノートでは、動くソフトが少ないので、 なら、移植してしまおう!というのが始まりでした。
ここで、なぜ、iP6 Plus じゃないかというと、全然移植できるような段階に無いからです。(汗)
幸いにして、PC6001Vは、ソースリストが公開されていますし、 SDLベースで作られているので、移植しやすいのでは?と思っていました。 ただし、Win32に依存した部分がかなりあるので、それをどうにかする必要がありました。
Win32 APIの大半は、グラフィカルユーザインターフェイスの部分ですが、 一部、エミュレータの実行に必要な、フォントファイルを練成・・もとい、作成するのに、 使われています。
その部分はさすがに、そのままというわけにも行かないので、とりあえず、空の関数にして 急場をしのいでいきます。 すると、フォントファイルがないので、起動しないということに・・。 仕方が無いので、とりあえず、Windowsマシンにあった、フォントファイルを、Macにコピーしたら、 なんとか動いてくれました。
といっても、この部分はこのままというわけには行きません。。。
エミュレータのウインドウだけは、表示されるところまできました。が、まだウインドウの枠だけ しか表示されていない状態です。 ほえほえ〜〜。なんでやねん。。
これは、Z80 CPUのレジスタの順番が間違っていたからでした。 というより、Macだとビッグエンディアンなので、Winと反対になってしまうんです。 この辺は、iP6 をいじっていたので、すぐに分かりました。(^^;;
音は出るんだけど、エミュレータの画面が全く表示されないという状態に陥り、 参っていました。
これ、なんでかというと、パレットのカラー値が、全部0だったからみたいですね。(汗) つまり、描画自体は行われているんだけど、闇夜のカラスで、見えないぞ。と。
設定ファイルがほとんど空になっていると、そうなってしまうようです。 これは、一旦設定ファイルを削除することで、治りました。 結局、今回で一番大変だったかもしれませんね。(^^;;
ついに、出ました。(^^;;
BASICも使える!ということで、真っ先に試したのは、音楽機能でしたが、 かなり震えていますよ。(汗) その次に、音声合成ですが、何を言っているのか、分かりませんでした。(汗)
これも、しばらく不思議だったのですが、 ついに治りました。 これも、エンディアン問題で、音源の初期化するときに、 バイトオーダーを、ビッグエンディアンにしたら、さくっと治りました。(^^;
なんか、キー入力がおかしいです。 大体は、日本語キーボードで認識しているのですが、一部のキーが変な入力のされ方に なります。
SDLのWindows版では、キー入力が正しく行えないバグがあるので、対処コードがありましたが、 カットしたら、さくっと治りました。(^^;
フォントファイル作成プログラムの作成ですが、 初めは、Cocoaでやっていました。(^^; 何度もやりなおしても、だめだったのですが、ついに、フォントファイルを作成できた! と思って、エミュレータに読み込ませても、全然認識してくれません。(汗)
これは、256カラーになっていないからでした。(汗) でも、Cocoaで、256カラーにする方法が、全然分かりませんでしたので、このままストップしていました。
一部の画面が崩れてしまっていました。 これは、リトルエンディアン前提で組まれていたからです。 バイトの並びを入れ替えることで、治りました。 それにしても、変更点がたくさんあるので、結構大変でしたね。(^^;
.appにパッケージ化したことにより、Finderからダブルクリックで起動できるようになりました。 これは、悲願でした。(^^;
ちなみに、内部的には、pc6001v.app ディレクトリの下の、Contents ディレクトリの下の、MacOSというディレクトリの下に、実行ファイルを置きます。
Makeするときは、コマンドライン上で、普通に、メイクを行いますが、実行ファイルは、 ../pc6001v.app/Contents/MacOS/ に書き出すようにします。 それが、Finderからみると、pc6001v.app の.app がとれて、pc6001vというアイコンが ひとつあるだけに見えるんです。
Macでの実行ファイルのパッケージ方法は、感心してしまいました。(^^; コマンドライン版でも、簡単にFinderから起動できるように出来るだけでなく、 リソースや、ライブラリとかも、簡単にパッケージに含められます。
これも、悲願だったわけですが、ついに実現しました。(^^; .appパッケージの中にframeworkというディレクトリを作って、SDL のframework をコピー。 リンクするときに、-framework SDL とするだけです。
これも、isioさんの日記が参考になりました。(^^; ありがとうございました。
実を言うと、この時点では、まだエラーがおこっても 何も表示されないまま、終了するだけ でした。(汗) このままでは、いくら出来が良くても、アプリケーションとしては失格です。
これは、西田さんに助けていただけました。 本当にありがとうございました。(_)
ついに、Rel.1 を公開してしまいました。(汗) この時点では、まだ、フォント作成プログラムも、設定変更プログラムも出来てなかったわけですが、 とりあえず、動かすことが出来たので、公開してしまいました。
うーん。とはいえ、やっぱり使いにくいですね。(汗) 設定変更は、全部設定ファイルをいじる必要があります。(汗) 申し訳ないです。(_)
でも、西田さんの手助けがなければ、無理だったと思います。 本当にありがとうございました。
2004年10月7日頃なんと、Cocoa iP6 の西田さんに、フォント作成プログラムを作成していただくことができました。 これで、ステータスバーなどの文字が、正しく表示されるようになります。 ありがとうございました。
ちなみに、256色のPNGファイルは、 Cocoaではなく、Carbonでないと、できないということでした。(汗)
2004年10月19日な、なんと、西田さんに、GUIのプログラムを作成していただくことが出来ました。(^^; これで、pc6001vにも、Windowsと同じようなメニューが使えるようになります。 すごい。。。を通り越して、感動してしまいました。(汗)
本当に、西田さんには、足を向けて寝れないです。 ありがとうございました。(_)
一通り出来るみたいです。 本当にすごいです。