OSDN Git Service

#none リファクタ。基本的には変数名置換。一部if文の最適化など。
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Fri, 17 Jun 2011 20:10:19 +0000 (20:10 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Fri, 17 Jun 2011 20:10:19 +0000 (20:10 +0000)
#none CChipにメンバ変数2つを追加。bIsAutoPlayed(AUTO演奏されたチップか)とnLag(演奏タイミングのズレ時間)。そのうちリザルトで入力タイミング傾向を表示するために使う予定。

git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@207 16f42ceb-6dc6-49c8-ba94-f2d53467949d

DTXManiaプロジェクト/コード/スコア、曲/CDTX.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CStage演奏画面共通.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/ドラム画面/CStage演奏ドラム画面.cs

index 20ee828..8cdf8dc 100644 (file)
@@ -508,7 +508,7 @@ namespace DTXMania
                                        return true;\r
                                }\r
                        }\r
-\r
+                       public bool bIsAutoPlayed;                                              // 2011.6.10 yyagi\r
                        public CChip()\r
                        {\r
                                this.nバーからの距離dot = new STDGBVALUE<int>();\r
@@ -525,6 +525,7 @@ namespace DTXMania
                                this.n発声位置 = 0;\r
                                this.n発声時刻ms = 0;\r
                                this.nLag = -999;\r
+                               this.bIsAutoPlayed = false;\r
                                this.dbチップサイズ倍率 = 1.0;\r
                                this.bHit = false;\r
                                this.b可視 = true;\r
index b714a10..965749b 100644 (file)
@@ -6,6 +6,7 @@ using System.Drawing;
 using System.Drawing.Imaging;\r
 using System.IO;\r
 using System.Diagnostics;\r
+using System.Threading;\r
 using SlimDX;\r
 using SlimDX.Direct3D9;\r
 using FDK;\r
@@ -267,6 +268,7 @@ namespace DTXMania
                        {\r
                                CDTXMania.DTX.SwapGuitarBassInfos();\r
                        }\r
+                       this.sw = new Stopwatch();\r
                }\r
                public override void On非活性化()\r
                {\r
@@ -532,7 +534,7 @@ namespace DTXMania
                protected STDGBVALUE<int> nInputAdjustTimeMs;           // #23580 2011.1.3 yyagi\r
                protected CConfigIni.STAUTOPLAY bIsAutoPlay;            // #24239 2011.1.23 yyagi\r
 \r
-\r
+               protected Stopwatch sw;         // 2011.6.13 最適化検討用のストップウォッチ\r
 \r
 \r
                protected E判定 e指定時刻からChipのJUDGEを返す( long nTime, CDTX.CChip pChip, int nInputAdjustTime )\r
@@ -845,7 +847,7 @@ namespace DTXMania
                                                                {                                                                                                       // (ストックが増えてList<>のrealloc()が発生するのを予防する)\r
                                                                        this.L最後に再生したHHの実WAV番号.RemoveAt( 0 );\r
                                                                }\r
-                                                               if ( this.L最後に再生したHHの実WAV番号.IndexOf( pChip.n整数値・内部番号 ) < 0 )      // チップ音がまだストックされてなければ\r
+                                                               if ( !this.L最後に再生したHHの実WAV番号.Contains( pChip.n整数値・内部番号 ) )        // チップ音がまだストックされてなければ\r
                                                                {\r
                                                                        this.L最後に再生したHHの実WAV番号.Add( pChip.n整数値・内部番号 );                    // ストックする\r
                                                                }\r
@@ -911,6 +913,7 @@ namespace DTXMania
                        {\r
                                this.bAUTOでないチップが1つでもバーを通過した = true;\r
                        }\r
+                       pChip.bIsAutoPlayed = bPChipIsAutoPlay;                 // 2011.6.10 yyagi\r
                        E判定 eJudgeResult = E判定.Auto;\r
                        switch ( pChip.e楽器パート )\r
                        {\r
@@ -1142,9 +1145,11 @@ namespace DTXMania
                        for ( ; nIndex_NearestChip_Future < count; nIndex_NearestChip_Future++ )\r
                        {\r
                                CDTX.CChip chip = CDTXMania.DTX.listChip[ nIndex_NearestChip_Future ];\r
-                               if ( ( !chip.bHit && ( nChannel >= 0x11 ) ) && ( nChannel <= 0x1a ) )\r
+                               if ( !chip.bHit )\r
                                {\r
-                                       if ( ( chip.nチャンネル番号 == nChannel ) || ( chip.nチャンネル番号 == ( nChannel + 0x20 ) ) )\r
+                                       if ( ( nChannel >= 0x11 ) && ( nChannel <= 0x1a ) &&\r
+                                               ( ( chip.nチャンネル番号 == nChannel ) || ( chip.nチャンネル番号 == ( nChannel + 0x20 ) ) )\r
+                                       )\r
                                        {\r
                                                if ( chip.n発声時刻ms > nTime )\r
                                                {\r
@@ -1152,22 +1157,22 @@ namespace DTXMania
                                                }\r
                                                nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future;\r
                                        }\r
-                               }\r
-                               else if ( !chip.bHit && ( ( ( nChannel == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannel >= 0x20 ) && ( nChannel <= 0x28 ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) )\r
-                               {\r
-                                       if ( chip.n発声時刻ms > nTime )\r
+                                       else if ( ( ( ( nChannel == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannel >= 0x20 ) && ( nChannel <= 0x28 ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) )\r
                                        {\r
-                                               break;\r
+                                               if ( chip.n発声時刻ms > nTime )\r
+                                               {\r
+                                                       break;\r
+                                               }\r
+                                               nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future;\r
                                        }\r
-                                       nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future;\r
-                               }\r
-                               else if ( !chip.bHit && ( ( ( nChannel == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannel >= 0xA0 ) && ( nChannel <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) )\r
-                               {\r
-                                       if ( chip.n発声時刻ms > nTime )\r
+                                       else if ( ( ( ( nChannel == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannel >= 0xA0 ) && ( nChannel <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) )\r
                                        {\r
-                                               break;\r
+                                               if ( chip.n発声時刻ms > nTime )\r
+                                               {\r
+                                                       break;\r
+                                               }\r
+                                               nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future;\r
                                        }\r
-                                       nIndex_InitialPositionSearchingToPast = nIndex_NearestChip_Future;\r
                                }\r
 //                             nIndex_NearestChip_Future++;\r
                        }\r
@@ -1176,10 +1181,26 @@ namespace DTXMania
                        for ( ; nIndex_NearestChip_Past >= 0; nIndex_NearestChip_Past-- )\r
                        {\r
                                CDTX.CChip chip = CDTXMania.DTX.listChip[ nIndex_NearestChip_Past ];\r
-                               if ( ( ( ( !chip.bHit && ( nChannel >= 0x11 ) ) && ( ( nChannel <= 0x1a ) && ( ( chip.nチャンネル番号 == nChannel ) || ( chip.nチャンネル番号 == ( nChannel + 0x20 ) ) ) ) ) || ( !chip.bHit && ( ( ( nChannel == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) || ( ( ( nChannel >= 0x20 ) && ( nChannel <= 0x2A ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) ) ) || ( !chip.bHit && ( ( ( nChannel == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) || ( ( ( nChannel >= 0xA0 ) && ( nChannel <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannel ) ) ) ) )\r
-                               {\r
-                                       break;\r
-                               }\r
+                               if ( (!chip.bHit) &&\r
+                                               (\r
+                                                       ( ( nChannel >= 0x11 ) && ( nChannel <= 0x1a ) &&\r
+                                                               ( ( chip.nチャンネル番号 == nChannel ) || ( chip.nチャンネル番号 == ( nChannel + 0x20 ) ) )\r
+                                                       )\r
+                                                       ||\r
+                                                       (\r
+                                                               ( ( nChannel == 0x2f ) && ( chip.e楽器パート == E楽器パート.GUITAR ) ) ||\r
+                                                               ( ( ( nChannel >= 0x20 ) && ( nChannel <= 0x28 ) ) && ( chip.nチャンネル番号 == nChannel ) )\r
+                                                       )\r
+                                                       ||\r
+                                                       (\r
+                                                               ( ( nChannel == 0xaf ) && ( chip.e楽器パート == E楽器パート.BASS ) ) ||\r
+                                                               ( ( ( nChannel >= 0xA0 ) && ( nChannel <= 0xa8 ) ) && ( chip.nチャンネル番号 == nChannel ) )\r
+                                                       )\r
+                                               )\r
+                                       )\r
+                                       {\r
+                                               break;\r
+                                       }\r
 //                             nIndex_NearestChip_Past--;\r
                        }\r
                        if ( ( nIndex_NearestChip_Future == count ) && ( nIndex_NearestChip_Past < 0 ) )        // 検索対象が過去未来どちらにも見つからなかった場合\r
@@ -1470,7 +1491,7 @@ namespace DTXMania
                        }\r
 \r
                        //double speed = 264.0; // BPM150の時の1小節の長さ[dot]\r
-                       double speed = 234.0;   // BPM150の時の1小節の長さ[dot]\r
+                       const double speed = 234.0;     // BPM150の時の1小節の長さ[dot]\r
 \r
                        double ScrollSpeedDrums = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Drums + 1.0 ) * 0.5 * 37.5 * speed / 60000.0;\r
                        double ScrollSpeedGuitar = ( this.act譜面スクロール速度.db現在の譜面スクロール速度.Guitar + 1.0 ) * 0.5 * 0.5 * 37.5 * speed / 60000.0;\r
@@ -1498,8 +1519,7 @@ namespace DTXMania
                                bool bPChipIsAutoPlay = false;\r
                                if ( (\r
                                                ( ( pChip.e楽器パート == E楽器パート.DRUMS ) && bIsAutoPlay[ this.nチャンネル0Atoレーン07[ pChip.nチャンネル番号 - 0x11 ] ] ) ||\r
-                                               ( ( pChip.e楽器パート == E楽器パート.GUITAR ) && bIsAutoPlay.Guitar )\r
-                                       ) ||\r
+                                               ( ( pChip.e楽器パート == E楽器パート.GUITAR ) && bIsAutoPlay.Guitar ) ) ||\r
                                                ( ( pChip.e楽器パート == E楽器パート.BASS ) && bIsAutoPlay.Bass )\r
                                  )\r
                                //                              if ((pChip.e楽器パート == E楽器パート.DRUMS) && bIsAutoPlay[this.nチャンネル0Atoレーン07[pChip.nチャンネル番号 - 0x11]])\r
@@ -1507,19 +1527,7 @@ namespace DTXMania
                                        bPChipIsAutoPlay = true;\r
                                }\r
 \r
-                               int nInputAdjustTime = 0;\r
-                               if ( bPChipIsAutoPlay )\r
-                               {\r
-                                       //nInputAdjustTime = 0;\r
-                               }\r
-                               else if ( pChip.e楽器パート == E楽器パート.UNKNOWN )\r
-                               {\r
-                                       //nInputAdjustTime = 0;\r
-                               }\r
-                               else\r
-                               {\r
-                                       nInputAdjustTime = this.nInputAdjustTimeMs[ (int) pChip.e楽器パート ];\r
-                               }\r
+                               int nInputAdjustTime = ( bPChipIsAutoPlay || (pChip.e楽器パート == E楽器パート.UNKNOWN) )? 0 : this.nInputAdjustTimeMs[ (int) pChip.e楽器パート ];\r
 \r
                                if ( ( ( pChip.e楽器パート != E楽器パート.UNKNOWN ) && !pChip.bHit ) &&\r
                                        ( ( pChip.nバーからの距離dot.Drums < 0 ) && ( this.e指定時刻からChipのJUDGEを返す( CDTXMania.Timer.n現在時刻, pChip, nInputAdjustTime ) == E判定.Miss ) ) )\r
@@ -1528,17 +1536,20 @@ namespace DTXMania
                                }\r
                                switch ( pChip.nチャンネル番号 )\r
                                {\r
+                                       #region [ 01: BGM ]\r
                                        case 0x01:      // BGM\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
                                                {\r
                                                        pChip.bHit = true;\r
                                                        if ( configIni.bBGM音を発声する )\r
                                                        {\r
+                                                               // yyagi: 10レーン目(RD?)でBGMを再生するよりは、あまり使われないFTレーンを使った方が負荷が軽くならないか?\r
                                                                dTX.tチップの再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, 10, dTX.nモニタを考慮した音量( E楽器パート.UNKNOWN ) );\r
                                                        }\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 03: BPM変更 ]\r
                                        case 0x03:      // BPM変更\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
                                                {\r
@@ -1546,7 +1557,8 @@ namespace DTXMania
                                                        this.actPlayInfo.dbBPM = ( pChip.n整数値 * ( ( (double) configIni.n演奏速度 ) / 20.0 ) ) + dTX.BASEBPM;\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 04, 07, 55, 56,57, 58, 59, 60:レイヤーBGA ]\r
                                        case 0x04:      // レイヤーBGA\r
                                        case 0x07:\r
                                        case 0x55:\r
@@ -1593,7 +1605,8 @@ namespace DTXMania
                                                        }\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 08: BPM変更(拡張) ]\r
                                        case 0x08:      // BPM変更(拡張)\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
                                                {\r
@@ -1604,7 +1617,8 @@ namespace DTXMania
                                                        }\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 11-1a: ドラム演奏 ]\r
                                        case 0x11:      // ドラム演奏\r
                                        case 0x12:\r
                                        case 0x13:\r
@@ -1617,7 +1631,8 @@ namespace DTXMania
                                        case 0x1a:\r
                                                this.t進行描画・チップ・ドラムス( configIni, ref dTX, ref pChip );\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 1f: フィルインサウンド(ドラム) ]\r
                                        case 0x1f:      // フィルインサウンド(ドラム)\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
                                                {\r
@@ -1625,7 +1640,8 @@ namespace DTXMania
                                                        this.r現在の歓声Chip.Drums = pChip;\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 20-27: ギター演奏 ]\r
                                        case 0x20:      // ギター演奏\r
                                        case 0x21:\r
                                        case 0x22:\r
@@ -1636,11 +1652,13 @@ namespace DTXMania
                                        case 0x27:\r
                                                this.t進行描画・チップ・ギター( configIni, ref dTX, ref pChip );\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 28: ウェイリング(ギター) ]\r
                                        case 0x28:      // ウェイリング(ギター)\r
                                                this.t進行描画・チップ・ギター・ウェイリング( configIni, ref dTX, ref pChip );\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 2f: ウェイリングサウンド(ギター) ]\r
                                        case 0x2f:      // ウェイリングサウンド(ギター)\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
                                                {\r
@@ -1648,7 +1666,8 @@ namespace DTXMania
                                                        this.r現在の歓声Chip.Guitar = pChip;\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 31-3a: 不可視チップ配置(ドラム) ]\r
                                        case 0x31:      // 不可視チップ配置(ドラム)\r
                                        case 0x32:\r
                                        case 0x33:\r
@@ -1664,12 +1683,15 @@ namespace DTXMania
                                                        pChip.bHit = true;\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 50: 小節線 ]\r
                                        case 0x50:      // 小節線\r
                                                {\r
                                                        this.t進行描画・チップ・小節線( configIni, ref dTX, ref pChip );\r
                                                        break;\r
                                                }\r
+                                       #endregion\r
+                                       #region [ 51: 拍線 ]\r
                                        case 0x51:      // 拍線\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
                                                {\r
@@ -1680,18 +1702,21 @@ namespace DTXMania
                                                        this.txチップ.t2D描画( CDTXMania.app.Device, 0x23, configIni.bReverse.Drums ? ( ( 0x38 + pChip.nバーからの距離dot.Drums ) - 1 ) : ( ( 0x1a6 - pChip.nバーからの距離dot.Drums ) - 1 ), new Rectangle( 0, 0x1bf, 0x128, 1 ) );\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 52: MIDIコーラス ]\r
                                        case 0x52:      // MIDIコーラス\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
                                                {\r
                                                        pChip.bHit = true;\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 53: フィルイン ]\r
                                        case 0x53:      // フィルイン\r
                                                this.t進行描画・チップ・フィルイン( configIni, ref dTX, ref pChip );\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 54: 動画再生 ]\r
                                        case 0x54:      // 動画再生\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
                                                {\r
@@ -1717,7 +1742,8 @@ namespace DTXMania
                                                        }\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ 61-92: 自動再生(BGM, SE) ]\r
                                        case 0x61:\r
                                        case 0x62:\r
                                        case 0x63:\r
@@ -1761,7 +1787,8 @@ namespace DTXMania
                                                        }\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ a0-a7: ベース演奏 ]\r
                                        case 0xa0:      // ベース演奏\r
                                        case 0xa1:\r
                                        case 0xa2:\r
