* update melon
* frontend work
* make this work (i think?)
* fucking merge conflicts
* bleh
* hack up DSi support, very hardcoded atm, but at least states are reasonable
* add IS_DSI load flag
* frontend work bleh
* oops forgot to push
* ok fine apparently that doesnt display right
* oops
* prevent zealous release screen calls, DSi firmware seems to not like it?
* support for loading DSiWare title
* dsiware
* oh right this bullshit
* oops
* will this work
* why the fuck was this signed
* 0 out these hashes, these are also unique per console, no hope verifying these
(or `Console.WriteLine` if it's in `#if DEBUG`)
bonus wtf: 2 calls in Database were to `WriteLine(string, string)` overload, not
the intended `WriteLine(string, params object[])` overload
* add support for more SGB firmware
* replace illegally provided bootroms with legal homebrew bootroms
* let's swap these with homebrew bootroms too
* add builds
* this should probably be preferred
* Fix incorrect assignment
* Fix whitespace changes to Designer files
Co-authored-by: Morilli <35152647+Morilli@users.noreply.github.com>
Co-authored-by: YoshiRulz <OSSYoshiRulz@gmail.com>
* Slam all this shit in here i don't care
* no lzma pls
* un-hack things that i hacked earlier (closer to bsnes source now)
* remove more unused files
* remove more files
* get some stuff working on this weird ass branch
* do this to get actual video (holy shit it works) while palette is incorrect
* make video look correct and hopefully fix stack waterbox allocation size uh ?
* Move the new bsnes core to its own dir as a new core and get input working
* remove leftover files from old bsnes
* fix some shit for now
* make lag frame detection work
* Improve cartridge loading to hopefully make sgb work (haven't tested)
- also changes some audio buffer stuff, might be better or worse than before idk
- need to figure out the saveram stuff
- path requests might actually completely fail atm, no idea how to verify that
* refactor to use a switch instead of some weird array with function pointers
- and implement snes_get_mapper, might be helpful or smth idk
* implement entropy c++-side and delete all this useless code holy
* delete dumb unnecessary code
* implement snes_peek_logical_register c++-side
* normalize all indentation
* attempt to properly support sharprtc and epsonrtc data loading and writing
* Duplicate winforms code to add entropy support c#-side and implement layer_enable functionality
The duplicated code is just so i can have a proper window for the new bsnes core. I do not like duplicating code like this, so this should be improved if possible
* Checkpoint for the start of getting rid of the ugly api wrapper stuff
* Next checkpoint for a full api refactor
* bullshit denied
just no.
every file is either copied or manually edited or written from scratch etc.
do not. force. one indent_style on every single file.
It just does not work.
* remove the entire eMessage_CMD handling and convert to native function calls
* general improvements regarding functionality
- adds hotfixes and fast_ppu core options
- add back the alwaysDoubleSize setting
- use bsnes's own serialize function for savestating now
- generate and use the color palette only in c# cause it doesn't need to be on the c++-side
- and more cleanup like always
* somewhat implement IMemoryDomains
* Implement trace logger and cleanup more unused stuff
* Implement ISaveRam, fix controller mapping for TAStudio and remove the pwrap stuff
* Fix ISaveRam, add a controller configuration box for the new core, (hopefully) fix controller inputs
- also differentiates BG prio0 and prio1 now (with options for it)
- some minor irrelevant edits in bsnes source
* Cleanup some more and optimize a bit
* Support firmware loading and make sgb work (hopefully)
* Remove all unused files
* Add back CropSGBFrame option and cleanup snes_video_refresh logic
* Some hopefully sensible changes
* One more cleanup pass
* Change to new PortedCore attribute
necessary after the changes in 98b07c42d5
Co-authored-by: nattthebear <goyuken@gmail.com>
* removed CoreAttribute.DisplayName (using IEmulator.SystemId instead)
* fixed ToolManager checking for "(Experimental) " prefix on names of unreleased
cores in ToolAttribute.UnsupportedCores
* corrected display name of UZE sysID to "Uzebox" (was "uzem")
* disabled auto-generated accelerators (&A -> Alt+A) on "current system" menu in
MainForm menubar because they could conflict with hardcoded ones
still no cores which support it, "Debug" is still hardcoded, still uses holding
Fast Forward hotkey to trigger
no idea how OverrideAdapter, or the IInputAdapters, or the Bk2/BkmController
will work, I've just thrown NotImplementedException from those
Open `Config` > `Controllers...` with any rom loaded and go to the last tab.
A "Debug" virtual channel is hardcoded, and will be present on every core.
As with the previous commit, holding Fast Forward causes this channel to fire
and it will be passed through to a bound host gamepad.
The prescale slider works. Virtual channels with a player number prefix also
work, but the single "Debug" channel without a prefix is hardcoded.
Caveats: Reopening the config dialog doesn't load the host channel back into the
combobox. It will save to config correctly.
* `Game Gear` was used instead of `GGL` for linked GG multi-disk bundles and
core constructor (I assume the latter was a hack to fix loading bundles made
with the former bug in effect)
* `Arcade` was used instead of `MAME` in rom loading ("Arcade" is also assigned
to an out param in the MAME ctor but I assume that's an intentional placeholder)
* `Saturn` was used instead of `SAT` in `GameSharkDecoder.CheatDomainName`,
making it non-functional (a comment said it was probably incorrect, so I'm
assuming that if it runs something will break and putting it in #if false)
* `G7400` was only used in firmware IDs, replaced with `O2`
* `Vectrex` was only used in firmware IDs, replaced with `VEC`
* `uzem` (core name) was used instead of `UZE` for MainForm title lookup, making
it non-functional
* `DNGP` doesn't exist
* fix desc+info of bad PSX BIOSes
* set FirmwareFile.Bad via param on File method
* use #if false instead of comment for what I assume is a debug BIOS for A7800
* I think a single '!' boi will make that one take precedence
* remove duplicate NDS BIOSes which were commented-out
Change the status of alternate GB/C firmware options to unacceptable. Quoting from CasualPokePlayer "Gambatte is definitely not emulating those cpus [dmg0 and cgb0]. So you would end up with quirks of newer cpus being combined with bootroms only present in older cpus."
Also fix what looks to be a longstanding typo where the PCFX BIOS v1.01 was not being properly detected.
* Cleanup NormalizeAxes
no behaviour change yet
* Use a more sensible scaling algorithm in NormalizeAxes
* Replace AxisSpec.FloatRange with AxisSpec.Range (ints)
* Use 0..255 for GBA light sensor, and set its Mid to 0 (fixes#2323)
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.
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
* 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
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.
Updated the msx bios filename based on mame 0.221 and cbios0.29a, this way it fixes the filename conflict while using the feature "Organize" through Firmware Manager.
Couldn't figure it out about the bios_test origin, so I kept that one unchanged.
The existing API was such that BulkPeekUint(Start: 20, EndInclusive: 39) would actually read from the address range [20, 100) instead of [20, 40). That's completely broken. The hex editor, the only consumer of the API, made the same exact mistake in reverse so the problem wasn't immediately apparent, but it was a giant land mine waiting to happen. Fix them both.
If a particular core instance doesn't use up too much memory, then we don't charge the host OS for that memory.
The strange thing here is that, testing locally on Windows 10, we were already getting the desired semantics even with SEC_COMMIT and not SEC_RESERVE. This commit is still important because:
1) Windows might be providing me an optimization it can't guarantee,
2) Linux might not be able to provide the same optimization
3) In any event, this patch also trims down xor snapshots to match the actual needed size.
Add 'nyma' project
The goal is to eventually update all of our Mednafen cores. For now, there is a work in progress import of the Mednafen pce core. Basic gameplay with hucard, turbocd, and supergrafix is supported, but the core is not complete yet.
This actually makes saveram saving and loading somewhat slower on all waterbox cores, but whatever... it's more important to be simple and readable in this code than fast.
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.