mirror of
https://github.com/SourMesen/Mesen2.git
synced 2025-04-02 10:21:44 -04:00
UI: Support for NativeAOT
Added Windows & Linux builds using AOT compilation
This commit is contained in:
parent
99e4106761
commit
d208fdc6a7
195 changed files with 34238 additions and 31137 deletions
52
.github/workflows/build.yml
vendored
52
.github/workflows/build.yml
vendored
|
@ -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
|
||||
|
|
|
@ -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`.
|
25
README.md
25
README.md
|
@ -6,30 +6,31 @@ Mesen is a multi-system emulator (NES, SNES, Game Boy, Game Boy Advance, PC Engi
|
|||
|
||||
[](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)
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -5,6 +5,5 @@ namespace Mesen.Config
|
|||
{
|
||||
public class AssemblerConfig : BaseWindowConfig<AssemblerConfig>
|
||||
{
|
||||
public int Zoom = 100;
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
|
|
|
@ -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); }
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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"
|
||||
/>
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
/>
|
||||
|
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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; }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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() + "]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 />
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
/>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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}" />
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
/>
|
||||
|
|
|
@ -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}"
|
||||
/>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
MinHeight="21"
|
||||
MaxHeight="200"
|
||||
VerticalContentAlignment="Top"
|
||||
Text="{CompiledBinding Label.Comment}"
|
||||
Text="{Binding Label.Comment}"
|
||||
/>
|
||||
</DockPanel>
|
||||
</Window>
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
Padding="3"
|
||||
FontFamily="{DynamicResource MesenFont}"
|
||||
FontSize="{DynamicResource MesenFontSize}"
|
||||
TextBinding="{CompiledBinding LogContent, ElementName=root}"
|
||||
TextBinding="{Binding LogContent, ElementName=root}"
|
||||
/>
|
||||
</Border>
|
||||
</DockPanel>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
Loading…
Add table
Reference in a new issue