@@ -1772,11 +1799,13 @@ namespace DTXMania
                                        case 0xa7:\r
                                                this.t進行描画・チップ・ベース( configIni, ref dTX, ref pChip );\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ a8: ウェイリング(ベース) ]\r
                                        case 0xa8:      // ウェイリング(ベース)\r
                                                this.t進行描画・チップ・ベース・ウェイリング( configIni, ref dTX, ref pChip );\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ af: ウェイリングサウンド(ベース) ]\r
                                        case 0xaf:      // ウェイリングサウンド(ベース)\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
                                                {\r
@@ -1784,7 +1813,8 @@ namespace DTXMania
                                                        this.r現在の歓声Chip.Bass = pChip;\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ b1-b9, bc: 空打ち音設定(ドラム) ]\r
                                        case 0xb1:      // 空打ち音設定(ドラム)\r
                                        case 0xb2:\r
                                        case 0xb3:\r
@@ -1797,7 +1827,8 @@ namespace DTXMania
                                        case 0xbc:\r
                                                this.t進行描画・チップ・空打ち音設定・ドラム( configIni, ref dTX, ref pChip );\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ ba: 空打ち音設定(ギター) ]\r
                                        case 0xba:      // 空打ち音設定(ギター)\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Guitar < 0 ) )\r
                                                {\r
@@ -1806,7 +1837,8 @@ namespace DTXMania
                                                        pChip.nチャンネル番号 = 0x20;\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ bb: 空打ち音設定(ベース) ]\r
                                        case 0xbb:      // 空打ち音設定(ベース)\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Bass < 0 ) )\r
                                                {\r
@@ -1815,7 +1847,8 @@ namespace DTXMania
                                                        pChip.nチャンネル番号 = 0xA0;\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ c4, c7, d5-d9, e0: BGA画像入れ替え ]\r
                                        case 0xc4:\r
                                        case 0xc7:\r
                                        case 0xd5:\r
@@ -1839,13 +1872,15 @@ namespace DTXMania
                                                        }\r
                                                }\r
                                                break;\r
-\r
+                                       #endregion\r
+                                       #region [ その他(未定義) ]\r
                                        default:\r
                                                if ( !pChip.bHit && ( pChip.nバーからの距離dot.Drums < 0 ) )\r
                                                {\r
                                                        pChip.bHit = true;\r
                                                }\r
                                                break;\r
+                                       #endregion \r
                                }\r
 \r
                                nCurrentTopChip++;\r
@@ -2126,6 +2161,7 @@ namespace DTXMania
 \r
                protected virtual void t入力処理・ギター()\r
                {\r
+                       #region [ スクロール速度変更 ]\r
                        if ( CDTXMania.Pad.b押されている( E楽器パート.GUITAR, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.GUITAR, Eパッド.B ) )\r
                        {\r
                                CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar + 1, 0x7cf );\r
@@ -2134,9 +2170,12 @@ namespace DTXMania
                        {\r
                                CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Guitar - 1, 0 );\r
                        }\r
+                       #endregion\r
 \r
-                       if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Guitar )\r
+                       if ( !CDTXMania.ConfigIni.bGuitar有効 || !CDTXMania.DTX.bチップがある.Guitar )\r
                        {\r
+                               return;\r
+                       }\r
                                if ( bIsAutoPlay.Guitar )\r
                                {\r
                                        CDTX.CChip chip = this.r次にくるギターChipを更新して返す();\r
@@ -2188,7 +2227,6 @@ namespace DTXMania
                                        {\r
                                                foreach ( STInputEvent event2 in events )\r
                                                {\r
-                                                       CDTX.CChip chip4;\r
                                                        if ( !event2.b押された )\r
                                                        {\r
                                                                continue;\r
@@ -2213,16 +2251,18 @@ namespace DTXMania
                                                                }\r
                                                                this.tチップのヒット処理( nTime, pChip );\r
                                                                this.tサウンド再生( pChip, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, e判定 == E判定.Poor );\r
-                                                               CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 40, this.nInputAdjustTimeMs.Guitar, 140 );\r
+                                                               CDTX.CChip item = this.r指定時刻に一番近い未ヒットChip( nTime, 0x28, this.nInputAdjustTimeMs.Guitar, 140 );\r
                                                                if ( item != null )\r
                                                                {\r
                                                                        this.queWailing.Guitar.Enqueue( item );\r
                                                                }\r
                                                                continue;\r
                                                        }\r
-                                                       if ( ( ( chip4 = this.r現在の空うちギターChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar ) ) != null ) )\r
+\r
+                                                       CDTX.CChip chipPicked;\r
+                                                       if ( ( ( chipPicked = this.r現在の空うちギターChip ) != null ) || ( ( chipPicked = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0x2f, this.nInputAdjustTimeMs.Guitar ) ) != null ) )\r
                                                        {\r
-                                                               this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, true );\r
+                                                               this.tサウンド再生( chipPicked, CDTXMania.Timer.nシステム時刻, E楽器パート.GUITAR, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Guitar, true );\r
                                                        }\r
                                                        if ( !CDTXMania.ConfigIni.bLight.Guitar )\r
                                                        {\r
@@ -2230,22 +2270,22 @@ namespace DTXMania
                                                        }\r
                                                }\r
                                        }\r
