Coder Social home page Coder Social logo

wagnerp / xenia Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xenia-project/xenia

0.0 3.0 0.0 10.24 MB

Xbox 360 Emulator Research Project

Home Page: http://xenia.jp

License: Other

C++ 87.86% C# 4.03% C 0.16% Assembly 7.50% Batchfile 0.45%

xenia's Introduction

Xenia - Xbox 360 Emulator Research Project

Xenia is an experimental emulator for the Xbox 360.

Pull requests are welcome but the code is in a very high churn state and may not be accepted, so ask in IRC before taking on anything big. Contributions are awesome but the focus of the developers is on writing new code, not teaching programming or answering questions. If you'd like to casually help out it may be better to wait a bit until things calm down and more of the code is documented.

Come chat with us about development topics in #xenia @ irc.freenode.net.

Status

Buildbot: Build status

Project tracker: Stories in Ready Stories in In Progress

Some real games run. Most don't. Don't ask if GTA or whatever runs. Game compatibility list.

Watch A-Train HX running at ~60fps (check YouTube playback quality setting): A-Train HX first run

Disclaimer

The goal of this project is to experiment, research, and educate on the topic of emulation of modern devices and operating systems. It is not for enabling illegal activity. All information is obtained via reverse engineering of legally purchased devices and games and information made public on the internet (you'd be surprised what's indexed on Google...).

Quickstart

Windows 8.1+ with Python 2.7 and Visual Studio 2015 installed:

# Launch the 'Developer Command Prompt for VS2015' command environment
> git clone https://github.com/benvanik/xenia.git
> cd xenia
> xb setup
# Build on command line:
> xb build
# Open Visual Studio (run the 'xenia' project):
> xb edit

When fetching updates use xb pull to automatically fetch everything and update gyp files/etc.

Building

See building for setup and information about the xb script. When writing code, check the style guide and be sure to run clang-format!

Contributors Wanted!

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.

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
  • Add input drivers for PS4 controllers (or anything else)

See more projects good for contributors. It's a good idea to ask on IRC/the bugs before beginning work on something.

FAQ

Can I get an exe?

NO. I am not releasing binaries - at least not for awhile. Don't be an idiot and download a binary claiming to be of this project. In fact, don't be an idiot and download any binary claiming to be an Xbox 360 or PS3 emulator from any source, especially not YouTube videos and shady websites. Come on people. Jeez.

What kind of machine do I need to run this?

You'll need 64-bit Windows 8.1 or 10 with a processor supporting at least AVX - in other words, Intel Sandy Bridge or newer. In general if you have to ask if your machine is good 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. OSX will likely remain unsupported until Apple supports OpenGL 4.3 or higher.

What kind of GPU do I need?

OpenGL 4.5 support and drivers are required. This includes Nvidia's GeForce 400 series and above, and AMD's 5000 series and above. To get full speed and compatibility Vulkan/D3D12 may eventually be required.

Have you heard of LLVM/asmjit/jitasm/luajit/etc?

I get asked this about once a day. Yes, I have heard of them. In fact, I spent a long time trying them out: LLVM, libjit, asmjit. They don't work for this purpose. I understand if you disagree, but please understand that I've spent a significant amount of time on this problem.

Why did you do X? Why not just use Y? You should use Y. NIH NIH NIH!

Trust that I either have a good reason for what I did or have absolutely no reason for what I did. This is a large project that I've been working on for almost 4 years and in that time new compilers and language specs have been released, libraries have been created and died, and I've learned a lot. Insulting me will get you ignored.

Hey I'm going to go modify every file in the project, ok?

I welcome contributions, but please try to understand that I cannot accept changes that radically alter the structure or content of the code, especially if they are aesthetic and even more so if they are from someone who has not contributed before. This may seem like common sense, but apparently it isn't. If a pull request of this nature is denied that doesn't necessarily mean your help is not wanted, just that it may need to be more carefully applied.

I have a copy of the XDK. Do you want it?

No.

(some argument over an unimportant technical choice)

In general: 'I don't care.' That means I either really don't care and something is they way it is because that was convienient (such as GYP, which I am familiar with), or that I don't care because it's not material to the goal of the project. There are a million important things that need to be done to get games running and going back and forth about unimportant orthogonal issues does not help. If you really do have a better way of doing something and can show it, do so.

Here's a short list of common ones:

  • 'Why Python 2.7? 3 is awesome!' -- agreed, but git-clang-format needs 2.7.
  • 'Why this xb stuff?' -- I like it, it helps me. If you want to manually execute commands have fun, nothing is stopping you.
  • 'Why not just take the code from project X?' -- the point of this project is to build something better than previous emulator projects, and learn while doing it. The easy way is almost never the best way, and is never as fun.

xenia's People

Contributors

benvanik avatar gibbed avatar drchat avatar x1nixmzeng avatar sephiroth99 avatar inolen avatar shuffle2 avatar hlide avatar rlabrecque avatar fire30 avatar 0xdeafcafe avatar husono avatar wtfaremyinitials avatar zangetsu38 avatar espes avatar

Watchers

James Cloos avatar Peter Wagner avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.