Commit graph

2040 commits

Author SHA1 Message Date
Sour
0dfdbbdd9b WS: APU - Revert LSFR behavior change when noise flag is clear
This seems to be incorrect despite the test rom's results - Card Captor's intro sequence freezes for a few seconds because of this
2025-04-01 17:40:17 +09:00
Sour
7267e28e21 Debugger: GBA - Added option to configure whether unidentified code/data is disassembled as arm/thumb 2025-03-31 18:11:29 +09:00
Sour
66c19f9ed2 GBA: Fixed re-entry problems with DMA that could sometimes cause the same DMA to run twice in a row, breaking some games
This caused Sonic Advance 3 to randomly freeze/crash
2025-03-29 23:36:25 +09:00
Sour
a9a0b788db Debugger: Test runner - Initialize debugger immediately after loading the rom, instead of 1 frame later 2025-03-29 10:33:37 +09:00
Sour
1975ab958c Debugger: Fixed crashes when switching between games from different consoles (in AOT build)
Caused by what looks like slight differences between how AOT treats an empty array (vs JIT builds) when it marshals the array (AOT sends a null pointer, JIT sends a pointer to an empty array)
This was causing issues in both builds (AOT crashed immediately because of the null pointer, JIT read from out-of-bounds memory)
2025-03-28 18:03:30 +09:00
Sour
acbe931ba0 Debugger: SNES - Added break on options for SPC
Break on BRK, STOP/SLEEP
2025-03-27 23:46:36 +09: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
ad548465c6 Debugger: NES - Added new "break on..." options
Invalid VRAM access, Invalid OAM write, DMA controller read, Unstable opcodes
2025-03-27 21:16:02 +09:00
Sour
9e5d013c84 Debugger: Minor performance improvements for debugger initialization 2025-03-26 21:25:34 +09:00
Sour
af9eda3524 Debugger: NES - MMC1 - Added shift register state to register viewer 2025-03-25 18:02:23 +09:00
Sour
a2637ef2d4 Debugger: Fixed labels getting erased when spamming reload rom shortcut 2025-03-24 22:02:15 +09:00
Sour
dd94362d29 Audio player: Use console time to detect X seconds of silence, rather than real time
Player was skipping to next track when pausing for more than X seconds and then resuming playback, etc.
2025-03-24 21:19:24 +09:00
Sour
f762ceead9 SNES: Fixed return values for reads to 4017/4213 + fixed open bus when reading CPU internal registers
Fixes most of the openbus_test tests
2025-03-24 10:03:32 +09:00
Sour
fef5573bda NES: Added option to reverse DPCM bit playback order
Improves DPCM quality for some specific games that have their DPCM data reversed
2025-03-23 20:52:09 +09:00
Sour
004ec5f3db NES: Display header information in log even when the rom can't be loaded because of a bad header 2025-03-23 15:04:22 +09:00
Sour
20c2a24af7 SNES: Fixed mul/div edge cases when writing to mul/div registers while mul/div is still running
Matches results from this thread: https://forums.nesdev.org/viewtopic.php?t=24087
2025-03-23 14:32:31 +09:00
Sour
2e8ca044ec GB: Fixed HDMA not running on scanline 143
This fixes graphical issues in Warau Inu no Bouken (because some tiles were not being transferred to VRAM)
2025-03-23 13:33:45 +09:00
Sour
8c04e1ad6c GB: HDMA shouldn't run if CPU is halted
Fixes MagenTests/hblank_vram_dma test rom
2025-03-23 13:32:00 +09:00
Sour
b844642866 Debugger: GB - Fixed tilemap viewer displaying incorrect tiles when the tile index is above 127
Seems to only happen in release builds in MSVC (unsure if other compilers were affected)
+ Also added missing member in GbCpuState in the UI
2025-03-23 13:16:31 +09:00
Sour
d3afd0dbf2 Debugger: PCE - Tilemap viewer - Fixed scroll overlay Y position 2025-03-22 08:44:49 +09:00
Sour
0dbe874fa4 Debugger: Sprite Viewer - SNES - Fixed crash when EnableOamPriority flag was set
startIndex could be set to 128+, depending on the oam address, which caused memory corruption
2025-03-21 23:31:07 +09:00
Sour
929d4dcc20 GB: Fixed APU emulation issues
-Super Mario Land 2 - Pops in menu are fixed by immediately updating APU output after a write
-Perfect Dark - Low voice volume is fixed by having the correct output when the channels are disabled (but DAC is still enabled)
-Daiku no Gen - Low voice volume is fixed by keeping square channel output to digital 0 (= analog 1) until its first tick after being enabled (the game does not let the channel tick at all while the voice sample is playing)
2025-03-21 23:03:01 +09:00
Sour
85070a6dc2 NES: Mapper 142 - Added missing variable to save state 2025-03-20 17:24:45 +09:00
Sour
62e6fb750b NES: Mapper 107 - Fixed PRG mappings 2025-03-19 22:30:44 +09:00
Sour
99311f9af2 NES: Mapper 142 - Misc fixes, including IRQ behavior that was breaking SMB2j on reset 2025-03-19 22:30:27 +09:00
Sour
4921d09468 NES: Mapper 139 - Fixed mirroring issue 2025-03-19 22:29:49 +09:00
Sour
4e63730c73 FDS: Implemented 4030.3 bit (mirroring flag) 2025-03-15 18:18:12 +09:00
Sour
e8c99284d1 FDS: Audio - Fixed behavior of the 4089.7 bit.
When set, the wave unit continues to run, but the output is held at its previous value
2025-03-15 16:06:35 +09:00
Sour
51f5afb7a3 GBA: Fixed window rendering glitch when X position was changed during hblank
Super Mario Advance 4 (SMB3) window animation when entering a stage had a glitchy scanline when the window's end position was moved from x=255 to x=239 during hblank, because ProcessWindow was not getting called when the window X position register was changed
2025-03-14 23:55:16 +09:00
Sour
f359b80eb5 Debugger: Assembler - Allow using #label syntax on NES/SNES/PCE
This used to be allowed in Mesen-S
2025-03-13 18:32:46 +09:00
Sour
24dfab45de NES: Added support for mapper 487 (Maxivision 30-in-1) 2025-03-12 20:18:06 +09:00
Sour
d0a3db20d8 PCE: Fixed ADPCM audio decoding issues
-Output is a 12-bit value and should wrap
-"Magnitude"/"step size" should be reset to 0 when playback starts