-                                       List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Wail );\r
-                                       if ( ( list2 != null ) && ( list2.Count > 0 ) )\r
+                                       List<STInputEvent> list = CDTXMania.Pad.GetEvents( E楽器パート.GUITAR, Eパッド.Wail );\r
+                                       if ( ( list != null ) && ( list.Count > 0 ) )\r
                                        {\r
-                                               foreach ( STInputEvent event3 in list2 )\r
+                                               foreach ( STInputEvent eventWailed in list )\r
                                                {\r
-                                                       CDTX.CChip chip5;\r
-                                                       if ( !event3.b押された )\r
+                                                       if ( !eventWailed.b押された )\r
                                                        {\r
                                                                continue;\r
                                                        }\r
-                                                       long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
-                                                       while ( ( this.queWailing.Guitar.Count > 0 ) && ( ( chip5 = this.queWailing.Guitar.Dequeue() ) != null ) )\r
+                                                       long nTimeWailed = eventWailed.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
+                                                       CDTX.CChip chipWailing;\r
+                                                       while ( ( this.queWailing.Guitar.Count > 0 ) && ( ( chipWailing = this.queWailing.Guitar.Dequeue() ) != null ) )\r
                                                        {\r
-                                                               if ( ( num6 - chip5.n発声時刻ms ) <= 1000 )         // #24245 2011.1.26 yyagi: 800 -> 1000\r
+                                                               if ( ( nTimeWailed - chipWailing.n発声時刻ms ) <= 1000 )            // #24245 2011.1.26 yyagi: 800 -> 1000\r
                                                                {\r
-                                                                       chip5.bHit = true;\r
+                                                                       chipWailing.bHit = true;\r
                                                                        this.actWailingBonus.Start( E楽器パート.GUITAR, this.r現在の歓声Chip.Guitar );\r
                                                                        if ( !bIsAutoPlay.Guitar )\r
                                                                        {\r
@@ -2257,10 +2297,10 @@ namespace DTXMania
                                                }\r
                                        }\r
                                }\r
-                       }\r
                }\r
                protected virtual void t入力処理・ベース()\r
                {\r
+                       #region [ スクロール速度変更 ]\r
                        if ( CDTXMania.Pad.b押されている( E楽器パート.BASS, Eパッド.Decide ) && CDTXMania.Pad.b押された( E楽器パート.BASS, Eパッド.B ) )\r
                        {\r
                                CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Min( CDTXMania.ConfigIni.n譜面スクロール速度.Bass + 1, 0x7cf );\r
@@ -2269,9 +2309,12 @@ namespace DTXMania
                        {\r
                                CDTXMania.ConfigIni.n譜面スクロール速度.Bass = Math.Max( CDTXMania.ConfigIni.n譜面スクロール速度.Bass - 1, 0 );\r
                        }\r
+                       #endregion\r
 \r
-                       if ( CDTXMania.ConfigIni.bGuitar有効 && CDTXMania.DTX.bチップがある.Bass )\r
+                       if ( !CDTXMania.ConfigIni.bGuitar有効 || !CDTXMania.DTX.bチップがある.Bass )\r
                        {\r
+                               return;\r
+                       }\r
                                if ( bIsAutoPlay.Bass )\r
                                {\r
                                        CDTX.CChip chip = this.r次にくるベースChipを更新して返す();\r
@@ -2323,7 +2366,6 @@ namespace DTXMania
                                        {\r
                                                foreach ( STInputEvent event2 in events )\r
                                                {\r
-                                                       CDTX.CChip chip4;\r
                                                        if ( !event2.b押された )\r
                                                        {\r
                                                                continue;\r
@@ -2355,9 +2397,11 @@ namespace DTXMania
                                                                }\r
                                                                continue;\r
                                                        }\r
-                                                       if ( ( ( chip4 = this.r現在の空うちベースChip ) != null ) || ( ( chip4 = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0xaf, this.nInputAdjustTimeMs.Bass ) ) != null ) )\r
+\r
+                                                       CDTX.CChip chipPicked;\r
+                                                       if ( ( ( chipPicked = this.r現在の空うちベースChip ) != null ) || ( ( chipPicked = this.r指定時刻に一番近いChip・ヒット未済問わず不可視考慮( nTime, 0xaf, this.nInputAdjustTimeMs.Bass ) ) != null ) )\r
                                                        {\r
-                                                               this.tサウンド再生( chip4, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, true );\r
+                                                               this.tサウンド再生( chipPicked, CDTXMania.Timer.nシステム時刻, E楽器パート.BASS, CDTXMania.ConfigIni.n手動再生音量, CDTXMania.ConfigIni.b演奏音を強調する.Bass, true );\r
                                                        }\r
                                                        if ( !CDTXMania.ConfigIni.bLight.Bass )\r
                                                        {\r
@@ -2365,22 +2409,22 @@ namespace DTXMania
                                                        }\r
                                                }\r
                                        }\r
-                                       List<STInputEvent> list2 = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Wail );\r
-                                       if ( ( list2 != null ) && ( list2.Count > 0 ) )\r
+                                       List<STInputEvent> list = CDTXMania.Pad.GetEvents( E楽器パート.BASS, Eパッド.Wail );\r
+                                       if ( ( list != null ) && ( list.Count > 0 ) )\r
                                        {\r
-                                               foreach ( STInputEvent event3 in list2 )\r
+                                               foreach ( STInputEvent eventWailed in list )\r
                                                {\r
-                                                       CDTX.CChip chip5;\r
-                                                       if ( !event3.b押された )\r
+                                                       if ( !eventWailed.b押された )\r
                                                        {\r
                                                                continue;\r
                                                        }\r
-                                                       long num6 = event3.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
-                                                       while ( ( this.queWailing.Bass.Count > 0 ) && ( ( chip5 = this.queWailing.Bass.Dequeue() ) != null ) )\r
+                                                       long nTimeWailed = eventWailed.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
+                                                       CDTX.CChip chipWailing;\r
+                                                       while ( ( this.queWailing.Bass.Count > 0 ) && ( ( chipWailing = this.queWailing.Bass.Dequeue() ) != null ) )\r
                                                        {\r
-                                                               if ( ( num6 - chip5.n発声時刻ms ) <= 1000 )         // #24245 2011.1.26 yyagi: 800 -> 1000\r
+                                                               if ( ( nTimeWailed - chipWailing.n発声時刻ms ) <= 1000 )            // #24245 2011.1.26 yyagi: 800 -> 1000\r
                                                                {\r
-                                                                       chip5.bHit = true;\r
+                                                                       chipWailing.bHit = true;\r
                                                                        this.actWailingBonus.Start( E楽器パート.BASS, this.r現在の歓声Chip.Bass );\r
                                                                        if ( !bIsAutoPlay.Bass )\r
                                                                        {\r
@@ -2392,7 +2436,6 @@ namespace DTXMania
                                                }\r
                                        }\r
                                }\r
-                       }\r
                }\r
 \r
 #if true               // DAMAGELEVELTUNING\r
index d579e1c..b3cff2f 100644 (file)
@@ -6,6 +6,7 @@ using System.Drawing;
 using System.Drawing.Imaging;\r
 using System.IO;\r
 using System.Diagnostics;\r
+using System.Threading;\r
 using SlimDX;\r
 using SlimDX.Direct3D9;\r
 using FDK;\r
@@ -133,10 +134,11 @@ namespace DTXMania
                }\r
                public override int On進行描画()\r
                {\r
+                       base.sw.Start();\r
                        if( !base.b活性化してない )\r
                        {\r
-                               bool flag = false;\r
-                               bool flag2 = false;\r
+                               bool bIsFinishedPlaying = false;\r
+                               bool bIsFinishedFadeout = false;\r
                                if( base.b初めての進行描画 )\r
                                {\r
                                        CDTXMania.Timer.tリセット();\r
@@ -175,7 +177,7 @@ namespace DTXMania
                                this.t進行描画・WailingBonus();\r
                                this.t進行描画・譜面スクロール速度();\r
                                this.t進行描画・チップアニメ();\r
-                               flag = this.t進行描画・チップ(E楽器パート.DRUMS);\r
+                               bIsFinishedPlaying = this.t進行描画・チップ(E楽器パート.DRUMS);\r
                                this.t進行描画・演奏情報();\r
                                this.t進行描画・ドラムパッド();\r
                                this.t進行描画・判定文字列2・判定ライン上指定の場合();\r
@@ -183,15 +185,16 @@ namespace DTXMania
                                this.t進行描画・チップファイアD();\r
                                this.t進行描画・チップファイアGB();\r
                                this.t進行描画・STAGEFAILED();\r
-                               flag2 = this.t進行描画・フェードイン・アウト();\r
-                               if( flag && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )\r
+                               bIsFinishedFadeout = this.t進行描画・フェードイン・アウト();\r
+                               if( bIsFinishedPlaying && ( base.eフェーズID == CStage.Eフェーズ.共通_通常状態 ) )\r
                                {\r
                                        this.eフェードアウト完了時の戻り値 = E演奏画面の戻り値.ステージクリア;\r
                                        base.eフェーズID = CStage.Eフェーズ.演奏_STAGE_CLEAR_フェードアウト;\r
                                        this.actFOClear.tフェードアウト開始();\r
                                }\r
-                               if( flag2 )\r
+                               if( bIsFinishedFadeout )\r
                                {\r
+                                       Debug.WriteLine( "Total On進行描画=" + sw.ElapsedMilliseconds + "ms" );\r
                                        return (int) this.eフェードアウト完了時の戻り値;\r
                                }\r
 \r
@@ -200,6 +203,7 @@ namespace DTXMania
                                if( CDTXMania.act現在入力を占有中のプラグイン == null )\r
                                        this.tキー入力();\r
                        }\r
+                       base.sw.Stop();\r
                        return 0;\r
                }\r
 \r
@@ -279,9 +283,9 @@ namespace DTXMania
                        {\r
                                index -= 0x31;\r
                        }\r
-                       int num2 = this.nチャンネル0Atoレーン07[ index ];\r
-                       int nLane = this.nチャンネル0Atoパッド08[ index ];\r
-                       bool bPChipIsAutoPlay = bIsAutoPlay[ num2 ];\r
+                       int nLane = this.nチャンネル0Atoレーン07[ index ];\r
+                       int nPad = this.nチャンネル0Atoパッド08[ index ];\r
+                       bool bPChipIsAutoPlay = bIsAutoPlay[ nLane ];\r
                        int nInputAdjustTime = bPChipIsAutoPlay ? 0 : this.nInputAdjustTimeMs.Drums;\r
                        E判定 e判定 = this.e指定時刻からChipのJUDGEを返す( nHitTime, pChip, nInputAdjustTime );\r
                        if( e判定 == E判定.Miss )\r
@@ -289,32 +293,32 @@ namespace DTXMania
                                return false;\r
                        }\r
                        this.tチップのヒット処理( nHitTime, pChip );\r
