OSDN Git Service

#35891 CONFIGURATION構成の見直しで、サウンド関連の設定を CONFIGURATION/System/Sound Options/に移動。
[dtxmania/dtxmania.git] / DTXManiaプロジェクト / コード / ステージ / 04.コンフィグ / CActConfigList.cs
index 5eaffc9..e0d49e7 100644 (file)
@@ -11,1988 +11,858 @@ namespace DTXMania
 {\r
        internal class CActConfigList : CActivity\r
        {\r
-               // プロパティ\r
-\r
-               public bool bIsKeyAssignSelected                // #24525 2011.3.15 yyagi\r
+               STDGBSValue<COptionLabel> ReturnToMenu;\r
+               STDGBSValue<COptionLabel> KeyAssignMenu;\r
+               STDGBSValue<COptionLabel> DisplayMenu;\r
+               STDGBSValue<COptionLabel> EDrumsMenu;\r
+               COptionLabel SoundMenu;\r
+               COptionLabel HitRangeMenu;\r
+               COptionStringList skins;\r
+\r
+               bool b項目リスト側にフォーカスがある;\r
+               bool b要素値にフォーカス中;\r
+               CCounter ct三角矢印アニメ;\r
+               Eメニュー種別 eメニュー種別;\r
+               // #33689 2014.6.17 yyagi\r
+               bool InitialUseOSTimer;\r
+               bool InitialWASAPIEventDriven;\r
+               ESoundDeviceTypeForConfig InitialSystemSoundType;\r
+               int InitialWASAPIBufferSizeMs;\r
+               int InitialASIODevice;\r
+               bool InitialForceHighPower;\r
+               List<COptionBase> list項目リスト;\r
+               long nスクロール用タイマ値;\r
+               int n現在のスクロールカウンタ;\r
+               int n目標のスクロールカウンタ;\r
+               Point[] ptパネルの基本座標 = new Point[]\r
                {\r
-                       get\r
-                       {\r
-                               Eメニュー種別 e = this.eメニュー種別;\r
-                               if ( e == Eメニュー種別.KeyAssignBass || e == Eメニュー種別.KeyAssignDrums ||\r
-                                       e == Eメニュー種別.KeyAssignGuitar || e == Eメニュー種別.KeyAssignSystem )\r
-                               {\r
-                                       return true;\r
-                               }\r
-                               else\r
-                               {\r
-                                       return false;\r
-                               }\r
-                       }\r
+                       new Point(0x12d, 3), new Point(0x12d, 0x35), new Point(0x12d, 0x67),\r
+                       new Point(0x12d, 0x99), new Point(0x114, 0xcb), new Point(0x12d, 0xfd),\r
+                       new Point(0x12d, 0x12f), new Point(0x12d, 0x161), new Point(0x12d, 0x193),\r
+                       new Point(0x12d, 0x1c5)\r
+               };\r
+               CTextureAf txその他項目行パネル;\r
+               CTexture tx三角矢印;\r
+               CTextureAf tx通常項目行パネル;\r
+               // #28195 2012.5.2 yyagi\r
+               CTexture txSkinSample;\r
+               string[] skinSubFolders;\r
+               string[] skinNames;\r
+               string skinInitial;\r
+               CPrivateFastFont prvFont;\r
+               private struct stMenuItemRight\r
+               {\r
+                       public CTexture txMenuItemRight;\r
+                       public int nParam;\r
+                       public string strParam;\r
+                       public CTexture txParam;\r
+                       public CTexture txParamColored;\r
                }\r
-               public bool bIsFocusingParameter                // #32059 2013.9.17 yyagi\r
+               stMenuItemRight[] listMenu;\r
+\r
+               /// <summary>\r
+               /// #32059 2013.9.17 yyagi\r
+               /// </summary>\r
+               public bool bIsFocusingParameter\r
                {\r
                        get\r
                        {\r
                                return b要素値にフォーカス中;\r
                        }\r
                }\r
+\r
                public bool b現在選択されている項目はReturnToMenuである\r
                {\r
                        get\r
                        {\r
-                               CItemBase currentItem = this.list項目リスト[ this.n現在の選択項目 ];\r
-                               if ( currentItem == this.iSystemReturnToMenu || currentItem == this.iDrumsReturnToMenu ||\r
-                                       currentItem == this.iGuitarReturnToMenu || currentItem == this.iBassReturnToMenu )\r
-                               {\r
-                                       return true;\r
-                               }\r
-                               else\r
+                               COptionBase sel = this.list項目リスト[this.n現在の選択項目];\r
+                               bool ret = false;\r
+                               for (EPart i = EPart.Drums; i <= EPart.System; ++i)\r
                                {\r
-                                       return false;\r
+                                       if (sel == ReturnToMenu[i])\r
+                                       {\r
+                                               ret = true;\r
+                                       }\r
                                }\r
+                               return ret;\r
                        }\r
                }\r
-               public CItemBase ib現在の選択項目\r
+\r
+               public bool b楽器またはシステム用メニューである\r
                {\r
                        get\r
                        {\r
-                               return this.list項目リスト[ this.n現在の選択項目 ];\r
+                               return eメニュー種別 == Eメニュー種別.Bass || eメニュー種別 == Eメニュー種別.Drums || eメニュー種別 == Eメニュー種別.Guitar || eメニュー種別 == Eメニュー種別.System;\r
                        }\r
                }\r
-               public int n現在の選択項目;\r
 \r
-\r
-               // メソッド\r
-               #region [ t項目リストの設定・System() ]\r
-               public void t項目リストの設定・System()\r
+               public COptionBase ib現在の選択項目\r
                {\r
-                       this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
-\r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iSystemReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu." );\r
-                       this.list項目リスト.Add( this.iSystemReturnToMenu );\r
-\r
-                       this.iSystemReloadDTX = new CItemBase( "Reload Songs", CItemBase.Eパネル種別.通常,\r
-                               "曲データの一覧情報を取得し直します。",\r
-                               "Reload song data." );\r
-                       this.list項目リスト.Add( this.iSystemReloadDTX );\r
-\r
-                       this.iCommonDark = new CItemList( "Dark", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eDark,\r
-                               "HALF: 背景、レーン、ゲージが表示されなくなります。\n" +\r
-                               "FULL: さらに小節線、拍線、判定ライン、パッドも表示されなくなります。",\r
-                               "OFF: all display parts are shown.\n" +\r
-                               "HALF: wallpaper, lanes and gauge are disappeared.\n" +\r
-                               "FULL: additionaly to HALF, bar/beat lines, hit bar, pads are disappeared.",\r
-                               new string[] { "OFF", "HALF", "FULL" } );\r
-                       this.list項目リスト.Add( this.iCommonDark );\r
-\r
-                       this.iSystemRisky = new CItemInteger( "Risky", 0, 10, CDTXMania.ConfigIni.nRisky,\r
-                               "Riskyモードの設定:\n" +\r
-                               "1以上の値にすると、その回数分のPoor/MissでFAILEDとなります。\n" +\r
-                               "0にすると無効になり、DamageLevelに従ったゲージ増減となります。\n" +\r
-                               "\n" +\r
-                               "なお、この設定は、StageFailedの設定と併用できます。",\r
-                               "Risky mode:\n" +\r
-                               "It means the Poor/Miss times to be FAILED.\n" +\r
-                               "Set 0 to disable Risky mode." );\r
-                       this.list項目リスト.Add( this.iSystemRisky );\r
-\r
-                       int nDGmode = ( CDTXMania.ConfigIni.bGuitar有効 ? 2 : 0 ) + ( CDTXMania.ConfigIni.bDrums有効 ? 1 : 0 ) - 1;\r
-                       this.iSystemGRmode = new CItemList( "Drums & GR ", CItemBase.Eパネル種別.通常, nDGmode,\r
-                               "使用楽器の選択:\n" +\r
-                               "DrOnly: ドラムのみ有効にします。\n" +\r
-                               "GROnly: ギター/ベースのみの専用画面を用います。\n" +\r
-                               "Both: ドラムとギター/ベースの両方を有効にします。\n",\r
-                               "DrOnly: Only Drums is available.\n" +\r
-                               "GROnly: Only Guitar/Bass are available. You can play them in GR screen.\n" +\r
-                               "Both: Both Drums and Guitar/Bass are available.",\r
-                               new string[] { "DrOnly", "GROnly", "Both" } );\r
-                       this.list項目リスト.Add( this.iSystemGRmode );\r
-\r
-                       this.iCommonPlaySpeed = new CItemInteger( "PlaySpeed", 5, 40, CDTXMania.ConfigIni.n演奏速度,\r
-                               "曲の演奏速度を、速くしたり遅くしたりすることができます。\n" +\r
-                               "(※一部のサウンドカードでは正しく再生できない可能性があります。)\n" +\r
-                               "\n" +\r
-                               "TimeStretchがONのときに、演奏速度をx0.850以下にすると、チップのズレが大きくなります。",\r
-                               "It changes the song speed.\n" +\r
-                               "For example, you can play in half speed by setting PlaySpeed = 0.500 for your practice.\n" +\r
-                               "\n" +\r
-                               "Note: It also changes the songs' pitch. In case TimeStretch=ON and slower than x0.900, some sound lag occurs." );\r
-                       this.list項目リスト.Add( this.iCommonPlaySpeed );\r
-\r
-                       this.iSystemTimeStretch = new CItemToggle( "TimeStretch", CDTXMania.ConfigIni.bTimeStretch,\r
-                               "演奏速度の変更方式:\n" +\r
-                               "ONにすると、演奏速度の変更を、周波数変更ではなくタイムストレッチで行います。\n" +\r
-                               "\n" +\r
-                               "タイムストレッチ使用時は、サウンド処理により多くのCPU性能を使用します。\n" +\r
-                               "また、演奏速度をx0.850以下にすると、チップのズレが大きくなります。",\r
-                               "The way to change the playing speed:\n" +\r
-                               "Turn ON to use time stretch to change the play speed." +\r
-                               "\n" +\r
-                               "TimeStretch uses more CPU power. And some sound lag occurs if PlaySpeed is slower than x0.900." );\r
-                       this.list項目リスト.Add( this.iSystemTimeStretch );\r
-\r
-                       this.iSystemFullscreen = new CItemToggle( "Fullscreen", CDTXMania.ConfigIni.b全画面モード,\r
-                               "画面モード設定:\n" +\r
-                               "ON で全画面モード、OFF でウィンドウモードになります。",\r
-                               "Fullscreen mode or window mode." );\r
-                       this.list項目リスト.Add( this.iSystemFullscreen );\r
-                       this.iSystemStageFailed = new CItemToggle( "StageFailed", CDTXMania.ConfigIni.bSTAGEFAILED有効,\r
-                               "STAGE FAILED 有効:\n" +\r
-                               "ON にすると、ゲージがなくなった時に STAGE FAILED となり演奏が中断されます。\n" +\r
-                               "OFF の場合は、ゲージがなくなっても最後まで演奏できます。",\r
-                               "Turn OFF if you don't want to encount GAME OVER." );\r
-                       this.list項目リスト.Add( this.iSystemStageFailed );\r
-                       this.iSystemRandomFromSubBox = new CItemToggle( "RandSubBox", CDTXMania.ConfigIni.bランダムセレクトで子BOXを検索対象とする,\r
-                               "子BOXをRANDOMの対象とする:\n" +\r
-                               "ON にすると、RANDOM SELECT 時に子BOXも選択対象とします。",\r
-                               "Turn ON to use child BOX (subfolders) at RANDOM SELECT." );\r
-                       this.list項目リスト.Add( this.iSystemRandomFromSubBox );\r
-\r
-\r
-                       this.iSystemAdjustWaves = new CItemToggle( "AdjustWaves", CDTXMania.ConfigIni.bWave再生位置自動調整機能有効,\r
-                               "サウンド再生位置自動補正:\n" +\r
-                               "ハードウェアやOSに起因するサウンドのずれを強制的に補正します。\n" +\r
-                               "BGM のように再生時間の長い音声データが使用されている曲で効果があります。" +\r
-                               "\n" +\r
-                               "※ SoundTypeでDSound(DirectSound)を指定している場合にのみ有効です。WASAPI/ASIO使用時は効果がありません。",\r
-                               "Automatic wave playing position adjustment feature.\n" +\r
-                               "\n" +\r
-                               "If you turn it ON, it decrease the lag which comes from the difference of hardware/OS.\n" +\r
-                               "Usually, you should turn it ON.\n" +\r
-                               "\n" +\r
-                               "Note: This setting is effetive only when DSound(DirectSound) in SoundType is used." );\r
-                       this.list項目リスト.Add( this.iSystemAdjustWaves );\r
-\r
-\r
-                       this.iSystemVSyncWait = new CItemToggle( "VSyncWait", CDTXMania.ConfigIni.b垂直帰線待ちを行う,\r
-                               "垂直帰線同期:\n" +\r
-                               "画面の描画をディスプレイの垂直帰線中に行なう場合には ON を指定します。\n" +\r
-                               "ON にすると、ガタつきのない滑らかな画面描画が実現されます。",\r
-                               "Turn ON to wait VSync (Vertical Synchronizing signal) at every drawings. (so FPS becomes 60)\n" +\r
-                               "\n" +\r
-                               "If you have enough CPU/GPU power, the scroll would become smooth." );\r
-                       this.list項目リスト.Add( this.iSystemVSyncWait );\r
-                       this.iSystemAVI = new CItemToggle( "AVI", CDTXMania.ConfigIni.bAVI有効,\r
-                               "AVIの使用:\n" +\r
-                               "演奏中に動画(AVI)を再生する場合にON にします。\n" +\r
-                               "AVI の再生には、それなりのマシンパワーが必要とされます。",\r
-                               "To use AVI playback or not." );\r
-                       this.list項目リスト.Add( this.iSystemAVI );\r
-                       this.iSystemBGA = new CItemToggle( "BGA", CDTXMania.ConfigIni.bBGA有効,\r
-                               "BGAの使用:\n" +\r
-                               "演奏中に画像(BGA)を表示する場合にON にします。\n" +\r
-                               "BGA の再生には、それなりのマシンパワーが必要とされます。",\r
-                               "To draw BGA (back ground animations) or not." );\r
-                       this.list項目リスト.Add( this.iSystemBGA );\r
-                       this.iSystemPreviewSoundWait = new CItemInteger( "PreSoundWait", 0, 0x2710, CDTXMania.ConfigIni.n曲が選択されてからプレビュー音が鳴るまでのウェイトms,\r
-                               "プレビュー音演奏までの時間:\n" +\r
-                               "曲にカーソルが合わされてからプレビュー音が鳴り始めるまでの時間を指定します。\n" +\r
-                               "0 ~ 10000 [ms] が指定可能です。",\r
-                               "Delay time(ms) to start playing preview sound in SELECT MUSIC screen.\n" +\r
-                               "You can specify from 0ms to 10000ms." );\r
-                       this.list項目リスト.Add( this.iSystemPreviewSoundWait );\r
-                       this.iSystemPreviewImageWait = new CItemInteger( "PreImageWait", 0, 0x2710, CDTXMania.ConfigIni.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms,\r
-                               "プレビュー画像表示までの時間:\n" +\r
-                               "曲にカーソルが合わされてからプレビュー画像が表示されるまでの時間を指定します。\n" +\r
-                               "0 ~ 10000 [ms] が指定可能です。",\r
-                               "Delay time(ms) to show preview image in SELECT MUSIC screen.\n" +\r
-                               "You can specify from 0ms to 10000ms." );\r
-                       this.list項目リスト.Add( this.iSystemPreviewImageWait );\r
-                       this.iSystemDebugInfo = new CItemToggle( "Debug Info", CDTXMania.ConfigIni.b演奏情報を表示する,\r
-                               "演奏情報の表示:\n" +\r
-                               "演奏中、BGA領域の下部に演奏情報(FPS、BPM、演奏時間など)を表示します。\n" +\r
-                               "また、小節線の横に小節番号が表示されるようになります。",\r
-                               "To show song informations on playing BGA area. (FPS, BPM, total time etc)\n" +\r
-                               "You can ON/OFF the indications by pushing [Del] while playing drums, guitar or bass." );\r
-                       this.list項目リスト.Add( this.iSystemDebugInfo );\r
-                       this.iSystemBGAlpha = new CItemInteger( "BG Alpha", 0, 0xff, CDTXMania.ConfigIni.n背景の透過度,\r
-                               "背景画像の半透明割合:\n" +\r
-                               "背景画像をDTXManiaのフレーム画像と合成する際の、背景画像の透明度を指定します。\n" +\r
-                               "0 が完全透明で、255 が完全不透明となります。",\r
-                               "The degree for transparing playing screen and wallpaper.\n" +\r
-                               "\n" +\r
-                               "0=completely transparent, 255=no transparency." );\r
-                       this.list項目リスト.Add( this.iSystemBGAlpha );\r
-                       this.iSystemBGMSound = new CItemToggle( "BGM Sound", CDTXMania.ConfigIni.bBGM音を発声する,\r
-                               "BGMの再生:\n" +\r
-                               "これをOFFにすると、BGM を再生しなくなります。",\r
-                               "Turn OFF if you don't want to play BGM." );\r
-                       this.list項目リスト.Add( this.iSystemBGMSound );\r
-                       this.iSystemAudienceSound = new CItemToggle( "Audience", CDTXMania.ConfigIni.b歓声を発声する,\r
-                               "歓声の再生:\n" +\r
-                               "これをOFFにすると、歓声を再生しなくなります。",\r
-                               "Turn ON if you want to be cheered at the end of fill-in zone." );\r
-                       this.list項目リスト.Add( this.iSystemAudienceSound );\r
-                       this.iSystemDamageLevel = new CItemList( "DamageLevel", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eダメージレベル,\r
-                               "ゲージ減少割合:\n" +\r
-                               "Miss ヒット時のゲージの減少度合いを指定します。\n" +\r
-                               "Riskyが1以上の場合は無効となります。",\r
-                               "Damage level at missing (and recovering level) at playing.\n" +\r
-                               "This setting is ignored when Risky >= 1.",\r
-                               new string[] { "Small", "Normal", "Large" } );\r
-                       this.list項目リスト.Add( this.iSystemDamageLevel );\r
-                       this.iSystemSaveScore = new CItemToggle( "SaveScore", CDTXMania.ConfigIni.bScoreIniを出力する,\r
-                               "演奏記録の保存:\n" +\r
-                               "これを ON にすると、演奏記録を ~.score.ini ファイルに保存します。",\r
-                               "To save high-scores/skills, turn it ON.\n" +\r
-                               "Turn OFF in case your song data are in read-only media (CD-ROM etc).\n" +\r
-                               "Note that the score files also contain 'BGM Adjust' parameter.\n" +\r
-                               "So if you want to keep adjusting parameter, you need to set SaveScore=ON." );\r
-                       this.list項目リスト.Add( this.iSystemSaveScore );\r
-\r
-\r
-                       this.iSystemChipVolume = new CItemInteger( "ChipVolume", 0, 100, CDTXMania.ConfigIni.n手動再生音量,\r
-                               "打音の音量:\n" +\r
-                               "入力に反応して再生されるチップの音量を指定します。\n" +\r
-                               "0 ~ 100 % の値が指定可能です。",\r
-                               "The volumes for chips you hit.\n" +\r
-                               "You can specify from 0 to 100%." );\r
-                       this.list項目リスト.Add( this.iSystemChipVolume );\r
-                       this.iSystemAutoChipVolume = new CItemInteger( "AutoVolume", 0, 100, CDTXMania.ConfigIni.n自動再生音量,\r
-                               "自動再生音の音量:\n" +\r
-                               "自動的に再生されるチップの音量を指定します。\n" +\r
-                               "0 ~ 100 % の値が指定可能です。",\r
-                               "The volumes for AUTO chips.\n" +\r
-                               "You can specify from 0 to 100%." );\r
-                       this.list項目リスト.Add( this.iSystemAutoChipVolume );\r
-                       this.iSystemStoicMode = new CItemToggle( "StoicMode", CDTXMania.ConfigIni.bストイックモード,\r
-                               "ストイック(禁欲)モード:\n" +\r
-                               "以下をまとめて表示ON/OFFします。\n" +\r
-                               "・プレビュー画像/動画\n" +\r
-                               "・リザルト画像/動画\n" +\r
-                               "・NowLoading画像\n" +\r
-                               "・演奏画面の背景画像\n" +\r
-                               "・BGA 画像 / AVI 動画\n" +\r
-                               "・グラフ画像",\r
-                               "Turn ON to disable drawing\n" +\r
-                               " * preview image / movie\n" +\r
-                               " * result image / movie\n" +\r
-                               " * nowloading image\n" +\r
-                               " * wallpaper (in playing screen)\n" +\r
-                               " * BGA / AVI (in playing screen)\n" +\r
-                               " * Graph bar" );\r
-                       this.list項目リスト.Add( this.iSystemStoicMode );\r
-                       this.iSystemShowLag = new CItemList( "ShowLagTime", CItemBase.Eパネル種別.通常, CDTXMania.ConfigIni.nShowLagType,\r
-                               "ズレ時間表示:\n" +\r
-                               "ジャストタイミングからのズレ時間(ms)を表示します。\n" +\r
-                               " OFF: ズレ時間を表示しません。\n" +\r
-                               " ON: ズレ時間を表示します。\n" +\r
-                               " GREAT-: PERFECT以外の時のみ表示します。",\r
-                               "About displaying the lag from the \"just timing\".\n" +\r
-                               " OFF: Don't show it.\n" +\r
-                               " ON: Show it.\n" +\r
-                               " GREAT-: Show it except you've gotten PERFECT.",\r
-                               new string[] { "OFF", "ON", "GREAT-" } );\r
-                       this.list項目リスト.Add( this.iSystemShowLag );\r
-                       this.iSystemAutoResultCapture = new CItemToggle( "Autosaveresult", CDTXMania.ConfigIni.bIsAutoResultCapture,\r
-                               "リザルト画像自動保存機能:\n" +\r
-                               "ONにすると、ハイスコア/ハイスキル時に、自動的にリザルト画像を曲データと同じフォルダに保存します。",\r
-                               "AutoSaveResult:\n" +\r
-                               "Turn ON to save your result screen image automatically when you get hiscore/hiskill." );\r
-                       this.list項目リスト.Add( this.iSystemAutoResultCapture );\r
-\r
-\r
-                       this.iSystemJudgeDispPriority = new CItemList( "JudgePriority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.e判定表示優先度,\r
-                               "判定文字列とコンボ表示の優先順位を指定します。\n" +\r
-                               "\n" +\r
-                               " Under: チップの下に表示します。\n" +\r
-                               " Over:  チップの上に表示します。",\r
-                               "The display prioity between chips and judge mark/combo.\n" +\r
-                               "\n" +\r
-                               " Under: Show them under the chips.\n" +\r
-                               " Over:  Show them over the chips.",\r
-                               new string[] { "Under", "Over" } );\r
-                       this.list項目リスト.Add( this.iSystemJudgeDispPriority );\r
-\r
-                       this.iSystemBufferedInput = new CItemToggle( "BufferedInput", CDTXMania.ConfigIni.bバッファ入力を行う,\r
-                               "バッファ入力モード:\n" +\r
-                               "ON にすると、FPS を超える入力解像度を実現します。\n" +\r
-                               "OFF にすると、入力解像度は FPS に等しくなります。",\r
-                               "To select joystick input method.\n" +\r
-                               "\n" +\r
-                               "ON to use buffer input. No lost/lags.\n" +\r
-                               "OFF to use realtime input. It may causes lost/lags for input.\n" +\r
-                               "Moreover, input frequency is synchronized with FPS." );\r
-                       this.list項目リスト.Add( this.iSystemBufferedInput );\r
-                       this.iLogOutputLog = new CItemToggle( "TraceLog", CDTXMania.ConfigIni.bログ出力,\r
-                               "Traceログ出力:\n" +\r
-                               "DTXManiaLog.txt にログを出力します。\n" +\r
-                               "この設定の変更は、DTXMania の再起動後に有効となります。",\r
-                               "Turn ON to put debug log to DTXManiaLog.txt.\n" +\r
-                               "To take it effective, you need to re-open DTXMania." );\r
-                       this.list項目リスト.Add( this.iLogOutputLog );\r
-\r
-                       // #24820 2013.1.3 yyagi\r
-                       this.iSystemSoundType = new CItemList( "SoundType", CItemList.Eパネル種別.通常, CDTXMania.ConfigIni.nSoundDeviceType,\r
-                               "サウンドの出力方式:\n" +\r
-                               "WASAPI, ASIO, DSound(DirectSound)の中からサウンド出力方式を選択します。\n" +\r
-                               "WASAPIはVista以降でのみ使用可能です。ASIOはXPでも使用可能ですが、対応機器でのみ使用できます。\n" +\r
-                               "WASAPIかASIOを指定することで、遅延の少ない演奏を楽しむことができます。\n" +\r
-                               "\n" +\r
-                               "※ 設定はCONFIGURATION画面の終了時に有効になります。",\r
-                               "Sound output type:\n" +\r
-                               "You can choose WASAPI, ASIO or DShow(DirectShow).\n" +\r
-                               "WASAPI can use only after Vista.\n" +\r
-                               "ASIO can use on XP or later OSs, but you need \"ASIO-supported\" sound device.\n" +\r
-                               "\n" +\r
-                               "You should use WASAPI or ASIO to decrease the sound lag.\n" +\r
-                               "\n" +\r
-                               "Note: Exit CONFIGURATION to make the setting take effect.",\r
-                               new string[] { "DSound", "ASIO", "WASAPI" } );\r
-                       this.list項目リスト.Add( this.iSystemSoundType );\r
-\r
-                       // #24820 2013.1.15 yyagi\r
-                       //this.iSystemWASAPIBufferSizeMs = new CItemInteger( "WASAPIBufSize", 0, 99999, CDTXMania.ConfigIni.nWASAPIBufferSizeMs,\r
-                       //    "WASAPI使用時のバッファサイズ:\n" +\r
-                       //    "0~99999ms を指定可能です。\n" +\r
-                       //    "0を指定すると、OSがバッファの\n" +\r
-                       //    "サイズを自動設定します。\n" +\r
-                       //    "値を小さくするほど発音ラグが\n" +\r
-                       //    "減少しますが、音割れや異常動作を\n" +\r
-                       //    "引き起こす場合があります。\n" +\r
-                       //    "※ 設定はCONFIGURATION画面の\n" +\r
-                       //    " 終了時に有効になります。",\r
-                       //    "Sound buffer size for WASAPI:\n" +\r
-                       //    "You can set from 0 to 99999ms.\n" +\r
-                       //    "Set 0 to use a default sysytem\n" +\r
-                       //    "buffer size.\n" +\r
-                       //    "Smaller value makes smaller lag,\n" +\r
-                       //    "but it may cause sound troubles.\n" +\r
-                       //    "\n" +\r
-                       //    "Note: Exit CONFIGURATION to make\n" +\r
-                       //    "     the setting take effect." );\r
-                       //this.list項目リスト.Add( this.iSystemWASAPIBufferSizeMs );\r
-\r
-                       // #24820 2013.1.17 yyagi\r
-                       string[] asiodevs = CEnumerateAllAsioDevices.GetAllASIODevices();\r
-                       this.iSystemASIODevice = new CItemList( "ASIO device", CItemList.Eパネル種別.通常, CDTXMania.ConfigIni.nASIODevice,\r
-                               "ASIOデバイス:\n" +\r
-                               "ASIO使用時のサウンドデバイスを選択します。\n" +\r
-                               "\n" +\r
-                               "※ 設定はCONFIGURATION画面の終了時に有効になります。",\r
-                               "ASIO Sound Device:\n" +\r
-                               "Select the sound device to use under ASIO mode.\n" +\r
-                               "\n" +\r
-                               "Note: Exit CONFIGURATION to make the setting take effect.",\r
-                               asiodevs );\r
-                       this.list項目リスト.Add( this.iSystemASIODevice );\r
-\r
-                       // #24820 2013.1.3 yyagi\r
-                       //this.iSystemASIOBufferSizeMs = new CItemInteger("ASIOBuffSize", 0, 99999, CDTXMania.ConfigIni.nASIOBufferSizeMs,\r
-                       //    "ASIO使用時のバッファサイズ:\n" +\r
-                       //    "0~99999ms を指定可能です。\n" +\r
-                       //    "推奨値は0で、サウンドデバイスでの\n" +\r
-                       //    "設定値をそのまま使用します。\n" +\r
-                       //    "(サウンドデバイスのASIO設定は、\n" +\r
-                       //    " ASIO capsなどで行います)\n" +\r
-                       //    "値を小さくするほど発音ラグが\n" +\r
-                       //    "減少しますが、音割れや異常動作を\n" +\r
-                       //    "引き起こす場合があります。\n" +\r
-                       //    "\n" +\r
-                       //    "※ 設定はCONFIGURATION画面の\n" +\r
-                       //    " 終了時に有効になります。",\r
-                       //    "Sound buffer size for ASIO:\n" +\r
-                       //    "You can set from 0 to 99999ms.\n" +\r
-                       //    "You should set it to 0, to use\n" +\r
-                       //    "a default value specified to\n" +\r
-                       //    "the sound device.\n" +\r
-                       //    "Smaller value makes smaller lag,\n" +\r
-                       //    "but it may cause sound troubles.\n" +\r
-                       //    "\n" +\r
-                       //    "Note: Exit CONFIGURATION to make\n" +\r
-                       //    "     the setting take effect." );\r
-                       //this.list項目リスト.Add( this.iSystemASIOBufferSizeMs );\r
-\r
-                       // #33689 2014.6.17 yyagi\r
-                       this.iSystemSoundTimerType = new CItemToggle( "UseOSTimer", CDTXMania.ConfigIni.bUseOSTimer,\r
-                               "OSタイマーを使用するかどうか:\n" +\r
-                               "演奏タイマーとして、DTXMania独自のタイマーを使うか、OS標準のタイマーを使うかを選択します。\n" +\r
-                               "OS標準タイマーを使うとスクロールが滑らかになりますが、演奏で音ズレが発生することがあります。(そのためAdjustWavesの効果が適用されます。)\n" +\r
-                               "\n" +\r
-                               "この指定はWASAPI/ASIO使用時のみ有効です。\n",\r
-                               "Use OS Timer or not:\n" +\r
-                               "If this settings is ON, DTXMania uses OS Standard timer. It brings smooth scroll, but may cause some sound lag.\n" +\r
-                               "(so AdjustWaves is also avilable)\n" +\r
-                               "\n" +\r
-                               "If OFF, DTXMania uses its original timer and the effect is vice versa.\n" +\r
-                               "\n" +\r
-                               "This settings is avilable only when you use WASAPI/ASIO.\n"\r
-                       );\r
-                       this.list項目リスト.Add( this.iSystemSoundTimerType );\r
-\r
-                       // #33700 2013.1.3 yyagi\r
-                       //this.iSystemMasterVolume = new CItemInteger( "MasterVolume", 0, 100, CDTXMania.ConfigIni.nMasterVolume,\r
-                       //    "マスターボリュームの設定:\n" +\r
-                       //    "全体の音量を設定します。\n" +\r
-                       //    "0が無音で、100が最大値です。\n" +\r
-                       //    "(WASAPI/ASIO時のみ有効です)",\r
-                       //    "Master Volume:\n" +\r
-                       //    "You can set 0 - 100.\n" +\r
-                       //    "\n" +\r
-                       //    "Note:\n" +\r
-                       //    "Only for WASAPI/ASIO mode." );\r
-                       //this.list項目リスト.Add( this.iSystemMasterVolume );\r
-\r
-                       this.iSystemSkinSubfolder = new CItemList( "Skin (General)", CItemBase.Eパネル種別.通常, nSkinIndex,\r
-                               "スキン切替:\n" +\r
-                               "スキンを切り替えます。\n",\r
-                               //"CONFIGURATIONを抜けると、設定した\n" +\r
-                               //"スキンに変更されます。",\r
-                               "Skin:\n" +\r
-                               "Change skin.",\r
-                               skinNames );\r
-                       this.list項目リスト.Add( this.iSystemSkinSubfolder );\r
-                       this.iSystemUseBoxDefSkin = new CItemToggle( "Skin (Box)", CDTXMania.ConfigIni.bUseBoxDefSkin,\r
-                               "Music boxスキンの利用:\n" +\r
-                               "特別なスキンが設定されたMusic boxに出入りしたときに、自動でスキンを切り替えるかどうかを設定します。\n",\r
-                               //"\n" +\r
-                               //"(Music Boxスキンは、box.defファイル\n" +\r
-                               //" で指定できます)\n",\r
-                               "Box skin:\n" +\r
-                               "Automatically change skin specified in box.def file." );\r
-                       this.list項目リスト.Add( this.iSystemUseBoxDefSkin );\r
-\r
-\r
-                       this.iSystemGoToKeyAssign = new CItemBase( "System Keys", CItemBase.Eパネル種別.通常,\r
-                       "システムのキー入力に関する項目を設定します。",\r
-                       "Settings for the system key/pad inputs." );\r
-                       this.list項目リスト.Add( this.iSystemGoToKeyAssign );\r
-\r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.System;\r
-               }\r
-\r
-               #endregion\r
-               #region [ t項目リストの設定・Drums() ]\r
-               public void t項目リストの設定・Drums()\r
-               {\r
-                       this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
-\r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iDrumsReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu." );\r
-                       this.list項目リスト.Add( this.iDrumsReturnToMenu );\r
-\r
-                       #region [ AutoPlay ]\r
-                       this.iDrumsAutoPlayAll = new CItemThreeState( "AutoPlay (All)", CItemThreeState.E状態.不定,\r
-                               "全パッドの自動演奏の ON/OFF をまとめて切り替えます。",\r
-                               "You can change whether Auto or not for all drums lanes at once." );\r
-                       this.list項目リスト.Add( this.iDrumsAutoPlayAll );\r
-\r
-                       this.iDrumsLeftCymbal = new CItemToggle( "    LeftCymbal", CDTXMania.ConfigIni.bAutoPlay.LC,\r
-                               "左シンバルを自動で演奏します。",\r
-                               "To play LeftCymbal automatically." );\r
-                       this.list項目リスト.Add( this.iDrumsLeftCymbal );\r
-\r
-                       this.iDrumsHiHat = new CItemToggle( "    HiHat", CDTXMania.ConfigIni.bAutoPlay.HH,\r
-                               "ハイハットを自動で演奏します。\n" +\r
-                               "(クローズ、オープンとも)",\r
-                               "To play HiHat automatically.\n" +\r
-                               "(It effects to both HH-close and HH-open)" );\r
-                       this.list項目リスト.Add( this.iDrumsHiHat );\r
-\r
-                       this.iDrumsSnare = new CItemToggle( "    Snare", CDTXMania.ConfigIni.bAutoPlay.SD,\r
-                               "スネアを自動で演奏します。",\r
-                               "To play Snare automatically." );\r
-                       this.list項目リスト.Add( this.iDrumsSnare );\r
-\r
-                       this.iDrumsBass = new CItemToggle( "    BassDrum", CDTXMania.ConfigIni.bAutoPlay.BD,\r
-                               "バスドラムを自動で演奏します。",\r
-                               "To play Bass Drum automatically." );\r
-                       this.list項目リスト.Add( this.iDrumsBass );\r
-\r
-                       this.iDrumsHighTom = new CItemToggle( "    HighTom", CDTXMania.ConfigIni.bAutoPlay.HT,\r
-                               "ハイタムを自動で演奏します。",\r
-                               "To play High Tom automatically." );\r
-                       this.list項目リスト.Add( this.iDrumsHighTom );\r
-\r
-                       this.iDrumsLowTom = new CItemToggle( "    LowTom", CDTXMania.ConfigIni.bAutoPlay.LT,\r
-                               "ロータムを自動で演奏します。",\r
-                               "To play Low Tom automatically." );\r
-                       this.list項目リスト.Add( this.iDrumsLowTom );\r
-\r
-                       this.iDrumsFloorTom = new CItemToggle( "    FloorTom", CDTXMania.ConfigIni.bAutoPlay.FT,\r
-                               "フロアタムを自動で演奏します。",\r
-                               "To play Floor Tom automatically." );\r
-                       this.list項目リスト.Add( this.iDrumsFloorTom );\r
-\r
-                       this.iDrumsCymbalRide = new CItemToggle( "    Cym/Ride", CDTXMania.ConfigIni.bAutoPlay.CY,\r
-                               "右シンバルとライドシンバルを自動で演奏します。",\r
-                               "To play both right- and Ride-Cymbal automatically." );\r
-                       this.list項目リスト.Add( this.iDrumsCymbalRide );\r
-                       #endregion\r
-\r
-\r
-                       this.iDrumsScrollSpeed = new CItemInteger( "ScrollSpeed", 0, 0x7cf, CDTXMania.ConfigIni.n譜面スクロール速度.Drums,\r
-                               "演奏時のドラム譜面のスクロールの速度を指定します。\n" +\r
-                               "x0.5 ~ x1000.0 を指定可能です。",\r
-                               "To change the scroll speed for the drums lanes.\n" +\r
-                               "You can set it from x0.5 to x1000.0.\n" +\r
-                               "(ScrollSpeed=x0.5 means half speed)" );\r
-                       this.list項目リスト.Add( this.iDrumsScrollSpeed );\r
-\r
-                       this.iDrumsSudHid = new CItemList( "Sud+Hid", CItemBase.Eパネル種別.通常, getDefaultSudHidValue( E楽器パート.DRUMS ),\r
-                               "ドラムチップの表示方式:\n" +\r
-                               "OFF:  チップを常に表示します。\n" +\r
-                               "Sudden: チップがヒットバー付近に来るまで表示\n" +\r
-                               "    されなくなります。\n" +\r
-                               "Hidden: チップがヒットバー付近で表示されなく\n" +\r
-                               "    なります。\n" +\r
-                               "Sud+Hid: SuddenとHiddenの効果を同時にかけ\n" +\r
-                               "    ます。\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "    通常はチップを透明にしますが、Poor /\n" +\r
-                               "    Miss時にはしばらく表示します。\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "    チップを常に透明にします。暗譜での練習\n" +\r
-                               "    にお使いください。",\r
-                               "Drums chips display type:\n" +\r
-                               "\n" +\r
-                               "OFF:    Always show chips.\n" +\r
-                               "Sudden: The chips are disappered until they\n" +\r
-                               "        come near the hit bar, and suddenly\n" +\r
-                               "        appears.\n" +\r
-                               "Hidden: The chips are hidden by approaching to\n" +\r
-                               "        the hit bar.\n" +\r
-                               "Sud+Hid: Both Sudden and Hidden.\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "        Usually you can't see the chips except\n" +\r
-                               "        you've gotten Poor/Miss.\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "        You can't see the chips at all.",\r
-                               new string[] { "OFF", "Sudden", "Hidden", "Sud+Hid", "S-Invisible", "F-Invisible" } );\r
-                       this.list項目リスト.Add( this.iDrumsSudHid );\r
-\r
-                       //this.iDrumsSudden = new CItemToggle( "Sudden", CDTXMania.ConfigIni.bSudden.Drums,\r
-                       //    "ドラムチップが譜面の下の方から表\n" +\r
-                       //    "示されるようになります。",\r
-                       //    "Drums chips are disappered until they\n" +\r
-                       //    "come near the hit bar, and suddenly\n" +\r
-                       //    "appears." );\r
-                       //this.list項目リスト.Add( this.iDrumsSudden );\r
-\r
-                       //this.iDrumsHidden = new CItemToggle( "Hidden", CDTXMania.ConfigIni.bHidden.Drums,\r
-                       //    "ドラムチップが譜面の下の方で表示\n" +\r
-                       //    "されなくなります。",\r
-                       //    "Drums chips are hidden by approaching\n" +\r
-                       //    "to the hit bar. " );\r
-                       //this.list項目リスト.Add( this.iDrumsHidden );\r
-\r
-                       //this.iDrumsInvisible = new CItemList( "Invisible", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eInvisible.Drums,\r
-                       //    "ドラムチップの透明化\n" +\r
-                       //    "OFF: チップを常に表示します。\n" +\r
-                       //    "SEMI: 通常はチップを透明にしますが、\n" +\r
-                       //    "   Poor/Miss時はしばらく表示します。\n" +\r
-                       //    "FULL: チップを常に透明にします。\n" +\r
-                       //    "   暗譜での練習にお使いください。\n" +\r
-                       //    "これをONにすると、SuddenとHiddenの\n" +\r
-                       //    "効果は無効になります。",\r
-                       //    "Invisible drums chip:\n" +\r
-                       //    "If you set Blindfold=ON, you can't\n" +\r
-                       //    "see the chips at all.",\r
-                       //    new string[] { "OFF", "SEMI", "FULL" } );\r
-                       //this.list項目リスト.Add( this.iDrumsInvisible );\r
-\r
-                       this.iCommonDark = new CItemList( "Dark", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eDark,\r
-                               "HALF: 背景、レーン、ゲージが表示されなくなります。\n" +\r
-                               "FULL: さらに小節線、拍線、判定ライン、パッドも表示されなくなります。",\r
-                               "OFF: all display parts are shown.\n" +\r
-                               "HALF: wallpaper, lanes and gauge are disappeared.\n" +\r
-                               "FULL: additionaly to HALF, bar/beat lines, hit bar, pads are disappeared.",\r
-                               new string[] { "OFF", "HALF", "FULL" } );\r
-                       this.list項目リスト.Add( this.iCommonDark );\r
-\r
-\r
-                       this.iDrumsReverse = new CItemToggle( "Reverse", CDTXMania.ConfigIni.bReverse.Drums,\r
-                               "ドラムチップが譜面の下から上に流れるようになります。",\r
-                               "The scroll way is reversed. Drums chips flow from the bottom to the top." );\r
-                       this.list項目リスト.Add( this.iDrumsReverse );\r
-\r
-                       this.iSystemRisky = new CItemInteger( "Risky", 0, 10, CDTXMania.ConfigIni.nRisky,\r
-                               "Riskyモードの設定:\n" +\r
-                               "1以上の値にすると、その回数分のPoor/MissでFAILEDとなります。\n" +\r
-                               "0にすると無効になり、DamageLevelに従ったゲージ増減となります。\n" +\r
-                               "\n" +\r
-                               "なお、この設定は、StageFailedの設定と併用できます。",\r
-                               "Risky mode:\n" +\r
-                               "It means the Poor/Miss times to be FAILED.\n" +\r
-                               "Set 0 to disable Risky mode." );\r
-                       this.list項目リスト.Add( this.iSystemRisky );\r
-\r
-                       this.iDrumsTight = new CItemToggle( "Tight", CDTXMania.ConfigIni.bTight,\r
-                               "ドラムチップのないところでパッドを叩くとミスになります。",\r
-                               "It becomes MISS to hit pad without chip." );\r
-                       this.list項目リスト.Add( this.iDrumsTight );\r
-\r
-                       #region [ Position ]\r
-                       this.iDrumsComboPosition = new CItemList( "ComboPosition", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.ドラムコンボ文字の表示位置,\r
-                               "演奏時のドラムコンボ文字列の位置を指定します。",\r
-                               "The display position for Drums Combo.",\r
-                               //"Note that it doesn't take effect at Autoplay ([Left] is forcely used).",\r
-                               new string[] { "Left", "Center", "Right", "OFF" } );\r
-                       this.list項目リスト.Add( this.iDrumsComboPosition );\r
-\r
-                       this.iDrumsPosition = new CItemList( "Position", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.判定文字表示位置.Drums,\r
-                               "ドラムの判定文字の表示位置を指定\n" +\r
-                               "します。\n" +\r
-                               "  P-A: レーン上\n" +\r
-                               "  P-B: 判定ライン下\n" +\r
-                               "  OFF: 表示しない",\r
-                               "The position to show judgement mark.\n" +\r
-                               "(Perfect, Great, ...)\n" +\r
-                               "\n" +\r
-                               " P-A: on the lanes.\n" +\r
-                               " P-B: under the hit bar.\n" +\r
-                               " OFF: no judgement mark.",\r
-                               new string[] { "OFF", "P-A", "P-B" } );\r
-                       this.list項目リスト.Add( this.iDrumsPosition );\r
-\r
-                       //this.iDrumsJudgeDispPriority = new CItemList( "JudgePriority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.e判定表示優先度.Drums,\r
-                       //    "判定文字列とコンボ表示の優先順位を\n" +\r
-                       //    "指定します。\n" +\r
-                       //    "\n" +\r
-                       //    " Under: チップの下に表示します。\n" +\r
-                       //    " Over:  チップの上に表示します。",\r
-                       //    "The display prioity between chips\n" +\r
-                       //    " and judge mark/combo.\n" +\r
-                       //    "\n" +\r
-                       //    " Under: Show them under the chips.\n" +\r
-                       //    " Over:  Show them over the chips.",\r
-                       //    new string[] { "Under", "Over" } );\r
-                       //this.list項目リスト.Add( this.iDrumsJudgeDispPriority );\r
-\r
-                       #endregion\r
-                       #region [ Group ]\r
-                       this.iSystemHHGroup = new CItemList( "HH Group", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHHGroup,\r
-                               "ハイハットレーン打ち分け設定:\n" +\r
-                               "左シンバル、ハイハットオープン、ハイハットクローズの打ち分け方法を指定します。\n" +\r
-                               "  HH-0 ... LC | HHC | HHO\n" +\r
-                               "  HH-1 ... LC & ( HHC | HHO )\n" +\r
-                               "  HH-2 ... LC | ( HHC & HHO )\n" +\r
-                               "  HH-3 ... LC & HHC & HHO\n" +\r
-                               "\n" +\r
-                               "※BD Group が BD-1 である場合、この項目は変更できません。\n",\r
-                               "HH-0: LC|HC|HO;\n" +\r
-                               " all are separated.\n" +\r
-                               "HH-1: LC&(HC|HO);\n" +\r
-                               " HC and HO are separted.\n" +\r
-                               " LC is grouped with HC and HHO.\n" +\r
-                               "HH-2: LC|(HC&HO);\n" +\r
-                               " LC and HHs are separated.\n" +\r
-                               " HC and HO are grouped.\n" +\r
-                               "HH-3: LC&HC&HO; all are grouped.\n" +\r
-                               "\n" +\r
-                               "* This value cannot be changed while BD Group is set as BD-1.",\r
-                               new string[] { "HH-0", "HH-1", "HH-2", "HH-3" } );\r
-                       this.list項目リスト.Add( this.iSystemHHGroup );\r
-\r
-                       this.iSystemFTGroup = new CItemList( "FT Group", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eFTGroup,\r
-                               "フロアタム打ち分け設定:\n" +\r
-                               "ロータムとフロアタムの打ち分け方法を指定します。\n" +\r
-                               "  FT-0 ... LT | FT\n" +\r
-                               "  FT-1 ... LT & FT\n",\r
-                               "FT-0: LT|FT\n" +\r
-                               " LT and FT are separated.\n" +\r
-                               "FT-1: LT&FT\n" +\r
-                               " LT and FT are grouped.",\r
-                               new string[] { "FT-0", "FT-1" } );\r
-                       this.list項目リスト.Add( this.iSystemFTGroup );\r
-\r
-                       this.iSystemCYGroup = new CItemList( "CY Group", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eCYGroup,\r
-                               "シンバルレーン打ち分け設定:\n" +\r
-                               "右シンバルとライドシンバルの打ち分け方法を指定します。\n" +\r
-                               "  CY-0 ... CY | RD\n" +\r
-                               "  CY-1 ... CY & RD\n",\r
-                               "CY-0: CY|RD\n" +\r
-                               " CY and RD are separated.\n" +\r
-                               "CY-1: CY&RD\n" +\r
-                               " CY and RD are grouped.",\r
-                               new string[] { "CY-0", "CY-1" } );\r
-                       this.list項目リスト.Add( this.iSystemCYGroup );\r
-\r
-                       this.iSystemBDGroup = new CItemList( "BD Group", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eBDGroup,         // #27029 2012.1.4 from\r
-                               "バス数設定:\n" +\r
-                               "ハイハットペダルをバスとして利用する方法を指定します。\n" +\r
-                               "  BD-0 ... HP | BD\n" +\r
-                               "  BD-1 ... FP & BD\n" +\r
-                               "\n" +\r
-                               "注意:HitSound が OFF である場合は不具合が生じます。\n" +\r
-                               "また、BD-1 を選択している間はいくつかのオプションが変更できなくなります。",\r
-                               "BD-0: HP|BD\n" +\r
-                               " HiHatPedal is HiHat.\n" +\r
-                               "BD-1: HP&BD\n" +\r
-                               " HiHatPedal is Bass.\n" +\r
-                               "\n" +\r
-                               "Warning: You should not use BD-1 with HitSound OFF.\n" +\r
-                               "And you cannot change some options while using BD-1.",\r
-                               new string[] { "BD-0", "BD-1" } );\r
-                       this.list項目リスト.Add( this.iSystemBDGroup );\r
-                       #endregion\r
-\r
-                       this.iSystemCymbalFree = new CItemToggle( "CymbalFree", CDTXMania.ConfigIni.bシンバルフリー,\r
-                               "シンバルフリーモード:\n" +\r
-                               "左シンバル・右シンバルの区別をなくします。ライドシンバルまで区別をなくすか否かは、CYGroup に従います。\n",\r
-                               "Turn ON to group LC (left cymbal) and CY (right cymbal).\n" +\r
-                               "Whether RD (ride cymbal) is also grouped or not depends on the 'CY Group' setting." );\r
-                       this.list項目リスト.Add( this.iSystemCymbalFree );\r
-\r
-                       #region [ SoundPriority ]\r
-                       this.iSystemHitSoundPriorityHH = new CItemList( "HH Priority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHitSoundPriorityHH,\r
-                               "発声音決定の優先順位:\n" +\r
-                               "ハイハットレーン打ち分け有効時に、チップの発声音をどのように決定するかを指定します。\n" +\r
-                               "  C > P ... チップの音が優先\n" +\r
-                               "  P > C ... 叩いたパッドの音が優先\n" +\r
-                               "\n" +\r
-                               "※BD Group が BD-1 である場合、この項目は変更できません。\n",\r
-                               "To specify playing sound in case you're using HH-0,1 and 2.\n" +\r
-                               "\n" +\r
-                               "C>P:\n" +\r
-                               " Chip sound is prior to the pad sound.\n" +\r
-                               "P>C:\n" +\r
-                               " Pad sound is prior to the chip sound.\n" +\r
-                               "\n" +\r
-                               "* This value cannot be changed while BD Group is set as BD-1.",\r
-                               new string[] { "C>P", "P>C" } );\r
-                       this.list項目リスト.Add( this.iSystemHitSoundPriorityHH );\r
-\r
-                       this.iSystemHitSoundPriorityFT = new CItemList( "FT Priority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHitSoundPriorityFT,\r
-                               "発声音決定の優先順位:\n" +\r
-                               "フロアタム打ち分け有効時に、チップの発声音をどのように決定するかを指定します。\n" +\r
-                               "  C > P ... チップの音が優先\n" +\r
-                               "  P > C ... 叩いたパッドの音が優先",\r
-                               "To specify playing sound in case you're using FT-0.\n" +\r
-                               "\n" +\r
-                               "C>P:\n" +\r
-                               " Chip sound is prior to the pad sound.\n" +\r
-                               "P>C:\n" +\r
-                               " Pad sound is prior to the chip sound.",\r
-                               new string[] { "C>P", "P>C" } );\r
-                       this.list項目リスト.Add( this.iSystemHitSoundPriorityFT );\r
-\r
-                       this.iSystemHitSoundPriorityCY = new CItemList( "CY Priority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eHitSoundPriorityCY,\r
-                               "発声音決定の優先順位:\n" +\r
-                               "シンバルレーン打ち分け有効時に、チップの発声音をどのように決定するかを指定します。\n" +\r
-                               "  C > P ... チップの音が優先\n" +\r
-                               "  P > C ... 叩いたパッドの音が優先",\r
-                               "To specify playing sound in case you're using CY-0.\n" +\r
-                               "\n" +\r
-                               "C>P:\n" +\r
-                               " Chip sound is prior to the pad sound.\n" +\r
-                               "P>C:\n" +\r
-                               " Pad sound is prior to the chip sound.",\r
-                               new string[] { "C>P", "P>C" } );\r
-                       this.list項目リスト.Add( this.iSystemHitSoundPriorityCY );\r
-\r
-                       this.iSystemFillIn = new CItemToggle( "FillIn", CDTXMania.ConfigIni.bフィルイン有効,\r
-                               "フィルインエフェクトの使用:\n" +\r
-                               "フィルイン区間の爆発パターンに特別のエフェクトを使用します。\n" +\r
-                               "フィルインエフェクトの描画にはそれなりのマシンパワーが必要とされます。",\r
-                               "To show bursting effects at the fill-in zone." );\r
-                       this.list項目リスト.Add( this.iSystemFillIn );\r
-                       #endregion\r
-\r
-\r
-                       this.iSystemHitSound = new CItemToggle( "HitSound", CDTXMania.ConfigIni.bドラム打音を発声する,\r
-                               "打撃音の再生:\n" +\r
-                               "これをOFFにすると、パッドを叩いたときの音を再生しなくなります(ドラムのみ)。\n" +\r
-                               "DTX本来の音色で演奏したい場合などにOFF にします。\n" +\r
-                               "\n" +\r
-                               "注意:BD Group が BD-1 である場合は不具合が生じます。\n",\r
-                               "Turn OFF if you don't want to play hitting chip sound.\n" +\r
-                               "It is useful to play with real/electric drums kit.\n" +\r
-                               "\n" +\r
-                               "Warning: You should not use BD Group BD-1 with HitSound OFF.\n" );\r
-                       this.list項目リスト.Add( this.iSystemHitSound );\r
-\r
-                       this.iSystemSoundMonitorDrums = new CItemToggle( "DrumsMonitor", CDTXMania.ConfigIni.b演奏音を強調する.Drums,\r
-                               "ドラム音モニタ:\n" +\r
-                               "ドラム音を他の音より大きめの音量で発声します。\n" +\r
-                               "ただし、オートプレイの場合は通常音量で発声されます。",\r
-                               "To enhance the drums chip sound (except autoplay)." );\r
-                       this.list項目リスト.Add( this.iSystemSoundMonitorDrums );\r
-\r
-                       this.iSystemMinComboDrums = new CItemInteger( "D-MinCombo", 1, 0x1869f, CDTXMania.ConfigIni.n表示可能な最小コンボ数.Drums,\r
-                               "表示可能な最小コンボ数(ドラム):\n" +\r
-                               "画面に表示されるコンボの最小の数を指定します。\n" +\r
-                               "1 ~ 99999 の値が指定可能です。",\r
-                               "Initial number to show the combo for the drums.\n" +\r
-                               "You can specify from 1 to 99999." );\r
-                       this.list項目リスト.Add( this.iSystemMinComboDrums );\r
-\r
-\r
-                       // #23580 2011.1.3 yyagi\r
-                       this.iDrumsInputAdjustTimeMs = new CItemInteger( "InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums,\r
-                               "ドラムの入力タイミングの微調整を行います。\n" +\r
-                               "-99 ~ 99ms まで指定可能です。\n" +\r
-                               "入力ラグを軽減するためには、負の値を指定してください。",\r
-                               "To adjust the drums input timing.\n" +\r
-                               "You can set from -99 to 99ms.\n" +\r
-                               "To decrease input lag, set minus value." );\r
-                       this.list項目リスト.Add( this.iDrumsInputAdjustTimeMs );\r
-\r
-                       // #24074 2011.01.23 add ikanick\r
-                       this.iDrumsGraph = new CItemToggle( "Graph", CDTXMania.ConfigIni.bGraph.Drums,\r
-                               "最高スキルと比較できるグラフを表示します。\n" +\r
-                               "オートプレイだと表示されません。",\r
-                               "To draw Graph or not." );\r
-                       this.list項目リスト.Add( this.iDrumsGraph );\r
-\r
-                       this.iDrumsGoToKeyAssign = new CItemBase( "Drums Keys", CItemBase.Eパネル種別.通常,\r
-                               "ドラムのキー入力に関する項目を設定します。",\r
-                               "Settings for the drums key/pad inputs." );\r
-                       this.list項目リスト.Add( this.iDrumsGoToKeyAssign );\r
-\r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.Drums;\r
-               }\r
-               #endregion\r
-               #region [ t項目リストの設定・Guitar() ]\r
-               public void t項目リストの設定・Guitar()\r
-               {\r
-                       this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
-\r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iGuitarReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu." );\r
-                       this.list項目リスト.Add( this.iGuitarReturnToMenu );\r
-\r
-                       #region [ AutoPlay ]\r
-                       this.iGuitarAutoPlayAll = new CItemThreeState( "AutoPlay (All)", CItemThreeState.E状態.不定,\r
-                               "全ネック/ピックの自動演奏の ON/OFF をまとめて切り替えます。",\r
-                               "You can change whether Auto or not for all guitar neck/pick at once." );\r
-                       this.list項目リスト.Add( this.iGuitarAutoPlayAll );\r
-                       this.iGuitarR = new CItemToggle( "    R", CDTXMania.ConfigIni.bAutoPlay.GtR,\r
-                               "Rネックを自動で演奏します。",\r
-                               "To play R neck automatically." );\r
-                       this.list項目リスト.Add( this.iGuitarR );\r
-                       this.iGuitarG = new CItemToggle( "    G", CDTXMania.ConfigIni.bAutoPlay.GtG,\r
-                               "Gネックを自動で演奏します。",\r
-                               "To play G neck automatically." );\r
-                       this.list項目リスト.Add( this.iGuitarG );\r
-                       this.iGuitarB = new CItemToggle( "    B", CDTXMania.ConfigIni.bAutoPlay.GtB,\r
-                               "Bネックを自動で演奏します。",\r
-                               "To play B neck automatically." );\r
-                       this.list項目リスト.Add( this.iGuitarB );\r
-                       this.iGuitarPick = new CItemToggle( "    Pick", CDTXMania.ConfigIni.bAutoPlay.GtPick,\r
-                               "ピックを自動で演奏します。",\r
-                               "To play Pick automatically." );\r
-                       this.list項目リスト.Add( this.iGuitarPick );\r
-                       this.iGuitarW = new CItemToggle( "    Wailing", CDTXMania.ConfigIni.bAutoPlay.GtW,\r
-                               "ウェイリングを自動で演奏します。",\r
-                               "To play wailing automatically." );\r
-                       this.list項目リスト.Add( this.iGuitarW );\r
-                       #endregion\r
-                       this.iGuitarScrollSpeed = new CItemInteger( "ScrollSpeed", 0, 0x7cf, CDTXMania.ConfigIni.n譜面スクロール速度.Guitar,\r
-                               "演奏時のギター譜面のスクロールの速度を指定します。\n" +\r
-                               "x0.5 ~ x1000.0 までを指定可能です。",\r
-                               "To change the scroll speed for the guitar lanes.\n" +\r
-                               "You can set it from x0.5 to x1000.0.\n" +\r
-                               "(ScrollSpeed=x0.5 means half speed)" );\r
-                       this.list項目リスト.Add( this.iGuitarScrollSpeed );\r
-\r
-                       this.iGuitarSudHid = new CItemList( "Sud+Hid", CItemBase.Eパネル種別.通常, getDefaultSudHidValue( E楽器パート.GUITAR ),\r
-                               "ギターチップの表示方式:\n" +\r
-                               "OFF:  チップを常に表示します。\n" +\r
-                               "Sudden: チップがヒットバー付近に来るまで表示\n" +\r
-                               "    されなくなります。\n" +\r
-                               "Hidden: チップがヒットバー付近で表示されなく\n" +\r
-                               "    なります。\n" +\r
-                               "Sud+Hid: SuddenとHiddenの効果を同時にかけ\n" +\r
-                               "    ます。\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "    通常はチップを透明にしますが、Bad時\n" +\r
-                               "    にはしばらく表示します。\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "    チップを常に透明にします。暗譜での練習\n" +\r
-                               "    にお使いください。",\r
-                               "Guitar chips display type:\n" +\r
-                               "\n" +\r
-                               "OFF:    Always show chips.\n" +\r
-                               "Sudden: The chips are disappered until they\n" +\r
-                               "        come near the hit bar, and suddenly\n" +\r
-                               "        appears.\n" +\r
-                               "Hidden: The chips are hidden by approaching to\n" +\r
-                               "        the hit bar.\n" +\r
-                               "Sud+Hid: Both Sudden and Hidden.\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "        Usually you can't see the chips except\n" +\r
-                               "        you've gotten Bad.\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "        You can't see the chips at all.",\r
-                               new string[] { "OFF", "Sudden", "Hidden", "Sud+Hid", "S-Invisible", "F-Invisible" } );\r
-                       this.list項目リスト.Add( this.iGuitarSudHid );\r
-\r
-                       //this.iGuitarSudden = new CItemToggle( "Sudden", CDTXMania.ConfigIni.bSudden.Guitar,\r
-                       //    "ギターチップがヒットバー付近にくる\nまで表示されなくなります。",\r
-                       //    "Guitar chips are disappered until they\ncome near the hit bar, and suddenly\nappears." );\r
-                       //this.list項目リスト.Add( this.iGuitarSudden );\r
-                       //this.iGuitarHidden = new CItemToggle( "Hidden", CDTXMania.ConfigIni.bHidden.Guitar,\r
-                       //    "ギターチップがヒットバー付近で表示\nされなくなります。",\r
-                       //    "Guitar chips are hidden by approaching\nto the hit bar. " );\r
-                       //this.list項目リスト.Add( this.iGuitarHidden );\r
-\r
-                       //this.iGuitarInvisible = new CItemList( "Invisible", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eInvisible.Guitar,\r
-                       //    "ギターのチップを全く表示しなくなりま\n" +\r
-                       //    "す。暗譜での練習にお使いください。\n" +\r
-                       //    "これをONにすると、SuddenとHiddenの\n" +\r
-                       //    "効果は無効になります。",\r
-                       //    "If you set Blindfold=ON, you can't\n" +\r
-                       //    "see the chips at all.",\r
-                       //    new string[] { "OFF", "HALF", "ON" } );\r
-                       //this.list項目リスト.Add( this.iGuitarInvisible );\r
-\r
-                       this.iGuitarReverse = new CItemToggle( "Reverse", CDTXMania.ConfigIni.bReverse.Guitar,\r
-                               "ギターチップが譜面の上から下に流れるようになります。",\r
-                               "The scroll way is reversed. Guitar chips flow from the top to the bottom." );\r
-                       this.list項目リスト.Add( this.iGuitarReverse );\r
-\r
-                       this.iSystemJudgePosGuitar = new CItemList( "JudgePos", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.e判定位置.Guitar,\r
-                               "判定ライン表示位置:\n" +\r
-                               "判定ラインとRGBボタンが、少し下側に表示されるようになります。",\r
-                               "Judge Line position:\n" +\r
-                               "The judge line and RGB buttons will be displayed lower position.",\r
-                               new string[] { "Normal", "Lower" } );\r
-                       this.list項目リスト.Add( this.iSystemJudgePosGuitar );\r
-\r
-                       this.iGuitarPosition = new CItemList( "Position", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.判定文字表示位置.Guitar,\r
-                               "ギターの判定文字の表示位置を指定します。\n" +\r
-                               " P-A: レーン上\n" +\r
-                               " P-B: 判定ラインの上\n" +\r
-                               " P-C: COMBO の下\n" +\r
-                               " OFF: 表示しない",\r
-                               "The position to show judgement mark.\n" +\r
-                               "(Perfect, Great, ...)\n" +\r
-                               "\n" +\r
-                               " P-A: on the lanes.\n" +\r
-                               " P-B: over the hit bar.\n" +\r
-                               " P-C: under the COMBO indication.\n" +\r
-                               " OFF: no judgement mark.",\r
-                               new string[] { "OFF", "P-A", "P-B", "P-C" } );\r
-                       this.list項目リスト.Add( this.iGuitarPosition );\r
-\r
-                       //this.iGuitarJudgeDispPriority = new CItemList( "JudgePriority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.e判定表示優先度.Guitar,\r
-                       //    "判定文字列とコンボ表示の優先順位を\n" +\r
-                       //    "指定します。\n" +\r
-                       //    "\n" +\r
-                       //    " Under: チップの下に表示します。\n" +\r
-                       //    " Over:  チップの上に表示します。",\r
-                       //    "The display prioity between chips\n" +\r
-                       //    " and judge mark/combo.\n" +\r
-                       //    "\n" +\r
-                       //    " Under: Show them under the chips.\n" +\r
-                       //    " Over:  Show them over the chips.",\r
-                       //    new string[] { "Under", "Over" } );\r
-                       //this.list項目リスト.Add( this.iGuitarJudgeDispPriority );\r
-\r
-                       this.iGuitarRandom = new CItemList( "Random", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eRandom.Guitar,\r
-                               "ギターのチップがランダムに降ってきます。\n" +\r
-                               "  Part: 小節・レーン単位で交換\n" +\r
-                               "  Super: チップ単位で交換\n" +\r
-                               "  Hyper: 全部完全に変更",\r
-                               "Guitar chips come randomly.\n" +\r
-                               "\n" +\r
-                               "  Part: swapping lanes randomly for each measures.\n" +\r
-                               "  Super: swapping chip randomly\n" +\r
-                               "  Hyper: swapping randomly (number of lanes also changes)",\r
-                               new string[] { "OFF", "Part", "Super", "Hyper" } );\r
-                       this.list項目リスト.Add( this.iGuitarRandom );\r
-                       this.iGuitarLight = new CItemToggle( "Light", CDTXMania.ConfigIni.bLight.Guitar,\r
-                               "ギターチップのないところでピッキングしても BAD になりません。",\r
-                               "Even if you pick without any chips, it doesn't become BAD." );\r
-                       this.list項目リスト.Add( this.iGuitarLight );\r
-                       this.iGuitarLeft = new CItemToggle( "Left", CDTXMania.ConfigIni.bLeft.Guitar,\r
-                               "ギターの RGB の並びが左右反転します。(左利きモード)",\r
-                               "Lane order 'R-G-B' becomes 'B-G-R' for lefty." );\r
-                       this.list項目リスト.Add( this.iGuitarLeft );\r
-\r
-                       this.iSystemSoundMonitorGuitar = new CItemToggle( "GuitarMonitor", CDTXMania.ConfigIni.b演奏音を強調する.Guitar,\r
-                       "ギター音モニタ:\n" +\r
-                       "ギター音を他の音より大きめの音量で発声します。\n" +\r
-                       "ただし、オートプレイの場合は通常音量で発声されます。",\r
-                       "To enhance the guitar chip sound (except autoplay)." );\r
-                       this.list項目リスト.Add( this.iSystemSoundMonitorGuitar );\r
-                       this.iSystemMinComboGuitar = new CItemInteger( "G-MinCombo", 1, 0x1869f, CDTXMania.ConfigIni.n表示可能な最小コンボ数.Guitar,\r
-                               "表示可能な最小コンボ数(ギター):\n" +\r
-                               "画面に表示されるコンボの最小の数を指定します。\n" +\r
-                               "1 ~ 99999 の値が指定可能です。",\r
-                               "Initial number to show the combo for the guitar.\n" +\r
-                               "You can specify from 1 to 99999." );\r
-                       this.list項目リスト.Add( this.iSystemMinComboGuitar );\r
-\r
-\r
-                       // #23580 2011.1.3 yyagi\r
-                       this.iGuitarInputAdjustTimeMs = new CItemInteger( "InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar,\r
-                               "ギターの入力タイミングの微調整を行います。\n" +\r
-                               "-99 ~ 99ms まで指定可能です。\n" +\r
-                               "入力ラグを軽減するためには、負の値を指定してください。",\r
-                               "To adjust the guitar input timing.\n" +\r
-                               "You can set from -99 to 99ms.\n" +\r
-                               "To decrease input lag, set minus value." );\r
-                       this.list項目リスト.Add( this.iGuitarInputAdjustTimeMs );\r
-\r
-                       this.iGuitarGoToKeyAssign = new CItemBase( "Guitar Keys", CItemBase.Eパネル種別.通常,\r
-                               "ギターのキー入力に関する項目を設定します。",\r
-                               "Settings for the guitar key/pad inputs." );\r
-                       this.list項目リスト.Add( this.iGuitarGoToKeyAssign );\r
-\r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.Guitar;\r
-               }\r
-               #endregion\r
-               #region [ t項目リストの設定・Bass() ]\r
-               public void t項目リストの設定・Bass()\r
-               {\r
-                       this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
-\r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iBassReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu." );\r
-                       this.list項目リスト.Add( this.iBassReturnToMenu );\r
-\r
-                       #region [ AutoPlay ]\r
-                       this.iBassAutoPlayAll = new CItemThreeState( "AutoPlay (All)", CItemThreeState.E状態.不定,\r
-                               "全ネック/ピックの自動演奏の ON/OFF をまとめて切り替えます。",\r
-                               "You can change whether Auto or not for all bass neck/pick at once." );\r
-                       this.list項目リスト.Add( this.iBassAutoPlayAll );\r
-                       this.iBassR = new CItemToggle( "    R", CDTXMania.ConfigIni.bAutoPlay.BsR,\r
-                               "Rネックを自動で演奏します。",\r
-                               "To play R neck automatically." );\r
-                       this.list項目リスト.Add( this.iBassR );\r
-                       this.iBassG = new CItemToggle( "    G", CDTXMania.ConfigIni.bAutoPlay.BsG,\r
-                               "Gネックを自動で演奏します。",\r
-                               "To play G neck automatically." );\r
-                       this.list項目リスト.Add( this.iBassG );\r
-                       this.iBassB = new CItemToggle( "    B", CDTXMania.ConfigIni.bAutoPlay.BsB,\r
-                               "Bネックを自動で演奏します。",\r
-                               "To play B neck automatically." );\r
-                       this.list項目リスト.Add( this.iBassB );\r
-                       this.iBassPick = new CItemToggle( "    Pick", CDTXMania.ConfigIni.bAutoPlay.BsPick,\r
-                               "ピックを自動で演奏します。",\r
-                               "To play Pick automatically." );\r
-                       this.list項目リスト.Add( this.iBassPick );\r
-                       this.iBassW = new CItemToggle( "    Wailing", CDTXMania.ConfigIni.bAutoPlay.BsW,\r
-                               "ウェイリングを自動で演奏します。",\r
-                               "To play wailing automatically." );\r
-                       this.list項目リスト.Add( this.iBassW );\r
-                       #endregion\r
-\r
-                       this.iBassScrollSpeed = new CItemInteger( "ScrollSpeed", 0, 0x7cf, CDTXMania.ConfigIni.n譜面スクロール速度.Bass,\r
-                               "演奏時のベース譜面のスクロールの速度を指定します。\n" +\r
-                               "x0.5 ~ x1000.0 までを指定可能です。",\r
-                               "To change the scroll speed for the bass lanes.\n" +\r
-                               "You can set it from x0.5 to x1000.0.\n" +\r
-                               "(ScrollSpeed=x0.5 means half speed)" );\r
-                       this.list項目リスト.Add( this.iBassScrollSpeed );\r
-\r
-                       this.iBassSudHid = new CItemList( "Sud+Hid", CItemBase.Eパネル種別.通常, getDefaultSudHidValue( E楽器パート.BASS ),\r
-                               "ベースチップの表示方式:\n" +\r
-                               "OFF:  チップを常に表示します。\n" +\r
-                               "Sudden: チップがヒットバー付近に来るまで表示\n" +\r
-                               "    されなくなります。\n" +\r
-                               "Hidden: チップがヒットバー付近で表示されなく\n" +\r
-                               "    なります。\n" +\r
-                               "Sud+Hid: SuddenとHiddenの効果を同時にかけ\n" +\r
-                               "    ます。\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "    通常はチップを透明にしますが、Bad時\n" +\r
-                               "    にはしばらく表示します。\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "    チップを常に透明にします。暗譜での練習\n" +\r
-                               "    にお使いください。",\r
-                               "Bass chips display type:\n" +\r
-                               "\n" +\r
-                               "OFF:    Always show chips.\n" +\r
-                               "Sudden: The chips are disappered until they\n" +\r
-                               "        come near the hit bar, and suddenly\n" +\r
-                               "        appears.\n" +\r
-                               "Hidden: The chips are hidden by approaching to\n" +\r
-                               "        the hit bar.\n" +\r
-                               "Sud+Hid: Both Sudden and Hidden.\n" +\r
-                               "S(emi)-Invisible:\n" +\r
-                               "        Usually you can't see the chips except\n" +\r
-                               "        you've gotten Bad.\n" +\r
-                               "F(ull)-Invisible:\n" +\r
-                               "        You can't see the chips at all.",\r
-                               new string[] { "OFF", "Sudden", "Hidden", "Sud+Hid", "S-Invisible", "F-Invisible" } );\r
-                       this.list項目リスト.Add( this.iBassSudHid );\r
-\r
-                       //this.iBassSudden = new CItemToggle( "Sudden", CDTXMania.ConfigIni.bSudden.Bass,\r
-                       //    "ベースチップがヒットバー付近にくる\nまで表示されなくなります。",\r
-                       //    "Bass chips are disappered until they\ncome near the hit bar, and suddenly\nappears." );\r
-                       //this.list項目リスト.Add( this.iBassSudden );\r
-                       //this.iBassHidden = new CItemToggle( "Hidden", CDTXMania.ConfigIni.bHidden.Bass,\r
-                       //    "ベースチップがヒットバー付近で表示\nされなくなります。",\r
-                       //    "Bass chips are hidden by approaching\nto the hit bar." );\r
-                       //this.list項目リスト.Add( this.iBassHidden );\r
-\r
-                       //this.iBassInvisible = new CItemList( "InvisibleBlindfold", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.eInvisible.Bass,\r
-                       //    "ベースのチップを全く表示しなくなりま\n" +\r
-                       //    "す。暗譜での練習にお使いください。\n" +\r
-                       //    "これをONにすると、SuddenとHiddenの\n" +\r
-                       //    "効果は無効になります。",\r
-                       //    "If you set Blindfold=ON, you can't\n" +\r
-                       //    "see the chips at all.",\r
-                       //    new string[] { "OFF", "HALF", "ON"} );\r
-                       //this.list項目リスト.Add( this.iBassInvisible );\r
-\r
-                       this.iBassReverse = new CItemToggle( "Reverse", CDTXMania.ConfigIni.bReverse.Bass,\r
-                               "ベースチップが譜面の上から下に流れるようになります。",\r
-                               "The scroll way is reversed. Bass chips flow from the top to the bottom." );\r
-                       this.list項目リスト.Add( this.iBassReverse );\r
-\r
-                       this.iSystemJudgePosBass = new CItemList( "JudgePos", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.e判定位置.Bass,\r
-                               "判定ライン表示位置:\n" +\r
-                               "判定ラインとRGBボタンが、少し下側に表示されるようになります。",\r
-                               "Judge Line position:\n" +\r
-                               "The judge line and RGB buttons will be displayed lower position.",\r
-                               new string[] { "Normal", "Lower" } );\r
-                       this.list項目リスト.Add( this.iSystemJudgePosBass );\r
-                       \r
-                       this.iBassPosition = new CItemList( "Position", CItemBase.Eパネル種別.通常,\r
-                               (int) CDTXMania.ConfigIni.判定文字表示位置.Bass,\r
-                               "ベースの判定文字の表示位置を指定します。\n" +\r
-                               " P-A: レーン上\n" +\r
-                               " P-B: 判定ラインの上\n" +\r
-                               " P-C: COMBO の下\n" +\r
-                               " OFF: 表示しない",\r
-                               "The position to show judgement mark.\n" +\r
-                               "(Perfect, Great, ...)\n" +\r
-                               "\n" +\r
-                               " P-A: on the lanes.\n" +\r
-                               " P-B: over the hit bar.\n" +\r
-                               " P-C: under the COMBO indication.\n" +\r
-                               " OFF: no judgement mark.",\r
-                               new string[] { "OFF", "P-A", "P-B", "P-C" } );\r
-                       this.list項目リスト.Add( this.iBassPosition );\r
-\r
-                       //this.iBassJudgeDispPriority = new CItemList( "JudgePriority", CItemBase.Eパネル種別.通常, (int) CDTXMania.ConfigIni.e判定表示優先度.Bass,\r
-                       //"判定文字列とコンボ表示の優先順位を\n" +\r
-                       //"指定します。\n" +\r
-                       //"\n" +\r
-                       //" Under: チップの下に表示します。\n" +\r
-                       //" Over:  チップの上に表示します。",\r
-                       //"The display prioity between chips\n" +\r
-                       //" and judge mark/combo.\n" +\r
-                       //"\n" +\r
-                       //" Under: Show them under the chips.\n" +\r
-                       //" Over:  Show them over the chips.",\r
-                       //new string[] { "Under", "Over" } );\r
-                       //this.list項目リスト.Add( this.iBassJudgeDispPriority );\r
-\r
-                       this.iBassRandom = new CItemList( "Random", CItemBase.Eパネル種別.通常,\r
-                               (int) CDTXMania.ConfigIni.eRandom.Bass,\r
-                               "ベースのチップがランダムに降ってきます。\n" +\r
-                               "  Part: 小節・レーン単位で交換\n" +\r
-                               "  Super: チップ単位で交換\n" +\r
-                               "  Hyper: 全部完全に変更",\r
-                               "Bass chips come randomly.\n" +\r
-                               "\n" +\r
-                               "  Part: swapping lanes randomly for each measures.\n" +\r
-                               "  Super: swapping chip randomly\n" +\r
-                               "  Hyper: swapping randomly (number of lanes also changes)",\r
-                               new string[] { "OFF", "Part", "Super", "Hyper" } );\r
-                       this.list項目リスト.Add( this.iBassRandom );\r
-                       this.iBassLight = new CItemToggle( "Light", CDTXMania.ConfigIni.bLight.Bass,\r
-                               "ベースチップのないところでピッキングしても BAD になりません。",\r
-                               "Even if you pick without any chips, it doesn't become BAD." );\r
-                       this.list項目リスト.Add( this.iBassLight );\r
-                       this.iBassLeft = new CItemToggle( "Left", CDTXMania.ConfigIni.bLeft.Bass,\r
-                               "ベースの RGB の並びが左右反転します。(左利きモード)",\r
-                               "Lane order 'R-G-B' becomes 'B-G-R' for lefty." );\r
-                       this.list項目リスト.Add( this.iBassLeft );\r
-\r
-                       this.iSystemSoundMonitorBass = new CItemToggle( "BassMonitor", CDTXMania.ConfigIni.b演奏音を強調する.Bass,\r
-                       "ベース音モニタ:\n" +\r
-                       "ベース音を他の音より大きめの音量で発声します。\n" +\r
-                       "ただし、オートプレイの場合は通常音量で発声されます。",\r
-                       "To enhance the bass chip sound (except autoplay)." );\r
-                       this.list項目リスト.Add( this.iSystemSoundMonitorBass );\r
-\r
-                       this.iSystemMinComboBass = new CItemInteger( "B-MinCombo", 1, 0x1869f, CDTXMania.ConfigIni.n表示可能な最小コンボ数.Bass,\r
-                               "表示可能な最小コンボ数(ベース):\n" +\r
-                               "画面に表示されるコンボの最小の数を指定します。\n" +\r
-                               "1 ~ 99999 の値が指定可能です。",\r
-                               "Initial number to show the combo for the bass.\n" +\r
-                               "You can specify from 1 to 99999." );\r
-                       this.list項目リスト.Add( this.iSystemMinComboBass );\r
-\r
-\r
-                       // #23580 2011.1.3 yyagi\r
-                       this.iBassInputAdjustTimeMs = new CItemInteger( "InputAdjust", -99, 99, CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass,\r
-                               "ベースの入力タイミングの微調整を行います。\n" +\r
-                               "-99 ~ 99ms まで指定可能です。\n" +\r
-                               "入力ラグを軽減するためには、負の値を指定してください。",\r
-                               "To adjust the bass input timing.\n" +\r
-                               "You can set from -99 to 99ms.\n" +\r
-                               "To decrease input lag, set minus value." );\r
-                       this.list項目リスト.Add( this.iBassInputAdjustTimeMs );\r
-\r
-                       this.iBassGoToKeyAssign = new CItemBase( "Bass Keys", CItemBase.Eパネル種別.通常,\r
-                               "ベースのキー入力に関する項目を設定します。",\r
-                               "Settings for the bass key/pad inputs." );\r
-                       this.list項目リスト.Add( this.iBassGoToKeyAssign );\r
-\r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.Bass;\r
-               }\r
-               #endregion\r
-\r
-               /// <summary>Sud+Hidの初期値を返す</summary>\r
-               /// <param name="eInst"></param>\r
-               /// <returns>\r
-               /// 0: None\r
-               /// 1: Sudden\r
-               /// 2: Hidden\r
-               /// 3: Sud+Hid\r
-               /// 4: Semi-Invisible\r
-               /// 5: Full-Invisible\r
-               /// </returns>\r
-               private int getDefaultSudHidValue( E楽器パート eInst )\r
-               {\r
-                       int defvar;\r
-                       int nInst = (int) eInst;\r
-                       if ( CDTXMania.ConfigIni.eInvisible[ nInst ] != EInvisible.OFF )\r
-                       {\r
-                               defvar = (int) CDTXMania.ConfigIni.eInvisible[ nInst ] + 3;\r
-                       }\r
-                       else\r
+                       get\r
                        {\r
-                               defvar = ( CDTXMania.ConfigIni.bSudden[ nInst ] ? 1 : 0 ) +\r
-                                                ( CDTXMania.ConfigIni.bHidden[ nInst ] ? 2 : 0 );\r
+                               return this.list項目リスト[this.n現在の選択項目];\r
                        }\r
-                       return defvar;\r
                }\r
 \r
+               public int n現在の選択項目;\r
+\r
                /// <summary>\r
                /// ESC押下時の右メニュー描画\r
                /// </summary>\r
                public void tEsc押下()\r
                {\r
-                       if ( this.b要素値にフォーカス中 )             // #32059 2013.9.17 add yyagi\r
+                       if (this.b要素値にフォーカス中)\r
                        {\r
+                               // #32059 2013.9.17 add yyagi\r
                                this.b要素値にフォーカス中 = false;\r
                        }\r
 \r
-                       if ( this.eメニュー種別 == Eメニュー種別.KeyAssignSystem )\r
+                       if (this.eメニュー種別 == Eメニュー種別.KeyAssignSystem)\r
                        {\r
-                               t項目リストの設定・System();\r
+                               t項目リストの設定(Eメニュー種別.System);\r
                        }\r
-                       else if ( this.eメニュー種別 == Eメニュー種別.KeyAssignDrums )\r
+                       else if (this.eメニュー種別 == Eメニュー種別.KeyAssignDrums)\r
                        {\r
-                               t項目リストの設定・Drums();\r
+                               t項目リストの設定(Eメニュー種別.Drums);\r
                        }\r
-                       else if ( this.eメニュー種別 == Eメニュー種別.KeyAssignGuitar )\r
+                       else if (this.eメニュー種別 == Eメニュー種別.KeyAssignGuitar)\r
                        {\r
-                               t項目リストの設定・Guitar();\r
+                               t項目リストの設定(Eメニュー種別.Guitar);\r
                        }\r
-                       else if ( this.eメニュー種別 == Eメニュー種別.KeyAssignBass )\r
+                       else if (this.eメニュー種別 == Eメニュー種別.KeyAssignBass)\r
                        {\r
-                               t項目リストの設定・Bass();\r
+                               t項目リストの設定(Eメニュー種別.Bass);\r
                        }\r
-                       // これ以外なら何もしない\r
-               }\r
-               public void tEnter押下()\r
-               {\r
-                       CDTXMania.Skin.sound決定音.t再生する();\r
-                       if( this.b要素値にフォーカス中 )\r
+                       if (this.eメニュー種別 == Eメニュー種別.DisplaySystem)\r
                        {\r
-                               this.b要素値にフォーカス中 = false;\r
+                               t項目リストの設定(Eメニュー種別.System);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ].e種別 == CItemBase.E種別.整数 )\r
+                       else if (this.eメニュー種別 == Eメニュー種別.DisplayDrums)\r
                        {\r
-                               this.b要素値にフォーカス中 = true;\r
+                               t項目リストの設定(Eメニュー種別.Drums);\r
                        }\r
-                       else if( this.b現在選択されている項目はReturnToMenuである )\r
+                       else if (this.eメニュー種別 == Eメニュー種別.DisplayGuitar)\r
                        {\r
-                               //this.tConfigIniへ記録する();\r
-                               //CONFIG中にスキン変化が発生すると面倒なので、一旦マスクした。\r
+                               t項目リストの設定(Eメニュー種別.Guitar);\r
                        }\r
-                       #region [ 個々のキーアサイン ]\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsLC )\r
+                       else if (this.eメニュー種別 == Eメニュー種別.DisplayBass)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.LC );\r
+                               t項目リストの設定(Eメニュー種別.Bass);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsHHC )\r
+                       else if (this.eメニュー種別 == Eメニュー種別.EDrumsSettings)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.HH );\r
+                               t項目リストの設定(Eメニュー種別.Drums);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsHHO )\r
+                       else if (this.eメニュー種別 == Eメニュー種別.HitRangeSettings)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.HHO );\r
+                               t項目リストの設定(Eメニュー種別.System);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsSD )\r
+                       else if ( this.eメニュー種別 == Eメニュー種別.SoundSettings)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.SD );\r
+                               t項目リストの設定(Eメニュー種別.System);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsBD )\r
+               }\r
+\r
+               public bool tEnter押下()\r
+               {\r
+                       bool ret = false;\r
+                       CDTXMania.Instance.Skin.sound決定音.t再生する();\r
+\r
+                       if (this.b要素値にフォーカス中)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.BD );\r
+                               this.b要素値にフォーカス中 = false;\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsHT )\r
+                       else if (this.list項目リスト[this.n現在の選択項目] is COptionInteger)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.HT );\r
+                               this.b要素値にフォーカス中 = true;\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsLT )\r
+                       else if (this.list項目リスト[this.n現在の選択項目] is IOptionList || this.list項目リスト[this.n現在の選択項目] is COptionBool)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.LT );\r
+                               this.list項目リスト[this.n現在の選択項目].OnNext();\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsFT )\r
+\r
+                       // #27029 2012.1.5 from\r
+                       if (\r
+                                       CDTXMania.Instance.ConfigIni.eBDGroup == EBDGroup.Group &&\r
+                                       (\r
+                                       (this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.eHHGroup ||\r
+                                        this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH)))\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.FT );\r
+                               // 変更禁止(何もしない)\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsCY )\r
+                       else\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.CY );\r
+                               if (b現在選択されている項目はReturnToMenuである && b楽器またはシステム用メニューである)\r
+                               {\r
+                                       ret = true;\r
+                               }\r
+                               this.list項目リスト[this.n現在の選択項目].OnEnter();\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsRD )\r
+                       return ret;\r
+               }\r
+\r
+               private void tGenerateSkinSample()\r
+               {\r
+                       string path = skinSubFolders[skins.Index];\r
+                       path = System.IO.Path.Combine(path, @"Graphics\ScreenTitle background.jpg");\r
+                       using (Bitmap bmSrc = new Bitmap(path))\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.RD );\r
+                               using (Bitmap bmDest = new Bitmap(bmSrc.Width / 4, bmSrc.Height / 4))\r
+                               {\r
+                                       using (Graphics g = Graphics.FromImage(bmDest))\r
+                                       {\r
+                                               g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;\r
+                                               g.DrawImage(bmSrc, new Rectangle(0, 0, bmSrc.Width / 4, bmSrc.Height / 4),\r
+                                                               0, 0, bmSrc.Width, bmSrc.Height, GraphicsUnit.Pixel);\r
+                                               TextureFactory.tテクスチャの解放(ref txSkinSample);\r
+                                               txSkinSample = TextureFactory.tテクスチャの生成(bmDest, false);\r
+                                       }\r
+                               }\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsHP )                    // #27029 2012.1.4 from\r
-                       {                                                                                                                                                                                       //\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.DRUMS, EKeyConfigPad.HP );        //\r
-                       }                                                                                                                                                                                       //\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarR )\r
+               }\r
+\r
+               // #region [ 項目リストの設定 ( Exit, KeyAssignSystem/Drums/Guitar/Bass) ]\r
+               public void t項目リストの設定_Exit()\r
+               {\r
+                       CDTXMania.Instance.SaveConfig();\r
+                       this.eメニュー種別 = Eメニュー種別.Unknown;\r
+               }\r
+\r
+               public void t項目リストの設定(Eメニュー種別 eMenu)\r
+               {\r
+                       this.list項目リスト.Clear();\r
+\r
+                       Func<EPad, string, string, COptionString> PadNotifier = (pad, lbl, expl) =>\r
+                       {\r
+                               COptionString opt = new COptionString("");\r
+                               opt.Initialize(lbl, expl);\r
+                               opt.OnEnterDelegate = () =>\r
+                               {\r
+                                       CDTXMania.Instance.stageコンフィグ.tパッド選択通知(pad);\r
+                               };\r
+                               return opt;\r
+                       };\r
+\r
+                       CResources cr = CDTXMania.Instance.Resources;\r
+\r
+                       if (eMenu == Eメニュー種別.DisplaySystem)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.R );\r
+                               list項目リスト.Add(ReturnToMenu.System);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFullScreen);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bBGA);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAVI);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFullAVI);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bVSyncWait);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugX.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdDebugY.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieX.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdMovieY.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nBGAlpha);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nShowLagType);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eJudgePriority);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bDebugInfo);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarG )\r
+                       else if (eMenu == Eメニュー種別.DisplayDrums)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.G );\r
+                               list項目リスト.Add(ReturnToMenu.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Drums.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Drums.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Drums.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Drums.DrOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.LC);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.HH);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.SD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.HT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.LT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.FT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.CY);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Drums);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarB )\r
+                       else if (eMenu == Eメニュー種別.DisplayGuitar)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.B );\r
+                               list項目リスト.Add(ReturnToMenu.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Guitar.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Guitar.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Guitar.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Guitar.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtR);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtG);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.GtB);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Guitar);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarPick )\r
+                       else if (eMenu == Eメニュー種別.DisplayBass)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.Pick );\r
+                               list項目リスト.Add(ReturnToMenu.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Bass.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdInstX.Bass.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Bass.Both);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdComboX.Bass.GBOnly);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeLineY.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdJudgeY.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsR);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsG);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.cdLaneOrder.BsB);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eSudHidInv.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bReverse.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nMinComboDisp.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bGraph.Bass);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarWail )\r
+                       else if (eMenu == Eメニュー種別.EDrumsSettings)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.Wail );\r
+                               list項目リスト.Add(ReturnToMenu.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.LC);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.HH);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.SD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.BD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.HT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.LT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.FT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.CY);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nVelocityMin.RD);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarDecide )\r
+                       else if (eMenu == Eメニュー種別.HitRangeSettings)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.Decide );\r
+                               list項目リスト.Add(ReturnToMenu.System);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nHitRange.Perfect);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nHitRange.Great);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nHitRange.Good);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nHitRange.Poor);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarCancel )\r
+                       else if (eMenu == Eメニュー種別.KeyAssignSystem)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.GUITAR, EKeyConfigPad.Cancel );\r
+                               list項目リスト.Add(ReturnToMenu.System);\r
+                               list項目リスト.Add(PadNotifier(EPad.Capture, cr.Label("strCfgKeyAssignCapture"), cr.Explanation("strCfgKeyAssignCapture") ));\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassR )\r
+                       else if (eMenu == Eメニュー種別.KeyAssignDrums)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.R );\r
+                               list項目リスト.Add(ReturnToMenu.Drums);\r
+                               list項目リスト.Add(PadNotifier(EPad.LC, cr.Label("strCfgKeyAssignLC"), cr.Explanation("strCfgKeyAssignLC") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.HH, cr.Label("strCfgKeyAssignHH"), cr.Explanation("strCfgKeyAssignHH") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.HHO,cr.Label("strCfgKeyAssignHHO"), cr.Explanation("strCfgKeyAssignHHO") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.SD, cr.Label("strCfgKeyAssignSD"), cr.Explanation("strCfgKeyAssignSD") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.BD, cr.Label("strCfgKeyAssignBD"), cr.Explanation("strCfgKeyAssignBD") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.HT, cr.Label("strCfgKeyAssignHT"), cr.Explanation("strCfgKeyAssignHT") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.LT, cr.Label("strCfgKeyAssignLT"), cr.Explanation("strCfgKeyAssignLT") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.FT, cr.Label("strCfgKeyAssignFT"), cr.Explanation("strCfgKeyAssignFT") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.CY, cr.Label("strCfgKeyAssignCY"), cr.Explanation("strCfgKeyAssignCY") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.RD, cr.Label("strCfgKeyAssignRD"), cr.Explanation("strCfgKeyAssignRD") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.HP, cr.Label("strCfgKeyAssignHP"), cr.Explanation("strCfgKeyAssignHP") ));\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHHGroup);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eFTGroup);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eCYGroup);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eBDGroup);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bCymbalFree);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Drums);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassG )\r
+                       else if (eMenu == Eメニュー種別.KeyAssignGuitar)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.G );\r
+                               list項目リスト.Add(ReturnToMenu.Guitar);\r
+                               list項目リスト.Add(PadNotifier(EPad.GtR, cr.Label("strCfgKeyAssignGtR"), cr.Explanation("strCfgKeyAssignGtR") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtG, cr.Label("strCfgKeyAssignGtG"), cr.Explanation("strCfgKeyAssignGtG") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtB, cr.Label("strCfgKeyAssignGtB"), cr.Explanation("strCfgKeyAssignGtB") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtPick, cr.Label("strCfgKeyAssignGtPick"), cr.Explanation("strCfgKeyAssignGtPick") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtWail, cr.Label("strCfgKeyAssignGtWailing"), cr.Explanation("strCfgKeyAssignGtWailing") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtDecide, cr.Label("strCfgKeyAssignGtDecide"), cr.Explanation("strCfgKeyAssignGtDecide") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.GtCancel, cr.Label("strCfgKeyAssignGtCancel"), cr.Explanation("strCfgKeyAssignGtCancel") ));\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Guitar);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassB )\r
+                       else if (eMenu == Eメニュー種別.KeyAssignBass)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.B );\r
+                               list項目リスト.Add(ReturnToMenu.Bass);\r
+                               list項目リスト.Add(PadNotifier(EPad.BsR, cr.Label("strCfgKeyAssignBsR"), cr.Explanation("strCfgKeyAssignBsR") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsG, cr.Label("strCfgKeyAssignBsG"), cr.Explanation("strCfgKeyAssignBsG") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsB, cr.Label("strCfgKeyAssignBsB"), cr.Explanation("strCfgKeyAssignBsB") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsPick, cr.Label("strCfgKeyAssignBsPick"), cr.Explanation("strCfgKeyAssignBsPick") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsWail, cr.Label("strCfgKeyAssignBsWailing"), cr.Explanation("strCfgKeyAssignBsWailing") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsDecide, cr.Label("strCfgKeyAssignBsDecide"), cr.Explanation("strCfgKeyAssignBsDecide") ));\r
+                               list項目リスト.Add(PadNotifier(EPad.BsCancel, cr.Label("strCfgKeyAssignBsCancel"), cr.Explanation("strCfgKeyAssignBsCancel") ));\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nInputAdjustTimeMs.Bass);\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassPick )\r
+                       else if (eMenu == Eメニュー種別.System)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.Pick );\r
+                               list項目リスト.Add(ReturnToMenu.System);\r
+                               COptionStringList langlist = new COptionStringList("default");\r
+                               langlist.Initialize( "strCfgLanguage", cr.LanguageDispList );\r
+                               langlist.Index = CDTXMania.Instance.Resources.LanguageCodeIndex;\r
+                               langlist.OnEnterDelegate = () =>\r
+                               {\r
+                                       int index = langlist.Index;\r
+                                       CDTXMania.Instance.ConfigIni.strLanguage.Value = CDTXMania.Instance.Resources.Language = CDTXMania.Instance.Resources.LanguageCodeList[ index ];\r
+                                        \r
+                               }; \r
+                               list項目リスト.Add( langlist );\r
+                       \r
+                               COptionString enumsongs = new COptionString("");\r
+                               enumsongs.Initialize( "strCfgSysEnumSongs" );\r
+                               list項目リスト.Add(enumsongs);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eDark);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nRisky);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eActiveInst);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPlaySpeed);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nSleepPerFrameMs);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nSleepUnfocusMs);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bForceHighPowerPlan);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bStageFailed);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bRandSubBox);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPreSoundWeightMs);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nPreImageWeightMs);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eDamageLevel);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bScoreIni);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nChipVolume);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nAutoVolume);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bStoicMode);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bIsAutoResultCapture);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bBufferedInput);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLog);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLoadSoundSpeed);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLoadDTXDetail);// #36177 2016.7.30 ikanick\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bUseBoxDefSkin);\r
+                               list項目リスト.Add(skins);\r
+                               list項目リスト.Add(SoundMenu);\r
+                               list項目リスト.Add(DisplayMenu.System);\r
+                               list項目リスト.Add(HitRangeMenu);\r
+                               list項目リスト.Add(KeyAssignMenu.System);\r
+                               enumsongs.OnEnterDelegate = () =>\r
+                               {\r
+                                       if (CDTXMania.Instance.EnumSongs.IsEnumerating)\r
+                                       {\r
+                                               // Debug.WriteLine( "バックグラウンドでEnumeratingSongs中だったので、一旦中断します。" );\r
+                                               CDTXMania.Instance.EnumSongs.Abort();\r
+                                               CDTXMania.Instance.actEnumSongs.On非活性化();\r
+                                       }\r
+\r
+                                       CDTXMania.Instance.EnumSongs.StartEnumFromDisk();\r
+                                       CDTXMania.Instance.EnumSongs.ChangeEnumeratePriority(ThreadPriority.Normal);\r
+                                       CDTXMania.Instance.actEnumSongs.bコマンドでの曲データ取得 = true;\r
+                                       CDTXMania.Instance.actEnumSongs.On活性化();\r
+                               };\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassWail )\r
+                       else if ( eMenu == Eメニュー種別.SoundSettings )\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.Wail );\r
+                               list項目リスト.Add( ReturnToMenu.System );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.bTimeStretch );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.bWaveAdjust );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.bBGMPlay );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.bAudience );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.nChipVolume );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.nAutoVolume );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.nSoundDeviceType );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.strASIODevice );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.bUseOSTimer );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.nMasterVolume );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.nPolyphonicSounds );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.eClickType );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.nClickHighVolume );\r
+                               list項目リスト.Add( CDTXMania.Instance.ConfigIni.nClickLowVolume );\r
                        }\r
