ちょっと、いじってました。
コンパイラは、Visual C++ 2008 Express Editionで、OSは、Windows 7です。
- movie.c の関数の途中に、変数の定義があったりします。。
movie.c は、もともと、ゆみたろさんの P6V のソースリストから、もらってきたものなんですが、もともと、C++を、そのまま、C言語に変換したものです。
gccのときは、大丈夫だったんですが、VC++は、だめみたいですね。。(^^;;
というか、普通のC言語は、だめだっちゅうに。(汗)
- zlib の zutil.h の200行目をコメントアウトしないといけない。
//#define vsnprintf _vsnprintf
なんか、VC++でも、vsnprintf というマクロが定義されたらしくて、上記の記述は不要らしい。。
というか、zlibって、最新のVC++に対応してないのか? もしかしたら、最新版は、対応しているかも。と思って、zlib のホームページ行ったら、最新版2005年となっていた。。orz
え? そうなの? すでに、開発が終了していたとは。。。(汗)
- リンカのコマンドラインの設定から、不要なライブラリなどを削除
- VC++には、dirent.h がないので、みかんさんのご指摘の通り、dirent.h 互換ライブラリを使用する。
- directsound.c の dsound.hが見つからない
DirectXのSDKには、入ってないのか?
とりあえず、DirectXは使ってないので、directsound.c は #if 0 でコンパイル対象から外しました。
その他諸々、いじらないといけなかったのですが、おおまかにいうと、こんな感じでしょうか。。
それにしても、ROMファイルの検索が、うまくいかないです。(汗)
それに、よーく見ると、バグが。。。(汗)
strcpy( dir , getenv("HOME"));
Windowsでは、NULLが帰って、アドレス0を読み込もうとしたよ!という例外で止まります。(汗)
そういえば、Windowsの、ディレクトリのセパレーターって、¥マークじゃなかったっけ?
あと、デバッグ画面にすると、フリッカーが発生しますね。(汗)
でも、一応、デバッグ画面として、動いています。(^^;
今までは、Windows専用だったのが、どの環境でもたいがい動くようになりました。
すごいです。(^^;;
あと、デバッグ画面から、普通の画面に復帰するときに、自動変数iが、初期化されてないという例外で止まり、その後、継続しても、ウインドウの表示が消えて、動作不良になる症状が。。(汗)
デバッグ中は、z80()関数に、あとで帰ってくることがあるんだけど、中の変数が、自動変数だったので、途中でスタック情報が消えてしまっていたのが、原因だったみたい。。
static をつけたら、さくっと解決。
うーん。Macのときは、普通に動いていたんだけどなぁ。。Macのときは、スタック情報が消えてなかったからか?
[追記]
でも、よくよく考えたら、デバッグ中、なんか不安定になっていたけど、それが原因だったのかも??