Merge pull request #45 from mkwong98/master

Various updates
This commit is contained in:
NovaSquirrel 2021-08-15 11:58:49 -04:00 committed by GitHub
commit df1e9c9c27
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
32 changed files with 5830 additions and 4426 deletions

View file

@ -146,6 +146,12 @@ CdlRatios CodeDataLogger::GetRatios()
return ratios;
}
bool CodeDataLogger::IsNone(uint32_t absoluteAddr)
{
return _cdlData[absoluteAddr] == (uint8_t)CdlPrgFlags::None;
}
bool CodeDataLogger::IsCode(uint32_t absoluteAddr)
{
return (_cdlData[absoluteAddr] & (uint8_t)CdlPrgFlags::Code) == (uint8_t)CdlPrgFlags::Code;

View file

@ -80,6 +80,7 @@ public:
CdlRatios GetRatios();
bool IsNone(uint32_t absoluteAddr);
bool IsCode(uint32_t absoluteAddr);
bool IsJumpTarget(uint32_t absoluteAddr);
bool IsSubEntryPoint(uint32_t absoluteAddr);

View file

@ -767,6 +767,7 @@ bool Debugger::ProcessRamOperation(MemoryOperationType type, uint16_t &addr, uin
AddressTypeInfo addressInfo;
GetAbsoluteAddressAndType(addr, &addressInfo);
int32_t absoluteAddr = addressInfo.Type == AddressType::PrgRom ? addressInfo.Address : -1;
bool isUnlogged = absoluteAddr >= 0 ? _codeDataLogger->IsNone(absoluteAddr) : false;
if(addressInfo.Type == AddressType::PrgRom && addressInfo.Address >= 0 && type != MemoryOperationType::DummyRead && type != MemoryOperationType::DummyWrite && _runToCycle == -1) {
if(type == MemoryOperationType::ExecOperand) {
_codeDataLogger->SetFlag(absoluteAddr, CdlPrgFlags::Code);
@ -820,6 +821,9 @@ bool Debugger::ProcessRamOperation(MemoryOperationType type, uint16_t &addr, uin
} else if(CheckFlag(DebuggerFlags::BreakOnUnofficialOpCode) && _disassembler->IsUnofficialOpCode(value)) {
Step(1);
breakSource = BreakSource::BreakOnUnofficialOpCode;
} else if(CheckFlag(DebuggerFlags::BreakOnUnlogged) && isUnlogged && type == MemoryOperationType::ExecOpCode && absoluteAddr >= 0) {
Step(1);
breakSource = BreakSource::BreakOnUnlogged;
}
if(_runToCycle != -1) {

View file

@ -43,6 +43,7 @@ enum class DebuggerFlags
BreakOnPpu2006ScrollGlitch = 0x20000,
BreakOnBusConflict = 0x40000,
BreakOnUnlogged = 0x80000,
};
enum class BreakSource
@ -61,7 +62,8 @@ enum class BreakSource
Pause = 10,
BreakAfterSuspend = 11,
BreakOnPpu2006ScrollGlitch = 12,
BreakOnBusConflict = 13
BreakOnBusConflict = 13,
BreakOnUnlogged = 14
};
enum class AddressType

View file

@ -733,6 +733,7 @@ private:
bool _spritesEnabled = true;
uint32_t _screenRotation = 0;
uint32_t _exclusiveRefreshRate = 60;
uint32_t _exclusiveRefreshRate2 = 50;
ConsoleType _consoleType = ConsoleType::Nes;
ExpansionPortDevice _expansionDevice = ExpansionPortDevice::None;
@ -1316,6 +1317,30 @@ public:
return _exclusiveRefreshRate;
}
void SetExclusiveRefreshRate2(uint32_t refreshRate)
{
_exclusiveRefreshRate2 = refreshRate;
}
uint32_t GetExclusiveRefreshRate2()
{
return _exclusiveRefreshRate2;
}
uint32_t GetExclusiveRefreshRateByModel(NesModel m)
{
switch (m) {
case NesModel::NTSC:
return _exclusiveRefreshRate;
break;
case NesModel::PAL:
case NesModel::Dendy:
return _exclusiveRefreshRate2;
break;
}
return _exclusiveRefreshRate;
}
void SetExpansionDevice(ExpansionPortDevice expansionDevice)
{
_expansionDevice = expansionDevice;

View file

@ -90,6 +90,7 @@ struct HdPpuTileInfo : public HdTileKey
uint8_t BgColor;
uint8_t SpriteColor;
uint8_t PpuBackgroundColor;
uint32_t PaletteOffset;
uint8_t OAMIndex;
};

View file

@ -273,22 +273,24 @@ void HdPackBuilder::ProcessTile(uint32_t x, uint32_t y, uint16_t tileAddr, HdPpu
}
}
if ((x == 0 || ((tile.OffsetX & 0x07) == 0)) && (y == 0 || ((tile.OffsetY & 0x07) == 0))) {
if ((x == 0 || ((tile.OffsetX & 0x07) == 0)) && (y == 0 || (((tile.OffsetY & 0x07) == 0) && !tile.VerticalMirroring) || (((tile.OffsetY & 0x07) == 0x07) && tile.VerticalMirroring))) {
HdScreenTileInfo t;
t.IsChrRamTile = tile.IsChrRamTile;
t.PaletteColors = tile.PaletteColors;
t.ScreenX = x - tile.OffsetX;
t.ScreenY = y - tile.OffsetY - (tile.IsSpriteTile() ? 1 : 0);
memcpy(t.TileData, tile.TileData, 16);
t.TileIndex = tile.TileIndex;
t.IsNew = isNew;
if (tile.IsSpriteTile()) {
t.ScreenX = x;
t.ScreenY = y;
t.BackgroundPriority = tile.BackgroundPriority;
t.HorizontalMirroring = tile.HorizontalMirroring;
t.VerticalMirroring = tile.VerticalMirroring;
spritesOnScreen.push_back(t);
}
else {
t.ScreenX = x - tile.OffsetX;
t.ScreenY = y - tile.OffsetY;
bgTilesOnScreen.push_back(t);
}
}

View file

@ -135,6 +135,55 @@ struct HdPackBgPriorityCondition : public HdPackCondition
}
};
struct HdPackSpPalette0Condition : public HdPackCondition
{
string GetConditionName() override { return "sppalette0"; }
string ToString() override { return ""; }
bool IsExcludedFromFile() override { return true; }
bool InternalCheckCondition(HdScreenInfo* screenInfo, int x, int y, HdPpuTileInfo* tile) override
{
return tile && ((0x03 & (tile->PaletteOffset >> 2)) == 0x00);
}
};
struct HdPackSpPalette1Condition : public HdPackCondition
{
string GetConditionName() override { return "sppalette1"; }
string ToString() override { return ""; }
bool IsExcludedFromFile() override { return true; }
bool InternalCheckCondition(HdScreenInfo* screenInfo, int x, int y, HdPpuTileInfo* tile) override
{
return tile && ((0x03 & (tile->PaletteOffset >> 2)) == 0x01);
}
};
struct HdPackSpPalette2Condition : public HdPackCondition
{
string GetConditionName() override { return "sppalette2"; }
string ToString() override { return ""; }
bool IsExcludedFromFile() override { return true; }
bool InternalCheckCondition(HdScreenInfo* screenInfo, int x, int y, HdPpuTileInfo* tile) override
{
return tile && ((0x03 & (tile->PaletteOffset >> 2)) == 0x02);
}
};
struct HdPackSpPalette3Condition : public HdPackCondition
{
string GetConditionName() override { return "sppalette3"; }
string ToString() override { return ""; }
bool IsExcludedFromFile() override { return true; }
bool InternalCheckCondition(HdScreenInfo* screenInfo, int x, int y, HdPpuTileInfo* tile) override
{
return tile && ((0x03 & (tile->PaletteOffset >> 2)) == 0x03);
}
};
struct HdPackMemoryCheckCondition : public HdPackBaseMemoryCondition
{
HdPackMemoryCheckCondition() { _useCache = true; }

View file

@ -13,6 +13,15 @@
#define checkConstraint(x, y) if(!(x)) { MessageManager::Log(y); return; }
static const char windowsSlash = '\\';
static const char unixSlash = '/';
#if defined(_WIN32)
#define convertPathToNative(filepath) std::replace(filepath.begin(), filepath.end(), unixSlash, windowsSlash)
#else
#define convertPathToNative(filepath) std::replace(filepath.begin(), filepath.end(), windowsSlash, unixSlash)
#endif
#define convertPathToNativeVector(vector, idx) if (vector.size() > idx) { convertPathToNative(vector[idx]); }
HdPackLoader::HdPackLoader()
{
}
@ -165,14 +174,17 @@ bool HdPackLoader::LoadPack()
ProcessOverscanTag(tokens);
} else if(lineContent.substr(0, 5) == "<img>") {
lineContent = lineContent.substr(5);
convertPathToNative(lineContent);
if(!ProcessImgTag(lineContent)) {
return false;
}
} else if(lineContent.substr(0, 7) == "<patch>") {
tokens = StringUtilities::Split(lineContent.substr(7), ',');
convertPathToNativeVector(tokens, 0);
ProcessPatchTag(tokens);
} else if(lineContent.substr(0, 12) == "<background>") {
tokens = StringUtilities::Split(lineContent.substr(12), ',');
convertPathToNativeVector(tokens, 0);
ProcessBackgroundTag(tokens, conditions);
} else if(lineContent.substr(0, 11) == "<condition>") {
tokens = StringUtilities::Split(lineContent.substr(11), ',');
@ -186,9 +198,11 @@ bool HdPackLoader::LoadPack()
ProcessOptionTag(tokens);
} else if(lineContent.substr(0, 5) == "<bgm>") {
tokens = StringUtilities::Split(lineContent.substr(5), ',');
convertPathToNativeVector(tokens, 2);
ProcessBgmTag(tokens);
} else if(lineContent.substr(0, 5) == "<sfx>") {
tokens = StringUtilities::Split(lineContent.substr(5), ',');
convertPathToNativeVector(tokens, 2);
ProcessSfxTag(tokens);
}
}
@ -259,6 +273,38 @@ void HdPackLoader::InitializeGlobalConditions()
HdPackCondition* invBgpriority = new HdPackBgPriorityCondition();
invBgpriority->Name = "!bgpriority";
_data->Conditions.push_back(unique_ptr<HdPackCondition>(invBgpriority));
HdPackCondition* sppalette0 = new HdPackSpPalette0Condition();
sppalette0->Name = "sppalette0";
_data->Conditions.push_back(unique_ptr<HdPackCondition>(sppalette0));
HdPackCondition* invSppalette0 = new HdPackSpPalette0Condition();
invSppalette0->Name = "!sppalette0";
_data->Conditions.push_back(unique_ptr<HdPackCondition>(invSppalette0));
HdPackCondition* sppalette1 = new HdPackSpPalette1Condition();
sppalette1->Name = "sppalette1";
_data->Conditions.push_back(unique_ptr<HdPackCondition>(sppalette1));
HdPackCondition* invSppalette1 = new HdPackSpPalette1Condition();
invSppalette1->Name = "!sppalette1";
_data->Conditions.push_back(unique_ptr<HdPackCondition>(invSppalette1));
HdPackCondition* sppalette2 = new HdPackSpPalette2Condition();
sppalette2->Name = "sppalette2";
_data->Conditions.push_back(unique_ptr<HdPackCondition>(sppalette2));
HdPackCondition* invSppalette2 = new HdPackSpPalette2Condition();
invSppalette2->Name = "!sppalette2";
_data->Conditions.push_back(unique_ptr<HdPackCondition>(invSppalette2));
HdPackCondition* sppalette3 = new HdPackSpPalette3Condition();
sppalette3->Name = "sppalette3";
_data->Conditions.push_back(unique_ptr<HdPackCondition>(sppalette3));
HdPackCondition* invSppalette3 = new HdPackSpPalette3Condition();
invSppalette3->Name = "!sppalette3";
_data->Conditions.push_back(unique_ptr<HdPackCondition>(invSppalette3));
}
void HdPackLoader::ProcessOverscanTag(vector<string> &tokens)

