UI: Support for NativeAOT

Added Windows & Linux builds using AOT compilation
This commit is contained in:
Sour 2024-06-05 20:23:31 +09:00
parent 99e4106761
commit d208fdc6a7
195 changed files with 34238 additions and 31137 deletions

View file

@ -11,41 +11,42 @@ jobs:
strategy:
matrix:
platform: [
{netversion: 6.x, targetframework: net6.0},
{netversion: 8.x, targetframework: net8.0}
{netversion: 6.x, targetframework: net6.0, aot: false, singleFile: true, aotString: ""},
{netversion: 8.x, targetframework: net8.0, aot: false, singleFile: true, aotString: ""},
{netversion: 8.x, targetframework: net8.0, aot: true, singleFile: false, aotString: " - AoT"}
]
fail-fast: false
runs-on: windows-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install .NET Core
uses: actions/setup-dotnet@v3
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ matrix.platform.netversion }}
- name: Setup MSBuild.exe
uses: microsoft/setup-msbuild@v1.1
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64
- name: Restore packages
run: dotnet restore /p:TargetFramework="${{ matrix.platform.targetframework }}"
run: dotnet restore -p:TargetFramework="${{ matrix.platform.targetframework }}" -r win-x64 -p:PublishAot="${{ matrix.platform.aot }}"
- name: Build Mesen
run: msbuild -nologo -v:d -clp:ForceConsoleColor -m -p:Configuration=Release -p:Platform=x64 -t:Clean,UI /p:TargetFramework="${{ matrix.platform.targetframework }}"
run: msbuild -nologo -v:d -clp:ForceConsoleColor -m -p:Configuration=Release -p:Platform=x64 -t:Clean,UI -p:TargetFramework="${{ matrix.platform.targetframework }}"
- name: Publish Mesen
run: dotnet publish -nologo --no-restore -c Release /p:Platform="Any CPU" /p:OptimizeUi="true" /p:TargetFramework="${{ matrix.platform.targetframework }}" Mesen.sln /p:PublishProfile=UI\Properties\PublishProfiles\Release.pubxml
run: dotnet publish --no-restore -c Release -p:PublishAot="${{ matrix.platform.aot }}" -p:SelfContained="${{ matrix.platform.aot }}" -p:PublishSingleFile="${{ matrix.platform.singleFile }}" -p:OptimizeUi="true" -p:Platform="Any CPU" -p:TargetFramework="${{ matrix.platform.targetframework }}" -r win-x64 Mesen.sln /p:PublishProfile=UI\Properties\PublishProfiles\Release.pubxml
- name: Upload Mesen
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: Mesen (Windows - ${{ matrix.platform.targetframework }})
name: Mesen (Windows - ${{ matrix.platform.targetframework }}${{ matrix.platform.aotString }})
path: |
build/TmpReleaseBuild/Mesen.exe
@ -53,28 +54,33 @@ jobs:
linux:
strategy:
matrix:
compiler: [gcc, clang]
compiler: [gcc, clang, clang_aot]
os: [ubuntu-22.04, ubuntu-20.04]
exclude:
# This currently fails to build.
- os: ubuntu-20.04
compiler: gcc
# Don't need 2 separate AoT builds
- os: ubuntu-22.04
compiler: clang_aot
include:
- compiler: gcc
use_gcc: "USE_GCC=true"
make_flags: "USE_GCC=true"
- compiler: clang
use_gcc: ""
make_flags: ""
- compiler: clang_aot
make_flags: "USE_AOT=true"
fail-fast: false
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repo
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install .NET Core
uses: actions/setup-dotnet@v3
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
@ -87,10 +93,10 @@ jobs:
# forcing colours makes the log a little nicer to read.
- name: Build Mesen
run: |
make -j$(nproc) -O ${{ matrix.use_gcc }} LTO=true STATICLINK=true SYSTEM_LIBEVDEV=false
make -j$(nproc) -O ${{ matrix.make_flags }} LTO=true STATICLINK=true SYSTEM_LIBEVDEV=false
- name: Upload Mesen
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: Mesen (Linux - ${{ matrix.os }} - ${{ matrix.compiler }})
path: bin/linux-x64/Release/linux-x64/publish/Mesen
@ -100,12 +106,12 @@ jobs:
steps:
- name: Checkout repo
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install .NET Core
uses: actions/setup-dotnet@v3
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
@ -118,7 +124,7 @@ jobs:
run: |
Linux/appimage/appimage.sh
- name: Upload Mesen (AppImage)
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: Mesen (Linux x64 - AppImage)
path: Mesen.AppImage
@ -137,12 +143,12 @@ jobs:
steps:
- name: Checkout repo
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install .NET Core
uses: actions/setup-dotnet@v3
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x
@ -186,7 +192,7 @@ jobs:
ditto -c -k --sequesterRsrc --keepParent bin/osx-${{ matrix.platform.arch }}/Release/osx-${{ matrix.platform.arch }}/publish/Mesen.app bin/osx-${{ matrix.platform.arch }}/Release/Mesen.app.zip
- name: Upload Mesen
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: Mesen (macOS - ${{ matrix.platform.os }})
path: bin/osx-${{ matrix.platform.arch }}/Release/Mesen.app.zip

View file

@ -8,15 +8,15 @@
To build under Linux you need a version of Clang or GCC that supports C++17.
Additionally, SDL2 and the [.NET 6 SDK](https://learn.microsoft.com/en-us/dotnet/core/install/linux) must also be installed.
Additionally, SDL2 and the [.NET 8 SDK](https://learn.microsoft.com/en-us/dotnet/core/install/linux) must also be installed.
Once SDL2 and the .NET 6 SDK are installed, run `make` to compile with Clang.
Once SDL2 and the .NET 8 SDK are installed, run `make` to compile with Clang.
To compile with GCC instead, use `USE_GCC=true make`.
**Note:** Mesen usually runs faster when built with Clang instead of GCC.
## macOS
To build macOS, install SDL2 (i.e via Homebrew) and the [.NET 6 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/6.0).
To build macOS, install SDL2 (i.e via Homebrew) and the [.NET 8 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0).
Once SDL2 and the .NET 6 SDK are installed, run `make`.
Once SDL2 and the .NET 8 SDK are installed, run `make`.

View file

@ -6,30 +6,31 @@ Mesen is a multi-system emulator (NES, SNES, Game Boy, Game Boy Advance, PC Engi
[![Mesen](https://github.com/SourMesen/Mesen2/actions/workflows/build.yml/badge.svg)](https://github.com/SourMesen/Mesen2/actions/workflows/build.yml)
Latest development builds:
#### <ins>Native builds</ins> ####
* [Windows 10 / 11 (.NET 8)](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28Windows%20-%20net8.0%29.zip)
These builds don't require .NET to be installed and offer improved start up times.
* [Windows 10 / 11](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28Windows%20-%20net8.0%20-%20AoT%29.zip)
* [Linux](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28Linux%20-%20ubuntu-20.04%20-%20clang_aot%29.zip) (requires **SDL2**)
#### <ins>.NET builds</ins> ####
These builds require **.NET 8** to be installed (except the Windows 7 build which requires .NET 6).
For Linux and macOS, **SDL2** must also be installed.
* [Windows 10 / 11](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28Windows%20-%20net8.0%29.zip)
* [Windows 7 / 8 (.NET 6)](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28Windows%20-%20net6.0%29.zip)
* [macOS - Intel](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28macOS%20-%20macos-12%29.zip)
* [macOS - Apple Silicon](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28macOS%20-%20macos-14%29.zip)
* [Linux](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20%28Linux%20-%20ubuntu-20.04%20-%20clang%29.zip)
* [Linux - AppImage](https://nightly.link/SourMesen/Mesen2/workflows/build/master/Mesen%20(Linux%20x64%20-%20AppImage).zip)
#### Notes / limitations
#### <ins>Notes / limitations</ins> ####
**macOS**: The macOS build still has a number of limitations (e.g no gamepad support).
**SteamOS**: See [SteamOS.md](SteamOS.md)
## Requirements
To run Mesen, the following prerequisites must be installed:
**Windows 10 / 11**: [.NET 8 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/8.0)
**Windows 7 / 8**: [.NET 6 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) (.NET 8 is not supported on Windows 7 / 8)
**Linux**: [.NET 8 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/8.0), SDL2
**macOS**: [.NET 8 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/8.0), SDL2
## Compiling
See [COMPILING.md](COMPILING.md)

View file

@ -42,14 +42,14 @@
</Application.Resources>
<Application.DataTemplates>
<dbg:DebuggerViewLocator />
<DataTemplate DataType="x:Enum">
<TextBlock Text="{Binding, Converter={StaticResource Enum}}" />
</DataTemplate>
</Application.DataTemplates>
<Application.Styles>
<FluentTheme />
<StyleInclude Source="/Styles/MesenStyles.xaml" />
</Application.Styles>
<NativeMenu.Menu>

View file

@ -21,13 +21,13 @@ namespace Mesen
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
StyleHelper.LoadStartupStyles();
if(Design.IsDesignMode) {
StyleHelper.ApplyTheme(MesenTheme.Light);
if(Design.IsDesignMode || ShowConfigWindow) {
RequestedThemeVariant = ThemeVariant.Light;
StyleHelper.LoadDebuggerStyles();
} else {
RequestedThemeVariant = ConfigManager.Config.Preferences.Theme == MesenTheme.Dark ? ThemeVariant.Dark : ThemeVariant.Light;
}
AvaloniaXamlLoader.Load(this);
ResourceHelper.LoadResources();
}
@ -35,12 +35,9 @@ namespace Mesen
{
if(ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) {
if(ShowConfigWindow) {
StyleHelper.ApplyTheme(MesenTheme.Light);
new PreferencesConfig().InitializeFontDefaults();
RequestedThemeVariant = ThemeVariant.Light;
desktop.MainWindow = new SetupWizardWindow();
} else {
RequestedThemeVariant = ConfigManager.Config.Preferences.Theme == MesenTheme.Dark ? ThemeVariant.Dark : ThemeVariant.Light;
desktop.MainWindow = new MainWindow();
}
}

View file

@ -18,8 +18,8 @@ namespace Mesen.Config
public bool IsIdentical(T other)
{
string a = JsonSerializer.Serialize(this, this.GetType(), JsonHelper.Options);
string b = JsonSerializer.Serialize(other, this.GetType(), JsonHelper.Options);
string a = JsonSerializer.Serialize(this, this.GetType(), MesenSerializerContext.Default);
string b = JsonSerializer.Serialize(other, this.GetType(), MesenSerializerContext.Default);
return a == b;
}
}

View file

@ -7,8 +7,8 @@ namespace Mesen.Config
{
public class BaseWindowConfig<T> : BaseConfig<T> where T : class
{
public PixelSize WindowSize { get; set; } = new PixelSize(0, 0);
public PixelPoint WindowLocation { get; set; } = new PixelPoint(0, 0);
public MesenSize WindowSize { get; set; } = new PixelSize(0, 0);
public MesenPoint WindowLocation { get; set; } = new PixelPoint(0, 0);
public bool WindowIsMaximized { get; set; } = false;
private PixelRect _restoreBounds;
@ -48,10 +48,10 @@ namespace Mesen.Config
} else {
//Window top left corner is offscreen, adjust position
if(WindowLocation.Y < screen.WorkingArea.Position.Y) {
WindowLocation = WindowLocation.WithY(screen.WorkingArea.Position.Y);
WindowLocation = ((PixelPoint)WindowLocation).WithY(screen.WorkingArea.Position.Y);
}
if(WindowLocation.X < screen.WorkingArea.Position.X) {
WindowLocation = WindowLocation.WithX(screen.WorkingArea.Position.X);
WindowLocation = ((PixelPoint)WindowLocation).WithX(screen.WorkingArea.Position.X);
}
wndRect = new PixelRect(WindowLocation, WindowSize);
@ -109,4 +109,36 @@ namespace Mesen.Config
}
}
}
public struct MesenSize
{
public int Width { get; set; }
public int Height { get; set; }
public static implicit operator MesenSize(PixelSize size)
{
return new MesenSize { Width = size.Width, Height = size.Height };
}
public static implicit operator PixelSize(MesenSize size)
{
return new PixelSize(size.Width, size.Height);
}
}
public struct MesenPoint
{
public int X { get; set; }
public int Y { get; set; }
public static implicit operator MesenPoint(PixelPoint point)
{
return new MesenPoint { X = point.X, Y = point.Y };
}
public static implicit operator PixelPoint(MesenPoint point)
{
return new PixelPoint(point.X, point.Y);
}
}
}

View file

@ -14,7 +14,7 @@ namespace Mesen.Config
{
private static string FilePath { get { return Path.Combine(ConfigManager.CheatFolder, EmuApi.GetRomInfo().GetRomName() + ".json"); } }
public List<CheatCode> Cheats = new List<CheatCode>();
public List<CheatCode> Cheats { get; set; } = new List<CheatCode>();
public static CheatCodes LoadCheatCodes()
{
@ -27,7 +27,7 @@ namespace Mesen.Config
if(File.Exists(path)) {
try {
cheats = JsonSerializer.Deserialize<CheatCodes>(File.ReadAllText(path), JsonHelper.Options) ?? new CheatCodes();
cheats = (CheatCodes?)JsonSerializer.Deserialize(File.ReadAllText(path), typeof(CheatCodes), MesenSerializerContext.Default) ?? new CheatCodes();
} catch { }
}
@ -38,7 +38,7 @@ namespace Mesen.Config
{
try {
if(Cheats.Count > 0) {
FileHelper.WriteAllText(CheatCodes.FilePath, JsonSerializer.Serialize(this, JsonHelper.Options));
FileHelper.WriteAllText(CheatCodes.FilePath, JsonSerializer.Serialize(this, typeof(CheatCodes), MesenSerializerContext.Default));
} else {
if(File.Exists(CheatCodes.FilePath)) {
File.Delete(CheatCodes.FilePath);

View file

@ -240,7 +240,7 @@ namespace Mesen.Config
try {
string fileData = File.ReadAllText(configFile);
config = JsonSerializer.Deserialize<Configuration>(fileData, JsonHelper.Options) ?? Configuration.CreateConfig();
config = (Configuration?)JsonSerializer.Deserialize(fileData, typeof(Configuration), MesenSerializerContext.Default) ?? Configuration.CreateConfig();
config._fileData = fileData;
} catch {
try {
@ -260,7 +260,7 @@ namespace Mesen.Config
public void Serialize(string configFile)
{
try {
string cfgData = JsonSerializer.Serialize(this, typeof(Configuration), JsonHelper.Options);
string cfgData = JsonSerializer.Serialize(this, typeof(Configuration), MesenSerializerContext.Default);
if(_fileData != cfgData && !Design.IsDesignMode) {
FileHelper.WriteAllText(configFile, cfgData);
_fileData = cfgData;

View file

@ -5,6 +5,5 @@ namespace Mesen.Config
{
public class AssemblerConfig : BaseWindowConfig<AssemblerConfig>
{
public int Zoom = 100;
}
}

View file

@ -6,6 +6,8 @@ using ReactiveUI.Fody.Helpers;
using System.Reactive.Linq;
using System.Reactive;
using System.Collections.Generic;
using ReactiveUI;
using System;
namespace Mesen.Config
{
@ -65,23 +67,23 @@ namespace Mesen.Config
[Reactive] public bool ShowSelectionLength { get; set; } = false;
[Reactive] public WatchFormatStyle WatchFormat { get; set; } = WatchFormatStyle.Hex;
[Reactive] public Color CodeOpcodeColor { get; set; } = Color.FromRgb(22, 37, 37);
[Reactive] public Color CodeLabelDefinitionColor { get; set; } = Colors.Blue;
[Reactive] public Color CodeImmediateColor { get; set; } = Colors.Chocolate;
[Reactive] public Color CodeAddressColor { get; set; } = Colors.DarkRed;
[Reactive] public Color CodeCommentColor { get; set; } = Colors.Green;
[Reactive] public Color CodeEffectiveAddressColor { get; set; } = Colors.SteelBlue;
[Reactive] public UInt32 CodeOpcodeColor { get; set; } = Color.FromRgb(22, 37, 37).ToUInt32();
[Reactive] public UInt32 CodeLabelDefinitionColor { get; set; } = Colors.Blue.ToUInt32();
[Reactive] public UInt32 CodeImmediateColor { get; set; } = Colors.Chocolate.ToUInt32();
[Reactive] public UInt32 CodeAddressColor { get; set; } = Colors.DarkRed.ToUInt32();
[Reactive] public UInt32 CodeCommentColor { get; set; } = Colors.Green.ToUInt32();
[Reactive] public UInt32 CodeEffectiveAddressColor { get; set; } = Colors.SteelBlue.ToUInt32();
[Reactive] public Color CodeVerifiedDataColor { get; set; } = Color.FromRgb(255, 252, 236);
[Reactive] public Color CodeUnidentifiedDataColor { get; set; } = Color.FromRgb(255, 242, 242);
[Reactive] public Color CodeUnexecutedCodeColor { get; set; } = Color.FromRgb(225, 244, 228);
[Reactive] public UInt32 CodeVerifiedDataColor { get; set; } = Color.FromRgb(255, 252, 236).ToUInt32();
[Reactive] public UInt32 CodeUnidentifiedDataColor { get; set; } = Color.FromRgb(255, 242, 242).ToUInt32();
[Reactive] public UInt32 CodeUnexecutedCodeColor { get; set; } = Color.FromRgb(225, 244, 228).ToUInt32();
[Reactive] public Color CodeExecBreakpointColor { get; set; } = Color.FromRgb(140, 40, 40);
[Reactive] public Color CodeWriteBreakpointColor { get; set; } = Color.FromRgb(40, 120, 80);
[Reactive] public Color CodeReadBreakpointColor { get; set; } = Color.FromRgb(40, 40, 200);
[Reactive] public UInt32 CodeExecBreakpointColor { get; set; } = Color.FromRgb(140, 40, 40).ToUInt32();
[Reactive] public UInt32 CodeWriteBreakpointColor { get; set; } = Color.FromRgb(40, 120, 80).ToUInt32();
[Reactive] public UInt32 CodeReadBreakpointColor { get; set; } = Color.FromRgb(40, 40, 200).ToUInt32();
[Reactive] public Color CodeActiveStatementColor { get; set; } = Colors.Yellow;
[Reactive] public Color CodeActiveMidInstructionColor { get; set; } = Color.FromRgb(255, 220, 40);
[Reactive] public UInt32 CodeActiveStatementColor { get; set; } = Colors.Yellow.ToUInt32();
[Reactive] public UInt32 CodeActiveMidInstructionColor { get; set; } = Color.FromRgb(255, 220, 40).ToUInt32();
[Reactive] public List<int> LabelListColumnWidths { get; set; } = new();
[Reactive] public List<int> FunctionListColumnWidths { get; set; } = new();
@ -95,6 +97,11 @@ namespace Mesen.Config
}
}
public class CfgColor : ReactiveObject
{
[Reactive] public UInt32 ColorCode { get; set; }
}
public enum BreakInMetric
{
CpuInstructions,

View file

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization;
@ -83,6 +84,7 @@ namespace Mesen.Config
[Reactive] public bool Highlight { get; set; }
[Reactive] public UInt32 ColorCode { get; set; }
[JsonIgnore]
public Color Color
{
get { return Color.FromUInt32(ColorCode); }

View file

@ -5,7 +5,7 @@ namespace Mesen.Config
{
public class RegisterViewerConfig : BaseWindowConfig<RegisterViewerConfig>
{
public RefreshTimingConfig RefreshTiming = new RefreshTimingConfig();
[Reactive] public RefreshTimingConfig RefreshTiming { get; set; } = new();
[Reactive] public List<int> ColumnWidths { get; set; } = new();
}
}

View file

@ -38,7 +38,7 @@ namespace Mesen.Config
string? fileData = FileHelper.ReadAllText(path);
if(fileData != null) {
try {
cfg = JsonSerializer.Deserialize<GameConfig>(fileData, JsonHelper.Options);
cfg = (GameConfig?)JsonSerializer.Deserialize(fileData, typeof(GameConfig), MesenSerializerContext.Default);
if(cfg != null) {
return cfg;
}
@ -55,7 +55,7 @@ namespace Mesen.Config
{
string romName = MainWindowViewModel.Instance.RomInfo.GetRomName();
string path = Path.Combine(ConfigManager.GameConfigFolder, romName + ".json");
FileHelper.WriteAllText(path, JsonSerializer.Serialize(this, JsonHelper.Options));
FileHelper.WriteAllText(path, JsonSerializer.Serialize(this, typeof(GameConfig), MesenSerializerContext.Default));
}
}

View file

@ -9,7 +9,7 @@
Classes="ButtonWithIcon"
>
<StackPanel Orientation="Horizontal">
<Image Name="IconImage" Margin="2 -1 0 0" Stretch="None" IsVisible="{CompiledBinding ShowIcon, ElementName=root}" />
<TextBlock HorizontalAlignment="Center" Text="{CompiledBinding Text, ElementName=root}" Margin="4 0 4 0" />
<Image Name="IconImage" Margin="2 -1 0 0" Stretch="None" IsVisible="{Binding ShowIcon, ElementName=root}" />
<TextBlock HorizontalAlignment="Center" Text="{Binding Text, ElementName=root}" Margin="4 0 4 0" />
</StackPanel>
</Button>

View file

@ -12,7 +12,7 @@
<ComboBox
Name="Dropdown"
HorizontalAlignment="Stretch"
ItemsSource="{CompiledBinding InternalItems, ElementName=root}"
SelectedItem="{CompiledBinding InternalSelectedItem, ElementName=root}"
ItemsSource="{Binding InternalItems, ElementName=root}"
SelectedItem="{Binding InternalSelectedItem, ElementName=root}"
/>
</UserControl>

View file

@ -5,6 +5,7 @@ using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.Media;
using Avalonia.Threading;
using Mesen.Localization;
using System;
using System.Collections;
using System.Linq;
@ -99,7 +100,7 @@ namespace Mesen.Controls
Dispatcher.UIThread.Post(() => {
if(updateAvailableValues) {
if(AvailableValues == null || AvailableValues.Length == 0) {
InternalItems = Enum.GetValues(_enumType);
InternalItems = ResourceHelper.GetEnumValues(_enumType);
} else {
InternalItems = AvailableValues;
}

View file

@ -17,7 +17,7 @@
</Border>
<ContentControl
Content="{Binding Header, ElementName=root}"
Background="{StaticResource ThemeBackgroundBrush}"
Background="{DynamicResource ThemeBackgroundBrush}"
Margin="8 2 0 0"
Padding="3 0"
HorizontalAlignment="Left"

View file

@ -16,14 +16,14 @@
Margin="5 0"
Width="190"
VerticalAlignment="Center"
SelectedItem="{CompiledBinding ControllerType, ElementName=root}"
AvailableValues="{CompiledBinding AvailableValues, ElementName=root}"
SelectedItem="{Binding ControllerType, ElementName=root}"
AvailableValues="{Binding AvailableValues, ElementName=root}"
/>
<Button
VerticalAlignment="Center"
Content="{l:Translate btnSetup}"
Click="btnSetup_Click"
IsEnabled="{CompiledBinding SetupEnabled, ElementName=root}"
IsEnabled="{Binding SetupEnabled, ElementName=root}"
/>
</StackPanel>
</UserControl>

View file

@ -61,28 +61,28 @@
</UserControl.Styles>
<Panel>
<DockPanel Classes.visibleText="{CompiledBinding Text.Length, ElementName=root}">
<DockPanel Classes.visibleText="{Binding Text.Length, ElementName=root}">
<TextBlock
DockPanel.Dock="Bottom"
Classes="VerticalText"
Text="{CompiledBinding Text, ElementName=root}"
Text="{Binding Text, ElementName=root}"
/>
<c:MesenNumericTextBox
Min="{CompiledBinding Minimum, ElementName=root}"
Max="{CompiledBinding Maximum, ElementName=root}"
Value="{CompiledBinding Value, ElementName=root}"
Min="{Binding Minimum, ElementName=root}"
Max="{Binding Maximum, ElementName=root}"
Value="{Binding Value, ElementName=root}"
HorizontalContentAlignment="Center"
IsVisible="{CompiledBinding !HideValue, ElementName=root}"
IsVisible="{Binding !HideValue, ElementName=root}"
/>
<Slider
Minimum="{CompiledBinding Minimum, ElementName=root}"
Maximum="{CompiledBinding Maximum, ElementName=root}"
Orientation="{CompiledBinding Orientation, ElementName=root}"
Value="{CompiledBinding Value, ElementName=root, Mode=TwoWay}"
Minimum="{Binding Minimum, ElementName=root}"
Maximum="{Binding Maximum, ElementName=root}"
Orientation="{Binding Orientation, ElementName=root}"
Value="{Binding Value, ElementName=root, Mode=TwoWay}"
TickPlacement="BottomRight"
TickFrequency="{CompiledBinding TickFrequency, ElementName=root}"
TickFrequency="{Binding TickFrequency, ElementName=root}"
PropertyChanged="Slider_OnPropertyChanged"
LargeChange="5"
SmallChange="1"
@ -90,7 +90,7 @@
</DockPanel>
<TextBlock
Classes="HorizontalText"
Text="{CompiledBinding Text, ElementName=root}"
Text="{Binding Text, ElementName=root}"
/>
</Panel>
</UserControl>

View file

@ -15,7 +15,7 @@
<StackPanel Orientation="Horizontal">
<TextBlock
Text="{Binding Header, ElementName=root}"
Foreground="{StaticResource ThemeControlHighlightLowBrush}"
Foreground="{DynamicResource ThemeControlHighlightLowBrush}"
FontSize="13"
Margin="0 0 0 5"
/>

View file

@ -12,33 +12,33 @@
>
<StackPanel>
<TextBlock Text="{l:Translate lblTop}" HorizontalAlignment="Center" />
<NumericUpDown Value="{CompiledBinding Overscan.Top, ElementName=root}" Minimum="0" Maximum="95" HorizontalAlignment="Center"/>
<NumericUpDown Value="{Binding Overscan.Top, ElementName=root}" Minimum="0" Maximum="95" HorizontalAlignment="Center"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="{l:Translate lblLeft}" HorizontalAlignment="Center" />
<NumericUpDown Value="{CompiledBinding Overscan.Left, ElementName=root}" Minimum="0" Maximum="100" />
<NumericUpDown Value="{Binding Overscan.Left, ElementName=root}" Minimum="0" Maximum="100" />
</StackPanel>
<Border Width="130" Height="122" BorderBrush="{StaticResource MesenGrayBorderColor}" BorderThickness="1">
<Viewbox Width="128" Height="120">
<Canvas Width="256" Height="240">
<Rectangle Width="256" Height="240" Fill="{StaticResource MesenGrayBackgroundColor}" />
<Rectangle Width="{CompiledBinding Overscan.Left, ElementName=root}" Height="240" Fill="DarkGray" Canvas.Left="0" />
<Rectangle Width="{CompiledBinding Overscan.Right, ElementName=root}" Height="240" Fill="DarkGray" Canvas.Right="0" />
<Rectangle Width="256" Height="{CompiledBinding Overscan.Top, ElementName=root}" Fill="DarkGray" Canvas.Top="0" />
<Rectangle Width="256" Height="{CompiledBinding Overscan.Bottom, ElementName=root}" Fill="DarkGray" Canvas.Bottom="0" />
<Rectangle Width="{Binding Overscan.Left, ElementName=root}" Height="240" Fill="DarkGray" Canvas.Left="0" />
<Rectangle Width="{Binding Overscan.Right, ElementName=root}" Height="240" Fill="DarkGray" Canvas.Right="0" />
<Rectangle Width="256" Height="{Binding Overscan.Top, ElementName=root}" Fill="DarkGray" Canvas.Top="0" />
<Rectangle Width="256" Height="{Binding Overscan.Bottom, ElementName=root}" Fill="DarkGray" Canvas.Bottom="0" />
</Canvas>
</Viewbox>
</Border>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="{l:Translate lblRight}" HorizontalAlignment="Center" />
<NumericUpDown Value="{CompiledBinding Overscan.Right, ElementName=root}" Minimum="0" Maximum="100" />
<NumericUpDown Value="{Binding Overscan.Right, ElementName=root}" Minimum="0" Maximum="100" />
</StackPanel>
</StackPanel>
<TextBlock Text="{l:Translate lblBottom}" HorizontalAlignment="Center" />
<NumericUpDown Value="{CompiledBinding Overscan.Bottom, ElementName=root}" Minimum="0" Maximum="95" HorizontalAlignment="Center" />
<NumericUpDown Value="{Binding Overscan.Bottom, ElementName=root}" Minimum="0" Maximum="95" HorizontalAlignment="Center" />
</StackPanel>
</UserControl>

View file

@ -4,6 +4,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:l="using:Mesen.Localization"
xmlns:c="using:Mesen.Controls"
xmlns:dc="using:Mesen.Debugger.Controls"
mc:Ignorable="d" d:DesignWidth="450" d:DesignHeight="400"
x:Name="root"
@ -13,12 +14,12 @@
<Border BorderBrush="#555" BorderThickness="1">
<ScrollViewer HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto" Height="96" AllowAutoHide="False">
<dc:PaletteSelector
PaletteColors="{CompiledBinding Palette, ElementName=root}"
PaletteColors="{Binding Palette, ElementName=root}"
SelectionMode="None"
ColumnCount="{CompiledBinding ColumnCount, ElementName=root}"
BlockSize="{CompiledBinding BlockSize, ElementName=root}"
ColumnCount="{Binding ColumnCount, ElementName=root}"
BlockSize="{Binding BlockSize, ElementName=root}"
ColorClick="PaletteColor_OnClick"
ShowIndexes="{CompiledBinding ShowIndexes, ElementName=root}"
ShowIndexes="{Binding ShowIndexes, ElementName=root}"
/>
</ScrollViewer>
</Border>
@ -32,12 +33,12 @@
Click="btnSelectPalette_OnClick"
>
<Button.ContextMenu>
<ContextMenu Name="Preset" PlacementMode="Bottom" ItemsSource="{CompiledBinding PalettePresets, ElementName=root}">
<ContextMenu Name="Preset" PlacementMode="Bottom" ItemsSource="{Binding PalettePresets, ElementName=root}">
<ContextMenu.Styles>
<Style Selector="MenuItem">
<Setter Property="Header" Value="{Binding Name}" />
<Setter Property="Command" Value="{Binding $parent[UserControl].SelectPreset}" />
<Setter Property="CommandParameter" Value="{Binding Palette}" />
<Setter Property="Header" Value="{Binding Name, DataType={x:Type c:PalettePreset}}" />
<Setter Property="Command" Value="{Binding $parent[c:PaletteConfig].SelectPreset, DataType={x:Type c:PaletteConfig}}" />
<Setter Property="CommandParameter" Value="{Binding Palette, DataType={x:Type c:PalettePreset}}" />
</Style>
</ContextMenu.Styles>
</ContextMenu>

View file

@ -21,20 +21,20 @@
>
<c:SimpleImageViewer
Name="Frame"
Source="{CompiledBinding FrameSurface}"
Source="{Binding FrameSurface}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
/>
<c:SimpleImageViewer
Name="EmuHud"
Source="{CompiledBinding EmuHudSurface}"
Source="{Binding EmuHudSurface}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
RenderOptions.TextRenderingMode="Alias"
/>
<c:SimpleImageViewer
Name="ScriptHud"
Source="{CompiledBinding ScriptHudSurface}"
Source="{Binding ScriptHudSurface}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
RenderOptions.TextRenderingMode="Alias"

View file

@ -31,32 +31,32 @@
<DockPanel Margin="2 2 2 7">
<TextBlock
DockPanel.Dock="Bottom"
Text="{CompiledBinding SubTitle, ElementName=root}"
Text="{Binding SubTitle, ElementName=root}"
TextAlignment="Center"
TextWrapping="Wrap"
IsEnabled="{CompiledBinding Enabled, ElementName=root}"
IsEnabled="{Binding Enabled, ElementName=root}"
/>
<TextBlock
DockPanel.Dock="Bottom"
Text="{CompiledBinding Title, ElementName=root}"
Text="{Binding Title, ElementName=root}"
TextAlignment="Center"
TextWrapping="NoWrap"
TextTrimming="CharacterEllipsis"
IsEnabled="{CompiledBinding Enabled, ElementName=root}"
IsEnabled="{Binding Enabled, ElementName=root}"
/>
<Button
Classes.activeEntry="{CompiledBinding IsActiveEntry, ElementName=root}"
Classes.activeEntry="{Binding IsActiveEntry, ElementName=root}"
BorderThickness="2"
Height="NaN"
Background="Black"
Click="OnImageClick"
IsEnabled="{CompiledBinding Enabled, ElementName=root}"
IsEnabled="{Binding Enabled, ElementName=root}"
HorizontalAlignment="Center"
VerticalAlignment="Stretch"
Padding="0"
>
<c:ImageAspectRatio
Source="{CompiledBinding Image, ElementName=root}"
Source="{Binding Image, ElementName=root}"
RenderOptions.BitmapInterpolationMode="LowQuality"
Stretch="Fill"
StretchDirection="Both"

View file

@ -149,7 +149,7 @@ namespace Mesen.Debugger
public Color GetColor()
{
DebuggerConfig config = ConfigManager.Config.Debug.Debugger;
return BreakOnExec? config.CodeExecBreakpointColor: (BreakOnWrite ? config.CodeWriteBreakpointColor : config.CodeReadBreakpointColor);
return Color.FromUInt32(BreakOnExec ? config.CodeExecBreakpointColor: (BreakOnWrite ? config.CodeWriteBreakpointColor : config.CodeReadBreakpointColor));
}
public Breakpoint Clone()

View file

@ -102,9 +102,9 @@
VerticalAlignment="Top"
/>
<ContentControl Content="{CompiledBinding BreakpointBar, ElementName=root}" />
<ContentControl Content="{Binding BreakpointBar, ElementName=root}" />
<Canvas Classes="hidden" IsVisible="{CompiledBinding ShowMarkers, ElementName=root}">
<Canvas Classes="hidden" IsVisible="{Binding ShowMarkers, ElementName=root}">
<Canvas.Transitions>
<Transitions>
<DoubleTransition Property="Opacity" Duration="0:0:0.1" />
@ -122,13 +122,13 @@
</Canvas.Styles>
<TextBlock Text="00" Canvas.Top="0" />
<TextBlock Text="20" Canvas.Top="{CompiledBinding MarkerTop[0], ElementName=root}" />
<TextBlock Text="40" Canvas.Top="{CompiledBinding MarkerTop[1], ElementName=root}" />
<TextBlock Text="60" Canvas.Top="{CompiledBinding MarkerTop[2], ElementName=root}" />
<TextBlock Text="80" Canvas.Top="{CompiledBinding MarkerTop[3], ElementName=root}" />
<TextBlock Text="A0" Canvas.Top="{CompiledBinding MarkerTop[4], ElementName=root}" />
<TextBlock Text="C0" Canvas.Top="{CompiledBinding MarkerTop[5], ElementName=root}" />
<TextBlock Text="E0" Canvas.Top="{CompiledBinding MarkerTop[6], ElementName=root}" />
<TextBlock Text="20" Canvas.Top="{Binding MarkerTop[0], ElementName=root}" />
<TextBlock Text="40" Canvas.Top="{Binding MarkerTop[1], ElementName=root}" />
<TextBlock Text="60" Canvas.Top="{Binding MarkerTop[2], ElementName=root}" />
<TextBlock Text="80" Canvas.Top="{Binding MarkerTop[3], ElementName=root}" />
<TextBlock Text="A0" Canvas.Top="{Binding MarkerTop[4], ElementName=root}" />
<TextBlock Text="C0" Canvas.Top="{Binding MarkerTop[5], ElementName=root}" />
<TextBlock Text="E0" Canvas.Top="{Binding MarkerTop[6], ElementName=root}" />
<TextBlock Text="FF" Canvas.Bottom="0" />
</Canvas>
</Panel>

View file

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:l="using:Mesen.Localization"
xmlns:u="using:Mesen.Utilities"
xmlns:cp="using:ThemeEditor.Controls.ColorPicker"
xmlns:cp="using:Avalonia.Markup.Xaml.Converters"
mc:Ignorable="d" d:DesignWidth="400" d:DesignHeight="50"
x:Name="root"
HorizontalAlignment="Stretch"

View file

@ -5,7 +5,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:l="using:Mesen.Localization"
xmlns:u="using:Mesen.Utilities"
xmlns:cp="using:ThemeEditor.Controls.ColorPicker"
xmlns:cp="using:Avalonia.Markup.Xaml.Converters"
mc:Ignorable="d" d:DesignWidth="400" d:DesignHeight="50"
x:Name="root"
HorizontalAlignment="Stretch"

View file

@ -27,14 +27,14 @@
<Border
BorderBrush="{DynamicResource MesenBlackBorderColor}"
BorderThickness="1"
Background="{CompiledBinding Config.Color, ElementName=root, Converter={StaticResource BrushConverter}}"
Background="{Binding Config.Color, ElementName=root, Converter={StaticResource BrushConverter}}"
Width="16"
Height="16"
/>
</Button>
<CheckBox
Content="{CompiledBinding Text, ElementName=root}"
IsChecked="{CompiledBinding Config.Visible, ElementName=root}"
Content="{Binding Text, ElementName=root}"
IsChecked="{Binding Config.Visible, ElementName=root}"
MinWidth="0"
/>
</StackPanel>

View file

@ -12,33 +12,33 @@
<Border BorderBrush="Gray" BorderThickness="1">
<ScrollViewer
Name="scrollViewer"
VerticalScrollBarVisibility="{CompiledBinding ScrollBarVisibility, ElementName=root}"
HorizontalScrollBarVisibility="{CompiledBinding ScrollBarVisibility, ElementName=root}"
VerticalScrollBarVisibility="{Binding ScrollBarVisibility, ElementName=root}"
HorizontalScrollBarVisibility="{Binding ScrollBarVisibility, ElementName=root}"
AllowAutoHide="False"
Offset="{CompiledBinding ScrollOffset, ElementName=root, Mode=TwoWay}"
Offset="{Binding ScrollOffset, ElementName=root, Mode=TwoWay}"
>
<Border Background="{StaticResource ViewerBgBrush}" HorizontalAlignment="Left" VerticalAlignment="Top">
<dc:PictureViewer
x:Name="picViewer"
PointerPressed="Viewer_PointerPressed"
PointerMoved="Viewer_PointerMoved"
Source="{CompiledBinding Source, ElementName=root}"
Zoom="{CompiledBinding Zoom, ElementName=root}"
AllowSelection="{CompiledBinding AllowSelection, ElementName=root}"
ShowMousePosition="{CompiledBinding ShowMousePosition, ElementName=root}"
GridSizeX="{CompiledBinding GridSizeX, ElementName=root}"
GridSizeY="{CompiledBinding GridSizeY, ElementName=root}"
ShowGrid="{CompiledBinding ShowGrid, ElementName=root}"
CustomGrids="{CompiledBinding CustomGrids, ElementName=root}"
SelectionRect="{CompiledBinding SelectionRect, ElementName=root}"
OverlayRect="{CompiledBinding OverlayRect, ElementName=root}"
MouseOverRect="{CompiledBinding MouseOverRect, ElementName=root}"
OverlayLines="{CompiledBinding OverlayLines, ElementName=root}"
GridHighlight="{CompiledBinding GridHighlight, ElementName=root}"
TopClipSize="{CompiledBinding TopClipSize, ElementName=root}"
BottomClipSize="{CompiledBinding BottomClipSize, ElementName=root}"
LeftClipSize="{CompiledBinding LeftClipSize, ElementName=root}"
RightClipSize="{CompiledBinding RightClipSize, ElementName=root}"
Source="{Binding Source, ElementName=root}"
Zoom="{Binding Zoom, ElementName=root}"
AllowSelection="{Binding AllowSelection, ElementName=root}"
ShowMousePosition="{Binding ShowMousePosition, ElementName=root}"
GridSizeX="{Binding GridSizeX, ElementName=root}"
GridSizeY="{Binding GridSizeY, ElementName=root}"
ShowGrid="{Binding ShowGrid, ElementName=root}"
CustomGrids="{Binding CustomGrids, ElementName=root}"
SelectionRect="{Binding SelectionRect, ElementName=root}"
OverlayRect="{Binding OverlayRect, ElementName=root}"
MouseOverRect="{Binding MouseOverRect, ElementName=root}"
OverlayLines="{Binding OverlayLines, ElementName=root}"
GridHighlight="{Binding GridHighlight, ElementName=root}"
TopClipSize="{Binding TopClipSize, ElementName=root}"
BottomClipSize="{Binding BottomClipSize, ElementName=root}"
LeftClipSize="{Binding LeftClipSize, ElementName=root}"
RightClipSize="{Binding RightClipSize, ElementName=root}"
/>
</Border>
</ScrollViewer>

View file

@ -20,8 +20,8 @@
>
<Panel Background="{StaticResource ViewerBgBrush}" HorizontalAlignment="Center" VerticalAlignment="Center">
<dc:PictureViewer
Source="{CompiledBinding SpritePreview}"
Zoom="{CompiledBinding SpritePreviewZoom}"
Source="{Binding SpritePreview}"
Zoom="{Binding SpritePreviewZoom}"
ShowMousePosition="False"
AllowSelection="False"
/>

View file

@ -258,12 +258,12 @@ namespace Mesen.Debugger
public class DockEntryDefinition
{
public DockEntryType Type;
public double Proportion = 0;
public Orientation Orientation = Orientation.Horizontal;
public string Name = "";
public string ToolTypeName = "";
public int SelectedIndex = 0;
public List<DockEntryDefinition>? Children;
public DockEntryType Type { get; set; }
public double Proportion { get; set; } = 0;
public Orientation Orientation { get; set; } = Orientation.Horizontal;
public string Name { get; set; } = "";
public string ToolTypeName { get; set; } = "";
public int SelectedIndex { get; set; } = 0;
public List<DockEntryDefinition>? Children { get; set; }
}
}

View file

@ -1,41 +0,0 @@
using Avalonia.Controls;
using Avalonia.Controls.Templates;
using Dock.Model.Core;
using Mesen.Debugger.Views.DebuggerDock;
using Mesen.ViewModels;
using System;
namespace Mesen.Debugger
{
class DebuggerViewLocator : IDataTemplate
{
public Control Build(object? data)
{
string? name = data?.GetType().FullName?.Replace("ViewModel", "View");
if(name == null) {
return new TextBlock { Text = "Not Found: " + name };
}
Type? type = Type.GetType(name);
if(type != null) {
object? obj = Activator.CreateInstance(type);
if(obj is Control) {
return (Control)obj;
} else {
return new TextBlock();
}
} else {
if(data?.GetType().Name.StartsWith(nameof(ToolContainerView)) == true) {
return new ToolContainerView();
} else {
return new TextBlock { Text = "Not Found: " + name };
}
}
}
public bool Match(object? data)
{
return data is ViewModelBase || data is IDockable;
}
}
}

View file

@ -30,9 +30,9 @@ namespace Mesen.Debugger.Disassembly
DebuggerFeatures features = DebugApi.GetDebuggerFeatures(CpuType);
if(features.ChangeProgramCounter) {
props.TextBgColor = ConfigManager.Config.Debug.Debugger.CodeActiveStatementColor;
props.TextBgColor = Color.FromUInt32(ConfigManager.Config.Debug.Debugger.CodeActiveStatementColor);
} else {
props.TextBgColor = ConfigManager.Config.Debug.Debugger.CodeActiveMidInstructionColor;
props.TextBgColor = Color.FromUInt32(ConfigManager.Config.Debug.Debugger.CodeActiveMidInstructionColor);
}
props.FgColor = ColorHelper.GetContrastTextColor(props.TextBgColor.Value);
props.Symbol |= LineSymbol.Arrow;
@ -101,11 +101,11 @@ namespace Mesen.Debugger.Disassembly
}
if(lineData.Flags.HasFlag(LineFlags.VerifiedData)) {
props.LineBgColor = cfg.CodeVerifiedDataColor;
props.LineBgColor = Color.FromUInt32(cfg.CodeVerifiedDataColor);
} else if(lineData.Flags.HasFlag(LineFlags.UnexecutedCode)) {
props.LineBgColor = cfg.CodeUnexecutedCodeColor;
props.LineBgColor = Color.FromUInt32(cfg.CodeUnexecutedCodeColor);
} else if(!lineData.Flags.HasFlag(LineFlags.VerifiedCode)) {
props.LineBgColor = cfg.CodeUnidentifiedDataColor;
props.LineBgColor = Color.FromUInt32(cfg.CodeUnidentifiedDataColor);
}
return props;

View file

@ -38,15 +38,15 @@ namespace Mesen.Debugger.Disassembly
while(codeString.Length > 0) {
Match m;
if((m = _comment.Match(codeString)).Success) {
colors.Add(new CodeColor(m.Value, cfg.CodeCommentColor, CodeSegmentType.Comment, pos));
colors.Add(new CodeColor(m.Value, Color.FromUInt32(cfg.CodeCommentColor), CodeSegmentType.Comment, pos));
} else if(colors.Count == 0 && (m = _labelDef.Match(codeString)).Success) {
colors.Add(new CodeColor(m.Groups[1].Value, cfg.CodeLabelDefinitionColor, CodeSegmentType.LabelDefinition, pos));
colors.Add(new CodeColor(m.Groups[1].Value, Color.FromUInt32(cfg.CodeLabelDefinitionColor), CodeSegmentType.LabelDefinition, pos));
} else if(!foundOpCode && (m = _directive.Match(codeString)).Success) {
foundDirective = true;
colors.Add(new CodeColor(m.Groups[1].Value, cfg.CodeOpcodeColor, CodeSegmentType.Directive, pos));
colors.Add(new CodeColor(m.Groups[1].Value, Color.FromUInt32(cfg.CodeOpcodeColor), CodeSegmentType.Directive, pos));
} else if(!foundOpCode && (m = _opCode.Match(codeString)).Success) {
foundOpCode = true;
colors.Add(new CodeColor(m.Groups[1].Value, textColor ?? cfg.CodeOpcodeColor, CodeSegmentType.OpCode, pos));
colors.Add(new CodeColor(m.Groups[1].Value, textColor ?? Color.FromUInt32(cfg.CodeOpcodeColor), CodeSegmentType.OpCode, pos));
} else if((foundOpCode || foundDirective) && (m = _operand.Match(codeString)).Success) {
string operand = m.Value;
Color operandColor = Colors.Black;
@ -54,15 +54,15 @@ namespace Mesen.Debugger.Disassembly
if(operand.Length > 0) {
switch(operand[0]) {
case '#':
operandColor = cfg.CodeImmediateColor;
operandColor = Color.FromUInt32(cfg.CodeImmediateColor);
type = CodeSegmentType.ImmediateValue;
break;
case '$':
operandColor = cfg.CodeAddressColor;
operandColor = Color.FromUInt32(cfg.CodeAddressColor);
type = CodeSegmentType.Address;
break;
default:
operandColor = cfg.CodeLabelDefinitionColor;
operandColor = Color.FromUInt32(cfg.CodeLabelDefinitionColor);
type = CodeSegmentType.Label;
break;
}
@ -94,7 +94,7 @@ namespace Mesen.Debugger.Disassembly
if(lineData.ShowEffectiveAddress && lineData.EffectiveAddress >= 0) {
string effAddress = lineData.GetEffectiveAddressString(addressFormat, out CodeSegmentType type);
colors.Add(new CodeColor(" " + effAddress, cfg.CodeEffectiveAddressColor, type));
colors.Add(new CodeColor(" " + effAddress, Color.FromUInt32(cfg.CodeEffectiveAddressColor), type));
}
if(showMemoryValues && lineData.ValueSize > 0) {
@ -102,13 +102,13 @@ namespace Mesen.Debugger.Disassembly
}
if(!string.IsNullOrWhiteSpace(lineData.Comment)) {
colors.Add(new CodeColor(" " + lineData.Comment, cfg.CodeCommentColor, CodeSegmentType.Comment));
colors.Add(new CodeColor(" " + lineData.Comment, Color.FromUInt32(cfg.CodeCommentColor), CodeSegmentType.Comment));
}
} else {
if(lineData.Flags.HasFlag(LineFlags.Comment)) {
colors.Add(new CodeColor(lineData.Comment, cfg.CodeCommentColor, CodeSegmentType.Comment));
colors.Add(new CodeColor(lineData.Comment, Color.FromUInt32(cfg.CodeCommentColor), CodeSegmentType.Comment));
} else if(codeString.EndsWith(":")) {
colors.Add(new CodeColor(codeString, cfg.CodeLabelDefinitionColor, CodeSegmentType.LabelDefinition));
colors.Add(new CodeColor(codeString, Color.FromUInt32(cfg.CodeLabelDefinitionColor), CodeSegmentType.LabelDefinition));
} else {
colors.Add(new CodeColor(codeString, textColor ?? defaultColor, CodeSegmentType.None));
}

View file

@ -62,15 +62,15 @@ namespace Mesen.Debugger.Disassembly
while(codeString.Length > 0) {
Match m;
if((m = _comment.Match(codeString)).Success) {
colors.Add(new CodeColor(m.Value, textColor ?? cfg.CodeCommentColor, CodeSegmentType.Comment, pos));
colors.Add(new CodeColor(m.Value, textColor ?? Color.FromUInt32(cfg.CodeCommentColor), CodeSegmentType.Comment, pos));
} else if((m = _number.Match(codeString)).Success) {
colors.Add(new CodeColor(m.Value, textColor ?? cfg.CodeImmediateColor, CodeSegmentType.ImmediateValue, pos));
colors.Add(new CodeColor(m.Value, textColor ?? Color.FromUInt32(cfg.CodeImmediateColor), CodeSegmentType.ImmediateValue, pos));
} else if((m = _keywords.Match(codeString)).Success) {
colors.Add(new CodeColor(m.Groups[1].Value, textColor ?? cfg.CodeAddressColor, CodeSegmentType.OpCode, pos));
colors.Add(new CodeColor(m.Groups[1].Value, textColor ?? Color.FromUInt32(cfg.CodeAddressColor), CodeSegmentType.OpCode, pos));
} else if((m = _text.Match(codeString)).Success) {
colors.Add(new CodeColor(m.Groups[1].Value, textColor ?? defaultColor, CodeSegmentType.OpCode, pos));
} else if((m = _syntax.Match(codeString)).Success) {
colors.Add(new CodeColor(m.Value, textColor ?? cfg.CodeEffectiveAddressColor, CodeSegmentType.Syntax, pos));
colors.Add(new CodeColor(m.Value, textColor ?? Color.FromUInt32(cfg.CodeEffectiveAddressColor), CodeSegmentType.Syntax, pos));
} else if((m = _space.Match(codeString)).Success) {
colors.Add(new CodeColor(m.Value, textColor ?? defaultColor, CodeSegmentType.None, pos));
}

View file

@ -170,13 +170,13 @@ namespace Mesen.Debugger
if(_breakpointTypes != null) {
switch(_breakpointTypes[index]) {
case BreakpointTypeFlags.Execute:
_byteInfo.BorderColor = ConfigManager.Config.Debug.Debugger.CodeExecBreakpointColor;
_byteInfo.BorderColor = Color.FromUInt32(ConfigManager.Config.Debug.Debugger.CodeExecBreakpointColor);
break;
case BreakpointTypeFlags.Write:
_byteInfo.BorderColor = ConfigManager.Config.Debug.Debugger.CodeWriteBreakpointColor;
_byteInfo.BorderColor = Color.FromUInt32(ConfigManager.Config.Debug.Debugger.CodeWriteBreakpointColor);
break;
case BreakpointTypeFlags.Read:
_byteInfo.BorderColor = ConfigManager.Config.Debug.Debugger.CodeReadBreakpointColor;
_byteInfo.BorderColor = Color.FromUInt32(ConfigManager.Config.Debug.Debugger.CodeReadBreakpointColor);
break;
}
}

View file

@ -22,7 +22,7 @@
<ScrollViewer>
<DockPanel>
<StackPanel DockPanel.Dock="Top" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel DockPanel.Dock="Top" IsEnabled="{Binding EditAllowed}">
<WrapPanel MaxWidth="330" HorizontalAlignment="Left">
<WrapPanel.Styles>
<Style Selector="StackPanel > TextBlock">
@ -35,70 +35,70 @@
<StackPanel Orientation="Horizontal">
<TextBlock>R0:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg0}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg0}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R1:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg1}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg1}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R2:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg2}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg2}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R3:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg3}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg3}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R4:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg4}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg4}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R5:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg5}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg5}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R6:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg6}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg6}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R7:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg7}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg7}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R8:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg8}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg8}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R9:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg9}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg9}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R10:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg10}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg10}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R11:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg11}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg11}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R12:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg12}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg12}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R13:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg13}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg13}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R14:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg14}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg14}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R15:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg15}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg15}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
</WrapPanel>
@ -107,45 +107,45 @@
<WrapPanel Margin="0 3 0 0">
<StackPanel Orientation="Horizontal">
<TextBlock>MDR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegMdr}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding RegMdr}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>MAR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegMar}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding RegMar}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>DPR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegDpr}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding RegDpr}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
</WrapPanel>
<WrapPanel Margin="0 3">
<StackPanel Orientation="Horizontal">
<TextBlock>ROM:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RomBuffer}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding RomBuffer}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>RAM:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RamBuffer}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding RamBuffer}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
</WrapPanel>
<WrapPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>PB:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPb}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegPb}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>P:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegP}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegP}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>PC:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPc}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegPc}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>SP:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegSp}" Hex="True" Max="7" />
<c:MesenNumericTextBox Value="{Binding RegSp}" Hex="True" Max="7" />
</StackPanel>
</WrapPanel>
@ -154,19 +154,19 @@
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal">
<TextBlock>A:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegA}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding RegA}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagZero}" Content="Zero" />
<CheckBox IsChecked="{CompiledBinding FlagCarry}" Content="Carry" />
<CheckBox IsChecked="{Binding FlagZero}" Content="Zero" />
<CheckBox IsChecked="{Binding FlagCarry}" Content="Carry" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagNegative}" Content="Negative" />
<CheckBox IsChecked="{CompiledBinding FlagOverflow}" Content="Overflow" />
<CheckBox IsChecked="{Binding FlagNegative}" Content="Negative" />
<CheckBox IsChecked="{Binding FlagOverflow}" Content="Overflow" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagIrq}" Content="IRQ" />
<CheckBox IsChecked="{Binding FlagIrq}" Content="IRQ" />
</StackPanel>
</WrapPanel>
</WrapPanel>