This fixes sound effects in NEXZR that were broken by the previous (incorrect) fix and also broken because _magnitude was not being reset to 0 when each sample started playing
2025-03-12 16:46:32 +09:00
Sour
6334ef2a6a Debugger: GBC - Fixed crashes when memory viewer was opened and addresses FF76/FF77 were visible
This was causing the APU to run inside the UI thread, causing memory corruption/crashes
2025-03-11 17:50:19 +09:00
Sour
7ae5d7c83a WS: APU - Fixed inverted sample order for wave table 2025-03-10 17:57:43 +09:00
Sour
1d947180a9 WS: APU - LSFR value doesn't update unless all 3 enable flags (channel+noise+lfsr) are enabled 2025-03-10 17:56:32 +09:00
Sour
c90b8a9ef6 WS: APU - Disabled channels should output 0
+ Ch2 outputs PCM if PCM is enabled, even when channel is disabled
2025-03-10 17:55:22 +09:00
Sour
db4cc01967 NES: FDS - Fixed emulation issues with modulation
Fixes incorrect audio in Yuu Maze and 19 Neunzehn
2025-03-09 23:30:44 +09:00
Sour
470cf9d7ee NES: VRC6 - Fixed missing audio register mirrors 2025-03-09 08:51:26 +09:00
Sour
cde15d2b38 Debugger: SNES - Fixed open bus mask for register 4210 peek 2025-03-07 15:44:44 +09:00
Sour
77fc5301eb WS: Suppress trace IRQ for 1 instruction after it gets enabled 2025-03-03 18:25:50 +09:00
Sour
0d91684cba SGB: Added missing packet byte buffer for SGB commands
Based on binarycounter's tests and documentation: https://github.com/binarycounter/SGB_Packet_Buffer_Tests
2025-03-02 13:33:12 +09:00
Sour
e9a0e7aaa5 SGB: Improved logic to select row/bank to write pixels to
Uses hblank/vblank (when mode changes) to move to the next row/reset to the top of the screen
2025-03-02 13:23:07 +09:00
Sour
53f17745d7 SGB: Prevent freeze/lock up when resetting a MBC3 game that has a RTC clock 2025-03-02 11:25:21 +09:00
Sour
211b42e91c WS: Improved IRQ handling after IRQ flag is set or SS segment is modified 2025-03-01 22:17:45 +09:00
Sour
5823761791 SMS: Implemented fairly accurate sprite eval+fetch timings, for all modes
+ Fixed VRAM read to wait until next available CPU access slot
+ Fixed NMI triggering on the wrong scanline on SMS
+ Fixed NMI issues on ColecoVision
+ Fixed random ram option not working properly on SG-1000
+ Added "Mem access" tab to tilemap viewer to see fetch patterns
2025-03-01 00:09:36 +09:00
Sour
fadf7c4d44 GBA: Fixed problem with wave channel in Kidou Senshi Gundam - Seed Destiny
Wave channel was playing the wrong audio on the title screen, because some writes were being blocked.
It looks like the restriction on wave "ram" access that exists on GB don't exist on GBA
Additionally, it seems like the wave data is supposed to be stored in a large shift register (not emulated yet), rather than an array of bytes
2025-02-26 17:41:33 +09:00
Sour
8dc389df49 NES: Runahead - Fixed issues switching disks or inserting coins with FDS/VS System 2025-02-20 18:43:56 +09:00
Sour
0b593d4c78 NES: FDS - Fixed IPS save data not being applied when loading the rom 2025-02-20 17:38:21 +09:00
Sour
d72658de7a NES: FDS - Fixed issues with Kosodate Gokko (unlicensed disk copying program)
+ Added option to save directly to the original rom file instead of creating .ips files (for FDS & cartridges with flashable prg/chr rom)
2025-02-19 21:27:15 +09:00
Sour
1da719bb80 NES: MMC5 - Added support for 128kb ram 2025-02-18 09:30:20 +09:00