エミュレーターMAMEのコンパイル
カテゴリとしてゲームは変かもしれないけれど、気にしない方針で。
ちょっといろいろと試したいことがあったので、最新版のMAMEのソースコードを落としてきてWindows上でコンパイル。手順をメモっておくと
- http://www.mame.net/downmain.htmlからソースコードとWin32 compile utilities (0.92-)をダウンロード
- 適当なディレクトリにソースコードを展開。たとえば C:\MAME_DEBUGに展開。
- debugコンパイルしたいので、C:\MAME_DEBUG\makefileを編集。version 0102の場合は以下を有効になるように変更しました。
- SYMBOLS = 1
- MAP = 1
- DEBUG = 1
- MinGWをC:\MinGWなどにインストール
- C:\MinGWにWin32 compile utilitiesを展開してファイルを上書き
- コマンドプロンプトを立ち上げて、MinGWにPATHを通す。たとえば SET PATH=C:\MinGW\bin;%PATH% を実行
- コマンドプロンプトで、ソースコードを展開したディレクトリに移動してmakeを実行してしばらく待てば mamed.exe が作成されるはずです。
これでMAMEに搭載されているdebuggerが使えるようになっています。アセンブラレベルでゲーム自体の挙動が追えるので便利。
debug windowを使うためには mamed -createconfig して、mamed.iniのwindowとdebug を 1 にするととりあえずは使えます。
一昔前に比べるとコンパイルも簡単になったなぁ、という印象を持ちました。手を出しやすくなった予感。
cygwinでMAMEをコンパイル
普段使っているcygwinを最新の環境にupdateして、cygwin上でMAMEのコンパイルを実行してみました。
cygwinのインストールは、どうせディスクは余っているしめんどくさいのでcygwinの全packageをインストール。
makefileのCOMPILESYSTEM_CYGWINを1にして、cygwinで上記したMinGWを使えるようにPATHを通してmakeすれば作成可能。でも、コマンドプロンプトでmakeするのと変わらないので、あんまり意味は無い予感。
cygwinのdddでmame本体の動作を追いかける
単にソース読むだけだったらmeadowにetagsで作ったタグファイルを指定して、タグジャンプして読むのが良いけれど、実際に動かしながら見るのも良いかなと。
- cygwinを立ち上げてstartxでもなんでも良いのでXを立ち上げる
- コマンドプロンプトを立ち上げて、PATHとDISPLAY環境変数を設定。以下は例として
- mamed.exeがあるディレクトリにCDして、ddd mamed
- dddが立ち上げったらdddのプロンプトに set args gradius などとして起動するゲームを指定
- 同じようにプロンプトに b main などしてブレークポイントを指定
- プロンプトで run などで実際に実行
- あとは step や next などで追いかけられます
ただ、普通に走っているときに break をしても止まってくれないっぽい。何か設定すればいいのかもしれないけれど、よく分からず。
それとcygwinからddd mamedとかやって起動すると、うまく立ち上がってきてくれません。これも何かやれば良さそうなんだけれど分からず。