OSDN Git Service

#24820 ASIOデバイス作成失敗時にエラーコードを正しく出力できていなかったことがあったのを修正。
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sun, 3 Feb 2013 16:02:40 +0000 (16:02 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Sun, 3 Feb 2013 16:02:40 +0000 (16:02 +0000)
#24820 Config.iniのASIODeviceの説明を追加。Creativeデバイスをアンインストールした後にそのデバイスを指定した場合、Creativeのダイアログが出てDTXManiaの動作が途中で止まってしまうため。
#xxxxx GPUをFlushするタイミングを変更(EndScene/Present後に変更)
#30666 フルスクリーン画面を、従来通りの解像度切り替え方式に戻した。描画遅延は解決するものの、BackBufferからFrontBufferへの転送時にスケーリングが発生することで、滑らかなスクロールを維持できていないため。

git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/branches/130101(DTXMania%20with%20%2324820SoundTimerVer)@513 16f42ceb-6dc6-49c8-ba94-f2d53467949d

DTXManiaプロジェクト/コード/全体/CConfigIni.cs
DTXManiaプロジェクト/コード/全体/CDTXMania.cs
FDK17プロジェクト/コード/03.サウンド/CSoundDeviceASIO.cs
実行時フォルダ/DTXManiaGR.exe
実行時フォルダ/FDK.dll

index 7a74d47..a19a9c6 100644 (file)
@@ -1289,7 +1289,9 @@ namespace DTXMania
                        sw.WriteLine();\r
 \r
                        sw.WriteLine( "; ASIO使用時のサウンドデバイス" );\r
+                       sw.WriteLine( "; 存在しないデバイスを指定すると、DTXManiaが起動しないことがあります。" );\r
                        sw.WriteLine( "; Sound device used by ASIO." );\r
+                       sw.WriteLine( "; Don't specify unconnected device, as the DTXMania may not bootup." );\r
                        string[] asiodev = CEnumerateAllAsioDevices.GetAllASIODevices();\r
                        for ( int i = 0; i < asiodev.Length; i++ )\r
                        {\r
index d840a07..7a1f3ad 100644 (file)
@@ -308,35 +308,49 @@ namespace DTXMania
 \r
                public void t全画面・ウィンドウモード切り替え()\r
                {\r
-                       //DeviceSettings settings = base.GraphicsDeviceManager.CurrentSettings.Clone();\r
-                       if ( ConfigIni != null )\r
+                       DeviceSettings settings = base.GraphicsDeviceManager.CurrentSettings.Clone();\r
+                       if ( ( ConfigIni != null ) && ( ConfigIni.bウィンドウモード != settings.Windowed ) )\r
+                       //if ( ConfigIni != null )\r
                        {\r
-                               //settings.Windowed = ConfigIni.bウィンドウモード;\r
+                               settings.Windowed = ConfigIni.bウィンドウモード;\r
                                if ( ConfigIni.bウィンドウモード == false )     // #23510 2010.10.27 yyagi: backup current window size before going fullscreen mode\r
                                {\r
                                        currentClientSize = this.Window.ClientSize;\r
                                        ConfigIni.nウインドウwidth = this.Window.ClientSize.Width;\r
                                        ConfigIni.nウインドウheight = this.Window.ClientSize.Height;\r
                                }\r
-                               //base.GraphicsDeviceManager.ChangeDevice( settings );\r
+                               base.GraphicsDeviceManager.ChangeDevice( settings );\r
                                if ( ConfigIni.bウィンドウモード == true )      // #23510 2010.10.27 yyagi: to resume window size from backuped value\r
                                {\r
                                                                                                                        // #30666 2013.2.2 yyagi Don't use Fullscreen mode becasue NVIDIA GeForce is\r
                                                                                                                        // tend to delay drawing on Fullscreen mode. So DTXMania uses Maximized window\r
                                                                                                                        // in spite of using fullscreen mode.\r
-                                       app.Window.WindowState = FormWindowState.Normal;\r
-                                       app.Window.FormBorderStyle = FormBorderStyle.Sizable;\r
-                                       app.Window.WindowState = FormWindowState.Normal;\r
+                                       //app.Window.WindowState = FormWindowState.Normal;\r
+                                       //app.Window.FormBorderStyle = FormBorderStyle.Sizable;\r
+                                       //app.Window.WindowState = FormWindowState.Normal;\r
 \r
                                        base.Window.ClientSize =\r
                                                new Size( currentClientSize.Width, currentClientSize.Height );\r
                                }\r
                                else \r
                                {\r
-                                       app.Window.WindowState = FormWindowState.Normal;\r
-                                       app.Window.FormBorderStyle = FormBorderStyle.None;\r
-                                       app.Window.WindowState = FormWindowState.Maximized;\r
+                                       //app.Window.WindowState = FormWindowState.Normal;\r
+                                       //app.Window.FormBorderStyle = FormBorderStyle.None;\r
+                                       //app.Window.WindowState = FormWindowState.Maximized;\r
                                }\r
+                               //if ( ConfigIni.bウィンドウモード )\r
+                               //{\r
+                               //    if ( !this.bマウスカーソル表示中 )\r
+                               //    {\r
+                               //        Cursor.Show();\r
+                               //        this.bマウスカーソル表示中 = true;\r
+                               //    }\r
+                               //}\r
+                               //else if ( this.bマウスカーソル表示中 )\r
+                               //{\r
+                               //    Cursor.Hide();\r
+                               //    this.bマウスカーソル表示中 = false;\r
+                               //}\r
                        }\r
                }\r
 \r
@@ -409,6 +423,9 @@ namespace DTXMania
                        this.Device.SetRenderState( RenderState.AntialiasedLineEnable, false );\r
                        this.Device.SetRenderState( RenderState.AlphaTestEnable, true );\r
                        this.Device.SetRenderState( RenderState.AlphaRef, 10 );\r
+\r
+//                     this.Device.SetRenderState( RenderState.MultisampleAntialias, true );\r
+\r
                        this.Device.SetRenderState<Compare>( RenderState.AlphaFunc, Compare.Greater );\r
                        this.Device.SetRenderState( RenderState.AlphaBlendEnable, true );\r
                        this.Device.SetRenderState<Blend>( RenderState.SourceBlend, Blend.SourceAlpha );\r
@@ -1276,8 +1293,8 @@ for (int i = 0; i < 3; i++) {
                                                break;\r
                                }\r
                        }\r
-                       actFlushGPU.On進行描画();           // Flush GPU\r
                        this.Device.EndScene();\r
+                       actFlushGPU.On進行描画();           // Flush GPU\r
 \r
                        #region [ 全画面・ウインドウ切り替え ]\r
                        if ( this.b次のタイミングで全画面・ウィンドウ切り替えを行う )\r
@@ -1497,12 +1514,12 @@ for (int i = 0; i < 3; i++) {
                        this.strWindowTitle = "DTXMania .NET style release " + VERSION;\r
                        base.Window.Text = this.strWindowTitle;\r
                        base.Window.ClientSize = new Size(ConfigIni.nウインドウwidth, ConfigIni.nウインドウheight);   // #34510 yyagi 2010.10.31 to change window size got from Config.ini\r
-//                     if (!ConfigIni.bウィンドウモード)                                               // #23510 2010.11.02 yyagi: add; to recover window size in case bootup with fullscreen mode\r
-//                     {                                                                                                               // #30666 2013.02.02 yyagi: currentClientSize should be always made\r
+                       if (!ConfigIni.bウィンドウモード)                                               // #23510 2010.11.02 yyagi: add; to recover window size in case bootup with fullscreen mode\r
+                       {                                                                                                               // #30666 2013.02.02 yyagi: currentClientSize should be always made\r
                                currentClientSize = new Size( ConfigIni.nウインドウwidth, ConfigIni.nウインドウheight );\r
-//                     }\r
+                       }\r
                        base.Window.MaximizeBox = true;                                                 // #23510 2010.11.04 yyagi: to support maximizing window\r
-                       //base.Window.FormBorderStyle = FormBorderStyle.Sizable;        // #23510 2010.10.27 yyagi: changed from FixedDialog to Sizable, to support window resize\r
+                       base.Window.FormBorderStyle = FormBorderStyle.Sizable;  // #23510 2010.10.27 yyagi: changed from FixedDialog to Sizable, to support window resize\r
                                                                                                                                                // #30666 2013.02.02 yyagi: moved the code to t全画面・ウインドウモード切り替え()\r
                        base.Window.ShowIcon = true;\r
                        base.Window.Icon = Properties.Resources.dtx;\r
@@ -1519,13 +1536,18 @@ for (int i = 0; i < 3; i++) {
                        #region [ Direct3D9 デバイスの生成 ]\r
                        //---------------------\r
                        DeviceSettings settings = new DeviceSettings();\r
-                       //settings.Windowed = ConfigIni.bウィンドウモード;\r
-                       settings.Windowed = true;                                                               // #30666 2013.2.2 yyagi: Fullscreenmode is "Maximized window" mode\r
+                       settings.Windowed = ConfigIni.bウィンドウモード;\r
+                       //settings.Windowed = true;                                                             // #30666 2013.2.2 yyagi: Fullscreenmode is "Maximized window" mode\r
                        settings.BackBufferWidth = SampleFramework.GameWindowSize.Width;\r
                        settings.BackBufferHeight = SampleFramework.GameWindowSize.Height;\r
 //                     settings.BackBufferCount = 3;\r
                        settings.EnableVSync = ConfigIni.b垂直帰線待ちを行う;\r
-\r
+//                     settings.BackBufferFormat = Format.A8R8G8B8;\r
+//                     settings.MultisampleType = MultisampleType.FourSamples;\r
+//                     settings.MultisampleQuality = 4;\r
+//                     settings.MultisampleType = MultisampleType.None;\r
+//                     settings.MultisampleQuality = 0;\r
+                       \r
                        try\r
                        {\r
                                base.GraphicsDeviceManager.ChangeDevice(settings);\r
@@ -1536,13 +1558,13 @@ for (int i = 0; i < 3; i++) {
                                MessageBox.Show(e.Message + e.ToString(), "DTXMania failed to boot: DirectX9 Initialize Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
                                Environment.Exit(-1);\r
                        }\r
-\r
+                       \r
                        base.IsFixedTimeStep = false;\r
 //                     base.TargetElapsedTime = TimeSpan.FromTicks( 10000000 / 75 );\r
                        base.Window.ClientSize = new Size(ConfigIni.nウインドウwidth, ConfigIni.nウインドウheight);   // #23510 2010.10.31 yyagi: to recover window size. width and height are able to get from Config.ini.\r
                        base.InactiveSleepTime = TimeSpan.FromMilliseconds((float)(ConfigIni.n非フォーカス時スリープms));    // #23568 2010.11.3 yyagi: to support valiable sleep value when !IsActive\r
                                                                                                                                                                                                                                // #23568 2010.11.4 ikanick changed ( 1 -> ConfigIni )\r
-                       this.t全画面・ウィンドウモード切り替え();                               // #30666 2013.2.2 yyagi: finalize settings for "Maximized window mode"\r
+                       //this.t全画面・ウィンドウモード切り替え();                             // #30666 2013.2.2 yyagi: finalize settings for "Maximized window mode"\r
                        actFlushGPU = new CActFlushGPU();\r
                        //---------------------\r
                        #endregion\r
index 1301be9..c7fc613 100644 (file)
@@ -268,10 +268,11 @@ Debug.WriteLine( "Default device no.: " + nASIODevice );
                        //this.nバッファサイズsample = (int)  nバッファサイズbyte;\r
                        if ( !BassAsio.BASS_ASIO_Start( this.nバッファサイズsample ) )           // 範囲外の値を指定した場合は自動的にデフォルト値に設定される。\r
                        {\r
+                               BASSError err = BassAsio.BASS_ASIO_ErrorGetCode();\r
                                BassAsio.BASS_ASIO_Free();\r
                                Bass.BASS_Free();\r
                                this.bIsBASSFree = true;\r
-                               throw new Exception( "ASIO デバイス出力開始に失敗しました。" + BassAsio.BASS_ASIO_ErrorGetCode().ToString() );\r
+                               throw new Exception( "ASIO デバイス出力開始に失敗しました。" + err.ToString() );\r
                        }\r
                        else\r
                        {\r
index 2a91e96..cadceef 100644 (file)
Binary files a/実行時フォルダ/DTXManiaGR.exe and b/実行時フォルダ/DTXManiaGR.exe differ
index c6bab82..de745ed 100644 (file)
Binary files a/実行時フォルダ/FDK.dll and b/実行時フォルダ/FDK.dll differ