Docs: Updated documentation & screenshots

This commit is contained in:
Sour 2018-03-24 16:14:52 -04:00
parent 745ac85109
commit aaecfc6ba5
41 changed files with 208 additions and 107 deletions

View file

@ -23,10 +23,14 @@ chapter: false
**Pause when a movie finishes playing**: When enabled, the emulator will automatically pause when a movie ends its playback.
**Pause emulation when in background**: When enabled, the emulator will automatically pause when in the background.
**Allow input when in background**: When enabled, gamepad input can still be used even if the window is in the background. *This does not work for keyboard key bindings.*
**Pause when in**:
* **Background**: When enabled, the emulator will automatically pause when in the background.
* **Menu and config dialogs**: When enabled, the emulator will automatically pause when in menus or configuration dialogs.
* **Debugging tools**: When enabled, the emulator will automatically pause when in debugging tools.
### Misc. Settings ###
**Automatically apply IPS/BPS patches**: When enabled, any IPS or BPS patch file found in the same folder as the ROM file will automatically be applied. (i.e: when loading `MyRom.nes`, if a file called `MyRom.ips` exists in the same folder, it will be loaded automatically.)
@ -150,6 +154,8 @@ The FDS (Famicom Disk System) is a Famicom-specific add-on that allows games to
**Display additional information in title bar**: When enabled, additional information is shown in the title bar (such as filter, scale, etc.), next to the game's name.
**Show full file path in recent file list**: When enabled, the recent files menu will display the file's full path instead of just its name.
**Show frame counter**: When enabled, the number of frames emulated since the last reset will be shown on the screen.
**Show game timer**: When enabled, the amount of time elapsed since the last reset will be shown on the screen.

View file

@ -0,0 +1,14 @@
---
title: APU Viewer
weight: 11
chapter: false
---
<div class="imgBox"><div>
<img src="/images/ApuViewer.png" />
<span>APU Viewer</span>
</div></div>
The APU Viewer displays information about the APU's channels. The internal flags of every channel are shown, as well as some additional information, such as the channel's current frequency.
It can also be used to temporarily mute specific channels by unchecking them in the `Channel Control` section.

View file

@ -1,6 +1,6 @@
---
title: Assembler
weight: 16
weight: 12
chapter: false
---

View file