-                       else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassDecide )\r
+                       else if ( eMenu == Eメニュー種別.Drums )\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.Decide );\r
+                               list項目リスト.Add(ReturnToMenu.Drums);\r
+                               COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);\r
+                               AllAuto.Initialize( "strCfgDrAllAuto", typeof(EThreeState));\r
+                               AllAuto.OnEnterDelegate = () =>\r
+                               {\r
+                                       if ( AllAuto.Value == EThreeState.X )\r
+                                       {\r
+                                               AllAuto.OnNext();\r
+                                       }\r
+                                       CDTXMania.Instance.ConfigIni.bAutoPlay.Set( EPart.Drums, AllAuto );\r
+                               };\r
+                               list項目リスト.Add(AllAuto);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.LC);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HH);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HHO);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.SD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.HT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.LT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.FT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.CY);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.RD);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Drums);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityHH);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityFT);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eHitSoundPriorityCY);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bTight);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bFillin);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bDrumsHitSound);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Drums);\r
+                               list項目リスト.Add(DisplayMenu.Drums);\r
+                               list項目リスト.Add(EDrumsMenu.Drums);\r
+                               list項目リスト.Add(KeyAssignMenu.Drums);\r
                        }\r
-                       else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassCancel )\r
+                       else if (eMenu == Eメニュー種別.Guitar)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.BASS, EKeyConfigPad.Cancel );\r
+                               list項目リスト.Add(ReturnToMenu.Guitar);\r
+                               COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);\r
+                               AllAuto.Initialize( "strCfgDrAllAuto", typeof(EThreeState));\r
+                               AllAuto.OnEnterDelegate = () =>\r
+                               {\r
+                                       if ( AllAuto.Value == EThreeState.X )\r
+                                       {\r
+                                               AllAuto.OnNext();\r
+                                       }\r
+                                       CDTXMania.Instance.ConfigIni.bAutoPlay.Set( EPart.Guitar, AllAuto );\r
+                               };\r
+                               list項目リスト.Add(AllAuto);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtR);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtG);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtB);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtPick);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.GtWail);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eRandom.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLight.Guitar);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Guitar);\r
+                               list項目リスト.Add(DisplayMenu.Guitar);\r
+                               list項目リスト.Add(KeyAssignMenu.Guitar);\r
                        }\r