View file

@ -96,6 +96,7 @@ void HdPpu::DrawPixel()
} else {
tileInfo.Sprite[j].SpriteColor = ReadPaletteRAM(sprite.PaletteOffset + tileInfo.Sprite[j].SpriteColorIndex);
}
tileInfo.Sprite[j].PaletteOffset = sprite.PaletteOffset;
tileInfo.Sprite[j].PpuBackgroundColor = tileInfo.Tile.PpuBackgroundColor;
tileInfo.Sprite[j].BgColorIndex = tileInfo.Tile.BgColorIndex;

View file

@ -23,7 +23,7 @@ chapter: false
**Fulscreen Resolution**: This option is shown only when exclusive fullsceen mode is enabled. It allows you to select the screen resolution that should be used when in exclusive fullscreen mode. The default resolution is the current Windows screen resolution.
**Requested Refresh Rate**: This option is shown only when exclusive fullsceen mode is enabled. It allows you to select your preferred refresh rate when running in exclusive fullscreen mode.
**Requested Refresh Rate**: This option is shown only when exclusive fullsceen mode is enabled. It allows you to select your preferred refresh rate for NTSC and PAL/Dendy when running in exclusive fullscreen mode.
**Use integer scale values when entering fullscreen mode**: By default, fullscreen mode fills the entire screen. However, this can cause non-integer scaling values to be used -- for example, in 1080p resolution, the scale becomes 4.5x. Since this can cause irregularly shaped pixels, you can use this option to use the nearest integer scale value instead (e.g 4x in this example).

View file

@ -392,6 +392,7 @@ The `Break Options` submenu contains a number of options to configure under whic
* **Break on unofficial opcodes**: Break the emulation whenever an unofficial opcode is about to execute.
* **Break on BRK**: Break the emulation whenever a BRK instruction is about to execute.
* **Break on CPU crash**: Break the emulation whenever an instruction that will cause the CPU to freeze is about to execute.
* **Break on unlogged code**: Break the emulation whenever an instruction that haven't been logged is about to execute.
<div></div>

View file

@ -113,6 +113,10 @@ A number of built-in conditions can be used to check the value of some flags:
* `hmirror`: True if the current pixel is a sprite pixel, and the sprite is mirrored horizontally.
* `vmirror`: True if the current pixel is a sprite pixel, and the sprite is mirrored vertically.
* `bgpriority`: True if the current pixel is a sprite pixel, and the sprite is marked as a background priority sprite.
* `sppalette0`: True if the current pixel is a sprite pixel, and the sprite is using the palette at address $3F10.
* `sppalette1`: True if the current pixel is a sprite pixel, and the sprite is using the palette at address $3F14.
* `sppalette2`: True if the current pixel is a sprite pixel, and the sprite is using the palette at address $3F18.
* `sppalette3`: True if the current pixel is a sprite pixel, and the sprite is using the palette at address $3F1C.
**Example:** `[hmirror]<tile>...`

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View file

@ -354,6 +354,7 @@ namespace Mesen.GUI.Config
public bool BreakOnInit = true;
public bool BreakOnPlay = false;
public bool BreakOnFirstCycle = true;
public bool BreakOnUnlogged = false;
public bool BringToFrontOnPause = false;
public bool BringToFrontOnBreak = true;

View file

@ -57,6 +57,7 @@ namespace Mesen.GUI.Config
public bool UseExclusiveFullscreen = false;
public string FullscreenResolution = "";
public VideoRefreshRates ExclusiveFullscreenRefreshRate = VideoRefreshRates._60;
public VideoRefreshRates ExclusiveFullscreenRefreshRate2 = VideoRefreshRates._50;
public bool UseCustomVsPalette = false;
public bool ShowColorIndexes = true;
@ -100,6 +101,7 @@ namespace Mesen.GUI.Config
InteropEmu.SetScreenRotation((UInt32)videoInfo.ScreenRotation);
InteropEmu.SetExclusiveRefreshRate((UInt32)videoInfo.ExclusiveFullscreenRefreshRate);
InteropEmu.SetExclusiveRefreshRate2((UInt32)videoInfo.ExclusiveFullscreenRefreshRate2);
InteropEmu.SetVideoFilter(videoInfo.VideoFilter);
InteropEmu.SetVideoResizeFilter(videoInfo.UseBilinearInterpolation ? VideoResizeFilter.Bilinear : VideoResizeFilter.NearestNeighbor);

View file