View file

@ -24,9 +24,9 @@
<StackPanel>
<DockPanel>
<StackPanel DockPanel.Dock="Right">
<StackPanel Orientation="Horizontal" IsEnabled="{CompiledBinding EditAllowed}" VerticalAlignment="Top">
<StackPanel Orientation="Horizontal" IsEnabled="{Binding EditAllowed}" VerticalAlignment="Top">
<TextBlock Margin="0">SP:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegSP}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegSP}" Hex="True" Max="0xFFFF" />
</StackPanel>
<TextBox
VerticalAlignment="Top"
@ -36,11 +36,11 @@
AcceptsReturn="True"
IsReadOnly="True"
ScrollViewer.VerticalScrollBarVisibility="Visible"
Text="{CompiledBinding StackPreview}"
Text="{Binding StackPreview}"
/>
</StackPanel>
<WrapPanel DockPanel.Dock="Left" IsEnabled="{CompiledBinding EditAllowed}">
<WrapPanel DockPanel.Dock="Left" IsEnabled="{Binding EditAllowed}">
<WrapPanel Width="95">
<WrapPanel.Styles>
<Style Selector="StackPanel > TextBlock">
@ -53,70 +53,70 @@
<StackPanel Orientation="Horizontal">
<TextBlock>A:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegA}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegA}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>F:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegFlags}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegFlags}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>B:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegB}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegB}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>C:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegC}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegC}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>D:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegD}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegD}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>E:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegE}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegE}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>H:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegH}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegH}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>L:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegL}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegL}" Hex="True" Max="0xFF" />
</StackPanel>
</WrapPanel>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>PC:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPC}" Hex="True" Max="0xFFFF" IsEnabled="{CompiledBinding EditAllowed}" />
<c:MesenNumericTextBox Value="{Binding RegPC}" Hex="True" Max="0xFFFF" IsEnabled="{Binding EditAllowed}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Cycle:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding CycleCount}" IsEnabled="False" Width="70" />
<c:MesenNumericTextBox Value="{Binding CycleCount}" IsEnabled="False" Width="70" />
</StackPanel>
</StackPanel>
</WrapPanel>
</DockPanel>
<Rectangle Stroke="{StaticResource MesenGrayBorderColor}" StrokeThickness="1" Margin="5 5 5 2" DockPanel.Dock="Top" />
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top" IsEnabled="{CompiledBinding EditAllowed}">
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top" IsEnabled="{Binding EditAllowed}">
<StackPanel Orientation="Horizontal">
<TextBlock>F:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegFlags}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegFlags}" Hex="True" Max="0xFF" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagCarry}" Content="Carry" />
<CheckBox IsChecked="{CompiledBinding FlagHalf}" Content="Half Carry" />
<CheckBox IsChecked="{Binding FlagCarry}" Content="Carry" />
<CheckBox IsChecked="{Binding FlagHalf}" Content="Half Carry" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagAddSub}" Content="Add/Sub (N)" />
<CheckBox IsChecked="{CompiledBinding FlagZero}" Content="Zero" />
<CheckBox IsChecked="{Binding FlagAddSub}" Content="Add/Sub (N)" />
<CheckBox IsChecked="{Binding FlagZero}" Content="Zero" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagHalted}" Content="Halted" />
<CheckBox IsChecked="{CompiledBinding FlagIme}" Content="IME" />
<CheckBox IsChecked="{Binding FlagHalted}" Content="Halted" />
<CheckBox IsChecked="{Binding FlagIme}" Content="IME" />
</StackPanel>
</WrapPanel>
</WrapPanel>
@ -132,12 +132,12 @@
<StackPanel Orientation="Horizontal">
<TextBlock>Scanline:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Scanline}" />
<c:MesenNumericTextBox Value="{Binding Scanline}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Cycle:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Cycle}" />
<c:MesenNumericTextBox Value="{Binding Cycle}" />
</StackPanel>
</WrapPanel>
</StackPanel>

View file

@ -22,7 +22,7 @@
<ScrollViewer>
<DockPanel>
<StackPanel DockPanel.Dock="Top" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel DockPanel.Dock="Top" IsEnabled="{Binding EditAllowed}">
<WrapPanel MaxWidth="400" HorizontalAlignment="Left">
<WrapPanel.Styles>
<Style Selector="StackPanel > TextBlock">
@ -36,76 +36,76 @@
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBlock>R0:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg0}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg0}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R1:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg1}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg1}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R2:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg2}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg2}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R3:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg3}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg3}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBlock>R4:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg4}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg4}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R5:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg5}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg5}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R6:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg6}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg6}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R7:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg7}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg7}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<TextBlock>R8:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg8}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg8}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R9:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg9}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg9}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R10:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg10}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg10}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R11:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg11}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg11}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
</StackPanel>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock>R12:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg12}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg12}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock>SP (R13):</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg13}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg13}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock>LR (R14):</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg14}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg14}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock>PC (R15):</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg15}" Hex="True" Max="0xFFFFFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg15}" Hex="True" Max="0xFFFFFFFF" />
</StackPanel>
</StackPanel>
</WrapPanel>
@ -116,26 +116,26 @@
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal">
<TextBlock>CPSR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegCpsr}" Hex="True" Max="0xFFFFFFFF" IsEnabled="False" />
<c:MesenNumericTextBox Value="{Binding RegCpsr}" Hex="True" Max="0xFFFFFFFF" IsEnabled="False" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagNegative}" Content="Negative" />
<CheckBox IsChecked="{CompiledBinding FlagZero}" Content="Zero" />
<CheckBox IsChecked="{Binding FlagNegative}" Content="Negative" />
<CheckBox IsChecked="{Binding FlagZero}" Content="Zero" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagCarry}" Content="Carry" />
<CheckBox IsChecked="{CompiledBinding FlagOverflow}" Content="Overflow" />
<CheckBox IsChecked="{Binding FlagCarry}" Content="Carry" />
<CheckBox IsChecked="{Binding FlagOverflow}" Content="Overflow" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagIrqDisable}" Content="IRQ Disabled" />
<CheckBox IsChecked="{CompiledBinding FlagFiqDisable}" Content="FIQ Disabled" />
<CheckBox IsChecked="{Binding FlagIrqDisable}" Content="IRQ Disabled" />
<CheckBox IsChecked="{Binding FlagFiqDisable}" Content="FIQ Disabled" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagThumb}" Content="Thumb" />
<CheckBox IsChecked="{Binding FlagThumb}" Content="Thumb" />
<StackPanel Orientation="Horizontal">
<TextBlock>Mode:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Mode}" Hex="True" Max="0x7" IsEnabled="False" />
<c:MesenNumericTextBox Value="{Binding Mode}" Hex="True" Max="0x7" IsEnabled="False" />
</StackPanel>
</StackPanel>
</WrapPanel>
@ -152,12 +152,12 @@
<StackPanel Orientation="Horizontal">
<TextBlock>Scanline:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Scanline}" />
<c:MesenNumericTextBox Value="{Binding Scanline}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Cycle:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Cycle}" />
<c:MesenNumericTextBox Value="{Binding Cycle}" />
</StackPanel>
</WrapPanel>
</StackPanel>

View file

@ -22,7 +22,7 @@
<ScrollViewer>
<DockPanel>
<StackPanel DockPanel.Dock="Top" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel DockPanel.Dock="Top" IsEnabled="{Binding EditAllowed}">
<WrapPanel MaxWidth="300" HorizontalAlignment="Left">
<WrapPanel.Styles>
<Style Selector="StackPanel > TextBlock">
@ -35,70 +35,70 @@
<StackPanel Orientation="Horizontal">
<TextBlock>R0:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg0}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg0}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R1:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg1}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg1}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R2:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg2}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg2}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R3:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg3}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg3}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R4:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg4}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg4}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R5:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg5}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg5}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R6:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg6}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg6}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R7:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg7}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg7}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R8:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg8}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg8}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R9:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg9}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg9}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R10:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg10}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg10}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R11:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg11}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg11}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R12:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg12}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg12}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R13:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg13}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg13}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R14:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg14}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg14}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R15:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Reg15}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding Reg15}" Hex="True" Max="0xFFFF" />
</StackPanel>
</WrapPanel>
@ -107,32 +107,32 @@
<WrapPanel Margin="0 5">
<StackPanel Orientation="Horizontal">
<TextBlock>SRC:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegSrc}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegSrc}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>DST:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegDst}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegDst}" Hex="True" Max="0xFF" />
</StackPanel>
</WrapPanel>
<WrapPanel Margin="0 5">
<StackPanel Orientation="Horizontal">
<TextBlock>PBR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPbr}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegPbr}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>ROMBR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RomBank}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RomBank}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>RAMBR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RamBank}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RamBank}" Hex="True" Max="0xFF" />
</StackPanel>
</WrapPanel>
<WrapPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>RAM ADDR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RamAddrCache}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RamAddrCache}" Hex="True" Max="0xFFFF" />
</StackPanel>
</WrapPanel>
<Rectangle Stroke="{StaticResource MesenGrayBorderColor}" StrokeThickness="1" Margin="5 5 5 2" />
@ -140,32 +140,32 @@
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal">
<TextBlock>SFR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegSfr}" Hex="True" Max="0xFFFF" IsEnabled="False" />
<c:MesenNumericTextBox Value="{Binding RegSfr}" Hex="True" Max="0xFFFF" IsEnabled="False" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagZero}" Content="Zero" />
<CheckBox IsChecked="{CompiledBinding FlagCarry}" Content="Carry" />
<CheckBox IsChecked="{Binding FlagZero}" Content="Zero" />
<CheckBox IsChecked="{Binding FlagCarry}" Content="Carry" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagSign}" Content="Sign" />
<CheckBox IsChecked="{CompiledBinding FlagOverflow}" Content="Overflow" />
<CheckBox IsChecked="{Binding FlagSign}" Content="Sign" />
<CheckBox IsChecked="{Binding FlagOverflow}" Content="Overflow" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagRunning}" Content="Running" />
<CheckBox IsChecked="{CompiledBinding FlagRomReadPending}" Content="ROM Read" />
<CheckBox IsChecked="{Binding FlagRunning}" Content="Running" />
<CheckBox IsChecked="{Binding FlagRomReadPending}" Content="ROM Read" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagAlt1}" Content="Alt1" />
<CheckBox IsChecked="{CompiledBinding FlagAlt2}" Content="Alt2" />
<CheckBox IsChecked="{Binding FlagAlt1}" Content="Alt1" />
<CheckBox IsChecked="{Binding FlagAlt2}" Content="Alt2" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagImmLow}" Content="IL" IsVisible="False" />
<CheckBox IsChecked="{CompiledBinding FlagImmHigh}" Content="IH" IsVisible="False" />
<CheckBox IsChecked="{Binding FlagImmLow}" Content="IL" IsVisible="False" />
<CheckBox IsChecked="{Binding FlagImmHigh}" Content="IH" IsVisible="False" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagPrefix}" Content="Prefix" />
<CheckBox IsChecked="{CompiledBinding FlagIrq}" Content="IRQ" />
<CheckBox IsChecked="{Binding FlagPrefix}" Content="Prefix" />
<CheckBox IsChecked="{Binding FlagIrq}" Content="IRQ" />
</StackPanel>
</WrapPanel>
</WrapPanel>
@ -173,23 +173,23 @@
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal">
<TextBlock>COLOR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegColor}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegColor}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>POR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPor}" Hex="True" Max="0xFF" IsEnabled="False" />
<c:MesenNumericTextBox Value="{Binding RegPor}" Hex="True" Max="0xFF" IsEnabled="False" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagPlotTransparent}" Content="Plot Transparent" />
<CheckBox IsChecked="{CompiledBinding FlagPlotDither}" Content="Plot Dither" />
<CheckBox IsChecked="{Binding FlagPlotTransparent}" Content="Plot Transparent" />
<CheckBox IsChecked="{Binding FlagPlotDither}" Content="Plot Dither" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagColorHighNibble}" Content="Color Src High" />
<CheckBox IsChecked="{CompiledBinding FlagColorFreezeHigh}" Content="Color Freeze High" />
<CheckBox IsChecked="{Binding FlagColorHighNibble}" Content="Color Src High" />
<CheckBox IsChecked="{Binding FlagColorFreezeHigh}" Content="Color Freeze High" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagObjMode}" Content="Obj Mode" />
<CheckBox IsChecked="{Binding FlagObjMode}" Content="Obj Mode" />
</StackPanel>
</WrapPanel>
</WrapPanel>

View file

@ -22,7 +22,7 @@
<ScrollViewer>
<DockPanel>
<StackPanel DockPanel.Dock="Top" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel DockPanel.Dock="Top" IsEnabled="{Binding EditAllowed}">
<WrapPanel MaxWidth="300" HorizontalAlignment="Left">
<WrapPanel.Styles>
<Style Selector="StackPanel > TextBlock">
@ -35,53 +35,53 @@
<StackPanel Orientation="Horizontal">
<TextBlock>TR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegTR}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegTR}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>TRB:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegTRB}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegTRB}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>PC:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPC}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegPC}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>SP:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegSP}" Hex="True" Max="8" />
<c:MesenNumericTextBox Value="{Binding RegSP}" Hex="True" Max="8" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>RP:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegRP}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegRP}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>DP:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegDP}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegDP}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>DR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegDR}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegDR}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>SR:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegSR}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegSR}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>K:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegK}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegK}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>L:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegL}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegL}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>M:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegM}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegM}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>N:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegN}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegN}" Hex="True" Max="0xFFFF" />
</StackPanel>
</WrapPanel>
@ -90,21 +90,21 @@
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal">
<TextBlock>A:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegA}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegA}" Hex="True" Max="0xFFFF" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding RegA_C}" Content="Carry" />
<CheckBox IsChecked="{CompiledBinding RegA_Z}" Content="Zero" />
<CheckBox IsChecked="{Binding RegA_C}" Content="Carry" />
<CheckBox IsChecked="{Binding RegA_Z}" Content="Zero" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding RegA_V0}" Content="Overflow 0" />
<CheckBox IsChecked="{CompiledBinding RegA_V1}" Content="Overflow 1" />
<CheckBox IsChecked="{Binding RegA_V0}" Content="Overflow 0" />
<CheckBox IsChecked="{Binding RegA_V1}" Content="Overflow 1" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding RegA_S0}" Content="Sign 0" />
<CheckBox IsChecked="{CompiledBinding RegA_S1}" Content="Sign 1" />
<CheckBox IsChecked="{Binding RegA_S0}" Content="Sign 0" />
<CheckBox IsChecked="{Binding RegA_S1}" Content="Sign 1" />
</StackPanel>
</WrapPanel>
</WrapPanel>
@ -112,21 +112,21 @@
<WrapPanel Margin="0 5 0 0" DockPanel.Dock="Top">
<StackPanel Orientation="Horizontal">
<TextBlock>B:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegB}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegB}" Hex="True" Max="0xFFFF" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding RegB_C}" Content="Carry" />
<CheckBox IsChecked="{CompiledBinding RegB_Z}" Content="Zero" />
<CheckBox IsChecked="{Binding RegB_C}" Content="Carry" />
<CheckBox IsChecked="{Binding RegB_Z}" Content="Zero" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding RegB_V0}" Content="Overflow 0" />
<CheckBox IsChecked="{CompiledBinding RegB_V1}" Content="Overflow 1" />
<CheckBox IsChecked="{Binding RegB_V0}" Content="Overflow 0" />
<CheckBox IsChecked="{Binding RegB_V1}" Content="Overflow 1" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding RegB_S0}" Content="Sign 0" />
<CheckBox IsChecked="{CompiledBinding RegB_S1}" Content="Sign 1" />
<CheckBox IsChecked="{Binding RegB_S0}" Content="Sign 0" />
<CheckBox IsChecked="{Binding RegB_S1}" Content="Sign 1" />
</StackPanel>
</WrapPanel>
</WrapPanel>

View file