-                       else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignSystemCapture )\r
+                       else if (eMenu == Eメニュー種別.Bass)\r
                        {\r
-                               CDTXMania.stageコンフィグ.tパッド選択通知( EKeyConfigPart.SYSTEM, EKeyConfigPad.Capture);\r
+                               list項目リスト.Add(ReturnToMenu.Bass);\r
+                               COptionEnum<EThreeState> AllAuto = new COptionEnum<EThreeState>(EThreeState.X);\r
+                               AllAuto.Initialize( "strCfgDrAllAuto", typeof(EThreeState));\r
+                               AllAuto.OnEnterDelegate = () =>\r
+                               {\r
+                                       if ( AllAuto.Value == EThreeState.X )\r
+                                       {\r
+                                               AllAuto.OnNext();\r
+                                       }\r
+                                       CDTXMania.Instance.ConfigIni.bAutoPlay.Set( EPart.Bass, AllAuto );\r
+                               };\r
+                               list項目リスト.Add(AllAuto);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsR);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsG);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsB);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsPick);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bAutoPlay.BsWail);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.nScrollSpeed.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.eRandom.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bLight.Bass);\r
+                               list項目リスト.Add(CDTXMania.Instance.ConfigIni.bEmphasizePlaySound.Bass);\r
+                               list項目リスト.Add(DisplayMenu.Bass);\r
+                               list項目リスト.Add(KeyAssignMenu.Bass);\r
+                       }\r
+                       OnListMenuの初期化();\r
+                       n現在の選択項目 = 0;\r
+                       eメニュー種別 = eMenu;\r
+               }\r
+\r
+               public void OnNext()\r
+               {\r
+                       CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
+                       if (b要素値にフォーカス中)\r
+                       {\r
+                               list項目リスト[n現在の選択項目].OnPrevious();\r
+                               t要素値を上下に変更中の処理();\r
                        }\r
-                       #endregion\r
                        else\r
                        {\r
-                               // #27029 2012.1.5 from\r
-                               if( ( this.iSystemBDGroup.n現在選択されている項目番号 == (int) EBDGroup.どっちもBD ) &&\r
-                                       ( ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemHHGroup ) || ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemHitSoundPriorityHH ) ) )\r
-                               {\r
-                                       // 変更禁止(何もしない)\r
-                               }\r
-                               else\r
-                               {\r
-                                       // 変更許可\r
-                                       this.list項目リスト[ this.n現在の選択項目 ].tEnter押下();\r
-                               }\r
+                               n目標のスクロールカウンタ += 100;\r
+                       }\r
+               }\r
 \r