-                       this.actLaneFlushD.Start( (Eドラムレーン) num2, ( (float) n強弱度合い0to127 ) / 127f );\r
-                       this.actPad.Hit( nLane );\r
+                       this.actLaneFlushD.Start( (Eドラムレーン) nLane, ( (float) n強弱度合い0to127 ) / 127f );\r
+                       this.actPad.Hit( nPad );\r
                        if( ( e判定 != E判定.Poor ) && ( e判定 != E判定.Miss ) )\r
                        {\r
                                bool flag = this.bフィルイン中;\r
                                bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip );\r
-                               bool flag3 = flag2;\r
-                               this.actChipFireD.Start( (Eドラムレーン) num2, flag, flag2, flag3 );\r
+                               // bool flag3 = flag2;\r
+                               this.actChipFireD.Start( (Eドラムレーン) nLane, flag, flag2, flag2 );\r
                        }\r
                        if( CDTXMania.ConfigIni.bドラム打音を発声する )\r
                        {\r
                                CDTX.CChip rChip = null;\r
-                               bool flag4 = true;\r
+                               bool bIsChipsoundPriorToPad = true;\r
                                if( ( ( type == Eパッド.HH ) || ( type == Eパッド.HHO ) ) || ( type == Eパッド.LC ) )\r
                                {\r
-                                       flag4 = CDTXMania.ConfigIni.eHitSoundPriorityHH == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                       bIsChipsoundPriorToPad = CDTXMania.ConfigIni.eHitSoundPriorityHH == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
                                }\r
                                else if( ( type == Eパッド.LT ) || ( type == Eパッド.FT ) )\r
                                {\r
-                                       flag4 = CDTXMania.ConfigIni.eHitSoundPriorityFT == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                       bIsChipsoundPriorToPad = CDTXMania.ConfigIni.eHitSoundPriorityFT == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
                                }\r
                                else if( ( type == Eパッド.CY ) || ( type == Eパッド.RD ) )\r
                                {\r
-                                       flag4 = CDTXMania.ConfigIni.eHitSoundPriorityCY == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
+                                       bIsChipsoundPriorToPad = CDTXMania.ConfigIni.eHitSoundPriorityCY == E打ち分け時の再生の優先順位.ChipがPadより優先;\r
                                }\r
-                               if( flag4 )\r
+                               if( bIsChipsoundPriorToPad )\r
                                {\r
                                        rChip = pChip;\r
                                }\r
@@ -356,11 +360,11 @@ namespace DTXMania
        \r
                protected override void t進行描画・AVI()\r
                {\r
-                       base.t進行描画・AVI( 0x152, 0x39 );\r
+                       base.t進行描画・AVI( 338, 57 );\r
                }\r
                protected override void t進行描画・BGA()\r
                {\r
-                       base.t進行描画・BGA( 0x152, 0x39 );\r
+                       base.t進行描画・BGA( 338, 57 );\r
                }\r
                protected override void t進行描画・DANGER()\r
                {\r
@@ -369,9 +373,9 @@ namespace DTXMania
 \r
                protected override void t進行描画・Wailing枠()\r
                {\r
-                       base.t進行描画・Wailing枠( 0x24b, 0x1de,\r
-                               CDTXMania.ConfigIni.bReverse.Guitar ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45,\r
-                               CDTXMania.ConfigIni.bReverse.Bass ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 0x45\r
+                       base.t進行描画・Wailing枠( 587, 478,\r
+                               CDTXMania.ConfigIni.bReverse.Guitar ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 69,\r
+                               CDTXMania.ConfigIni.bReverse.Bass ? ( 400 - this.txWailing枠.sz画像サイズ.Height ) : 69\r
                        );\r
                }\r
                private void t進行描画・ギターベースフレーム()\r
@@ -380,12 +384,12 @@ namespace DTXMania
                        {\r
                                if( CDTXMania.DTX.bチップがある.Guitar )\r
                                {\r
-                                       for( int i = 0; i < 0x163; i += 0x80 )\r
+                                       for( int i = 0; i < 355; i += 0x80 )\r
                                        {\r
                                                Rectangle rectangle = new Rectangle( 0, 0, 0x6d, 0x80 );\r
-                                               if( ( i + 0x80 ) > 0x163 )\r
+                                               if( ( i + 0x80 ) > 355 )\r
                                                {\r
-                                                       rectangle.Height -= ( i + 0x80 ) - 0x163;\r
+                                                       rectangle.Height -= ( i + 0x80 ) - 355;\r
                                                }\r
                                                if( this.txレーンフレームGB != null )\r
                                                {\r
@@ -395,12 +399,12 @@ namespace DTXMania
                                }\r
                                if( CDTXMania.DTX.bチップがある.Bass )\r
                                {\r
-                                       for( int j = 0; j < 0x163; j += 0x80 )\r
+                                       for( int j = 0; j < 355; j += 0x80 )\r
                                        {\r
                                                Rectangle rectangle2 = new Rectangle( 0, 0, 0x6d, 0x80 );\r
-                                               if( ( j + 0x80 ) > 0x163 )\r
+                                               if( ( j + 0x80 ) > 355 )\r
                                                {\r
-                                                       rectangle2.Height -= ( j + 0x80 ) - 0x163;\r
+                                                       rectangle2.Height -= ( j + 0x80 ) - 355;\r
                                                }\r
                                                if( this.txレーンフレームGB != null )\r
                                                {\r
@@ -463,12 +467,12 @@ namespace DTXMania
                }\r
                protected override void t進行描画・パネル文字列()\r
                {\r
-                       base.t進行描画・パネル文字列( 0x150, 0x1ab );\r
+                       base.t進行描画・パネル文字列( 336, 427 );\r
                }\r
 \r
                protected override void t進行描画・演奏情報()\r
                {\r
-                       base.t進行描画・演奏情報( 0x152, 0x39 );\r
+                       base.t進行描画・演奏情報( 338, 57 );\r
                }\r
 \r
                protected override void t入力処理・ドラム()\r
@@ -511,32 +515,13 @@ namespace DTXMania
 \r
                                        foreach( STInputEvent event2 in events )\r
                                        {\r
-                                               #region [ 変数宣言 ]\r
-                                               //-----------------------------\r
-                                               int num3;\r
-                                               int num4;\r
-                                               int num5;\r
-                                               int num6;\r
-                                               int num7;\r
-                                               int num8;\r
-                                               int num9;\r
-                                               int num10;\r
-                                               int num11;\r
-                                               int num12;\r
-                                               int num13;\r
-                                               int num14;\r
-                                               int num15;\r
-                                               int num16;\r
-                                               //-----------------------------\r
-                                               #endregion\r
-\r
                                                if( !event2.b押された )\r
                                                        continue;\r
 \r
                                                long nTime = event2.nTimeStamp - CDTXMania.Timer.n前回リセットした時のシステム時刻;\r
                                                int nInputAdjustTime = bIsAutoPlay[ this.nチャンネル0Atoレーン07[ (int)nPad ] ] ? 0 : nInputAdjustTimeMs.Drums;\r
 \r
-                                               bool flag = false;\r
+                                               bool bHitted = false;\r
 \r
 \r
                                                #region [ switch( ( (Eパッド) nPad ) ) ]\r
@@ -544,7 +529,7 @@ namespace DTXMania
                                                switch( ( (Eパッド) nPad ) )\r
                                                {\r
                                                        case Eパッド.HH:\r
-                                                               #region [ *** ]\r
+                                                               #region [ HHとLC(groupingしている場合) のヒット処理 ]\r
                                                                //-----------------------------\r
                                                                {\r
                                                                        if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HH )\r
@@ -559,7 +544,7 @@ namespace DTXMania
                                                                        switch ( eHHGroup )\r
                                                                        {\r
                                                                                case EHHGroup.ハイハットのみ打ち分ける:\r
-                                                                                       #region [ *** ]\r
+                                                                                       #region [ HCとLCのヒット処理 ]\r
                                                                                        //-----------------------------\r
                                                                                        if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
@@ -576,26 +561,26 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定LC != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
-                                                                                       if ( !flag )\r
+                                                                                       if ( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
                                                                                //-----------------------------\r
                                                                                        #endregion\r
 \r
                                                                                case EHHGroup.左シンバルのみ打ち分ける:\r
-                                                                                       #region [ *** ]\r
+                                                                                       #region [ HCとHOのヒット処理 ]\r
                                                                                        //-----------------------------\r
                                                                                        if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
                                                                                        {\r
@@ -612,48 +597,49 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
-                                                                                       if ( !flag )\r
+                                                                                       if ( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
                                                                                //-----------------------------\r
                                                                                        #endregion\r
 \r
                                                                                case EHHGroup.全部共通:\r
-                                                                                       #region [ *** ]\r
+                                                                                       #region [ HC,HO,LCのヒット処理 ]\r
                                                                                        //-----------------------------\r
                                                                                        if ( ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               CDTX.CChip chip4;\r
+                                                                                               CDTX.CChip chip;\r
                                                                                                CDTX.CChip[] chipArray = new CDTX.CChip[] { chipHC, chipHO, chipLC };\r
+                                                                                               // ここから、chipArrayをn発生位置の小さい順に並び替える\r
                                                                                                if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
                                                                                                {\r
-                                                                                                       chip4 = chipArray[ 1 ];\r
+                                                                                                       chip = chipArray[ 1 ];\r
                                                                                                        chipArray[ 1 ] = chipArray[ 2 ];\r
-                                                                                                       chipArray[ 2 ] = chip4;\r
+                                                                                                       chipArray[ 2 ] = chip;\r
                                                                                                }\r
                                                                                                if ( chipArray[ 0 ].n発声位置 > chipArray[ 1 ].n発声位置 )\r
                                                                                                {\r
-                                                                                                       chip4 = chipArray[ 0 ];\r
+                                                                                                       chip = chipArray[ 0 ];\r
                                                                                                        chipArray[ 0 ] = chipArray[ 1 ];\r
-                                                                                                       chipArray[ 1 ] = chip4;\r
+                                                                                                       chipArray[ 1 ] = chip;\r
                                                                                                }\r
                                                                                                if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
                                                                                                {\r
-                                                                                                       chip4 = chipArray[ 1 ];\r
+                                                                                                       chip = chipArray[ 1 ];\r
                                                                                                        chipArray[ 1 ] = chipArray[ 2 ];\r
-                                                                                                       chipArray[ 2 ] = chip4;\r
+                                                                                                       chipArray[ 2 ] = chip;\r
                                                                                                }\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 0 ], event2.nVelocity );\r
                                                                                                if ( chipArray[ 0 ].n発声位置 == chipArray[ 1 ].n発声位置 )\r
@@ -664,7 +650,7 @@ namespace DTXMania
                                                                                                {\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HH, chipArray[ 2 ], event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
                                                                                        {\r
@@ -681,7 +667,7 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
@@ -698,7 +684,7 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
@@ -715,44 +701,44 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HH, chipHO, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定LC != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HH, chipLC, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
-                                                                                       if ( !flag )\r
+                                                                                       if ( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
                                                                                //-----------------------------\r
                                                                                        #endregion\r
 \r
                                                                                default:\r
-                                                                                       #region [ *** ]\r
+                                                                                       #region [ 全部打ち分け時のヒット処理 ]\r
                                                                                        //-----------------------------\r
                                                                                        if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HH, chipHC, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
-                                                                                       if ( !flag )\r
+                                                                                       if ( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
                                                                                //-----------------------------\r
                                                                                        #endregion\r
                                                                        }\r
-                                                                       if ( !flag )\r
+                                                                       if ( !bHitted )\r
                                                                                break;\r
                                                                        continue;\r
                                                                }\r
@@ -760,7 +746,7 @@ namespace DTXMania
                                                                #endregion\r
 \r
                                                        case Eパッド.SD:\r
-                                                               #region [ *** ]\r
+                                                               #region [ SDのヒット処理 ]\r
                                                                //-----------------------------\r
                                                                if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.SD)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
                                                                        continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
@@ -771,7 +757,7 @@ namespace DTXMania
                                                                #endregion\r
 \r
                                                        case Eパッド.BD:\r
-                                                               #region [ *** ]\r
+                                                               #region [ BDのヒット処理 ]\r
                                                                //-----------------------------\r
                                                                if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.BD)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
                                                                        continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
@@ -782,7 +768,7 @@ namespace DTXMania
                                                                #endregion\r
 \r
                                                        case Eパッド.HT:\r
-                                                               #region [ *** ]\r
+                                                               #region [ HTのヒット処理 ]\r
                                                                //-----------------------------\r
                                                                if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HT)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
                                                                        continue;       // 電子ドラムによる意図的なクロストークを無効にする\r
@@ -793,7 +779,7 @@ namespace DTXMania
                                                                #endregion\r
 \r
                                                        case Eパッド.LT:\r
-                                                               #region [ *** ]\r
+                                                               #region [ LTとFT(groupingしている場合)のヒット処理 ]\r
                                                                //-----------------------------\r
                                                                {\r
                                                                        if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.LT )  // #23857 2010.12.12 yyagi: to support VelocityMin\r
@@ -805,19 +791,19 @@ namespace DTXMania
                                                                        switch ( eFTGroup )\r
                                                                        {\r
                                                                                case EFTGroup.打ち分ける:\r
-                                                                                       #region [ *** ]\r
+                                                                                       #region [ LTのヒット処理 ]\r
                                                                                        //-----------------------------\r
                                                                                        if ( e判定LT != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        break;\r
                                                                                //-----------------------------\r
                                                                                        #endregion\r
 \r
                                                                                case EFTGroup.共通:\r
-                                                                                       #region [ *** ]\r
+                                                                                       #region [ LTとFTのヒット処理 ]\r
                                                                                        //-----------------------------\r
                                                                                        if ( ( e判定LT != E判定.Miss ) && ( e判定FT != E判定.Miss ) )\r
                                                                                        {\r
@@ -834,23 +820,23 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定LT != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.LT, chipLT, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定FT != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.LT, chipFT, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        break;\r
                                                                                //-----------------------------\r
                                                                                        #endregion\r
                                                                        }\r
-                                                                       if ( !flag )\r
+                                                                       if ( !bHitted )\r
                                                                                break;\r
                                                                        continue;\r
                                                                }\r
@@ -858,7 +844,7 @@ namespace DTXMania
                                                                #endregion\r
 \r
                                                        case Eパッド.FT:\r
-                                                               #region [ *** ]\r
+                                                               #region [ FTとLT(groupingしている場合)のヒット処理 ]\r
                                                                //-----------------------------\r
                                                                {\r
                                                                        if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.FT )  // #23857 2010.12.12 yyagi: to support VelocityMin\r
@@ -870,19 +856,19 @@ namespace DTXMania
                                                                        switch ( eFTGroup )\r
                                                                        {\r
                                                                                case EFTGroup.打ち分ける:\r
-                                                                                       #region [ *** ]\r
+                                                                                       #region [ FTのヒット処理 ]\r
                                                                                        //-----------------------------\r
                                                                                        if ( e判定FT != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        //-----------------------------\r
                                                                                        #endregion\r
                                                                                        break;\r
 \r
                                                                                case EFTGroup.共通:\r
-                                                                                       #region [ *** ]\r
+                                                                                       #region [ FTとLTのヒット処理 ]\r
                                                                                        //-----------------------------\r
                                                                                        if ( ( e判定LT != E判定.Miss ) && ( e判定FT != E判定.Miss ) )\r
                                                                                        {\r
@@ -899,23 +885,23 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定LT != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.FT, chipLT, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定FT != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.FT, chipFT, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        //-----------------------------\r
                                                                                        #endregion\r
                                                                                        break;\r
                                                                        }\r
-                                                                       if ( !flag )\r
+                                                                       if ( !bHitted )\r
                                                                                break;\r
                                                                        continue;\r
                                                                }\r
@@ -923,7 +909,7 @@ namespace DTXMania
                                                                #endregion\r
 \r
                                                        case Eパッド.CY:\r
-                                                               #region [ *** ]\r
+                                                               #region [ CY(とLCとRD:groupingしている場合)のヒット処理 ]\r
                                                                //-----------------------------\r
                                                                {\r
                                                                        if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.CY)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
@@ -934,28 +920,36 @@ namespace DTXMania
                                                                        E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
                                                                        E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
                                                                        E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
-                                                                       CDTX.CChip[] chipArray4 = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
-                                                                       E判定[] e判定Array2 = new E判定[] { e判定CY, e判定RD, e判定LC };\r
-                                                                       num8 = 0;\r
-                                                                       while( num8 < 2 )\r
-                                                                       {\r
-                                                                               num9 = 2;\r
-                                                                               while( num9 > num8 )\r
-                                                                               {\r
-                                                                                       if( ( chipArray4[ num9 - 1 ] == null ) || ( ( chipArray4[ num9 ] != null ) && ( chipArray4[ num9 - 1 ].n発声位置 > chipArray4[ num9 ].n発声位置 ) ) )\r
-                                                                                       {\r
-                                                                                               CDTX.CChip chip22 = chipArray4[ num9 - 1 ];\r
-                                                                                               chipArray4[ num9 - 1 ] = chipArray4[ num9 ];\r
-                                                                                               chipArray4[ num9 ] = chip22;\r
-                                                                                               E判定 e判定20 = e判定Array2[ num9 - 1 ];\r
-                                                                                               e判定Array2[ num9 - 1 ] = e判定Array2[ num9 ];\r
-                                                                                               e判定Array2[ num9 ] = e判定20;\r
-                                                                                       }\r
-                                                                                       num9--;\r
-                                                                               }\r
-                                                                               num8++;\r
-                                                                       }\r
-                                                                       switch( eCYGroup )\r
+                                                                       CDTX.CChip[] chipArray = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
+                                                                       E判定[] e判定Array = new E判定[] { e判定CY, e判定RD, e判定LC };\r
+                                                                       const int NumOfChips = 3;       // chipArray.GetLength(0)\r
+\r
+                                                                       //num8 = 0;\r
+                                                                       //while( num8 < 2 )\r
+\r
+                                                                       // CY/RD/LC群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
+                                                                       SortChipsByNTime( chipArray, e判定Array, NumOfChips );\r
+                                                                       //for ( int i = 0; i < NumOfChips - 1; i++ )\r
+                                                                       //{\r
+                                                                       //    //num9 = 2;\r
+                                                                       //    //while( num9 > num8 )\r
+                                                                       //    for ( int j = NumOfChips - 1; j > i; j-- )\r
+                                                                       //    {\r
+                                                                       //        if ( ( chipArray[ j - 1 ] == null ) || ( ( chipArray[ j ] != null ) && ( chipArray[ j - 1 ].n発声位置 > chipArray[ j ].n発声位置 ) ) )\r
+                                                                       //        {\r
+                                                                       //            // swap\r
+                                                                       //            CDTX.CChip chipTemp = chipArray[ j - 1 ];\r
+                                                                       //            chipArray[ j - 1 ] = chipArray[ j ];\r
+                                                                       //            chipArray[ j ] = chipTemp;\r
+                                                                       //            E判定 e判定Temp = e判定Array[ j - 1 ];\r
+                                                                       //            e判定Array[ j - 1 ] = e判定Array[ j ];\r
+                                                                       //            e判定Array[ j ] = e判定Temp;\r
+                                                                       //        }\r
+                                                                       //        //num9--;\r
+                                                                       //    }\r
+                                                                       //    //num8++;\r
+                                                                       //}\r
+                                                                       switch ( eCYGroup )\r
                                                                        {\r
                                                                                case ECYGroup.打ち分ける:\r
                                                                                        if( !CDTXMania.ConfigIni.bシンバルフリー )\r
@@ -963,66 +957,69 @@ namespace DTXMania
                                                                                                if( e判定CY != E判定.Miss )\r
                                                                                                {\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.CY, chipCY, event2.nVelocity );\r
-                                                                                                       flag = true;\r
+                                                                                                       bHitted = true;\r
                                                                                                }\r
-                                                                                               if( !flag )\r
+                                                                                               if( !bHitted )\r
                                                                                                        break;\r
                                                                                                continue;\r
                                                                                        }\r
-                                                                                       num10 = 0;\r
-                                                                                       while( num10 < 3 )\r
+                                                                                       //num10 = 0;\r
+                                                                                       //while ( num10 < NumOfChips )\r
+                                                                                       for (int i = 0; i < NumOfChips; i++)\r
                                                                                        {\r
-                                                                                               if( ( e判定Array2[ num10 ] != E判定.Miss ) && ( ( chipArray4[ num10 ] == chipCY ) || ( chipArray4[ num10 ] == chipLC ) ) )\r
+                                                                                               if( ( e判定Array[ i ] != E判定.Miss ) && ( ( chipArray[ i ] == chipCY ) || ( chipArray[ i ] == chipLC ) ) )\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num10 ], event2.nVelocity );\r
-                                                                                                       flag = true;\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.CY, chipArray[ i ], event2.nVelocity );\r
+                                                                                                       bHitted = true;\r
                                                                                                        break;\r
                                                                                                }\r
-                                                                                               num10++;\r
+                                                                                               //num10++;\r
                                                                                        }\r
                                                                                        if( e判定CY != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.CY, chipCY, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
-                                                                                       if( !flag )\r
+                                                                                       if( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
 \r
                                                                                case ECYGroup.共通:\r
                                                                                        if( !CDTXMania.ConfigIni.bシンバルフリー )\r
                                                                                        {\r
-                                                                                               num12 = 0;\r
-                                                                                               while( num12 < 3 )\r
+                                                                                               //num12 = 0;\r
+                                                                                               //while ( num12 < NumOfChips )\r
+                                                                                               for (int i = 0; i < NumOfChips; i++)\r
                                                                                                {\r
-                                                                                                       if( ( e判定Array2[ num12 ] != E判定.Miss ) && ( ( chipArray4[ num12 ] == chipCY ) || ( chipArray4[ num12 ] == chipRD ) ) )\r
+                                                                                                       if( ( e判定Array[ i ] != E判定.Miss ) && ( ( chipArray[ i ] == chipCY ) || ( chipArray[ i ] == chipRD ) ) )\r
                                                                                                        {\r
-                                                                                                               this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num12 ], event2.nVelocity );\r
-                                                                                                               flag = true;\r
+                                                                                                               this.tドラムヒット処理( nTime, Eパッド.CY, chipArray[ i ], event2.nVelocity );\r
+                                                                                                               bHitted = true;\r
                                                                                                                break;\r
                                                                                                        }\r
-                                                                                                       num12++;\r
+                                                                                                       //num12++;\r
                                                                                                }\r
-                                                                                               if( !flag )\r
+                                                                                               if( !bHitted )\r
                                                                                                        break;\r
                                                                                                continue;\r
                                                                                        }\r
-                                                                                       num11 = 0;\r
-                                                                                       while( num11 < 3 )\r
+                                                                                       //num11 = 0;\r
+                                                                                       //while ( num11 < NumOfChips )\r
+                                                                                       for (int i = 0; i < NumOfChips; i++)\r
                                                                                        {\r
-                                                                                               if( e判定Array2[ num11 ] != E判定.Miss )\r
+                                                                                               if( e判定Array[ i ] != E判定.Miss )\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理( nTime, Eパッド.CY, chipArray4[ num11 ], event2.nVelocity );\r
-                                                                                                       flag = true;\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.CY, chipArray[ i ], event2.nVelocity );\r
+                                                                                                       bHitted = true;\r
                                                                                                        break;\r
                                                                                                }\r
-                                                                                               num11++;\r
+                                                                                               //num11++;\r
                                                                                        }\r
-                                                                                       if( !flag )\r
+                                                                                       if( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
                                                                        }\r
-                                                                       if( !flag )\r
+                                                                       if( !bHitted )\r
                                                                                break;\r
                                                                        continue;\r
                                                                }\r
@@ -1030,7 +1027,7 @@ namespace DTXMania
                                                                #endregion\r
 \r
                                                        case Eパッド.HHO:\r
-                                                               #region [ *** ]\r
+                                                               #region [ HO(とHCとLC:groupingしている場合)のヒット処理 ]\r
                                                                //-----------------------------\r
                                                                {\r
                                                                        if ( event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.HH )\r
@@ -1048,9 +1045,9 @@ namespace DTXMania
                                                                                        if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
-                                                                                       if ( !flag )\r
+                                                                                       if ( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
 \r
@@ -1070,19 +1067,19 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定LC != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
-                                                                                       if ( !flag )\r
+                                                                                       if ( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
 \r
@@ -1102,55 +1099,56 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
-                                                                                       if ( !flag )\r
+                                                                                       if ( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
 \r
                                                                                case EHHGroup.全部共通:\r
                                                                                        if ( ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
-                                                                                               CDTX.CChip chip8;\r
-                                                                                               CDTX.CChip[] chipArray2 = new CDTX.CChip[] { chipHC, chipHO, chipLC };\r
-                                                                                               if ( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )\r
+                                                                                               CDTX.CChip chip;\r
+                                                                                               CDTX.CChip[] chipArray = new CDTX.CChip[] { chipHC, chipHO, chipLC };\r
+                                                                                               // ここから、chipArrayをn発生位置の小さい順に並び替える\r
+                                                                                               if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
                                                                                                {\r
-                                                                                                       chip8 = chipArray2[ 1 ];\r
-                                                                                                       chipArray2[ 1 ] = chipArray2[ 2 ];\r
-                                                                                                       chipArray2[ 2 ] = chip8;\r
+                                                                                                       chip = chipArray[ 1 ];\r
+                                                                                                       chipArray[ 1 ] = chipArray[ 2 ];\r
+                                                                                                       chipArray[ 2 ] = chip;\r
                                                                                                }\r
-                                                                                               if ( chipArray2[ 0 ].n発声位置 > chipArray2[ 1 ].n発声位置 )\r
+                                                                                               if ( chipArray[ 0 ].n発声位置 > chipArray[ 1 ].n発声位置 )\r
                                                                                                {\r
-                                                                                                       chip8 = chipArray2[ 0 ];\r
-                                                                                                       chipArray2[ 0 ] = chipArray2[ 1 ];\r
-                                                                                                       chipArray2[ 1 ] = chip8;\r
+                                                                                                       chip = chipArray[ 0 ];\r
+                                                                                                       chipArray[ 0 ] = chipArray[ 1 ];\r
+                                                                                                       chipArray[ 1 ] = chip;\r
                                                                                                }\r
-                                                                                               if ( chipArray2[ 1 ].n発声位置 > chipArray2[ 2 ].n発声位置 )\r
+                                                                                               if ( chipArray[ 1 ].n発声位置 > chipArray[ 2 ].n発声位置 )\r
                                                                                                {\r
-                                                                                                       chip8 = chipArray2[ 1 ];\r
-                                                                                                       chipArray2[ 1 ] = chipArray2[ 2 ];\r
-                                                                                                       chipArray2[ 2 ] = chip8;\r
+                                                                                                       chip = chipArray[ 1 ];\r
+                                                                                                       chipArray[ 1 ] = chipArray[ 2 ];\r
+                                                                                                       chipArray[ 2 ] = chip;\r
                                                                                                }\r
-                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 0 ], event2.nVelocity );\r
-                                                                                               if ( chipArray2[ 0 ].n発声位置 == chipArray2[ 1 ].n発声位置 )\r
+                                                                                               this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray[ 0 ], event2.nVelocity );\r
+                                                                                               if ( chipArray[ 0 ].n発声位置 == chipArray[ 1 ].n発声位置 )\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 1 ], event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray[ 1 ], event2.nVelocity );\r
                                                                                                }\r
-                                                                                               if ( chipArray2[ 0 ].n発声位置 == chipArray2[ 2 ].n発声位置 )\r
+                                                                                               if ( chipArray[ 0 ].n発声位置 == chipArray[ 2 ].n発声位置 )\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray2[ 2 ], event2.nVelocity );\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.HHO, chipArray[ 2 ], event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( ( e判定HC != E判定.Miss ) && ( e判定HO != E判定.Miss ) )\r
                                                                                        {\r
@@ -1167,7 +1165,7 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( ( e判定HC != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
@@ -1184,7 +1182,7 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( ( e判定HO != E判定.Miss ) && ( e判定LC != E判定.Miss ) )\r
                                                                                        {\r
@@ -1201,28 +1199,28 @@ namespace DTXMania
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
                                                                                                }\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定HC != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HHO, chipHC, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定HO != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HHO, chipHO, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        else if ( e判定LC != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.HHO, chipLC, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
-                                                                                       if ( !flag )\r
+                                                                                       if ( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
                                                                        }\r
-                                                                       if ( !flag )\r
+                                                                       if ( !bHitted )\r
                                                                                break;\r
                                                                        continue;\r
                                                                }\r
@@ -1230,7 +1228,7 @@ namespace DTXMania
                                                                #endregion\r
 \r
                                                        case Eパッド.RD:\r
-                                                               #region [ *** ]\r
+                                                               #region [ RD(とCYとLC:groupingしている場合)のヒット処理 ]\r
                                                                //-----------------------------\r
                                                                {\r
                                                                        if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.RD)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
@@ -1241,67 +1239,76 @@ namespace DTXMania
                                                                        E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
                                                                        E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
                                                                        E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
-                                                                       CDTX.CChip[] chipArray5 = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
-                                                                       E判定[] e判定Array3 = new E判定[] { e判定CY, e判定RD, e判定LC };\r
-                                                                       num13 = 0;\r
-                                                                       while( num13 < 2 )\r
-                                                                       {\r
-                                                                               num14 = 2;\r
-                                                                               while( num14 > num13 )\r
-                                                                               {\r
-                                                                                       if( ( chipArray5[ num14 - 1 ] == null ) || ( ( chipArray5[ num14 ] != null ) && ( chipArray5[ num14 - 1 ].n発声位置 > chipArray5[ num14 ].n発声位置 ) ) )\r
-                                                                                       {\r
-                                                                                               CDTX.CChip chip26 = chipArray5[ num14 - 1 ];\r
-                                                                                               chipArray5[ num14 - 1 ] = chipArray5[ num14 ];\r
-                                                                                               chipArray5[ num14 ] = chip26;\r
-                                                                                               E判定 e判定24 = e判定Array3[ num14 - 1 ];\r
-                                                                                               e判定Array3[ num14 - 1 ] = e判定Array3[ num14 ];\r
-                                                                                               e判定Array3[ num14 ] = e判定24;\r
-                                                                                       }\r
-                                                                                       num14--;\r
-                                                                               }\r
-                                                                               num13++;\r
-                                                                       }\r
+                                                                       CDTX.CChip[] chipArray = new CDTX.CChip[] { chipCY, chipRD, chipLC };\r
+                                                                       E判定[] e判定Array = new E判定[] { e判定CY, e判定RD, e判定LC };\r
+                                                                       const int NumOfChips = 3;       // chipArray.GetLength(0)\r
+\r
+                                                                       //num13 = 0;\r
+                                                                       //while( num13 < 2 )\r
+\r
+                                                                       // HH/CY群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
+                                                                       SortChipsByNTime( chipArray, e判定Array, NumOfChips );\r
+                                                                       //for ( int i = 0; i < NumOfChips - 1; i++ )\r
+                                                                       //{\r
+                                                                       //    // num14 = 2;\r
+                                                                       //    // while( num14 > num13 )\r
+                                                                       //    for (int j = NumOfChips - 1; j > i; j--)\r
+                                                                       //    {\r
+                                                                       //        if( ( chipArray[ j - 1 ] == null ) || ( ( chipArray[ j ] != null ) && ( chipArray[ j - 1 ].n発声位置 > chipArray[ j ].n発声位置 ) ) )\r
+                                                                       //        {\r
+                                                                       //            CDTX.CChip chipTemp = chipArray[ j - 1 ];\r
+                                                                       //            chipArray[ j - 1 ] = chipArray[ j ];\r
+                                                                       //            chipArray[ j ] = chipTemp;\r
+                                                                       //            E判定 e判定Temp = e判定Array[ j - 1 ];\r
+                                                                       //            e判定Array[ j - 1 ] = e判定Array[ j ];\r
+                                                                       //            e判定Array[ j ] = e判定Temp;\r
+                                                                       //        }\r
+                                                                       //        //num14--;\r
+                                                                       //    }\r
+                                                                       //    // num13++;\r
+                                                                       //}\r
                                                                        switch( eCYGroup )\r
                                                                        {\r
                                                                                case ECYGroup.打ち分ける:\r
                                                                                        if( e判定RD != E判定.Miss )\r
                                                                                        {\r
                                                                                                this.tドラムヒット処理( nTime, Eパッド.RD, chipRD, event2.nVelocity );\r
-                                                                                               flag = true;\r
+                                                                                               bHitted = true;\r
                                                                                        }\r
                                                                                        break;\r
 \r
                                                                                case ECYGroup.共通:\r
                                                                                        if( !CDTXMania.ConfigIni.bシンバルフリー )\r
                                                                                        {\r
-                                                                                               num16 = 0;\r
-                                                                                               while( num16 < 3 )\r
+                                                                                               //num16 = 0;\r
+                                                                                               //while( num16 < 3 )\r
+                                                                                               for ( int i = 0; i < NumOfChips; i++ )\r
                                                                                                {\r
-                                                                                                       if( ( e判定Array3[ num16 ] != E判定.Miss ) && ( ( chipArray5[ num16 ] == chipCY ) || ( chipArray5[ num16 ] == chipRD ) ) )\r
+                                                                                                       if( ( e判定Array[ i ] != E判定.Miss ) && ( ( chipArray[ i ] == chipCY ) || ( chipArray[ i ] == chipRD ) ) )\r
                                                                                                        {\r
-                                                                                                               this.tドラムヒット処理( nTime, Eパッド.CY, chipArray5[ num16 ], event2.nVelocity );\r
-                                                                                                               flag = true;\r
+                                                                                                               this.tドラムヒット処理( nTime, Eパッド.CY, chipArray[ i ], event2.nVelocity );\r
+                                                                                                               bHitted = true;\r
                                                                                                                break;\r
                                                                                                        }\r
-                                                                                                       num16++;\r
+                                                                                                       //num16++;\r
                                                                                                }\r
                                                                                                break;\r
                                                                                        }\r
-                                                                                       num15 = 0;\r
-                                                                                       while( num15 < 3 )\r
+                                                                                       //num15 = 0;\r
+                                                                                       //while( num15 < 3 )\r
+                                                                                       for (int i = 0; i < NumOfChips; i++)\r
                                                                                        {\r
-                                                                                               if( e判定Array3[ num15 ] != E判定.Miss )\r
+                                                                                               if( e判定Array[ i ] != E判定.Miss )\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理( nTime, Eパッド.CY, chipArray5[ num15 ], event2.nVelocity );\r
-                                                                                                       flag = true;\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.CY, chipArray[ i ], event2.nVelocity );\r
+                                                                                                       bHitted = true;\r
                                                                                                        break;\r
                                                                                                }\r
-                                                                                               num15++;\r
+                                                                                               //num15++;\r
                                                                                        }\r
                                                                                        break;\r
                                                                        }\r
-                                                                       if( flag )\r
+                                                                       if( bHitted )\r
                                                                        {\r
                                                                                continue;\r
                                                                        }\r
@@ -1311,7 +1318,7 @@ namespace DTXMania
                                                                #endregion\r
 \r
                                                        case Eパッド.LC:\r
-                                                               #region [ *** ]\r
+                                                               #region [ LC(とHC/HOとCYと:groupingしている場合)のヒット処理 ]\r
                                                                //-----------------------------\r
                                                                {\r
                                                                        if (event2.nVelocity <= CDTXMania.ConfigIni.nVelocityMin.LC)    // #23857 2010.12.12 yyagi: to support VelocityMin\r
@@ -1326,27 +1333,35 @@ namespace DTXMania
                                                                        E判定 e判定LC = ( chipLC != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipLC, nInputAdjustTime ) : E判定.Miss;\r
                                                                        E判定 e判定CY = ( chipCY != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipCY, nInputAdjustTime ) : E判定.Miss;\r
                                                                        E判定 e判定RD = ( chipRD != null ) ? this.e指定時刻からChipのJUDGEを返す( nTime, chipRD, nInputAdjustTime ) : E判定.Miss;\r
-                                                                       CDTX.CChip[] chipArray3 = new CDTX.CChip[] { chipHC, chipHO, chipLC, chipCY, chipRD };\r
+                                                                       CDTX.CChip[] chipArray = new CDTX.CChip[] { chipHC, chipHO, chipLC, chipCY, chipRD };\r
                                                                        E判定[]  e判定Array = new E判定[] { e判定HC, e判定HO, e判定LC, e判定CY, e判定RD };\r
-                                                                       num3 = 0;\r
-                                                                       while( num3 < 4 )\r
-                                                                       {\r
-                                                                               num4 = 4;\r
-                                                                               while( num4 > num3 )\r
-                                                                               {\r
-                                                                                       if( ( chipArray3[ num4 - 1 ] == null ) || ( ( chipArray3[ num4 ] != null ) && ( chipArray3[ num4 - 1 ].n発声位置 > chipArray3[ num4 ].n発声位置 ) ) )\r
-                                                                                       {\r
-                                                                                               CDTX.CChip chip14 = chipArray3[ num4 - 1 ];\r
-                                                                                               chipArray3[ num4 - 1 ] = chipArray3[ num4 ];\r
-                                                                                               chipArray3[ num4 ] = chip14;\r
-                                                                                               E判定 e判定12 = e判定Array[ num4 - 1 ];\r
-                                                                                               e判定Array[ num4 - 1 ] = e判定Array[ num4 ];\r
-                                                                                               e判定Array[ num4 ] = e判定12;\r
-                                                                                       }\r
-                                                                                       num4--;\r
-                                                                               }\r
-                                                                               num3++;\r
-                                                                       }\r
+                                                                       const int NumOfChips = 5;       // chipArray.GetLength(0)\r
+\r
+                                                                       //num3 = 0;\r
+                                                                       //while( num3 < 4 )\r
+\r
+                                                                       // HH/CY群を, n発生位置の小さい順に並べる + nullを大きい方に退かす\r
+                                                                       SortChipsByNTime( chipArray, e判定Array, NumOfChips );\r
+                                                                       //for ( int i = 0; i < NumOfChips - 1; i++ )\r
+                                                                       //{\r
+                                                                       //    //num4 = 4;\r
+                                                                       //    //while( num4 > num3 )\r
+                                                                       //    for ( int j = NumOfChips - 1; j > i; j-- )\r
+                                                                       //    {\r
+                                                                       //        if( ( chipArray[ j - 1 ] == null ) || ( ( chipArray[ j ] != null ) && ( chipArray[ j - 1 ].n発声位置 > chipArray[ j ].n発声位置 ) ) )\r
+                                                                       //        {\r
+                                                                       //            // swap\r
+                                                                       //            CDTX.CChip chipTemp = chipArray[ j - 1 ];\r
+                                                                       //            chipArray[ j - 1 ] = chipArray[ j ];\r
+                                                                       //            chipArray[ j ] = chipTemp;\r
+                                                                       //            E判定 e判定Temp = e判定Array[ j - 1 ];\r
+                                                                       //            e判定Array[ j - 1 ] = e判定Array[ j ];\r
+                                                                       //            e判定Array[ j ] = e判定Temp;\r
+                                                                       //        }\r
+                                                                       //        //num4--;\r
+                                                                       //    }\r
+                                                                       //    //num3++;\r
+                                                                       //}\r
                                                                        switch( eHHGroup )\r
                                                                        {\r
                                                                                case EHHGroup.全部打ち分ける:\r
@@ -1356,24 +1371,25 @@ namespace DTXMania
                                                                                                if( e判定LC != E判定.Miss )\r
                                                                                                {\r
                                                                                                        this.tドラムヒット処理( nTime, Eパッド.LC, chipLC, event2.nVelocity );\r
-                                                                                                       flag = true;\r
+                                                                                                       bHitted = true;\r
                                                                                                }\r
-                                                                                               if( !flag )\r
+                                                                                               if( !bHitted )\r
                                                                                                        break;\r
                                                                                                continue;\r
                                                                                        }\r
-                                                                                       num5 = 0;\r
-                                                                                       while( num5 < 5 )\r
+                                                                                       //num5 = 0;\r
+                                                                                       //while( num5 < 5 )\r
+                                                                                       for ( int i = 0; i < NumOfChips; i++ )\r
                                                                                        {\r
-                                                                                               if( ( e判定Array[ num5 ] != E判定.Miss ) && ( ( ( chipArray3[ num5 ] == chipLC ) || ( chipArray3[ num5 ] == chipCY ) ) || ( ( chipArray3[ num5 ] == chipRD ) && ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) ) )\r
+                                                                                               if( ( e判定Array[ i ] != E判定.Miss ) && ( ( ( chipArray[ i ] == chipLC ) || ( chipArray[ i ] == chipCY ) ) || ( ( chipArray[ i ] == chipRD ) && ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) ) )\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num5 ], event2.nVelocity );\r
-                                                                                                       flag = true;\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.LC, chipArray[ i ], event2.nVelocity );\r
+                                                                                                       bHitted = true;\r
                                                                                                        break;\r
                                                                                                }\r
-                                                                                               num5++;\r
+                                                                                               //num5++;\r
                                                                                        }\r
-                                                                                       if( !flag )\r
+                                                                                       if( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
 \r
@@ -1381,37 +1397,39 @@ namespace DTXMania
                                                                                case EHHGroup.全部共通:\r
                                                                                        if( !CDTXMania.ConfigIni.bシンバルフリー )\r
                                                                                        {\r
-                                                                                               num7 = 0;\r
-                                                                                               while( num7 < 5 )\r
+                                                                                               //num7 = 0;\r
+                                                                                               //while( num7 < 5 )\r
+                                                                                               for ( int i = 0; i < NumOfChips; i++ )\r
                                                                                                {\r
-                                                                                                       if( ( e判定Array[ num7 ] != E判定.Miss ) && ( ( ( chipArray3[ num7 ] == chipLC ) || ( chipArray3[ num7 ] == chipHC ) ) || ( chipArray3[ num7 ] == chipHO ) ) )\r
+                                                                                                       if( ( e判定Array[ i ] != E判定.Miss ) && ( ( ( chipArray[ i ] == chipLC ) || ( chipArray[ i ] == chipHC ) ) || ( chipArray[ i ] == chipHO ) ) )\r
                                                                                                        {\r
-                                                                                                               this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num7 ], event2.nVelocity );\r
-                                                                                                               flag = true;\r
+                                                                                                               this.tドラムヒット処理( nTime, Eパッド.LC, chipArray[ i ], event2.nVelocity );\r
+                                                                                                               bHitted = true;\r
                                                                                                                break;\r
                                                                                                        }\r
-                                                                                                       num7++;\r
+                                                                                                       //num7++;\r
                                                                                                }\r
-                                                                                               if( !flag )\r
+                                                                                               if( !bHitted )\r
                                                                                                        break;\r
                                                                                                continue;\r
                                                                                        }\r
-                                                                                       num6 = 0;\r
-                                                                                       while( num6 < 5 )\r
+                                                                                       //num6 = 0;\r
+                                                                                       //while( num6 < 5 )\r
+                                                                                       for ( int i = 0; i < NumOfChips; i++ )\r
                                                                                        {\r
-                                                                                               if( ( e判定Array[ num6 ] != E判定.Miss ) && ( ( chipArray3[ num6 ] != chipRD ) || ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) )\r
+                                                                                               if( ( e判定Array[ i ] != E判定.Miss ) && ( ( chipArray[ i ] != chipRD ) || ( CDTXMania.ConfigIni.eCYGroup == ECYGroup.共通 ) ) )\r
                                                                                                {\r
-                                                                                                       this.tドラムヒット処理( nTime, Eパッド.LC, chipArray3[ num6 ], event2.nVelocity );\r
-                                                                                                       flag = true;\r
+                                                                                                       this.tドラムヒット処理( nTime, Eパッド.LC, chipArray[ i ], event2.nVelocity );\r
+                                                                                                       bHitted = true;\r
                                                                                                        break;\r
                                                                                                }\r
-                                                                                               num6++;\r
+                                                                                               //num6++;\r
                                                                                        }\r
-                                                                                       if( !flag )\r
+                                                                                       if( !bHitted )\r
                                                                                                break;\r
                                                                                        continue;\r
                                                                        }\r