@ -24,9 +24,9 @@
<StackPanel>
<DockPanel>
<StackPanel DockPanel.Dock="Right">
<StackPanel Orientation="Horizontal" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel Orientation="Horizontal" IsEnabled="{Binding EditAllowed}">
<TextBlock Margin="0">SP:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegSP}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegSP}" Hex="True" Max="0xFF" />
</StackPanel>
<TextBox
TextWrapping="Wrap"
@ -35,31 +35,31 @@
AcceptsReturn="True"
IsReadOnly="True"
ScrollViewer.VerticalScrollBarVisibility="Visible"
Text="{CompiledBinding StackPreview}"
Text="{Binding StackPreview}"
/>
</StackPanel>
<StackPanel DockPanel.Dock="Top" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel DockPanel.Dock="Top" IsEnabled="{Binding EditAllowed}">
<WrapPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>A:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegA}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegA}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>X:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegX}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegX}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Y:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegY}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegY}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>PC:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPC}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegPC}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Cycle:</TextBlock>
<c:MesenNumericTextBox Width="70" Value="{CompiledBinding CycleCount}" IsEnabled="False" />
<c:MesenNumericTextBox Width="70" Value="{Binding CycleCount}" IsEnabled="False" />
</StackPanel>
</WrapPanel>
@ -68,25 +68,25 @@
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top">
<StackPanel DockPanel.Dock="Left" Orientation="Horizontal" VerticalAlignment="Top">
<TextBlock>P:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPS}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegPS}" Hex="True" Max="0xFF" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagC}" Content="Carry" />
<CheckBox IsChecked="{Binding FlagC}" Content="Carry" />
<CheckBox IsEnabled="False" Content="----" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagZ}" Content="Zero" />
<CheckBox IsChecked="{Binding FlagZ}" Content="Zero" />
<CheckBox IsEnabled="False" Content="----" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagI}" Content="Interrupt" />
<CheckBox IsChecked="{CompiledBinding FlagV}" Content="Overflow" />
<CheckBox IsChecked="{Binding FlagI}" Content="Interrupt" />
<CheckBox IsChecked="{Binding FlagV}" Content="Overflow" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagD}" Content="Decimal" />
<CheckBox IsChecked="{CompiledBinding FlagN}" Content="Negative" />
<CheckBox IsChecked="{Binding FlagD}" Content="Decimal" />
<CheckBox IsChecked="{Binding FlagN}" Content="Negative" />
</StackPanel>
</WrapPanel>
</WrapPanel>
@ -95,54 +95,54 @@
<WrapPanel>
<TextBlock>IRQs:</TextBlock>
<CheckBox IsChecked="{CompiledBinding FlagNmi}" Content="NMI" />
<CheckBox IsChecked="{CompiledBinding FlagIrqExternal}" Content="Cart" />
<CheckBox IsChecked="{CompiledBinding FlagIrqFrameCount}" Content="Frame Counter" />
<CheckBox IsChecked="{CompiledBinding FlagIrqDmc}" Content="DMC" />
<CheckBox IsChecked="{Binding FlagNmi}" Content="NMI" />
<CheckBox IsChecked="{Binding FlagIrqExternal}" Content="Cart" />
<CheckBox IsChecked="{Binding FlagIrqFrameCount}" Content="Frame Counter" />
<CheckBox IsChecked="{Binding FlagIrqDmc}" Content="DMC" />
</WrapPanel>
</StackPanel>
</DockPanel>
<StackPanel IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel IsEnabled="{Binding EditAllowed}">
<Rectangle Stroke="{StaticResource MesenGrayBorderColor}" StrokeThickness="1" Margin="5 5 5 4" />
<WrapPanel>
<Grid ColumnDefinitions="Auto,Auto" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto">
<TextBlock>Cycle:</TextBlock>
<c:MesenNumericTextBox Grid.Column="1" Value="{CompiledBinding Cycle}" IsEnabled="False" Max="340" />
<c:MesenNumericTextBox Grid.Column="1" Value="{Binding Cycle}" IsEnabled="False" Max="340" />
<TextBlock Grid.Row="1">Scanline:</TextBlock>
<c:MesenNumericTextBox Grid.Row="1" Grid.Column="1" Value="{CompiledBinding Scanline}" IsEnabled="False" Max="261" Min="-1" />
<c:MesenNumericTextBox Grid.Row="1" Grid.Column="1" Value="{Binding Scanline}" IsEnabled="False" Max="261" Min="-1" />
<TextBlock Grid.Row="2">Bus:</TextBlock>
<c:MesenNumericTextBox Grid.Row="2" Grid.Column="1" Value="{CompiledBinding BusAddr}" Hex="True" Max="0x3FFF" IsEnabled="False" />
<c:MesenNumericTextBox Grid.Row="2" Grid.Column="1" Value="{Binding BusAddr}" Hex="True" Max="0x3FFF" IsEnabled="False" />
<TextBlock Grid.Row="3">V:</TextBlock>
<c:MesenNumericTextBox Grid.Row="3" Grid.Column="1" Value="{CompiledBinding VramAddr}" Hex="True" Max="0x7FFF" />
<c:MesenNumericTextBox Grid.Row="3" Grid.Column="1" Value="{Binding VramAddr}" Hex="True" Max="0x7FFF" />
<TextBlock Grid.Row="4">T:</TextBlock>
<c:MesenNumericTextBox Grid.Row="4" Grid.Column="1" Value="{CompiledBinding TmpVramAddr}" Hex="True" Max="0x7FFF" />
<c:MesenNumericTextBox Grid.Row="4" Grid.Column="1" Value="{Binding TmpVramAddr}" Hex="True" Max="0x7FFF" />
<TextBlock Grid.Row="5">X:</TextBlock>
<c:MesenNumericTextBox Grid.Row="5" Grid.Column="1" Value="{CompiledBinding ScrollX}" Hex="True" Max="7" />
<c:MesenNumericTextBox Grid.Row="5" Grid.Column="1" Value="{Binding ScrollX}" Hex="True" Max="7" />
</Grid>
<StackPanel Margin="5 0 2 0">
<CheckBox IsChecked="{CompiledBinding Sprite0Hit}" Content="Sprite 0 Hit" />
<CheckBox IsChecked="{CompiledBinding SpriteOverflow}" Content="Sprite Overflow" />
<CheckBox IsChecked="{CompiledBinding VerticalBlank}" Content="Vertical Blank" />
<CheckBox IsChecked="{CompiledBinding WriteToggle}" Content="Write Toggle" />
<CheckBox IsChecked="{Binding Sprite0Hit}" Content="Sprite 0 Hit" />
<CheckBox IsChecked="{Binding SpriteOverflow}" Content="Sprite Overflow" />
<CheckBox IsChecked="{Binding VerticalBlank}" Content="Vertical Blank" />
<CheckBox IsChecked="{Binding WriteToggle}" Content="Write Toggle" />
<CheckBox IsChecked="{CompiledBinding LargeSprites}" Content="Large Sprites" Margin="0 5 0 0" />
<CheckBox IsChecked="{CompiledBinding VerticalWrite}" Content="Vertical Write" />
<CheckBox IsChecked="{CompiledBinding NmiOnVBlank}" Content="NMI on VBlank" />
<CheckBox IsChecked="{CompiledBinding BgAt1000}" Content="BG at $1000" />
<CheckBox IsChecked="{CompiledBinding SpritesAt1000}" Content="Sprites at $1000" />
<CheckBox IsChecked="{Binding LargeSprites}" Content="Large Sprites" Margin="0 5 0 0" />
<CheckBox IsChecked="{Binding VerticalWrite}" Content="Vertical Write" />
<CheckBox IsChecked="{Binding NmiOnVBlank}" Content="NMI on VBlank" />
<CheckBox IsChecked="{Binding BgAt1000}" Content="BG at $1000" />
<CheckBox IsChecked="{Binding SpritesAt1000}" Content="Sprites at $1000" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding BgEnabled}" Content="BG Enabled" />
<CheckBox IsChecked="{CompiledBinding SpritesEnabled}" Content="Sprites Enabled" />
<CheckBox IsChecked="{CompiledBinding BgMaskLeft}" Content="BG Mask" />
<CheckBox IsChecked="{CompiledBinding SpriteMaskLeft}" Content="Sprite Mask" />
<CheckBox IsChecked="{CompiledBinding Grayscale}" Content="Grayscale" />
<CheckBox IsChecked="{CompiledBinding IntensifyRed}" Content="Intensify Red" />
<CheckBox IsChecked="{CompiledBinding IntensifyGreen}" Content="Intensify Green" />
<CheckBox IsChecked="{CompiledBinding IntensifyBlue}" Content="Intensify Blue" />
<CheckBox IsChecked="{Binding BgEnabled}" Content="BG Enabled" />
<CheckBox IsChecked="{Binding SpritesEnabled}" Content="Sprites Enabled" />
<CheckBox IsChecked="{Binding BgMaskLeft}" Content="BG Mask" />
<CheckBox IsChecked="{Binding SpriteMaskLeft}" Content="Sprite Mask" />
<CheckBox IsChecked="{Binding Grayscale}" Content="Grayscale" />
<CheckBox IsChecked="{Binding IntensifyRed}" Content="Intensify Red" />
<CheckBox IsChecked="{Binding IntensifyGreen}" Content="Intensify Green" />
<CheckBox IsChecked="{Binding IntensifyBlue}" Content="Intensify Blue" />
</StackPanel>
</WrapPanel>
</StackPanel>

View file

@ -24,9 +24,9 @@
<StackPanel>
<DockPanel>
<StackPanel DockPanel.Dock="Right">
<StackPanel Orientation="Horizontal" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel Orientation="Horizontal" IsEnabled="{Binding EditAllowed}">
<TextBlock Margin="0">SP:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegSP}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegSP}" Hex="True" Max="0xFF" />
</StackPanel>
<TextBox
TextWrapping="Wrap"
@ -35,31 +35,31 @@
AcceptsReturn="True"
IsReadOnly="True"
ScrollViewer.VerticalScrollBarVisibility="Visible"
Text="{CompiledBinding StackPreview}"
Text="{Binding StackPreview}"
/>
</StackPanel>
<StackPanel DockPanel.Dock="Top" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel DockPanel.Dock="Top" IsEnabled="{Binding EditAllowed}">
<WrapPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>A:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegA}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegA}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>X:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegX}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegX}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Y:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegY}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegY}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>PC:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPC}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegPC}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Cycle:</TextBlock>
<c:MesenNumericTextBox Width="70" Value="{CompiledBinding CycleCount}" IsEnabled="False" />
<c:MesenNumericTextBox Width="70" Value="{Binding CycleCount}" IsEnabled="False" />
</StackPanel>
</WrapPanel>
@ -68,40 +68,40 @@
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top">
<StackPanel DockPanel.Dock="Left" Orientation="Horizontal" VerticalAlignment="Top">
<TextBlock>P:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPS}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegPS}" Hex="True" Max="0xFF" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagC}" Content="Carry" />
<CheckBox IsChecked="{Binding FlagC}" Content="Carry" />
<CheckBox IsEnabled="False" Content="----" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagZ}" Content="Zero" />
<CheckBox IsChecked="{CompiledBinding FlagT}" Content="Memory" />
<CheckBox IsChecked="{Binding FlagZ}" Content="Zero" />
<CheckBox IsChecked="{Binding FlagT}" Content="Memory" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagI}" Content="Interrupt" />
<CheckBox IsChecked="{CompiledBinding FlagV}" Content="Overflow" />
<CheckBox IsChecked="{Binding FlagI}" Content="Interrupt" />
<CheckBox IsChecked="{Binding FlagV}" Content="Overflow" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagD}" Content="Decimal" />
<CheckBox IsChecked="{CompiledBinding FlagN}" Content="Negative" />
<CheckBox IsChecked="{Binding FlagD}" Content="Decimal" />
<CheckBox IsChecked="{Binding FlagN}" Content="Negative" />
</StackPanel>
</WrapPanel>
</WrapPanel>
</StackPanel>
</DockPanel>
<StackPanel IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel IsEnabled="{Binding EditAllowed}">
<Rectangle Stroke="{StaticResource MesenGrayBorderColor}" StrokeThickness="1" Margin="5 5 5 4" />
<WrapPanel>
<Grid ColumnDefinitions="Auto,Auto" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto">
<TextBlock>Cycle:</TextBlock>
<c:MesenNumericTextBox Grid.Column="1" Value="{CompiledBinding Cycle}" IsEnabled="False" />
<c:MesenNumericTextBox Grid.Column="1" Value="{Binding Cycle}" IsEnabled="False" />
<TextBlock Grid.Row="1">Scanline:</TextBlock>
<c:MesenNumericTextBox Grid.Row="1" Grid.Column="1" Value="{CompiledBinding Scanline}" IsEnabled="False" />
<c:MesenNumericTextBox Grid.Row="1" Grid.Column="1" Value="{Binding Scanline}" IsEnabled="False" />
</Grid>
</WrapPanel>
</StackPanel>

View file

@ -31,9 +31,9 @@
<StackPanel>
<DockPanel>
<StackPanel DockPanel.Dock="Right">
<StackPanel Orientation="Horizontal" IsEnabled="{CompiledBinding EditAllowed}" VerticalAlignment="Top">
<StackPanel Orientation="Horizontal" IsEnabled="{Binding EditAllowed}" VerticalAlignment="Top">
<TextBlock Margin="0">SP:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegSP}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegSP}" Hex="True" Max="0xFFFF" />
</StackPanel>
<TextBox
VerticalAlignment="Top"
@ -43,156 +43,156 @@
AcceptsReturn="True"
IsReadOnly="True"
ScrollViewer.VerticalScrollBarVisibility="Visible"
Text="{CompiledBinding StackPreview}"
Text="{Binding StackPreview}"
/>
</StackPanel>
<WrapPanel DockPanel.Dock="Left" IsEnabled="{CompiledBinding EditAllowed}">
<WrapPanel DockPanel.Dock="Left" IsEnabled="{Binding EditAllowed}">
<WrapPanel Width="95">
<StackPanel Orientation="Horizontal">
<TextBlock>A:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegA}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegA}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>F:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegFlags}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegFlags}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>B:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegB}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegB}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>C:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegC}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegC}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>D:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegD}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegD}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>E:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegE}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegE}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>H:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegH}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegH}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>L:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegL}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegL}" Hex="True" Max="0xFF" />
</StackPanel>
</WrapPanel>
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>PC:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPC}" Hex="True" Max="0xFFFF" IsEnabled="{CompiledBinding EditAllowed}" />
<c:MesenNumericTextBox Value="{Binding RegPC}" Hex="True" Max="0xFFFF" IsEnabled="{Binding EditAllowed}" />
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock>IX:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegIX}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegIX}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<TextBlock>IY:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegIY}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegIY}" Hex="True" Max="0xFFFF" />
</StackPanel>
</StackPanel>
<StackPanel>
<StackPanel Orientation="Horizontal" VerticalAlignment="Top">
<TextBlock>Cycle:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding CycleCount}" IsEnabled="False" Width="70" />
<c:MesenNumericTextBox Value="{Binding CycleCount}" IsEnabled="False" Width="70" />
</StackPanel>
</StackPanel>
</WrapPanel>
</DockPanel>
<Rectangle Stroke="{StaticResource MesenGrayBorderColor}" StrokeThickness="1" Margin="5 5 5 2" DockPanel.Dock="Top" />
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top" IsEnabled="{CompiledBinding EditAllowed}">
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top" IsEnabled="{Binding EditAllowed}">
<StackPanel Orientation="Horizontal">
<TextBlock>F:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegFlags}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegFlags}" Hex="True" Max="0xFF" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagCarry}" Content="Carry" />
<CheckBox IsChecked="{CompiledBinding FlagHalf}" Content="Half Carry" />
<CheckBox IsChecked="{Binding FlagCarry}" Content="Carry" />
<CheckBox IsChecked="{Binding FlagHalf}" Content="Half Carry" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagAddSub}" Content="Sub (N)" />
<CheckBox IsChecked="{CompiledBinding FlagF5}" Content="F5" />
<CheckBox IsChecked="{Binding FlagAddSub}" Content="Sub (N)" />
<CheckBox IsChecked="{Binding FlagF5}" Content="F5" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagParity}" Content="Parity" />
<CheckBox IsChecked="{CompiledBinding FlagZero}" Content="Zero" />
<CheckBox IsChecked="{Binding FlagParity}" Content="Parity" />
<CheckBox IsChecked="{Binding FlagZero}" Content="Zero" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagF3}" Content="F3" />
<CheckBox IsChecked="{CompiledBinding FlagSign}" Content="Sign" />
<CheckBox IsChecked="{Binding FlagF3}" Content="F3" />
<CheckBox IsChecked="{Binding FlagSign}" Content="Sign" />
</StackPanel>
</WrapPanel>
</WrapPanel>
<Rectangle Stroke="{StaticResource MesenGrayBorderColor}" StrokeThickness="1" Margin="5 5 5 2" DockPanel.Dock="Top" />
<WrapPanel Margin="0 2 0 0" IsEnabled="{CompiledBinding EditAllowed}">
<WrapPanel Margin="0 2 0 0" IsEnabled="{Binding EditAllowed}">
<StackPanel Orientation="Horizontal">
<TextBlock>A':</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegAltA}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegAltA}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>F':</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegAltFlags}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegAltFlags}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>B':</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegAltB}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegAltB}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>C':</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegAltC}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegAltC}" Hex="True" Max="0xFF" />
</StackPanel>
</WrapPanel>
<WrapPanel IsEnabled="{CompiledBinding EditAllowed}">
<WrapPanel IsEnabled="{Binding EditAllowed}">
<StackPanel Orientation="Horizontal">
<TextBlock>D':</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegAltD}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegAltD}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>E':</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegAltE}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegAltE}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>H':</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegAltH}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegAltH}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>L':</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegAltL}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegAltL}" Hex="True" Max="0xFF" />
</StackPanel>
</WrapPanel>
<Rectangle Stroke="{StaticResource MesenGrayBorderColor}" StrokeThickness="1" Margin="5 5 5 2" DockPanel.Dock="Top" />
<WrapPanel Margin="0 2 0 0" IsEnabled="{CompiledBinding EditAllowed}">
<WrapPanel Margin="0 2 0 0" IsEnabled="{Binding EditAllowed}">
<StackPanel Orientation="Horizontal">
<TextBlock>I:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegI}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegI}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>R:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegR}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegR}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>IM:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding IM}" Hex="True" Max="0x2" />
<c:MesenNumericTextBox Value="{Binding IM}" Hex="True" Max="0x2" />
</StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagHalted}" Content="Halted" />
<CheckBox IsChecked="{CompiledBinding FlagIFF1}" Content="IFF1" />
<CheckBox IsChecked="{CompiledBinding FlagIFF2}" Content="IFF2" />
<CheckBox IsChecked="{Binding FlagHalted}" Content="Halted" />
<CheckBox IsChecked="{Binding FlagIFF1}" Content="IFF1" />
<CheckBox IsChecked="{Binding FlagIFF2}" Content="IFF2" />
</WrapPanel>
<Rectangle Stroke="{StaticResource MesenGrayBorderColor}" StrokeThickness="1" Margin="5 5 5 2" DockPanel.Dock="Top" />
@ -206,12 +206,12 @@
<StackPanel Orientation="Horizontal">
<TextBlock>Scanline:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Scanline}" />
<c:MesenNumericTextBox Value="{Binding Scanline}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Cycle:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Cycle}" />
<c:MesenNumericTextBox Value="{Binding Cycle}" />
</StackPanel>
</WrapPanel>
</StackPanel>

View file

@ -24,9 +24,9 @@
<StackPanel>
<DockPanel>
<StackPanel DockPanel.Dock="Right">
<StackPanel Orientation="Horizontal" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel Orientation="Horizontal" IsEnabled="{Binding EditAllowed}">
<TextBlock Margin="0">SP:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegSP}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegSP}" Hex="True" Max="0xFFFF" />
</StackPanel>
<TextBox
TextWrapping="Wrap"
@ -35,43 +35,43 @@
AcceptsReturn="True"
IsReadOnly="True"
ScrollViewer.VerticalScrollBarVisibility="Visible"
Text="{CompiledBinding StackPreview}"
Text="{Binding StackPreview}"
/>
</StackPanel>
<StackPanel DockPanel.Dock="Top" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel DockPanel.Dock="Top" IsEnabled="{Binding EditAllowed}">
<WrapPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>A:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegA}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegA}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>X:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegX}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegX}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Y:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegY}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegY}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>PC:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPC}" Hex="True" Max="0xFFFFFF" />
<c:MesenNumericTextBox Value="{Binding RegPC}" Hex="True" Max="0xFFFFFF" />
</StackPanel>
</WrapPanel>
<WrapPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>D:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegD}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegD}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>DB:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegDBR}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegDBR}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Cycle:</TextBlock>
<c:MesenNumericTextBox Width="70" Value="{CompiledBinding CycleCount}" IsEnabled="False" />
<c:MesenNumericTextBox Width="70" Value="{Binding CycleCount}" IsEnabled="False" />
</StackPanel>
</WrapPanel>
@ -80,62 +80,62 @@
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top">
<StackPanel DockPanel.Dock="Left" Orientation="Horizontal" VerticalAlignment="Top">
<TextBlock>P:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPS}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegPS}" Hex="True" Max="0xFF" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagC}" Content="Carry" />
<CheckBox IsChecked="{CompiledBinding FlagX}" Content="Index" />
<CheckBox IsChecked="{Binding FlagC}" Content="Carry" />
<CheckBox IsChecked="{Binding FlagX}" Content="Index" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagZ}" Content="Zero" />
<CheckBox IsChecked="{CompiledBinding FlagM}" Content="Memory" />
<CheckBox IsChecked="{Binding FlagZ}" Content="Zero" />
<CheckBox IsChecked="{Binding FlagM}" Content="Memory" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagI}" Content="Interrupt" />
<CheckBox IsChecked="{CompiledBinding FlagV}" Content="Overflow" />
<CheckBox IsChecked="{Binding FlagI}" Content="Interrupt" />
<CheckBox IsChecked="{Binding FlagV}" Content="Overflow" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagD}" Content="Decimal" />
<CheckBox IsChecked="{CompiledBinding FlagN}" Content="Negative" />
<CheckBox IsChecked="{Binding FlagD}" Content="Decimal" />
<CheckBox IsChecked="{Binding FlagN}" Content="Negative" />
</StackPanel>
</WrapPanel>
</WrapPanel>
<CheckBox IsChecked="{CompiledBinding FlagE}" Content="Emulation" />
<CheckBox IsChecked="{Binding FlagE}" Content="Emulation" />
<Rectangle Stroke="{StaticResource MesenGrayBorderColor}" StrokeThickness="1" Margin="5 5 5 4" />
<WrapPanel>
<TextBlock>IRQs:</TextBlock>
<CheckBox IsChecked="{CompiledBinding FlagNmi}" Content="NMI" />
<CheckBox IsChecked="{CompiledBinding FlagIrqHvCounters}" Content="H/V" />
<CheckBox IsChecked="{CompiledBinding FlagIrqCoprocessor}" Content="Coprocessor" />
<CheckBox IsChecked="{Binding FlagNmi}" Content="NMI" />
<CheckBox IsChecked="{Binding FlagIrqHvCounters}" Content="H/V" />
<CheckBox IsChecked="{Binding FlagIrqCoprocessor}" Content="Coprocessor" />
</WrapPanel>
</StackPanel>
</DockPanel>
<StackPanel IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel IsEnabled="{Binding EditAllowed}">
<Rectangle Stroke="{StaticResource MesenGrayBorderColor}" StrokeThickness="1" Margin="5 5 5 4" />
<WrapPanel>
<Grid ColumnDefinitions="Auto,Auto" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto" Margin="0 0 5 0">
<TextBlock>H Clock:</TextBlock>
<c:MesenNumericTextBox Grid.Column="1" Value="{CompiledBinding HClock}" IsEnabled="False" Max="1364" MinWidth="40" />
<c:MesenNumericTextBox Grid.Column="1" Value="{Binding HClock}" IsEnabled="False" Max="1364" MinWidth="40" />
<TextBlock Grid.Row="1">Cycle:</TextBlock>
<c:MesenNumericTextBox Grid.Row="1" Grid.Column="1" Value="{CompiledBinding Cycle}" IsEnabled="False" Max="340" />
<c:MesenNumericTextBox Grid.Row="1" Grid.Column="1" Value="{Binding Cycle}" IsEnabled="False" Max="340" />
<TextBlock Grid.Row="2">Scanline:</TextBlock>
<c:MesenNumericTextBox Grid.Row="2" Grid.Column="1" Value="{CompiledBinding Scanline}" IsEnabled="False" Max="261" Min="-1" />
<c:MesenNumericTextBox Grid.Row="2" Grid.Column="1" Value="{Binding Scanline}" IsEnabled="False" Max="261" Min="-1" />
</Grid>
<Grid ColumnDefinitions="Auto,Auto" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto">
<TextBlock>VRAM Addr.:</TextBlock>
<c:MesenNumericTextBox Grid.Column="1" IsEnabled="False" Hex="True" Max="0xFFFF" Value="{CompiledBinding VramAddress}" />
<c:MesenNumericTextBox Grid.Column="1" IsEnabled="False" Hex="True" Max="0xFFFF" Value="{Binding VramAddress}" />
<TextBlock Grid.Row="1">OAM Addr.:</TextBlock>
<c:MesenNumericTextBox Grid.Row="1" Grid.Column="1" IsEnabled="False" Max="0xFFF" Hex="True" Value="{CompiledBinding OamAddress}" />
<c:MesenNumericTextBox Grid.Row="1" Grid.Column="1" IsEnabled="False" Max="0xFFF" Hex="True" Value="{Binding OamAddress}" />
<TextBlock Grid.Row="2">CGRAM Addr.:</TextBlock>
<c:MesenNumericTextBox Grid.Row="2" Grid.Column="1" IsEnabled="False" Max="0xFFF" Hex="True" Value="{CompiledBinding CgRamAddress}" />
<c:MesenNumericTextBox Grid.Row="2" Grid.Column="1" IsEnabled="False" Max="0xFFF" Hex="True" Value="{Binding CgRamAddress}" />
</Grid>
</WrapPanel>
</StackPanel>

View file

@ -23,9 +23,9 @@
<ScrollViewer>
<DockPanel>
<StackPanel DockPanel.Dock="Right">
<StackPanel Orientation="Horizontal" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel Orientation="Horizontal" IsEnabled="{Binding EditAllowed}">
<TextBlock Margin="0">SP:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegSP}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegSP}" Hex="True" Max="0xFF" />
</StackPanel>
<TextBox
TextWrapping="Wrap"
@ -34,31 +34,31 @@
AcceptsReturn="True"
IsReadOnly="True"
ScrollViewer.VerticalScrollBarVisibility="Visible"
Text="{CompiledBinding StackPreview}"
Text="{Binding StackPreview}"
/>
</StackPanel>
<StackPanel DockPanel.Dock="Top" IsEnabled="{CompiledBinding EditAllowed}">
<StackPanel DockPanel.Dock="Top" IsEnabled="{Binding EditAllowed}">
<WrapPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>A:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegA}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegA}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>X:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegX}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegX}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Y:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegY}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegY}" Hex="True" Max="0xFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>PC:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPC}" Hex="True" Max="0xFFFF" />
<c:MesenNumericTextBox Value="{Binding RegPC}" Hex="True" Max="0xFFFF" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock>Cycle:</TextBlock>
<c:MesenNumericTextBox Width="70" Value="{CompiledBinding CycleCount}" IsEnabled="False" />
<c:MesenNumericTextBox Width="70" Value="{Binding CycleCount}" IsEnabled="False" />
</StackPanel>
</WrapPanel>
@ -67,25 +67,25 @@
<WrapPanel Margin="0 2 0 0" DockPanel.Dock="Top">
<StackPanel DockPanel.Dock="Left" Orientation="Horizontal" VerticalAlignment="Top">
<TextBlock>P:</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding RegPS}" Hex="True" Max="0xFF" />
<c:MesenNumericTextBox Value="{Binding RegPS}" Hex="True" Max="0xFF" />
</StackPanel>
<WrapPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagC}" Content="Carry" />
<CheckBox IsChecked="{CompiledBinding FlagZ}" Content="Zero" />
<CheckBox IsChecked="{Binding FlagC}" Content="Carry" />
<CheckBox IsChecked="{Binding FlagZ}" Content="Zero" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagI}" Content="IRQ" />
<CheckBox IsChecked="{CompiledBinding FlagH}" Content="Half" />
<CheckBox IsChecked="{Binding FlagI}" Content="IRQ" />
<CheckBox IsChecked="{Binding FlagH}" Content="Half" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagB}" Content="Break" />
<CheckBox IsChecked="{CompiledBinding FlagP}" Content="Dir. Page" />
<CheckBox IsChecked="{Binding FlagB}" Content="Break" />
<CheckBox IsChecked="{Binding FlagP}" Content="Dir. Page" />
</StackPanel>
<StackPanel>
<CheckBox IsChecked="{CompiledBinding FlagV}" Content="Overflow" />
<CheckBox IsChecked="{CompiledBinding FlagN}" Content="Negative" />
<CheckBox IsChecked="{Binding FlagV}" Content="Overflow" />
<CheckBox IsChecked="{Binding FlagN}" Content="Negative" />
</StackPanel>
</WrapPanel>
</WrapPanel>

View file

@ -16,7 +16,7 @@ namespace Mesen.Debugger.Utilities
static CodeCompletionHelper()
{
using StreamReader reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("Mesen.Debugger.Documentation.LuaDocumentation.json")!);
DocEntryViewModel[] documentation = JsonSerializer.Deserialize<DocEntryViewModel[]>(reader.ReadToEnd(), new JsonSerializerOptions() { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }) ?? Array.Empty<DocEntryViewModel>();
DocEntryViewModel[] documentation = (DocEntryViewModel[]?)JsonSerializer.Deserialize(reader.ReadToEnd(), typeof(DocEntryViewModel[]), MesenCamelCaseSerializerContext.Default) ?? Array.Empty<DocEntryViewModel>();
_documentation = new Dictionary<string, DocEntryViewModel>();
foreach(DocEntryViewModel entry in documentation) {

View file

@ -240,7 +240,7 @@ namespace Mesen.Debugger.Utilities
public class DebugWorkspace
{
public Dictionary<CpuType, CpuDebugWorkspace> WorkspaceByCpu { get; set; } = new();
public string[] TblMappings = Array.Empty<string>();
public string[] TblMappings { get; set; } = Array.Empty<string>();
public static DebugWorkspace Load(string path)
{
@ -248,7 +248,7 @@ namespace Mesen.Debugger.Utilities
if(File.Exists(path)) {
try {
string fileData = File.ReadAllText(path);
dbgWorkspace = JsonSerializer.Deserialize<DebugWorkspace>(fileData, JsonHelper.Options) ?? new DebugWorkspace();
dbgWorkspace = (DebugWorkspace?)JsonSerializer.Deserialize(fileData, typeof(DebugWorkspace), MesenSerializerContext.Default) ?? new DebugWorkspace();
} catch {
}
}
@ -279,7 +279,7 @@ namespace Mesen.Debugger.Utilities
WorkspaceByCpu[cpuType] = workspace;
}
FileHelper.WriteAllText(path, JsonSerializer.Serialize(this, typeof(DebugWorkspace), JsonHelper.Options));
FileHelper.WriteAllText(path, JsonSerializer.Serialize(this, typeof(DebugWorkspace), MesenSerializerContext.Default));
}
public void Reset()

View file

@ -74,8 +74,12 @@ public static class OpCodeHelper
return new DynamicTooltip() { Items = items };
}
private static void InitDocumentation(CpuType cpuType, DocFileFormat doc, Dictionary<string, OpCodeDesc>? baseDesc = null)
private static void InitDocumentation(CpuType cpuType, DocFileFormat? doc, Dictionary<string, OpCodeDesc>? baseDesc = null)
{
if(doc == null) {
return;
}
Dictionary<string, OpCodeDesc> desc = baseDesc ?? new();
foreach(OpCodeDesc op in doc.Instructions) {
desc[op.Op] = op;
@ -296,76 +300,10 @@ public static class OpCodeHelper
};
}
private static DocFileFormat ReadDocumentationFile(string filename)
private static DocFileFormat? ReadDocumentationFile(string filename)
{
using StreamReader reader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("Mesen.Debugger.Documentation." + filename)!);
return JsonSerializer.Deserialize<DocFileFormat>(reader.ReadToEnd(), new JsonSerializerOptions() { Converters = { new JsonStringEnumConverter() }, PropertyNamingPolicy = JsonNamingPolicy.CamelCase })!;
}
private enum AddrMode
{
//6502
None, Acc, Imp, Imm, Rel,
Zero, Abs, ZeroX, ZeroY,
Ind, IndX, IndY, AbsX, AbsY,
//65816
AbsLng, AbsIdxXInd, AbsIdxX,
AbsIdxY, AbsLngIdxX, AbsIndLng,
AbsInd,
BlkMov,
Dir, DirIdxX, DirInd,
DirIndLng, DirIndIdxY, DirIdxIndX,
DirIdxY, DirIndLngIdxY,
Imm8, Imm16, ImmX, ImmM,
RelLng,
Stk, StkRel, StkRelIndIdxY,
//PCE
AbsXInd,
Block,
ImZero, ImZeroX, ImAbs, ImAbsX,
ZInd, ZeroRel,
}
private enum CpuFlag
{
Carry,
Decimal,
Interrupt,
Negative,
Overflow,
Zero,
Memory,
Index,
Emulation,
HalfCarry,
DirectPage,
Sign,
OverflowParity,
F3,
F5
}
private class DocFileFormat
{
public OpCodeDesc[] Instructions { get; set; } = Array.Empty<OpCodeDesc>();
public AddrMode[]? AddressingModes { get; set; } = null;
public int[]? MinCycles { get; set; }
public int[]? MaxCycles { get; set; }
}
private class OpCodeDesc
{
public string Op { get; set; } = "";
public string Name { get; set; } = "";
public string Description { get; set; } = "";
public CpuFlag[]? Flags { get; set; }
public OpCodeDesc Clone()
{
return (OpCodeDesc)this.MemberwiseClone();
}
return (DocFileFormat?)JsonSerializer.Deserialize(reader.ReadToEnd(), typeof(DocFileFormat), MesenCamelCaseSerializerContext.Default);
}
private class CpuDocumentationData
@ -382,4 +320,70 @@ public static class OpCodeHelper
OpCycleCount = opCycleCount;
}
}
}
}
public enum AddrMode
{
//6502
None, Acc, Imp, Imm, Rel,
Zero, Abs, ZeroX, ZeroY,
Ind, IndX, IndY, AbsX, AbsY,
//65816
AbsLng, AbsIdxXInd, AbsIdxX,
AbsIdxY, AbsLngIdxX, AbsIndLng,
AbsInd,
BlkMov,
Dir, DirIdxX, DirInd,
DirIndLng, DirIndIdxY, DirIdxIndX,
DirIdxY, DirIndLngIdxY,
Imm8, Imm16, ImmX, ImmM,
RelLng,
Stk, StkRel, StkRelIndIdxY,
//PCE
AbsXInd,
Block,
ImZero, ImZeroX, ImAbs, ImAbsX,
ZInd, ZeroRel,
}
public enum CpuFlag
{
Carry,
Decimal,
Interrupt,
Negative,
Overflow,
Zero,
Memory,
Index,
Emulation,
HalfCarry,
DirectPage,
Sign,
OverflowParity,
F3,
F5
}
public class DocFileFormat
{
public OpCodeDesc[] Instructions { get; set; } = Array.Empty<OpCodeDesc>();
public AddrMode[]? AddressingModes { get; set; } = null;
public int[]? MinCycles { get; set; }
public int[]? MaxCycles { get; set; }
}
public class OpCodeDesc
{
public string Op { get; set; } = "";
public string Name { get; set; } = "";
public string Description { get; set; } = "";
public CpuFlag[]? Flags { get; set; }
public OpCodeDesc Clone()
{
return (OpCodeDesc)this.MemberwiseClone();
}
}

View file

@ -161,25 +161,25 @@ namespace Mesen.Debugger.ViewModels
}
});
}
}
public class BreakpointViewModel : INotifyPropertyChanged
public class BreakpointViewModel : INotifyPropertyChanged
{
public Breakpoint Breakpoint { get; set; }
public string TypeDisplay => Breakpoint.ToReadableType();
public string AddressDisplay => Breakpoint.GetAddressString(true);
public event PropertyChangedEventHandler? PropertyChanged;
public void Refresh()
{
public Breakpoint Breakpoint { get; set; }
public string TypeDisplay => Breakpoint.ToReadableType();
public string AddressDisplay => Breakpoint.GetAddressString(true);
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(TypeDisplay)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(AddressDisplay)));
}
public event PropertyChangedEventHandler? PropertyChanged;
public void Refresh()
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(TypeDisplay)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(AddressDisplay)));
}
public BreakpointViewModel(Breakpoint bp)
{
Breakpoint = bp;
}
public BreakpointViewModel(Breakpoint bp)
{
Breakpoint = bp;
}
}
}

View file

@ -143,32 +143,32 @@ namespace Mesen.Debugger.ViewModels
},
});
}
}
public class StackInfo
public class StackInfo
{
public string EntryPoint { get; set; } = "";
public string PcAddress => $"${RelAddress:X4}";
public string AbsAddress
{
public string EntryPoint { get; set; } = "";
public string PcAddress => $"${RelAddress:X4}";
public string AbsAddress
get
{
get
{
if(Address.Address >= 0) {
return $"${Address.Address:X4} [{Address.Type.GetShortName()}]";
} else {
return "";
}
if(Address.Address >= 0) {
return $"${Address.Address:X4} [{Address.Type.GetShortName()}]";
} else {
return "";
}
}
public AddressInfo? EntryPointAddr { get; set; }
public UInt32 RelAddress { get; set; }
public AddressInfo Address { get; set; }
public object RowBrush { get; set; } = AvaloniaProperty.UnsetValue;
public FontStyle RowStyle { get; set; }
}
public AddressInfo? EntryPointAddr { get; set; }
public UInt32 RelAddress { get; set; }
public AddressInfo Address { get; set; }
public object RowBrush { get; set; } = AvaloniaProperty.UnsetValue;
public FontStyle RowStyle { get; set; }
}
}

View file

@ -8,6 +8,7 @@ using ReactiveUI.Fody.Helpers;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Reflection;
@ -103,7 +104,7 @@ namespace Mesen.Debugger.ViewModels
);
}
private void RevertChanges<T>(T current, T original) where T : ReactiveObject
private void RevertChanges<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties | DynamicallyAccessedMemberTypes.NonPublicProperties)] T>(T current, T original) where T : ReactiveObject
{
if(_changes.TryGetValue(current, out HashSet<string>? changes)) {
foreach(string propertyName in changes) {

View file

@ -136,48 +136,48 @@ namespace Mesen.Debugger.ViewModels
},
});
}
}
public class FunctionViewModel : INotifyPropertyChanged
{
private string _format;
public class FunctionViewModel : INotifyPropertyChanged
{
private string _format;
public AddressInfo FuncAddr { get; private set; }
public CpuType _cpuType;
public AddressInfo FuncAddr { get; private set; }
public CpuType _cpuType;
public string AbsAddressDisplay { get; }
public int AbsAddress => FuncAddr.Address;
public int RelAddress { get; private set; }
public string RelAddressDisplay => RelAddress >= 0 ? ("$" + RelAddress.ToString(_format)) : "<unavailable>";
public object RowBrush => RelAddress >= 0 ? AvaloniaProperty.UnsetValue : Brushes.Gray;
public FontStyle RowStyle => RelAddress >= 0 ? FontStyle.Normal : FontStyle.Italic;
public string AbsAddressDisplay { get; }
public int AbsAddress => FuncAddr.Address;
public int RelAddress { get; private set; }
public string RelAddressDisplay => RelAddress >= 0 ? ("$" + RelAddress.ToString(_format)) : "<unavailable>";
public object RowBrush => RelAddress >= 0 ? AvaloniaProperty.UnsetValue : Brushes.Gray;
public FontStyle RowStyle => RelAddress >= 0 ? FontStyle.Normal : FontStyle.Italic;
public CodeLabel? Label => LabelManager.GetLabel(FuncAddr);
public string LabelName => Label?.Label ?? "<no label>";
public CodeLabel? Label => LabelManager.GetLabel(FuncAddr);
public string LabelName => Label?.Label ?? "<no label>";
public event PropertyChangedEventHandler? PropertyChanged;
public event PropertyChangedEventHandler? PropertyChanged;
public void Refresh()
{
int addr = DebugApi.GetRelativeAddress(FuncAddr, _cpuType).Address;
if(addr != RelAddress) {
RelAddress = addr;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RowBrush)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RowStyle)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RelAddressDisplay)));
}
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(LabelName)));
public void Refresh()
{
int addr = DebugApi.GetRelativeAddress(FuncAddr, _cpuType).Address;
if(addr != RelAddress) {
RelAddress = addr;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RowBrush)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RowStyle)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RelAddressDisplay)));
}
public FunctionViewModel(AddressInfo funcAddr, CpuType cpuType)
{
FuncAddr = funcAddr;
_cpuType = cpuType;
RelAddress = DebugApi.GetRelativeAddress(FuncAddr, _cpuType).Address;
_format = "X" + cpuType.GetAddressSize();
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(LabelName)));
}
AbsAddressDisplay = "$" + FuncAddr.Address.ToString(_format);
}
public FunctionViewModel(AddressInfo funcAddr, CpuType cpuType)
{
FuncAddr = funcAddr;
_cpuType = cpuType;
RelAddress = DebugApi.GetRelativeAddress(FuncAddr, _cpuType).Address;
_format = "X" + cpuType.GetAddressSize();
AbsAddressDisplay = "$" + FuncAddr.Address.ToString(_format);
}
}
}