+               public void OnPrevious()\r
+               {\r
+                       CDTXMania.Instance.Skin.soundカーソル移動音.t再生する();\r
+                       if (b要素値にフォーカス中)\r
+                       {\r
+                               list項目リスト[n現在の選択項目].OnNext();\r
+                               t要素値を上下に変更中の処理();\r
+                       }\r
+                       else\r
+                       {\r
+                               n目標のスクロールカウンタ -= 100;\r
+                       }\r
+               }\r
+\r
+               private void t要素値を上下に変更中の処理()\r
+               {\r
+                       if (this.list項目リスト[this.n現在の選択項目] == CDTXMania.Instance.ConfigIni.nMasterVolume)\r
+                       {\r
+                               // #33700 2014.4.26 yyagi\r
+                               CDTXMania.Instance.Sound管理.nMasterVolume = CDTXMania.Instance.ConfigIni.nMasterVolume;\r
+                       }\r
+               }\r
+\r
+               public override void On活性化()\r
+               {\r
+                       if (b活性化してない)\r
+                       {\r
+                               this.list項目リスト = new List<COptionBase>();\r
+                               this.eメニュー種別 = Eメニュー種別.Unknown;\r
+                               this.prvFont = new CPrivateFastFont(CSkin.Path(@"Graphics\fonts\mplus-1p-heavy.ttf"), (int)(18 * Scale.Y));\r
+                               this.b要素値にフォーカス中 = false;\r
+                               this.n目標のスクロールカウンタ = 0;\r
+                               this.n現在のスクロールカウンタ = 0;\r
+                               this.nスクロール用タイマ値 = -1;\r
+                               this.ct三角矢印アニメ = new CCounter();\r
 \r
-                               // Enter押下後の後処理\r
 \r
-                               if( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemFullscreen )\r
+                               DisplayMenu = new STDGBSValue<COptionLabel>();\r
+                               KeyAssignMenu = new STDGBSValue<COptionLabel>();\r
+                               EDrumsMenu = new STDGBSValue<COptionLabel>();\r
+                               ReturnToMenu = new STDGBSValue<COptionLabel>();\r
+\r
+                               CResources cr = CDTXMania.Instance.Resources;\r
+                               for ( EPart i = EPart.Drums; i <= EPart.System; ++i )\r
                                {\r
-                                       CDTXMania.app.b次のタイミングで全画面・ウィンドウ切り替えを行う = true;\r
+                                       DisplayMenu[i] = new COptionLabel( "strCfgDisplayOption" );\r
+                                       KeyAssignMenu[i] = new COptionLabel( "strCfgInputOption" );\r
+                                       ReturnToMenu[i] = new COptionLabel( "strCfgReturnToMenu" );\r
                                }\r
-                               else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemVSyncWait )\r
+\r
+                               EDrumsMenu[ EPart.Drums ] = new COptionLabel( "strCfgEDrumsOption" );\r
+                               HitRangeMenu = new COptionLabel( "strCfgHitRangeOption" );\r
+                               SoundMenu = new COptionLabel( "strCfgSoundOption" );\r
+\r
+                               DisplayMenu.Drums.OnEnterDelegate = () =>\r
                                {\r
-                                       CDTXMania.ConfigIni.b垂直帰線待ちを行う = this.iSystemVSyncWait.bON;\r
-                                       CDTXMania.app.b次のタイミングで垂直帰線同期切り替えを行う = true;\r
-                               }\r
-                               #region [ AutoPlay #23886 2012.5.8 yyagi ]\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iDrumsAutoPlayAll )\r
+                                       t項目リストの設定(Eメニュー種別.DisplayDrums);\r
+                               };\r
+                               DisplayMenu.Guitar.OnEnterDelegate = () =>\r
                                {\r
-                                       this.t全部のドラムパッドのAutoを切り替える( this.iDrumsAutoPlayAll.e現在の状態 == CItemThreeState.E状態.ON );\r
-                               }\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iGuitarAutoPlayAll )\r
+                                       t項目リストの設定(Eメニュー種別.DisplayGuitar);\r
+                               };\r
+                               DisplayMenu.Bass.OnEnterDelegate = () =>\r
                                {\r
-                                       this.t全部のギターパッドのAutoを切り替える( this.iGuitarAutoPlayAll.e現在の状態 == CItemThreeState.E状態.ON );\r
-                               }\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iBassAutoPlayAll )\r
+                                       t項目リストの設定(Eメニュー種別.DisplayBass);\r
+                               };\r
+                               DisplayMenu.System.OnEnterDelegate = () =>\r
                                {\r
-                                       this.t全部のベースパッドのAutoを切り替える( this.iBassAutoPlayAll.e現在の状態 == CItemThreeState.E状態.ON );\r
-                               }\r
-                               #endregion\r
-                               #region [ キーアサインへの遷移と脱出 ]\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemGoToKeyAssign )                        // #24609 2011.4.12 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.DisplaySystem);\r
+                               };\r
+                               KeyAssignMenu.Drums.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定・KeyAssignSystem();\r
-                               }\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignSystemReturnToMenu )        // #24609 2011.4.12 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.KeyAssignDrums);\r
+                               };\r
+                               KeyAssignMenu.Guitar.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定・System();\r
-                               }\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iDrumsGoToKeyAssign )                         // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.KeyAssignGuitar);\r
+                               };\r
+                               KeyAssignMenu.Bass.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定・KeyAssignDrums();\r
-                               }\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignDrumsReturnToMenu )         // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.KeyAssignBass);\r
+                               };\r
+                               KeyAssignMenu.System.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定・Drums();\r
-                               }\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iGuitarGoToKeyAssign )                        // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.KeyAssignSystem);\r
+                               };\r
+\r
+                               ReturnToMenu.Drums.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定・KeyAssignGuitar();\r
-                               }\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignGuitarReturnToMenu )        // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.Drums);\r
+                               };\r
+                               ReturnToMenu.Guitar.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定・Guitar();\r
-                               }\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iBassGoToKeyAssign )                          // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.Guitar);\r
+                               };\r
+                               ReturnToMenu.Bass.OnEnterDelegate = () =>\r
                                {\r
-                                       t項目リストの設定・KeyAssignBass();\r
-                               }\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iKeyAssignBassReturnToMenu )          // #24525 2011.3.15 yyagi\r
+                                       t項目リストの設定(Eメニュー種別.Bass);\r
+                               };\r
+                               ReturnToMenu.System.OnEnterDelegate = () =>\r
+                               {\r
+                                       t項目リストの設定(Eメニュー種別.System);\r
+                               };\r
+                               EDrumsMenu.Drums.OnEnterDelegate = () =>\r
+                               {\r
+                                       t項目リストの設定(Eメニュー種別.EDrumsSettings);\r
+                               };\r
+                               HitRangeMenu.OnEnterDelegate = () =>\r
+                               {\r
+                                       t項目リストの設定( Eメニュー種別.HitRangeSettings );\r
+                               };\r
+                               SoundMenu.OnEnterDelegate = () =>\r
+                               {\r
+                                       t項目リストの設定( Eメニュー種別.SoundSettings );\r
+                               };\r
+\r
+                               #region [ スキン選択肢と、現在選択中のスキン(index)の準備 #28195 2012.5.2 yyagi ]\r
+                               int ns = (CDTXMania.Instance.Skin.strSystemSkinSubfolders == null) ? 0 : CDTXMania.Instance.Skin.strSystemSkinSubfolders.Length;\r
+                               int nb = (CDTXMania.Instance.Skin.strBoxDefSkinSubfolders == null) ? 0 : CDTXMania.Instance.Skin.strBoxDefSkinSubfolders.Length;\r
+\r
+                               skinSubFolders = new string[ns + nb];\r
+                               skinInitial = CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true);\r
+                               int initIdx = 0;\r
+                               for (int i = 0; i < ns; i++)\r
                                {\r
-                                       t項目リストの設定・Bass();\r
+                                       skinSubFolders[i] = CDTXMania.Instance.Skin.strSystemSkinSubfolders[i];\r
                                }\r
