開始日 2006/11/30(Thu)
  公開日 2006/12/23(Sat)
最終更新日 2007/01/21(Sun)



PS3用 メモリーカードアダプタを PCにつなぐ

■きっかけ
プレイステーション3(以下 PS3)用周辺機器として 2006/11/11に同時発売された
  「メモリーカードアダプタ」は
プレイステーション(以下 PS)用メモリーカード(ポケットステーション)および
プレイステーション2(以下 PS2)用メモリーカードのセーブデータを PS3内の HDD (仮想メモリーカード)へコピーする為のものです。 しかも PS3とは USBで接続するので一般のパソコンに繋ぐことも可能です。

「もしかしたらパソコンから PS/PS2用メモリーカードが読み書きできるようになるかもしれない、 できなくても希望小売価格 \1,500円(税込)ととても安く損は少ない。」
と考え、発売日に早速購入してきました。

■結論
メモリーカードアダプタのデバイスドライバとして 汎用USBドライバ UUSBD(製作者:柏野政弘さん) を利用しました。
2006/11/16(Thu)、PS用メモリーカードの読み書きに成功しました。よって、

    PS3からメモリーカードに書き込めないのはアダプタ側の制限ではなく、 PS3側に掛けられた制限です(PS3の戦略上そうしている?)。
PS2用メモリーカードについては 2006/11/26(Sun)、「認証」を  アダプタ以外で実施 した状態での読み込み実験に成功しました(原理上、 書き込みにも自信があります)。

■今後
PS2用メモリーカードについては「認証」が壁なのですが、メモリーカードアダプタを PS3と繋いで使う際にアダプタ内のマイコン と PS3本体 のどちらが主体で認証 処理をやっているかがまだ判明してません(主な理由は PS3 を持ってないから!)。

前者〜マイコンがやっている(PS3は Openコマンド送っているだけ)〜なら、PCとアダプタだけで 読み書きできるようになるでしょう。
後者〜 PS3本体が認証用の通信データを生成する:私ならセキュリティ上、こちらの方法を とります〜ならお手上げで、自分の技術では今のところ MC2F の方法を使うしかありません。
つまり、PS2用メモリーカードを改造するか、メモリーカードアダプタと PS2用メモリー カードの間に挟む追加アダプタを製作する必要があります(そして、認証してもらうための PS2本体が必要)。

どちらがやっているか PS3本体なしの状況でこれ以上調べるのは無駄が多く、難易度も 高いので中断しました。

評価用のソフトとして作成した MCRWwin.EXE を公開します。


MCRWwin.EXE:プレイステーション用メモリーカード読み書き

PS3用メモリーカードアダプタで PS用メモリーカードの読み書き実験に成功しました。
私は PS用メモリーカードについては
NVM をメインに使うのですが、EZ-USB版メモリーカード読み書きの 評価にも使えると思い、それなりの機能がついたプログラムを作りました。

■機能と特徴
MCRWwin.EXE(以下 MCRWwin) は WindowsPCで、 PS用メモリーカード及びポケットステーション(以下 ポケステ)のセーブデータを 読み書きするソフトです。 現在動作確認済なのは 純正PS用メモリーカード及び ポケットステーションです。
認証作業が必要なため、PS2用メモリーカードについては、 今のところ刺さったことは判定しますが読み込み書き込みの両方ともに対応していません。

特徴としては

  1. メモリーカードをつなぐハード部とのインターフェースを DLL で提供
    同じ仕様の DLL を製作すれば既存の読み書き用ハードを流用することができます。
    逆に DLLだけを使って別の読み書きソフトを作ることができます。
    (MCRWwin 自体は出来が悪いです。)

    I/FをDLL化するアイデアは ザイリンクスでいこう の JTAGドライバDLL を真似させてもらいました。

  2. PS3用周辺機器のメモリーカードアダプタ を使用することで工作が一切不要
    今回、メモリーカードアダプタ 用の DLLが付属しています。

  3. (欠点かも)2種類のPC(パソコン)上のセーブデータフォーマット
    メモリーカード全体を丸々ファイル化する イメージファイル (ファイルサイズが128KB)なら 他のメモリーカード読み書きソフトと互換性があると思います。
    ゲーム個別のフォーマットは独自(データ本体の後にフッタが付く)なので、互換性がありません。
    自作ソフトとの連携もあり(1995年からずっと通して使っている)、変更予定はありません。

  4. イメージファイルモード
    メモリーカード読み書き機器がなくてもメモリーカードの イメージファイル を編集 することが可能です。 アイコンアニメを眺めるだけかもしれませんが。


■バージョンアップ履歴
開発・テスト環境は本ページ最後のほうに書いてあります。

    2006/12/23 MCRWwin.EXE Ver. 1.0
      公開
    2007/01/17 MCRWwin.EXE Ver. 1.10

ダウンロード
MCRWwin.EXEメモリーカードアダプタ用DLL のセットは ここからVer. 1.10 約91KB)。

カメレオンUSB/EZ-USB 用の DLLが必要な人は こちらのページから
 この場合は、メモリーカードアダプタ や UUSBDドライバは使いません。

イメージファイルのサンプルは ここから ダウンロードできます(約22KB)。

■注意事項

メモリーカードアダプタを使う場合
使用する I/F DLL は MCRWDLL.dll になります(MCRWwin.EXE バイナリに同梱)。
但し、メモリーカードアダプタのデバイスドライバとして
 汎用USBドライバ UUSBD(製作者:柏野政弘さん) が必要です。
UUSBD 関係のファイルは別途用意してください。 デバイスドライバのインストール作業も必要です。
 ※イメージファイルモード では UUSBD やメモリーカードアダプタ自体 不要です。

カメレオンUSB/EZ-USB を使う場合
メモリーカードを接続する I/F回路を自分で工作する必要があります。
使用する I/F DLL は MCRWDLL_CH.dll または MCRWDLL_CS.dll になります。
デバイスドライバは UUSBD ではなく、Cypress社提供のものになります。
I/Fの作り方、DLLの入手は こちらのページ を見てください。

その他
あなたのメモリーカード・セーブデータ・PCその他に不具合が発生しても私は責任を負えません。
自己責任での利用をお願いします。

まず、イメージファイルモードか、壊してもいいセーブデータの入ったメモリーカードで練習して使い方(MCRWwin の動作)に慣れる事をお勧めします。

 UUSBDの著作権は柏野さんにあること、UUSBDの利用条件で指定されていますので MCRWwin.EXE 及び MCRWDLL.dll は個人的な利用に留めてください。 商用利用はできません。
UUSBDに依存しない I/F DLL と MCRWwin.EXE を組み合わせて使用する場合も同様とします。
MCRWwin.EXE 及び MCRWDLL.dll MCRWDLL.h MCRWmaster.c の著作権は当方(シバ某)にあります。

■準備その1:用意するもの
以下、一番お手軽な、メモリーカードアダプタを使う場合について説明します。

メモリーカードアダプター
型番 CECHZM1J (箱のどこにも型番が表示されていませんが)
USBケーブル
メモリーカードアダプタ側のコネクタは Mini-B タイプです。
私の様に PS3本体を買わなかった人は別途用意する必要があります
(PS3 本体を買うとそちらにケーブルが付属しています)。

UUSBDドライバ
柏野政弘さん製作の 汎用USBデバイスドライバ です。
私は 「USBターゲット機器開発のすべて」 の付録CD-ROMに収録されたものを使いました(uusbdv13.lzh)。
この本には柏野さん自ら書かれた UUSBD の使用方法の記事も載っています(12章)。

インターネットからは「ガジマルの森」 の ”USB開発者注目” を選んで先に進むとダウンロード画面があります。
但し uusbdv10.zip / uusbdv20beta.zip の2種類しかなく uusbdv13.lzh がありません。
1.3/2.0βで追加された機能は使用してないので uusbdv10.zip で動くと思います
 → Windows98SE と uusbdv10.zip の組み合わせでも動きました。
 イメージファイルモードだけで使うなら上記の3つは不要です。

■準備その2:デバイスドライバ(UUSBD)のインストール
ここもメモリーカードアダプタを使用する場合の説明です。
カメレオンUSB/EZ-USB の人はカメレオンUSB開発元の オプティマイズさんのページへどうぞ。
また、イメージファイルモードだけで使うなら丸々飛ばして構いません。

