Commit Graph

343 Commits

Author SHA1 Message Date
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
alyosha-tas 39bbe30b8e O2: fix sprite shifting and add some homebrew to DB 2020-07-11 08:29:11 -04:00
nattthebear a67fa70632 waterbox linux - rework to avoid possible memory leak
Bizhawk never would hit this because it only ever runs waterboxes in one host thread, but an application that spun up many threads and ran waterboxes in each would leak 32 bytes of heap for each native thread destroyed, which is super duper not really meaningful at all
2020-07-08 07:22:15 -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
alyosha-tas fee733480f O2Hawk: change PAL timing 2020-07-06 09:38:24 -04:00
zeromus ae763f2eef fix hq2x in glsl (fixes #2196) 2020-07-05 18:15:05 -04:00
alyosha-tas fa7ac3d4c1 A7800Hawk: Fix pokey 0x450 detection 2020-07-05 15:45:08 -04:00
alyosha-tas e4e078a1c9 DS: Fix default binding for stat key 2020-07-04 19:53:54 -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 32031d0f67 Atari 7800: support serpentine 2020-07-03 16:07:26 -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
YoshiRulz 314dc391ae
Fix typo
these are backwards; fixes 73a905214
2020-06-28 19:45:39 +10:00
YoshiRulz 73a905214e
Fix possible bug when symlinking EmuHawkMono.sh 2020-06-28 19:42:49 +10: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
zeromus e3dd8870c6 fix hq2x shader (fixes #2160) 2020-06-21 21:52:49 -04:00
adelikat b9f59337dd fix Saturn and NGP default controls 2020-06-21 17:31:28 -05:00
adelikat 123f1b3c99 default controls for Nyma PCE cores 2020-06-21 16:27:06 -05:00
zeromus 703a51be09 fix retroizer 2020-06-20 22:25:41 -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 d4cb18aff8 actual remove CGC.exe, that was the whole point wasnt it 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
alyosha-tas 0d9f0d2af1 A2600: update gamedb for quad run fixes #2127 2020-06-15 14:08:45 -04:00
nattthebear abc1f502b9 remove no longer used vbanext file 2020-06-14 19:42:32 -04:00
nattthebear ec3a288377 my bad 2020-06-07 09:26:56 -04:00
nattthebear 3bc1ed4bbc snes9x - take advantage of new waterbox change tracking to fix special chip games 2020-06-03 19:25:58 -04:00
YoshiRulz 0714376afe
Let EmuHawk pick up the shipped libblip_buf; packaging it is too hard 2020-05-15 17:05:12 +10:00
YoshiRulz a1b501fe5a
Fix OpenAL sound on Unix
TODO copy this file from NuGet cache w/ MSBuild
2020-05-15 15:37:29 +10:00
adelikat e76c89ce7a add some genesis games to the gamedb that weren't there, most don't work however 2020-05-09 13:17:01 -05:00
nattthebear a040e67c95
Add option to force sram in genesis core (#1991)
gpgx upstream automatically gives 64KiB sram to every game of size 2MB or lower, unless specifically overrided.  That sucks and we don't do it.  But some games do need it; there's not enough information to autodetect otherwise.  So add a flag that we can set in gameDB for it, and set it true for two known games that have problems otherwise.
2020-05-09 13:48:46 -04:00
alyosha-tas 0e7e93b205 O2Hawk: various bug fixes 2020-04-17 18:38:44 -04:00
alyosha-tas 535a586422 O2hawk: add console version of happy bird 2020-04-10 15:19:16 -04:00
YoshiRulz cc4b12b0ae
Fix remaining "Nintento 64" typo
see eb1d87933
2020-04-10 09:58:59 +10:00
zeromus 8084fce648 rename 2020-04-01 18:00:57 -04:00
zeromus d60b83791c fix StyleusInputDisplay 2020-04-01 18:00:42 -04:00
adelikat 2fbbe01347 DS - fix sylus lua script to use client.transformPoint, still doesn't work since it scales down to 1x 2020-04-01 11:55:23 -05:00
adelikat cea0e80637 DS cross hair display script - account for movie playback 2020-03-28 17:27:51 -05:00
adelikat d1032f38f8 DS - add a DS lua library with a touchScreenStart() method, add a cross hair stylus input display script 2020-03-28 15:43:31 -05:00
SuuperW c59d8130bb
DS Hawk (#1884)
* Add MelonDS.cs, support opening (but not really) .nds files.

* init MelonDS

* MelonDS: Load selected ROM.

* MelonDS: FrameAdvance and frame counter.

* MelonDS: IVideoProvider

* MelonDS: Add DLL files.

* MelonDS: IInputPollable

* MelonDS: IStatable (and add forgotten file MelonDS_InputPollable.cs)

* update libmelonDS.dll

* MelonDS: ISoundProvider

* Add NDS to Global.SystemInfo, and convert screen coords when running NDS.

* set up default NDS controller

* MelonDS: ISaveRam

* MelonDS: remove romlist.bin

* MelonDS: ISettable

* Create firmware folder if it doesn't exist on Windows; otherwise, an exception is thrown.

* Add database entries for NDS bios/firmware files.

* MelonDS: Use the bios/firmware files selected in BizHawk's "Firmwares" dialog.

* MelonDS: Re-work sync settings a bit.

* NDS's firmware file contains user settings; these are over-written by sync settings, so we shouldn't allow them to impact the hash

* MelonDS: Add (currently unused) bootToFirmware sync setting, and NDSSettings dialog.

* Update NDS firmware hash; it seems I had somehow corrupted mine.

* MelonDS: Use boot to firmware sync setting.

* MelonDS: Allow user to set some firmware user settings via the NDS settings dialog.

* MelonDS: Add singleInstance attribute to core.

* MelonDS: IMemoryDomains

* update libmelonDS.dll

* MelonDS: Set up default sync settings if none are provided.

* MelonDS: Allow user to reset settings to default.

* MelonDS: bios+firmware files are recommended

* libmelonDS.dll

* MelonDS: Don't use real time.

* MelonDS: Update to reflect new way of handling RTC in MelonDS.

* MelonDS: Notify if savestate load failed.

* update MelonDS.dll

* MelonDS: Allow user to set startup date/time in settings dialog.

* MelonDS: Create melon directory if it doesn't already exist.

* Don't include Designer's "fixes" in PR (partially reverts 56b474c00)

* Don't show a broken console window; alert user of need to restart instead.
This fixes an error related to MelonDS trying to use the broken stdout stream.

* update default NDS controls to match other updated controls

* Implement a system bus, using ARM9 read/writes.

* MelonDS: Allow BizHawk to change the contents of the frame buffer.

* update libmelonDS.dll

* fix stuff that was merged incorrectly, or was broken by merge

* update libmelonDS.dll
(includes memory leak fix)

* update libmelonDS.dll
(fixes memory leak and an occasional savestate crash)

* fix stuff that broke with the merge

* cleanups, remove stuff that is no longer needed by service interaces

* simplify DS MemoryDomains

* DS - fix order of controller buttons to be consistent with other consoles.  This probably breaks any existing movies made on this core, but those would have been experiments, right?

* NDSSettings - make min value for day and month 0, whiel those aren't "valid" values they are the default values in the core for whatever reason, better to not crash on load and not show a value that isn't actually the setting.  This can easily be reverted if the core changes to default to 1

Co-authored-by: YoshiRulz <OSSYoshiRulz@gmail.com>
Co-authored-by: adelikat <adelikat@tasvideos.org>
2020-03-21 10:53:30 -05:00
alyosha-tas aa165f36d2 O2Hawk: add PAL mode 2020-03-20 16:39:14 -04:00
Asnivor 75188e1c85 O2Hawk: Add homebrew rom status identifier to gamedb manual entries 2020-02-21 09:47:26 +00:00
alyosha-tas 585ebd50e5 O2Hawk: uncomment some homebrew 2020-02-20 17:34:43 -05:00
Asnivor b75b41ad64 Odyssey2: gamedb file generated from tosec 2020-02-20 11:07:48 +00:00