for the camhack to work we have to save a state, hack memory, advance twice to see the changes, then load the state to prevent desync. since we can omit the framebuffer in savestates, loading them can happen without updating the screen, so the hacked camera remains visible.
advancing 2 frames automatically is done like tastudio does it when it seeks to a frame, only from lua now.
and the most questionable part is "invisible emulation", which is how Gens calls this IIRC, when everything that can distract or slow us down is skipped: sound, video, tools updates.
new lua functions:
- client.invisibleemulation()
- client.seekframe()
* for a test, mGBA core uses fake video and audio buffers and renders to them when we want to "skip" rendering. proper setup would involve actually skipping rendering those inside the core.
* allow disabling video and audio updates for gpgx too (proper approach, no fake buffers involved)
* add the script for Sonic Advance
This doesn't compile because of Input.cs, didn't know what to do. Also search for Merge TODO for some commenting things that probably need to be deleted
# Conflicts:
# BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj
# BizHawk.Client.EmuHawk/CustomControls/InputRoll.Drawing.cs
# BizHawk.Client.EmuHawk/CustomControls/InputRoll/InputRoll.cs
# BizHawk.Client.EmuHawk/Program.cs
# BizHawk.Client.EmuHawk/tools/Lua/LuaConsole.cs
# BizHawk.Client.EmuHawk/tools/TAStudio/TAStudio.cs
# BizHawk.Client.EmuHawk/tools/ToolHelpers.cs
# BizHawk.Client.EmuHawk/tools/ToolManager.cs
# BizHawk.Client.EmuHawk/tools/TraceLogger.Designer.cs
# BizHawk.Client.EmuHawk/tools/TraceLogger.cs
# BizHawk.Client.EmuHawk/tools/Watch/RamSearch.Designer.cs
# BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs
# BizHawk.Common/BizInvoke/DynamicLibraryImportResolver.cs
* 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 ...;`
Adds a small script which, when run, only allows input to P1's controller if both P1 and P2 holds down the specific button simultaneously. Also useful since it demonstrates joypad manipulation.