Commit Graph

4878 Commits

Author SHA1 Message Date
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
CasualPokePlayer 96b4de92af Only call GetDpiForWindow if it's actually available
apparently this is limited to windows 10 1607+
2024-09-23 03:08:19 -07:00
Morilli 3ea0a5a2dd fix autofire sticky axes off value 2024-09-23 02:12:33 +02:00
Morilli 5803e362f9 make IsSticky implementation consistent
only two inheritors and they disagree on semantics... but there's `CurrentStickies` already which gives access to buttons only
2024-09-23 01:58:27 +02:00
Morilli 23815b4783 some more sticky renames for clarity
SetSticky and ClearStickies sounds an awful like they affect the same thing, also this makes it clear whether to set a hold or an autofire
2024-09-22 23:56:53 +02:00
Morilli 5a4f093d50 explicitly unset sticky axes
there should not be a function that blindly unsets both axes and button, make it explicit
2024-09-22 23:11:02 +02:00
Morilli 84f774aa9c reorder code in StickyAdapters
move fields and property to the top, button code before the equivalent axis code, general cleanup
2024-09-22 23:04:38 +02:00
Morilli 525a95ea0a update gpgx ported version 2024-09-22 22:33:08 +02:00
feos ebbbf0c691 puae is not released 2024-09-22 21:57:34 +03:00
YoshiRulz d804b6ce17
Fix code style warnings for `OpposingDirPolicy` docs
fixes ec69033d9
2024-09-23 04:36:23 +10:00
YoshiRulz ec69033d9a
Add docs to `OpposingDirPolicy` enum
see #2752
2024-09-23 04:29:40 +10:00
YoshiRulz f2a4d14172
Replace `?? CancellationToken.None` pattern with the simpler `default` 2024-09-22 15:21:02 +10:00
YoshiRulz b173712a15
Fix suppressed warning in `ClientWebSocketWrapper` ctor
more like "human not smart enough to recognise this" amirite
2024-09-22 15:20:48 +10:00
Morilli 09dd55eb93 Fix nullref when no movie exists
fixes 259929499f
2024-09-21 16:53:23 +02:00
Morilli f6bf38141a Improve watch editor layout
see #4046
2024-09-21 12:37:36 +02:00
CasualPokePlayer a2d97dfb5f Remove "direct" bin file handling
If 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.
2024-09-21 03:09:13 -07:00
Morilli 259929499f Allow savestating at movie end
- resolves #4032
2024-09-21 10:14:47 +02:00
Morilli 0ac51edd8b add missing BSX framerate
I don't think PAL is even possible
2024-09-20 20:12:41 +02:00
Morilli 5acf324fdf attempt to fix GPGX aspect ratio
see #4042, not sure if this is fully correct yet
2024-09-20 18:26:15 +02:00
YoshiRulz a3a051346b
Enable `File` > `Screenshot` submenu with NullHawk 2024-09-21 01:18:07 +10:00
Morilli 81416e684f Fix DWordWatches not being pokable with binary display type
- closes #4045
2024-09-20 13:28:34 +02:00
Morilli e092240bdd fix watch value box field length for 32-bit binary watches
- closes #4044
2024-09-20 13:26:36 +02:00
Morilli b1eebd9abb make virtual pad control clearing autoholds
ClearStickies clears buttons and axes, but the virtualpad tool wants to control whether only buttons are cleared.
also contains minor cleanups regarding related function calls.
2024-09-20 13:06:31 +02:00
Morilli 5b3daed6e8 improve some VirtualPad code 2024-09-20 12:52:32 +02:00
CasualPokePlayer e720650085 optimize 2D renderer: try to avoid splitting render commands, try to use single pass if blending is unneeded (i.e. alpha is always 0xFF) 2024-09-20 01:24:04 -07:00
CasualPokePlayer a2ddc1b4cd make sure to dispose Image from Image.FromFile
these hold a lock until they get disposed (which without explicit disposing is just waiting on the finalizer to do it)
2024-09-19 22:35:03 -07:00
CasualPokePlayer 073ce5fa4d Do alpha blending more faithfully to GDI+
fixes #4043
2024-09-19 22:00:55 -07:00
CasualPokePlayer 67cba14e38 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
2024-09-19 01:42:48 -07:00
CasualPokePlayer e568305499 Fix more edge cases with new hw accelerated GuiApi
fixes #4040
fixes #4041
2024-09-18 21:28:20 -07:00
CasualPokePlayer 5d6106ca57 cleanup last commit 2024-09-17 23:43:54 -07:00
CasualPokePlayer 060670b87b Run string draws at any point, rather than only at the end
fixes #4036
2024-09-17 23:41:33 -07:00
Morilli a1d4c5e68e Make SaveBk2BackupMenuItem visible
It was always there, just invisible! Not sure how useful it is, but might as well try making it visible before removing it.
2024-09-17 20:28:08 +02:00
Morilli 21fbee01de consolidate TAStudio saving functions 2024-09-17 20:26:04 +02:00
Morilli 57d1ac8dbd cleanup and improve TAStudio's SaveAsTas 2024-09-17 20:17:28 +02:00
YoshiRulz 4b454a675a
Fix ext. tools failing with a `[{Required,Optional}Api] ApiContainer` 2024-09-18 01:12:54 +10:00
Asnivor 55762bf8ea [ChannelFHawk] Pair back ramp-up time so shorter sounds can play out 2024-09-17 09:15:31 +01:00
YoshiRulz 97a8e9011e
Add Analyzer to warn about decimal<=>float/double casts
fixes c882fe4ea and 32a66a955
2024-09-17 03:02:09 +10:00
CasualPokePlayer 9b57adfab0 mark Stella as released 2024-09-16 01:06:22 -07:00
CasualPokePlayer d9b3728365 don't expose not fully functional controllers in stella 2024-09-16 00:44:31 -07:00
CasualPokePlayer 5b74211460 Add missing variables to Stella states 2024-09-16 00:40:02 -07:00
CasualPokePlayer 18a7b32c8d make virtualpad not throw with stella 2024-09-16 00:36:12 -07:00
CasualPokePlayer 4c4ffca2bc remove non-implemented stella settings/sync settings 2024-09-16 00:29:35 -07:00
CasualPokePlayer e06997dd4c Correct aspect ratio for Stella 2024-09-16 00:26:35 -07:00
CasualPokePlayer a8ab0ed302 do not prefer stella 2024-09-15 23:24:35 -07:00
CasualPokePlayer 4a16f2899b Fix Stella throwing 2024-09-15 23:23:10 -07:00
CasualPokePlayer 57e24b8f09 actually resample stella's audio 2024-09-15 23:19:43 -07:00
CasualPokePlayer db11df3804 A few more Stella cleanups 2024-09-15 22:53:21 -07:00
CasualPokePlayer 1b92d1080f Do some cleanups with Stella, mark as experimental 2024-09-15 22:47:38 -07:00
YoshiRulz 32a66a955c
Restore `checked` modifier in `BasicMovieInfo.FrameRate`
fixes 94a24aab8
2024-09-16 08:33:33 +10:00
Morilli 1f1bf9b056 Comment out nonfunctional cycle count update code
setting cycle count in HandleFrameAfter could work, but needs proper invalidation logic
2024-09-15 21:29:55 +02:00
Morilli 09c57cf86e cleanup ICycleTiming header value setting
notably don't unset the ClockRate just because the current cycle count is invalid
2024-09-15 21:29:55 +02:00
Morilli ec0f761bd9 Allow TAStudio to save cycle count in bk2 export 2024-09-15 21:29:55 +02:00
Morilli 94a24aab84 simplify BasicMovieInfo.FrameRate 2024-09-15 21:29:55 +02:00
YoshiRulz cdbaec1db9
Fix code style in `DefaultMessagePositions`
fixes bca7994c0
2024-09-16 04:35:48 +10:00
Morilli bca7994c00 make default message colors readable 2024-09-15 15:31:16 +02:00
Morilli 75c8b8ed9a Rename MovieInput to MovieInputColor
this makes it consistent with the three other variables
2024-09-15 15:31:16 +02:00
YoshiRulz ae2ad0213d
Use local method instead of a loop in `MainForm.FrameBufferResized` 2024-09-15 23:24:18 +10:00
YoshiRulz 21cdc86e8c
Enable MEN018 and fix noncompliance (except in Cores)
"Use Digit Separators" in integer literals
2024-09-15 23:19:07 +10:00
Morilli 74e50c3041 fix some xmldoc 2024-09-14 21:35:47 +02:00
kalimag e2a6942df0
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`
2024-09-14 22:29:01 +10:00
Morilli 1b3e7d45f2 deduplicate TasMovie property setting in TAStudio 2024-09-14 14:25:02 +02:00
YoshiRulz 362ffd147e
Improve first-launch profile config UX
see a351dcc55
2024-09-14 22:17:43 +10:00
YoshiRulz 0c9f8169db
Make OSD toasts at least `OSDMessageDuration` instead of exactly that 2024-09-14 22:11:51 +10:00
YoshiRulz 5eb2cd8cb1
Send ext. tools regular update events while emulation is paused
resolves #3626
2024-09-14 21:45:22 +10:00
YoshiRulz 0f19b9c854
Also print when `LuaPictureBox.DrawIcon` called with mismatched w/h
see #3851, 170d1a62e
2024-09-14 21:29:24 +10:00
YoshiRulz f6cb86fa65
Pass log callback through to `LuaPictureBox` 2024-09-14 21:29:24 +10:00
YoshiRulz b51bb85c82
Replace `LuaPictureBox` prop init with constructor 2024-09-14 21:29:24 +10:00
YoshiRulz e5e055b7a4
Remove default arguments from `LuaPictureBox.*` 2024-09-14 21:29:24 +10:00
Morilli 1fc443640a Reorganize input display drawing
I tested all combinations I can think of and this looks correct. Hopefully this can easily be verified with the given code comments now.
2024-09-14 09:54:33 +02:00
YoshiRulz c913c5a6e6
Further improve malformed `.cue` UX
see 8f963ba58, #4013
2024-09-14 04:59:38 +10:00
YoshiRulz fa361ce06c
Add Analyzer for finding errors with ternaries in interpolated strings
why is this not part of the SDK
2024-09-14 02:44:08 +10:00
kalimag f90126f19b Overhaul cheat handling during rom load/close
- Stop overwriting/deleting other games' cheat files after rom change
- Always clear/update references to disposed memory domains
- Keep current cheats after core restart
2024-09-14 00:42:34 +10:00
kalimag 76e73e1897 Remove duplicate method in `CheatList` 2024-09-14 00:42:34 +10:00
kalimag ed13e0ef24 Save main window maximized state 2024-09-13 23:32:12 +10:00
kalimag ad73d39176 Prevent title bar and menu moving off-screen 2024-09-13 23:32:12 +10:00
kalimag a3bf347e22 Defer main window resize while minimized/maximized 2024-09-13 23:32:12 +10:00
kalimag 2e4d2ce232
Add option to disable automatic resize of main window (squashed PR #4011)
* Add option to disable automatic main window resize

* Add option to window size submenu

* Rename parameter to `forceWindowResize`

* Add XML doc comments

* Save main window size

* Make `Config.MainWndx `/`MainWndy` nullable

* Reduce total diff size

* Move cast inside of `foreach`

* Remove obsolete workaround

Position isn't saved anymore when minimized

* Combine config values into `Point` and `Size`

* Add `Point` and `Size` to known good serializable types

* Remove doc comment from implementation
2024-09-13 22:17:27 +10:00
CasualPokePlayer d0482ac787 Fix EGL fixes
fixes 3b62a38f1d
2024-09-12 19:54:04 -07:00
Morilli 494dcb1224 start OSDManager cleanup 2024-09-12 18:48:58 +02:00
YoshiRulz dc582a4e7a
Skip setting `SDL_HINT_VIDEO_X11_FORCE_EGL` on NixOS again
see 60fae3540, 08bd14e80, and 3b62a38f1
2024-09-13 00:17:55 +10:00
Morilli 89235cc9cf Make FramesPrompt title readable 2024-09-12 11:10:54 +02:00
CasualPokePlayer 4d71db1089 Add many more missing TMDs
resolves #4028
resolves (partially) #3840
2024-09-12 00:36:29 -07:00
CasualPokePlayer 245f0e2271 Don't invoke UB with possibly unaligned memory 2024-09-11 16:26:00 -07:00
CasualPokePlayer 3b62a38f1d More properly fix EGL issues 2024-09-11 16:26:00 -07:00
Morilli fdb7a0df46 Remove no-op 2024-09-11 19:51:30 +02:00
Asnivor 6513e2700c
Update readme.md 2024-09-11 16:48:12 +01:00
ASNiVOR 2ec60924d0 [ChannelFHawk] Markdown is the devil 2024-09-11 16:47:02 +01:00
ASNiVOR 958eb454e3 [ChannelFHawk] Update readme 2024-09-11 16:44:40 +01:00
ASNiVOR fabc7e9aca [ChannelFHawk] Enable for release 2024-09-11 16:08:34 +01:00
ASNiVOR 58b5f40277 [ChannelFHawk] Add viewport controls as a SyncSetting 2024-09-11 13:43:25 +01:00
Sergio Martin bf8758e61c
Adding Stella as A2600 emulation core (#3911)
* Adding initial version of the core

* Adding base files

* Trying to load waterbox now

* Adding stella

* Adding bk class

* Compiling bk interface to stella core

* Now compiling against Stella + SDL2-based BK backend

* Progress

* More progress

* Frame advancing (no render)

* Calling video update but crashing on zero div

* Now rendering to screen with correct palette

* Now rendering appropriately and with correct palette based on region

* Now reading controls

* Trying to capture audio

* Now adding audio

* Now polling inputs

* Now polling inputs

* Now reporting memory regions

* Added memory regions

* Removing debug prints

* Fixing indent

* Adding stella core

* Updating readme and make all cores

* Recovering ending comma

* Using heap alloc for sound buffer

* Removing unnecessary files

* Update src/BizHawk.Emulation.Cores/Consoles/Atari/Stella/Stella.IMemoryDomains.cs

Co-authored-by: James Groom <OSSYoshiRulz+GitHub@gmail.com>

* Update src/BizHawk.Emulation.Cores/Consoles/Atari/Stella/Stella.IMemoryDomains.cs

Co-authored-by: James Groom <OSSYoshiRulz+GitHub@gmail.com>

* Fix

* Restoring vscode

* Removing warning

* Update waterbox readme

* Fix Stella's `[Core]` attr

* Increased sound buffer size to 1Mb, as some games need more than 4K

---------

Co-authored-by: James Groom <OSSYoshiRulz+GitHub@gmail.com>
Co-authored-by: Morilli <35152647+Morilli@users.noreply.github.com>
Co-authored-by: YoshiRulz <OSSYoshiRulz+git@gmail.com>
2024-09-11 08:18:54 +03:00
Moritz Bender a0800862b3
Refactor InputDisplayGenerator + LogEntryGenerator + ControllerDefinition (#3782)
* refactor InputDisplayGenerator and LogEntryGenerator handling
* Fix NRE in Tastudio. I can already see this avalanching into 100 different bugs
* cba, revert 48f4e13de and bring back bullshit dummy default MovieController
* Refactor MnemonicCache + make Bk2LogEntryGenerator and Bk2InputDisplayGenerator static. This should simplify stuff and make the logic clearer
2024-09-10 22:19:54 +03:00
YoshiRulz 08bd14e800
Skip setting `SDL_HINT_VIDEO_X11_FORCE_EGL` on NixOS
see 60fae3540
2024-09-11 02:57:48 +10:00
Morilli a955868e04 Fix Cell add exception in SelectBetweenMarkers
- closes #3971
2024-09-09 22:44:37 +02:00
YoshiRulz 29c15adbbf
Promote BHI1007 to a build error, fixing some cases and muting others
"Don't use target-typed new for throw expressions"
where there was a type name checked-in before being removed,
I've restored it (they were all `Exception`)
2024-09-10 05:42:11 +10:00
Moritz Bender a72b0f7e8c
Cleanup before/after frame logic in MovieSession (#4023)
This does change some behavior, but hopefully the new structure is more logical and more correct. Calling HandleFrameAfter from HandleFrameBefore definitely didn't feel proper.
2024-09-08 20:18:37 +03:00
YoshiRulz 09f037544f
Don't set `PrivateAssets="all"` for `System.CommandLine` package
fixes d908d7718
2024-09-09 00:26:31 +10:00
kalimag 2d938ae61d Dispose input files in DiscoHawk 2024-09-09 00:11:15 +10:00
YoshiRulz e68243fca5
Attempt to restore InputRoll invariant during Select All (see #3971)
I believe this method was already non-atomic so this clear operation
shouldn't change anything
2024-09-08 21:46:04 +10:00
Sergio Martin aa662eb930
Update quickerNES and add Arkanoid input support (squashed PR #3997)
* Update QuickerNES interface to accept arkanoid controllers

* Updating

* Updating quickernes to its latest version and now supporting ArkanoidNES and ArkanoidFamicom controllers

* Apply suggestions from code review

applying yoshi's suggestions

Co-authored-by: James Groom <OSSYoshiRulz+GitHub@gmail.com>

* Using proper C#

* Updating based on Morilli's comments

* Updating the linux core

* Fixes based on Yoshi's comments

---------

Co-authored-by: James Groom <OSSYoshiRulz+GitHub@gmail.com>
2024-09-08 21:24:27 +10:00
Morilli 5e9d3cd2bc Implement clone # times hotkey for TAStudio
- closes #3992.
2024-09-08 12:44:17 +02:00
Morilli b02baf5a6a reorder TAStudio context menu items
they are now better semantically grouped together imo.
2024-09-08 12:40:40 +02:00
RetroEdit e3fee6f824 movies: normalize loaded hashes to upper case
fixes #3979
2024-09-08 19:55:15 +10:00
YoshiRulz 08c215905f Standardise command-line flags to kebab-case 2024-09-08 19:48:11 +10:00
YoshiRulz ab129bcf35 Improve documentation of CLI flags (output of `--help`) 2024-09-08 19:48:11 +10:00
YoshiRulz a55a5ee5a4 Add `--help` command-line flag 2024-09-08 19:48:11 +10:00
YoshiRulz d908d77186 Replace implementation of `ArgParser` using `System.CommandLine` 2024-09-08 19:48:11 +10:00
YoshiRulz 799f838f13
Manually implement equality on `AxisSpec`
fixes 76a30e5d7
2024-09-08 19:30:29 +10:00
CasualPokePlayer 16d51b429d Actually use IZ80ALink's IRQ/NMI/IRQACK callbacks 2024-09-07 16:50:02 -07:00
Morilli f6ce041ccf change FirmwareOptionStatus.Ideal description
see #3974. I see no reason why there can't be multiple ideal firmwares.
2024-09-07 23:49:26 +02:00
YoshiRulz fa56f2abef
Better document genericisation of virtual CPU classes
fixes f3ea6fe02 (#1189), 84f4d6ae2, and 666cb3939
2024-09-08 07:08:45 +10:00
Moritz Bender f47c58f550
Fix movie header values being potentially outdated upon starting a movie record (#4010)
* Rename StartNewMovie parameter

* Move PopulateWithDefaultHeaderValues to MainForm.Movie, make private

Author still needs to be set locally

* Make PopulateWithDefaultHeaderValues non-static

* Remove now-unnecessary firmware parameter in RecordMovie

* add TODO comment

* add Prepopulate function before movie load

Now, the main header population happens after the core is reloaded, ensuring all values are in the correct state.

A few movie values still need to be set beforehand though to ensure the core reboot works correctly.

* Allow recording movies even with outstanding reboot

Should be safe now with the previous commit.
2024-09-07 15:27:20 +02:00
YoshiRulz 650c7cae17
Restore end `#nullable` fence
fixes 76a30e5d7
2024-09-07 22:26:32 +10:00
Morilli daedf5ae07 clarify handling in MovieSession.HandleFrameBefore 2024-09-07 14:25:21 +02:00
Morilli b2131287be increment rerecords when recording frames in a TasMovie
I believe this is more correct than what was previously done. In particular the lag log and statemanager should always be invalidated at the same time. Maybe the `this.IsRecording()` check should be removed altogether?
2024-09-07 14:22:17 +02:00
Morilli 76a30e5d71 random code cleanup 2024-09-07 09:26:13 +02:00
CasualPokePlayer 85d6002673 Put some more callbacks into IZ80ALink; remove MemoryCallbacks in Z80A (it's not actually used at all) 2024-09-06 18:18:41 -07:00
CasualPokePlayer 666cb39392 Implement cpu link interface for z80 2024-09-06 18:02:41 -07:00
CasualPokePlayer 94c9f1eaf6 use new scratchpad mem domain for cheevos 2024-09-06 14:08:06 -07:00
CasualPokePlayer 84f4d6ae28 [ChannelF] Cleanup + optimize some code 2024-09-06 13:43:32 -07:00
YoshiRulz 314f32b95f
Revert "Attempt to fix buttons' labels being invisible on some Forms"
This reverts commit 404f28fa64.
2024-09-07 06:03:21 +10:00
Asnivor 139114acd4 [ChannelFHawk] vars to keep the style gods happy 2024-09-06 19:17:08 +01:00
Asnivor f826da6286 [ChannelFHawk] Unnecessary comments 2024-09-06 19:13:57 +01:00
Asnivor de698f05a7 [ChannelFHawk] Revert VRAM back to the correct size and mitigate any index out of range errors in the ClockVideo() method 2024-09-06 19:12:18 +01:00
Asnivor c8327871af [ChannelFHawk] Missed a syncing 2024-09-06 18:40:08 +01:00
Asnivor ad1887589d [ChannelFHawk] More cleanup 2024-09-06 16:01:04 +01:00
Asnivor 8638f4c550 [ChannelFHawk] Remove random usings 2024-09-06 15:54:14 +01:00
Asnivor 955438d9bb [ChannelFHawk] Remove obsolute stuff 2024-09-06 15:48:01 +01:00
Asnivor 789a6266fc [ChannelFHawk] Approximate the clocking of video circuitry rather than generating the framebuffer from RAM at the end of a frame 2024-09-06 15:44:46 +01:00
YoshiRulz 404f28fa64
Attempt to fix buttons' labels being invisible on some Forms
The "workaround" in question is `GTK_DATA_PREFIX='' ./EmuHawkMono.sh`,
which I'll be recommending in the short term until I can figure out how
to load or not load it. (Though `GTK_DATA_PREFIX` is likely part of the
answer).
2024-09-06 17:28:29 +10:00
YoshiRulz a13333b965 Rework doc comment for `IDriveLight.DriveLightIconDescription` 2024-09-06 17:08:10 +10:00
Asnivor 02ecb0ad24 Enhance the IDriveLight interface so that custom tooltip text can be displayed 2024-09-06 17:08:10 +10:00
CasualPokePlayer 0dbc2b0c27 fix ChannelF mnemonics 2024-09-05 17:17:12 -07:00
CasualPokePlayer be01202c68 Do ChanF platform framerates slightly better 2024-09-05 17:03:41 -07:00
CasualPokePlayer c17930c40f Do ChannelF timings a bit better; some cleanups 2024-09-05 16:56:12 -07:00
ASNiVOR ca104aec8a [ChannelFHawk] Bk2 Mnemonics 2024-09-05 22:08:27 +01:00
ASNiVOR 81043839c1 [ChannelFHawk] More accurate rates 2024-09-05 21:47:19 +01:00
YoshiRulz 6d05b9874c
Refactor `MainForm.HandleToggleLightAndLink` 2024-09-06 02:33:05 +10:00
YoshiRulz 234c7dda6b
Remove unused import
fixes 830760b12
2024-09-06 02:33:05 +10:00
Asnivor 830760b12a [ChannelFHawk] Launch internal games by passing bios files as a ROM (which in turn contain said internal games) 2024-09-05 17:03:58 +01:00
Asnivor b3e8182f26 [ChannelFHawk] Implement Channel F II System 2024-09-05 16:47:49 +01:00
Asnivor cd391a6e88 [ChannelFHawk] Remove the computer thinking activity indicator from the non-chess mappers 2024-09-05 16:23:04 +01:00
Asnivor c994e7bc84 [ChannelFHawk] Fix the chess (Schach) computer 'thinking' activity LED (the original cart had an LED built into it - we are using the DriveActivity indicator in Bizhawk for this purpose) 2024-09-05 14:16:08 +01:00
Asnivor 1fb56010e6 Fix analyzer run failure 2024-09-05 13:49:12 +01:00
Asnivor 8ae73ed850 [ChannelFHawk] Implement the Sean Riddle multi-cart mapper 2024-09-05 13:41:57 +01:00
Morilli c77486f88d simplify float division to modulo operator 2024-09-05 07:14:27 +02:00
Morilli d9069ea2cc Simplify PathExtensions.IsAbsolute
I've somewhat extensively tested this and this should be good. I've gotten to the point where even `Path.IsPathFullyQualified` returns wrong results (for "\?test"), so I'm not gonna look further.
2024-09-05 06:46:23 +02:00
CasualPokePlayer fa9c581d19 [ChannelFHawk] Expose scratchpad registers as a memory domain
This more or less acts like memory for the ChannelF in practice, due to the actual console lacking RAM. Using debugger apis is very annoying for peeking at these registers and of course you can't just use RAM Watch or the Hex Editor with it locked to debugger apis
2024-09-04 18:48:34 -07:00
CasualPokePlayer 817efd6598 remove debug code from last commit 2024-09-04 18:25:14 -07:00
CasualPokePlayer 1ada77e51f [ChannelFHawk] Fix off by one for ROM array creation 2024-09-04 18:24:21 -07:00
CasualPokePlayer 7f3a1668d8 [ChannelF] Move PollInput() to before CPU loop, add missing variables to states, fixup usings 2024-09-04 18:18:07 -07:00
CasualPokePlayer c1ec22c26a Fix ChannelF settings not being properly saved 2024-09-04 16:01:53 -07:00
CasualPokePlayer 0a7e6c4c00 Don't set ChannelF byte array domains as non-writable 2024-09-04 15:49:35 -07:00
CasualPokePlayer f67c766469 fix incorrect constant in cheevo code 2024-09-04 15:40:53 -07:00
CasualPokePlayer 425cafe1e8 [ChannelF] Add cart ram to memory domains, ensure loading a savestate keep the correct byte array for memory domains, expose cart ram for cheevos 2024-09-04 15:38:41 -07:00
CasualPokePlayer 60fae3540d Prefer EGL over GLX
should fix Nvidia proprietary driver issues on XWayland
2024-09-04 12:29:05 -07:00
Asnivor 5d37fb1ec2 ChannelFHawk: Default controls and VirtualPad 2024-09-04 17:36:57 +01:00
Asnivor 999c7c2a80 ChannelFHawk: Updating gamedb 2024-09-04 15:48:05 +01:00
Asnivor 323288872b ChannelFHawk: Audio subsystem now working correctly, Debugger exception fixed, SyncState updated 2024-09-04 09:55:04 +01:00
CasualPokePlayer 7061acbfcf silence resharper warning 2024-09-03 14:56:47 -07:00
CasualPokePlayer 38c4e51fbd Add more proper ZX Spectrum memory maps for cheevos 2024-09-03 14:56:47 -07:00
CasualPokePlayer c778d49b01 Add DTCM to DS/DSi memory maps for cheevos 2024-09-03 14:56:47 -07:00
Morilli 92724aee0b Use current value from detailed watches in RamSearch 2024-09-03 01:41:02 +02:00
Morilli e09bfa8ca9 expose Current value in IMiniWatchDetails 2024-09-03 01:40:59 +02:00
Morilli b90e40ae5c don't refetch current vale in MiniWatchDetails.SetPreviousToCurrent 2024-09-03 01:40:56 +02:00
Morilli 3b1ce44fb5 Make MiniWatchDetails derive from MiniWatch 2024-09-03 01:40:54 +02:00
Morilli 70f7238d96 fix ChangeCount logic in MiniWatchDetails
fixes another case of #4001 for ram search
2024-09-03 01:40:50 +02:00
Morilli 39ca6ce628 fix DearchivalTests
bit ugly that opening an archive or checking its type via sharpcompress seeks the input stream, but welp
2024-09-02 21:43:07 +02:00
YoshiRulz 4fc3d9bd40
Update Meziantou.Analyzer and enable new rule MA0160
"Use ContainsKey instead of TryGetValue"

I checked the source and MA0159 "Use 'Order' instead of 'OrderBy'" looks
for the LINQ method in the BCL specifically, not by signature, so we
can't replace our bespoke `OrderBySelfAnalyzer` :(
2024-09-02 22:34:11 +10:00
CasualPokePlayer 57d6355083 Use VersionInfo user agent for rcheevos too 2024-09-01 12:41:25 -07:00
YoshiRulz e9aba0557e
Use correct product name in `User-Agent` value 2024-09-02 05:31:19 +10:00
YoshiRulz cda23dd38e
Move `User-Agent` value to `VersionInfo` and ensure it's valid
fixes e22082c6b
2024-09-02 05:21:56 +10:00
CasualPokePlayer 133ff5a77e Suppress the context menu if right click has a binding 2024-08-31 19:07:57 -07:00
CasualPokePlayer e22082c6b4 Set a user agent for HttpCommunication 2024-08-31 19:07:57 -07:00
YoshiRulz 5b5652d01e
Revert "Update VersionInfo.cs"
This reverts commit b9d8af8854.

Per https://github.com/TASEmulators/BizHawk/wiki/Release-checklist this
should be done immediately before release.
The reason for that is to avoid having several values for dev builds
between releases, a "stable API" if you will.
2024-08-31 22:50:44 +10:00
feos b9d8af8854
Update VersionInfo.cs 2024-08-31 09:46:54 +03:00
YoshiRulz c138e38951
Ask the user to reconsider quitting if A/V recording (resolves #4017) 2024-08-31 12:34:35 +10:00
YoshiRulz 31b0a29d2d
Refactor `MainForm`'s `Closing` handler 2024-08-31 11:37:55 +10:00
CasualPokePlayer aeda8f1659 Add microphone button for melonDS
This changes the behavior so the user just has to press the microphone button to blow the mic, where the volume of the blowing can be controlled with the mic volume axis (but now the neutral value of mic volume is 100 rather than 0)
2024-08-30 17:35:18 -07:00
CasualPokePlayer 1ce8b855c7 remove app.config dpi stuff
mono does not like this (fixes #4002)
2024-08-30 17:11:22 -07:00
CasualPokePlayer d70daae5d6 Create Contains impl for arrays, fix device id blacklist detection 2024-08-30 16:10:54 -07:00
CasualPokePlayer c54102b3a6 prevent Broadwell gpus from using GL interop
a user reported to me they just get a crash in DxopenDevice, although yet their pc does not have a dual gpu setup, indicating the drivers for their gpu are rather bad
Intel HD Graphics 5500 was the specific gpu, but i'll just be safe and blacklist all of Broadwell
2024-08-30 01:07:15 -07:00
Morilli ea1dcf5b22 Simplify SearchEngineSettings ctor 2024-08-30 02:23:40 +02:00
Morilli 82fa98fc7d Ensure the ram search changes column is in a consistent state
the settings store whether or not the column should be visible even though that should be controlled by the Mode setting alone
2024-08-30 02:21:39 +02:00
YoshiRulz 10ebea4dda
Ban `BitConverter.To*`
I was hoping not to mute this Analyzer for the Cores project, but there
were a couple usages of `BitConverter` there that were too far gone into
dumb territory to fix in this commit
2024-08-30 00:17:01 +10:00
Morilli 15ac8e2905 Fix cursor icon position in horizontal tastudio orientation
necessary with 00228a1f20
2024-08-29 08:22:25 +02:00
YoshiRulz f09e72e7e0 Clean up `WatchValueBox.SetFromRawInt` 2024-08-29 06:43:14 +02:00
Morilli d479cb4366 Delete ConversionTests.cs 2024-08-29 06:23:56 +02:00
Morilli a51ed03c02 move ReinterpretAsF32 to a common location and use it more
as well as its inverse
2024-08-29 06:17:40 +02:00
Morilli 5588d68e4a make DifferentBy uint as well 2024-08-29 05:54:05 +02:00
Morilli b4bcb5755d fix some exception types
can these even occur?
2024-08-29 05:39:48 +02:00
Morilli 6d9c74b7ea change a bunch of stuff to uint
- closes #4001
2024-08-29 05:35:50 +02:00
Morilli 564b916499 remove unused function 2024-08-29 05:35:27 +02:00
Morilli 3c218c6642 Optimize RamSearchEngine.Preview 2024-08-29 05:35:27 +02:00
CasualPokePlayer 53436e81f5 fix GDI+ on Linux (again) 2024-08-28 20:26:00 -07:00
YoshiRulz ef028dfea4
Add comment to `TasMovie.AddTasProjLumps`
fixes 884110e61
2024-08-29 13:11:27 +10:00
Morilli 884110e61a Fix TasMovie save when TasStateManager is null 2024-08-28 03:47:38 +02:00
Morilli 74dcd81b85 don't control stop movie in TAStudio movie load
was removed in b6a0688be0, and while not strictly required this will leak TasMovies otherwise.
2024-08-28 03:47:38 +02:00
Morilli 8956657a34 lazy-initialize TasStateManager and markers
This is a bit of a dangerous change. Ideally this will fix the TasStateManager being initialized twice for loaded movies and have no other noticable effect.
2024-08-28 03:46:14 +02:00
Morilli 532dc06e64 tweak TasMovie.StartNewRecording slightly
StartNewRecording is now always called for new tas projects in TAStudio, and the marker change code in there caused the Changes bool to get set and never cleared.
2024-08-27 23:43:55 +02:00
Morilli b6c031beaa Update window titles properly in TAStudio
Some change at some point removed code that implicitly triggered window title updates, so they weren't always correct now.
2024-08-27 23:41:52 +02:00
Morilli 4194870f6f Add tasmovies to recent list on load
This was removed in 42aa9d991d, but I don't remember if it was intentional or a mistake.
In any case it feels bad to open tas movies and not get them added to the recent list.
2024-08-27 23:37:48 +02:00
Morilli 00228a1f20 Tweak some InputRoll values
- see #3708

A bit experimental, let's just see how it feels.
2024-08-27 18:53:06 +02:00
CasualPokePlayer 3c1248547f This should be Max, not Min 2024-08-25 22:10:27 -07:00
CasualPokePlayer 0a9c2dc276 Don't allow 0 width/height rectangle to be used with GDI+'s buffered graphics 2024-08-25 22:09:10 -07:00
CasualPokePlayer f9883f6700 remove ? 2024-08-25 18:32:53 -07:00
CasualPokePlayer f18c2467de Undo previous commits, try setting glx depth explicitly (probably isn't what's needed? maybe it is? ehhh)
TODO: this seems to be an issue anyways with buggy nvidia drivers under xwayland, perhaps that setup can be detected and forced over to GDI+?
2024-08-25 18:30:10 -07:00
CasualPokePlayer 516a021add Try making this actually work 2024-08-25 17:37:41 -07:00
CasualPokePlayer bb456e45be Try to workaround some Linux Nvidia driver bug 2024-08-25 15:48:14 -07:00
Morilli 436be60222 cleanup and fix GenericDebugger.DecrementCurrentAddress 2024-08-25 21:07:40 +02:00
Morilli 1ea8cf2f36 check disassembler address properly in GenericDebugger.Disassemble
- closes #3524

- the address was not checked on the first call
- the comparison needs to be >=, not >
2024-08-25 21:01:06 +02:00
YoshiRulz 93fe2c8b6a
Ban some more BCL methods (not used anywhere) 2024-08-26 02:01:06 +10:00
YoshiRulz 67f87b15c4
Ban runtime asserts without a message 2024-08-26 02:00:50 +10:00
YoshiRulz 8e12e44411
Ban `Control.Focus`
"Focus is a low-level method intended primarily for custom control
authors. Instead, application programmers should use the Select method
or the ActiveControl property for child controls, or the Activate method
for forms." --MSDN
2024-08-26 01:21:40 +10:00
YoshiRulz 2dd87d78f9
Use binary literals instead of `Convert.ToByte` in `D64` 2024-08-25 23:34:09 +10:00
YoshiRulz c882fe4ea5
Add official `BannedApiAnalyzers` and ban some string parsing methods 2024-08-25 23:31:16 +10:00
YoshiRulz 846253760e
Extract more helpers for finding Lua forms/controls by handle 2024-08-25 03:49:57 +10:00
YoshiRulz b69e466c03
Extract constant in `FormsLuaLibrary` 2024-08-25 03:39:29 +10:00
YoshiRulz a1faf8bf0a
Speed up `forms.*` by knowing that form/control handles are unique 2024-08-25 03:39:13 +10:00
YoshiRulz 170d1a62ed
Add warning message for Lua functions called with mismatched x/y/w/h 2024-08-25 03:39:02 +10:00
YoshiRulz 884fee6c6d
Encapsulate x/y/w/h checks in `FormsLuaLibrary` 2024-08-25 03:39:02 +10:00
YoshiRulz ecaece0488
Fix Lua forms having a blank title when not specified 2024-08-25 03:39:01 +10:00
YoshiRulz c3057298f9
Fix `forms.destroyall` not clearing the list 2024-08-25 03:39:01 +10:00
YoshiRulz 681a5764d6
Fix LuaPictureBox functions only working on the first form
fixes 672536305
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
2024-08-25 03:38:58 +10:00
YoshiRulz bda40c7ba3
Dedup `forms.{drawString,drawText}` implementations 2024-08-25 03:38:41 +10:00
YoshiRulz b99a3831e9
Change return type of `BootGodDb.Identify` to `IReadOnlyList` 2024-08-23 16:51:40 +10:00
YoshiRulz fc446868a7
Fix `BootGodDb.Identify` mutating lookup
fixes f010d6f80, 633216be1
2024-08-23 16:45:44 +10:00
Morilli 8c9587e00b Fix BootGodDB lookup being completely broken in quicknes
- closes #3703

Presumably broken since e38726db50.
2024-08-22 23:15:20 +02:00
Morilli f010d6f802 Fix bootgod exception on missing game hash
fixes 633216be14
2024-08-22 22:54:21 +02:00
YoshiRulz 7dfb624427
Remove `WorkingDictionary<K, V>` 2024-08-23 02:53:30 +10:00
YoshiRulz 34d71e90bc
Add more `GetValueOrDefault` overloads 2024-08-23 02:53:30 +10:00
YoshiRulz 72b2e78957
Refactor `AutoFireStickyXorAdapter.IncrementLoops` 2024-08-23 02:49:47 +10:00
YoshiRulz 5dd3dc7ae5
Refactor `AutofireController.{IsPressed,LatchFromPhysical}` 2024-08-23 02:49:47 +10:00
YoshiRulz 384e4c913c
Short-circuit loops in `{,Autofire}Controller.LatchFromPhysical` 2024-08-23 02:49:47 +10:00
YoshiRulz 633216be14
Remove `Bag<K, V>` 2024-08-23 02:48:03 +10:00
YoshiRulz ba4c406a36
Add names to bool argument in `TAStudio.StartNewMovieWrapper` calls
fixes b6a0688be
2024-08-22 22:44:14 +10:00
YoshiRulz 325880be18
Further cleanups to `MainForm.ProcessInput`
fixes 2f5dfcea3
2024-08-22 22:40:42 +10:00
Morilli 2f5dfcea33 simplify variable assignment 2024-08-22 13:34:39 +02:00
Morilli 17733e38f7 Check all individual buttons with input key priority
- closes #3842

If any of the pressed buttons is an input, don't trigger any hotkeys.
2024-08-22 13:33:56 +02:00
Morilli f07c689c58 Improve horizontal TAStudio layout a bit
see #3708
2024-08-22 01:30:46 +02:00
Morilli b6a0688be0 simplify TAStudio movie starting
- removes HandleMovieLoadStuff, which should ™️ not be necessary
- pass newMovie parameter into MainForm.StartNewMovie. This is currently probably irrelevant, but useful later
2024-08-21 22:24:39 +02:00
Morilli 1c44dc5913 don't create undo steps when setting TasMovie.StartsFromSavestate
A movie either starts from a savestate, or doesn't. It should not be possible to undo the marker changes done when setting this value.
2024-08-21 22:12:32 +02:00
YoshiRulz c2a336647c
Use `Type.EmptyTypes` in `MovieImport.ImportFile` 2024-08-21 22:15:14 +10:00
kalimag 4e85a71d53
HexEditor "File on Disk" fixes (squashed PR #3998)
* Fix keeping rom domain selected

* Turn unnecessary field into local

* Handle `null` return from `GetRomBytes()`

* Simplify `GetRomBytes()`

* Add try-catch around opening rom file
2024-08-21 15:59:39 +10:00
CasualPokePlayer b9cd4a93cc Remove unneeded modifer 2024-08-20 15:23:36 -07:00
CasualPokePlayer 02acd542c2 Guard against cheat codes in RetroAchievements' hardcore mode
originally I thought just blocking the cheat window would be enough, but autoloaded cheat codes could sneak through. An actual check for cheat codes being active prevents this being an issue.
2024-08-20 15:22:39 -07:00
Morilli beab2b141b Only force a core name if one exists
This could actually not be the case for imported movies for example and is handled elsewhere, but this force parameter breaks rom loading completely when QueuedCoreName is empty.
2024-08-20 23:10:38 +02:00
Morilli cdd7ee1fea Improve missing firmware dialog readability
see comment here: https://github.com/TASEmulators/BizHawk/issues/3980#issuecomment-2269483563
2024-08-20 23:09:16 +02:00
Morilli 8d4c29a64f ensure updated core settings are always saved in config
- closes #3966
2024-08-18 23:12:24 +02:00
RetroEdit 3ede77b8b7
Change OnMovieEnd default to 'Pause' instead of 'Finish' (#4008) 2024-08-18 18:45:04 +03:00
YoshiRulz d9331c5a28
Add feature flag to disable the gamedb 2024-08-18 16:21:51 +10:00
YoshiRulz c319bf5fb8
Fix LINQ chain in `FirmwareManager.DoScanAndResolve`
fixes 963b925a1
2024-08-18 16:09:31 +10:00
Morilli 963b925a1a prefer ideal firmware over acceptable firmware
see #3974
2024-08-18 03:30:31 +02:00
Morilli fa08002fbf don't set quickNES's priority to low
it's the preferred core after all, this doesn't make sense
2024-08-18 03:28:56 +02:00
Morilli 92399482d4 also search in descriptions in the lua functions filter
- closes #3651
2024-08-18 02:46:57 +02:00
Morilli e893e3a1ff Cleanup CueFileResolver
also closes #3532
2024-08-18 02:38:23 +02:00
Morilli 7c89bda312 update displaymanager on rom load failure 2024-08-17 22:26:10 +02:00
Morilli 9085bd6e0c Set correct GameInfo even when rom loading failed
- closes #3986

(maybe this should be in CloseGame as well?)
2024-08-17 22:25:55 +02:00
YoshiRulz 60366c13b5
Fix signature of `IMemoryApi.WriteFloat` 2024-08-16 22:49:35 +10:00
YoshiRulz 70b640240e
Simplify boolean comparison
this was getting flagged in CI but not on my machine
2024-08-16 21:09:38 +10:00
YoshiRulz 6b160d9bd0
Revert RAM Search refactor (PR #3954)
reverts 1a9e5e52f1
2024-08-15 01:57:47 +10:00
YoshiRulz 0f22ef2ad0
Revert "Change ToRawInt to ToRawUInt"
This reverts commit 542e043261.
2024-08-15 01:53:59 +10:00
YoshiRulz 0184bcd0af
Restore numeric values for `PreviousType` enum
fixes 1a9e5e52f
2024-08-14 00:38:12 +10:00
kalimag ab7f379e74 Correct rewind dialog typo 2024-08-09 19:41:52 +10:00
YoshiRulz a1aaabe8d5
Add ctors to `LoadRomArgs` and `OpenAdvanced_OpenRom` 2024-08-09 13:36:27 +10:00
YoshiRulz 12310befff
Remove IOpenAdvanced parsing from places unrelated to recents menu 2024-08-09 13:36:22 +10:00
YoshiRulz 9f5a5d8593
Fix crash due to mutating `ToolManager._tools` while enumerating it
resolves #3983
2024-08-06 02:11:17 +10:00
kalimag cdf79d3593
Make external tools path independent of working directory (squashed PR #3987)
* Make external tools path independent of working directory

* Add `ExternalToolsAbsolutePath` extension

* Use absolute path for external tool dependencies as well
2024-08-06 01:56:10 +10:00
CasualPokePlayer 494fe90bfc fix Tilt Y in 3ds schema 2024-08-05 00:47:49 -07:00
CasualPokePlayer a675e882fe avoid double compressing zstd zip entries 2024-08-04 15:08:53 -07:00
CasualPokePlayer 7ebb89fec9 release Encore 2024-08-04 14:30:43 -07:00
CasualPokePlayer 618f66f970 Add 3DS virtualpad schema 2024-08-04 14:26:48 -07:00
CasualPokePlayer 91de8608af Do image/texture caching better
also don't try to cache the sampler / avoid set sampler calls (the sampler is not pipeline specific, so it's affected by other pipelines setting the sampler)
2024-08-03 23:59:20 -07:00
YoshiRulz 2b371e2752
Fix Gambatte and SameBoy palette load file pickers using wrong dir
fixes 348cbd18d
2024-08-04 03:46:13 +10:00
YoshiRulz 1bc1f1b3d2
Add overload for `IGuiApi.WithSurface` with stronger encapsulation 2024-07-26 16:03:02 +10:00
YoshiRulz 7b644f771e
Use `System.Drawing.Primitives` 2024-07-26 10:33:20 +10:00
kalimag 413fd40b46 Fix fuzzy cue file resolving
Partially revert 7cde8bb
2024-07-25 16:46:28 +10:00
James Groom 3a8b3913bf
Fix Uzebox framerate (squashed PR #3975)
These numbers are derived from the 2010 whitepaper:
NTSC's 4*(315/88 MHz) is doubled to give the master clock rate, which is
then divided by 1820 cycles per line and 262 lines per (progressive)
frame.

---------

Co-authored-by: Morilli <35152647+Morilli@users.noreply.github.com>
2024-07-24 07:31:34 +10:00
YoshiRulz 8fda95066c
Fix value being cached when it shouldn't in `InputRoll.LastVisibleRow`
resolves #3972
partially reverts dd4f9aaf6
2024-07-21 06:28:31 +10:00
Morilli cc1b9c5903 TAStudio: access CurrentTasMovie before stopping it
fixes 4c39a81228

- closes #3973
2024-07-20 08:15:10 +02:00
Morilli 5fd3575c0f Improve tastudio refresh behavior in tastudiolualibrary
should resolve #3969. Let's hope this doesn't break anything.

There still seems to be some overhead, but I can't profile this so I can't say whether it's from submitclearframes or applyinputchanges.
2024-07-20 07:56:52 +02:00
YoshiRulz cee9661f0e
Reduce indentation in `Bk2Controller.SetFromMnemonic` 2024-07-20 13:41:49 +10:00
YoshiRulz 151491c844
Use an array for `Bk2Controller.ControlsOrdered` 2024-07-20 13:39:37 +10:00
YoshiRulz 1049a091c0
Convert `Bk2Controller.ControlMap` to a struct 2024-07-20 13:38:40 +10:00
YoshiRulz b7a851ea92
Set default window scale for WonderSwan to 3x 2024-07-19 07:27:13 +10:00
Morilli 15125ec11f Improve tastudio lualibrary speed
see #3969
2024-07-18 02:15:07 +02:00
Morilli f59cfb1710 set current branch properly in TAStudio movie load
apparently, GoToFrame might frameadvance, which in turn calls UpdateAfter(), which in turns updates the current selected branch in the TasSession with the value of the current movie.
So, we need to set the current movie's current branch from the session's value before it gets deleted.

- closes #3968
2024-07-17 22:46:00 +02:00
YoshiRulz 9a5a75e5bb
Add some helpers to `BitmapBuffer` 2024-07-16 08:08:41 +10:00
YoshiRulz d7e9668d50
Add and use `Span`-from-`IntPtr` helper 2024-07-16 07:30:09 +10:00
YoshiRulz f742fe55d5
Refactor `ToolManager.Close`
that ought to cover everything
2024-07-16 04:09:01 +10:00
YoshiRulz f9cdad2ea6
Move system-specific helpers in `MainForm` to separate file 2024-07-14 05:40:25 +10:00
YoshiRulz e49c4689de
Minor refactors to system-specific helpers in `MainForm` 2024-07-14 05:34:42 +10:00
YoshiRulz b2184e46d5
Clean up some `DropDownOpened` handlers for disk switch submenus 2024-07-14 05:31:04 +10:00
YoshiRulz 65979e61ec
Reduce indentation in system-specific helpers in `MainForm` 2024-07-14 05:25:36 +10:00
YoshiRulz 2321bc55e6
Add `LoadedCoreIsNesHawkInVSMode` helper prop in `MainForm` 2024-07-14 05:10:23 +10:00
YoshiRulz f21c8b914c
Refactor `MainForm.EnsureCoreIsAccurate` 2024-07-13 01:21:45 +10:00
YoshiRulz 1fdacd762a
Refactor `yield`ing methods to conventional LINQ 2024-07-12 14:42:11 +10:00
YoshiRulz dfe8b1308c
Refactor `yield`ing methods to direct, stateless returns 2024-07-12 14:42:10 +10:00
YoshiRulz 166f1d537e
Comment-out unused `DiskBuilder.BamEntry.Entries` (C64Hawk) 2024-07-12 14:42:10 +10:00
YoshiRulz fc8fd64143
Simplify `DiskBuilder.BamEntry.GetBytes` (C64Hawk) implementation 2024-07-12 14:42:10 +10:00
YoshiRulz 18bc51f5e7
Simplify `IDisassemblable.AvailableCpus` implementations 2024-07-12 14:42:10 +10:00
YoshiRulz da06dae80c
Decrease indentation in `InputRoll.GenerateContextMenuItems` 2024-07-12 14:42:10 +10:00
Morilli c5820f0c0f TAStudio: don't select branch when none exists
-closes #3967
2024-07-12 06:03:14 +02:00
YoshiRulz 616437ff31
Restore exception message in `SavestateFile.Create`
partially reverts e9d6716a3
2024-07-12 08:09:59 +10:00
YoshiRulz ee0c0a80d0
Bump supported Win10 version 2024-07-12 01:51:28 +10:00
Morilli e9d6716a33 Fix savestating being possible after movie has finished 2024-07-10 21:03:59 +02:00
CasualPokePlayer 662fd83f5e Prevent user changing clock stopping message pumping
TODO: Audit other usages of DateTime.Now assuming it is monotonic (also use DateTime.UtcNow where applicable to avoid DST causing issues)
2024-07-10 01:51:28 -07:00
YoshiRulz e44810a725
Fix stacktraces for `RangeToExclusive` extension 2024-07-10 13:30:35 +10:00
YoshiRulz 00c103da0b
Remove unused import 2024-07-10 13:20:55 +10:00
CasualPokePlayer d8431d615e Avoid zealously copying the entire video buffer
this might be larger than bufferwidth*bufferheight, and thus possibly dramantically decrease screenshot/dumping performance
2024-07-08 16:29:51 -07:00
Morilli 57e3c47bcc Fix InputRoll not updating CellHeight and CellWidth on padding change 2024-07-08 19:21:35 +02:00
YoshiRulz 0d2844d1fd
Improve docs on `Config.CorePickerUIData`
fixes 14cf4b348, 81e2b5b47, and bbb3b4cd7
2024-07-08 23:57:58 +10:00
Morilli bbb3b4cd7d Update comment on CorePickerUIData
also restore systemid default core restore logic that exists for some reason
2024-07-08 06:26:57 +02:00
Chris Siebert 45002e6870
Fix NesHawk tracelogs sometimes using 32-bit addrs (squashed PR #3964)
specifically, only for the few instructions in this diff, and only when the PC would over- or underflow as a result of the offset
2024-07-08 11:26:34 +10:00
Morilli 81e2b5b47b Make preferred core labels more verbose
they now display all system choices that they set instead of just the first
2024-07-08 03:03:34 +02:00
Morilli d74b130c22 Add preferred core picker choice for Satellaview
idk if this list is supposed to be sorted because it kinda isn't?
2024-07-08 03:00:47 +02:00
YoshiRulz 2a5d4b903c
Add Analyzer to disallow `^= true` 2024-07-08 10:39:06 +10:00
YoshiRulz c99d2212b2
Dedup `MainForm.CheckHotkey` with existing helpers / event handlers 2024-07-08 09:27:21 +10:00
YoshiRulz d515b1bdad
Document bare minimum of CLI flag parsing behaviour 2024-07-08 04:05:12 +10:00
YoshiRulz 5e5f5772c6
Enable Analyzer rules re: blank doc comments and fix noncompliance 2024-07-08 01:37:22 +10:00
YoshiRulz 9a82dfd05f
Enable SA1517 and fix noncompliance (except in Cores)
"Code should not contain blank lines at start of file"
2024-07-08 01:17:05 +10:00
YoshiRulz 39b69641a6
Enable SA1506 and fix noncompliance
"Element documentation header should be preceded by blank line"
also fixes typo in rule config from c93a0f9d1
2024-07-08 01:13:06 +10:00
YoshiRulz c93a0f9d1b
Enable SA1514 and fix noncompliance (except in Cores)
"Element documentation header should be preceded by blank line"
2024-07-07 12:12:08 +10:00
feos ee9639a6fc video dumper: mention dependency for AVC AVI 2024-07-06 19:05:33 +03:00
Morilli 4c39a81228 Remove unnecessary duplicated actions in TAStudio
this should not change any behavior.
2024-07-06 17:39:52 +02:00
Morilli d161215754 Don't control reboot in TAStudio
There seems to be no good reason for why this would be necessary. TAStudio behaves just fine when the MainForm reboots itself.
2024-07-06 01:56:13 +02:00
Morilli 74970cc576 Remove unnecessary Thread.Sleep(0)
In this same loop we are already sleeping when necessary, so this Thread.Sleep(0) could only add unwanted delay
2024-07-05 19:21:42 +02:00
CasualPokePlayer e48e6c69f2 respect GreenZoneSettings.txt even if greenzone is missing; fix ClientSettings.json loading (probably regressed in 42aa9d991dc3dde03234a15ddfdc2efdebf1c097?) 2024-07-04 21:34:09 -07:00
YoshiRulz 1c302e56db
Fix default arguments in `override`s which don't match the declaration
not enabling the relevant Analyzer rule MA0061 since that also triggers
when the override omits the default argument
2024-07-04 06:43:43 +10:00
YoshiRulz 1f7d75b7d2
Enable MA0044 and fix noncompliance
"Remove useless ToString call" (on a `string`)
2024-07-04 06:36:57 +10:00
YoshiRulz 9f0009b972
Use `HashCode.Combine` instead of `string.GetHashCode` + XOR
may write an Analyzer for this later
2024-07-04 06:31:44 +10:00
YoshiRulz 8546618c9a
Remove unused import
fixes da25438b1
2024-07-04 06:23:26 +10:00
YoshiRulz da25438b1f
Remove redundant `Stream.Read` result check in `LsmvImport`
fixes a7e1c8fd0
2024-07-04 06:18:54 +10:00
YoshiRulz b818f5325a
Enable MA0040 and silence remaining case
"Flow the cancellation token"
2024-07-04 05:48:35 +10:00
YoshiRulz a7e1c8fd09
Enable MA0060 and fix noncompliance (except in Cores)
"The value returned by Stream.Read/Stream.ReadAsync is not used"
2024-07-04 05:12:58 +10:00
YoshiRulz a329d44e41
Enable MA0090 outside of Cores project
"Remove empty else/finally block"
2024-07-03 23:11:48 +10:00
YoshiRulz c4498685c2
Enable MA0091 and fix noncompliance
"Sender should be 'this' for instance events"
2024-07-03 23:10:57 +10:00
YoshiRulz 67edf3f047
Enable MA0070 and fix noncompliance
"Obsolete attributes should include explanations"
2024-07-03 23:10:19 +10:00
YoshiRulz 152b3ad6f5
Enable MA0057 and fix noncompliance
"Class name should end with 'Attribute'" (when subclassing `Attribute`)
2024-07-03 23:08:23 +10:00
YoshiRulz 3fb0afa05e
Use a global import for `MS.VisualStudio.TestTools.UnitTesting.*` 2024-07-03 22:51:48 +10:00
YoshiRulz ccb69b18a9
Use a global import for `System.*` 2024-07-03 22:51:48 +10:00
YoshiRulz c0b676647b
Enable MA0104 and silence remaining cases
"Do not create a type with a name from the BCL"
2024-07-03 22:51:47 +10:00
YoshiRulz 1be3531e7c
Rename `GBHawk.Timer` to `GBHawk.GBTimer` 2024-07-03 22:51:47 +10:00
YoshiRulz 91c48117a3
Rename `BizHawk.BizInvoke.ParameterInfo` to `InvokerParameterInfo` 2024-07-03 22:51:47 +10:00
YoshiRulz db2782ca1b
Enable MA0140 and fix noncompliance (except in Cores)
"Both if and else branch have identical code"
see 618951403
2024-07-03 22:51:47 +10:00
YoshiRulz c188feb50c
Move `SimpleGDIPDisplayManager` to `BizHawk.Client.Common` 2024-07-03 22:51:19 +10:00
YoshiRulz db8454a0ff
Fix testroms project compilation
fixes e8c957a7a
2024-07-03 22:49:01 +10:00
YoshiRulz c6101a190e
Update StyleCop and other Analyzers 2024-07-03 20:44:25 +10:00
YoshiRulz 504ba590b1
Switch to `string.Replace(char, char)` and `string.LastIndexOf(char)` 2024-07-03 20:44:21 +10:00
YoshiRulz 0067dd4b0a
Extract helper method `HawkFile.PathContainsPipe` 2024-07-03 20:38:46 +10:00
YoshiRulz 43d16473d8
Backport `string.Contains(char)` and `string.EndsWith(char)` 2024-07-03 20:35:35 +10:00
YoshiRulz ad8b4653d4
Simplify `MovieImporter.SingleSpaces` 2024-07-03 19:43:43 +10:00
YoshiRulz 759784a648
Fix bug in PCEHawk's tracelog 2024-07-03 19:39:38 +10:00
YoshiRulz 17a268934e
Remove outdated comment
fixes b842f3ed1
2024-07-03 18:47:16 +10:00
feos fd40b32277 uae: for testing writing to floppy 2024-07-02 21:38:42 +03:00
Morilli 04e9bf054e Fix core reboot flag on preference change
This now checks core names instead of system ids
2024-07-02 02:14:07 +02:00
feos 97dc7108c3 uae: "support" rds and reduce magic 2024-06-30 15:48:08 +03:00
CasualPokePlayer 86943143f3 Fix SGM domains using stale arrays after state load 2024-06-28 22:37:56 -07:00
Morilli 384b08a7b7 Fix customization options dialog text overrun
Should now display all text on screen without cutting off.
2024-06-27 20:43:59 +02:00
Morilli 12981dc6df Add column name tooltip to column headers in TAStudio
- closes #3124
2024-06-27 02:45:22 +02:00
Morilli 2860a0189c Regenerate designer files after changes in last commit
restores previous default values after default changes in 7414aea850
2024-06-27 02:07:19 +02:00
Morilli 7414aea850 Fix InputRoll DefaultValue not matching initialized value 2024-06-27 01:54:37 +02:00
Morilli 722de0c765 Render before throttling
By putting the throttle step after the render step, the screen will be updated with the emulated frame's video output immediately instead of having to wait for the throttle sleep to complete.
In scenarios where running the core is relatively cheap (<< 1 / fps), this should noticably improve visual latency while playing.

For example, assuming a 60fps game (~16.7ms per frame), 5ms core update and 1ms render time, there will be a 10-11ms earlier render.
2024-06-26 23:32:51 +02:00
Morilli b3a1d5eb13 Increase input thread polling frequency
This does not have a significant impact on cpu usage in my testing (~+0.5% cpu on a 4-core system) and should improve input latency by 4ms on average.
2024-06-26 23:25:35 +02:00
Morilli bf82d95e0d Respect background input setting for axis values
- closes #3957.
Previously, axis values were always set, even when that setting was offf.
2024-06-26 23:19:56 +02:00
CasualPokePlayer 64ef1bfc17 Make NDS sys bus hack work better
fixes e6f8450685
2024-06-24 19:22:51 -07:00
CasualPokePlayer ce1df52af2 Fix ToSysdrawingBitmap(Bitmap) when bitmapbuffer does not have alpha
see https://tasvideos.org/Forum/Posts/530047
2024-06-24 12:27:51 -07:00
Morilli 31b8bedad7 Allow exporting bk2 from TAStudio without saved tasproj
- closes #3504.
This also makes the bk2 export always open a file picker dialog when the file to be written already exists instead of just asking for overwrite.
2024-06-24 18:19:34 +02:00
Morilli e6f8450685 Fix NDS System Bus name being invalid
- closes #3535
2024-06-24 13:49:11 +02:00
Morilli d7b92cbb72 Apply some free optimizations to TasMovieMarkerList 2024-06-24 12:05:45 +02:00
Morilli 1c3f7204bd Fix TAStudio branch load not cloning markers
-closes #3899
2024-06-24 11:59:38 +02:00
YoshiRulz f468d4ad01
Offer 1-click update/add cycle count when at end of movie 2024-06-24 03:42:09 +10:00
YoshiRulz 478d375fe5
Minor refactors to `MovieSession.HandlePlaybackEnd` 2024-06-24 00:29:18 +10:00
Morilli 8935a3a676 Don't attempt to load recent tas after restart if it's diferent from the current tas 2024-06-23 04:59:25 +02:00
Morilli 6cbf06d444 Enable the Movie menu even with no core loaded
- resolves #3570
2024-06-23 04:24:17 +02:00
Morilli 3841d88268 Regenerate MainForm.Designer.cs
this is not a functional change. I changed something, did ctrl+z and saved.
2024-06-23 02:53:49 +02:00
Morilli e1af631af6 Apply some sketchy nullable related changes
TasView_PointedCellChanged will now not short-circuit when the OldCell has null values (happens on MouseEnter mainly).
Also, null column is accepted as this allows dragging off-control without input being dropped.
Also, OldCell and NewCell are assumed to never be null (is true in the current logic).
2024-06-23 02:11:37 +02:00
Morilli 8278b30579 Do local selection check in TasView_PointedCellChanged 2024-06-23 02:09:00 +02:00
Morilli cfc76ee47a Fix subframe core check in tastudio bk2 exporting 2024-06-22 23:04:03 +02:00
Morilli ad1f4f40b5 Fix cheat compare value saving
- closes #3567, closes #3523
2024-06-22 21:13:37 +02:00
Morilli 6364475b21 Fix potential crash in savestate loading
Also throw when attempting to create such an invalid savestate. No idea yet how that can happen but apparently it can.
2024-06-22 01:41:01 +02:00
Morilli aeb80e5810 Implement DragDrop for MultiDiskBundler
- closes #3950
2024-06-21 20:15:10 +02:00
Morilli 542e043261 Change ToRawInt to ToRawUInt
I firmly believe this has advantages. Don't ask me which.
Also move ReinterpretAsF32 to BizHawk.Common and use it more
2024-06-21 17:14:11 +02:00
CasualPokePlayer a11077ef4e Revert "Simplify MainSlnExecutable.props"
This reverts commit 1edddb2126.
2024-06-20 16:21:58 -07:00
CasualPokePlayer 1edddb2126 Simplify MainSlnExecutable.props
makes it play nicer with Rider WinForms designer and is much simpler than what was present before

also not sure where the "TargetName changing AssemblyName" behavior actually came from, testing on Rider/dotnet build/VS2022 all yield no changes to AssemblyName, so I assume this is fine
2024-06-20 15:16:48 -07:00
Moritz Bender 256218305b
Refactor IControlMainform handling in Mainform (#3935)
This allows any loaded tool to control any aspect of `IControlMainform` independently of others. Also improves rewinder handling when any tool `WantsToControlRewind`.
2024-06-20 19:16:11 +02:00
Moritz Bender 1a9e5e52f1
Refactor RamSearch to increase speed and improve functionality (#3954)
- merges `IMiniWatchDetailed` and `IMiniWatch` into one
- allow switching search modes without restarting the search
- general speed improvements due to less peeks when e.g. auto-search is toggled
- removes `PreviousType.LastSearch` due to its questionable use case
2024-06-20 18:25:15 +02:00
CasualPokePlayer 866fb86b60 Guard against mismatched GPUs with D3D11 GL interop
resolves #3939
2024-06-19 23:04:03 -07:00
YoshiRulz a9df8b40d7
Simplify About dialog audio playback 2024-06-20 04:17:01 +10:00
YoshiRulz 3490b544b4
Have About dialog copy full Git commit hash to clipboard
and use full hash in GitHub web app URI
2024-06-20 04:01:58 +10:00
YoshiRulz e5dc04dc37
Move some version processing from About dialog to `VersionInfo` 2024-06-20 03:59:39 +10:00
Morilli 90c79d2220 ensure tests don't fail 2024-06-18 21:33:56 +02:00
Morilli f6d5271c61 Add test file just to be sure 2024-06-18 21:14:35 +02:00
Morilli 8abe276829 Give slightly more infformation in LoadOrThrow 2024-06-18 20:53:46 +02:00
Morilli 89824bac1c Simplify ReinterpretAsF32 2024-06-18 20:53:20 +02:00
CasualPokePlayer 6f68c84d8f bump up max samples for melonDS 2024-06-16 23:30:53 -07:00
YoshiRulz ae74e37d2d
Fix AooRE due to malformed response from wbox core (seen in melonDS) 2024-06-17 15:59:44 +10:00
CasualPokePlayer d52e67b9e9 Don't use ToLower() 2024-06-16 21:28:50 -07:00
CasualPokePlayer a9c04524c7 get ICycleTiming from service provider
fixes 87209aa11b
2024-06-16 21:27:05 -07:00
CasualPokePlayer 87209aa11b Add way to unregister auto-registered services with BasicServiceProvider
allows for better handling with SubNESHawk and Libretro statable, maybe others
2024-06-16 21:18:24 -07:00
CasualPokePlayer 145e0431d0 Register IDriveLight for SubNesHawk
fixes another issue pointed out in #3949
2024-06-16 20:57:06 -07:00