Overview / 概要

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

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

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

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

Translation:

ID666 is an extended standard for storing song information in SPC files.

The SNES SPC700 Player is compatible with the ID 666 standard developed by Nitro. ID666 allows you to specify the playing time and fade-out time for each song in addition to basic information such as song titles.

There are two formats for ID666: text format and binary format. The SNES SPC700 Player supports both formats.

This article gives details on the format of ID666.

SPC File Format / SPC ファイル フォーマット

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

Translation:

SPC files are binary files of 66,048 bytes or more. The file structure is as follows.

内容 開始アドレス サイズ 詳細
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 では使用していません。

Translation:

Among them, there are several types of SPC file header, and the stored contents differ depending on the type, but the size is uniform at 256 bytes. The structure of the SPC file header is as follows: By editing these information, the player can display the information.

Depending on the player, (unused) area may be used, but it is not used by SNES SPC700 Player.

ID666 Text Format / ID666 テキスト フォーマット

内容 開始アドレス サイズ 詳細
ファイル ヘッダ情報 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

ID666 Binary Format / ID666 バイナリ フォーマット

内容 開始アドレス サイズ 詳細
ファイル ヘッダ情報 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

Note: Sourced from https://dgrfactory.jp/spcplay/id666.html