from ptdoc.txt in PT3Docs.7z https://bulba.untergrund.net/progr_e.htm ProTrackerv3.6xモジュール形式 モジュール内の領域へのオフセットとそのバイト単位の長さが指定されます (10進数)。 +0(13)「ProTracker 3.」。 -識別文字列。 +13(17)「6」(または「5」、「4」、さらには「3」)はマイナーバージョン +14(16)「compilation of」(オプション-これの任意のテキスト長さ)。 +30(32)モジュール名(ASCII、未使用はスペースで埋める)。 +62(4) " by "(オプション-任意の4文字) +66(32)作成者名(ASCII、未使用はスペース)。 +98(1)1つのスペース(任意の文字)。(つまり、モジュールの最初の99バイトが対応する文字列を形成します) +99(1)周波数表番号:0 = Pro Tracker、1 = Sound Tracker、2 = ASMまたはPSC、3=RealSound。このテーブルは192バイトを占め、 C-1(TO最初のオクターブ)から始まる96音の周期値が含まれています。周期は、対応するAYレジスタに入力されたノート周波数の逆数です。 下位バイト(ここと以下、ただし1つの例外を除いて)が最初に格納されます。 PTコンパイラは、モジュールに対応するテーブルを相対アドレス512のプレーヤー本体に格納します。 ボリュームテーブルは、相対アドレス256の同じプレーヤー本体に格納します。 +100(1)テンポ値。 +101(1)曲の終わり(1=モジュール内の位置は1つだけ)-プレーヤーでは未使用 +102(1)ソングループ(0 =先頭へのループ)。 +103(2)Psa_chn=最初のモジュールからパターンテーブルへのオフセット。 +105(32 * 2)モジュールの先頭からサンプルまでのオフセット。0番目のサンプルから始まります。サンプルごとに2バイト。 nullサンプルは、現在のバージョンのエディターでは使用されていません。未使用のすべてのサンプルでは、オフセットはゼロです。 +169(16 * 2)モジュールの先頭からオーナメントまでのオフセット。ゼロから始まります。 オーナメントごとに2バイトヌルオーナメントはオーナメントがないことであるため、このオーナメントのデータ(以下を参照)には0,1,0が含まれます (このオーナメントは自由に使用できますが、それがないとサンプルを使用できません曲のオーナメント) 未使用のオーナメントオフセットはゼロです。 +201(?)位置のリスト(順序)。パターン番号(0 ... 84)に3を掛けたものが含まれます。表は#ffで終わります。 ProTrackerv3.3x-v3.5xは42を超えるパターンをサポートしていません。 Pro Tracker v3.6xは、46を超えるパターンをサポートしていません。 + Psa_chn(?* 6)パターンポインタ。使用可能な変位パターンごとに次のものが含まれます。 ++ 0(2)チャネルデータブロック(トラック)A ++ 2(2)チャネルデータブロック(トラック)B ++ 4(2)チャネルデータブロック(トラック)C。 ノイズオフセットデータ(エディターの別の列)はチャネルBにコンパイルされます。 +? (?*?)チャネルデータブロック、つまりトラック。 トラックには次のデータが含まれています。 =============================================================== #00-トラックの終わり。 #01、delay、Lsl、Hsl-Gliss(Slide)を上下に動かします。遅延-50分の1秒単位の時間。その後、値Lsl + 256*Hslがノート期間に追加されます。 オフセットは、プレーヤーによって対応する変数に累積され、音符の周波数が形成された後に追加されます。つまり、オーナメントラインが最初に処理され、次に... #02、delay、Lmax、Hmax、Lsl、Hsl-トーンポルタメントエフェクトを上下に動かします。遅延-50分の1秒単位の時間。その後、値Lsl + 256*Hslがノート期間に追加されます。 Lmax + 256 * Hmax-最大オフセット(符号なし)。その後、ポルタメントを終了する必要があります(方向が正しく表示されない可能性があるため、PT3.6xでは使用されません)。 #03、オフセット-サンプルオフセット。サンプルは最初から再生を開始しません。 #04、オフセット-オーナメントオフセット。オーナメントは最初から再生を開始しません。 #05、YEStime、NOtime-ビブラート。音が鳴るか、鳴らないかのどちらかです。 #08、delay、Lsl、Hsl-スライドエンベロープエフェクト。時々、Lsl + 256*Hslがエンベロープ期間の値に追加されます。 #09、テンポ-テンポの表示(1行あたりの区切り数)。 tempo=2未満の標準プレーヤーは再生されません。 注意:エフェクトパラメーター(#0x)は、エフェクト番号コードの直後ではなく、行末の後にあります!!! 1つのノートに複数のエフェクトが使用されている場合(実際にはこれは発生しません)、最後のエフェクトのパラメーターが最初に配置され、 最後から2番目のエフェクトのパラメーターが配置されます。 #10、smp * 2-エンベロープをオフにし、0番目の飾りを付けて、サンプル番号を変更します。 #1x、Henv、Lenv、smp * 2-サンプル番号を変更し、0番目のオーナメントを設定し、期間Lenv + 256*Henvのx-1タイプのエンベロープをオンにします。エンベロープがオンになると、初期化されます。 新しい時代が始まります! #20-#3f-ノイズオフセットを指定します(チャネルBでのみ発生します) #4x-エフェクト番号xを示します。 (エンベロープがオフになっていない) #50-#Af-ノートのピッチを指定し、チャンネルの現在のラインの分析を終了します。 #B0-エンベロープを無効にします。 #B1、ライン-ラインライン中にチャネルを分析しません。 (lines = 1は1行に一致します)。この音符と次の音符の間の間隔だけでなく、別の値が指定されるまでの行にも影響します。 #Bx、Henv、Lenv-#1xと同じですが、サンプルはありません。つまり、指定した期間のx-1タイプのエンベロープをオンにするだけです。 #Cv-ボリュームを指定します(v = 0-文字列の解析を一時停止して終了します)。 #D0-文字列の解析を終了します。 #D1-#Ef-サンプル番号を指定します。 #Fx、smp * 2-エフェクト番号(x)とサンプル番号を示します。 (エンベロープオフ) ================================================= = ============= +? (?*(?* 4 + 2))-サンプル。 ++ 0(1)-loop + + 1(1)-終了(1 = 1行からのサンプル) ++ 2(?* 4)-データ: +++ 0(1)sv +-N4 N3 N2 N1 N0 Em ++ + 1(1)Nm ts ns Tm V3 V2 V1 V0 sv = 1-ボリュームシフトの兆候、+-=1はその増加に対応します。 N4-0-ノイズ周波数またはエンベロープオフセット(ノイズマスクの存在に依存):エンベロープオフセット0-15-下、16-31-上(N4は符号として解釈されます); V3-0-ボリューム; Tn、Nm、Em-それぞれトーン、ノイズ、エンベロープマスク。マスクが1の場合、対応するサウンド要素はオフになります。 ts、ns=1-現在のトーンまたはノイズ/エンベロープオフセットが保存されることを示します。 +++ 2(2)トーン周期オフセット(正-上、負-下)。 +? (?*(?+ 2))-エフェクト。 ++ 0(1)-loop + + 1(1)-終了(1 = 1行の飾り) ++ 2(?)-データ:半音単位のオフセット(0 =オフセットなし、正のオフセット-上、負-下)。 struct PT3INFO { BYTE MagicNumber[13]; BYTE MinorVersion; BYTE Compilation[16]; BYTE ModuleName[32]; BYTE ByChars[4]; BYTE AuthorName[32]; BYTE EndInfo; BYTE FrequencyTable; BYTE Tempo; BYTE SongEnd; BYTE SongLoop; WORD PatternTableOffset; }; also: https://github.com/ESPboy-edu/ESPboy_PT3Play/blob/master/PT3Play.h sample ay: https://zxart.ee/rus/avtory/a/avatar/bez-nazvanija/