【メモリカード EDITデータブロック解析】

2000h単位で1ブロック。
先頭ブロック(0ブロック)はメモリカード管理用。よって、データは1〜15ブロック

1ブロック:2000h〜3FFFh
2ブロック:4000h〜5FFFh

ブロック内詳細:
/*先頭アドレス〜最終アドレス(レングス)説明*/

0000〜0003(0004)ヘッダ?

0004〜0043(0040)データ情報

0060〜007F(0020)カラーパレット?
        2バイト×16
0080〜00FF(0080)パターン1
        4ビットで1ドット:16×16
        1ドットが、上記カラーパレットの番号?
0100〜017F(0080)パターン2
0180〜01FF(0080)パターン3


0200〜0203(0004)DDR EDIT DATA 情報ヘッダ
0200〜0200(0001)曲名コード
        00:メロー
        01:バタフライ
        02:カンフー
        03:MY Fire
        04:ビッチ
        05:Let's
        06:ザッツ
        07:ビジネス
        08:paranoia
        09:トリップ
        0A:ベター
        0B:Boys
        0C:ビリーブ
        0D:JAM
        0E:para Clean
        0F:Para Max
※これって、EDITで曲選択時の順番そのもの。


0202〜0202 (0001) 曲モード
  00:1P(Single&Versus)
01:1P&2P(Couple)
02:Double

0204〜020B(0008)タイトル8文字

020C〜0213(0008)制御コード?(曲,モード等?)

020E〜020E(0001)リンクバージョンでの曲番号
01:メロー
09:バタフライ
03:カンフー
10:MY Fire
13:ビッチ
07:Let's
02:ザッツ
11:ビジネス
1B:paranoia
1A:トリップ
0E:ベター
08:Boys
18:ビリーブ
29:JAM
2A:para Clean
1D:Para Max

