2011年10月17日から2011年10月13日までの日記を表示中

2011年10月17日 (月)

荷物

ものすごいでっかい箱が届きましたw (手前のCPS2のROMは大きさの比較用)

でかい箱

中身は相乗りして買った色々な人の基板w.他の人のものはマニアックすぎて全然わかりません・・・.

よく知らない基板

これが超でかいせいで,あの巨大な箱になったわけか・・・w.というか,これを秋葉原に持って行かなければならんのかw

超でかい基板

自分のはこのMVS 1本だけw

自分の分

ビスコのGOAL!GOAL!GOAL!です.

GOAL!GOAL!GOAL!

まあ,サッカーゲームなわけですがw

プレイデモ

このタイトル,少なくとも業務用については国内販売されなかったってことでいいのかな.ビスコは他にもそういうのが多くてなかなか険しいですね・・・.もちろん,日本版のBIOSのマザーボードでは日本語のメッセージが出ます.

チュートリアル

あと,ロボアーミー.昨日突然送られてきましたw.ありがとうございます.

ロボアーミー

何で車に変身するのかがよくわからないですね・・・w

プレイデモ

[コメントを書く]

マウス腰腰 2011/10/22(土) 23:54:58
ゴールゴールあったんですか、、、僕もちょっとそれ欲しいんですよね、、、
nosuke 2011/10/28(金) 01:22:56
サッカーゲームは日本で出てないやつが結構あるみたいですね.
Pleasure Goalも日本だとNEOGEO CDでしか出ていないみたいで,
これまた入手難な感じですw

2011年10月16日 (日)

スパIIX 電池レス化

さらにスパIIXの電池レス化を進めています.命令とデータの切り分けは,1個目のROMが細々としていて地獄でしたが,後の方のROMに行くに連れて次第にデータ領域が増え,徐々に楽になりました.まさに渋滞を抜けるような感覚w.まあそれでも境界のチェックは非常に手間でしたが・・・.

で,何とか6個目までデータ領域の抽出が終わったので,今度はプログラム自体の改修を行います.ここでは,メモリとして0xfffff0より後ろの領域を読み書きしないようにするのと,0x400000からの16Byteくらいに配置されているレジスタへのアクセスを0xfffff0からの16Byteに移す修正を行います.

0xfffff0は,メモリの後ろの方なので,メモリの初期化やチェックで読み書きされるケースと,スタックとして使われるケースが考えられます.メモリの初期化やチェックの処理はすぐにみつかり,カウンタの初期値を減らすことであっさり回避できました.

一方,スタックについては,スパIIXではSSPがこの領域を使うようになっていました.まあ普通に動いている間はSSPなんて使わないだろうと思っていたんですが,起動直後にわざとトラップを発生させて例外処理とかやりまくっているため,普通に対処が必要なことが判明.対処は,SSPの初期値を0から0xfffff0にずらせばいいだけなので,0番地に0xfffff0と書いて修正完了・・・と思いきや,しばらく動かすといつの間にか0xfffff0より後ろが使われるようになりますね・・・.おかしい・・・と思って逆アセンブル結果を読み返したら,何か例外処理の中でわざわざA7に0を書き直す処理をやっていました.くそー.ここを0xfff0に書き換えて今度こそ修正完了.ふぅ.

これでようやく起動シーケンスを抜けるようにはなったんですが,ちょっと動いてはすぐに例外が発生してリセット の繰り返しで,なかなかタイトル画面まで到達してくれません.まあでも,トレースの取り方を覚えたお陰で,解析が非常に楽にはなりました(笑).セイヴァー2のときもこれを知っていればもっと楽だったんだろうなぁ・・・w.結構範囲の指定間違いや見落としなんかが見つかりました.やはり怪しいところは,復号化した方からJMPやRTSを探してチェックする必要がありそうですね.うーむ,ツールに逆アセンブラ組み込めないかなぁ・・・.

まあ,そんなこんなで,最初のリュウとケンが戦って,その後乱入があってフェイロンが選ばれるあたりまでは進むようになりました.ホンコンにステージが切り替わる瞬間にリセットがかかるんで,まだまだ先は長そうですが,サクッと終わらせたいですねー.そして,今回の経験で新たに得たことを忘れないうちにツールに組み込んで,さらにもう少し楽にやれるようにしたいなぁとw.手元には電池が切れてるタイトルが,まだ他にもまだ数本あるので・・・.

しかしスパIIXは先頭4MByteが全部暗号化対象なんですよねー.最後の1MByteは多分全部データなのでそのままでよさそうですが,それでも実機で動かす際はEPROMを6個も焼かなければならないというのが何とも・・・w

2011年10月15日 (土)

秋葉原

昼間は昨日から始めたスパIIXの電池レス化作業の続きを実施.プログラムとデータがちょこちょこ入り組んでいて,頭が痛くなりそうです.ただ,ツールがそれなりに機能してくれて,ぱっと見だと見落としそうな命令やデータの存在を教えてくれるのがありがたい感じ.

で,夕方からは秋葉原に行ってきました.ラーメン食べたい病が発症していたので,千石に行ってマックジャパンに行った後は,影武者で朝・昼・晩ご飯を兼ねた油そばを注文.うむ,満足.影武者の油そばは,何となくポクポクポクチンの変なメニュー (闇ポクとか) を思い出しますw

油そば

