デグレファクトリーデグレファクトリー

未来の技術で高度なバグを埋め込むソフトウェア製作所

ID666 は、曲の情報を SPC ファイルに格納するための拡張規格です。

SNES SPC700 Player は、Nitro 氏が立案された ID666 規格に対応しています。 ID666 を利用すれば、曲名などの基本情報の他、演奏時間、フェードアウト時間を曲別に指定することができます。

ID666 のフォーマットは、テキスト フォーマットとバイナリ フォーマットの 2 種類が存在します。 SNES SPC700 Player は両方のフォーマットをサポートしています。

この資料では ID666 のフォーマットについての詳細を説明しています。

SPC ファイルは 66,048 バイト以上のバイナリ ファイルです。 ファイル構造は以下のようになっています。

内容

開始アドレス

サイズ

詳細

SPC ファイル ヘッダ

00000

256

ID666 などの SPC ファイル情報。

SPC 64KB RAM

00100

65,536

64KB RAM の内容です。 サウンド ドライバやシーケンス、波形データなど。

SPC DSP レジスタ

10100

128

DSP レジスタの内容です。 音量設定やチャンネル設定など。

(未使用)

10180

64

SPC XRAM バッファ

101C0

64

拡張 RAM の内容です。

[拡張 ID666]

10200

拡張 ID666 情報です。 本資料では説明しません。

そのうち、SPC ファイル ヘッダは数種類あり、種類によって格納されている内容が異なりますが、サイズは 256 バイトで統一されています。 SPC ファイル ヘッダの構造は以下のようになっています。 これらの情報を編集することで、プレイヤーが情報を表示します。

プレイヤーによって、(未使用) の領域が使用されている場合がありますが、SNES SPC700 Player では使用していません。

内容

開始アドレス

サイズ

詳細

ファイル ヘッダ情報

00000

33

SNES-SPC700 Sound File Data vX.XX (v がないときもある)

(未使用)

00021

2

ヘッダとタグを分けるための未使用領域。 すべて 0x1A。

タグの種類

00023

1

タグの種類。 0x1A = ID666, 0x1B = その他。

タグのバージョン

00024

1

タグのバージョン (数値)。

SPC レジスタ (PC)

00025

2

SPC を保存した直前の SPC700 レジスタ。

SPC レジスタ (A)

00027

1

SPC を保存した直前の SPC700 レジスタ。

SPC レジスタ (X)

00028

1

SPC を保存した直前の SPC700 レジスタ。

SPC レジスタ (Y)

00029

1

SPC を保存した直前の SPC700 レジスタ。

SPC レジスタ (PSW)

0002A

1

SPC を保存した直前の SPC700 レジスタ。

SPC レジスタ (SP)

0002B

1

SPC を保存した直前の SPC700 レジスタ。

(未使用)

0002C

2

未使用領域。 すべて 0x00。

曲名

0002E

32

曲のタイトル。

ゲーム名

0004E

32

ゲームのタイトル。

作成者

0006E

16

SPC ファイルの作成者。

コメント

0007E

32

コメント。

日付

0009E

11

日付 (文字)。 一般的に MM/DD/YYYY 形式。

演奏時間

000A9

3

曲の演奏時間 [秒] (文字)。

フェードアウト時間

000AC

5

フェードアウトの時間 [ms] (文字)。

作曲者

000B1

32

作曲者。

初期チャンネル無効

000D1

1

現在は未使用。

エミュレータの種類

000D2

1

エミュレータの種類。

(未使用)

000D3

45

未使用領域。 すべて 0x00。

エミュレータの種類: 0x30 = 不明, 0x31 = ZSNES, 0x32 = Snes9x, 0x33 = ZST2SPC, 0x34 = その他, 0x35 = SNEShout, 0x36 = ZSNES/W, 0x37 = Snes9xpp, 0x38 = SNESGT

内容

開始アドレス

サイズ

詳細

ファイル ヘッダ情報

00000

33

SNES-SPC700 Sound File Data vX.XX (v がないときもある)

(未使用)

00021

2

ヘッダとタグを分けるための未使用領域。 すべて 0x1A。

タグの種類

00023

1

タグの種類。 0x1A = ID666, 0x1B = その他。

タグのバージョン

00024

1

タグのバージョン (数値)。

SPC レジスタ (PC)

00025

2

SPC を保存した直前の SPC700 レジスタ。

SPC レジスタ (A)

00027

1

SPC を保存した直前の SPC700 レジスタ。

SPC レジスタ (X)

00028

1

SPC を保存した直前の SPC700 レジスタ。

SPC レジスタ (Y)

00029

1

SPC を保存した直前の SPC700 レジスタ。

SPC レジスタ (PSW)

0002A

1

SPC を保存した直前の SPC700 レジスタ。

SPC レジスタ (SP)

0002B

1

SPC を保存した直前の SPC700 レジスタ。

(未使用)

0002C

2

未使用領域。 すべて 0x00。

曲名

0002E

32

曲のタイトル。

ゲーム名

0004E

32

ゲームのタイトル。

作成者

0006E

16

SPC ファイルの作成者。

コメント

0007E

32

コメント。

日付 (日)

0009E

1

日付の日の部分 (数値)。 最小 1、最大 31。

日付 (月)

0009F

1

日付の月の部分 (数値)。 最小 1、最大 12。

日付 (年)

000A0

2

日付の年の部分 (数値)。 最小 1、最大 9,999。

(未使用)

000A2

7

未使用領域。 すべて 0x00。

演奏時間

000A9

2

曲の演奏時間 [秒] (数値)。 最大 999。

(未使用)

000AB

1

未使用領域。 すべて 0x00。

フェードアウト時間

000AC

3

フェードアウトの時間 [ms] (数値)。 最大 99,999。

(未使用)

000AF

1

未使用領域。 すべて 0x00。

作曲者

000B0

32

作曲者。

初期チャンネル無効

000D0

1

現在は未使用。

エミュレータの種類

000D1

1

エミュレータの種類。

(未使用)

000D2

46

未使用領域。 すべて 0x00。

エミュレータの種類: 0x00 = 不明, 0x01 = ZSNES, 0x02 = Snes9x, 0x03 = ZST2SPC, 0x04 = その他, 0x05 = SNEShout, 0x06 = ZSNES/W, 0x07 = Snes9xpp, 0x08 = SNESGT