2009年10月9日の日記の2番目の記事へのコメント

CPS2の妄想

2chのスレでのCPS2の電池レス化の話を見て思いついた話.うちのヴァンパイアセイヴァー2は,プログラムROMの中身をすべてデコードし,電池が無い状態でも動くようにして復活させました.このような復活のさせ方をした場合,アドレスレジスタによる間接参照以外でROMを読み出した際のレイテンシが小さくなってしまうかもしれないため,意図的にやらせていないものについては処理落ちの仕方が変わってしまうかもしれないという懸念がありました (実際に検証していないので,これも都市伝説の可能性もありますが).

これに対し,暗号化キーが生きている別のゲームのROMボードを利用して復活させた場合,上記の懸念事項は回避できるのではないかと思われます.例えば以下のようにやる感じで.

  1. 電池切れしたゲームとROMのエンコード範囲が同じROMボードを用意する (例: セイヴァー2の場合,エンコード範囲は 0x000000 から 0x100000 までなので,同じ範囲がエンコードされているストゼロ2などを用意する)
  2. 電池切れしたゲームのプログラムROMのエンコードされている部分をすべてデコードする (メモリアクセス先の変更は行わない)
  3. デコードしたプログラムROM中のウォッチドッグ命令を,別途用意したROMボードのウォッチドッグ命令に書き換える (例: セイヴァー2をストゼロ2を使って復活させる場合,「cmpi.l #$06920760,D0 」を「cmpi.l #$30399783,D0」に置き換える)
  4. デコードしたプログラムROM上の,元々エンコードされていた部分を,別途用意したROMボードのキーで再度エンコードする (例: セイヴァー2をストゼロ2を使って復活させる場合,0x83f47e99,0xda772111 でエンコードする)
  5. 別途用意したROMボードから既存のROMを全部抜いて,先ほど再エンコードしたデータを焼いたEPROMを差し,残りの部分には元のボードから抜いたROMを移植する (例: セイヴァー2をストゼロ2を使って復活させる場合,ROM3とROM4については先ほど再エンコードしたものを焼いたものを移植し,それ以外についてはマスクROMも含めて全部元の基板のものを移植する)

この場合,移植先のボードの方の電池は生きたまま運用することになるので電池レスにはなりませんが,デコード処理はキーに依存しないはずなので,電池切れする前と同一のタイミングで動作するようになるのではないかと思われます (デコード処理の有無がゲームの実行速度に影響するのであれば,ですが).

あ,でもウォッチドッグの命令が全然違うとサイクル数がずれてやっぱり処理のタイミングがちょっとだけ変わっちゃったりするのかも?いや,そもそもROM抜いた瞬間に電池死んだりする仕掛けがあったりするとアウトかw.怖くて試せねーw

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

2009年10月9日の日記の2番目の記事へのコメント

中の人情報

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

カレンダー

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

過去ログ