試運転の資料館
玄関 総合案内 電算機部 営繕部 交通部 リンク

This web site is only compatible with Japanese text.

IEEE1284経由でバックアップ


ある時、何気なくググっているとすごいソフトを発見。JJ1ODM のチャオ様開発の、DCPPRIP です ! 

なんと、ドリームキャストのシリアルポートと、PC のパラレルポートを繋げて吸い出すという物で、ゲームを 2 時間半で吸いだせるというスグレモノです。

今回は、それの紹介記事です。


条件

  • 使用するマシンは、AT 互換機である事。
  • OS は Win98 などの 9x である事。
  • PC のマザーボードにパラレルポートが付いている事。
  • パラレルポートは EPP mode またはBPP ( Bi-directional ) mode が使用可能な事。ただし、これらをサポートしていても問題が発生する場合がある。
  • DC は MILCD 対応型である事。

吸出し

  1. まずは、DCPPRIP をJJ1ODMから DL してください。
  2. ファイルは、以下の場所に置いてください。
    C:¥dcrip 
  3. 回路図は、DCPPRIP を DL したサイトに掲載されています。
    注意 ! 
    パラレルポートとシリアルポートをつなげる時、一番最初にDC の電源を最初に入れてからつながないと、DC が起動しない。
  4. dcpprip¥dc ディレクトリのツールを焼いて DC で起動してください。焼き方は、検索すれば分かります。
  5. 準備が整ったら、いよいよ吸出しです。MS-DOS プロンプトを起動。[スタート]-[プログラム]-[MS-DOSプロンプト]
  6. 起動後、以下のように表示されます。
    C:¥Windows>
  7. 以下のように入力し、Enter を押下してください。
    C:¥Windows>cd C:¥dcrip
  8. GD-ROM を吸出す時は
    C:¥dcrip>dcpprip
    これで大丈夫です。

ハード制作上のポイント

  1. 信号線は GND との対撚り線にする。その時、割合は 1 対 1 にする。
  2. GND は、出来たら太くする。
  3. 配線は極力短くし、なるべく配線の長さを揃える。
  4. ダンピング抵抗は必ずつける。
  5. ダンピング抵抗とプルアップ抵抗の値は、PC に合わせて調整する。
  6. プルアップ抵抗は、全てに付ける方が良いが、特に STB にはつける。
  7. ついでなので、電源の 1Φ 100V の接地側、非接地側の向きを合わせる。

dcpprip コマンド集

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を吸い出す

Win9x でのみ動く、その理由

作者のチャオ様曰く、次のように述べられています。

> 動作OS はプリンターポートを直接たたく都合で Win9x系のみです。
> (giveIO のよう物もありますが物凄く遅くなりそうなのでNT系は
> 諦めました)

Windows マシンでは通常、デバイスドライバを介してハードを操作します。

このデバイスドライバがとても厄介で、Win9x 系では 16bit のコードで書いて良かったのですが NT 系では完全に 32bit で書かなくてはならず、その上、Win2k以降は WDM でないといけないので、ドライバが肥大化して遅くなってしまうのです。

そのような理由があって、Win9x 系のみの対応のようです。


抵抗は何の為にあるのか ? 

作者のチャオ様曰く、100ohm の抵抗はグランドバウンス対策、1.5Kohm はプルアップ抵抗だそうです。

グランドバウンスというのは、グラウンドの電位が変動して機器類が誤作動する現象の事です。高速になるほど、突入電流が大きいほど、対策の必要性が大きくなります。50ohm から 200ohm の間で最適な値を求める必要があります。

プルアップというのは、電位 ( 電気的な位置エネルギー ) を高い状態で維持しておくのが、目的のようです。チャオ様は特に STB にはつける事を推奨しています。理由はオープンコレクタ信号だから、です。 ( 単なるスイッチみたいな物ですから当たり前ですね !  ) 


PC のパラレルポートが、ご機嫌斜めで通信できない件。

不安定な時、ドライバを止めれば OK ! という時もあれば、どうにも、対処不可能という時もあるとの事。

これはどうやら費用対効果を考えた結果の副産物のようです。というのは、一般向けに販売されている工業製品は、厳密に規格に沿わせた所で意味を成さないことが大半です。

製品を安価に流通させる事を目的にある程度、実装を省略する事がありこの結果、信号が規格に収まらないような事が起きて、うまくいかなかったりするようです。

ちなみに通信が不安定な機器では、「I/O の範囲」が2つ表示されるという現象が確認されています。

I/O の範囲 0378 - 037F
I/O の範囲 0778 - 077F

調べると、パラレルポートにはいくつか通信モードがある事が分かります。

ソフトウェア面 ( 通信プロトコル ) では、互換モード、ニブルモード、バイトモード ( PS/2 モードとも ) 、EPP モード、ECP モードがあり、ハードウェア面では、SPP モード、BPP モード 、EPP モード、 ECP モード、EPP/ECP モードがあります。

余計な事ですが、「EPP/ECP モード」は ECP モードの拡張だと言いつつも ECP モードの方はエミュレーションにより実装してあるようです。

何とも複雑怪奇ですが、「I/O の範囲」が2つ表示される、というのは「EPP/ECP モード」をサポートしている場合に起きます。詳しく記載しますと、「EPP/ECP モード」というのは EPP モードと ECP モードを 0x77a の上位 3 ビットを使って切替えていますが、DCPPRIP では切替に関する部分を持っていない為、上手に通信できない、となってしまう訳です。

こうなると諦めるしかないようです。

余談ですが、「準拠」とは一致させると言う意味です。たまに間違った意味で「準拠」と言う言葉を用いている事がありますが、辞書やJIS規格をご覧いただければ「準拠」は「規格に合致した」の意味である事がわかります。 ( 規格に合致していない場合は、「規格に準拠」ではなく「規格を参考にした」と書かねばなりません。 ) 


なんで DCPPRIP はコケやすいのか ? 

チャオ様から、その理由を教えていただきました。

先程のダンピング抵抗とかぶるのですが、ひとつは、SH4 の信号をそのまま使っているという事。実は DC のシリアルポートというのは、SH4 のSCI インターフェースをそのまま使っているらしいです。

SH4のみならず殆どの CPU では、信号線の種類は基本的に 1 種類しかなくて、それを相手に合わせてウェイトをかけて調整しているんだそうです。

勘の良い人はお気づきになると思いますが、メインメモリとのやりとりも、同じところで扱っています。

つまり、管理が大変難しいんですね。管理に失敗するとそれこそ、玉突き事故になってします。

もうひとつはパラレルポートの波形です。パラレルポートは、本来はプリンターと繋ぐものです。 ( 当たり前 ) 間違っても SH4 のようなデリケートな物と繋ぐ事なんて考えていません。なので、パラレルポートの信号の波形に関する品質は製品によって大きく異なり、品質がよければかなり綺麗なんですが、手抜きしていると本当に信号の波形が汚いそうです。

これを SH4 でも受け付ける信号にするには CPLD を使って回路を組まないといけないそうです。

どうですか ? なんだか難しそうだと思いません ? 

これら全てを考えながら作られているのが DCPPRIP です。あまりに無理なお願いするのは止しましょうね


あとがき

DCPPRIP が開発されたのは、2005 年 10 月の事でありますが、当時、まさか新しい吸出し法が開発されるとは !  ! と、驚いていました。

あれから数年後、今度は SD カードを用いた吸出し法が開発されましたので今更 DCPPRIP を使おう、という方はいらっしゃらないと思いますが歴史的意義を考慮してここに残します。


indexへ戻る

Copyright (C) 2016 "shiunten"