もはや書き直す時間が見つからないので、 とりあえず現状そのままのtxtを公開しておきます。 十-----------------------------------------------------------------十 | | | DC用ゲーム バックアップ マニュアル parallel版 | | | 十-----------------------------------------------------------------十 マニュアル編 1.条件 ・PCはATマシンである事。(ハードを直に叩く為。) ・OSはWin98などの9x系である事。 ・PC側にパラレルポート必須 ・パラレルポートは、EPPか、bi-directionの双方向モードを持っている事 ・DCはMILCD対応である事 2.吸い出し まずはDCPPRIPを、http://f17.aaa.livedoor.jp/~takotako/index.php よりDLする。 ディレクトリはC:\dcrip(ディレクトリが理解できる人は、好きな所へ) DCのシリアルポートに改造を施す。 基本的な回路は、次の通り。 parallel port DC Serial Port __-- ̄| 100Ω | 1|-STB--VVV-------十 NC|14 2|-D0---VVV-----十| /---十 NC|15 3|-D1---VVV---十|| | 1 |NC NC|16 4|-D2---VVV-十||| | 2 |NC NC|17 5|NC |||| | 3 |--十 十-|18 6|NC |||十十-------| 4 | | 十-|19 7|NC ||十-----------| 5 | | 十-|20 8|NC |十-------------| 6 | | 十-|21 9|NC 十---------------| 7 | | 十-|22 10|NC | | 8 |--十 十-|23 11|NC | | 9 |NC| 十-|24 12|NC 十-VVV---|10 | | 十-|25 13|NC 1.5KΩ \---十 | |  ̄--__| | | | | | | 十--------十------------GND------------十-------十 パラレルポートはオス(端子)表側。 DCは本体表側。 3.吸い出し !:注意。パラレルポートとシリアルポートをつなげる時、一番最初に DCの電源を最初に入れてからつながないと、DCが起動しない。 まずは、dcpprip\dcディレクトリのツールを焼いてDCで起動してください。 焼き方に関してはをご覧ください。 準備が整ったら吸い出しへ。 MS-DOSプロンプトを起動し、 [スタート]-[プログラム]-[MS-DOSプロンプト] C:\Windows> と出たら、 C:\Windows>cd C:\dcrip そしてEnterを押す(以下、「Enter」と省略。)。 GD-ROMの場合は、 C:\dcrip>dcpprip 「Enter」 これで後は待つのみ。 ちなみに、吸い出した後は「DC バックアップマニュアル Serial版」 をご覧ください。 4.ハードウェア製作時の注意 詳しい理由は下のレポート編や、技術書をご覧ください。 (これらは絶対ではありません。) a.信号線はGNDとの対撚り線にする。その時、割合は1対1にする。 b.GNDは、出来たら太くする。 c.配線は極力短くし、なるべく配線の長さを揃える。 d.ダンピング抵抗は必ずつける。 e.ダンピング抵抗とプルアップ抵抗の値は、PCに合わせて調整する。 f.プルアップ抵抗は、全てに付ける方が良いが、特にSTBにはつける。 g.ついでなので、商用電源の向きを合わせる。 付録 dcppripコマンド集 dcpprip GD-ROMをすべて吸い出す。 dcpprip -i 導通試験 dcpprip -t TOCを調べる dcpprip -t x GD-ROMのトラックxを吸い出す。 dcpprip -h ヘルプ dcpprip -m 0,0x200000 bios.bin BIOSを吸い出す。 dcpprip -m 0x200000,0x20000 flash.bin Flashを吸い出す。 ピンアサイン パラレルポート Dreamcast Serial Port 1 /Strobe 1 +5V 2 Data Bit 0 2 SCK (外部クロック入力) 3 Data Bit 1 3 GND 4 Data Bit 2 4 RX 5 Data Bit 3 5 TX 6 Data Bit 4 6 RTS 7 Data Bit 5 7 CTS 8 Data Bit 6 8 GND 9 Data Bit 7 9 /Reset (負論理リセット信号) 10 /Acknowledge 10 +3.3V 11 /Busy 12 /Paper End 13 /Select 14 /Autofeed 15 /Error 16 /Initialize 17 /Select In 18 Signal GND 19 Signal GND 20 Signal GND 21 Signal GND 22 Signal GND 23 Signal GND 24 Signal GND 25 Signal GND レポート編 (というか、ログをまとめただけって言った方が正解w) まずは、DKさん(ID:M2jYzAbA)の場合 使用したPC: FUJITSU FMV C4/665 OS: Win98SE CPU: PentiumV667M メモリ: 64MB チップセット: Intel 810E BIOS: ? parallel port: セントロニクス準拠 D-SUB25ピンx1 (ECP/EPP対応) 設定はEPP 使用したDC: ? 使用したゲーム: SOULCALIBUR 719M 120分 REVIVE 660M 100分 使用した回路: 必要な回路に、74HC4066を追加して起動時にリセット 出来るようにした物。 -iで応答なしのマシンもあったとの事。 お次は、丸チャンさん(ID:xiuqXhow)の場合 使用したPC: FUJITSU FMV OS: WinME CPU: PentiumU 266MHz メモリ: ? チップセット: Intel 440LX BIOS: ? parallel port: セントロニクス準拠 D-SUB25ピンx1 (ECP/EPP対応) 設定は? 使用したDC: ? 使用したゲーム: DreamPassport2 セガラリー2 使用した回路: 回路図A ↑これは吸出しに成功。 使用したPC: TOSHIBA Dynabook2540 OS: Win98 CPU: AMD-K6 333MHz メモリ: ? チップセット: ? BIOS: ? parallel port: パラレル(セントロニクス、25ピンD-sub ECP対応)x1 設定は? 使用したDC: ? 使用したゲーム: DreamPassport2 セガラリー2 使用した回路: 回路図A ↑これはとても不安定だとの事。 そして最後に、筆者の実験結果 使用したPC: 日電 VALUESTAR NX VU45L15A OS: Win98SE OEM CPU: K6-2 450M メモリ: 128M チップセット: SiS 530 BIOS: AMI ER520 ver00.01.24J parallel port: EPP/ECP 互換?設定はEPP 使用したDC: 後期型。ピックアップのみ前期型からの移植。 (韓国産のピックアップ、やたらと死亡し易いのは何故…? 既に経年劣化で3個ぐらい死亡。) 使用したゲーム: DreamPassport3(詳しいバージョンは分からず…) ラブひな スマイル・アゲイン 650M ↑某友人宅から人柱実験用にパクってきた(w 使用した回路: 回路図A(上図の物。) ケーブルは対撚り線にしてある。 基本通りに1:1で撚ってある。 でもシールドはしてない。 結果は次の通り 1回目 BIOSとFlashは吸い出せたが、GD-ROMは途中(450M付近)でコケた。 -tオプションを使い、コケたトラックだけやり直そうとしたが、 結果は同じ。 2回目 もしやと思い、OSを再インスコしてまた吸い出してみる。 しかし、何度やっても途中(250M付近)でコケた。 3回目 まさかとは思いつつ、今度はDP3を吸い出してみる事に。 結果、2時間半ほどで吸い出せた。 くやしいので前回のゲームを吸い出してみるが、またコケる。(450M付近) だが、昔シリアルポートで吸い出せたのでリードエラーは無いはず。 ちなみに、この時DCの電源を入れる前にケーブルを繋いでおいたのだが、 起動しなくてあせった。 4回目 どうやら、DC側に何かあるようなので、弄くりながら吸い出してみる。 結果、GD-ROMドライブを前期型に変えてもまたコケる(850M付近) 電源も、出っ張りのあるやつ、ないやつを変えてやってみたが これは変化なし。 しかし、出っ張りのないやつをアナログテスターで調べてみると、 やたらと出力がフラフラしている。 あまり使わないほうが良いのかもしれない。 以上、人柱たちの記録でしたw こうして記録を見てみると、なんだか要求される条件がシビアですね。 dcppripの生みの親であるチャオさんによれば、手軽に早く吸い出す事を 目標に作られたそうですが…。 おそらくこのテキスト読んでいる方の中には、 「速度はBBAの1/3程、要求される条件がとてもシビア…使えねぇよ。」 とお思いの方もいらっしゃるんじゃないでしょうか? なぜこんなにシビアなのでしょう? どうせなので、一緒にその疑問を解いていきましょう。 (素人が書いてるので鵜呑みしないように。) 研究のネタその1:なんでDCPPRIPはWin9xでしか動かないのか? 作者のチャオさん曰く、次のように述べられています。 >動作OS はプリンターポートを直接たたく都合で Win9x系のみです。 >(giveIO のよう物もありますが物凄く遅くなりそうなのでNT系は >諦めました) Windowsでは普通、ハードを操作する時には アプリとか→デバイスドライバ→Windows→ハード の順で操作します。ドライバ無しにハードウェアを直に叩く事は、 本来は禁止されています。 (誤解されがちですが、MS-DOSも同じです。) ですが、直に操作する事も不可能な訳ではないようで、実際dcppripも 直に操作しているようです。 直に操作すると機種依存(!)が絡んでやっかいになりますが、 昔は、速度を稼ぐ為に敢えてやる事がありました。 こう説明されると、WinXPをはじめとしたNT系でも動くんじゃないか? と思いますよね?ところがそうは行きません。 詳細は割愛しますが、Windowsの歴史を見れば分かります。 最初、MicroSoftはMS-DOSという16bitシングルタスクOSを作っていました。 このDOSは、x86アーキテクチャにべったり最適化されていて、 (今の一般的なPCはほぼ全てx86アーキテクチャです。) 詳しい人でないと扱えるものではありませんでした。 (x86アーキテクチャと言うとNECのPC-9800シリーズをはじめ、 富士通のFM-R/TOWNSシリーズが過去にありました。 また、IBM開発のPC/AT互換機もそうですし、今ではMacもそうですね。 しかし、MS-DOSは現在主流のPC/AT互換機に最適化されています。) このMS-DOS、保護機能だとかチェック機構だとかの類は ほとんど実装されていませんでした。 (当時のマシンの性能ではやむを得ませんでした。) で、MS-DOS Ver3の頃に初代Windowsが発売されます。 Macや、NECのPC-100の影響で作られた、と言われています。 このWindowsはMS-DOS上で動くもので、この流れを汲むWindowsが 俗に言うDOS系Windowsで、Win95やWin98などの9x系Windowsも この系列です。 一方、NT系はWindows3.1の頃に最初のWindowsNT 3.1 (バージョンを合わせてある)が発売されました。 このNT系は、DOSとの互換性を考えて作ってある為に固まりやすいと 言う欠点を持つ9x系Windowsに変わる新しいWindowsとして開発され、 (その為に、保護機能やチェック機構は9x系よりも強力。) 当初はどのアーキテクチャにも移植できるよう、設計されていました。 (但し、Win2000以降はx86系向けしか販売していません。) つまり、9x系はチェックが甘いからヤリ放題だが、NT系はチェックが 厳しいから手を出す事は困難、という事です。 dcppripのようなツールにとっては迷惑な話ですが、 安定性が良くなったり、機種依存性が低くなるので、 なんとも言えません。 (!)機種依存 下に例を挙げます。 例とは…ゲームです。 PSのゲームってパソコンじゃ遊べないでしょ? その逆も出来ませんね? こういうのを機種依存といいます。 またこれに関係した事として、例えば誰かから携帯にメールが 送られてきたとします。 そのメールが、同じ会社の携帯からのメールなら文字も絵文字も 読めますね? ですが、違う会社の携帯からだと絵文字が見れない事がありませんか? こういう特殊な文字の事を、機種依存文字と言います。 メールやインターネットで使う時は注意しましょう。 ちなみにこのHPは、汎用性を重視して設計しています。 研究のネタその2:あの抵抗は何の為にあるのか? 作者のチャオさん曰く、次のように述べられています。 100Ωの場合 >ただし、限界までスピード出すためにダンピング抵抗が必要です。 >正確にはグランドバウンス対策(立ち上がりを少しなまらせます) グランドバウンスとは、GND(乾電池でいえばマイナス)のレベルが 場所によりずれてしまう事で、これが起きると信号の0と1を 判断するのに必要な基準が分からなくなってしまいます。 平たく言えば、出身地の違う人が会話する時に 方言のせいでうまく伝わらないのと同じイメージで良いです。 GNDのレベル = 日本 場所 = 出身地(どんな方言が混ざっているか) ずれる = 方言のせいでしゃべりづらい また、信号が衝突する事への配慮もあるそうです。 ちなみに、この抵抗は50〜200Ωの間で ちょうど良い抵抗値を探す必要があります。 1.5KΩの場合 VCC(電源)に繋げるのはプルアップ、 GND(0V)に繋げるのはプルダウンといいます。 こいつはプルアップ抵抗ですが、役割は上の抵抗と似ています。 プルアップ抵抗の場合は電位を (電位ってのは電気的な位置エネルギーです。) Hiレベルにしておく為のものです。 チャオさんは、特にSTBにはつける事を推奨しています。 理由はオープンコレクタ信号だから、だそうです。 研究のネタその3:PCのパラレルポートが、ご機嫌斜めで通信できない件。 不安定な時、ドライバを止めればOK!という時もあれば、 実装の仕方が違う為なので、対処不可能という時もあるとの事。 そんなに違うものなのかと筆者は思ったのですが、実はある落とし穴が あるのです。 次の文を見て、あなたはどう思いますか? 1.IEEE1284に合致 2.IEEE1284に準拠 この文、どこが違うと思いますか? 準拠と合致ですが、ほぼ同じ意味で捉えている人が殆どだと思います。 実は全く意味が異なったりします。 合致…完全に一致している。 準拠…概ね(準)よりどころとしている事(拠)。 簡単に言えば、真似て作っただけよって言う事。 なので、本来あるはずの信号が省略されていても、 信号が規格に合致しておらず基準以下の精度でも、 プログラムの実装がカスでも「準拠」になります。 そのため、万一うまく行かなくても文句は言えません。 一般に売られているPCは、どの規格にも大体「準拠」です。 「相性が悪い」といわれるのは、準拠であるが為に起こる現象です。 とても紛らわしいですね(^^;) これら以外に通信が不安定な機器では、 「I/O の範囲」が2つ表示されるという現象が確認されています。 I/O の範囲 0378 - 037F I/O の範囲 0778 - 077F 調べてみると、これはBIOSの設定で「EPP/ECPモード」というのが ありますが、それが実際には単なるECPモードだ、という時の 現象のようです。 詳しく書くと、ECPの中でもいくつか違いがあるようで、 0x77aの上位3ビットを使って切り替えているようです。 001 PS/2(双方向) 000 SPPモード 100 EPPモード(エミュレート) !:エミュレートという事は、決して精度は良くない。 また、ちゃんとEPPモードとECPモードを自動で切り替えている場合も、 ECPモードが優先的に使われてしまうようです。 これを弄るにはチップセットをどうにかしなくてはいけない為、 諦めるしかないようです。 研究のネタその4:なんでdcppripはコケやすいのか? チャオさんから、その理由を教えていただきました。 これは先程のダンピング抵抗とかぶるのですが、 ひとつは、SH4の信号をそのまま使っているという事。 実はDCのシリアルポートというのは、SH4のSCIインターフェース をそのまま使っているらしいです。 SH4のみならず殆どのCPUでは、信号線の種類は基本的に1種類しかなくて、 それを相手に合わせてウェイトをかけて調整しているんだそうです。 勘の良い人はお気づきになると思いますが、 メインメモリとのやりとりも、同じところで扱っています。 つまり、余裕が少ないんですね。 そのせいで、尼崎の事故じゃありませんがコケやすいんです。 もうひとつはパラレルポートの波形です。 パラレルポートは、本来はプリンターと繋ぐものです。(当たり前) 間違ってもSH4のようなデリケートな物と繋ぐ事なんて考えていません。 なので、パラレルポートの品質はピンからキリまであり、 品質がよければかなり綺麗なんですが、手抜きしていると それはそれはもう、耐えられないぐらい汚いです。 これをSH4でも受け付けるような信号にするには CPLDを使って回路を組まないといけないそうです。 また、供給されているクロック周波数の違いにより、 コケやすくなっているようです。 どうですか?なんだか難しそうだと思いません? これら全てを考えながら作られているのがDCPPRIPです。 あまりチャオさんに無理なお願いするのは止しましょうね(^^) 編集後記 製造が終わってはや5年、そのうえPSE法により絶滅する運命にあるDCで、 まさか新しい吸い出し方法が開発されるとは思ってもみませんでした。 筆者は吸い出しに失敗しましたが、原因はGD-ROMのキズなんでしょうね。 という訳で、今ディスクを一生懸命磨いておりますw ・ ・ ・ 結局駄目でした。ま、得ろゲーなんぞどうでも良いです。 ちなみに、この実験でPCが危篤状態になってます。 パラレル-シリアルケーブルのせいかどうかは分かりませんが、 一時PCが起動しなくなったんです。 というか、BIOSの画面が現れない(爆 結局、CMOSクリアしながらスイッチ入れると、起動する事も あるという(^^;) どっか殺しちゃったのでしょうか…。 借り物のPCなのに、どうしよう(大汗 結局、ハードオフで買ってきた同じマザーと 交換する羽目になりましたとさ。(ジャンクで860円w) その後、原因を調査している時にPCの所有者から事情聴取 したのですが、その時にPCのマザーになんと、 発振している電源を繋げた事があると白状したのです! (そいつは特別ハードに詳しい訳じゃない。) 壊れた原因が分かったのでほっとしましたが…、 マザーの交換代金を返還させたのはいうまでもありませんw 製作:試運転 2006年7月15日 改訂