@ -64,6 +64,7 @@ namespace Mesen.GUI.Debugger.Controls
this.lblPaletteAddr = new System.Windows.Forms.Label();
this.txtTileAddress = new System.Windows.Forms.TextBox();
this.txtPaletteAddress = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.radCpuPage = new System.Windows.Forms.RadioButton();
this.label1 = new System.Windows.Forms.Label();
@ -97,7 +98,7 @@ namespace Mesen.GUI.Debugger.Controls
this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpMain.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tlpMain.Size = new System.Drawing.Size(682, 527);
this.tlpMain.Size = new System.Drawing.Size(682, 486);
this.tlpMain.TabIndex = 3;
//
// tableLayoutPanel2
@ -115,16 +116,16 @@ namespace Mesen.GUI.Debugger.Controls
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel2.Size = new System.Drawing.Size(416, 527);
this.tableLayoutPanel2.Size = new System.Drawing.Size(416, 486);
this.tableLayoutPanel2.TabIndex = 28;
//
// grpSpriteInfo
//
this.grpSpriteInfo.Controls.Add(this.tlpInfo);
this.grpSpriteInfo.Dock = System.Windows.Forms.DockStyle.Fill;
this.grpSpriteInfo.Location = new System.Drawing.Point(3, 28);
this.grpSpriteInfo.Location = new System.Drawing.Point(3, 26);
this.grpSpriteInfo.Name = "grpSpriteInfo";
this.grpSpriteInfo.Size = new System.Drawing.Size(410, 496);
this.grpSpriteInfo.Size = new System.Drawing.Size(410, 458);
this.grpSpriteInfo.TabIndex = 4;
this.grpSpriteInfo.TabStop = false;
this.grpSpriteInfo.Text = "Sprite Info";
@ -155,8 +156,9 @@ namespace Mesen.GUI.Debugger.Controls
this.tlpInfo.Controls.Add(this.lblPaletteAddr, 2, 1);
this.tlpInfo.Controls.Add(this.txtTileAddress, 3, 0);
this.tlpInfo.Controls.Add(this.txtPaletteAddress, 3, 1);
this.tlpInfo.Controls.Add(this.label2, 4, 3);
this.tlpInfo.Dock = System.Windows.Forms.DockStyle.Fill;
this.tlpInfo.Location = new System.Drawing.Point(3, 16);
this.tlpInfo.Location = new System.Drawing.Point(3, 18);
this.tlpInfo.Name = "tlpInfo";
this.tlpInfo.RowCount = 7;
this.tlpInfo.RowStyles.Add(new System.Windows.Forms.RowStyle());
@ -166,26 +168,26 @@ namespace Mesen.GUI.Debugger.Controls
this.tlpInfo.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpInfo.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tlpInfo.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tlpInfo.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F));
this.tlpInfo.Size = new System.Drawing.Size(404, 477);
this.tlpInfo.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F));
this.tlpInfo.Size = new System.Drawing.Size(404, 437);
this.tlpInfo.TabIndex = 0;
//
// txtSpriteIndex
//
this.txtSpriteIndex.BackColor = System.Drawing.SystemColors.Window;
this.txtSpriteIndex.Location = new System.Drawing.Point(75, 3);
this.txtSpriteIndex.Location = new System.Drawing.Point(74, 3);
this.txtSpriteIndex.Name = "txtSpriteIndex";
this.txtSpriteIndex.ReadOnly = true;
this.txtSpriteIndex.Size = new System.Drawing.Size(26, 20);
this.txtSpriteIndex.Size = new System.Drawing.Size(26, 22);
this.txtSpriteIndex.TabIndex = 23;
//
// lblSpriteIndex
//
this.lblSpriteIndex.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblSpriteIndex.AutoSize = true;
this.lblSpriteIndex.Location = new System.Drawing.Point(3, 6);
this.lblSpriteIndex.Location = new System.Drawing.Point(3, 8);
this.lblSpriteIndex.Name = "lblSpriteIndex";
this.lblSpriteIndex.Size = new System.Drawing.Size(66, 13);
this.lblSpriteIndex.Size = new System.Drawing.Size(65, 12);
this.lblSpriteIndex.TabIndex = 22;
this.lblSpriteIndex.Text = "Sprite Index:";
//
@ -196,10 +198,10 @@ namespace Mesen.GUI.Debugger.Controls
this.tlpInfo.SetColumnSpan(this.picPreview, 4);
this.picPreview.ContextMenuStrip = this.ctxMenu;
this.picPreview.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Default;
this.picPreview.Location = new System.Drawing.Point(76, 192);
this.picPreview.Location = new System.Drawing.Point(75, 186);
this.picPreview.Margin = new System.Windows.Forms.Padding(4);
this.picPreview.Name = "picPreview";
this.picPreview.Size = new System.Drawing.Size(258, 242);
this.picPreview.Size = new System.Drawing.Size(258, 224);
this.picPreview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.picPreview.TabIndex = 21;
this.picPreview.TabStop = false;
@ -220,14 +222,14 @@ namespace Mesen.GUI.Debugger.Controls
this.mnuCopyToClipboard,
this.mnuExportToPng});
this.ctxMenu.Name = "ctxMenu";
this.ctxMenu.Size = new System.Drawing.Size(255, 148);
this.ctxMenu.Size = new System.Drawing.Size(264, 148);
this.ctxMenu.Opening += new System.ComponentModel.CancelEventHandler(this.ctxMenu_Opening);
//
// mnuEditInMemoryViewer
//
this.mnuEditInMemoryViewer.Image = global::Mesen.GUI.Properties.Resources.CheatCode;
this.mnuEditInMemoryViewer.Name = "mnuEditInMemoryViewer";
this.mnuEditInMemoryViewer.Size = new System.Drawing.Size(254, 22);
this.mnuEditInMemoryViewer.Size = new System.Drawing.Size(263, 22);
this.mnuEditInMemoryViewer.Text = "Edit in Memory Viewer";
this.mnuEditInMemoryViewer.Click += new System.EventHandler(this.mnuEditInMemoryViewer_Click);
//
@ -236,39 +238,39 @@ namespace Mesen.GUI.Debugger.Controls
this.mnuShowInChrViewer.Image = global::Mesen.GUI.Properties.Resources.NextArrow;
this.mnuShowInChrViewer.Name = "mnuShowInChrViewer";
this.mnuShowInChrViewer.ShortcutKeyDisplayString = "Dbl-Click";
this.mnuShowInChrViewer.Size = new System.Drawing.Size(254, 22);
this.mnuShowInChrViewer.Size = new System.Drawing.Size(263, 22);
this.mnuShowInChrViewer.Text = "View in CHR viewer";
this.mnuShowInChrViewer.Click += new System.EventHandler(this.mnuShowInChrViewer_Click);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(251, 6);
this.toolStripMenuItem1.Size = new System.Drawing.Size(260, 6);
//
// mnuCopyHdPack
//
this.mnuCopyHdPack.Name = "mnuCopyHdPack";
this.mnuCopyHdPack.Size = new System.Drawing.Size(254, 22);
this.mnuCopyHdPack.Size = new System.Drawing.Size(263, 22);
this.mnuCopyHdPack.Text = "Copy Tile (HD Pack Format)";
this.mnuCopyHdPack.Click += new System.EventHandler(this.mnuCopyHdPack_Click);
//
// mnuCopyAllSpritesHdPack
//
this.mnuCopyAllSpritesHdPack.Name = "mnuCopyAllSpritesHdPack";
this.mnuCopyAllSpritesHdPack.Size = new System.Drawing.Size(254, 22);
this.mnuCopyAllSpritesHdPack.Size = new System.Drawing.Size(263, 22);
this.mnuCopyAllSpritesHdPack.Text = "Copy All Sprites (HD Pack Format)";
this.mnuCopyAllSpritesHdPack.Click += new System.EventHandler(this.mnuCopyAllSpritesHdPack_Click);
//
// toolStripMenuItem2
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(251, 6);
this.toolStripMenuItem2.Size = new System.Drawing.Size(260, 6);
//
// mnuCopyToClipboard
//
this.mnuCopyToClipboard.Image = global::Mesen.GUI.Properties.Resources.Copy;
this.mnuCopyToClipboard.Name = "mnuCopyToClipboard";
this.mnuCopyToClipboard.Size = new System.Drawing.Size(254, 22);
this.mnuCopyToClipboard.Size = new System.Drawing.Size(263, 22);
this.mnuCopyToClipboard.Text = "Copy image to clipboard";
this.mnuCopyToClipboard.Click += new System.EventHandler(this.mnuCopyToClipboard_Click);
//
@ -276,17 +278,17 @@ namespace Mesen.GUI.Debugger.Controls
//
this.mnuExportToPng.Image = global::Mesen.GUI.Properties.Resources.Export;
this.mnuExportToPng.Name = "mnuExportToPng";
this.mnuExportToPng.Size = new System.Drawing.Size(254, 22);
this.mnuExportToPng.Size = new System.Drawing.Size(263, 22);
this.mnuExportToPng.Text = "Export image to PNG";
this.mnuExportToPng.Click += new System.EventHandler(this.mnuExportToPng_Click);
//
// lblScreenPreview
//
this.lblScreenPreview.AutoSize = true;
this.lblScreenPreview.Location = new System.Drawing.Point(3, 193);
this.lblScreenPreview.Location = new System.Drawing.Point(3, 187);
this.lblScreenPreview.Margin = new System.Windows.Forms.Padding(3, 5, 3, 0);
this.lblScreenPreview.Name = "lblScreenPreview";
this.lblScreenPreview.Size = new System.Drawing.Size(48, 13);
this.lblScreenPreview.Size = new System.Drawing.Size(45, 12);
this.lblScreenPreview.TabIndex = 20;
this.lblScreenPreview.Text = "Preview:";
//
@ -294,28 +296,28 @@ namespace Mesen.GUI.Debugger.Controls
//
this.lblTileIndex.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblTileIndex.AutoSize = true;
this.lblTileIndex.Location = new System.Drawing.Point(3, 32);
this.lblTileIndex.Location = new System.Drawing.Point(3, 36);
this.lblTileIndex.Name = "lblTileIndex";
this.lblTileIndex.Size = new System.Drawing.Size(56, 13);
this.lblTileIndex.Size = new System.Drawing.Size(56, 12);
this.lblTileIndex.TabIndex = 0;
this.lblTileIndex.Text = "Tile Index:";
//
// txtTileIndex
//
this.txtTileIndex.BackColor = System.Drawing.SystemColors.Window;
this.txtTileIndex.Location = new System.Drawing.Point(75, 29);
this.txtTileIndex.Location = new System.Drawing.Point(74, 31);
this.txtTileIndex.Name = "txtTileIndex";
this.txtTileIndex.ReadOnly = true;
this.txtTileIndex.Size = new System.Drawing.Size(26, 20);
this.txtTileIndex.Size = new System.Drawing.Size(26, 22);
this.txtTileIndex.TabIndex = 7;
//
// lblTile
//
this.lblTile.AutoSize = true;
this.lblTile.Location = new System.Drawing.Point(3, 57);
this.lblTile.Location = new System.Drawing.Point(3, 61);
this.lblTile.Margin = new System.Windows.Forms.Padding(3, 5, 3, 0);
this.lblTile.Name = "lblTile";
this.lblTile.Size = new System.Drawing.Size(27, 13);
this.lblTile.Size = new System.Drawing.Size(26, 12);
this.lblTile.TabIndex = 6;
this.lblTile.Text = "Tile:";
//
@ -323,10 +325,10 @@ namespace Mesen.GUI.Debugger.Controls
//
this.picTile.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
this.picTile.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.picTile.Location = new System.Drawing.Point(75, 55);
this.picTile.Location = new System.Drawing.Point(74, 59);
this.picTile.Name = "picTile";
this.tlpInfo.SetRowSpan(this.picTile, 3);
this.picTile.Size = new System.Drawing.Size(66, 130);
this.picTile.Size = new System.Drawing.Size(66, 120);
this.picTile.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.picTile.TabIndex = 12;
this.picTile.TabStop = false;
@ -335,9 +337,9 @@ namespace Mesen.GUI.Debugger.Controls
//
this.chkDisplaySpriteOutlines.AutoSize = true;
this.tlpInfo.SetColumnSpan(this.chkDisplaySpriteOutlines, 4);
this.chkDisplaySpriteOutlines.Location = new System.Drawing.Point(3, 441);
this.chkDisplaySpriteOutlines.Location = new System.Drawing.Point(3, 417);
this.chkDisplaySpriteOutlines.Name = "chkDisplaySpriteOutlines";
this.chkDisplaySpriteOutlines.Size = new System.Drawing.Size(227, 17);
this.chkDisplaySpriteOutlines.Size = new System.Drawing.Size(228, 16);
this.chkDisplaySpriteOutlines.TabIndex = 27;
this.chkDisplaySpriteOutlines.Text = "Display outline around all sprites in preview";
this.chkDisplaySpriteOutlines.UseVisualStyleBackColor = true;
@ -353,7 +355,7 @@ namespace Mesen.GUI.Debugger.Controls
this.tableLayoutPanel1.Controls.Add(this.chkHorizontalMirroring, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.chkVerticalMirroring, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.chkBackgroundPriority, 0, 2);
this.tableLayoutPanel1.Location = new System.Drawing.Point(144, 118);
this.tableLayoutPanel1.Location = new System.Drawing.Point(143, 121);
this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.Padding = new System.Windows.Forms.Padding(3);
@ -361,7 +363,7 @@ namespace Mesen.GUI.Debugger.Controls
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.Size = new System.Drawing.Size(130, 57);
this.tableLayoutPanel1.Size = new System.Drawing.Size(132, 54);
this.tableLayoutPanel1.TabIndex = 24;
//
// chkHorizontalMirroring
@ -371,7 +373,7 @@ namespace Mesen.GUI.Debugger.Controls
this.chkHorizontalMirroring.Location = new System.Drawing.Point(6, 3);
this.chkHorizontalMirroring.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
this.chkHorizontalMirroring.Name = "chkHorizontalMirroring";
this.chkHorizontalMirroring.Size = new System.Drawing.Size(89, 17);
this.chkHorizontalMirroring.Size = new System.Drawing.Size(92, 16);
this.chkHorizontalMirroring.TabIndex = 13;
this.chkHorizontalMirroring.Text = "Horizontal flip";
this.chkHorizontalMirroring.UseVisualStyleBackColor = true;
@ -380,10 +382,10 @@ namespace Mesen.GUI.Debugger.Controls
//
this.chkVerticalMirroring.AutoCheck = false;
this.chkVerticalMirroring.AutoSize = true;
this.chkVerticalMirroring.Location = new System.Drawing.Point(6, 20);
this.chkVerticalMirroring.Location = new System.Drawing.Point(6, 19);
this.chkVerticalMirroring.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
this.chkVerticalMirroring.Name = "chkVerticalMirroring";
this.chkVerticalMirroring.Size = new System.Drawing.Size(77, 17);
this.chkVerticalMirroring.Size = new System.Drawing.Size(79, 16);
this.chkVerticalMirroring.TabIndex = 14;
this.chkVerticalMirroring.Text = "Vertical flip";
this.chkVerticalMirroring.UseVisualStyleBackColor = true;
@ -392,10 +394,10 @@ namespace Mesen.GUI.Debugger.Controls
//
this.chkBackgroundPriority.AutoCheck = false;
this.chkBackgroundPriority.AutoSize = true;
this.chkBackgroundPriority.Location = new System.Drawing.Point(6, 37);
this.chkBackgroundPriority.Location = new System.Drawing.Point(6, 35);
this.chkBackgroundPriority.Margin = new System.Windows.Forms.Padding(3, 0, 3, 0);
this.chkBackgroundPriority.Name = "chkBackgroundPriority";
this.chkBackgroundPriority.Size = new System.Drawing.Size(118, 17);
this.chkBackgroundPriority.Size = new System.Drawing.Size(120, 16);
this.chkBackgroundPriority.TabIndex = 19;
this.chkBackgroundPriority.Text = "Background Priority";
this.chkBackgroundPriority.UseVisualStyleBackColor = true;
@ -404,9 +406,9 @@ namespace Mesen.GUI.Debugger.Controls
//
this.lblPosition.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblPosition.AutoSize = true;
this.lblPosition.Location = new System.Drawing.Point(147, 98);
this.lblPosition.Location = new System.Drawing.Point(146, 101);
this.lblPosition.Name = "lblPosition";
this.lblPosition.Size = new System.Drawing.Size(73, 13);
this.lblPosition.Size = new System.Drawing.Size(75, 12);
this.lblPosition.TabIndex = 16;
this.lblPosition.Text = "Position (X,Y):";
//
@ -414,20 +416,20 @@ namespace Mesen.GUI.Debugger.Controls
//
this.lblPalette.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblPalette.AutoSize = true;
this.lblPalette.Location = new System.Drawing.Point(147, 68);
this.lblPalette.Location = new System.Drawing.Point(146, 71);
this.lblPalette.Margin = new System.Windows.Forms.Padding(3, 5, 3, 0);
this.lblPalette.Name = "lblPalette";
this.lblPalette.Size = new System.Drawing.Size(43, 13);
this.lblPalette.Size = new System.Drawing.Size(38, 12);
this.lblPalette.TabIndex = 26;
this.lblPalette.Text = "Palette:";
//
// txtPosition
//
this.txtPosition.BackColor = System.Drawing.SystemColors.Window;
this.txtPosition.Location = new System.Drawing.Point(237, 95);
this.txtPosition.Location = new System.Drawing.Point(230, 96);
this.txtPosition.Name = "txtPosition";
this.txtPosition.ReadOnly = true;
this.txtPosition.Size = new System.Drawing.Size(66, 20);
this.txtPosition.Size = new System.Drawing.Size(66, 22);
this.txtPosition.TabIndex = 18;
//
// ctrlTilePalette
@ -436,18 +438,18 @@ namespace Mesen.GUI.Debugger.Controls
this.tlpInfo.SetColumnSpan(this.ctrlTilePalette, 2);
this.ctrlTilePalette.DisplayIndexes = false;
this.ctrlTilePalette.HighlightMouseOver = false;
this.ctrlTilePalette.Location = new System.Drawing.Point(237, 55);
this.ctrlTilePalette.Location = new System.Drawing.Point(230, 59);
this.ctrlTilePalette.Name = "ctrlTilePalette";
this.ctrlTilePalette.Size = new System.Drawing.Size(130, 34);
this.ctrlTilePalette.Size = new System.Drawing.Size(130, 31);
this.ctrlTilePalette.TabIndex = 25;
//
// lblTileAddress
//
this.lblTileAddress.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblTileAddress.AutoSize = true;
this.lblTileAddress.Location = new System.Drawing.Point(147, 6);
this.lblTileAddress.Location = new System.Drawing.Point(146, 8);
this.lblTileAddress.Name = "lblTileAddress";
this.lblTileAddress.Size = new System.Drawing.Size(68, 13);
this.lblTileAddress.Size = new System.Drawing.Size(66, 12);
this.lblTileAddress.TabIndex = 1;
this.lblTileAddress.Text = "Tile Address:";
//
@ -455,30 +457,40 @@ namespace Mesen.GUI.Debugger.Controls
//
this.lblPaletteAddr.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.lblPaletteAddr.AutoSize = true;
this.lblPaletteAddr.Location = new System.Drawing.Point(147, 32);
this.lblPaletteAddr.Location = new System.Drawing.Point(146, 36);
this.lblPaletteAddr.Name = "lblPaletteAddr";
this.lblPaletteAddr.Size = new System.Drawing.Size(84, 13);
this.lblPaletteAddr.Size = new System.Drawing.Size(78, 12);
this.lblPaletteAddr.TabIndex = 15;
this.lblPaletteAddr.Text = "Palette Address:";
//
// txtTileAddress
//
this.txtTileAddress.BackColor = System.Drawing.SystemColors.Window;
this.txtTileAddress.Location = new System.Drawing.Point(237, 3);
this.txtTileAddress.Location = new System.Drawing.Point(230, 3);
this.txtTileAddress.Name = "txtTileAddress";
this.txtTileAddress.ReadOnly = true;
this.txtTileAddress.Size = new System.Drawing.Size(42, 20);
this.txtTileAddress.Size = new System.Drawing.Size(42, 22);
this.txtTileAddress.TabIndex = 8;
//
// txtPaletteAddress
//
this.txtPaletteAddress.BackColor = System.Drawing.SystemColors.Window;
this.txtPaletteAddress.Location = new System.Drawing.Point(237, 29);
this.txtPaletteAddress.Location = new System.Drawing.Point(230, 31);
this.txtPaletteAddress.Name = "txtPaletteAddress";
this.txtPaletteAddress.ReadOnly = true;
this.txtPaletteAddress.Size = new System.Drawing.Size(42, 20);
this.txtPaletteAddress.Size = new System.Drawing.Size(42, 22);
this.txtPaletteAddress.TabIndex = 17;
//
// label2
//
this.label2.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(302, 101);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(88, 12);
this.label2.TabIndex = 28;
this.label2.Text = "(Y = OAM[0] +1)";
//
// tableLayoutPanel3
//
this.tableLayoutPanel3.ColumnCount = 5;
@ -497,15 +509,15 @@ namespace Mesen.GUI.Debugger.Controls
this.tableLayoutPanel3.Name = "tableLayoutPanel3";
this.tableLayoutPanel3.RowCount = 1;
this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel3.Size = new System.Drawing.Size(416, 25);
this.tableLayoutPanel3.Size = new System.Drawing.Size(416, 23);
this.tableLayoutPanel3.TabIndex = 5;
//
// radCpuPage
//
this.radCpuPage.AutoSize = true;
this.radCpuPage.Location = new System.Drawing.Point(164, 3);
this.radCpuPage.Location = new System.Drawing.Point(158, 3);
this.radCpuPage.Name = "radCpuPage";
this.radCpuPage.Size = new System.Drawing.Size(85, 17);
this.radCpuPage.Size = new System.Drawing.Size(79, 16);
this.radCpuPage.TabIndex = 2;
this.radCpuPage.Text = "CPU Page #";
this.radCpuPage.UseVisualStyleBackColor = true;
@ -514,9 +526,9 @@ namespace Mesen.GUI.Debugger.Controls
//
this.label1.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(3, 6);
this.label1.Location = new System.Drawing.Point(3, 5);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(70, 13);
this.label1.Size = new System.Drawing.Size(64, 12);
this.label1.TabIndex = 0;
this.label1.Text = "Data Source:";
//
@ -524,9 +536,9 @@ namespace Mesen.GUI.Debugger.Controls
//
this.radSpriteRam.AutoSize = true;
this.radSpriteRam.Checked = true;
this.radSpriteRam.Location = new System.Drawing.Point(79, 3);
this.radSpriteRam.Location = new System.Drawing.Point(73, 3);
this.radSpriteRam.Name = "radSpriteRam";
this.radSpriteRam.Size = new System.Drawing.Size(79, 17);
this.radSpriteRam.Size = new System.Drawing.Size(79, 16);
this.radSpriteRam.TabIndex = 1;
this.radSpriteRam.TabStop = true;
this.radSpriteRam.Text = "Sprite RAM";
@ -535,14 +547,14 @@ namespace Mesen.GUI.Debugger.Controls
// nudCpuPage
//
this.nudCpuPage.Hexadecimal = true;
this.nudCpuPage.Location = new System.Drawing.Point(255, 3);
this.nudCpuPage.Location = new System.Drawing.Point(243, 3);
this.nudCpuPage.Maximum = new decimal(new int[] {
255,
0,
0,
0});
this.nudCpuPage.Name = "nudCpuPage";
this.nudCpuPage.Size = new System.Drawing.Size(42, 20);
this.nudCpuPage.Size = new System.Drawing.Size(42, 22);
this.nudCpuPage.TabIndex = 3;
this.nudCpuPage.Click += new System.EventHandler(this.nudCpuPage_Click);
//
@ -555,7 +567,7 @@ namespace Mesen.GUI.Debugger.Controls
this.picSprites.Margin = new System.Windows.Forms.Padding(4);
this.picSprites.Name = "picSprites";
this.tlpMain.SetRowSpan(this.picSprites, 2);
this.picSprites.Size = new System.Drawing.Size(258, 514);
this.picSprites.Size = new System.Drawing.Size(258, 475);
this.picSprites.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.picSprites.TabIndex = 0;
this.picSprites.TabStop = false;
@ -566,11 +578,11 @@ namespace Mesen.GUI.Debugger.Controls
//
// ctrlSpriteViewer
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.tlpMain);
this.Name = "ctrlSpriteViewer";
this.Size = new System.Drawing.Size(682, 527);
this.Size = new System.Drawing.Size(682, 486);
this.tlpMain.ResumeLayout(false);
this.tableLayoutPanel2.ResumeLayout(false);
this.grpSpriteInfo.ResumeLayout(false);
@ -631,5 +643,6 @@ namespace Mesen.GUI.Debugger.Controls
private System.Windows.Forms.Label label1;
private System.Windows.Forms.RadioButton radSpriteRam;
private System.Windows.Forms.NumericUpDown nudCpuPage;
private System.Windows.Forms.Label label2;
}
}

