OSDN Git Service

#36176 204x269プレビュー画像をアスペクト比維持させる仕様変更。結果画面もコードを少し修正。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 05.選曲 / CActSelect曲リスト.cs
index 28359e1..8edb44f 100644 (file)
@@ -26,14 +26,14 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               if( this.n目標のスクロールカウンタ == 0 )\r
+                               if (this.n目標のスクロールカウンタ == 0)\r
                                {\r
-                                       return ( this.n現在のスクロールカウンタ != 0 );\r
+                                       return (this.n現在のスクロールカウンタ != 0);\r
                                }\r
                                return true;\r
                        }\r
                }\r
-               public int n現在のアンカ難易度レベル \r
+               public int n現在のアンカ難易度レベル\r
                {\r
                        get;\r
                        private set;\r
@@ -42,21 +42,21 @@ namespace DTXMania
                {\r
                        get\r
                        {\r
-                               return this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( this.r現在選択中の曲 );\r
+                               return this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(this.r現在選択中の曲);\r
                        }\r
                }\r
                public Cスコア r現在選択中のスコア\r
                {\r
                        get\r
                        {\r
-                               if( this.r現在選択中の曲 != null )\r
+                               if (this.r現在選択中の曲 != null)\r
                                {\r
-                                       return this.r現在選択中の曲.arスコア[ this.n現在選択中の曲の現在の難易度レベル ];\r
+                                       return this.r現在選択中の曲.arスコア[this.n現在選択中の曲の現在の難易度レベル];\r
                                }\r
                                return null;\r
                        }\r
                }\r
-               public C曲リストノード r現在選択中の曲 \r
+               public C曲リストノード r現在選択中の曲\r
                {\r
                        get;\r
                        private set;\r
@@ -72,7 +72,7 @@ namespace DTXMania
                // (前と同じ曲なら選択曲変更に掛かる再計算を省略して高速化するため)\r
                private C曲リストノード song_last = null;\r
 \r
-               \r
+\r
                // コンストラクタ\r
 \r
                public CActSelect曲リスト()\r
@@ -86,17 +86,17 @@ namespace DTXMania
 \r
                // メソッド\r
 \r
-               public int n現在のアンカ難易度レベルに最も近い難易度レベルを返す( C曲リストノード song )\r
+               public int n現在のアンカ難易度レベルに最も近い難易度レベルを返す(C曲リストノード song)\r
                {\r
                        // 事前チェック。\r
 \r
-                       if( song == null )\r
+                       if (song == null)\r
                                return this.n現在のアンカ難易度レベル;      // 曲がまったくないよ\r
 \r
-                       if( song.arスコア[ this.n現在のアンカ難易度レベル ] != null )\r
+                       if (song.arスコア[this.n現在のアンカ難易度レベル] != null)\r
                                return this.n現在のアンカ難易度レベル;      // 難易度ぴったりの曲があったよ\r
 \r
-                       if( ( song.eノード種別 == C曲リストノード.Eノード種別.BOX ) || ( song.eノード種別 == C曲リストノード.Eノード種別.BACKBOX ) )\r
+                       if ((song.eノード種別 == C曲リストノード.Eノード種別.BOX) || (song.eノード種別 == C曲リストノード.Eノード種別.BACKBOX))\r
                                return 0;                                                               // BOX と BACKBOX は関係無いよ\r
 \r
 \r
@@ -104,55 +104,55 @@ namespace DTXMania
 \r
                        int n最も近いレベル = this.n現在のアンカ難易度レベル;\r
 \r
-                       for( int i = 0; i < 5; i++ )\r
+                       for (int i = 0; i < 5; i++)\r
                        {\r
-                               if( song.arスコア[ n最も近いレベル ] != null )\r
+                               if (song.arスコア[n最も近いレベル] != null)\r
                                        break;  // 曲があった。\r
 \r
-                               n最も近いレベル = ( n最も近いレベル + 1 ) % 5;    // 曲がなかったので次の難易度レベルへGo。(5以上になったら0に戻る。)\r
+                               n最も近いレベル = (n最も近いレベル + 1) % 5;      // 曲がなかったので次の難易度レベルへGo。(5以上になったら0に戻る。)\r
                        }\r
 \r
 \r
                        // 見つかった曲がアンカより下のレベルだった場合……\r
                        // アンカから下向きに検索すれば、もっとアンカに近い曲があるんじゃね?\r
 \r
-                       if( n最も近いレベル < this.n現在のアンカ難易度レベル )\r
+                       if (n最も近いレベル < this.n現在のアンカ難易度レベル)\r
                        {\r
                                // 現在のアンカレベルから、難易度下向きに検索開始。\r
 \r
                                n最も近いレベル = this.n現在のアンカ難易度レベル;\r
 \r
-                               for( int i = 0; i < 5; i++ )\r
+                               for (int i = 0; i < 5; i++)\r
                                {\r
-                                       if( song.arスコア[ n最も近いレベル ] != null )\r
+                                       if (song.arスコア[n最も近いレベル] != null)\r
                                                break;  // 曲があった。\r
 \r
-                                       n最も近いレベル = ( ( n最も近いレベル - 1 ) + 5 ) % 5;    // 曲がなかったので次の難易度レベルへGo。(0未満になったら4に戻る。)\r
+                                       n最も近いレベル = ((n最も近いレベル - 1) + 5) % 5;        // 曲がなかったので次の難易度レベルへGo。(0未満になったら4に戻る。)\r
                                }\r
                        }\r
 \r
                        return n最も近いレベル;\r
                }\r
-               public C曲リストノード r指定された曲が存在するリストの先頭の曲( C曲リストノード song )\r
+               public C曲リストノード r指定された曲が存在するリストの先頭の曲(C曲リストノード song)\r
                {\r
-                       List<C曲リストノード> songList = GetSongListWithinMe( song );\r
-                       return ( songList == null ) ? null : songList[ 0 ];\r
+                       List<C曲リストノード> songList = GetSongListWithinMe(song);\r
+                       return (songList == null) ? null : songList[0];\r
                }\r
-               public C曲リストノード r指定された曲が存在するリストの末尾の曲( C曲リストノード song )\r
+               public C曲リストノード r指定された曲が存在するリストの末尾の曲(C曲リストノード song)\r
                {\r
-                       List<C曲リストノード> songList = GetSongListWithinMe( song );\r
-                       return ( songList == null ) ? null : songList[ songList.Count - 1 ];\r
+                       List<C曲リストノード> songList = GetSongListWithinMe(song);\r
+                       return (songList == null) ? null : songList[songList.Count - 1];\r
                }\r
 \r
-               private List<C曲リストノード> GetSongListWithinMe( C曲リストノード song )\r
+               private List<C曲リストノード> GetSongListWithinMe(C曲リストノード song)\r
                {\r
-                       if ( song.r親ノード == null )                                       // root階層のノートだったら\r
+                       if (song.r親ノード == null)                                 // root階層のノートだったら\r
                        {\r
-                               return CDTXMania.Songs管理.list曲ルート;  // rootのリストを返す\r
+                               return CDTXMania.Instance.Songs管理.list曲ルート; // rootのリストを返す\r
                        }\r
                        else\r
                        {\r
-                               if ( ( song.r親ノード.list子リスト != null ) && ( song.r親ノード.list子リスト.Count > 0 ) )\r
+                               if ((song.r親ノード.list子リスト != null) && (song.r親ノード.list子リスト.Count > 0))\r
                                {\r
                                        return song.r親ノード.list子リスト;\r
                                }\r
@@ -164,57 +164,56 @@ namespace DTXMania
                }\r
 \r
 \r
-               public delegate void DGSortFunc( List<C曲リストノード> songList, E楽器パート eInst, int order, params object[] p);\r
+               public delegate void DGSortFunc(List<C曲リストノード> songList, E楽器パート eInst, int order, params object[] p);\r
                /// <summary>\r
                /// 主にCSong管理.cs内にあるソート機能を、delegateで呼び出す。\r
                /// </summary>\r
                /// <param name="sf">ソート用に呼び出すメソッド</param>\r
                /// <param name="eInst">ソート基準とする楽器</param>\r
                /// <param name="order">-1=降順, 1=昇順</param>\r
-               public void t曲リストのソート( DGSortFunc sf, E楽器パート eInst, int order, params object[] p )\r
+               public void t曲リストのソート(DGSortFunc sf, E楽器パート eInst, int order, params object[] p)\r
                {\r
-                       List<C曲リストノード> songList = GetSongListWithinMe( this.r現在選択中の曲 );\r
-                       if ( songList == null )\r
+                       List<C曲リストノード> songList = GetSongListWithinMe(this.r現在選択中の曲);\r
+                       if (songList == null)\r
                        {\r
                                // 何もしない;\r
                        }\r
                        else\r
                        {\r
-//                             CDTXMania.Songs管理.t曲リストのソート3_演奏回数の多い順( songList, eInst, order );\r
-                               sf( songList, eInst, order, p );\r
-//                             this.r現在選択中の曲 = CDTXMania\r
+                               //                              CDTXMania.Instance.Songs管理.t曲リストのソート3_演奏回数の多い順( songList, eInst, order );\r
+                               sf(songList, eInst, order, p);\r
+                               //                              this.r現在選択中の曲 = CDTXMania\r
                                this.t現在選択中の曲を元に曲バーを再構成する();\r
                        }\r
                }\r
 \r
                public bool tBOXに入る()\r
                {\r
-//Trace.TraceInformation( "box enter" );\r
-//Trace.TraceInformation( "Skin現在Current : " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) );\r
-//Trace.TraceInformation( "Skin現在System  : " + CSkin.strSystemSkinSubfolderFullName );\r
-//Trace.TraceInformation( "Skin現在BoxDef  : " + CSkin.strBoxDefSkinSubfolderFullName );\r
-//Trace.TraceInformation( "Skin現在: " + CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ) );\r
-//Trace.TraceInformation( "Skin現pt: " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) );\r
-//Trace.TraceInformation( "Skin指定: " + CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) );\r
-//Trace.TraceInformation( "Skinpath: " + this.r現在選択中の曲.strSkinPath );\r
+                       //Trace.TraceInformation( "box enter" );\r
+                       //Trace.TraceInformation( "Skin現在Current : " + CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName( false ) );\r
+                       //Trace.TraceInformation( "Skin現在System  : " + CSkin.strSystemSkinSubfolderFullName );\r
+                       //Trace.TraceInformation( "Skin現在BoxDef  : " + CSkin.strBoxDefSkinSubfolderFullName );\r
+                       //Trace.TraceInformation( "Skin現在: " + CSkin.GetSkinName( CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName( false ) ) );\r
+                       //Trace.TraceInformation( "Skin現pt: " + CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName( false ) );\r
+                       //Trace.TraceInformation( "Skin指定: " + CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) );\r
+                       //Trace.TraceInformation( "Skinpath: " + this.r現在選択中の曲.strSkinPath );\r
                        bool ret = false;\r
-                       if ( CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName( false ) ) != CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath )\r
-                               && CSkin.bUseBoxDefSkin )\r
+                       if (CSkin.GetSkinName(CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(false)) != CSkin.GetSkinName(this.r現在選択中の曲.strSkinPath)\r
+                               && CSkin.bUseBoxDefSkin)\r
                        {\r
                                ret = true;\r
                                // BOXに入るときは、スキン変更発生時のみboxdefスキン設定の更新を行う\r
-                               CDTXMania.Skin.SetCurrentSkinSubfolderFullName(\r
-                                       CDTXMania.Skin.GetSkinSubfolderFullNameFromSkinName( CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) ), false );\r
+                               CDTXMania.Instance.Skin.SetCurrentSkinSubfolderFullName(this.r現在選択中の曲.strSkinPath, false);\r
                        }\r
 \r
-//Trace.TraceInformation( "Skin変更: " + CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ) );\r
-//Trace.TraceInformation( "Skin変更Current : "+  CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) );\r
-//Trace.TraceInformation( "Skin変更System  : "+  CSkin.strSystemSkinSubfolderFullName );\r
-//Trace.TraceInformation( "Skin変更BoxDef  : "+  CSkin.strBoxDefSkinSubfolderFullName );\r
+                       //Trace.TraceInformation( "Skin変更: " + CSkin.GetSkinName( CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName( false ) ) );\r
+                       //Trace.TraceInformation( "Skin変更Current : " + CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName( false ) );\r
+                       //Trace.TraceInformation( "Skin変更System  : " + CSkin.strSystemSkinSubfolderFullName );\r
+                       //Trace.TraceInformation( "Skin変更BoxDef  : " + CSkin.strBoxDefSkinSubfolderFullName );\r
 \r
-                       if( ( this.r現在選択中の曲.list子リスト != null ) && ( this.r現在選択中の曲.list子リスト.Count > 0 ) )\r
+                       if ((this.r現在選択中の曲.list子リスト != null) && (this.r現在選択中の曲.list子リスト.Count > 0))\r
                        {\r
-                               this.r現在選択中の曲 = this.r現在選択中の曲.list子リスト[ 0 ];\r
+                               this.r現在選択中の曲 = this.r現在選択中の曲.list子リスト[0];\r
                                this.t現在選択中の曲を元に曲バーを再構成する();\r
                                this.t選択曲が変更された(false);                                                                       // #27648 項目数変更を反映させる\r
                        }\r
@@ -222,30 +221,30 @@ namespace DTXMania
                }\r
                public bool tBOXを出る()\r
                {\r
-//Trace.TraceInformation( "box exit" );\r
-//Trace.TraceInformation( "Skin現在Current : " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) );\r
-//Trace.TraceInformation( "Skin現在System  : " + CSkin.strSystemSkinSubfolderFullName );\r
-//Trace.TraceInformation( "Skin現在BoxDef  : " + CSkin.strBoxDefSkinSubfolderFullName );\r
-//Trace.TraceInformation( "Skin現在: " + CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ) );\r
-//Trace.TraceInformation( "Skin現pt: " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) );\r
-//Trace.TraceInformation( "Skin指定: " + CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) );\r
-//Trace.TraceInformation( "Skinpath: " + this.r現在選択中の曲.strSkinPath );\r
+                       //Trace.TraceInformation( "box exit" );\r
+                       //Trace.TraceInformation( "Skin現在Current : " + CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(false) );\r
+                       //Trace.TraceInformation( "Skin現在System  : " + CSkin.strSystemSkinSubfolderFullName );\r
+                       //Trace.TraceInformation( "Skin現在BoxDef  : " + CSkin.strBoxDefSkinSubfolderFullName );\r
+                       //Trace.TraceInformation( "Skin現在: " + CSkin.GetSkinName( CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(false) ) );\r
+                       //Trace.TraceInformation( "Skin現pt: " + CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(false) );\r
+                       //Trace.TraceInformation( "Skin指定: " + CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) );\r
+                       //Trace.TraceInformation( "Skinpath: " + this.r現在選択中の曲.strSkinPath );\r
                        bool ret = false;\r
-                       if ( CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName( false ) ) != CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath )\r
-                               && CSkin.bUseBoxDefSkin )\r
+                       if (CSkin.GetSkinName(CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(false)) != CSkin.GetSkinName(this.r現在選択中の曲.strSkinPath)\r
+                               && CSkin.bUseBoxDefSkin)\r
                        {\r
                                ret = true;\r
                        }\r
                        // スキン変更が発生しなくても、boxdef圏外に出る場合は、boxdefスキン設定の更新が必要\r
                        // (ユーザーがboxdefスキンをConfig指定している場合への対応のために必要)\r
                        // tBoxに入る()とは処理が微妙に異なるので注意\r
