Commit Graph

385 Commits

Author SHA1 Message Date
Morilli 24c74c0e36 Implement IDebuggable for the new bsnes core 2021-05-23 05:02:05 +02:00
Morilli e2b38732dd Fix bsnes memory domains and add bsnes.wbx.gz 2021-05-15 19:36:08 +02:00
YoshiRulz 07f637fef0
Remove garbage from misbehaving Gambatte build 2021-05-13 13:35:57 +10:00
TiKevin83 3dcc487df2
Fix Gambatte RTC on Hard Reset (#2739) 2021-05-12 23:25:28 -04:00
YoshiRulz f7e38d499d
Update mGBA binary for Linux
https://gitlab.com/TASVideos/BizHawk-ports-CI/-/jobs/1254060848
2021-05-12 03:12:44 +10:00
feos 8cc5488de3 update mgba to release 0.9.1 2021-05-11 19:17:46 +03:00
YoshiRulz 8f7b01bffe
Fix whitespace in defctrl.json 2021-05-08 06:26:17 +10:00
YoshiRulz b9e29e78b4
Fix default PCE gamepad bindings (fixes #2720) 2021-05-08 06:23:23 +10:00
CasualPokePlayer 3372556ef0
[Gambatte] MBC3 RTC Refactor (And add a way to set initial RTC state) (#2724)
* slightly fix gambatte peeking
* fix gambatte layer masking, move layer masking to sync settings (these settings affect sync, they shouldn't be normal settings)
* block toggle layer hotkeys when movie recording
* refactor Gambatte's RTC
* add a way to set an inital RTC state during a movie recording
* prevent Gambatte from saving RTC data when recording a movie, needed to create save-anchored movies
2021-05-05 21:40:36 -04:00
YoshiRulz 7c1b40df1f Revert "The next time I look at this I want to see waterbox builds actually fucking working again. This means copying to dll as they are now, and not silently being overridden by stale files stored in another folder. This is not my problem to fix because I did not fucking break it."
This reverts commit d8d42b9f81.
2021-04-28 15:35:11 +10:00
nattthebear d8d42b9f81 The next time I look at this I want to see waterbox builds actually fucking working again. This means copying to dll as they are now, and not silently being overridden by stale files stored in another folder. This is not my problem to fix because I did not fucking break it. 2021-04-27 19:37:53 -04:00
zeromus f7fb2ad76f psx - fix oopsies in shock_destroy 2021-04-27 14:56:41 -04:00
CasualPokePlayer 1fe2a12b67
[MovieClock.lua] use cycle based time for Gambatte/SubGBHawk (#2708)
* use cycle based time for Gambatte/SubGBHawk

* non-functional cleanup
2021-04-18 10:05:53 -05:00
CasualPokePlayer b9123453aa
[Gambatte] Slightly fix peeking & fix layer masking (#2712)
* slightly fix gambatte peeking

* fix gambatte layer masking, move layer masking to sync settings (these settings affect sync, they shouldn't be normal settings)

* block toggle layer hotkeys when movie recording
2021-04-18 10:03:44 -05:00
YoshiRulz 771b5397fe
Fix range, def. binds, and Virtual Pad for SEGA Mouse 2021-04-17 12:54:17 +10:00
TiKevin83 90a67b9e22 update libgambatte to fix RTC subsecond tests 2021-04-05 02:53:04 -04:00
TiKevin83 585ed99cdd update gambatte-speedrun GBA modeswitch timing and testROM accuracy 2021-03-18 19:31:06 -04:00
YoshiRulz d524da3530
s/null/nil/ in all included Lua scripts 2021-03-07 22:19:40 +10:00
TiKevin83 b2893d24c6 Update Gambatte to fix RTC issues and output location of the DLL in the assets folder 2021-03-04 02:04:45 -05:00
TiKevin83 9ca1b86316 Update gambatte to support the wisdom tree mapper and fix upstream reference and links 2021-03-04 02:04:45 -05:00
YoshiRulz 05676234ed
Move remaining assets from /output to /Assets 2021-02-12 14:08:17 +10:00
YoshiRulz dbe2cd4cde
Cleanup <Reference/>s of NLua (and System.Data.SQLite) 2021-02-12 13:59:40 +10:00
YoshiRulz 28ff2231f2
Update mGBA Linux binary
Windows binary rebuilt in 78931e025
taken from https://gitlab.com/TASVideos/BizHawk-ports-CI/-/jobs/968003727
2021-01-17 23:31:12 +10:00
YoshiRulz ce0ccd0cfa
Remove wget binary from assets
fixes a1253407e
2020-12-26 12:44:47 +10:00
YoshiRulz a1253407e7
Remove gamedb/update_gamedb.bat from assets (fixes #2529)
pulling the gamedb from master into an old version is a bad idea
2020-12-26 00:52:23 +10:00
nattthebear 72ea5ce866
Waterbox: Allow SEH unwinding through guest calls. (#2519)
The goal of the separate stacks was to allow this, but I never quite finished the job.  Now, when a SEH exception (generally a Rust panic in a guest syscall handler, or a C# Exception in a callback) tries to unwind through guest code, it works.  Note that we don't actually unwind the guest stack, as there's nothing useful to be gained from that;  When an emulator core throws an exception like this, it should be considered completely hosed.  Throw it out and get a new one.

There were two bugs stopping this from working.

First of all, we had custom thunks that lacked sufficient unwind information for RtlUnwind to get through.  For the sysv <-> msabi adapter, this was fixed by making it regular Rust code instead of hand assembled junkus.  So the compiler generates valid unwind information for all of that.  Then we just JIT a small stub on top in the MsHostSysVGuest code, which needs no unwind information because it won't throw an exception itself and transparently passes execution to something with valid unwind information without invalidating that information.  (NB:  Clr JIT stubs use the same strategy.)  For the host <-> guest stack transition code, a small hand generated unwind stub was added to interop.s that is registered with `RtlAddFunctionTable`.  I've seen the unwind work successfully without this second set of unwind information, but better safe than sorry.

Secondly, our misuse of SubSystemTib caught up with us.  It's an old field, allegedly from OS/2, that we repurposed to hold TLS information needed for the waterbox stack transitions.  Most people think nothing uses it any more, but in fact if it's set to a non-NULL value, but doesn't contain valid information, `KERNELBASE!GetModuleFileNameW` will crash when it tries to get a module name from there.  The fix here was to simply tighten up our usage of SubSystemTib:  We were already nulling it out when returning from guest code, but not when calling back to host code in guest code.

Fixes #2487.  Unwinding of this sort has never worked well in waterbox; the reason why that issue is more recent is that the particular reproducing case of firmware didn't cause an exception in a callback in older code; the exception happened in pure managed code.
2020-12-13 19:12:16 -05:00
YoshiRulz e2ac1aca84
Add and use DistinctKey enum (copy of WPF's key enum) 2020-11-21 17:43:58 +10:00
alyosha-tas 04a60cd0df Game DB, add good entry for Litti's Summer Sports 2020-11-09 13:12:29 -05:00
adelikat bd64530ce5 fix MovieClock ui, bad gui.text() usage, also use current frame count instead of movie length 2020-10-17 13:33:13 -05:00
nattthebear 98ad14ff47 Fix two semi-related savestate bugs in waterbox.
We had two instances where the act of sealing could lose snapshots that were never recovered.  It's oof.
2020-10-13 09:10:46 -04:00
YoshiRulz c0b755a33b
Recompile Cygne, Handy, mGBA, and QuickNes for Linux 2020-09-26 22:19:02 +10:00
YoshiRulz 5ae13a2309
Change build path of executables to output/dll
* post-build step moves .exes up a level, to output
* also fixed OpenTK.dll.config location
* also removed redundant step from packaging scripts
* future executables need to be capable of resolving assemblies in dll
2020-09-22 09:39:53 +10:00
YoshiRulz fb5a5ed78c
Add libdarm.so, migrate Darm class to BizInvoker
`Tools` > `Debugger` no longer crashes immediately on Linux with mGBA core
2020-09-21 01:38:09 +10:00
Ethan Arns 8391be5ae7 Added Pop_OS support 2020-09-20 05:24:00 +10:00
James Groom a5d166cf71
Partial fix for #2353 (files in dev builds) (#2410)
* Move .so libraries to dll dir, update some build scripts

* Move OpenTK.dll.config with OpenTK.dll

* Keep EmuHawkMono.sh in Windows-built artifacts

* Add Package.sh to match QuickTestBuildAndPackage.bat

used as `Dist/BuildRelease.sh && Dist/Package.sh`

* Update GitLab CI to use Package.sh
2020-09-18 20:08:34 -05:00
YoshiRulz 4bf50e6e51
Fix docs/strings/identifiers copypasta'd between various Hawk cores
A2600 standard controller and A7800 standard controller were using the same
keybinds, now only Atari2600Hawk uses those and A7800Hawk's are blank unless
configured manually or configured on config regen
2020-09-08 12:02:53 +10:00
alyosha-tas 1c5f9fccb3 O2Hawk: Mostly fix 4 in a row 2020-09-04 19:46:49 -04:00
adelikat 369b7830a5 add Cyorter's Input display lua script, that gives a graphic based (FCEUX style) input display for most non-analog peripherals 2020-08-01 16:46:49 -05:00
adelikat 6fd2252753 fix psx default controls, fixes #2251 2020-08-01 15:55:55 -05: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 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 765eb443a5
Tweak run script to compute lib and wine lib paths separately
also added $PWD/dll to LD_LIBRARY_PATH in case we ever use that
2020-07-28 18:11:50 +10:00
nattthebear 1c606c1eb6 waterbox - expose read-only information about the guest memory page table 2020-07-23 16:08:24 -04:00
nattthebear 356abf6c43 Really, actually, truly fix the waterbox savestate snafu, probably
The description in the previous commit is accurate, but the problem runs deeper and was on the whole a complete failure for me to appreciate the difference between active and swapped in on memoryblocks.  Bleeecch.
2020-07-23 15:20:04 -04:00
nattthebear e343f6bd26 Fix a complete savestate snafu in waterbox
This was broken by 175556529e, with two related issues:  When we allowed for some operations to happen even when the block is inactive, we didn't account for the fact that in swapin, the block technically is not active yet (the lock is not on the self), and similarly in swapout, the lock has already been moved out of self.  The former caused all memory areas to revert to RWX at the host OS level after a swap, so no dirty detection was done.  After the former was fixed, the latter caused saved costacks to still get missed.

At the same time we ran into a perfect storm with costacks on Windows; if a stack page is not yet dirty, but we hit a fault for something else, Windows will not call our VEH handler unless the TIB stack extents are satisfactory, since it needs userspace to fix up the TIB extents via VEH or SEH handler, but there's already an exception pending.
2020-07-23 13:30:58 -04:00
nattthebear c7e8744664 Add an extra exclamation point to indicate that code is VERY IMPORTANT
This broke any waterbox core that called in to native code in the same EnterExit() right after sealing.  All nyma cores were broken, 32x was not, didn't check the rest.  Regressed in 175556529e.

It worked fine in release mode, theoretically
2020-07-18 11:54:05 -04: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 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
nattthebear beb51ab286 Fix a linux waterbox-releated crash
Repro steps:
1) Load any waterbox core
2) Do anything that would trigger a NullReferenceException on C# side that you'd normally expect to be caught
2020-07-12 11:03:12 -04:00
nattthebear d354faeec1 probably fix linux waterbox issue 2020-07-12 07:49:18 -04:00