-                                                                       if( !flag )\r
+                                                                       if( !bHitted )\r
                                                                                break;\r
 \r
                                                                        break;\r
@@ -1683,6 +1701,37 @@ namespace DTXMania
                        }\r
                }\r
 \r
+               // t入力処理・ドラム()からメソッドを抽出したもの。\r
+               /// <summary>\r
+               /// chipArrayの中を, n発生位置の小さい順に並べる + nullを大きい方に退かす。セットでe判定Arrayも並べ直す。\r
+               /// </summary>\r
+               /// <param name="chipArray">ソート対象chip群</param>\r
+               /// <param name="e判定Array">ソート対象e判定群</param>\r
+               /// <param name="NumOfChips">チップ数</param>\r
+               private static void SortChipsByNTime( CDTX.CChip[] chipArray, E判定[] e判定Array, int NumOfChips )\r
+               {\r
+                       for ( int i = 0; i < NumOfChips - 1; i++ )\r
+                       {\r
+                               //num9 = 2;\r
+                               //while( num9 > num8 )\r
+                               for ( int j = NumOfChips - 1; j > i; j-- )\r
+                               {\r
+                                       if ( ( chipArray[ j - 1 ] == null ) || ( ( chipArray[ j ] != null ) && ( chipArray[ j - 1 ].n発声位置 > chipArray[ j ].n発声位置 ) ) )\r
+                                       {\r
+                                               // swap\r
+                                               CDTX.CChip chipTemp = chipArray[ j - 1 ];\r
+                                               chipArray[ j - 1 ] = chipArray[ j ];\r
+                                               chipArray[ j ] = chipTemp;\r
+                                               E判定 e判定Temp = e判定Array[ j - 1 ];\r
+                                               e判定Array[ j - 1 ] = e判定Array[ j ];\r
+                                               e判定Array[ j ] = e判定Temp;\r
+                                       }\r
+                                       //num9--;\r
+                               }\r
+                               //num8++;\r
+                       }\r
+               }\r
+\r
                protected override void t背景テクスチャの生成()\r
                {\r
                        Rectangle bgrect = new Rectangle( 338, 57, 278, 355 );\r
@@ -1699,6 +1748,7 @@ namespace DTXMania
                {\r
                        if ( configIni.bDrums有効 )\r
                        {\r
+                               #region [ Sudden処理 ]\r
                                if ( configIni.bSudden.Drums )\r
                                {\r
                                        if ( pChip.nバーからの距離dot.Drums < 200 )\r
@@ -1717,6 +1767,8 @@ namespace DTXMania
                                                pChip.n透明度 = 0;\r
                                        }\r
                                }\r
+                               #endregion\r
+                               #region [ Hidden処理 ]\r
                                if ( configIni.bHidden.Drums )\r
                                {\r
                                        if ( pChip.nバーからの距離dot.Drums < 100 )\r
@@ -1729,6 +1781,7 @@ namespace DTXMania
                                                pChip.n透明度 = (int) ( ( ( (double) ( pChip.nバーからの距離dot.Drums - 100 ) ) * 255.0 ) / 50.0 );\r
                                        }\r
                                }\r
+                               #endregion\r
                                if ( !pChip.bHit && pChip.b可視 )\r
                                {\r
                                        if ( this.txチップ != null )\r
@@ -1736,7 +1789,7 @@ namespace DTXMania
                                                this.txチップ.n透明度 = pChip.n透明度;\r
                                        }\r
                                        int x = this.nチャンネルtoX座標[ pChip.nチャンネル番号 - 0x11 ];\r
-                                       int num8 = configIni.bReverse.Drums ? ( 0x38 + pChip.nバーからの距離dot.Drums ) : ( 0x1a6 - pChip.nバーからの距離dot.Drums );\r
+                                       int y = configIni.bReverse.Drums ? ( 0x38 + pChip.nバーからの距離dot.Drums ) : ( 0x1a6 - pChip.nバーからの距離dot.Drums );\r
                                        if ( this.txチップ != null )\r
                                        {\r
                                                this.txチップ.vc拡大縮小倍率 = new Vector3( (float) pChip.dbチップサイズ倍率, (float) pChip.dbチップサイズ倍率, 1f );\r
@@ -1748,7 +1801,7 @@ namespace DTXMania
                                                        x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
                                                        if ( this.txチップ != null )\r
                                                        {\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x2c, num9 * 7, 0x20, 8 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0x2c, num9 * 7, 0x20, 8 ) );\r
                                                        }\r
                                                        break;\r
 \r