-                       CDTXMania.Skin.SetCurrentSkinSubfolderFullName(\r
-                               ( this.r現在選択中の曲.strSkinPath == "" ) ? "" : CDTXMania.Skin.GetSkinSubfolderFullNameFromSkinName( CSkin.GetSkinName( this.r現在選択中の曲.strSkinPath ) ), false );\r
-//Trace.TraceInformation( "SKIN変更: " + CSkin.GetSkinName( CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) ) );\r
-//Trace.TraceInformation( "SKIN変更Current : "+  CDTXMania.Skin.GetCurrentSkinSubfolderFullName(false) );\r
-//Trace.TraceInformation( "SKIN変更System  : "+  CSkin.strSystemSkinSubfolderFullName );\r
-//Trace.TraceInformation( "SKIN変更BoxDef  : "+  CSkin.strBoxDefSkinSubfolderFullName );\r
-                       if ( this.r現在選択中の曲.r親ノード != null )\r
+                       CDTXMania.Instance.Skin.SetCurrentSkinSubfolderFullName(\r
+                               (this.r現在選択中の曲.strSkinPath == "") ? "" : CDTXMania.Instance.Skin.GetSkinSubfolderFullNameFromSkinName(CSkin.GetSkinName(this.r現在選択中の曲.strSkinPath)), false);\r
+                       //Trace.TraceInformation( "SKIN変更: " + CSkin.GetSkinName( CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(false) ) );\r
+                       //Trace.TraceInformation( "SKIN変更Current : "+  CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(false) );\r
+                       //Trace.TraceInformation( "SKIN変更System  : "+  CSkin.strSystemSkinSubfolderFullName );\r
+                       //Trace.TraceInformation( "SKIN変更BoxDef  : "+  CSkin.strBoxDefSkinSubfolderFullName );\r
+                       if (this.r現在選択中の曲.r親ノード != null)\r
                        {\r
                                this.r現在選択中の曲 = this.r現在選択中の曲.r親ノード;\r
                                this.t現在選択中の曲を元に曲バーを再構成する();\r
@@ -256,39 +255,39 @@ namespace DTXMania
                public void t現在選択中の曲を元に曲バーを再構成する()\r
                {\r
                        this.tバーの初期化();\r
-                       for( int i = 0; i < 13; i++ )\r
+                       for (int i = 0; i < 13; i++)\r
                        {\r
-                               this.t曲名バーの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].col文字色 );\r
+                               this.t曲名バーの生成(i, this.stバー情報[i].strタイトル文字列, this.stバー情報[i].col文字色);\r
                        }\r
                }\r
                public void t次に移動()\r
                {\r
-                       if( this.r現在選択中の曲 != null )\r
+                       if (this.r現在選択中の曲 != null)\r
                        {\r
                                this.n目標のスクロールカウンタ += 100;\r
                        }\r
                }\r
                public void t前に移動()\r
                {\r
-                       if( this.r現在選択中の曲 != null )\r
+                       if (this.r現在選択中の曲 != null)\r
                        {\r
                                this.n目標のスクロールカウンタ -= 100;\r
                        }\r
                }\r
                public void t難易度レベルをひとつ進める()\r
                {\r
-                       if( ( this.r現在選択中の曲 == null ) || ( this.r現在選択中の曲.nスコア数 <= 1 ) )\r
+                       if ((this.r現在選択中の曲 == null) || (this.r現在選択中の曲.nスコア数 <= 1))\r
                                return;         // 曲にスコアが0~1個しかないなら進める意味なし。\r
-                       \r
+\r
 \r
                        // 難易度レベルを+1し、現在選曲中のスコアを変更する。\r
 \r
-                       this.n現在のアンカ難易度レベル = this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( this.r現在選択中の曲 );\r
+                       this.n現在のアンカ難易度レベル = this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(this.r現在選択中の曲);\r
 \r
-                       for( int i = 0; i < 5; i++ )\r
+                       for (int i = 0; i < 5; i++)\r
                        {\r
-                               this.n現在のアンカ難易度レベル = ( this.n現在のアンカ難易度レベル + 1 ) % 5;    // 5以上になったら0に戻る。\r
-                               if( this.r現在選択中の曲.arスコア[ this.n現在のアンカ難易度レベル ] != null )     // 曲が存在してるならここで終了。存在してないなら次のレベルへGo。\r
+                               this.n現在のアンカ難易度レベル = (this.n現在のアンカ難易度レベル + 1) % 5;      // 5以上になったら0に戻る。\r
+                               if (this.r現在選択中の曲.arスコア[this.n現在のアンカ難易度レベル] != null)        // 曲が存在してるならここで終了。存在してないなら次のレベルへGo。\r
                                        break;\r
                        }\r
 \r
@@ -296,23 +295,24 @@ namespace DTXMania
                        // 曲毎に表示しているスキル値を、新しい難易度レベルに合わせて取得し直す。(表示されている13曲全部。)\r
 \r
                        C曲リストノード song = this.r現在選択中の曲;\r
-                       for( int i = 0; i < 5; i++ )\r
-                               song = this.r前の曲( song );\r
+                       for (int i = 0; i < 5; i++)\r
+                               song = this.r前の曲(song);\r
 \r
-                       for( int i = this.n現在の選択行 - 5; i < ( ( this.n現在の選択行 - 5 ) + 13 ); i++ )\r
+                       for (int i = this.n現在の選択行 - 5; i < ((this.n現在の選択行 - 5) + 13); i++)\r
                        {\r
-                               int index = ( i + 13 ) % 13;\r
-                               for( int m = 0; m < 3; m++ )\r
+                               int index = (i + 13) % 13;\r
+                               for (E楽器パート m = E楽器パート.DRUMS; m <= E楽器パート.BASS; m++)\r
                                {\r
-                                       this.stバー情報[ index ].nスキル値[ m ] = (int) song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.最大スキル[ m ];\r
+                                       this.stバー情報[index].nスキル値[m] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[m];\r
+                                       this.stバー情報[index].n使用レーン数[m] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[m];\r
                                }\r
-                               song = this.r次の曲( song );\r
+                               song = this.r次の曲(song);\r
                        }\r
 \r
 \r
                        // 選曲ステージに変更通知を発出し、関係Activityの対応を行ってもらう。\r
 \r
-                       CDTXMania.stage選曲.t選択曲変更通知();\r
+                       CDTXMania.Instance.stage選曲.t選択曲変更通知();\r
                }\r
 \r
 \r
@@ -320,18 +320,18 @@ namespace DTXMania
                /// 曲リストをリセットする\r
                /// </summary>\r
                /// <param name="cs"></param>\r
