diff --git a/Core/Debugger/DisassemblyInfo.cpp b/Core/Debugger/DisassemblyInfo.cpp index 7386333f..91d28a44 100644 --- a/Core/Debugger/DisassemblyInfo.cpp +++ b/Core/Debugger/DisassemblyInfo.cpp @@ -310,6 +310,8 @@ bool DisassemblyInfo::IsJump() opCode == 0xF0 //BEQ ); } + + return false; } void DisassemblyInfo::UpdateCpuFlags(uint8_t& cpuFlags) diff --git a/NewUI/Debugger/ViewModels/BreakpointEditViewModel.cs b/NewUI/Debugger/ViewModels/BreakpointEditViewModel.cs index cf399b00..574f1d65 100644 --- a/NewUI/Debugger/ViewModels/BreakpointEditViewModel.cs +++ b/NewUI/Debugger/ViewModels/BreakpointEditViewModel.cs @@ -22,6 +22,8 @@ namespace Mesen.Debugger.ViewModels [ObservableAsProperty] public bool IsConditionValid { get; } [ObservableAsProperty] public bool OkEnabled { get; } [ObservableAsProperty] public string MaxAddress { get; } = ""; + + public Enum[] AvailableMemoryTypes { get; private set; } = Array.Empty(); //For designer public BreakpointEditViewModel() : this(null!) { } @@ -30,6 +32,8 @@ namespace Mesen.Debugger.ViewModels { Breakpoint = bp; + AvailableMemoryTypes = Enum.GetValues().Where(t => DebugApi.GetMemorySize(t) > 0).Cast().ToArray(); + this.WhenAnyValue(x => x.Breakpoint.StartAddress) .Buffer(2, 1) .Select(b => (Previous: b[0], Current: b[1])) diff --git a/NewUI/Debugger/ViewModels/BreakpointListViewModel.cs b/NewUI/Debugger/ViewModels/BreakpointListViewModel.cs index 2e2cf46c..c078b907 100644 --- a/NewUI/Debugger/ViewModels/BreakpointListViewModel.cs +++ b/NewUI/Debugger/ViewModels/BreakpointListViewModel.cs @@ -5,18 +5,24 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Reactive.Linq; using System.Linq; +using Mesen.Interop; namespace Mesen.Debugger.ViewModels { public class BreakpointListViewModel : Tool { [Reactive] public List Breakpoints { get; private set; } = new List(); + public CpuType CpuType { get; } - public BreakpointListViewModel() + [Obsolete("For designer only")] + public BreakpointListViewModel() : this(CpuType.Cpu) { } + + public BreakpointListViewModel(CpuType cpuType) { Id = "BreakpointList"; Title = "Breakpoints"; CanPin = false; + CpuType = cpuType; BreakpointManager.BreakpointsChanged += BreakpointManager_BreakpointsChanged; } diff --git a/NewUI/Debugger/ViewModels/DebuggerWindowViewModel.cs b/NewUI/Debugger/ViewModels/DebuggerWindowViewModel.cs index 129540dd..08d91cdb 100644 --- a/NewUI/Debugger/ViewModels/DebuggerWindowViewModel.cs +++ b/NewUI/Debugger/ViewModels/DebuggerWindowViewModel.cs @@ -45,12 +45,9 @@ namespace Mesen.Debugger.ViewModels public DebuggerWindowViewModel(CpuType? cpuType = null) { Config = ConfigManager.Config.Debug.Debugger; - - Options = new DebuggerOptionsViewModel(Config, CpuType); - - Disassembly = new DisassemblyViewModel(ConfigManager.Config.Debug); - BreakpointList = new BreakpointListViewModel(); + Options = new DebuggerOptionsViewModel(Config, CpuType); + Disassembly = new DisassemblyViewModel(ConfigManager.Config.Debug); DockFactory = new DebuggerDockFactory(this); if(Design.IsDesignMode) { @@ -78,6 +75,7 @@ namespace Mesen.Debugger.ViewModels } DefaultLabelHelper.SetDefaultLabels(); + BreakpointList = new BreakpointListViewModel(CpuType); LabelList = new LabelListViewModel(CpuType); CallStack = new CallStackViewModel(CpuType); WatchList = new WatchListViewModel(CpuType); diff --git a/NewUI/Debugger/Views/BreakpointListView.axaml.cs b/NewUI/Debugger/Views/BreakpointListView.axaml.cs index 9ecdc70d..0d4b57cd 100644 --- a/NewUI/Debugger/Views/BreakpointListView.axaml.cs +++ b/NewUI/Debugger/Views/BreakpointListView.axaml.cs @@ -40,8 +40,10 @@ namespace Mesen.Debugger.Views ActionType = ActionType.Add, Shortcut = () => ConfigManager.Config.Debug.Shortcuts.Get(DebuggerShortcut.BreakpointList_Add), OnClick = () => { - Breakpoint bp = new Breakpoint() { BreakOnRead = true, BreakOnWrite = true, BreakOnExec = true }; - BreakpointEditWindow.EditBreakpoint(bp, this); + if(DataContext is BreakpointListViewModel model) { + Breakpoint bp = new Breakpoint() { BreakOnRead = true, BreakOnWrite = true, BreakOnExec = true, CpuType = model.CpuType }; + BreakpointEditWindow.EditBreakpoint(bp, this); + } } }, diff --git a/NewUI/Debugger/Windows/BreakpointEditWindow.axaml b/NewUI/Debugger/Windows/BreakpointEditWindow.axaml index e93bca86..094ebd47 100644 --- a/NewUI/Debugger/Windows/BreakpointEditWindow.axaml +++ b/NewUI/Debugger/Windows/BreakpointEditWindow.axaml @@ -49,6 +49,7 @@