Commit Graph

4878 Commits

Author SHA1 Message Date
YoshiRulz fe7ecceb64
Enable RCS1043 and fix noncompliance
"Remove 'partial' modifier from type with a single part"
2025-01-29 22:29:59 +10:00
YoshiRulz 8332a6bd5e
Add `Roslynator.Analyzers` 2025-01-29 22:16:49 +10:00
YoshiRulz 12cd7885ec
Enable CA1862 and fix noncompliance
"Use the 'StringComparison' method overloads to perform case-insensitive
string comparisons"
2025-01-29 22:11:54 +10:00
YoshiRulz 96207e80ea
Extract some extensions for string `OrdinalIgnoreCase` comparisons
`Contains`/`Equals`/`StartsWith`
refactored a few call-sites while I was at it
2025-01-29 21:51:21 +10:00
YoshiRulz a9fd86689e
Replace `InvariantCultureIgnoreCase` str. cmps. w/ `OrdinalIgnoreCase`
doesn't matter for ASCII-only strings, and `InvariantCultureIgnoreCase`
is arguably correct in some circumstances, but IMO it's more foolproof
to simply ban it
2025-01-29 21:48:33 +10:00
YoshiRulz 5f29b50940
Fix indentation in `SpectrumBase.Media.cs` 2025-01-29 21:47:28 +10:00
YoshiRulz 45581b2370
Fix loading discs for systems we don't emulate when it's for Libretro
fixes d9da3cfa6
(...since the Libretro core may emulate any system, and the intent here
was always to just pass the file through)
2025-01-29 12:12:56 +10:00
Morilli 1f53cec80b fix AdjustDescriptionHeightToFit calculation
- closes #3962
2025-01-28 21:41:23 +01:00
Morilli 26ef1ac2af improve SDLResampler
this distorts audio less when muting the stream for a while + general cleanup
2025-01-27 17:47:57 +01:00
Morilli cc45a6ec2d improve GetProcAddrOrThrow/LoadOrThrow error messages 2025-01-24 10:57:15 +01:00
feos 146e297a94 tastudio: position restore logic was missing when drawing analog 2025-01-19 21:35:43 +03:00
feos fe13b85d17 tastudio: nuke NewTASMenuItem accelerator
fixes #3376
2025-01-19 20:49:35 +03:00
YoshiRulz 4c3ea14efc
Allow empty string (for "recent") in `MainForm.SanitiseForFileDialog`
fixes 1cee9dff6
2025-01-20 02:09:14 +10:00
feos 8310e5420c Revert "fix wrong pause in AutoAdjustInput()"
This reverts commit b2f3bb3cba.

Revert "fix removing everything"
This reverts commit a0da874431.

YEP. this "feature" is COMPLETELY, ABSOLUTELY, UNIVERSALLY fucked. sure #4184 can be "fixed" by flipping some bools, like setting MainForm.HoldFrameAdvance back to false in TasView_MouseWheel. but then there's still the problem of removing actual input if farther lag picture changed after initial removal, and I'm not going to debug that. taseditor's ONLY bug was related to erroneous detection of lag change that we were never able to consistently reproduce or figure out, and it's completely impossible to replicate identical behavior in tastudio due to crazy overhead. but even SIMULATING that behavior would involve touching that minefield of bools that control everything in insane ways. given zero requests for this feature during tastudio's decade of existence, I'm considering it too useless for all the chaos it introduces.

