iP6 Plus Windows で動くように

ちょっと、いじってました。
コンパイラは、Visual C++ 2008 Express Editionで、OSは、Windows 7です。

  • プロジェクトに、libpng とzlibを追加しないといけませんね。
  • movie.c と movie.h も追加。movie.c と、movie.h の文字コードを、SJISにする。
  • movie.c の関数の途中に、変数の定義があったりします。。

movie.c は、もともと、ゆみたろさんの P6V のソースリストから、もらってきたものなんですが、もともと、C++を、そのまま、C言語に変換したものです。

gccのときは、大丈夫だったんですが、VC++は、だめみたいですね。。(^^;;
というか、普通のC言語は、だめだっちゅうに。(汗)

//#define vsnprintf _vsnprintf

なんか、VC++でも、vsnprintf というマクロが定義されたらしくて、上記の記述は不要らしい。。


というか、zlibって、最新のVC++に対応してないのか? もしかしたら、最新版は、対応しているかも。と思って、zlib のホームページ行ったら、最新版2005年となっていた。。orz
え? そうなの? すでに、開発が終了していたとは。。。(汗)


  • VC++には、dirent.h がないので、みかんさんのご指摘の通り、dirent.h 互換ライブラリを使用する。
  • directsound.c の dsound.hが見つからない

DirectXSDKには、入ってないのか?
とりあえず、DirectXは使ってないので、directsound.c は #if 0 でコンパイル対象から外しました。


その他諸々、いじらないといけなかったのですが、おおまかにいうと、こんな感じでしょうか。。


それにしても、ROMファイルの検索が、うまくいかないです。(汗)
それに、よーく見ると、バグが。。。(汗)

strcpy( dir , getenv("HOME"));

Windowsでは、NULLが帰って、アドレス0を読み込もうとしたよ!という例外で止まります。(汗)


そういえば、Windowsの、ディレクトリのセパレーターって、¥マークじゃなかったっけ?


あと、デバッグ画面にすると、フリッカーが発生しますね。(汗)
でも、一応、デバッグ画面として、動いています。(^^;
今までは、Windows専用だったのが、どの環境でもたいがい動くようになりました。
すごいです。(^^;;


あと、デバッグ画面から、普通の画面に復帰するときに、自動変数iが、初期化されてないという例外で止まり、その後、継続しても、ウインドウの表示が消えて、動作不良になる症状が。。(汗)


デバッグ中は、z80()関数に、あとで帰ってくることがあるんだけど、中の変数が、自動変数だったので、途中でスタック情報が消えてしまっていたのが、原因だったみたい。。
static をつけたら、さくっと解決。


うーん。Macのときは、普通に動いていたんだけどなぁ。。Macのときは、スタック情報が消えてなかったからか?


[追記]

でも、よくよく考えたら、デバッグ中、なんか不安定になっていたけど、それが原因だったのかも??