{ーナスの対象にしなかった。   ・BarDrain    No Recover 15    Death 30    AutoOnigiri 総得点を0.7倍する  ○ComboBonus   各判定ごとに以下の計算式の値を足し、その後小数点以下を切り捨てる。   (_root[head+"combo"]*3+_root.kitasc*2+(_root.iisc+_root.kitesc)*1.5+_root.matsc/2+_root[head+"maxcombo"])*plus   kitasc=キターの数、iisc=イイの数、kitesc=キテマスの数、matsc=マターリの数、combo=現在のコンボ数、maxcombo=最大コンボ数   headは通常矢印のときは空、フリーズアローのときはfが入り、判定された矢印の種類を見分ける。   また、フリーズアローのボーナスが相対的に小さくなるためフリーズアローのときはこれを2倍する(plusに値が入る)   失敗した場合、以下の計算式を引き、その後小数点以下を切り捨てる。   _root[head+"combo2"]*(13*plus)+_root.kitasc*4+(_root.kitesc+_root.iisc)*2+_root.matsc+_root[head+"maxcombo"]*(26*plus))*plus   combo2=失敗時のコンボ数、plus=矢印のとき 1、フリーズアローのとき 2(上と同様) その他については上と同様。   御覧の通り、コンボ数が多いほど多く点がひかれる計算式となっている。   通常矢印・フリーズアロー2つのコンボ数が100の倍数となったとき以下の計算式の値を足し、その後小数点以下を切り捨てる。   (kitasc-syosc-matsc-iknsc-uwasc)*_root.maxcombo+(iisc-syosc-matsc-iknsc-uwasc)*combo+(kitesc-iknsc)*fmaxcombo;   syosc=ショボーンの数、uwasc=ウワァンの数、iknsc=イクナイの数。maxcombo=通常矢印最大コンボ数、fmaxcombo=フリーズアロー最大コンボ数   タイミングを外すほどボーナス点が小さくなる。 --リプレイの概要について--  全体に触れると非常に長くなるため、流れのみを概略の形で説明する。  通常矢印・フリーズアローを問わず、原則として正しい位置から何フレームずれていたかを取得している。  なお、フリーズアローの離した地点はデータの形式上、7フレーム早いところまでしか追えない。  これについては現在いい案が思い浮かばないのでリプレイ公開当初からそのままとなっている。  また、何フレームずれていたかでは負の値が存在してしまうため、全体にショボーン判定+1を足しておく。  そうすることで、6フレーム早い(-6)であっても値は0となり、データをまとめやすい。  処理の流れはこうである。  <矢印判定時>   if(_root.replay!=true) _root.rep(j,rep_tim,""); //リプ関数   (rep_tim=main[curArr].count=ズレのフレーム数、j=右矢印、などの区別、""=矢印の種類の判別。通常か、フリーズか。)       //なお、判定用にchkという変数があるが、これは絶対値として利用されているため、新たに変数を作る必要があった。  <_root.rep()関数内の処理>   function rep(j,timing,head){ var tim=timing+8;            //負の値を無くす _root[head+"rep_chk"+j]+=tim+"X";    //「10」など2ケタの数字があるので、後で配列化できるように文字をつけて分けておく。   先ほどの「_root.rep(j,rep_tim,"")」に各々の文字が対応する。   これでリプレイデータの保存は終了である。  <リザルト画面での処理>   spiltを使い、2ケタの数字を文字に置き換える(16進数など)    rep2=rep2.split("10").join("a");・・・・・・・(16まで)   その後、先ほどのXでくっつける。    rep2=rep2.split("X").join("");   曲名・オプション設定をヘッダーに入れ、その後このデータを記述して出力する。   オプション設定はすべてIDを与えてあり、それによって判別できるようにしてあります。   また、通常のプレイ時にも同様の形をとり、同じ処理が出来るように関数ででまとめてあります。   ちなみに改行の挿入はこうなっています。特に解説はしませんが、ご了承ください。 rep_return = ""; rep_ret=int(chk_n/80); for(n=0; n<=rep_ret; n++){ var nn = 80*n; rep_return += _root.rep.substr(nn,80)+"\n"; } _root.rep=rep_return;  <読み込み時>   先ほどの方法を流用し、改行を取り除く。   また、オプション設定の読み込み、playボタンを押したときにおこなわれる処理をすべて行う。  <判定時>   16進数で保存したため、10進数に直す処理と、元の値に戻す(足した値を引く)作業が必要。   毎回charAt()で必要な文字をとりだしてから処理を行う。   基本的にはAutoPlayの流用で、   AutoPlayは0フレームになったら判定を行うが、これは各々記録した値のフレームになったら判定を行わせる、   というだけである。  フリーズアローの場合もほぼ同様だが、離し判定の場所がフリーズアローそのもののスプライト内にあることに注意。  また、フリーズアローは1回あたり2つのデータが採られる。 仕様書なのでなんか偉そうに書いてみましたw こんな感じです。何かほかにも聞きたいことがございましたらなんでもお気軽にどうぞ。 リプレイデータの内部処理を書いてみましたが、なんだか仕様というより解説になりました。