Commit Graph

4454 Commits

Author SHA1 Message Date
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