forked from Xeeynamo/sonic-hybrid-rsdk
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of https://github.com/Badgerworks-Brewery/Sonic-H…
- Loading branch information
Showing
1 changed file
with
98 additions
and
108 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,117 +1,107 @@ | ||
# Sonic Hybrid Ultimate | ||
|
||
A project to seamlessly integrate multiple Sonic games into a single cohesive experience, combining RSDK and Oxygen Engine games. Acts as a legal alternative to Sonic Origins for fans. | ||
|
||
## Project Structure | ||
|
||
The project consists of three main components: | ||
|
||
1. **Custom Client**: The core integration layer that manages: | ||
- Engine transitions | ||
- State preservation | ||
- Window/rendering management | ||
- Input handling | ||
|
||
2. **Hybrid-RSDK**: Modified version of RSDK that supports: | ||
- Sonic 1 & 2 (RSDKv4) | ||
- Sonic CD (RSDKv3 with v4 compatibility) | ||
- Seamless game transitions | ||
- State preservation | ||
|
||
3. **Sonic 3 AIR/Oxygen**: Integration with Sonic 3 AIR through: | ||
- Lemonscript integration | ||
- ROM handling | ||
- State synchronization | ||
|
||
## Current Status | ||
|
||
- **Hybrid-RSDK**: | ||
- [x] Basic RSDK integration | ||
- [x] File fetching system | ||
- [x] Memory management fixes | ||
- [x] Sonic 2 completion detection | ||
- [ ] Debugging in progress | ||
|
||
- **Custom Client**: | ||
- [x] Engine interface | ||
- [x] Transition system | ||
- [x] State management | ||
- [x] Window management | ||
- [x] Input system | ||
- [x] Death Egg completion detection | ||
|
||
- **Sonic 3 AIR Integration**: | ||
- [x] Basic Oxygen engine wrapper | ||
- [ ] Lemonscript integration | ||
- [ ] ROM handling | ||
- [ ] State synchronization | ||
|
||
## Setup Instructions | ||
|
||
1. Install required dependencies: | ||
- Visual Studio 2022 with C++ support | ||
- .NET 6.0 SDK or later | ||
- CMake 3.15 or later | ||
|
||
2. Clone the repository: | ||
```bash | ||
git clone https://github.com/yourusername/Sonic-Hybrid-Ultimate.git | ||
cd Sonic-Hybrid-Ultimate | ||
``` | ||
|
||
3. Place the following files in `Hybrid-RSDK Main/Data`: | ||
- Sonic 1's `Data.rsdk` as `sonic1.rsdk` | ||
- Sonic 2's `Data.rsdk` as `sonic2.rsdk` | ||
- Sonic CD's `Data.rsdk` as `soniccd.rsdk` | ||
- Sonic 3&K ROM as `sonic3.bin` | ||
|
||
4. Build the project using the provided build script: | ||
```powershell | ||
# For debug build | ||
.\build.ps1 | ||
# For release build | ||
.\build.ps1 -Release | ||
# To clean and rebuild | ||
.\build.ps1 -Clean | ||
``` | ||
|
||
5. Run the Custom Client: | ||
```powershell | ||
cd "Custom Client/bin/Debug/net6.0-windows" # or Release instead of Debug | ||
./SonicHybridUltimate.exe | ||
``` | ||
|
||
## Development Status | ||
|
||
- **Priority**: Sonic 3 AIR Integration | ||
- **Next Steps**: | ||
1. Complete Lemonscript integration | ||
2. Implement ROM handling | ||
3. Finalize state synchronization | ||
4. Polish transition animations | ||
# Build Process | ||
|
||
To build the project, ensure that all necessary project files are present in the repository. If you encounter the error `MSB1009: Project file does not exist`, verify the project file paths in the build scripts and ensure all required files are included. | ||
|
||
Run the build command from the project's root directory. | ||
|
||
# Sonic RSDK + Oxygen Engine (Help Needed) | ||
|
||
Aims to mix different Sonic the Hedgehog games into a single big game. Acts as a legal but cheaper version of Sonic Origins for fans that dont want to get scammed. | ||
|
||
![Sonic 1 in Sonic 2](docs/preview.png) | ||
|
||
## How it's gonna work. | ||
Instead of mixing 3 AIR'S Engine (called Oxygen) with the RSDK/Retro engine, or compiling rsdk and 3 air as seperate EXEs to be laucnhed in one window which is what this project gets confused as, the project will have 3 (main) working parts: | ||
|
||
Sonic 3 AIR/Oxygen. | ||
|
||
Sonic Hybrid RSDK plus RSDKV4/RSDKV3 (and maybe RSDKV5U). | ||
|
||
And a custom script runner/executor. | ||
|
||
When sonic 2 ends the Hybrid RSDK entity will send a message to the custom script executing entity which in turn stops running the RSDK stuff & starts running the main script of 3 air | ||
|
||
## Completion Status: | ||
Hybrid-RSDK Debugging/Additons ?% (Hybrid-RSDK is still broken) | ||
|
||
|
||
Sonic 3 AIR (Oxygen) Integration 50% (All the source code is in the repo, but we havent done the neccessary changes yet) | ||
Integration with Hybrid RSDK is in progress, focusing on resolving loading issues and graphical corruption. | ||
|
||
|
||
Custom Client 0% (debugging Hybrid RSDK is the priority) | ||
|
||
## WARNING: DOES NOT WORK YET! | ||
Start from here: | ||
|
||
This guide is useful if you never downloaded the project or if you want to start from scratch. | ||
|
||
1. [Download](https://github.com/Xeeynamo/sonic-hybrid-rsdk/archive/refs/heads/main.zip) the latest release | ||
|
||
1. Unpack the zip file | ||
|
||
1. Paste in the directory `rsdk-source-data` the following files: | ||
|
||
* `Data.rsdk` from Sonic CD as `soniccd.rsdk` | ||
* `Data.rsdk` from Sonic 1 as `sonic1.rsdk` | ||
* `Data.rsdk` from Sonic 2 as `sonic2.rsdk` | ||
* `Rom.bin` from Sonic 3&K as `sonic3.bin` (I doubt this will be addable as Sonic 3 is a ROM unlike the rest which is a RSDK) | ||
1. Install [.NET 6](https://dotnet.microsoft.com/download/dotnet/6.0) | ||
|
||
1. Open a terminal and run the command `dotnet run --project SonicHybridRsdk.Build` | ||
|
||
1. Put the [RSDKv4](https://github.com/Rubberduckycooly/Sonic-1-2-2013-Decompilation/releases/tag/1.3.2) engine in the `sonic-hybrid` folder (still havent decided) | ||
|
||
1. Compile/run the executable and have fun! | ||
|
||
## Perform an update | ||
|
||
This guide is useful if you previously played Sonic Hybrid but you want to perform an update. Please look at the [commit list](https://github.com/Xeeynamo/sonic-hybrid-rsdk/commits/main) to know more info about the changelog through each update. | ||
|
||
1. [Download](https://github.com/Xeeynamo/sonic-hybrid-rsdk/archive/refs/heads/main.zip) the latest release | ||
|
||
1. Unpack the zip file and overwrite all the existing files | ||
|
||
1. Open a terminal and run the command `dotnet run --project SonicHybridRsdk.Build` | ||
|
||
1. Run the executable and have fun! | ||
|
||
## Features | ||
|
||
- **Seamless Transitions**: Smooth transitions between RSDK and Oxygen engines | ||
- **State Preservation**: Maintains game state (rings, score, etc.) across transitions | ||
- **Death Egg Detection**: Accurate detection of Sonic 2's completion | ||
- **Modern UI**: Clean, user-friendly interface with real-time status updates | ||
* Play Sonic 1, Sonic CD, Sonic 2 and Sonic 3&k a single big game. | ||
* Star Posts in Sonic the Hedgehog 1 and CD will bring you to the Sonic the Hedgehog 2 special stages. | ||
* Completing Sonic the Hedgehog 1's Final Zone will bring you to Palmtree Panic Zone. | ||
* Completing Sonic the Hedgehog CD's Metallic Madness Act 3 will bring you to Emerald Hill Zone. | ||
* Completing Death Egg Zone in Sonic the Hedgehog 2 will bring you to Angel Island Zone. | ||
* The Stage Select in the debug menu will report all the implemented level names. | ||
* Sonic CD stages correctly transitions as the original game. | ||
* Metal Sonic is now a playable character. | ||
* Sonic 3 will be included. | ||
|
||
## Known issues | ||
* **It runs, but when you load a level it only loads the background** | ||
* No Sonic 3 yet. | ||
* Sonic 1 Special Stages are working from the Stage Select, but the graphics is corrupted. | ||
* The main menu of RSDK will report the wrong stage names. | ||
* The Giant Ring from Sonic the Hedgehog 1 will teleport to the Sonic the Hedgehog 2 special stages. | ||
* Collision Chaos and Stardust Speedway are half-implemented. | ||
* Tidal Tempest, Quartz Quadrant, Wacky Workbench and Metallic Madness are barely implemented. | ||
* In Palmtree Panic Zone, the spinner will softlock the player. | ||
* Some Sonic CD's enemies and gimmicks might have the wrong palette. | ||
* Playable Metal Sonic has a "rolling" bugging collision. | ||
|
||
|
||
## Contributing | ||
## Resources | ||
|
||
Help is welcome! Current areas needing attention: | ||
- Sonic 3 AIR integration | ||
- Lemonscript implementation | ||
- Transition animations | ||
- UI/UX improvements | ||
Xeeynamo has written [some notes](rsdkv3-to-rsdkv4.md) on how to convert RSDKv3 scripts to RSDKv4 scripts without modifying the RSDKv4 engine. | ||
|
||
## License | ||
Everything contained in `rsdk/Scripts` is a modified version of [Rubberduckycooly's Sonic 1/2 script decompilation](https://github.com/Rubberduckycooly/Sonic-1-Sonic-2-2013-Script-Decompilation). This project would not exist without it. | ||
|
||
This project is for educational purposes only. All Sonic the Hedgehog properties are owned by SEGA. | ||
The function `SonicHybridRsdk.Unpack12/DecryptData` was written by Giuseppe Gatta (nextvolume) from its [Retrun](http://unhaut.epizy.com/retrun/). | ||
|
||
## Credits | ||
- RSDK Decompilation by Rubberduckycooly | ||
- Sonic 3 AIR by Eukaryot | ||
- Original games by SEGA | ||
* Decompilation by Rubberduckycooly. | ||
* Hybrid-RSDK by Xeeynamo. | ||
* Sonic 3 AIR by Eukaryot. | ||
* Conceived by Chaphidoesstuff aka @CCIGAMES. | ||
* Main Development By Pixel-1 Games, SomeRandomPerson_, twanvanb1, FGSOFTWARE1 and more. |