エミュレーターMAMEのコンパイル

 カテゴリとしてゲームは変かもしれないけれど、気にしない方針で。
 ちょっといろいろと試したいことがあったので、最新版のMAMEソースコードを落としてきてWindows上でコンパイル。手順をメモっておくと

  1. http://www.mame.net/downmain.htmlからソースコードとWin32 compile utilities (0.92-)をダウンロード
  2. 適当なディレクトリにソースコードを展開。たとえば C:\MAME_DEBUGに展開。
  3. debugコンパイルしたいので、C:\MAME_DEBUG\makefileを編集。version 0102の場合は以下を有効になるように変更しました。
    • SYMBOLS = 1
    • MAP = 1
    • DEBUG = 1
  4. MinGWをC:\MinGWなどにインストール
  5. C:\MinGWにWin32 compile utilitiesを展開してファイルを上書き
  6. コマンドプロンプトを立ち上げて、MinGWにPATHを通す。たとえば SET PATH=C:\MinGW\bin;%PATH% を実行
  7. コマンドプロンプトで、ソースコードを展開したディレクトリに移動してmakeを実行してしばらく待てば mamed.exe が作成されるはずです。

 これでMAMEに搭載されているdebuggerが使えるようになっています。アセンブラレベルでゲーム自体の挙動が追えるので便利。
 debug windowを使うためには mamed -createconfig して、mamed.iniのwindowとdebug を 1 にするととりあえずは使えます。
 一昔前に比べるとコンパイルも簡単になったなぁ、という印象を持ちました。手を出しやすくなった予感。

cygwinMAMEコンパイル

 普段使っているcygwinを最新の環境にupdateして、cygwin上でMAMEコンパイルを実行してみました。
 cygwinのインストールは、どうせディスクは余っているしめんどくさいのでcygwinの全packageをインストール。

 makefileのCOMPILESYSTEM_CYGWINを1にして、cygwinで上記したMinGWを使えるようにPATHを通してmakeすれば作成可能。でも、コマンドプロンプトでmakeするのと変わらないので、あんまり意味は無い予感。

cygwinのdddでmame本体の動作を追いかける

 単にソース読むだけだったらmeadowにetagsで作ったタグファイルを指定して、タグジャンプして読むのが良いけれど、実際に動かしながら見るのも良いかなと。

  1. cygwinを立ち上げてstartxでもなんでも良いのでXを立ち上げる
  2. コマンドプロンプトを立ち上げて、PATHとDISPLAY環境変数を設定。以下は例として
  3. mamed.exeがあるディレクトリにCDして、ddd mamed
  4. dddが立ち上げったらdddのプロンプトに set args gradius などとして起動するゲームを指定
  5. 同じようにプロンプトに b main などしてブレークポイントを指定
  6. プロンプトで run などで実際に実行
  7. あとは step や next などで追いかけられます

 ただ、普通に走っているときに break をしても止まってくれないっぽい。何か設定すればいいのかもしれないけれど、よく分からず。
 それとcygwinからddd mamedとかやって起動すると、うまく立ち上がってきてくれません。これも何かやれば良さそうなんだけれど分からず。