diff --git a/.gitignore b/.gitignore index e41172231..5f95bcf29 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,7 @@ tmtags *.py[co] .coverage +*.o # ============================================================================== # Logs and dumps @@ -49,6 +50,7 @@ tmtags npm-debug.log private/ +*.trace # ============================================================================== # Build system output @@ -70,3 +72,16 @@ build-out/ build-gen/ build-bin/ build-test/ + +# ============================================================================== +# Local-only paths +# ============================================================================== + +.vagrant +attic/ +third_party/binutils/binutils-2.24.tar.gz +third_party/binutils/bin/ +third_party/binutils/powerpc-none-elf/ +third_party/binutils/share/ +third_party/binutils/binutils* +third_party/vasm/ diff --git a/.gitmodules b/.gitmodules index cfeadeb7d..58ca605a0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,3 @@ -[submodule "third_party/ninja"] - path = third_party/ninja - url = https://github.com/martine/ninja.git -[submodule "third_party/gyp"] - path = third_party/gyp - url = https://github.com/benvanik/gyp.git [submodule "third_party/gflags"] path = third_party/gflags url = https://github.com/benvanik/gflags.git @@ -13,12 +7,15 @@ [submodule "third_party/beaengine"] path = third_party/beaengine url = https://github.com/benvanik/beaengine.git -[submodule "third_party/wslay"] - path = third_party/wslay - url = https://github.com/benvanik/wslay.git -[submodule "third_party/jansson"] - path = third_party/jansson - url = https://github.com/akheron/jansson.git [submodule "third_party/xbyak"] path = third_party/xbyak url = https://github.com/herumi/xbyak.git +[submodule "third_party/gyp"] + path = third_party/gyp + url = https://chromium.googlesource.com/external/gyp +[submodule "third_party/ninja"] + path = third_party/ninja + url = https://chromium.googlesource.com/external/martine/ninja +[submodule "third_party/catch"] + path = third_party/catch + url = https://github.com/philsquared/Catch.git diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..0434abef8 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,23 @@ +# Make Travis use docker (for faster builds, in theory) +sudo: false + +language: cpp +compiler: + - clang + # - gcc don't really care + +os: + - linux + - osx # beta only + +# Run setup to build ninja/gyp/etc and actually build xenia. +before_script: + - travis_retry ./xenia-build.py setup + - ./xenia-build.py build --debug alloy-test + - ./xenia-build.py build --debug alloy-ppc-test + +# Run test suite. +script: + - ./build/xenia/Debug/alloy-test + - ./build/xenia/Debug/alloy-ppc-test --runtime_backend=ivm + - ./build/xenia/Debug/alloy-ppc-test --runtime_backend=x64 diff --git a/README.md b/README.md index e0460e25c..0efc82d1a 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ that. ## Status -* Some code runs. [Insert any game name here] doesn't. +* Some code runs. [Insert any game name here] doesn't. Except Frogger 2. Yep. * Asserts! Crashes! Hangs! Blank screens! ## Disclaimer @@ -35,7 +35,7 @@ legally purchased devices and games and information made public on the internet Windows 8.1+: - # install python 2.7 and VS2013 + # install python 2.7 and VS2013/2015 git clone https://github.com/benvanik/xenia.git cd xenia xb setup @@ -47,7 +47,8 @@ update gyp files/etc. ## Building See [building](docs/building.md) for setup and information about the -`xenia-build` script. +`xenia-build` script. When writing code, check the [style guide](docs/style_guide.md) +and be sure to clang-format! ## Contributors Wanted! @@ -55,19 +56,11 @@ Have some spare time, know advanced C++, and want to write an emulator? Contribute! There's a ton of work that needs to be done, a lot of which is wide open greenfield fun. -That said, the project is currently undergoing a lot of major foundational -development and core pieces are changing rapidly and poorly documented. -It'll be difficult to casually hack things in unless you know what you're -doing. - Fixes and optimizations are always welcome (please!), but in addition to that there are some major work areas still untouched: * Help work through missing functionality/bugs in game [compat](https://github.com/benvanik/xenia/issues?labels=compat) -* Write an [OpenGL driver](https://github.com/benvanik/xenia/issues/59) -* Add input drivers for [OSX](https://github.com/benvanik/xenia/issues/61) and [PS4 controllers](https://github.com/benvanik/xenia/issues/60) (or anything else) -* Start [hacking on audio](https://github.com/benvanik/xenia/issues/62) -* Build a [virtual LIVE service](https://github.com/benvanik/xenia/issues/64) +* Add input drivers for [PS4 controllers](https://github.com/benvanik/xenia/issues/60) (or anything else) See more projects [good for contributors](https://github.com/benvanik/xenia/issues?labels=good+for+contributors&page=1&state=open). It's a good idea to ask on IRC/the bugs before beginning work on something. @@ -91,15 +84,13 @@ enough to run games at a decent speed the answer is no. ### What about Linux/OSX? The project is designed to support non-Windows platforms but until it's running -games it's not worth the maintenance burden. If you're a really passionate -Linux/OSX-based developer and want to help out, run Bootcamp/VM and contribute -an OpenGL 4 driver - that'll be the most difficult part in porting to -non-Windows platforms. +games it's not worth the maintenance burden. OSX will likely remain unsupported +until Apple supports OpenGL 4.3 or higher. ### What kind of GPU do I need? -DirectX 11 support is required. To get full speed and compatibility Mantle may -be required in the future. +OpenGL 4.5 support and drivers are required. To get full speed and compatibility +GL-next may eventually be required. ### Have you heard of LLVM/asmjit/jitasm/luajit/etc? diff --git a/Vagrantfile b/Vagrantfile new file mode 100644 index 000000000..c659c6438 --- /dev/null +++ b/Vagrantfile @@ -0,0 +1,46 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +VAGRANTFILE_API_VERSION = "2" + +$script = < - - - - - - - -
-