Changelog:

deduplicate TasMovie property setting in TAStudio
Fix missing/incorrect checksums for Sega CD, Saturn, and Jaguar CD (squashed PR #4024)

* Fix non-PSX disc hashing somewhat

– Don’t hash generated (empty) lead-in/lead-out tracks
– Limit to track length, not absolute LBA of next track

* Use `InformationTrackCount` instead of `Tracks.Count`

* Add Jaguar CD hashing

Reuse RetroAchievements implementation, move into `DiscHasher`
Fix quickernes dllapparently the one before was a debug build?

I built this using the makefile
fix some xmldoc
Enable MEN018 and fix noncompliance (except in Cores)”Use Digit Separators” in integer literals
Use local method instead of a loop in MainForm.FrameBufferResized
Load main solution’s config for Menees.Analyzers in ext. tools toofixes 21cdc86
Rename MovieInput to MovieInputColorthis makes it consistent with the three other variables
make default message colors readable
Fix code style in DefaultMessagePositionsfixes bca7994
simplify BasicMovieInfo.FrameRate
Allow TAStudio to save cycle count in bk2 export
cleanup ICycleTiming header value settingnotably don’t unset the ClockRate just because the current cycle count is invalid
Comment out nonfunctional cycle count update codesetting cycle count in HandleFrameAfter could work, but needs proper invalidation logic
Restore checked modifier in BasicMovieInfo.FrameRatefixes 94a24aa
Do some cleanups with Stella, mark as experimental
A few more Stella cleanups
actually resample stella’s audio
Fix Stella throwing
do not prefer stella
Correct aspect ratio for Stella
remove non-implemented stella settings/sync settings
make virtualpad not throw with stella
Add missing variables to Stella states
don’t expose not fully functional controllers in stella
mark Stella as released
Fix typo in TernaryInferredTypeMismatchAnalyzerfixes fa361ce
Add Analyzer to warn about decimal<=>float/double castsfixes c882fe4 and 32a66a9
[ChannelFHawk] Pair back ramp-up time so shorter sounds can play out
Fix ext. tools failing with a [{Required,Optional}Api] ApiContainer
cleanup and improve TAStudio’s SaveAsTas
consolidate TAStudio saving functions
Make SaveBk2BackupMenuItem visibleIt was always there, just invisible! Not sure how useful it is, but might as well try making it visible before removing it.
Run string draws at any point, rather than only at the endfixes #4036
cleanup last commit
Fix save type for Puzzler World USA
Rebuild quickNES on Debian 10
Fix more edge cases with new hw accelerated GuiApifixes #4040
fixes #4041
Don’t “shrink” internal upscaled buffers with a smaller virtual width/height

while this did “work”, and mimicked other emulators handling internal upscaling, it was a hack, and ends up causing issue with lua padding. it is also more unneeded now that #4029 (makes the UX of a sudden “large window” more managable) and #4011 (allowing for mimicking the frozen smaller window state) are merged

resolves #4039
Do alpha blending more faithfully to GDI+fixes #4043
make sure to dispose Image from Image.FromFilethese hold a lock until they get disposed (which without explicit disposing is just waiting on the finalizer to do it)
optimize 2D renderer: try to avoid splitting render commands, try touse single pass if blending is unneeded (i.e. alpha is always 0xFF)
improve some VirtualPad code
make virtual pad control clearing autoholdsClearStickies clears buttons and axes, but the virtualpad tool wants to control whether only buttons are cleared.
also contains minor cleanups regarding related function calls.
fix watch value box field length for 32-bit binary watches- closes #4044
Fix DWordWatches not being pokable with binary display type- closes #4045
Enable File > Screenshot submenu with NullHawk
attempt to fix GPGX aspect ratiosee #4042, not sure if this is fully correct yet
add missing BSX framerateI don’t think PAL is even possible
Allow savestating at movie end- resolves #4032
Remove “direct” bin file handlingIf you want something like this done, just look for a .cue file next to the .bin file. Do not try to generate a temp .cue and pass that .cue along as the disc file to load, you will potentially run into a situation that temp .cue filename (mind you, this is random!) will act as the game name (due to not being present in db for whatever reason), affecting stuff like SaveRAM and such. The disc file “loaded” must not have some random junk in the filename.
Improve watch editor layoutsee #4046
Fix nullref when no movie existsfixes 2599294
Nix expr: Extract function
Nix expr: Add gtk2-x11 (libgtk-x11-2.0.so.0) to buildInputs
Nix expr: Set $GTK_PATH to mute warning
Fix suppressed warning in ClientWebSocketWrapper ctormore like “human not smart enough to recognise this” amirite
Replace ?? CancellationToken.None pattern with the simpler default
Add docs to OpposingDirPolicy enumsee #2752
Fix code style warnings for OpposingDirPolicy docsfixes ec69033
puae is not released
update gpgx ported version
reorder code in StickyAdaptersmove fields and property to the top, button code before the equivalent axis code, general cleanup
explicitly unset sticky axesthere should not be a function that blindly unsets both axes and button, make it explicit
some more sticky renames for claritySetSticky and ClearStickies sounds an awful like they affect the same thing, also this makes it clear whether to set a hold or an autofire
make IsSticky implementation consistentonly two inheritors and they disagree on semantics… but there’s `CurrentStickies` already which gives access to buttons only
fix autofire sticky axes off value
Only call GetDpiForWindow if it’s actually availableapparently this is limited to windows 10 1607+
fix axis input calculation truncating instead of roundingvery noticable with MouseX/Y binds, you cannot reach certain positions
fix default controls having a deadzone for mouseDeadzone when you’re using mouse values as input never makes sense.
Fix –lua/–luaconsole causing that window to open before MainForm
Revert “Improve watch editor layout”This reverts commit f6bf381.
Merge in Designer file for WatchEditor
Fix typos from WatchEditor Designer file
Use a TLP to align UI elements in WatchEditor
Reorder fields in WatchEditor (resolves #4046)
hide no-op context menus for separators in ram watch- closes #4051
Update llvm to latest point release
update bsnes from upstream sourceincludes some reverts to unnecessary source modifications
Refactor sticky controller logic to separate it from user input (#4047)
Remove redundant inter-project dependencies
Make IDriveLight optional for cores
Fix collection type in ServiceNotApplicableAttribute
Make ServiceNotApplicableAttribute constructor params
fix watch editor notes label position
Respect AutoFireLagFrames config setting in sticky controllersPreviously, there was no way to configure this and sticky autofire controls would always adjust to lag.
Refactor tasmovie input roll settings handlingthis allows loading the input roll settings stored in a tasproj even after it was initially `Load()`ed. This fixes those settings not getting applied when loading an existing, playing tasmovie into TAStudio.
Cleanup some more TAStudio function callsin an ongoing effort to try and make the logic understandable

This should also restore default columns now when an existing tasmovie is currently loaded with column changes
and an existing bk2 is opened (which is then converted to a tasproj) (possible after 2ad7fc0)
Fix display issue in TAStudio when <3 frames are visiblealso left a giant TODO, not sure what else to do about it Add missing disc presence check NymaCore.FrameAdvancePrepfixes #4056 `ControllerAdapter` ctor uses `(discs?.Length ?? 0)> 0`, but it gets
`discs` from earlier in core init; when it’s later assigned to `_disks`,
empty lists are replaced with null, and other places in `NymaCore` use
`_disks != null`. The `default(int)` is to match pre-3af5b7a7f
behaviour.
Make PatternsForm title text readable
make new from savestate and saveram work againbroke with 8956657 I’m assuming. Notably this will now no longer copy the current settings over, but that might actually be more consistent with the behavior of the normal new option, so…
Set some more metadata on BizHawk assembliesThe documentation for these is lacking, as I’ve come to expect, but I’m
angry all the same.
For EmuHawk and DiscoHawk, I’ve pushed `$(Description)` (normally only
seen when publishing to NuGet) into `$(AssemblyTitle)`, which Windows
labels as “File description”, and then explicitly set `$(Product)`.
Also `$(NeutralLanguage)` doesn’t set a culture, it points any lookups
for `en-US` localisations to embedded resources, which I believe is the
default. This just makes it explicit.
implement bitwise logic for axesnoticable in inputdisplay or when trying to set axis autofire
refactor sticky hold/autofire logic in TAStudio- setting multiple buttons to autofire actually works
– the config to respect lag in autofire is applied now
– can set meaningful axis hold / autofire
– removed last reference to “float autofire”
Nix expr: Fix emuhawk-*-bin eval errorfixes 760a5b5
Avoid exceptions in AxisValue implementations (resolves #4057)see #4056
only in Release config, because cores really shouldn’t be using
undeclared axes and I’d like to be able to catch that
Add missing syncsetting check to Gameboy.FrameAdvancePrep (Gambatte)see #4057
optimize TasLagLog.RemoveFrom- closes #4058
optimize TasLagLog.RemoveLagEntryjust because I can
[mGBA] Fix savestates not writing back GPIO variables to gpioBaseThe issue wasn’t light sensor specific, but rather GPIO specific (so e.g. RTC games like Pokemon would also get affected)

resolves #4060
rebuild libmgba for Linux
Optimize Vsync getter functionstrust me this is a highly relevant optimization
Optimize sound output buffer handlingturns out a Queue isn’t the optimal data structure when you’re queueing millions of elements
Make StateInformation a readonly structThis helps a lot when many states exist, struct allocs are much cheaper than classes
Fix drawString not blending when it shouldDrawing a string is really having GDI+ do the drawing in software, uploading the result to a texture, then overlaying it to the render target. Since this texture is largely transparent, it needs blending. Of course, assuming the colors are all otherwise opaque, we only need to do this for the string texture draw
Use Pens.* instead of creating new ones from Color constants
Change SNESGraphicsDebugger.DrawPaletteRegion to re-use one Pen
Use Brushes.* instead of creating new ones from Color constants
Change SNESGraphicsDebugger.RenderPalette to re-use one SolidBrush
Change NesPPU.HandlePaletteViewMouseMove to re-use one SolidBrush
Check for cached SolidBrush in LuaPictureBox.DrawText
Replace caches in LuaPictureBox with a single Brush and Pen
Replace ImGuiResourceCache.BrushCache with a single Brush
Move ZwinderBuffer invalidation logic into the class (#4066)in scenarios with MANY states and high fps, the overhead of calling `GetState` every time was significant.
only update custom backdrop palette if in mode 5maybe affects TASEmulators/Genesis-Plus-GX#5 ?
Cleanup CloseGame and CloseRom some more- fixes #4061 and hopefully breaks nothing else
Optimize some linq Any() calls to list Exists() calls
[Snes9x] Increase CARTRAM to 512KiB (the 128KiB limit was a product of the old snes9x port, newer snes9x has 512KiB as the new limit). Expose SA1 IRAM. Let ROM be writable in the memory domain (no reason not to)
Expose SA1 IRAM in old BSNES
fix crash with sa1 ram exposure
Initial SA1 IRAM exposure for RetroAchievementssee RetroAchievements/rcheevos#371
on shutdown, close tools before stopping movie- closes #4065
Optimize and simplify MarkerView_QueryItemBkColor
CPCHawk2024 (#4071)* [CPCHawk] Start of new gate array and CRTC implementation

* [CPCHawk] Some cleanup

* [CPCHawk] More Cleanup

* [CPCHawk] More CRTC work

* [CPCHawk] More crtc work

* [CPCHawk] more CRTC work

* [CPCHawk] More CRTC work

* [CPCHawk] more crtc

* [CPCHawk] GateArray breaking changes WIP

* [CPCHawk] GA, CRTC and Screen changes

* [CPCHawk] CRTC and GateArray

* [CPCHawk] More stuff

* [CPCHawk] Progress

* [CPCHawk] Starting CRTC type abstraction

* [CPCHawk] Start CRTC status register implementation

* [CPCHAWK] Update colour palatte

* [CPCHawk] Trying to fix GA colour issues

* [CPCHawk] Actually use the Z80 /WAIT line

* [CPCHawk] Frame now running at req 19968 x6 INT

* [CPCHawk] Implement PAL16L8 as a separate device

* [CPCHawk] Border cropping SyncSetting

* [CPCHawk] Stuff

* [CPCHawk] More accurate CRT emulation

* [CPCHawk] Reset vertical timing var only when VSYNC ends in the middle of a scaline

* [CPCHawk] Allow IN port accesses to affect certain write-only devices

* [CPCHawk] Fixed high-impedence returns

* [CPCHawk] Readme update

* [CPCHawk] Update readme with Z80 timing test failures

* [CPCHawk] Update readme
[Z80A] Correct Tw cycles for IOThe Z80 should only be sampling the /WAIT pin during the 3rd cycle T of an IO REQ M Cycle.
Instruction timing tests verified on CPCHawk using WinAPE plustest.dsk.

Note: CPCHawk is the only core to currently use the Z80A /WAIT pin (FlagW), so other core exposure is 0.
[CPCHawk] Interrupt wait state timing tests
Fix ZwinderBuffer InvalidateAfter logic- should resolve #4074

– fixes 2d229be for when _firstStateIndex != 0
Use PathEntryCollection.FirmwareAbsolutePath extension
Fix BHI1007 errors in NLua”Don’t use target-typed new for throw expressions”
doesn’t include rebuilt assembly because it should be identical IL
modulo timestamps
one of these was `Exception` and got stripped, one was checked-in as
implicitly-typed
see 5fd840e and 29c15ad
Add prints to GPGX.FrameAdvance
Try handling movie load failure properly in TAStudio-closes #4068

There’s still two callsites that don’t check the return value, but I’m not sure whether they can fail and what they should do if they do.
IsPathRooted -> IsAbsoluteThis is most likely more correct. .net framework does not have a dedicated method for checking absolute paths, so this was most likely accidentally used instead.
Fix potential exception in PathEntryCollection path resolvingsee also #4077 for where this initially came up
simplify some Util functions
Simplify Serializer array sync handlingval == null is impossible, so the check is completely useless.
Add tests for array conversion util functionsto test the changes made in 37da7b3
Revert changes to ToBoolBufferfixes the test, and apparently having non-0/1 bool values is sketchy anyways
Revert refactor to bool[].ToUByteBuffer() extension toosee 37da7b3 and 30b2433
Bump duration of movie hash mismatch messagesee also #2328
Add prints to cdStreamOpen
Add prints to gpgx_swap_disc
[CPCHawk] Trying a new z80 implementation
Revert “Add prints to gpgx_swap_disc” and “Add prints to cdStreamOpen”This reverts commit 9e0cfb1 and 5c3ae64.
Fix gpgx_swap_disc sig mismatch
fix for CI
Build FlooohZ80 on Linux
Hook up rumble for mgba
rebuild mgba for Linux
FlooohZ80 – revert any changes to source header
simplify floooh z80 usage
Rebuild Floooh for Linux
puae: writable memory
fix #4069gpgx: swap A and D regs in gpgx_getregs()

actually limit pc to 24 bits, not just disasm address
Update address for OpenSSF badge in readme
Default to MT renderer for Faust
Add missing syncsetting check to Ares64.FrameAdvancePrepresolves #4056
Add debug readout for haptic feedback (SDL2 only)build with `-p:MachineExtraCompilationFlag=BIZHAWKBUILD_DEBUG_RUMBLE`
there’s nothing special about SDL2 I just can’t be bothered finding the
other impls
[CPCHawk] Implement FloohZ80 TraceLogger
Do not send writable floppy disks to PUAE (transient files in wbx states are buggy)

Savestate _currentDrive and _currentSlot
Cache controller definition and joystick/keyboard enum mappings
Fix inconsistent MAX_FLOPPIES usage
Set UpdateAutoCheckEnabled default to true, don’t explicitly set a link color for the update available text (red on white is hard to read, default is usually blue, which looks fine here)
Rename AVI/WAV to A/Vresolves #4070
Fix interger overflow from setting haptics/feedback prescale above 1x
Better fix for haptics/feedback prescalefixes c36b654
Split PSX (Nymashock) rumble channel into left and right
Fix typofixes d8778aa
make CI happy
Stop IDEs suggesting to remove the space between cast type and operand
[CPCHawk] FloohZ80 Fix interrupt tracelogger reporting
[CPCHawk] Some CRTC code tidy
Don’t use Thread.Join() in NDS Dispose()resolves #3220
Always render video when at end of turbo seek- resolves #2081

This is only noticable on cores that implement (video) frame skip.
Remove no-op in tasmovie max undo steps settinglol
persist TAStudio max undo levels to config- resolves #3478
Update rcheevos to v11.6.0
rebuild rcheevos on linux
[CPCHawk] New CRTC1 impl.
Pin ubuntu test runner to 22.04
new function
Try to avoid overly sensitive mice from unhiding the autohidden cursor, hide the cursor better for Windows
order firmware groups in the dialog and in the code (#4087)there’s some discrepancy between the 2 orders, because the GUI list relies on full names (of the groups) while in the code short names are used to add them to DB
Fix overlapping buttons in Virtual Pads on Linux
[CPCHawk] Small CRTC1 changes
Fixes for PlayStation RetroAchievements hashing (#4085)* Fixed RA hash for PlayStation games when BOOT line contains tabs where spaces are expected.

* Fixed RA hash and prevented infinite loop when PlayStation executable is in subdirectory.
Allocate melonDS’s video buffer according to effective gl scalingresolves #4090
Don’t immediately change buffer width/height for melonDS video bufferreallocation

They’ll get changed later anyways
update comment for previous commit too
Add Floooh chips repo as submodule
[FlooohZ80] use z80.h in submodule
[FlooohZ80] Remove LICENSE.txt (this now lives in the submodule)
fix path separators
Identify correct core for IPF imageObviously we don’t support IPF images right now, but with any luck we will eventually. So it makes sense to have something in place in the frontend to do core selection (when a gamedb hash is not found) based on the INFO block within the IPF file itself.
fix loading active tasproj into TAStudio- fixes a43a64b
– closes #4091
Fix RCTrack sector readsIt appears rcheevos expects user data, not raw sector data
buf2442 -> buf2448It’s not a 2442 byte buffer
Add a new DiscSectorReader policy: inspect the sector, but assume mode 2 form is 1

This behavior “needed” for rcheevo hashing to work, since a few games (e.g. `Chinmoku no Kantai – The Silent Service (Japan)`, maybe others) have mode 2 form 2 sectors for the exe (for some reason)
Do RetroAchievements PSX hashing betterMake sure to scan entire directory record (some games seem to end up ending the search early with the old code)
Find “BOOT = cdrom:” with any variable amount of whitespace
Do PSX RetroAchievements hashing subdirectory handling better
Fix off by 1 in PSX RetroAchievements disc hashing
Fix DSKIdentifier ModChecksum functionThis never worked. Will probably fix a whole bunch of core-selection issues (including ones listed here: https://tasvideos.org/HomePages/CloakTheLurker/ZXHawk)
simplify GetModChecksum256
Fix crashes with GPU compute renderer w/ wbx states
[ZXHawk] Remove ParseDisk() track limitThis fixes 3D Construction Kit and potentially other dsk games with more than 42 tracks on disc.
The +3 disc drive may only be able to read 41-ish tracks of standard sized data, but it appears many images have more tracks than this. 3D construction kit for example has 45 tracks in what passes for the TOC, but the last 5 of these are empty.
implement dirty checking for N64 settings
Add Analyzer to require class/struct keyword on recordsfixes eef190d, e8c957a, and c68dd70
Add more invisible heap for melonDS
force real bios file usage if an encrypted DS rom is used
fix a new waterboxhost warning
fix mupen buffer overflow checks; fix pure interpreterresolves #4095
Add more NDS extensionssrl -> “official” DS rom extension (generally found in prototypes etc)
dsi -> used for DSi only games
ids -> used for iQue DS games

upstream handles all these rom extensions already
Do encrypted DS rom detection better
fix host mouse to touch input weirdness with melonDS savestates
some WatchEditor code style
fix watch combo boxes being cut off
Fill in Stella upstream version
Add SequenceEqual extension to prevent linq usagethis speeds up the state history integrity check by about an order of magnitude
Optimize ZwinderStateManger.GetStateClosestToFrameAllStates() sorted the returned states, but this order was not used anywhere else, so I’ve removed it. GetStateClosestToFrame is solvable in O(n), so sorting is not required there either.

This is an O(n log(n)) -> O(n) improvement that is mostly relevant for the state history integrity checker
cleanup some SequenceEqual related code
Restore BitmapBuffer.AsSpan and add AggressiveInliningfixes 9a5a75e and 7ab2ca6
puae: dependent upon
Move gamedb init before single-instance check
Extract method from Database.InitializeWork, clean up, and add test
Add setup for profiling gamedbsimply build with
`-p:MachineExtraCompilationFlag=BIZHAWKBUILD_RUN_ONLY_GAMEDB_INIT`
Avoid string.Split in Database.InitializeWorkOn my machine (Mono) in Release config, this reduces the number of
string- and char-arrays allocated by an order of magnitude,
bringing the gamedb’s total bytes allocated down by -10%.
[ChannelFHawk] ICodeDataLogger
[ChannelFHawk] More sensible viewport trimming and set default viewport to AllVisible
[ChannelFHawk] Some code tidy
[A7800Hawk] Make ProLine controller default for the core. Fixes #3895
puae: block some unsupported images, reduce heap sizes
puae: support region changesby user at the start and by the game on the fly
todo: ntsc par (pal par is 1:1)
Clarify dropdown options in Record Movie dialog
s/firmwares/firmware/ in strings
s/firmwares/firmwareIDMap/ in Nyma core init methods
s/firmwares/firmware/ in PathEntryCollection
s/firmwares/firmware/ in FirmwaresConfig member identifiers
Rename FirmwaresConfig{,Info} to FirmwareConfig{,Info}
Rename FirmwareConfig{,Info}.cs to match type names
s/firmwares/firmware/ in MainForm member identifiers
s/firmwares/firmware/ in comments
expose DSi NWRAM
attempt to fix fm2 importThis will now add reset and power buttons if fourscore is used (pretty sure not doing that was a bug as per comment) and ignore port0 and port1 values if fourscore is set as per movie format documentation.
Clean up Windows version detection, now flagging Win11 21H2
Fix Windows 10 LTSC incorrectly being marked as EOLclever hack, no?
use FileData, not RomData for NDShomebrew roms unpadded might be misdetected as having a “”header”” and have the first 512 bytes removed for RomData
set C64 retroachievements memory to RAM rather than System Bus
[ChannelFHawk] Add newer Mikebloke games to gamedb
[ChannelFHawk] Latest homebrew golf version to gamedb
Print out exception from opengl version check failure
replace most SDL_SetHint calls with SDL_SetHintWithPriorityensures calls actually do something and won’t be ignored due to env vars
fix buggy audio when closing lid
Fix TIC80 schema
Fix cue file resolvingfixes e893e3a
Make sure RAIntegration uses our user agent versioning
Do basic “protection” against RA api tokens in the config
Improve string encryption
Fix CI buildapparently didn’t commit this
Change label of Trace Logger’s toggle button
puae: controller config wip
puae: fix crash
Remove unused importsfixes 869bef4
explicitly unload GL library when falling back to GLX
Use FrozenDictionary for DatabaseIn a simple benchmark of calling `Database.CheckDatabase` 5x 10M times
(small edit on top of `BIZHAWKBUILD_RUN_ONLY_GAMEDB_INIT`),
median runtime was 46.1s w/ `Dictionary`, 44.0s w/ `FrozenDictionary`
(isolated to only swapping out the collection type used at the end of
`InitializeWork`, *not* a before/after comparison on this changeset,
also this was in Release config).
FWIW, the parse/load time increased from 0.38s to 0.74s
(again median of 5 runs in Release config, and this was a before/after
of this whole changeset).
puae: wip
Nix expr: Regen NuGet lockfilefixes 83c0ea8
Remove explicit check for NixOS distro which is no longer necessaryconfirmed fixed by fe500ef
Add 3DS to MultiDiskBundler system options
puae: controller config somewhat works
puae: fix something
Add an IV for string encryption
Change axis button thresholdsSee #4108
pull bsnes upstreamb815744b4cff6d6854090545b78ae8e1a6669976: change target address to 24 bits instead of 16 for DMAs to BWRAM to reflect size of DDA register
what the fuckwhat the fuck
if I send my ports to puae’s 0 and 1, both go to port 0
if I send my ports to puae’s 1 and 2, they go to ports 1 and 2
if I send both of my ports to puae’s 0, they go to ports 0 and 1
what the fuck
wip
wip2
fix middle mouse button input bindhalf the code was using `WMouse M`, the other `WMouse C`. I think `WMouse M` makes the most sense.
enable stripping for a bunch of self-built dlls
strip checked-in binariesI only touched the ones self-built by us here. There’s some more potential candidates like chd_capi and waterboxhost but those are rust-built so I’d rather not touch them for now
revert to older mic blow samples
commit melonDS build
Fix SNES Action Replay cheatcode decoderseems to be a typo from d0db418
(4bfb4ab/#1867)
Fix width for SNES Action Replay cheatcode decoder, add test case
Add Nobara Linux support to EmuHawkMono.shSome Fedora based distro, needs /usr/lib64

Bizhawk Emu Crash
byu/AWildAthena inNobaraProject


Move Bk2MnemonicLookup to BizHawk.Emulation.Commonfixes a080086 (PR #3782)
Implement hashing for 3DS romsTODO: Add gamedb entries
Fix 3DS hasher bug
Fix saturnus setting overrides- fixes #4114
fix axis value editing logic in TAStudio- closes #4115
specifically allow typing without immediately clamping to the min value when the user isn’t finished
Mark PSX on PSP BIOS files as unacceptablePolicy here is non-3.0 BIOS files are unacceptable: they aren’t what mednafen is expecting
Adjust Saturnus’s settings for core updates
Add support for ST-V (with Saturnus)
c# side changes for ST-V with Saturnus
Add function for getting input device overridesOnly use case in practice for us is ST-V, which forces specific input configs (since it’s an Arcade machine)
Fixup ST-V input device selectionNo multi-tap with ST-V, and it’ll get overrides for the ports anyways
Add mnemonics for ST-V
Add IsSTV for Saturnus movies with ST-V, cleanup default movie headervalues code
Add platform framerates for Saturn
fix GmvImport’s six button controller handling- closes #3797, closes #4109
Add initial 3DS gamedb
Fix gamedbfixes 9fd58a7
puae input: fixed?
Add CIA hashing to N3DSHasherIn practice this won’t be used (since we can just hash the installed title executable directly), but might as well keep a reference C# impl in case we want to use it.
close #4102 (puae floppy speed)
no magic
Fix enum comparison in PUAE ctorfixes 15af421
Fix N3DSHasher with seed crypto
puae: disable fastmem for a1200there are games that require this machine and 0 fastmem. games that require non-zero fastmem on this machine are currently not supported (HDs, CDs, and WHDs).
Add in digital titles for 3DS gamedb
puae: it’s unclear if mouse_deltanoreset helps with anything currentlyit seems to always be true in winuae…
also cleaned up our fork a bit
[mGBA] Fix light counter not being correctly serializedResolves #4094 and resolves #4118
Linux mgba build
Fix tracelogger layout
puae: fix framerate and resolutions, cleanuptodo: av dumper dies in ntsc mode on frame 11…
Link to GitHub wiki from contribution guide
puae: fix crash on null settings
puae: keyboard image
amiga icon
POC for [Dependency] (eager asm loading)
Revert “POC for [Dependency] (eager asm loading)”This reverts commit d23e771.
Had no effect on where in the startup a `TargetInvocationException` was thrown, so I’m guessing the attribute has no purpose anymore.
puae: fix fps
Improve Lua REPL handling of statements (squashed PR #4026)* Improve Lua REPL handling of statements
Stop printing syntax error messages when executing variable assignments etc.
* Move doc comments to interface
* Simplify pattern matching expression
* Use reference equality to test for console output
* Revert “Use reference equality to test for console output”
This reverts commit 875bc3c.
* Use `_messageCount` to test for console output
Nix expr: Fix DiscoHawk launch script assuming EmuHawk has ran before
[GPGX] Add offscreen shot control, make lightgun inputs always use the correct screen width/height
Fixes #4120
puae mnemonics
update mgba
Use newer mRumbleIntegrator
mGBA windows build + C# side changes
properly init mRumbleIntegrator
mgba windows build

Atualizações: