Commit Graph

97 Commits

Author SHA1 Message Date
Dan B b962f06e07 Fix quicknes 2019-01-06 12:16:28 -05:00
James Groom 42764f0019 Add preliminary Unix compatibility (using Mono; resolves #1384) (#1380)
* Move PlatformSpecificLinkedLibs and implementations to common and rename
* Specify file ext. at LoadPlatformSpecific call site
* Move Client.Common.Global.RunningOnUnix to PlatformLinkedLibSingleton
* Inline var Resolver
* Use PlatformLinkedLibManager internally
* Move plugin load check to LinkedLibManager, use LinkedLibManager
* Interpolate
* Return exit code from dlclose/FreeLibrary
* Skip all calls to externs in BlipBufDll when using mono
* Use PlatformLinkedLibManager in SevenZipLibraryManager
* Add expected return value to workaround (from testing on Win32)
* Remove ".dll" from DllImport attr, remove temporary workaround, see desc.
The library can be built by changing the output file name in
`.../blip_buf/Makefile` to `libblip_buf.so`, and running `make`. It will be
loaded if placed in the `.../output` folder.
* Remove unused code, add TODO (this class is req. for Waterbox.PeWrapper)
The TODO is to [rewrite with
C#](https://docs.microsoft.com/en-us/dotnet/standard/io/memory-mapped-files)
instead of importing from `kernel32.dll`.
* Update OpenTK again but better (for #1384)
* Add Mono run script
* Add libblip_buf.so (temporary)
Temporary because it should be a separate package which BizHawk depends on.
* Add distro detection, add "already running" and "unknown distro" messages
* Gray-out Lua Console on Unix
* Extract superclass from EmuLuaLibrary, add shell implementation for Unix
* Specify libdl version, Fedora doesn't have the versionless symlink
* Remove empty `ToolStripMenuItem`, null `Text` caused crash on Unix
* Transform OpenTK keyboard input into a `List<KeyEvent>` and read that
Also fixes crash on rebind
* Remove debug `using ...;`
2019-01-04 01:50:55 +03:00
nattthebear e70549667d Fix a lot of mappers in quicknes that had been accidentally broken since 2016, including mmc2, mmc4, vrc6 2018-02-24 15:19:26 -05:00
alyosha-tas eaf2ff4df6
QuickNES: Blacklist Joe and Mac
Resolves #993
2017-11-03 14:08:57 -04:00
adelikat c6e0e9fa57 Rename CoreAttributes to CoreAttribute as to not be a bad person 2017-07-12 14:10:55 -05:00
nattthebear 1292b27163 Add some draft work for supporting sysv <-> msabi interop. I wonder if we'll ever use this? I'd put it on a separate branch but it would be merge hell. 2017-06-18 08:51:09 -04:00
adelikat 1dae91e6a8 clean up core constructors - consistent parameter casing, and put them at the top of the class 2017-05-05 19:05:36 -05:00
adelikat 62a13d961d Move VsyncNum and VsyncDen out of CoreComm and into IVideoProvider 2017-05-05 11:21:37 -05:00
adelikat 698c6741ae Refactor IEmulator and remove the IController property, instead pass it as a paramter to the FrameAdvance() method 2017-05-01 20:09:11 -05:00
adelikat b3ad3ce6ba Move BizInvoke files from Emulation.Common to Common 2017-05-01 17:30:42 -05:00
adelikat ded1c2d7b7 Break off BoardName from IEmulator into a separate IBoardInfo service 2017-04-30 21:01:54 -05:00
adelikat 3192cc70ae slight refactor to IEmulator - make the IController property set only to more clearly express the client -> core relationship 2017-04-26 19:09:00 -05:00
nattthebear 7d60049b86 remove leftover debuggign cruft 2017-04-21 22:04:09 -04:00
nattthebear f3f9ad8e9b honk 2017-04-21 21:59:04 -04:00
alyosha-tas 685de44861 QuickNES fix Ms. Pac Man (Tengen)
Really it's the iNES header that is wrong, but QuickNES doesn't know this so adjust the file before sending it to QuickNES to boot.
I imagine there are other games that would be fixed in this manner and thus run in QuickNES.
2017-03-02 20:05:20 -05:00
alyosha-tas da2d72a953 Add Cybernoid to QuickNES Blacklist 2016-12-20 10:21:42 -05:00
adelikat 72a59087b5 Use the IController indexing property less in preparation for removing it from the interface. Replaced with its more explicity counter-part .IsPressed() 2016-12-14 12:42:15 -06:00
adelikat b73a500d6b Major sound provider refactor. Create a unified interface ISoundProvider, that is an IEmulator service and break it off of IEmulator. IAsyncSoundProvider was kept as a shim for now, for legacy cores that were inherintly async. 2016-12-11 11:15:00 -06:00
adelikat b697110098 Rename ISoundProvider to IAsyncSoundProvider to more accurately describe what the service does 2016-12-09 10:24:43 -06:00
adelikat b6dcc8d735 Quicknes - blacklist another VS rom 2016-11-10 18:25:22 -06:00
adelikat 194b83d0b1 quicknes - blacklist some VS roms 2016-11-07 19:44:47 -06:00
adelikat b9f4d20de9 NES - support 800-in-1 2016-10-28 16:52:29 -05:00
adelikat b931e79052 blacklist a rom in quicknes, add a gamedb override for a random hacked rom 2016-10-28 07:52:47 -05:00
adelikat 3e925a13a8 Quicknes - black list some more roms known to not work with it (but work in neshawk) 2016-10-25 17:14:52 -05:00
adelikat ed5b4120a5 Quicknes - blacklist a whole bunch of roms that don't run for various reasons, so that they fallback to NesHawk 2016-10-13 17:52:29 -05:00
nattthebear 1c4c5fb4a3 Rough in some code for BizInvoke in mono 2016-02-20 11:54:44 -05:00
nattthebear 96fc7c9ec1 Add experimental interop library to quicknes. Still needs work... 2016-02-17 20:18:01 -05:00
nattthebear 6f8bcc2be3 trace for quicknes 2016-01-30 13:47:14 -05:00
adelikat 254263c1df For QuickNES to bail out on Pro Action Replay (E) (REVA), since it can't do PAL 2015-08-24 21:24:59 -04:00
adelikat e841707502 Quicknes - throw an UnsupportedGameException on Paperboy (U) because input will not work for some reason, this allows it to fallback to NesHawk automatically 2015-07-18 08:58:52 -04:00
adelikat 3867a890fc NES - fallback from quicknes to neshawk for Bill and Ted's Excellent adventure since quicknes is not able to run it 2015-04-12 19:17:31 +00:00
adelikat e8e4c74962 QuickNES - break up into separate files 2015-01-16 01:38:47 +00:00
goyuken 82fcd0bc5e refactor IVideoProvider into a service. uses in mainform and friends are still hacky 2015-01-14 22:37:37 +00:00
adelikat fbdb29b64c refactor IMemorydomains to be a domain list instead of having a domain property, refactor cores to register an IMemoryDomains instead of being one 2015-01-14 21:55:48 +00:00
adelikat d62ba4e2b4 Change IMemoryDomains to have an IMemoryDomainList instead of a MemoryDomainList, this is an incremental step into eventually having IMemoryDomains take over the properties of IMemoryDomainList, still todo: reduce the amount of needed functionality in IMemoryDomainList from old and not good code 2015-01-13 22:18:07 +00:00
adelikat efc8d26ac7 quicknes - default to true for Clip Top and Bottom 2015-01-05 20:00:51 +00:00
adelikat 0f2197cec1 Break off ITracer from IDebuggable, rename to ITraceable and make it an IEmulatorService, refactor things accordingly 2014-12-23 01:58:12 +00:00
goyuken d28d5e5a9b quciknes: enforce objectdisposedexception so as to avoid accessviolations 2014-12-21 17:40:06 +00:00
adelikat ffdeb618f7 IDebugable - add a CanStep() method, and implement it in all IDebuggable implementations 2014-12-20 13:29:57 +00:00
adelikat a8116297a0 Rename Register to RegisterValue 2014-12-20 13:16:15 +00:00
adelikat 7bebb66589 IDebuggable - refactor GetCpuFlagsAndRegisters to be IDictionary<string, Register> where Register is a value and a bitsize 2014-12-20 03:19:33 +00:00
goyuken d305b2f538 partially functional ppu viewing tools for quicknes 2014-12-17 03:27:44 +00:00
adelikat d08fb39cb8 Refactor IDebuggable StepInto/Over/Out methods into void Step(StepType type); 2014-12-15 22:19:10 +00:00
adelikat 725a8fb092 Add StepInto(), StepOver(), StepOut() to IDebuggable, have all cores implement it with unimplemented dummy functions 2014-12-14 18:58:16 +00:00
adelikat 9fc46f6764 mark cores that would not ever use IDriveLight, a bit silly, but it keeps the feature list clean and that's currently my only source of sanity with keeping up with what needs to be done 2014-12-12 01:58:12 +00:00
adelikat 0b84beec88 Move MemoryCallbackSystem from CoreComm to IDebuggable and refactor accordingly, Lua - tell the user when memory callbacks are not available for a given core 2014-12-05 01:56:45 +00:00
adelikat 309088211c Move TraceBuffer from CoreComm to IDebugable and refactor accordingly 2014-12-05 00:05:40 +00:00
adelikat d8a204572d Add an IServiceProvider interface and make it a property of IEmulator, the purpose of this provider is to provide IEmulatorServices upon request. Make BasicServiceProvider and have all cores use it for now. BasicServiceProvider will return the core itself if the core itself is the requested type. He will also be able to return nested types (code not finished). Wired this up to the HasSavestates extension method (a method that has minimal value now) as a proof of concept. 2014-12-04 03:38:30 +00:00
adelikat a07263c04e Move InputCallbackSystem from CoreComm to IInputPollable, and refactor all cores accordingly. Lua - OnInputPoll() - log to the user when attemping to add a callback of this type to a core that has not implemented input callbacks. Mark all unmanaged cores' implementations of the InputCallbackSystem as FeatureNotImpleented, won't have any effect on functionality, but will help us keep track of the fact that they still have a bit of work to do. Still todo: ActiveChanged event handler on the base implementation of IInputCallbackSystem 2014-12-04 00:43:12 +00:00
adelikat a83d714c42 Break off IsLagFrame and LagCount from IEmulator and put into its own interface IInputPollable, and refactor cores as necessary. EmuHawk - account for the possibility that a core is not an IInputPollable, and do things like disable the lag counter menu item. Still some front end todos. Also still todo, move the InputCallbackSystem from CoreComm to IInputPollable 2014-11-30 20:29:30 +00:00