55 Commits
Author SHA1 Message Date
SourMesen 7f418e352a Clang: Fixed all compilation warnings (#241)
-Some warnings were suppressed (undefined-inline and return-type-c-linkage)
-Warnings as errors was enabled to make CI builds fail when warnings are introduced
-Slightly altered the behavior of SnesCpu::IdleOrRead, but this should match what ares does
2026-08-01 13:40:07 +09:00
SourMesen e055ddee35 SNES: Added deinterlacing options (#224) 2026-07-24 14:50:15 +09:00
SourMesen e5075abe29 Runahead: Fixed issue causing runahead X to behave like runahead X-1 for all cores (except NES) (#219)
An additional frame's worth of input lag was added by runahead because of the timing at which it loads/saves the state vs when the inputs are polled (NES core was not affected due to the timing at which it polls controllers compared to other cores)

Also fixed a SNES-specific runahead issue when the game starts a very long DMA before vblank that ends after vblank, causing some frames to not be rendered at all and showing older frames instead (this is a rare scenario, but caused issues in Star Fox)
2026-07-15 05:09:22 -07:00
SourMesen 49c9a3a4ba GB: Added overclock and remove sprite limit options (#216) 2026-07-11 17:47:41 +09:00
SourMesen a1f1f7c1c5 Debugger: SNES - Fixed "draw partial frame" for high resolution and interlaced modes (#215)
This also fixes an issue where the dot at H=22 was getting drawn at H=23 (along with the H=23 dot), causing both dots to be drawn on the same cycle. This caused a visual issue in the test_noise test - the first pixel of the grayscale line on the left was not in the being drawn correctly.
2026-07-11 16:52:41 +09:00
SourMesen 5b71c4e072 SNES: Added "Remove sprite limit" option (#207) 2026-07-11 16:43:58 +09:00
SourMesen e391fd8f9a Code: Add auto-formatting rules for C++ (clang-format) and enforce in CI via "clang-format" and "dotnet format" (#78)
* Code: Add auto-formatting rules for C++ projects (clang-format) and enforce code style via "clang-format" and "dotnet format"

* fix ui format warnings
2026-04-30 06:03:55 -07:00
NovaSquirrel 5303c37b2d SNES: Offset-per-tile fixes to match hardware test results (#56)
OPT can cross from the top half of a 32x64 or 64x64 map to the bottom when fetching vertical offset values, and this actually acts as if 8 was added to the scroll value instead of being an offset that's added at the end.

The other code in this file already applies the 16x8 logic, so don't apply it a second time in GetHvOffsetByteAddress.
2026-04-23 10:48:00 -07:00
SourMesen ae40bb0a59 SNES: Fix issues with offset-per-tile calculations (#45)
Fixes audio player in the "YNT Mario" romhack
2026-04-21 17:55:06 -07:00
SourMesen 1f7d02a286 SNES: Fixed hi-res mode output when color math is enabled (#43)
Fixes the behavior of tepples' "actualmix" test rom when "pseudo-hires" is enabled. Color math for the next pixel needs to use the previous main pixel's original color, not the post-color math result.
2026-04-18 19:29:02 -07:00
Sour 2d96724b28 Debugger: SNES - Added new "break on..." options
Invalid vram/oam/cgram access, controller read while auto-read is running
2025-03-27 21:30:38 +09:00
Sour bc2383ab16 SNES: Removed old debug information 2025-01-05 11:08:12 +09:00
Sour 44337e507e SNES: Fixed regression in Kawasaki Carribean Challenge (palette corruption)
Caused by CGRAM writes on scanline 0 being blocked, even though they apparently should work correctly
2024-12-25 23:03:36 +09:00
Sour 0ab6e92dc2 SNES: Set internal palette address to 0 when outputting bg color (when no layers have visible pixels)
This fixes regressions in PGA Tour Golf and Mini Yonku Shining Scorpion. These games attempt to write to CGRAM during rendering, but at a time where the background color is being rendered, so the writes overwrite address 0 in CGRAM. Without this fix, the last non-transparent pixel's color address was being used, causing it to corrupt the wrong color in CGRAM (which caused the glitches)
2024-12-25 15:10:22 +09:00
Sour a9d3cb5755 SNES: Implement correct/better behavior when reading/writing to CGRAM during rendering
This allows 93143's "dmacolor" demo to work correctly: https://forums.nesdev.org/viewtopic.php?p=164248#p164248
Also prevents reading from VRAM during rendering
2024-12-24 18:09:47 +09:00
Sour 59f106b8cc SNES: Fixed NMI/IRQ timing issues
Passes all NMI/IRQ tests: demo_irqtest, demo_nmitest, irq, nmi, test_irq, test_irq4200, test_irq4209, test_irqb, test_nmi,
Also fixes timing issues with WAI
2024-12-24 17:43:09 +09:00
Sour 0b1fe08bba SNES: Fixed PPU $213F reads to always reset the h/v counter low/high toggles 2024-10-15 20:18:56 +09:00
Sour 13acb3fe42 Added GBA support 2024-03-30 11:42:31 +09:00
Sour efcf0d1523 SNES: Improved gamepad auto-read emulation
-Read each bit at roughly the correct cycles (instead of all at once at the start of nmi)
-Don't perform auto-read when auto-read flag is disabled at the very start of nmi, before it actually starts
2023-08-17 18:24:03 +09:00
Sour 2822ca5dd0 SNES: Implement broken vertical mirroring for rectangular sprites (same as hardware) 2023-07-23 13:38:15 +09:00
Sour 4e65a37357 Debugger: SNES - Fixed crash when stepping through code while "draw partial frame" is enabled 2023-07-04 18:02:19 +09:00
Sour 8948221261 Debugger: Fixed crashes when setting an invalid palette value via the memory viewer 2023-05-29 16:20:30 +09:00
Sour 061dd406bb SNES: Fixed graphical glitch when fast-forwarding with frame skipping enabled when game switches between low resolution/high resolution modes 2023-03-19 16:33:46 -04:00
Sour 08301e122a SNES: Partially fixed glitchy frames when rewinding an interlaced game
Looks less glitchy, but still doesn't display the right image for one frame after loading each state
2023-03-12 19:31:23 -04:00
Sour a86f5abfd1 SNES: Use double buffering for interlaced games (like all other games)
Improves fast forward performance when video filters are used
+ Fixed issues with frame skipping that could cause only half the lines to be redrawn for an extended period of time at some emulation speeds
2023-03-12 17:57:40 -04:00
Sour 2b0be570fb UI: Moved "disable frame skipping" option to SNES/PC Engine configuration
Other cores are not affected by this option
2023-01-25 16:26:06 -05:00
Sour 0d7e457dae Fixed/removed some TODOs 2023-01-06 11:10:24 +09:00
Sour e6b4d23f70 Rename TODOs that need to be fixed/checked before release to TODOv2 2023-01-05 14:07:08 +09:00
Sour 36e463b903 Debugger: SNES - Added VRAM/OAM/CGRAM address to status view (+ added missing information in register viewer) 2022-10-08 17:52:27 -04:00
Sour ce83eaadbc Fixed subtract code/ui typos 2022-09-16 00:02:35 -04:00
Sour 7108bdde36 Refactoring - Moved some leftover files out of the root folder 2022-09-08 21:48:49 -04:00
Sour 152abf690b Rename stdafx.h to pch.h 2022-09-08 21:29:52 -04:00
Sour 45287639ca PCE: Added support for frame skipping, moved frame skipping option to global video settings 2022-09-01 14:45:18 -04:00
Sour 6d1f166317 Debugger: Tilemap Viewer - Added Main/Sub tabs for SNES 2022-08-19 13:52:02 -04:00
Sour 7df142e420 Debugger: Tilemap viewer - Mode 7 overlay 2022-08-06 11:29:50 -04:00
Sour 2eda2cc27e Debugger: Lua - Allow callback to change read/written value, allow callbacks on any memory type (not just cpu memory), allow callbacks for ppu memory 2022-08-02 01:42:14 -04:00
Sour 6163158637 Debugger: Lua - Implemented getState + setState 2022-07-31 15:00:53 -04:00
Sour 077e8db3d7 Fixed some minor TODOs 2022-07-26 00:29:02 -04:00
Sour 623892d6c3 Fixed ram init logic to ensure the correct config option is used when loading a game 2022-07-25 22:04:44 -04:00
Sour b456170551 Save states: Serializer rework/rewrite 2022-07-20 00:40:32 -04:00
Sour 87e611f930 SNES: Fixed typo in variable name 2022-07-16 11:01:53 -04:00
Sour cfdd8b28d0 SNES: Minor performance improvements 2022-07-05 21:48:50 -04:00
Sour 60889176b7 Debugger: Added "draw partial frame" option 2022-06-26 21:57:03 -04:00
Sour f5d45c7619 SNES: Mode 7 extbg layer does not support direct color 2022-06-06 23:15:53 -04:00
Sour 9d226d6588 Linux: Fixed build, fixed some clang warnings 2022-05-09 20:53:56 -04:00
Sour 191304e025 wip - everything to review 2022-04-06 18:37:35 -04:00
Sour aa6a9699fb UI: Added global input options (deadzone, display inputs on screen, etc.) 2022-03-04 22:08:29 -05:00
Sour 757f1cfd5d UI: SNES - Renamed options to use BG1-4 instead of BG0-3 (for consistency with register viewer, etc.) 2022-02-13 12:55:32 -05:00
Sour d2d20d7b46 SNES: Fixed mosaic regression caused by the previous mosaic fix
Mosaic effect should now be working properly when the mosaic size is 1x1
(Mosaic code was also disabled entirely when 1x1 in mode 7, but the logic bug w/ mosaicCounter is also fixed when 1x1)
2022-02-06 12:12:22 -05:00
Sour 7bbb21194b Debugger: SNES - fixed PPU cycle/scanline display 2022-01-30 11:45:24 -05:00