BizHawk/waterbox
Moritz Bender 5d20862f26
Implement bsnes version 115 as a new core (#2740)
* 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>
2021-05-14 20:06:13 -05:00
..
bsnescore Implement bsnes version 115 as a new core (#2740) 2021-05-14 20:06:13 -05:00
dobie ps2 - add fenv support and recompile dobie with it 2020-08-06 07:28:24 -04:00
emulibc Waterbox: Stack Marshalling (#2209) 2020-07-07 17:48:12 -04:00
gpgx Use alloc_plain to allocate the md_cart space so it will be writable if needed 2020-08-07 07:17:14 -04:00
libco Implement bsnes version 115 as a new core (#2740) 2021-05-14 20:06:13 -05:00
libcxx Fix executable bits on some wbox scripts 2021-03-20 08:11:48 +10:00
libsnes Implement bsnes version 115 as a new core (#2740) 2021-05-14 20:06:13 -05:00
llvm-project@eaae6dfc54 Move llvm to submodule 2020-06-19 20:56:17 -04:00
musl@76d5e7a4b0 Pull musl submodule, complete script refactor and update readme 2021-03-20 08:11:48 +10:00
nyma Update output path of NymaTypes shell script 2021-04-10 08:49:07 +10:00
picodrive 32x - fix crash, fixes #1826 2020-05-21 10:04:12 -04:00
sameboy waterbox sgb sameboy - fix stereo audio 2020-06-06 07:55:21 -04:00
snes9x@172f73b711 snes9x - take advantage of new waterbox change tracking to fix special chip games 2020-06-03 19:25:58 -04:00
uzem milestone: vb and ngp compile 2020-05-25 12:49:30 -04:00
vb milestone: vb and ngp compile 2020-05-25 12:49:30 -04:00
waterboxhost Copy to Assets and output when building wbox cores and host 2021-04-28 16:06:41 +10:00
.gitignore Revamp waterbox build environment and runtime. (#2027) 2020-05-20 15:34:24 -04:00
Notes on Debugging.md Update notes on debugging 2021-04-09 20:59:22 -04:00
common.mak Copy to Assets and output when building wbox cores and host 2021-04-28 16:06:41 +10:00
linkscript.T waterbox: fix linker script putting __eh_frame_hdr_start in the wrong place 2020-05-25 21:02:01 -04:00
make-all-cores.sh Rework and fix up invisible allocations and sound/video format init in nyma cores. 2020-09-07 11:08:09 -04:00
readme.txt Pull musl submodule, complete script refactor and update readme 2021-03-20 08:11:48 +10:00

readme.txt

This is the native side of the experimental "waterbox" project for bizhawk.
It consists of a modified musl libc, and build scripts to tie it all together.


1. Set up your platform.
	The prescribed possibilities are not exhaustive. Other platforms may work.
	Here are the supported alternatives:

	PREPARE A WIN10 WORKSTATION:
	Using the guidance at (https://docs.microsoft.com/en-us/windows/wsl/wsl2-kernel & https://docs.microsoft.com/en-us/windows/wsl/install-win10):
	1. Install WSL2 
	2. Install Ubuntu 20.04 LTS (https://www.microsoft.com/en-us/p/ubuntu-2004-lts/9n6svws3rx71)
	3. Clone the bizhawk repository. You can use it through /mnt or /home if you really like 
	4. Install build tools: sudo apt-get update && sudo apt-get install gcc g++ make cmake llvm
	4b. (Note for future work: ideally the llvm installed above would not be required)

	PREPARE A WIN10 VM:
	1. Make sure the VM has "yo dawg" virtualization enabled on the guest. For example in VMWare Workstation, "Virtualize Intel VT-X/EPT or AMD-V/RVI"
	2. Follow WIN10 Workstation preparation guide
	3. If you wish to clone bizhawk on your host system (slower but maybe more convenient), you can use a VMWare shared folder and: `sudo mount -t drvfs Z: /mnt/z -o rw,relatime,metadata,uid=1000,gid=1000` (WSL won't auto-mount the shared drive)

	PREPARE A LINUX WORKSTATION:
	1. TODO. This should work, but no one has tested it yet

2. Clone bizhawk sources
	* Make sure git's core.autocrlf is set to false, as the alternatives cause git to modify the line endings in .sh-looking files which WILL break the build process, from the very first step.
	* This is NOT git's default. You will need to change it!! Go ahead and set it false globally permanently, since do you really want git modifying files?
	* Make sure you have initialized and updated the needed submodules in the waterbox directory (for example, /waterbox/llvm-project and /waterbox/musl, etc.)

3. Consider whether it is time to update your build environment (i.e. sudo apt-get upgrade). We are not prescribing versions for build environment tools (gcc, etc.) so you may as well upgrade everything to the latest if you're making builds for other people.

4. Build libraries.
	cd musl
	./wbox_configure.sh
	./wbox_build.sh
	cd ../emulibc
	make
	cd ../libco
	make
	cd ../libcxx
	./do-everything.sh
	cd ..

5. If errors happen in the libcxx part, it can be due to musl mismatching your current build environment. This happens when your build environment is updated; musl does not track its build dependencies correctly. do `make clean` on musl (and delete the non-checkedin directories just to be safe) and try again from the musl step.

6. Some additional preparation is required before all the cores can be built:
	cd nyma && ./build-and-install-zlib.sh

7. You are now ready to start building cores. Each supports `make` and `make install`, as well as `make debug` and `make install-debug` for local development.  From the root directory, the following should all be valid:
	cd gpgx && make install
	cd libsnes && make install
	cd nyma && make -f faust.mak install
	cd nyma && make -f ngp.mak install
	cd nyma && make -f turbo.mak install
	cd nyma && make -f hyper.mak install
	cd nyma && make -f pcfx.mak install
	cd nyma && make -f ss.mak install
	cd picodrive && make install
	cd sameboy && make install
	cd snes9x && make install
	cd uzem && make install
	cd vb && make install