View file

@ -319,7 +319,7 @@ namespace Mesen.GUI.Debugger.Controls
_forceRefresh = false;
_selectedSprite = ramAddr / 4;
int spriteY = _spriteRam[ramAddr];
int spriteY = _spriteRam[ramAddr] + 1;
int tileIndex = _spriteRam[ramAddr + 1];
int attributes = _spriteRam[ramAddr + 2];
int spriteX = _spriteRam[ramAddr + 3];

File diff suppressed because it is too large Load diff

View file

@ -108,6 +108,7 @@ namespace Mesen.GUI.Debugger
this.mnuBreakOnPlay.Checked = ConfigManager.Config.DebugInfo.BreakOnPlay;
this.mnuBreakOnOpen.Checked = ConfigManager.Config.DebugInfo.BreakOnOpen;
this.mnuBreakOnUnofficialOpcodes.Checked = ConfigManager.Config.DebugInfo.BreakOnUnofficialOpcodes;
this.mnuBreakOnUnlogged.Checked = ConfigManager.Config.DebugInfo.BreakOnUnlogged;
this.mnuBreakOnBrk.Checked = ConfigManager.Config.DebugInfo.BreakOnBrk;
this.mnuBreakOnUninitMemoryRead.Checked = ConfigManager.Config.DebugInfo.BreakOnUninitMemoryRead;
this.mnuBreakOnBusConflict.Checked = ConfigManager.Config.DebugInfo.BreakOnBusConflict;
@ -426,6 +427,7 @@ namespace Mesen.GUI.Debugger
SetFlag(DebuggerFlags.ShowVerifiedData, config.ShowVerifiedData);
SetFlag(DebuggerFlags.ShowUnidentifiedData, config.ShowUnidentifiedData);
SetFlag(DebuggerFlags.BreakOnUnofficialOpCode, config.BreakOnUnofficialOpcodes);
SetFlag(DebuggerFlags.BreakOnUnlogged, config.BreakOnUnlogged);
SetFlag(DebuggerFlags.BreakOnBrk, config.BreakOnBrk);
SetFlag(DebuggerFlags.BreakOnUninitMemoryRead, config.BreakOnUninitMemoryRead);
SetFlag(DebuggerFlags.BreakOnDecayedOamRead, config.BreakOnDecayedOamRead);
@ -1178,6 +1180,13 @@ namespace Mesen.GUI.Debugger
UpdateDebuggerFlags();
}
private void mnuBreakOnUnlogged_Click(object sender, EventArgs e)
{
ConfigManager.Config.DebugInfo.BreakOnUnlogged = mnuBreakOnUnlogged.Checked;
ConfigManager.ApplyChanges();
UpdateDebuggerFlags();
}
private void mnuBreakOnBrk_Click(object sender, EventArgs e)
{
ConfigManager.Config.DebugInfo.BreakOnBrk = mnuBreakOnBrk.Checked;

View file

@ -121,12 +121,12 @@
<value>17, 17</value>
</metadata>
<metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>107, 17</value>
<value>110, 17</value>
</metadata>
<metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>215, 17</value>
<value>222, 17</value>
</metadata>
<metadata name="tsToolbar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>324, 17</value>
<value>335, 17</value>
</metadata>
</root>

View file

@ -244,7 +244,8 @@
<Control ID="chkUseHdPacks">Fes servir els paquets d'alta resolució d'HDNes</Control>
<Control ID="chkUseExclusiveFullscreen">Fes servir el mode de pantalla completa exclusiva</Control>
<Control ID="lblFullscreenResolution">Fullscreen Resolution:</Control>
<Control ID="lblRequestedRefreshRate">Requested Refresh Rate:</Control>
<Control ID="lblRequestedRefreshRate">Requested Refresh Rate NTSC:</Control>
<Control ID="lblRequestedRefreshRate2">PAL / Dendy:</Control>
<Control ID="tpgOverscan">Sobreescaneig</Control>
<Control ID="tpgOverscanGlobal">Global</Control>
<Control ID="tpgOverscanGameSpecific">Game-Specific</Control>

View file

@ -244,7 +244,8 @@
<Control ID="chkUseHdPacks">Use HDNes HD packs</Control>
<Control ID="chkUseExclusiveFullscreen">Use exclusive fullscreen mode</Control>
<Control ID="lblFullscreenResolution">Fullscreen Resolution:</Control>
<Control ID="lblRequestedRefreshRate">Requested Refresh Rate:</Control>
<Control ID="lblRequestedRefreshRate">Requested Refresh Rate NTSC:</Control>
<Control ID="lblRequestedRefreshRate2">PAL / Dendy:</Control>
<Control ID="tpgOverscan">Overscan</Control>
<Control ID="tpgOverscanGlobal">Global</Control>
<Control ID="tpgOverscanGameSpecific">Game-Specific</Control>
@ -1361,6 +1362,7 @@
<Value ID="PpuStep">PPU Step</Value>
<Value ID="BreakOnBrk">BRK</Value>
<Value ID="BreakOnUnofficialOpCode">Unofficial OP code</Value>
<Value ID="BreakOnUnlogged">Unlogged code</Value>
<Value ID="BreakOnReset">Reset event</Value>
<Value ID="BreakOnFocus">Debugger focused</Value>
<Value ID="BreakOnUninitMemoryRead">Uninitialized memory read</Value>

View file

@ -53,6 +53,8 @@ namespace Mesen.GUI.Forms.Config
this.flpRefreshRate = new System.Windows.Forms.FlowLayoutPanel();
this.lblRequestedRefreshRate = new System.Windows.Forms.Label();
this.cboRefreshRate = new System.Windows.Forms.ComboBox();
this.lblRequestedRefreshRate2 = new System.Windows.Forms.Label();
this.cboRefreshRate2 = new System.Windows.Forms.ComboBox();
this.tabMain = new System.Windows.Forms.TabControl();
this.tpgGeneral = new System.Windows.Forms.TabPage();
this.tpgPicture = new System.Windows.Forms.TabPage();
@ -384,6 +386,7 @@ namespace Mesen.GUI.Forms.Config
0,
0,
0});
this.nudScale.IsHex = false;
this.nudScale.Location = new System.Drawing.Point(77, 0);
this.nudScale.Margin = new System.Windows.Forms.Padding(0);
this.nudScale.Maximum = new decimal(new int[] {
@ -455,6 +458,7 @@ namespace Mesen.GUI.Forms.Config
0,
0,
65536});
this.nudCustomRatio.IsHex = false;
this.nudCustomRatio.Location = new System.Drawing.Point(285, 3);
this.nudCustomRatio.Margin = new System.Windows.Forms.Padding(0);
this.nudCustomRatio.Maximum = new decimal(new int[] {
@ -520,6 +524,8 @@ namespace Mesen.GUI.Forms.Config
this.tlpMain.SetColumnSpan(this.flpRefreshRate, 2);
this.flpRefreshRate.Controls.Add(this.lblRequestedRefreshRate);
this.flpRefreshRate.Controls.Add(this.cboRefreshRate);
this.flpRefreshRate.Controls.Add(this.lblRequestedRefreshRate2);
this.flpRefreshRate.Controls.Add(this.cboRefreshRate2);
this.flpRefreshRate.Dock = System.Windows.Forms.DockStyle.Fill;
this.flpRefreshRate.Location = new System.Drawing.Point(30, 143);
this.flpRefreshRate.Margin = new System.Windows.Forms.Padding(30, 0, 0, 0);
@ -534,19 +540,38 @@ namespace Mesen.GUI.Forms.Config
this.lblRequestedRefreshRate.AutoSize = true;
this.lblRequestedRefreshRate.Location = new System.Drawing.Point(3, 7);
this.lblRequestedRefreshRate.Name = "lblRequestedRefreshRate";
this.lblRequestedRefreshRate.Size = new System.Drawing.Size(128, 13);
this.lblRequestedRefreshRate.Size = new System.Drawing.Size(160, 13);
this.lblRequestedRefreshRate.TabIndex = 17;
this.lblRequestedRefreshRate.Text = "Requested Refresh Rate:";
this.lblRequestedRefreshRate.Text = "Requested Refresh Rate NTSC:";
//
// cboRefreshRate
//
this.cboRefreshRate.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboRefreshRate.FormattingEnabled = true;
this.cboRefreshRate.Location = new System.Drawing.Point(137, 3);
this.cboRefreshRate.Location = new System.Drawing.Point(169, 3);
this.cboRefreshRate.Name = "cboRefreshRate";
this.cboRefreshRate.Size = new System.Drawing.Size(68, 21);
this.cboRefreshRate.TabIndex = 25;
//
// lblRequestedRefreshRate2
//
this.lblRequestedRefreshRate2.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.lblRequestedRefreshRate2.AutoSize = true;
this.lblRequestedRefreshRate2.Location = new System.Drawing.Point(243, 7);
this.lblRequestedRefreshRate2.Name = "lblRequestedRefreshRate2";
this.lblRequestedRefreshRate2.Size = new System.Drawing.Size(72, 13);
this.lblRequestedRefreshRate2.TabIndex = 26;
this.lblRequestedRefreshRate2.Text = "PAL / Dendy:";
//
// cboRefreshRate2
//
this.cboRefreshRate2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cboRefreshRate2.FormattingEnabled = true;
this.cboRefreshRate2.Location = new System.Drawing.Point(321, 3);
this.cboRefreshRate2.Name = "cboRefreshRate2";
this.cboRefreshRate2.Size = new System.Drawing.Size(68, 21);
this.cboRefreshRate2.TabIndex = 27;
//
// tabMain
//
this.tabMain.Controls.Add(this.tpgGeneral);
@ -1149,6 +1174,7 @@ namespace Mesen.GUI.Forms.Config
0,
0,
0});
this.nudOverscanTop.IsHex = false;
this.nudOverscanTop.Location = new System.Drawing.Point(110, 37);
this.nudOverscanTop.Margin = new System.Windows.Forms.Padding(0);
this.nudOverscanTop.Maximum = new decimal(new int[] {
@ -1208,6 +1234,7 @@ namespace Mesen.GUI.Forms.Config
0,
0,
0});
this.nudOverscanBottom.IsHex = false;
this.nudOverscanBottom.Location = new System.Drawing.Point(110, 13);
this.nudOverscanBottom.Margin = new System.Windows.Forms.Padding(0);
this.nudOverscanBottom.Maximum = new decimal(new int[] {
@ -1271,6 +1298,7 @@ namespace Mesen.GUI.Forms.Config
0,
0,
0});
this.nudOverscanRight.IsHex = false;
this.nudOverscanRight.Location = new System.Drawing.Point(0, 119);
this.nudOverscanRight.Margin = new System.Windows.Forms.Padding(0);
this.nudOverscanRight.Maximum = new decimal(new int[] {
@ -1334,6 +1362,7 @@ namespace Mesen.GUI.Forms.Config
0,
0,
0});
this.nudOverscanLeft.IsHex = false;
this.nudOverscanLeft.Location = new System.Drawing.Point(81, 119);
this.nudOverscanLeft.Margin = new System.Windows.Forms.Padding(0);
this.nudOverscanLeft.Maximum = new decimal(new int[] {
@ -1449,6 +1478,7 @@ namespace Mesen.GUI.Forms.Config
0,
0,
0});
this.nudGameSpecificOverscanTop.IsHex = false;
this.nudGameSpecificOverscanTop.Location = new System.Drawing.Point(110, 27);
this.nudGameSpecificOverscanTop.Margin = new System.Windows.Forms.Padding(0);
this.nudGameSpecificOverscanTop.Maximum = new decimal(new int[] {
@ -1507,6 +1537,7 @@ namespace Mesen.GUI.Forms.Config
0,
0,
0});
this.nudGameSpecificOverscanBottom.IsHex = false;
this.nudGameSpecificOverscanBottom.Location = new System.Drawing.Point(110, 13);
this.nudGameSpecificOverscanBottom.Margin = new System.Windows.Forms.Padding(0);
this.nudGameSpecificOverscanBottom.Maximum = new decimal(new int[] {
@ -1569,6 +1600,7 @@ namespace Mesen.GUI.Forms.Config
0,
0,
0});
this.nudGameSpecificOverscanRight.IsHex = false;
this.nudGameSpecificOverscanRight.Location = new System.Drawing.Point(0, 119);
this.nudGameSpecificOverscanRight.Margin = new System.Windows.Forms.Padding(0);
this.nudGameSpecificOverscanRight.Maximum = new decimal(new int[] {
@ -1631,6 +1663,7 @@ namespace Mesen.GUI.Forms.Config
0,
0,
0});
this.nudGameSpecificOverscanLeft.IsHex = false;
this.nudGameSpecificOverscanLeft.Location = new System.Drawing.Point(78, 119);
this.nudGameSpecificOverscanLeft.Margin = new System.Windows.Forms.Padding(0);
this.nudGameSpecificOverscanLeft.Maximum = new decimal(new int[] {
@ -1943,33 +1976,33 @@ namespace Mesen.GUI.Forms.Config
this.mnuPresetRgb,
this.mnuPresetMonochrome});
this.contextPicturePresets.Name = "contextPicturePresets";
this.contextPicturePresets.Size = new System.Drawing.Size(148, 92);
this.contextPicturePresets.Size = new System.Drawing.Size(153, 92);
//
// mnuPresetComposite
//
this.mnuPresetComposite.Name = "mnuPresetComposite";
this.mnuPresetComposite.Size = new System.Drawing.Size(147, 22);
this.mnuPresetComposite.Size = new System.Drawing.Size(152, 22);
this.mnuPresetComposite.Text = "Composite";
this.mnuPresetComposite.Click += new System.EventHandler(this.mnuPresetComposite_Click);
//
// mnuPresetSVideo
//
this.mnuPresetSVideo.Name = "mnuPresetSVideo";
this.mnuPresetSVideo.Size = new System.Drawing.Size(147, 22);
this.mnuPresetSVideo.Size = new System.Drawing.Size(152, 22);
this.mnuPresetSVideo.Text = "S-Video";
this.mnuPresetSVideo.Click += new System.EventHandler(this.mnuPresetSVideo_Click);
//
// mnuPresetRgb
//
this.mnuPresetRgb.Name = "mnuPresetRgb";
this.mnuPresetRgb.Size = new System.Drawing.Size(147, 22);
this.mnuPresetRgb.Size = new System.Drawing.Size(152, 22);
this.mnuPresetRgb.Text = "RGB";
this.mnuPresetRgb.Click += new System.EventHandler(this.mnuPresetRgb_Click);
//
// mnuPresetMonochrome
//
this.mnuPresetMonochrome.Name = "mnuPresetMonochrome";
this.mnuPresetMonochrome.Size = new System.Drawing.Size(147, 22);
this.mnuPresetMonochrome.Size = new System.Drawing.Size(152, 22);
this.mnuPresetMonochrome.Text = "Monochrome";
this.mnuPresetMonochrome.Click += new System.EventHandler(this.mnuPresetMonochrome_Click);
//
@ -1987,74 +2020,74 @@ namespace Mesen.GUI.Forms.Config
this.mnuPaletteUnsaturated,
this.mnuPaletteYuv});
this.contextPaletteList.Name = "contextPicturePresets";
this.contextPaletteList.Size = new System.Drawing.Size(255, 208);
this.contextPaletteList.Size = new System.Drawing.Size(268, 208);
this.contextPaletteList.Opening += new System.ComponentModel.CancelEventHandler(this.contextPaletteList_Opening);
//
// mnuDefaultPalette
//
this.mnuDefaultPalette.Name = "mnuDefaultPalette";
this.mnuDefaultPalette.Size = new System.Drawing.Size(254, 22);
this.mnuDefaultPalette.Size = new System.Drawing.Size(267, 22);
this.mnuDefaultPalette.Text = "Default (NTSC)";
this.mnuDefaultPalette.Click += new System.EventHandler(this.mnuDefaultPalette_Click);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(251, 6);
this.toolStripMenuItem1.Size = new System.Drawing.Size(264, 6);
//
// mnuPaletteCompositeDirect
//
this.mnuPaletteCompositeDirect.Name = "mnuPaletteCompositeDirect";
this.mnuPaletteCompositeDirect.Size = new System.Drawing.Size(254, 22);
this.mnuPaletteCompositeDirect.Size = new System.Drawing.Size(267, 22);
this.mnuPaletteCompositeDirect.Text = "Composite Direct (by FirebrandX)";
this.mnuPaletteCompositeDirect.Click += new System.EventHandler(this.mnuPaletteCompositeDirect_Click);
//
// mnuPaletteNesClassic
//
this.mnuPaletteNesClassic.Name = "mnuPaletteNesClassic";
this.mnuPaletteNesClassic.Size = new System.Drawing.Size(254, 22);
this.mnuPaletteNesClassic.Size = new System.Drawing.Size(267, 22);
this.mnuPaletteNesClassic.Text = "NES Classic (by FirebrandX)";
this.mnuPaletteNesClassic.Click += new System.EventHandler(this.mnuPaletteNesClassic_Click);
//
// mnuPaletteNestopiaRgb
//
this.mnuPaletteNestopiaRgb.Name = "mnuPaletteNestopiaRgb";
this.mnuPaletteNestopiaRgb.Size = new System.Drawing.Size(254, 22);
this.mnuPaletteNestopiaRgb.Size = new System.Drawing.Size(267, 22);
this.mnuPaletteNestopiaRgb.Text = "Nestopia (RGB)";
this.mnuPaletteNestopiaRgb.Click += new System.EventHandler(this.mnuPaletteNestopiaRgb_Click);
//
// mnuPaletteOriginalHardware
//
this.mnuPaletteOriginalHardware.Name = "mnuPaletteOriginalHardware";
this.mnuPaletteOriginalHardware.Size = new System.Drawing.Size(254, 22);
this.mnuPaletteOriginalHardware.Size = new System.Drawing.Size(267, 22);
this.mnuPaletteOriginalHardware.Text = "Original Hardware (by FirebrandX)";
this.mnuPaletteOriginalHardware.Click += new System.EventHandler(this.mnuPaletteOriginalHardware_Click);
//
// mnuPalettePvmStyle
//
this.mnuPalettePvmStyle.Name = "mnuPalettePvmStyle";
this.mnuPalettePvmStyle.Size = new System.Drawing.Size(254, 22);
this.mnuPalettePvmStyle.Size = new System.Drawing.Size(267, 22);
this.mnuPalettePvmStyle.Text = "PVM Style (by FirebrandX)";
this.mnuPalettePvmStyle.Click += new System.EventHandler(this.mnuPalettePvmStyle_Click);
//
// mnuPaletteSonyCxa2025As
//
this.mnuPaletteSonyCxa2025As.Name = "mnuPaletteSonyCxa2025As";
this.mnuPaletteSonyCxa2025As.Size = new System.Drawing.Size(254, 22);
this.mnuPaletteSonyCxa2025As.Size = new System.Drawing.Size(267, 22);
this.mnuPaletteSonyCxa2025As.Text = "Sony CXA2025AS";
this.mnuPaletteSonyCxa2025As.Click += new System.EventHandler(this.mnuPaletteSonyCxa2025As_Click);
//
// mnuPaletteUnsaturated
//
this.mnuPaletteUnsaturated.Name = "mnuPaletteUnsaturated";
this.mnuPaletteUnsaturated.Size = new System.Drawing.Size(254, 22);
this.mnuPaletteUnsaturated.Size = new System.Drawing.Size(267, 22);
this.mnuPaletteUnsaturated.Text = "Unsaturated v6 (by FirebrandX)";
this.mnuPaletteUnsaturated.Click += new System.EventHandler(this.mnuPaletteUnsaturated_Click);
//
// mnuPaletteYuv
//
this.mnuPaletteYuv.Name = "mnuPaletteYuv";
this.mnuPaletteYuv.Size = new System.Drawing.Size(254, 22);
this.mnuPaletteYuv.Size = new System.Drawing.Size(267, 22);
this.mnuPaletteYuv.Text = "YUV v3 (by FirebrandX)";
this.mnuPaletteYuv.Click += new System.EventHandler(this.mnuPaletteYuv_Click);
//
@ -2064,6 +2097,7 @@ namespace Mesen.GUI.Forms.Config
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(535, 457);
this.Controls.Add(this.tabMain);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.MinimizeBox = false;
@ -2269,5 +2303,7 @@ namespace Mesen.GUI.Forms.Config
private System.Windows.Forms.FlowLayoutPanel flpResolution;
private System.Windows.Forms.Label lblFullscreenResolution;
private System.Windows.Forms.ComboBox cboFullscreenResolution;
private System.Windows.Forms.Label lblRequestedRefreshRate2;
private System.Windows.Forms.ComboBox cboRefreshRate2;
}
}

