diff --git a/Core/Debugger/PpuTools.h b/Core/Debugger/PpuTools.h index e0c14f27..fb49770b 100644 --- a/Core/Debugger/PpuTools.h +++ b/Core/Debugger/PpuTools.h @@ -42,6 +42,8 @@ struct DebugSpriteInfo int16_t X; int16_t Y; + int16_t RawX; + int16_t RawY; int16_t Bpp; int16_t Palette; @@ -64,6 +66,8 @@ public: SpriteIndex = -1; X = -1; Y = -1; + RawX = -1; + RawY = -1; Bpp = 2; Palette = -1; Priority = DebugSpritePriority::Undefined; diff --git a/Core/Gameboy/Debugger/GbPpuTools.cpp b/Core/Gameboy/Debugger/GbPpuTools.cpp index de9f1abc..0eca4a75 100644 --- a/Core/Gameboy/Debugger/GbPpuTools.cpp +++ b/Core/Gameboy/Debugger/GbPpuTools.cpp @@ -168,9 +168,12 @@ void GbPpuTools::GetSpriteInfo(DebugSpriteInfo& sprite, uint16_t i, GetSpritePre { sprite.Bpp = 2; sprite.SpriteIndex = i; + sprite.Y = oamRam[i*4]; - sprite.X = oamRam[i * 4 + 1]; + sprite.RawY = sprite.Y; + sprite.RawX = sprite.X; + sprite.TileIndex = oamRam[i * 4 + 2]; uint8_t attributes = oamRam[i * 4 + 3]; diff --git a/Core/NES/Debugger/NesPpuTools.cpp b/Core/NES/Debugger/NesPpuTools.cpp index 6d8f3df4..94108189 100644 --- a/Core/NES/Debugger/NesPpuTools.cpp +++ b/Core/NES/Debugger/NesPpuTools.cpp @@ -236,6 +236,8 @@ void NesPpuTools::GetSpriteInfo(DebugSpriteInfo& sprite, uint32_t i, GetSpritePr sprite.SpriteIndex = i; sprite.Y = oamRam[i * 4]; sprite.X = oamRam[i * 4 + 3]; + sprite.RawY = sprite.Y; + sprite.RawX = sprite.X; sprite.TileIndex = oamRam[i * 4 + 1]; uint8_t attributes = oamRam[i * 4 + 2]; diff --git a/Core/SNES/Debugger/SnesPpuTools.cpp b/Core/SNES/Debugger/SnesPpuTools.cpp index 35b79159..cb4db729 100644 --- a/Core/SNES/Debugger/SnesPpuTools.cpp +++ b/Core/SNES/Debugger/SnesPpuTools.cpp @@ -218,6 +218,8 @@ void SnesPpuTools::GetSpriteInfo(DebugSpriteInfo& sprite, uint16_t spriteIndex, sprite.SpriteIndex = spriteIndex; sprite.X = spriteX; sprite.Y = spriteY; + sprite.RawX = sign | oamRam[addr]; + sprite.RawY = spriteY; sprite.Height = height; sprite.Width = width; sprite.TileIndex = oamRam[addr + 2]; diff --git a/NewUI/Debugger/ViewModels/SpriteViewerViewModel.cs b/NewUI/Debugger/ViewModels/SpriteViewerViewModel.cs index 3a49a514..c14f61b1 100644 --- a/NewUI/Debugger/ViewModels/SpriteViewerViewModel.cs +++ b/NewUI/Debugger/ViewModels/SpriteViewerViewModel.cs @@ -467,6 +467,8 @@ namespace Mesen.Debugger.ViewModels [Reactive] public int SpriteIndex { get; set; } [Reactive] public int X { get; set; } [Reactive] public int Y { get; set; } + [Reactive] public int RawX { get; set; } + [Reactive] public int RawY { get; set; } [Reactive] public int PreviewX { get; set; } [Reactive] public int PreviewY { get; set; } [Reactive] public int Width { get; set; } @@ -490,10 +492,14 @@ namespace Mesen.Debugger.ViewModels public unsafe void Init(ref DebugSpriteInfo sprite, DebugSpritePreviewInfo previewInfo) { SpriteIndex = sprite.SpriteIndex; + X = sprite.X; Y = sprite.Y; + RawX = sprite.RawX; + RawY = sprite.RawY; PreviewX = sprite.X + previewInfo.CoordOffsetX; PreviewY = sprite.Y + previewInfo.CoordOffsetY; + Width = sprite.Width; Height = sprite.Height; TileIndex = sprite.TileIndex; diff --git a/NewUI/Debugger/Windows/SpriteViewerWindow.axaml b/NewUI/Debugger/Windows/SpriteViewerWindow.axaml index 218ddd37..97ef90b3 100644 --- a/NewUI/Debugger/Windows/SpriteViewerWindow.axaml +++ b/NewUI/Debugger/Windows/SpriteViewerWindow.axaml @@ -154,7 +154,7 @@ - + @@ -165,7 +165,7 @@ - + diff --git a/NewUI/Interop/DebugApi.cs b/NewUI/Interop/DebugApi.cs index 25826fc1..7adc0f28 100644 --- a/NewUI/Interop/DebugApi.cs +++ b/NewUI/Interop/DebugApi.cs @@ -822,6 +822,8 @@ namespace Mesen.Interop public Int16 X; public Int16 Y; + public Int16 RawX; + public Int16 RawY; public Int16 Bpp; public Int16 Palette;