View file

@ -176,49 +176,49 @@ namespace Mesen.Debugger.ViewModels
},
});
}
}
public class LabelViewModel : INotifyPropertyChanged
public class LabelViewModel : INotifyPropertyChanged
{
private string _format;
public CodeLabel Label { get; set; }
public CpuType CpuType { get; }
public string AbsAddressDisplay { get; }
public string LabelText { get; private set; }
public string LabelComment { get; private set; }
public int RelAddress { get; private set; }
public string RelAddressDisplay => RelAddress >= 0 ? ("$" + RelAddress.ToString(_format)) : "<unavailable>";
public object RowBrush => RelAddress >= 0 ? AvaloniaProperty.UnsetValue : Brushes.Gray;
public FontStyle RowStyle => RelAddress >= 0 ? FontStyle.Normal : FontStyle.Italic;
public event PropertyChangedEventHandler? PropertyChanged;
public void Refresh()
{
private string _format;
public CodeLabel Label { get; set; }
public CpuType CpuType { get; }
public string AbsAddressDisplay { get; }
public string LabelText { get; private set; }
public string LabelComment { get; private set; }
public int RelAddress { get; private set; }
public string RelAddressDisplay => RelAddress >= 0 ? ("$" + RelAddress.ToString(_format)) : "<unavailable>";
public object RowBrush => RelAddress >= 0 ? AvaloniaProperty.UnsetValue : Brushes.Gray;
public FontStyle RowStyle => RelAddress >= 0 ? FontStyle.Normal : FontStyle.Italic;
public event PropertyChangedEventHandler? PropertyChanged;
public void Refresh()
{
int addr = Label.GetRelativeAddress(CpuType).Address;
if(addr != RelAddress) {
RelAddress = addr;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RowBrush)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RowStyle)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RelAddressDisplay)));
}
int addr = Label.GetRelativeAddress(CpuType).Address;
if(addr != RelAddress) {
RelAddress = addr;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RowBrush)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RowStyle)));
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(RelAddressDisplay)));
}
}
public LabelViewModel(CodeLabel label, CpuType cpuType)
{
Label = label;
LabelText = label.Label;
LabelComment = label.Comment;
CpuType = cpuType;
RelAddress = Label.GetRelativeAddress(CpuType).Address;
_format = "X" + cpuType.GetAddressSize();
public LabelViewModel(CodeLabel label, CpuType cpuType)
{
Label = label;
LabelText = label.Label;
LabelComment = label.Comment;
CpuType = cpuType;
RelAddress = Label.GetRelativeAddress(CpuType).Address;
_format = "X" + cpuType.GetAddressSize();
if(Label.MemoryType.IsRelativeMemory()) {
AbsAddressDisplay = "";
} else {
AbsAddressDisplay = "$" + label.Address.ToString(label.MemoryType.GetFormatString()) + " [" + label.MemoryType.GetShortName() + "]";
}
if(Label.MemoryType.IsRelativeMemory()) {
AbsAddressDisplay = "";
} else {
AbsAddressDisplay = "$" + label.Address.ToString(label.MemoryType.GetFormatString()) + " [" + label.MemoryType.GetShortName() + "]";
}
}
}

View file

@ -52,6 +52,10 @@ public class MemorySearchViewModel : DisposableViewModel
[Reactive] public bool IsUndoEnabled { get; set; } = false;
[Reactive] public bool IsSpecificValueEnabled { get; set; } = false;
[Reactive] public bool IsSpecificAddressEnabled { get; set; } = false;
public int[] AddressLookup => _addressLookup;
public byte[] MemoryState => _memoryState;
public byte[] PrevMemoryState => _prevMemoryState;
private List<MemoryAddressViewModel> _innerData = new();
@ -337,43 +341,56 @@ public class MemorySearchViewModel : DisposableViewModel
RefreshList(true);
}
public class MemoryAddressViewModel : INotifyPropertyChanged
private class SearchHistory
{
public event PropertyChangedEventHandler? PropertyChanged;
public HashSet<int> HiddenAddresses;
public byte[] SearchSnapshot;
private string _addressString = "";
public string AddressString
public SearchHistory(HashSet<int> hiddenAddresses, byte[] searchSnapshot)
{
get
{
UpdateFields();
return _addressString;
}
HiddenAddresses = new(hiddenAddresses);
SearchSnapshot = searchSnapshot;
}
}
}
public string Value { get; set; } = "";
public string PrevValue { get; set; } = "";
public class MemoryAddressViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
public string ReadCount { get; set; } = "";
public string WriteCount { get; set; } = "";
public string ExecCount { get; set; } = "";
public string LastRead { get; set; } = "";
public string LastWrite { get; set; } = "";
public string LastExec { get; set; } = "";
public bool IsMatch { get; set; } = true;
private int _index;
private MemorySearchViewModel _search;
public MemoryAddressViewModel(int index, MemorySearchViewModel memorySearch)
private string _addressString = "";
public string AddressString
{
get
{
_index = index;
_search = memorySearch;
UpdateFields();
return _addressString;
}
}
static private PropertyChangedEventArgs[] _args = new[] {
public string Value { get; set; } = "";
public string PrevValue { get; set; } = "";
public string ReadCount { get; set; } = "";
public string WriteCount { get; set; } = "";
public string ExecCount { get; set; } = "";
public string LastRead { get; set; } = "";
public string LastWrite { get; set; } = "";
public string LastExec { get; set; } = "";
public bool IsMatch { get; set; } = true;
private int _index;
private MemorySearchViewModel _search;
public MemoryAddressViewModel(int index, MemorySearchViewModel memorySearch)
{
_index = index;
_search = memorySearch;
}
static private PropertyChangedEventArgs[] _args = new[] {
new PropertyChangedEventArgs(nameof(MemoryAddressViewModel.AddressString)),
new PropertyChangedEventArgs(nameof(MemoryAddressViewModel.Value)),
new PropertyChangedEventArgs(nameof(MemoryAddressViewModel.PrevValue)),
@ -386,109 +403,96 @@ public class MemorySearchViewModel : DisposableViewModel
new PropertyChangedEventArgs(nameof(MemoryAddressViewModel.IsMatch))
};
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Update()
{
if(PropertyChanged != null) {
PropertyChanged(this, _args[0]);
PropertyChanged(this, _args[1]);
PropertyChanged(this, _args[2]);
PropertyChanged(this, _args[3]);
PropertyChanged(this, _args[4]);
PropertyChanged(this, _args[5]);
PropertyChanged(this, _args[6]);
PropertyChanged(this, _args[7]);
PropertyChanged(this, _args[8]);
PropertyChanged(this, _args[9]);
}
}
private void UpdateFields()
{
if(_index >= _search._addressLookup.Length) {
return;
}
int address = _search._addressLookup[_index];
_addressString = address.ToString("X4");
uint value = 0;
uint prevValue = 0;
for(int i = 0; i < (int)_search.ValueSize && address + i < _search._memoryState.Length; i++) {
value |= (uint)_search._memoryState[address + i] << (i * 8);
prevValue |= (uint)_search._prevMemoryState[address + i] << (i * 8);
}
switch(_search.Format) {
case MemorySearchFormat.Hex: {
string format = "X" + (((int)_search.ValueSize) * 2);
Value = value.ToString(format);
PrevValue = prevValue.ToString(format);
break;
}
case MemorySearchFormat.Signed: {
switch(_search.ValueSize) {
case MemorySearchValueSize.Byte:
Value = ((sbyte)value).ToString();
PrevValue = ((sbyte)prevValue).ToString();
break;
case MemorySearchValueSize.Word:
Value = ((short)value).ToString();
PrevValue = ((short)prevValue).ToString();
break;
case MemorySearchValueSize.Dword:
Value = ((int)value).ToString();
PrevValue = ((int)prevValue).ToString();
break;
}
break;
}
case MemorySearchFormat.Unsigned: {
switch(_search.ValueSize) {
case MemorySearchValueSize.Byte:
Value = ((byte)value).ToString();
PrevValue = ((byte)prevValue).ToString();
break;
case MemorySearchValueSize.Word:
Value = ((ushort)value).ToString();
PrevValue = ((ushort)prevValue).ToString();
break;
case MemorySearchValueSize.Dword:
Value = ((uint)value).ToString();
PrevValue = ((uint)prevValue).ToString();
break;
}
break;
}
}
AddressCounters counters = DebugApi.GetMemoryAccessCounts((uint)address, 1, _search.MemoryType)[0];
UInt64 masterClock = EmuApi.GetTimingInfo(_search.MemoryType.ToCpuType()).MasterClock;
ReadCount = CodeTooltipHelper.FormatCount(counters.ReadCounter);
WriteCount = CodeTooltipHelper.FormatCount(counters.WriteCounter);
ExecCount = CodeTooltipHelper.FormatCount(counters.ExecCounter);
LastRead = CodeTooltipHelper.FormatCount(masterClock - counters.ReadStamp, counters.ReadStamp);
LastWrite = CodeTooltipHelper.FormatCount(masterClock - counters.WriteStamp, counters.WriteStamp);
LastExec = CodeTooltipHelper.FormatCount(masterClock - counters.ExecStamp, counters.ExecStamp);
IsMatch = _search.IsMatch(address);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Update()
{
if(PropertyChanged != null) {
PropertyChanged(this, _args[0]);
PropertyChanged(this, _args[1]);
PropertyChanged(this, _args[2]);
PropertyChanged(this, _args[3]);
PropertyChanged(this, _args[4]);
PropertyChanged(this, _args[5]);
PropertyChanged(this, _args[6]);
PropertyChanged(this, _args[7]);
PropertyChanged(this, _args[8]);
PropertyChanged(this, _args[9]);
}
}
private class SearchHistory
{
public HashSet<int> HiddenAddresses;
public byte[] SearchSnapshot;
public SearchHistory(HashSet<int> hiddenAddresses, byte[] searchSnapshot)
{
HiddenAddresses = new(hiddenAddresses);
SearchSnapshot = searchSnapshot;
private void UpdateFields()
{
if(_index >= _search.AddressLookup.Length) {
return;
}
int address = _search.AddressLookup[_index];
_addressString = address.ToString("X4");
uint value = 0;
uint prevValue = 0;
for(int i = 0; i < (int)_search.ValueSize && address + i < _search.MemoryState.Length; i++) {
value |= (uint)_search.MemoryState[address + i] << (i * 8);
prevValue |= (uint)_search.PrevMemoryState[address + i] << (i * 8);
}
switch(_search.Format) {
case MemorySearchFormat.Hex: {
string format = "X" + (((int)_search.ValueSize) * 2);
Value = value.ToString(format);
PrevValue = prevValue.ToString(format);
break;
}
case MemorySearchFormat.Signed: {
switch(_search.ValueSize) {
case MemorySearchValueSize.Byte:
Value = ((sbyte)value).ToString();
PrevValue = ((sbyte)prevValue).ToString();
break;
case MemorySearchValueSize.Word:
Value = ((short)value).ToString();
PrevValue = ((short)prevValue).ToString();
break;
case MemorySearchValueSize.Dword:
Value = ((int)value).ToString();
PrevValue = ((int)prevValue).ToString();
break;
}
break;
}
case MemorySearchFormat.Unsigned: {
switch(_search.ValueSize) {
case MemorySearchValueSize.Byte:
Value = ((byte)value).ToString();
PrevValue = ((byte)prevValue).ToString();
break;
case MemorySearchValueSize.Word:
Value = ((ushort)value).ToString();
PrevValue = ((ushort)prevValue).ToString();
break;
case MemorySearchValueSize.Dword:
Value = ((uint)value).ToString();
PrevValue = ((uint)prevValue).ToString();
break;
}
break;
}
}
AddressCounters counters = DebugApi.GetMemoryAccessCounts((uint)address, 1, _search.MemoryType)[0];
UInt64 masterClock = EmuApi.GetTimingInfo(_search.MemoryType.ToCpuType()).MasterClock;
ReadCount = CodeTooltipHelper.FormatCount(counters.ReadCounter);
WriteCount = CodeTooltipHelper.FormatCount(counters.WriteCounter);
ExecCount = CodeTooltipHelper.FormatCount(counters.ExecCounter);
LastRead = CodeTooltipHelper.FormatCount(masterClock - counters.ReadStamp, counters.ReadStamp);
LastWrite = CodeTooltipHelper.FormatCount(masterClock - counters.WriteStamp, counters.WriteStamp);
LastExec = CodeTooltipHelper.FormatCount(masterClock - counters.ExecStamp, counters.ExecStamp);
IsMatch = _search.IsMatch(address);
}
}

View file

@ -493,7 +493,7 @@ public class NesHeaderEditViewModel : DisposableViewModel
public GameInputType GetInputType()
{
if(GetRomHeaderVersion() == RomHeaderVersion.Nes2_0) {
if(_bytes[15] < Enum.GetValues(typeof(GameInputType)).Length) {
if(_bytes[15] < Enum.GetValues<GameInputType>().Length) {
return (GameInputType)_bytes[15];
}
return GameInputType.Unspecified;

View file

@ -19,23 +19,23 @@
<Border BorderThickness="0 1 0 0" BorderBrush="{StaticResource MesenGrayBorderColor}">
<DataBox
Items="{CompiledBinding Breakpoints}"
Selection="{CompiledBinding Selection}"
Items="{Binding Breakpoints}"
Selection="{Binding Selection}"
CellClick="OnCellClick"
CellDoubleClick="OnCellDoubleClick"
SelectionMode="Multiple"
SortMode="Multiple"
SortCommand="{Binding Sort}"
SortState="{CompiledBinding SortState}"
SortState="{Binding SortState}"
GridLinesVisibility="All"
ColumnWidths="{CompiledBinding ColumnWidths}"
ColumnWidths="{Binding ColumnWidths}"
>
<DataBox.Columns>
<DataBoxCheckBoxColumn ColumnName="Enabled" Header="{l:Translate colEnabled}" Binding="{Binding Breakpoint.Enabled}" InitialWidth="22" />
<DataBoxCheckBoxColumn ColumnName="Marked" Header="{l:Translate colMarked}" Binding="{Binding Breakpoint.MarkEvent}" InitialWidth="22" />
<DataBoxTextColumn ColumnName="Type" Header="{l:Translate colType}" Binding="{Binding TypeDisplay}" CanUserResize="True" InitialWidth="65" />
<DataBoxTextColumn ColumnName="Address" Header="{l:Translate colAddress}" Binding="{Binding AddressDisplay}" CanUserResize="True" InitialWidth="65" />
<DataBoxTextColumn ColumnName="Condition" Header="{l:Translate colCondition}" Binding="{Binding Breakpoint.Condition}" CanUserResize="True" InitialWidth="150" />
<DataBoxCheckBoxColumn ColumnName="Enabled" Header="{l:Translate colEnabled}" Binding="{Binding Breakpoint.Enabled, DataType={x:Type vm:BreakpointViewModel}}" InitialWidth="22" />
<DataBoxCheckBoxColumn ColumnName="Marked" Header="{l:Translate colMarked}" Binding="{Binding Breakpoint.MarkEvent, DataType={x:Type vm:BreakpointViewModel}}" InitialWidth="22" />
<DataBoxTextColumn ColumnName="Type" Header="{l:Translate colType}" Binding="{Binding TypeDisplay, DataType={x:Type vm:BreakpointViewModel}}" CanUserResize="True" InitialWidth="65" />
<DataBoxTextColumn ColumnName="Address" Header="{l:Translate colAddress}" Binding="{Binding AddressDisplay, DataType={x:Type vm:BreakpointViewModel}}" CanUserResize="True" InitialWidth="65" />
<DataBoxTextColumn ColumnName="Condition" Header="{l:Translate colCondition}" Binding="{Binding Breakpoint.Condition, DataType={x:Type vm:BreakpointViewModel}}" CanUserResize="True" InitialWidth="150" />
</DataBox.Columns>
</DataBox>
</Border>

View file

@ -19,33 +19,33 @@
<UserControl.Styles>
<Style Selector="DataBoxCell">
<Setter Property="Foreground" Value="{Binding Path=RowBrush}"/>
<Setter Property="FontStyle" Value="{Binding Path=RowStyle}"/>
<Setter Property="Foreground" Value="{Binding Path=RowBrush, DataType={x:Type vm:StackInfo}}"/>
<Setter Property="FontStyle" Value="{Binding Path=RowStyle, DataType={x:Type vm:StackInfo}}"/>
</Style>
</UserControl.Styles>
<Border BorderThickness="0 1 0 0" BorderBrush="{StaticResource MesenGrayBorderColor}">
<DataBox
Items="{CompiledBinding CallStackContent}"
Selection="{CompiledBinding Selection}"
Items="{Binding CallStackContent}"
Selection="{Binding Selection}"
GridLinesVisibility="All"
CellDoubleClick="OnCellDoubleClick"
ColumnWidths="{CompiledBinding ColumnWidths}"
ColumnWidths="{Binding ColumnWidths}"
>
<DataBox.Columns>
<DataBoxTextColumn
Header="{l:Translate colFunction}"
Binding="{Binding EntryPoint}"
Binding="{Binding EntryPoint, DataType={x:Type vm:StackInfo}}"
InitialWidth="100"
/>
<DataBoxTextColumn
Header="{l:Translate colPcAddress}"
Binding="{Binding PcAddress}"
Binding="{Binding PcAddress, DataType={x:Type vm:StackInfo}}"
InitialWidth="90"
/>
<DataBoxTextColumn
Header="{l:Translate colRomAddress}"
Binding="{Binding AbsAddress}"
Binding="{Binding AbsAddress, DataType={x:Type vm:StackInfo}}"
InitialWidth="90"
/>
</DataBox.Columns>

View file

@ -31,7 +31,7 @@ namespace Mesen.Debugger.Views
private void OnCellDoubleClick(DataBoxCell cell)
{
if(cell.DataContext is CallStackViewModel.StackInfo stack && DataContext is CallStackViewModel model) {
if(cell.DataContext is StackInfo stack && DataContext is CallStackViewModel model) {
model.GoToLocation(stack);
}
}

View file

@ -39,7 +39,7 @@
<Panel Background="#B0B0B0">
<Canvas>
<TextBlock
Text="{CompiledBinding ControllerIndex}"
Text="{Binding ControllerIndex}"
Canvas.Top="4"
Canvas.Left="0"
Foreground="Black"
@ -47,28 +47,28 @@
TextAlignment="Center"
/>
<Button CommandParameter="Up" Canvas.Top="4" Canvas.Left="10" Classes.selected="{CompiledBinding ButtonUp}" />
<Button CommandParameter="Left" Canvas.Top="12" Canvas.Left="2" Classes.selected="{CompiledBinding ButtonLeft}" />
<Button CommandParameter="Up" Canvas.Top="4" Canvas.Left="10" Classes.selected="{Binding ButtonUp}" />
<Button CommandParameter="Left" Canvas.Top="12" Canvas.Left="2" Classes.selected="{Binding ButtonLeft}" />
<Rectangle Fill="Black" Canvas.Top="12" Canvas.Left="10" Width="8" Height="8" />
<Button CommandParameter="Down" Canvas.Top="20" Canvas.Left="10" Classes.selected="{CompiledBinding ButtonDown}" />
<Button CommandParameter="Right" Canvas.Top="12" Canvas.Left="18" Classes.selected="{CompiledBinding ButtonRight}" />
<Button CommandParameter="Down" Canvas.Top="20" Canvas.Left="10" Classes.selected="{Binding ButtonDown}" />
<Button CommandParameter="Right" Canvas.Top="12" Canvas.Left="18" Classes.selected="{Binding ButtonRight}" />
<Button IsVisible="{CompiledBinding HasSelectButton}" CommandParameter="Select" Canvas.Top="20" Canvas.Left="32" Width="11" Height="7" Classes.selected="{CompiledBinding ButtonSelect}" CornerRadius="3" />
<Button IsVisible="{CompiledBinding HasStartButton}" CommandParameter="Start" Canvas.Top="20" Canvas.Left="45" Width="11" Height="7" Classes.selected="{CompiledBinding ButtonStart}" CornerRadius="3" />
<Button IsVisible="{Binding HasSelectButton}" CommandParameter="Select" Canvas.Top="20" Canvas.Left="32" Width="11" Height="7" Classes.selected="{Binding ButtonSelect}" CornerRadius="3" />
<Button IsVisible="{Binding HasStartButton}" CommandParameter="Start" Canvas.Top="20" Canvas.Left="45" Width="11" Height="7" Classes.selected="{Binding ButtonStart}" CornerRadius="3" />
</Canvas>
<Canvas IsVisible="{CompiledBinding !IsSnes}" Width="25" Height="15" HorizontalAlignment="Right" VerticalAlignment="Bottom">
<Button CommandParameter="B" Canvas.Top="0" Canvas.Left="0" Classes.selected="{CompiledBinding ButtonB}" CornerRadius="6" Width="10" Height="10" />
<Button CommandParameter="A" Canvas.Top="0" Canvas.Left="12" Classes.selected="{CompiledBinding ButtonA}" CornerRadius="6" Width="10" Height="10" />
<Canvas IsVisible="{Binding !IsSnes}" Width="25" Height="15" HorizontalAlignment="Right" VerticalAlignment="Bottom">
<Button CommandParameter="B" Canvas.Top="0" Canvas.Left="0" Classes.selected="{Binding ButtonB}" CornerRadius="6" Width="10" Height="10" />
<Button CommandParameter="A" Canvas.Top="0" Canvas.Left="12" Classes.selected="{Binding ButtonA}" CornerRadius="6" Width="10" Height="10" />
</Canvas>
<Canvas IsVisible="{CompiledBinding IsSnes}" Width="26" Height="26" HorizontalAlignment="Right" VerticalAlignment="Bottom">
<Button CommandParameter="X" Canvas.Top="0" Canvas.Left="8" Classes.selected="{CompiledBinding ButtonX}" CornerRadius="6" Width="9" Height="9"/>
<Button CommandParameter="Y" Canvas.Top="8" Canvas.Left="0" Classes.selected="{CompiledBinding ButtonY}" CornerRadius="6" Width="9" Height="9" />
<Button CommandParameter="B" Canvas.Top="16" Canvas.Left="8" Classes.selected="{CompiledBinding ButtonB}" CornerRadius="6" Width="9" Height="9" />
<Button CommandParameter="A" Canvas.Top="8" Canvas.Left="16" Classes.selected="{CompiledBinding ButtonA}" CornerRadius="6" Width="9" Height="9" />
<Canvas IsVisible="{Binding IsSnes}" Width="26" Height="26" HorizontalAlignment="Right" VerticalAlignment="Bottom">
<Button CommandParameter="X" Canvas.Top="0" Canvas.Left="8" Classes.selected="{Binding ButtonX}" CornerRadius="6" Width="9" Height="9"/>
<Button CommandParameter="Y" Canvas.Top="8" Canvas.Left="0" Classes.selected="{Binding ButtonY}" CornerRadius="6" Width="9" Height="9" />
<Button CommandParameter="B" Canvas.Top="16" Canvas.Left="8" Classes.selected="{Binding ButtonB}" CornerRadius="6" Width="9" Height="9" />
<Button CommandParameter="A" Canvas.Top="8" Canvas.Left="16" Classes.selected="{Binding ButtonA}" CornerRadius="6" Width="9" Height="9" />
</Canvas>
<Canvas IsVisible="{CompiledBinding HasShoulderButtons}" Width="86" Height="4" Margin="0 -1 0 0" VerticalAlignment="Top">
<Button CommandParameter="L" Canvas.Top="-1" Canvas.Left="6" Height="4" Width="16" Classes.selected="{CompiledBinding ButtonL}" />
<Button CommandParameter="R" Canvas.Top="-1" Canvas.Left="64" Height="4" Width="16" Classes.selected="{CompiledBinding ButtonR}" />
<Canvas IsVisible="{Binding HasShoulderButtons}" Width="86" Height="4" Margin="0 -1 0 0" VerticalAlignment="Top">
<Button CommandParameter="L" Canvas.Top="-1" Canvas.Left="6" Height="4" Width="16" Classes.selected="{Binding ButtonL}" />
<Button CommandParameter="R" Canvas.Top="-1" Canvas.Left="64" Height="4" Width="16" Classes.selected="{Binding ButtonR}" />
</Canvas>
</Panel>
</Border>

View file

@ -18,7 +18,7 @@
</Design.DataContext>
<ScrollViewer AllowAutoHide="False">
<ItemsControl ItemsSource="{CompiledBinding Controllers}" VerticalAlignment="Center">
<ItemsControl ItemsSource="{Binding Controllers}" VerticalAlignment="Center">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />

View file

@ -9,5 +9,5 @@
xmlns:dvm="using:Mesen.Debugger.ViewModels.DebuggerDock"
x:Class="Mesen.Debugger.Views.DebuggerDock.ToolContainerView"
>
<ContentControl Content="{Binding Model}" />
<ContentControl Content="{ReflectionBinding Model}" />
</UserControl>

View file

@ -31,180 +31,180 @@
<c:EnumComboBox
Grid.Column="1"
Width="105"
SelectedItem="{CompiledBinding Config.VerifiedDataDisplay}"
SelectedItem="{Binding Config.VerifiedDataDisplay}"
/>
<TextBlock Grid.Row="1" VerticalAlignment="Center" Text="{l:Translate lblUnidentifiedBlock}" />
<c:EnumComboBox
Grid.Row="1" Grid.Column="1"
Width="105"
SelectedItem="{CompiledBinding Config.UnidentifiedBlockDisplay}"
SelectedItem="{Binding Config.UnidentifiedBlockDisplay}"
/>
<DockPanel Grid.Row="2" Grid.ColumnSpan="2">
<TextBlock VerticalAlignment="Center" Text="{l:Translate lblAddressDisplay}" />
<c:EnumComboBox SelectedItem="{CompiledBinding Config.AddressDisplayType}" />
<c:EnumComboBox SelectedItem="{Binding Config.AddressDisplayType}" />
</DockPanel>
</Grid>
<CheckBox
IsChecked="{CompiledBinding Config.ShowByteCode}"
IsChecked="{Binding Config.ShowByteCode}"
Content="{l:Translate chkShowByteCode}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.ShowMemoryValues}"
IsChecked="{Binding Config.ShowMemoryValues}"
Content="{l:Translate chkShowMemoryValues}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.ShowJumpLabels}"
IsChecked="{Binding Config.ShowJumpLabels}"
Content="{l:Translate chkShowJumpLabels}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.UseLowerCaseDisassembly}"
IsChecked="{Binding Config.UseLowerCaseDisassembly}"
Content="{l:Translate chkUseLowerCaseDisassembly}"
/>
<CheckBox
IsVisible="{CompiledBinding IsSpc}"
IsChecked="{CompiledBinding Config.Snes.UseAltSpcOpNames}"
IsVisible="{Binding IsSpc}"
IsChecked="{Binding Config.Snes.UseAltSpcOpNames}"
Content="{l:Translate chkSnesUseAltSpcOpNames}"
/>
</c:OptionSection>
<c:OptionSection Header="{l:Translate lblBreakOptions}">
<StackPanel IsVisible="{CompiledBinding IsSnes}">
<StackPanel IsVisible="{Binding IsSnes}">
<CheckBox
IsChecked="{CompiledBinding Config.Snes.BreakOnBrk}"
IsChecked="{Binding Config.Snes.BreakOnBrk}"
Content="{l:Translate chkBreakOnBrk}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Snes.BreakOnCop}"
IsChecked="{Binding Config.Snes.BreakOnCop}"
Content="{l:Translate chkBreakOnCop}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Snes.BreakOnWdm}"
IsChecked="{Binding Config.Snes.BreakOnWdm}"
Content="{l:Translate chkBreakOnWdm}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Snes.BreakOnStp}"
IsChecked="{Binding Config.Snes.BreakOnStp}"
Content="{l:Translate chkBreakOnStp}"
/>
</StackPanel>
<StackPanel IsVisible="{CompiledBinding IsGameboy}">
<StackPanel IsVisible="{Binding IsGameboy}">
<CheckBox
IsChecked="{CompiledBinding Config.Gameboy.GbBreakOnInvalidOamAccess}"
IsChecked="{Binding Config.Gameboy.GbBreakOnInvalidOamAccess}"
Content="{l:Translate chkGbBreakOnInvalidOamAccess}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Gameboy.GbBreakOnInvalidVramAccess}"
IsChecked="{Binding Config.Gameboy.GbBreakOnInvalidVramAccess}"
Content="{l:Translate chkGbBreakOnInvalidVramAccess}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Gameboy.GbBreakOnDisableLcdOutsideVblank}"
IsChecked="{Binding Config.Gameboy.GbBreakOnDisableLcdOutsideVblank}"
Content="{l:Translate chkGbBreakOnDisableLcdOutsideVblank}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Gameboy.GbBreakOnInvalidOpCode}"
IsChecked="{Binding Config.Gameboy.GbBreakOnInvalidOpCode}"
Content="{l:Translate chkGbBreakOnInvalidOpCode}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Gameboy.GbBreakOnNopLoad}"
IsChecked="{Binding Config.Gameboy.GbBreakOnNopLoad}"
Content="{l:Translate chkGbBreakOnNopLoad}"
/>
<!-- not implemented -->
<CheckBox
IsVisible="False"
IsChecked="{CompiledBinding Config.Gameboy.GbBreakOnOamCorruption}"
IsChecked="{Binding Config.Gameboy.GbBreakOnOamCorruption}"
Content="{l:Translate chkGbBreakOnOamCorruption}"
/>
</StackPanel>
<StackPanel IsVisible="{CompiledBinding IsNes}">
<StackPanel IsVisible="{Binding IsNes}">
<CheckBox
IsChecked="{CompiledBinding Config.Nes.BreakOnBrk}"
IsChecked="{Binding Config.Nes.BreakOnBrk}"
Content="{l:Translate chkBreakOnBrk}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Nes.BreakOnUnofficialOpCode}"
IsChecked="{Binding Config.Nes.BreakOnUnofficialOpCode}"
Content="{l:Translate chkBreakOnUnofficialOpCode}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Nes.BreakOnCpuCrash}"
IsChecked="{Binding Config.Nes.BreakOnCpuCrash}"
Content="{l:Translate chkBreakOnCpuCrash}"
/>
<Rectangle Stroke="#AAA" Height="1" StrokeThickness="1" HorizontalAlignment="Stretch" Margin="0 2" />
<CheckBox
IsChecked="{CompiledBinding Config.Nes.BreakOnBusConflict}"
IsChecked="{Binding Config.Nes.BreakOnBusConflict}"
Content="{l:Translate chkBreakOnBusConflict}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Nes.BreakOnDecayedOamRead}"
IsChecked="{Binding Config.Nes.BreakOnDecayedOamRead}"
Content="{l:Translate chkBreakOnDecayedOamRead}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Nes.BreakOnPpu2000ScrollGlitch}"
IsChecked="{Binding Config.Nes.BreakOnPpu2000ScrollGlitch}"
Content="{l:Translate chkBreakOnPpu2000ScrollGlitch}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Nes.BreakOnPpu2006ScrollGlitch}"
IsChecked="{Binding Config.Nes.BreakOnPpu2006ScrollGlitch}"
Content="{l:Translate chkBreakOnPpu2006ScrollGlitch}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Nes.NesBreakOnExtOutputMode}"
IsChecked="{Binding Config.Nes.NesBreakOnExtOutputMode}"
Content="{l:Translate chkNesBreakOnExtOutputMode}"
/>
</StackPanel>
<StackPanel IsVisible="{CompiledBinding IsPce}">
<StackPanel IsVisible="{Binding IsPce}">
<CheckBox
IsChecked="{CompiledBinding Config.Pce.BreakOnBrk}"
IsChecked="{Binding Config.Pce.BreakOnBrk}"
Content="{l:Translate chkBreakOnBrk}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Pce.BreakOnUnofficialOpCode}"
IsChecked="{Binding Config.Pce.BreakOnUnofficialOpCode}"
Content="{l:Translate chkBreakOnUnofficialOpCode}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Pce.BreakOnInvalidVramAddress}"
IsChecked="{Binding Config.Pce.BreakOnInvalidVramAddress}"
Content="{l:Translate chkPceBreakOnInvalidVramAddress}"
/>
</StackPanel>
<StackPanel IsVisible="{CompiledBinding IsSms}">
<StackPanel IsVisible="{Binding IsSms}">
<CheckBox
IsChecked="{CompiledBinding Config.Sms.BreakOnNopLoad}"
IsChecked="{Binding Config.Sms.BreakOnNopLoad}"
Content="{l:Translate chkGbBreakOnNopLoad}"
/>
</StackPanel>
<StackPanel IsVisible="{CompiledBinding IsGba}">
<StackPanel IsVisible="{Binding IsGba}">
<CheckBox
IsChecked="{CompiledBinding Config.Gba.BreakOnInvalidOpCode}"
IsChecked="{Binding Config.Gba.BreakOnInvalidOpCode}"
Content="{l:Translate chkGbaBreakOnInvalidOpCode}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Gba.BreakOnNopLoad}"
IsChecked="{Binding Config.Gba.BreakOnNopLoad}"
Content="{l:Translate chkGbaBreakOnNopLoad}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.Gba.BreakOnUnalignedMemAccess}"
IsChecked="{Binding Config.Gba.BreakOnUnalignedMemAccess}"
Content="{l:Translate chkBreakOnUnalignedMemAccess}"
/>
</StackPanel>
<Rectangle Stroke="#AAA" Height="1" StrokeThickness="1" HorizontalAlignment="Stretch" Margin="0 2" />
<CheckBox
IsChecked="{CompiledBinding Config.BreakOnUninitRead}"
IsChecked="{Binding Config.BreakOnUninitRead}"
Content="{l:Translate chkBreakOnUninitRead}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.BreakOnPowerCycleReset}"
IsChecked="{Binding Config.BreakOnPowerCycleReset}"
Content="{l:Translate chkBreakOnPowerCycleReset}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.BreakOnOpen}"
IsChecked="{Binding Config.BreakOnOpen}"
Content="{l:Translate chkBreakOnOpen}"
/>
</c:OptionSection>
<c:OptionSection Header="{l:Translate lblMiscSettings}">
<CheckBox
IsChecked="{CompiledBinding Config.Snes.IgnoreDspReadWrites}"
IsChecked="{Binding Config.Snes.IgnoreDspReadWrites}"
Content="{l:Translate chkSnesIgnoreDspReadWrites}"
ToolTip.Tip="{l:Translate chkSnesIgnoreDspReadWritesHint}"
>
@ -219,39 +219,39 @@
</CheckBox>
<CheckBox
IsChecked="{CompiledBinding Config.BringToFrontOnBreak}"
IsChecked="{Binding Config.BringToFrontOnBreak}"
Content="{l:Translate chkBringToFrontOnBreak}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.BringToFrontOnPause}"
IsChecked="{Binding Config.BringToFrontOnPause}"
Content="{l:Translate chkBringToFrontOnPause}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.RefreshWhileRunning}"
IsChecked="{Binding Config.RefreshWhileRunning}"
Content="{l:Translate chkRefreshWhileRunning}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.DrawPartialFrame}"
IsChecked="{Binding Config.DrawPartialFrame}"
Content="{l:Translate chkDrawPartialFrame}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.UsePredictiveBreakpoints}"
IsChecked="{Binding Config.UsePredictiveBreakpoints}"
Content="{l:Translate chkUsePredictiveBreakpoints}"
ToolTip.Tip="{l:Translate chkUsePredictiveBreakpointsHint}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.SingleBreakpointPerInstruction}"
IsVisible="{CompiledBinding !Config.UsePredictiveBreakpoints}"
IsChecked="{Binding Config.SingleBreakpointPerInstruction}"
IsVisible="{Binding !Config.UsePredictiveBreakpoints}"
Content="{l:Translate chkSingleBreakpointPerInstruction}"
/>
<CheckBox
IsChecked="True"
IsEnabled="False"
IsVisible="{CompiledBinding Config.UsePredictiveBreakpoints}"
IsVisible="{Binding Config.UsePredictiveBreakpoints}"
Content="{l:Translate chkSingleBreakpointPerInstruction}"
/>
</c:OptionSection>

View file

@ -21,9 +21,9 @@
<dc:CodeScrollBar
Grid.Column="1"
VerticalAlignment="Stretch"
Maximum="{CompiledBinding MaxScrollPosition}"
Value="{CompiledBinding ScrollPosition}"
ShowMarkers="{CompiledBinding ShowScrollBarMarkers}"
Maximum="{Binding MaxScrollPosition}"
Value="{Binding ScrollPosition}"
ShowMarkers="{Binding ShowScrollBarMarkers}"
>
<dc:CodeScrollBar.BreakpointBar>
<dc:BreakpointBar />
@ -33,8 +33,8 @@
<ScrollBar
Orientation="Horizontal"
Grid.Row="1"
Maximum="{CompiledBinding #disViewer.HorizontalScrollMaxPosition}"
Value="{CompiledBinding #disViewer.HorizontalScrollPosition}"
Maximum="{Binding #disViewer.HorizontalScrollMaxPosition}"
Value="{Binding #disViewer.HorizontalScrollPosition}"
/>
<Panel Grid.Row="1" Grid.Column="1" Background="{DynamicResource ButtonBackground}" />
@ -42,17 +42,17 @@
<Panel>
<dc:DisassemblyViewer
Name="disViewer"
Lines="{CompiledBinding Lines}"
SearchString="{CompiledBinding QuickSearch.SearchString}"
StyleProvider="{CompiledBinding StyleProvider}"
Lines="{Binding Lines}"
SearchString="{Binding QuickSearch.SearchString}"
StyleProvider="{Binding StyleProvider}"
FontFamily="{DynamicResource MesenDisassemblyFont}"
FontSize="{DynamicResource MesenDisassemblyFontSize}"
ShowByteCode="{CompiledBinding Config.Debugger.ShowByteCode}"
AddressDisplayType="{CompiledBinding Config.Debugger.AddressDisplayType}"
ShowByteCode="{Binding Config.Debugger.ShowByteCode}"
AddressDisplayType="{Binding Config.Debugger.AddressDisplayType}"
/>
<dv:QuickSearchView
DataContext="{CompiledBinding QuickSearch}"
DataContext="{Binding QuickSearch}"
VerticalAlignment="Top"
HorizontalAlignment="Right"
/>

View file

@ -19,19 +19,29 @@
<Border BorderThickness="0 1 0 0" BorderBrush="{StaticResource MesenGrayBorderColor}">
<DataBox
Items="{CompiledBinding FindResults}"
Selection="{CompiledBinding Selection}"
Items="{Binding FindResults}"
Selection="{Binding Selection}"
CellDoubleClick="OnCellDoubleClick"
SelectionMode="Single"
SortMode="Multiple"
SortCommand="{Binding Sort}"
SortState="{CompiledBinding SortState}"
SortState="{Binding SortState}"
GridLinesVisibility="All"
ColumnWidths="{CompiledBinding ColumnWidths}"
ColumnWidths="{Binding ColumnWidths}"
>
<DataBox.Columns>
<DataBoxTextColumn ColumnName="Address" Header="{l:Translate colAddress}" Binding="{Binding Address}" InitialWidth="100" />
<DataBoxTextColumn ColumnName="Result" Header="{l:Translate colResult}" Binding="{Binding Text}" InitialWidth="300" />
<DataBoxTextColumn
ColumnName="Address"
Header="{l:Translate colAddress}"
Binding="{Binding Address, DataType={x:Type vm:FindResultViewModel}}"
InitialWidth="100"
/>
<DataBoxTextColumn
ColumnName="Result"
Header="{l:Translate colResult}"
Binding="{Binding Text, DataType={x:Type vm:FindResultViewModel}}"
InitialWidth="300"
/>
</DataBox.Columns>
</DataBox>
</Border>

View file

@ -20,27 +20,45 @@
<UserControl.Styles>
<Style Selector="DataBoxRow">
<Setter Property="Foreground" Value="{Binding RowBrush}" />
<Setter Property="FontStyle" Value="{Binding RowStyle}" />
<Setter Property="Foreground" Value="{Binding RowBrush, DataType={x:Type vm:FunctionViewModel}}" />
<Setter Property="FontStyle" Value="{Binding RowStyle, DataType={x:Type vm:FunctionViewModel}}" />
</Style>
</UserControl.Styles>
<Border BorderThickness="0 1 0 0" BorderBrush="{StaticResource MesenGrayBorderColor}">
<DataBox
Items="{CompiledBinding Functions}"
Selection="{CompiledBinding Selection}"
Items="{Binding Functions}"
Selection="{Binding Selection}"
GridLinesVisibility="All"
SelectionMode="Multiple"
SortMode="Multiple"
SortCommand="{Binding Sort}"
SortState="{CompiledBinding SortState}"
SortState="{Binding SortState}"
CellDoubleClick="OnCellDoubleClick"
ColumnWidths="{CompiledBinding ColumnWidths}"
ColumnWidths="{Binding ColumnWidths}"
>
<DataBox.Columns>
<DataBoxTextColumn ColumnName="Function" Header="{l:Translate colFunction}" Binding="{Binding LabelName}" CanUserResize="True" InitialWidth="100" />
<DataBoxTextColumn ColumnName="RelAddr" Header="{l:Translate colCpuAddr}" Binding="{Binding RelAddressDisplay}" CanUserResize="True" InitialWidth="80" />
<DataBoxTextColumn ColumnName="AbsAddr" Header="{l:Translate colRomAddr}" Binding="{Binding AbsAddressDisplay}" CanUserResize="True" InitialWidth="80" />
<DataBoxTextColumn
ColumnName="Function"
Header="{l:Translate colFunction}"
Binding="{Binding LabelName, DataType={x:Type vm:FunctionViewModel}}"
CanUserResize="True"
InitialWidth="100"
/>
<DataBoxTextColumn
ColumnName="RelAddr"
Header="{l:Translate colCpuAddr}"
Binding="{Binding RelAddressDisplay, DataType={x:Type vm:FunctionViewModel}}"
CanUserResize="True"
InitialWidth="80"
/>
<DataBoxTextColumn
ColumnName="AbsAddr"
Header="{l:Translate colRomAddr}"
Binding="{Binding AbsAddressDisplay, DataType={x:Type vm:FunctionViewModel}}"
CanUserResize="True"
InitialWidth="80"
/>
</DataBox.Columns>
</DataBox>
</Border>

View file

@ -23,20 +23,20 @@
<c:OptionSection Header="LCD writes" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="0" />
<c:OptionSection Header="LCD reads" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="10 0 0 0" />
<StackPanel Grid.Column="1" Grid.Row="1">
<dc:EventViewerCategoryControl Text="VRAM" Config="{CompiledBinding PpuRegisterVramWrites}" />
<dc:EventViewerCategoryControl Text="OAM" Config="{CompiledBinding PpuRegisterOamWrites}" />
<dc:EventViewerCategoryControl Text="Palette" Config="{CompiledBinding PpuRegisterCgramWrites}" />
<dc:EventViewerCategoryControl Text="BG Scroll" Config="{CompiledBinding PpuRegisterBgScrollWrites}" />
<dc:EventViewerCategoryControl Text="Window" Config="{CompiledBinding PpuRegisterWindowWrites}" />
<dc:EventViewerCategoryControl Text="Others" Config="{CompiledBinding PpuRegisterOtherWrites}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{Binding PpuRegisterVramWrites}" />
<dc:EventViewerCategoryControl Text="OAM" Config="{Binding PpuRegisterOamWrites}" />
<dc:EventViewerCategoryControl Text="Palette" Config="{Binding PpuRegisterCgramWrites}" />
<dc:EventViewerCategoryControl Text="BG Scroll" Config="{Binding PpuRegisterBgScrollWrites}" />
<dc:EventViewerCategoryControl Text="Window" Config="{Binding PpuRegisterWindowWrites}" />
<dc:EventViewerCategoryControl Text="Others" Config="{Binding PpuRegisterOtherWrites}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="1">
<dc:EventViewerCategoryControl Text="VRAM" Config="{CompiledBinding PpuRegisterVramReads}" />
<dc:EventViewerCategoryControl Text="OAM" Config="{CompiledBinding PpuRegisterOamReads}" />
<dc:EventViewerCategoryControl Text="Palette" Config="{CompiledBinding PpuRegisterCgramReads}" />
<dc:EventViewerCategoryControl Text="BG Scroll" Config="{CompiledBinding PpuRegisterBgScrollReads}" />
<dc:EventViewerCategoryControl Text="Window" Config="{CompiledBinding PpuRegisterWindowReads}" />
<dc:EventViewerCategoryControl Text="Others" Config="{CompiledBinding PpuRegisterOtherReads}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{Binding PpuRegisterVramReads}" />
<dc:EventViewerCategoryControl Text="OAM" Config="{Binding PpuRegisterOamReads}" />
<dc:EventViewerCategoryControl Text="Palette" Config="{Binding PpuRegisterCgramReads}" />
<dc:EventViewerCategoryControl Text="BG Scroll" Config="{Binding PpuRegisterBgScrollReads}" />
<dc:EventViewerCategoryControl Text="Window" Config="{Binding PpuRegisterWindowReads}" />
<dc:EventViewerCategoryControl Text="Others" Config="{Binding PpuRegisterOtherReads}" />
</StackPanel>
</Grid>
@ -44,27 +44,27 @@
<c:OptionSection Header="Register writes" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="0" />
<c:OptionSection Header="Register reads" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="10 0 0 0" />
<StackPanel Grid.Column="1" Grid.Row="1">
<dc:EventViewerCategoryControl Text="APU" Config="{CompiledBinding ApuRegisterWrites}" />
<dc:EventViewerCategoryControl Text="Input" Config="{CompiledBinding InputWrites}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{CompiledBinding TimerWrites}" />
<dc:EventViewerCategoryControl Text="Serial" Config="{CompiledBinding SerialWrites}" />
<dc:EventViewerCategoryControl Text="Other" Config="{CompiledBinding OtherRegisterWrites}" />
<dc:EventViewerCategoryControl Text="APU" Config="{Binding ApuRegisterWrites}" />
<dc:EventViewerCategoryControl Text="Input" Config="{Binding InputWrites}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{Binding TimerWrites}" />
<dc:EventViewerCategoryControl Text="Serial" Config="{Binding SerialWrites}" />
<dc:EventViewerCategoryControl Text="Other" Config="{Binding OtherRegisterWrites}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="1">
<dc:EventViewerCategoryControl Text="APU" Config="{CompiledBinding ApuRegisterReads}" />
<dc:EventViewerCategoryControl Text="Input" Config="{CompiledBinding InputReads}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{CompiledBinding TimerReads}" />
<dc:EventViewerCategoryControl Text="Serial" Config="{CompiledBinding SerialReads}" />
<dc:EventViewerCategoryControl Text="Other" Config="{CompiledBinding OtherRegisterReads}" />
<dc:EventViewerCategoryControl Text="APU" Config="{Binding ApuRegisterReads}" />
<dc:EventViewerCategoryControl Text="Input" Config="{Binding InputReads}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{Binding TimerReads}" />
<dc:EventViewerCategoryControl Text="Serial" Config="{Binding SerialReads}" />
<dc:EventViewerCategoryControl Text="Other" Config="{Binding OtherRegisterReads}" />
</StackPanel>
</Grid>
<c:OptionSection Header="Other events" />
<StackPanel>
<dc:EventViewerCategoryControl Text="IRQ" Config="{CompiledBinding Irq}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{CompiledBinding MarkedBreakpoints}" />
<dc:EventViewerCategoryControl Text="IRQ" Config="{Binding Irq}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{Binding MarkedBreakpoints}" />
</StackPanel>
<CheckBox Margin="0 10 0 0" IsChecked="{CompiledBinding ShowPreviousFrameEvents}" Content="Show previous frame events" />
<CheckBox Margin="0 10 0 0" IsChecked="{Binding ShowPreviousFrameEvents}" Content="Show previous frame events" />
</StackPanel>
</UserControl>

View file

@ -23,20 +23,20 @@
<c:OptionSection Header="LCD writes" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="0" />
<c:OptionSection Header="LCD reads" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="10 0 0 0" />
<StackPanel Grid.Column="1" Grid.Row="1">
<dc:EventViewerCategoryControl Text="VRAM" Config="{CompiledBinding VramWrites}" />
<dc:EventViewerCategoryControl Text="OAM" Config="{CompiledBinding OamWrites}" />
<dc:EventViewerCategoryControl Text="Palette" Config="{CompiledBinding PaletteWrites}" />
<dc:EventViewerCategoryControl Text="BG Scroll" Config="{CompiledBinding PpuRegisterBgScrollWrites}" />
<dc:EventViewerCategoryControl Text="Window" Config="{CompiledBinding PpuRegisterWindowWrites}" />
<dc:EventViewerCategoryControl Text="Others" Config="{CompiledBinding PpuRegisterOtherWrites}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{Binding VramWrites}" />
<dc:EventViewerCategoryControl Text="OAM" Config="{Binding OamWrites}" />
<dc:EventViewerCategoryControl Text="Palette" Config="{Binding PaletteWrites}" />
<dc:EventViewerCategoryControl Text="BG Scroll" Config="{Binding PpuRegisterBgScrollWrites}" />
<dc:EventViewerCategoryControl Text="Window" Config="{Binding PpuRegisterWindowWrites}" />
<dc:EventViewerCategoryControl Text="Others" Config="{Binding PpuRegisterOtherWrites}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="1">
<dc:EventViewerCategoryControl Text="VRAM" Config="{CompiledBinding VramReads}" />
<dc:EventViewerCategoryControl Text="OAM" Config="{CompiledBinding OamReads}" />
<dc:EventViewerCategoryControl Text="Palette" Config="{CompiledBinding PaletteReads}" />
<dc:EventViewerCategoryControl Text="BG Scroll" Config="{CompiledBinding PpuRegisterBgScrollReads}" />
<dc:EventViewerCategoryControl Text="Window" Config="{CompiledBinding PpuRegisterWindowReads}" />
<dc:EventViewerCategoryControl Text="Others" Config="{CompiledBinding PpuRegisterOtherReads}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{Binding VramReads}" />
<dc:EventViewerCategoryControl Text="OAM" Config="{Binding OamReads}" />
<dc:EventViewerCategoryControl Text="Palette" Config="{Binding PaletteReads}" />
<dc:EventViewerCategoryControl Text="BG Scroll" Config="{Binding PpuRegisterBgScrollReads}" />
<dc:EventViewerCategoryControl Text="Window" Config="{Binding PpuRegisterWindowReads}" />
<dc:EventViewerCategoryControl Text="Others" Config="{Binding PpuRegisterOtherReads}" />
</StackPanel>
</Grid>
@ -44,29 +44,29 @@
<c:OptionSection Header="Register writes" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="0" />
<c:OptionSection Header="Register reads" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="10 0 0 0" />
<StackPanel Grid.Column="1" Grid.Row="1">
<dc:EventViewerCategoryControl Text="DMA" Config="{CompiledBinding DmaRegisterWrites}" />
<dc:EventViewerCategoryControl Text="APU" Config="{CompiledBinding ApuRegisterWrites}" />
<dc:EventViewerCategoryControl Text="Input" Config="{CompiledBinding InputWrites}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{CompiledBinding TimerWrites}" />
<dc:EventViewerCategoryControl Text="Serial" Config="{CompiledBinding SerialWrites}" />
<dc:EventViewerCategoryControl Text="Other" Config="{CompiledBinding OtherRegisterWrites}" />
<dc:EventViewerCategoryControl Text="DMA" Config="{Binding DmaRegisterWrites}" />
<dc:EventViewerCategoryControl Text="APU" Config="{Binding ApuRegisterWrites}" />
<dc:EventViewerCategoryControl Text="Input" Config="{Binding InputWrites}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{Binding TimerWrites}" />
<dc:EventViewerCategoryControl Text="Serial" Config="{Binding SerialWrites}" />
<dc:EventViewerCategoryControl Text="Other" Config="{Binding OtherRegisterWrites}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="1">
<dc:EventViewerCategoryControl Text="DMA" Config="{CompiledBinding DmaRegisterReads}" />
<dc:EventViewerCategoryControl Text="APU" Config="{CompiledBinding ApuRegisterReads}" />
<dc:EventViewerCategoryControl Text="Input" Config="{CompiledBinding InputReads}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{CompiledBinding TimerReads}" />
<dc:EventViewerCategoryControl Text="Serial" Config="{CompiledBinding SerialReads}" />
<dc:EventViewerCategoryControl Text="Other" Config="{CompiledBinding OtherRegisterReads}" />
<dc:EventViewerCategoryControl Text="DMA" Config="{Binding DmaRegisterReads}" />
<dc:EventViewerCategoryControl Text="APU" Config="{Binding ApuRegisterReads}" />
<dc:EventViewerCategoryControl Text="Input" Config="{Binding InputReads}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{Binding TimerReads}" />
<dc:EventViewerCategoryControl Text="Serial" Config="{Binding SerialReads}" />
<dc:EventViewerCategoryControl Text="Other" Config="{Binding OtherRegisterReads}" />
</StackPanel>
</Grid>
<c:OptionSection Header="Other events" />
<StackPanel>
<dc:EventViewerCategoryControl Text="IRQ" Config="{CompiledBinding Irq}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{CompiledBinding MarkedBreakpoints}" />
<dc:EventViewerCategoryControl Text="IRQ" Config="{Binding Irq}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{Binding MarkedBreakpoints}" />
</StackPanel>
<CheckBox Margin="0 10 0 0" IsChecked="{CompiledBinding ShowPreviousFrameEvents}" Content="Show previous frame events" />
<CheckBox Margin="0 10 0 0" IsChecked="{Binding ShowPreviousFrameEvents}" Content="Show previous frame events" />
</StackPanel>
</UserControl>

View file

@ -26,28 +26,28 @@
<Setter Property="Foreground" Value="{DynamicResource ToolTipForeground}" />
</Style>
<Style Selector="DataBoxRow">
<Setter Property="Foreground" Value="{Binding RowBrush}" />
<Setter Property="FontStyle" Value="{Binding RowStyle}" />
<Setter Property="Foreground" Value="{Binding RowBrush, DataType={x:Type vm:LabelViewModel}}" />
<Setter Property="FontStyle" Value="{Binding RowStyle, DataType={x:Type vm:LabelViewModel}}" />
</Style>
</UserControl.Styles>
<Border BorderThickness="0 1 0 0" BorderBrush="#80808080">
<DataBox
Items="{CompiledBinding Labels}"
Selection="{CompiledBinding Selection}"
Items="{Binding Labels}"
Selection="{Binding Selection}"
GridLinesVisibility="All"
SelectionMode="Multiple"
SortMode="Multiple"
SortCommand="{Binding Sort}"
SortState="{CompiledBinding SortState}"
SortState="{Binding SortState}"
CellDoubleClick="OnCellDoubleClick"
ColumnWidths="{CompiledBinding ColumnWidths}"
ColumnWidths="{Binding ColumnWidths}"
>
<DataBox.Columns>
<DataBoxTextColumn ColumnName="Label" Header="{l:Translate colLabel}" Binding="{Binding LabelText}" CanUserResize="True" InitialWidth="100" />
<DataBoxTextColumn ColumnName="RelAddr" Header="{l:Translate colCpuAddr}" Binding="{Binding RelAddressDisplay}" CanUserResize="True" InitialWidth="80" />
<DataBoxTextColumn ColumnName="AbsAddr" Header="{l:Translate colRomAddr}" Binding="{Binding AbsAddressDisplay}" CanUserResize="True" InitialWidth="80" />
<DataBoxTextColumn ColumnName="Comment" ShowToolTip="True" Header="{l:Translate colComment}" Binding="{Binding LabelComment}" CanUserResize="True" InitialWidth="100" />
<DataBoxTextColumn ColumnName="Label" Header="{l:Translate colLabel}" Binding="{Binding LabelText, DataType={x:Type vm:LabelViewModel}}" CanUserResize="True" InitialWidth="100" />
<DataBoxTextColumn ColumnName="RelAddr" Header="{l:Translate colCpuAddr}" Binding="{Binding RelAddressDisplay, DataType={x:Type vm:LabelViewModel}}" CanUserResize="True" InitialWidth="80" />
<DataBoxTextColumn ColumnName="AbsAddr" Header="{l:Translate colRomAddr}" Binding="{Binding AbsAddressDisplay, DataType={x:Type vm:LabelViewModel}}" CanUserResize="True" InitialWidth="80" />
<DataBoxTextColumn ColumnName="Comment" ShowToolTip="True" Header="{l:Translate colComment}" Binding="{Binding LabelComment, DataType={x:Type vm:LabelViewModel}}" CanUserResize="True" InitialWidth="100" />
</DataBox.Columns>
</DataBox>
</Border>

View file

@ -33,8 +33,8 @@
<dc:NavButton Nav="PrevRead" />
<dc:ColorCheckbox
Text="{l:Translate chkHighlightRead}"
Checked="{CompiledBinding Config.ReadHighlight.Highlight}"
Color="{CompiledBinding Config.ReadHighlight.Color}"
Checked="{Binding Config.ReadHighlight.Highlight}"
Color="{Binding Config.ReadHighlight.Color}"
/>
</DockPanel>
<DockPanel>
@ -42,8 +42,8 @@
<dc:NavButton Nav="PrevWrite" />
<dc:ColorCheckbox
Text="{l:Translate chkHighlightWrite}"
Checked="{CompiledBinding Config.WriteHighlight.Highlight}"
Color="{CompiledBinding Config.WriteHighlight.Color}"
Checked="{Binding Config.WriteHighlight.Highlight}"
Color="{Binding Config.WriteHighlight.Color}"
/>
</DockPanel>
<DockPanel>
@ -51,8 +51,8 @@
<dc:NavButton Nav="PrevExec" />
<dc:ColorCheckbox
Text="{l:Translate chkHighlightExec}"
Checked="{CompiledBinding Config.ExecHighlight.Highlight}"
Color="{CompiledBinding Config.ExecHighlight.Color}"
Checked="{Binding Config.ExecHighlight.Highlight}"
Color="{Binding Config.ExecHighlight.Color}"
/>
</DockPanel>
@ -60,7 +60,7 @@
<TextBlock VerticalAlignment="Center" Text="{l:Translate lblFadeSpeed}" />
<c:EnumComboBox
Width="100"
SelectedItem="{CompiledBinding Config.FadeSpeed}"
SelectedItem="{Binding Config.FadeSpeed}"
/>
</WrapPanel>
</c:OptionSection>
@ -71,8 +71,8 @@
<dc:NavButton Nav="PrevCode" />
<dc:ColorCheckbox
Text="{l:Translate chkHighlightCode}"
Checked="{CompiledBinding Config.CodeHighlight.Highlight}"
Color="{CompiledBinding Config.CodeHighlight.Color}"
Checked="{Binding Config.CodeHighlight.Highlight}"
Color="{Binding Config.CodeHighlight.Color}"
/>
</DockPanel>
@ -81,8 +81,8 @@
<dc:NavButton Nav="PrevData" />
<dc:ColorCheckbox
Text="{l:Translate chkHighlightData}"
Checked="{CompiledBinding Config.DataHighlight.Highlight}"
Color="{CompiledBinding Config.DataHighlight.Color}"
Checked="{Binding Config.DataHighlight.Highlight}"
Color="{Binding Config.DataHighlight.Color}"
/>
</DockPanel>
<DockPanel>
@ -93,30 +93,30 @@
<dc:ColorCheckbox
Text="{l:Translate chkHighlightLabel}"
Checked="{CompiledBinding Config.LabelHighlight.Highlight}"
Color="{CompiledBinding Config.LabelHighlight.Color}"
Checked="{Binding Config.LabelHighlight.Highlight}"
Color="{Binding Config.LabelHighlight.Color}"
/>
<dc:ColorCheckbox
Text="{l:Translate chkHighlightFrozenAddresses}"
Checked="{CompiledBinding Config.FrozenHighlight.Highlight}"
Color="{CompiledBinding Config.FrozenHighlight.Color}"
IsVisible="{CompiledBinding ShowFrozenAddressesOption}"
Checked="{Binding Config.FrozenHighlight.Highlight}"
Color="{Binding Config.FrozenHighlight.Color}"
IsVisible="{Binding ShowFrozenAddressesOption}"
/>
<dc:ColorCheckbox
Text="{l:Translate chkHighlightNesPcmData}"
Checked="{CompiledBinding Config.NesPcmDataHighlight.Highlight}"
Color="{CompiledBinding Config.NesPcmDataHighlight.Color}"
IsVisible="{CompiledBinding ShowNesPcmDataOption}"
Checked="{Binding Config.NesPcmDataHighlight.Highlight}"
Color="{Binding Config.NesPcmDataHighlight.Color}"
IsVisible="{Binding ShowNesPcmDataOption}"
/>
<dc:ColorCheckbox
Text="{l:Translate chkHighlightNesDrawnChrRom}"
Checked="{CompiledBinding Config.NesDrawnChrRomHighlight.Highlight}"
Color="{CompiledBinding Config.NesDrawnChrRomHighlight.Color}"
IsVisible="{CompiledBinding ShowNesDrawnChrRomOption}"
Checked="{Binding Config.NesDrawnChrRomHighlight.Highlight}"
Color="{Binding Config.NesDrawnChrRomHighlight.Color}"
IsVisible="{Binding ShowNesDrawnChrRomOption}"
/>
<CheckBox
Margin="16 0"
IsChecked="{CompiledBinding Config.HighlightBreakpoints}"
IsChecked="{Binding Config.HighlightBreakpoints}"
Content="{l:Translate chkHighlightBreakpoints}"
/>
</c:OptionSection>
@ -125,20 +125,20 @@
<StackPanel Orientation="Horizontal">
<TextBlock DockPanel.Dock="Right" HorizontalAlignment="Right" VerticalAlignment="Center">Columns: </TextBlock>
<ComboBox
SelectedItem="{CompiledBinding Config.BytesPerRow}"
ItemsSource="{CompiledBinding AvailableWidths}"
SelectedItem="{Binding Config.BytesPerRow}"
ItemsSource="{Binding AvailableWidths}"
/>
</StackPanel>
<CheckBox
IsChecked="{CompiledBinding Config.HighDensityTextMode}"
IsChecked="{Binding Config.HighDensityTextMode}"
Content="{l:Translate chkHighDensityTextMode}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.ShowCharacters}"
IsChecked="{Binding Config.ShowCharacters}"
Content="{l:Translate chkShowCharacters}"
/>
<CheckBox
IsChecked="{CompiledBinding Config.ShowTooltips}"
IsChecked="{Binding Config.ShowTooltips}"
Content="{l:Translate chkShowTooltips}"
/>
</c:OptionSection>

View file

@ -20,43 +20,43 @@
<StackPanel>
<Grid ColumnDefinitions="1*, 1*" RowDefinitions="*,*">
<c:OptionSection Header="PPU Writes" Margin="0 0 20 0">
<dc:EventViewerCategoryControl Text="$2000" Config="{CompiledBinding Ppu2000Write}" />
<dc:EventViewerCategoryControl Text="$2001" Config="{CompiledBinding Ppu2001Write}" />
<dc:EventViewerCategoryControl Text="$2003" Config="{CompiledBinding Ppu2003Write}" />
<dc:EventViewerCategoryControl Text="$2004" Config="{CompiledBinding Ppu2004Write}" />
<dc:EventViewerCategoryControl Text="$2005" Config="{CompiledBinding Ppu2005Write}" />
<dc:EventViewerCategoryControl Text="$2006" Config="{CompiledBinding Ppu2006Write}" />
<dc:EventViewerCategoryControl Text="$2007" Config="{CompiledBinding Ppu2007Write}" />
<dc:EventViewerCategoryControl Text="$2000" Config="{Binding Ppu2000Write}" />
<dc:EventViewerCategoryControl Text="$2001" Config="{Binding Ppu2001Write}" />
<dc:EventViewerCategoryControl Text="$2003" Config="{Binding Ppu2003Write}" />
<dc:EventViewerCategoryControl Text="$2004" Config="{Binding Ppu2004Write}" />
<dc:EventViewerCategoryControl Text="$2005" Config="{Binding Ppu2005Write}" />
<dc:EventViewerCategoryControl Text="$2006" Config="{Binding Ppu2006Write}" />
<dc:EventViewerCategoryControl Text="$2007" Config="{Binding Ppu2007Write}" />
</c:OptionSection>
<c:OptionSection Header="PPU Reads" Margin="0" Grid.Column="1">
<dc:EventViewerCategoryControl Text="$2002" Config="{CompiledBinding Ppu2002Read}" />
<dc:EventViewerCategoryControl Text="$2004" Config="{CompiledBinding Ppu2004Read}" />
<dc:EventViewerCategoryControl Text="$2007" Config="{CompiledBinding Ppu2007Read}" />
<dc:EventViewerCategoryControl Text="$2002" Config="{Binding Ppu2002Read}" />
<dc:EventViewerCategoryControl Text="$2004" Config="{Binding Ppu2004Read}" />
<dc:EventViewerCategoryControl Text="$2007" Config="{Binding Ppu2007Read}" />
</c:OptionSection>
<c:OptionSection Header="Other Writes" Grid.Row="1">
<dc:EventViewerCategoryControl Text="APU" Config="{CompiledBinding ApuRegisterWrites}" />
<dc:EventViewerCategoryControl Text="Mapper" Config="{CompiledBinding MapperRegisterWrites}" />
<dc:EventViewerCategoryControl Text="Controller" Config="{CompiledBinding ControlRegisterWrites}" />
<dc:EventViewerCategoryControl Text="APU" Config="{Binding ApuRegisterWrites}" />
<dc:EventViewerCategoryControl Text="Mapper" Config="{Binding MapperRegisterWrites}" />
<dc:EventViewerCategoryControl Text="Controller" Config="{Binding ControlRegisterWrites}" />
</c:OptionSection>
<c:OptionSection Header="Other Reads" Grid.Column="1" Grid.Row="1">
<dc:EventViewerCategoryControl Text="APU" Config="{CompiledBinding ApuRegisterReads}" />
<dc:EventViewerCategoryControl Text="Mapper" Config="{CompiledBinding MapperRegisterReads}" />
<dc:EventViewerCategoryControl Text="Controller" Config="{CompiledBinding ControlRegisterReads}" />
<dc:EventViewerCategoryControl Text="APU" Config="{Binding ApuRegisterReads}" />
<dc:EventViewerCategoryControl Text="Mapper" Config="{Binding MapperRegisterReads}" />
<dc:EventViewerCategoryControl Text="Controller" Config="{Binding ControlRegisterReads}" />
</c:OptionSection>
</Grid>
<c:OptionSection Header="Other events">
<dc:EventViewerCategoryControl Text="DMC DMA Read" Config="{CompiledBinding DmcDmaReads}" />
<dc:EventViewerCategoryControl Text="OAM/Other DMA Reads" Config="{CompiledBinding OtherDmaReads}" />
<dc:EventViewerCategoryControl Text="Sprite Zero Hit" Config="{CompiledBinding SpriteZeroHit}" />
<dc:EventViewerCategoryControl Text="DMC DMA Read" Config="{Binding DmcDmaReads}" />
<dc:EventViewerCategoryControl Text="OAM/Other DMA Reads" Config="{Binding OtherDmaReads}" />
<dc:EventViewerCategoryControl Text="Sprite Zero Hit" Config="{Binding SpriteZeroHit}" />
<dc:EventViewerCategoryControl Text="IRQ" Config="{CompiledBinding Irq}" />
<dc:EventViewerCategoryControl Text="NMI" Config="{CompiledBinding Nmi}" />
<dc:EventViewerCategoryControl Text="IRQ" Config="{Binding Irq}" />
<dc:EventViewerCategoryControl Text="NMI" Config="{Binding Nmi}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{CompiledBinding MarkedBreakpoints}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{Binding MarkedBreakpoints}" />
</c:OptionSection>
<CheckBox Margin="0 10 0 0" IsChecked="{CompiledBinding ShowPreviousFrameEvents}" Content="Show previous frame events" />
<CheckBox IsChecked="{CompiledBinding ShowNtscBorders}" Content="Show NTSC borders" />
<CheckBox Margin="0 10 0 0" IsChecked="{Binding ShowPreviousFrameEvents}" Content="Show previous frame events" />
<CheckBox IsChecked="{Binding ShowNtscBorders}" Content="Show NTSC borders" />
</StackPanel>
</UserControl>

View file

@ -23,18 +23,18 @@
<c:OptionSection Header="VDC writes" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="0" />
<c:OptionSection Header="VDC reads" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="10 0 0 0" />
<StackPanel Grid.Column="1" Grid.Row="1">
<dc:EventViewerCategoryControl Text="Reg. Select" Config="{CompiledBinding VdcRegSelectWrites}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{CompiledBinding VdcVramWrites}" />
<dc:EventViewerCategoryControl Text="Control" Config="{CompiledBinding VdcControlWrites}" />
<dc:EventViewerCategoryControl Text="RCR" Config="{CompiledBinding VdcRcrWrites}" />
<dc:EventViewerCategoryControl Text="X/Y Scroll" Config="{CompiledBinding VdcScrollWrites}" />
<dc:EventViewerCategoryControl Text="Memory Width" Config="{CompiledBinding VdcMemoryWidthWrites}" />
<dc:EventViewerCategoryControl Text="H/V Display" Config="{CompiledBinding VdcHvConfigWrites}" />
<dc:EventViewerCategoryControl Text="DMA Control" Config="{CompiledBinding VdcDmaWrites}" />
<dc:EventViewerCategoryControl Text="Reg. Select" Config="{Binding VdcRegSelectWrites}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{Binding VdcVramWrites}" />
<dc:EventViewerCategoryControl Text="Control" Config="{Binding VdcControlWrites}" />
<dc:EventViewerCategoryControl Text="RCR" Config="{Binding VdcRcrWrites}" />
<dc:EventViewerCategoryControl Text="X/Y Scroll" Config="{Binding VdcScrollWrites}" />
<dc:EventViewerCategoryControl Text="Memory Width" Config="{Binding VdcMemoryWidthWrites}" />
<dc:EventViewerCategoryControl Text="H/V Display" Config="{Binding VdcHvConfigWrites}" />
<dc:EventViewerCategoryControl Text="DMA Control" Config="{Binding VdcDmaWrites}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="1">
<dc:EventViewerCategoryControl Text="Status" Config="{CompiledBinding VdcStatusReads}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{CompiledBinding VdcVramReads}" />
<dc:EventViewerCategoryControl Text="Status" Config="{Binding VdcStatusReads}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{Binding VdcVramReads}" />
</StackPanel>
</Grid>
@ -42,33 +42,33 @@
<c:OptionSection Header="Register writes" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="0" />
<c:OptionSection Header="Register reads" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="10 0 0 0" />
<StackPanel Grid.Column="1" Grid.Row="1">
<dc:EventViewerCategoryControl Text="VCE" Config="{CompiledBinding VceWrites}" />
<dc:EventViewerCategoryControl Text="PSG" Config="{CompiledBinding PsgWrites}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{CompiledBinding TimerWrites}" />
<dc:EventViewerCategoryControl Text="I/O" Config="{CompiledBinding IoWrites}" />
<dc:EventViewerCategoryControl Text="IRQ" Config="{CompiledBinding IrqControlWrites}" />
<dc:EventViewerCategoryControl Text="CD-ROM" Config="{CompiledBinding CdRomWrites}" />
<dc:EventViewerCategoryControl Text="ADPCM" Config="{CompiledBinding AdpcmWrites}" />
<dc:EventViewerCategoryControl Text="Arcade" Config="{CompiledBinding ArcadeCardWrites}" />
<dc:EventViewerCategoryControl Text="VCE" Config="{Binding VceWrites}" />
<dc:EventViewerCategoryControl Text="PSG" Config="{Binding PsgWrites}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{Binding TimerWrites}" />
<dc:EventViewerCategoryControl Text="I/O" Config="{Binding IoWrites}" />
<dc:EventViewerCategoryControl Text="IRQ" Config="{Binding IrqControlWrites}" />
<dc:EventViewerCategoryControl Text="CD-ROM" Config="{Binding CdRomWrites}" />
<dc:EventViewerCategoryControl Text="ADPCM" Config="{Binding AdpcmWrites}" />
<dc:EventViewerCategoryControl Text="Arcade" Config="{Binding ArcadeCardWrites}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="1">
<dc:EventViewerCategoryControl Text="VCE" Config="{CompiledBinding VceReads}" />
<dc:EventViewerCategoryControl Text="PSG" Config="{CompiledBinding PsgReads}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{CompiledBinding TimerReads}" />
<dc:EventViewerCategoryControl Text="I/O" Config="{CompiledBinding IoReads}" />
<dc:EventViewerCategoryControl Text="IRQ" Config="{CompiledBinding IrqControlReads}" />
<dc:EventViewerCategoryControl Text="CD-ROM" Config="{CompiledBinding CdRomReads}" />
<dc:EventViewerCategoryControl Text="ADPCM" Config="{CompiledBinding AdpcmReads}" />
<dc:EventViewerCategoryControl Text="Arcade" Config="{CompiledBinding ArcadeCardReads}" />
<dc:EventViewerCategoryControl Text="VCE" Config="{Binding VceReads}" />
<dc:EventViewerCategoryControl Text="PSG" Config="{Binding PsgReads}" />
<dc:EventViewerCategoryControl Text="Timer" Config="{Binding TimerReads}" />
<dc:EventViewerCategoryControl Text="I/O" Config="{Binding IoReads}" />
<dc:EventViewerCategoryControl Text="IRQ" Config="{Binding IrqControlReads}" />
<dc:EventViewerCategoryControl Text="CD-ROM" Config="{Binding CdRomReads}" />
<dc:EventViewerCategoryControl Text="ADPCM" Config="{Binding AdpcmReads}" />
<dc:EventViewerCategoryControl Text="Arcade" Config="{Binding ArcadeCardReads}" />
</StackPanel>
</Grid>
<c:OptionSection Header="Other events" />
<StackPanel>
<dc:EventViewerCategoryControl Text="IRQ" Config="{CompiledBinding Irq}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{CompiledBinding MarkedBreakpoints}" />
<dc:EventViewerCategoryControl Text="IRQ" Config="{Binding Irq}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{Binding MarkedBreakpoints}" />
</StackPanel>
<CheckBox Margin="0 10 0 0" IsChecked="{CompiledBinding ShowPreviousFrameEvents}" Content="Show previous frame events" />
<CheckBox Margin="0 10 0 0" IsChecked="{Binding ShowPreviousFrameEvents}" Content="Show previous frame events" />
</StackPanel>
</UserControl>

View file

@ -25,7 +25,7 @@
</UserControl.Styles>
<Border
IsVisible="{CompiledBinding IsSearchBoxVisible}"
IsVisible="{Binding IsSearchBoxVisible}"
BorderBrush="{DynamicResource MesenGrayBorderColor}"
BorderThickness="1"
Background="{DynamicResource ThemeBackgroundBrush}"
@ -36,8 +36,8 @@
<TextBox
Name="txtSearch"
Width="120"
Text="{CompiledBinding SearchString}"
Classes.highlight="{CompiledBinding IsErrorVisible}"
Text="{Binding SearchString}"
Classes.highlight="{Binding IsErrorVisible}"
/>
<c:IconButton Icon="Assets/PreviousArrow.png" Command="{Binding FindPrev}" />
<c:IconButton Icon="Assets/NextArrow.png" Command="{Binding FindNext}" />

View file

@ -19,24 +19,24 @@
</Design.DataContext>
<StackPanel Orientation="Horizontal" Background="#15808080">
<CheckBox IsChecked="{CompiledBinding Config.AutoRefresh}" Content="{l:Translate lblScanline}" />
<CheckBox IsChecked="{Binding Config.AutoRefresh}" Content="{l:Translate lblScanline}" />
<NumericUpDown
Value="{CompiledBinding Config.RefreshScanline}"
Minimum="{CompiledBinding MinScanline}"
Maximum="{CompiledBinding MaxScanline}"
Value="{Binding Config.RefreshScanline}"
Minimum="{Binding MinScanline}"
Maximum="{Binding MaxScanline}"
Margin="3 0"
/>
<TextBlock VerticalAlignment="Center" Text="{l:Translate lblCycle}" />
<NumericUpDown
Value="{CompiledBinding Config.RefreshCycle}"
Value="{Binding Config.RefreshCycle}"
Minimum="0"
Maximum="{CompiledBinding MaxCycle}"
Maximum="{Binding MaxCycle}"
Margin="3 0"
/>
<c:IconButton
ToolTip.Tip="{l:Translate lblResetToDefault}"
Icon="Assets/ResetSettings.png"
Command="{CompiledBinding ResetCommand}"
Command="{Binding ResetCommand}"
/>
<Line
@ -49,7 +49,7 @@
/>
<CheckBox
IsChecked="{CompiledBinding Config.RefreshOnBreakPause}"
IsChecked="{Binding Config.RefreshOnBreakPause}"
Content="{l:Translate chkRefreshOnBreakPause}"
/>
</StackPanel>

View file

@ -21,16 +21,16 @@
<Border BorderBrush="{StaticResource MesenGrayBorderColor}" BorderThickness="1">
<DataBox
Name="lstRegisterTab"
Items="{CompiledBinding Data}"
Selection="{CompiledBinding Selection}"
Items="{Binding Data}"
Selection="{Binding Selection}"
GridLinesVisibility="All"
ColumnWidths="{CompiledBinding ColumnWidths}"
ColumnWidths="{Binding ColumnWidths}"
>
<DataBox.Columns>
<DataBoxTextColumn Header="{l:Translate colAddress}" Binding="{Binding Address}" CanUserResize="True" InitialWidth="92" />
<DataBoxTextColumn Header="{l:Translate colName}" Binding="{Binding Name}" CanUserResize="True" InitialWidth="173" />
<DataBoxTextColumn Header="{l:Translate colValue}" Binding="{Binding Value}" CanUserResize="True" InitialWidth="63" />
<DataBoxTextColumn Header="{l:Translate colValueHex}" Binding="{Binding ValueHex}" CanUserResize="True" InitialWidth="67" />
<DataBoxTextColumn Header="{l:Translate colAddress}" Binding="{Binding Address, DataType={x:Type vm:RegEntry}}" CanUserResize="True" InitialWidth="92" />
<DataBoxTextColumn Header="{l:Translate colName}" Binding="{Binding Name, DataType={x:Type vm:RegEntry}}" CanUserResize="True" InitialWidth="173" />
<DataBoxTextColumn Header="{l:Translate colValue}" Binding="{Binding Value, DataType={x:Type vm:RegEntry}}" CanUserResize="True" InitialWidth="63" />
<DataBoxTextColumn Header="{l:Translate colValueHex}" Binding="{Binding ValueHex, DataType={x:Type vm:RegEntry}}" CanUserResize="True" InitialWidth="67" />
</DataBox.Columns>
</DataBox>
</Border>

View file

@ -27,37 +27,37 @@
</UserControl.Styles>
<StackPanel Margin="2">
<TextBlock FontSize="16" Text="{CompiledBinding Name}" Padding="0 3" />
<TextBlock Text="{CompiledBinding Description}" Margin="0 10 0 0" />
<TextBlock FontSize="16" Text="{Binding Name}" Padding="0 3" />
<TextBlock Text="{Binding Description}" Margin="0 10 0 0" />
<StackPanel IsVisible="{CompiledBinding !EnumValues.Count}">
<StackPanel IsVisible="{Binding !EnumValues.Count}">
<TextBlock Text="Syntax" TextDecorations="Underline" Margin="0 10 0 0" />
<TextBlock Text="{CompiledBinding Syntax}" FontFamily="{DynamicResource MesenMonospaceFont}" Margin="5 3 0 0" />
<TextBlock Text="{Binding Syntax}" FontFamily="{DynamicResource MesenMonospaceFont}" Margin="5 3 0 0" />
<TextBlock Text="Parameters" TextDecorations="Underline" Margin="0 10 0 0" />
<Grid IsVisible="{CompiledBinding Parameters.Count}" ColumnDefinitions="Auto,Auto,Auto" RowDefinitions="Auto" Margin="5 3 0 0" >
<ItemsControl ItemsSource="{CompiledBinding Parameters}" Grid.Column="0">
<Grid IsVisible="{Binding Parameters.Count}" ColumnDefinitions="Auto,Auto,Auto" RowDefinitions="Auto" Margin="5 3 0 0" >
<ItemsControl ItemsSource="{Binding Parameters}" Grid.Column="0">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{CompiledBinding Name}" FontWeight="Bold" Padding="2 0" />
<TextBlock Text="{Binding Name}" FontWeight="Bold" Padding="2 0" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl ItemsSource="{CompiledBinding Parameters}" Grid.Column="1">
<ItemsControl ItemsSource="{Binding Parameters}" Grid.Column="1">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{CompiledBinding CalculatedType}" FontStyle="Italic" Margin="5 0" Padding="5 0" />
<TextBlock Text="{Binding CalculatedType}" FontStyle="Italic" Margin="5 0" Padding="5 0" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl ItemsSource="{CompiledBinding Parameters}" Grid.Column="2">
<ItemsControl ItemsSource="{Binding Parameters}" Grid.Column="2">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{CompiledBinding Description}" />
<StackPanel Orientation="Horizontal" IsVisible="{CompiledBinding DefaultValue.Length}">
<TextBlock Text="{Binding Description}" />
<StackPanel Orientation="Horizontal" IsVisible="{Binding DefaultValue.Length}">
<TextBlock Text=" [default: " />
<TextBlock Text="{CompiledBinding DefaultValue}" />
<TextBlock Text="{Binding DefaultValue}" />
<TextBlock Text="]" />
</StackPanel>
</StackPanel>
@ -65,28 +65,28 @@
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
<TextBlock IsVisible="{CompiledBinding !Parameters.Count}" FontStyle="Italic" Text="None" Margin="5 3 0 0" />
<TextBlock IsVisible="{Binding !Parameters.Count}" FontStyle="Italic" Text="None" Margin="5 3 0 0" />
<TextBlock Text="Return Value" TextDecorations="Underline" Margin="0 10 0 0" />
<TextBlock IsVisible="{CompiledBinding ReturnValue.Type.Length}" Text="{CompiledBinding ReturnValue.Type}" FontStyle="Italic" Margin="5 3 0 0" />
<TextBlock IsVisible="{CompiledBinding ReturnValue.Type.Length}" Text="{CompiledBinding ReturnValue.Description}" Margin="5 3 0 0" />
<TextBlock IsVisible="{CompiledBinding !ReturnValue.Type.Length}" FontStyle="Italic" Text="None" Margin="5 3 0 0" />
<TextBlock IsVisible="{Binding ReturnValue.Type.Length}" Text="{Binding ReturnValue.Type}" FontStyle="Italic" Margin="5 3 0 0" />
<TextBlock IsVisible="{Binding ReturnValue.Type.Length}" Text="{Binding ReturnValue.Description}" Margin="5 3 0 0" />
<TextBlock IsVisible="{Binding !ReturnValue.Type.Length}" FontStyle="Italic" Text="None" Margin="5 3 0 0" />
</StackPanel>
<StackPanel IsVisible="{CompiledBinding EnumValues.Count}">
<StackPanel IsVisible="{Binding EnumValues.Count}">
<TextBlock Text="Values" TextDecorations="Underline" Margin="0 10 0 0" />
<Grid IsVisible="{CompiledBinding EnumValues.Count}" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto" Margin="5 3 0 0" >
<ItemsControl ItemsSource="{CompiledBinding EnumValues}" Grid.Column="0">
<Grid IsVisible="{Binding EnumValues.Count}" ColumnDefinitions="Auto,Auto" RowDefinitions="Auto" Margin="5 3 0 0" >
<ItemsControl ItemsSource="{Binding EnumValues}" Grid.Column="0">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{CompiledBinding Name}" FontWeight="Bold" Padding="2 0" />
<TextBlock Text="{Binding Name}" FontWeight="Bold" Padding="2 0" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<ItemsControl ItemsSource="{CompiledBinding EnumValues}" Grid.Column="1">
<ItemsControl ItemsSource="{Binding EnumValues}" Grid.Column="1">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{CompiledBinding Description}" Padding="5 0" />
<TextBlock Text="{Binding Description}" Padding="5 0" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

View file

@ -23,15 +23,15 @@
<c:OptionSection Header="VDP writes" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="0" />
<c:OptionSection Header="VDP reads" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="10 0 0 0" />
<StackPanel Grid.Column="1" Grid.Row="1">
<dc:EventViewerCategoryControl Text="Control" Config="{CompiledBinding VdpControlPortWrite}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{CompiledBinding VdpVramWrite}" />
<dc:EventViewerCategoryControl Text="Palette" Config="{CompiledBinding VdpPaletteWrite}" />
<dc:EventViewerCategoryControl Text="Control" Config="{Binding VdpControlPortWrite}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{Binding VdpVramWrite}" />
<dc:EventViewerCategoryControl Text="Palette" Config="{Binding VdpPaletteWrite}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="1">
<dc:EventViewerCategoryControl Text="Control" Config="{CompiledBinding VdpControlPortRead}" />
<dc:EventViewerCategoryControl Text="H Counter" Config="{CompiledBinding VdpHCounterRead}" />
<dc:EventViewerCategoryControl Text="V Counter" Config="{CompiledBinding VdpVCounterRead}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{CompiledBinding VdpVramRead}" />
<dc:EventViewerCategoryControl Text="Control" Config="{Binding VdpControlPortRead}" />
<dc:EventViewerCategoryControl Text="H Counter" Config="{Binding VdpHCounterRead}" />
<dc:EventViewerCategoryControl Text="V Counter" Config="{Binding VdpVCounterRead}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{Binding VdpVramRead}" />
</StackPanel>
</Grid>
@ -39,23 +39,23 @@
<c:OptionSection Header="Register writes" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="0" />
<c:OptionSection Header="Register reads" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" Margin="10 0 0 0" />
<StackPanel Grid.Column="1" Grid.Row="1">
<dc:EventViewerCategoryControl Text="I/O" Config="{CompiledBinding IoWrite}" />
<dc:EventViewerCategoryControl Text="Game Gear" Config="{CompiledBinding GameGearPortWrite}" />
<dc:EventViewerCategoryControl Text="PSG" Config="{CompiledBinding PsgWrite}" />
<dc:EventViewerCategoryControl Text="I/O" Config="{Binding IoWrite}" />
<dc:EventViewerCategoryControl Text="Game Gear" Config="{Binding GameGearPortWrite}" />
<dc:EventViewerCategoryControl Text="PSG" Config="{Binding PsgWrite}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="1">
<dc:EventViewerCategoryControl Text="I/O" Config="{CompiledBinding IoRead}" />
<dc:EventViewerCategoryControl Text="Game Gear" Config="{CompiledBinding GameGearPortRead}" />
<dc:EventViewerCategoryControl Text="I/O" Config="{Binding IoRead}" />
<dc:EventViewerCategoryControl Text="Game Gear" Config="{Binding GameGearPortRead}" />
</StackPanel>
</Grid>
<c:OptionSection Header="Other events" />
<StackPanel>
<dc:EventViewerCategoryControl Text="IRQ" Config="{CompiledBinding Irq}" />
<dc:EventViewerCategoryControl Text="NMI" Config="{CompiledBinding Nmi}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{CompiledBinding MarkedBreakpoints}" />
<dc:EventViewerCategoryControl Text="IRQ" Config="{Binding Irq}" />
<dc:EventViewerCategoryControl Text="NMI" Config="{Binding Nmi}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{Binding MarkedBreakpoints}" />
</StackPanel>
<CheckBox Margin="0 10 0 0" IsChecked="{CompiledBinding ShowPreviousFrameEvents}" Content="Show previous frame events" />
<CheckBox Margin="0 10 0 0" IsChecked="{Binding ShowPreviousFrameEvents}" Content="Show previous frame events" />
</StackPanel>
</UserControl>

View file

@ -20,16 +20,16 @@
<Grid ColumnDefinitions="10, 1*, 10, 1*" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto">
<c:OptionSection Header="PPU Register Writes" Margin="0" Grid.Column="0" Grid.ColumnSpan="2" />
<StackPanel Grid.Column="1" Grid.Row="1">
<dc:EventViewerCategoryControl Text="VRAM" Config="{CompiledBinding PpuRegisterVramWrites}" />
<dc:EventViewerCategoryControl Text="CGRAM" Config="{CompiledBinding PpuRegisterCgramWrites}" />
<dc:EventViewerCategoryControl Text="OAM" Config="{CompiledBinding PpuRegisterOamWrites}" />
<dc:EventViewerCategoryControl Text="Mode 7" Config="{CompiledBinding PpuRegisterMode7Writes}" />
<dc:EventViewerCategoryControl Text="VRAM" Config="{Binding PpuRegisterVramWrites}" />
<dc:EventViewerCategoryControl Text="CGRAM" Config="{Binding PpuRegisterCgramWrites}" />
<dc:EventViewerCategoryControl Text="OAM" Config="{Binding PpuRegisterOamWrites}" />
<dc:EventViewerCategoryControl Text="Mode 7" Config="{Binding PpuRegisterMode7Writes}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="1">
<dc:EventViewerCategoryControl Text="BG Options" Config="{CompiledBinding PpuRegisterBgOptionWrites}" />
<dc:EventViewerCategoryControl Text="BG Scroll" Config="{CompiledBinding PpuRegisterBgScrollWrites}" />
<dc:EventViewerCategoryControl Text="Window" Config="{CompiledBinding PpuRegisterWindowWrites}" />
<dc:EventViewerCategoryControl Text="Others" Config="{CompiledBinding PpuRegisterOtherWrites}" />
<dc:EventViewerCategoryControl Text="BG Options" Config="{Binding PpuRegisterBgOptionWrites}" />
<dc:EventViewerCategoryControl Text="BG Scroll" Config="{Binding PpuRegisterBgScrollWrites}" />
<dc:EventViewerCategoryControl Text="Window" Config="{Binding PpuRegisterWindowWrites}" />
<dc:EventViewerCategoryControl Text="Others" Config="{Binding PpuRegisterOtherWrites}" />
</StackPanel>
<c:OptionSection Header="Other events" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" />
<dc:EventViewerCategoryControl
@ -37,43 +37,43 @@
Grid.Column="1"
Grid.ColumnSpan="2"
Text="PPU Reg. Read"
Config="{CompiledBinding PpuRegisterReads}"
Config="{Binding PpuRegisterReads}"
/>
<StackPanel Grid.Column="1" Grid.Row="4">
<dc:EventViewerCategoryControl Text="SPC Reg. Read" Config="{CompiledBinding ApuRegisterReads}" />
<dc:EventViewerCategoryControl Text="CPU Reg. Read" Config="{CompiledBinding CpuRegisterReads}" />
<dc:EventViewerCategoryControl Text="WRAM Reg. Read" Config="{CompiledBinding WorkRamRegisterReads}" />
<dc:EventViewerCategoryControl Text="SPC Reg. Read" Config="{Binding ApuRegisterReads}" />
<dc:EventViewerCategoryControl Text="CPU Reg. Read" Config="{Binding CpuRegisterReads}" />
<dc:EventViewerCategoryControl Text="WRAM Reg. Read" Config="{Binding WorkRamRegisterReads}" />
</StackPanel>
<StackPanel Grid.Column="3" Grid.Row="4">
<dc:EventViewerCategoryControl Text="SPC Reg. Write" Config="{CompiledBinding ApuRegisterWrites}" />
<dc:EventViewerCategoryControl Text="CPU Reg. Write" Config="{CompiledBinding CpuRegisterWrites}" />
<dc:EventViewerCategoryControl Text="WRAM Reg. Write" Config="{CompiledBinding WorkRamRegisterWrites}" />
<dc:EventViewerCategoryControl Text="SPC Reg. Write" Config="{Binding ApuRegisterWrites}" />
<dc:EventViewerCategoryControl Text="CPU Reg. Write" Config="{Binding CpuRegisterWrites}" />
<dc:EventViewerCategoryControl Text="WRAM Reg. Write" Config="{Binding WorkRamRegisterWrites}" />
</StackPanel>
<StackPanel Grid.Column="1" Grid.Row="5" Grid.ColumnSpan="2">
<dc:EventViewerCategoryControl Text="IRQ" Config="{CompiledBinding Irq}" />
<dc:EventViewerCategoryControl Text="NMI" Config="{CompiledBinding Nmi}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{CompiledBinding MarkedBreakpoints}" />
<dc:EventViewerCategoryControl Text="IRQ" Config="{Binding Irq}" />
<dc:EventViewerCategoryControl Text="NMI" Config="{Binding Nmi}" />
<dc:EventViewerCategoryControl Text="Marked Breakpoints" Config="{Binding MarkedBreakpoints}" />
</StackPanel>
</Grid>
<c:OptionSection Header="DMA Filters">
<Grid ColumnDefinitions="1*, 10, 1*" RowDefinitions="Auto">
<StackPanel Grid.Column="0">
<CheckBox IsChecked="{CompiledBinding ShowDmaChannel0}" Content="Channel 0" />
<CheckBox IsChecked="{CompiledBinding ShowDmaChannel1}" Content="Channel 1" />
<CheckBox IsChecked="{CompiledBinding ShowDmaChannel2}" Content="Channel 2" />
<CheckBox IsChecked="{CompiledBinding ShowDmaChannel3}" Content="Channel 3" />
<CheckBox IsChecked="{Binding ShowDmaChannel0}" Content="Channel 0" />
<CheckBox IsChecked="{Binding ShowDmaChannel1}" Content="Channel 1" />
<CheckBox IsChecked="{Binding ShowDmaChannel2}" Content="Channel 2" />
<CheckBox IsChecked="{Binding ShowDmaChannel3}" Content="Channel 3" />
</StackPanel>
<StackPanel Grid.Column="2">
<CheckBox IsChecked="{CompiledBinding ShowDmaChannel4}" Content="Channel 4" />
<CheckBox IsChecked="{CompiledBinding ShowDmaChannel5}" Content="Channel 5" />
<CheckBox IsChecked="{CompiledBinding ShowDmaChannel6}" Content="Channel 6" />
<CheckBox IsChecked="{CompiledBinding ShowDmaChannel7}" Content="Channel 7" />
<CheckBox IsChecked="{Binding ShowDmaChannel4}" Content="Channel 4" />
<CheckBox IsChecked="{Binding ShowDmaChannel5}" Content="Channel 5" />
<CheckBox IsChecked="{Binding ShowDmaChannel6}" Content="Channel 6" />
<CheckBox IsChecked="{Binding ShowDmaChannel7}" Content="Channel 7" />
</StackPanel>
</Grid>
</c:OptionSection>
<CheckBox Margin="0 10 0 0" IsChecked="{CompiledBinding ShowPreviousFrameEvents}" Content="Show previous frame events" />
<CheckBox Margin="0 10 0 0" IsChecked="{Binding ShowPreviousFrameEvents}" Content="Show previous frame events" />
</StackPanel>
</UserControl>

View file

@ -21,7 +21,7 @@
<DockPanel>
<DockPanel DockPanel.Dock="Top" Margin="2">
<TextBlock Text="{l:Translate lblFile}" VerticalAlignment="Center" DockPanel.Dock="Left" Margin="3 0" />
<ComboBox ItemsSource="{CompiledBinding SourceFiles}" SelectedItem="{CompiledBinding SelectedFile}" HorizontalAlignment="Stretch" />
<ComboBox ItemsSource="{Binding SourceFiles}" SelectedItem="{Binding SelectedFile}" HorizontalAlignment="Stretch" />
</DockPanel>
<Border BorderBrush="{StaticResource MesenGrayBorderColor}" BorderThickness="0 1 0 0">
@ -29,8 +29,8 @@
<dc:CodeScrollBar
Grid.Column="1"
VerticalAlignment="Stretch"
Maximum="{CompiledBinding MaxScrollPosition}"
Value="{CompiledBinding ScrollPosition}"
Maximum="{Binding MaxScrollPosition}"
Value="{Binding ScrollPosition}"
ShowMarkers="False"
>
<dc:CodeScrollBar.BreakpointBar>
@ -41,8 +41,8 @@
<ScrollBar
Orientation="Horizontal"
Grid.Row="1"
Maximum="{CompiledBinding #disViewer.HorizontalScrollMaxPosition}"
Value="{CompiledBinding #disViewer.HorizontalScrollPosition}"
Maximum="{Binding #disViewer.HorizontalScrollMaxPosition}"
Value="{Binding #disViewer.HorizontalScrollPosition}"
/>
<Panel Grid.Row="1" Grid.Column="1" Background="{DynamicResource ButtonBackground}" />
@ -50,17 +50,17 @@
<Panel>
<dc:DisassemblyViewer
Name="disViewer"
Lines="{CompiledBinding Lines}"
SearchString="{CompiledBinding QuickSearch.SearchString}"
StyleProvider="{CompiledBinding StyleProvider}"
Lines="{Binding Lines}"
SearchString="{Binding QuickSearch.SearchString}"
StyleProvider="{Binding StyleProvider}"
FontFamily="{DynamicResource MesenDisassemblyFont}"
FontSize="{DynamicResource MesenDisassemblyFontSize}"
ShowByteCode="{CompiledBinding Config.Debugger.ShowByteCode}"
AddressDisplayType="{CompiledBinding Config.Debugger.AddressDisplayType}"
ShowByteCode="{Binding Config.Debugger.ShowByteCode}"
AddressDisplayType="{Binding Config.Debugger.AddressDisplayType}"
/>
<dv:QuickSearchView
DataContext="{CompiledBinding QuickSearch}"
DataContext="{Binding QuickSearch}"
VerticalAlignment="Top"
HorizontalAlignment="Right"
/>

View file

@ -6,6 +6,7 @@
xmlns:c="using:Mesen.Debugger.Controls"
xmlns:v="using:Mesen.Debugger.Views"
xmlns:vm="using:Mesen.Debugger.ViewModels"
xmlns:md="using:Mesen.Debugger"
xmlns:l="using:Mesen.Localization"
mc:Ignorable="d" d:DesignWidth="300" d:DesignHeight="110"
VerticalAlignment="Stretch"
@ -52,11 +53,11 @@
<Border BorderThickness="0 1 0 0" BorderBrush="{StaticResource MesenGrayBorderColor}">
<DataBox
Name="WatchList"
Items="{CompiledBinding WatchEntries}"
Selection="{CompiledBinding Selection}"
Items="{Binding WatchEntries}"
Selection="{Binding Selection}"
SelectionMode="Multiple"
GridLinesVisibility="All"
ColumnWidths="{CompiledBinding ColumnWidths}"
ColumnWidths="{Binding ColumnWidths}"
>
<DataBox.Columns>
<DataBoxTemplateColumn Header="{l:Translate colName}" CanUserResize="True" InitialWidth="200">
@ -66,7 +67,7 @@
Name="WatchTextBox"
ContextFlyout="{x:Null}"
ContextRequested="OnEntryContextRequested"
Text="{Binding Expression}"
Text="{Binding Expression, DataType={x:Type md:WatchValueInfo}}"
LostFocus="OnEntryLostFocus"
KeyDown="OnEntryKeyDown"
Watermark="Click to add..."
@ -78,6 +79,7 @@
<TextBlock
Padding="3 0 0 0"
VerticalAlignment="Center"
x:DataType="md:WatchValueInfo"
Text="{Binding Value}"
Classes.changed="{Binding IsChanged}"
/>

View file

@ -34,8 +34,8 @@
<DockPanel>
<c:MesenMenu DockPanel.Dock="Top" Name="ActionMenu">
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{CompiledBinding FileMenuActions}" />
<MenuItem Header="{l:Translate mnuOptions}" ItemsSource="{CompiledBinding OptionsMenuActions}" />
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{Binding FileMenuActions}" />
<MenuItem Header="{l:Translate mnuOptions}" ItemsSource="{Binding OptionsMenuActions}" />
</c:MesenMenu>
<Grid Classes="main" ColumnDefinitions="1*, 300" RowDefinitions="3*,100" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
@ -43,7 +43,7 @@
<dc:MesenTextEditor
Name="Editor"
ShowLineNumbers="False"
TextBinding="{CompiledBinding Code}"
TextBinding="{Binding Code}"
FontFamily="{DynamicResource MesenAssemblerFont}"
FontSize="{DynamicResource MesenAssemblerFontSize}"
/>
@ -55,19 +55,19 @@
IsReadOnly="True"
FontFamily="{DynamicResource MesenAssemblerFont}"
FontSize="{DynamicResource MesenAssemblerFontSize}"
TextBinding="{CompiledBinding ByteCodeView}"
TextBinding="{Binding ByteCodeView}"
/>
</Border>
<Border Grid.Row="1">
<DataBox
Items="{CompiledBinding Errors}"
Items="{Binding Errors}"
GridLinesVisibility="All"
CellClick="OnCellClick"
>
<DataBox.Columns>
<DataBoxTextColumn Header="{l:Translate colLine}" Binding="{Binding LineNumber}" CanUserResize="True" />
<DataBoxTextColumn Header="{l:Translate colError}" Binding="{Binding Message}" CanUserResize="True" InitialWidth="400" />
<DataBoxTextColumn Header="{l:Translate colLine}" Binding="{Binding LineNumber, DataType={x:Type vm:AssemblerError}}" CanUserResize="True" />
<DataBoxTextColumn Header="{l:Translate colError}" Binding="{Binding Message, DataType={x:Type vm:AssemblerError}}" CanUserResize="True" InitialWidth="400" />
</DataBox.Columns>
</DataBox>
</Border>
@ -75,15 +75,15 @@
<Border Grid.Row="1" Grid.Column="1" Padding="2">
<DockPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" HorizontalAlignment="Right">
<TextBlock Text="{l:Translate lblCodeMatchesOriginal}" Padding="5 0" FontStyle="Italic" IsVisible="{CompiledBinding IsIdentical}" />
<TextBlock Text="{l:Translate lblCodeMatchesOriginal}" Padding="5 0" FontStyle="Italic" IsVisible="{Binding IsIdentical}" />
<c:ButtonWithIcon
MinWidth="70"
HorizontalContentAlignment="Center"
Click="Ok_OnClick"
Icon="Assets/Warning.png"
ShowIcon="{CompiledBinding HasWarning}"
ShowIcon="{Binding HasWarning}"
Text="{l:Translate btnOk}"
IsEnabled="{CompiledBinding OkEnabled}"
IsEnabled="{Binding OkEnabled}"
/>
<Button MinWidth="70" HorizontalContentAlignment="Center" Click="Cancel_OnClick" Content="{l:Translate btnCancel}" />
</StackPanel>
@ -93,24 +93,24 @@
Grid.Column="1"
Width="50"
Hex="True"
Max="{CompiledBinding MaxAddress}"
Value="{CompiledBinding StartAddress}"
Max="{Binding MaxAddress}"
Value="{Binding StartAddress}"
/>
<TextBlock Text="{l:Translate lblBytesUsed}" Grid.Row="1" Margin="0 5 0 0" />
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="1" Margin="0 5 0 0">
<TextBlock Text="{CompiledBinding BytesUsed}" Margin="5 0 0 0" />
<TextBlock Text="/" Margin="5 0" IsVisible="{CompiledBinding OriginalByteCount}" />
<TextBlock Text="{CompiledBinding OriginalByteCount}" IsVisible="{CompiledBinding OriginalByteCount}" />
<TextBlock Text="{Binding BytesUsed}" Margin="5 0 0 0" />
<TextBlock Text="/" Margin="5 0" IsVisible="{Binding OriginalByteCount}" />
<TextBlock Text="{Binding OriginalByteCount}" IsVisible="{Binding OriginalByteCount}" />
<Image
Margin="5 0"
Source="/Assets/Warning.png"
IsVisible="{CompiledBinding OriginalSizeExceeded}"
IsVisible="{Binding OriginalSizeExceeded}"
ToolTip.Tip="{l:Translate lblByteCountExceeded}"
/>
<Image
Margin="5 0"
Source="/Assets/Warning.png"
IsVisible="{CompiledBinding MaxSizeExceeded}"
IsVisible="{Binding MaxSizeExceeded}"
ToolTip.Tip="{l:Translate lblMaxSizeExceeded}"
/>
</StackPanel>

View file

@ -28,18 +28,18 @@
<DockPanel>
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right">
<Button MinWidth="70" HorizontalContentAlignment="Center" IsDefault="True" Click="Ok_OnClick" Content="{l:Translate btnOK}" IsEnabled="{CompiledBinding OkEnabled}" />
<Button MinWidth="70" HorizontalContentAlignment="Center" IsDefault="True" Click="Ok_OnClick" Content="{l:Translate btnOK}" IsEnabled="{Binding OkEnabled}" />
<Button MinWidth="70" HorizontalContentAlignment="Center" IsCancel="True" Click="Cancel_OnClick" Content="{l:Translate btnCancel}" />
</StackPanel>
<StackPanel DockPanel.Dock="Bottom" Margin="0 0 0 -20">
<CheckBox
Content="{l:Translate chkIgnoreDummyOperations}"
IsChecked="{CompiledBinding Breakpoint.IgnoreDummyOperations}"
IsVisible="{CompiledBinding HasDummyOperations}"
IsChecked="{Binding Breakpoint.IgnoreDummyOperations}"
IsVisible="{Binding HasDummyOperations}"
/>
<CheckBox Content="{l:Translate chkMark}" IsChecked="{CompiledBinding Breakpoint.MarkEvent}" />
<CheckBox Content="{l:Translate chkEnable}" IsChecked="{CompiledBinding Breakpoint.Enabled}" />
<CheckBox Content="{l:Translate chkMark}" IsChecked="{Binding Breakpoint.MarkEvent}" />
<CheckBox Content="{l:Translate chkEnable}" IsChecked="{Binding Breakpoint.Enabled}" />
</StackPanel>
<Grid
@ -51,32 +51,32 @@
<TextBlock Grid.Column="0" Grid.Row="0" Text="{l:Translate lblBreakpointType}" />
<StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="0">
<c:EnumComboBox
SelectedItem="{CompiledBinding Breakpoint.MemoryType}"
AvailableValues="{CompiledBinding AvailableMemoryTypes}"
SelectedItem="{Binding Breakpoint.MemoryType}"
AvailableValues="{Binding AvailableMemoryTypes}"
Width="150"
/>
<TextBlock Margin="3 0 0 0" Text="{CompiledBinding MaxAddress}" Foreground="Gray" />
<TextBlock Margin="3 0 0 0" Text="{Binding MaxAddress}" Foreground="Gray" />
</StackPanel>
<TextBlock Grid.Column="0" Grid.Row="1" Text="{l:Translate lblBreakOn}" />
<StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="1">
<CheckBox Content="{l:Translate chkBreakOnRead}" IsChecked="{CompiledBinding Breakpoint.BreakOnRead}" />
<CheckBox Content="{l:Translate chkBreakOnWrite}" IsChecked="{CompiledBinding Breakpoint.BreakOnWrite}" Margin="10 0 0 0" />
<CheckBox Content="{l:Translate chkBreakOnRead}" IsChecked="{Binding Breakpoint.BreakOnRead}" />
<CheckBox Content="{l:Translate chkBreakOnWrite}" IsChecked="{Binding Breakpoint.BreakOnWrite}" Margin="10 0 0 0" />
<CheckBox
Content="{l:Translate chkBreakOnExec}"
IsChecked="{CompiledBinding Breakpoint.BreakOnExec}"
IsChecked="{Binding Breakpoint.BreakOnExec}"
Margin="10 0 0 0"
IsVisible="{CompiledBinding CanExec}"
IsVisible="{Binding CanExec}"
/>
</StackPanel>
<TextBlock Grid.Column="0" Grid.Row="2" Text="{l:Translate lblAddress}" />
<StackPanel Grid.Column="1" Grid.Row="2" Orientation="Horizontal">
<TextBlock Margin="0 0 3 0">$</TextBlock>
<c:MesenNumericTextBox Name="startAddress" Value="{CompiledBinding Breakpoint.StartAddress}" Hex="True" Trim="True" Width="60" />
<c:MesenNumericTextBox Name="startAddress" Value="{Binding Breakpoint.StartAddress}" Hex="True" Trim="True" Width="60" />
<TextBlock Margin="3 0 3 0" Text="{l:Translate lblAddressTo}" />
<c:MesenNumericTextBox Value="{CompiledBinding Breakpoint.EndAddress}" Hex="True" Trim="True" Width="60" />
<c:MesenNumericTextBox Value="{Binding Breakpoint.EndAddress}" Hex="True" Trim="True" Width="60" />
</StackPanel>
<TextBlock Grid.Column="0" Grid.Row="3" Text="{l:Translate lblCondition}" />
@ -85,11 +85,11 @@
AcceptsReturn="True"
TextWrapping="Wrap"
Height="NaN"
Text="{CompiledBinding Breakpoint.Condition}"
Text="{Binding Breakpoint.Condition}"
/>
<Image Grid.Column="1" Stretch="None" Source="/Assets/Warning.png" ToolTip.Tip="{l:Translate lblConditionError}" IsVisible="{CompiledBinding !IsConditionValid}" />
<Image Grid.Column="2" Stretch="None" Source="/Assets/Help.png" ToolTip.Tip="{CompiledBinding HelpTooltip}" ToolTip.Placement="Right" ToolTip.ShowDelay="100" />
<Image Grid.Column="1" Stretch="None" Source="/Assets/Warning.png" ToolTip.Tip="{l:Translate lblConditionError}" IsVisible="{Binding !IsConditionValid}" />
<Image Grid.Column="2" Stretch="None" Source="/Assets/Help.png" ToolTip.Tip="{Binding HelpTooltip}" ToolTip.Placement="Right" ToolTip.ShowDelay="100" />
</Grid>
</Grid>
</DockPanel>

View file

@ -29,10 +29,10 @@
<ScrollViewer MaxHeight="400">
<Border BorderBrush="Gray" BorderThickness="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<dc:PaletteSelector
PaletteColors="{CompiledBinding Palette, ElementName=root}"
SelectedPalette="{CompiledBinding SelectedPalette, ElementName=root}"
ColumnCount="{CompiledBinding ColumnCount, ElementName=root}"
BlockSize="{CompiledBinding BlockSize, ElementName=root}"
PaletteColors="{Binding Palette, ElementName=root}"
SelectedPalette="{Binding SelectedPalette, ElementName=root}"
ColumnCount="{Binding ColumnCount, ElementName=root}"
BlockSize="{Binding BlockSize, ElementName=root}"
ColorClick="PaletteColor_OnClick"
SelectionMode="None"
ShowIndexes="True"

View file

@ -36,7 +36,7 @@
MinHeight="21"
MaxHeight="200"
VerticalContentAlignment="Top"
Text="{CompiledBinding Label.Comment}"
Text="{Binding Label.Comment}"
/>
</DockPanel>
</Window>

View file

@ -28,7 +28,7 @@
Padding="3"
FontFamily="{DynamicResource MesenFont}"
FontSize="{DynamicResource MesenFontSize}"
TextBinding="{CompiledBinding LogContent, ElementName=root}"
TextBinding="{Binding LogContent, ElementName=root}"
/>
</Border>
</DockPanel>

View file

@ -28,7 +28,7 @@
</StackPanel>
</Panel>
<TabControl TabStripPlacement="Left" Background="#20888888" SelectedIndex="{CompiledBinding SelectedIndex, Mode=TwoWay}" Padding="0">
<TabControl TabStripPlacement="Left" Background="#20888888" SelectedIndex="{Binding SelectedIndex, Mode=TwoWay}" Padding="0">
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
@ -40,37 +40,37 @@
<StackPanel Margin="5">
<c:OptionSection Header="{l:Translate lblGeneralSettings}" Margin="0">
<CheckBox
IsChecked="{CompiledBinding Debugger.AutoResetCdl}"
IsChecked="{Binding Debugger.AutoResetCdl}"
Content="{l:Translate chkAutoResetCdl}"
/>
<CheckBox
IsChecked="{CompiledBinding Debugger.DisableDefaultLabels}"
IsChecked="{Binding Debugger.DisableDefaultLabels}"
Content="{l:Translate chkDisableDefaultLabels}"
/>
</c:OptionSection>
<c:OptionSection Header="{l:Translate lblDisassemblySettings}">
<CheckBox
IsChecked="{CompiledBinding Debugger.KeepActiveStatementInCenter}"
IsChecked="{Binding Debugger.KeepActiveStatementInCenter}"
Content="{l:Translate chkKeepActiveStatementInCenter}"
/>
</c:OptionSection>
<c:OptionSection Header="{l:Translate lblCopyCodeSettings}">
<CheckBox
IsChecked="{CompiledBinding Debugger.CopyAddresses}"
IsChecked="{Binding Debugger.CopyAddresses}"
Content="{l:Translate chkCopyAddresses}"
/>
<CheckBox
IsChecked="{CompiledBinding Debugger.CopyBlockHeaders}"
IsChecked="{Binding Debugger.CopyBlockHeaders}"
Content="{l:Translate chkCopyBlockHeaders}"
/>
<CheckBox
IsChecked="{CompiledBinding Debugger.CopyByteCode}"
IsChecked="{Binding Debugger.CopyByteCode}"
Content="{l:Translate chkCopyByteCode}"
/>
<CheckBox
IsChecked="{CompiledBinding Debugger.CopyComments}"
IsChecked="{Binding Debugger.CopyComments}"
Content="{l:Translate chkCopyComments}"
/>
</c:OptionSection>
@ -88,28 +88,28 @@
<c:OptionSection Header="{l:Translate lblGeneralSettings}" Margin="0">
<WrapPanel>
<TextBlock Text="{l:Translate lblScriptStartupBehavior}" VerticalAlignment="Center" />
<c:EnumComboBox SelectedItem="{CompiledBinding Script.ScriptStartupBehavior}" />
<c:EnumComboBox SelectedItem="{Binding Script.ScriptStartupBehavior}" />
</WrapPanel>
<CheckBox IsChecked="{CompiledBinding Script.SaveScriptBeforeRun}" Content="{l:Translate chkSaveScriptBeforeRun}" />
<CheckBox IsChecked="{CompiledBinding Script.AutoStartScriptOnLoad}" Content="{l:Translate chkAutoStartScriptOnLoad}" />
<CheckBox IsChecked="{CompiledBinding Script.AutoRestartScriptAfterPowerCycle}" Content="{l:Translate chkAutoRestartScriptAfterPowerCycle}" />
<CheckBox IsChecked="{CompiledBinding Script.AutoReloadScriptWhenFileChanges}" Content="{l:Translate chkAutoReloadScriptWhenFileChanges}" />
<CheckBox IsChecked="{Binding Script.SaveScriptBeforeRun}" Content="{l:Translate chkSaveScriptBeforeRun}" />
<CheckBox IsChecked="{Binding Script.AutoStartScriptOnLoad}" Content="{l:Translate chkAutoStartScriptOnLoad}" />
<CheckBox IsChecked="{Binding Script.AutoRestartScriptAfterPowerCycle}" Content="{l:Translate chkAutoRestartScriptAfterPowerCycle}" />
<CheckBox IsChecked="{Binding Script.AutoReloadScriptWhenFileChanges}" Content="{l:Translate chkAutoReloadScriptWhenFileChanges}" />
</c:OptionSection>
<c:OptionSection Header="{l:Translate lblRestrictions}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{l:Translate lblMaxExecutionTime}" />
<NumericUpDown Margin="3 0" Minimum="1" Maximum="100" Value="{CompiledBinding Script.ScriptTimeout}" />
<NumericUpDown Margin="3 0" Minimum="1" Maximum="100" Value="{Binding Script.ScriptTimeout}" />
<TextBlock Text="{l:Translate lblSeconds}" />
</StackPanel>
<CheckBox IsChecked="{CompiledBinding Script.AllowIoOsAccess}" Content="{l:Translate chkAllowIoOsAccess}" />
<CheckBox IsChecked="{Binding Script.AllowIoOsAccess}" Content="{l:Translate chkAllowIoOsAccess}" />
<CheckBox
IsChecked="{CompiledBinding Script.AllowNetworkAccess}"
IsVisible="{CompiledBinding Script.AllowIoOsAccess}"
IsChecked="{Binding Script.AllowNetworkAccess}"
IsVisible="{Binding Script.AllowIoOsAccess}"
Content="{l:Translate chkAllowNetworkAccess}"
/>
<CheckBox
IsEnabled="False"
IsVisible="{CompiledBinding !Script.AllowIoOsAccess}"
IsVisible="{Binding !Script.AllowIoOsAccess}"
Content="{l:Translate chkAllowNetworkAccess}"
/>
</c:OptionSection>
@ -134,46 +134,46 @@
<c:OptionSection Header="{l:Translate lblFontSettings}" Margin="0">
<Grid ColumnDefinitions="Auto,Auto" RowDefinitions="Auto,Auto,Auto,Auto,Auto">
<TextBlock Text="{l:Translate lblDisassemblyFont}" />
<v:FontOptionsView Grid.Column="1" Grid.Row="0" DataContext="{CompiledBinding Fonts.DisassemblyFont}" PreferMonospace="True" />
<v:FontOptionsView Grid.Column="1" Grid.Row="0" DataContext="{Binding Fonts.DisassemblyFont}" PreferMonospace="True" />
<TextBlock Text="{l:Translate lblMemoryViewerFont}" Grid.Row="1" />
<v:FontOptionsView Grid.Column="1" Grid.Row="1" DataContext="{CompiledBinding Fonts.MemoryViewerFont}" PreferMonospace="True" />
<v:FontOptionsView Grid.Column="1" Grid.Row="1" DataContext="{Binding Fonts.MemoryViewerFont}" PreferMonospace="True" />
<TextBlock Text="{l:Translate lblAssemblerFont}" Grid.Row="2" />
<v:FontOptionsView Grid.Column="1" Grid.Row="2" DataContext="{CompiledBinding Fonts.AssemblerFont}" />
<v:FontOptionsView Grid.Column="1" Grid.Row="2" DataContext="{Binding Fonts.AssemblerFont}" />
<TextBlock Text="{l:Translate lblScriptWindowFont}" Grid.Row="3" />
<v:FontOptionsView Grid.Column="1" Grid.Row="3" DataContext="{CompiledBinding Fonts.ScriptWindowFont}" />
<v:FontOptionsView Grid.Column="1" Grid.Row="3" DataContext="{Binding Fonts.ScriptWindowFont}" />
<TextBlock Text="{l:Translate lblOtherMonoFont}" Grid.Row="4" />
<v:FontOptionsView Grid.Column="1" Grid.Row="4" DataContext="{CompiledBinding Fonts.OtherMonoFont}" PreferMonospace="True" />
<v:FontOptionsView Grid.Column="1" Grid.Row="4" DataContext="{Binding Fonts.OtherMonoFont}" PreferMonospace="True" />
</Grid>
</c:OptionSection>
<c:OptionSection Header="{l:Translate lblSyntaxHighlighting}">
<StackPanel Orientation="Horizontal">
<StackPanel Margin="0 0 20 0">
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeOpcodeColor}" Text="{l:Translate lblCodeOpcodeColor}" />
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeLabelDefinitionColor}" Text="{l:Translate lblCodeLabelDefinitionColor}" />
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeImmediateColor}" Text="{l:Translate lblCodeImmediateColor}" />
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeAddressColor}" Text="{l:Translate lblCodeAddressColor}" />
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeCommentColor}" Text="{l:Translate lblCodeCommentColor}" />
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeEffectiveAddressColor}" Text="{l:Translate lblCodeEffectiveAddressColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeOpcodeColor}" Text="{l:Translate lblCodeOpcodeColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeLabelDefinitionColor}" Text="{l:Translate lblCodeLabelDefinitionColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeImmediateColor}" Text="{l:Translate lblCodeImmediateColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeAddressColor}" Text="{l:Translate lblCodeAddressColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeCommentColor}" Text="{l:Translate lblCodeCommentColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeEffectiveAddressColor}" Text="{l:Translate lblCodeEffectiveAddressColor}" />
</StackPanel>
<StackPanel>
<StackPanel>
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeVerifiedDataColor}" Text="{l:Translate lblCodeVerifiedDataColor}" />
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeUnidentifiedDataColor}" Text="{l:Translate lblCodeUnidentifiedDataColor}" />
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeUnexecutedCodeColor}" Text="{l:Translate lblCodeUnexecutedCodeColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeVerifiedDataColor}" Text="{l:Translate lblCodeVerifiedDataColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeUnidentifiedDataColor}" Text="{l:Translate lblCodeUnidentifiedDataColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeUnexecutedCodeColor}" Text="{l:Translate lblCodeUnexecutedCodeColor}" />
</StackPanel>
<StackPanel Margin="0 10">
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeExecBreakpointColor}" Text="{l:Translate lblCodeExecBreakpointColor}" />
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeWriteBreakpointColor}" Text="{l:Translate lblCodeWriteBreakpointColor}" />
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeReadBreakpointColor}" Text="{l:Translate lblCodeReadBreakpointColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeExecBreakpointColor}" Text="{l:Translate lblCodeExecBreakpointColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeWriteBreakpointColor}" Text="{l:Translate lblCodeWriteBreakpointColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeReadBreakpointColor}" Text="{l:Translate lblCodeReadBreakpointColor}" />
</StackPanel>
<StackPanel>
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeActiveStatementColor}" Text="{l:Translate lblCodeActiveStatementColor}" />
<dc:ColorPickerField Color="{CompiledBinding Debugger.CodeActiveMidInstructionColor}" Text="{l:Translate lblCodeActiveMidInstructionColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeActiveStatementColor}" Text="{l:Translate lblCodeActiveStatementColor}" />
<dc:ColorPickerField Color="{Binding Debugger.CodeActiveMidInstructionColor}" Text="{l:Translate lblCodeActiveMidInstructionColor}" />
</StackPanel>
</StackPanel>
</StackPanel>
@ -192,7 +192,7 @@
<StackPanel Margin="5">
<c:OptionSection Header="{l:Translate lblIntegrationSettings}" Margin="0">
<CheckBox
IsChecked="{CompiledBinding Integration.ResetLabelsOnImport}"
IsChecked="{Binding Integration.ResetLabelsOnImport}"
Content="{l:Translate chkResetLabelsOnImport}"
/>
</c:OptionSection>
@ -200,27 +200,27 @@
<TextBlock Text="{l:Translate lblAutoLoadHint}" TextWrapping="Wrap" Margin="0 5 0 0" />
<StackPanel Margin="10 5 0 0">
<CheckBox
IsChecked="{CompiledBinding Integration.AutoLoadDbgFiles}"
IsChecked="{Binding Integration.AutoLoadDbgFiles}"
Content="{l:Translate chkAutoLoadDbgFiles}"
/>
<CheckBox
IsChecked="{CompiledBinding Integration.AutoLoadSymFiles}"
IsChecked="{Binding Integration.AutoLoadSymFiles}"
Content="{l:Translate chkAutoLoadSymFiles}"
/>
<CheckBox
IsChecked="{CompiledBinding Integration.AutoLoadElfFiles}"
IsChecked="{Binding Integration.AutoLoadElfFiles}"
Content="{l:Translate chkAutoLoadElfFiles}"
/>
<CheckBox
IsChecked="{CompiledBinding Integration.AutoLoadMlbFiles}"
IsChecked="{Binding Integration.AutoLoadMlbFiles}"
Content="{l:Translate chkAutoLoadMlbFiles}"
/>
<CheckBox
IsChecked="{CompiledBinding Integration.AutoLoadFnsFiles}"
IsChecked="{Binding Integration.AutoLoadFnsFiles}"
Content="{l:Translate chkAutoLoadFnsFiles}"
/>
<CheckBox
IsChecked="{CompiledBinding Integration.AutoLoadCdlFiles}"
IsChecked="{Binding Integration.AutoLoadCdlFiles}"
Content="{l:Translate chkAutoLoadCdlFiles}"
/>
</StackPanel>
@ -229,24 +229,24 @@
<TextBlock Text="{l:Translate lblImportFiltersHint}" TextWrapping="Wrap" Margin="0 5 0 0" />
<StackPanel Margin="10 5 0 0">
<CheckBox
IsChecked="{CompiledBinding Integration.ImportPrgRomLabels}"
IsChecked="{Binding Integration.ImportPrgRomLabels}"
Content="{l:Translate chkImportPrgRomLabels}"
/>
<CheckBox
IsChecked="{CompiledBinding Integration.ImportWorkRamLabels}"
IsChecked="{Binding Integration.ImportWorkRamLabels}"
Content="{l:Translate chkImportWorkRamLabels}"
/>
<CheckBox
IsChecked="{CompiledBinding Integration.ImportSaveRamLabels}"
IsChecked="{Binding Integration.ImportSaveRamLabels}"
Content="{l:Translate chkImportSaveRamLabels}"
/>
<CheckBox
IsChecked="{CompiledBinding Integration.ImportOtherLabels}"
IsChecked="{Binding Integration.ImportOtherLabels}"
Content="{l:Translate chkImportOtherLabels}"
/>
</StackPanel>
<CheckBox
IsChecked="{CompiledBinding Integration.ImportComments}"
IsChecked="{Binding Integration.ImportComments}"
Content="{l:Translate chkImportComments}"
Margin="0 5 0 0"
/>
@ -271,19 +271,19 @@
<TabControl>
<TabItem Header="{l:Translate tabShared}">
<dc:DebuggerShortcutKeyGrid Shortcuts="{CompiledBinding SharedShortcuts}" />
<dc:DebuggerShortcutKeyGrid Shortcuts="{Binding SharedShortcuts}" />
</TabItem>
<TabItem Header="{l:Translate tabDebugger}">
<dc:DebuggerShortcutKeyGrid Shortcuts="{CompiledBinding DebuggerShortcuts}" />
<dc:DebuggerShortcutKeyGrid Shortcuts="{Binding DebuggerShortcuts}" />
</TabItem>
<TabItem Header="{l:Translate tabMemoryTools}">
<dc:DebuggerShortcutKeyGrid Shortcuts="{CompiledBinding MemoryToolsShortcuts}" />
<dc:DebuggerShortcutKeyGrid Shortcuts="{Binding MemoryToolsShortcuts}" />
</TabItem>
<TabItem Header="{l:Translate tabMisc}">
<dc:DebuggerShortcutKeyGrid Shortcuts="{CompiledBinding MiscShortcuts}" />
<dc:DebuggerShortcutKeyGrid Shortcuts="{Binding MiscShortcuts}" />
</TabItem>
<TabItem Header="{l:Translate tabScriptWindow}">
<dc:DebuggerShortcutKeyGrid Shortcuts="{CompiledBinding ScriptShortcuts}" />
<dc:DebuggerShortcutKeyGrid Shortcuts="{Binding ScriptShortcuts}" />
</TabItem>
</TabControl>
</TabItem>

View file

@ -4,8 +4,11 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:m="clr-namespace:Mesen"
xmlns:vm="using:Mesen.Debugger.ViewModels"
xmlns:vmd="using:Mesen.Debugger.ViewModels.DebuggerDock"
xmlns:sv="using:Mesen.Debugger.StatusViews"
xmlns:dbg="using:Mesen.Debugger"
xmlns:v="using:Mesen.Debugger.Views"
xmlns:vd="using:Mesen.Debugger.Views.DebuggerDock"
xmlns:c="using:Mesen.Controls"
xmlns:l="using:Mesen.Localization"
xmlns:dc="using:Mesen.Debugger.Controls"
@ -19,8 +22,8 @@
DragDrop.AllowDrop="True"
x:Class="Mesen.Debugger.Windows.DebuggerWindow"
x:DataType="vm:DebuggerWindowViewModel"
Title="{CompiledBinding Title}"
Icon="{CompiledBinding Icon}"
Title="{Binding Title}"
Icon="{Binding Icon}"
Width="800" Height="500"
x:Name="Debugger"
>
@ -45,26 +48,92 @@
<StackPanel>
<dc:MemoryMappingViewer
Margin="2 1"
IsVisible="{CompiledBinding CpuMappings.Count}"
Mappings="{CompiledBinding CpuMappings}"
MemType="{CompiledBinding CpuMemType}"
IsVisible="{Binding CpuMappings.Count}"
Mappings="{Binding CpuMappings}"
MemType="{Binding CpuMemType}"
/>
<dc:MemoryMappingViewer
Margin="2 1"
IsVisible="{CompiledBinding PpuMappings.Count}"
Mappings="{CompiledBinding PpuMappings}"
MemType="{CompiledBinding PpuMemType}"
IsVisible="{Binding PpuMappings.Count}"
Mappings="{Binding PpuMappings}"
MemType="{Binding PpuMemType}"
/>
</StackPanel>
</DataTemplate>
<DataTemplate DataType="{x:Type sv:Cx4StatusViewModel}">
<sv:Cx4StatusView />
</DataTemplate>
<DataTemplate DataType="{x:Type sv:GbaStatusViewModel}">
<sv:GbaStatusView />
</DataTemplate>
<DataTemplate DataType="{x:Type sv:GbStatusViewModel}">
<sv:GbStatusView />
</DataTemplate>
<DataTemplate DataType="{x:Type sv:GsuStatusViewModel}">
<sv:GsuStatusView />
</DataTemplate>
<DataTemplate DataType="{x:Type sv:NecDspStatusViewModel}">
<sv:NecDspStatusView />
</DataTemplate>
<DataTemplate DataType="{x:Type sv:NesStatusViewModel}">
<sv:NesStatusView />
</DataTemplate>
<DataTemplate DataType="{x:Type sv:PceStatusViewModel}">
<sv:PceStatusView />
</DataTemplate>
<DataTemplate DataType="{x:Type sv:SmsStatusViewModel}">
<sv:SmsStatusView />
</DataTemplate>
<DataTemplate DataType="{x:Type sv:SnesStatusViewModel}">
<sv:SnesStatusView />
</DataTemplate>
<DataTemplate DataType="{x:Type sv:SpcStatusViewModel}">
<sv:SpcStatusView />
</DataTemplate>
<DataTemplate DataType="{x:Type vmd:BaseToolContainerViewModel}">
<vd:ToolContainerView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:BreakpointListViewModel}">
<v:BreakpointListView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:CallStackViewModel}">
<v:CallStackView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ControllerInputViewModel}">
<v:ControllerInputView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ControllerListViewModel}">
<v:ControllerListView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:DisassemblyViewModel}">
<v:DisassemblyView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:FindResultListViewModel}">
<v:FindResultListView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:FunctionListViewModel}">
<v:FunctionListView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:LabelListViewModel}">
<v:LabelListView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:SourceViewViewModel}">
<v:SourceViewView />
</DataTemplate>
<DataTemplate DataType="{x:Type vm:WatchListViewModel}">
<v:WatchListView />
</DataTemplate>
</Window.DataTemplates>
<DockPanel>
<c:MesenMenu DockPanel.Dock="Top" Name="ActionMenu">
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{CompiledBinding FileMenuItems}" />
<MenuItem Header="{l:Translate mnuDebug}" ItemsSource="{CompiledBinding DebugMenuItems}" />
<MenuItem Header="{l:Translate mnuSearch}" ItemsSource="{CompiledBinding SearchMenuItems}" />
<MenuItem Header="{l:Translate mnuOptions}" ItemsSource="{CompiledBinding OptionMenuItems}" />
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{Binding FileMenuItems}" />
<MenuItem Header="{l:Translate mnuDebug}" ItemsSource="{Binding DebugMenuItems}" />
<MenuItem Header="{l:Translate mnuSearch}" ItemsSource="{Binding SearchMenuItems}" />
<MenuItem Header="{l:Translate mnuOptions}" ItemsSource="{Binding OptionMenuItems}" />
</c:MesenMenu>
<DockPanel DockPanel.Dock="Top">
<c:IconButton
@ -75,13 +144,13 @@
Icon="Assets/Settings.png"
/>
<StackPanel Orientation="Horizontal">
<dc:ActionToolbar Items="{CompiledBinding ToolbarItems}" />
<dc:ActionToolbar Items="{Binding ToolbarItems}" />
</StackPanel>
</DockPanel>
<DockPanel>
<Panel DockPanel.Dock="Right" IsVisible="{CompiledBinding Config.ShowSettingsPanel}" Margin="3 0">
<Panel DockPanel.Dock="Right" IsVisible="{Binding Config.ShowSettingsPanel}" Margin="3 0">
<ScrollViewer>
<v:DebuggerOptionsView DataContext="{CompiledBinding Options}" />
<v:DebuggerOptionsView DataContext="{Binding Options}" />
</ScrollViewer>
</Panel>
<Grid DockPanel.Dock="Bottom" MinHeight="18" RowDefinitions="1*" ColumnDefinitions="1*,1*,1*">
@ -90,16 +159,16 @@
Source="/Assets/Breakpoint.png"
VerticalAlignment="Center"
Stretch="None"
IsVisible="{CompiledBinding BreakReason.Length}"
IsVisible="{Binding BreakReason.Length}"
/>
<TextBlock
Text="{CompiledBinding BreakReason}"
Text="{Binding BreakReason}"
VerticalAlignment="Center"
/>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Column="1">
<TextBlock
Text="{CompiledBinding CdlStats}"
Text="{Binding CdlStats}"
VerticalAlignment="Center"
/>
</StackPanel>
@ -107,9 +176,9 @@
Orientation="Horizontal"
HorizontalAlignment="Right"
Grid.Column="2"
ToolTip.Tip="{CompiledBinding BreakElapsedCyclesTooltip}"
ToolTip.Tip="{Binding BreakElapsedCyclesTooltip}"
ToolTip.ShowDelay="100"
IsVisible="{CompiledBinding BreakElapsedCycles.Length}"
IsVisible="{Binding BreakElapsedCycles.Length}"
>
<Image
Source="/Assets/Speed.png"
@ -117,7 +186,7 @@
Stretch="None"
/>
<TextBlock
Text="{CompiledBinding BreakElapsedCycles}"
Text="{Binding BreakElapsedCycles}"
VerticalAlignment="Center"
Margin="3 0"
/>
@ -125,12 +194,12 @@
</Grid>
<ContentControl
Content="{CompiledBinding MemoryMappings}"
IsVisible="{CompiledBinding Config.ShowMemoryMappings}"
Content="{Binding MemoryMappings}"
IsVisible="{Binding Config.ShowMemoryMappings}"
DockPanel.Dock="Bottom"
/>
<idc:DockControl Layout="{CompiledBinding DockLayout}" />
<idc:DockControl Layout="{Binding DockLayout}" />
</DockPanel>
</DockPanel>
</Window>

