diff --git a/ProjectPSX.OpenTK/Program.cs b/ProjectPSX.OpenTK/Program.cs index c1a0fec..ae69e31 100644 --- a/ProjectPSX.OpenTK/Program.cs +++ b/ProjectPSX.OpenTK/Program.cs @@ -1,3 +1,4 @@ +using OpenToolkit.Graphics.OpenGL; using OpenToolkit.Mathematics; using OpenToolkit.Windowing.Desktop; using System; @@ -13,6 +14,8 @@ namespace ProjectPSX.OpenTK { settings.RenderFrequency = 60; settings.UpdateFrequency = 60; NativeWindowSettings nativeWindow = new NativeWindowSettings(); + nativeWindow.API = OpenToolkit.Windowing.Common.ContextAPI.OpenGL; + nativeWindow.APIVersion = new Version(3, 2); nativeWindow.Size = new Vector2i(1024, 512); nativeWindow.Title = "ProjectPSX"; nativeWindow.Profile = OpenToolkit.Windowing.Common.ContextProfile.Compatability; diff --git a/ProjectPSX.OpenTK/ProjectPSX.OpenTK.csproj b/ProjectPSX.OpenTK/ProjectPSX.OpenTK.csproj index 2df0b49..0761531 100644 --- a/ProjectPSX.OpenTK/ProjectPSX.OpenTK.csproj +++ b/ProjectPSX.OpenTK/ProjectPSX.OpenTK.csproj @@ -9,6 +9,11 @@ true + + true + true + + diff --git a/ProjectPSX.OpenTK/Window.cs b/ProjectPSX.OpenTK/Window.cs index 89be1dd..8c69166 100644 --- a/ProjectPSX.OpenTK/Window.cs +++ b/ProjectPSX.OpenTK/Window.cs @@ -9,15 +9,18 @@ using System; namespace ProjectPSX.OpenTK { public class Window : GameWindow, IHostWindow { + const int PSX_MHZ = 33868800; + const int SYNC_CYCLES = 100; + const int MIPS_UNDERCLOCK = 2; + private ProjectPSX psx; private int[] displayBuffer; private Dictionary _gamepadKeyMap; private AudioPlayer audioPlayer = new AudioPlayer(); private int vSyncCounter; + private int cpuCyclesCounter; public Window(GameWindowSettings gameWindowSettings, NativeWindowSettings nativeWindowSettings) : base(gameWindowSettings, nativeWindowSettings) { - psx = new ProjectPSX(this, @"C:\Users\Wapens\source\repos\ProjectPSX\ProjectPSX\bin\r4.bin"); - psx.POWER_ON(); _gamepadKeyMap = new Dictionary() { { Key.Space, GamepadInputsEnum.Space}, @@ -37,6 +40,16 @@ namespace ProjectPSX.OpenTK { { Key.S , GamepadInputsEnum.S }, { Key.A , GamepadInputsEnum.A }, }; + + FileDrop += Window_FileDrop; + } + + private void Window_FileDrop(FileDropEventArgs fileDrop) { + string[] files = fileDrop.FileNames; + string file = files[0]; + if(file.EndsWith(".bin") || file.EndsWith(".cue")) { + psx = new ProjectPSX(this, file); + } } protected override void OnLoad() { @@ -81,7 +94,7 @@ namespace ProjectPSX.OpenTK { protected override void OnUpdateFrame(FrameEventArgs args) { base.OnUpdateFrame(args); - psx.RunFrame(); + psx?.RunFrame(); } protected override void OnKeyDown(KeyboardKeyEventArgs e) { @@ -113,10 +126,6 @@ namespace ProjectPSX.OpenTK { return fps; } - public void SetWindowText(string newText) { - this.Title = newText; - } - public void SetDisplayMode(int horizontalRes, int verticalRes, bool is24BitDepth) { //throw new System.NotImplementedException(); }