View file

@ -36,6 +36,7 @@ namespace Mesen.GUI.Forms.Config
AddBinding("FullscreenForceIntegerScale", chkFullscreenForceIntegerScale);
AddBinding("UseExclusiveFullscreen", chkUseExclusiveFullscreen);
AddBinding("ExclusiveFullscreenRefreshRate", cboRefreshRate);
AddBinding("ExclusiveFullscreenRefreshRate2", cboRefreshRate2);
AddBinding("VideoScale", nudScale);
AddBinding("AspectRatio", cboAspectRatio);

View file

@ -121,14 +121,14 @@
<value>17, 17</value>
</metadata>
<metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>537, 17</value>
<value>561, 17</value>
</metadata>
<data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACs
BQAAAk1TRnQBSQFMAwEBAAFIAQABSAEAARABAAEQAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA
BQAAAk1TRnQBSQFMAwEBAAFYAQABWAEAARABAAEQAQAE/wEZAQAI/wFCAU0BNgcAATYDAAEoAwABQAMA
ARADAAEBAQABGAYAAQweAAH5AvgB1QHBAbsBqAFyAWEBkAFHATABkAFHATABpgFuAVwB0gG8AbUB+AL2
pQAB1QHAAbkBlgFNATIBqgFaASwBuwFkASsBwAFpASkBwAFpASkBuwFlASwBqwFbAS0BmAFMATAB0wG9
AbWfAAHRAbgBrwGlAVgBMgHAAW0BLgHCAW0BLQHCAW0BLQHCAW0BLQHCAW0BLQHCAW0BLQHCAW0BLQHA
@ -156,12 +156,12 @@
</value>
</data>
<metadata name="contextPicturePresets.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>221, 17</value>
<value>229, 17</value>
</metadata>
<metadata name="colorDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>107, 17</value>
<value>110, 17</value>
</metadata>
<metadata name="contextPaletteList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>389, 17</value>
<value>406, 17</value>
</metadata>
</root>