-               public void Refresh(CSongs管理 cs, bool bRemakeSongTitleBar )         // #26070 2012.2.28 yyagi\r
+               public void Refresh(CSongs管理 cs, bool bRemakeSongTitleBar         // #26070 2012.2.28 yyagi\r
                {\r
-//                     this.On非活性化();\r
+                       //                      this.On非活性化();\r
 \r
-                       if ( cs != null && cs.list曲ルート.Count > 0 )      // 新しい曲リストを検索して、1曲以上あった\r
+                       if (cs != null && cs.list曲ルート.Count > 0)        // 新しい曲リストを検索して、1曲以上あった\r
                        {\r
-                               CDTXMania.Songs管理 = cs;\r
+                               CDTXMania.Instance.Songs管理 = cs;\r
 \r
-                               if ( this.r現在選択中の曲 != null )                      // r現在選択中の曲==null とは、「最初songlist.dbが無かった or 検索したが1曲もない」\r
+                               if (this.r現在選択中の曲 != null)                        // r現在選択中の曲==null とは、「最初songlist.dbが無かった or 検索したが1曲もない」\r
                                {\r
-                                       this.r現在選択中の曲 = searchCurrentBreadcrumbsPosition( CDTXMania.Songs管理.list曲ルート, this.r現在選択中の曲.strBreadcrumbs );\r
-                                       if ( bRemakeSongTitleBar )                                      // 選曲画面以外に居るときには再構成しない (非活性化しているときに実行すると例外となる)\r
+                                       this.r現在選択中の曲 = searchCurrentBreadcrumbsPosition(CDTXMania.Instance.Songs管理.list曲ルート, this.r現在選択中の曲.strBreadcrumbs);\r
+                                       if (bRemakeSongTitleBar)                                        // 選曲画面以外に居るときには再構成しない (非活性化しているときに実行すると例外となる)\r
                                        {\r
                                                this.t現在選択中の曲を元に曲バーを再構成する();\r
                                        }\r
@@ -341,9 +341,9 @@ namespace DTXMania
                                        {\r
                                                return ( c.strBreadcrumbs.Equals( bc ) );\r
                                        };\r
-                                       int nMatched = CDTXMania.Songs管理.list曲ルート.FindIndex( match );\r
+                                       int nMatched = CDTXMania.Instance.Songs管理.list曲ルート.FindIndex( match );\r
 \r
-                                       this.r現在選択中の曲 = ( nMatched == -1 ) ? null : CDTXMania.Songs管理.list曲ルート[ nMatched ];\r
+                                       this.r現在選択中の曲 = ( nMatched == -1 ) ? null : CDTXMania.Instance.Songs管理.list曲ルート[ nMatched ];\r
                                        this.t現在選択中の曲を元に曲バーを再構成する();\r
 #endif\r
                                        return;\r
@@ -362,18 +362,18 @@ namespace DTXMania
                /// <param name="ln">検索対象のList</param>\r
                /// <param name="bc">検索するパンくずリスト(文字列)</param>\r
                /// <returns></returns>\r
-               private C曲リストノード searchCurrentBreadcrumbsPosition( List<C曲リストノード> ln, string bc )\r
+               private C曲リストノード searchCurrentBreadcrumbsPosition(List<C曲リストノード> ln, string bc)\r
                {\r
                        foreach (C曲リストノード n in ln)\r
                        {\r
-                               if ( n.strBreadcrumbs == bc )\r
+                               if (n.strBreadcrumbs == bc)\r
                                {\r
                                        return n;\r
                                }\r
-                               else if ( n.list子リスト != null && n.list子リスト.Count > 0 )  // 子リストが存在するなら、再帰で探す\r
+                               else if (n.list子リスト != null && n.list子リスト.Count > 0)    // 子リストが存在するなら、再帰で探す\r
                                {\r
-                                       C曲リストノード r = searchCurrentBreadcrumbsPosition( n.list子リスト, bc );\r
-                                       if ( r != null ) return r;\r
+                                       C曲リストノード r = searchCurrentBreadcrumbsPosition(n.list子リスト, bc);\r
+                                       if (r != null) return r;\r
                                }\r
                        }\r
                        return null;\r
@@ -382,18 +382,18 @@ namespace DTXMania
                /// <summary>\r
                /// BOXのアイテム数と、今何番目を選択しているかをセットする\r
                /// </summary>\r
-               public void t選択曲が変更された( bool bForce ) // #27648\r
+               public void t選択曲が変更された(bool bForce)   // #27648\r
                {\r
-                       C曲リストノード song = CDTXMania.stage選曲.r現在選択中の曲;\r
-                       if ( song == null )\r
+                       C曲リストノード song = CDTXMania.Instance.stage選曲.r現在選択中の曲;\r
+                       if (song == null)\r
                                return;\r
-                       if ( song == song_last && bForce == false )\r
+                       if (song == song_last && bForce == false)\r
                                return;\r
-                               \r
+\r
                        song_last = song;\r
-                       List<C曲リストノード> list = ( song.r親ノード != null ) ? song.r親ノード.list子リスト : CDTXMania.Songs管理.list曲ルート;\r
-                       int index = list.IndexOf( song ) + 1;\r
-                       if ( index <= 0 )\r
+                       List<C曲リストノード> list = (song.r親ノード != null) ? song.r親ノード.list子リスト : CDTXMania.Instance.Songs管理.list曲ルート;\r
+                       int index = list.IndexOf(song) + 1;\r
+                       if (index <= 0)\r
                        {\r
                                nCurrentPosition = nNumOfItems = 0;\r
                        }\r
@@ -408,7 +408,7 @@ namespace DTXMania
 \r
                public override void On活性化()\r
                {\r
-                       if( this.b活性化してる )\r
+                       if (this.b活性化してる)\r
                                return;\r
 \r
                        this.e楽器パート = E楽器パート.DRUMS;\r
@@ -421,15 +421,20 @@ namespace DTXMania
                        // 曲リスト文字は2倍(面積4倍)でテクスチャに描画してから縮小表示するので、フォントサイズは2倍とする。\r
 \r
                        FontStyle regular = FontStyle.Regular;\r
-                       if( CDTXMania.ConfigIni.b選曲リストフォントを斜体にする ) regular |= FontStyle.Italic;\r
-                       if( CDTXMania.ConfigIni.b選曲リストフォントを太字にする ) regular |= FontStyle.Bold;\r
-                       this.ft曲リスト用フォント = new Font( CDTXMania.ConfigIni.str選曲リストフォント, (float) ( CDTXMania.ConfigIni.n選曲リストフォントのサイズdot * 2 ), regular, GraphicsUnit.Pixel );\r
-                       \r
+                       if (CDTXMania.Instance.ConfigIni.b選曲リストフォントを斜体にする) regular |= FontStyle.Italic;\r
+                       if (CDTXMania.Instance.ConfigIni.b選曲リストフォントを太字にする) regular |= FontStyle.Bold;\r
+                       this.ft曲リスト用フォント = new Font(\r
+                               CDTXMania.Instance.ConfigIni.str選曲リストフォント,\r
+                               (float)(CDTXMania.Instance.ConfigIni.n選曲リストフォントのサイズdot * 2 * Scale.Y),                // 後でScale.Yを掛けないように直すこと(Config.ini初期値変更)\r
+                               regular,\r
+                               GraphicsUnit.Pixel\r
+                       );\r
+\r
 \r
                        // 現在選択中の曲がない(=はじめての活性化)なら、現在選択中の曲をルートの先頭ノードに設定する。\r
 \r
-                       if( ( this.r現在選択中の曲 == null ) && ( CDTXMania.Songs管理.list曲ルート.Count > 0 ) )\r
-                               this.r現在選択中の曲 = CDTXMania.Songs管理.list曲ルート[ 0 ];\r
+                       if ((this.r現在選択中の曲 == null) && (CDTXMania.Instance.Songs管理.list曲ルート.Count > 0))\r
+                               this.r現在選択中の曲 = CDTXMania.Instance.Songs管理.list曲ルート[0];\r
 \r
 \r
                        // バー情報を初期化する。\r
@@ -442,161 +447,165 @@ namespace DTXMania
                }\r
                public override void On非活性化()\r
                {\r
-                       if( this.b活性化してない )\r
+                       if (this.b活性化してない)\r
                                return;\r
 \r
-                       CDTXMania.t安全にDisposeする( ref this.ft曲リスト用フォント );\r
+                       TextureFactory.t安全にDisposeする(ref this.ft曲リスト用フォント);\r
 \r
-                       for( int i = 0; i < 13; i++ )\r
-                               this.ct登場アニメ用[ i ] = null;\r
+                       for (int i = 0; i < 13; i++)\r
+                               this.ct登場アニメ用[i] = null;\r
 \r
                        base.On非活性化();\r
                }\r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if( this.b活性化してない )\r
+                       if (this.b活性化してない)\r
                                return;\r
 \r
-                       this.tx曲名バー.Score = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect bar score.png" ), false );\r
-                       this.tx曲名バー.Box = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect bar box.png" ), false );\r
-                       this.tx曲名バー.Other = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect bar other.png" ), false );\r
-                       this.tx選曲バー.Score = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect bar score selected.png" ), false );\r
-                       this.tx選曲バー.Box = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect bar box selected.png" ), false );\r
-                       this.tx選曲バー.Other = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect bar other selected.png" ), false );\r
-                       this.txスキル数字 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect skill number on list.png" ), false );\r
-                       for( int i = 0; i < 13; i++ )\r
-                               this.t曲名バーの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].col文字色 );\r
-\r
-                       int c = ( CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja" ) ? 0 : 1;\r
+                       this.tx曲名バー.Score = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar score.png"), false);\r
+                       this.tx曲名バー.Box = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar box.png"), false);\r
+                       this.tx曲名バー.Other = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar other.png"), false);\r
+\r
+                       this.tx選曲バー.Score = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar score selected.png"), false);\r
+                       this.tx選曲バー.Box = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar box selected.png"), false);\r
+                       this.tx選曲バー.Other = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect bar other selected.png"), false);\r
+                       \r
+                       this.txスキル数字 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect skill number on list.png"), false);\r
+                       this.tx使用レーン数数字 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect skill number on gauge etc.png"), false);\r
+                       for (int i = 0; i < 13; i++)\r
+                               this.t曲名バーの生成(i, this.stバー情報[i].strタイトル文字列, this.stバー情報[i].col文字色);\r
+\r
+                       int c = (CultureInfo.CurrentCulture.TwoLetterISOLanguageName == "ja") ? 0 : 1;\r
                        #region [ Songs not found画像 ]\r
                        try\r
                        {\r
-                               using( Bitmap image = new Bitmap( 640, 128 ) )\r
-                               using( Graphics graphics = Graphics.FromImage( image ) )\r
+                               using (Bitmap image = new Bitmap(SampleFramework.GameWindowSize.Width, (int)(128 * Scale.Y)))\r
+                               using (Graphics graphics = Graphics.FromImage(image))\r
                                {\r
                                        string[] s1 = { "曲データが見つかりません。", "Songs not found." };\r
                                        string[] s2 = { "曲データをDTXManiaGR.exe以下の", "You need to install songs." };\r
                                        string[] s3 = { "フォルダにインストールして下さい。", "" };\r
-                                       graphics.DrawString( s1[c], this.ft曲リスト用フォント, Brushes.DarkGray, (float) 2f, (float) 2f );\r
-                                       graphics.DrawString( s1[c], this.ft曲リスト用フォント, Brushes.White, (float) 0f, (float) 0f );\r
-                                       graphics.DrawString( s2[c], this.ft曲リスト用フォント, Brushes.DarkGray, (float) 2f, (float) 44f );\r
-                                       graphics.DrawString( s2[c], this.ft曲リスト用フォント, Brushes.White, (float) 0f, (float) 42f );\r
-                                       graphics.DrawString( s3[c], this.ft曲リスト用フォント, Brushes.DarkGray, (float) 2f, (float) 86f );\r
-                                       graphics.DrawString( s3[c], this.ft曲リスト用フォント, Brushes.White, (float) 0f, (float) 84f );\r
+                                       graphics.DrawString(s1[c], this.ft曲リスト用フォント, Brushes.DarkGray, (float)(2f * Scale.X), (float)(2f * Scale.Y));\r
+                                       graphics.DrawString(s1[c], this.ft曲リスト用フォント, Brushes.White, (float)0f, (float)0f);\r
+                                       graphics.DrawString(s2[c], this.ft曲リスト用フォント, Brushes.DarkGray, (float)(2f * Scale.X), (float)(44f * Scale.Y));\r
+                                       graphics.DrawString(s2[c], this.ft曲リスト用フォント, Brushes.White, (float)0f, (float)(42f * Scale.Y));\r
+                                       graphics.DrawString(s3[c], this.ft曲リスト用フォント, Brushes.DarkGray, (float)(2f * Scale.X), (float)(86f * Scale.Y));\r
+                                       graphics.DrawString(s3[c], this.ft曲リスト用フォント, Brushes.White, (float)0f, (float)(84f * Scale.Y));\r
 \r
-                                       this.txSongNotFound = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
+                                       this.txSongNotFound = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);\r
 \r
-                                       this.txSongNotFound.vc拡大縮小倍率 = new Vector3( 0.5f, 0.5f, 1f );       // 半分のサイズで表示する。\r
+                                       this.txSongNotFound.vc拡大縮小倍率 = new Vector3(0.5f, 0.5f, 1f); // 半分のサイズで表示する。\r
                                }\r
                        }\r
-                       catch( CTextureCreateFailedException )\r
+                       catch (CTextureCreateFailedException)\r
                        {\r
-                               Trace.TraceError( "SoungNotFoundテクスチャの作成に失敗しました。" );\r
+                               Trace.TraceError("SoungNotFoundテクスチャの作成に失敗しました。");\r
                                this.txSongNotFound = null;\r
                        }\r
                        #endregion\r
                        #region [ "曲データを検索しています"画像 ]\r
                        try\r
                        {\r
-                               using ( Bitmap image = new Bitmap( 640, 96 ) )\r
-                               using ( Graphics graphics = Graphics.FromImage( image ) )\r
+                               using (Bitmap image = new Bitmap(SampleFramework.GameWindowSize.Width, (int)(96 * Scale.Y)))\r
+                               using (Graphics graphics = Graphics.FromImage(image))\r
                                {\r
                                        string[] s1 = { "曲データを検索しています。", "Now enumerating songs." };\r
                                        string[] s2 = { "そのまましばらくお待ち下さい。", "Please wait..." };\r
-                                       graphics.DrawString( s1[c], this.ft曲リスト用フォント, Brushes.DarkGray, (float) 2f, (float) 2f );\r
-                                       graphics.DrawString( s1[c], this.ft曲リスト用フォント, Brushes.White, (float) 0f, (float) 0f );\r
-                                       graphics.DrawString( s2[c], this.ft曲リスト用フォント, Brushes.DarkGray, (float) 2f, (float) 44f );\r
-                                       graphics.DrawString( s2[c], this.ft曲リスト用フォント, Brushes.White, (float) 0f, (float) 42f );\r
+                                       graphics.DrawString(s1[c], this.ft曲リスト用フォント, Brushes.DarkGray, (float)(2f * Scale.X), (float)(2f * Scale.Y));\r
+                                       graphics.DrawString(s1[c], this.ft曲リスト用フォント, Brushes.White, (float)0f, (float)0f);\r
+                                       graphics.DrawString(s2[c], this.ft曲リスト用フォント, Brushes.DarkGray, (float)(2f * Scale.X), (float)(44f * Scale.Y));\r
+                                       graphics.DrawString(s2[c], this.ft曲リスト用フォント, Brushes.White, (float)0f, (float)(42f * Scale.Y));\r
 \r
-                                       this.txEnumeratingSongs = new CTexture( CDTXMania.app.Device, image, CDTXMania.TextureFormat );\r
+                                       this.txEnumeratingSongs = new CTexture(CDTXMania.Instance.Device, image, CDTXMania.Instance.TextureFormat);\r
 \r
-                                       this.txEnumeratingSongs.vc拡大縮小倍率 = new Vector3( 0.5f, 0.5f, 1f );   // 半分のサイズで表示する。\r
+                                       this.txEnumeratingSongs.vc拡大縮小倍率 = new Vector3(0.5f, 0.5f, 1f);     // 半分のサイズで表示する。\r
                                }\r
                        }\r
-                       catch ( CTextureCreateFailedException )\r
+                       catch (CTextureCreateFailedException)\r
                        {\r
-                               Trace.TraceError( "txEnumeratingSongsテクスチャの作成に失敗しました。" );\r
+                               Trace.TraceError("txEnumeratingSongsテクスチャの作成に失敗しました。");\r
                                this.txEnumeratingSongs = null;\r
                        }\r
                        #endregion\r
                        #region [ 曲数表示 ]\r
-                       this.txアイテム数数字 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenSelect skill number on gauge etc.png" ), false );\r
+                       this.txアイテム数数字 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenSelect skill number on gauge etc.png"), false);\r
                        #endregion\r
                        base.OnManagedリソースの作成();\r
                }\r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if( this.b活性化してない )\r
+                       if (this.b活性化してない)\r
                                return;\r
 \r
-                       CDTXMania.t安全にDisposeする( ref this.txアイテム数数字 );\r
+                       TextureFactory.t安全にDisposeする(ref this.txアイテム数数字);\r
 \r
-                       for( int i = 0; i < 13; i++ )\r
-                               CDTXMania.t安全にDisposeする( ref this.stバー情報[ i ].txタイトル名 );\r
-\r
-                       CDTXMania.t安全にDisposeする( ref this.txスキル数字 );\r
-                       CDTXMania.t安全にDisposeする( ref this.txEnumeratingSongs );\r
-                       CDTXMania.t安全にDisposeする( ref this.txSongNotFound );\r
-                       CDTXMania.t安全にDisposeする( ref this.tx曲名バー.Score );\r
-                       CDTXMania.t安全にDisposeする( ref this.tx曲名バー.Box );\r
-                       CDTXMania.t安全にDisposeする( ref this.tx曲名バー.Other );\r
-                       CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Score );\r
-                       CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Box );\r
-                       CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Other );\r
+                       for (int i = 0; i < 13; i++)\r
+                               TextureFactory.t安全にDisposeする(ref this.stバー情報[i].txタイトル名);\r
+                       \r
+                       TextureFactory.t安全にDisposeする(ref this.txスキル数字);\r
+                       TextureFactory.t安全にDisposeする(ref this.tx使用レーン数数字);\r
+                       TextureFactory.t安全にDisposeする(ref this.txEnumeratingSongs);\r
+                       TextureFactory.t安全にDisposeする(ref this.txSongNotFound);\r
+                       TextureFactory.t安全にDisposeする(ref this.tx曲名バー.Score);\r
+                       TextureFactory.t安全にDisposeする(ref this.tx曲名バー.Box);\r
+                       TextureFactory.t安全にDisposeする(ref this.tx曲名バー.Other);\r
+                       TextureFactory.t安全にDisposeする(ref this.tx選曲バー.Score);\r
+                       TextureFactory.t安全にDisposeする(ref this.tx選曲バー.Box);\r
+                       TextureFactory.t安全にDisposeする(ref this.tx選曲バー.Other);\r
 \r
                        base.OnManagedリソースの解放();\r
                }\r
                public override int On進行描画()\r
                {\r
-                       if( this.b活性化してない )\r
+                       if (this.b活性化してない)\r
                                return 0;\r
 \r
                        #region [ 初めての進行描画 ]\r
                        //-----------------\r
-                       if( this.b初めての進行描画 )\r
+                       if (this.b初めての進行描画)\r
                        {\r
-                               for( int i = 0; i < 13; i++ )\r
-                                       this.ct登場アニメ用[ i ] = new CCounter( -i * 10, 100, 3, CDTXMania.Timer );\r
+                               for (int i = 0; i < 13; i++)\r
+                                       this.ct登場アニメ用[i] = new CCounter(-i * 10, 100, 3, CDTXMania.Instance.Timer);\r
 \r
                                this.nスクロールタイマ = CSound管理.rc演奏用タイマ.n現在時刻;\r
-                               CDTXMania.stage選曲.t選択曲変更通知();\r
-                               \r
+                               CDTXMania.Instance.stage選曲.t選択曲変更通知();\r
+\r
                                base.b初めての進行描画 = false;\r
                        }\r
                        //-----------------\r
                        #endregion\r
 \r
-                       \r
+\r
                        // まだ選択中の曲が決まってなければ、曲ツリールートの最初の曲にセットする。\r
 \r
-                       if( ( this.r現在選択中の曲 == null ) && ( CDTXMania.Songs管理.list曲ルート.Count > 0 ) )\r
-                               this.r現在選択中の曲 = CDTXMania.Songs管理.list曲ルート[ 0 ];\r
+                       if ((this.r現在選択中の曲 == null) && (CDTXMania.Instance.Songs管理.list曲ルート.Count > 0))\r
+                               this.r現在選択中の曲 = CDTXMania.Instance.Songs管理.list曲ルート[0];\r
 \r
 \r
                        // 本ステージは、(1)登場アニメフェーズ → (2)通常フェーズ と二段階にわけて進む。\r
                        // 2つしかフェーズがないので CStage.eフェーズID を使ってないところがまた本末転倒。\r
 \r
-                       \r
+\r
                        // 進行。\r
 \r
-                       if( !this.b登場アニメ全部完了 )\r
+                       if (!this.b登場アニメ全部完了)\r
                        {\r
                                #region [ (1) 登場アニメフェーズの進行。]\r
                                //-----------------\r
-                               for( int i = 0; i < 13; i++ )   // パネルは全13枚。\r
+                               for (int i = 0; i < 13; i++)    // パネルは全13枚。\r
                                {\r
-                                       this.ct登場アニメ用[ i ].t進行();\r
+                                       this.ct登場アニメ用[i].t進行();\r
 \r
-                                       if( this.ct登場アニメ用[ i ].b終了値に達した )\r
-                                               this.ct登場アニメ用[ i ].t停止();\r
+                                       if (this.ct登場アニメ用[i].b終了値に達した)\r
+                                               this.ct登場アニメ用[i].t停止();\r
                                }\r
 \r
                                // 全部の進行が終わったら、this.b登場アニメ全部完了 を true にする。\r
 \r
                                this.b登場アニメ全部完了 = true;\r
-                               for( int i = 0; i < 13; i++ )   // パネルは全13枚。\r
+                               for (int i = 0; i < 13; i++)    // パネルは全13枚。\r
                                {\r
-                                       if( this.ct登場アニメ用[ i ].b進行中 )\r
+                                       if (this.ct登場アニメ用[i].b進行中)\r
                                        {\r
                                                this.b登場アニメ全部完了 = false;      // まだ進行中のアニメがあるなら false のまま。\r
                                                break;\r
@@ -610,27 +619,27 @@ namespace DTXMania
                                #region [ (2) 通常フェーズの進行。]\r
                                //-----------------\r
                                long n現在時刻 = CSound管理.rc演奏用タイマ.n現在時刻;\r
-                               \r
-                               if( n現在時刻 < this.nスクロールタイマ )    // 念のため\r
+\r
+                               if (n現在時刻 < this.nスクロールタイマ)     // 念のため\r
                                        this.nスクロールタイマ = n現在時刻;\r
 \r
                                const int nアニメ間隔 = 2;\r
-                               while( ( n現在時刻 - this.nスクロールタイマ ) >= nアニメ間隔 )\r
+                               while ((n現在時刻 - this.nスクロールタイマ) >= nアニメ間隔)\r
                                {\r
                                        int n加速度 = 1;\r
-                                       int n残距離 = Math.Abs( (int) ( this.n目標のスクロールカウンタ - this.n現在のスクロールカウンタ ) );\r
+                                       int n残距離 = Math.Abs((int)(this.n目標のスクロールカウンタ - this.n現在のスクロールカウンタ));\r
 \r
                                        #region [ 残距離が遠いほどスクロールを速くする(=n加速度を多くする)。]\r
                                        //-----------------\r
-                                       if( n残距離 <= 100 )\r
+                                       if (n残距離 <= 100)\r
                                        {\r
                                                n加速度 = 2;\r
                                        }\r
-                                       else if( n残距離 <= 300 )\r
+                                       else if (n残距離 <= 300)\r
                                        {\r
                                                n加速度 = 3;\r
                                        }\r
-                                       else if( n残距離 <= 500 )\r
+                                       else if (n残距離 <= 500)\r
                                        {\r
                                                n加速度 = 4;\r
                                        }\r
@@ -643,66 +652,68 @@ namespace DTXMania
 \r
                                        #region [ 加速度を加算し、現在のスクロールカウンタを目標のスクロールカウンタまで近づける。 ]\r
                                        //-----------------\r
-                                       if( this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ )           // (A) 正の方向に未達の場合:\r
+                                       if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)            // (A) 正の方向に未達の場合:\r
                                        {\r
                                                this.n現在のスクロールカウンタ += n加速度;                                                               // カウンタを正方向に移動する。\r
 \r
-                                               if( this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ )\r
+                                               if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)\r
                                                        this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;        // 到着!スクロール停止!\r
                                        }\r
 \r
-                                       else if( this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ )      // (B) 負の方向に未達の場合:\r
+                                       else if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)       // (B) 負の方向に未達の場合:\r
                                        {\r
                                                this.n現在のスクロールカウンタ -= n加速度;                                                               // カウンタを負方向に移動する。\r
 \r
-                                               if( this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ )   // 到着!スクロール停止!\r
+                                               if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)    // 到着!スクロール停止!\r
                                                        this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
                                        }\r
                                        //-----------------\r
                                        #endregion\r
 \r
-                                       if( this.n現在のスクロールカウンタ >= 100 )         // 1行=100カウント。\r
+                                       if (this.n現在のスクロールカウンタ >= 100)          // 1行=100カウント。\r
                                        {\r
                                                #region [ パネルを1行上にシフトする。]\r
                                                //-----------------\r
 \r
                                                // 選択曲と選択行を1つ下の行に移動。\r
 \r
-                                               this.r現在選択中の曲 = this.r次の曲( this.r現在選択中の曲 );\r
-                                               this.n現在の選択行 = ( this.n現在の選択行 + 1 ) % 13;\r
+                                               this.r現在選択中の曲 = this.r次の曲(this.r現在選択中の曲);\r
+                                               this.n現在の選択行 = (this.n現在の選択行 + 1) % 13;\r
 \r
 \r
                                                // 選択曲から7つ下のパネル(=新しく最下部に表示されるパネル。消えてしまう一番上のパネルを再利用する)に、新しい曲の情報を記載する。\r
 \r
                                                C曲リストノード song = this.r現在選択中の曲;\r
-                                               for( int i = 0; i < 7; i++ )\r
-                                                       song = this.r次の曲( song );\r
+                                               for (int i = 0; i < 7; i++)\r
+                                                       song = this.r次の曲(song);\r
 \r
-                                               int index = ( this.n現在の選択行 + 7 ) % 13;      // 新しく最下部に表示されるパネルのインデックス(0~12)。\r
-                                               this.stバー情報[ index ].strタイトル文字列 = song.strタイトル;\r
-                                               this.stバー情報[ index ].col文字色 = song.col文字色;\r
-                                               this.t曲名バーの生成( index, this.stバー情報[ index ].strタイトル文字列, this.stバー情報[ index ].col文字色 );\r
+                                               int index = (this.n現在の選択行 + 7) % 13;        // 新しく最下部に表示されるパネルのインデックス(0~12)。\r
+                                               this.stバー情報[index].strタイトル文字列 = song.strタイトル;\r
+                                               this.stバー情報[index].col文字色 = song.col文字色;\r
+                                               this.t曲名バーの生成(index, this.stバー情報[index].strタイトル文字列, this.stバー情報[index].col文字色);\r
 \r
 \r
                                                // stバー情報[] の内容を1行ずつずらす。\r
-                                               \r
+\r
                                                C曲リストノード song2 = this.r現在選択中の曲;\r
-                                               for( int i = 0; i < 5; i++ )\r
-                                                       song2 = this.r前の曲( song2 );\r
+                                               for (int i = 0; i < 5; i++)\r
+                                                       song2 = this.r前の曲(song2);\r
 \r
-                                               for( int i = 0; i < 13; i++ )\r
+                                               for (int i = 0; i < 13; i++)\r
                                                {\r
-                                                       int n = ( ( ( this.n現在の選択行 - 5 ) + i ) + 13 ) % 13;\r
-                                                       this.stバー情報[ n ].eバー種別 = this.e曲のバー種別を返す( song2 );\r
-                                                       song2 = this.r次の曲( song2 );\r
+                                                       int n = (((this.n現在の選択行 - 5) + i) + 13) % 13;\r
+                                                       this.stバー情報[n].eバー種別 = this.e曲のバー種別を返す(song2);\r
+                                                       song2 = this.r次の曲(song2);\r
                                                }\r
 \r
-                                               \r
-                                               // 新しく最下部に表示されるパネル用のスキル値を取得。\r
 \r
-                                               for( int i = 0; i < 3; i++ )\r
-                                                       this.stバー情報[ index ].nスキル値[ i ] = (int) song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.最大スキル[ i ];\r
+                                               // 新しく最下部に表示されるパネル用のスキル値を取得。\r
 \r
+                                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                                               {\r
+                                                       this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[i];\r
+                                                       this.stバー情報[index].n使用レーン数[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[i];\r
+                                               }\r
 \r
                                                // 1行(100カウント)移動完了。\r
 \r
@@ -711,53 +722,56 @@ namespace DTXMania
 \r
                                                this.t選択曲が変更された(false);                               // スクロールバー用に今何番目を選択しているかを更新\r
 \r
-                                               if( this.n目標のスクロールカウンタ == 0 )\r
-                                                       CDTXMania.stage選曲.t選択曲変更通知();         // スクロール完了=選択曲変更!\r
+                                               if (this.n目標のスクロールカウンタ == 0)\r
+                                                       CDTXMania.Instance.stage選曲.t選択曲変更通知();                // スクロール完了=選択曲変更!\r
 \r
                                                //-----------------\r
                                                #endregion\r
                                        }\r
-                                       else if( this.n現在のスクロールカウンタ <= -100 )\r
+                                       else if (this.n現在のスクロールカウンタ <= -100)\r
                                        {\r
                                                #region [ パネルを1行下にシフトする。]\r
                                                //-----------------\r
 \r
                                                // 選択曲と選択行を1つ上の行に移動。\r
 \r
-                                               this.r現在選択中の曲 = this.r前の曲( this.r現在選択中の曲 );\r
-                                               this.n現在の選択行 = ( ( this.n現在の選択行 - 1 ) + 13 ) % 13;\r
+                                               this.r現在選択中の曲 = this.r前の曲(this.r現在選択中の曲);\r
+                                               this.n現在の選択行 = ((this.n現在の選択行 - 1) + 13) % 13;\r
 \r
 \r
                                                // 選択曲から5つ上のパネル(=新しく最上部に表示されるパネル。消えてしまう一番下のパネルを再利用する)に、新しい曲の情報を記載する。\r
 \r
                                                C曲リストノード song = this.r現在選択中の曲;\r
-                                               for( int i = 0; i < 5; i++ )\r
-                                                       song = this.r前の曲( song );\r
+                                               for (int i = 0; i < 5; i++)\r
+                                                       song = this.r前の曲(song);\r
 \r
-                                               int index = ( ( this.n現在の選択行 - 5 ) + 13 ) % 13;     // 新しく最上部に表示されるパネルのインデックス(0~12)。\r
-                                               this.stバー情報[ index ].strタイトル文字列 = song.strタイトル;\r
-                                               this.stバー情報[ index ].col文字色 = song.col文字色;\r
-                                               this.t曲名バーの生成( index, this.stバー情報[ index ].strタイトル文字列, this.stバー情報[ index ].col文字色 );\r
+                                               int index = ((this.n現在の選択行 - 5) + 13) % 13; // 新しく最上部に表示されるパネルのインデックス(0~12)。\r
+                                               this.stバー情報[index].strタイトル文字列 = song.strタイトル;\r
+                                               this.stバー情報[index].col文字色 = song.col文字色;\r
+                                               this.t曲名バーの生成(index, this.stバー情報[index].strタイトル文字列, this.stバー情報[index].col文字色);\r
 \r
 \r
                                                // stバー情報[] の内容を1行ずつずらす。\r
-                                               \r
+\r
                                                C曲リストノード song2 = this.r現在選択中の曲;\r
-                                               for( int i = 0; i < 5; i++ )\r
-                                                       song2 = this.r前の曲( song2 );\r
+                                               for (int i = 0; i < 5; i++)\r
+                                                       song2 = this.r前の曲(song2);\r
 \r
-                                               for( int i = 0; i < 13; i++ )\r
+                                               for (int i = 0; i < 13; i++)\r
                                                {\r
-                                                       int n = ( ( ( this.n現在の選択行 - 5 ) + i ) + 13 ) % 13;\r
-                                                       this.stバー情報[ n ].eバー種別 = this.e曲のバー種別を返す( song2 );\r
-                                                       song2 = this.r次の曲( song2 );\r
+                                                       int n = (((this.n現在の選択行 - 5) + i) + 13) % 13;\r
+                                                       this.stバー情報[n].eバー種別 = this.e曲のバー種別を返す(song2);\r
+                                                       song2 = this.r次の曲(song2);\r
                                                }\r
 \r
-               \r
+\r
                                                // 新しく最上部に表示されるパネル用のスキル値を取得。\r
-                                               \r
-                                               for( int i = 0; i < 3; i++ )\r
-                                                       this.stバー情報[ index ].nスキル値[ i ] = (int) song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.最大スキル[ i ];\r
+\r
+                                               for (E楽器パート i = E楽器パート.DRUMS; i <= E楽器パート.BASS; i++)\r
+                                               {\r
+                                                       this.stバー情報[index].nスキル値[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[i];\r
+                                                       this.stバー情報[index].n使用レーン数[i] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[i];\r
+                                               }\r
 \r
 \r
                                                // 1行(100カウント)移動完了。\r
@@ -766,9 +780,9 @@ namespace DTXMania
                                                this.n目標のスクロールカウンタ += 100;\r
 \r
                                                this.t選択曲が変更された(false);                               // スクロールバー用に今何番目を選択しているかを更新\r
-                                               \r
-                                               if( this.n目標のスクロールカウンタ == 0 )\r
-                                                       CDTXMania.stage選曲.t選択曲変更通知();         // スクロール完了=選択曲変更!\r
+\r
+                                               if (this.n目標のスクロールカウンタ == 0)\r
+                                                       CDTXMania.Instance.stage選曲.t選択曲変更通知();                // スクロール完了=選択曲変更!\r
                                                //-----------------\r
                                                #endregion\r
                                        }\r
@@ -782,21 +796,29 @@ namespace DTXMania
 \r
                        // 描画。\r
 \r
-                       if( this.r現在選択中の曲 == null )\r
+                       if (this.r現在選択中の曲 == null)\r
                        {\r
                                #region [ 曲が1つもないなら「Songs not found.」を表示してここで帰れ。]\r
                                //-----------------\r
-                               if ( bIsEnumeratingSongs )\r
+                               if (bIsEnumeratingSongs)\r
                                {\r
-                                       if ( this.txEnumeratingSongs != null )\r
+                                       if (this.txEnumeratingSongs != null)\r
                                        {\r
-                                               this.txEnumeratingSongs.t2D描画( CDTXMania.app.Device, 320, 160 );\r
+                                               this.txEnumeratingSongs.t2D描画(\r
+                                                       CDTXMania.Instance.Device,\r
+                                                       320 * Scale.X,\r
+                                                       160 * Scale.Y\r
+                                               );\r
                                        }\r
                                }\r
                                else\r
                                {\r
-                                       if ( this.txSongNotFound != null )\r
-                                               this.txSongNotFound.t2D描画( CDTXMania.app.Device, 320, 160 );\r
+                                       if (this.txSongNotFound != null)\r
+                                               this.txSongNotFound.t2D描画(\r
+                                                       CDTXMania.Instance.Device,\r
+                                                       320 * Scale.X,\r
+                                                       160 * Scale.Y\r
+                                               );\r
                                }\r
                                //-----------------\r
                                #endregion\r
@@ -804,40 +826,53 @@ namespace DTXMania
                                return 0;\r
                        }\r
 \r
-                       if( !this.b登場アニメ全部完了 )\r
+                       if (!this.b登場アニメ全部完了)\r
                        {\r
                                #region [ (1) 登場アニメフェーズの描画。]\r
                                //-----------------\r
-                               for( int i = 0; i < 13; i++ )   // パネルは全13枚。\r
+                               for (int i = 0; i < 13; i++)    // パネルは全13枚。\r
                                {\r
-                                       if( this.ct登場アニメ用[ i ].n現在の値 >= 0 )\r
+                                       if (this.ct登場アニメ用[i].n現在の値 >= 0)\r
                                        {\r
-                                               double db割合0to1 = ( (double) this.ct登場アニメ用[ i ].n現在の値 ) / 100.0;\r
-                                               double db回転率 = Math.Sin( Math.PI * 3 / 5 * db割合0to1 );\r
-                                               int nパネル番号 = ( ( ( this.n現在の選択行 - 5 ) + i ) + 13 ) % 13;\r
-                                               \r
-                                               if( i == 5 )\r
+                                               double db割合0to1 = ((double)this.ct登場アニメ用[i].n現在の値) / 100.0;\r
+                                               double db回転率 = Math.Sin(Math.PI * 3 / 5 * db割合0to1);\r
+                                               int nパネル番号 = (((this.n現在の選択行 - 5) + i) + 13) % 13;\r
+\r
+                                               if (i == 5)\r
                                                {\r
                                                        // (A) 選択曲パネルを描画。\r
 \r
                                                        #region [ バーテクスチャを描画。]\r
                                                        //-----------------\r
-                                                       int width = (int) ( 425.0 / Math.Sin( Math.PI * 3 / 5 ) );\r
-                                                       int x = 640 - ( (int) ( width * db回転率 ) );\r
-                                                       int y = 181;\r
-                                                       this.tバーの描画( x, y, this.stバー情報[ nパネル番号 ].eバー種別, true );\r
+                                                       int width = (int)((425.0 - 0.8f) * Scale.X / Math.Sin(Math.PI * 3 / 5));\r
+                                                       //int width = (int) ( ( (double) ( ( SampleFramework.GameWindowSize.Width - this.ptバーの基本座標[ i ].X ) + 1 ) ) / Math.Sin( Math.PI * 3 / 5 ) );\r
+                                                       int x = SampleFramework.GameWindowSize.Width - ((int)(width * db回転率));\r
+                                                       int y = 415;\r
+                                                       this.tバーの描画(x, y, this.stバー情報[nパネル番号].eバー種別, true);\r
                                                        //-----------------\r
                                                        #endregion\r
                                                        #region [ タイトル名テクスチャを描画。]\r
                                                        //-----------------\r
-                                                       if( this.stバー情報[ nパネル番号 ].txタイトル名 != null )\r
-                                                               this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, ( x + 44 ) + 16, ( y + 4 ) + 16 );\r
+                                                       if (this.stバー情報[nパネル番号].txタイトル名 != null)\r
+                                                               this.stバー情報[nパネル番号].txタイトル名.t2D描画(\r
+                                                                       CDTXMania.Instance.Device,\r
+                                                                       (x + (int)(44 * Scale.X)) + (int)((16f + 0.5f) * Scale.X),\r
+                                                                       y + 35\r
+                                                                       //( y + (int) ( 0 * Scale.Y ) ) + (int) ( 16 * Scale.Y )\r
+                                                                       // ( y + (int) ( 5 * Scale.Y ) ) + (int) ( (16f-2f) * Scale.Y)\r
+                                                               );\r
                                                        //-----------------\r
                                                        #endregion\r
                                                        #region [ スキル値を描画。]\r
                                                        //-----------------\r
-                                                       if( ( this.stバー情報[ nパネル番号 ].eバー種別 == Eバー種別.Score ) && ( this.e楽器パート != E楽器パート.UNKNOWN ) )\r
-                                                               this.tスキル値の描画( x + 28, y + 30, this.stバー情報[ nパネル番号 ].nスキル値[ (int) this.e楽器パート ] );\r
+                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                               this.tスキル値の描画(x + (int)(28 * Scale.X), y + (int)(59), this.stバー情報[nパネル番号].nスキル値[this.e楽器パート]);\r
+                                                       //-----------------\r
+                                                       #endregion\r
+                                                       #region [ 使用レーン数を描画。]\r
+                                                       //-----------------\r
+                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                               this.t使用レーン数の描画(x + (int)(0 * Scale.X), y + (int)53, this.stバー情報[nパネル番号].n使用レーン数[this.e楽器パート]);\r
                                                        //-----------------\r
                                                        #endregion\r
                                                }\r
@@ -847,22 +882,32 @@ namespace DTXMania
 \r
                                                        #region [ バーテクスチャの描画。]\r
                                                        //-----------------\r
-                                                       int width = (int) ( ( (double) ( ( 640 - this.ptバーの基本座標[ i ].X ) + 1 ) ) / Math.Sin( Math.PI * 3 / 5 ) );\r
-                                                       int x = 640 - ( (int) ( width * db回転率 ) );\r
-                                                       int y = this.ptバーの基本座標[ i ].Y;\r
-                                                       this.tバーの描画( x, y, this.stバー情報[ nパネル番号 ].eバー種別, false );\r
+                                                       int width = (int)(((double)((SampleFramework.GameWindowSize.Width - this.ptバーの基本座標[i].X) + 1)) / Math.Sin(Math.PI * 3 / 5));\r
+                                                       int x = SampleFramework.GameWindowSize.Width - ((int)(width * db回転率));\r
+                                                       int y = this.ptバーの基本座標[i].Y;\r
+                                                       this.tバーの描画(x, y, this.stバー情報[nパネル番号].eバー種別, false);\r
                                                        //-----------------\r
                                                        #endregion\r
                                                        #region [ タイトル名テクスチャを描画。]\r
                                                        //-----------------\r
-                                                       if( this.stバー情報[ nパネル番号 ].txタイトル名 != null )\r
-                                                               this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, x + 44, y + 4 );\r
+                                                       if (this.stバー情報[nパネル番号].txタイトル名 != null)\r
+                                                               this.stバー情報[nパネル番号].txタイトル名.t2D描画(\r
+                                                                       CDTXMania.Instance.Device,\r
+                                                                       x + (int)(44 * Scale.X),\r
+                                                                       y + 7\r
+                                                               );\r
                                                        //-----------------\r
                                                        #endregion\r
                                                        #region [ スキル値を描画。]\r
                                                        //-----------------\r
-                                                       if( ( this.stバー情報[ nパネル番号 ].eバー種別 == Eバー種別.Score ) && ( this.e楽器パート != E楽器パート.UNKNOWN ) )\r
-                                                               this.tスキル値の描画( x + 14, y + 14, this.stバー情報[ nパネル番号 ].nスキル値[ (int) this.e楽器パート ] );\r
+                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                               this.tスキル値の描画(x + (int)(14 * Scale.X), y + (int)(14 * Scale.Y), this.stバー情報[nパネル番号].nスキル値[this.e楽器パート]);\r
+                                                       //-----------------\r
+                                                       #endregion\r
+                                                       #region [ 使用レーン数を描画。]\r
+                                                       //-----------------\r
+                                                       if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                               this.t使用レーン数の描画(x + (int)(-14 * Scale.X), y + (int)(11 * Scale.Y), this.stバー情報[nパネル番号].n使用レーン数[this.e楽器パート]);\r
                                                        //-----------------\r
                                                        #endregion\r
                                                }\r
@@ -875,37 +920,57 @@ namespace DTXMania
                        {\r
                                #region [ (2) 通常フェーズの描画。]\r
                                //-----------------\r
-                               for( int i = 0; i < 13; i++ )   // パネルは全13枚。\r
+                               for (int i = 0; i < 13; i++)    // パネルは全13枚。\r
                                {\r
-                                       if( ( i == 0 && this.n現在のスクロールカウンタ > 0 ) ||             // 最上行は、上に移動中なら表示しない。\r
-                                               ( i == 12 && this.n現在のスクロールカウンタ < 0 ) )         // 最下行は、下に移動中なら表示しない。\r
+                                       if ((i == 0 && this.n現在のスクロールカウンタ > 0) ||               // 最上行は、上に移動中なら表示しない。\r
+                                               (i == 12 && this.n現在のスクロールカウンタ < 0))            // 最下行は、下に移動中なら表示しない。\r
                                                continue;\r
 \r
-                                       int nパネル番号 = ( ( ( this.n現在の選択行 - 5 ) + i ) + 13 ) % 13;\r
+                                       int nパネル番号 = (((this.n現在の選択行 - 5) + i) + 13) % 13;\r
                                        int n見た目の行番号 = i;\r
-                                       int n次のパネル番号 = ( this.n現在のスクロールカウンタ <= 0 ) ? ( ( i + 1 ) % 13 ) : ( ( ( i - 1 ) + 13 ) % 13 );\r
-                                       int x = this.ptバーの基本座標[ n見た目の行番号 ].X + ( (int) ( ( this.ptバーの基本座標[ n次のパネル番号 ].X - this.ptバーの基本座標[ n見た目の行番号 ].X ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) );\r
-                                       int y = this.ptバーの基本座標[ n見た目の行番号 ].Y + ( (int) ( ( this.ptバーの基本座標[ n次のパネル番号 ].Y - this.ptバーの基本座標[ n見た目の行番号 ].Y ) * ( ( (double) Math.Abs( this.n現在のスクロールカウンタ ) ) / 100.0 ) ) );\r
-               \r
-                                       if( ( i == 5 ) && ( this.n現在のスクロールカウンタ == 0 ) )\r
+                                       int n次のパネル番号 = (this.n現在のスクロールカウンタ <= 0) ? ((i + 1) % 13) : (((i - 1) + 13) % 13);\r
+                                       int x = this.ptバーの基本座標[n見た目の行番号].X + ((int)((this.ptバーの基本座標[n次のパネル番号].X - this.ptバーの基本座標[n見た目の行番号].X) * (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0)));\r
+                                       int y = this.ptバーの基本座標[n見た目の行番号].Y + ((int)((this.ptバーの基本座標[n次のパネル番号].Y - this.ptバーの基本座標[n見た目の行番号].Y) * (((double)Math.Abs(this.n現在のスクロールカウンタ)) / 100.0)));\r
+\r
+                                       if ((i == 5) && (this.n現在のスクロールカウンタ == 0))\r
                                        {\r
                                                // (A) スクロールが停止しているときの選択曲バーの描画。\r
 \r
                                                #region [ バーテクスチャを描画。]\r
                                                //-----------------\r
-                                               this.tバーの描画( 216, 181, this.stバー情報[ nパネル番号 ].eバー種別, true );\r
+                                               this.tバーの描画((int)(216 * Scale.X), (int)(415), this.stバー情報[nパネル番号].eバー種別, true);\r
                                                //-----------------\r
                                                #endregion\r
                                                #region [ タイトル名テクスチャを描画。]\r
                                                //-----------------\r
-                                               if( this.stバー情報[ nパネル番号 ].txタイトル名 != null )\r
-                                                       this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, 0x114, 0xc9 );\r
+                                               if (this.stバー情報[nパネル番号].txタイトル名 != null)\r
+                                                       this.stバー情報[nパネル番号].txタイトル名.t2D描画(\r
+                                                               CDTXMania.Instance.Device,\r
+                                                               //0x114 * Scale.X,\r
+                                                               //(0xc9 - 1)* Scale.Y\r
+                                                               (x + ((44f + 0.5f) * Scale.X)),\r
+                                                               (y + 7)\r
+                                                       );\r
                                                //-----------------\r
                                                #endregion\r
                                                #region [ スキル値を描画。]\r
                                                //-----------------\r
-                                               if( ( this.stバー情報[ nパネル番号 ].eバー種別 == Eバー種別.Score ) && ( this.e楽器パート != E楽器パート.UNKNOWN ) )\r
-                                                       this.tスキル値の描画( 0xf4, 0xd3, this.stバー情報[ nパネル番号 ].nスキル値[ (int) this.e楽器パート ] );\r
+                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                       this.tスキル値の描画(\r
+                                                               (int)(0xf4 * Scale.X),\r
+                                                               (int)(0xd3 * Scale.Y),\r
+                                                               this.stバー情報[nパネル番号].nスキル値[this.e楽器パート]\r
+                                                       );\r
+                                               //-----------------\r
+                                               #endregion\r
+                                               #region [ 使用レーン数を描画。]\r
+                                               //-----------------\r
+                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                       this.t使用レーン数の描画(\r
+                                                               (int)(216 * Scale.X),\r
+                                                               (int)(208 * Scale.Y),\r
+                                                               this.stバー情報[nパネル番号].n使用レーン数[this.e楽器パート]\r
+                                                       );\r
                                                //-----------------\r
                                                #endregion\r
                                        }\r
@@ -915,19 +980,29 @@ namespace DTXMania
 \r
                                                #region [ バーテクスチャを描画。]\r
                                                //-----------------\r
-                                               this.tバーの描画( x, y, this.stバー情報[ nパネル番号 ].eバー種別, false );\r
+                                               this.tバーの描画(x, y, this.stバー情報[nパネル番号].eバー種別, false);\r
                                                //-----------------\r
                                                #endregion\r
                                                #region [ タイトル名テクスチャを描画。]\r
                                                //-----------------\r
-                                               if( this.stバー情報[ nパネル番号 ].txタイトル名 != null )\r
-                                                       this.stバー情報[ nパネル番号 ].txタイトル名.t2D描画( CDTXMania.app.Device, x + 44, y + 4 );\r
+                                               if (this.stバー情報[nパネル番号].txタイトル名 != null)\r
+                                                       this.stバー情報[nパネル番号].txタイトル名.t2D描画(\r
+                                                               CDTXMania.Instance.Device,\r
+                                                               x + (int)(44 * Scale.X),\r
+                                                               y + 7\r
+                                                       );\r
                                                //-----------------\r
                                                #endregion\r
                                                #region [ スキル値を描画。]\r
                                                //-----------------\r
-                                               if( ( this.stバー情報[ nパネル番号 ].eバー種別 == Eバー種別.Score ) && ( this.e楽器パート != E楽器パート.UNKNOWN ) )\r
-                                                       this.tスキル値の描画( x + 14, y + 14, this.stバー情報[ nパネル番号 ].nスキル値[ (int) this.e楽器パート ] );\r
+                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                       this.tスキル値の描画(x + (int)(14 * Scale.X), y + (int)(14 * Scale.Y), this.stバー情報[nパネル番号].nスキル値[this.e楽器パート]);\r
+                                               //-----------------\r
+                                               #endregion\r
+                                               #region [ 使用レーン数を描画。]\r
+                                               //-----------------\r
+                                               if ((this.stバー情報[nパネル番号].eバー種別 == Eバー種別.Score) && (this.e楽器パート != E楽器パート.UNKNOWN))\r
+                                                       this.t使用レーン数の描画(x + (int)(-14 * Scale.X), y + (int)(11 * Scale.Y), this.stバー情報[nパネル番号].n使用レーン数[this.e楽器パート]);\r
                                                //-----------------\r
                                                #endregion\r
                                        }\r
@@ -938,18 +1013,18 @@ namespace DTXMania
                        #region [ スクロール地点の計算(描画はCActSelectShowCurrentPositionにて行う) #27648 ]\r
                        int py;\r
                        double d = 0;\r
-                       if ( nNumOfItems > 1 )\r
+                       if (nNumOfItems > 1)\r
                        {\r
-                               d = ( 336 - 6 - 8 ) / (double) ( nNumOfItems - 1 );\r
-                               py = (int) ( d * ( nCurrentPosition - 1 ) );\r
+                               d = ((int)(336 * Scale.Y) - 6 - 8) / (double)(nNumOfItems - 1);\r
+                               py = (int)(d * (nCurrentPosition - 1));\r
                        }\r
                        else\r
                        {\r
                                d = 0;\r
                                py = 0;\r
                        }\r
-                       int delta = (int) ( d * this.n現在のスクロールカウンタ / 100 );\r
-                       if ( py + delta <= 336 - 6 - 8 )\r
+                       int delta = (int)(d * this.n現在のスクロールカウンタ / 100);\r
+                       if (py + delta <= (int)(336 * Scale.Y) - 6 - 8)\r
                        {\r
                                this.nスクロールバー相対y座標 = py + delta;\r
                        }\r
@@ -960,7 +1035,7 @@ namespace DTXMania
                        #endregion\r
                        return 0;\r
                }\r
-               \r
+\r
 \r
                // その他\r
 \r
@@ -973,11 +1048,11 @@ namespace DTXMania
                        public CTexture Score;\r
                        public CTexture Box;\r
                        public CTexture Other;\r
-                       public CTexture this[ int index ]\r
+                       public CTexture this[int index]\r
                        {\r
                                get\r
                                {\r
-                                       switch( index )\r
+                                       switch (index)\r
                                        {\r
                                                case 0:\r
                                                        return this.Score;\r
@@ -992,7 +1067,7 @@ namespace DTXMania
                                }\r
                                set\r
                                {\r
-                                       switch( index )\r
+                                       switch (index)\r
                                        {\r
                                                case 0:\r
                                                        this.Score = value;\r
@@ -1017,6 +1092,7 @@ namespace DTXMania
                        public string strタイトル文字列;\r
                        public CTexture txタイトル名;\r
                        public STDGBVALUE<int> nスキル値;\r
+                       public STDGBVALUE<int> n使用レーン数;\r
                        public Color col文字色;\r
                }\r
 \r
@@ -1025,11 +1101,11 @@ namespace DTXMania
                        public CTexture Score;\r
                        public CTexture Box;\r
                        public CTexture Other;\r
-                       public CTexture this[ int index ]\r
+                       public CTexture this[int index]\r
                        {\r
                                get\r
                                {\r
-                                       switch( index )\r
+                                       switch (index)\r
                                        {\r
                                                case 0:\r
                                                        return this.Score;\r
@@ -1044,7 +1120,7 @@ namespace DTXMania
                                }\r
                                set\r
                                {\r
-                                       switch( index )\r
+                                       switch (index)\r
                                        {\r
                                                case 0:\r
                                                        this.Score = value;\r
@@ -1064,18 +1140,33 @@ namespace DTXMania
                }\r
 \r
                private bool b登場アニメ全部完了;\r
-               private Color color文字影 = Color.FromArgb( 0x40, 10, 10, 10 );\r
-               private CCounter[] ct登場アニメ用 = new CCounter[ 13 ];\r
+               private Color color文字影 = Color.FromArgb(0x40, 10, 10, 10);\r
+               private CCounter[] ct登場アニメ用 = new CCounter[13];\r
                private E楽器パート e楽器パート;\r
                private Font ft曲リスト用フォント;\r
                private long nスクロールタイマ;\r
                private int n現在のスクロールカウンタ;\r
                private int n現在の選択行;\r
                private int n目標のスクロールカウンタ;\r
-               private readonly Point[] ptバーの基本座標 = new Point[] { new Point( 0x162, 20 ), new Point( 0x139, 0x36 ), new Point( 0x121, 0x58 ), new Point( 0x111, 0x7a ), new Point( 0x108, 0x9c ), new Point( 0xe8, 0xc5 ), new Point( 0x112, 0x102 ), new Point( 0x121, 0x124 ), new Point( 0x138, 0x146 ), new Point( 0x157, 360 ), new Point( 0x18a, 0x18a ), new Point( 0x1f2, 0x1ac ), new Point( 640, 0x1ce ) };\r
-               private STバー情報[] stバー情報 = new STバー情報[ 13 ];\r
+               private readonly Point[] ptバーの基本座標 = new Point[] {\r
+                       new Point( (int)(0x162 * Scale.X), (int)(20 * Scale.Y) ),\r
+                       new Point( (int)(0x139 * Scale.X), (int)(0x36 * Scale.Y) ),\r
+                       new Point( (int)(0x121 * Scale.X), (int)(0x58 * Scale.Y) ),\r
+                       new Point( (int)(0x111 * Scale.X), (int)(0x7a * Scale.Y) ),\r
+                       new Point( (int)(0x108 * Scale.X), (int)(0x9c * Scale.Y) ),\r
+                       new Point( (int)(0xe8 * Scale.X), (int)(0xc5 * Scale.Y) ),\r
+                       new Point( (int)(0x112 * Scale.X), (int)(0x102 * Scale.Y) ),\r
+                       new Point( (int)(0x121 * Scale.X), (int)(0x124 * Scale.Y) ),\r
+                       new Point( (int)(0x138 * Scale.X), (int)(0x146 * Scale.Y) ),\r
+                       new Point( (int)(0x157 * Scale.X), (int)(360 * Scale.Y) ),\r
+                       new Point( (int)(0x18a * Scale.X), (int)(0x18a * Scale.Y) ),\r
+                       new Point( (int)(0x1f2 * Scale.X), (int)(0x1ac * Scale.Y) ),\r
+                       new Point( (int)(640 * Scale.X), (int)(0x1ce * Scale.Y) )\r
+               };\r
+               private STバー情報[] stバー情報 = new STバー情報[13];\r
                private CTexture txSongNotFound, txEnumeratingSongs;\r
                private CTexture txスキル数字;\r
+               private CTexture tx使用レーン数数字;\r
                private CTexture txアイテム数数字;\r
                private STバー tx曲名バー;\r
                private ST選曲バー tx選曲バー;\r
@@ -1084,11 +1175,11 @@ namespace DTXMania
                private int nNumOfItems = 0;\r
 \r
                //private string strBoxDefSkinPath = "";\r
-               private Eバー種別 e曲のバー種別を返す( C曲リストノード song )\r
+               private Eバー種別 e曲のバー種別を返す(C曲リストノード song)\r
                {\r
-                       if( song != null )\r
+                       if (song != null)\r
                        {\r
-                               switch( song.eノード種別 )\r
+                               switch (song.eノード種別)\r
                                {\r
                                        case C曲リストノード.Eノード種別.SCORE:\r
                                        case C曲リストノード.Eノード種別.SCORE_MIDI:\r
@@ -1101,139 +1192,162 @@ namespace DTXMania
                        }\r
                        return Eバー種別.Other;\r
                }\r
-               private C曲リストノード r次の曲( C曲リストノード song )\r
+               private C曲リストノード r次の曲(C曲リストノード song)\r
                {\r
-                       if( song == null )\r
+                       if (song == null)\r
                                return null;\r
 \r
-                       List<C曲リストノード> list = ( song.r親ノード != null ) ? song.r親ノード.list子リスト : CDTXMania.Songs管理.list曲ルート;\r
-       \r
-                       int index = list.IndexOf( song );\r
+                       List<C曲リストノード> list = (song.r親ノード != null) ? song.r親ノード.list子リスト : CDTXMania.Instance.Songs管理.list曲ルート;\r
 \r
-                       if( index < 0 )\r
+                       int index = list.IndexOf(song);\r
+\r
+                       if (index < 0)\r
                                return null;\r
 \r
-                       if( index == ( list.Count - 1 ) )\r
-                               return list[ 0 ];\r
+                       if (index == (list.Count - 1))\r
+                               return list[0];\r
 \r
-                       return list[ index + 1 ];\r
+                       return list[index + 1];\r
                }\r
-               private C曲リストノード r前の曲( C曲リストノード song )\r
+               private C曲リストノード r前の曲(C曲リストノード song)\r
                {\r
-                       if( song == null )\r
+                       if (song == null)\r
                                return null;\r
 \r
-                       List<C曲リストノード> list = ( song.r親ノード != null ) ? song.r親ノード.list子リスト : CDTXMania.Songs管理.list曲ルート;\r
+                       List<C曲リストノード> list = (song.r親ノード != null) ? song.r親ノード.list子リスト : CDTXMania.Instance.Songs管理.list曲ルート;\r
+\r
+                       int index = list.IndexOf(song);\r
 \r
-                       int index = list.IndexOf( song );\r
-       \r
-                       if( index < 0 )\r
+                       if (index < 0)\r
                                return null;\r
 \r
-                       if( index == 0 )\r
-                               return list[ list.Count - 1 ];\r
+                       if (index == 0)\r
+                               return list[list.Count - 1];\r
 \r
-                       return list[ index - 1 ];\r
+                       return list[index - 1];\r
                }\r
-               private void tスキル値の描画( int x, int y, int nスキル値 )\r
+               private void tスキル値の描画(int x, int y, int nスキル値)\r
                {\r
-                       if( nスキル値 <= 0 || nスキル値 > 100 )         // スキル値 0 = 未プレイ なので表示しない。\r
+                       if (nスキル値 <= 0 || nスキル値 > 100)          // スキル値 0 = 未プレイ なので表示しない。\r
                                return;\r
 \r
-                       int color = ( nスキル値 == 100 ) ? 3 : ( nスキル値 / 25 );\r
+                       int color = (nスキル値 == 100) ? 3 : (nスキル値 / 25);\r
 \r
                        int n百の位 = nスキル値 / 100;\r
-                       int n十の位 = ( nスキル値 % 100 ) / 10;\r
-                       int n一の位 = ( nスキル値 % 100 ) % 10;\r
+                       int n十の位 = (nスキル値 % 100) / 10;\r
+                       int n一の位 = (nスキル値 % 100) % 10;\r
 \r
 \r
                        // 百の位の描画。\r
 \r
-                       if( n百の位 > 0 )\r
-                               this.tスキル値の描画・1桁描画( x, y, n百の位, color );\r
+                       if (n百の位 > 0)\r
+                               this.tスキル値の描画_1桁描画(x, y, n百の位, color);\r
 \r
 \r
                        // 十の位の描画。\r
 \r
-                       if( n百の位 != 0 || n十の位 != 0 )\r
-                               this.tスキル値の描画・1桁描画( x + 7, y, n十の位, color );\r
+                       if (n百の位 != 0 || n十の位 != 0)\r
+                               this.tスキル値の描画_1桁描画(x + (int)(8 * Scale.X), y, n十の位, color);\r
 \r
 \r
                        // 一の位の描画。\r
 \r
-                       this.tスキル値の描画・1桁描画( x + 14, y, n一の位, color );\r
+                       this.tスキル値の描画_1桁描画(x + (int)(16 * Scale.X), y, n一の位, color);\r
                }\r
-               private void tスキル値の描画・1桁描画( int x, int y, int n数値, int color )\r
+               private void tスキル値の描画_1桁描画(int x, int y, int n数値, int color)\r
                {\r
-                       int dx = ( n数値 % 5 ) * 9;\r
-                       int dy = ( n数値 / 5 ) * 12;\r
-                       \r
-                       switch( color )\r
+                       int dx = (n数値 % 5) * (int)(9 * Scale.X);\r
+                       int dy = (n数値 / 5) * (int)(12 * Scale.Y);\r
+\r
+                       switch (color)\r
                        {\r
                                case 0:\r
-                                       if( this.txスキル数字 != null )\r
-                                               this.txスキル数字.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 45 + dx, 24 + dy, 9, 12 ) );\r
+                                       if (this.txスキル数字 != null)\r
+                                               this.txスキル数字.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle((int)(45 * Scale.X) + dx, (int)(24 * Scale.Y) + dy, (int)(9 * Scale.X), (int)(12 * Scale.Y)));\r
                                        break;\r
 \r
                                case 1:\r
-                                       if( this.txスキル数字 != null )\r
-                                               this.txスキル数字.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 45 + dx, dy, 9, 12 ) );\r
+                                       if (this.txスキル数字 != null)\r
+                                               this.txスキル数字.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle((int)(45 * Scale.X) + dx, dy, (int)(9 * Scale.X), (int)(12 * Scale.Y)));\r
                                        break;\r
 \r
                                case 2:\r
-                                       if( this.txスキル数字 != null )\r
-                                               this.txスキル数字.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( dx, 24 + dy, 9, 12 ) );\r
+                                       if (this.txスキル数字 != null)\r
+                                               this.txスキル数字.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle(dx, (int)(24 * Scale.Y) + dy, (int)(9 * Scale.X), (int)(12 * Scale.Y)));\r
                                        break;\r
 \r
                                case 3:\r
-                                       if( this.txスキル数字 != null )\r
-                                               this.txスキル数字.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( dx, dy, 9, 12 ) );\r
+                                       if (this.txスキル数字 != null)\r
+                                               this.txスキル数字.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle(dx, dy, (int)(9 * Scale.X), (int)(12 * Scale.Y)));\r
                                        break;\r
                        }\r
                }\r
                private void tバーの初期化()\r
                {\r
                        C曲リストノード song = this.r現在選択中の曲;\r
-                       \r
-                       if( song == null )\r
+\r
+                       if (song == null)\r
                                return;\r
 \r
-                       for( int i = 0; i < 5; i++ )\r
-                               song = this.r前の曲( song );\r
+                       for (int i = 0; i < 5; i++)\r
+                               song = this.r前の曲(song);\r
 \r
-                       for( int i = 0; i < 13; i++ )\r
+                       for (int i = 0; i < 13; i++)\r
                        {\r
-                               this.stバー情報[ i ].strタイトル文字列 = song.strタイトル;\r
-                               this.stバー情報[ i ].col文字色 = song.col文字色;\r
-                               this.stバー情報[ i ].eバー種別 = this.e曲のバー種別を返す( song );\r
-                               \r
-                               for( int j = 0; j < 3; j++ )\r
-                                       this.stバー情報[ i ].nスキル値[ j ] = (int) song.arスコア[ this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す( song ) ].譜面情報.最大スキル[ j ];\r
-\r
-                               song = this.r次の曲( song );\r
+                               this.stバー情報[i].strタイトル文字列 = song.strタイトル;\r
+                               this.stバー情報[i].col文字色 = song.col文字色;\r
+                               this.stバー情報[i].eバー種別 = this.e曲のバー種別を返す(song);\r
+\r
+                               for (E楽器パート j = E楽器パート.DRUMS; j <= E楽器パート.BASS; j++)\r
+                               {\r
+                                       this.stバー情報[i].nスキル値[j] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.最大スキル[j];\r
+                                       this.stバー情報[i].n使用レーン数[j] = (int)song.arスコア[this.n現在のアンカ難易度レベルに最も近い難易度レベルを返す(song)].譜面情報.使用レーン数[j];\r
+                               }\r
+\r
+                               song = this.r次の曲(song);\r
                        }\r
 \r
                        this.n現在の選択行 = 5;\r
                }\r