@ -14,30 +14,20 @@ The debugger is the main part of the debugging tools available in Mesen. This wi
## General Usage Tips ##
Generally speaking, the debugger tries to mimic the look and feel of Visual Studio in a lot of ways, including a lot of keyboard shortcuts (especially if you use the C# shortcut settings in Visual Studio). If you are familiar with any version of VS, the debugger should be easy to use.
Most elements in the debugger's interface have right-click menu options - make sure you explore the right-click options available in each list and window.
Watch expressions, breakpoints and labels are automatically saved on a per-rom basis in a **Workspace**.
You can completely reset the workspace for a specific rom by using the **<kbd>File&rarr;Workspace&rarr;Reset Workspace</kbd>** command.
### Shortcuts ###
Use keyboard and mouse shortcuts to speed things up:
## Customizing the debugger ##
#### General ####
All keyboard shortcuts can be customized in **<kbd>Options&rarr;Customize Shortcut Keys</kbd>**
- <kbd>**F9**</kbd> to add/remove a breakpoint to the current line of code.
- <kbd>**Left-clicking**</kbd> on the left-most portion of the margin in the code window will set a breakpoint for that line.
#### Search and navigation ####
* <kbd>**Ctrl+F**</kbd>: To perform an incremental search in the code window.
* <kbd>**Ctrl-Shift-F**</kbd>: Find all occurrences of an address or label in the code window.
* <kbd>**Ctrl-G**</kbd>: Go to a specific address.
* <kbd>**Double-click**</kbd> on an address to navigate to it.
* <kbd>**Back/Forward**</kbd> mouse buttons (on a 5-button mouse) allow you to go back and forth in the navigation history.
The font used in the code window can be customized in **<kbd>Options&rarr;Font Options&rarr;Select Font</kbd>**
The colors used for syntax highlighting can be changed in **<kbd>Options&rarr;Configure Colors</kbd>**
Various portions of the debugger can be hidden/shown via **<kbd>Options&rarr;Show</kbd>**
## Code Window ##
@ -52,26 +42,30 @@ The code window displays the disassembled code and contains a number of features
* Several options control what is shown in the code window, and how it is shown - see [Display Options](#display-options) below.
* Labels and comments defined in the label list are shown in the code.
* Single-line comments appear on the left, multi-line comments appear on top.
* Single-line comments appear on the right, multi-line comments appear on top.
* The instruction that's currently executing is highlighted in yellow.
* Mouse-hovering any label or address will display a tooltip giving additional information (label, comment, current value in memory, etc.)
* You can alter the flow of execution by using the `Set Next Statement` command to change the next instruction to be executed.
### Display Options ###
### Disassembly Options ###
**Disassemble...**:
* **Verified code only**: The strictest disassembly mode - this will cause the dissassembler to only disassemble bytes that it knows to be actual code. Everything else will be treated as data.
* **Everything**: In this mode, the disassembler will attempt to disassemble absolutely everything, including bytes that are marked as data.
* **Everything except verified data**: In this mode, the disassembler will disassemble everything *except* bytes that have been used/marked as data.
* **Verified Code**: (Always enabled) Bytes that are known by the debugger to be valid code will be disassembled as code.
* **Verified Data**: Bytes that are known to be data will be disassembled as code (enabling this is not recommended).
* **Unidentified Code/Data**: Bytes that have not been used yet by the CPU will be disassembled as code.
**Show...**:
* **Disassembled Code**: (Always enabled) Any portions of the CPU memory that has been disassembled (based on the previous options) will be shown in the code window.
* **Verified Data**: Verified data blocks will be shown (every byte of the block will be shown in the code window). Note: this has no effect if verified code is disassembled based on the previous options.
* **Unidentified Code/Data**: Blocks of bytes that are not marked as data nor code will be shown (every byte of the block will be shown in the code window). Note: this has no effect if unidentified blocks are disassembled based on the previous options.
**Display OP codes in lower case**: When enabled, OP codes are displayed in lowercase letters
**Highlight Unexecuted Code**: When enabled, code that has been identified by the disassembler as code but hasn't been executed yet will be highlighted in green.
**Show Effective Addresses**: When enabled, the resulting address of indirect addressing modes (e.g `LDA $3321, Y`) will be displayed next to the instruction in blue. e.g: `@ $3323`
**Show Only Disassembled Code**: When enabled, everything that has not been disassembled (e.g because it has not been confirmed to be actual code, or because it is data) will be hidden from the code window.
**Show Memory Values**: When enabled, every line of code that refers to a specific address in memory will display that address' current value on the right.
**Byte Code Display**: When enabled, the byte code matching the instructions will be displayed next to them (either on the left, or on the line below based on your selection)
@ -154,7 +148,8 @@ For example, if you have a label called "velocity" that points to 1-byte value a
<span>Breakpoint List</span>
</div></div>
Breakpoints define conditions under which the execution of the game's code will be suspended. Any number of breakpoints can be defined. To quickly add or remove a breakpoint for the current line of code, press F9 in the code window.
Breakpoints define conditions under which the execution of the game's code will be suspended. Any number of breakpoints can be defined.
You can also make a breakpoint appear as a mark on the [Event Viewer](/debugging/eventviewer.html) by checking the `M` column.
**To add a breakpoint**, right-click the breakpoint list and select **Add**.
**To edit a breakpoint**, double-click on it in the list.
@ -171,18 +166,25 @@ Breakpoints define conditions under which the execution of the game's code will
Breakpoints can be set to trigger based on CPU/PPU memory accesses at specific memory addresses.
**Breakpoint Type**
Select the type of memory for which you want to set a breakpoint. The valid range of addresses for the breakpoint will vary based on the selected memory type.
**Break On**
Select whether this breakpoint should occur based on CPU or PPU accesses, and which types of accesses should trigger the breakpoint.
Select which types of accesses (read, write or execute) should trigger the breakpoint.
**Address**
Select which address or address range this breakpoint should apply to.
It is also possible to specify no address at all by selecting **Any** - in this case, breakpoints will be evaluated on every CPU cycle.
**Use PRG ROM addresses**: This option makes it so the addresses apply to the PRG ROM itself, instead of their mappings in CPU memory.
**Condition** (optional)
Conditions allow you to use the same expression syntax as the one used in the [Watch Window](#watch-window) to cause a breakpoint to trigger under very specific conditions.
**Mark on Event Viewer**
When enabled, a mark will be visible on the [Event Viewer](/debugging/eventviewer.html) whenever this breakpoint's conditions are met. This can be used to add marks to the event viewer based on a variety of conditions by using conditional breakpoints.
**Break Execution**
This enables the breakpoint - if this is disabled, the execution will not break when the breakpoint is hit.
**Examples**
To break when the sum of the X and Y registers is 5:
@ -227,9 +229,13 @@ The label list displays every label defined in alphabetical order.
**To add a label**, right-click in the label list and select `Add`.
**To edit a label**, right-click in the label list and select `Edit`.
**To delete a label**, right-click in the label list and select `Delete`.
**To add a breakpoint to a label**, right-click in the label list and select `Add breakpoint`.
**To add the label to the watch**, right-click in the label list and select `Add to watch`.
**To find where a label is used**, right-click in the label list and select `Find Occurrences`.
**To view the code** at the label's location, double-click on the label in the list.
**Note:** Labels shown in gray color and italic font are currently not mapped in CPU memory.
### Editing Labels ###
<div class="imgBox"><div>
@ -239,7 +245,7 @@ The label list displays every label defined in alphabetical order.
Various types of labels can be defined:
- **Internal RAM**: Used for labels residing in the $0000-$1FFF memory range (the NES' built-in RAM)
- **NES RAM (2 KB)**: Used for labels residing in the $0000-$1FFF memory range (the NES' built-in RAM)
- **PRG ROM**: Used for constants, data, code labels and functions in PRG ROM - the address value represents the offset from the start of PRG ROM (which can exceed $FFFF)
- **Work RAM**: Used for variables in work ram (also called PRG RAM without battery backup) - the address value represents the offset from the start of the ram chip.
- **Save RAM**: Used for variables in work ram (also called battery-backed PRG RAM) - the address value represents the offset from the start of the ram chip.
@ -267,9 +273,37 @@ Unlike the label list, which only displays labels, the function list displays al
</div></div>
The CPU and PPU memory mappings are visual aids that display information about the currently selected PRG/CHR banks and the nametable configuration.
The banking configuration represents Mesen's internal representation of the mapper in use, which may not exactly match the mapper's specs.
For example, a mapper with 2x 8kb + 1x 16kb PRG banking is emulated as 4x 8kb internally, so it will appear as 4 8kb banks.
The banking configuration represents Mesen's internal representation of the mapper in use, which may not exactly match the mapper's specs.
For example, a mapper with 2x 8 KB + 1x 16 KB PRG banking is emulated as 4x 8 KB internally, so it will appear as four 8 KB banks.
## Other Options ##
### Display Options ###
The `Show...` submenu contains a number of options to show/hide various elements on the UI.
Specifically, the toolbar, CPU/PPU memory mappings, function/label lists, watch list, breakpoint list and the call stack window.
Additionally, two special tooltip windows can be enabled here:
* **Show Code Preview in Tooltips**: When enabled, label/address tooltips will now show a preview of the code at the target location.
* **Show OP Code Info Tooltips**: When enabled, putting the mouse over an OP code will display a tooltip containing information about the OP code and which CPU flags are affected by it.
### Break Options ###
The `Break Options` submenu contains a number of options to configure under which conditions the debugger will break (even when no breakpoint is hit).
Additionally, you can configure whether or not the debugger window gets focused when a break or pause occurs.
### Copy Options ###
These options configure which portions of the code is copied into the clipboard when copying code from the code window.
### Misc. Options ###
* **Hide Pause Icon**: When enabled, the pause icon that is normally shown whenever execution is paused will be hidden.
* **Draw Partial Frame**: When enabled, the emulator's main window will display the current partially-drawn frame instead of the last complete frame.
* **Show previous frame behind current**: When enabled along with `Draw Partial Frame`, the previous frame's data will be shown behind the current frame.
* **Refresh watch while running**: When enabled, the watch window will continuously refresh itself while the emulation is running (instead of only updating when the execution breaks)
## How To: Edit Code ##

View file

@ -0,0 +1,14 @@
---
title: Event Viewer
weight: 13
chapter: false
---
<div class="imgBox"><div>
<img src="/images/EventViewer.png" />
<span>Event Viewer</span>
</div></div>
The Event Viewer allows you to visually check the timing at which various events (register read/writes, NMIs, IRQs, etc.) occur. This can be useful when trying to perform timing-critical mid-frame changes to the PPU, or to verify that PPU updates finish before vertical blank ends, etc.
The colors can be configured and it's also possible to define [breakpoints](/debugging/debugger.html#breakpoint-configuration) as marks to be shown on the Event Viewer. This is done by enabling a breakpoint's `Mark on Event Viewer` option. This allows the event viewer to be used to display virtually any special event that needs to be tracked.

View file

@ -24,10 +24,41 @@ The memory viewer offers read and write access to all types of ROM and RAM:
* Work RAM
* Save RAM
**Note:** Only memory types that are available for the currently loaded ROM will be shown in the dropdown.
{{% notice tip %}}
PRG ROM and CHR ROM *are* writable from the memory viewer. Any change will remain in effect until a power cycle. If you want to save your PRG/CHR ROM modifications to a .nes file, or as an IPS patch, you can use the **<kbd>File&rarr;Save</kbd>** or **<kbd>File&rarr;Save edits as IPS</kbd>** commands in the [debugger window](/debugging/debugger.html).
{{% /notice %}}
### Highlighting ###
There are a number of highlighting/coloring options in the memory viewer.
<kbd>**View&rarr;Memory Access Highlighting**</kbd> has coloring options for addresses that were recently read, written or executed (colored in <span class="blue">blue</span>, <span class="red">red</span> and <span class="green">green</span>, respectively). A fade-out period can also be configured, after which the byte will revert to its normal black color.
<kbd>**View&rarr;Data Type Highlighting**</kbd> offers options to change the background color of specific bytes based on their type.</span>.
<kbd>**View&rarr;De-emphasize**</kbd> offers options to display bytes matching certain conditions (unused, read, written or executed) in <span class="gray">gray</span>.
The `Ignore writes that do not alter data` option prevents CPU writes from being highlighted when the value being written matches the one already present in memory.
**Note:** It is possible to customize the colors used by the memory viewer in <kbd>**View&rarr;Configure Colors**</kbd>
### Options ###
#### Display Options ###
* **Auto-refresh speed:** Configures the speed at which the memory view refreshes.
* **Select Font:** Allows you to select which font to use in the memory view.
* **Use high text density mode:** When enabled, the vertical space between every row is reduced, allowing more bytes to be shown on the screen at once.
* **Show characters:** When enabled, a character representation of the binary data is shown on the right. This can be combined with TBL files to find/edit in-game dialog in the memory tools.
* **Show label tooltip on mouseover:** When enabled, bytes for which a label exists will have a tooltip with the label's information.
#### Other Options ####
* **Use per-byte left/right navigation**: When enabled, pressing the left or right arrows more directly to the next byte, instead of the next nibble.
* **Use per-byte editing mode**: When enabled, it is no longer possible to select individual nibbles and a full byte's value must be written before it takes effect. (Normally, edits are applied immediately once either nibble is modified)
### Editing Memory Values ###
There are 2 ways to edit memory values:
@ -40,14 +71,6 @@ There are 2 ways to edit memory values:
For most types of memory, it is possible to export its contents to a binary file as well as import it back from a file. Use the `Import` and `Export` commands to do this.
### Highlighting ###
There are a number of highlighting/coloring options in the memory viewer.
<kbd>**View&rarr;Highlight**</kbd> has coloring options for addresses that were recently read, written or executed (colored in <span class="blue">blue</span>, <span class="red">red</span> and <span class="green">green</span>, respectively). A fade-out period can also be configured, after which the byte will revert to its normal black color.
<kbd>**View&rarr;De-emphasize**</kbd> offers options to display bytes matching certain conditions (unused, read, written or executed) in <span class="gray">gray</span>.
### Freezing values ###
Using the right-click menu, you can `Freeze` values in CPU Memory. Frozen addresses are shown in <span class="magenta">magenta</span>.

View file

@ -1,6 +1,6 @@
---
title: PPU Viewer
weight: 10
weight: 15
pre: ""
chapter: false
---
@ -26,6 +26,7 @@ There are also a number of display options:
* **Show PPU Scroll Overlay**: Shows a blue rectangular overlay showing the current scroll position of the screen.
* **Show Tile Grid**: Displays a 8x8 pixels <span class="red">red</span> grid.
* **Show Attribute Grid**: Displays a 16x16 pixels <span class="blue">blue</span> grid.
* **Use Grayscale Palette**: Forces the nametables to be shown in a 4-color grayscale palette.
* **Highlight tile selected in CHR viewer**: When enabled, click on a tile in the CHR viewer to select it, all occurrences of that tile will then be marked by a <span class="red">red</span> rectangle in the nametable viewer.
<kbd>**Double-click**</kbd> on a tile in the nametable viewer to view/edit it in the CHR Viewer.
@ -46,11 +47,11 @@ You can <kbd>**right-click**</kbd> on a tile to copy the tile's information (bas
### Display Options ###
* **Chr Selection**: Select which portion of CHR memory to display in the viewer - by default, the portions of CHR memory mapped to the $0000-$1FFF range in PPU memory are shown.
* **Palette Selection**: Selects which palette to use to render the tiles - the first 4 palettes are for tiles, the last 4 palettes are for sprites.
* **CHR Selection**: Select which portion of CHR memory to display in the viewer - by default, the portions of CHR memory mapped to the $0000-$1FFF range in PPU memory are shown.
* **Palette Selection**: Selects which palette to use to render the tiles - the first 4 palettes are for tiles, the last 4 palettes are for sprites. There is also a 9th palette named "Grayscale" which forces the CHR viewer to display tiles in a 4-color grayscale palette.
* **Highlight**: This option allows tiles to be highlighted/dimmed based on the CDL file's current data. This makes it possible to highlight/dim tiles that have never been drawn by the PPU, or vice versa. *This option is only available for CHR ROM games*.
* **Display as 16x8 sprites**: When enabled, changes the display order of the tiles to make it easier to visualize 16x8 sprites.
* **Display tiles using their last known palette**: When enabled, any tile that has appeared in nametable memory since the debugger was opened will be shown using their last known palette (this overrides the palette selection dropdown for those tiles)
### Editing Tiles ###

View file

@ -1,6 +1,6 @@
---
title: Script Window
weight: 17
weight: 16
chapter: false
---

View file

@ -1,6 +1,6 @@
---
title: Trace Logger
weight: 15
weight: 17
chapter: false
---

View file

@ -7,8 +7,10 @@ toc: false
The debugging capabilities of Mesen are split across a number of different tools, including the debugger itself:
[APU Viewer](/debugging/apuviewer.html): Displays every detail of the APU's current state for each channel.
[Assembler](/debugging/assembler.html): Allows you to edit a game's code or run custom code on-the-fly.
[Debugger](/debugging/debugger.html): View the code, add breakpoints, labels, watch values, and much more.
[Event Viewer](/debugging/eventviewer.html): Visualize the timing of a variety of events (register read/writes, nmi, irq, etc.).
[Memory Tools](/debugging/memorytools.html): Contains a hex editor and performance profiler.
[PPU Viewer](/debugging/ppuviewer.html): Displays information on the nametables, sprites, CHR banks and palette. Contains a CHR graphic editor and a palette editor.
[Script Window](/debugging/scriptwindow.html): Allows the execution of Lua scripts, which can communicate with the emulation via an API.

View file

@ -132,7 +132,7 @@ Mesen has a number of shortcut keys that you may find useful:
* <kbd>**Ctrl-L**</kbd>: Manually load a save state from a file.
* <kbd>**Alt-1 to Alt-6**</kbd>: Change the video scale.
Additionally, there are a large number of customizable [shortcut keys](/configuration/preferences#shortcut-keys) in the [preferences](/configuration/preferences.html).
The [shortcut keys](/configuration/preferences.html#shortcut-keys) can be customized in the [preferences](/configuration/preferences.html).
<div class="clear"></div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 108 KiB

View file

@ -57,10 +57,10 @@ namespace Mesen.GUI.Config
public XmlKeys OpenAssembler = Keys.Control | Keys.K;
[ShortcutName("Open Debugger")]
public XmlKeys OpenDebugger = Keys.Control | Keys.D;
[ShortcutName("Open Event Viewer")]
public XmlKeys OpenEventViewer = Keys.Control | Keys.E;
[ShortcutName("Open Memory Tools")]
public XmlKeys OpenMemoryTools = Keys.Control | Keys.M;
[ShortcutName("Open NES Event Viewer")]
public XmlKeys OpenEventViewer = Keys.Control | Keys.E;
[ShortcutName("Open PPU Viewer")]
public XmlKeys OpenPpuViewer = Keys.Control | Keys.P;
[ShortcutName("Open Script Window")]

View file

@ -158,14 +158,14 @@
this.cboPalette.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboPalette.FormattingEnabled = true;
this.cboPalette.Items.AddRange(new object[] {
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"Tile 0",
"Tile 1",
"Tile 2",
"Tile 3",
"Sprite 0",
"Sprite 1",
"Sprite 2",
"Sprite 3",
"Grayscale"});
this.cboPalette.Location = new System.Drawing.Point(52, 3);
this.cboPalette.Name = "cboPalette";
@ -213,15 +213,15 @@
this.lblChrSelection.AutoSize = true;
this.lblChrSelection.Location = new System.Drawing.Point(3, 7);
this.lblChrSelection.Name = "lblChrSelection";
this.lblChrSelection.Size = new System.Drawing.Size(73, 13);
this.lblChrSelection.Size = new System.Drawing.Size(80, 13);
this.lblChrSelection.TabIndex = 0;
this.lblChrSelection.Text = "Chr Selection:";
this.lblChrSelection.Text = "CHR Selection:";
//
// cboChrSelection
//
this.cboChrSelection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboChrSelection.FormattingEnabled = true;
this.cboChrSelection.Location = new System.Drawing.Point(82, 3);
this.cboChrSelection.Location = new System.Drawing.Point(89, 3);
this.cboChrSelection.Name = "cboChrSelection";
this.cboChrSelection.Size = new System.Drawing.Size(150, 21);
this.cboChrSelection.TabIndex = 1;
@ -453,13 +453,13 @@
this.mnuCopyHdPack,
this.mnuCopyToClipboard});
this.ctxMenu.Name = "ctxMenu";
this.ctxMenu.Size = new System.Drawing.Size(248, 48);
this.ctxMenu.Size = new System.Drawing.Size(222, 48);
this.ctxMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ctxMenu_Opening);
//
// mnuCopyHdPack
//
this.mnuCopyHdPack.Name = "mnuCopyHdPack";
this.mnuCopyHdPack.Size = new System.Drawing.Size(247, 22);
this.mnuCopyHdPack.Size = new System.Drawing.Size(221, 22);
this.mnuCopyHdPack.Text = "Copy Tile (HD Pack Format)";
this.mnuCopyHdPack.Click += new System.EventHandler(this.mnuCopyHdPack_Click);
//
@ -467,7 +467,7 @@
//
this.mnuCopyToClipboard.Image = global::Mesen.GUI.Properties.Resources.Copy;
this.mnuCopyToClipboard.Name = "mnuCopyToClipboard";
this.mnuCopyToClipboard.Size = new System.Drawing.Size(247, 22);
this.mnuCopyToClipboard.Size = new System.Drawing.Size(221, 22);
this.mnuCopyToClipboard.Text = "Copy image to clipboard";
this.mnuCopyToClipboard.Click += new System.EventHandler(this.mnuCopyToClipboard_Click);
//

View file

@ -44,7 +44,7 @@ namespace Mesen.GUI.Debugger
public partial class ctrlTextbox : Control
{
private Regex _codeRegex = new Regex("^([a-z]{3})([*]{0,1})($|[ ])+([(]{0,1})(([$][0-9a-f]*)|(#[@$:_0-9a-z]*)|([@_a-z]([@_a-z0-9])*)){0,1}([)]{0,1})(,X|,Y){0,1}([)]{0,1})(.*)", RegexOptions.IgnoreCase | RegexOptions.Compiled);
private Regex _codeRegex = new Regex("^([a-z]{3})([*]{0,1})($|[ ]){1}([(]{0,1})(([$][0-9a-f]*)|(#[@$:_0-9a-z]*)|([@_a-z]([@_a-z0-9])*)){0,1}([)]{0,1})(,X|,Y){0,1}([)]{0,1})(.*)", RegexOptions.IgnoreCase | RegexOptions.Compiled);
public event EventHandler ScrollPositionChanged;
public event EventHandler SelectedLineChanged;
private bool _disableScrollPositionChangedEvent;

View file

@ -40,8 +40,8 @@ namespace Mesen.GUI.Debugger
GetMember(nameof(DebuggerShortcutsConfig.OpenApuViewer)),
GetMember(nameof(DebuggerShortcutsConfig.OpenAssembler)),
GetMember(nameof(DebuggerShortcutsConfig.OpenDebugger)),
GetMember(nameof(DebuggerShortcutsConfig.OpenMemoryTools)),
GetMember(nameof(DebuggerShortcutsConfig.OpenEventViewer)),
GetMember(nameof(DebuggerShortcutsConfig.OpenMemoryTools)),
GetMember(nameof(DebuggerShortcutsConfig.OpenPpuViewer)),
GetMember(nameof(DebuggerShortcutsConfig.OpenScriptWindow)),
GetMember(nameof(DebuggerShortcutsConfig.OpenTraceLogger))

View file

@ -239,7 +239,7 @@ namespace Mesen.GUI.Debugger
this.splitContainer.Panel2.Controls.Add(this.tableLayoutPanel10);
this.splitContainer.Panel2MinSize = 100;
this.splitContainer.Size = new System.Drawing.Size(1075, 576);
this.splitContainer.SplitterDistance = 407;
this.splitContainer.SplitterDistance = 404;
this.splitContainer.SplitterWidth = 7;
this.splitContainer.TabIndex = 1;
this.splitContainer.TabStop = false;
@ -262,7 +262,7 @@ namespace Mesen.GUI.Debugger
//
this.ctrlSplitContainerTop.Panel2.Controls.Add(this.tlpFunctionLabelLists);
this.ctrlSplitContainerTop.Panel2MinSize = 150;
this.ctrlSplitContainerTop.Size = new System.Drawing.Size(1075, 407);
this.ctrlSplitContainerTop.Size = new System.Drawing.Size(1075, 404);
this.ctrlSplitContainerTop.SplitterDistance = 750;
this.ctrlSplitContainerTop.SplitterWidth = 7;
this.ctrlSplitContainerTop.TabIndex = 3;
@ -284,7 +284,7 @@ namespace Mesen.GUI.Debugger
this.tlpTop.Name = "tlpTop";
this.tlpTop.RowCount = 1;
this.tlpTop.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tlpTop.Size = new System.Drawing.Size(750, 407);
this.tlpTop.Size = new System.Drawing.Size(750, 404);
this.tlpTop.TabIndex = 2;
//
// ctrlConsoleStatus
@ -293,7 +293,7 @@ namespace Mesen.GUI.Debugger
this.ctrlConsoleStatus.Location = new System.Drawing.Point(292, 0);
this.ctrlConsoleStatus.Margin = new System.Windows.Forms.Padding(0);
this.ctrlConsoleStatus.Name = "ctrlConsoleStatus";
this.ctrlConsoleStatus.Size = new System.Drawing.Size(458, 407);
this.ctrlConsoleStatus.Size = new System.Drawing.Size(458, 404);
this.ctrlConsoleStatus.TabIndex = 3;
this.ctrlConsoleStatus.OnGotoLocation += new System.EventHandler(this.ctrlConsoleStatus_OnGotoLocation);
//
@ -305,7 +305,7 @@ namespace Mesen.GUI.Debugger
this.panel1.Location = new System.Drawing.Point(3, 0);
this.panel1.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(286, 407);
this.panel1.Size = new System.Drawing.Size(286, 404);
this.panel1.TabIndex = 5;
//
// ctrlSourceViewer
@ -314,7 +314,7 @@ namespace Mesen.GUI.Debugger
this.ctrlSourceViewer.Dock = System.Windows.Forms.DockStyle.Fill;
this.ctrlSourceViewer.Location = new System.Drawing.Point(0, 0);
this.ctrlSourceViewer.Name = "ctrlSourceViewer";
this.ctrlSourceViewer.Size = new System.Drawing.Size(286, 407);
this.ctrlSourceViewer.Size = new System.Drawing.Size(286, 404);
this.ctrlSourceViewer.SymbolProvider = null;
this.ctrlSourceViewer.TabIndex = 7;
this.ctrlSourceViewer.Visible = false;
@ -328,7 +328,7 @@ namespace Mesen.GUI.Debugger
this.ctrlDebuggerCode.Location = new System.Drawing.Point(0, 0);
this.ctrlDebuggerCode.Name = "ctrlDebuggerCode";
this.ctrlDebuggerCode.ShowMemoryValues = false;
this.ctrlDebuggerCode.Size = new System.Drawing.Size(286, 407);
this.ctrlDebuggerCode.Size = new System.Drawing.Size(286, 404);
this.ctrlDebuggerCode.SymbolProvider = null;
this.ctrlDebuggerCode.TabIndex = 2;
this.ctrlDebuggerCode.OnEditCode += new Mesen.GUI.Debugger.ctrlDebuggerCode.AssemblerEventHandler(this.ctrlDebuggerCode_OnEditCode);
@ -342,7 +342,7 @@ namespace Mesen.GUI.Debugger
this.panel2.Location = new System.Drawing.Point(292, 0);
this.panel2.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(1, 407);
this.panel2.Size = new System.Drawing.Size(1, 404);
this.panel2.TabIndex = 6;
//
// ctrlSourceViewerSplit
@ -351,7 +351,7 @@ namespace Mesen.GUI.Debugger
this.ctrlSourceViewerSplit.Dock = System.Windows.Forms.DockStyle.Fill;
this.ctrlSourceViewerSplit.Location = new System.Drawing.Point(0, 0);
this.ctrlSourceViewerSplit.Name = "ctrlSourceViewerSplit";
this.ctrlSourceViewerSplit.Size = new System.Drawing.Size(1, 407);
this.ctrlSourceViewerSplit.Size = new System.Drawing.Size(1, 404);
this.ctrlSourceViewerSplit.SymbolProvider = null;
this.ctrlSourceViewerSplit.TabIndex = 8;
this.ctrlSourceViewerSplit.Visible = false;
@ -365,7 +365,7 @@ namespace Mesen.GUI.Debugger
this.ctrlDebuggerCodeSplit.Location = new System.Drawing.Point(0, 0);
this.ctrlDebuggerCodeSplit.Name = "ctrlDebuggerCodeSplit";
this.ctrlDebuggerCodeSplit.ShowMemoryValues = false;
this.ctrlDebuggerCodeSplit.Size = new System.Drawing.Size(1, 407);
this.ctrlDebuggerCodeSplit.Size = new System.Drawing.Size(1, 404);
this.ctrlDebuggerCodeSplit.SymbolProvider = null;
this.ctrlDebuggerCodeSplit.TabIndex = 4;
this.ctrlDebuggerCodeSplit.Visible = false;
@ -385,16 +385,16 @@ namespace Mesen.GUI.Debugger
this.tlpFunctionLabelLists.RowCount = 2;
this.tlpFunctionLabelLists.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tlpFunctionLabelLists.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tlpFunctionLabelLists.Size = new System.Drawing.Size(318, 407);
this.tlpFunctionLabelLists.Size = new System.Drawing.Size(318, 404);
this.tlpFunctionLabelLists.TabIndex = 5;
//
// grpLabels
//
this.grpLabels.Controls.Add(this.ctrlLabelList);
this.grpLabels.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpLabels.Location = new System.Drawing.Point(3, 206);
this.grpLabels.Location = new System.Drawing.Point(3, 205);
this.grpLabels.Name = "grpLabels";
this.grpLabels.Size = new System.Drawing.Size(312, 198);
this.grpLabels.Size = new System.Drawing.Size(312, 196);
this.grpLabels.TabIndex = 6;
this.grpLabels.TabStop = false;
this.grpLabels.Text = "Labels";
@ -404,7 +404,7 @@ namespace Mesen.GUI.Debugger
this.ctrlLabelList.Dock = System.Windows.Forms.DockStyle.Fill;
this.ctrlLabelList.Location = new System.Drawing.Point(3, 16);
this.ctrlLabelList.Name = "ctrlLabelList";
this.ctrlLabelList.Size = new System.Drawing.Size(306, 179);
this.ctrlLabelList.Size = new System.Drawing.Size(306, 177);
this.ctrlLabelList.TabIndex = 0;
this.ctrlLabelList.OnFindOccurrence += new System.EventHandler(this.ctrlLabelList_OnFindOccurrence);
this.ctrlLabelList.OnLabelSelected += new System.EventHandler(this.ctrlLabelList_OnLabelSelected);
@ -415,7 +415,7 @@ namespace Mesen.GUI.Debugger
this.grpFunctions.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpFunctions.Location = new System.Drawing.Point(3, 3);
this.grpFunctions.Name = "grpFunctions";
this.grpFunctions.Size = new System.Drawing.Size(312, 197);
this.grpFunctions.Size = new System.Drawing.Size(312, 196);
this.grpFunctions.TabIndex = 5;
this.grpFunctions.TabStop = false;
this.grpFunctions.Text = "Functions";
@ -425,7 +425,7 @@ namespace Mesen.GUI.Debugger
this.ctrlFunctionList.Dock = System.Windows.Forms.DockStyle.Fill;
this.ctrlFunctionList.Location = new System.Drawing.Point(3, 16);
this.ctrlFunctionList.Name = "ctrlFunctionList";
this.ctrlFunctionList.Size = new System.Drawing.Size(306, 178);
this.ctrlFunctionList.Size = new System.Drawing.Size(306, 177);
this.ctrlFunctionList.TabIndex = 0;
this.ctrlFunctionList.OnFindOccurrence += new System.EventHandler(this.ctrlFunctionList_OnFindOccurrence);
this.ctrlFunctionList.OnFunctionSelected += new System.EventHandler(this.ctrlFunctionList_OnFunctionSelected);
@ -456,7 +456,7 @@ namespace Mesen.GUI.Debugger
this.tableLayoutPanel10.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel10.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel10.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel10.Size = new System.Drawing.Size(1075, 162);
this.tableLayoutPanel10.Size = new System.Drawing.Size(1075, 165);
this.tableLayoutPanel10.TabIndex = 0;
//
// grpWatch
@ -465,7 +465,7 @@ namespace Mesen.GUI.Debugger
this.grpWatch.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpWatch.Location = new System.Drawing.Point(3, 3);
this.grpWatch.Name = "grpWatch";
this.grpWatch.Size = new System.Drawing.Size(352, 156);
this.grpWatch.Size = new System.Drawing.Size(352, 159);
this.grpWatch.TabIndex = 2;
this.grpWatch.TabStop = false;
this.grpWatch.Text = "Watch";
@ -475,7 +475,7 @@ namespace Mesen.GUI.Debugger
this.ctrlWatch.Dock = System.Windows.Forms.DockStyle.Fill;
this.ctrlWatch.Location = new System.Drawing.Point(3, 16);
this.ctrlWatch.Name = "ctrlWatch";
this.ctrlWatch.Size = new System.Drawing.Size(346, 137);
this.ctrlWatch.Size = new System.Drawing.Size(346, 140);
this.ctrlWatch.TabIndex = 0;
//
// grpBreakpoints
@ -484,7 +484,7 @@ namespace Mesen.GUI.Debugger
this.grpBreakpoints.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpBreakpoints.Location = new System.Drawing.Point(361, 3);
this.grpBreakpoints.Name = "grpBreakpoints";
this.grpBreakpoints.Size = new System.Drawing.Size(352, 156);
this.grpBreakpoints.Size = new System.Drawing.Size(352, 159);
this.grpBreakpoints.TabIndex = 3;
this.grpBreakpoints.TabStop = false;
this.grpBreakpoints.Text = "Breakpoints";
@ -494,7 +494,7 @@ namespace Mesen.GUI.Debugger
this.ctrlBreakpoints.Dock = System.Windows.Forms.DockStyle.Fill;
this.ctrlBreakpoints.Location = new System.Drawing.Point(3, 16);
this.ctrlBreakpoints.Name = "ctrlBreakpoints";
this.ctrlBreakpoints.Size = new System.Drawing.Size(346, 137);
this.ctrlBreakpoints.Size = new System.Drawing.Size(346, 140);
this.ctrlBreakpoints.TabIndex = 0;
this.ctrlBreakpoints.BreakpointNavigation += new System.EventHandler(this.ctrlBreakpoints_BreakpointNavigation);
//
@ -504,7 +504,7 @@ namespace Mesen.GUI.Debugger
this.grpCallstack.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpCallstack.Location = new System.Drawing.Point(719, 3);
this.grpCallstack.Name = "grpCallstack";
this.grpCallstack.Size = new System.Drawing.Size(353, 156);
this.grpCallstack.Size = new System.Drawing.Size(353, 159);
this.grpCallstack.TabIndex = 4;
this.grpCallstack.TabStop = false;
this.grpCallstack.Text = "Call Stack";
@ -514,7 +514,7 @@ namespace Mesen.GUI.Debugger
this.ctrlCallstack.Dock = System.Windows.Forms.DockStyle.Fill;
this.ctrlCallstack.Location = new System.Drawing.Point(3, 16);
this.ctrlCallstack.Name = "ctrlCallstack";
this.ctrlCallstack.Size = new System.Drawing.Size(347, 137);
this.ctrlCallstack.Size = new System.Drawing.Size(347, 140);
this.ctrlCallstack.TabIndex = 0;
this.ctrlCallstack.FunctionSelected += new System.EventHandler(this.ctrlCallstack_FunctionSelected);
//
@ -1409,8 +1409,8 @@ namespace Mesen.GUI.Debugger
this.toolsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.mnuApuViewer,
this.mnuAssembler,
this.mnuMemoryViewer,
this.mnuEventViewer,
this.mnuMemoryViewer,
this.mnuPpuViewer,
this.mnuScriptWindow,
this.mnuTraceLogger,
@ -1451,7 +1451,7 @@ namespace Mesen.GUI.Debugger
this.mnuEventViewer.Image = global::Mesen.GUI.Properties.Resources.NesEventViewer;
this.mnuEventViewer.Name = "mnuEventViewer";
this.mnuEventViewer.Size = new System.Drawing.Size(171, 22);
this.mnuEventViewer.Text = "NES Event Viewer";
this.mnuEventViewer.Text = "Event Viewer";
this.mnuEventViewer.Click += new System.EventHandler(this.mnuEventViewer_Click);
//
// mnuPpuViewer

View file

@ -234,7 +234,7 @@ namespace Mesen.GUI.Debugger
mnuRunPpuCycle, mnuRunScanline, mnuRunOneFrame, null,
mnuToggleBreakpoint, mnuDisableEnableBreakpoint, null,
mnuFind, mnuFindPrev, mnuFindNext, null,
mnuApuViewer, mnuAssembler, mnuMemoryViewer, mnuEventViewer, mnuPpuViewer, mnuScriptWindow, mnuTraceLogger, null,
mnuApuViewer, mnuAssembler, mnuEventViewer, mnuMemoryViewer, mnuPpuViewer, mnuScriptWindow, mnuTraceLogger, null,
mnuEditHeader, null,
mnuSplitView, null
);

View file

@ -330,7 +330,7 @@
this.Controls.Add(this.menuStrip1);
this.MinimumSize = new System.Drawing.Size(945, 627);
this.Name = "frmEventViewer";
this.Text = "NES Event Viewer";
this.Text = "Event Viewer";
this.tabMain.ResumeLayout(false);
this.tpgPpuView.ResumeLayout(false);
this.tableLayoutPanel1.ResumeLayout(false);

View file

@ -314,7 +314,14 @@
</Enum>
<!-- Resources below are used by the debugger only - no translation is needed -->
<Enum ID="DebugMemoryType">
<Enum ID="AddressType">
<Value ID="InternalRam">NES RAM (2 KB)</Value>
<Value ID="PrgRom">PRG ROM</Value>
<Value ID="WorkRam">Work RAM</Value>
<Value ID="SaveRam">Save RAM</Value>
<Value ID="Register">Register</Value>
</Enum>
<Enum ID="DebugMemoryType">
<Value ID="CpuMemory">CPU Memory</Value>
<Value ID="PpuMemory">PPU Memory</Value>
<Value ID="PaletteMemory">Palette RAM</Value>
@ -325,7 +332,7 @@
<Value ID="ChrRam">CHR RAM</Value>
<Value ID="WorkRam">Work RAM</Value>
<Value ID="SaveRam">Save RAM</Value>
<Value ID="InternalRam">Built-in NES RAM</Value>
<Value ID="InternalRam">NES RAM (2 KB)</Value>
</Enum>
<Enum ID="AddrMode">
<Value ID="None">None</Value>

View file

@ -1472,8 +1472,8 @@ namespace Mesen.GUI.Forms
this.mnuApuViewer,
this.mnuAssembler,
this.mnuDebugDebugger,
this.mnuMemoryViewer,
this.mnuEventViewer,
this.mnuMemoryViewer,
this.mnuPpuViewer,
this.mnuScriptWindow,
this.mnuTraceLogger,
@ -1490,7 +1490,7 @@ namespace Mesen.GUI.Forms
//
this.mnuApuViewer.Image = global::Mesen.GUI.Properties.Resources.Audio;
this.mnuApuViewer.Name = "mnuApuViewer";
this.mnuApuViewer.Size = new System.Drawing.Size(165, 22);
this.mnuApuViewer.Size = new System.Drawing.Size(162, 22);
this.mnuApuViewer.Text = "APU Viewer";
this.mnuApuViewer.Click += new System.EventHandler(this.mnuApuViewer_Click);
//
@ -1498,7 +1498,7 @@ namespace Mesen.GUI.Forms
//
this.mnuAssembler.Image = global::Mesen.GUI.Properties.Resources.Chip;
this.mnuAssembler.Name = "mnuAssembler";
this.mnuAssembler.Size = new System.Drawing.Size(165, 22);
this.mnuAssembler.Size = new System.Drawing.Size(162, 22);
this.mnuAssembler.Text = "Assembler";
this.mnuAssembler.Click += new System.EventHandler(this.mnuAssembler_Click);
//
@ -1506,7 +1506,7 @@ namespace Mesen.GUI.Forms
//
this.mnuDebugDebugger.Image = global::Mesen.GUI.Properties.Resources.Bug;
this.mnuDebugDebugger.Name = "mnuDebugDebugger";
this.mnuDebugDebugger.Size = new System.Drawing.Size(165, 22);
this.mnuDebugDebugger.Size = new System.Drawing.Size(162, 22);
this.mnuDebugDebugger.Text = "Debugger";
this.mnuDebugDebugger.Click += new System.EventHandler(this.mnuDebugDebugger_Click);
//
@ -1514,7 +1514,7 @@ namespace Mesen.GUI.Forms
//
this.mnuMemoryViewer.Image = global::Mesen.GUI.Properties.Resources.CheatCode;
this.mnuMemoryViewer.Name = "mnuMemoryViewer";
this.mnuMemoryViewer.Size = new System.Drawing.Size(165, 22);
this.mnuMemoryViewer.Size = new System.Drawing.Size(162, 22);
this.mnuMemoryViewer.Text = "Memory Tools";
this.mnuMemoryViewer.Click += new System.EventHandler(this.mnuMemoryViewer_Click);
//
@ -1522,15 +1522,15 @@ namespace Mesen.GUI.Forms
//
this.mnuEventViewer.Image = global::Mesen.GUI.Properties.Resources.NesEventViewer;
this.mnuEventViewer.Name = "mnuEventViewer";
this.mnuEventViewer.Size = new System.Drawing.Size(165, 22);
this.mnuEventViewer.Text = "NES Event Viewer";
this.mnuEventViewer.Size = new System.Drawing.Size(162, 22);
this.mnuEventViewer.Text = "Event Viewer";
this.mnuEventViewer.Click += new System.EventHandler(this.mnuEventViewer_Click);
//
// mnuPpuViewer
//
this.mnuPpuViewer.Image = global::Mesen.GUI.Properties.Resources.Video;
this.mnuPpuViewer.Name = "mnuPpuViewer";
this.mnuPpuViewer.Size = new System.Drawing.Size(165, 22);
this.mnuPpuViewer.Size = new System.Drawing.Size(162, 22);
this.mnuPpuViewer.Text = "PPU Viewer";
this.mnuPpuViewer.Click += new System.EventHandler(this.mnuPpuViewer_Click);
//
@ -1538,7 +1538,7 @@ namespace Mesen.GUI.Forms
//
this.mnuScriptWindow.Image = global::Mesen.GUI.Properties.Resources.Script;
this.mnuScriptWindow.Name = "mnuScriptWindow";
this.mnuScriptWindow.Size = new System.Drawing.Size(165, 22);
this.mnuScriptWindow.Size = new System.Drawing.Size(162, 22);
this.mnuScriptWindow.Text = "Script Window";
this.mnuScriptWindow.Click += new System.EventHandler(this.mnuScriptWindow_Click);
//
@ -1546,20 +1546,20 @@ namespace Mesen.GUI.Forms
//
this.mnuTraceLogger.Image = global::Mesen.GUI.Properties.Resources.LogWindow;
this.mnuTraceLogger.Name = "mnuTraceLogger";
this.mnuTraceLogger.Size = new System.Drawing.Size(165, 22);
this.mnuTraceLogger.Size = new System.Drawing.Size(162, 22);
this.mnuTraceLogger.Text = "Trace Logger";
this.mnuTraceLogger.Click += new System.EventHandler(this.mnuTraceLogger_Click);
//
// toolStripMenuItem25
//
this.toolStripMenuItem25.Name = "toolStripMenuItem25";
this.toolStripMenuItem25.Size = new System.Drawing.Size(162, 6);
this.toolStripMenuItem25.Size = new System.Drawing.Size(159, 6);
//
// mnuEditHeader
//
this.mnuEditHeader.Image = global::Mesen.GUI.Properties.Resources.Edit;
this.mnuEditHeader.Name = "mnuEditHeader";
this.mnuEditHeader.Size = new System.Drawing.Size(165, 22);
this.mnuEditHeader.Size = new System.Drawing.Size(162, 22);
this.mnuEditHeader.Text = "Edit iNES Header";
this.mnuEditHeader.Click += new System.EventHandler(this.mnuEditHeader_Click);
//