|
1 | | -MarathonRecomp is an attempt to use the XenonRecomp tool and UnleashedRecomp as a base to run Sonic 2006 from the Xbox 360 |
2 | | - |
3 | | -The current code renders video playback, correctly renders 2D and incorrect 3D |
4 | | - |
5 | | -Unfortunately memory corruption or race condition can still occur, restarting mostly helps |
6 | | - |
7 | | -# Build |
8 | | -- Place `:GAME_DIR:/xenon/archives/shader/shader.arc` and `shader_lt.arc` to `MarathonRecompLib/private` dir |
9 | | -- Build works in the same ways as in [UnleashedRecomp](https://github.com/hedge-dev/UnleashedRecomp) |
10 | | - |
11 | | -## TO-DO: |
12 | | -- [x] Code execution up to the rendering thread |
13 | | -- [x] Stable rendering thread without stubbing important functions |
14 | | -- [ ] Some cpu things that causes hangs |
15 | | -- [ ] Cleanup of code that depends on Unleashed (and also reset git history) |
16 | | -- [x] Audio (probably should work OOB at some point) |
17 | | - - [x] XMA decoding (semi-works) |
18 | | - - [ ] ffmpeg for Windows |
19 | | -- [ ] Graphics (current code is very dependent on Unleashed) |
20 | | - - [x] It's rendering something |
21 | | - - [x] Correct menu textures rendering (alpha channel) |
22 | | - - [x] Correct fonts rendering |
23 | | - - [x] Some 3d rendering |
24 | | - - [ ] Correct 3d rendering |
| 1 | +<p align="center"> |
| 2 | + <img src="https://raw.githubusercontent.com/IsaacMarovitz/MarathonRecompResources/refs/heads/main/images/logo/Logo.png" width="512"/> |
| 3 | +</p> |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +> [!CAUTION] |
| 8 | +> This recompilation is still under active development and is NOT meant for public use. Support will not be provided until an official release. |
| 9 | +
|
| 10 | +Marathon Recompiled is an unofficial PC port of the Xbox 360 version of Sonic the Hedgehog (2006) created through the process of static recompilation. The port offers Windows, Linux, and macOS support. |
| 11 | + |
| 12 | +**This project does not include any game assets. You must provide the files from your own legally acquired copy of the game to install or build Marathon Recompiled.** |
| 13 | + |
| 14 | +[XenonRecomp](https://github.com/ga2mer/XenonRecomp) and [XenosRecomp](https://github.com/ga2mer/XenosRecomp) are the main recompilers used for converting the game's original PowerPC code and Xenos shaders into compatible C++ and HLSL code respectively. The development of these recompilers was directly inspired by [N64: Recompiled](https://github.com/N64Recomp/N64Recomp), which was used to create [Zelda 64: Recompiled](https://github.com/Zelda64Recomp/Zelda64Recomp). |
| 15 | + |
| 16 | +## Table of Contents |
| 17 | + |
| 18 | +- [Known Issues](#known-issues) |
| 19 | +- [FAQ](#faq) |
| 20 | +- [Building](#building) |
| 21 | +- [Credits](#credits) |
| 22 | + |
| 23 | +## Known Issues |
| 24 | + |
| 25 | +Before reporting any issues, check if they are listed [here](https://github.com/ga2mer/MarathonRecomp/issues/7). |
| 26 | + |
| 27 | +### Original Game Bugs |
| 28 | + |
| 29 | +Game bugs present on the original hardware are intentionally preserved and will not be fixed. Please do not report issues for these bugs and verify that the issue does not occur on original hardware before reporting. Bug reports for issues found in the original game will be rejected. Bugs that only happen in Marathon Recompiled must be accompanied by footage captured on original Xbox 360 hardware showing that the bug does not happen there. |
| 30 | + |
| 31 | +### File Picker Unavailable on Steam Deck in Game Mode |
| 32 | + |
| 33 | +Due to some restrictions of how the desktop environment on the Steam Deck works whilst in Game Mode, please note that you may need to at least first boot into Desktop Mode to be able to use the file picker to provide the game files. |
| 34 | + |
| 35 | +Simply booting at least once in Desktop Mode will enable the Deck to use the file picker when going back to Game Mode. You can complete the entire installation process while in Desktop Mode to save yourself the trouble of browsing through Game Mode if necessary. |
| 36 | + |
| 37 | +## FAQ |
| 38 | + |
| 39 | +### Do you have a website? |
| 40 | + |
| 41 | +Marathon Recompiled does not have an official website. |
| 42 | + |
| 43 | +**Please link here when directing anyone to the project.** |
| 44 | + |
| 45 | +> [!CAUTION] |
| 46 | +> Do not download builds of Marathon Recompiled from anywhere but our [Releases](https://github.com/ga2mer/MarathonRecomp/releases/latest) page. |
| 47 | +> |
| 48 | +> **We will never distribute builds on other websites, via Discord servers or via third-party update tools.** |
| 49 | +
|
| 50 | +### Why does the installer say my files are invalid? |
| 51 | + |
| 52 | +The installer may display this error for several reasons. Please check the following to ensure your files are valid: |
| 53 | + |
| 54 | +- Please read the [How to Install](#how-to-install) section and make sure you've acquired all of the necessary files correctly. |
| 55 | + |
| 56 | +- Verify that you're not trying to add compressed files such as `.zip`, `.7z`, `.rar` or other formats. |
| 57 | + |
| 58 | +- Only use the **Add Folder** option if you're sure you have a directory with the content's files already extracted, which means it'll only contain files like `.xex`, `.ar.00`, `.arl` and others. **This option will not scan your folder for compatible content**. |
| 59 | + |
| 60 | +- Ensure that the files you've acquired correspond to the same region. **Discs and Title Updates from different regions can't be used together** and will fail to generate a patch. |
| 61 | + |
| 62 | +- The installer will only accept **original and unmodified files**. Do not attempt to provide modified files to the installer. |
| 63 | + |
| 64 | +### What are the keyboard bindings? |
| 65 | + |
| 66 | +Pad|Key |
| 67 | +-|- |
| 68 | +A (Cross)|S |
| 69 | +B (Circle)|D |
| 70 | +X (Square)|A |
| 71 | +Y (Triangle)|W |
| 72 | +D-Pad - Up|Unbound |
| 73 | +D-Pad - Down|Unbound |
| 74 | +D-Pad - Left|Unbound |
| 75 | +D-Pad - Right|Unbound |
| 76 | +Start|Return |
| 77 | +Back (Select)|Backspace |
| 78 | +Left Trigger (L2)|1 |
| 79 | +Right Trigger (R2)|3 |
| 80 | +Left Bumper (L1)|Q |
| 81 | +Right Bumper (R1)|E |
| 82 | +Left Stick - Up|Up Arrow |
| 83 | +Left Stick - Down|Down Arrow |
| 84 | +Left Stick - Left|Left Arrow |
| 85 | +Left Stick - Right|Right Arrow |
| 86 | +Right Stick - Up|Unbound |
| 87 | +Right Stick - Down|Unbound |
| 88 | +Right Stick - Left|Unbound |
| 89 | +Right Stick - Right|Unbound |
| 90 | + |
| 91 | +--- |
| 92 | + |
| 93 | +You can change the keyboard bindings by editing `config.toml` located in the [configuration directory](#where-is-the-save-data-and-configuration-file-stored), although using a controller is highly recommended until Action Remapping is added in a future update. |
| 94 | + |
| 95 | +Refer to the left column of [this enum template](https://github.com/ga2mer/MarathonRecomp/blob/main/MarathonRecomp/user/config.cpp#L40) for a list of valid keys. |
| 96 | + |
| 97 | +*The default keyboard layout is based on Devil's Details' keyboard layout for Sonic Generations (2011)*. |
| 98 | + |
| 99 | +### Where is the save data and configuration file stored? |
| 100 | + |
| 101 | +The save data and configuration files are stored at the following locations: |
| 102 | + |
| 103 | +- Windows: `%APPDATA%\MarathonRecomp\` |
| 104 | +- Linux: `~/.config/MarathonRecomp/` |
| 105 | + |
| 106 | +You will find the save data under the `save` folder. The configuration file is named `config.toml`. |
| 107 | + |
| 108 | +### I want to update the game. How can I avoid losing my save data? Do I need to reinstall the game? |
| 109 | + |
| 110 | +Updating the game can be done by simply copying and replacing the files from a [release](https://github.com/ga2mer/MarathonRecomp/releases) on top of your existing installation. **Your save data and configuration will not be lost.** You won't need to reinstall the game, as the game files will always remain the same across versions of Marathon Recompiled. |
| 111 | + |
| 112 | +### How can I force the game to store the save data and configuration in the installation folder? |
| 113 | + |
| 114 | +You can make the game ignore the [default configuration paths](#where-is-the-save-data-and-configuration-file-stored) and force it to save everything in the installation directory by creating an empty `portable.txt` file. You are directly responsible for the safekeeping of your save data and configuration if you choose this option. |
| 115 | + |
| 116 | +### How can I force the game to run the installation again? |
| 117 | + |
| 118 | +While it's unlikely you'll need to do this unless you've modified your game files by accident, you can force the installer to run again by using the launch argument: `--install`. |
| 119 | + |
| 120 | +### How can I force the game to run under X11 or Wayland? |
| 121 | + |
| 122 | +Use either of the following arguments to force SDL to run under the video driver you want: |
| 123 | + |
| 124 | +- X11: `--sdl-video-driver x11` |
| 125 | +- Wayland: `--sdl-video-driver wayland` |
| 126 | + |
| 127 | +The second argument will be passed directly to SDL as a hint to try to initialize the game with your preferred option. |
| 128 | + |
| 129 | +### Where is the game data for the Flatpak version installed? |
| 130 | + |
| 131 | +Given it is not possible to run the game where the Flatpak is stored, the game data will be installed to `~/.var/app/io.github.hedge_dev.marathonrecomp/data`. The Flatpak build will only recognize this directory as valid. Feel free to reuse this data directory with a native Linux build if you wish to switch in the future. |
| 132 | + |
| 133 | +If you wish to move this data to another location, you can do so by creating a symlink from this directory to the one where you'll migrate your installation to. |
| 134 | + |
| 135 | +> [!WARNING] |
| 136 | +> Using external frame rate limiters or performance overlays may degrade performance or have negative consequences. |
| 137 | +
|
| 138 | +### Can I install the game with a PlayStation 3 copy? |
| 139 | + |
| 140 | +**You cannot use the files from the PlayStation 3 version of the game.** Supporting these files would require an entirely new recompilation, as they have proprietary formatting that only works on PS3 and the code for these formats is only present in that version. All significant differences present in the PS3 version of the game have been included in this project as options. |
| 141 | + |
| 142 | +### Why is the game detecting my PlayStation controller as an Xbox controller? |
| 143 | + |
| 144 | +If you're using a third-party input translation layer (such as DS4Windows or Steam Input), it is recommended that you disable these for full controller support. |
| 145 | + |
| 146 | +### What other platforms will be supported? |
| 147 | + |
| 148 | +This project does not plan to support any more platforms other than Windows, Linux and macOS at the moment. Any contributors who wish to support more platforms should do so through a fork. |
| 149 | + |
| 150 | +## Building |
| 151 | + |
| 152 | +[Check out the building instructions here](/docs/BUILDING.md). |
| 153 | + |
| 154 | +## Credits |
| 155 | + |
| 156 | +### Marathon Recompiled |
| 157 | +- [ga2mer](https://github.com/ga2mer): Creator and Lead Developer of the recompilation. |
| 158 | + |
| 159 | +- [Rei-san](https://github.com/ReimousTH): Game Internals Researcher and Patch Developer. |
| 160 | + |
| 161 | +- [squidbus](https://github.com/squidbus): Graphics Developer. |
| 162 | + |
| 163 | +- [IsaacMarovitz](https://github.com/IsaacMarovitz): Graphics & Installer Developer. |
| 164 | + |
| 165 | +- [Hyper](https://github.com/hyperbx): Custom menus and Game Internals Researcher. |
| 166 | + |
| 167 | +- [LJSTAR](https://github.com/LJSTARbird): Artist behind the project logo. |
| 168 | + |
| 169 | +- [Skyth](https://github.com/blueskythlikesclouds): Lead Developer of Unleashed Recompiled and endlessly helpful resource. |
| 170 | + |
| 171 | +- [Darío](https://github.com/DarioSamo): Maintainer of [Plume](https://github.com/renderbag/plume) & Graphics Developer. |
| 172 | + |
| 173 | +- [Hotline Sehwani](https://www.youtube.com/watch?v=8mfOSTcTQNs): Artist behind installer music. |
| 174 | + |
| 175 | +### Unleashed Recompiled |
| 176 | +- [Skyth](https://github.com/blueskythlikesclouds) |
| 177 | +- [Sajid](https://github.com/Sajidur78) |
| 178 | +- [Hyper](https://github.com/hyperbx) |
| 179 | +- [Darío](https://github.com/DarioSamo) |
| 180 | +- [ĐeäTh](https://github.com/DeaTh-G) |
| 181 | +- [RadiantDerg](https://github.com/RadiantDerg) |
| 182 | +- [PTKay](https://github.com/PTKay) |
| 183 | +- [SuperSonic16](https://github.com/thesupersonic16) |
| 184 | +- [NextinHKRY](https://github.com/NextinMono) |
| 185 | +- [LadyLunanova](https://linktr.ee/ladylunanova) |
| 186 | +- [LJSTAR](https://github.com/LJSTARbird) |
| 187 | +- [saguinee](https://twitter.com/saguinee) |
| 188 | +- [Goalringmod27](https://linktr.ee/goalringmod27) |
| 189 | +- [M&M](https://github.com/ActualMandM) |
| 190 | +- [DaGuAr](https://twitter.com/TheDaguar) |
| 191 | +- [brianuuuSonic](https://github.com/brianuuu) |
| 192 | +- [Kitzuku](https://github.com/Kitzuku) |
0 commit comments