-               private void tバーの描画( int x, int y, Eバー種別 type, bool b選択曲 )\r
+               private void tバーの描画(int x, int y, Eバー種別 type, bool b選択曲)\r
                {\r
-                       if( x >= SampleFramework.GameWindowSize.Width || y >= SampleFramework.GameWindowSize.Height )\r
+                       if (x >= SampleFramework.GameWindowSize.Width || y >= SampleFramework.GameWindowSize.Height)\r
                                return;\r
 \r
-                       if( b選択曲 )\r
+                       if (b選択曲)\r
                        {\r
                                #region [ (A) 選択曲の場合 ]\r
                                //-----------------\r
-                               if( this.tx選曲バー[ (int) type ] != null )\r
-                                       this.tx選曲バー[ (int) type ].t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 0, 0, 128, 64 ) );      // ヘサキ\r
-                               x += 128;\r
-\r
-                               var rc = new Rectangle( 64, 0, 64, 64 );\r
-                               while( x < 640 )\r
+                               if (this.tx選曲バー[(int)type] != null)\r
+                                       this.tx選曲バー[(int)type].t2D描画(\r
+                                               CDTXMania.Instance.Device,\r
+                                               x,\r
+                                               y,\r
+                                               new Rectangle(\r
+                                                       0,\r
+                                                       0,\r
+                                                       256,            //(int)(128 * Scale.X),\r
+                                                       128                     //(int)(64 * Scale.Y)\r
+                                               )\r
+                                       );      // ヘサキ\r
+                               x += this.tx選曲バー[(int)type].sz画像サイズ.Width;\r
+\r
+                               var rc = new Rectangle(\r
+                                       128,                            //(int)(64 * Scale.X),\r
+                                       0,\r
+                                       128,                            //(int)(64 * Scale.X),\r
+                                       128                                     //(int)(64 * Scale.Y)\r
+                               );\r
+                               while (x < SampleFramework.GameWindowSize.Width)\r
                                {\r
-                                       if( this.tx選曲バー[ (int) type ] != null )\r
-                                               this.tx選曲バー[ (int) type ].t2D描画( CDTXMania.app.Device, x, y, rc );  // 胴体;64pxずつ横につなげていく。\r
-                                       x += 64;\r
+                                       if (this.tx選曲バー[(int)type] != null)\r
+                                               this.tx選曲バー[(int)type].t2D描画(\r
+                                                       CDTXMania.Instance.Device,\r
+                                                       x,\r
+                                                       y,\r
+                                                       rc\r
+                                               );      // 胴体;64pxずつ横につなげていく。\r
+                                       x += 128;               //(int)(64 * Scale.Y);\r
                                }\r
                                //-----------------\r
                                #endregion\r
