この資料について
ここには FlareStorm の開発の際に PlayStation の CD-ROM の動きを解析した情報を載せていきます。最初は psx.padua.org の CD-ROM の解析の情報をもとに進めてきました。以下の解析の情報はその資料をもとに、私自身が解析したものです。
一応書いておきますが、以下の情報は推測を含み、間違っているものもあるかもしれません。
解析は SCPH-1000 で行っています。
ビットは最下位ビットをビット 0 とします。
| アドレス | この資料での呼び名 |
|---|---|
| 0x1F801800 | モード, Mode |
| 0x1F801801 | コントロール, Control |
| 0x1F801802 | パラメータ, Param |
| 0x1F801803 | 割り込み, Clear |
| アドレス | ロード時 | ストア時 |
|---|---|---|
| 0x1F801800 |
下位 2 ビット(マスク 0x07) : 現在のモード 0x04 : 不明 0x08 : パラメータバッファが空 0x10 : 不明 0x20 : コマンドの結果(リザルト)あり 0x40 : データ転送レディ 0x80 : ビジー,保留された命令あり |
下位 2 ビット(マスク 0x07) : モード それ以外は不明 |
| モード | 主な目的 |
|---|---|
| 0 | パラメータセット, 命令送信 |
| 1 | データ受け取り, 割り込みクリア他 |
| 2,3 | CD-DA / XA Audio の制御 |
| アドレス | ロード時 | ストア時 |
|---|---|---|
| 0x1F801801 | 未確認 | 命令, ストアと同時に開始 |
| 0x1F801802 | 未確認 | パラメータ |
| 0x1F801803 |
ビット 5-7(マスク 0xE0) : 不明, 常に 0xE0 ? ビット 4(マスク 0x10) : データ転送レディ ? 下位 4 ビット(マスク 0x0F) : 不明, 常に 0x07 ? |
0x00 : 読み込みバッファから転送バッファへ転送 ? 0x80 : データ転送レディのフラグをセット, 転送準備 ? |
| アドレス | ロード時 | ストア時 |
|---|---|---|
| 0x1F801801 | 命令の結果受け取り | 未確認 |
| 0x1F801802 | セクタバッファからの読み取り | 未確認 |
| 0x1F801803 |
下位 4 ビット(マスク 0x0F) : 割り込み 上位 4 ビット(マスク 0xF0) : 不明, 常に 0x0E ? |
下位 4 ビット(マスク 0x0F) : 割り込みクリア, INT = INT & ~x でクリアされる 上位 4 ビット(マスク 0xF0) : 不明, 機能無し ? |
| 命令コード | 機能 | パラメータ | 結果 | 割り込み | 備考 |
|---|---|---|---|---|---|
| 00 sync | 前の命令の完了を待つ | なし | |||
| 01 nop | No-operation. 何もしない。 | なし | ステータスコード | 03 | |
| 02 setloc | Seek や Read, Play の目標をセットする | m:s:f(絶対位置) | ステータスコード | 03 | |
| 07 standby | CD の回転を開始する | なし | ステータスコード | 03, 02 | 既に回転している場合はエラー |
| 08 stop | CD の回転を停止する | なし | ステータスコード | 03, 02 | |
| 0D setfilter | フィルタを設定をする | File, Channel | ステータスコード | 03 | |
| 0F getparam | 現在の設定を返す | なし | ステータスコード + Mode + 00 + File + Channel | 03 | |
| 10 getlocl | 最後に読んだセクタのヘッダを得る | なし | Header(4 バイト) + Subheader(4 バイト) | 03 | |
| 13 getTN | トラック数を得る | なし | ステータスコード + 最初 + 最後のトラック番号 | 03 | |
| 14 getTD | トラックの開始時間を得る | トラック番号 | ステータスコード + トラックの開始時間 m + s | 03 | |
| 15 seekL | 指定位置へシークする | なし | ステータスコード | 03, 02 | |
| 19 test | (サブコマンドを参照) | ||||
| 1A id | プロテクションステータスを得る | なし | プロテクションステータス(4 バイト) + ライセンサコード(4 バイト) | 03, 02 | |
| 1C reset | ユニットをリセットする | なし | なし | 03 | |
| 命令コード | 機能 |
|---|---|
| 01 | フタが開いていると、CD が逆回転。閉めて開け直しても止まらない。コマンド 1C Reset で戻る。 |
| 02 | CD が逆回転。01 と同じく止まらない。 |
| 10 | ピックアップ位置リセット, レーザー OFF |
| 11 | ピックアップ位置上昇, レーザー ON |
| 12 | ピックアップ位置降下, レーザー ON |
| 13 | ピックアップレンズ外周側に移動, レーザー ON |
| 14 | ピックアップレンズ内周側に移動, レーザー ON |
| 15 | ピックアップユニット最外周に移動, レーザー ON |
| 16 | ピックアップユニット最内周に移動, レーザー ON |
| 17 | CD 回転モーター順方向回転, レーザー ON |
| 18 | CD 回転モーター逆方向回転, レーザー ON |
| 20 | コントローラチップの ID? 4 バイト |
| 21 | (フラグ)CD 未挿入時:0x01 フタが開いている:0x02 |