-                               #endregion\r
-                               #region [ BDGroup #27029 2012.1.4 from ]\r
-                               else if( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemBDGroup )                                       // #27029 2012.1.4 from\r
+                               for (int i = 0; i < nb; i++)\r
                                {\r
-                                       if( this.iSystemBDGroup.n現在選択されている項目番号 == (int) EBDGroup.どっちもBD )\r
-                                       {\r
-                                               // #27029 2012.1.5 from: 変更前の状態をバックアップする。\r
-                                               CDTXMania.ConfigIni.BackupOf1BD = new CConfigIni.CBackupOf1BD() {\r
-                                                       eHHGroup = (EHHGroup) this.iSystemHHGroup.n現在選択されている項目番号,\r
-                                                       eHitSoundPriorityHH = (E打ち分け時の再生の優先順位) this.iSystemHitSoundPriorityHH.n現在選択されている項目番号,\r
-                                               };\r
-\r
-                                               // HH Group ... HH-0 → HH-2 / HH-1 → HH-3 / HH-2 → 変更なし / HH-3 → 変更なし\r
-                                               if( this.iSystemHHGroup.n現在選択されている項目番号 == (int) EHHGroup.全部打ち分ける )\r
-                                                       this.iSystemHHGroup.n現在選択されている項目番号 = (int) EHHGroup.左シンバルのみ打ち分ける;\r
-                                               if( this.iSystemHHGroup.n現在選択されている項目番号 == (int) EHHGroup.ハイハットのみ打ち分ける )\r
-                                                       this.iSystemHHGroup.n現在選択されている項目番号 = (int) EHHGroup.全部共通;\r
-\r
-                                               // HH Priority ... C>P → 変更なし / P>C → C>P\r
-                                               if( this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 == (int) E打ち分け時の再生の優先順位.PadがChipより優先 )\r
-                                                       this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 = (int) E打ち分け時の再生の優先順位.ChipがPadより優先;\r
-                                       }\r
-                                       else\r
-                                       {\r
-                                               // #27029 2012.1.5 from: 変更前の状態に戻す。\r
-                                               this.iSystemHHGroup.n現在選択されている項目番号 = (int) CDTXMania.ConfigIni.BackupOf1BD.eHHGroup;\r
-                                               this.iSystemHitSoundPriorityHH.n現在選択されている項目番号 = (int) CDTXMania.ConfigIni.BackupOf1BD.eHitSoundPriorityHH;\r
-                                               \r
-                                               CDTXMania.ConfigIni.BackupOf1BD = null;\r
-                                       }\r
+                                       skinSubFolders[ns + i] = CDTXMania.Instance.Skin.strBoxDefSkinSubfolders[i];\r
                                }\r
-                               #endregion\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemUseBoxDefSkin )                        // #28195 2012.5.6 yyagi\r
+                               Array.Sort(skinSubFolders);\r
+                               skinNames = CSkin.GetSkinName(skinSubFolders);\r
+                               initIdx = Array.BinarySearch(skinSubFolders, skinInitial);\r
+                               if (initIdx < 0)\r
                                {\r
-                                       CSkin.bUseBoxDefSkin = this.iSystemUseBoxDefSkin.bON;\r
+                                       initIdx = 0;\r
                                }\r
-                               #region [ スキン項目でEnterを押下した場合に限り、スキンの縮小サンプルを生成する。]\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemSkinSubfolder )                        // #28195 2012.5.2 yyagi\r
+                               skins = new COptionStringList(skinNames[initIdx]);\r
+                               skins.Initialize("Skin", Properties.Resources.strCfgSysSkin, skinNames);\r
+\r
+                               skins.OnEnterDelegate = () =>\r
                                {\r
+                                       CDTXMania.Instance.Skin.SetCurrentSkinSubfolderFullName(skinSubFolders[skins.Index], true);\r
+                                       CDTXMania.Instance.ConfigIni.strSystemSkinSubfolderPath.Value = skinSubFolders[skins.Index];\r
                                        tGenerateSkinSample();\r
-                               }\r
+                               };\r
                                #endregion\r
-                               #region [ 曲データ一覧の再読み込み ]\r
-                               else if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemReloadDTX )                            // #32081 2013.10.21 yyagi\r
-                               {\r
-                                       if ( CDTXMania.EnumSongs.IsEnumerating )\r
-                                       {\r
-                                               // Debug.WriteLine( "バックグラウンドでEnumeratingSongs中だったので、一旦中断します。" );\r
-                                               CDTXMania.EnumSongs.Abort();\r
-                                               CDTXMania.actEnumSongs.On非活性化();\r
-                                       }\r
 \r
-                                       CDTXMania.EnumSongs.StartEnumFromDisk();\r
-                                       CDTXMania.EnumSongs.ChangeEnumeratePriority( ThreadPriority.Normal );\r
-                                       CDTXMania.actEnumSongs.bコマンドでの曲データ取得 = true;\r
-                                       CDTXMania.actEnumSongs.On活性化();\r
-                               }\r
-                               #endregion\r
+                               // CONFIG脱出時にこの値から変更されているようなら\r
+                               // サウンドデバイスを再構築する\r
+                               this.InitialSystemSoundType = CDTXMania.Instance.ConfigIni.nSoundDeviceType;\r
+                               this.InitialWASAPIBufferSizeMs = CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs;\r
+                               this.InitialASIODevice = CDTXMania.Instance.ConfigIni.strASIODevice.Index;\r
+                               this.InitialUseOSTimer = CDTXMania.Instance.ConfigIni.bUseOSTimer;\r
+                               this.InitialWASAPIEventDriven = CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI;\r
+\r
+                               this.InitialForceHighPower = CDTXMania.Instance.ConfigIni.bForceHighPowerPlan;\r
+\r
+                               // #27795 2012.3.11 yyagi; System設定の中でDrumsの設定を参照しているため、\r
+                               this.t項目リストの設定(Eメニュー種別.Bass);\r
+                               // 活性化の時点でDrumsの設定も入れ込んでおかないと、System設定中に例外発生することがある。\r
+                               this.t項目リストの設定(Eメニュー種別.Guitar);\r
+                               this.t項目リストの設定(Eメニュー種別.Drums);\r
+                               // 順番として、最後にSystemを持ってくること。設定一覧の初期位置がSystemのため。\r
+                               this.t項目リストの設定(Eメニュー種別.System);\r
+\r
+                               base.On活性化();\r
                        }\r
                }\r
 \r