@@ -1242,24 +1356,55 @@ namespace DTXMania
                        {\r
                                #region [ (B) その他の場合 ]\r
                                //-----------------\r
-                               if( this.tx曲名バー[ (int) type ] != null )\r
-                                       this.tx曲名バー[ (int) type ].t2D描画( CDTXMania.app.Device, x, y, new Rectangle( 0, 0, 64, 32 ) );               // ヘサキ\r
-                               x += 64;\r
-\r
-                               var rc = new Rectangle( 0, 32, 64, 32 );\r
-                               while( x < 640 )\r
+                               if (this.tx曲名バー[(int)type] != null)\r
+                                       this.tx曲名バー[(int)type].t2D描画(\r
+                                               CDTXMania.Instance.Device,\r
+                                               x,\r
+                                               y,\r
+                                               new Rectangle(\r
+                                                       0,\r
+                                                       0,\r
+                                                       128,    //(int) ( 64 * Scale.X ),\r
+                                                       69              //(int) ( 32 * Scale.Y )\r
+                                               //(int)(64 * Scale.X),\r
+                                               //(int)(32 * Scale.Y)\r
+                                               )\r
+                                       );              // ヘサキ\r
+                               x += 64;                //(int) ( 64 * Scale.X );\r
+\r
+                               var rc = new Rectangle(\r
+                                       64,\r
+                                       0,\r
+                                       64,\r
+                                       69\r
+                                       //0,\r
+                                       //(int)(32 * Scale.Y),\r
+                                       //(int)(64 * Scale.X),\r
+                                       //(int)(32 * Scale.Y)\r
+\r
+                                       //128,          //0,\r
+                                       //0,            //(int)(32 * Scale.Y),\r
+                                       //128,          //(int)(64 * Scale.X),\r
+                                       //128                   //(int)(32 * Scale.Y)\r
+                               );\r
+                               while (x < SampleFramework.GameWindowSize.Width)\r
                                {\r
-                                       if( this.tx曲名バー[ (int) type ] != null )\r
-                                               this.tx曲名バー[ (int) type ].t2D描画( CDTXMania.app.Device, x, y, rc );  // 胴体;64pxずつ横につなげていく。\r
-                                       x += 64;\r
+                                       if (this.tx曲名バー[(int)type] != null)\r
+                                               this.tx曲名バー[(int)type].t2D描画(\r
+                                                       CDTXMania.Instance.Device,\r
+                                                       x,\r
+                                                       y,\r
+                                                       rc\r
+                                               );      // 胴体;64pxずつ横につなげていく。\r
+                                       x += 64;        // (int) ( 64 * Scale.X );\r
                                }\r
                                //-----------------\r
                                #endregion\r
                        }\r
                }\r