so instead I'm closing #4184 by disabling the "feature" that caused it
2025-01-19 16:02:56 +03:00
YoshiRulz d8508acb69
Fixups to signature of `HttpCommunication.ContentObjectFor` method
fixes 41547824a
2025-01-17 08:25:12 +10:00
YoshiRulz 1437bc3a98
Include unreleased cores in About dialog (resolves #4168) 2025-01-17 06:54:44 +10:00
YoshiRulz 58213f3534
Undo unrelated changes from previous commit
partially reverts 6c4cea23e
2025-01-17 04:53:52 +10:00
CasualPokePlayer 6c4cea23e6 Don't do checked decimal -> float/double conversions
fixes exception on viewing movie info with Arcade movies
2025-01-16 09:59:08 -08:00
Morilli 7f3bf70229 bump various packages 2025-01-16 17:31:54 +01:00
YoshiRulz 41547824aa
Minor refactor to `HttpCommunication` 2025-01-17 01:30:12 +10:00
YoshiRulz 08dd34f42b
Rename `HttpCommunication.ExecPost` and add docs 2025-01-17 01:30:12 +10:00
YoshiRulz 88c54d11b6
Don't persist `ExpectContinue` setting through multiple requests
fixes 544b8007d
2025-01-17 01:25:30 +10:00
papercrane 544b8007dc
Only send `Expect` header for `comm.httpPost` when payload is large (squashed PR #4188)
* BizHawk#4187 Add a method to the comm LUA library to allow setting ExpectContinue

* Instead of exposing ExpectContinue set it automatically based on a threshold
2025-01-17 00:32:28 +10:00
YoshiRulz 0d05c1d263
Prevent CDL's "Disassemble..." when not implemented crashing EmuHawk
(by disabling the button)
see #1274
2025-01-16 05:34:04 +10:00
feos 93f33815ed alphabetize PlatformFrameRates and add amiga 2025-01-15 19:07:17 +03:00
feos 1e839b8802 uae: implement IRegionable 2025-01-15 19:06:48 +03:00
CasualPokePlayer f3629a9e86 [Encore] Fix System Bus endianness 2025-01-14 08:01:12 -08:00
CasualPokePlayer 1a1de0fa67 [Encore]
Remove GetVideoVirtualDimensions (no longer used)
Add System Bus domain
Fix deterministic time functionality using timezones when they should not
2025-01-14 07:08:23 -08:00
CasualPokePlayer 20d7355227 Do not create File On Disk domain for 3DS 2025-01-12 12:49:03 -08:00
YoshiRulz c5a4ec9b81
Make `HawkFile.ReadAllBytes` seek to start
fixes 633681804
2025-01-11 22:28:16 +10:00
YoshiRulz 09f8e8c544
Document semantics of `Stream.ReadAllBytes` extension 2025-01-11 22:24:10 +10:00
CasualPokePlayer 633681804d Actually don't dispose hawkfile stream after ReadAllBytes()
fixes a30c0efb78
2025-01-10 15:52:35 -08:00
CasualPokePlayer a30c0efb78 Don't dispose hawkfile stream after ReadAllBytes(), fix ReadAllBytes callsites to do disposal properly 2025-01-10 15:00:49 -08:00
YoshiRulz 4aa334244e
Fix `ObjectDisposedException` when loading non-disc rom into Libretro
fixes d9da3cfa6
2025-01-11 07:36:29 +10:00
CasualPokePlayer 6adab25fac Make EncryptString/DecryptString arguments be nullable and properly check for null/empty 2025-01-10 08:31:16 -08:00
YoshiRulz 89e94be8c1
Memoise a value during Lua lib function enumeration 2025-01-10 23:14:21 +10:00
YoshiRulz ea810cb89b
Hide unavailable Lua libs from REPL autocomplete
see #4167
2025-01-10 23:12:20 +10:00
YoshiRulz 7149609229
Gen docs for methods in Lua lib classes even w/o `[RequiredService]`s
resolves #4167
2025-01-10 23:06:27 +10:00
CasualPokePlayer 52848a3d27 Add Haswell to GL interop blacklist 2025-01-10 02:40:22 -08:00
YoshiRulz 1cee9dff60
Ensure file pickers (via `IDialogParent`) don't choke on bad paths
see also #4077 but that's still open while this is clear-cut
2025-01-10 07:20:58 +10:00
YoshiRulz fe871ba5c7
Prompt to switch cores before recording with A2600Hawk or TI83Hawk 2025-01-09 22:35:08 +10:00
YoshiRulz da993c77fd
Fix typo in ChannelFHawk settings UI 2025-01-08 04:24:05 +10:00
YoshiRulz ebd9cde063
Bump `VersionInfo.MainVersion` for dev builds 2025-01-08 03:11:21 +10:00
feos dd23282049 release uae 2025-01-07 19:29:10 +03:00
feos 2aa331213e 2.10 2025-01-07 18:54:34 +03:00
YoshiRulz 0666c21748
Cleaner fix for locale files
reverts 6db32e997
2025-01-08 00:44:26 +10:00
YoshiRulz 6db32e9979
Fix System.CommandLine leaking locale files into output
see #3888
2025-01-08 00:00:26 +10:00
YoshiRulz 6ba50f5eb2
Remove duplicate button names from SMSHawk's SK-1100 ControllerDef
fixes #4134
2025-01-07 22:54:04 +10:00
saxxonpike 0adf2f97d7 [C64] Fix up implementation of SaveRam 2025-01-07 22:06:17 +10:00
saxxonpike 6f7097ee07 [C64] DiskTrack implementation to simplify delta tracking 2025-01-07 22:06:17 +10:00
saxxonpike 6a8a5aa41e [C64] Move SaveRam implementation to its own partial 2025-01-07 22:06:17 +10:00
CasualPokePlayer ce44d7e4f8 Disable GC Adapter support by default (due to it interfering with other controllers)
Resolves #4165, resolves #4083
2025-01-07 04:01:10 -08:00
CasualPokePlayer 24a4b47adf don't try to "fix" y axis in touchpad (it should just match the mouse convention), add touchpad button to default controls for nds/3ds touch
note that touchpad axes aren't put in default controls, can't actually have multiple axes bound at the same time
2025-01-07 02:11:10 -08:00
CasualPokePlayer cf1c2a9d7e Whitespace fix from last commit 2025-01-07 01:43:12 -08:00
CasualPokePlayer 2bc4a7ee56 Add support for game controller touchpads (i.e. on PS4/PS5 controllers) 2025-01-07 01:41:58 -08:00
CasualPokePlayer e4a4493843 Make IsCGBDMGMode actually work for movies 2025-01-06 13:49:20 -08:00
CasualPokePlayer 08e3246ec9 Use config SoundVolume for retroachievement sound effects
Probably want this to be a separate setting later on, but this is probably better than forced 100% volume
2025-01-06 13:35:14 -08:00
CasualPokePlayer fafb1ab3e3 [RetroAchievements] Separate leaderboard complete sound effect.
Default file is just a duplicate of unlock.wav, a user can put in their own wav file if they choose to.

Resolves #4166
2025-01-06 13:27:40 -08:00
YoshiRulz d9da3cfa60 Set game name for Libretro when available
resolves #4144
2025-01-05 23:03:38 +10:00
YoshiRulz 407c26e9d5 Encapsulate `LibretroHost` constructor 2025-01-05 23:03:38 +10:00
YoshiRulz ddd14d5274
Attempt to locate `.cue` for PSX `.bin` before synthesising one
see #4146
2025-01-05 22:12:46 +10:00
YoshiRulz 04955ea228
Use deterministic filenames for synthesised PSX `.cue`s
resolves #4146
2025-01-05 22:12:18 +10:00
YoshiRulz 7514ea73c7
Revert "Remove "direct" bin file handling"
This reverts commit a2d97dfb5f.
2025-01-05 22:12:17 +10:00
YoshiRulz e2fb1c7f08
Improve documentation of some `gui`, `forms`, and canvas Lua functions
see #3851
2025-01-05 21:10:48 +10:00
YoshiRulz 82b22266b0
Improve error messsages for `forms.draw{Icon,Image,ImageRegion}` 2025-01-05 20:30:11 +10:00
YoshiRulz 6ffc71b183
Minor improvement to `LuaPictureBox.DrawPolygon` 2025-01-05 20:30:08 +10:00
Tony Konzel ed59b5e874
[C64] Fix Domark/HES/MagicDesk cartridge mapper bank loading (squashed PR #4162)
* [C64] Fix loading Domark cartridges that don't have a bank count that is a power of 2, and add a memory domain for the ROM image

* [C64] Fix bracket styling
2025-01-05 20:14:30 +10:00
saxxonpike 99ca3be22a [C64] EasyFlash overhaul
- Implement the AM29F040B flash device as its own component
- Fix save data for games that use the standard EasyAPI driver
- Fix "Briley Witch Chronicles 2": the flash driver checks AutoSelect register 02 to see if the cartridge is write-protected
- Rom is stored as bytes instead of ints, saves a lot of memory
- EasyFlash now has proper hard reset and clock operations
- SaveRam deltas fixed
2025-01-04 18:19:23 +10:00
saxxonpike 83ea4bfb1c [C64] Fix a situation where the SID filter stage would pass through voices selected to be filtered while no filters are actually enabled 2025-01-04 18:19:01 +10:00
Morilli 9dc3e0cf84 Respect queued movie's logkey in RunQueuedMovie
should (resolve) #4159
2025-01-03 14:12:02 +01:00
YoshiRulz 05fd64a5e6
Remove now-unused prop `IMainFormForTools.OnPauseChanged`
fixes 7b904b171
2025-01-03 02:23:31 +10:00
Morilli 5f36cacfd2 cleanup some debugger calls
this also fixes double-load on start, which is especially noticeable in debug with waterbox cores
2025-01-02 15:18:45 +01:00
Morilli 238e7bca1e don't disassemble unnecessarily many instructions in the debugger
fixes fc92d3c63e
2025-01-02 14:51:50 +01:00
Morilli 7b904b1715 don't rely on PauseChanged in debugger
this doesn't work anymore with 7c38810e9e and was questionable to begin with
2025-01-02 14:50:54 +01:00
Morilli b93a995083 unsubscribe from events in core Dispose methods
- closes #4157

Not sure this is the best way to fix the linked issue, but considering this is a hard crash I'd rather fix it somehow than not at all for now.
2025-01-02 14:26:24 +01:00
Morilli b8baf21788 fix selection color in TAStudio
- closes #4158

fixes bd3f919129
2025-01-02 05:00:25 +01:00
Morilli 7c38810e9e short-circuit EmulatorPaused setter when value isn't changing 2025-01-02 04:36:53 +01:00
YoshiRulz 2cb6d2c0fc
Use lazy initialisation for `IOExtensions.ShiftJISEncoding`
see #4150
2024-12-30 22:09:30 +10:00
CasualPokePlayer 0ec54fe9d6 Make touch input interpolation configurable 2024-12-29 22:08:54 -08:00
CasualPokePlayer 3a8024b235 Only stop/start sound on resize on Windows
Windows will "freeze" the main thread in message pumping while resizing is occurring, while this does not occur on Linux.

Resolves #4145
2024-12-28 23:16:08 -08:00
CasualPokePlayer 24d549ddb8 Apply volume setting to BizBox not hawk sfx 2024-12-27 07:06:11 -08:00
YoshiRulz 694aa867ec
Fix artifacting on firmware status icons under Mono 2024-12-26 00:57:15 +10:00
YoshiRulz 31dd2dbd2f
Use `SortedDictionary` for `FirmwareConfig.Status{Descs,Icons}` 2024-12-26 00:55:51 +10:00
YoshiRulz 7350e0f7ce
Remove unused imports
fixes b09134489
2024-12-23 02:48:45 +10:00
YoshiRulz b091344896
Actually fix `GenOrderedControls` invariant, dropping Libretro hack
fixes a8368849a and 3384ce862
2024-12-23 02:37:56 +10:00
YoshiRulz 1eb8433b4a
Sort rom file picker filters 2024-12-23 02:20:00 +10:00
YoshiRulz 44dae6428d
Add bundles to rom file picker 2024-12-23 02:20:00 +10:00
YoshiRulz 319bfd3d3a
Show `.exe`s in rom file picker for PSX
see fa0c69344
2024-12-23 02:20:00 +10:00
feos 3384ce8629 input OSD: fix potentially absent P0
I don't know if there's any core that lacks non-player controls but this feels like the right thing to do anyway (for the future too)
2024-12-22 19:07:22 +03:00
feos fcff79e794 uae: fix double eject 2024-12-22 17:51:59 +03:00
feos 0e300fc094 fix #4142
store slot index for each drive instead of filename, and add it to savestates
2024-12-22 16:25:21 +03:00
feos a8368849a9 fix #4132
controls that don't belong to any indexed player are put at index 0, which makes them appear in front of everything that's used all the time. when there's only a few of those, it's fine. but for systems with keyboards, you have to fullscreen the emulator window to even see regular inputs

I moved index 0 to the end for input display, but didn't touch the original generator, since it may affect other things I'm not sure about (and I'm not smart enough to properly change it)
2024-12-22 14:53:12 +03:00
Morilli 1526de58ad Remove outdated SystemLookup
- closes #4143 by using EmulatorExtensions.SystemIDDisplayNames instead
2024-12-22 10:20:22 +01:00
YoshiRulz cf90a96af0
Fix an error message from Cheats displaying an address in decimal 2024-12-19 06:20:33 +10:00
YoshiRulz 4bf29a6b00
Optimise all PNGs in main solution
fixes libpng errors from images added in 9e9687f02
2024-12-19 03:08:27 +10:00
YoshiRulz 3095aca86a
Use `StringPool` from CommunityToolkit in `ToUpperASCIIFast` extension
from be0736be4 (+ cherry-picked ccba93440) to this commit:
- `Database` reported runtime 0.64 s --> 0.68 s
- profiled `ParseCGIRecord` mean runtime 0.190 ms --> 0.179 ms
- `GameDBHelper` 1M lookups reported runtime 1.03 s --> 0.69 s
- managed allocations (w/o the 1M lookups) 131 MiB --> 123 MiB (fewer
strings but more char[]s?)

since `CompactGameInfo` obviously can't store `Span`s, I tried with
`StringSegment`, but it made both lookups *and init* slower, thanks MS
2024-12-17 01:03:41 +10:00
YoshiRulz c2200cb234
Use allocless `ReadOnlySpan.Split` in `Database.InitializeWork`
reverts 4c69ce4e2
2024-12-17 01:03:41 +10:00
YoshiRulz d72332e97d
Backport `ReadOnlySpan.Split` and co.
Includes: `Range`/`Index` and other polyfilled types are now `public` in
BizHawk.Common rather than `internal` in each assembly. Not for dedup
reasons--though that's probably good too--just because it was necessary
for exposing these new `public` methods with `Range` in their params.
2024-12-17 01:03:41 +10:00
YoshiRulz 48f5125c84
Improve `BIZHAWKBUILD_RUN_ONLY_GAMEDB_INIT` 2024-12-17 01:03:41 +10:00
feos 9e9687f026 rework firmware icons
better tooltip for deal bind
2024-12-15 20:11:12 +03:00
YoshiRulz ab5d92f319
Add note to `--help` re: rom argument
thanks MS
2024-12-15 22:50:14 +10:00
YoshiRulz 6cb19d8b8e
Fix typos
fixes 8645ed3bb
so the speedup isn't as big as with the broken code, but it's close
I think I'll be changing this again to use Span and I'll reprofile then
2024-12-15 15:09:55 +10:00
YoshiRulz 8645ed3bb9
Optimise `Database.FormatHash`
runtime (as reported by `Database`) reduced by -14%, allocations reduced
by -5%, and number of calls reduced by -32%
this is all under Mono so YMMV
2024-12-15 14:37:31 +10:00
feos fc2b37cab7 uae: fix DevilsTemple 2024-12-14 23:14:59 +03:00
feos 18078c8764 rename puae to uae
while libretro initially ported original puae (which is long dead), they switched to just pulling updates from winuae every once in a while (and renamed to libretro-uae), because it's still active and is kinda considered golden standard these days
2024-12-14 19:01:31 +03:00
feos 4274b75379 puae: fix drives population with slots 2024-12-14 18:39:29 +03:00
CasualPokePlayer c5c8b6bdd9 Don't open choose file from archive dialog when trying to fallback to a different core for a MAME ROM
The fallback is intended in cases where there is a misdetection for MAME ROMs, since it just goes off the archive's filename against a db. MAME ROMs will not have any sensical ROM extensions in them, and will most likely just have multiple files in it. As such, if this is actually a MAME ROM, they're pretty much guaranteed to show the choose file in archive dialog, which would confuse users. If it's not a MAME ROM, it most likely will not show this dialog and will just be loaded by the appropriate core (of course in practice this likely doesn't occur anyways, since most users likely just have their ROMs named with dat names like No-Intro etc which never match MAME's names).
2024-12-11 19:39:07 -08:00
feos b8ec340c90 puae: fix crash on switching to initially empty drive 2024-12-11 18:47:31 +03:00
YoshiRulz 56e5105d0d
Fix `Order{,Descending}` preventing GitLab CI from building tests 2024-12-11 10:22:54 +10:00
Morilli 2b71ff9a79 rename duplicate suggested firmware file names
- closes #4136
2024-12-10 22:53:38 +01:00
feos eed7b601ed space 2024-12-10 19:32:40 +03:00
feos aca5ccae50 puae: fix region change 2024-12-10 19:31:46 +03:00
feos dad929fd9f that's very helpful, thanks 2024-12-09 20:55:01 +03:00
feos 656618f310 analyzer makes sure to only ever report one problem at a time? 2024-12-09 20:48:43 +03:00
feos e02d22a044 k 2024-12-09 20:44:21 +03:00
feos b1c43a6379 file 2024-12-09 20:39:54 +03:00
feos 48913b4653 puae: led light 2024-12-09 20:35:24 +03:00
feos 6f7a1de25c puae: use winuae icon since it's more canonical 2024-12-08 16:52:11 +03:00
feos 2cd22490e9 uae: print slot/drive contents (#4138)
fix wrong const in the core
2024-12-08 14:54:27 +03:00
YoshiRulz 384b6f17a7
Add unit test for duplicate firmware filenames 2024-12-07 08:25:45 +10:00
Morilli 69b61b574d fix RecalculateScrollBars
- closes #4133.

This has a 50% chance of breaking something else (it either happens or doesn't), but should be more correct. Mainly, RecalculateScrollbars was called based on visible rows which depend on whether scrollbars are visible or not, but the NeedsVScrollbar calculation did not take the existence of the HScrollbar into account, leading to an off-by-one. I think.
2024-12-05 22:50:27 +01:00
Morilli 49458ab182 fix TAStudio input roll display issues
Resolves the remaining bug mentioned in https://tasvideos.org/Forum/Topics/12519?CurrentPage=85&Highlight=532467#532467
2024-12-05 19:28:04 +01:00
feos 29b848d336 remove harder
see d89035c400
2024-12-05 12:40:40 +03:00
YoshiRulz fac788a455
Revert unrelated changes to `TAStudio.Designer.cs`
fixes 1da3e4d77
see 0189b5110
2024-12-05 14:40:45 +10:00
YoshiRulz 0189b5110d
Revert whitespace changes to `TAStudio.Designer.cs`
fixes 1da3e4d77
2024-12-05 11:14:45 +10:00
feos a0da874431 fix removing everything
closes #734
2024-12-05 01:26:58 +03:00
feos b2f3bb3cba fix wrong pause in AutoAdjustInput()
it has to rewind to remove a frame, which makes it pause on first removed frame when we hit restore, instead of going all the way to LastPositionFrame. I tried a ton of things to fix it, and they break one of the 3 scenarios of going from the edited frame, emulating through removed was-lag frames until LastPositionFrame, and pausing there:
- autorestore
- restore manually via middle-click or the || button
- step frame by frame using wheel+RMB
wheel+RMB steps used to unpause in wrong places because paused state was disabled when it fires, so we couldn't decide whether to unpause or not based on it at the end of AutoAdjustInput(). so I'm enabling """paused""" state inside TasView_MouseWheel(), much like < and > buttons do, except they can be held to force unpause, but here you can't let go of mouse wheel since it already only fires once anyway. I'm disabling this state once tastudio has reached its INTERIM seek frame, and based on it I now can decide to unpause after AutoAdjustInput().

AutoAdjustInput() still has a tiny problem of not advancing the first removed was-lag frame when you go step by step, because it can only go one direction at a time, and it goes up as explained above, but we need it to also go down. this can be forced if we allow tastudio to seek to the CURRENT frame by loading its state and reemulating it, but I don't know if this will cause issues, and nobody is stepping through autoadjusted frames anyway, since it's meant to happen quickly and on autorestore

TODO: removing consecutive was-lag frames seems to remove them ALL!!!

inb4 all this causes other wild bugs...
2024-12-05 00:53:55 +03:00
feos 1da3e4d773 tastudio: AutoadjustInput
remove all consecutive was-lag frames in batch like taseditor does. current frame has no lag so they will all have to go anyway

still need to fix wrong pausing
2024-12-04 22:56:59 +03:00
Morilli cd7605d237 fix code 2024-12-02 00:07:19 +01:00
feos adf74495dc fix #2369
move tasview context menu to the other side of the cursor if it's not fitting into the screen fully. of course if there's not enough space there EITHER, the user must do something about it, meanwhile best we can do is clamp location to 0. not using MouseEventArgs because we need absolute on-screen coords

other tastudio menus are small so probably fine?
2024-12-01 23:10:18 +03:00
feos 05f06aeb5b tastudio: don't let branch screenshot appear below screen edge 2024-12-01 21:59:39 +03:00
feos 28757bd8be control extension to center the new dialog on mouse pointer 2024-12-01 21:59:39 +03:00
feos 2211a4186f control extension to ensure onscreen dialog spawn
applied to tastudio dialogs (branch/marker text will use it later)
2024-12-01 21:59:39 +03:00
feos d89035c400 unify tastudio dialogs:
- the only dialog that's meant to be used during emulation is undo history, so let it spawn at its old location in the middle of the screen. user will move it regardless of where we spawn it
- positioning of input prompts will happen later
- all config/metadata dialogs now block tastudio and spawn at the top just like open/save. user is clicking tastudio menu so it's distracting if those dialogs spawn too far away from where they're already looking. and the middle of tastudio can be indefinitely far away because it can easily occupy the entire screen (we have cores with tons of buttons, and some users like to make it as tall as the screen). so while in the middle is """consistent""", it's very annoying if you have to do a lot of consecutive edits (for example to greenzone caps, or colors). overall, top priority of smooth tas workflow, so """consistency""" with unrelated tools made for unrelated tasks is not helpful if it makes the workflow more annoying
- ensuring the dialogs spawn fully on-screen will happen later

removed unused tastudio menus and config params
- branch hover interval was added before I replicated taseditor logic, which makes branch screenshots only appear if you keep the pointer over branch number, and not if you're just moving it around. making it configurable doesn't look useful
- seek cutoff interval (how far target frame has to be to spawn seek progress bar) feels redundant because any onscreen edits won't spawn the thing anyway, and for farther seek points it's not annoying enough to change
- EmptyNewMarkerNotes is not relevant to tastudio because it never copied previous marker notes like taseditor does. currently it does nothing and nobody ever requested it even tho it's in the menu, so there's no evidence anyone ever needed it
- fun fact: I was sure autoadjust input to lag never worked but it mostly does! so it wasn't removed, instead I plan to fix it (it pauses on every added frame). it's also not saved.
- other dialogs use InputRoll so I had to remove those options from them too (tastudio is the only one that they were meant for anyway)

bump undo history to 1k. it may not be needed often but when it is, some actions are not combined (for example it adds every newly emulated frame) so you may end up unable to undo some dumb mistake than was only a few actions ago

use normal control BG color for tastudio color editor. I tried it with dark theme on linux and got no difference. if this causes issues we'll see how to fix it without randomly giving one dialog unique BG color. also removed todo since labels are good now
2024-12-01 21:59:38 +03:00
CasualPokePlayer 6f0ae7128a Add GetRawInputBuffer handling for RawKeyInput
Slightly speeds up windows keyboard handling as it reduces syscalls
2024-11-30 22:30:19 -08:00
YoshiRulz 9d3fc9ce9e
Fix casting event senders to wrong base class
fixes b2184e46d
2024-12-01 12:13:14 +10:00
Morilli 6c49fa7472 add test to check for missing core preferences choices 2024-12-01 00:19:04 +01:00
Morilli d245271649 rename test method 2024-12-01 00:06:19 +01:00
Morilli 320de38c5c consolidate CorePickerStabilityTests 2024-11-30 23:30:08 +01:00
YoshiRulz 04c70c3ead
Only when double-clicking TAStudio frame# cell, open dialog at cursor
fixes 128c8e621
see #3714
2024-11-29 00:41:42 +10:00
YoshiRulz c3bd723c36
Add helper for centering dialog relative to a `Control` 2024-11-29 00:40:33 +10:00
YoshiRulz a39689d62d
Fix duplicate `Form.Dispose` implementation
fixes 6d2d07428
2024-11-28 07:52:14 +10:00
YoshiRulz 6d2d07428e
Make the Basic Bot fail more gracefully 2024-11-28 07:41:06 +10:00
CasualPokePlayer bd90dc6aa6 Fix NRE when spamming right click in TAStudio 2024-11-27 12:47:38 -08:00
YoshiRulz 128c8e6218
Don't open branch/marker edit dialogs at cursor pos
resolves #3714 and #2369
2024-11-28 04:53:47 +10:00
YoshiRulz 75e5088eed
Indicate unsaved changes to movie in window title
see #4064
2024-11-28 04:36:28 +10:00
CasualPokePlayer a7dd37d884 Add Skylake GPUs to GL interop blacklist 2024-11-26 16:42:16 -08:00
Morilli 24d4e89d38 fix TAStudio autohold/fire right-click logic
- closes #4125
2024-11-26 19:49:27 +01:00
CasualPokePlayer 39a896b289 mGBA windows build + C# side changes 2024-11-24 13:39:18 -08:00
feos f7b6703ad2 puae mnemonics 2024-11-24 11:40:36 +03:00
CasualPokePlayer c9666a5647 [GPGX] Add offscreen shot control, make lightgun inputs always use the correct screen width/height
Fixes #4120
2024-11-23 22:22:26 -08:00
kalimag 2bd2aed4aa
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 875bc3c41e.

* Use `_messageCount` to test for console output
2024-11-23 21:41:31 +10:00
feos 7e9e2d553c puae: fix fps 2024-11-22 17:32:37 +03:00
YoshiRulz 223a370713
Revert "POC for `[Dependency]` (eager asm loading)"
This reverts commit d23e771a39.
Had no effect on where in the startup a `TargetInvocationException` was thrown, so I'm guessing the attribute has no purpose anymore.
2024-11-22 09:58:12 +10:00
YoshiRulz d23e771a39
POC for `[Dependency]` (eager asm loading) 2024-11-22 09:39:16 +10:00
feos 90ca8ea6ca amiga icon 2024-11-21 21:18:22 +03:00
feos 1ec2a9a318 puae: keyboard image 2024-11-21 18:09:36 +03:00
feos d3713a6cba puae: fix crash on null settings 2024-11-21 17:30:43 +03:00
feos 118e2876a4 puae: fix framerate and resolutions, cleanup
todo: av dumper dies in ntsc mode on frame 11...
2024-11-20 22:10:56 +03:00
CasualPokePlayer 2a0870234e Fix tracelogger layout 2024-11-19 23:40:05 -08:00
feos 5bdb3b24c6 puae: disable fastmem for a1200
there 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).
2024-11-18 21:47:35 +03:00
CasualPokePlayer 89d76ef6cb Fix N3DSHasher with seed crypto 2024-11-17 16:27:51 -08:00
YoshiRulz 02094fe780
Fix enum comparison in PUAE ctor
fixes 15af4219c
2024-11-18 04:48:59 +10:00
feos 15af4219cd no magic 2024-11-17 19:45:47 +03:00
feos 43b1dfa4b8 close #4102 (puae floppy speed) 2024-11-17 19:43:51 +03:00
CasualPokePlayer 6d8f616dde Add CIA hashing to N3DSHasher
In 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.
2024-11-16 13:51:40 -08:00
feos ef307c1e69 puae input: fixed? 2024-11-16 22:04:52 +03:00
CasualPokePlayer 14d5f5595c Fix gamedb
fixes 9fd58a766a
2024-11-15 20:25:54 -08:00
Morilli 10fdfdd6dd fix GmvImport's six button controller handling
- closes #3797, closes #4109
2024-11-15 17:08:10 +01:00
CasualPokePlayer f173d0f992 Add platform framerates for Saturn 2024-11-14 21:02:26 -08:00
CasualPokePlayer 2c7245d751 Add IsSTV for Saturnus movies with ST-V, cleanup default movie header values code 2024-11-14 20:18:39 -08:00
CasualPokePlayer 8b356c50fa Add mnemonics for ST-V 2024-11-14 20:09:57 -08:00
CasualPokePlayer c4bd436c5c Fixup ST-V input device selection
No multi-tap with ST-V, and it'll get overrides for the ports anyways
2024-11-14 19:50:18 -08:00
CasualPokePlayer 8708fc3e35 c# side changes for ST-V with Saturnus 2024-11-14 17:35:43 -08:00
CasualPokePlayer 9fe5b316b3 Adjust Saturnus's settings for core updates 2024-11-14 01:39:41 -08:00
CasualPokePlayer a8d86e7af0 Mark PSX on PSP BIOS files as unacceptable
Policy here is non-3.0 BIOS files are unacceptable: they aren't what mednafen is expecting
2024-11-14 00:11:44 -08:00
Morilli 926a88b11a 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
2024-11-13 13:23:54 +01:00
Morilli 7477aa3359 Fix saturnus setting overrides
- fixes #4114
2024-11-13 11:10:19 +01:00
CasualPokePlayer c44a3a6b67 Fix 3DS hasher bug 2024-11-13 01:08:44 -08:00
CasualPokePlayer ab4cb30011 Implement hashing for 3DS roms
TODO: Add gamedb entries
2024-11-13 00:12:16 -08:00
YoshiRulz 699fc8d198
Move `Bk2MnemonicLookup` to `BizHawk.Emulation.Common`
fixes a0800862b (PR #3782)
2024-11-13 16:15:02 +10:00
YoshiRulz f9d3d91d34
Fix width for SNES Action Replay cheatcode decoder, add test case 2024-11-12 02:41:17 +10:00
YoshiRulz ae6ff1dac9
Fix SNES Action Replay cheatcode decoder
seems to be a typo from d0db4188d3
(4bfb4ab00/#1867)
2024-11-12 01:54:05 +10:00
Morilli acb14cf07d fix middle mouse button input bind
half the code was using `WMouse M`, the other `WMouse C`. I think `WMouse M` makes the most sense.
2024-11-11 02:47:05 +01:00
CasualPokePlayer b0540bf6d2 Change axis button thresholds
See #4108
2024-11-08 15:57:00 -08:00
CasualPokePlayer 411959e399 Add an IV for string encryption 2024-11-08 15:56:59 -08:00
feos 4c3b59c39c puae: fix something 2024-11-08 20:28:53 +03:00
feos e501d10804 puae: controller config somewhat works 2024-11-08 19:45:38 +03:00
CasualPokePlayer 8f1b647504 Add 3DS to MultiDiskBundler system options 2024-11-07 15:03:27 -08:00
YoshiRulz f2841f7849
Remove explicit check for NixOS distro which is no longer necessary
confirmed fixed by fe500ef61
2024-11-08 06:35:57 +10:00
feos a2d401d670 puae: wip 2024-11-07 23:25:50 +03:00
YoshiRulz 9fd58a766a
Use `FrozenDictionary` for `Database`
In 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).
2024-11-08 02:29:59 +10:00
CasualPokePlayer fe500ef61b explicitly unload GL library when falling back to GLX 2024-11-06 22:30:25 -08:00
YoshiRulz 4e4377f0e9
Remove unused imports
fixes 869bef498
2024-11-07 10:05:20 +10:00
feos 7c88dba814 puae: fix crash 2024-11-07 00:08:19 +03:00
feos 869bef4989 puae: controller config wip 2024-11-06 20:56:22 +03:00
YoshiRulz 6b2d2cb646
Change label of Trace Logger's toggle button 2024-11-05 20:21:00 +10:00
CasualPokePlayer 6853439075 Improve string encryption 2024-11-05 00:59:03 -08:00
CasualPokePlayer c9bed01b13 Do basic "protection" against RA api tokens in the config 2024-11-03 23:39:42 -08:00
CasualPokePlayer f4d5db5693 Make sure RAIntegration uses our user agent versioning 2024-11-03 19:37:50 -08:00
CasualPokePlayer 2cdf1e99bf Fix cue file resolving
fixes e893e3a1ff
2024-11-03 06:47:45 -08:00
CasualPokePlayer 666139f8e9 Fix TIC80 schema 2024-11-01 15:34:37 -07:00
CasualPokePlayer 6578c852a1 replace most SDL_SetHint calls with SDL_SetHintWithPriority
ensures calls actually do something and won't be ignored due to env vars
2024-10-30 08:18:23 -07:00
CasualPokePlayer 9f3630cbce Print out exception from opengl version check failure 2024-10-30 01:12:40 -07:00
CasualPokePlayer cdbb96dfdb set C64 retroachievements memory to RAM rather than System Bus 2024-10-29 06:50:06 -07:00
CasualPokePlayer 78cc5393e4 use FileData, not RomData for NDS
homebrew roms unpadded might be misdetected as having a ""header"" and have the first 512 bytes removed for RomData
2024-10-28 22:29:41 -07:00
YoshiRulz 0bf59347be
Fix Windows 10 LTSC incorrectly being marked as EOL
clever hack, no?
2024-10-28 12:32:03 +10:00
YoshiRulz a8b8fb39ab
Clean up Windows version detection, now flagging Win11 21H2 2024-10-28 12:31:50 +10:00
Morilli f32277ebd6 attempt to fix fm2 import
This 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.
2024-10-27 18:11:38 +01:00
YoshiRulz 7a1ceaf417
s/firmwares/firmware/ in comments 2024-10-27 02:16:56 +10:00
YoshiRulz f1d71cc914
s/firmwares/firmware/ in `MainForm` member identifiers 2024-10-27 02:16:56 +10:00
YoshiRulz 9b146b24ea
Rename `FirmwareConfig{,Info}.cs` to match type names 2024-10-27 02:16:56 +10:00
YoshiRulz 74e46227f5
Rename `FirmwaresConfig{,Info}` to `FirmwareConfig{,Info}` 2024-10-27 02:16:55 +10:00
YoshiRulz 03b1d353a7
s/firmwares/firmware/ in `FirmwaresConfig` member identifiers 2024-10-27 02:16:55 +10:00
YoshiRulz 02bf292a85
s/firmwares/firmware/ in `PathEntryCollection` 2024-10-27 02:16:55 +10:00
YoshiRulz eee34dd69a
s/firmwares/firmwareIDMap/ in Nyma core init methods 2024-10-27 02:16:55 +10:00
YoshiRulz 6955ad3591
s/firmwares/firmware/ in strings 2024-10-27 02:16:55 +10:00
YoshiRulz ab1f002481
Clarify dropdown options in Record Movie dialog 2024-10-26 02:33:00 +10:00
feos 90287b3396 puae: support region changes
by user at the start and by the game on the fly
todo: ntsc par (pal par is 1:1)
2024-10-25 01:17:52 +03:00
feos 703955fcd7 puae: block some unsupported images, reduce heap sizes 2024-10-24 21:47:50 +03:00
Asnivor 52f4f7426c [A7800Hawk] Make ProLine controller default for the core. Fixes #3895 2024-10-24 14:24:33 +01:00
Asnivor b3426624f7 [ChannelFHawk] Some code tidy 2024-10-24 13:49:27 +01:00
Asnivor 9c322f8967 [ChannelFHawk] More sensible viewport trimming and set default viewport to AllVisible 2024-10-24 13:32:38 +01:00
Asnivor e0264ed102 [ChannelFHawk] ICodeDataLogger 2024-10-24 12:27:46 +01:00
YoshiRulz 4c69ce4e27
Avoid `string.Split` in `Database.InitializeWork`
On 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%.
2024-10-24 06:31:44 +10:00
YoshiRulz 6f3fd9740e
Add setup for profiling gamedb
simply build with
`-p:MachineExtraCompilationFlag=BIZHAWKBUILD_RUN_ONLY_GAMEDB_INIT`
2024-10-24 06:31:44 +10:00
YoshiRulz 4678d90646
Extract method from `Database.InitializeWork`, clean up, and add test 2024-10-24 06:31:44 +10:00
YoshiRulz 9ce3771e85
Move gamedb init before single-instance check 2024-10-24 04:27:30 +10:00
feos 09a39a5630 puae: dependent upon 2024-10-23 19:10:24 +03:00
YoshiRulz 9acdcdbcf7
Restore `BitmapBuffer.AsSpan` and add `AggressiveInlining`
fixes 9a5a75e5b and 7ab2ca6b8
2024-10-21 17:44:58 +10:00
Morilli 4f82b30370 cleanup some SequenceEqual related code 2024-10-20 21:24:24 +02:00
Morilli b7b8788354 Optimize ZwinderStateManger.GetStateClosestToFrame
AllStates() 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
2024-10-20 16:56:47 +02:00
Morilli 7ab2ca6b89 Add SequenceEqual extension to prevent linq usage
this speeds up the state history integrity check by about an order of magnitude
2024-10-20 14:00:11 +02:00
YoshiRulz 1dbd7356eb
Fill in Stella upstream version 2024-10-20 05:35:42 +10:00
Morilli 8dee116d77 fix watch combo boxes being cut off 2024-10-19 11:29:20 +02:00
Morilli 59c8125241 some WatchEditor code style 2024-10-19 11:29:01 +02:00
CasualPokePlayer c954e8c189 Do encrypted DS rom detection better 2024-10-18 20:41:13 -07:00
CasualPokePlayer 2ddfc5f172 Add more NDS extensions
srl -> "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
2024-10-18 18:03:04 -07:00
CasualPokePlayer 593e7c125b force real bios file usage if an encrypted DS rom is used 2024-10-18 13:47:15 -07:00
CasualPokePlayer 64d55404ba Add more invisible heap for melonDS 2024-10-18 13:47:15 -07:00
YoshiRulz a3901f66e5
Add Analyzer to require `class`/`struct` keyword on records
fixes eef190d33, e8c957a7a, and c68dd703d
2024-10-19 04:53:35 +10:00
Morilli c68dd703dc implement dirty checking for N64 settings 2024-10-18 13:28:25 +02:00
Asnivor 13584ceb62 [ZXHawk] Remove ParseDisk() track limit
This 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.
2024-10-18 11:04:20 +01:00
Morilli f748f93764 simplify GetModChecksum256 2024-10-18 04:10:00 +02:00
Asnivor 7d68a0b017 Fix DSKIdentifier ModChecksum function
This never worked. Will probably fix a whole bunch of core-selection issues (including ones listed here: https://tasvideos.org/HomePages/CloakTheLurker/ZXHawk)
2024-10-17 17:47:38 +01:00
CasualPokePlayer ce3af37b24 Fix off by 1 in PSX RetroAchievements disc hashing 2024-10-16 17:39:48 -07:00
CasualPokePlayer 0105caee6e Do PSX RetroAchievements hashing subdirectory handling better 2024-10-16 17:24:55 -07:00
CasualPokePlayer 09d72bf34f Do RetroAchievements PSX hashing better
Make 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
2024-10-16 16:14:27 -07:00
CasualPokePlayer a325119362 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)
2024-10-16 12:59:55 -07:00
CasualPokePlayer 2c2c2e9ee8 buf2442 -> buf2448
It's not a 2442 byte buffer
2024-10-16 12:46:32 -07:00
CasualPokePlayer b7e57db84f Fix RCTrack sector reads
It appears rcheevos expects user data, not raw sector data
2024-10-15 16:47:46 -07:00
Morilli 6582431d4c fix loading active tasproj into TAStudio
- fixes a43a64b899
- closes #4091
2024-10-15 18:59:27 +02:00
Asnivor 85a7d3474b Identify correct core for IPF image
Obviously 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.
2024-10-15 17:27:05 +01:00
CasualPokePlayer cef4f10ed8 update comment for previous commit too 2024-10-14 23:55:17 -07:00
CasualPokePlayer c703b5f6a2 Don't immediately change buffer width/height for melonDS video buffer reallocation
They'll get changed later anyways
2024-10-14 23:54:02 -07:00
CasualPokePlayer 670eaf346a Allocate melonDS's video buffer according to effective gl scaling
resolves #4090
2024-10-14 23:51:49 -07:00
prenoeg e77a036e0e
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.
2024-10-14 19:53:29 -07:00
ASNiVOR 62abee4813 [CPCHawk] Small CRTC1 changes 2024-10-14 21:07:17 +01:00
YoshiRulz 478fc58a5d
Fix overlapping buttons in Virtual Pads on Linux 2024-10-14 18:13:48 +10:00
feos a08cb73a30
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
2024-10-14 09:56:45 +03:00
CasualPokePlayer 77d19e0fed Try to avoid overly sensitive mice from unhiding the autohidden cursor, hide the cursor better for Windows 2024-10-11 18:33:26 -07:00
Asnivor 95cf257d96 [CPCHawk] New CRTC1 impl. 2024-10-11 16:01:00 +01:00
CasualPokePlayer e1820081ee Update rcheevos to v11.6.0 2024-10-10 21:35:28 -07:00
Morilli c190ceb7f2 persist TAStudio max undo levels to config
- resolves #3478
2024-10-10 20:57:25 +02:00
Morilli 4b60a90c78 Remove no-op in tasmovie max undo steps setting
lol
2024-10-10 20:50:38 +02:00
Morilli c844379bd6 Always render video when at end of turbo seek
- resolves #2081

This is only noticable on cores that implement (video) frame skip.
2024-10-10 04:24:31 +02:00
CasualPokePlayer ed10275033 Don't use Thread.Join() in NDS Dispose()
resolves #3220
2024-10-09 18:10:37 -07:00
Asnivor c64822680c [CPCHawk] Some CRTC code tidy 2024-10-09 09:16:56 +01:00
Asnivor ac25842689 [CPCHawk] FloohZ80 Fix interrupt tracelogger reporting 2024-10-09 08:26:26 +01:00
Morilli be5ac88677 make CI happy 2024-10-09 07:32:27 +02:00
YoshiRulz 57e60453f6
Fix typo
fixes d8778aa23
2024-10-09 14:30:48 +10:00
YoshiRulz d8778aa232
Split PSX (Nymashock) rumble channel into left and right 2024-10-09 14:26:10 +10:00
YoshiRulz eb3ab3f05a
Better fix for haptics/feedback prescale
fixes c36b654eb
2024-10-09 14:25:46 +10:00
YoshiRulz c36b654eb9
Fix interger overflow from setting haptics/feedback prescale above 1x 2024-10-09 14:13:21 +10:00
CasualPokePlayer ab081f7363 Rename AVI/WAV to A/V
resolves #4070
2024-10-08 17:39:59 -07:00
CasualPokePlayer a28b169890 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) 2024-10-08 14:43:30 -07:00
CasualPokePlayer 5889ab1d96 Fix inconsistent MAX_FLOPPIES usage 2024-10-08 14:15:53 -07:00
CasualPokePlayer 54fd290107 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
2024-10-08 13:10:54 -07:00
Asnivor 9825ac6db6 [CPCHawk] Implement FloohZ80 TraceLogger 2024-10-08 13:52:49 +01:00
YoshiRulz f6da980fba
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
2024-10-08 22:44:48 +10:00
YoshiRulz 154a49cd81
Add missing syncsetting check to `Ares64.FrameAdvancePrep`
resolves #4056
2024-10-08 22:13:01 +10:00
CasualPokePlayer ab8eb0405c Default to MT renderer for Faust 2024-10-07 16:19:03 -07:00
feos 809d43dd44 fix #4069
gpgx: swap A and D regs in gpgx_getregs()

actually limit pc to 24 bits, not just disasm address
2024-10-07 19:34:48 +03:00
CasualPokePlayer 187674338b simplify floooh z80 usage 2024-10-07 01:09:17 -07:00
CasualPokePlayer b443eb40a8 Hook up rumble for mgba 2024-10-06 17:13:20 -07:00
Morilli 882bab228f fix for CI 2024-10-07 00:16:49 +02:00
CasualPokePlayer 2c2efc6fb8 Fix gpgx_swap_disc sig mismatch 2024-10-06 14:21:40 -07:00
Asnivor c644ed19ef [CPCHawk] Trying a new z80 implementation 2024-10-06 22:01:09 +01:00
Morilli c4a92bd0fb Bump duration of movie hash mismatch message
see also #2328
2024-10-06 20:58:27 +02:00
YoshiRulz 0a61b2754d
Revert refactor to `bool[].ToUByteBuffer()` extension too
see 37da7b3e1 and 30b2433a5
2024-10-07 04:19:32 +10:00
Morilli 30b2433a50 Revert changes to ToBoolBuffer
fixes the test, and apparently having non-0/1 bool values is sketchy anyways
2024-10-06 17:30:44 +02:00
Morilli 7db5b22713 Add tests for array conversion util functions
to test the changes made in 37da7b3e12
2024-10-06 17:30:07 +02:00
Morilli 9f161bf40e Simplify Serializer array sync handling
val == null is impossible, so the check is completely useless.
2024-10-06 05:55:23 +02:00
Morilli 37da7b3e12 simplify some Util functions 2024-10-06 05:48:26 +02:00
Morilli 97785b2af2 Fix potential exception in PathEntryCollection path resolving
see also #4077 for where this initially came up
2024-10-06 00:02:02 +02:00
Morilli 7b2de12de3 IsPathRooted -> IsAbsolute
This 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.
2024-10-05 23:58:21 +02:00
Morilli a43a64b899 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.
2024-10-05 23:27:20 +02:00
YoshiRulz 9371fbfa62
Add prints to `GPGX.FrameAdvance` 2024-10-05 20:57:28 +10:00
YoshiRulz f99b8fa518
Use `PathEntryCollection.FirmwareAbsolutePath` extension 2024-10-04 23:39:32 +10:00
Morilli f28fa49795 Fix ZwinderBuffer InvalidateAfter logic
- should resolve #4074

- fixes 2d229be6ba for when _firstStateIndex != 0
2024-10-03 17:59:42 +02:00
Asnivor 2205d1344c [CPCHawk] Interrupt wait state timing tests 2024-10-03 12:17:33 +01:00
Asnivor d513632cf9 [Z80A] Correct Tw cycles for IO
The 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.
2024-10-02 14:24:20 +01:00
Asnivor 2193c0a0e5
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
2024-10-02 12:54:22 +01:00
Morilli 5cc4c1f924 Optimize and simplify MarkerView_QueryItemBkColor 2024-10-01 20:36:02 +02:00
Morilli 0fe8fadc39 on shutdown, close tools before stopping movie
- closes #4065
2024-10-01 15:40:30 +02:00
CasualPokePlayer e71cdf8440 Initial SA1 IRAM exposure for RetroAchievements
see https://github.com/RetroAchievements/rcheevos/pull/371
2024-09-30 23:19:45 -07:00
CasualPokePlayer f9d4737104 Expose SA1 IRAM in old BSNES 2024-09-30 22:16:26 -07:00
Morilli 461a3dfb8d Optimize some linq Any() calls to list Exists() calls 2024-09-30 23:31:54 +02:00
Morilli 08125ae82d Cleanup CloseGame and CloseRom some more
- fixes #4061 and hopefully breaks nothing else
2024-09-30 23:29:53 +02:00
Moritz Bender 2d229be6ba
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.
2024-09-30 15:55:48 +02:00
YoshiRulz fedd2dbb03 Replace `ImGuiResourceCache.BrushCache` with a single `Brush` 2024-09-30 21:47:07 +10:00
YoshiRulz fb425c9db6 Replace caches in `LuaPictureBox` with a single `Brush` and `Pen` 2024-09-30 21:47:07 +10:00
YoshiRulz 4f69796e51 Check for cached `SolidBrush` in `LuaPictureBox.DrawText` 2024-09-30 21:47:07 +10:00
YoshiRulz 6c514bcdd0 Change `NesPPU.HandlePaletteViewMouseMove` to re-use one `SolidBrush` 2024-09-30 21:47:07 +10:00
YoshiRulz 1b1589f2e8 Change `SNESGraphicsDebugger.RenderPalette` to re-use one `SolidBrush` 2024-09-30 21:47:07 +10:00
YoshiRulz 0313e1c119 Use `Brushes.*` instead of creating new ones from `Color` constants 2024-09-30 21:47:07 +10:00
YoshiRulz f4298d74f4 Change `SNESGraphicsDebugger.DrawPaletteRegion` to re-use one `Pen` 2024-09-30 21:47:07 +10:00
YoshiRulz ca95336349 Use `Pens.*` instead of creating new ones from `Color` constants 2024-09-30 21:47:07 +10:00
CasualPokePlayer 64f6742c15 Fix drawString not blending when it should
Drawing 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
2024-09-29 21:39:20 -07:00
Morilli ae5d4ab160 Make StateInformation a readonly struct
This helps a lot when many states exist, struct allocs are much cheaper than classes
2024-09-29 04:05:32 +02:00
Morilli 0ac81016b1 Optimize sound output buffer handling
turns out a Queue isn't the optimal data structure when you're queueing millions of elements
2024-09-29 01:44:39 +02:00
Morilli f3876da840 Optimize Vsync getter functions
trust me this is a highly relevant optimization
2024-09-29 01:39:55 +02:00
Morilli 0669483bd2 optimize TasLagLog.RemoveLagEntry
just because I can
2024-09-28 17:30:42 +02:00
Morilli 24012bfb21 optimize TasLagLog.RemoveFrom
- closes #4058
2024-09-28 17:30:40 +02:00
YoshiRulz 9a440d0301
Add missing syncsetting check to `Gameboy.FrameAdvancePrep` (Gambatte)
see #4057
2024-09-28 18:01:00 +10:00
YoshiRulz 444d1b2182
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
2024-09-28 17:57:47 +10:00
Morilli 15ff0ec2c7 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"
2024-09-27 00:14:09 +02:00
Morilli 6d9aa4d467 implement bitwise logic for axes
noticable in inputdisplay or when trying to set axis autofire
2024-09-27 00:14:08 +02:00
YoshiRulz 509bd1504a
Set some more metadata on BizHawk assemblies
The 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.
2024-09-27 08:13:33 +10:00
Morilli 5504deb73f make new from savestate and saveram work again
broke with 8956657a34 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...
2024-09-26 22:34:30 +02:00
Morilli 8f497d44f4 Make PatternsForm title text readable 2024-09-26 22:14:46 +02:00
YoshiRulz 4ccf4eafef
Add missing disc presence check to `NymaCore.FrameAdvancePrep`
fixes #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.
2024-09-27 05:47:27 +10:00
Morilli eaef1f3829 Fix display issue in TAStudio when <3 frames are visible
also left a giant TODO, not sure what else to do about it
2024-09-26 21:11:17 +02:00
Morilli bccc118091 Cleanup some more TAStudio function calls
in 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 2ad7fc095c)
2024-09-26 21:07:18 +02:00
Morilli 2ad7fc095c Refactor tasmovie input roll settings handling
this 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.
2024-09-26 18:52:32 +02:00
Morilli 81b6c2793c Respect AutoFireLagFrames config setting in sticky controllers
Previously, there was no way to configure this and sticky autofire controls would always adjust to lag.
2024-09-26 13:49:21 +02:00
Morilli 6eba7930fc fix watch editor notes label position 2024-09-26 13:49:21 +02:00
YoshiRulz dde61e309f
Make `ServiceNotApplicableAttribute` constructor `params` 2024-09-26 13:54:42 +10:00
YoshiRulz f056059e48
Fix collection type in `ServiceNotApplicableAttribute` 2024-09-26 13:45:54 +10:00
YoshiRulz bcd13fe37f
Make `IDriveLight` optional for cores 2024-09-26 13:45:15 +10:00
YoshiRulz c22f2ab4f5
Remove redundant inter-project dependencies 2024-09-26 09:52:00 +10:00
Moritz Bender 3af5b7a7f0
Refactor sticky controller logic to separate it from user input (#4047) 2024-09-24 16:05:00 +02:00
Morilli 9f137753b9 hide no-op context menus for separators in ram watch
- closes #4051
2024-09-24 15:23:25 +02:00
YoshiRulz e8b717c18e
Reorder fields in `WatchEditor` (resolves #4046) 2024-09-24 13:55:20 +10:00
YoshiRulz 775dc90ce2
Use a TLP to align UI elements in `WatchEditor` 2024-09-24 13:55:20 +10:00
YoshiRulz 9d1a22cab0
Fix typos from `WatchEditor` Designer file 2024-09-24 13:55:20 +10:00
YoshiRulz b8d65ae92a
Merge in Designer file for `WatchEditor` 2024-09-24 13:54:39 +10:00
YoshiRulz f1c901ce00
Revert "Improve watch editor layout"
This reverts commit f6bf38141a.
2024-09-24 12:30:59 +10:00
YoshiRulz 1d8c088261
Fix `--lua`/`--luaconsole` causing that window to open before MainForm 2024-09-24 12:25:16 +10:00
Morilli 420cf323aa fix axis input calculation truncating instead of rounding
very noticable with MouseX/Y binds, you cannot reach certain positions
2024-09-23 23:16:39 +02:00