View file

@ -226,6 +226,7 @@ namespace Mesen.GUI
[DllImport(DLLPath)] public static extern void SetVideoScale(double scale, ConsoleId consoleId = ConsoleId.Master);
[DllImport(DLLPath)] public static extern void SetScreenRotation(UInt32 angle);
[DllImport(DLLPath)] public static extern void SetExclusiveRefreshRate(UInt32 refreshRate);
[DllImport(DLLPath)] public static extern void SetExclusiveRefreshRate2(UInt32 refreshRate);
[DllImport(DLLPath)] public static extern void SetVideoAspectRatio(VideoAspectRatio aspectRatio, double customRatio);
[DllImport(DLLPath)] public static extern void SetVideoFilter(VideoFilterType filter);
[DllImport(DLLPath)] public static extern void SetVideoResizeFilter(VideoResizeFilter filter);
@ -1733,6 +1734,7 @@ namespace Mesen.GUI
BreakOnPpu2006ScrollGlitch = 0x20000,
BreakOnBusConflict = 0x40000,
BreakOnUnlogged = 0x80000,
}
public struct InteropRomInfo

View file

@ -654,6 +654,7 @@ namespace InteropEmu {
DllExport void __stdcall SetVideoScale(double scale, ConsoleId consoleId) { GetConsoleById(consoleId)->GetSettings()->SetVideoScale(scale); }
DllExport void __stdcall SetScreenRotation(uint32_t angle) { _settings->SetScreenRotation(angle); }
DllExport void __stdcall SetExclusiveRefreshRate(uint32_t angle) { _settings->SetExclusiveRefreshRate(angle); }
DllExport void __stdcall SetExclusiveRefreshRate2(uint32_t angle) { _settings->SetExclusiveRefreshRate2(angle); }
DllExport void __stdcall SetVideoAspectRatio(VideoAspectRatio aspectRatio, double customRatio) { _settings->SetVideoAspectRatio(aspectRatio, customRatio); }
DllExport void __stdcall SetVideoFilter(VideoFilterType filter) { _settings->SetVideoFilterType(filter); }
DllExport void __stdcall SetVideoResizeFilter(VideoResizeFilter filter) { _settings->SetVideoResizeFilter(filter); }

View file

@ -242,8 +242,18 @@ extern "C" {
{ 0 },
};
static const struct retro_system_content_info_override content_overrides[] = {
{
"nes|fds|unf|unif", /* extensions */
false, /* need_fullpath */
false /* persistent_data */
},
{ NULL, false, false }
};
retroEnv(RETRO_ENVIRONMENT_SET_VARIABLES, (void*)vars);
retroEnv(RETRO_ENVIRONMENT_SET_CONTROLLER_INFO, (void*)ports);
retroEnv(RETRO_ENVIRONMENT_SET_CONTENT_INFO_OVERRIDE, (void*)content_overrides);
}
RETRO_API void retro_set_video_refresh(retro_video_refresh_t sendFrame)
@ -1034,7 +1044,43 @@ extern "C" {
_console->GetSettings()->SetControllerType(2, ControllerType::None);
_console->GetSettings()->SetControllerType(3, ControllerType::None);
VirtualFile romData(game->data, game->size, game->path);
// Attempt to fetch extended game info
const struct retro_game_info_ext *gameExt = NULL;
const void *gameData = NULL;
size_t gameSize = 0;
string gamePath("");
if (retroEnv(RETRO_ENVIRONMENT_GET_GAME_INFO_EXT, &gameExt)) {
gameData = gameExt->data;
gameSize = gameExt->size;
if (gameExt->file_in_archive) {
// We don't have a 'physical' file in this
// case, but the core still needs a filename
// in order to detect associated content
// (i.e. HdPacks). We therefore fake it, using
// the content directory, canonical content
// name, and content file extension
#if defined(_WIN32)
char slash = '\\';
#else
char slash = '/';
#endif
gamePath = string(gameExt->dir) +
string(1, slash) +
string(gameExt->name) +
"." +
string(gameExt->ext);
} else {
gamePath = gameExt->full_path;
}
} else {
// No extended game info; all we have is the
// content fullpath from the retro_game_info
// struct
gamePath = game->path;
}
// Load content
VirtualFile romData(gameData, gameSize, gamePath);
bool result = _console->Initialize(romData);
if(result) {
@ -1084,7 +1130,9 @@ extern "C" {
info->library_name = "Mesen";
info->library_version = _mesenVersion.c_str();
info->need_fullpath = false;
// need_fullpath is required since HdPacks are
// identified via the rom file name
info->need_fullpath = true;
info->valid_extensions = "nes|fds|unf|unif";
info->block_extract = false;
}

File diff suppressed because it is too large Load diff

View file

@ -288,7 +288,7 @@ HRESULT Renderer::InitDevice()
sd.BufferDesc.Width = _realScreenWidth;
sd.BufferDesc.Height = _realScreenHeight;
sd.BufferDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
sd.BufferDesc.RefreshRate.Numerator = _console->GetSettings()->GetExclusiveRefreshRate();
sd.BufferDesc.RefreshRate.Numerator = _console->GetSettings()->GetExclusiveRefreshRateByModel(_console->GetModel());
sd.BufferDesc.RefreshRate.Denominator = 1;
sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
sd.Flags = _fullscreen ? DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH : 0;