View file

@ -55,9 +55,9 @@
<DockPanel>
<Panel DockPanel.Dock="Top">
<c:MesenMenu DockPanel.Dock="Top" Name="ActionMenu">
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{CompiledBinding FileMenuItems}" />
<MenuItem Header="{l:Translate mnuDebug}" ItemsSource="{CompiledBinding DebugMenuItems}" />
<MenuItem Header="{l:Translate mnuView}" ItemsSource="{CompiledBinding ViewMenuItems}" />
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{Binding FileMenuItems}" />
<MenuItem Header="{l:Translate mnuDebug}" ItemsSource="{Binding DebugMenuItems}" />
<MenuItem Header="{l:Translate mnuView}" ItemsSource="{Binding ViewMenuItems}" />
</c:MesenMenu>
<c:IconButton
HorizontalAlignment="Right"
@ -68,18 +68,18 @@
/>
</Panel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top" IsVisible="{CompiledBinding Config.ShowToolbar}">
<dc:ActionToolbar Items="{CompiledBinding ToolbarItems}" />
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top" IsVisible="{Binding Config.ShowToolbar}">
<dc:ActionToolbar Items="{Binding ToolbarItems}" />
</StackPanel>
<Panel DockPanel.Dock="Right" Margin="3" IsVisible="{CompiledBinding Config.ShowSettingsPanel}">
<Panel DockPanel.Dock="Right" Margin="3" IsVisible="{Binding Config.ShowSettingsPanel}">
<ScrollViewer VerticalAlignment="Top">
<StackPanel>
<ContentControl Content="{CompiledBinding ConsoleConfig}" />
<CheckBox Content="{l:Translate chkShowListView}" IsChecked="{CompiledBinding ShowListView}" />
<ContentControl Content="{Binding ConsoleConfig}" />
<CheckBox Content="{l:Translate chkShowListView}" IsChecked="{Binding ShowListView}" />
<StackPanel Orientation="Horizontal" Margin="0 10 0 0">
<Button Command="{CompiledBinding EnableAllEventTypes}" Content="{l:Translate btnSelectAll}" />
<Button Command="{CompiledBinding DisableAllEventTypes}" Content="{l:Translate btnDeselectAll}" />
<Button Command="{Binding EnableAllEventTypes}" Content="{l:Translate btnSelectAll}" />
<Button Command="{Binding DisableAllEventTypes}" Content="{l:Translate btnDeselectAll}" />
</StackPanel>
</StackPanel>
</ScrollViewer>
@ -90,38 +90,38 @@
<RowDefinition MinHeight="200" Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition
MinHeight="{CompiledBinding MinListViewHeight}"
Height="{CompiledBinding ListViewHeight, Mode=TwoWay, Converter={StaticResource GridLengthConverter}}"
MinHeight="{Binding MinListViewHeight}"
Height="{Binding ListViewHeight, Mode=TwoWay, Converter={StaticResource GridLengthConverter}}"
/>
</Grid.RowDefinitions>
<dc:ScrollPictureViewer
x:Name="picViewer"
Grid.Row="0"
Source="{CompiledBinding ViewerBitmap}"
Zoom="{CompiledBinding Config.ImageScale}"
Source="{Binding ViewerBitmap}"
Zoom="{Binding Config.ImageScale}"
ShowMousePosition="False"
AllowSelection="False"
SelectionRect="{CompiledBinding SelectionRect}"
GridHighlight="{CompiledBinding GridHighlightPoint}"
SelectionRect="{Binding SelectionRect}"
GridHighlight="{Binding GridHighlightPoint}"
/>
<GridSplitter
Grid.Row="1"
HorizontalAlignment="Stretch"
IsVisible="{CompiledBinding Config.ShowListView}"
IsVisible="{Binding Config.ShowListView}"
/>
<Border BorderBrush="Gray" BorderThickness="1" Grid.Row="2">
<DataBox
Name="lstEvents"
Items="{CompiledBinding ListView.DebugEvents}"
Selection="{CompiledBinding ListView.Selection}"
Items="{Binding ListView.DebugEvents}"
Selection="{Binding ListView.Selection}"
SortMode="Multiple"
SortCommand="{CompiledBinding ListView.SortCommand}"
SortState="{CompiledBinding ListView.SortState}"
SortCommand="{Binding ListView.SortCommand}"
SortState="{Binding ListView.SortState}"
GridLinesVisibility="All"
ColumnWidths="{CompiledBinding ListView.ColumnWidths}"
ColumnWidths="{Binding ListView.ColumnWidths}"
>
<DataBox.Styles>
<Style Selector="TextBlock">
@ -139,19 +139,19 @@
<Border
BorderBrush="{DynamicResource MesenBlackBorderColor}"
BorderThickness="1"
Background="{Binding Color, Converter={StaticResource ArgbColorToBrushConverter}}"
Background="{Binding Color, Converter={StaticResource ArgbColorToBrushConverter}, DataType={x:Type dvm:DebugEventViewModel}}"
Width="12"
Height="12"
/>
</DataTemplate>
</DataBoxTemplateColumn>
<DataBoxTextColumn Header="{l:Translate colScanline}" ColumnName="Scanline" InitialWidth="88" Binding="{Binding Scanline}" />
<DataBoxTextColumn Header="{l:Translate colCycle}" ColumnName="Cycle" InitialWidth="77" Binding="{Binding Cycle}" />
<DataBoxTextColumn Header="{l:Translate colPc}" ColumnName="ProgramCounter" InitialWidth="62" Binding="{Binding ProgramCounter}" />
<DataBoxTextColumn Header="{l:Translate colType}" ColumnName="Type" InitialWidth="77" Binding="{Binding Type}" />
<DataBoxTextColumn Header="{l:Translate colAddress}" ColumnName="Address" InitialWidth="68" Binding="{Binding Address}" />
<DataBoxTextColumn Header="{l:Translate colValue}" ColumnName="Value" InitialWidth="50" Binding="{Binding Value}" />
<DataBoxTextColumn Header="{l:Translate colDetails}" CanUserSort="False" InitialWidth="416" Binding="{Binding Details}" />
<DataBoxTextColumn Header="{l:Translate colScanline}" ColumnName="Scanline" InitialWidth="88" Binding="{Binding Scanline, DataType={x:Type dvm:DebugEventViewModel}}" />
<DataBoxTextColumn Header="{l:Translate colCycle}" ColumnName="Cycle" InitialWidth="77" Binding="{Binding Cycle, DataType={x:Type dvm:DebugEventViewModel}}" />
<DataBoxTextColumn Header="{l:Translate colPc}" ColumnName="ProgramCounter" InitialWidth="62" Binding="{Binding ProgramCounter, DataType={x:Type dvm:DebugEventViewModel}}" />
<DataBoxTextColumn Header="{l:Translate colType}" ColumnName="Type" InitialWidth="77" Binding="{Binding Type, DataType={x:Type dvm:DebugEventViewModel}}" />
<DataBoxTextColumn Header="{l:Translate colAddress}" ColumnName="Address" InitialWidth="68" Binding="{Binding Address, DataType={x:Type dvm:DebugEventViewModel}}" />
<DataBoxTextColumn Header="{l:Translate colValue}" ColumnName="Value" InitialWidth="50" Binding="{Binding Value, DataType={x:Type dvm:DebugEventViewModel}}" />
<DataBoxTextColumn Header="{l:Translate colDetails}" CanUserSort="False" InitialWidth="416" Binding="{Binding Details, DataType={x:Type dvm:DebugEventViewModel}}" />
</DataBox.Columns>
</DataBox>
</Border>

View file

@ -28,9 +28,9 @@
Orientation="Horizontal"
DockPanel.Dock="Left"
VerticalAlignment="Center"
IsVisible="{CompiledBinding SearchString, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
IsVisible="{Binding SearchString, Converter={x:Static StringConverters.IsNotNullOrEmpty}}"
>
<TextBlock Margin="2 0" Text="{CompiledBinding SearchResults.Count}" />
<TextBlock Margin="2 0" Text="{Binding SearchResults.Count}" />
<TextBlock Text="{l:Translate lblResults}" />
</StackPanel>
@ -39,7 +39,7 @@
MinWidth="70"
HorizontalContentAlignment="Center"
IsDefault="True"
IsEnabled="{CompiledBinding CanSelect}"
IsEnabled="{Binding CanSelect}"
Click="Select_OnClick"
Content="{l:Translate btnSelect}"
/>
@ -63,7 +63,7 @@
Grid.Column="1"
Name="txtSearch"
HorizontalAlignment="Stretch"
Text="{CompiledBinding SearchString}"
Text="{Binding SearchString}"
MaxLength="300"
/>
</Grid>
@ -72,8 +72,8 @@
<ListBox
Name="lstResults"
Background="Transparent"
ItemsSource="{CompiledBinding SearchResults}"
Selection="{CompiledBinding SelectionModel}"
ItemsSource="{Binding SearchResults}"
Selection="{Binding SelectionModel}"
ScrollViewer.AllowAutoHide="False"
>
<ListBox.Styles>

View file

@ -29,8 +29,8 @@
<DockPanel>
<DockPanel DockPanel.Dock="Bottom">
<Button DockPanel.Dock="Right" MinWidth="70" HorizontalContentAlignment="Center" IsCancel="True" Click="Cancel_OnClick" Content="{l:Translate btnCancel}" />
<Button DockPanel.Dock="Right" MinWidth="70" HorizontalContentAlignment="Center" IsDefault="True" Click="Ok_OnClick" Content="{l:Translate btnOk}" IsEnabled="{CompiledBinding OkEnabled}" />
<c:ButtonWithIcon Icon="Assets/Close.png" Text="{l:Translate btnDelete}" Click="Delete_OnClick" IsVisible="{CompiledBinding AllowDelete}" />
<Button DockPanel.Dock="Right" MinWidth="70" HorizontalContentAlignment="Center" IsDefault="True" Click="Ok_OnClick" Content="{l:Translate btnOk}" IsEnabled="{Binding OkEnabled}" />
<c:ButtonWithIcon Icon="Assets/Close.png" Text="{l:Translate btnDelete}" Click="Delete_OnClick" IsVisible="{Binding AllowDelete}" />
</DockPanel>
<Grid
@ -42,22 +42,22 @@
<TextBlock Grid.Column="0" Grid.Row="0" Text="{l:Translate lblMemoryType}" />
<c:EnumComboBox
Grid.Column="1" Grid.Row="0"
SelectedItem="{CompiledBinding Label.MemoryType}"
AvailableValues="{CompiledBinding AvailableMemoryTypes}"
SelectedItem="{Binding Label.MemoryType}"
AvailableValues="{Binding AvailableMemoryTypes}"
/>
<TextBlock Grid.Column="0" Grid.Row="1" Text="{l:Translate lblAddress}" />
<StackPanel Grid.Column="1" Grid.Row="1" Orientation="Horizontal">
<TextBlock Margin="0 0 3 0">$</TextBlock>
<c:MesenNumericTextBox Value="{CompiledBinding Label.Address}" Hex="True" Trim="True" Width="60" />
<TextBlock Margin="3 0 0 0" Text="{CompiledBinding MaxAddress}" Foreground="Gray" />
<c:MesenNumericTextBox Value="{Binding Label.Address}" Hex="True" Trim="True" Width="60" />
<TextBlock Margin="3 0 0 0" Text="{Binding MaxAddress}" Foreground="Gray" />
</StackPanel>
<TextBlock Grid.Column="0" Grid.Row="2" Text="{l:Translate lblLabel}" />
<TextBox
Grid.Column="1" Grid.Row="2"
Name="txtLabel"
Text="{CompiledBinding Label.Label}"
Text="{Binding Label.Label}"
/>
<TextBlock Grid.Column="0" Grid.Row="3" Text="{l:Translate lblComment}" />
@ -68,7 +68,7 @@
Height="NaN"
MinHeight="100"
VerticalContentAlignment="Top"
Text="{CompiledBinding Label.Comment}"
Text="{Binding Label.Comment}"
FontFamily="{DynamicResource MesenMonospaceFont}"
FontSize="{DynamicResource MesenMonospaceFontSize}"
/>
@ -76,16 +76,16 @@
<TextBlock Grid.Column="0" Grid.Row="4" Text="{l:Translate lblLength}" />
<StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="4">
<NumericUpDown
Value="{CompiledBinding Label.Length}"
Value="{Binding Label.Length}"
Minimum="1"
Maximum="65536"
/>
<TextBlock Text="{l:Translate lblBytes}" Margin="3 0" />
</StackPanel>
<Grid Grid.Row="5" Margin="0 5" Grid.ColumnSpan="2" ColumnDefinitions="Auto,*" RowDefinitions="Auto" IsVisible="{CompiledBinding ErrorMessage.Length}" >
<Grid Grid.Row="5" Margin="0 5" Grid.ColumnSpan="2" ColumnDefinitions="Auto,*" RowDefinitions="Auto" IsVisible="{Binding ErrorMessage.Length}" >
<Image Source="/Assets/Warning.png" Stretch="None" />
<TextBlock Grid.Column="1" Text="{CompiledBinding ErrorMessage}" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Margin="3 0 0 0" />
<TextBlock Grid.Column="1" Text="{Binding ErrorMessage}" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" Margin="3 0 0 0" />
</Grid>
</Grid>
</DockPanel>

View file

