Commit Graph

278 Commits

Author SHA1 Message Date
nattthebear 2952ac24aa savestates on waterbox 2020-06-07 09:26:08 -04:00
nattthebear aa48af9c94 linux: support gpgx
as before, do not load state even if your life depends on it
2020-06-06 18:25:59 -04:00
nattthebear 4d3ef71c8a Remove some old junk 2020-06-06 16:18:06 -04:00
nattthebear dcaf504202 Some progress on loonix waterbox
It doesn't work
2020-06-06 14:39:55 -04:00
nattthebear b3c3a3a4bb waterbox sgb sameboy - fix stereo audio
WHOOPS
2020-06-06 07:55:21 -04:00
nattthebear 7792eb2e80 Improve waterbox "lazystates"
Cores that used the .invisible section to store data were saving it; this was a regression from before, so PCFX states should be back down to the previous release size, or perhaps a bit smaller.

Add the ability to dirty track libco cothreads, as used in the bsnes core.  This saves a lot of space in those states and they're now quite competitive in size.
2020-06-04 12:13:28 -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
nattthebear 842a7df215 waterbox: minor makefile tweak
allows fiddling with linkscript to be easier
2020-06-03 17:57:31 -04:00
nattthebear 6e366b7590 waterbox libsnes cothreads: set TEB/TIB stuff
some bsnes cothreads call callbacks that hit managed threads.  We shouldn't do that, but we do, and sometimes those threads run MSVC's __stkchk which can, depending on circumstances, blow up if the thread extents aren't set.

This also means that we cannot save space on a lot of cothread stacks because __stkchck will blow up any detection guards we try
2020-06-03 15:48:06 -04:00
nattthebear 69ade58d2a waterbox: enable -fcf-protection=none, recompile pce fast 2020-06-03 12:16:18 -04:00
nattthebear 885b86e1b2 waterbox: add the ability to compile but not assemble individual files for debugging purposes 2020-06-03 12:02:56 -04:00
nattthebear d06ed05929 waterbox - track writes for smaller savestates
The waterbox system now uses host os facilities to track whether memory has been written to, to automatically choose what thing to savestate.  This results in a large size decrease for some cores, like snes9x or gpgx (when running cartridge games).  Doesn't do much for cores that were already memory efficient, or for bsnes because of libco compatibility issues; but those cores don't regress either.
2020-06-03 07:13:40 -04:00
nattthebear d57e3d768a commit new builds of all the nyma cores because of something i changed with faust
fixes #2083 (presumably?  the user didn't provide any description so i'm not sure)
2020-06-01 12:18:15 -04:00
nattthebear 474d41bd8a add mednafen's pce fast core
~1.6x the speed of the mednafen pce core, or something
Supports all of the same features except ADPCM ram view
TODO: romloader hookups
2020-06-01 11:23:18 -04:00
nattthebear 6c9b42a526 faust: Support MT renderer
and who said waterbox can't thread.  well, it sort of can't.  but it sort of can.

