2011年10月7日の日記の1番目の記事へのコメント
■アクウギャレットのEEPROMを書き換えてみる
海外からお取り寄せしてみたアクウギャレットが届いたんですが・・・起動してみてビックリ.やべえ,これ海外版じゃん!うわぁ,説明見落としてたよ・・・(;´Д`)
海外版はタイトルがエアギャレットなんですねー.へー.
・・・いやそんなことよりリージョン設定とかどうなってんだろうこの基板 (;´Д`).さっそくMAMEのソースを見てみると,プログラムやデータ類はすべての地域向けで共通となっていて,リージョンはEEPROMの中に書かれた情報で切り替えているらしいです (テストモードからは書き換えられない模様).なるほど,だからROMシールが剥がれていなかったわけか(笑).
で,さらに調べてみると,EEPROMの中のリージョン情報は,たった1Byteで表現されているみたいです.ということは,EEPROMの中を何とかして1Byte書き換えれば,見た目そのままに日本語化できるのか?
というわけで,EEPROMの書き換えにチャレンジしてみることにしました.が,当然ながら,EEPROMはこんな感じで基板に直付けされています.シリアルROMなので,うちの機材では読み書きできないし,できることなら基板からひっぺがしたりもしたくありません.
じゃあどうするか.EEPROMは,ゲームの設定を保持したりするのに使われています.ということは,ゲームのプログラム側からは好きなように読み書きできるはず.そこで,ゲーム側のプログラムにパッチを当てて,プログラム側からEEPROMの値を書き換えることにしましょう.プログラム中のどこかに,テストモードで設定した値を書き戻す処理があるはずです.ここをいじって,リージョン情報を無理矢理元の値と違う値に書き換えようという作戦.
ウォッチポイントを張って最初の文章で「KOREA」という文字列にアクセスしているところを割り出し,そこから逆に辿ったら,RAM上のリージョン情報 (というかEEPROMの中身丸ごと) の格納位置が見つかりました.設定を保存する前に,どこかでここのリージョン情報を上書きしてやればよさそうです.
プログラムの改造に先だって,プログラムを適当にいじってみたら,起動時のROMチェックでエラーが出て上がらなくなってしまいました.ちゃんと見てるのかー.くそー.というわけで,適当なROM上のアドレスにウォッチポイントを張って,エラー判定している所を探し出し,そこの分岐命令を潰して回避.よしよし.
続いてメインの方に.よく見ると,最初の方に,変なリージョン情報がEEPROMから読めた場合は,強制的にメモリ上の値を0 (日本版) にするという処理がありました.これはそのまま使えそうですw.試しに条件分岐を潰してみたら,見事に日本語版として動作するようになりましたw.ただし,この状態でテストモードに入って変更を保存しても,EEPROM上の値は書き換わらないようです.
原因を調べてみたら,テストモードで設定をいじる際,律儀に一度EEPROMの値を読み直していました.残念ながら,こっちには,読み出したリージョン情報のチェックはないようなので,EEPROMから読み直す処理自体をすっ飛ばすことにします.どうせ最初に読んだ値と同じに決まってるし.これでEEPROMの中のリージョン情報をデフォルト値に書き換えられるはずです.
というわけで,実機で実験.これらの変更を適用したプログラムROMを作成し,差し替えて実機を起動してみました.最初にEEPROMからメモリ上に読み出した値を即座に上書きしているので,最初から日本語版で上がります.ここまでは成功です.
この状態でテストモードに入り,設定を保存.これでEEPROMの中のリージョン情報が書き換わった・・・はず.正しくできていれば,元のプログラムROMに戻しても日本語版の状態が維持されているはず・・・.逆にEEPROMの値をぶっ壊してしまったら・・・((((;゜Д゜))) ガクガクブルブル
さて,どうなるか・・・きたー!
というわけで,プログラムの改造によるEEPROMの書き換えは成功したようです.面倒だけど,これで基板を傷つけずに,任意のリージョン情報に変更可能となりました,と.いやー,今までと違うハックで,面白かったですw.
[コメントを書く]
2011年10月7日の日記の1番目の記事へのコメント
そうだったら, 海外版の説明をはっきりと伝達しないで煩わしくして申し訳ありません.
そして, 一つ質問がありますが...
私は販売とは別個で個人的に使うある余分の基板がまたあります. この基板も私がもう一つ使用中で, 同じ韓国語版なのにこれを日本語版に変える方法をもうちょっと詳しく教え受けることができますか?
(本文に指摘した通りに MAME ロムを利用して日本語版に変えることができなかったからそのまま置きました.)
はい,ご想像の通り,こちらはShinさんから購入したものです(笑)
先日はオークションと合わせて大変お世話になりました.
ありがとうございました.
アクウギャレットの件は,商品説明をきちんと読んでいなかった
僕のミスですので,Shinさんは何も悪くないです.
こちらこそすいません.
リージョンを変更する方法は,ちょっと長くなるので,後日メールします.
しばらくお待ち頂けますか?
来週くらいまでにはメールしたいと思います.
それでは来週中にメールを楽しく待ちます. よろしくお願いします. m_-_m