@@ -1756,7 +1809,7 @@ namespace DTXMania
                                                        x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
                                                        if ( this.txチップ != null )\r
                                                        {\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x4c, num9 * 7, 0x20, 8 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0x4c, num9 * 7, 0x20, 8 ) );\r
                                                        }\r
                                                        break;\r
 \r
@@ -1764,7 +1817,7 @@ namespace DTXMania
                                                        x = ( x + 0x16 ) - ( (int) ( ( 44.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
                                                        if ( this.txチップ != null )\r
                                                        {\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 5, new Rectangle( 0, num9 * 9, 0x2c, 10 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 5, new Rectangle( 0, num9 * 9, 0x2c, 10 ) );\r
                                                        }\r
                                                        break;\r
 \r
@@ -1772,7 +1825,7 @@ namespace DTXMania
                                                        x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
                                                        if ( this.txチップ != null )\r
                                                        {\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0x6c, num9 * 7, 0x20, 8 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0x6c, num9 * 7, 0x20, 8 ) );\r
                                                        }\r
                                                        break;\r
 \r
@@ -1780,7 +1833,7 @@ namespace DTXMania
                                                        x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
                                                        if ( this.txチップ != null )\r
                                                        {\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 140, num9 * 7, 0x20, 8 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 140, num9 * 7, 0x20, 8 ) );\r
                                                        }\r
                                                        break;\r
 \r