the speedup isn't that great, but speed is now pretty close (5%?) to snes9x in the only game that matters (final fantasy 5)
2020-05-31 11:53:15 -04:00
nattthebear a87fc36e39 Update some docs
For the external cores, I simply listed whatever the release build we have right now built them with.  There are other makefiles and such hanging around...
2020-05-30 19:13:27 -04:00
nattthebear 6938c07708 nyma - enable inline avx, and recompile cores that used it
allegedly worth a speedup on faust and pce.  didn't notice any change, but it's not slower
2020-05-30 19:13:27 -04:00
nattthebear 1711914488 snes faust: enable SA1 IRAM as a memory domain 2020-05-30 17:05:55 -04:00
nattthebear 0085fee935 faust - memory domains, input callbacks, lag flags 2020-05-30 11:09:26 -04:00
nattthebear 5e3971a87b Add mednafen snes "faust" core
Speed somewhere between shizzlenineizzle and byuugan.  Some things not hooked up yet.
2020-05-29 20:04:39 -04:00
nattthebear de25b53fe2 Use google flatbuffers for some waterbox core communication
Nyma cores have to move some big complex structs on init and it's annoying and error prone.  This solution is not fast, but these are one time transfers anyway, and it does keep code size and saved size down.  Architecture yay.
2020-05-29 18:03:01 -04:00
nattthebear 978b2dd247 Remove all files for the old unmanaged ngp waterbox core
It's been fully integrated into nyma now
2020-05-27 19:43:35 -04:00
nattthebear 2afe356fc9 Move ngp over to nyma core and update to latest mednafen
It's seen some upstream updates recently, so that's cool
2020-05-27 19:33:31 -04:00
nattthebear 287e78a5a9 pce - add input callback
forgot this
2020-05-27 16:01:53 -04:00
nattthebear 0295f7472b PCE enhancements
Moderate savestate size reduction.  Build system changes.
2020-05-27 15:23:40 -04:00
nattthebear b0620ca79d PCE tweaks
finish up memory domains
make bram behave like pcehawk, instead of giving it to every game, only give it to games that had it
finish up ppu view
2020-05-27 07:35:51 -04:00
nattthebear 0891e448d7 mednapce - lag flag, some more memory domains, some ppu view work 2020-05-26 21:23:52 -04:00
nattthebear 6da864f4f7 waterbox: fix linker script putting __eh_frame_hdr_start in the wrong place
This was benign, because libunwind will ignore a frame header it doesn't understand (__eh_frame was still fine).  But now there's no spew in the console.  And over the next 50 years it will save a combined 0.3 seconds of cpu time
2020-05-25 21:02:01 -04:00
nattthebear f9b5b9e374 pce - implement most memory domains our existing core does
The mednafen debugger system makes this easy, unfortunately that has a lot of other baggage, so do it this way
2020-05-25 12:49:36 -04:00
nattthebear bc8d298a88 support pce-cd and sgx in nyma 2020-05-25 12:49:34 -04:00
nattthebear 8c9f4e24d8 settings infra 2020-05-25 12:49:34 -04:00
nattthebear 0caa087684 recompile all remaining existing cores that weren't compiled since the linkscript change 2020-05-25 12:49:33 -04:00
nattthebear 69d3dbc35f pce: basic rom loading and playing works 2020-05-25 12:49:33 -04:00
nattthebear 257aa991fd progress, or regress, or somegress 2020-05-25 12:49:33 -04:00
nattthebear 24286be735 Linking and unwinds
The goal here is to provide an unwind implementation that works.  We (probably) don't have a working ldso, so reconfigure libunwind to work without that.  To do that, it needs __eh_frame_* variables which it can addressof to find the locations of .eh_frame and .eh_frame_hdr.  There is no way I could get gold to add these at all, so switch back to ld and add a custom linkscript.  The custom linkscript gives us the opportunity to simplify the savestate memory mapping stuff inside ElfLoader, which should knock a bit of time off of state loads -- those VirtualProtect calls are not cheap.  This also removes a potential source of nondeterminism with certain clever out of range pointers.

Any waterbox core that I didn't recompile for this commit will assert now until it is recompiled, because .wbxsyscall is in the wrong palace.
2020-05-25 12:49:32 -04:00
nattthebear a213423efd recompile libcxx and friends with nopic nopie, and recompile libsnes to test it out
once again, roughly 10% filesize savings.  seems to be about 3% faster too
2020-05-25 12:49:32 -04:00
nattthebear c8d558a275 fix set_thread_area + get_thread_area, recompile libc nopic nopie
So far I've only recompiled gpgx against the new libc, but I get a 10% smaller wbx file, which is cool
2020-05-25 12:49:32 -04:00
nattthebear 0f65351e13 Marching onward 2020-05-25 12:49:31 -04:00
nattthebear 2de9c1d117 Teach yourself C++ in 5000 easy crashes 2020-05-25 12:49:31 -04:00
nattthebear 39c0402bd8 Starting to work on some api stuff
ngp only for now
2020-05-25 12:49:31 -04:00
nattthebear 9f358bc8cc pcfx compiles 2020-05-25 12:49:31 -04:00
nattthebear 9fe80952ff zlib blah blah 2020-05-25 12:49:30 -04:00
nattthebear fa139cbcf8 lynx and wonderswan compile
At least one of these is in need of upstream updates, so maybe we waterbox them, maybe we don't
2020-05-25 12:49:30 -04:00
nattthebear e892dcef82 milestone: vb and ngp compile 2020-05-25 12:49:30 -04:00
nattthebear 311b549b6f Add mednafen sobmodule 2020-05-25 12:44:22 -04:00
nattthebear 7bda234fe1 Port upstream gpgx commit
56f3d64265

