*开头表示注释,这行后面的字符串都忽略
空行*1
*---------------------- HEADER FIELD
空行*1
#PLAYER V-整数
{游戏模式,1-单人,2-双人单边,3-单人双边,4-9Key,5-13Key}
无空行
#GENRE V-字符串
{曲风}
无空行
#TITLE V-字符串
{游戏标题}
无空行
#ARTIST V-字符串
{Noter}
无空行
#BPM V-实数
{BPM标识}
无空行
#PLAYLEVEL V-整数
{星级}
无空行
#RANK V-整数
{难度等级,3-Easy,2-Normal,1-Hard,0-Very Hard}
无空行
#TOTAL V-整数
{音符总数}
无空行
#VOLWAV V-整数
{意义暂时不明}
无空行
#STAGEFILE S-字符串
{预览图文件路径(直接跟文件名,即相对路径,跟BMS文件在同一文件夹)}
空行*1
{块
#WAVXX S-字符串

XX-2位16进制数,标志此WAV项编号
S-文件路径(相对路径)
}
空行*1
{块
#BMPXX S-字符串

XX-2位16进制数,标识此图资源编号
S-文件路径(相对路径)
注:BPM00代表游戏时的LOGO
}
空行*2(其实我猜中间还有个东西,不过没发现)
{块
#BPMXX V-实数

XX-2位16进制数,标识此BPM标签编号
V-此标签代表的BPM数值
}
空行*1
{块
#STOPXX V-实数

XX-2位16进制数,标识此STOP标签编号
}
空行*1
{块
S-字符串

Expand信息,貌似没用
}
空行*3
*---------------------- MAIN DATA FIELD
空行*1
{块
  {块
  #PPPTT:V
  PPP=小节数

  TT=记录类型
     01=WAV资源放置编号,每一列分一行
     03=16进制数值BPM(当设置的BPM值小于256而且不是小数时)
     04=BGA
     06=POOR
     07=LAYER
     08=自定义BPM数值编号
     09=STOP,作用不明
     11~16+18~19=8个按键,18为最左,11~16一次向右,19为按键最后一列,数值代表

Key音WAV编号
     51~56+58~59=8个按键位置,对应长条的起始和终止点,跟上面的一样


  V:设字符串长度为A,则记录值将这个小节分为A/2个时间点,每个记录值以2位16进制数

存储,若为00则表示忽略
  }
每小节空行*1
}
文件结束