@ -45,16 +45,16 @@
<TextBlock Text="{l:Translate lblMemType}" />
<c:EnumComboBox
Grid.Column="1"
SelectedItem="{CompiledBinding MemoryType}"
AvailableValues="{CompiledBinding AvailableMemoryTypes}"
SelectedItem="{Binding MemoryType}"
AvailableValues="{Binding AvailableMemoryTypes}"
MinWidth="120"
/>
<TextBlock Grid.Row="1" Text="{l:Translate lblFormat}" />
<c:EnumComboBox Grid.Column="1" Grid.Row="1" SelectedItem="{CompiledBinding Format}" />
<c:EnumComboBox Grid.Column="1" Grid.Row="1" SelectedItem="{Binding Format}" />
<TextBlock Grid.Row="2" Text="{l:Translate lblValueSize}" />
<c:EnumComboBox Grid.Column="1" Grid.Row="2" SelectedItem="{CompiledBinding ValueSize}" />
<c:EnumComboBox Grid.Column="1" Grid.Row="2" SelectedItem="{Binding ValueSize}" />
</Grid>
<c:OptionSection Header="{l:Translate lblSearchFilter}">
@ -62,71 +62,71 @@
<Grid ColumnDefinitions="Auto,5,*" RowDefinitions="Auto,Auto,Auto,Auto">
<c:EnumRadioButton
Grid.ColumnSpan="3"
Value="{CompiledBinding CompareTo}"
Value="{Binding CompareTo}"
CheckedWhen="{x:Static dvm:MemorySearchCompareTo.PreviousSearchValue}"
/>
<c:EnumRadioButton
Grid.ColumnSpan="3"
Grid.Row="1"
Value="{CompiledBinding CompareTo}"
Value="{Binding CompareTo}"
CheckedWhen="{x:Static dvm:MemorySearchCompareTo.PreviousRefreshValue}"
/>
<c:EnumRadioButton
Grid.Row="2"
Value="{CompiledBinding CompareTo}"
Value="{Binding CompareTo}"
CheckedWhen="{x:Static dvm:MemorySearchCompareTo.SpecificValue}"
/>
<c:MesenNumericTextBox
Grid.Row="2"
Grid.Column="2"
IsEnabled="{CompiledBinding IsSpecificValueEnabled}"
Value="{CompiledBinding SpecificValue}"
IsEnabled="{Binding IsSpecificValueEnabled}"
Value="{Binding SpecificValue}"
MinWidth="60"
Min="{CompiledBinding MinValue}"
Max="{CompiledBinding MaxValue}"
Hex="{CompiledBinding IsValueHex}"
Min="{Binding MinValue}"
Max="{Binding MaxValue}"
Hex="{Binding IsValueHex}"
/>
<c:EnumRadioButton
Grid.Row="3"
Value="{CompiledBinding CompareTo}"
Value="{Binding CompareTo}"
CheckedWhen="{x:Static dvm:MemorySearchCompareTo.SpecificAddress}"
/>
<c:MesenNumericTextBox
Grid.Row="3"
Grid.Column="2"
IsEnabled="{CompiledBinding IsSpecificAddressEnabled}"
Value="{CompiledBinding SpecificAddress}"
IsEnabled="{Binding IsSpecificAddressEnabled}"
Value="{Binding SpecificAddress}"
Hex="True"
MinWidth="60"
Min="0"
Max="{CompiledBinding MaxAddress}"
Max="{Binding MaxAddress}"
/>
</Grid>
</c:GroupBox>
<c:GroupBox Header="{l:Translate lblOperator}">
<StackPanel>
<c:EnumRadioButton
Value="{CompiledBinding Operator}"
Value="{Binding Operator}"
CheckedWhen="{x:Static dvm:MemorySearchOperator.Equal}"
/>
<c:EnumRadioButton
Value="{CompiledBinding Operator}"
Value="{Binding Operator}"
CheckedWhen="{x:Static dvm:MemorySearchOperator.NotEqual}"
/>
<c:EnumRadioButton
Value="{CompiledBinding Operator}"
Value="{Binding Operator}"
CheckedWhen="{x:Static dvm:MemorySearchOperator.LessThan}"
/>
<c:EnumRadioButton
Value="{CompiledBinding Operator}"
Value="{Binding Operator}"
CheckedWhen="{x:Static dvm:MemorySearchOperator.LessThanOrEqual}"
/>
<c:EnumRadioButton
Value="{CompiledBinding Operator}"
Value="{Binding Operator}"
CheckedWhen="{x:Static dvm:MemorySearchOperator.GreaterThan}"
/>
<c:EnumRadioButton
Value="{CompiledBinding Operator}"
Value="{Binding Operator}"
CheckedWhen="{x:Static dvm:MemorySearchOperator.GreaterThanOrEqual}"
/>
</StackPanel>
@ -146,7 +146,7 @@
Icon="Assets/Undo.png"
HorizontalAlignment="Right"
Text="{l:Translate btnUndo}"
IsEnabled="{CompiledBinding IsUndoEnabled}"
IsEnabled="{Binding IsUndoEnabled}"
Command="{Binding Undo}"
/>
<c:ButtonWithIcon
@ -172,15 +172,15 @@
ColumnWidths="{Binding ColumnWidths}"
>
<DataBox.Columns>
<DataBoxTextColumn ColumnName="Address" Header="{l:Translate colAddress}" Binding="{Binding AddressString}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="Value" Header="{l:Translate colValue}" Binding="{Binding Value}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="PrevValue" Header="{l:Translate colPrevValue}" Binding="{Binding PrevValue}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="ReadCount" Header="{l:Translate colReadCount}" Binding="{Binding ReadCount}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="LastRead" Header="{l:Translate colLastRead}" Binding="{Binding LastRead}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="WriteCount" Header="{l:Translate colWriteCount}" Binding="{Binding WriteCount}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="LastWrite" Header="{l:Translate colLastWrite}" Binding="{Binding LastWrite}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="ExecCount" Header="{l:Translate colExecCount}" Binding="{Binding ExecCount}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="LastExec" Header="{l:Translate colLastExec}" Binding="{Binding LastExec}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="Address" Header="{l:Translate colAddress}" Binding="{Binding AddressString, DataType={x:Type dvm:MemoryAddressViewModel}}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="Value" Header="{l:Translate colValue}" Binding="{Binding Value, DataType={x:Type dvm:MemoryAddressViewModel}}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="PrevValue" Header="{l:Translate colPrevValue}" Binding="{Binding PrevValue, DataType={x:Type dvm:MemoryAddressViewModel}}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="ReadCount" Header="{l:Translate colReadCount}" Binding="{Binding ReadCount, DataType={x:Type dvm:MemoryAddressViewModel}}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="LastRead" Header="{l:Translate colLastRead}" Binding="{Binding LastRead, DataType={x:Type dvm:MemoryAddressViewModel}}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="WriteCount" Header="{l:Translate colWriteCount}" Binding="{Binding WriteCount, DataType={x:Type dvm:MemoryAddressViewModel}}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="LastWrite" Header="{l:Translate colLastWrite}" Binding="{Binding LastWrite, DataType={x:Type dvm:MemoryAddressViewModel}}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="ExecCount" Header="{l:Translate colExecCount}" Binding="{Binding ExecCount, DataType={x:Type dvm:MemoryAddressViewModel}}" CanUserResize="True" />
<DataBoxTextColumn ColumnName="LastExec" Header="{l:Translate colLastExec}" Binding="{Binding LastExec, DataType={x:Type dvm:MemoryAddressViewModel}}" CanUserResize="True" />
<DataBoxTemplateColumn
ColumnName="Match"
CanUserSort="False"
@ -188,7 +188,7 @@
InitialWidth="22"
>
<DataTemplate>
<CheckBox IsChecked="{Binding IsMatch}" IsHitTestVisible="False" Classes.isNotMatch="{Binding !IsMatch}" />
<CheckBox IsChecked="{Binding IsMatch, DataType={x:Type dvm:MemoryAddressViewModel}}" IsHitTestVisible="False" Classes.isNotMatch="{Binding !IsMatch, DataType={x:Type dvm:MemoryAddressViewModel}}" />
</DataTemplate>
</DataBoxTemplateColumn>
</DataBox.Columns>

View file

@ -32,19 +32,19 @@
<DockPanel>
<c:MesenMenu DockPanel.Dock="Top" Name="ActionMenu">
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{CompiledBinding FileMenuItems}" />
<MenuItem Header="{l:Translate mnuView}" ItemsSource="{CompiledBinding ViewMenuItems}" />
<MenuItem Header="{l:Translate mnuSearch}" ItemsSource="{CompiledBinding SearchMenuItems}" />
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{Binding FileMenuItems}" />
<MenuItem Header="{l:Translate mnuView}" ItemsSource="{Binding ViewMenuItems}" />
<MenuItem Header="{l:Translate mnuSearch}" ItemsSource="{Binding SearchMenuItems}" />
</c:MesenMenu>
<DockPanel DockPanel.Dock="Top" Margin="3 2">
<StackPanel Orientation="Horizontal" DockPanel.Dock="Left">
<TextBlock VerticalAlignment="Center" Text="{l:Translate lblMemoryType}" />
<c:EnumComboBox
SelectedItem="{CompiledBinding Config.MemoryType}"
AvailableValues="{CompiledBinding AvailableMemoryTypes}"
SelectedItem="{Binding Config.MemoryType}"
AvailableValues="{Binding AvailableMemoryTypes}"
Width="150"
/>
<dc:ActionToolbar Items="{CompiledBinding ToolbarItems}" />
<dc:ActionToolbar Items="{Binding ToolbarItems}" />
</StackPanel>
<c:IconButton
@ -55,19 +55,19 @@
Icon="Assets/Settings.png"
/>
</DockPanel>
<Panel DockPanel.Dock="Right" IsVisible="{CompiledBinding Config.ShowOptionPanel}" Margin="3 0">
<dv:MemoryToolsDisplayOptionsView DataContext="{CompiledBinding Options}" />
<Panel DockPanel.Dock="Right" IsVisible="{Binding Config.ShowOptionPanel}" Margin="3 0">
<dv:MemoryToolsDisplayOptionsView DataContext="{Binding Options}" />
</Panel>
<Panel DockPanel.Dock="Bottom" Margin="3 0">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="{CompiledBinding LocationText}" Margin="0 2" />
<TextBlock Text="{Binding LocationText}" Margin="0 2" />
<Border
BorderThickness="1 0 0 0"
Margin="5 0 0 0"
BorderBrush="{DynamicResource MesenGrayBorderColor}"
IsVisible="{CompiledBinding LengthText.Length}"
IsVisible="{Binding LengthText.Length}"
>
<TextBlock Text="{CompiledBinding LengthText}" Margin="5 2 0 2" />
<TextBlock Text="{Binding LengthText}" Margin="5 2 0 2" />
</Border>
</StackPanel>
</Panel>
@ -77,22 +77,22 @@
DockPanel.Dock="Right"
AllowAutoHide="False"
Minimum="0"
Maximum="{CompiledBinding MaxScrollValue}"
Maximum="{Binding MaxScrollValue}"
SmallChange="1"
LargeChange="10"
Value="{CompiledBinding ScrollPosition}"
Value="{Binding ScrollPosition}"
/>
<dc:HexEditor
Name="Hex"
DataProvider="{CompiledBinding DataProvider}"
BytesPerRow="{CompiledBinding Config.BytesPerRow}"
HighDensityMode="{CompiledBinding Config.HighDensityTextMode}"
SelectionStart="{CompiledBinding SelectionStart}"
SelectionLength="{CompiledBinding SelectionLength}"
TopRow="{CompiledBinding ScrollPosition}"
DataProvider="{Binding DataProvider}"
BytesPerRow="{Binding Config.BytesPerRow}"
HighDensityMode="{Binding Config.HighDensityTextMode}"
SelectionStart="{Binding SelectionStart}"
SelectionLength="{Binding SelectionLength}"
TopRow="{Binding ScrollPosition}"
FontFamily="{DynamicResource MesenMemoryViewerFont}"
FontSize="{DynamicResource MesenMemoryViewerFontSize}"
ShowStringView="{CompiledBinding Config.ShowCharacters}"
ShowStringView="{Binding Config.ShowCharacters}"
/>
</DockPanel>
</Border>

View file

@ -26,7 +26,7 @@
<DockPanel Margin="3">
<StackPanel DockPanel.Dock="Bottom">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" IsVisible="{CompiledBinding ShowNotFoundError}">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" IsVisible="{Binding ShowNotFoundError}">
<Image Source="/Assets/Warning.png" Stretch="None" />
<TextBlock Text="{l:Translate lblNoMatchFound}" Padding="3" />
</StackPanel>
@ -38,7 +38,7 @@
HorizontalContentAlignment="Center"
Click="FindPrev_OnClick"
Text="{l:Translate btnFindPrev}"
IsEnabled="{CompiledBinding IsValid}"
IsEnabled="{Binding IsValid}"
/>
<c:ButtonWithIcon
Icon="Assets/NextArrow.png"
@ -47,7 +47,7 @@
IsDefault="True"
Click="FindNext_OnClick"
Text="{l:Translate btnFindNext}"
IsEnabled="{CompiledBinding IsValid}"
IsEnabled="{Binding IsValid}"
/>
<Button
MinWidth="70"
@ -69,7 +69,7 @@
Grid.Column="1"
Name="txtValue"
HorizontalAlignment="Stretch"
Text="{CompiledBinding SearchString}"
Text="{Binding SearchString}"
MaxLength="300"
/>
<Image
@ -91,11 +91,11 @@
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="2"
SelectedItem="{CompiledBinding DataType}"
SelectedItem="{Binding DataType}"
/>
<TextBlock
Grid.Row="2"
IsVisible="{CompiledBinding IsInteger}"
IsVisible="{Binding IsInteger}"
Text="{l:Translate lblIntType}"
VerticalAlignment="Center"
Margin="0 0 5 0"
@ -104,42 +104,42 @@
Grid.Row="2"
Grid.Column="1"
Grid.ColumnSpan="2"
IsVisible="{CompiledBinding IsInteger}"
SelectedItem="{CompiledBinding IntType}"
IsVisible="{Binding IsInteger}"
SelectedItem="{Binding IntType}"
/>
<CheckBox
Grid.Row="3"
Grid.ColumnSpan="3"
IsVisible="{CompiledBinding IsString}"
IsChecked="{CompiledBinding CaseSensitive}"
IsVisible="{Binding IsString}"
IsChecked="{Binding CaseSensitive}"
Content="{l:Translate chkCaseSensitive}"
/>
<CheckBox
Grid.Row="4"
Grid.ColumnSpan="3"
IsVisible="{CompiledBinding IsString}"
IsChecked="{CompiledBinding UseTblMappings}"
IsVisible="{Binding IsString}"
IsChecked="{Binding UseTblMappings}"
Content="{l:Translate chkUseTblMappings}"
/>
</Grid>
<Grid ColumnDefinitions="1*,1*" RowDefinitions="Auto" >
<c:OptionSection Header="{l:Translate lblAccessFilters}">
<CheckBox Content="{l:Translate chkFilterNotAccessed}" IsChecked="{CompiledBinding FilterNotAccessed}" />
<CheckBox Content="{l:Translate chkFilterRead}" IsChecked="{CompiledBinding FilterRead}" />
<CheckBox Content="{l:Translate chkFilterWrite}" IsChecked="{CompiledBinding FilterWrite}" />
<CheckBox Content="{l:Translate chkFilterExec}" IsChecked="{CompiledBinding FilterExec}" />
<CheckBox Content="{l:Translate chkFilterNotAccessed}" IsChecked="{Binding FilterNotAccessed}" />
<CheckBox Content="{l:Translate chkFilterRead}" IsChecked="{Binding FilterRead}" />
<CheckBox Content="{l:Translate chkFilterWrite}" IsChecked="{Binding FilterWrite}" />
<CheckBox Content="{l:Translate chkFilterExec}" IsChecked="{Binding FilterExec}" />
<StackPanel Orientation="Horizontal">
<CheckBox Content="{l:Translate chkFilterTimeSpan}" IsChecked="{CompiledBinding FilterTimeSpanEnabled}" />
<c:MesenNumericTextBox MinWidth="35" Margin="5 0" Min="1" Max="9999" Value="{CompiledBinding FilterTimeSpan}" IsEnabled="{CompiledBinding FilterTimeSpanEnabled}" />
<CheckBox Content="{l:Translate chkFilterTimeSpan}" IsChecked="{Binding FilterTimeSpanEnabled}" />
<c:MesenNumericTextBox MinWidth="35" Margin="5 0" Min="1" Max="9999" Value="{Binding FilterTimeSpan}" IsEnabled="{Binding FilterTimeSpanEnabled}" />
<TextBlock Text="{l:Translate lblFrames}" />
</StackPanel>
</c:OptionSection>
<c:OptionSection Header="{l:Translate lblDataTypeFilters}" Grid.Column="1">
<CheckBox Content="{l:Translate chkFilterCode}" IsChecked="{CompiledBinding FilterCode}" />
<CheckBox Content="{l:Translate chkFilterData}" IsChecked="{CompiledBinding FilterData}" />
<CheckBox Content="{l:Translate chkFilterUnidentified}" IsChecked="{CompiledBinding FilterUnidentified}" />
<CheckBox Content="{l:Translate chkFilterCode}" IsChecked="{Binding FilterCode}" />
<CheckBox Content="{l:Translate chkFilterData}" IsChecked="{Binding FilterData}" />
<CheckBox Content="{l:Translate chkFilterUnidentified}" IsChecked="{Binding FilterUnidentified}" />
</c:OptionSection>
</Grid>
</DockPanel>

View file

@ -42,7 +42,7 @@
<DockPanel DockPanel.Dock="Bottom">
<Button DockPanel.Dock="Right" HorizontalContentAlignment="Center" IsCancel="True" Click="Cancel_OnClick" Content="{l:Translate btnCancel}" />
<c:ButtonWithIcon DockPanel.Dock="Right" Icon="Assets/SaveFloppy.png" HorizontalContentAlignment="Center" IsDefault="True" Click="Ok_OnClick" Text="{l:Translate btnSaveAs}" />
<TextBlock VerticalAlignment="Center" Text="{CompiledBinding ErrorMessage}" Foreground="{DynamicResource SystemErrorTextColor}" />
<TextBlock VerticalAlignment="Center" Text="{Binding ErrorMessage}" Foreground="{DynamicResource SystemErrorTextColor}" />
</DockPanel>
<TextBox
@ -50,7 +50,7 @@
Margin="0 5"
HorizontalAlignment="Stretch"
IsReadOnly="True"
Text="{CompiledBinding HeaderBytes}"
Text="{Binding HeaderBytes}"
Width="NaN"
FontFamily="{DynamicResource MesenMonospaceFont}"
FontSize="{DynamicResource MesenMonospaceFontSize}"
@ -58,65 +58,65 @@
<Grid ColumnDefinitions="Auto,1.5*,10,Auto,1*" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto">
<TextBlock Text="{l:Translate lblFileType}" Grid.Row="0" />
<c:EnumComboBox SelectedItem="{CompiledBinding Header.FileType}" Grid.Row="0" Grid.Column="1" />
<c:EnumComboBox SelectedItem="{Binding Header.FileType}" Grid.Row="0" Grid.Column="1" />
<TextBlock Text="{l:Translate lblMapper}" Grid.Row="1" />
<c:MesenNumericTextBox Value="{CompiledBinding Header.MapperId}" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" />
<c:MesenNumericTextBox Value="{Binding Header.MapperId}" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" />
<TextBlock Text="{l:Translate lblSubmapper}" Grid.Row="2" />
<c:MesenNumericTextBox Value="{CompiledBinding Header.SubmapperId}" IsEnabled="{CompiledBinding IsNes20}" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Left" />
<c:MesenNumericTextBox Value="{Binding Header.SubmapperId}" IsEnabled="{Binding IsNes20}" Grid.Row="2" Grid.Column="1" HorizontalAlignment="Left" />
<TextBlock Text="{l:Translate lblMirroringType}" Grid.Row="3" />
<c:EnumComboBox SelectedItem="{CompiledBinding Header.Mirroring}" Grid.Row="3" Grid.Column="1" />
<c:EnumComboBox SelectedItem="{Binding Header.Mirroring}" Grid.Row="3" Grid.Column="1" />
<TextBlock Text="{l:Translate lblFrameTiming}" Grid.Row="4" />
<c:EnumComboBox SelectedItem="{CompiledBinding Header.Timing}" AvailableValues="{CompiledBinding AvailableTimings}" Grid.Row="4" Grid.Column="1" />
<c:EnumComboBox SelectedItem="{Binding Header.Timing}" AvailableValues="{Binding AvailableTimings}" Grid.Row="4" Grid.Column="1" />
<TextBlock Text="{l:Translate lblSystem}" Grid.Row="5" />
<c:EnumComboBox SelectedItem="{CompiledBinding Header.System}" AvailableValues="{CompiledBinding AvailableSystemTypes}" Grid.Row="5" Grid.Column="1" />
<c:EnumComboBox SelectedItem="{Binding Header.System}" AvailableValues="{Binding AvailableSystemTypes}" Grid.Row="5" Grid.Column="1" />
<TextBlock Text="{l:Translate lblInputType}" Grid.Row="6" />
<c:EnumComboBox SelectedItem="{CompiledBinding Header.InputType}" IsEnabled="{CompiledBinding IsNes20}" Grid.Row="6" Grid.Column="1" />
<c:EnumComboBox SelectedItem="{Binding Header.InputType}" IsEnabled="{Binding IsNes20}" Grid.Row="6" Grid.Column="1" />
<TextBlock Text="{l:Translate lblVsSystemType}" Grid.Row="7" />
<c:EnumComboBox SelectedItem="{CompiledBinding Header.VsSystem}" IsEnabled="{CompiledBinding IsVsSystemVisible}" Grid.Row="7" Grid.Column="1" />
<c:EnumComboBox SelectedItem="{Binding Header.VsSystem}" IsEnabled="{Binding IsVsSystemVisible}" Grid.Row="7" Grid.Column="1" />
<TextBlock Text="{l:Translate lblVsPpuType}" Grid.Row="8" />
<c:EnumComboBox SelectedItem="{CompiledBinding Header.VsPpu}" IsEnabled="{CompiledBinding IsVsSystemVisible}" Grid.Row="8" Grid.Column="1" />
<c:EnumComboBox SelectedItem="{Binding Header.VsPpu}" IsEnabled="{Binding IsVsSystemVisible}" Grid.Row="8" Grid.Column="1" />
<TextBlock Text="{l:Translate lblPrgRom}" Grid.Row="0" Grid.Column="3" />
<StackPanel Orientation="Horizontal" Grid.Row="0" Grid.Column="4">
<c:MesenNumericTextBox Value="{CompiledBinding Header.PrgRom}" />
<c:MesenNumericTextBox Value="{Binding Header.PrgRom}" />
<TextBlock Text=" KB" />
</StackPanel>
<TextBlock Text="{l:Translate lblChrRom}" Grid.Row="1" Grid.Column="3" />
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="4">
<c:MesenNumericTextBox Value="{CompiledBinding Header.ChrRom}" />
<c:MesenNumericTextBox Value="{Binding Header.ChrRom}" />
<TextBlock Text=" KB" />
</StackPanel>
<TextBlock Text="{l:Translate lblWorkRam}" Grid.Row="2" Grid.Column="3" />
<c:EnumComboBox SelectedItem="{CompiledBinding Header.WorkRam}" IsEnabled="{CompiledBinding IsNes20}" Grid.Row="2" Grid.Column="4" />
<c:EnumComboBox SelectedItem="{Binding Header.WorkRam}" IsEnabled="{Binding IsNes20}" Grid.Row="2" Grid.Column="4" />
<TextBlock Text="{l:Translate lblSaveRam}" Grid.Row="3" Grid.Column="3" />
<c:EnumComboBox SelectedItem="{CompiledBinding Header.SaveRam}" IsEnabled="{CompiledBinding IsNes20}" Grid.Row="3" Grid.Column="4" />
<c:EnumComboBox SelectedItem="{Binding Header.SaveRam}" IsEnabled="{Binding IsNes20}" Grid.Row="3" Grid.Column="4" />
<TextBlock Text="{l:Translate lblChrRam}" Grid.Row="4" Grid.Column="3" />
<c:EnumComboBox SelectedItem="{CompiledBinding Header.ChrRam}" IsEnabled="{CompiledBinding IsNes20}" Grid.Row="4" Grid.Column="4" />
<c:EnumComboBox SelectedItem="{Binding Header.ChrRam}" IsEnabled="{Binding IsNes20}" Grid.Row="4" Grid.Column="4" />
<TextBlock Text="{l:Translate lblChrSaveRam}" Grid.Row="5" Grid.Column="3" />
<c:EnumComboBox SelectedItem="{CompiledBinding Header.ChrRamBattery}" IsEnabled="{CompiledBinding IsNes20}" Grid.Row="5" Grid.Column="4" />
<c:EnumComboBox SelectedItem="{Binding Header.ChrRamBattery}" IsEnabled="{Binding IsNes20}" Grid.Row="5" Grid.Column="4" />
<CheckBox
IsChecked="{CompiledBinding Header.HasBattery}"
IsEnabled="{CompiledBinding IsBatteryCheckboxEnabled}"
IsChecked="{Binding Header.HasBattery}"
IsEnabled="{Binding IsBatteryCheckboxEnabled}"
Content="{l:Translate chkBattery}"
Grid.Row="6"
Grid.Column="3"
Grid.ColumnSpan="2"
/>
<CheckBox IsChecked="{CompiledBinding Header.HasTrainer}" Content="{l:Translate chkTrainer}" Grid.Row="7" Grid.Column="3" Grid.ColumnSpan="2" />
<CheckBox IsChecked="{Binding Header.HasTrainer}" Content="{l:Translate chkTrainer}" Grid.Row="7" Grid.Column="3" Grid.ColumnSpan="2" />
</Grid>
</DockPanel>
</Window>

View file

@ -26,8 +26,8 @@
<DockPanel>
<Panel DockPanel.Dock="Top">
<c:MesenMenu DockPanel.Dock="Top" Name="ActionMenu">
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{CompiledBinding FileMenuActions}" />
<MenuItem Header="{l:Translate mnuView}" ItemsSource="{CompiledBinding ViewMenuActions}" />
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{Binding FileMenuActions}" />
<MenuItem Header="{l:Translate mnuView}" ItemsSource="{Binding ViewMenuActions}" />
</c:MesenMenu>
<c:IconButton
HorizontalAlignment="Right"
@ -38,18 +38,18 @@
/>
</Panel>
<dv:RefreshTimingView DataContext="{CompiledBinding RefreshTiming}" DockPanel.Dock="Bottom" />
<dv:RefreshTimingView DataContext="{Binding RefreshTiming}" DockPanel.Dock="Bottom" />
<ScrollViewer DockPanel.Dock="Right" IsVisible="{CompiledBinding Config.ShowSettingsPanel}">
<ScrollViewer DockPanel.Dock="Right" IsVisible="{Binding Config.ShowSettingsPanel}">
<StackPanel Margin="3">
<CheckBox Content="{l:Translate chkShowPaletteIndexes}" IsChecked="{CompiledBinding Config.ShowPaletteIndexes}" />
<CheckBox Content="{l:Translate chkShowPaletteIndexes}" IsChecked="{Binding Config.ShowPaletteIndexes}" />
<c:GroupBox
Header="{l:Translate lblSelectedColor}"
Margin="0 5 0 0"
MinWidth="200"
>
<ContentControl Content="{CompiledBinding PreviewPanel}" />
<ContentControl Content="{Binding PreviewPanel}" />
</c:GroupBox>
</StackPanel>
</ScrollViewer>
@ -62,13 +62,13 @@
>
<dc:PaletteSelector
Name="palSelector"
PaletteColors="{CompiledBinding PaletteColors}"
PaletteIndexValues="{CompiledBinding PaletteValues}"
ColumnCount="{CompiledBinding PaletteColumnCount}"
SelectedPalette="{CompiledBinding SelectedPalette}"
PaletteColors="{Binding PaletteColors}"
PaletteIndexValues="{Binding PaletteValues}"
ColumnCount="{Binding PaletteColumnCount}"
SelectedPalette="{Binding SelectedPalette}"
SelectionMode="SingleColor"
BlockSize="{CompiledBinding BlockSize}"
ShowIndexes="{CompiledBinding Config.ShowPaletteIndexes}"
BlockSize="{Binding BlockSize}"
ShowIndexes="{Binding Config.ShowPaletteIndexes}"
/>
</ScrollViewer>
</Border>

View file

@ -30,7 +30,7 @@
</Style>
</Window.Styles>
<TabControl ItemsSource="{CompiledBinding ProfilerTabs}" SelectedItem="{CompiledBinding SelectedTab}" Padding="1">
<TabControl ItemsSource="{Binding ProfilerTabs}" SelectedItem="{Binding SelectedTab}" Padding="1">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding TabName}" />
@ -38,7 +38,7 @@
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<DataTemplate DataType="vm:ProfilerTab">
<DockPanel>
<DockPanel DockPanel.Dock="Bottom">
<Button
@ -74,15 +74,15 @@
ColumnWidths="{Binding ColumnWidths}"
>
<DataBox.Columns>
<DataBoxTextColumn ColumnName="FunctionName" Header="{l:Translate colFunction}" Binding="{Binding FunctionName}" CanUserResize="True" InitialWidth="151" />
<DataBoxTextColumn ColumnName="CallCount" Header="{l:Translate colCallCount}" Binding="{Binding CallCount}" CanUserResize="True" InitialWidth="77" />
<DataBoxTextColumn ColumnName="InclusiveTime" Header="{l:Translate colInclusiveTime}" Binding="{Binding InclusiveCycles}" CanUserResize="True" InitialWidth="93" />
<DataBoxTextColumn ColumnName="InclusiveTimePercent" Header="{l:Translate colInclusiveTimePercent}" Binding="{Binding InclusivePercent}" CanUserResize="True" InitialWidth="52" />
<DataBoxTextColumn ColumnName="ExclusiveTime" Header="{l:Translate colExclusiveTime}" Binding="{Binding ExclusiveCycles}" CanUserResize="True" InitialWidth="81" />
<DataBoxTextColumn ColumnName="ExclusiveTimePercent" Header="{l:Translate colExclusiveTimePercent}" Binding="{Binding ExclusivePercent}" CanUserResize="True" InitialWidth="60" />
<DataBoxTextColumn ColumnName="AvgCycles" Header="{l:Translate colAvgCycles}" Binding="{Binding AvgCycles}" CanUserResize="True" InitialWidth="53" />
<DataBoxTextColumn ColumnName="MinCycles" Header="{l:Translate colMinCycles}" Binding="{Binding MinCycles}" CanUserResize="True" InitialWidth="53" />
<DataBoxTextColumn ColumnName="MaxCycles" Header="{l:Translate colMaxCycles}" Binding="{Binding MaxCycles}" CanUserResize="True" InitialWidth="61" />
<DataBoxTextColumn ColumnName="FunctionName" Header="{l:Translate colFunction}" Binding="{Binding FunctionName, DataType={x:Type vm:ProfiledFunctionViewModel}}" CanUserResize="True" InitialWidth="151" />
<DataBoxTextColumn ColumnName="CallCount" Header="{l:Translate colCallCount}" Binding="{Binding CallCount, DataType={x:Type vm:ProfiledFunctionViewModel}}" CanUserResize="True" InitialWidth="77" />
<DataBoxTextColumn ColumnName="InclusiveTime" Header="{l:Translate colInclusiveTime}" Binding="{Binding InclusiveCycles, DataType={x:Type vm:ProfiledFunctionViewModel}}" CanUserResize="True" InitialWidth="93" />
<DataBoxTextColumn ColumnName="InclusiveTimePercent" Header="{l:Translate colInclusiveTimePercent}" Binding="{Binding InclusivePercent, DataType={x:Type vm:ProfiledFunctionViewModel}}" CanUserResize="True" InitialWidth="52" />
<DataBoxTextColumn ColumnName="ExclusiveTime" Header="{l:Translate colExclusiveTime}" Binding="{Binding ExclusiveCycles, DataType={x:Type vm:ProfiledFunctionViewModel}}" CanUserResize="True" InitialWidth="81" />
<DataBoxTextColumn ColumnName="ExclusiveTimePercent" Header="{l:Translate colExclusiveTimePercent}" Binding="{Binding ExclusivePercent, DataType={x:Type vm:ProfiledFunctionViewModel}}" CanUserResize="True" InitialWidth="60" />
<DataBoxTextColumn ColumnName="AvgCycles" Header="{l:Translate colAvgCycles}" Binding="{Binding AvgCycles, DataType={x:Type vm:ProfiledFunctionViewModel}}" CanUserResize="True" InitialWidth="53" />
<DataBoxTextColumn ColumnName="MinCycles" Header="{l:Translate colMinCycles}" Binding="{Binding MinCycles, DataType={x:Type vm:ProfiledFunctionViewModel}}" CanUserResize="True" InitialWidth="53" />
<DataBoxTextColumn ColumnName="MaxCycles" Header="{l:Translate colMaxCycles}" Binding="{Binding MaxCycles, DataType={x:Type vm:ProfiledFunctionViewModel}}" CanUserResize="True" InitialWidth="61" />
</DataBox.Columns>
</DataBox>
</Border>

View file

@ -26,19 +26,19 @@
<Window.Styles>
<Style Selector="DataBoxRow > Grid Rectangle#BackgroundRectangle">
<Setter Property="Fill" Value="{Binding Path=Background}"/>
<Setter Property="Fill" Value="{Binding Path=Background, DataType={x:Type vm:RegEntry}}"/>
</Style>
</Window.Styles>
<DockPanel>
<c:MesenMenu DockPanel.Dock="Top" Name="ActionMenu">
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{CompiledBinding FileMenuActions}" />
<MenuItem Header="{l:Translate mnuView}" ItemsSource="{CompiledBinding ViewMenuActions}" />
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{Binding FileMenuActions}" />
<MenuItem Header="{l:Translate mnuView}" ItemsSource="{Binding ViewMenuActions}" />
</c:MesenMenu>
<dv:RefreshTimingView DataContext="{CompiledBinding RefreshTiming}" DockPanel.Dock="Bottom" />
<dv:RefreshTimingView DataContext="{Binding RefreshTiming}" DockPanel.Dock="Bottom" />
<TabControl ItemsSource="{CompiledBinding Tabs}" Padding="1">
<TabControl ItemsSource="{Binding Tabs}" Padding="1">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding TabName}" />
@ -46,7 +46,7 @@
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<DataTemplate DataType="vm:RegisterViewerTab">
<dv:RegisterTabView DataContext="{Binding}" />
</DataTemplate>
</TabControl.ContentTemplate>

View file

@ -19,7 +19,7 @@
x:Class="Mesen.Debugger.Windows.ScriptWindow"
Icon="/Assets/Script.png"
x:DataType="vm:ScriptWindowViewModel"
Title="{CompiledBinding WindowTitle}"
Title="{Binding WindowTitle}"
>
<Design.DataContext>
<vm:ScriptWindowViewModel />
@ -31,27 +31,27 @@
<DockPanel>
<c:MesenMenu DockPanel.Dock="Top" Name="ActionMenu">
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{CompiledBinding FileMenuActions}" />
<MenuItem Header="{l:Translate mnuScript}" ItemsSource="{CompiledBinding ScriptMenuActions}" />
<MenuItem Header="{l:Translate mnuHelp}" ItemsSource="{CompiledBinding HelpMenuActions}" />
<MenuItem Header="{l:Translate mnuFile}" ItemsSource="{Binding FileMenuActions}" />
<MenuItem Header="{l:Translate mnuScript}" ItemsSource="{Binding ScriptMenuActions}" />
<MenuItem Header="{l:Translate mnuHelp}" ItemsSource="{Binding HelpMenuActions}" />
</c:MesenMenu>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
<dc:ActionToolbar Items="{CompiledBinding ToolbarActions}" />
<dc:ActionToolbar Items="{Binding ToolbarActions}" />
</StackPanel>
<Grid ColumnDefinitions="*" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="4" />
<RowDefinition MinHeight="50" Height="{CompiledBinding Config.LogWindowHeight, Mode=TwoWay, Converter={StaticResource GridLengthConverter}}" />
<RowDefinition MinHeight="50" Height="{Binding Config.LogWindowHeight, Mode=TwoWay, Converter={StaticResource GridLengthConverter}}" />
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="Gray" BorderThickness="1" Margin="1">
<dc:MesenTextEditor
Name="Editor"
ShowLineNumbers="False"
TextBinding="{CompiledBinding Code}"
TextBinding="{Binding Code}"
FontFamily="{DynamicResource MesenScriptWindowFont}"
FontSize="{DynamicResource MesenScriptWindowFontSize}"
/>
@ -63,7 +63,7 @@
<dc:MesenTextEditor
Name="txtScriptLog"
Height="NaN"
TextBinding="{CompiledBinding Log}"
TextBinding="{Binding Log}"
IsReadOnly="True"
FontFamily="{DynamicResource MesenScriptWindowFont}"
FontSize="{DynamicResource MesenScriptWindowFontSize}"

Some files were not shown because too many files have changed in this diff Show more