影武者の後は,トラタワへ移動.相変わらずこの時間の8Fは人が多い・・・w.今日はマイコンソフトの中の人もお仕事でいらしていましたw.基板を見ながらお話ししたり,取り置きをお願いしていた基板とかを購入した後は,7Fに移動.さっきご飯を食べたばかりなので,飲みはパスして軽く遊んでから撤収しました.虫姫さま1.5は初クリアです.やっぱ無印よりだいぶ簡単になってるんですかねw.

虫姫さま1.5クリア

スコアは気にしないw

あと何かと話題のゲットスターも遊んでみました(笑).雰囲気的にはファミコンの凡作っぽい感じですね・・・w.1位のスコア結構すごいなーと思ってゲームオーバー後のネームエントリを見てみたらニチブツくんでした(笑)

ゲットスター

2011年10月14日 (金)

スパIIX電池レス化

ドイさんがCPS2の電池レス化に挑戦し始めたのを見ていたら,自分も再度挑んでみたくなり,以前より考えていた補助ツールを作成して参戦してみることにしました.

補助ツールと言っても大したものではなく,バイナリを16Byte単位で見て,それが命令かデータかを推定するだけのものです.推定の判断基準は,16進数表示した際の「0」の数とか,ASCIIコード範囲の値の出現率とか,同じ数値の出現率とかそういうの.

前にもどっかで書きましたが,CPS2のプログラムは,命令として実行される部分が暗号化された状態でROMに書き込まれています (というか,命令としてROMにアクセスした場合に,読み出した値を復号化し,それ以外の場合には読み出した値そのものを使うようになっている).電池が切れると,復号キーや復号範囲も消えてしまうため,この状態で無理矢理ゲームを動かすには,ROM上の命令部分のみを復号化してあげなければなりません.

復号化のルーチン自体は,既に海外の凄い人が解析していて,MAMEなどにも組み込まれていますが,どこが命令として実行され,どこがデータとして読み出される領域なのかは,実際にプログラムを動かしてみないとわからない部分があるため,静的な情報は存在していないようです.

そこで,CPS2の電池レス化は「どこが命令でどこがデータなのかを明確に切り分ける」という作業を最初に行うことになります (細かいことを言うと,ROMチェックの処理では命令部分をデータとして読み出したりもするはずなので,理論上明確に定まらない部分があったりもするのですが・・・).前置きが長くなりましたが,今回作った補助ツールは,それをある程度自動で推定してくれるものになります.

CPS2のプログラムの暗号化処理は結構気合いが入った処理をしているお陰で,暗号化された状態の命令部分は非常にランダム性が高くなります.一方で,これを復号化した場合,68000の機械語の羅列になるので,同じような16進数が何度も出て来たり,ゼロが多数出現したりするようになり,ランダム性が大幅に低下します.また,データ領域は最初から暗号化されていないため,同じ数が何度も続いたり,ASCIIな値が並んでいたりと,元々規則性が高い状態となっており,逆にこれを無理矢理復号化すると,非常にランダム性が高い状態となります.

そんなわけで,プログラムを逆アセンブルしたり,実行時のトレースを利用したりしなくても,まったく復号化していない状態においてランダム性の低いデータの並びを示している部分がデータ領域で,逆に全体を復号化した際にランダム性の低いデータの並びとなっている部分が命令部分という風に,それなりに領域を推定できることになります.補助ツールでは,この特性を利用して命令とデータの境界を大雑把に推定します.

まあ,理屈はこんな感じなんですが,実際にこれがうまく機能するのか,ひとまず,推定の条件を適当に決めて,以前手作業で電池レス化を済ませたヴァンパイアセイヴァー2のプログラムROMを入力して確認してみました.結果,前の方の数領域に関して,見事に実際の境界と同じところが抽出できました.ふむ,これはなかなか使えそうです.

それでは次に,未知のプログラムに対して適用してみたいと思います.今回対象とするのはスパIIX.某キッチン戦士が電池交換をミスって電池切れさせちゃったやつです.

電池切れスパIIX

開けてみたところ,交換した電池がついたままの状態でした.あー,この交換方式は,美しいんですが,失敗する可能性が・・・.

電池が残っていた

一応念のため,電池切れチェッカーを動かしてみましたが,やっぱり電池切れでしたw

死亡確認w

というわけで,補助ツールを使っての電池レス化を開始・・・.って,スパIIXは先頭の4MByteが暗号化対象範囲なのかよ・・・.広いだろ(;´Д`).しかもROMの中身を見ると,先頭3MByteくらいまでは命令が入ってるっぽいし.ヴァンパイアセイヴァー2よりはるかに大変そうですなこりゃ・・・.今週末で終わるかな・・・.

[コメントを書く]

Doi 2011/10/19(水) 01:28:22
CPS2の電池レス化って傍から見ると格好良いですが
やる事って凄い地味ですね・・・遠い目

とりあえず、自分はココら辺りは絶対に大丈夫と言う
文字が並んでるデータ部意外は、動いてる状態でWP READ仕掛けて
読み込んだ部分を抽出する方法でやって見たいとおもいます。

2011年10月13日 (木)

板来来

探していた1枚が手に入りました.ドラマティックアドベンチャークイズ キース&ルーシィ.

キース&ルーシィ

まあ,中身は料理王みたいにぶっ飛んでいない,割と普通のクイズゲームですw.全然見掛けない割にはあんまり高くなかったので助かりました (それでもクイズとしてはだいぶ高かったけど・・・)

プレイデモ

あと,G-NETのBIOSアップデート用のROMもようやく入手w.

G-NETのアップデート用ROM (多分)

2011年10月17日から2011年10月13日までの日記を表示中

中の人情報

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

カレンダー

2011年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件のコメント

過去ログ