-               private void t曲名バーの生成( int nバー番号, string str曲名, Color color )\r
+               private void t曲名バーの生成(int nバー番号, string str曲名, Color color)\r
                {\r
-                       if( nバー番号 < 0 || nバー番号 > 12 )\r
+                       if (nバー番号 < 0 || nバー番号 > 12)\r
                                return;\r
 \r
                        try\r
@@ -1268,72 +1413,100 @@ namespace DTXMania
 \r
                                #region [ 曲名表示に必要となるサイズを取得する。]\r
                                //-----------------\r
-                               using( var bmpDummy = new Bitmap( 1, 1 ) )\r
+                               using (var bmpDummy = new Bitmap(1, 1))\r
                                {\r
-                                       var g = Graphics.FromImage( bmpDummy );\r
+                                       var g = Graphics.FromImage(bmpDummy);\r
                                        g.PageUnit = GraphicsUnit.Pixel;\r
-                                       sz曲名 = g.MeasureString( str曲名, this.ft曲リスト用フォント );\r
+                                       sz曲名 = g.MeasureString(str曲名, this.ft曲リスト用フォント);\r
                                }\r
                                //-----------------\r
                                #endregion\r
 \r
-                               int n最大幅px = 392;\r
-                               int height = 25;\r
-                               int width = (int) ( ( sz曲名.Width + 2 ) * 0.5f );\r
-                               if( width > ( CDTXMania.app.Device.Capabilities.MaxTextureWidth / 2 ) )\r
-                                       width = CDTXMania.app.Device.Capabilities.MaxTextureWidth / 2;  // 右端断ち切れ仕方ないよね\r
+                               int n最大幅px = (int)(392 * Scale.Y);\r
+                               int height = (int)(25 * Scale.Y);\r
+                               int width = (int)((sz曲名.Width + 2) * 0.5f);\r
+                               if (width > (CDTXMania.Instance.Device.Capabilities.MaxTextureWidth / 2))\r
+                                       width = CDTXMania.Instance.Device.Capabilities.MaxTextureWidth / 2;     // 右端断ち切れ仕方ないよね\r
 \r
-                               float f拡大率X = ( width <= n最大幅px ) ? 0.5f : ( ( (float) n最大幅px / (float) width ) * 0.5f );     // 長い文字列は横方向に圧縮。\r
+                               float f拡大率X = (width <= n最大幅px) ? 0.5f : (((float)n最大幅px / (float)width) * 0.5f);     // 長い文字列は横方向に圧縮。\r
 \r
-                               using( var bmp = new Bitmap( width * 2, height * 2, PixelFormat.Format32bppArgb ) )             // 2倍(面積4倍)のBitmapを確保。(0.5倍で表示する前提。)\r
-                               using( var g = Graphics.FromImage( bmp ) )\r
+                               using (var bmp = new Bitmap(width * 2, height * 2, PixelFormat.Format32bppArgb))                // 2倍(面積4倍)のBitmapを確保。(0.5倍で表示する前提。)\r
+                               using (var g = Graphics.FromImage(bmp))\r
                                {\r
                                        g.TextRenderingHint = TextRenderingHint.AntiAlias;\r
-                                       float y = ( ( ( float ) bmp.Height ) / 2f ) - ( ( CDTXMania.ConfigIni.n選曲リストフォントのサイズdot * 2f ) / 2f );\r
-                                       g.DrawString( str曲名, this.ft曲リスト用フォント, new SolidBrush( this.color文字影 ), (float) 2f, (float) ( y + 2f ) );\r
-                                       g.DrawString( str曲名, this.ft曲リスト用フォント, new SolidBrush( color ), 0f, y );\r
+                                       float y = (((float)bmp.Height) / 2f) - ((CDTXMania.Instance.ConfigIni.n選曲リストフォントのサイズdot * Scale.Y * 2f) / 2f);\r
+                                       g.DrawString(str曲名, this.ft曲リスト用フォント, new SolidBrush(this.color文字影), (float)2f, (float)(y + 2f));\r
+                                       g.DrawString(str曲名, this.ft曲リスト用フォント, new SolidBrush(color), 0f, y);\r
 \r
-                                       CDTXMania.t安全にDisposeする( ref this.stバー情報[ nバー番号 ].txタイトル名 );\r
+                                       TextureFactory.t安全にDisposeする(ref this.stバー情報[nバー番号].txタイトル名);\r
 \r
-                                       this.stバー情報[ nバー番号 ].txタイトル名 = new CTexture( CDTXMania.app.Device, bmp, CDTXMania.TextureFormat );\r
-                                       this.stバー情報[ nバー番号 ].txタイトル名.vc拡大縮小倍率 = new Vector3( f拡大率X, 0.5f, 1f );\r
+                                       this.stバー情報[nバー番号].txタイトル名 = new CTexture(CDTXMania.Instance.Device, bmp, CDTXMania.Instance.TextureFormat);\r
+                                       this.stバー情報[nバー番号].txタイトル名.vc拡大縮小倍率 = new Vector3(f拡大率X, 0.5f, 1f);\r
                                }\r
                        }\r
