BizHawk/waterbox
Morilli 00060c3ffa BSNESv115: remove autoJoypad condition in lag detection code
this fixes lag frame detection in Super Bomber Man (Japan) and didn't cause any regression in my limited testing
2023-01-08 22:29:12 +01:00
..
ares64 more proper fix for compilation issue with some gcc versions with ares 2022-12-16 18:53:33 -08:00
bsnescore BSNESv115: remove autoJoypad condition in lag detection code 2023-01-08 22:29:12 +01:00
emulibc Handle reentrant calls in waterbox (#3007) 2021-11-23 14:20:12 -05:00
gpgx GPGX: add setting to disable per-line sprite limit 2022-11-22 14:44:39 +01: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 Add support for more SGB firmware + Use homebrew bootroms instead of bsnes' illegally provided official ones (#2837) 2021-07-14 12:48:02 -05:00
llvm-project@eaae6dfc54 Move llvm to submodule 2020-06-19 20:56:17 -04:00
mame-arcade update mame to 0.250 2022-11-30 20:22:04 -08:00
melon updae melonds, rework the audio so it is internally resampled with blip_buf (also allows for avoiding some copying, also corrects some minor audio defects) 2022-12-16 23:03:28 -08:00
musl@0399bd4194 Pull musl submodule 2022-09-30 05:32:19 +10:00
nyma Update C++ FlatBuffers lib, check in new codegen, and rebuild cores 2022-09-30 05:33:18 +10:00
picodrive 32x - fix crash, fixes #1826 2020-05-21 10:04:12 -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
tic80 tic80 settings for enabling/disabling controllers, proper mnemonics 2022-08-19 23:43:55 -07:00
uzem milestone: vb and ngp compile 2020-05-25 12:49:30 -04:00
virtualjaguar Revert ""cheat" around the lack of pipeline emulation, delaying bankswitches/imask clears (note: branching resets the pipeline)" 2022-10-04 18:10:42 -07:00
waterboxhost Fix waterboxhost for version 1.60.0-nightly 2022-01-29 00:22:54 +01: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 BSNES Memory Domain Fixes (#3423) 2022-10-28 19:22:49 -07: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 Update make-all-cores.sh 2022-10-22 03:18:59 +02:00
readme.txt Zstd Compression (#3345) 2022-08-09 23:33:28 -07: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 zstd
	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 melon && 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 nyma && make -f shock.mak install
	cd nyma && make -f vb.mak install
	cd picodrive && make install
	cd snes9x && make install
	cd tic80 && make install
	cd uzem && make install