操作
機能 #367
完了機能 #340: [Phase 1] 非依存コア(パーサ/スキンIR/DB/タイミング)
ferrhythm-chart: beatoraja BMSModel 忠実化(#SCROLL/TOTAL解決/LNMODE 等・レーダー数値互換の前提)
機能 #367:
ferrhythm-chart: beatoraja BMSModel 忠実化(#SCROLL/TOTAL解決/LNMODE 等・レーダー数値互換の前提)
説明
目的¶
beatoraja フォーク(/workspaces/beatoraja)の songdata.db と数値レベルで bit-exact に互換させるための前提として、ferrhythm-chart のパーサー/Chart モデルを beatoraja の bms.model.BMSModel/TimeLine 相当の解決結果に合わせる。
背景¶
#350 では #SCROLL/#SPEED/#STPを明示的にスコープ外とした。しかし #366(ノーツレーダー・information 値のフル計算)を beatoraja と同値にするには、soflan(speed=bpm×scroll)・TOTAL・LN 数などの解決が beatoraja と一致している必要がある。本チケットでそのソースデータ忠実性を整える。
スコープ(設計時に詳細確定)¶
-
#SCROLL/ scroll チャンネル(SC): scroll 値のパースとChartへの保持(speed = bpm × scroll で soflan 計算に必須)。 -
#STP/#SPEED: beatoraja 拡張の stop(ms)・speed の取り込み可否を確定し必要なら実装。 -
TOTAL 解決:
#TOTAL未指定時の既定値を beatoraja の算出式(ノーツ数/モード依存)に合わせて解決し、Chartから取得可能にする。 -
LNMODE / LNTYPE / LNOBJ: LN 形成と集計が beatoraja と一致するよう確認・補強(LNTYPE 1/2、
#LNOBJ、#LNMODE)。 - MINE / invisible: beatoraja の扱いと一致させる。
-
ノーツ時刻/TimeLine セマンティクス: beat→ms 解決・小節線/セクション、
getLastTime相当の結果が beatoraja と一致することを確認。 -
charthash:
md5/sha256(生ファイルバイト列)が beatoraja のcharthash/sha256と一致することを確認。
検証(コンテナ)¶
純ロジックの TDD。cargo test グリーン。beatoraja 参照実装(/workspaces/beatoraja の bms.model)との照合。
関連¶
- #366 (ノーツレーダーフル計算)をブロックする前提チケット。
- beatoraja songdata.db スキーマ完全互換化(別途新規)の数値品質の土台。
操作