Theoretically fixes https://github.com/TASVideos/BizHawk/issues/1390 but I haven't tested it
2020-05-21 10:39:59 -04:00
nattthebear 3b207f54ce 32x - fix crash, fixes #1826
Trigger condition:  Any 32x rom smaller than 4MB in total size that tries to read out of bounds between its actual end and the 4MB limit

I've fixed the emulator crash, but I do not know if such roms are actually mirroring correctly - they probably aren't
2020-05-21 10:04:12 -04:00
nattthebear 21cdf5120b
Revamp waterbox build environment and runtime. (#2027)
Create an all new waterbox build environment:
WSL2 + Ubuntu 20.04 LTS (Other linuxes may work)
Musl libc with waterbox customizations
LLVM's libclang-rt, libunwind, libcxxabi, libcxx
Static linking to elf files

Compared with the old system, this is easier to set up a dev env for and easier to update in the future. The executables are larger but produce smaller savestates due to static linking. The modern toolchain means advanced library features and language features that sometimes appear in some upstream cores will be reusable.
2020-05-20 15:34:24 -04:00
feos e075012b70
Rundum (#2019)
fix #1701
fix #1285

Co-authored-by: nattthebear <goyuken@gmail.com>
2020-05-18 21:11:18 +03:00
nattthebear 00aebc110c
Fix 3 band equalizer in Genesis (#2008)
If you tried setting your gains to 100 in the previous patch, it worked sort of, but I decided to incorporate ekeeke/Genesis-Plus-GX@f6f4556 as well to actually fix it completely, and rescale the setting properly so that 1.0 really is neutral gain.

Fixes #1319
2020-05-14 20:29:02 -04: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
nattthebear 722358c1b1
Fix pokeymans pirate roms on gpgx (#1986)
mapper_32k_w expects to be able to write to rom area, so those roms now need larger savestate space
We could be extra clever and alloc_invisible the space and then restore after loadstate, but this pokeymans garbage doesn't deserve that work
2020-05-06 09:39:51 -04:00
nattthebear 061410a097
Pull in some GPGX fixes from upstream (#1971)
Fixes #1916
Fixes #1968

Pulls in 4017d379e6
Pulls in 147ad71a3c
Pulls in (more or less) a modified form of 200f9a7349
2020-05-02 10:57:42 -04:00
zeromus e7a1638e00 SNES CDL - set DMAData flag for dma reading rather than leaving nonsense flags (fixes #1409) 2020-01-22 22:01:04 -05:00
zeromus c2c526e84b CDL: fix bsnes SGB cdl totally not working (fixes #1344) 2020-01-19 18:43:54 -05:00
zeromus fd960e03fe CDL: add CARTROM logging for many more cases, including superfx (should fix #1597) 2020-01-19 18:43:54 -05:00
zeromus c7dbed306a add build.sh 2020-01-19 18:43:54 -05:00
zeromus a5e8ae88ed add cpu X and M flags to CDL for ExecFirst (fixes #1410, I hope) 2020-01-19 18:43:54 -05:00
zeromus 6577c7b71a makefile to build all waterbox cores 2019-12-24 14:29:28 -05:00
alyosha-tas c6c5217c97 O2Hawk: initial functionality, also remove O2EM 2019-12-17 12:09:58 -05:00
feos 20f10b9311 bsnes: remove embarrassing leftover empty space from trace log
requires rebuilding
2018-05-21 22:25:34 +03:00
nattthebear ebd6408315 add h, v regs to snes regs list 2018-05-18 17:35:28 -04:00
nattthebear fe85175619 Fix Issue #1048: Flags on memory domain in picodrive 2017-11-13 21:12:27 -05:00
adelikat 635c1cdd05 Merge branch 'domainedmemoryhooks' of https://github.com/TASVideos/BizHawk into domainedmemoryhooks 2017-10-29 12:40:52 -05:00
nattthebear 148cadda72 Fix issue #1009: sameboy: stack pointer saved in init state 2017-09-29 18:07:50 -04:00
nattthebear 148e40b504 Fix stack overflow in printer callback 2017-08-29 18:16:02 -04:00
nattthebear 0c3e18efb1 Could you use these things to print like, boobs? 2017-08-29 18:16:02 -04:00
nattthebear d990226a26 human build bot has completed! 2017-08-24 21:10:32 -04:00
zeromus b868c07a10 blind commit: add SMP hooks to bsnes to test hook scoping system (need to build a waterbox to proceed) 2017-08-23 10:08:43 -04:00
nattthebear c001a1add5 saturnus - Port fix from Mednafen Team to fix super tempo 2017-08-20 20:42:07 -04:00
nattthebear 36a84bd0dd Fix savestate hash match issue with Saturnus 2017-08-13 17:21:00 -04:00
nattthebear da88560815 sameboy: Fix some sgb audio issues in donkey kongs. Two problems: One, due to the HLE startup, DK starts writing audio data too early and sticks the SPC in a bad state. Two, the full transfer format for SOU_TRN doesn't seem to be documented anywhere; it's acutally a 0-terminated list of regions to upload; not just a single region. 2017-07-22 14:22:46 -04:00
nattthebear 569730a61b picodrive: region select. closes #929 2017-07-22 10:55:17 -04:00
nattthebear fcfe2b23c9 Pizza Boy makes some interesting attempts, but doesn't stack up against the serious GB cores 2017-07-21 18:23:14 -04:00
nattthebear 38ff289990 Sameboy: Add copyright notices from original repo back. They were inadvertently left out because I copied a subdirectory and not the root directory 2017-07-21 16:44:12 -04:00
nattthebear d640c16cff sameboi: fix lag flag and input callback on non-sgb mode 2017-07-20 18:39:51 -04:00
nattthebear 7880cbabb3 I thought there was more to this vb settings thing. I guess not. 2017-07-20 17:22:40 -04:00
nattthebear 491dc9c1fb sameboy: wbx file 2017-07-19 20:43:44 -04:00
nattthebear 0d6bdc200b sameboy: a bit of savestate optimization 2017-07-19 20:38:19 -04:00
nattthebear a640c53e52 Sameboy: RTC 2017-07-19 20:18:13 -04:00
nattthebear 57ca86710b sameboy: SAVERAMS 2017-07-19 19:49:23 -04:00
nattthebear cf8013af4a sameboy: Add more features for the merciless slave driver 2017-07-19 18:48:11 -04:00
nattthebear 7d2ee60ade sameboy: lag flag / inputcallback 2017-07-19 17:08:48 -04:00
nattthebear 09672a6bf9 SGB: fix bugs in attr chr. Fixes some graphical glitches in Daffy Duck Marvin Missions 2017-07-18 20:45:06 -04:00
nattthebear bfd7337a32 sameboy: SGB support. Mostly accomplished through the power of copy+paste, since we plan on dropping pizza boy 2017-07-18 19:57:53 -04:00
nattthebear 1f89158179 sameboy: input 2017-07-18 18:19:51 -04:00
nattthebear 721a6c0470 sameboy: brip bruffer 2017-07-18 17:46:21 -04:00
nattthebear f7bb894753 sameboy: it's alive! 2017-07-18 16:48:49 -04:00
nattthebear 34e68c589f Sameboy progress 2017-07-18 16:48:49 -04:00
nattthebear 87f7183a27 sameboy: initial commit 2017-07-18 16:48:49 -04:00
nattthebear c31ebe176d gpgx: multidisk? dunno 2017-07-17 18:49:16 -04:00
nattthebear 0389b346f3 pcfx: fuck you mode 2017-07-16 10:01:31 -04:00
nattthebear 05299c618f picodrive: Only honor reset and power buttons on leading edge. Works around bug where resetting every frame broke the emu 2017-07-13 18:06:35 -04:00
nattthebear d305c873bf Gpgx: Backport some changes that were supposed to fix something 2017-07-11 20:52:08 -04:00
nattthebear ab4d81788e TSTHawk: Potentially release ready? 2017-07-11 20:35:01 -04:00
nattthebear 9ab8b50c82 waterbox: Allow special section attributes to put variables directly in sealed or invisible. This can be easier to use than the heaps for adapting some existing code 2017-07-11 18:46:25 -04:00
nattthebear ff58de56a1 TSTHawk: Settings? 2017-07-11 18:12:03 -04:00
nattthebear b7d743e280 TSTHawk: Lag flag detection and InputCallbacks 2017-07-10 20:35:51 -04:00
nattthebear a1bcb90ee6 TSTHawk: Fix interlaced display so it doesn't crash because crashing is bad 2017-07-10 19:12:44 -04:00
nattthebear a9ba725cb3 TSTHawk: Fix less than ideal video output. Whoops! 2017-07-09 14:16:15 -04:00