-               private void tGenerateSkinSample()\r
+               public override void On非活性化()\r
                {\r
-                       nSkinIndex = ( ( CItemList ) this.list項目リスト[ this.n現在の選択項目 ] ).n現在選択されている項目番号;\r
-                       if ( nSkinSampleIndex != nSkinIndex )\r
+                       if (b活性化してる)\r
                        {\r
-                               string path = skinSubFolders[ nSkinIndex ];\r
-                               path = System.IO.Path.Combine( path, @"Graphics\ScreenTitle background.jpg" );\r
-                               Bitmap bmSrc = new Bitmap( path );\r
-                               Bitmap bmDest = new Bitmap( bmSrc.Width / 4, bmSrc.Height / 4 );\r
-                               Graphics g = Graphics.FromImage( bmDest );\r
-                               g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;\r
-                               g.DrawImage( bmSrc, new Rectangle( 0, 0, bmSrc.Width / 4, bmSrc.Height / 4 ),\r
-                                       0, 0, bmSrc.Width, bmSrc.Height, GraphicsUnit.Pixel );\r
-                               if ( txSkinSample1 != null )\r
-                               {\r
-                                       CDTXMania.t安全にDisposeする( ref txSkinSample1 );\r
-                               }\r
-                               txSkinSample1 = CDTXMania.tテクスチャの生成( bmDest, false );\r
-                               g.Dispose();\r
-                               bmDest.Dispose();\r
-                               bmSrc.Dispose();\r
-                               nSkinSampleIndex = nSkinIndex;\r
-                       }\r
-               }\r
-\r
-               #region [ 項目リストの設定 ( Exit, KeyAssignSystem/Drums/Guitar/Bass) ]\r
-               public void t項目リストの設定・Exit()\r
-               {\r
-                       this.tConfigIniへ記録する();\r
-                       this.eメニュー種別 = Eメニュー種別.Unknown;\r
-               }\r
-               public void t項目リストの設定・KeyAssignSystem()\r
-               {\r
-                       //this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
+                               CDTXMania.Instance.SaveConfig();\r
+                               this.list項目リスト.Clear();\r
+                               this.ct三角矢印アニメ = null;\r
 \r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
+                               OnListMenuの解放();\r
+                               prvFont.Dispose();\r
 \r
-                       this.iKeyAssignSystemReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu." );\r
-                       this.list項目リスト.Add( this.iKeyAssignSystemReturnToMenu );\r
-                       this.iKeyAssignSystemCapture = new CItemBase( "Capture",\r
-                               "キャプチャキー設定:\n" +\r
-                               "画面キャプチャのキーの割り当てを設定します。",\r
-                               "Capture key assign:\n" +\r
-                               "To assign key for screen capture.\n" +\r
-                               "(You can assign keyboard only. You can't use pads to capture screenshot.)" );\r
-                       this.list項目リスト.Add( this.iKeyAssignSystemCapture );\r
-\r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.KeyAssignSystem;\r
-               }\r
-               public void t項目リストの設定・KeyAssignDrums()\r
-               {\r
-                       //                      this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
+                               base.On非活性化();\r
+                               #region [ Skin変更 ]\r
+                               if (CDTXMania.Instance.Skin.GetCurrentSkinSubfolderFullName(true) != this.skinInitial)\r
+                               {\r
+                                       CDTXMania.Instance.stageChangeSkin.tChangeSkinMain();   // #28195 2012.6.11 yyagi CONFIG脱出時にSkin更新\r
+                               }\r
+                               #endregion\r
 \r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iKeyAssignDrumsReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu." );\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsReturnToMenu );\r
-                       this.iKeyAssignDrumsLC = new CItemBase( "LeftCymbal",\r
-                               "ドラムのキー設定:\n" +\r
-                               "左シンバルへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for LeftCymbal button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsLC );\r
-                       this.iKeyAssignDrumsHHC = new CItemBase( "HiHat(Close)",\r
-                               "ドラムのキー設定:\n" +\r
-                               "ハイハット(クローズ)へのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for HiHat(Close) button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsHHC );\r
-                       this.iKeyAssignDrumsHHO = new CItemBase( "HiHat(Open)",\r
-                               "ドラムのキー設定:\n" +\r
-                               "ハイハット(オープン)へのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for HiHat(Open) button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsHHO );\r
-                       this.iKeyAssignDrumsSD = new CItemBase( "Snare",\r
-                               "ドラムのキー設定:\n" +\r
-                               "スネアへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for Snare button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsSD );\r
-                       this.iKeyAssignDrumsBD = new CItemBase( "Bass",\r
-                               "ドラムのキー設定:\n" +\r
-                               "バスドラムへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for Bass button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsBD );\r
-                       this.iKeyAssignDrumsHT = new CItemBase( "HighTom",\r
-                               "ドラムのキー設定:\n" +\r
-                               "ハイタムへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for HighTom button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsHT );\r
-                       this.iKeyAssignDrumsLT = new CItemBase( "LowTom",\r
-                               "ドラムのキー設定:\n" +\r
-                               "ロータムへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for LowTom button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsLT );\r
-                       this.iKeyAssignDrumsFT = new CItemBase( "FloorTom",\r
-                               "ドラムのキー設定:\n" +\r
-                               "フロアタムへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for FloorTom button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsFT );\r
-                       this.iKeyAssignDrumsCY = new CItemBase( "RightCymbal",\r
-                               "ドラムのキー設定:\n" +\r
-                               "右シンバルへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for RightCymbal button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsCY );\r
-                       this.iKeyAssignDrumsRD = new CItemBase( "RideCymbal",\r
-                               "ドラムのキー設定:\n" +\r
-                               "ライドシンバルへのキーの割り当てを設定します。",\r
-                               "Drums key assign:\n" +\r
-                               "To assign key/pads for RideCymbal button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsRD );\r
-                       this.iKeyAssignDrumsHP = new CItemBase( "HiHatPedal",                                                                   // #27029 2012.1.4 from\r
-                               "ドラムのキー設定:\n" +                                                                                                                       //\r
-                               "ハイハットのフットペダルへのキーの割り当てを設定します。",                                                 //\r
-                               "Drums key assign:\n" +                                                                                                                         //\r
-                               "To assign key/pads for HiHatPedal button." );                                                                          //\r
-                       this.list項目リスト.Add( this.iKeyAssignDrumsHP );                                                                         //\r
+                               // #24820 2013.1.22 yyagi CONFIGでWASAPI/ASIO/DirectSound関連の設定を変更した場合、サウンドデバイスを再構築する。\r
+                               // #33689 2014.6.17 yyagi CONFIGでSoundTimerTypeの設定を変更した場合も、サウンドデバイスを再構築する。\r
+                               #region [ サウンドデバイス変更 ]\r
+                               if (InitialSystemSoundType != CDTXMania.Instance.ConfigIni.nSoundDeviceType ||\r
+                                               InitialWASAPIBufferSizeMs != CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs ||\r
+                                               InitialASIODevice != CDTXMania.Instance.ConfigIni.strASIODevice.Index ||\r
+                                               InitialUseOSTimer != CDTXMania.Instance.ConfigIni.bUseOSTimer ||\r
+                                               InitialWASAPIEventDriven != CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI )\r
+                               {\r
+                                       ESoundDeviceType soundDeviceType;\r
+                                       switch (CDTXMania.Instance.ConfigIni.nSoundDeviceType.Value)\r
+                                       {\r
+                                               case ESoundDeviceTypeForConfig.DSound:\r
+                                                       soundDeviceType = ESoundDeviceType.DirectSound;\r
+                                                       break;\r
+                                               case ESoundDeviceTypeForConfig.ASIO:\r
+                                                       soundDeviceType = ESoundDeviceType.ASIO;\r
+                                                       break;\r
+                                               case ESoundDeviceTypeForConfig.WASAPI:\r
+                                                       soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;\r
+                                                       break;\r
+                                               default:\r
+                                                       soundDeviceType = ESoundDeviceType.Unknown;\r
+                                                       break;\r
+                                       }\r
 \r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.KeyAssignDrums;\r
-               }\r
-               public void t項目リストの設定・KeyAssignGuitar()\r
-               {\r
-                       //                      this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
+                                       CDTXMania.Instance.Sound管理.t初期化(\r
+                                                       soundDeviceType,\r
+                                                       CDTXMania.Instance.ConfigIni.nWASAPIBufferSizeMs,\r
+                                                       CDTXMania.Instance.ConfigIni.bEventDrivenWASAPI,\r
+                                                       0,\r
+                                                       CDTXMania.Instance.ConfigIni.strASIODevice.Index,\r
+                                                       CDTXMania.Instance.ConfigIni.bUseOSTimer);\r
+                                       CDTXMania.Instance.ShowWindowTitleWithSoundType();\r
+                               }\r
+                               #endregion\r
 \r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iKeyAssignGuitarReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu." );\r
-                       this.list項目リスト.Add( this.iKeyAssignGuitarReturnToMenu );\r
-                       this.iKeyAssignGuitarR = new CItemBase( "R",\r
-                               "ギターのキー設定:\n" +\r
-                               "Rボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\n" +\r
-                               "To assign key/pads for R button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignGuitarR );\r
-                       this.iKeyAssignGuitarG = new CItemBase( "G",\r
-                               "ギターのキー設定:\n" +\r
-                               "Gボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\n" +\r
-                               "To assign key/pads for G button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignGuitarG );\r
-                       this.iKeyAssignGuitarB = new CItemBase( "B",\r
-                               "ギターのキー設定:\n" +\r
-                               "Bボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\n" +\r
-                               "To assign key/pads for B button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignGuitarB );\r
-                       this.iKeyAssignGuitarPick = new CItemBase( "Pick",\r
-                               "ギターのキー設定:\n" +\r
-                               "ピックボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\n" +\r
-                               "To assign key/pads for Pick button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignGuitarPick );\r
-                       this.iKeyAssignGuitarWail = new CItemBase( "Wailing",\r
-                               "ギターのキー設定:\n" +\r
-                               "Wailingボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\nTo assign key/pads for Wailing button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignGuitarWail );\r
-                       this.iKeyAssignGuitarDecide = new CItemBase( "Decide",\r
-                               "ギターのキー設定:\n" +\r
-                               "決定ボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\nTo assign key/pads for Decide button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignGuitarDecide );\r
-                       this.iKeyAssignGuitarCancel = new CItemBase( "Cancel",\r
-                               "ギターのキー設定:\n" +\r
-                               "キャンセルボタンへのキーの割り当てを設定します。",\r
-                               "Guitar key assign:\n" +\r
-                               "To assign key/pads for Cancel button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignGuitarCancel );\r
+                               #region [ メトロノーム音 音量設定 ]\r
+                               CDTXMania.Instance.Skin.soundClickHigh.n音量 = CDTXMania.Instance.ConfigIni.nClickHighVolume;\r
+                               CDTXMania.Instance.Skin.soundClickLow.n音量 = CDTXMania.Instance.ConfigIni.nClickLowVolume;\r
+                               #endregion\r
 \r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.KeyAssignGuitar;\r
-               }\r
-               public void t項目リストの設定・KeyAssignBass()\r
-               {\r
-                       //                      this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
+                               #region [ サウンドのタイムストレッチモード変更 ]\r
 \r
-                       // #27029 2012.1.5 from: 説明文は最大9行→13行に変更。\r
-\r
-                       this.iKeyAssignBassReturnToMenu = new CItemBase( "<< Return To Menu", CItemBase.Eパネル種別.その他,\r
-                               "左側のメニューに戻ります。",\r
-                               "Return to left menu." );\r
-                       this.list項目リスト.Add( this.iKeyAssignBassReturnToMenu );\r
-                       this.iKeyAssignBassR = new CItemBase( "R",\r
-                               "ベースのキー設定:\n" +\r
-                               "Rボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for R button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignBassR );\r
-                       this.iKeyAssignBassG = new CItemBase( "G",\r
-                               "ベースのキー設定:\n" +\r
-                               "Gボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for G button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignBassG );\r
-                       this.iKeyAssignBassB = new CItemBase( "B",\r
-                               "ベースのキー設定:\n" +\r
-                               "Bボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for B button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignBassB );\r
-                       this.iKeyAssignBassPick = new CItemBase( "Pick",\r
-                               "ベースのキー設定:\n" +\r
-                               "ピックボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for Pick button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignBassPick );\r
-                       this.iKeyAssignBassWail = new CItemBase( "Wailing",\r
-                               "ベースのキー設定:\n" +\r
-                               "Wailingボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for Wailing button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignBassWail );\r
-                       this.iKeyAssignBassDecide = new CItemBase( "Decide",\r
-                               "ベースのキー設定:\n" +\r
-                               "決定ボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for Decide button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignBassDecide );\r
-                       this.iKeyAssignBassCancel = new CItemBase( "Cancel",\r
-                               "ベースのキー設定:\n" +\r
-                               "キャンセルボタンへのキーの割り当てを設定します。",\r
-                               "Bass key assign:\n" +\r
-                               "To assign key/pads for Cancel button." );\r
-                       this.list項目リスト.Add( this.iKeyAssignBassCancel );\r
+                               FDK.CSound管理.bIsTimeStretch = CDTXMania.Instance.ConfigIni.bUseOSTimer;\r
 \r
-                       OnListMenuの初期化();\r
-                       this.n現在の選択項目 = 0;\r
-                       this.eメニュー種別 = Eメニュー種別.KeyAssignBass;\r
-               }\r
-               #endregion\r
-               public void t次に移動()\r
-               {\r
-                       CDTXMania.Skin.soundカーソル移動音.t再生する();\r
-                       if( this.b要素値にフォーカス中 )\r
-                       {\r
-                               this.list項目リスト[ this.n現在の選択項目 ].t項目値を前へ移動();\r
-                               t要素値を上下に変更中の処理();\r
-                       }\r
-                       else\r
-                       {\r
-                               this.n目標のスクロールカウンタ += 100;\r
-                       }\r
-               }\r
-               public void t前に移動()\r
-               {\r
-                       CDTXMania.Skin.soundカーソル移動音.t再生する();\r
-                       if( this.b要素値にフォーカス中 )\r
-                       {\r
-                               this.list項目リスト[ this.n現在の選択項目 ].t項目値を次へ移動();\r
-                               t要素値を上下に変更中の処理();\r
-                       }\r
-                       else\r
-                       {\r
-                               this.n目標のスクロールカウンタ -= 100;\r
+                               #endregion\r
+                               #region [ 電源プラン変更 ]\r
+                               if ( CDTXMania.Instance.ConfigIni.bForceHighPowerPlan )\r
+                               {\r
+                                       CPowerPlan.ChangeHighPerformance();\r
+                               }\r
+                               else\r
+                               {\r
+                                       CPowerPlan.RestoreCurrentPowerPlan();\r
+                               }\r
+                               #endregion\r
                        }\r
                }\r
-               private void t要素値を上下に変更中の処理()\r
-               {\r
-                       //if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemMasterVolume )                            // #33700 2014.4.26 yyagi\r
-                       //{\r
-                       //    CDTXMania.Sound管理.nMasterVolume = this.iSystemMasterVolume.n現在の値;\r
-                       //}\r
-               }\r
-\r
-\r
-               // CActivity 実装\r
 \r
-               public override void On活性化()\r
+               public override void OnManagedリソースの作成()\r
                {\r
-                       if( this.b活性化してる )\r
-                               return;\r
-\r
-                       this.list項目リスト = new List<CItemBase>();\r
-                       this.eメニュー種別 = Eメニュー種別.Unknown;\r
-\r
-                       #region [ スキン選択肢と、現在選択中のスキン(index)の準備 #28195 2012.5.2 yyagi ]\r
-                       int ns = ( CDTXMania.Skin.strSystemSkinSubfolders == null ) ? 0 : CDTXMania.Skin.strSystemSkinSubfolders.Length;\r
-                       int nb = ( CDTXMania.Skin.strBoxDefSkinSubfolders == null ) ? 0 : CDTXMania.Skin.strBoxDefSkinSubfolders.Length;\r
-                       skinSubFolders = new string[ ns + nb ];\r
-                       for ( int i = 0; i < ns; i++ )\r
-                       {\r
-                               skinSubFolders[ i ] = CDTXMania.Skin.strSystemSkinSubfolders[ i ];\r
-                       }\r
-                       for ( int i = 0; i < nb; i++ )\r
+                       if (b活性化してる)\r
                        {\r
-                               skinSubFolders[ ns + i ] = CDTXMania.Skin.strBoxDefSkinSubfolders[ i ];\r
+                               this.tx通常項目行パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig itembox.png"), false);\r
+                               this.txその他項目行パネル = TextureFactory.tテクスチャの生成Af(CSkin.Path(@"Graphics\ScreenConfig itembox other.png"), false);\r
+                               this.tx三角矢印 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig triangle arrow.png"), false);\r
+                               // スキン選択時に動的に設定するため、ここでは初期化しない\r
+                               this.txSkinSample = null;\r
+                               base.OnManagedリソースの作成();\r
                        }\r
-                       skinSubFolder_org = CDTXMania.Skin.GetCurrentSkinSubfolderFullName( true );\r
-                       Array.Sort( skinSubFolders );\r
-                       skinNames = CSkin.GetSkinName( skinSubFolders );\r
-                       nSkinIndex = Array.BinarySearch( skinSubFolders, skinSubFolder_org );\r
-                       if ( nSkinIndex < 0 )   // 念のため\r
-                       {\r
-                               nSkinIndex = 0;\r
-                       }\r
-                       nSkinSampleIndex = -1;\r
-                       #endregion\r
-\r
-                       this.prvFont = new CPrivateFastFont( CSkin.Path( @"Graphics\fonts\mplus-1p-heavy.ttf" ), (int) ( 18 * Scale.Y ) );      // t項目リストの設定 の前に必要\r
-//                     this.listMenu = new List<stMenuItemRight>();\r
-\r
-\r
-                       this.t項目リストの設定・Bass();                // #27795 2012.3.11 yyagi; System設定の中でDrumsの設定を参照しているため、\r
-                       this.t項目リストの設定・Guitar();      // 活性化の時点でDrumsの設定も入れ込んでおかないと、System設定中に例外発生することがある。\r
-                       this.t項目リストの設定・Drums();       // \r
-                       this.t項目リストの設定・System();      // 順番として、最後にSystemを持ってくること。設定一覧の初期位置がSystemのため。\r
-                       this.b要素値にフォーカス中 = false;\r
-                       this.n目標のスクロールカウンタ = 0;\r
-                       this.n現在のスクロールカウンタ = 0;\r
-                       this.nスクロール用タイマ値 = -1;\r
-                       this.ct三角矢印アニメ = new CCounter();\r
-\r
-                       this.iSystemSoundType_initial                   = this.iSystemSoundType.n現在選択されている項目番号;       // CONFIGに入ったときの値を保持しておく\r
-                       // this.iSystemWASAPIBufferSizeMs_initial       = this.iSystemWASAPIBufferSizeMs.n現在の値;                         // CONFIG脱出時にこの値から変更されているようなら\r
-                       // this.iSystemASIOBufferSizeMs_initial = this.iSystemASIOBufferSizeMs.n現在の値;                           // サウンドデバイスを再構築する\r
-                       this.iSystemASIODevice_initial                  = this.iSystemASIODevice.n現在選択されている項目番号;      //\r
-                       this.iSystemSoundTimerType_initial      = this.iSystemSoundTimerType.GetIndex();                                //\r
-                       base.On活性化();\r
                }\r
-               public override void On非活性化()\r
-               {\r
-                       if( this.b活性化してない )\r
-                               return;\r
-\r
-                       this.tConfigIniへ記録する();\r
-                       this.list項目リスト.Clear();\r
-                       this.ct三角矢印アニメ = null;\r
 \r
-                       OnListMenuの解放();\r
-                       prvFont.Dispose();\r
-\r
-                       base.On非活性化();\r
-                       #region [ Skin変更 ]\r
-                       if ( CDTXMania.Skin.GetCurrentSkinSubfolderFullName( true ) != this.skinSubFolder_org )\r
-                       {\r
-                               CDTXMania.stageChangeSkin.tChangeSkinMain();    // #28195 2012.6.11 yyagi CONFIG脱出時にSkin更新\r
-                       }\r
-                       #endregion\r
-\r
-                       // #24820 2013.1.22 yyagi CONFIGでWASAPI/ASIO/DirectSound関連の設定を変更した場合、サウンドデバイスを再構築する。\r
-                       // #33689 2014.6.17 yyagi CONFIGでSoundTimerTypeの設定を変更した場合も、サウンドデバイスを再構築する。\r
-                       #region [ サウンドデバイス変更 ]\r
-                       if ( this.iSystemSoundType_initial != this.iSystemSoundType.n現在選択されている項目番号 ||\r
-                               // this.iSystemWASAPIBufferSizeMs_initial != this.iSystemWASAPIBufferSizeMs.n現在の値 ||\r
-                               // this.iSystemASIOBufferSizeMs_initial != this.iSystemASIOBufferSizeMs.n現在の値 ||\r
-                               this.iSystemASIODevice_initial != this.iSystemASIODevice.n現在選択されている項目番号 ||\r
-                               this.iSystemSoundTimerType_initial != this.iSystemSoundTimerType.GetIndex() )\r
+               public override void OnManagedリソースの解放()\r
+               {\r
+                       if (b活性化してる)\r
                        {\r
-                               ESoundDeviceType soundDeviceType;\r
-                               switch ( this.iSystemSoundType.n現在選択されている項目番号 )\r
-                               {\r
-                                       case 0:\r
-                                               soundDeviceType = ESoundDeviceType.DirectSound;\r
-                                               break;\r
-                                       case 1:\r
-                                               soundDeviceType = ESoundDeviceType.ASIO;\r
-                                               break;\r
-                                       case 2:\r
-                                               soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;\r
-                                               break;\r
-                                       default:\r
-                                               soundDeviceType = ESoundDeviceType.Unknown;\r
-                                               break;\r
-                               }\r
+                               TextureFactory.tテクスチャの解放(ref this.txSkinSample);\r
+                               TextureFactory.tテクスチャの解放(ref this.tx通常項目行パネル);\r
+                               TextureFactory.tテクスチャの解放(ref this.txその他項目行パネル);\r
+                               TextureFactory.tテクスチャの解放(ref this.tx三角矢印);\r
 \r
-                               CDTXMania.Sound管理.t初期化( soundDeviceType,\r
-                                                                               0,\r
-                                                                               // this.iSystemWASAPIBufferSizeMs.n現在の値,\r
-                                                                               0,\r
-                                                                               // this.iSystemASIOBufferSizeMs.n現在の値,\r
-                                                                               this.iSystemASIODevice.n現在選択されている項目番号,\r
-                                                                               this.iSystemSoundTimerType.bON );\r
-                               CDTXMania.app.ShowWindowTitleWithSoundType();\r
+                               base.OnManagedリソースの解放();\r
                        }\r
-                       #endregion\r
-                       #region [ サウンドのタイムストレッチモード変更 ]\r
-                       FDK.CSound管理.bIsTimeStretch = this.iSystemTimeStretch.bON;\r
-                       #endregion\r
-               }\r
-               public override void OnManagedリソースの作成()\r
-               {\r
-                       if( this.b活性化してない )\r
-                               return;\r
-\r
-                       this.tx通常項目行パネル = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\ScreenConfig itembox.png" ), false );\r
-                       this.txその他項目行パネル = CDTXMania.tテクスチャの生成Af( CSkin.Path( @"Graphics\ScreenConfig itembox other.png" ), false );\r
-                       this.tx三角矢印 = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\ScreenConfig triangle arrow.png" ), false );\r
-                       this.txSkinSample1 = null;              // スキン選択時に動的に設定するため、ここでは初期化しない\r
-                       base.OnManagedリソースの作成();\r
-               }\r
-               public override void OnManagedリソースの解放()\r
-               {\r
-                       if( this.b活性化してない )\r
-                               return;\r
-\r
-                       CDTXMania.tテクスチャの解放( ref this.txSkinSample1 );\r
-                       CDTXMania.tテクスチャの解放( ref this.tx通常項目行パネル );\r
-                       CDTXMania.tテクスチャの解放( ref this.txその他項目行パネル );\r
-                       CDTXMania.tテクスチャの解放( ref this.tx三角矢印 );\r
-               \r
-                       base.OnManagedリソースの解放();\r
                }\r
 \r
                private void OnListMenuの初期化()\r
                {\r
                        OnListMenuの解放();\r
-                       this.listMenu = new stMenuItemRight[ this.list項目リスト.Count ];\r
+                       this.listMenu = new stMenuItemRight[this.list項目リスト.Count];\r
                }\r
 \r
                /// <summary>\r
@@ -2000,800 +870,329 @@ namespace DTXMania
                /// </summary>\r
                private void OnListMenuの解放()\r
                {\r
-                       if ( listMenu != null )\r
+                       if (listMenu != null)\r
                        {\r
-                               for ( int i = 0; i < listMenu.Length; i++ )\r
+                               for (int i = 0; i < listMenu.Length; i++)\r
                                {\r
-                                       if ( listMenu[ i ].txParam != null )\r
-                                       {\r
-                                               listMenu[ i ].txParam.Dispose();\r
-                                       }\r
-                                       if ( listMenu[ i ].txMenuItemRight != null )\r
-                                       {\r
-                                               listMenu[ i ].txMenuItemRight.Dispose();\r
-                                       }\r
+                                       TextureFactory.tテクスチャの解放(ref listMenu[i].txParam);\r
+                                       TextureFactory.tテクスチャの解放(ref listMenu[i].txParamColored);\r
+                                       TextureFactory.tテクスチャの解放(ref listMenu[i].txMenuItemRight);\r
                                }\r
                                this.listMenu = null;\r
                        }\r
                }\r
+\r
                public override int On進行描画()\r
                {\r
-                       throw new InvalidOperationException( "t進行描画(bool)のほうを使用してください。" );\r
+                       throw new InvalidOperationException("t進行描画(bool)のほうを使用してください。");\r
                }\r
-               public int t進行描画( bool b項目リスト側にフォーカスがある )\r
-               {\r
-                       if( this.b活性化してない )\r
-                               return 0;\r
-\r
-                       // 進行\r
-\r
-                       #region [ 初めての進行描画 ]\r
-                       //-----------------\r
-                       if( base.b初めての進行描画 )\r
-                       {\r
-                this.nスクロール用タイマ値 = CSound管理.rc演奏用タイマ.n現在時刻;\r
-                               this.ct三角矢印アニメ.t開始( 0, 9, 50, CDTXMania.Timer );\r
-                       \r
-                               base.b初めての進行描画 = false;\r
-                       }\r
-                       //-----------------\r
-                       #endregion\r
 \r
-                       this.b項目リスト側にフォーカスがある = b項目リスト側にフォーカスがある;           // 記憶\r
-\r
-                       #region [ 項目スクロールの進行 ]\r
-                       //-----------------\r
-                       long n現在時刻 = CDTXMania.Timer.n現在時刻;\r
-                       if( n現在時刻 < this.nスクロール用タイマ値 ) this.nスクロール用タイマ値 = n現在時刻;\r
-\r
-                       const int INTERVAL = 2; // [ms]\r
-                       while( ( n現在時刻 - this.nスクロール用タイマ値 ) >= INTERVAL )\r
+               public int t進行描画(bool b項目リスト側にフォーカスがある)\r
+               {\r
+                       if (this.b活性化してる)\r
                        {\r
-                               int n目標項目までのスクロール量 = Math.Abs( (int) ( this.n目標のスクロールカウンタ - this.n現在のスクロールカウンタ ) );\r
-                               int n加速度 = 0;\r
-\r
-                               #region [ n加速度の決定;目標まで遠いほど加速する。]\r
+                               #region [ 初めての進行描画 ]\r
                                //-----------------\r
-                               if( n目標項目までのスクロール量 <= 100 )\r
-                               {\r
-                                       n加速度 = 2;\r
-                               }\r
-                               else if( n目標項目までのスクロール量 <= 300 )\r
-                               {\r
-                                       n加速度 = 3;\r
-                               }\r
-                               else if( n目標項目までのスクロール量 <= 500 )\r
+                               if (base.b初めての進行描画)\r
                                {\r
-                                       n加速度 = 4;\r
-                               }\r
-                               else\r
-                               {\r
-                                       n加速度 = 8;\r
+                                       this.nスクロール用タイマ値 = CSound管理.rc演奏用タイマ.n現在時刻;\r
+                                       this.ct三角矢印アニメ.t開始(0, 9, 50, CDTXMania.Instance.Timer);\r
+\r
+                                       base.b初めての進行描画 = false;\r
                                }\r
                                //-----------------\r
                                #endregion\r
-                               #region [ this.n現在のスクロールカウンタに n加速度 を加減算。]\r
+\r
+                               this.b項目リスト側にフォーカスがある = b項目リスト側にフォーカスがある;       // 記憶\r
+\r
+                               #region [ 項目スクロールの進行 ]\r
                                //-----------------\r
-                               if( this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ )\r
+                               long n現在時刻 = CDTXMania.Instance.Timer.n現在時刻;\r
+                               if (n現在時刻 < this.nスクロール用タイマ値) this.nスクロール用タイマ値 = n現在時刻;\r
+\r
+                               const int INTERVAL = 2; // [ms]\r
+                               while ((n現在時刻 - this.nスクロール用タイマ値) >= INTERVAL)\r
                                {\r
-                                       this.n現在のスクロールカウンタ += n加速度;\r
-                                       if( this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ )\r
+                                       int n目標項目までのスクロール量 = Math.Abs((int)(this.n目標のスクロールカウンタ - this.n現在のスクロールカウンタ));\r
+                                       int n加速度 = 0;\r
+\r
+                                       #region [ n加速度の決定;目標まで遠いほど加速する。]\r
+                                       //-----------------\r
+                                       if (n目標項目までのスクロール量 <= 100)\r
                                        {\r
-                                               // 目標を超えたら目標値で停止。\r
-                                               this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
+                                               n加速度 = 2;\r
                                        }\r
-                               }\r
-                               else if( this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ )\r
-                               {\r
-                                       this.n現在のスクロールカウンタ -= n加速度;\r
-                                       if( this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ )\r
+                                       else if (n目標項目までのスクロール量 <= 300)\r
                                        {\r
-                                               // 目標を超えたら目標値で停止。\r
-                                               this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
+                                               n加速度 = 3;\r
                                        }\r
-                               }\r
-                               //-----------------\r
-                               #endregion\r
-                               #region [ 行超え処理、ならびに目標位置に到達したらスクロールを停止して項目変更通知を発行。]\r
-                               //-----------------\r
-                               if( this.n現在のスクロールカウンタ >= 100 )\r
-                               {\r
-                                       this.n現在の選択項目 = this.t次の項目( this.n現在の選択項目 );\r
-                                       this.n現在のスクロールカウンタ -= 100;\r
-                                       this.n目標のスクロールカウンタ -= 100;\r
-                                       if( this.n目標のスクロールカウンタ == 0 )\r
+                                       else if (n目標項目までのスクロール量 <= 500)\r
                                        {\r
-                                               CDTXMania.stageコンフィグ.t項目変更通知();\r
+                                               n加速度 = 4;\r
                                        }\r
-                               }\r
-                               else if( this.n現在のスクロールカウンタ <= -100 )\r
-                               {\r
-                                       this.n現在の選択項目 = this.t前の項目( this.n現在の選択項目 );\r
-                                       this.n現在のスクロールカウンタ += 100;\r
-                                       this.n目標のスクロールカウンタ += 100;\r
-                                       if( this.n目標のスクロールカウンタ == 0 )\r
+                                       else\r
                                        {\r
-                                               CDTXMania.stageコンフィグ.t項目変更通知();\r
+                                               n加速度 = 8;\r
                                        }\r
+                                       //-----------------\r
+                                       #endregion\r
+                                       #region [ this.n現在のスクロールカウンタに n加速度 を加減算。]\r
+                                       //-----------------\r
+                                       if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)\r
+                                       {\r
+                                               this.n現在のスクロールカウンタ += n加速度;\r
+                                               if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)\r
+                                               {\r
+                                                       // 目標を超えたら目標値で停止。\r
+                                                       this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
+                                               }\r
+                                       }\r
+                                       else if (this.n現在のスクロールカウンタ > this.n目標のスクロールカウンタ)\r
+                                       {\r
+                                               this.n現在のスクロールカウンタ -= n加速度;\r
+                                               if (this.n現在のスクロールカウンタ < this.n目標のスクロールカウンタ)\r
+                                               {\r
+                                                       // 目標を超えたら目標値で停止。\r
+                                                       this.n現在のスクロールカウンタ = this.n目標のスクロールカウンタ;\r
+                                               }\r
+                                       }\r
+                                       //-----------------\r
+                                       #endregion\r
+                                       #region [ 行超え処理、ならびに目標位置に到達したらスクロールを停止して項目変更通知を発行。]\r
+                                       //-----------------\r
+                                       if (this.n現在のスクロールカウンタ >= 100)\r
+                                       {\r
+                                               this.n現在の選択項目 = this.t次の項目(this.n現在の選択項目);\r
+                                               this.n現在のスクロールカウンタ -= 100;\r
+                                               this.n目標のスクロールカウンタ -= 100;\r
+                                               if (this.n目標のスクロールカウンタ == 0)\r
+                                               {\r
+                                                       CDTXMania.Instance.stageコンフィグ.t項目変更通知();\r
+                                               }\r
+                                       }\r
+                                       else if (this.n現在のスクロールカウンタ <= -100)\r
+                                       {\r
+                                               this.n現在の選択項目 = this.t前の項目(this.n現在の選択項目);\r
+                                               this.n現在のスクロールカウンタ += 100;\r
+                                               this.n目標のスクロールカウンタ += 100;\r
+                                               if (this.n目標のスクロールカウンタ == 0)\r
+                                               {\r
+                                                       CDTXMania.Instance.stageコンフィグ.t項目変更通知();\r
+                                               }\r
+                                       }\r
+                                       //-----------------\r
+                                       #endregion\r
+\r
+                                       this.nスクロール用タイマ値 += INTERVAL;\r
                                }\r
                                //-----------------\r
                                #endregion\r
 \r
-                               this.nスクロール用タイマ値 += INTERVAL;\r
-                       }\r
-                       //-----------------\r
-                       #endregion\r
-                       \r
-                       #region [ ▲印アニメの進行 ]\r
-                       //-----------------\r
-                       if( this.b項目リスト側にフォーカスがある && ( this.n目標のスクロールカウンタ == 0 ) )\r
-                               this.ct三角矢印アニメ.t進行Loop();\r
-                       //-----------------\r
-                       #endregion\r
-\r
-\r
-                       // 描画\r
-\r
-                       this.ptパネルの基本座標[ 4 ].X = this.b項目リスト側にフォーカスがある ? 276 : 301;               // メニューにフォーカスがあるなら、項目リストの中央は頭を出さない。\r
-\r
-                       #region [ 計11個の項目パネルを描画する。]\r
-                       //-----------------\r
-                       int nItem = this.n現在の選択項目;\r
-                       for( int i = 0; i < 4; i++ )\r
-                               nItem = this.t前の項目( nItem );\r
-\r
-                       for( int n行番号 = -4; n行番号 < 6; n行番号++ )                // n行番号 == 0 がフォーカスされている項目パネル。\r
-                       {\r
-                               #region [ 今まさに画面外に飛びだそうとしている項目パネルは描画しない。]\r
-                               //-----------------\r
-                               if( ( ( n行番号 == -4 ) && ( this.n現在のスクロールカウンタ > 0 ) ) ||           // 上に飛び出そうとしている\r
-                                       ( ( n行番号 == +5 ) && ( this.n現在のスクロールカウンタ < 0 ) ) )                // 下に飛び出そうとしている\r
+                               #region [ ▲印アニメの進行 ]\r
+                               if (this.b項目リスト側にフォーカスがある && (this.n目標のスクロールカウンタ == 0))\r
                                {\r
-                                       nItem = this.t次の項目( nItem );\r
-                                       continue;\r
+                                       this.ct三角矢印アニメ.t進行Loop();\r
                                }\r
-                               //-----------------\r
                                #endregion\r
 \r
-                               int n移動元の行の基本位置 = n行番号 + 4;\r
-                               int n移動先の行の基本位置 = ( this.n現在のスクロールカウンタ <= 0 ) ? ( ( n移動元の行の基本位置 + 1 ) % 10 ) : ( ( ( n移動元の行の基本位置 - 1 ) + 10 ) % 10 );\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
-                               #region [ 現在の行の項目パネル枠を描画。]\r
-                               //-----------------\r
-                               switch ( this.list項目リスト[ nItem ].eパネル種別 )\r
-                               {\r
-                                       case CItemBase.Eパネル種別.通常:\r
-                                               if ( this.tx通常項目行パネル != null )\r
-                                                       this.tx通常項目行パネル.t2D描画( CDTXMania.app.Device, x * Scale.X, y * Scale.Y );\r
-                                               break;\r
-\r
-                                       case CItemBase.Eパネル種別.その他:\r
-                                               if ( this.txその他項目行パネル != null )\r
-                                                       this.txその他項目行パネル.t2D描画( CDTXMania.app.Device, x * Scale.X, y * Scale.Y );\r
-                                               break;\r
-                               }\r
-                               //-----------------\r
-                               #endregion\r
-                               #region [ 現在の行の項目名を描画。]\r
+                               // 描画\r
+\r
+                               // メニューにフォーカスがあるなら、項目リストの中央は頭を出さない。\r
+                               this.ptパネルの基本座標[4].X = this.b項目リスト側にフォーカスがある ? 276 : 301;\r
+\r
+                               #region [ 計11個の項目パネルを描画する。]\r
                                //-----------------\r
-                               if ( listMenu[ nItem ].txMenuItemRight != null )        // 自前のキャッシュに含まれているようなら、再レンダリングせずキャッシュを使用\r
-                               {\r
-                                       listMenu[ nItem ].txMenuItemRight.t2D描画( CDTXMania.app.Device, ( x + 0x12 ) * Scale.X, ( y + 12 ) * Scale.Y - 20 );\r
-                               }\r
-                               else\r
+                               int nItem = this.n現在の選択項目;\r
+                               for (int i = 0; i < 4; i++)\r
                                {\r
-                                       Bitmap bmpItem = prvFont.DrawPrivateFont( this.list項目リスト[ nItem ].str項目名, Color.White, Color.Black );\r
-                                       listMenu[ nItem ].txMenuItemRight = CDTXMania.tテクスチャの生成( bmpItem );\r
-                                       //                                      ctItem.t2D描画( CDTXMania.app.Device, ( x + 0x12 ) * Scale.X, ( y + 12 ) * Scale.Y - 20 );\r
-                                       //                                      CDTXMania.tテクスチャの解放( ref ctItem );\r
-                                       CDTXMania.t安全にDisposeする( ref bmpItem );\r
+                                       nItem = this.t前の項目(nItem);\r
                                }\r
-                               //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 0x12, y + 12, this.list項目リスト[ nItem ].str項目名 );\r
-                               //-----------------\r
-                               #endregion\r
-                               #region [ 現在の行の項目の要素を描画。]\r
-                               //-----------------\r
-                               string strParam = null;\r
-                               bool b強調 = false;\r
-                               switch ( this.list項目リスト[ nItem ].e種別 )\r
-                               {\r
-                                       case CItemBase.E種別.ONorOFFトグル:\r
-                                               #region [ *** ]\r
-                                               //-----------------\r
-                                               //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, ( (CItemToggle) this.list項目リスト[ nItem ] ).bON ? "ON" : "OFF" );\r
-                                               strParam = ( (CItemToggle) this.list項目リスト[ nItem ] ).bON ? "ON" : "OFF";\r
-                                               break;\r
-                                       //-----------------\r
-                                               #endregion\r
 \r
-                                       case CItemBase.E種別.ONorOFFor不定スリーステート:\r
-                                               #region [ *** ]\r
-                                               //-----------------\r
-                                               switch ( ( (CItemThreeState) this.list項目リスト[ nItem ] ).e現在の状態 )\r
-                                               {\r
-                                                       case CItemThreeState.E状態.ON:\r
-                                                               strParam = "ON";\r
-                                                               break;\r
+                               for (int n行番号 = -4; n行番号 < 6; n行番号++)\r
+                               {\r
+                                       // n行番号 == 0 がフォーカスされている項目パネル。\r
+                                       #region [ 今まさに画面外に飛びだそうとしている項目パネルは描画しない。]\r
+                                       if (((n行番号 == -4) && (this.n現在のスクロールカウンタ > 0)) ||\r
+                                                       ((n行番号 == +5) && (this.n現在のスクロールカウンタ < 0)))\r
+                                       {\r
+                                               nItem = this.t次の項目(nItem);\r
+                                               continue;\r
+                                       }\r
+                                       #endregion\r
 \r
-                                                       case CItemThreeState.E状態.不定:\r
-                                                               strParam = "- -";\r
-                                                               break;\r
+                                       int n移動元の行の基本位置 = n行番号 + 4;\r
+                                       int n移動先の行の基本位置 = (this.n現在のスクロールカウンタ <= 0) ? ((n移動元の行の基本位置 + 1) % 10) : (((n移動元の行の基本位置 - 1) + 10) % 10);\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
-                                                       default:\r
-                                                               strParam = "OFF";\r
-                                                               break;\r
+                                       #region [ 現在の行の項目パネル枠を描画。]\r
+                                       if (this.list項目リスト[nItem].type == EOptionType.Normal)\r
+                                       {\r
+                                               if (this.tx通常項目行パネル != null)\r
+                                               {\r
+                                                       this.tx通常項目行パネル.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y);\r
                                                }\r
-                                               //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, "ON" );\r
-                                               break;\r
-                                       //-----------------\r
-                                               #endregion\r
+                                       }\r
+                                       else if (this.list項目リスト[nItem].type == EOptionType.Other)\r
+                                       {\r
+                                               if (this.txその他項目行パネル != null)\r
+                                               {\r
+                                                       this.txその他項目行パネル.t2D描画(CDTXMania.Instance.Device, x * Scale.X, y * Scale.Y);\r
+                                               }\r
+                                       }\r
+                                       #endregion\r
 \r
-                                       case CItemBase.E種別.整数:          // #24789 2011.4.8 yyagi: add PlaySpeed supports (copied them from OPTION)\r
-                                               #region [ *** ]\r
-                                               //-----------------\r
-                                               if ( this.list項目リスト[ nItem ] == this.iCommonPlaySpeed )\r
+                                       #region [ 現在の行の項目名を描画。]\r
+                                       if (listMenu[nItem].txMenuItemRight != null)\r
+                                       {\r
+                                               // 自前のキャッシュに含まれているようなら、再レンダリングせずキャッシュを使用\r
+                                               listMenu[nItem].txMenuItemRight.t2D描画(CDTXMania.Instance.Device, (x + 0x12) * Scale.X, (y + 12) * Scale.Y - 20);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               using (Bitmap bmpItem = prvFont.DrawPrivateFont(this.list項目リスト[nItem].label, Color.White, Color.Black))\r
                                                {\r
-                                                       double d = ( (double) ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値 ) / 20.0;\r
-                                                       //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, d.ToString( "0.000" ), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );\r
-                                                       strParam = d.ToString( "0.000" );\r
+                                                       TextureFactory.tテクスチャの解放(ref listMenu[nItem].txMenuItemRight);\r
+                                                       listMenu[nItem].txMenuItemRight = TextureFactory.tテクスチャの生成(bmpItem);\r
                                                }\r
-                                               else if ( this.list項目リスト[ nItem ] == this.iDrumsScrollSpeed || this.list項目リスト[ nItem ] == this.iGuitarScrollSpeed || this.list項目リスト[ nItem ] == this.iBassScrollSpeed )\r
+                                       }\r
+                                       #endregion\r
+\r
+                                       #region [ 現在の行の項目の要素を描画。]\r
+                                       string strParam = this.list項目リスト[nItem].ToString();\r
+                                       //bool b強調 = false;\r
+\r
+                                       #region [ 最初にSkinの選択肢にきたとき(Enterを押す前)に限り、サンプル生成が発生する。 #28195 2012.5.2 yyagi ]\r
+                                       if (this.list項目リスト[this.n現在の選択項目] == skins)\r
+                                       {\r
+                                               if (txSkinSample == null)\r
                                                {\r
-                                                       float f = ( ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値 + 1 ) * 0.5f;\r
-                                                       //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, f.ToString( "x0.0" ), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );\r
-                                                       strParam = f.ToString( "x0.0" );\r
+                                                       tGenerateSkinSample();\r
                                                }\r
-                                               else\r
+                                               if (txSkinSample != null)\r
                                                {\r
-                                                       //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値.ToString(), ( n行番号 == 0 ) && this.b要素値にフォーカス中 );\r
-                                                       strParam = ( (CItemInteger) this.list項目リスト[ nItem ] ).n現在の値.ToString();\r
+                                                       txSkinSample.t2D描画(CDTXMania.Instance.Device, 56 * Scale.X, 300 * Scale.Y);\r
                                                }\r
-                                               b強調 = ( n行番号 == 0 ) && this.b要素値にフォーカス中;\r
-                                               break;\r
-                                       //-----------------\r
-                                               #endregion\r
-\r
-                                       case CItemBase.E種別.リスト:       // #28195 2012.5.2 yyagi: add Skin supports\r
-                                               #region [ *** ]\r
-                                               //-----------------\r
+                                       }\r
+                                       #endregion\r
+\r
+                                       #endregion\r
+                                       int nIndex = this.list項目リスト[nItem].Index;\r
+                                       bool bColored = list項目リスト[nItem] is COptionInteger && n行番号 == 0 && b要素値にフォーカス中;\r
+                                       if (listMenu[nItem].nParam != nIndex ||\r
+                                               (listMenu[nItem].txParam == null) ||\r
+                                               (bColored && listMenu[nItem].txParamColored == null))\r
+                                       {\r
+                                               listMenu[nItem].nParam = nIndex;\r
+                                               listMenu[nItem].strParam = this.list項目リスト[nItem].ToString();\r
+                                               using (Bitmap bmpStr = prvFont.DrawPrivateFont(strParam, Color.White, Color.Black))\r
                                                {\r
-                                                       CItemList list = (CItemList) this.list項目リスト[ nItem ];\r
-                                                       //CDTXMania.stageコンフィグ.actFont.t文字列描画( x + 210, y + 12, list.list項目値[ list.n現在選択されている項目番号 ] );\r
-                                                       strParam = list.list項目値[ list.n現在選択されている項目番号 ];\r
-\r
-                                                       #region [ 必要な場合に、Skinのサンプルを生成・描画する。#28195 2012.5.2 yyagi ]\r
-                                                       if ( this.list項目リスト[ this.n現在の選択項目 ] == this.iSystemSkinSubfolder )\r
+                                                       TextureFactory.tテクスチャの解放(ref listMenu[nItem].txParam);\r
+                                                       listMenu[nItem].txParam = TextureFactory.tテクスチャの生成(bmpStr, false);\r
+                                                       if (bColored)\r
                                                        {\r
-                                                               tGenerateSkinSample();          // 最初にSkinの選択肢にきたとき(Enterを押す前)に限り、サンプル生成が発生する。\r
-                                                               if ( txSkinSample1 != null )\r
+                                                               using (Bitmap bmpStrColored = prvFont.DrawPrivateFont(strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed))\r
                                                                {\r
-                                                                       txSkinSample1.t2D描画( CDTXMania.app.Device, 56 * Scale.X, 300 * Scale.Y );\r
+                                                                       TextureFactory.tテクスチャの解放(ref listMenu[nItem].txParamColored);\r
+                                                                       listMenu[nItem].txParamColored = TextureFactory.tテクスチャの生成(bmpStrColored, false);\r
                                                                }\r
                                                        }\r
-                                                       #endregion\r
-                                                       break;\r
                                                }\r
-                                       //-----------------\r
-                                               #endregion\r
-                               }\r
-                               if ( b強調 )\r
-                               {\r
-                                       Bitmap bmpStr = b強調 ?\r
-                                               prvFont.DrawPrivateFont( strParam, Color.White, Color.Black, Color.Yellow, Color.OrangeRed ) :\r
-                                               prvFont.DrawPrivateFont( strParam, Color.White, Color.Black );\r
-                                       CTexture txStr = CDTXMania.tテクスチャの生成( bmpStr, false );\r
-                                       txStr.t2D描画( CDTXMania.app.Device, ( x + 210 ) * Scale.X, ( y + 12 ) * Scale.Y - 20 );\r
-                                       CDTXMania.tテクスチャの解放( ref txStr );\r
-                                       CDTXMania.t安全にDisposeする( ref bmpStr );\r
-                               }\r
-                               else\r
-                               {\r
-                                       int nIndex = this.list項目リスト[ nItem ].GetIndex();\r
-                                       if ( listMenu[ nItem ].nParam != nIndex || listMenu[ nItem ].txParam == null )\r
-                                       {\r
-                                               stMenuItemRight stm = listMenu[ nItem ];\r
-                                               stm.nParam = nIndex;\r
-                                               object o = this.list項目リスト[ nItem ].obj現在値();\r
-                                               stm.strParam = ( o == null ) ? "" : o.ToString();\r
-\r
-                                               Bitmap bmpStr =\r
-                                                       prvFont.DrawPrivateFont( strParam, Color.White, Color.Black );\r
-                                               stm.txParam = CDTXMania.tテクスチャの生成( bmpStr, false );\r
-                                               CDTXMania.t安全にDisposeする( ref bmpStr );\r
+                                       }\r
 \r
-                                               listMenu[ nItem ] = stm;\r
+                                       if (bColored)\r
+                                       {\r
+                                               listMenu[nItem].txParamColored.t2D描画(CDTXMania.Instance.Device, (x + 210) * Scale.X, (y + 12) * Scale.Y - 20);\r
                                        }\r
-                                       listMenu[ nItem ].txParam.t2D描画( CDTXMania.app.Device, ( x + 210 ) * Scale.X, ( y + 12 ) * Scale.Y - 20 );\r
+                                       else\r
+                                       {\r
+                                               listMenu[nItem].txParam.t2D描画(CDTXMania.Instance.Device, (x + 210) * Scale.X, (y + 12) * Scale.Y - 20);\r
+                                       }\r
+                                       nItem = this.t次の項目(nItem);\r
                                }\r
-                               //-----------------\r
                                #endregion\r
-                               \r
-                               nItem = this.t次の項目( nItem );\r
-                       }\r
-                       //-----------------\r
-                       #endregion\r
-                       \r
-                       #region [ 項目リストにフォーカスがあって、かつスクロールが停止しているなら、パネルの上下に▲印を描画する。]\r
-                       //-----------------\r
-                       if( this.b項目リスト側にフォーカスがある && ( this.n目標のスクロールカウンタ == 0 ) )\r
-                       {\r
-                               int x;\r
-                               int y_upper;\r
-                               int y_lower;\r
-                       \r
-                               // 位置決定。\r
 \r
-                               if( this.b要素値にフォーカス中 )\r
-                               {\r
-                                       x = 528;        // 要素値の上下あたり。\r
-                                       y_upper = 198 - this.ct三角矢印アニメ.n現在の値;\r
-                                       y_lower = 242 + this.ct三角矢印アニメ.n現在の値;\r
-                               }\r
-                               else\r
+                               #region [ 項目リストにフォーカスがあって、かつスクロールが停止しているなら、パネルの上下に▲印を描画する。]\r
+                               if (this.b項目リスト側にフォーカスがある && (this.n目標のスクロールカウンタ == 0))\r
                                {\r
-                                       x = 276;        // 項目名の上下あたり。\r
-                                       y_upper = 186 - this.ct三角矢印アニメ.n現在の値;\r
-                                       y_lower = 254 + this.ct三角矢印アニメ.n現在の値;\r
-                               }\r
+                                       int x;\r
+                                       int y_upper;\r
+                                       int y_lower;\r
 \r
-                               // 描画\r
+                                       // 位置決定\r
 \r
-                               if ( this.tx三角矢印 != null )\r
-                               {\r
-                                       this.tx三角矢印.t2D描画( CDTXMania.app.Device, x * Scale.X, y_upper * Scale.Y, new Rectangle( 0, 0, (int) ( 32 * Scale.X ), (int) ( 16 * Scale.Y ) ) );\r
-                                       this.tx三角矢印.t2D描画( CDTXMania.app.Device, x * Scale.X, y_lower * Scale.Y, new Rectangle( 0, (int) ( 16 * Scale.Y ), (int) ( 32 * Scale.X ), (int) ( 16 * Scale.Y ) ) );\r
+                                       if (this.b要素値にフォーカス中)\r
+                                       {\r
+                                               // 要素値の上下あたり。\r
+                                               x = 528;\r
+                                               y_upper = 198 - this.ct三角矢印アニメ.n現在の値;\r
+                                               y_lower = 242 + this.ct三角矢印アニメ.n現在の値;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               // 項目名の上下あたり。\r
+                                               x = 276;\r
+                                               y_upper = 186 - this.ct三角矢印アニメ.n現在の値;\r
+                                               y_lower = 254 + this.ct三角矢印アニメ.n現在の値;\r
+                                       }\r
+\r
+                                       // 描画。\r
+\r
+                                       if (this.tx三角矢印 != null)\r
+                                       {\r
+                                               this.tx三角矢印.t2D描画(CDTXMania.Instance.Device, x * Scale.X,\r
+                                                       y_upper * Scale.Y,\r
+                                                       new Rectangle(0, 0, (int)(32 * Scale.X), (int)(16 * Scale.Y)));\r
+                                               this.tx三角矢印.t2D描画(CDTXMania.Instance.Device, x * Scale.X,\r
+                                                       y_lower * Scale.Y,\r
+                                                       new Rectangle(0, (int)(16 * Scale.Y), (int)(32 * Scale.X), (int)(16 * Scale.Y)));\r
+                                       }\r
                                }\r
+                               #endregion\r
                        }\r
-                       //-----------------\r
-                       #endregion\r
                        return 0;\r
                }\r
-       \r
 \r
-               // その他\r
 \r
-               #region [ private ]\r
-               //-----------------\r
-               private enum Eメニュー種別\r
+               // その他\r
+               internal enum Eメニュー種別\r
                {\r
                        System,\r
                        Drums,\r
                        Guitar,\r
                        Bass,\r
-                       KeyAssignSystem,                // #24609 2011.4.12 yyagi: 画面キャプチャキーのアサイン\r
+                       // #24609 2011.4.12 yyagi: 画面キャプチャキーのアサイン\r
+                       KeyAssignSystem,\r
                        KeyAssignDrums,\r
                        KeyAssignGuitar,\r
                        KeyAssignBass,\r
+                       DisplaySystem,\r
+                       DisplayDrums,\r
+                       DisplayGuitar,\r
+                       DisplayBass,\r
+                       EDrumsSettings,\r
+                       HitRangeSettings,\r
+                       SoundSettings,\r
                        Unknown\r
-\r
                }\r
 \r
-               private bool b項目リスト側にフォーカスがある;\r
-               private bool b要素値にフォーカス中;\r
-               private CCounter ct三角矢印アニメ;\r
-               private Eメニュー種別 eメニュー種別;\r
-               #region [ キーコンフィグ ]\r
-               private CItemBase iKeyAssignSystemCapture;                      // #24609\r
-               private CItemBase iKeyAssignSystemReturnToMenu;         // #24609\r
-               private CItemBase iKeyAssignBassB;\r
-               private CItemBase iKeyAssignBassCancel;\r
-               private CItemBase iKeyAssignBassDecide;\r
-               private CItemBase iKeyAssignBassG;\r
-               private CItemBase iKeyAssignBassPick;\r
-               private CItemBase iKeyAssignBassR;\r
-               private CItemBase iKeyAssignBassReturnToMenu;\r
-               private CItemBase iKeyAssignBassWail;\r
-               private CItemBase iKeyAssignDrumsBD;\r
-               private CItemBase iKeyAssignDrumsCY;\r
-               private CItemBase iKeyAssignDrumsFT;\r
-               private CItemBase iKeyAssignDrumsHHC;\r
-               private CItemBase iKeyAssignDrumsHHO;\r
-               private CItemBase iKeyAssignDrumsHT;\r
-               private CItemBase iKeyAssignDrumsLC;\r
-               private CItemBase iKeyAssignDrumsLT;\r
-               private CItemBase iKeyAssignDrumsRD;\r
-               private CItemBase iKeyAssignDrumsReturnToMenu;\r
-               private CItemBase iKeyAssignDrumsSD;\r
-               private CItemBase iKeyAssignDrumsHP;    // #27029 2012.1.4 from\r
-               private CItemBase iKeyAssignGuitarB;\r
-               private CItemBase iKeyAssignGuitarCancel;\r
-               private CItemBase iKeyAssignGuitarDecide;\r
-               private CItemBase iKeyAssignGuitarG;\r
-               private CItemBase iKeyAssignGuitarPick;\r
-               private CItemBase iKeyAssignGuitarR;\r
-               private CItemBase iKeyAssignGuitarReturnToMenu;\r
-               private CItemBase iKeyAssignGuitarWail;\r
-               #endregion\r
-               private CItemToggle iLogOutputLog;\r
-               private CItemToggle iSystemAdjustWaves;\r
-               private CItemToggle iSystemAudienceSound;\r
-               private CItemInteger iSystemAutoChipVolume;\r
-               private CItemToggle iSystemAVI;\r
-               private CItemToggle iSystemBGA;\r
-//             private CItemToggle iSystemGraph; #24074 2011.01.23 comment-out ikanick オプション(Drums)へ移行\r
-               private CItemInteger iSystemBGAlpha;\r
-               private CItemToggle iSystemBGMSound;\r
-               private CItemInteger iSystemChipVolume;\r
-               private CItemList iSystemCYGroup;\r
-               private CItemToggle iSystemCymbalFree;\r
-               private CItemList iSystemDamageLevel;\r
-               private CItemToggle iSystemDebugInfo;\r
-//             private CItemToggle iSystemDrums;\r
-               private CItemToggle iSystemFillIn;\r
-               private CItemList iSystemFTGroup;\r
-               private CItemToggle iSystemFullscreen;\r
-//             private CItemToggle iSystemGuitar;\r
-               private CItemList iSystemHHGroup;\r
-               private CItemList iSystemBDGroup;               // #27029 2012.1.4 from\r
-               private CItemToggle iSystemHitSound;\r
-               private CItemList iSystemHitSoundPriorityCY;\r
-               private CItemList iSystemHitSoundPriorityFT;\r
-               private CItemList iSystemHitSoundPriorityHH;\r
-               private CItemInteger iSystemMinComboBass;\r
-               private CItemInteger iSystemMinComboDrums;\r
-               private CItemInteger iSystemMinComboGuitar;\r
-               private CItemInteger iSystemPreviewImageWait;\r
-               private CItemInteger iSystemPreviewSoundWait;\r
-               private CItemToggle iSystemRandomFromSubBox;\r
-               private CItemBase iSystemReturnToMenu;\r
-               private CItemToggle iSystemSaveScore;\r
-               private CItemToggle iSystemSoundMonitorBass;\r
-               private CItemToggle iSystemSoundMonitorDrums;\r
-               private CItemToggle iSystemSoundMonitorGuitar;\r
-               private CItemToggle iSystemStageFailed;\r
-               private CItemToggle iSystemStoicMode;\r
-               private CItemToggle iSystemVSyncWait;\r
-               private CItemList       iSystemShowLag;                                 // #25370 2011.6.3 yyagi\r
-               private CItemToggle iSystemAutoResultCapture;           // #25399 2011.6.9 yyagi\r
-               private CItemToggle iSystemBufferedInput;\r
-               private CItemInteger iSystemRisky;                                      // #23559 2011.7.27 yyagi\r
-               private CItemList iSystemSoundType;                                     // #24820 2013.1.3 yyagi\r
-//             private CItemInteger iSystemWASAPIBufferSizeMs;         // #24820 2013.1.15 yyagi\r
-//             private CItemInteger iSystemASIOBufferSizeMs;           // #24820 2013.1.3 yyagi\r
-               private CItemList       iSystemASIODevice;                              // #24820 2013.1.17 yyagi\r
-\r
-               private int iSystemSoundType_initial;\r
-//             private int iSystemWASAPIBufferSizeMs_initial;\r
-//             private int iSystemASIOBufferSizeMs_initial;\r
-               private int iSystemASIODevice_initial;\r
-               private CItemToggle iSystemSoundTimerType;                      // #33689 2014.6.17 yyagi\r
-               private int iSystemSoundTimerType_initial;                      // #33689 2014.6.17 yyagi\r
-\r
-               private CItemToggle iSystemTimeStretch;                         // #23664 2013.2.24 yyagi\r
-               private CItemList iSystemJudgePosGuitar;                        // #33891 2014.6.26 yyagi\r
-               private CItemList iSystemJudgePosBass;                          // #33891 2014.6.26 yyagi\r
-\r
-               //private CItemList iDrumsJudgeDispPriority;    //\r
-               //private CItemList iGuitarJudgeDispPriority;   //\r
-               //private CItemList iBassJudgeDispPriority;             //\r
-               private CItemList iSystemJudgeDispPriority;\r
-\r
-               private List<CItemBase> list項目リスト;\r
-               private long nスクロール用タイマ値;\r
-               private int n現在のスクロールカウンタ;\r
-               private int n目標のスクロールカウンタ;\r
-               private Point[] ptパネルの基本座標 = new Point[] { new Point( 0x12d, 3 ), new Point( 0x12d, 0x35 ), new Point( 0x12d, 0x67 ), new Point( 0x12d, 0x99 ), new Point( 0x114, 0xcb ), new Point( 0x12d, 0xfd ), new Point( 0x12d, 0x12f ), new Point( 0x12d, 0x161 ), new Point( 0x12d, 0x193 ), new Point( 0x12d, 0x1c5 ) };\r
-               private CTextureAf txその他項目行パネル;\r
-               private CTexture tx三角矢印;\r
-               private CTextureAf tx通常項目行パネル;\r
-\r
-               private CPrivateFastFont prvFont;\r
-               //private List<string> list項目リスト_str最終描画名;\r
-               private struct stMenuItemRight\r
-               {\r
-                       //      public string strMenuItem;\r
-                       public CTexture txMenuItemRight;\r
-                       public int nParam;\r
-                       public string strParam;\r
-                       public CTexture txParam;\r
-               }\r
-               private stMenuItemRight[] listMenu;\r
-\r
-               private CTexture txSkinSample1;                         // #28195 2012.5.2 yyagi\r
-               private string[] skinSubFolders;                        //\r
-               private string[] skinNames;                                     //\r
-               private string skinSubFolder_org;                       //\r
-               private int nSkinSampleIndex;                           //\r
-               private int nSkinIndex;                                         //\r
-\r
-               private CItemBase iDrumsGoToKeyAssign;\r
-               private CItemBase iGuitarGoToKeyAssign;\r
-               private CItemBase iBassGoToKeyAssign;\r
-               private CItemBase iSystemGoToKeyAssign;         // #24609\r
-\r
-               private CItemList iSystemGRmode;\r
-\r
-               //private CItemToggle iBassAutoPlay;\r
-               private CItemThreeState iBassAutoPlayAll;                       // #23886 2012.5.8 yyagi\r
-               private CItemToggle iBassR;                                                     //\r
-               private CItemToggle iBassG;                                                     //\r
-               private CItemToggle iBassB;                                                     //\r
-               private CItemToggle iBassPick;                                          //\r
-               private CItemToggle iBassW;                                                     //\r
-       \r
-               //private CItemToggle iBassHidden;\r
-               private CItemToggle iBassLeft;\r
-               private CItemToggle iBassLight;\r
-               private CItemList iBassPosition;\r
-               private CItemList iBassRandom;\r
-               private CItemBase iBassReturnToMenu;\r
-               private CItemToggle iBassReverse;\r
-               private CItemInteger iBassScrollSpeed;\r
-               //private CItemToggle iBassSudden;\r
-               private CItemList iCommonDark;\r
-               private CItemInteger iCommonPlaySpeed;\r
-//             private CItemBase iCommonReturnToMenu;\r
-\r
-               private CItemThreeState iDrumsAutoPlayAll;\r
-               private CItemToggle iDrumsBass;\r
-               private CItemList iDrumsComboPosition;\r
-               private CItemToggle iDrumsCymbalRide;\r
-               private CItemToggle iDrumsFloorTom;\r
-               //private CItemToggle iDrumsHidden;\r
-               private CItemToggle iDrumsHighTom;\r
-               private CItemToggle iDrumsHiHat;\r
-               private CItemToggle iDrumsLeftCymbal;\r
-               private CItemToggle iDrumsLowTom;\r
-               private CItemList iDrumsPosition;\r
-               private CItemBase iDrumsReturnToMenu;\r
-               private CItemToggle iDrumsReverse;\r
-               private CItemInteger iDrumsScrollSpeed;\r
-               private CItemToggle iDrumsSnare;\r
-               //private CItemToggle iDrumsSudden;\r
-               private CItemToggle iDrumsTight;\r
-               private CItemToggle iDrumsGraph;        // #24074 2011.01.23 add ikanick\r
-\r
-               //private CItemToggle iGuitarAutoPlay;\r
-               private CItemThreeState iGuitarAutoPlayAll;                     // #23886 2012.5.8 yyagi\r
-               private CItemToggle iGuitarR;                                           //\r
-               private CItemToggle iGuitarG;                                           //\r
-               private CItemToggle iGuitarB;                                           //\r
-               private CItemToggle iGuitarPick;                                        //\r
-               private CItemToggle iGuitarW;                                           //\r
-\r
-               //private CItemToggle iGuitarHidden;\r
-               private CItemToggle iGuitarLeft;\r
-               private CItemToggle iGuitarLight;\r
-               private CItemList iGuitarPosition;\r
-               private CItemList iGuitarRandom;\r
-               private CItemBase iGuitarReturnToMenu;\r
-               private CItemToggle iGuitarReverse;\r
-               private CItemInteger iGuitarScrollSpeed;\r
-               //private CItemToggle iGuitarSudden;\r
-               private CItemInteger iDrumsInputAdjustTimeMs;           // #23580 2011.1.3 yyagi\r
-               private CItemInteger iGuitarInputAdjustTimeMs;          //\r
-               private CItemInteger iBassInputAdjustTimeMs;            //\r
-               private CItemList iSystemSkinSubfolder;                         // #28195 2012.5.2 yyagi\r
-               private CItemToggle iSystemUseBoxDefSkin;                       // #28195 2012.5.6 yyagi\r
-               private CItemList iDrumsSudHid;                                         // #32072 2013.9.20 yyagi\r
-               private CItemList iGuitarSudHid;                                        // #32072 2013.9.20 yyagi\r
-               private CItemList iBassSudHid;                                          // #32072 2013.9.20 yyagi\r
-               private CItemBase iSystemReloadDTX;                                     // #32081 2013.10.21 yyagi\r
-               //private CItemInteger iSystemMasterVolume;                     // #33700 2014.4.26 yyagi\r
-\r
-               private int t前の項目( int nItem )\r
+               private int t前の項目(int nItem)\r
                {\r
-                       if( --nItem < 0 )\r
+                       if (--nItem < 0)\r
                        {\r
                                nItem = this.list項目リスト.Count - 1;\r
                        }\r
                        return nItem;\r
                }\r
-               private int t次の項目( int nItem )\r
+\r
+               private int t次の項目(int nItem)\r
                {\r
-                       if( ++nItem >= this.list項目リスト.Count )\r
+                       if (++nItem >= this.list項目リスト.Count)\r
                        {\r
                                nItem = 0;\r
                        }\r
                        return nItem;\r
                }\r
-               private void t全部のドラムパッドのAutoを切り替える( bool bAutoON )\r
-               {\r
-                       this.iDrumsLeftCymbal.bON = this.iDrumsHiHat.bON = this.iDrumsSnare.bON = this.iDrumsBass.bON = this.iDrumsHighTom.bON = this.iDrumsLowTom.bON = this.iDrumsFloorTom.bON = this.iDrumsCymbalRide.bON = bAutoON;\r
-               }\r
-               private void t全部のギターパッドのAutoを切り替える( bool bAutoON )\r
-               {\r
-                       this.iGuitarR.bON = this.iGuitarG.bON = this.iGuitarB.bON = this.iGuitarPick.bON = this.iGuitarW.bON = bAutoON;\r
-               }\r
-               private void t全部のベースパッドのAutoを切り替える( bool bAutoON )\r
-               {\r
-                       this.iBassR.bON = this.iBassG.bON = this.iBassB.bON = this.iBassPick.bON = this.iBassW.bON = bAutoON;\r
-               }\r
-               private void tConfigIniへ記録する()\r
-               {\r
-                       switch( this.eメニュー種別 )\r
-                       {\r
-                               case Eメニュー種別.System:\r
-                                       this.tConfigIniへ記録する・System();\r
-                                       this.tConfigIniへ記録する・KeyAssignSystem();\r
-                                       return;\r
-\r
-                               case Eメニュー種別.Drums:\r
-                                       this.tConfigIniへ記録する・Drums();\r
-                                       this.tConfigIniへ記録する・KeyAssignDrums();\r
-                                       return;\r
-\r
-                               case Eメニュー種別.Guitar:\r
-                                       this.tConfigIniへ記録する・Guitar();\r
-                                       this.tConfigIniへ記録する・KeyAssignGuitar();\r
-                                       return;\r
-\r
-                               case Eメニュー種別.Bass:\r
-                                       this.tConfigIniへ記録する・Bass();\r
-                                       this.tConfigIniへ記録する・KeyAssignBass();\r
-                                       return;\r
-                       }\r
-               }\r
-               private void tConfigIniへ記録する・KeyAssignBass()\r
-               {\r
-               }\r
-               private void tConfigIniへ記録する・KeyAssignDrums()\r
-               {\r
-               }\r
-               private void tConfigIniへ記録する・KeyAssignGuitar()\r
-               {\r
-               }\r
-               private void tConfigIniへ記録する・KeyAssignSystem()\r
-               {\r
-               }\r
-               private void tConfigIniへ記録する・System()\r
-               {\r
-                       CDTXMania.ConfigIni.eDark = (Eダークモード) this.iCommonDark.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.n演奏速度 = this.iCommonPlaySpeed.n現在の値;\r
-\r
-                       CDTXMania.ConfigIni.bGuitar有効 = ( ( ( this.iSystemGRmode.n現在選択されている項目番号 + 1 ) / 2 ) == 1 );\r
-                               //this.iSystemGuitar.bON;\r
-                       CDTXMania.ConfigIni.bDrums有効 = ( ( ( this.iSystemGRmode.n現在選択されている項目番号 + 1 ) % 2 ) == 1 );\r
-                               //this.iSystemDrums.bON;\r
-\r
-                       CDTXMania.ConfigIni.b全画面モード = this.iSystemFullscreen.bON;\r
-                       CDTXMania.ConfigIni.bSTAGEFAILED有効 = this.iSystemStageFailed.bON;\r
-                       CDTXMania.ConfigIni.bランダムセレクトで子BOXを検索対象とする = this.iSystemRandomFromSubBox.bON;\r
-\r
-                       CDTXMania.ConfigIni.bWave再生位置自動調整機能有効 = this.iSystemAdjustWaves.bON;\r
-                       CDTXMania.ConfigIni.b垂直帰線待ちを行う = this.iSystemVSyncWait.bON;\r
-                       CDTXMania.ConfigIni.bバッファ入力を行う = this.iSystemBufferedInput.bON;\r
-                       CDTXMania.ConfigIni.bAVI有効 = this.iSystemAVI.bON;\r
-                       CDTXMania.ConfigIni.bBGA有効 = this.iSystemBGA.bON;\r
-//                     CDTXMania.ConfigIni.bGraph有効 = this.iSystemGraph.bON;#24074 2011.01.23 comment-out ikanick オプション(Drums)へ移行\r
-                       CDTXMania.ConfigIni.n曲が選択されてからプレビュー音が鳴るまでのウェイトms = this.iSystemPreviewSoundWait.n現在の値;\r
-                       CDTXMania.ConfigIni.n曲が選択されてからプレビュー画像が表示開始されるまでのウェイトms = this.iSystemPreviewImageWait.n現在の値;\r
-                       CDTXMania.ConfigIni.b演奏情報を表示する = this.iSystemDebugInfo.bON;\r
-                       CDTXMania.ConfigIni.n背景の透過度 = this.iSystemBGAlpha.n現在の値;\r
-                       CDTXMania.ConfigIni.bBGM音を発声する = this.iSystemBGMSound.bON;\r
-                       CDTXMania.ConfigIni.b歓声を発声する = this.iSystemAudienceSound.bON;\r
-                       CDTXMania.ConfigIni.eダメージレベル = (Eダメージレベル) this.iSystemDamageLevel.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.bScoreIniを出力する = this.iSystemSaveScore.bON;\r
-\r
-                       CDTXMania.ConfigIni.bログ出力 = this.iLogOutputLog.bON;\r
-                       CDTXMania.ConfigIni.n手動再生音量 = this.iSystemChipVolume.n現在の値;\r
-                       CDTXMania.ConfigIni.n自動再生音量 = this.iSystemAutoChipVolume.n現在の値;\r
-                       CDTXMania.ConfigIni.bストイックモード = this.iSystemStoicMode.bON;\r
-\r
-                       CDTXMania.ConfigIni.nShowLagType = this.iSystemShowLag.n現在選択されている項目番号;                                // #25370 2011.6.3 yyagi\r
-                       CDTXMania.ConfigIni.bIsAutoResultCapture = this.iSystemAutoResultCapture.bON;                                   // #25399 2011.6.9 yyagi\r
-\r
-                       CDTXMania.ConfigIni.nRisky = this.iSystemRisky.n現在の値;                                                                           // #23559 2011.7.27 yyagi\r
-\r
-                       CDTXMania.ConfigIni.strSystemSkinSubfolderFullName = skinSubFolders[ nSkinIndex ];                              // #28195 2012.5.2 yyagi\r
-                       CDTXMania.Skin.SetCurrentSkinSubfolderFullName( CDTXMania.ConfigIni.strSystemSkinSubfolderFullName, true );\r
-                       CDTXMania.ConfigIni.bUseBoxDefSkin = this.iSystemUseBoxDefSkin.bON;                                                             // #28195 2012.5.6 yyagi\r
-\r
-                       CDTXMania.ConfigIni.nSoundDeviceType = this.iSystemSoundType.n現在選択されている項目番号;          // #24820 2013.1.3 yyagi\r
-//                     CDTXMania.ConfigIni.nWASAPIBufferSizeMs = this.iSystemWASAPIBufferSizeMs.n現在の値;                         // #24820 2013.1.15 yyagi\r
-//                     CDTXMania.ConfigIni.nASIOBufferSizeMs = this.iSystemASIOBufferSizeMs.n現在の値;                                     // #24820 2013.1.3 yyagi\r
-                       CDTXMania.ConfigIni.nASIODevice = this.iSystemASIODevice.n現在選択されている項目番号;                      // #24820 2013.1.17 yyagi\r
-                       CDTXMania.ConfigIni.bUseOSTimer = this.iSystemSoundTimerType.bON;                                                               // #33689 2014.6.17 yyagi\r
-\r
-                       CDTXMania.ConfigIni.bTimeStretch = this.iSystemTimeStretch.bON;                                                                 // #23664 2013.2.24 yyagi\r
-//Trace.TraceInformation( "saved" );\r
-//Trace.TraceInformation( "Skin現在Current : " + CDTXMania.Skin.GetCurrentSkinSubfolderFullName(true) );\r
-//Trace.TraceInformation( "Skin現在System  : " + CSkin.strSystemSkinSubfolderFullName );\r
-//Trace.TraceInformation( "Skin現在BoxDef  : " + CSkin.strBoxDefSkinSubfolderFullName );\r
-                       //CDTXMania.ConfigIni.nMasterVolume = this.iSystemMasterVolume.n現在の値;                                                   // #33700 2014.4.26 yyagi\r
-                       CDTXMania.ConfigIni.e判定表示優先度 = (E判定表示優先度) this.iSystemJudgeDispPriority.n現在選択されている項目番号;\r
-               }\r
-               private void tConfigIniへ記録する・Bass()\r
-               {\r
-                       //CDTXMania.ConfigIni.bAutoPlay.Bass = this.iBassAutoPlay.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.BsR = this.iBassR.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.BsG = this.iBassG.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.BsB = this.iBassB.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.BsPick = this.iBassPick.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.BsW = this.iBassW.bON;\r
-                       CDTXMania.ConfigIni.n譜面スクロール速度.Bass = this.iBassScrollSpeed.n現在の値;\r
-                                                                                               // "Sudden" || "Sud+Hid"\r
-                       CDTXMania.ConfigIni.bSudden.Bass = ( this.iBassSudHid.n現在選択されている項目番号 == 1 || this.iBassSudHid.n現在選択されている項目番号 == 3 ) ? true : false;\r
-                                                                                               // "Hidden" || "Sud+Hid"\r
-                       CDTXMania.ConfigIni.bHidden.Bass = ( this.iBassSudHid.n現在選択されている項目番号 == 2 || this.iBassSudHid.n現在選択されている項目番号 == 3 ) ? true : false;\r
-                       if      ( this.iBassSudHid.n現在選択されている項目番号 == 4 ) CDTXMania.ConfigIni.eInvisible.Bass = EInvisible.SEMI;       // "S-Invisible"\r
-                       else if ( this.iBassSudHid.n現在選択されている項目番号 == 5 ) CDTXMania.ConfigIni.eInvisible.Bass = EInvisible.FULL;       // "F-Invisible"\r
-                       else                                                          CDTXMania.ConfigIni.eInvisible.Bass = EInvisible.OFF;\r
-                       CDTXMania.ConfigIni.bReverse.Bass = this.iBassReverse.bON;\r
-                       CDTXMania.ConfigIni.判定文字表示位置.Bass = (E判定文字表示位置) this.iBassPosition.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.eRandom.Bass = (Eランダムモード) this.iBassRandom.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.bLight.Bass = this.iBassLight.bON;\r
-                       CDTXMania.ConfigIni.bLeft.Bass = this.iBassLeft.bON;\r
-                       CDTXMania.ConfigIni.nInputAdjustTimeMs.Bass = this.iBassInputAdjustTimeMs.n現在の値;                // #23580 2011.1.3 yyagi\r
-\r
-                       CDTXMania.ConfigIni.b演奏音を強調する.Bass = this.iSystemSoundMonitorBass.bON;\r
-                       CDTXMania.ConfigIni.n表示可能な最小コンボ数.Bass = this.iSystemMinComboBass.n現在の値;\r
-                       CDTXMania.ConfigIni.e判定位置.Bass = (E判定位置) this.iSystemJudgePosBass.n現在選択されている項目番号;                                     // #33891 2014.6.26 yyagi\r
-                       //CDTXMania.ConfigIni.e判定表示優先度.Bass = (E判定表示優先度) this.iBassJudgeDispPriority.n現在選択されている項目番号;\r
-               }\r
-               private void tConfigIniへ記録する・Drums()\r
-               {\r
-                       CDTXMania.ConfigIni.bAutoPlay.LC = this.iDrumsLeftCymbal.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.HH = this.iDrumsHiHat.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.SD = this.iDrumsSnare.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.BD = this.iDrumsBass.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.HT = this.iDrumsHighTom.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.LT = this.iDrumsLowTom.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.FT = this.iDrumsFloorTom.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.CY = this.iDrumsCymbalRide.bON;\r
-                       CDTXMania.ConfigIni.n譜面スクロール速度.Drums = this.iDrumsScrollSpeed.n現在の値;\r
-                       CDTXMania.ConfigIni.ドラムコンボ文字の表示位置 = (Eドラムコンボ文字の表示位置) this.iDrumsComboPosition.n現在選択されている項目番号;\r
-                                                                                               // "Sudden" || "Sud+Hid"\r
-                       CDTXMania.ConfigIni.bSudden.Drums = ( this.iDrumsSudHid.n現在選択されている項目番号 == 1 || this.iDrumsSudHid.n現在選択されている項目番号 == 3 ) ? true : false;\r
-                                                                                               // "Hidden" || "Sud+Hid"\r
-                       CDTXMania.ConfigIni.bHidden.Drums = ( this.iDrumsSudHid.n現在選択されている項目番号 == 2 || this.iDrumsSudHid.n現在選択されている項目番号 == 3 ) ? true : false;\r
-                       if      ( this.iDrumsSudHid.n現在選択されている項目番号 == 4 ) CDTXMania.ConfigIni.eInvisible.Drums = EInvisible.SEMI;     // "S-Invisible"\r
-                       else if ( this.iDrumsSudHid.n現在選択されている項目番号 == 5 ) CDTXMania.ConfigIni.eInvisible.Drums = EInvisible.FULL;     // "F-Invisible"\r
-                       else                                                           CDTXMania.ConfigIni.eInvisible.Drums = EInvisible.OFF;\r
-                       CDTXMania.ConfigIni.bReverse.Drums = this.iDrumsReverse.bON;\r
-                       CDTXMania.ConfigIni.判定文字表示位置.Drums = (E判定文字表示位置) this.iDrumsPosition.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.bTight = this.iDrumsTight.bON;\r
-                       CDTXMania.ConfigIni.nInputAdjustTimeMs.Drums = this.iDrumsInputAdjustTimeMs.n現在の値;              // #23580 2011.1.3 yyagi\r
-                       CDTXMania.ConfigIni.bGraph.Drums = this.iDrumsGraph.bON;// #24074 2011.01.23 add ikanick\r
-\r
-                       CDTXMania.ConfigIni.eHHGroup = (EHHGroup) this.iSystemHHGroup.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.eFTGroup = (EFTGroup) this.iSystemFTGroup.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.eCYGroup = (ECYGroup) this.iSystemCYGroup.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.eBDGroup = (EBDGroup) this.iSystemBDGroup.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.eHitSoundPriorityHH = (E打ち分け時の再生の優先順位) this.iSystemHitSoundPriorityHH.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.eHitSoundPriorityFT = (E打ち分け時の再生の優先順位) this.iSystemHitSoundPriorityFT.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.eHitSoundPriorityCY = (E打ち分け時の再生の優先順位) this.iSystemHitSoundPriorityCY.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.bフィルイン有効 = this.iSystemFillIn.bON;\r
-                       CDTXMania.ConfigIni.b演奏音を強調する.Drums = this.iSystemSoundMonitorDrums.bON;\r
-                       CDTXMania.ConfigIni.bドラム打音を発声する = this.iSystemHitSound.bON;\r
-                       CDTXMania.ConfigIni.n表示可能な最小コンボ数.Drums = this.iSystemMinComboDrums.n現在の値;\r
-                       CDTXMania.ConfigIni.bシンバルフリー = this.iSystemCymbalFree.bON;\r
-\r
-                       CDTXMania.ConfigIni.eDark = (Eダークモード)this.iCommonDark.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.nRisky = this.iSystemRisky.n現在の値;                                           // #23559 2911.7.27 yyagi\r
-                       //CDTXMania.ConfigIni.e判定表示優先度.Drums = (E判定表示優先度) this.iDrumsJudgeDispPriority.n現在選択されている項目番号;\r
-               }\r
-               private void tConfigIniへ記録する・Guitar()\r
-               {\r
-                       //CDTXMania.ConfigIni.bAutoPlay.Guitar = this.iGuitarAutoPlay.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.GtR = this.iGuitarR.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.GtG = this.iGuitarG.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.GtB = this.iGuitarB.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.GtPick = this.iGuitarPick.bON;\r
-                       CDTXMania.ConfigIni.bAutoPlay.GtW = this.iGuitarW.bON;\r
-                       CDTXMania.ConfigIni.n譜面スクロール速度.Guitar = this.iGuitarScrollSpeed.n現在の値;\r
-                                                                                               // "Sudden" || "Sud+Hid"\r
-                       CDTXMania.ConfigIni.bSudden.Guitar = ( this.iGuitarSudHid.n現在選択されている項目番号 == 1 || this.iGuitarSudHid.n現在選択されている項目番号 == 3 ) ? true : false;\r
-                                                                                               // "Hidden" || "Sud+Hid"\r
-                       CDTXMania.ConfigIni.bHidden.Guitar = ( this.iGuitarSudHid.n現在選択されている項目番号 == 2 || this.iGuitarSudHid.n現在選択されている項目番号 == 3 ) ? true : false;\r
-                       if      ( this.iGuitarSudHid.n現在選択されている項目番号 == 4 ) CDTXMania.ConfigIni.eInvisible.Guitar = EInvisible.SEMI;   // "S-Invisible"\r
-                       else if ( this.iGuitarSudHid.n現在選択されている項目番号 == 5 ) CDTXMania.ConfigIni.eInvisible.Guitar = EInvisible.FULL;   // "F-Invisible"\r
-                       else                                                            CDTXMania.ConfigIni.eInvisible.Guitar = EInvisible.OFF;\r
-                       CDTXMania.ConfigIni.bReverse.Guitar = this.iGuitarReverse.bON;\r
-                       CDTXMania.ConfigIni.判定文字表示位置.Guitar = (E判定文字表示位置) this.iGuitarPosition.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.eRandom.Guitar = (Eランダムモード) this.iGuitarRandom.n現在選択されている項目番号;\r
-                       CDTXMania.ConfigIni.bLight.Guitar = this.iGuitarLight.bON;\r
-                       CDTXMania.ConfigIni.bLeft.Guitar = this.iGuitarLeft.bON;\r
-                       CDTXMania.ConfigIni.nInputAdjustTimeMs.Guitar = this.iGuitarInputAdjustTimeMs.n現在の値;    // #23580 2011.1.3 yyagi\r
-\r
-                       CDTXMania.ConfigIni.n表示可能な最小コンボ数.Guitar = this.iSystemMinComboGuitar.n現在の値;\r
-                       CDTXMania.ConfigIni.b演奏音を強調する.Guitar = this.iSystemSoundMonitorGuitar.bON;\r
-                       CDTXMania.ConfigIni.e判定位置.Guitar = (E判定位置) this.iSystemJudgePosGuitar.n現在選択されている項目番号;                                 // #33891 2014.6.26 yyagi\r
-                       //CDTXMania.ConfigIni.e判定表示優先度.Guitar = (E判定表示優先度) this.iGuitarJudgeDispPriority.n現在選択されている項目番号;\r
-               }\r
-               //-----------------\r
-               #endregion\r
        }\r
 }\r