2013年7月5日金曜日

PCエンジンのセーブデータについて考える【第2部】

3部構成で、ここは第2部です。

第1部:バックアップ領域を増やす-天の声2を改造

・第2部:パソコンと共有-セーブデータをPCとやり取りする

第3部:BRAMの考察-セーブデータの構造を知る

.

第1部では「天の声2」を改造し、SRAMをモジュール化してPCエンジン実機でセーブデータ領域を4バンク分使えるようにしました。

ここではパソコンとデータのやり取りをするための方法を書きます。

.

第2部:パソコンと共有

PCエンジン実機とパソコンとのデータのやり取りができるメリットとしては、

・実機データのバックアップ&書き戻し

・エミュレータとの相互使用

この2点が大きいかと思います。

さっそく第1部で作ったSRAMモジュール基板を使ってパソコンとやり取りできるようにしてみます。

作ったモジュール基板はメガドライブのカセットから取り外して作ったものなので、そのままSRAMを取り外したカセットを流用します。

6116soke

モジュール基板にピンソケットを付けたのですが、そのピンアサインが6116と同じですので、メガドラカセットのSRAM(6264)を抜いた箇所へ信号線が同じになるようにピンヘッダを配線します。

Vcc(28pin)は必要無いので未接続で、追加ピンへの+5V配線(リセットIC用)はモジュール基板の+5Vピンと合わせます。

A11&A12はモジュール基板で処理してるので触る必要はありません。

PICT8595 PICT8587

出来上がるとこんな感じ。

今回はカセット上部からフラットケーブルを延長し、ピンヘッダを付けてみました。

(余ってるフラットの線は予備で延びてるだけです)

アドレスバス2本を除き、元々カセットに載ってた通りの配線になるので、動作に問題はありません。

PICT8600

カセットが作れたらデータのバックアップをしますが、ここではおなじみのSweetRammyを使います。

pcesave1

ROMがランドストーカーのままなのでAT.000000コマンドでは8KByteで認識しますが、RD.000800指定すれば2KByteのデータが取り出せます。

が、このままだと誤ってROM起動してセーブデータが壊れかねないので、折角なのでROMもRammyROM焼いたFlashROMに載せ換えて、PCエンジンセーブデータバックアップ専用カセットとしておくと後が楽です。

PICT8596 pcesave3

RammyROMを焼く際に、あらかじめ&h1BAから2Byteを上のバイナリ画像のように書き換えておくと、At.000000コマンドで2KByteで認識できるようになります。

pcesave2

これで誤って消す心配は軽減しました。

因みに、ここではメガドライブを例に作成してますが、モジュール基板自体は普通のSRAM基板なので、Kazzoや他のSRAM読み込みできるハードウェアでも読み書きは簡単だと思います。

pcesave4

で、読み込んだ4バンク分のデータ。

無事バックアップを取ることができました。

もちろん、SweetRammyを使ってこれらのデータを書き戻すことも当たり前にできます。

PICT8610

序に書くと、「天の声バンク」とこのSRAMモジュール基板があれば、メモリベース128系を除き(一部を除き一応可能-一番下に追記)、全てパソコンにデータを持ってくることが可能になります

Duo系から天の声バンクへデータをコピー、更に作ったSRAMモジュールへコピー、そしてパソコンへ・・・逆も然り。

ということで、現時点(これ書いてる時)ではこのモジュール化は個人的にかなり使える予感がしてます。

.

バックアップが無事できることを確認できたら、次はエミュレータでセーブデータが使えるか確認してみます。

ここでは「Ootake」を使います。

因みに、PCエンジンのセーブデータの呼称は「BRAM」です。

PCエンジンは2KByteの中に、容量が許す限り複数のデータが入っています。

複数のデータが入っていても、少なくともOotakeに関してはちゃんとセーブデータを読んでくれるようです。

一つのbramファイルに4タイトル分のデータがあった場合、同じファイルを4つ作成し、ファイル名だけ変えておけばOKということになります。

.

PCエンジン実機ではBRAMのサイズは2KByteですが、Ootake(PCEエミュ全般?)では8KByteです。

pcesave6

で、パソコンに取り入れたデータを見てみます。

上はスーパー桃太郎電鉄Ⅱのセーブデータで、2KByteの中に一つだけデータが入っています。

複数のデータが入っていても使えることがわかっているのですが、一応一つのセーブデータでちゃんと読み込めるか確認を。

エミュ用に8KByteにリサイズしてからでなければいけないかな?と思いつつ、データさえちゃんとしていれば動くだろう、ということで、ファイルサイズは2KByteのままでファイル名だけを変更して確認してみると、

SuperMomoDen2 - 140622_0006

問題なく読み込んでくれました。

参考:Ootakeのセーブデータファイル名=ROMファイル名_bram.dat

通常、Ootakeフォルダ直下のbramフォルダへ入れておけばOKです。

このままプレイしてセーブ処理されると、ファイルサイズは自動的に8KByteにリサイズされます。

何にしてもPCエンジン実機からバックアップしたセーブデータは特に弄る必要は無い、ということに。

実機へ書き戻しする時はサイズ調整しなければいけませんが、トリムだけなら大した手間ではないので、実質的に実機とエミュでセーブデータの両立ができることを確認できました。

.

パソコンへのバックアップ、エミュレータでのセーブデータ有効が確認できたので、第2部は終了です。

第3部ではBRAMの詳細を・・・とまでは行きませんが、2KByteの中に複数のデータが入っていた場合のデータ分割処理の事を書きたいと思います。