メモリーカードアダプタを PCに接続する前に以下の作業を行ってください。
Windows XP Home の場合の手順です。Windows 98 / 2000 ではテストしていません。
【追記】Windows98SE でも同じ手順でいけました。

  1. UUSBD のファイル群から uusbd.sys と uusbd.inf を同じディレクトリにコピーします。
    【追記】解凍ファイルの 〜\SETUP\ ディレクトリ にあるものを使います。

  2. テキストエディタを使って uusbd.inf にメモリーカードアダプタの機器情報を追加します(2箇所)。
      [Kashiwano] セクション(大体30行目)に以下の1行を追加
    %USB\VID_054C&PID_02EA.DeviceDesc%=UUSBD.Dev, USB\VID_054C&PID_02EA

      [Strings] セクション(ファイル末尾) に以下の1行を追加
    USB\VID_054C&PID_02EA.DeviceDesc="MemoryCardAdaptor with uusbd Driver"

    全部半角文字です。ピリオドに注意してください(コピペするのが確実)。
     【追記】"USB" の後の半角¥(円記号)にも注意。

  3. 以上の準備ができたらここで初めて メモリーカードアダプタを PCに接続します。
    ドライバインストール Wizardが出るので、 編集した uusbd.inf のディレクトリを指定して 先に進み、成功すれば完了です。
     【追記】 Windows98SE ではディレクトリ指定後、エラーが一回出ましたがそのまま OK を 押したら続きを実行して成功しました。

  4. MCRWwin.EXE と同じディレクトリに MCRWdll.dll(今あるのはメモリーカードアダプタ用 )と UUSBD から uusbd.dll をおいてください。
     【追記】uusbd.dll は解凍ファイルの〜\LIB\ ディレクトリ にあるものを使います。
【メモ】
インストール後は私の環境(XP)ではメモリーカードアダプタを PCに接続すると、タスクバー右下に 「ハードウェアの安全な取り外し」アイコンが登場するようになります。
メモリーカードアダプタを PCから外す際はこのアイコンから操作してください。
この手順を踏まずにいきなりアダプタを外すとPCが不安定になる恐れがあります。

タスクバーにアイコンが出ない PC(OS)でのアダプタを外す際の正しい手順は UUSBDに詳しくないので説明できませんが、少なくとも MCRWwin を終了させた状態で行ってください。
 【追記】Windows98SE ではアイコンが出ませんでした。  

■MCRWwin の 使い方
・通常(MCRW)モード で起動する場合
 MCRWモードとは実際に PS用メモリーカードの実物を読み書きするモードです。

  1. メモリーカードアダプタを PCに接続する。
  2. メモリーカードをメモリーカードアダプタに刺し込む。
  3. MCRWwin.EXE を実行する。
     左下に大きく "MCRW" と表示されていれば OKです。

    一応、MCRWwin 起動後にもメモリーカードを抜き刺しできるようにしたつもりですが 読み書き中に抜いたら駄目です(最悪メモリーカード内のセーブデータが破壊されます)。
    よく分からなければ
     ・メモリーカードをアダプタに刺すのは MCRWwin の起動前、
     ・メモリーカードを抜くのは MCRWwin の終了後
    にしてください。

【注意】
メモリーカードアダプタを使う場合はこの手順でOKですが、今後発表予定の EZ-USB/カメレオンUSB 用の DLLを使う場合、ファームウエアをダウン ロードさせる為に最初の1回だけメモリーカードを刺さずに起動する必要があります。 こちらのページも読んでください。
メモリーカードが刺さっていると、図1の様に画面右側のテキスト窓に「〜を認識しました」 と出て左側にセーブデータのアイコンが表示されます。
アイコン表示はプレイステーション実機を真似てブロック順序が左下から右上に蛇行している ので注意してください。


図1 MCRWモードで起動 + LIST押した例
(Ver. 1.0 のもの)


・イメージファイルモードで起動する場合
イメージファイルモードとはメモリーカードの イメージファイル を相手に操作するモードです。
UUSBDドライバをインストールしていなくても使えます。
他の Windows用メモリーカード読み書きグッズは市販・フリー含めて持っていないのでフォー マットをよく知らないのですが、ファイルサイズが128KB(131,072byte)のものなら使えると思います。

メモリーカードアダプタを PCに接続せずに MCRWwin.EXE を起動すると警告ダイアログが 出ますが、これを 何度か OK を押していき、Window左下に大きく"イメージファイルモード" と表示されていれば OKです。
起動時に "PS.mem" という名前のイメージファイルを読み込みます(図2)。

意図せず、イメージファイルモードに入ってしまう場合は、以下のチェックをしてみてください。

  1. I/F(アダプタ等のハード) を接続していますか?
    しているなら I/F を一旦 PCから外し、接続し直してみてください。
  2. 必要な DLLは用意していますか? デバイスドライバはインストールしましたか?
  3. MCRWwin.ini の DLLファイル指定が目的の I/Fの組み合わせと一致していますか?
【注意】
MCRWwin のイメージファイルモードにおいてセーブデータ個別の操作をしても PS.mem は 更新されません。 編集結果をイメージファイルとして残すには File(VM) メニューから Write(VM->File) で書き出す必要があります。
この際、既存の PS.mem に上書きすることになるので注意してください。

図2 イメージファイルモードで起動した例
(Ver. 1.0 のもの)