-                       catch( CTextureCreateFailedException )\r
+                       catch (CTextureCreateFailedException)\r
                        {\r
-                               Trace.TraceError( "曲名テクスチャの作成に失敗しました。[{0}]", str曲名 );\r
-                               this.stバー情報[ nバー番号 ].txタイトル名 = null;\r
+                               Trace.TraceError("曲名テクスチャの作成に失敗しました。[{0}]", str曲名);\r
+                               this.stバー情報[nバー番号].txタイトル名 = null;\r
                        }\r
                }\r
                private void tアイテム数の描画()\r
                {\r
                        string s = nCurrentPosition.ToString() + "/" + nNumOfItems.ToString();\r
-                       int x = 639 - 8 - 12;\r
-                       int y = 362;\r
+                       int x = (int)(SampleFramework.GameWindowSize.Width - (8 + 12) * Scale.X);\r
+                       int y = (int)(362 * Scale.Y);\r
 \r
-                       for ( int p = s.Length - 1; p >= 0; p-- )\r
+                       for (int p = s.Length - 1; p >= 0; p--)\r
                        {\r
-                               tアイテム数の描画・1桁描画( x, y, s[ p ] );\r
-                               x -= 8;\r
+                               tアイテム数の描画_1桁描画(x, y, s[p]);\r
+                               x -= (int)(8 * Scale.X);\r
                        }\r
                }\r
