デグレファクトリー
未来の技術で高度なバグを埋め込むソフトウェア製作所
未来の技術で高度なバグを埋め込むソフトウェア製作所
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 | IPL ロード時に元のメモリ内容 (アドレス FFC0~FFFF) を退避しておくエミュレータ専用の拡張 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