.

【追記:メモリベース128について】

PICT8616 PICT8602

メモリベース128(含む、光栄のセーブくん)はまともに使用したことが無かったので仕様をイマイチ理解していなかったが、少し調べてみたので、わかる範囲内だけ書いておきます。

これはSCD-ROM2以降に対応した本体とコントローラの間に取り付けるバックアップユニットで、容量は128KByte、PCエンジン標準容量(2KByte)の64倍の記憶容量を持っています。

PCエンジン上ではあくまで2Kbyte単位の管理で、バンク切り替え(0~63バンク)して使える仕様のようです。

が、「基本的にメモリベース128対応」と謳っているタイトル専用の拡張ハードで、それ以外では使えません。

「基本的に」というのは、プレイ中のセーブは無理だけど、メモリベース128に対応した一部のゲームタイトル内にあるユーティリティを使えば、「天の声」と同じように内蔵バックアップRAMとのやり取りはできる、ということです。

まず、メモリベース128に対応しているタイトル(未確認有り)

・エメラルドドラゴン

・プライベート・アイ・ドル

・マジクール

・リンダキューブ

・真・女神転生

・AⅢ

・THE ATLAS

・栄冠は君に

・蒼き狼と白き牝鹿 元朝秘史

・三国志Ⅲ

・信長の野望 全国版

・信長の野望 武将風雲録

・ファイプロ女子憧夢超女対戦 全女vsJWP

・ぽっぷるメイル

・ブランディッシュ

わかっているだけで上の15本。

ユーティリティは共通操作ではなく、ソフト独自のツールといった感じです。

以下、ウチで確認できたユーティリティの状況を。

0629162139_0 0629162139_1

ぽっぷるメイルの場合、内蔵RAMの消去はファイル単位、メモリベース128RAMの消去は基本バンク単位で、1つのセーブが2Kを超える場合はファイル単位で行われる。

っていうか、128側はバンク=ファイルの考えでよいかもしれない。

消去のみ汎用で使えるものの、データのコピーに関してはぽっぷるメイルのデータしか扱えません。

初期化コマンドは無い。

-

0629162139_4 0629162139_5

ブランディッシュの場合、メモリベース128を繋いでいると、セーブデータの保存先にメモリベース128が優先される。

初期化コマンドはあるものの、データコピーの機能は無い。

消去に関しては、メモリベース128繋げていると内蔵RAMの操作はできないが、128部のみぽっぷるメイルと同じ感じ。

-

0629162139_10 0629162139_11

0629162139_14 0629162139_15

ファイプロ女子&プライベートアイドルの場合、内蔵RAM、メモリベース128RAM共に初期化可能。

ファイプロ女子のセーブデータは1つで1.8KByteほどあるので、内蔵RAMをほぼ使い切る。

内蔵⇔128のデータのやり取りは可能だが、最初に内蔵から128へ丸ごとコピーしたデータでないと128→内蔵へは戻すことができない。

確認はしてないですが、おそらく丸ごとコピーした際にBankHeaderの値が2KByteで記録されるのだと思います。

後述するエメドラのコピーではBankHeader書き換えずに2KByte分をコピーするため、ファイプロ女子ではファイル無しの扱い(認識)になってしまう。

内蔵RAMのバックアップ媒体としての利用は一応可能。

内蔵RAMの消去は1ファイルずつできる。

-

0629162139_6 0629202413_0

AⅢのセーブはメモリベース128専用で、内蔵RAMは使えません。

一つのセーブデータの容量は24KByte、12バンク分あります。

セーブ領域が無い場合のみ、右上のユーティリティが操作できるようになります。

が、ファイルの削除のみで、メモリベース128の初期化すらできません。

-

0629162139_8 0629162139_9

アトラスのセーブもAⅢと同じくメモリベース128専用です。

1つのセーブで16KByteを2つ(データとマップ)、計32Kbyte使用します。

使用サイズがAⅢより多いためか、メニューでメモリベースを選択でき、ファイルの削除と初期化が選べます。

専用なので、当然内蔵RAMに関しては全く触れません。

-

0629162139_2 0629162139_3

0629162139_12 0629162139_13

エメラルドドラゴンとリンダキューブ、この2つのユーティリティは上で記載したゲームと違い、「ゲーム起動時に、上キーを押しながらRUNボタンで起動」することでユーティリティが起動します。

ユーティリティの見た目は違いますが、できること&操作は同じです。

内蔵RAMの初期化&ファイル単位の削除はできないものの、128の初期化、各バンクの削除、内蔵⇔128のバンク選択してコピー及び交換ができますので、ほぼ「天の声」と同じ機能(容量は天の声8枚分)が備わっていると思います。

強いて言うなら、このユーティリティではAⅢやアトラスなどの、2KByteを越えるデータを扱えない(表示されない)、といったところでしょうか。

それらの使用されているバンクは(おそらく)変更できないと思うのですが、この辺りは詳しく調べていません。

(AⅢなどのデータがあると使用できるバンク数は確実に減る)

-

PICT8656

【追記】「栄冠は君に」がオフで100円だったからゲットした・・・けど、取説に書いてあるようにMB128(セーブくん)専用なので、内蔵RAMは一切触れない=使えない、ということに。

-

以上のことから、メモリベース128を使用できない、HuカードやCD-ROM2などのデータのバックアップを主として使うのであれば、エメドラとリンダキューブがベストではないか、ということで。

残念ながら光栄ものとマジクール、真・女神転生は持ってないので試せませんでしたが、参考になれば。

0 件のコメント: