Commit Graph

1583 Commits

Author SHA1 Message Date
RetroEdit 4456e84bf0
mGBA: Update SaveRAM mem domain to a hardcoded size. (#2311)
* Revert "mgba - try resetting sram memdomain after frame advance, so sram autodetection can progress and feed into frontend. addresses #1620, maybe not in the best way"

This reverts commit 25327b510d. We decided exposing the whole buffer would be better than dealing with a variable size memory domain.

* mGBA: Update SaveRAM mem domain to a hardcoded size.
2020-08-29 13:38:02 -05:00
RetroEdit cdf20ff1be
TAStudio: improve saving behavior (#2337)
* TAStudio import: ask before saving the bk2

* Only save cycle count at movie end; fixes #2203

* Rework the movie end cycle count warning.

* TAStudio import: allow saving even if no changes are detected
2020-08-29 13:33:13 -05:00
YoshiRulz 56b9ec2350 Add warning for loading config.ini from an older or new version
applies on startup and on `Config` > `Load Config From...`
also changed wording for corrupted config.ini warning
2020-08-29 13:29:12 -05:00
adelikat a421a60a20 restrict ZwinderStateManagerSettings to reasonable values 2020-08-29 13:18:02 -05:00
nattthebear 6de742b01b Revert a series of questionable zwinder changes
These all seem to have been made from the point of view of testing every possible value the UI allowed, and then fixing them all with as little effort as possible, with the fixes going deep in core logic instead of in the validation layer, and the fixes not making anything really "work"; just making it stop complaining.

ZWinderBuffers now require TargetFrameLength >= 1 again: A value of zero doesn't make much sense here, and didn't actually behave differently than 1.
ZWinderBuffers now require Size > 0 again: A size 0 buffer will never capture anything and has no value.  If you don't want a buffer, don't make one at all.  I believe that omitting some buffers might make sense for the state manager, maybe; those more familiar with all of its uses will have to chime in.  If that is the case, then the state manager should not instantiate buffers it does not plan to use.
ZWinderBuffers now throw exceptions again when a single state is bigger than the entire buffer:  If you're in this situation, things are phenomenally broken and your buffer is never going to capture anything successfully.  Users need to fix their settings in this case; they don't need to have a completely non functional system silently claim to work while not doing anything, leaving them befuddled as to why seeking is taking forever.
2020-08-29 12:42:25 -04:00
adelikat 39ac8864b6 TasMovie loading, simplify a bit by not relying on the existing instance of TasStateManager to hold onto settings 2020-08-29 11:32:41 -05:00
adelikat be6b1fa6e4 consolidate propertygrid heigh changing logic 2020-08-29 11:27:00 -05:00
adelikat 0951ef084f Tastudio - rework greenzone settings dialog to fix long descriptions, winforms is bad, this shouldn't have been this hard 2020-08-29 10:49:28 -05:00
adelikat 4b8cb22aba savestate history settings dialog - designer auto-gen 2020-08-29 10:49:28 -05:00
adelikat 991deee549 attempt to document ZwinderStateManagerSettings settings better 2020-08-29 10:49:27 -05:00
zeromus 234642ed0d fix some crashes in CDL. things were rough enough for CDL due to tool open/close and core life cycle being wrecked, but it totally melted down when CDL got sent through the service injection stuff, so this has been pretty broken for years now 2020-08-28 19:09:07 -04:00
zeromus f89840234d minimally fix nes CDL which was broken 3 years ago 2020-08-28 19:02:21 -04:00
zeromus 56082ddf44 move stackalloc in CDL 2020-08-28 18:50:11 -04:00
SuuperW 8789827100 instead of throwing an exception when the buffer is smaller than the state, don't capture the state 2020-08-28 16:30:50 -05:00
SuuperW 46de6aca94 don't throw exceptions when passing a BufferSize or TargetFrameLength of 0 to a ZwinderBuffer
size 0 means 0 states will be captured; TargetFrameLength 0 means no spacing of states (result behavior is identical to TargetFrameLength of 1; capture every frame)
2020-08-28 16:30:36 -05:00
YoshiRulz 14653fac0e
Fix or mute remaining code style warnings 2020-08-29 00:52:23 +10:00
YoshiRulz 17ff66c61b
Opt-in to .NET 5 SDK's extra static analysis, update Analyzer packages
the extra CSxxxx rules should be available for Framework too if using the new
SDK, I haven't tried
2020-08-29 00:51:34 +10:00
YoshiRulz 52a559908e
Update Config.LastWrittenFrom/Detailed when saving 2020-08-28 06:15:59 +10:00
zeromus faa3d52500 not sure why we create two tasstatemanagers when engaging tastudio... i guess one is used in case theres existing data (even if theres no existing data). anyway, this fixes the leak 2020-08-27 15:50:49 -04:00
zeromus f33ac3cce6 change how mainform disposes itself. it seems we can be disposed from deep inside winforms, likely when the window is closed. changed to not accidentally run dispose again 2020-08-27 15:42:32 -04:00
zeromus 0cff659608 tired of seeing zwinder spam 2020-08-27 15:41:20 -04:00
RetroEdit 7aea4e0271
TAStudio: properly resume playback after painting. (#2340) 2020-08-27 13:58:19 -05:00
YoshiRulz 08e24c96a7
Skip "run third-party code?" warning when using --open-ext-tool-dll 2020-08-28 04:48:57 +10:00
YoshiRulz 57acee9bd5
Remove unused field
fixes e128cb82f
2020-08-28 04:41:17 +10:00
YoshiRulz e128cb82f2
Add command-line switch --open-ext-tool-dll
takes an absolute path; or a relative path with or without `.dll` (relative to
ExternalTools)
2020-08-28 04:38:38 +10:00
adelikat 0109386049 dispose of TasStateManager 2020-08-27 09:22:30 -05:00
adelikat 41109d6fc2 apparently you need powers of 2 2020-08-26 20:14:30 -05:00
adelikat 950eac5be2 TasStateManager settings - make less aggressive RAM consumption defaults, 512mb total instead of 832mb 2020-08-26 16:03:29 -05:00
RetroEdit 00f8129b4d
TAStudio: Fix deletion crashing when deleting invalid indexes (#2339)
* TAStudio: Fix deletion crashing when deleting invalid indexes

The problem occurs when trying to delete a selection where some of the frames were valid, but the last displayed line (which is currently an extra non-input frame) was in the selection.

* LINQ alignment tweak
2020-08-26 08:18:24 -05:00
SuuperW 956b71060e fix an error with new logic in commit 6b63db8 2020-08-24 18:34:59 -05:00
SuuperW 6b63db80e2 give user the option to (attempt) keep or discard states when changing state history settings 2020-08-24 18:31:22 -05:00
SuuperW 4b6ff639ac allow user to change the state history settings for the currently open TAS project 2020-08-24 18:20:47 -05:00
nattthebear bbc9054517
rohmloader tweak (#2330)
When a missingfirmwareexception is encountered, do not fallback.  It's presumed that these cases are fixable by the end user.

Absolutely does not in any way fix #2327 - the user was emphatic that they had the BIOS file, so they must have hit some other situation.
2020-08-24 15:52:49 -04:00
adelikat 44d7603622 only apply gap filling at the start of the start of an interval. This addresses the "odd" behavior that if you have a gap of 10 in current, and navigate from frame 100 to 99, you get a state saved at 91 2020-08-23 20:40:36 -05:00
adelikat e6ceb1c323 slight tweak to default state manager settings, make the Gap size to target proportional to Current, so that it gets the same "state gap" 2020-08-23 20:22:01 -05:00
adelikat 354ccd1b23 ZwinderStateManager - when considering evicting from recent to reserved, don't assume the reserved is linear or has all gaps covered. Instead check for "nearby" states. This fixes the problem that any state prior to the first used marker would never get an "ancient" state. Technicalyl this will mean that a state can be _ancientInterval * 2 - 1 frames away from its nearest neighbor, but this should be close enough the desired behavior 2020-08-23 20:10:42 -05:00
adelikat 83686a5a15 slight refactor - MarkerControl.AddMarker, force the caller to pass in the frame instead of implicitely assuming Tastudio.Emulator.Frame when one is not passed on, only 2 places didn't pass a value in anyway 2020-08-23 19:27:27 -05:00
alyosha-tas 6501c48b13 GBHawk: make controller setting only effect MBC7 games 2020-08-23 20:08:43 -04:00
adelikat 7d2e18004f actually use the default TasStateManager settings from config when creating a new TasMovie 2020-08-23 18:16:41 -05:00
adelikat 16771bb6bf ZwinderStateManager - speedup and simply the Last property using StateCache 2020-08-23 17:56:01 -05:00
adelikat 1b0139ebc3
Majorly refactor ZwinderStatemanager to address # 2287 (#2321)
* rename highpriority to ReGreenZone, and add a comment, to better document what it is used for

* rename again, from regreenzone to gapFiller, rename settings too, make gap frame length 1000 instead of 10000

* oops

* merge original state with ancient, since we can never invalidate frame 0 anyway, it can safely be stored here

* unremove nonstate

* change ancient to reserved, in preparation for marker and branch states to go here, add more comments

* capture branch states as reserved, reconsider gap logic to account for the fact that a reserved state might be greater than the last current/recent state

* do not capture to reserved states if the state is already rreserved

* add a callback to check if a state is "reserved", client code wil return whether it is a branch or marker state.  Wire up reserved logic into eviction logic.  If reserved, go to reserved list, else evict

* add API for evicting reserved states, and wire it up to marker removal

* just in case

* a bit of renaming, add a unit test for an edge case that was broken with the Last property, add unit tests to cover it

* Revert "a bit of renaming, add a unit test for an edge case that was broken with the Last property, add unit tests to cover it"

This reverts commit b0d01ffacb058eb26c68a7fdccb0010d3bca40b2.

* fix AllStates using Concat() and OrderBy(), add unit tests for HasState and GetStateClosestToFrame()

* Fix InvalidateAfter and add tests

* make HasState() a lot faster

* durp

* convert reserved to a Dictionary

* fix count being off by 1 due to no longer correct assumption of there being a separate frame zero state

* a few cleanups

* clean up tests and use less ram, fix a few things that I broke that unit tests caught, yay unit tests

* implement IDisposable and use in unit tests

* fix SaveCreateroundTrip (for me at least), by using a smaller buffer allocation, also be pedantic and use zw.Settings in zw2 to ensure they match

* some tests for Count

* attempt to cache which states have frames, doesn't work, ZwinderBuffer on the last state before it wraps, doesn't behave as I expect, dunno if it is intended

* fix typo when evicting recent to reserved, cleanups, make unit test work

* oops

* cleanup and account for Gaps in unit test

* use StateCache for HasState, fix unit test accordingly

* use statecache to check if a frame exists during Capture, and do this first, before gap logic

* fix reserved logic in Clear, add a unit test for Clear

* fix Engage bug that was breaking loading movies, remove CaptureReserved from the API and instead, call the reserved callback in Capture

* use state.Size to minimize memory thrashing in AddToReserved()

* cleanup some comments

* when loading a tasproj from disk, build up the state cache, without this commit, loading an existing movie was unuseable

* reserve the frame before markers, not hte marker itself, users expect instant navigation to markers, and since we always navigate 1 frame before the target frame to emulate and get a frame buffer, this is the frame that must be reserved
2020-08-23 17:12:33 -05:00
nattthebear fb6924bd83 improve error message reporting in romloader
fixes #2320
2020-08-22 15:24:17 -04:00
alyosha-tas 8499f54127 GBHawk: CPU halt emulation fixes 2020-08-22 15:14:16 -04:00
nattthebear 1f84dcdeb2 zwinder rewinder - fix all sorts of funsies when the state count cap is reached 2020-08-22 14:58:35 -04:00
alyosha-tas 7423a00fbf Gambatte: use homebrew fast load BIOS files instead of Sameboy when use real bios is false 2020-08-22 14:02:30 -04:00
nattthebear 18780a8752
Fix GBC-AGB bios issues (#2317)
All six combinations (bios, no bios) X (dmg, cgb, cgb in agb) should work now

Closes #2100
2020-08-21 13:14:50 -04:00
alyosha-tas 6e8362eef0 GBHawk: make timer <> cpu loop interaction consistent 2020-08-19 11:58:06 -04:00
alyosha-tas 96fa21e238 GBHawk:Basic GBA timer glitch implementation 2020-08-17 17:45:55 -04:00
alyosha-tas 9736fb44ba GBHawk: timer improvements, GB mode 2020-08-17 15:15:23 -04:00
nattthebear 94b47787dc minor cleanup
This variable was used before, but I accidentally changed it out in the process of other refactoring.  No behavioral difference
2020-08-17 14:56:21 -04:00
adelikat 4153df9471 simplify and remove some code in O2 constructor 2020-08-17 11:52:09 -05:00
feos 47fe939b41 fix #2313 2020-08-17 18:40:15 +03:00
alyosha-tas 475b1ac211 GBHawk: timer improvements 2020-08-17 11:23:48 -04:00
adelikat 68701e05de zstatemanager - puting this mistake directly into master, its a nasty one, needs to be fixed immediately 2020-08-17 09:37:55 -05:00
YoshiRulz e8bc7d50dd
Use float math for polar<=>rect if either range is outside -128..127
also set the max of the polar magnitude NUD to the actual measured maximum
2020-08-16 18:53:39 +10:00
YoshiRulz 08c234dcf2
Make VirtualPadDiscManager.OwnerEmulator a readonly field and cleanup
Did this as a separate commit because it seems like the intent was for
OwnerEmulator to be mutable, though it was only ever set immediately after
creation. Revert to make it mutable again.
2020-08-16 17:28:48 +10:00
YoshiRulz b204d65afe
Set properties via ctors instead of obj init syntax and cleanup 2020-08-16 17:17:10 +10:00
zeromus bea796fb2d experimental "Frame Inch" designed to make quick presses of frame advance always do something (concerning #2303). 2020-08-15 23:13:26 -04:00
nattthebear 732afe6a9e When the frontend ui generates an empty controller bind, remove it instead of doing nothing
Fixes #2264
2020-08-15 13:34:23 -04:00
nattthebear 7adeebb59a
TurboNyma/HyperNyma - make SystemId = "PCECD" when in cd mode 2020-08-15 12:20:26 -05:00
nattthebear 77057d4b16 minor cleanup 2020-08-15 12:53:04 -04:00
adelikat 353ec518c7 update GB/GBC profile settings:
longplays - gambatte, require bios (per longplays request)
tas - gambatte, require bios, CGB in GBA (per tasvideos request)
2020-08-15 11:23:34 -05:00
RetroEdit 1f5128bf6b
zwinder: Make GetStateClosestToFrame actually get closest state. (#2291)
* zwinder: Make GetStateClosestToFrame actually get closest state.

* Clarify docs
2020-08-14 11:00:56 -05:00
RetroEdit e89449ed27
Input display: At movie end, show both last movie inputs and current inputs; fixes #2295 (#2305) 2020-08-14 10:49:06 -05:00
nattthebear 5ea32b875b rewinder UI - limit target frame length to 500000
I guess the 16383 came from looking at the code, but 16383 is a limit on the number of states (which also needs to be increased, TODO) not how many frames back those states go.  There is effectively no limit except numerical calculation limits on the target frame length; if you had room for only 10 savestates, but wanted to cover a 10 million frame range, we'd just save once every million frames
2020-08-14 10:20:02 -04:00
zeromus 1d87bcd29c Dispose MemoryBlock in zwinderbuffer (fixes #2304) 2020-08-14 08:12:44 -04:00
nattthebear 356dfcebdb Change the designer for rewinder to allow up to 32GB of rayums used
Since the rewinder scales in powers of two, we might want to reconsider how this control works
2020-08-13 21:14:34 -04:00
nattthebear 4062584719 zwinderbuffer: use memoryblock instead of junko .net arrays. This bad boy can hold more than 1GB of shite now 2020-08-13 21:08:48 -04:00
nattthebear 5d3b85ab9f Clean up and remove a lot of no longer used memory block stuff
All of the cool and quirky stuff it did was solely to support waterbox, which has its own native impl of this now.  So now it just lets you allocate memory and change protection on it.  Boring.  Note that the slot based callback system in waterbox gives constant function pointer addresses inside the box, so it doesn't matter where exactly CallingConventionAdapter is allocated.
2020-08-13 19:41:52 -04:00
RetroEdit ad07eb8574
Clean up truncate behavior and docs. Fixes #2285 (#2286)
* Clean up truncate behavior and docs. Fixes #2285

To start with, 770ddc26db (6 years ago, prior to 1.7.0) made the documentation of how truncate is supposed to work. However, judging by my testing of 1.9.0 and 2.4.2, it probably hasn't ever worked that way in practice. It seems justified to change the documentation to match the behavior that the user is familiar with, and what I see as the commonsense behavior anyway (I can justify this further if anyone is curious).

Note this is not changing the behavior of truncate itself; it is simply documenting what the behavior has always been.

Secondly, Invalidate was modified to become InvalidateAfter. This modifies how it gets called, but otherwise remains mostly identical internal to the Zwinder. This was done to make it easier to reason about relative to the input log, which should be the foundation for an understanding of related components.

* zwinder: "frame after" interpretation in all Invalidate methods
2020-08-11 17:53:27 +00:00
YoshiRulz 953a14016f
Fix phantom NRE from ProcessInput during some crashes on Mono
Pretty sure this only affected Mono. The infinite loop in ProgramRunLoop
continued even after the form was disposed (in the testing I did, this was
always during the call to CheckMessages). However, DisplayManager (actually
GlobalWin.DisplayManager) was cleared during disposal, so the call to
DisplayManager.UntransformPoint rightly threw an NRE. After this change, the
"real" stacktrace is still printed as always.
2020-08-11 16:11:28 +10:00
YoshiRulz 6f5028bfcf
Fix line breaks in label
see #2284
2020-08-11 13:41:45 +10:00
YoshiRulz ecfeecdb70
Make Bk2Movie type and ctor public 2020-08-11 12:36:14 +10:00
SuuperW 07d0688f45
Merge pull request #2268 from TASVideos/FixLuaMemoryReadWrite
Lua 16/32-bit read/write
2020-08-10 17:23:30 -05:00
zeromus aa49ac5cf2 change IRewindSettings to use a 'long' for buffer size, for the future. this makes math using it automatically be long. 2020-08-10 16:07:57 -04:00
zeromus 6b57c1e504 cap rewinder buffer size at 1024MiB 2020-08-10 16:07:20 -04:00
nattthebear 2feece847f
I don't understand why we're clearing the rewind buffer, but if we want to do that, just do it, and don't deallocate + reallocate many megs of ram on every loadstate (#2282) 2020-08-10 09:59:23 -05:00
alyosha-tas f08ab6dda8 GBHawk: disassemble second byte of STOP 2020-08-10 10:40:44 -04:00
zeromus 8fbd45b03f rewinder was being disabled as an approximation for clearing it when loading state while in a movie session. change it to actually just clear it (by recreating it). I decided this was safer than making the rewinder learn how to clear itself. Should fix #2280 2020-08-10 03:46:48 -04:00
nattthebear 337f71357e PCE cores - rework loading
The gods have decreed that PCECD will be PCE, so they all have to come in through the same constructor.  Fixes #2279
2020-08-09 18:00:43 -04:00
nattthebear 56e3642d5c Refactor how movie loading handles preferredCores
First of all, use a try..finally pair around the mutating calls to make it clear that Config.PreferredCores will always be rolled back, and to the correct value, after the operation is done.
Then, assume that when Movie.Core is set, we always want to prefer that core... no matter what system comes up.  Seems to fix #2259
2020-08-09 17:11:31 -04:00
nattthebear 5a0b49726e Revert "hack rom loader to keep doing the bullshit we've been doing for 8 years now, where Game.System == "GBC" results in an Emulator with a SystemID. Don't revert without volunteering to fix tasvideos"
This reverts commit 31bf9b9147.
2020-08-09 16:31:49 -04:00
adelikat 31bf9b9147 hack rom loader to keep doing the bullshit we've been doing for 8 years now, where Game.System == "GBC" results in an Emulator with a SystemID. Don't revert without volunteering to fix tasvideos 2020-08-09 15:29:41 -05:00
adelikat c844af3bbb RomLoader - remove an unused parameter in LoadOther 2020-08-09 15:15:26 -05:00
adelikat 729934aa42 unknown PCE-CD games should have PCE as the Game.System, to be consistent with the discs that can be properly identified 2020-08-09 15:11:35 -05:00
adelikat 3eca5286b5 DS - avoid allocating a byte buffer everytime a savestate is made 2020-08-09 11:47:52 -05:00
adelikat a2414f2b4e Tastudio - branches - enable multi-select and implement ability to remove multiple branches 2020-08-08 16:24:07 -05:00
nattthebear 5cbd1ed385 zwinder buffer - when saving to disk, only save what has actually been put in the buffer 2020-08-08 13:11:19 -04:00
adelikat 78b03cbdec remember to set pauseInterrupted = false, when responding to said flag. Use TasView mouse leave instead of form leave for leave logic, since form leave doesn't fire if you move your mouse too fast because winforms is bad. This fixes #2275 and #2258 2020-08-08 10:49:12 -05:00
adelikat b101df8235 Allow multiple marker selection, and multiple marker deletion, also dejunkify some hack workarounds that aren't needed anymore, and fix focus issues on input roll 2020-08-07 21:03:04 -05:00
Paul Kratt 05c5148610
Merge pull request #2277 from Sappharad/gpgx_ssfmapper
Migrate to latest MD cart mappers from GPGX upstream
2020-08-07 20:48:36 -05:00
adelikat 0818e40149 misc cleanups in client.common 2020-08-07 16:19:54 -05:00
nattthebear 25bdeb7f69 Use alloc_plain to allocate the md_cart space so it will be writable if needed
This lets us support mapper32k_w without needing extra hacks.  Because of lazystates, this doesn't hurt us on state size either (lazystates did not exists when we did 722358c1b1
2020-08-07 07:17:14 -04:00
YoshiRulz 476295ccec
Remove unused HawkFile static helpers 2020-08-07 16:30:17 +10:00
YoshiRulz e02a3d3baf
Fix double HawkFile construction 2020-08-07 16:29:09 +10:00
YoshiRulz 74bfac2359
Add missing imports to tests
fixes c4202fea2
2020-08-07 12:59:39 +10:00
YoshiRulz c4202fea2e
Fix namespaces in test project 2020-08-07 12:46:40 +10:00
adelikat 84df4141ea tastudio - bump up the default statemanager buffer settings 2020-08-06 19:25:24 -05:00
adelikat 491c5c20b6 Tastudio - fix NRE when input editing after importing a bk2 2020-08-06 13:22:11 -05:00
adelikat f2dba97197 Tasproj versioning - use constant in unit test so it doesn't fail on next version bump, when converting bk2, slap the current tasproj verison on it, converting to bk2, remove tasproj version 2020-08-06 13:15:29 -05:00
adelikat af5acb457d a few pointless refactors 2020-08-06 13:15:29 -05:00
nattthebear c32ca26790 saturnus - default ss.correct_aspect to off 2020-08-06 13:13:11 -04:00
adelikat ac139eabf2 remove byte[] SavestateBinary() from IStatable, consolidate IBinaryStatable into IStatable now that they are the same 2020-08-05 21:07:30 -05:00
adelikat a93a94aead remove some usages of SavestateBinary() with the CloneSavestate() extension method 2020-08-05 20:50:46 -05:00
adelikat 2a4cba4f7e remove option to not save SavestateHistory in .tasproj files, turns out the pre-zwinder implemetnation never exposed a way to turn this off either (except direct json editing). And it seems questionable, we have export to .bk2, clear history, auto-save options, etc if you need a historyless file 2020-08-05 20:48:08 -05:00
adelikat 296b321796 remove some unused code 2020-08-05 20:43:14 -05:00
adelikat 357d87239b
Rewrite TasStateManager (#2274)
* zwinder state manager wip

* stuff

* fixes

* slightly better defaults

* stuff

* re-delete TasStateManager - re-added by my bad rebase attempt

* add back in saving of a default.tasproj, we are a lot of refactors away from not having to do this

* Make zwinder loadstate a factory method

* progress on wiring up Zwinder to movie shenanigans

* zwinder now survives save/load

* hack for settings to exist

* fix test

* shenangians for frame 0, add some asserts to the unit test

* Add crappy impl of integrity check for zwinderstatemanager

* remove Any() from the IStateManager contract, since it should always have at least 1 state

* move ZwinderStateManagerSettings to its own file

* use NonState, it's there and I suppose this was the intent

* add a test

* don't attempt to capture states if we aren't "currentt"

* ugh

* small cleanup

* ZwinderStateManagerSettings - implement necessary copy constructor

* wire up Settings updating, get rid of Settings setter, add some documentation to IStateManager

* shenanigans to fix Savestate settings UI

* Play around with "high priority"

It's really a mess because there's no information feeding between high priority and normal priority on what captures should take place...

* this fixes the branch gap problem

* bump tasproj version to 1.1, warn user and gracefully handle loading an incompatible version

* if a movie starts from savestate, stuff the anchored state into TasStateManager instead of a frame zero state

* ZwinderBuffer - remove some unused usings

Co-authored-by: nattthebear <goyuken@gmail.com>
2020-08-05 20:39:15 -05:00
YoshiRulz fcbe8333a6
Move Comm and SaveState APIs to Client.Common 2020-08-06 00:29:50 +10:00
YoshiRulz 13ab27ca4e
Simplify API impl. instantiation 2020-08-06 00:19:08 +10:00
alyosha-tas c8b8efedac GBHawk: Fix start up time of HDMA 2020-08-04 10:14:47 -04:00
SuuperW b6f80b53dc reformat code
also fix error message (regression from commit 99141e8)
2020-08-04 04:20:00 -05:00
nattthebear 75aca0e7c6 Up the sbrk heap size for dobiestation
Guess it manages to run out with 4MB on some stuff?
2020-08-03 21:11:28 -04:00
SuuperW 99141e84bf fix: Lua multi-byte read/write operations used single-byte read/writes to the core 2020-08-03 15:44:51 -05:00
zeromus 93c3f0f217
Merge pull request #2266 from TASVideos/ps2-disque-check
Reorder the optical disk id checks
2020-08-03 16:43:15 -04:00
SuuperW 12ef0fe35b fix Lua crash (run Lua script, close Lua console, open different ROM) 2020-08-03 13:55:00 -05:00
nattthebear 8e8575ad69 Reorder the optical disk id checks
Seems like PS2 games have an appId of PLAYSTATION sometimes, so move the SYSTEM.CNF;1 check first
2020-08-03 12:14:59 -04:00
YoshiRulz 166c50b6cf
Finish implementing WebSockets
fixes dbcd6b5b6
2020-08-03 14:30:50 +10:00
David Ackroyd dbcd6b5b68
Add WebSocket support; wraps BCL ClientWebSocket (squashed PR #2237)
Co-authored-by: David Ackroyd <davidackroydmusic@gmail.com>
2020-08-03 13:11:29 +10:00
SuuperW 22d78efabd fix separator bug in RAMWatch 2020-08-02 17:13:32 -05:00
SuuperW 9af25f7180 rename NdsSettings to NdsSyncSettings, since that's what it is 2020-08-02 14:06:38 -05:00
SuuperW 2c0fa143c1 fix: attempting to change current movie's GreenzoneSettings would actually change the defaults 2020-08-02 10:40:12 -05:00
adelikat 8531a292bc rip out Savestate History settings form and reuse the default settings form instead 2020-08-01 17:30:50 -05:00
adelikat 07429a4640 Tastudio - rework DefaultGrezoneSettings to only depend on a settings object and a savecallback 2020-08-01 17:19:30 -05:00
adelikat 3da1df9252 Tastudio -more shenanigans to fix bk2 loading, fixes #2255 2020-08-01 13:43:29 -05:00
alyosha-tas 2499c9b872 GBHawk: update Kirby tilt n- tumble controls 2020-08-01 14:31:08 -04:00
adelikat e525d512f8 lua - fix NRE when when movie.mode() is called with no movie active, fixes #2262 2020-08-01 13:24:10 -05:00
nattthebear 96bee60cda nyma -- only ask the frontend for firmwares the core actually requests
Fixes #2240
2020-08-01 09:16:01 -04:00
nattthebear 78bf2285fc
Waterbox: Add pseudo-thread implementation and experimental DobieStation (PS2) core (#2263)
Waterbox supports threads now, but they're not real threads on the host side because that's complicated and can be nondeterministic. Instead, everything is scheduled to share one host thread. This means that scheduling is actually cooperative and certain patterns of spinlocks and other nonsense can fail to work at all, but "regular" code probably will.

With this, add DobieStation PS2 core. This core was selected because it has threads and is otherwise simple to port; easy to build and a good core/frontend separation. It's not a wonderful core however, with low speed (made abysmally lower by our lack of real threads) and low compatibility, so it remains a curiosity for now.
2020-08-01 07:03:29 -04:00
YoshiRulz f6edd02195
More cleanup of VersionInfo code gen 2020-08-01 17:48:27 +10:00
YoshiRulz e5de63ea94
Cleanup VersionInfo and code gen 2020-08-01 11:57:14 +10:00
YoshiRulz ebd9645c1e
Cleanup assembly attributes
We're not using this metadata for anything, except one [InternalsVisibleTo] for
unit tests, and a half-assed version check in EmuHawk.Program.
2020-08-01 11:56:30 +10:00
alyosha-tas 9fc8db14c3 Vectrex: fix controls (Hyperchase) 2020-07-31 21:24:58 -04:00
YoshiRulz 00b67f4156
Remove unused prop from a MainForm interface
fixes 62537118a
2020-07-31 16:22:02 +10:00
YoshiRulz b77cd9a7bf
Remove IEmuClientApi.RunningSystem from the API
other code in EmuClientApi (the impl.) uses this prop, so it's staying for now
2020-07-31 16:17:02 +10:00
alyosha-tas 9b5997cf7f GBHawk: fix behaviour of writing to LY reg, fixes Zen console verificaiton 2020-07-29 18:29:26 -04:00
YoshiRulz a54b9acba2
Pass in globals to Throttle and UpdateChecker 2020-07-29 08:55:56 +10:00
YoshiRulz fbb38d61fd
Use a DLIR for Mupen core and plugins
AttachPlugin still returns IntPtr (thanks to reflection hack) so the code for
audio/input/video is unaffected
2020-07-28 20:29:02 +10:00
YoshiRulz 771621e0c9
Teach DLIR that dirs are not files on Unix
even though everything is a file
2020-07-28 20:28:46 +10:00
YoshiRulz b6f4344592
Pass lib path from run script as env. var and read it in DLIR
It's always set by the run script, but I've added a fallback in case someone
hardcodes the mono command in a .desktop or something
2020-07-28 18:15:37 +10:00
YoshiRulz 34d56ca555
Update search paths order for DLIR on Unix and add mupen lib dir 2020-07-28 17:54:54 +10:00
YoshiRulz 75e815f09e
A little cleanup of DLIR 2020-07-28 17:53:28 +10:00
SuuperW ae667eca29 optimizations and a bug fix 2020-07-27 15:47:49 -05:00
SuuperW c7c4a08cfd Further refactoring of state decay.
Also, use a larger zeros array size. 16 is pathetic. Probably should go even higher than this.
2020-07-27 15:47:42 -05:00
SuuperW 10dd5b746c refactor StateManagerDecay to not use goto, and remove the unused align
(Align didn't seem to make any sense, it was just weighting priority less towards the current frame. Perhaps helpful in some situations, but I don't think enough so to justify complicating the decay algorithm. Either way it was a misnomer and I don't know what there is to align to.)
2020-07-27 15:43:47 -05:00
SuuperW 60cc8d944f Merge branch 'master' of https://github.com/TASVideos/BizHawk 2020-07-27 10:43:46 -05:00
SuuperW a868cd5f5c fix TAStudio state gap 2020-07-27 10:43:20 -05:00
nattthebear 0d3b26ead9 Re-refix gpgx loading
Pier solar needs the rom and the cd

This reverts commit 503469e4e0.
2020-07-27 08:10:00 -04:00
zeromus 503469e4e0 fix oopsie loading cds in gpgx after recent romloader cleanups. fixes #2252 2020-07-27 00:57:51 -04:00
nattthebear 2cdc978e2f rework mgba callbacks to not be global junks 2020-07-26 15:36:29 -04:00
nattthebear 9339c02b82 emergency containment on bad code 2020-07-26 15:11:29 -04:00
nattthebear 105250f60d wow that was hard 2020-07-26 15:06:44 -04:00
adelikat 98da2ebb85 fix loading of bk2 and tasproj files from tastudio menu items 2020-07-26 12:47:46 -05:00
YoshiRulz d8a92af617
Move Comm and Input Lua libraries to Client.Common 2020-07-26 05:38:55 +10:00
YoshiRulz 2b50f4f112
Cleanup ApiContainer 2020-07-26 05:34:58 +10:00
YoshiRulz 911cb096de
Merge ApiContainer and ApiSubsetContainer
(also merge DelegatingLuaLibrary and DelegatingLuaLibraryEmu)
Not sure why this wasn't done earlier, there doesn't seem to be any technical
roadblocks. The contract of the API provider requires an implementation for
IEmuClientApi et al. so they (all 15 interfaces) are free to be used from
Client.Common.
2020-07-26 05:29:04 +10:00
YoshiRulz 1fa7395e20
Screw around with networking helper init 2020-07-26 05:15:56 +10:00
YoshiRulz 1912851186
Expose networking classes in CommApi, delegate its Lua ver. to ApiHawk
HttpTest/HttpTestGet in the .NET API now return null instead of throwing (Lua
still throws)
2020-07-26 05:03:58 +10:00
YoshiRulz da5f76967f
Inline TestGet 2020-07-26 05:01:58 +10:00
YoshiRulz a931d75143
Add string overload for WriteToFile
and also use UTF-8 instead of ASCII to match reads -_-
2020-07-26 04:45:59 +10:00
YoshiRulz b7eb90f990
Add public prop for setting IP+port simultaneously 2020-07-26 04:34:06 +10:00
YoshiRulz 6acf4ae6fb
Tiny ToolManager.Load cleanup 2 electric boogaloo
see 2d6bac879, 7c3ccd664
2020-07-26 03:49:59 +10:00
adelikat 1f6ead6354 now that restore is on mouse up instead of mouse down, we need to auto-unpause the emulator (if it were paused before editing input) on mouse up instead of mouse down. Mouse down was causing unpausing while painting which caused input to be added without invalidating greenzone. This code introduces unpausing as long as there is not a need to invalidate (if the user only painted down). If the user paints up beyond the original mouse down event it will invalidate and seek to the original mouse down frame and pause. 2020-07-25 10:42:07 -05:00
adelikat 7c3ccd6646 Revert "Tiny ToolManager.Load cleanup"
This reverts commit 2d6bac8798.
2020-07-25 09:26:47 -05:00
adelikat 4a6b3e407a TasMovie - InvalidateAfter - flag changes if Lag OR States were invalidated, increment rerecords on only on state invalidation not lag validation, this may address 2168 2020-07-25 09:09:43 -05:00
adelikat 4439310250 remove unused method 2020-07-25 08:39:40 -05:00
zeromus fd30826655 experimental ffmpeg downloading: in place of the ffmpeg encode settings is a download form. This downloads it to the prescribed local location. It then checks to make sure it is the EXACT required version -- the only version we support 2020-07-24 22:25:00 -04:00
zeromus b24a4ecc09 rename to FFmpegService 2020-07-24 22:25:00 -04:00
zeromus dd01c26c92 move FFmpeg sources to FFmpeg service 2020-07-24 22:25:00 -04:00
zeromus 72ad0d8d74 copy DiscDecoding.cs to FFmpegService.cs in another project 2020-07-24 22:24:59 -04:00
YoshiRulz 2d6bac8798
Tiny ToolManager.Load cleanup 2020-07-25 08:44:50 +10:00
YoshiRulz 0fc3ac2105
Don't need this anymore
no idea when that happened sorry
2020-07-25 08:30:15 +10:00
adelikat b0c76f28ca PCETileViewer - remove unnecessary load event 2020-07-24 14:50:01 -05:00
adelikat 0ed95429cb simplify some closing closing logic in some tools 2020-07-24 14:36:34 -05:00
adelikat 4f2bf8071e fix a few tools I missed in previous commit 2020-07-24 14:32:29 -05:00
adelikat e7e5ebfa90 have tool manager automatically add a Close button to any tool with a File menu, removes a lot of boilerplate from tools, also gives consistency, since half the tools had Close, half had Exit and not all had the shortcut display string 2020-07-24 14:21:53 -05:00
adelikat d67f97c4e1 Tasutido - slight simplification 2020-07-24 13:20:24 -05:00
adelikat a51eba88da move some repetitive logic from tools to the RollColumns class 2020-07-24 13:17:03 -05:00
adelikat 4a3e2113af convert RamSearch to IToolFormAutoConfig 2020-07-24 12:29:26 -05:00
adelikat f1a9ba7a08 Ram Search - watch options and settings menu item names 2020-07-24 12:11:34 -05:00
adelikat c26659187e convert RamWatch to IToolFormAutoconfig 2020-07-24 12:03:23 -05:00
adelikat 42864977cb Convert cheats tool to use IToolFormAutoConfig 2020-07-24 11:52:44 -05:00
David Ackroyd a416841770
clone x times (#2242)
* tasstudio: clone sequence of inputs x times

* extend frameprompt so that you can put in a custom messagfe

* making FramesPrompt designer compatible
2020-07-24 10:18:15 -05:00
YoshiRulz e36098becf
A little dedup 2020-07-24 13:33:12 +10:00
adelikat 39424891b4 virtualpads - add another constructor overload to simplify schema classes more 2020-07-23 17:42:36 -05:00
adelikat 6b921c91fb remove another unused image 2020-07-23 17:09:04 -05:00
adelikat 35d3a7e716 Ram Search - fix typo in menu Option "Always Exclude From Ram Search" to "Always Exclude From Ram Watch" 2020-07-23 17:06:28 -05:00
adelikat d6be73f395 silly that visual studio rename doesn't save changes on open files, add a bunch of non-saved things, also consolidate two refresh images into 1 2020-07-23 16:55:51 -05:00
adelikat ed8912db92 rename and reorg stuff in Resources.cs 2020-07-23 16:51:29 -05:00
adelikat bda8a5ed4e implement SGX virtual pads 2020-07-23 16:35:09 -05:00
adelikat a1c6092de1 c64 virtualpad - fix a few keyboard buttons that were not mapped to a key 2020-07-23 16:32:57 -05:00
adelikat 34da24933a remove more unused images, start using c64 symbol on c64 virtualpad 2020-07-23 16:32:57 -05:00
nattthebear 1c606c1eb6 waterbox - expose read-only information about the guest memory page table 2020-07-23 16:08:24 -04:00
adelikat e778e5248d remove a bunch of unused images that we don't intend to use, make lua console menu item image consistent wtih the dialog image 2020-07-23 14:56:48 -05:00
adelikat 4d24b0bcf0 remove some unused usings 2020-07-23 14:25:39 -05:00
adelikat ae6d512e11 durp 2020-07-22 16:31:52 -05:00
adelikat 5dd65c0ee8 add an osd message when a rewinder is created 2020-07-22 16:24:25 -05:00
YoshiRulz 966a2abe3f
Call base.Dispose to banish warning 2020-07-22 06:34:32 +10:00
nattthebear 85be93c9d2 What was this?
Apparently we had random crashes in savestate on waterbox since some recent dev commit woops my bad
2020-07-21 15:43:28 -04:00
YoshiRulz 6371766130
Remove redundant semicolon 2020-07-20 23:42:42 +10:00
YoshiRulz 86e82b97c1
Cleanup internals of comms APIs 2020-07-20 23:42:35 +10:00
adelikat d94ce80eaa Tastudio - gracefully fallback to a new tasproj when attempting to load a .tasproj from another core 2020-07-19 16:47:54 -05:00
adelikat 1162e89675 a slight hack to fix Tastudio when loading a different rom while it is open 2020-07-19 15:09:26 -05:00
adelikat ffd255bb8e on tool restart, update base properties (particularly needs the Game property to update) 2020-07-19 14:50:05 -05:00
adelikat 4e6d190d48 Tastudio - check MainForm.GameIsClosing in a better place 2020-07-19 14:26:49 -05:00
adelikat b6cfb9aab7 remove restarting of trace loger in CloseGame, the ToolManager handles this logic just fine 2020-07-19 14:05:46 -05:00
adelikat f7f6839e6c fix NRE of Trace Logger close, if the Trace Logger was not used before closing 2020-07-19 13:56:27 -05:00
adelikat ddbeabf198 Tastudio - pointless refactors 2020-07-19 13:30:07 -05:00
YoshiRulz 86829751aa
Scale VirtualPadAnalogStick correctly when the range isn't ~256 values 2020-07-20 03:18:49 +10:00
adelikat f6273f2f92 Virtualpads - flip the read-only flag when a movie changes from read-only to another mode 2020-07-19 11:12:38 -05:00
alyosha-tas 77a958af8e O2: fix mousing cat (timer divider was wrong) 2020-07-18 17:04:24 -04:00
adelikat 74a57c320e Saturn Virtual pads - fix L/R 3d controller values 2020-07-18 13:36:31 -05:00
adelikat 59661fea86 Tastudio - fix "New" menu item broken by last commit 2020-07-18 13:26:21 -05:00
adelikat 0925997557 have Tastudio control RebootCore when it is open, fixes #2201 2020-07-18 10:24:46 -05:00
alyosha-tas d8056b3deb Move code to avoid NRE 2020-07-14 19:18:59 -04:00
adelikat 219b33732c make TasMovie Emulator null check a bit clearer as to what is going on 2020-07-14 17:47:22 -05:00
adelikat 7040eca741 tastudio - simplify image setting 2020-07-14 17:43:31 -05:00
alyosha-tas 6f461c715d TAStudio: Fix #2191 with a null check 2020-07-14 17:02:52 -04:00
adelikat 5515e9fea7 Tastudio - add some paranoia checks when drawing markers and branches. This happened one time while debugging and I couldn't reproduce, but it is possible the controls might need be told to redraw while still rebooting the core, in which case there is no TasMovie to read from yet, so check for null 2020-07-13 19:39:29 -05:00
adelikat 946ff45608 Tastudio - just print "File saved" instead of the filename since it is redundant to the Title which has the filename, and it overlaps other text in the status bar, fixes #2142 2020-07-13 19:15:30 -05:00
nattthebear 175556529e waterboxhost refactor
Set up a second mirror of guest memory; easily accomplished because we were already using memfd_create / CreateFileMappingW.
This lets us simplify a lot of host code that has to access guest memory that may not be active right now, or might have been mprotect()ed to something weird.  Activate is only needed now to run guest code, or when the C# side wants to peer into guest memory for memory domains and such (waterboxhost does not share the mirror address with the C# side).
2020-07-13 19:38:29 -04:00
adelikat 40e19e64fe oops 2020-07-13 17:25:16 -05:00
adelikat b87f976c39 remove some unused usings 2020-07-13 15:01:14 -05:00
adelikat 6a3b014fe3 make a thing readonly 2020-07-13 12:06:48 -05:00
nattthebear 59be09b515 Make picodrive work again
All picodrive games were broken by 316a9d1568
2020-07-13 06:16:16 -04:00
nattthebear 5a1b5915bf Fix compiling on ancient compilers, and add a global.json which restricts bizhawk to ancient compilers 2020-07-12 17:24:12 -04:00
nattthebear 570f17cedd Bit more W65816 disassembler cleanup 2020-07-12 17:14:47 -04:00
adelikat 316a9d1568 gamedb - replace pico with picodrive, remove core name look up in romloader in favor of this pico change combined with a case insensitive compare 2020-07-12 16:10:01 -05:00
adelikat b22a1070a4 W65816 Disassembler - assign ibuf to null, so it compiles 2020-07-12 16:06:45 -05:00
adelikat ed9b7b3eb1 Lua address several memory leaks - when a script stops, take any registered functions and spawn new threads for them to execute, and regularly dispose them. Also, the main lua thread needs to have scheduled disposes run on it, even if there is no active scripts (it was being run as part of disposing individual scripts, needs refactoring). All of this fixes #1920 2020-07-12 15:48:50 -05:00
nattthebear 9278c526d0 fix a few compiler warnings 2020-07-12 16:02:26 -04:00
adelikat 1e3324cfab Registered Lua Functions dialog - update when a lua script unregisters a file, make dupating more robust to catch other possible scenarios where it failed to update 2020-07-12 13:19:48 -05:00
adelikat c4bcb2451a remove now unused class in RomLoader.cs 2020-07-12 13:03:32 -05:00
adelikat 05709628e8 remove a jillion unused usings in RomLoader.cs 2020-07-12 13:02:12 -05:00
adelikat 40ad7ed67e Lua - account for callbacks with no parent script creating more callbacks by generating a mock lua file with a new thread, and register the thread with the sandbox. Fixes #1983. Not super proud of this. 2020-07-12 12:58:43 -05:00
nattthebear 021b1639c2 Remove special code for UnsupportedGameException in RomLoader
This shouldn't be needed anymore
2020-07-12 13:48:46 -04:00
nattthebear 78bbc75f33 multi rom loading by xml all uses core inventory now 2020-07-12 13:45:33 -04:00
nattthebear 8d56b65734 Convert all single-CD loading to use CoreInventory 2020-07-12 13:21:10 -04:00
nattthebear ab07e67a07 PCEHawk: Use CoreLoadParameters for cd mode 2020-07-12 13:06:15 -04:00
nattthebear 744a9a97d0 Remove custom loader code for ChannelF 2020-07-12 12:54:36 -04:00
nattthebear 5c5ffed5ff Next piece of the puzzle
This probably breaks something.  I am sorry, grab me and I'll fix it
2020-07-12 12:52:27 -04:00
adelikat 33a0954087 lua console - fix recent scripts not updating when creating a new script, opening a script, or duplicating a script. Might be other scenarios that are currently missing (regression from some refactors about a month ago) 2020-07-12 11:12:29 -05:00
nattthebear 4ad89667d6 This will get simpler I promise 2020-07-12 11:37:06 -04:00
nattthebear 6f218ff20b Remove a benign null reference exception
This was in a try catch so you got the null you needed anyway, but it could be confusing to see in a debugger report
2020-07-12 11:10:57 -04:00
alyosha-tas 06fa96e335 O2: finish g7400 graphics set 2020-07-12 10:44:11 -04:00
nattthebear 81d0b4ec9e Revert "Replace dynamic type w/ casts in CoreInventory/CLP"
This reverts commit 9ee4821148.

# Conflicts:
#	src/BizHawk.Emulation.Cores/CoreLoadParameters.cs

This didn't actually work, so revisit later
2020-07-12 10:18:08 -04:00
nattthebear f41a70ef32 swish swish 2020-07-12 09:06:20 -04:00
alyosha-tas f5efbff1d3 O2: more g7400 work 2020-07-12 09:03:28 -04:00
nattthebear 9072614dfb romloader cleanup 2020-07-12 08:09:50 -04:00
nattthebear dc8615ca06 fix compile, sorry sorry 2020-07-12 07:36:06 -04:00
nattthebear 80793836d3 Use CoreLoadParameters on dual gambatte 2020-07-12 07:28:06 -04:00
nattthebear 9d9dd8a0fd More romloader stuff
It'll all come together eventually
2020-07-12 07:08:52 -04:00
YoshiRulz 9ee4821148
Replace dynamic type w/ casts in CoreInventory/CLP
dynamic introduced in cc9d7df9f
2020-07-12 17:30:10 +10:00
adelikat c712bde84e remove firmware manager dependency from RomLoader, and a few other cleanups 2020-07-11 20:10:23 -05:00
nattthebear 467f0aff2b Refactor 32x loading
less code is good good
2020-07-11 20:38:09 -04:00
nattthebear 502aef73a0 Clean up ti 83 loading. Probably works, but I have nothing to test against it 2020-07-11 20:31:36 -04:00
adelikat 8900618ce1 respect the Movie end type when loading .tasproj files outside of tastudio 2020-07-11 18:52:52 -05:00
adelikat 1f39160999 give up on the idea of throwing an exception when attaching a core to a movie. The reason this doesn't work is that restart movie keeps the movie in memory (which was previously attached). This commit decrees that it is safe to keep a movie in memory, and attach to a new instance of the same core. The alternative is that movies would have to save and load on restart which is slow and may not be desired 2020-07-11 18:03:53 -05:00
nattthebear 86ac6eadcc Romloader omega refactor: Use CoreLoadParameters for PSX 2020-07-11 18:47:56 -04:00
nattthebear 6657917281 Fix parse error loading CCD files 2020-07-11 18:47:56 -04:00
adelikat 9d054d19f6 bk2 and tasproj movies - respect the preload flag, only loads header and inputlog. This speeds up the play movie dialog by 50-100%, a lot more if there is a large sizeable .tasproj files in the folder 2020-07-11 17:06:40 -05:00
adelikat a19791a212 Fm2Import - warn about ignoring the famicom port, instead of a full error, apparently movies can have this port set, but to none, so importing the movie can still be successful, for example: http://tasvideos.org/6739S.html, fixes #1989 2020-07-11 15:57:08 -05:00
nattthebear 7e2251b795 Fix the CoreLoadParameters <-> CoreInventory interop 2020-07-11 16:46:16 -04:00
nattthebear dbb73805db error message cleanup
Once everything is unified, we'll probably hit this path once in a while
2020-07-11 16:46:16 -04:00
nattthebear cc9d7df9f7 WIP of some romloader cleanups
This one commit doesn't make things cleaner by itself, no.  The rough idea is that eventually (R) we'll pass all cores that currently use mangled arse-custom constructors with custom code all o'er the place a single, awesome, CoreLoadParameters object.

Then the romloader can be changed to just synthesize this object on one common codepath, some bs for core preferences, and boom everything is perfect.  Sort of.
2020-07-11 16:46:16 -04:00
adelikat 3a820302e3 improve name of a method 2020-07-11 15:42:47 -05:00
adelikat e5dc473203 inputroll - make escape clear selected items, this was being done custom in ram search but makes sense to be a consistent feature. It's possible people will be upset with this in tastudio since this is new functionality (and not in taseditor either) 2020-07-11 15:41:45 -05:00
adelikat d44e96f535 remove some redundant code 2020-07-11 15:35:50 -05:00
adelikat aeaf6aa282 add some KeyCode extension methods to make KeyUp/Down event methods easier to read 2020-07-11 15:35:00 -05:00
alyosha-tas e29d024a90 O2: graphics work 2020-07-11 16:31:42 -04:00
adelikat be93903c12 Play Movie dialog - properly show tooltips for detail values, also show expected vs actual (only works on the key column though, because winforms is poo), fixes #1888 2020-07-11 14:53:51 -05:00
adelikat 196934bd56 Tastudio - fix TasSession loading, fixes #2063 2020-07-11 14:28:21 -05:00
adelikat cb575d36b4 add an option to InputRoll for "Selection when paging", as a bit of a hack to revert Tastudio back to its old PgUp/Dn behavior, while still keeping the current behavior for other input roll usages (as it makes more sense for traditional listview behavior). Fixes #2074 2020-07-11 13:49:00 -05:00
nattthebear 4343414937 Enable hypernyma for uhh, the thing. Yeah, CD games, that thing.
I had tested this locally some during original development, but turned it off at some point and forgot to turn it back on.
2020-07-11 13:59:05 -04:00
nattthebear bd413738a1 Fix nyma core bug with layer settings
If you tried to load a nyma core with any of your layers disabled, you would crash
2020-07-11 13:56:43 -04:00
nattthebear 0578443338 Slight modification to previous commit: Keep config forward compatibility in this case.
That way, if somedev tries to bisect something, they don't get pooped on by their config.
2020-07-11 13:47:28 -04:00
nattthebear bcbf124f21 Don't use fragile fully qualified typenames to resolve setting and sync setting types in config files.
Instead, the frontend must know what the type will be ahead of time.

TODO:  Apply the same fix to mooovies
2020-07-11 13:40:25 -04:00
nattthebear a28ca37cfb
Fix issue with settings adapter (#2223)
This would fail to work on any core that used the serviceprovider to provide a settings definition that wasn't on the iemulator itself?  Guess we never did that
2020-07-11 13:35:09 -04:00
adelikat 9820fb0879 lua - implement tastudio.submitclearframes(), fixes #2170 2020-07-11 12:19:27 -05:00
nattthebear 4639c1f2ca minor cleanup of calling convention adapters
sync the generator code with the generated code, remove useless endbr64 shit
2020-07-11 11:09:48 -04:00
alyosha-tas 2ed8af145e O2: default to O2 still 2020-07-11 09:11:35 -04:00
alyosha-tas 1e90dbc978 O2: Make G7400 part of the O2 core instead, not worth a serperatecore 2020-07-11 09:05:38 -04:00
alyosha-tas 39bbe30b8e O2: fix sprite shifting and add some homebrew to DB 2020-07-11 08:29:11 -04:00
adelikat 1bf8f80510 Subtitle Editor - add a color picker for editing the subtitle color, fixes #1554 2020-07-09 19:24:44 -05:00
YoshiRulz 38d24901cf
Fix 4-octet peeks by Hex Editor having 2 zeroed octets
dumb typo
2020-07-10 03:39:02 +10:00
nattthebear 27a5fcdd20 Get rid of some old-style system assembly references 2020-07-09 07:22:19 -04:00
nattthebear 7495a08b9b Huh?????????????
Random LDAP garbage, not used, ever, and has just been hanging out there for 8 years.  You won't be missed!
2020-07-09 07:15:02 -04:00
alyosha-tas 7f28bc2caf Fimware: Fix #2207 and add entry for g7400 2020-07-07 17:59:20 -04:00
nattthebear c8985e3007
Waterbox: Stack Marshalling (#2209)
Waterbox guest code now runs on a stack inside the guest memory space. This removes some potential opportunities for nondeterminism and makes future porting of libco-enabled cores easier.
2020-07-07 17:48:12 -04:00
RetroEdit ce60cb101a
Simplify some DialogResult code. (#2213) 2020-07-07 15:09:41 -05:00
YoshiRulz fa7613d481
Pass IMainForm props in PresentationPanel ctor instead 2020-07-08 02:48:04 +10:00
RetroEdit 9a45d88301
More concise FrameRate definition; comment tweaks (#2210) 2020-07-07 11:36:42 -05:00
YoshiRulz ca646f87cf
Fix style problems, mainly docs 2020-07-08 02:17:31 +10:00
YoshiRulz b0f38a4d91
Shuffle code in AvFrameAdvance to eliminate goto 2020-07-08 02:17:28 +10:00
YoshiRulz 33d8f4a62c
Add RigidMultiPredicateSort to replace some .ThenBy() boilerplate
As documented, the class "Sorts using a single primary predicate, with subsorts
using the remaining predicates in order." So only the most recent
column-header-click is taken into account. I've got a WIP class in #if false for
providing the "remember which column headers I clicked and in which order"
behaviour, but it doesn't look like that behaviour actually exists in the
codebase?
2020-07-08 02:17:24 +10:00
hegyak 2dc28ecc4c
Merge pull request #2204 from hegyak/master
Firmware Renaming Unification/Changes.  This is Aesthetic.
2020-07-07 05:50:23 -07:00
RetroEdit 9cdf0abc0c
Retype IMovie.TimeLength to TimeSpan; cleanup frame rate code (#2206)
* Retype IMovie.TimeLength to TimeSpan; cleanup frame rate code

* More concise IsPal field.
2020-07-06 16:24:04 -05:00
alyosha-tas f52b02d499 Start wok on G7400 2020-07-06 15:19:57 -04:00
hegyak f430df9575
Firmware Rename (2)
Fixed KoF 95 and Ultraman
2020-07-06 11:55:13 -07:00
hegyak 6a73dd0115
Firmware Rename
Rename All the Firmware Files to have a more Unified Naming Convention
2020-07-06 10:46:56 -07:00
alyosha-tas fee733480f O2Hawk: change PAL timing 2020-07-06 09:38:24 -04:00
alyosha-tas 694b3d88d3 GBhawk: fine tune tilt range some more and fix savestate 2020-07-05 18:39:06 -04:00
RetroEdit c12d2fa570
EmuVersion needs updating on saving, not loading; I made the wrong call of where to put this originally, but the interaction with PlayMovie slipped my mind. (#2202) 2020-07-05 16:29:06 -05:00
adelikat 72993a3bd0 don't double load movie files when pre-loading, remove unused HawkFile parameter 2020-07-05 15:31:43 -05:00
adelikat 624493e6e2 simplify splitter distance loading with an extension method 2020-07-05 15:01:08 -05:00
alyosha-tas fa7ac3d4c1 A7800Hawk: Fix pokey 0x450 detection 2020-07-05 15:45:08 -04:00
alyosha-tas 6f809de609 Add default DS paths (fixes #2062) 2020-07-05 13:54:36 -04:00
RetroEdit 0b07e38bdf
Update emuVersion each time the movie is opened; OriginalEmuVersion preserves old behavior. (#2193) 2020-07-05 11:21:01 -05:00
RetroEdit 9e980c7732
Merge redundant copy-pasted movie loading code. (#2197) 2020-07-05 09:48:46 -05:00
alyosha-tas ef0f4b2b96 TAStudio: Don't erase states if they exist already when attaching an emulator instance (fixes #2057) 2020-07-05 09:55:38 -04:00
alyosha-tas d900053dad TAStudio: Allow insertion of multiple frames at end of movie (fixes #2169) 2020-07-05 09:54:35 -04:00
alyosha-tas 34f99922cd TAStudio: use path.combine now, as well as fix a usage of '\' for filename display in .bk2 2020-07-04 19:07:38 -04:00
alyosha-tas e215f99f74 GBHawk: increase MBC7 asselerometer return value range 2020-07-04 18:44:34 -04:00
alyosha-tas 4b59282fdf TAStudio: bounds check previous commit 2020-07-04 11:00:40 -04:00
alyosha-tas a72286eb5a TAStudio: More analog control jump fixes 2020-07-04 10:17:01 -04:00
adelikat d775067037 move BreakpointList to Client.Common 2020-07-03 19:49:29 -05:00
adelikat 2cbe0fb3d9 remove unused GenDbgWin tool 2020-07-03 19:42:09 -05:00
adelikat 9e2b2a9b91 remove pointless name and text parameters from MenuStripEx 2020-07-03 19:26:01 -05:00
alyosha-tas 3dba6857bc GBHawk: increase range for tilt input 2020-07-03 19:57:29 -04:00
nattthebear 054efa4bdd Helps if you actually serialize the thing you're serializing 2020-07-03 18:31:21 -04:00
nattthebear 3a18f6356d Rebuild all of waterbox as sysvabi, not msabi
This helps linux at the expense of windows, except it seems like windows gets a nice little speed up as well
2020-07-03 18:21:48 -04:00
alyosha-tas 35fdec2132 Use a forward slash instead. the file name will display incorrect (as Movie/name) when first loaded, but at least it's in the right place. 2020-07-03 17:40:52 -04:00
alyosha-tas 53b61d9cfa TAStudio: add trailing slash so loading a bk2 multiple times properly puts the file in the movies folder 2020-07-03 17:05:07 -04:00
alyosha-tas 32031d0f67 Atari 7800: support serpentine 2020-07-03 16:07:26 -04:00
adelikat ce0a529362 pass InputManager dependencies to more virtualpad controls 2020-07-03 14:50:57 -05:00
adelikat 2be1d04182 cleanup ToolStripEx 2020-07-03 14:29:48 -05:00
adelikat 728a946470 pass InputManager to tools, remove other usages of GlobalWin in various tools 2020-07-03 14:26:08 -05:00
adelikat 20a1a49851 remove unnecessary usage of GlobalWin.Emulator (instance was already being passed in) 2020-07-03 13:34:17 -05:00
adelikat 8bb055b392 FilePreferences config - fix message when clicking ok, reduce dependency from the entire config file to the only object it sets, remove usage of GlobalWin 2020-07-03 13:31:47 -05:00
adelikat 7ab20f5667 mainform - a few simplifications 2020-07-03 13:10:48 -05:00
adelikat c681be033d rename an interface 2020-07-03 12:59:10 -05:00
nattthebear 2ee3125724 Refactor gpgx init method to use fewer arguments
Upcoming waterbox changes will likely limit the number of arguments a function can take to 6, which should be enough for anybody
2020-07-03 13:24:54 -04:00
adelikat c64eff6baf reorg controller and input adapter classes 2020-07-03 11:54:10 -05:00
adelikat 6db1d7e61d cleanups 2020-07-03 11:39:50 -05:00
adelikat d9e563a655 simplify setting the font style of a ToolStripMenuItemEx 2020-07-03 11:08:48 -05:00
adelikat 715e457a4e Mainform - property wrapper for GlobalWin.OSD 2020-07-03 11:08:48 -05:00
adelikat 910c37d434 move some logic from mainform to InputManager 2020-07-03 11:08:48 -05:00
adelikat a3c586b480 mainform - use InputManager property instead of GlobalWin reference 2020-07-03 11:08:48 -05:00
nattthebear 42ceba7d21 Fix linux waterbox
Sorry about that -- some things were removed but not others to go with them.  It had been working before.
2020-07-03 12:02:11 -04:00
nattthebear 2c2ed72dc6 Remove some unused variables
Leftovers from a zwinder refactor
2020-07-03 11:48:51 -04:00
nattthebear fa5885d7a1
Rewrite WaterboxHost in rust. (#2190)
This replaces the old managed one.  The only direct effect of this is to fix some hard to reproduce crashes in bsnes.

In the long run, we'll use this new code to help build more waterbox features.
2020-07-03 11:45:59 -04:00
adelikat 374964bfb0 a few mainform simplifications 2020-07-03 10:07:56 -05:00
alyosha-tas e3afead876 SubGBHawk: have TotalExecutedCycles reflect run time 2020-07-03 10:40:17 -04:00
nattthebear 2f18ad5be1 Defer deserialization of core config
That was simple.  No config file change either.  Doesn't seem to have a noticeable effect on startup speed, but it's not any slower, and we're more resilient to core changes now.
2020-07-03 05:54:01 -04:00
adelikat eede99a505 simplify a few mainform methods with the ToClipBoard() extension method 2020-07-02 17:26:09 -05:00
alyosha-tas b09b9681e2 TAStudio: don't jump to greenzone on single mouse click of analog cell (this is not an edit event.) 2020-07-02 17:46:21 -04:00
adelikat be2ba08c10 remove unused method 2020-07-02 13:30:28 -05:00
adelikat 82ae83919a Lua Console - cleanup 2020-07-02 12:57:02 -05:00
adelikat fbbe3b6e40 LuaConsole - bump message count max to 100, clear count after using the command input box on the console 2020-07-02 12:33:41 -05:00
adelikat bb7f933429 Lua - refactor console logging to use a string builder to concat messages, reduces the actual call to the console to 1 call, greatly improving performance (less calls to scrolling and other methods that invoke drawing) 2020-07-02 12:29:37 -05:00
adelikat 8e79f0d5e2 LuaConsole - warn when message cap has been reached 2020-07-02 12:15:02 -05:00
adelikat ee263fbfbf LuaConsole - simplify WriteToOutputWindow some 2020-07-02 12:10:15 -05:00
adelikat 12897bb00d default to TurboNyma instead of PCEHawk - fixes #2122 2020-07-02 09:09:00 -05:00
adelikat d60e5dc1a2 change View Log Window menu item to Open Log Window, with some different styling, fixes #2110 2020-07-02 08:56:16 -05:00
adelikat a1278df02e add icon to MacroInput 2020-07-02 08:40:03 -05:00
adelikat 21823196fc
Add some menu "Ex" controls (#2187)
* add MenuItemEx and StatusLabelEx and use in MainForm

* use ToolStripMenuItemEx

* use ToolStripSeparatorEx

* fix toolbox sizing
2020-07-02 08:35:15 -05:00
YoshiRulz 1360210331
This was flooding stdout in Release builds 2020-07-02 10:08:26 +10:00
YoshiRulz 4f9d9d29ef
Fix NRE on clicking RecordMovie's browse button (fixes #2185) 2020-07-02 10:05:55 +10:00
zeromus ffabb48f07 remove TopMost from commondialogs (OpenFileDialog, etc.). Fixes #2182 but it is unclear what this was intended to fix in the first place. please gather more information 2020-07-01 14:18:09 -04:00
adelikat edc31793cf StatusStripEx, ToolStripEx - lock down size and text properties 2020-07-01 13:13:24 -05:00
adelikat bf03f3861a ToolStripEx - don't have a size option (toolstrips flow), or location (they are always 0,0) 2020-07-01 13:04:08 -05:00
adelikat 52f2596492 Move ToolStripEx to WinForms.Controls, break into separate files, add namespaces, make ClickThrough built in instead of an option (if the functionality isn't desired just use the original class) 2020-07-01 12:55:21 -05:00
YoshiRulz 07c6063da1
Slightly change execution order in MainForm ctor (fixes #2184) 2020-07-01 19:10:34 +10:00
adelikat 498ba66e8c Revert "cleanup some icon images by removing some unnecessary resolutions (large images and low bit images)"
This reverts commit b40812798b.
2020-06-30 18:08:09 -05:00
adelikat 5ef46b9969 log window icon 2020-06-30 18:08:09 -05:00
nattthebear 6e938718f5 bizinvoker - fix a bug that caused the CLR to reject any [BizInvoke, Compatibility = false] method with a string parameter in any position except the first
According to the rules (which are hard to find), there must be nothing on the evaluation stack when localloc is called (except its own size parameter).  The generated string interop code didn't respect that.  This didn't cause any problems in existing code.
2020-06-30 17:56:11 -04:00
adelikat ef311576ee Use LastInputColor config value instead of hardcoded color 2020-06-30 16:40:00 -05:00
adelikat e5bbec1800
Message Config - Simplify code and some cleanup (#2183)
* move messageConfig to its own folder

* start MessageEdit user control

* more setup

* wire stuff up

* progress

* progress

* fixes and cleanup

* start mesage row component

* move method from MessageConfig to extension method

* MessageRow - progress

* progress

* Message row - progress

* progress

* fix initial load

* fix Restore btn

* use RadioButtonEx

* start ColorRow user control

* progress

* progress

* progress

* rename

* make color picker work

* cleanup

* cleanup

* Message config - don't immediate set config values on restore defaults, allow user to press ok or cancel to decide to actually save

* cleanup

* cleanup
2020-06-30 16:16:54 -05:00
alyosha-tas 7aa1a497f7 GBHawk: only latch new window y value if greater then current line (fixes pokemon crystal artifact) 2020-06-30 17:15:00 -04:00
YoshiRulz dddeab8e12
Refactor UndoHistory 2020-06-30 14:25:02 +10:00
YoshiRulz 05eaf2cfb7
Fix wrapping of 2 labels in DisplayConfig
fixes 64d14a7f9
2020-06-30 13:20:39 +10:00
YoshiRulz cba0eada69
More nullability 2020-06-30 12:57:57 +10:00
YoshiRulz 52203314ca
Misc. style fixes 2020-06-30 11:32:52 +10:00
YoshiRulz 62537118ac Add GetPanelNativeSize() to DisplayManager
not really that helpful, but removes the annoying dependency on
PresentationPanel from IEmuHawkMainForm (ready for move to Client.Common)
2020-06-30 11:02:17 +10:00
YoshiRulz 962ac0d9d4 Extract interface from MainForm 2020-06-30 11:02:17 +10:00
YoshiRulz e3c54b2268 Change some MainForm event handlers to delegate typed properties
makes encapsulation easier
2020-06-30 11:02:17 +10:00
nattthebear 499b59a0bd zwinder refactoring
Looks like a big diff, but isn't.  It separates the zwinder buffer part (which does most of the work) with the rewinder impl on top of it.  This is part of the effort for a zwinderstatemanager for tastudio, which isn't done yet, but these changes can come in just fine
2020-06-29 15:55:53 -04:00
adelikat ed49e58489 remove some references to multitrack in some comments 2020-06-29 10:37:05 -05:00
adelikat 452611477b delete multitrack message position config values, and message config ui, also reposition thingsin message config and fix some positioining, hence designer barf 2020-06-29 10:32:04 -05:00
scrimpeh 1c82340cac ram search - fix loading of wch files 2020-06-29 09:01:33 -05:00
adelikat 64d14a7f92 mass replace System.Forms.Label with LocLabelEx 2020-06-29 09:00:05 -05:00
adelikat 80599ddbe8 BatchRun - use LabelLocEx 2020-06-29 09:00:05 -05:00
YoshiRulz 141541bc1f
Pass delegates instead of MainForm to RewindConfig 2020-06-29 14:47:53 +10:00
YoshiRulz e4df38602b
Pass delegates instead of MainForm to BatchRunner 2020-06-29 14:47:51 +10:00
YoshiRulz c0aefd438a
Pass delegates instead of MainForm to OpenAdvancedChooser 2020-06-29 14:47:44 +10:00
YoshiRulz 4f4a875382
Pass delegates instead of MainForm to EmuHawkOptions 2020-06-29 14:47:42 +10:00
adelikat b40812798b cleanup some icon images by removing some unnecessary resolutions (large images and low bit images) 2020-06-28 15:11:02 -05:00
adelikat 3c9a7ff7a5 Multidisk bundler - use LocLabelEx 2020-06-28 13:29:38 -05:00
scrimpeh 286b56de5a ram search - pr fixes. also remove out of range searches in ramsearch
- adds a static IsValid method to IMiniWatch implementations
- reverts .csproj changes
- 'remove out of range' button on ram search didn't seem to actually do anything. this was fixed
2020-06-28 12:29:49 -05:00
scrimpeh c8ca09724c ram watch - fix two minor bugs
fixes two minor bugs relating to ram watch display type

1.binary display was broken on 32 bit watches
2.changing a watch's size to one with an incompatible display type resulted in an exception (e.g. 32 bit float -> 8 bit unsigned)
2020-06-28 12:29:49 -05:00
scrimpeh f9e174fd2d ram search - incorporate domain checking 2020-06-28 12:29:49 -05:00
scrimpeh 1721e4f9ea ram watch - add IsValid method 2020-06-28 12:29:49 -05:00
adelikat cacf04f8ca N64pluginConfig - replace Label wtih LocLabelEx 2020-06-28 09:04:16 -05:00
adelikat 4d53efcf85 N64 plugin config - use property grid in video plugin tabs 2020-06-28 09:04:16 -05:00
adelikat ff4eda68c8 N64 plugin config - remove use of GameInfo that was nonsense. It was setting per game hacks to GameInfo settings if enabled, but these values are already overridden on RomLoad, so this code was doing nothing 2020-06-28 09:04:16 -05:00
zeromus bc0849ad9d add a path entry for libretro ROM, even though it doesn't make sense, because it just isn't worth making sure every consumer of the ROM path is prepared for the possibility that ROM may be missing. This fixes #2176, but there's any number of other settings we could choose. 2020-06-27 22:32:51 -04:00
YoshiRulz 4f7c1a0b76
Enable nullability in AxisSpec and related types 2020-06-26 15:03:28 +10:00
YoshiRulz d0f96339ce
Fix reboot.png; no clue what was wrong but the warning is gone
for reference, I converted it to .bmp and back w/ ImageMagick
the warning was to stderr and it read `libpng warning: sRGB: cHRM chunk does not
match sRGB`
2020-06-26 14:45:33 +10:00
YoshiRulz 69146b04b2
Add and use DEBUG-conditional WriteLine methods 2020-06-26 14:37:36 +10:00
diddily 46e744cd33
Catch and retry when DirectSound crashes (squashed PR #2166, fixes #1212)
* Handling for BufferLost
Fixes issue #1212 where adding/removing headphones would lead to a crash by restoring the sound device when it's detected and being defensive with exception handling.

* Internalize the handling of buffer lost and make it a bit more efficient.
Remove interface function for SoundLost and move the logic to soley live inside DirectSoundOutput. Additionally I discovered I did not need to tear down the entire device to restore sound, typically Restore() and Play() handle it. Still need to wrap every place that can throw an exception in a try/catch block and wait for WriteSamples to handle it.

* Update DirectSoundSoundOutput.cs
Logic is hard.

* Retry limiter added to recovery
Added a self reducing retry counter that will try to start sound 5 -> 4 -> 3 -> 2 -> 1 times each time it tries to recover until it succeeds, at which point the counter returns to 5. This allows for quicker attempts at recovery without the risk of an infinite loop or terrible performance from sleeping 10 ms.
2020-06-26 11:56:27 +10:00
adelikat 312f029b0b Ram Watch - user LocLabelEx 2020-06-25 18:13:08 -05:00
YoshiRulz 3d8ed7483f
Move axis types to own files 2020-06-26 09:00:33 +10:00
YoshiRulz a0c8f722d2
Use constraints for grouping, add new class for unconstrained pairs
e.g. for Intellivision `_controllerDeck.Definition.Axes["P1 Disc X"].PairedAxis`
gives "P1 Disc Y"
2020-06-26 08:53:10 +10:00
YoshiRulz 1e67fc1d4b
Use inheritance for AxisConstraints 2020-06-26 08:43:17 +10:00
YoshiRulz 15906af6e4 Merge AxisRange into AxisSpec
was going to move only Mid but this made more sense
2020-06-26 08:08:58 +10:00
YoshiRulz 6cb60aa9fd Merge AxisControls, AxisRanges, and AxisConstraints into a single dict 2020-06-26 08:08:58 +10:00
adelikat af2649d9a0 move icon references in designer files to the main files before the designer eats them 2020-06-25 16:32:29 -05:00
adelikat 09a6f54735 add icon back to LogWindow AddToDatabase button, that got eaten by the designer at some point 2020-06-25 09:40:19 -05:00
adelikat 39535eacda RomStatus picker - remove image setting out of designer before it gets eaten by a designer based change 2020-06-25 09:18:33 -05:00
adelikat 371a7bd4f3 use MainForm.thing instead of GlobalWin.thing in some places, this is marginally better, maybe 2020-06-25 08:52:53 -05:00
alyosha-tas 49cb426a59 GBHawk: Double speed mode timing fix 2020-06-24 17:17:46 -04:00
scrimpeh 85d140c4b5 ram watch: allow duplicate identical ram watches
Allows duplicating identical Ram Watches. Previously, the Duplicate Watch dialog would silently discard a new watch if the address didn't change. As a side effect, multiple watches can now be duplicated simulatenously. This commit also removes the check for separate memory domains - it doesn't seem to cause any problems
2020-06-23 11:55:37 -05:00
scrimpeh d6994ea1af ram watch: watches are deleted by index
If you have two watches with an identical address, deleting one will always delete the first one. This commit fixes that
2020-06-23 11:55:37 -05:00
adelikat c13430896f remove empty controller mappings from defctrl, also remove duplicates that caused it to be invalid json (.net happily was deserilizing it anyway), don't save empty mappings when saving from the ui 2020-06-22 19:54:36 -05:00
adelikat 93c47b87b9 Controller config - take label width into account when generating columns 2020-06-22 18:11:31 -05:00
nattthebear 1ce0905deb Minor zwinder tweaks
Change the implementation of state eviction slightly.  The result is identical, but this is slightly easier to understand and will be needed to allow an evicted state to be read before eviction.
2020-06-22 18:52:18 -04:00
adelikat b9f59337dd fix Saturn and NGP default controls 2020-06-21 17:31:28 -05:00
adelikat 29a492fc2a fix pc-fx controller name to match old name 2020-06-21 17:22:00 -05:00
nattthebear 53c2318b56 nyma - activate controller deck names 2020-06-21 16:55:41 -04:00
adelikat cf4a0176a3 bk2 mnemonic lookups - we have a lot of keyboards now, make fkeys standard mnemonics instead of core specific 2020-06-21 15:32:45 -05:00
nattthebear ae9405fb84 saturn: autofire blah blah again 2020-06-21 16:14:50 -04:00
YoshiRulz 31e621d64e
Move init of form icons to ctor (from InitializeComponent)
tested the `global::` syntax on VS2019, the Designer refuses to cooperate
2020-06-22 06:06:59 +10:00
adelikat 03d7fc2498 Saturn virtualpad work 2020-06-21 14:51:22 -05:00
zeromus 2a4ac1f7e1 display manager: fix "use 1:1 pixel size" aspect ratio (re #2159) 2020-06-21 15:27:51 -04:00
adelikat c76515d7f7 Saturn - fix virtualpad logic broken by settings changes, fix mnemonic in 3d controller 2020-06-21 13:14:30 -05:00
adelikat 5404fb90d7 nyma - do button name overrides on analog stick suffixes 2020-06-21 12:36:01 -05:00
adelikat 0862024ba6 virtualpad support for NGP 2020-06-21 12:14:12 -05:00
adelikat 39ff851972 tastudio track engaged flag better 2020-06-21 11:00:57 -05:00
adelikat 4d0d9e04aa TAStudio - don't draw unless Tastudio is "engaged", fixes a lot of NREs through various core reboot scenarios 2020-06-21 10:57:23 -05:00
adelikat b0258ef3db fix NRE when closing tastudio 2020-06-21 10:43:05 -05:00
zeromus 4319096b50 format shader compiling errors better 2020-06-20 22:25:41 -04:00
zeromus f6f7847b95 allow copying selected text from ExceptionBox 2020-06-20 22:25:41 -04:00
YoshiRulz e24ddc9ebe
Finish renaming floats to axes 2020-06-21 12:16:32 +10:00
alyosha-tas 6fc1228ec2 GBHawk: HDMA timing bug fix 2020-06-20 22:05:05 -04:00
YoshiRulz 3d45799fc5 Specify [SpecializedTool] belongs on classes 2020-06-20 21:31:16 -04:00
YoshiRulz f76f301f8d Enable SA1015 and fix noncompliance
"Closing generic brackets should be spaced correctly"
2020-06-20 21:31:16 -04:00
YoshiRulz 3c02545066 Enable SA1026 and fix noncompliance
"Code should not contain space after new or stackalloc keyword in implicitly
typed array allocation"
2020-06-20 21:31:16 -04:00
YoshiRulz 14e0c96fd8 Enable SA1121 and fix noncompliance
"Use built-in type alias"
2020-06-20 21:31:16 -04:00
YoshiRulz 0021cfee70 Enable SA1130 and fix noncompliance
"Use lambda syntax"
2020-06-20 21:31:16 -04:00
YoshiRulz 0a3cb5f23f Enable SA1410 and fix noncompliance
"Remove delegate parenthesis when possible"
2020-06-20 21:31:16 -04:00
YoshiRulz dcae34ce47 Enable SA1314 and fix noncompliance
"Type parameter names should begin with T"
2020-06-20 21:31:16 -04:00
YoshiRulz a8bd9733f4 Enable SA1626 and fix noncompliance
"Single-line comments should not use documentation style slashes"
2020-06-20 21:31:16 -04:00
YoshiRulz a1aca37476 Enable SA1617 and fix noncompliance
"Void return value should not be documented"
2020-06-20 21:31:15 -04:00
YoshiRulz 135490c740 Enable CS1572, CS1574, and CS1734, and fix noncompliance
malformed references or wrong XML tag
2020-06-20 21:31:15 -04:00
YoshiRulz 0e1271c7c2 Fix exception creation 2020-06-20 21:31:15 -04:00
YoshiRulz abcf91f7d6 A bit of Range cleanup 2020-06-20 21:31:15 -04:00
YoshiRulz f37b74c4ba Enable CS1570 and fix noncompliance
malformed XML
2020-06-20 21:31:15 -04:00
YoshiRulz 43cc80f6a3 Mess w/ doc comment warnings 2020-06-20 21:31:15 -04:00
zeromus dfe027cf8f finish renaming hyper/turbo wbx files 2020-06-20 20:20:42 -04:00
zeromus 602dec0c4c clarify that CloneSaveRam() can return null 2020-06-20 20:13:00 -04:00
zeromus f98c4d18b1 dont create empty file when manually flushing null save ram 2020-06-20 20:12:59 -04:00
nattthebear a9d1ad16b1 GPGX: Saveram tweaks
When saveram doesn't exist, return null, not new byte [0].  If passed a 0-length saveram file, do not pass it to the core (this crashed in interop stubs).  Note that as best as I can tell, this is not fixing any problem; even without this commit it seems impossible to get BizHawk to actually generate a 0 byte saveram file for GPGX because of other checks that already existed.
2020-06-20 19:21:55 -04:00
zeromus fc5e325608 add Reset Speed hotkey. it's bound to Shift+Equals by default because.. well, it's kind of logical... kind of. If you have any better suggestions...
fixes #2154
2020-06-20 18:55:39 -04:00
zeromus 936b7606d0 cleanup to Choose A/V writer dialog 2020-06-20 18:46:37 -04:00
adelikat c6694a5e29 TasMovie - cache mnemonic look ups, gives a noticeable speed boost to drawing 2020-06-20 16:00:08 -05:00
adelikat 249259d7b3 move QuickCollections to the PCEHawk core where it is used, since we don't expect to use it elsewhere, and one of it's advantages was speculating that being in the same assembly would give it good inlining, so being in a common library was negating this 2020-06-20 14:54:21 -05:00
adelikat dc656ccb23 remove unused extension method 2020-06-20 14:36:57 -05:00
adelikat 21d2667736 remove useless dropdown opened event 2020-06-20 14:27:23 -05:00
adelikat 46188f977c convert SMSHawk to generic core menu 2020-06-20 14:11:23 -05:00
adelikat f1d5ef0f0f create ISmsGpuView and have the Sms VdpViewer tool depend on it 2020-06-20 14:03:57 -05:00
adelikat 8bfe6011bc convert PCE to generic core menu 2020-06-20 13:42:00 -05:00
adelikat 5570af6514 convert Genesis to generic core menu 2020-06-20 13:12:09 -05:00
adelikat 831197aeaa created a SpecializedTool attribute for system/core specific tools, and use it to dynamically add available tools to the generic core menu, replace the hardcoded GBA menu using this 2020-06-20 13:05:36 -05:00
adelikat f1131b1907
Create a generic core menu (#2155)
* poc - have a default core menu that provides a generic settings menu item, wire up some cores to this generic menu that only have settings to begin wtih

* vectrex - remove strong type for settings, if there are no settings the convention is to use object, which allows GenericCoreConfig to be smart

* convert saturn menu to default core menu

* fixups

* convert PCFX menu to generic core menu

* convert snes9x and faust to generic core menu

* convert GBLink to generic core menus

* convert MAME to generic core menu

* convert NGP to generic core menu

* convert GGLink to generic core menu

* convert wonderswan to generic core menu

* convert virtualboy to generic core menu
2020-06-20 11:28:23 -05:00
nattthebear e6858c702b nyma - fix bug that stopped NGP from booting
Happened in a recent refactoring.  NGP hides the constantfb setting (Because it is always at a constant fb), and that needs to override the core provision, not cause an exception.
2020-06-20 12:12:34 -04:00
zeromus 5e399b8fc3 fix crash shutting down when GL retroshaders failed compiling 2020-06-20 00:52:38 -04:00
zeromus 1b4a6f6415 get gl display method working, at least, minimally, with the scanlines shader. someone else can fix up the others if they need to or make me a bug. at least the hard part is past 2020-06-20 00:48:42 -04:00
zeromus 00e546a537 keep working on CGC-removal 2020-06-20 00:48:42 -04:00
zeromus b842f3ed16 remove cgc (step 1) 2020-06-20 00:48:42 -04:00
nattthebear 1f966a4cc1 Fix potential crash on exit if certain native resources weren't disposed
Finalizers in SpeexResampler and QuickNes assume that the underlying native dll still exists when they run, as they have to in order to successfully clean up leaked memory.  This is not true if those resolvers, which were stored as static fields themselves, had been finalized, which can only happen on app exit (because the static fields were readonly and always kept their value).  If a SpeexResampler or QuickNes was never disposed and itself lasted all the way to app exit, then the order of these two finalizers would be unspecified and a crash could happen.

In normal circumstances, this was only observable in DS core because apparently Suuper couldn't copy paste properly and missed the dispose part, but that was already fixed in 129d454a67.
2020-06-19 23:10:56 -04:00
nattthebear 129d454a67 blah blah dispose blah blah 2020-06-19 20:56:16 -04:00
zeromus ee963e8d64 I found this old icon on an old hard disk. I think I meant it for the log window, but maybe that was back when it opened the windows console instead of another window? Anyway, it's cute, maybe someone will figure out what to do with it. 2020-06-19 19:07:20 -04:00
adelikat 65a6ec03f6 reduce some mainform redundant menus for gb3/4x, they have the same logic as gbhawk link 2020-06-19 17:07:42 -05:00
adelikat 7bac6e933b add icon that the designer ate 2020-06-19 16:49:23 -05:00
nattthebear 020e5a7e32 minor cleanup 2020-06-19 17:26:58 -04:00
adelikat 487c596d76 cleanup Zwinder 2020-06-19 16:16:07 -05:00
adelikat 53716a40e5 Rewind Config - add UI for Rewind.TargetFrameLength, and a bit of visual re-org. Designer was used so this includes designer file barf 2020-06-19 16:09:17 -05:00
adelikat da59add3f6 add TargetFrameLength to rewind settings 2020-06-19 15:58:18 -05:00
adelikat 4978fe4b92 Rewind config - more cleanup - calculate maths correctly 2020-06-19 15:53:08 -05:00
adelikat 32b14641f1 Rewind config - better buffer size settings 2020-06-19 15:22:39 -05:00
adelikat 9faa159647 Rewind settings cleanup, make default buffer size 512mb 2020-06-19 15:19:50 -05:00
adelikat d431947d4e rewind config cleanup 2020-06-19 15:14:11 -05:00
adelikat 392611d6c6 Rewind - rename Small state enable to just enabled 2020-06-19 15:09:59 -05:00
adelikat c83027b817 remove medium and large state enabled rewind options 2020-06-19 15:05:49 -05:00
adelikat 6b514293ff Rewind - remove speed multiplier option, very redundant given that speedup and turbo calculate toward rewind speed 2020-06-19 15:02:03 -05:00
adelikat 6440d92a34 remove rewind frequency settings 2020-06-19 14:57:09 -05:00
adelikat 63533888ad Rewind config - remove on disk option 2020-06-19 14:47:25 -05:00
adelikat 9d17cd40e8 Rewind - remove ability to define Small, Medium, Large state sizes 2020-06-19 14:45:08 -05:00
adelikat a58a10e633 remove rewind threading config option 2020-06-19 14:37:36 -05:00
adelikat 270d03bf40 rewind - change UseDeltaCompression to UseCompression 2020-06-19 14:35:55 -05:00
adelikat dec20a4683 remove old rewinder code 2020-06-19 14:10:06 -05:00
adelikat 84c691021b settings hacks - actually map compression to a compression settings, give rewind an "off" switch, hacked to small states for now 2020-06-19 14:05:38 -05:00
adelikat 02a2efbed1 oopsies 2020-06-19 14:05:38 -05:00
adelikat 7dd78a9fa4 zwinder - hack in some settings from the ui 2020-06-19 14:05:38 -05:00
nattthebear 3b8e0ce39d Zwinder: Don't tell the mainform we're rewind-state-capping every 0 frames, that's just silly 2020-06-19 14:05:38 -05:00
nattthebear 1121d430f4 zwinder: add optional compression 2020-06-19 14:05:38 -05:00
nattthebear 5bd75fd001 Testing a new "zwinder" rewinder 2020-06-19 14:05:38 -05:00
alyosha-tas a914cb69e0 GBHawk: Speed change and window fixes 2020-06-19 14:09:03 -04:00
adelikat 75bd2f8063 fix NRE fix fail 2020-06-19 10:18:28 -05:00
adelikat 91c33a49c0 Rewind config - fix NRE when turning off rewind then going back to the config dialog 2020-06-19 10:01:01 -05:00
zeromus 25327b510d mgba - try resetting sram memdomain after frame advance, so sram autodetection can progress and feed into frontend. addresses #1620, maybe not in the best way 2020-06-18 03:08:57 -04:00
zeromus 1efc91cb94 hex editor: handle tiny (even 0 size) memory domains without crashing 2020-06-18 03:07:44 -04:00
YoshiRulz 8e414aea29
Enable CA1829 and fix noncompliance
"Use Length/Count property instead of Count() when available"
2020-06-18 09:44:01 +10:00
YoshiRulz 620e54580d
Enable CA1052 and fix noncompliance
"Static holder types should be Static or NotInheritable" (classes with only
static members should be static classes)
2020-06-18 09:43:57 +10:00
YoshiRulz 16d1782c9e
Enable CA1018 and fix noncompliance
"Mark attributes with AttributeUsageAttribute"
2020-06-18 09:43:53 +10:00
YoshiRulz 7f99dd95d6
Enable CA1010 and fix noncompliance
"Collections should implement generic interface"
2020-06-18 09:43:50 +10:00
YoshiRulz 8ca791852a
Enable MEN011 and fix noncompliance
"Align using directives"; this file had 2 BOM chars for some reason
2020-06-18 09:43:47 +10:00
YoshiRulz e71f5b32f0
Minor style cleanups 2020-06-18 09:43:36 +10:00
alyosha-tas 01e3a6cf43 QuickNES: blacklist Burai Fighter fixes #2145 2020-06-17 13:58:51 -04:00
nattthebear 4d3558d7e3 State manager API cleanup
add some comments.  Remove two methods from the interface definition that aren't actually used in public API
2020-06-17 07:31:00 -04:00
YoshiRulz abca8e02f2
Move some static data from MainForm to RomLoader 2020-06-17 10:46:54 +10:00
YoshiRulz 77e6a7300a
Create and use MainForm.ShowDialogAsChild(Form) helper 2020-06-17 10:46:51 +10:00
YoshiRulz 0e767add09
Rename ApiHawk files to match type name 2020-06-17 10:38:31 +10:00
YoshiRulz 9d1dfd71a1
Fix EmuClientApi not being registered and merge CloseEmulator()s
fixes a74d657a2, 51a83193a
2020-06-17 10:35:14 +10:00
alyosha-tas c53bda9235 NESHawk: make game genie compare cheats work 2020-06-16 20:01:34 -04:00
YoshiRulz ff4662efe8
Delegate more of ClientLuaLibrary to ApiHawk 2020-06-17 08:02:09 +10:00
YoshiRulz a74d657a2a
Promote IEmuClient to a full-fledged IExternalApi
also remove UnpauseEmulation() (duplicate of Unpause()) and rename
SetExtraPadding to SetClientExtraPadding (to match Lua)
2020-06-17 08:02:02 +10:00
nattthebear 9597be621a Partially revert c42889ceef
Pretty sure it's impossible for this to be null; the entry assembly always has a location and only weird dynamic assemblies can have none.

But if somehow it was, then we don't want to create a jumplist item that doesn't work!
2020-06-16 17:30:18 -04:00
nattthebear 8607f7891f Fix virtual size output on nyma cores. Expose more debugging info to console about screen sizes. 2020-06-16 15:53:10 -04:00
YoshiRulz 51a83193a1
Merge overloads of CloseEmulator to param w/ default 2020-06-17 02:15:33 +10:00
YoshiRulz cb08d00372
Replace single-use delegate type with Action<bool> 2020-06-17 02:15:11 +10:00
YoshiRulz 03acb1ded7
Move LoadRomArgs to own file 2020-06-17 02:14:33 +10:00
nattthebear 8b9debb8b9 Hide mission stick autofires again
I hope someone comes into irc screaming about how they can't do their TAS because we don't support the exact hardware semantics of the mission stick, but the more realistic outcome is that no one ever uses the mission stick for anything
2020-06-16 10:20:11 -04:00
nattthebear fa4a95f1b1 Looks like this existed solely to support the old bsnes interop, which everyone agrees was awful and something we only did because we had to 2020-06-16 07:45:34 -04:00
nattthebear 7b2ac98520 guess nothing was using this 2020-06-15 17:10:27 -04:00
adelikat 27bb2759a6 more mnemonics for saturn 2020-06-15 15:33:54 -05:00
adelikat c5ec8eb0ba saturn - mnemonic for smpc reset button 2020-06-15 14:59:24 -05:00
adelikat 03e2bccf6c remove a debug line of code 2020-06-15 14:49:26 -05:00
zeromus 98b3d8d335 change PSX framerates to follow mednafen instead of nocash (fixes #2138) 2020-06-15 15:10:29 -04:00
adelikat e6a2fe39e1 faust - support virtual pads 2020-06-15 14:02:34 -05:00
adelikat cf3e1d51e0 nyma cores - fixes to mnemonic lookups and add a few overrides 2020-06-15 13:43:23 -05:00
adelikat c8a0b6c323 virtual pads - pce, pcfx - add console buttons 2020-06-15 13:29:31 -05:00
adelikat 25dddf5160 hack to fix Nyma roman numeral buttons, virtualpads - PCE and PCFX fixes 2020-06-15 13:20:40 -05:00
adelikat 3d8920308c remove nyma virtual pad hacks for direcitonal buttons now that nyma buttons conform to typical naming conventions 2020-06-15 13:20:40 -05:00
adelikat 4122a51153 bk2 mnemonic lookup - remove some nyma hacks now that nyma directional buttons conform to the typical naming scheme 2020-06-15 12:59:54 -05:00
nattthebear b8bea93cce Rework nyma controller overrides 2020-06-15 13:37:50 -04:00
nattthebear 5b2b1cf13b Enable SNES and GBA gpu view on linux
I tested the SNES one and it seemed to work.  Don't have any working GBA cores right now in linux, I think?  But no reason to expect it wouldn't work
2020-06-15 10:49:17 -04:00
nattthebear 8e689dae76 Don't lock out the GB gpu view on linux
It works there, why was it disabled?
2020-06-15 10:42:47 -04:00
YoshiRulz 77a810600b
Inline the thing I deleted into somewhere it shouldn't be used, again 2020-06-15 13:09:58 +10:00
YoshiRulz 5f809d8e24
Cleanup N64 controller def init and re-init 2020-06-15 13:03:15 +10:00
nattthebear e5e4983464 waterbox - remove some unused saverammerer junkus
ngp doesn't use this, so...
2020-06-14 20:29:22 -04:00
adelikat 67489bfc3a PCFX - fix virtualpads, support mouse 2020-06-14 16:21:37 -05:00
nattthebear 30fd675903 woops 2020-06-14 16:27:08 -04:00
adelikat 9027223018 PCE - virtualpads - support all the buttons 2020-06-14 15:19:28 -05:00
adelikat cecf29e90a Support PCE mouse in movie mnemonics and virtualpads 2020-06-14 15:19:28 -05:00
nattthebear ecdfc66617 nyma big setting update
Moves a lot of settings around, hopefully addressing some concerns
2020-06-14 16:02:33 -04:00
YoshiRulz 99a5563490
Inline value that was public for some reason 2020-06-15 05:12:14 +10:00
YoshiRulz dbeb279bf0
Add an extension method to help w/ ControllerDefinition init of axes 2020-06-15 04:47:54 +10:00
nattthebear 2707d1cd92 nyma - rework settings architecture a bit
This gives us flexibility to define more featureful overrides
2020-06-14 14:18:13 -04:00
adelikat e41659e237 rough in for gamepad or none virtualpad support for Turbo and Hyper Nyma cores, only 2 button currently supported, support some uppercase button names in mnemonics 2020-06-14 12:02:09 -05:00
adelikat 9dfd6c3fb3 remove nyma button name overrides, they don't help with virtualpads, and ar e a hassle to maintain, we can just consistently be inconsistent for these cores 2020-06-14 11:32:01 -05:00