218 Commits
Author SHA1 Message Date
SourMesen 4c27ebf26f UI: Update to Avalonia 12.1 (#249)
Allows drag and drop to work on Linux
2026-08-15 16:56:22 +09:00
SourMesen ad0a1b9849 Lua: Misc. fixes & improvements (#250)
-Fixed getAccessCounters documentation (swapped param order)
-Fixed file watcher not being disabled properly when closing the script window, causing the script to run if changed on the disk, even if the script window is closed
-Prevent file watcher from triggering from writes done by the script window itself (which caused the script to be reloaded 2 or 3 times in a row)
-Fixed UI freezes when using emu.log() on a large table
-Fixed crash when 100k character limit (in the last 500 lines) for script log was reached (out of bounds read/write)
-Added "fps" value to "getState"
-Slightly improved getAccessCounters/getCdlData performance
-Added a new drawPixels API to improve performance when a script needs to draw a lot of individual pixels
2026-08-10 22:42:34 +09:00
SourMesen 918379b7a7 Debugger: Tilemap viewer - Added option to pick background color (#238)
Also, minor bug fixes for WS:
-Fixed tilemap viewer for sometimes using the wrong background color
-Fixed the 4-bit RGB color values in the palette viewer having the R and B values swapped
2026-07-28 19:55:12 +09:00
SourMesen 112b6f3d09 Debugger: SuperGrafx - Added VPC options and VDC1/VDC2 filter in the event viewer (#234) 2026-07-28 19:52:25 +09:00
SourMesen e055ddee35 SNES: Added deinterlacing options (#224) 2026-07-24 14:50:15 +09:00
SourMesen 1c38575013 UI: Allow binding the numpad enter key separately from the left enter key (#223) 2026-07-17 17:47:52 -07:00
SourMesen 1489d34441 SNES: Added support for BlueRetro controller (#220)
This controller/adapter supports rumble as well as reading the state of both analog sticks and the L/R triggers.

Code by @RandalLinden
2026-07-16 05:10:26 -07:00
SourMesen 49c9a3a4ba GB: Added overclock and remove sprite limit options (#216) 2026-07-11 17:47:41 +09:00
SourMesen 5b71c4e072 SNES: Added "Remove sprite limit" option (#207) 2026-07-11 16:43:58 +09:00
SourMesen c660425d48 SNES: Added color correction options (#205) 2026-07-11 15:34:36 +09:00
SourMesen 40335ce735 UI: Update to Avalonia 12, .NET 10 and replace ReactiveUI with MVVM community toolkit (#142)
Also fixes DX11.0 support (for Win7 PCs that aren't fully updated), which stopped working after the recent variable refresh rate changes
2026-07-03 16:04:42 +09:00
Takumi Grainger c8f8bc31c3 NES: Add FCNS controller (#193)
Also fixes presets/clear buttons for NTT, Pachinko & Hypershot, and improves layout for all controller config popups (buttons/borders are aligned, etc.)
2026-06-28 13:34:30 +09:00
SourMesen 0532a2ec98 NES: Fixed issues with 2/4 player adapters (#194)
-The pachinko/subor mouse/ntt/virtual boy controllers could be selected in the UI for 2p/4p adapters, but did not work at all
-Keybindings for the "custom keys" for some controllers were not working when connected to a 2p/4p adapter
-Pachinko controller did not allow the user to configure the keybindings for NES-style buttons
2026-06-26 20:40:09 -07:00
SourMesen 6c54ae1989 Video: Support for VRR in borderless fullscreen (Windows only) and improved frame pacing (#178)
* Video: Add support for VRR when in borderless fullscreen mode (Windows only) and improve frame pacing

* Fixed debug stats not disappearing when unchecking option in some scenarios

* Changed frame pacing graph scale/logic to show the gap between the ideal pacing and the current pacing (within +/- 2ms)
2026-06-21 01:29:30 -07:00
Fiskbit 20ba206cef Version Update: 2.2.1 (#166) 2026-06-05 02:30:28 -07:00
SourMesen 317f89dbb2 Version Update: 2.2.0 (#164) 2026-06-03 23:29:37 -07:00
SourMesen a13ae9a461 Code: Added naming style CI checks for C#/UI code (#132) 2026-05-22 20:43:13 +09:00
Adrian "asie" Siekierka 5bb64aacf0 WS: Initial Pocket Challenge V2 support (#95)
The Pocket Challenge V2 is an education handheld based on the ASWAN SoC, as used in the WonderSwan. It uses the same boot ROM (with an early exit), but has some implementation changes:

    The LCD icon segment area is not present (on the display panel only).
    There is no onboard internal EEPROM.
    The input keypad layout differs.
    The headphone output is always used with a custom onboard DAC, as opposed to relying on the SoC's own PWM DAC for the internal speaker.

This PR implements support for all of this. Support for the PCv2-exclusive cartridge mapper (KARNAK) will be added by a separate PR.
2026-05-17 01:11:02 +09:00
NovaSquirrelandSour 325c78fcbd GB: Link cable support with two local consoles (#77)
* GB: Link cable support with two local consoles

* GB: Fix crash when color blending is enabled

* GB: Fix formatting

* GB: Link UI fixes, control fixes, audio fixes

Copied from Sour's branch. Also a separate change to use separate savefiles.

* GB: Try to avoid crashes from buffer overflows

* GB: Separate savefiles with linked multiplayer

* GB: Add support for faster link speed

* GB: Move enum to correct file

* GB: Refactor, move serial transfer to function

* -Fixed secondary console sometimes running far ahead of the main console when frame counters did not match (e.g because one console had their LCD disabled longer, etc.) This would cause buffer overflows in the audio buffer.
-Fixed screen tearing when both consoles are not perfectly in sync (because of the LCD being disabled for a different amount of time, etc.)
-Fixed main console not calling PlayQueuedAudio properly mid-frame
-Reuse VS Dualsystem code to merge audio/video when possible/simple and moved that to AvMergeUtilities

Some visual glitches can appear on the secondary screen (for GB) while rewinding, but this can't really be fixed.

* Fixed warning (unused local variable)

* Prevent loading single-console save states when in dual-console modes

* Disable debugger for VS DualSystem's subconsole. Fixes issues when debugging VS DualSystem games

* Code cleanup

* Rework solution to disable debugger on second console to improve performance
Added InternalRunFrame for nes & gb to avoid checking for the presence of the second console after each cpu instruction

* Don't enable the linked GB option by default

* Removed unused function

* Netplay: Force game to reload after updating emulation settings when connecting to the server (or when the host changes game)
This ensures that e.g the GB link cable setting is applied and that the game loads correctly, regardless of the client's link cable settings (otherwise the game could load without the link mode enabled, etc.)

---------

Co-authored-by: Sour <[email protected]>
2026-05-15 02:35:27 -07:00
NovaSquirrel 6312748563 SNES: Add Turbo File Twin support (#109)
* SNES: Add Turbo File Twin support

* SNES: Try to make write mode flag more accurate

Hardware tests on Turbo File Twin seem to be showing that if you write data then it stops reporting that the write flag is on, despite letting you write more data

* SNES: Move bit array access to a utility

Also add note about how bit 26 in STF report is not fully verified

* SNES: Add behavior seen when reading without read command

When you turn the strobe on and off outside of a read command, the shift register gets reloaded with the most recently read or written byte

* NES, SNES: Emulator::SaveBattery() for saving console and controller

* Fix range limit in SetBitInArray

* Add notes about unknown aspects of TFII mode

* Add comments to make it clear what's unknown

* STF mode ignores out-of-range addresses

Also allocate _data instead of putting it in the class
2026-05-15 00:05:31 -07:00
NovaSquirrel 8e7e4c2ff9 SNES: Add SPC dumper tool (#89)
* SNES: Add SPC dumper tool

* SNES: SPC dumper fixes
2026-05-08 17:31:34 -07:00
NovaSquirrel 1e2b4b5755 SNES: Add support for NTT Data Keypad (#86)
* SNES: Add support for NTT Data Keypad

Also make it available on NES

* SNES: Disable Multitap for NTT Data Keypad for now
2026-05-05 19:23:29 -07: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
SourMesen 91524e85c1 UI: Allow using old Mesen2 folder if it exists (#74)
Otherwise, when pushing a new update via the auto-update, all users will be shown the configuration wizard and "lose" their settings, save data, save states, etc. because the new version will create a new MesenCE folder.
This instead allows the application to continue using the Mesen2 folder as-is. If a new installation is done, it'll go inside the MesenCE folder.
2026-04-27 05:45:05 -07:00
SourMesen 9616f36f89 Debugger: Console-specific scanline/cycle refresh values (#65)
* Debugger: Console-specific scanline/cycle refresh values

* Fixed some issues with min/max values when switching console types
2026-04-26 17:06:01 -07:00
SourMesen f3e124212f SNES: Added alternative blend mode option for high resolution modes (#63)
Blending even/odd columns only allows fake transparency effects to work while avoiding a blur effect on the picture. This however does not work well in all scenarios (e.g high resolution text in Secret of Mana menus)
2026-04-26 16:57:37 -07:00
SourMesen 7cf80c5b32 UI: Allow using test shortcuts to run automatic tests without debugging in VS (#48)
Set EnableTestMode to true in settings.json to enable this
2026-04-19 04:14:53 -07:00
Fiskbit 1d7fc869c1 Changes Mesen to MesenCE and updates About window.
This updates the Mesen naming in title bars, the About window, and the default data folder name. It also changes copyright information to note the new contributors, changes the website to MesenCE's GitHub page, and updates the build link.

I'm not convinced I found everything, so a thorough review would be appreciated.
2026-04-09 20:05:55 -07:00
Fiskbit 48e4cd469b Adds a new, default GB option to prefer the best model the game supports.
There was previously no auto option that would select the best model a game has any support for and which falls back to the original Game Boy if that's all the game can do. The "Auto (prefer Game Boy)" option would select Game Boy except when given a GBC-exclusive game. The new "Auto (prefer best)" option selects GBC if the game has any GBC support, SGB if it has any SGB support, and GB otherwise. This option is now selected by default.
2026-04-08 18:51:44 -07:00
Sour 137ae7ce3b Version Update: 2.1.1 2025-07-06 15:37:59 +09:00
Sour 5350959230 SNES: Added new controller type that supports rumble 2025-06-23 10:26:31 +09:00
Sour b21e273d85 Version Update: 2.1.0 2025-05-16 22:00:46 +09:00
Sour bae3203baf UI: Auto-update changes/improvements 2025-05-16 21:11:10 +09:00
Sour 1b76310cdc NES: Mark opcodes 93/9B/9F as unstable + add implementation for 8B 2025-05-16 09:38:04 +09:00
Sour f0ed27179a GBA: Added support for overclocking 2025-05-11 00:10:28 +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 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 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 5ec6763a8e UI: Added commit ID in about window
+ Removed ubuntu 20.04 build (no longer supported by github)
+ Enable ccache to speed up github builds
2025-03-22 20:41:07 +09:00
Sour d324582c6f Debugger: Script window - Added option to show line numbers 2025-03-18 21:48:09 +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 336c56f226 CV: Fixed incorrect gamepad mapping in xbox P2 preset 2025-02-11 20:49:51 +09:00
Sour 30fd76d9e0 NES: Added support for .qd format FDS roms 2025-02-07 21:06:17 +09:00
Sour b3fd15963b UI: Try to better recover from unexpected errors while opening the main window 2025-01-05 11:04:32 +09:00
Sour 18269da46b SNES: Add support for Sufami Turbo games 2025-01-03 09:18:59 +09:00
Sour 8d6830a70a SNES: Add support for ST018 coprocessor
Used by a single game: Hayazashi Nidan Morita Shougi 2
2024-12-29 23:41:52 +09:00
Sour 21f1f62424 SNES: Added sinc audio interpolation option 2024-12-27 23:02:02 +09:00
Sour 88210b3fcf SNES/PCE/SMS: Added missing "allow invalid input" option (and prevent invalid inputs by default) 2024-12-20 14:48:15 +09:00