Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
marinesciencedude committed Feb 10, 2024
2 parents 623f2b2 + 2f07dc2 commit 1530890
Show file tree
Hide file tree
Showing 36 changed files with 1,964 additions and 1,473 deletions.
8 changes: 8 additions & 0 deletions .codacy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
exclude_paths:
- 'tools/**'
- 'third_party/**'
- 'docs/**'
- 'android/**'
- '**.md'
- 'src/xenia/gpu/shaders/**'
73 changes: 48 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ Can I host Xenia Web Services?

- Yes, [Xenia Web Services](https://github.com/AdrianCassar/Xenia-WebServices).

Is there a Netplay mousehook build?

- Yes, download it from [Netplay Mousehook](https://github.com/marinesciencedude/xenia-canary-mousehook/releases?q=Netplay).

Are games dependant on servers?

- Yes a lot of games are dependant on servers therefore will not work, unless a server is developed for that game. For example many games requires EA servers, without them netplay will not work.
Expand All @@ -41,7 +45,7 @@ Can I use multiple PCs on the same network?

Where can I **download** the Canary Netplay build?

- You can download it from [releases](https://github.com/marinesciencedude/xenia-canary-mousehook/releases?q=Netplay).
- You can download it from [releases](https://github.com/AdrianCassar/xenia-canary/releases).

## Config Setup

Expand Down Expand Up @@ -82,40 +86,60 @@ It should also be noted that due to the way Steam Decks handle configuration, yo

| Game | Notes | Gameplay | Patches/Plugins |
|---|---|---|---|
| Apache: Air Assault | |
| BattleBlock Theater | |
| BurgerTime World Tour | |
| Bloody Good Time | |
| Breach | |
| CS:GO | Mousehook |
| CS:GO Beta | Mousehook |
| Call of Duty 2 | ```launch_module = "default_mp.xex"``` | [Deathmatch](https://www.youtube.com/watch?v=DR9Op_f1UUw) |
| Death Tank | |
| Dragon Ball Z: Burst Limit | |
| DiRT | | [Race](https://www.youtube.com/watch?v=udMf-MUzpEc) |
| Earth Defense Force: Insect Armageddon | |
| GRID | |
| Iron Brigade | Multiplayer available after completing 2nd tutorial mission. |
| GTA V Beta | Requires ```protect_zero = false``` or use patches. | [Beta Showcase](https://www.youtube.com/watch?v=nIjZ7sRGZlo), [Beta Showcase](https://www.youtube.com/watch?v=YIBjy5ZJcq4) | [TU 13](https://github.com/AdrianCassar/Xenia-WebServices/blob/main/patches/545408A7%20-%20Grand%20Theft%20Auto%20V%20(TU13).patch.toml), [TU 10](https://github.com/AdrianCassar/Xenia-WebServices/blob/main/patches/545408A7%20-%20Grand%20Theft%20Auto%20V%20(TU10).patch.toml) |
| GTA V TU 2-13 | Must complete prologue, download gamesave [here](https://cdn.discordapp.com/attachments/641360906495983616/1101132116441440366/545408A7.rar). Unstable and often crashes. | [Solo Session](https://www.youtube.com/watch?v=lap7liW6pco) |
| Guilty Gear 2: Overture | |
| Gundam Operation Troy | [English Patch](https://github.com/Eight-Mansions/MSGOT/releases)
| Halo 3 ODST v13.2 using [Sunrise Server](https://github.com/ahnewark/Sunrise-Halo3-WebServices) | Mousehook | [Head to Head](https://www.youtube.com/watch?v=amS8OxH3exs) | [Halo 3 Patch](https://github.com/AdrianCassar/Xenia-WebServices/blob/main/patches/4D5307E6%20-%20Halo%203.patch.toml)
| Juiced 2 | |
| Juiced 2 | `vsync_interval = 16`, `vsync = true` |
| Kung Fu Panda: SLL | |
| Left 4 Dead | Mousehook | Compatible with GOTY. |
| Left 4 Dead | Mousehook, Compatible with GOTY | |
| Left 4 Dead GOTY | Mousehook | |
| Left 4 Dead 2 | Mousehook | |
| Left 4 Dead 2 Demo |
| Marble Blast Ultra | |
| Marvel Ultimate Alliance | |
| Marvel Ultimate Alliance 2 | |
| MotoGP 06 | |
| MotoGP 07 | |
| MotoGP 14 | Sprint Season only works |
| MotoGP 15 | Sprint Season only works |
| OutRun Online Arcade | | [Race](https://www.youtube.com/watch?v=-UqxjFgGvhk) |
| Portal 2 | Mousehook |
| Pro Evolution Soccer 6 (PES 6) | |
| Pro Evolution Soccer 8 (PES 8) | |
| Resident Evil 5 | | [Chapter 1](https://www.youtube.com/watch?v=SKgnUVairqs) |
| Resident Evil Revelations | |
| Ridge Racer 6 | |
| Saints Row 2 | | [Co-op](https://www.youtube.com/watch?v=YTw84keeWfs), [Setup Guide](https://www.youtube.com/watch?v=nf7TDOtTEIE) |
| Saints Row the Third / The Full Package | Unplayable due to broken graphics. Requires [Online Pass](https://www.xbox.com/en-GB/games/store/online-pass/BS7JTR0MN356) + license_mask |
| Saints Row IV | Unplayable due to broken graphics. Requires Online Pass + license_mask |
| Screwjumper! | |
| Section 8 | |
| Section 8: Prejudice | |
| Serious Sam HD The First Encounter | |
| Serious Sam HD The Second Encounter | |
| Splinter Cell: Double Agent | |
| Star Wars Battlefront III (Unreleased Game) | Alpha, Mar 17 2008 | [Conquest Taoonie](https://www.youtube.com/watch?v=C54jCqFnCmQ), [MP Event Stream](https://www.youtube.com/watch?v=xSpTmsSvP4s) |
| Team Fortress 2 | Mousehook |
| The Outfit | |
| WRC 2010 | Connecting sometimes unstable. |
| WRC 4 | Connecting sometimes unstable. |
| WRC 5 | |
---

### Non-Supported Games
Expand Down Expand Up @@ -164,19 +188,16 @@ This is also a fork of [emoose's Xenia build](https://github.com/emoose/xenia) a
---

<p align="center">
<a href="https://github.com/xenia-project/xenia/tree/master/assets/icon">
<img height="120px" src="https://raw.githubusercontent.com/xenia-project/xenia/master/assets/icon/128.png" />
<a href="https://github.com/xenia-canary/xenia-canary/tree/canary_experimental/assets/icon">
<img height="120px" src="https://raw.githubusercontent.com/xenia-canary/xenia/master/assets/icon/128.png" />
</a>
</p>

<h1 align="center">Xenia - Xbox 360 Emulator</h1>
<h1 align="center">Xenia Canary - Xbox 360 Emulator</h1>

Xenia is an experimental emulator for the Xbox 360. For more information, see the
[main Xenia wiki](https://github.com/xenia-project/xenia/wiki).

**Interested in supporting the core contributors?** Visit
[Xenia Project on Patreon](https://www.patreon.com/xenia_project).

Come chat with us about **emulator-related topics** on [Discord](https://discord.gg/Q9mxZf9).
For developer chat join `#dev` but stay on topic. Lurking is not only fine, but encouraged!
Please check the [FAQ](https://github.com/xenia-project/xenia/wiki/FAQ) page before asking questions.
Expand All @@ -188,25 +209,23 @@ Discussing illegal activities will get you banned.

Buildbot | Status | Releases
-------- | ------ | --------
[Windows](https://ci.appveyor.com/project/benvanik/xenia/branch/master) | [![Build status](https://ci.appveyor.com/api/projects/status/ftqiy86kdfawyx3a/branch/master?svg=true)](https://ci.appveyor.com/project/benvanik/xenia/branch/master) | [Latest](https://github.com/xenia-project/release-builds-windows/releases/latest)[All](https://github.com/xenia-project/release-builds-windows/releases)
[Linux](https://cloud.drone.io/xenia-project/xenia) | [![Build status](https://cloud.drone.io/api/badges/xenia-project/xenia/status.svg)](https://cloud.drone.io/xenia-project/xenia)
Windows | [![CI](https://github.com/xenia-canary/xenia-canary/actions/workflows/CI.yml/badge.svg?branch=canary_experimental)](https://github.com/xenia-canary/xenia-canary/actions/workflows/CI.yml) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/cd506034fd8148309a45034925648499)](https://app.codacy.com/gh/xenia-canary/xenia-canary/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade) | [Latest](https://github.com/xenia-canary/xenia-canary/releases/latest)[All](https://github.com/xenia-canary/xenia-canary/releases)
Linux | Curently unsupported
Netplay Build | | [Latest](https://github.com/AdrianCassar/xenia-canary/releases/latest)

Quite a few real games run. Quite a few don't.
See the [Game compatibility list](https://github.com/xenia-project/game-compatibility/issues)
for currently tracked games, and feel free to contribute your own updates,
screenshots, and information there following the [existing conventions](https://github.com/xenia-project/game-compatibility/blob/master/README.md).
## Quickstart

## Disclaimer
See the [Quickstart](https://github.com/xenia-project/xenia/wiki/Quickstart) page.

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...).
## FAQ

## Quickstart
See the [frequently asked questions](https://github.com/xenia-project/xenia/wiki/FAQ) page.

See the [Quickstart](https://github.com/xenia-project/xenia/wiki/Quickstart) page.
## Game Compatibility

See the [Game compatibility list](https://github.com/xenia-project/game-compatibility/issues)
for currently tracked games, and feel free to contribute your own updates,
screenshots, and information there following the [existing conventions](https://github.com/xenia-project/game-compatibility/blob/master/README.md).

## Building

Expand All @@ -232,6 +251,10 @@ that there are some major work areas still untouched:
See more projects [good for contributors](https://github.com/xenia-project/xenia/labels/good%20first%20issue). It's a good idea to ask on Discord and check the issues page before beginning work on
something.

## FAQ
## Disclaimer

See the [frequently asked questions](https://github.com/xenia-project/xenia/wiki/FAQ) page.
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...).
2 changes: 1 addition & 1 deletion src/xenia/app/discord/discord_presence.cc
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ void DiscordPresence::Initialize() {
handlers.joinGame = &HandleDiscordJoinGame;
handlers.joinRequest = &HandleDiscordJoinRequest;
handlers.spectateGame = &HandleDiscordSpectateGame;
Discord_Initialize("616128086999695367", &handlers, 0, "");
Discord_Initialize("1193272084797849762", &handlers, 0, "");
}

void DiscordPresence::NotPlaying() {
Expand Down
4 changes: 2 additions & 2 deletions src/xenia/app/emulator_window.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1683,8 +1683,8 @@ void EmulatorWindow::LoadRecentlyLaunchedTitles() {
try {
cpptoml::parser p(file);
parsed_file = p.parse();
} catch (cpptoml::parse_exception exception) {
// TODO(Gliniak): Better handling of errors, but good enough for now.
} catch (cpptoml::parse_exception& exception) {
XELOGE("Cannot parse file: recent.toml. Error: {}", exception.what());
return;
}

Expand Down
4 changes: 1 addition & 3 deletions src/xenia/apu/xma_context.cc
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,6 @@ void XmaContext::Decode(XMA_CONTEXT_DATA* data) {
data->input_buffer_0_packet_count * kBytesPerPacket;
size_t input_buffer_1_size =
data->input_buffer_1_packet_count * kBytesPerPacket;
size_t input_total_size = input_buffer_0_size + input_buffer_1_size;

size_t current_input_size =
data->current_buffer ? input_buffer_1_size : input_buffer_0_size;
Expand Down Expand Up @@ -420,7 +419,6 @@ void XmaContext::Decode(XMA_CONTEXT_DATA* data) {
assert_false(data->stop_when_done);
assert_false(data->interrupt_when_done);
static int total_samples = 0;
bool reuse_input_buffer = false;
// Decode until we can't write any more data.
while (output_remaining_bytes > 0) {
if (!data->input_buffer_0_valid && !data->input_buffer_1_valid) {
Expand All @@ -429,7 +427,7 @@ void XmaContext::Decode(XMA_CONTEXT_DATA* data) {
}
// Setup the input buffer if we are at loop_end.
// The input buffer must not be swapped out until all loops are processed.
reuse_input_buffer = TrySetupNextLoop(data, false);
bool reuse_input_buffer = TrySetupNextLoop(data, false);

// assert_true(packets_skip_ == 0);
// assert_true(split_frame_len_ == 0);
Expand Down
2 changes: 1 addition & 1 deletion src/xenia/base/filesystem_posix.cc
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ static uint64_t convertUnixtimeToWinFiletime(time_t unixtime) {
// so we convert linux time to nanoseconds and then add the number of
// nanoseconds from 1601 to 1970
// see https://msdn.microsoft.com/en-us/library/ms724228
uint64_t filetime = filetime = (unixtime * 10000000) + 116444736000000000;
uint64_t filetime = (unixtime * 10000000) + 116444736000000000;
return filetime;
}

Expand Down
2 changes: 1 addition & 1 deletion src/xenia/base/socket_win.cc
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ class Win32Socket : public Socket {
Win32Socket() = default;
~Win32Socket() override { Close(); }

bool Connect(std::string hostname, uint16_t port) {
bool Connect(std::string& hostname, uint16_t port) {
addrinfo hints = {0};
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
Expand Down
2 changes: 1 addition & 1 deletion src/xenia/config.cc
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ std::shared_ptr<cpptoml::table> ParseConfig(
const std::filesystem::path& config_path) {
try {
return ParseFile(config_path);
} catch (cpptoml::parse_exception e) {
} catch (cpptoml::parse_exception& e) {
xe::FatalError(fmt::format("Failed to parse config file '{}':\n\n{}",
xe::path_to_utf8(config_path), e.what()));
return nullptr;
Expand Down
2 changes: 1 addition & 1 deletion src/xenia/cpu/backend/x64/x64_backend.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1172,7 +1172,7 @@ void* X64HelperEmitter::EmitVectorVRsqrteHelper(void* scalar_helper) {
vshufps(xmm0, xmm0,xmm0, _MM_SHUFFLE(3, 3, 3, 3));
call(scalar_helper);
// this->DebugBreak();
vinsertps(xmm0, xmm0, (3 << 4) | (0 << 6));
vinsertps(xmm0, xmm0, (3 << 4));

vblendps(xmm0, xmm0, ptr[backend()->LookupXMMConstantAddress(XMMFloatInf)],
0b0111);
Expand Down
1 change: 0 additions & 1 deletion src/xenia/cpu/hir/value.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1593,7 +1593,6 @@ void Value::VectorAverage(Value* other, TypeName type, bool is_unsigned,
void Value::ByteSwap() {
switch (type) {
case INT8_TYPE:
constant.i8 = constant.i8;
break;
case INT16_TYPE:
constant.i16 = xe::byte_swap(constant.i16);
Expand Down
Loading

0 comments on commit 1530890

Please sign in to comment.