From 2c12958eb88f3eecf260fd1ab6879762f8e21965 Mon Sep 17 00:00:00 2001 From: "ALIENJACK\\alien" Date: Fri, 5 Jul 2024 11:48:35 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E7=BB=98=E5=88=B6=E6=80=A7=E8=83=BD?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/Script/Emu/UguiVideoProvider.cs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/AxibugEmuOnline.Client/Assets/Script/Emu/UguiVideoProvider.cs b/AxibugEmuOnline.Client/Assets/Script/Emu/UguiVideoProvider.cs index b8a1aff..cfbc042 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Emu/UguiVideoProvider.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Emu/UguiVideoProvider.cs @@ -12,10 +12,11 @@ namespace AxibugEmuOnline.Client public string ID => nameof(UguiVideoProvider).GetHashCode().ToString(); - private int[] m_texRawBuffer = new int[256 * 240]; + private Color[] m_texRawBuffer = new Color[256 * 240]; private Texture2D m_rawBufferWarper = new Texture2D(256, 240); private RawImage m_image; private RenderTexture m_drawRT; + private Color temp = Color.white; public void Initialize() { @@ -23,20 +24,21 @@ namespace AxibugEmuOnline.Client m_image.texture = RenderTexture.GetTemporary(256, 240, 0, UnityEngine.Experimental.Rendering.GraphicsFormat.B8G8R8A8_UNorm); } - public Color GetColor(uint value) + public void GetColor(uint value, ref Color res) { var r = 0xFF0000 & value; r >>= 16; var b = 0xFF & value; var g = 0xFF00 & value; g >>= 8; - var color = new Color(r / 255f, g / 255f, b / 255f); - return color; + res.r = r / 255f; + res.g = g / 255f; + res.b = b / 255f; } public void Update() { - var colors = m_texRawBuffer.Select(w => GetColor((uint)w)).ToArray(); + var colors = m_texRawBuffer; m_rawBufferWarper.SetPixels(colors); m_rawBufferWarper.Apply(); Graphics.Blit(m_rawBufferWarper, m_image.texture as RenderTexture); @@ -76,7 +78,11 @@ namespace AxibugEmuOnline.Client public void SubmitFrame(ref int[] buffer) { - Array.Copy(buffer, m_texRawBuffer, m_texRawBuffer.Length); + for (int i = 0; i < buffer.Length; i++) + { + GetColor((uint)buffer[i], ref temp); + m_texRawBuffer[i] = temp; + } } public void ResizeBegin() From 7b3142861f4a3f2ff412f2eab7b5e7e5f7141742 Mon Sep 17 00:00:00 2001 From: "ALIENJACK\\alien" Date: Fri, 5 Jul 2024 11:49:51 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E7=9A=84sln=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AxibugEmuOnline.Client.sln | 278 ------------------ 1 file changed, 278 deletions(-) delete mode 100644 AxibugEmuOnline.Client/AxibugEmuOnline.Client.sln diff --git a/AxibugEmuOnline.Client/AxibugEmuOnline.Client.sln b/AxibugEmuOnline.Client/AxibugEmuOnline.Client.sln deleted file mode 100644 index 579c232..0000000 --- a/AxibugEmuOnline.Client/AxibugEmuOnline.Client.sln +++ /dev/null @@ -1,278 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Timeline", "Unity.Timeline.csproj", "{B0DF349E-3E77-3469-A306-9F1B5D72D605}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Timeline.Editor", "Unity.Timeline.Editor.csproj", "{9D62BFE8-89CA-74D4-0926-0EF38577DFB2}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.TextMeshPro.Editor", "Unity.TextMeshPro.Editor.csproj", "{CA8BC370-E9DD-5EB9-20CD-BBC42D4DAFE9}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Internal", "Unity.Services.Core.Internal.csproj", "{1DE06E8A-0589-760E-E9EA-87943C9B27A2}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.VisualScripting.Flow", "Unity.VisualScripting.Flow.csproj", "{50133F68-097B-E953-ED70-07F18E27CE56}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityEditor.UI", "UnityEditor.UI.csproj", "{EBE93344-EA1D-224C-E130-32FEBD7EAB84}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyNes.Core", "MyNes.Core.csproj", "{D958CC78-341F-B644-4447-8EE8CF037D34}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.PlasticSCM.Editor", "Unity.PlasticSCM.Editor.csproj", "{01C7700A-E278-B0E2-E414-4B4EA427F2CE}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.CollabProxy.Editor", "Unity.CollabProxy.Editor.csproj", "{5CB06AAE-940C-0F2C-D02D-5AB39C9E0AA8}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.VisualScripting.Core", "Unity.VisualScripting.Core.csproj", "{32FF793E-2C1B-8992-FD16-735748086B4C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.VisualScripting.Core.Editor", "Unity.VisualScripting.Core.Editor.csproj", "{60BCA52D-8C02-4F9B-1F2B-5B166D854B69}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.VisualScripting.Flow.Editor", "Unity.VisualScripting.Flow.Editor.csproj", "{8EDC679A-229C-DDC1-7C08-C3D3AEA73F90}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityEditor.TestRunner", "UnityEditor.TestRunner.csproj", "{F32BAC49-F2F1-CE2D-0167-1F424878F925}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.VisualScripting.SettingsProvider.Editor", "Unity.VisualScripting.SettingsProvider.Editor.csproj", "{DFF0A2FD-8EAD-ED52-E0DC-D486AF73C847}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityEngine.TestRunner", "UnityEngine.TestRunner.csproj", "{0555AF0D-ECDE-BFBD-BBB5-8DC1A5197960}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Environments.Editor", "Unity.Services.Core.Environments.Editor.csproj", "{06C2DDE3-F045-CEE5-3F03-831228DDA3A9}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Editor", "Unity.Services.Core.Editor.csproj", "{7A646232-1EC4-2599-A1CD-7CF8DD15966E}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core", "Unity.Services.Core.csproj", "{49DBA999-DF45-268E-63B2-FA94C0D1B87C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityEngine.UI", "UnityEngine.UI.csproj", "{2053DD51-3AE8-A5EB-65D6-04B16AA3CE66}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.VisualStudio.Editor", "Unity.VisualStudio.Editor.csproj", "{368FC675-4200-A025-912A-59AFDAA29018}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.TestTools.CodeCoverage.Editor.OpenCover.Model", "Unity.TestTools.CodeCoverage.Editor.OpenCover.Model.csproj", "{DA00146E-B874-B45F-06C9-500B0401220C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Rider.Editor", "Unity.Rider.Editor.csproj", "{6E165AB7-E216-7010-DFED-1C1BC39B970D}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Environments.Internal", "Unity.Services.Core.Environments.Internal.csproj", "{D172DD08-1354-1BA0-9525-0E869B5020BD}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Configuration", "Unity.Services.Core.Configuration.csproj", "{8F9BD7C0-7ACF-A18C-5A88-229D8B094F3F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.VisualScripting.State.Editor", "Unity.VisualScripting.State.Editor.csproj", "{F23A84DD-FF43-F524-83B9-D17532BC1DE8}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.TestTools.CodeCoverage.Editor", "Unity.TestTools.CodeCoverage.Editor.csproj", "{649C131C-6FE6-E748-C932-651E89DFADFE}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Configuration.Editor", "Unity.Services.Core.Configuration.Editor.csproj", "{CC93A1BB-FB4C-9BE7-0832-CF4AF1B69A92}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.VisualScripting.State", "Unity.VisualScripting.State.csproj", "{E912C16D-738B-1DB1-3456-24751CAB3849}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.TextMeshPro", "Unity.TextMeshPro.csproj", "{FFF816B4-207D-AC0E-3B30-C9E0CA06D257}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Networking", "Unity.Services.Core.Networking.csproj", "{BD55EBED-7E44-C621-7FF4-FD7709A438F6}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Performance.Profile-Analyzer.Editor", "Unity.Performance.Profile-Analyzer.Editor.csproj", "{F57AB79F-532A-EBC2-871B-64C9FD27FEA9}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AxibugEmuOnline.Client", "AxibugEmuOnline.Client.csproj", "{59C211A4-B928-7505-AF2E-6C604DAB3622}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Scheduler", "Unity.Services.Core.Scheduler.csproj", "{2598AAB1-DA3E-A2AE-B060-D1BAF7BBE4BC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.VSCode.Editor", "Unity.VSCode.Editor.csproj", "{5A8F066D-8FFA-AFC1-1E8E-0DE9AEAE676F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.TestTools.CodeCoverage.Editor.OpenCover.Mono.Reflection", "Unity.TestTools.CodeCoverage.Editor.OpenCover.Mono.Reflection.csproj", "{469C328E-E07E-04A6-A566-E2ABA6732CBE}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Settings.Editor", "Unity.Settings.Editor.csproj", "{541572F4-E051-F4F8-9B39-87BFA550E13A}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Registration", "Unity.Services.Core.Registration.csproj", "{A5C76622-FE9B-BD41-A430-5208CCE95FDA}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Telemetry", "Unity.Services.Core.Telemetry.csproj", "{7F93B805-8A3C-D81B-FEE7-A4CE542AB2D2}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Analytics", "Unity.Services.Core.Analytics.csproj", "{83045A6C-05F6-CC92-820D-281C04862F7C}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Threading", "Unity.Services.Core.Threading.csproj", "{458B6228-8612-4186-4E92-36797B16DFA3}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.EditorCoroutines.Editor", "Unity.EditorCoroutines.Editor.csproj", "{7F94681B-B8E0-DF52-D282-9411B6632E77}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Device", "Unity.Services.Core.Device.csproj", "{98604E75-FAB4-80FC-A539-DE0A0CFD0687}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.Services.Core.Environments", "Unity.Services.Core.Environments.csproj", "{8576736C-D7B9-E3D7-203C-46D059601F81}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Unity.VisualScripting.Shared.Editor", "Unity.VisualScripting.Shared.Editor.csproj", "{26BB76BB-57D1-3F9B-44BC-3ECB5B9EEF49}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B0DF349E-3E77-3469-A306-9F1B5D72D605}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B0DF349E-3E77-3469-A306-9F1B5D72D605}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B0DF349E-3E77-3469-A306-9F1B5D72D605}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B0DF349E-3E77-3469-A306-9F1B5D72D605}.Release|Any CPU.Build.0 = Release|Any CPU - {9D62BFE8-89CA-74D4-0926-0EF38577DFB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9D62BFE8-89CA-74D4-0926-0EF38577DFB2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9D62BFE8-89CA-74D4-0926-0EF38577DFB2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9D62BFE8-89CA-74D4-0926-0EF38577DFB2}.Release|Any CPU.Build.0 = Release|Any CPU - {CA8BC370-E9DD-5EB9-20CD-BBC42D4DAFE9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CA8BC370-E9DD-5EB9-20CD-BBC42D4DAFE9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CA8BC370-E9DD-5EB9-20CD-BBC42D4DAFE9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CA8BC370-E9DD-5EB9-20CD-BBC42D4DAFE9}.Release|Any CPU.Build.0 = Release|Any CPU - {1DE06E8A-0589-760E-E9EA-87943C9B27A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1DE06E8A-0589-760E-E9EA-87943C9B27A2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1DE06E8A-0589-760E-E9EA-87943C9B27A2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1DE06E8A-0589-760E-E9EA-87943C9B27A2}.Release|Any CPU.Build.0 = Release|Any CPU - {50133F68-097B-E953-ED70-07F18E27CE56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {50133F68-097B-E953-ED70-07F18E27CE56}.Debug|Any CPU.Build.0 = Debug|Any CPU - {50133F68-097B-E953-ED70-07F18E27CE56}.Release|Any CPU.ActiveCfg = Release|Any CPU - {50133F68-097B-E953-ED70-07F18E27CE56}.Release|Any CPU.Build.0 = Release|Any CPU - {EBE93344-EA1D-224C-E130-32FEBD7EAB84}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EBE93344-EA1D-224C-E130-32FEBD7EAB84}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EBE93344-EA1D-224C-E130-32FEBD7EAB84}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EBE93344-EA1D-224C-E130-32FEBD7EAB84}.Release|Any CPU.Build.0 = Release|Any CPU - {D958CC78-341F-B644-4447-8EE8CF037D34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D958CC78-341F-B644-4447-8EE8CF037D34}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D958CC78-341F-B644-4447-8EE8CF037D34}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D958CC78-341F-B644-4447-8EE8CF037D34}.Release|Any CPU.Build.0 = Release|Any CPU - {01C7700A-E278-B0E2-E414-4B4EA427F2CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {01C7700A-E278-B0E2-E414-4B4EA427F2CE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {01C7700A-E278-B0E2-E414-4B4EA427F2CE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {01C7700A-E278-B0E2-E414-4B4EA427F2CE}.Release|Any CPU.Build.0 = Release|Any CPU - {5CB06AAE-940C-0F2C-D02D-5AB39C9E0AA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5CB06AAE-940C-0F2C-D02D-5AB39C9E0AA8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5CB06AAE-940C-0F2C-D02D-5AB39C9E0AA8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5CB06AAE-940C-0F2C-D02D-5AB39C9E0AA8}.Release|Any CPU.Build.0 = Release|Any CPU - {32FF793E-2C1B-8992-FD16-735748086B4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {32FF793E-2C1B-8992-FD16-735748086B4C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {32FF793E-2C1B-8992-FD16-735748086B4C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {32FF793E-2C1B-8992-FD16-735748086B4C}.Release|Any CPU.Build.0 = Release|Any CPU - {60BCA52D-8C02-4F9B-1F2B-5B166D854B69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {60BCA52D-8C02-4F9B-1F2B-5B166D854B69}.Debug|Any CPU.Build.0 = Debug|Any CPU - {60BCA52D-8C02-4F9B-1F2B-5B166D854B69}.Release|Any CPU.ActiveCfg = Release|Any CPU - {60BCA52D-8C02-4F9B-1F2B-5B166D854B69}.Release|Any CPU.Build.0 = Release|Any CPU - {8EDC679A-229C-DDC1-7C08-C3D3AEA73F90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8EDC679A-229C-DDC1-7C08-C3D3AEA73F90}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8EDC679A-229C-DDC1-7C08-C3D3AEA73F90}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8EDC679A-229C-DDC1-7C08-C3D3AEA73F90}.Release|Any CPU.Build.0 = Release|Any CPU - {F32BAC49-F2F1-CE2D-0167-1F424878F925}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F32BAC49-F2F1-CE2D-0167-1F424878F925}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F32BAC49-F2F1-CE2D-0167-1F424878F925}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F32BAC49-F2F1-CE2D-0167-1F424878F925}.Release|Any CPU.Build.0 = Release|Any CPU - {DFF0A2FD-8EAD-ED52-E0DC-D486AF73C847}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DFF0A2FD-8EAD-ED52-E0DC-D486AF73C847}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DFF0A2FD-8EAD-ED52-E0DC-D486AF73C847}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DFF0A2FD-8EAD-ED52-E0DC-D486AF73C847}.Release|Any CPU.Build.0 = Release|Any CPU - {0555AF0D-ECDE-BFBD-BBB5-8DC1A5197960}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0555AF0D-ECDE-BFBD-BBB5-8DC1A5197960}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0555AF0D-ECDE-BFBD-BBB5-8DC1A5197960}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0555AF0D-ECDE-BFBD-BBB5-8DC1A5197960}.Release|Any CPU.Build.0 = Release|Any CPU - {06C2DDE3-F045-CEE5-3F03-831228DDA3A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {06C2DDE3-F045-CEE5-3F03-831228DDA3A9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {06C2DDE3-F045-CEE5-3F03-831228DDA3A9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {06C2DDE3-F045-CEE5-3F03-831228DDA3A9}.Release|Any CPU.Build.0 = Release|Any CPU - {7A646232-1EC4-2599-A1CD-7CF8DD15966E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7A646232-1EC4-2599-A1CD-7CF8DD15966E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7A646232-1EC4-2599-A1CD-7CF8DD15966E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7A646232-1EC4-2599-A1CD-7CF8DD15966E}.Release|Any CPU.Build.0 = Release|Any CPU - {49DBA999-DF45-268E-63B2-FA94C0D1B87C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {49DBA999-DF45-268E-63B2-FA94C0D1B87C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {49DBA999-DF45-268E-63B2-FA94C0D1B87C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {49DBA999-DF45-268E-63B2-FA94C0D1B87C}.Release|Any CPU.Build.0 = Release|Any CPU - {2053DD51-3AE8-A5EB-65D6-04B16AA3CE66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2053DD51-3AE8-A5EB-65D6-04B16AA3CE66}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2053DD51-3AE8-A5EB-65D6-04B16AA3CE66}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2053DD51-3AE8-A5EB-65D6-04B16AA3CE66}.Release|Any CPU.Build.0 = Release|Any CPU - {368FC675-4200-A025-912A-59AFDAA29018}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {368FC675-4200-A025-912A-59AFDAA29018}.Debug|Any CPU.Build.0 = Debug|Any CPU - {368FC675-4200-A025-912A-59AFDAA29018}.Release|Any CPU.ActiveCfg = Release|Any CPU - {368FC675-4200-A025-912A-59AFDAA29018}.Release|Any CPU.Build.0 = Release|Any CPU - {DA00146E-B874-B45F-06C9-500B0401220C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DA00146E-B874-B45F-06C9-500B0401220C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DA00146E-B874-B45F-06C9-500B0401220C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DA00146E-B874-B45F-06C9-500B0401220C}.Release|Any CPU.Build.0 = Release|Any CPU - {6E165AB7-E216-7010-DFED-1C1BC39B970D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {6E165AB7-E216-7010-DFED-1C1BC39B970D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6E165AB7-E216-7010-DFED-1C1BC39B970D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {6E165AB7-E216-7010-DFED-1C1BC39B970D}.Release|Any CPU.Build.0 = Release|Any CPU - {D172DD08-1354-1BA0-9525-0E869B5020BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D172DD08-1354-1BA0-9525-0E869B5020BD}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D172DD08-1354-1BA0-9525-0E869B5020BD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D172DD08-1354-1BA0-9525-0E869B5020BD}.Release|Any CPU.Build.0 = Release|Any CPU - {8F9BD7C0-7ACF-A18C-5A88-229D8B094F3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8F9BD7C0-7ACF-A18C-5A88-229D8B094F3F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8F9BD7C0-7ACF-A18C-5A88-229D8B094F3F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8F9BD7C0-7ACF-A18C-5A88-229D8B094F3F}.Release|Any CPU.Build.0 = Release|Any CPU - {F23A84DD-FF43-F524-83B9-D17532BC1DE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F23A84DD-FF43-F524-83B9-D17532BC1DE8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F23A84DD-FF43-F524-83B9-D17532BC1DE8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F23A84DD-FF43-F524-83B9-D17532BC1DE8}.Release|Any CPU.Build.0 = Release|Any CPU - {649C131C-6FE6-E748-C932-651E89DFADFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {649C131C-6FE6-E748-C932-651E89DFADFE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {649C131C-6FE6-E748-C932-651E89DFADFE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {649C131C-6FE6-E748-C932-651E89DFADFE}.Release|Any CPU.Build.0 = Release|Any CPU - {CC93A1BB-FB4C-9BE7-0832-CF4AF1B69A92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CC93A1BB-FB4C-9BE7-0832-CF4AF1B69A92}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CC93A1BB-FB4C-9BE7-0832-CF4AF1B69A92}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CC93A1BB-FB4C-9BE7-0832-CF4AF1B69A92}.Release|Any CPU.Build.0 = Release|Any CPU - {E912C16D-738B-1DB1-3456-24751CAB3849}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {E912C16D-738B-1DB1-3456-24751CAB3849}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E912C16D-738B-1DB1-3456-24751CAB3849}.Release|Any CPU.ActiveCfg = Release|Any CPU - {E912C16D-738B-1DB1-3456-24751CAB3849}.Release|Any CPU.Build.0 = Release|Any CPU - {FFF816B4-207D-AC0E-3B30-C9E0CA06D257}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FFF816B4-207D-AC0E-3B30-C9E0CA06D257}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FFF816B4-207D-AC0E-3B30-C9E0CA06D257}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FFF816B4-207D-AC0E-3B30-C9E0CA06D257}.Release|Any CPU.Build.0 = Release|Any CPU - {BD55EBED-7E44-C621-7FF4-FD7709A438F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {BD55EBED-7E44-C621-7FF4-FD7709A438F6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {BD55EBED-7E44-C621-7FF4-FD7709A438F6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {BD55EBED-7E44-C621-7FF4-FD7709A438F6}.Release|Any CPU.Build.0 = Release|Any CPU - {F57AB79F-532A-EBC2-871B-64C9FD27FEA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F57AB79F-532A-EBC2-871B-64C9FD27FEA9}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F57AB79F-532A-EBC2-871B-64C9FD27FEA9}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F57AB79F-532A-EBC2-871B-64C9FD27FEA9}.Release|Any CPU.Build.0 = Release|Any CPU - {59C211A4-B928-7505-AF2E-6C604DAB3622}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {59C211A4-B928-7505-AF2E-6C604DAB3622}.Debug|Any CPU.Build.0 = Debug|Any CPU - {59C211A4-B928-7505-AF2E-6C604DAB3622}.Release|Any CPU.ActiveCfg = Release|Any CPU - {59C211A4-B928-7505-AF2E-6C604DAB3622}.Release|Any CPU.Build.0 = Release|Any CPU - {2598AAB1-DA3E-A2AE-B060-D1BAF7BBE4BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2598AAB1-DA3E-A2AE-B060-D1BAF7BBE4BC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2598AAB1-DA3E-A2AE-B060-D1BAF7BBE4BC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2598AAB1-DA3E-A2AE-B060-D1BAF7BBE4BC}.Release|Any CPU.Build.0 = Release|Any CPU - {5A8F066D-8FFA-AFC1-1E8E-0DE9AEAE676F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5A8F066D-8FFA-AFC1-1E8E-0DE9AEAE676F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5A8F066D-8FFA-AFC1-1E8E-0DE9AEAE676F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5A8F066D-8FFA-AFC1-1E8E-0DE9AEAE676F}.Release|Any CPU.Build.0 = Release|Any CPU - {469C328E-E07E-04A6-A566-E2ABA6732CBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {469C328E-E07E-04A6-A566-E2ABA6732CBE}.Debug|Any CPU.Build.0 = Debug|Any CPU - {469C328E-E07E-04A6-A566-E2ABA6732CBE}.Release|Any CPU.ActiveCfg = Release|Any CPU - {469C328E-E07E-04A6-A566-E2ABA6732CBE}.Release|Any CPU.Build.0 = Release|Any CPU - {541572F4-E051-F4F8-9B39-87BFA550E13A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {541572F4-E051-F4F8-9B39-87BFA550E13A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {541572F4-E051-F4F8-9B39-87BFA550E13A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {541572F4-E051-F4F8-9B39-87BFA550E13A}.Release|Any CPU.Build.0 = Release|Any CPU - {A5C76622-FE9B-BD41-A430-5208CCE95FDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A5C76622-FE9B-BD41-A430-5208CCE95FDA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A5C76622-FE9B-BD41-A430-5208CCE95FDA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A5C76622-FE9B-BD41-A430-5208CCE95FDA}.Release|Any CPU.Build.0 = Release|Any CPU - {7F93B805-8A3C-D81B-FEE7-A4CE542AB2D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7F93B805-8A3C-D81B-FEE7-A4CE542AB2D2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F93B805-8A3C-D81B-FEE7-A4CE542AB2D2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7F93B805-8A3C-D81B-FEE7-A4CE542AB2D2}.Release|Any CPU.Build.0 = Release|Any CPU - {83045A6C-05F6-CC92-820D-281C04862F7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {83045A6C-05F6-CC92-820D-281C04862F7C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {83045A6C-05F6-CC92-820D-281C04862F7C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {83045A6C-05F6-CC92-820D-281C04862F7C}.Release|Any CPU.Build.0 = Release|Any CPU - {458B6228-8612-4186-4E92-36797B16DFA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {458B6228-8612-4186-4E92-36797B16DFA3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {458B6228-8612-4186-4E92-36797B16DFA3}.Release|Any CPU.ActiveCfg = Release|Any CPU - {458B6228-8612-4186-4E92-36797B16DFA3}.Release|Any CPU.Build.0 = Release|Any CPU - {7F94681B-B8E0-DF52-D282-9411B6632E77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7F94681B-B8E0-DF52-D282-9411B6632E77}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F94681B-B8E0-DF52-D282-9411B6632E77}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7F94681B-B8E0-DF52-D282-9411B6632E77}.Release|Any CPU.Build.0 = Release|Any CPU - {98604E75-FAB4-80FC-A539-DE0A0CFD0687}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {98604E75-FAB4-80FC-A539-DE0A0CFD0687}.Debug|Any CPU.Build.0 = Debug|Any CPU - {98604E75-FAB4-80FC-A539-DE0A0CFD0687}.Release|Any CPU.ActiveCfg = Release|Any CPU - {98604E75-FAB4-80FC-A539-DE0A0CFD0687}.Release|Any CPU.Build.0 = Release|Any CPU - {8576736C-D7B9-E3D7-203C-46D059601F81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8576736C-D7B9-E3D7-203C-46D059601F81}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8576736C-D7B9-E3D7-203C-46D059601F81}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8576736C-D7B9-E3D7-203C-46D059601F81}.Release|Any CPU.Build.0 = Release|Any CPU - {26BB76BB-57D1-3F9B-44BC-3ECB5B9EEF49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {26BB76BB-57D1-3F9B-44BC-3ECB5B9EEF49}.Debug|Any CPU.Build.0 = Debug|Any CPU - {26BB76BB-57D1-3F9B-44BC-3ECB5B9EEF49}.Release|Any CPU.ActiveCfg = Release|Any CPU - {26BB76BB-57D1-3F9B-44BC-3ECB5B9EEF49}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal From b8386bb3c9873d340c923d6902fbfa460316e933 Mon Sep 17 00:00:00 2001 From: "ALIENJACK\\alien" Date: Fri, 5 Jul 2024 11:52:56 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=BF=BD=E7=95=A5=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index aca8877..5d0402c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ /AxibugEmuOnline.Client/Temp/ /AxibugEmuOnline.Client/.vs/ /AxibugEmuOnline.Client/*.csproj +/AxibugEmuOnline.Client/*.sln +/AxibugEmuOnline.Client/*.sln +/AxibugEmuOnline.Client/ProjectSettings/Packages/ From 4644b7022fda1848191e3017b432f94020069fb8 Mon Sep 17 00:00:00 2001 From: "ALIENJACK\\alien" Date: Wed, 10 Jul 2024 15:02:14 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=B5=81=E5=BC=8F=E9=9F=B3=E9=A2=91?= =?UTF-8?q?=E9=87=87=E7=94=A8DSP=E5=AE=9E=E7=8E=B0,VideoProvider=E5=92=8Ca?= =?UTF-8?q?udioProvider=E6=94=B9=E4=B8=BAmonobehaviour?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/MyNes.Core/IAudioProvider.cs | 2 - .../Assets/MyNes.Core/IVideoProvider.cs | 2 - .../Assets/MyNes.Core/MyNesMain.cs | 16 +- .../Assets/Scene/EmuTest.unity | 167 ++++++++---------- .../Assets/Script/Emu/AudioProvider.cs | 58 +++--- .../Assets/Script/Emu/UguiVideoProvider.cs | 10 +- .../Assets/Script/Manager/AppEmu.cs | 23 +-- .../Assets/Script/NesCoreProxy.cs | 13 +- 8 files changed, 120 insertions(+), 171 deletions(-) diff --git a/AxibugEmuOnline.Client/Assets/MyNes.Core/IAudioProvider.cs b/AxibugEmuOnline.Client/Assets/MyNes.Core/IAudioProvider.cs index 547b742..6388e3b 100644 --- a/AxibugEmuOnline.Client/Assets/MyNes.Core/IAudioProvider.cs +++ b/AxibugEmuOnline.Client/Assets/MyNes.Core/IAudioProvider.cs @@ -25,7 +25,5 @@ namespace MyNes.Core void SignalToggle(bool started); void SetVolume(int Vol); - - void Update(); } } diff --git a/AxibugEmuOnline.Client/Assets/MyNes.Core/IVideoProvider.cs b/AxibugEmuOnline.Client/Assets/MyNes.Core/IVideoProvider.cs index a830e74..b89152c 100644 --- a/AxibugEmuOnline.Client/Assets/MyNes.Core/IVideoProvider.cs +++ b/AxibugEmuOnline.Client/Assets/MyNes.Core/IVideoProvider.cs @@ -37,7 +37,5 @@ namespace MyNes.Core void ToggleFPS(bool show_fps); void ApplyFilter(); - - void Update(); } } diff --git a/AxibugEmuOnline.Client/Assets/MyNes.Core/MyNesMain.cs b/AxibugEmuOnline.Client/Assets/MyNes.Core/MyNesMain.cs index 19a7d77..20c6979 100644 --- a/AxibugEmuOnline.Client/Assets/MyNes.Core/MyNesMain.cs +++ b/AxibugEmuOnline.Client/Assets/MyNes.Core/MyNesMain.cs @@ -21,7 +21,7 @@ namespace MyNes.Core public static WaveRecorder WaveRecorder { get; private set; } - public static void Initialize(IFileManager fileManager) + public static void Initialize(IFileManager fileManager, IVideoProvider videoProvider, IAudioProvider audioProvider) { Tracer.WriteLine("Initializing My Nes Core ...."); FileManager = fileManager; @@ -42,6 +42,8 @@ namespace MyNes.Core .GetAssemblies() .SelectMany(ass => ass.GetTypes()); + VideoProvider = videoProvider; + AudioProvider = audioProvider; foreach (var type in allTypes) { if (type.IsSubclassOf(typeof(Board)) && !type.IsAbstract) @@ -50,18 +52,6 @@ namespace MyNes.Core Boards.Add(board); Tracer.WriteLine("Board added: " + board.Name + " [ Mapper " + board.MapperNumber + "]"); } - else if (VideoProvider == null && typeof(IVideoProvider).IsAssignableFrom(type) && !type.IsAbstract) - { - IVideoProvider videoProvider = Activator.CreateInstance(type) as IVideoProvider; - VideoProvider = videoProvider; - Tracer.WriteLine("Video provider setuped: " + videoProvider.Name + " [" + videoProvider.ID + "]"); - } - else if (typeof(IAudioProvider).IsAssignableFrom(type) && !type.IsAbstract) - { - IAudioProvider audioProvider = Activator.CreateInstance(type) as IAudioProvider; - AudioProvider = audioProvider; - Tracer.WriteLine("Audio provider setuped: " + audioProvider.Name + " [" + audioProvider.ID + "]"); - } } Tracer.WriteInformation("Done."); diff --git a/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity b/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity index e44b63c..a9a232b 100644 --- a/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity +++ b/AxibugEmuOnline.Client/Assets/Scene/EmuTest.unity @@ -167,10 +167,59 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ac8cd27a180bf3e489b2ca27c821bffe, type: 3} m_Name: m_EditorClassIdentifier: - AS: {fileID: 1379369699} - DrawImage: {fileID: 730321751} - DO: {fileID: 0} - Fps: {fileID: 1680039028} + VideoCom: {fileID: 0} + AudioCom: {fileID: 0} +--- !u!1 &455467288 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 455467291} + - component: {fileID: 455467290} + m_Layer: 0 + m_Name: GameObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &455467290 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 455467288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 00080631f10e2834db28c37a11188a74, type: 3} + m_Name: + m_EditorClassIdentifier: + sampleRate: 44100 + channels: 2 + bufferLength: 1024 + audioClip: {fileID: 0} + audioSource: {fileID: 0} + audioBuffer: [] + isRunning: 1 +--- !u!4 &455467291 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 455467288} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 253.16292, y: 149.09415, z: -2.2723875} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &708549044 GameObject: m_ObjectHideFlags: 0 @@ -276,13 +325,14 @@ GameObject: - component: {fileID: 730321749} - component: {fileID: 730321752} - component: {fileID: 730321751} + - component: {fileID: 730321753} m_Layer: 5 m_Name: video m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &730321749 RectTransform: m_ObjectHideFlags: 0 @@ -337,6 +387,19 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 730321748} m_CullTransparentMesh: 1 +--- !u!114 &730321753 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 730321748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f2632911774df3c488ec24b39651c4de, type: 3} + m_Name: + m_EditorClassIdentifier: + m_image: {fileID: 730321751} --- !u!1 &786008057 GameObject: m_ObjectHideFlags: 0 @@ -369,7 +432,6 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 730321749} - - {fileID: 1680039031} - {fileID: 1379369698} m_Father: {fileID: 258485947} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -611,6 +673,7 @@ GameObject: m_Component: - component: {fileID: 1379369698} - component: {fileID: 1379369699} + - component: {fileID: 1379369700} m_Layer: 5 m_Name: Audio m_TagString: Untagged @@ -648,7 +711,7 @@ AudioSource: serializedVersion: 4 OutputAudioMixerGroup: {fileID: 0} m_audioClip: {fileID: 0} - m_PlayOnAwake: 1 + m_PlayOnAwake: 0 m_Volume: 1 m_Pitch: 1 Loop: 0 @@ -733,100 +796,19 @@ AudioSource: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 ---- !u!1 &1680039027 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1680039031} - - component: {fileID: 1680039030} - - component: {fileID: 1680039028} - - component: {fileID: 1680039029} - m_Layer: 5 - m_Name: fps - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1680039028 +--- !u!114 &1379369700 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1680039027} + m_GameObject: {fileID: 1379369697} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Script: {fileID: 11500000, guid: 765129d4fad76714191795975893ea9c, type: 3} m_Name: m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 10 - m_MaxSize: 40 - m_Alignment: 0 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: 12324234 ---- !u!114 &1680039029 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1680039027} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 2 - m_VerticalFit: 2 ---- !u!222 &1680039030 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1680039027} - m_CullTransparentMesh: 1 ---- !u!224 &1680039031 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1680039027} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 786008058} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0} - m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 1, y: 0} + m_as: {fileID: 1379369699} --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 @@ -835,3 +817,4 @@ SceneRoots: - {fileID: 708549046} - {fileID: 258485947} - {fileID: 1359344834} + - {fileID: 455467291} diff --git a/AxibugEmuOnline.Client/Assets/Script/Emu/AudioProvider.cs b/AxibugEmuOnline.Client/Assets/Script/Emu/AudioProvider.cs index 8a0af09..497d808 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Emu/AudioProvider.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Emu/AudioProvider.cs @@ -1,17 +1,11 @@ using MyNes.Core; -using System; -using System.Collections; using System.Collections.Generic; -using System.IO; -using System.IO.Pipes; -using System.Linq; using System.Threading; -using UnityEditor.PackageManager.UI; using UnityEngine; namespace AxibugEmuOnline.Client { - public class AudioProvider : IAudioProvider + public class AudioProvider : MonoBehaviour, IAudioProvider { public string Name => nameof(AudioProvider); @@ -22,47 +16,53 @@ namespace AxibugEmuOnline.Client public bool AllowFrequencyChange => true; private bool m_isPlaying; + + [SerializeField] private AudioSource m_as; - private int samples_added; - private Queue _buffer = new Queue(); + private Queue _buffer = new Queue(); public void Initialize() { - m_as = NesCoreProxy.Instance.AS; - m_as.clip = AudioClip.Create("nes wav", 48000 * 2, 1, 48000, true, OnAudioFilterRead); - m_as.loop = true; - m_as.playOnAwake = false; - m_as.spatialBlend = 0f; + var dummy = AudioClip.Create("dummy", 1, 1, AudioSettings.outputSampleRate, false); + dummy.SetData(new float[] { 1 }, 0); + m_as.clip = dummy; //just to let unity play the audiosource + m_as.loop = true; + m_as.spatialBlend = 1; m_as.Play(); } - public void Update() { } - - - private void OnAudioFilterRead(float[] data) + void OnAudioFilterRead(float[] data, int channels) { - lock (_buffer) + while (_buffer.Count >= data.Length / 2) { - for (int i = 0; i < data.Length; i++) - { - data[i] = _buffer.Count > 0 ? _buffer.Dequeue() : 0; - } + //Thread.Sleep(10); + break; } + + int step = channels; + for (int i = 0; i < data.Length; i += step) + { + var rawData = _buffer.Count > 0 ? _buffer.Dequeue() : 0; + var rawFloat = rawData / 124f; + data[i] = rawFloat; + for (int fill = 1; fill < step; fill++) + data[i + fill] = rawFloat; + } + } + int EmuAudioTimeSample = 0; public void SubmitSamples(ref short[] buffer, ref int samples_a) { - lock (_buffer) + EmuAudioTimeSample += samples_a; + for (int i = 0; i < samples_a; i++) { - foreach (var a in buffer.Take(samples_a).ToArray()) - { - var floatData = (float)a / 124; - _buffer.Enqueue(floatData); - } + _buffer.Enqueue(buffer[i]); } + } public void TogglePause(bool paused) diff --git a/AxibugEmuOnline.Client/Assets/Script/Emu/UguiVideoProvider.cs b/AxibugEmuOnline.Client/Assets/Script/Emu/UguiVideoProvider.cs index cfbc042..9588311 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Emu/UguiVideoProvider.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Emu/UguiVideoProvider.cs @@ -1,26 +1,30 @@ using MyNes.Core; using System; +using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using UnityEngine; using UnityEngine.UI; +using UnityEngine.Video; namespace AxibugEmuOnline.Client { - public class UguiVideoProvider : IVideoProvider + public class UguiVideoProvider : MonoBehaviour, IVideoProvider { public string Name => "Unity UI Video"; public string ID => nameof(UguiVideoProvider).GetHashCode().ToString(); private Color[] m_texRawBuffer = new Color[256 * 240]; - private Texture2D m_rawBufferWarper = new Texture2D(256, 240); + private Texture2D m_rawBufferWarper; + [SerializeField] private RawImage m_image; private RenderTexture m_drawRT; private Color temp = Color.white; public void Initialize() { - m_image = NesCoreProxy.Instance.DrawImage; + m_rawBufferWarper = new Texture2D(256, 240); m_image.texture = RenderTexture.GetTemporary(256, 240, 0, UnityEngine.Experimental.Rendering.GraphicsFormat.B8G8R8A8_UNorm); } diff --git a/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs b/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs index 420186c..7dc06f1 100644 --- a/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs +++ b/AxibugEmuOnline.Client/Assets/Script/Manager/AppEmu.cs @@ -7,27 +7,10 @@ namespace AxibugEmuOnline.Client.Manager { public class AppEmu : IFileManager { - public IVideoProvider UguiVideo { get; private set; } - public IAudioProvider Audio { get; private set; } - - public void Init() + public void Init(IVideoProvider videoCom,IAudioProvider audioCom) { - MyNesMain.Initialize(this); - NesEmu.LoadGame("E:/rzg4.nes", out var successed, true); - UguiVideo = MyNesMain.VideoProvider; - Audio = MyNesMain.AudioProvider; - - var fps_nes_missle = 1.0 / 59.0; - NesEmu.SetFramePeriod(ref fps_nes_missle); - } - - public void Update() - { - UguiVideo.Update(); - Audio.Update(); - - double t = Time.deltaTime; - NesEmu.SetFramePeriod(ref t); + MyNesMain.Initialize(this, videoCom, audioCom); + NesEmu.LoadGame("E:/kirby.nes", out var successed, true); } public void Dispose() diff --git a/AxibugEmuOnline.Client/Assets/Script/NesCoreProxy.cs b/AxibugEmuOnline.Client/Assets/Script/NesCoreProxy.cs index f70bb9f..2b5348b 100644 --- a/AxibugEmuOnline.Client/Assets/Script/NesCoreProxy.cs +++ b/AxibugEmuOnline.Client/Assets/Script/NesCoreProxy.cs @@ -10,22 +10,15 @@ namespace AxibugEmuOnline.Client { public static NesCoreProxy Instance { get; private set; } - public AudioSource AS; - public RawImage DrawImage; - public DefaultAudioOutput DO; - public Text Fps; + public UguiVideoProvider VideoCom; + public AudioProvider AudioCom; private AppEmu m_appEnum = new AppEmu(); private void Start() { Instance = this; - m_appEnum.Init(); - } - - private void Update() - { - m_appEnum.Update(); + m_appEnum.Init(VideoCom, AudioCom); } private void OnDestroy()