・メニュー
 "NVM" や "VM" は無視してください(winNVM の画面設計を再利用しているため)
 イメージファイルモードでは "NVM Run" "Stop" は無意味です。

NVM Run
刺さっているメモリーカードの種類を表示します。
Stop でメモリーカードアクセスを停止させた状態ではメモリーカードを刺しても反映されないので、これを押してください。
 ※通常状態ではタイマーを使って自動的にメモリーカードの付け外しを検知します。
Stop
タイマーで周期的に行っているメモリーカード検知を停止します。
メモリーカードの抜き刺しがより安全に行えます。
 "NVM Run" もしくはメモリーカードを読み書きする操作でタイマーは復活します。
His
プログラムのバージョンと利用しているメモリーカード読み書きDLLの情報を表示します。
LIST
セーブデータがあれば、そのタイトルリストを右のテキスト枠に表示します。
先頭の数字はそのセーブデータの先頭ブロック番号です。
キーボードのシフトキーを押しながらクリックするとプレステが管理している、 セーブデータの本当のファイル名も合わせて表示されます。
File(VM)
メモリーカード丸ごと単位(128KB)での操作を行います。
Write
メモリーカード(イメージ)から 固定ファイル名 "PS.mem" へのファイル化
Read
PCのファイル(ファイル選択可)からメモリーカード(イメージ)への丸ごと書き込み

私の環境ではメモリーカードアダプタ + ポケステの組み合わせだと
Write(メモカから読み出し) は10秒、 Read(メモカへ書き込み)は42秒 かかります
Clear
メモリーカード(イメージ)全体のセーブデータを削除します。
元に戻す機能はないので操作には注意してください。
ポケステ
なにもしません。
mode
なにもしません。
MES消去
画面右側のテキスト枠の表示を全部消します。

・ゲーム個別のセーブデータ管理
画面左側のアイコンにマウスカーソルを合わせて右クリックでメニューが現れます。
濃い灰色の四角は 空きブロック を意味します。
情報(I)
セーブデータの先頭ブロック番号、タイトルを表示します。
Save[->File](S)
メモリーカードを読み込んで PCの方にセーブします(空きブロックでは選択できません)。
次の画面でファイル名を選択 or 入力します。
複数ブロック使うデータの場合、どのアイコンを選んでも OKですが本当に目的のデータか 注意してください。
Load[File->](L)
PCのファイルをメモリーカードの方に書き込みます(既にセーブデータのある ブロックでは選択できません)。 次の画面でファイル名を選択 or 入力してください。
選択できるファイルは Save で作成した形式のものだけです(128KB のイメージファイルは 不可)。 複数ブロック使うサイズの場合、選んだブロックを先頭として連続して空いて いる必要があります(単に手抜き)。 また、既に同名のファイル名(プレイステーションが管理している方) がある場合でも無視して書き込んでしまいますから注意してください (同。確認するならメニューの LIST をシフトキーを押しながらクリック で表示されます)。
尚、エクスプローラーからセーブデータファイルを空きアイコン位置にドラッグ&ドロップしても Load操作になります。
【注意】
本物のメモリーカードに対して操作する場合、
  ”セーブデータ[ファイル名] のロードに成功しました”
のメッセージが表示されるまで(メモリーカードへの書き込みが終わるまで)待ってください。
・終わり方
一般のソフトと違い、「ファイル」の中に終了メニューはありません。
右上の×ボタンを使ってください。

■アンインストール方法
 MCRWwin.EXE はレジストリを使用しません。DLLと一緒にファイルを削除するだけでOKです。
UUSBDデバイスドライバの削除は、デバイスマネージャから行ってください。
ただ、HDD容量を圧迫するサイズではないのでドライバを削除する必要性は薄いです。
メモリーカードアダプタを使用する別のソフトが登場した場合は別ですが。

■開発・動作テスト環境
PC
Gateway GT4012j (CPU AMD 64 X2 3800+ MEMORY 1GB WindowsXP HOME SP2)
本PC、画面サイズ 1280x1024 32bitCOLOR で画面設計してます

SOTEC M350V (CPU PenIII 500MHz MEMORY 128MB Windows98SE) でも動作しました。

コンパイラ
BorlandC++ 5.51(無料版)
メモリーカード
SCPH-1020 1995年購入
SCPH-4000 ポケットステーション クリスタル 1999年購入
 メモリーカードアダプタのデバイスドライバとして汎用USBドライバ UUSBD を
 利用させて頂きました。 製作者の柏野政弘さん、ありがとうございます。


以上。

■修正履歴
2007/01/21(Sun)
MCRWwin.EXE を Ver1.10 に
カメレオンUSB/EZ-USB 対応、Windows98SEにおける文章追加