曲番号でソート(曲番号:曲名:前奏での待ち小節数)
01:メロー
02:ザッツ
03:カンフー
(04:SMOKE:4.5)
(05:ブンブン:4)
(06:BAD GIRL:2)
07:Let's
08:Boys
09:バタフライ
(0A:PUT:4)
(0B:ぶり:4)
(0C:PUT-JAZZ:4)
(0D:ぶりおけ:4)
0E:ベター
(0F:ベターSO-REAL:4)
10:MY Fire
11:ビジネス
(12:DUB I DUB:4)
13:ビッチ
(14:STOMP TO MY BEAT:4)
(15:HERO:3?)
(16:GET UP'N MOVE:2.5)
(17:IF YOU:4)
18:ビリーブ
(19:AM-3P:4)
1A:トリップ
1B:paranoia
(1C:SP-TRIP:4)
1D:Para Max
29(21):JAM
2A(22):para Clean
(23:El ritmo tropical:4)
(24:TUBTHUMPING:?)
(25:LOVE:2)
(26:偽MAX)
(XX:Keep On Movin')
(XX:20,NOVEMBER DDR VERSION)
(XX:LET THEM MOVE)


っていうか、ここまで書くと、全曲モードの順番に見えてくる?
ちょっと違う気もするけど(トリップの辺り)。

0214〜0217(0004)何らかの情報のレングス(仮にレングスAと呼ぶ)。
        0214hに、レングスAを足すと、曲ずれ情報が始まる。
        次の曲ずれ情報が多いほど、ここで設定されている情報も多い。
        何らかの関連があると思うが、全然分からない。

[0214+レングスA]〜[0214+レングスA+1]曲ずれ情報のレングス
                   (仮にレングスBと呼ぶ)

  【曲情報フォーマット】
   +0000〜+0003 曲情報レングス(レングスB)
   +0004   00h
   +0005〜+0006 譜面のカウンタ?
   +0007   00h
   +0008〜+000B 曲自体のカウンタ?時間?セクタ?
          ここの値を75で割ると、ちょうど譜面カウンタに対する秒数に
          相当する(と思う)。この値を調整することで、途中で早くなったり
          遅くなったりさせていると思われる。
          ※でも、曲を改造したときに、テンポがおかしいような事はなかった。
           筐体側では参照していない?
   (ここから先は、レングスBがうまるまで、+0004〜+000B(0008h)の繰り返し。
    譜面カウンタ?には、最初に0000h、最後に最終譜面データ数がセットされる。)

[0214+レングスA+レングスB]〜(0004)プログラムでの譜面カウンタ?(実カウンタ+αの値)

[0214+レングスA+レングスB+4]曲モード+03,00,00(←もしかして、譜面データまでのレングス?
                          偶数バイトバウンダリへの調整も含んでいる?)
                曲モードは、0202hのところと同じ値。

>0214 1バイト->a ヘッダ情報へのリンク?(2バイトかもしれないけど分からない)
 0214+a 1バイト->b ヘッダ情報のレングス(2バイトかもしれないけど分からない)
 0214+a+4+b ->00,03,00,00 ここから先が譜面?

上記の[0214+a+4+b+4]から譜面データと思われる。


※曲ずれ情報の解析
【PARA−MAXの場合】

0001A200 0F 00 02 00 44 50 2D 45 DP-E
0001A208 58 2E 34 20 01 00 1D 00 X.4
0001A210 FD FF FF FF 08 00 00 00
0001A218 00 00 00 00 14 00 00 00

0001A220 00 00 00 00 7D 01 00 00 }
0:17D
0001A228 00 60 04 00 5E 1B 00 00 ` ^
460:1B5E


:解析
0:17D :PARA-MAXは、入力不可の2小節、の前に、前奏が4小節分流れる。
     4小節は16拍。
     190BPMだから、16拍は (60/190*16)秒
     キーワード75をかけると、
     (60/190*16)*75=378.947
     379(10進数)=17B(16進数)

※ほぼ17Dに近い

460:1B5E
:460(h)=1120(d)
     1120パターン=280拍
     190BPMでキーワード75 (60/190*280)*75=6631.5789->6632
     6632(d)=19E8(h)
     先の17Dを足すと
     19E8+17D=1B65

    ※ほぼ1B5Eに近い。

【PARA−KCETの場合】

0001E200 1E 00 00 00 54 45 53 54 TEST
0001E208 30 45 20 20 01 00 2A 00 0E *
0001E210 00 00 00 00 08 00 00 00
0001E218 00 00 00 00
           14 00 00 00

0001E220 00 00 00 00 07 00 00 00
0:7
0001E228 00 60 04 00 5B 1B 00 00 ` [
460:1B5B

:解析
0:7 :PARA-KCETは、入力不可2小節分しか、空白部分が無い。

  ※実質0
     調整と思われる。

460:1B5B
:460(h)=1120(d)
     1120パターン=280拍
     180BPMでキーワード75 (60/180*280)*75=7000
     7000(d)=1B57(h)

     先の7を足すと1B57+7=1B5E

    ※ぴたり



** 上記で詳細説明が無い部分については、未解析。
** 情報求む!


<譜面データについて>

最初の32バイトは、矢印無し部分と思われる(EDIT画面の1〜2小節)。

8ビットで16分の譜面を構成。
DOUBLE及びCOUPLEの場合、8ビットがそれぞれ
1P側←↓↑→2P側←↓↑→を表現していると思われる。

   <1P側> <2P側>
  b0123 4567
   ←→↑↓ ←→↑↓


但し、アセンブラ等でプログラムが組める人は、
ビットを逆に見ると見やすいかも。

   <2P側> <1P側>
  b7654 3210
   ↓↑→← ↓↑→←

※制御情報内には、譜面の最大パターン数が曲によって設定されていると思われるが、
 それに該当しそうな値がまだ見当たらない。



★まとめ
 2000h単位の+240hあたり(詳細は上の解析を参照)からが譜面データで、
 1バイト(8ビット)が16分の情報を持つ。
 1バイト内の詳細は、

   <1P側> <2P側>
  b0123 4567
   ←→↑↓ ←→↑↓

  例)14hなら、
    hex[0001:0100]

    ビット逆[0010:1000]
    <1P側><2P側>
      ↑  ←


 また、COUPLE,DOUBLEならそのまま設定されるが、
 SINGLEの場合はVERSUS対応のためか、1P側2P側共に
 同一パターンが設定されている。
 (2P側のみでプレイする場合の対応かもしれない)

******その他
ちなみに、ゲームセンターのリンクバージョンで
COUPLEデータを持っている場合、1Pのみもしくは2Pのみでも
COUPLEデータを選択でき、1P側のみもしくは2P側のみを
遊ぶ事が可能。
−>COUPLEで作成すれば、1P側2P側別の譜面を作成可能?
−−>同一曲でSINGLEを2つ作成するくらいなら、
   COUPLEで1P2Pに別内容の譜面を作成し、気分で
   1P側2P側を使い分ける?
==>1P側をMANIAC、2P側をBASICにし、初心者練習譜面とか。
※※>あまり考えずに、普通に作成したほうが楽?

<<色々判明。>>
  DOUBLEデータは、DOUBLEモードでのみ使用可。
  SINGLE/COUPLEデータは、SINGLE/VERSUS/COUPLEで使いまわし可能。
  →ただし、筐体登録のCOUPLEデータは、COUPLEでのみ出現する模様。


*****