-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
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)
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.
* Code: Add auto-formatting rules for C++ projects (clang-format) and enforce code style via "clang-format" and "dotnet format"
* fix ui format warnings
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.
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.
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)
-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
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
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)