-               private void tアイテム数の描画・1桁描画( int x, int y, char s数値 )\r
+               private void tアイテム数の描画_1桁描画(int x, int y, char s数値)\r
                {\r
                        int dx, dy;\r
-                       if ( s数値 == '/' )\r
+                       if (s数値 == '/')\r
                        {\r
-                               dx = 48;\r
+                               dx = (int)(48 * Scale.X);\r
                                dy = 0;\r
                        }\r
                        else\r
                        {\r
-                               int n = (int) s数値 - (int) '0';\r
-                               dx = ( n % 6 ) * 8;\r
-                               dy = ( n / 6 ) * 12;\r
+                               int n = (int)s数値 - (int)'0';\r
+                               dx = (n % 6) * (int)(8 * Scale.X);\r
+                               dy = (n / 6) * (int)(12 * Scale.Y);\r
+                       }\r
+                       if (this.txアイテム数数字 != null)\r
+                       {\r
+                               this.txアイテム数数字.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle(dx, dy, (int)(8 * Scale.X), (int)(10 * Scale.Y)));\r
                        }\r
-                       if ( this.txアイテム数数字 != null )\r
+               }\r
+               \r
+               private void t使用レーン数の描画(int x, int y, int n使用レーン数)\r
+               {\r
+                       // #36177 使用レーン数の表示 add ikanick 16.03.20\r
+                       if ( n使用レーン数 == 0 )\r
+                               return;\r
+\r
+                       int n十の位 = n使用レーン数 / 10;\r
+                       int n一の位 = n使用レーン数 % 10;\r
+                       \r
+                       // 十の位の描画。\r
+                       if ( n十の位 != 0 )\r
+                               this.t使用レーン数の描画_1桁描画(x + (int)(8 * Scale.X), y, n十の位);\r
+\r
+                       // 一の位の描画。\r
+                       this.t使用レーン数の描画_1桁描画(x + (int)(13 * Scale.X), y, n一の位);\r
+               }\r
+               private void t使用レーン数の描画_1桁描画(int x, int y, int n数値)\r
+               {\r
+                       int dx, dy;\r
+                       dx = (n数値 % 6) * (int)(8 * Scale.X);\r
+                       dy = (n数値 / 6) * (int)(11 * Scale.Y);\r
+\r
+                       if (this.tx使用レーン数数字 != null)\r
                        {\r
-                               this.txアイテム数数字.t2D描画( CDTXMania.app.Device, x, y, new Rectangle( dx, dy, 8, 12 ) );\r
+                               this.tx使用レーン数数字.t2D描画(CDTXMania.Instance.Device, x, y, new Rectangle(dx, dy, (int)(8 * Scale.X), (int)(10 * Scale.Y)));\r
                        }\r
                }\r
                //-----------------\r