@@ -1788,8 +1841,8 @@ namespace DTXMania
                                                        x = ( x + 0x13 ) - ( (int) ( ( 38.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
                                                        if ( this.txチップ != null )\r
                                                        {\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );\r
                                                        }\r
                                                        break;\r
 \r
@@ -1797,7 +1850,7 @@ namespace DTXMania
                                                        x = ( x + 0x10 ) - ( (int) ( ( 32.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
                                                        if ( this.txチップ != null )\r
                                                        {\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xac, num9 * 7, 0x20, 8 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0xac, num9 * 7, 0x20, 8 ) );\r
                                                        }\r
                                                        break;\r
 \r
@@ -1805,8 +1858,8 @@ namespace DTXMania
                                                        x = ( x + 13 ) - ( (int) ( ( 26.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
                                                        if ( this.txチップ != null )\r
                                                        {\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );\r
                                                        }\r
                                                        break;\r
 \r
@@ -1814,8 +1867,8 @@ namespace DTXMania
                                                        x = ( x + 13 ) - ( (int) ( ( 26.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
                                                        if ( this.txチップ != null )\r
                                                        {\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0xf2, num9 * 7, 0x1a, 8 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 9, new Rectangle( 0xf2, 0x158, 0x1a, 0x12 ) );\r
                                                        }\r
                                                        break;\r
 \r
@@ -1823,8 +1876,8 @@ namespace DTXMania
                                                        x = ( x + 0x13 ) - ( (int) ( ( 38.0 * pChip.dbチップサイズ倍率 ) / 2.0 ) );\r
                                                        if ( this.txチップ != null )\r
                                                        {\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );\r
-                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, num8 - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 0x15, new Rectangle( 0xcc, 0x158, 0x26, 0x24 ) );\r
+                                                               this.txチップ.t2D描画( CDTXMania.app.Device, x, y - 4, new Rectangle( 0xcc, num9 * 7, 0x26, 8 ) );\r
                                                        }\r
                                                        break;\r
                                        }\r
@@ -1842,8 +1895,8 @@ namespace DTXMania
                                        this.actLaneFlushD.Start( (Eドラムレーン) indexSevenLanes, ( (float) CInput管理.n通常音量 ) / 127f );\r
                                        bool flag = this.bフィルイン中;\r
                                        bool flag2 = this.bフィルイン中 && this.bフィルイン区間の最後のChipである( pChip );\r
-                                       bool flag3 = flag2;\r
-                                       this.actChipFireD.Start( (Eドラムレーン) indexSevenLanes, flag, flag2, flag3 );\r
+                                       //bool flag3 = flag2;\r
+                                       this.actChipFireD.Start( (Eドラムレーン) indexSevenLanes, flag, flag2, flag2 );\r
                                        this.actPad.Hit( this.nチャンネル0Atoパッド08[ pChip.nチャンネル番号 - 0x11 ] );\r
                                        this.tサウンド再生( pChip, CDTXMania.Timer.n前回リセットした時のシステム時刻 + pChip.n発声時刻ms, E楽器パート.DRUMS, dTX.nモニタを考慮した音量( E楽器パート.DRUMS ) );\r
                                        this.tチップのヒット処理( pChip.n発声時刻ms, pChip );\r