2010年10月16日の日記の3番目の記事へのコメント

とりあえず天地を喰らうIIとパニッシャーで1枚しかなかったカードコネクタが不便すぎる感じだったので,こちらのセイミツのを導入してみました.見た目がイマイチな上に,切り欠きがなくて逆刺しが心配なのがアレですが・・・.

カードコネクタ装着

うちのハーネスには逆刺し防止の仕掛けがついているので,こんな感じのものを挟まないと使えないのが不便なんですよねー.うーん.

逆刺し防止回避

ところでこの板は何でしょう.

何でしょう

ゴクリ・・・

WARNING

スコア

じゃーん,System32のダークエッジでした.

ダークエッジ

ただし,電池が切れていますw

ダークエッジは,Jリーグ1994と同じように,電池が切れていても起動はします.ただし,いつもの警告文 → ハイスコアと画面が切り替わった後,タイトルロゴが出てくる前で画面がブラックアウトします.その後,一瞬タイトル画面が出るものの,デモプレイに入る瞬間に再度画面がブラックアウトしてしまい,そのまま再度ハイスコアが表示されるまで真っ黒なまま.

また,コインを入れた後も,同様にキャラクターセレクトのところからずっと画面が黒いままになります.コンティニュー表示のところでようやく画面が出ますが,その後はまた同じことの繰り返し.つまり,上の画像は,辛うじて映る絵を抜き出しただけなんですねーw

コンティニュー画面

というわけで,今日はこれの復活に挑戦してみます.

ひとまず,MAMEで羊羹のエミュレーションを無効にして動かしてみたところ,これとまったく同じ現象が出ました.素晴らしい.この状態で動くようなパッチを当てればいいんだな.

MAMEのソースによると,ダークエッジの羊羹は,垂直同期割り込みに合わせて動き出し,メモリの特定の領域をゼロクリアしたり,条件次第で特定の場所を書き換えたりします.これと同じことをV60側でやってやれば,ダークエッジは再度動くようになるはず.同じことをやるには,V60の垂直同期割り込みのハンドラに羊羹がやっていたのと同じ処理を書き足せばよい,と.

垂直同期割り込みのハンドラは,MAMEのデバッガで,1フレーム進んだ瞬間に止まるように動かしたら一瞬で見つかりました.結構ギチギチに命令が詰まっていましたが,幸いなことにハンドラの直後に3ByteのNOPがくっついていました.3Byteあればサブルーチンコールができるので,後ろの方の命令を3Byteずらして,スタックからレジスタの値をPOPする直前に,羊羹相当の処理を行う以下のルーチンに飛ばします.

 mov.h   #0, R1
 mov.h   R1, 7072[R25]
 mov.h   R1, 7082[R25]
 test.b  212c[R25]
 bz      FIN
 dec.b   212c[R25]
 bnz     FIN
 mov.b   #1, 212e[R25]
FIN:
 rsr

問題は,これをROMのどこに突っ込むか.ROMの後ろの方にはスペースが全然見当たらなかったんですが,少し戻ったら0xffで埋まった,いかにも未使用っぽい領域があったので,そこをちょこっと間借りすることに.

場所が決まったら,今度はアセンブルします.といっても,V60のアセンブラがないので,上記コードはハンドアセンブルで機械語にw.まあ,大部分は,MAMEの逆アセンブルの出力結果を見ながらの切り貼りで済みましたがw.上記サブルーチンは,機械語で32Byteに収まりました.

この変更を適用したところ,MAME上で羊羹のエミュレーションなしでダークエッジが動くようになりました.やった! 後は焼いて実機で動くことを確認すれば・・・って,ダークエッジのROMは27C240なの!? うはー,在庫がない(;´Д`)

ダークエッジのプログラムROMは27C240だった

いやでも,16bit幅の4MbitのROMなら27C4096と同じだよな・・・.ひょっとしてゲタ履かせれば使えるんじゃ? そう思ってデータシートを見たら,なんとこれらはピン互換.下駄すら必要ありませんでしたw.27C4096ならたくさんあるぜ!

というわけで,さっそく焼いて実機で動かしてみたところ・・・キタ━━━━(゜∀゜)━━━━ッ!! タイトル画面のアニメーションが出ました!

タイトル画面のアニメーション出たー

そしてゲーム画面もちゃんと映る!今までブラックアウトしていた部分が全部出ています.やっほう!

プレイデモ

プレイデモ

当然ROMチェックはBADになりますが・・・

BAD

こちらも修正してOKに.バーニングライバルの経験もあって,一瞬で見つけられましたw

GOOD

というわけで,作業時間は4時間弱ってところですかね.簡単に終わってよかったです.まあ簡単に終わったのは,MAMEがプロテクションを完璧にエミュレーションしてくれてるお陰なんですけどね.一体中の人はどうやって調べたんだろうなぁ・・・.

ちなみに,電池レス化した後,ヒートランの様子をだらだらとUstreamで流しっぱなしにしていたら,外国の方がチャットで話しかけてきて結構大変でしたw

お名前:  メールアドレス(省略可):
メールアドレスも表示されます
ここに名前その他を書いてはいけません: ここにメールアドレスその他を書いてはいけません:

2010年10月16日の日記の3番目の記事へのコメント

中の人情報

名前:
nosuke (のすけ)
メール:
sasugaanijaのgmail.com
「の」は「@」みたいな
関連リンク:

カレンダー

2010年10月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

<<先月分

翌月分>>

最新の10件のエントリ

最近の10件のコメント

過去ログ