Source and data to build Sonic 3 A.I.R. (Angel Island Revisited) and the Oxygen Engine

Related tags

Game sonic3air
Overview

Sonic 3 A.I.R.

Source code incl. dependencies for "Sonic 3 - Angel Island Revisited", a fan-made remaster of Sonic 3 & Knuckles.

Project homepage: https://sonic3air.org/

Disclaimer

Sonic 3 A.I.R. is a non-profit fan game project. It is not affiliated in any way with SEGA or Sonic Team, the original creators of Sonic 3 and Sonic & Knuckles.

Sonic the Hedgehog is a trademark of SEGA. All copyrights regarding Sonic the Hedgehog, including characters, names, terms, art, and music belong to SEGA. All registered trademarks belong to SEGA and Sonic Team.

The developers of Sonic 3 A.I.R. have no intent to infringe said copyrights and registered trademarks. No financial gain is made from this project.

Any commercial use of this project without SEGA's explicit consent is strictly prohibited.

Repository overview

This repository is split into several different projects:

  • The larger external dependencies (namely SDL2, Ogg/Vorbis, zlib) inside the "framework" directory. These are copies of the respective open source projects, with a few custom changes applied where needed - see the "how-to-build.txt" files in there for details.
  • The librmx libraries that together with the external dependencies build a foundation for my own projects (S3AIR and my private stuff). This primarily consists of rmxbase, a collection of helper and utility classes, and rmxmedia, which is providing a basic game framework built on top of SDL2 & OpenGL.
  • Lemonscript language library, with compiler and runtime environment for script execution.
  • Oxygen Engine, the backbone game engine powering Sonic 3 A.I.R. This includes input, graphics, audio handling, and all the other game application stuff, as well as a simulation environment built around lemonscript that - as far as needed for the purposes of S3AIR - emulates aspects of Sega Genesis hardware. Note that Oxygen can be built as its own application (OxygenApp) that lacks the S3AIR C++ code.
  • S3AIR-specific C++ code, scripts and data in the "Oxygen/soncthrickles" directory. Yes, that's what it's named.

External dependencies

External libraries and code used in this project:

  • SDL2 - in "framework/external/sdl"
  • libogg & libvorbis - in "framework/external/ogg-vorbis"
  • zlib incl. minizip - in "framework/external/zlib"
  • jsoncpp - in "librmx/source/rmxbase/jsoncpp"
  • GLEW - in "librmx/source/rmxmedia/glew"
  • Sound chip emulation related code from Genesis Plus GX - in "Oxygen/oxygenengine/source/oxygen/simulation/sound"
  • Discord Game SDK - in "Oxygen/soncthrickles/source/external/discord_game_sdk"
  • xBRZ upscaler shader code - in "Oxygen/oxygenengine/data/shader" and once more in "Oxygen/soncthrickles/data/shader"
  • Hqx upscaler shader code & data files - in "Oxygen/oxygenengine/data/shader" and once more in "Oxygen/soncthrickles/data/shader"

How to build

For information on how to build for different platforms, find the readme files in the respective subdirectories of "Oxygen/soncthrickles":

  • Windows: "build/_vstudio"
  • Mac: "build/_xcode"
  • Linux: "build/_cmake"
  • Android: "build/_android"
  • Web: "build/_emscripten"
  • Switch: "build/_make"
You might also like...
Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU
Powerful, mature open-source cross-platform game engine for Python and C++, developed by Disney and CMU

Panda3D Panda3D is a game engine, a framework for 3D rendering and game development for Python and C++ programs. Panda3D is open-source and free for a

Free, open-source, game engine and a 3D sandbox.
Free, open-source, game engine and a 3D sandbox.

Work-in-Progress The official "early alpha" release should be available around April 2021 SGEEngine SGEEngine is an open source (MIT License), C++ cen

Project DELTA - An open-source trainer built on the Void Engine for Toby Fox's games and their spin-offs.

Project DELTA v3 Project DELTA - An open-source, modular mod menu for Toby Fox's games and their spin-offs. Important note to Grossley: Yes, it is out

Minetest is an open source voxel game engine with easy modding and game creation

Minetest is an open source voxel game engine with easy modding and game creation

Amazon Lumberyard is a free AAA game engine deeply integrated with AWS and Twitch – with full source.
Amazon Lumberyard is a free AAA game engine deeply integrated with AWS and Twitch – with full source.

Amazon Lumberyard Amazon Lumberyard is a free, AAA game engine that gives you the tools you need to create high quality games. Deeply integrated with

Open-source, cross-platform, C++ game engine for creating 2D/3D games.

GamePlay v3.0.0 GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games. Website Wiki API De

KlayGE is a cross-platform open source game engine with plugin-based architecture.

KlayGE KlayGE is a cross-platform open source game engine with plugin-based architecture. It's started since 2003. The explicit goal of KlayGE is: to

MIT Licensed Open Source version of Torque 2D game engine from GarageGames
MIT Licensed Open Source version of Torque 2D game engine from GarageGames

We've moved! All torque engines have moved to a new organization, Torque Game Engines. Torque2D can be found at https://github.com/TorqueGameEngines/T

My 3D game engine source code.

Rogy-Engine Development My 3D game engine source code. (NOT THE FINAL VERSION) Features: PBR shading and reflection probes with parallax correction. S

Comments
  • Fix thread not closing and avoid memcpy overlap

    Fix thread not closing and avoid memcpy overlap

    Thread before would hang waiting for a next job, never closing. On a platform like the Switch this means the thread never closes and crashes happen.

    I understand you asked in the README to not post PRs but I think these issues are a bit important. On the latter issue, gcc's address sanitizer reports that when entering the Normal Game menu a memcpy overlap call happens. As a sort of workaround I changed it to memmove to avoid this issue. On the former, while on most platforms not closing a thread is not as much of a problem since it gets closed on exit anyway, on platforms like homebrew on Switch they need a proper cleanup before exiting, or undefined behaviour happens. In the commits I also mixed librmx changes with Oxygen ones, if you want me to split them or edit them in any way I will. And regarding the licensing problem you mentioned in the README, as long as you credit me I don't really care :P

    opened by Ultracoolguy 1
  • Added MSYS2 Build system for Windows

    Added MSYS2 Build system for Windows

    I don't use personnally Visual Studio to build open source projects on Windows. I use here MSYS2 : https://www.msys2.org/

    Tested on Windows 10 - 64 bits. Instructions are available on howtobuild.md file in Oxygen/soncthrickles/build/_make_msys2/howtobuild.md .

    ZipFileProvider.cpp and FileHelper.cpp have been modified to add MSYS2 support and original compilers support ( to avoid to break users that use Visual Studio for instance : i don't want to break other methods )

    opened by ghost 1
Releases(v22.09.10.0-stable)
  • v22.08.21.0-test(Aug 21, 2022)

    Yep, this time there's an Android version as well. And Windows as usual.

    Fixes and improvements

    • Fixed graphics glitches while pausing the game (regression in previous test build)
    • Fixes for Knuckles outro
    • Fixed that player 2 Tails Flight Cancel did not make player 1 curl into a ball any more
    • Better support for high-DPI display scaling under Windows
    • Test for possible fix to save data folder visibilty under Android 11
    • Modding: More sprites added for modding (see "doc/modding/sprites")
    • And a few other fixes and changes, see commits to the repo
    Source code(tar.gz)
    Source code(zip)
    artifacts.7z(15.05 MB)
    sonic3air.apk(157.78 MB)
    sonic3air_game.zip(139.14 MB)
  • v22.08.13.0-test(Aug 13, 2022)

    This build is mostly about a fix for broken mod compatibility in v22.07.31.0 to v22.08.07.2.

    But there's also some more fixes and improvements, most notable:

    • Added option to make monitors fall down when hit from below
    • Debug Mode can now be toggled in the in-game Options as well
    • Fix for a bug that caused some keys on the keyboard to be mapped incorrectly
    Source code(tar.gz)
    Source code(zip)
    artifacts.7z(15.06 MB)
    sonic3air_game.zip(139.22 MB)
  • v22.08.07.1-test(Aug 7, 2022)

    This test build is mostly about an added splash screen for the upcoming Sonic Hacking Contest. It's built directly into the main game, but disabled by default. If you want to enable it for your mod, have a look at the demo mod and the Readme PDF with more information, at "doc/sample-mods/shc-splash-demo" inside the game installation.

    In addition to that:

    • Added option to choose between main boss or mini-boss music for the FBZ 2 mid-boss / laser trap
    • Fixed that infinite lives setting reset your life counter of save games back to 3
    • Plus a few other minor fixes

    Hotfix v22.08.07.1 adds script functions get_status_register and set_status_register back in for mod compatibility.

    Source code(tar.gz)
    Source code(zip)
    artifacts.7z(15.08 MB)
    sonic3air_game.zip(139.19 MB)
  • v22.07.31.2-test(Jul 31, 2022)

    As always, includes the changes from the previous test build, plus the following.

    New features and improvements

    • Added different Super Sonic Jump Ability options
    • Added DDZ to Act Select after reaching it in a normal game
    • Performance improvement to rendering in Blue Spheres stages
    • Removed fast music track versions in options menu's sound test, unless dev mode is active

    Bug fixes

    • Improved on the reliability of triggering Tails Assist
    • Small tweaks to make sure AI Tails drops out of his flight after respawn more consistently, when he's close to the player
    • Fixed a S3AIR-specific collision bug for the MGZ spinning top
    • Also enabled several other glitch fixes previously prepared, like the "frame-perfect reset" bug
    • Fixed a regression in the script compiler that broke the SOZ levers / doors in the previous test build
    • Fixed a regression in previous test build: From S&K title screen, go to the main menu (not to Data Select)
    • Fixed that pressing Accept and Back at the same time in main menu could mess up the menu
    • Fixed a possible soft-lock when using a bubble bounce to get on the spinning top
    • Fixed that in Time Attack or with Infinite Lives option, there was no ring sound for collecting a ring (or monitor) right when reaching 100, 200, etc. rings
    • Fix for DEZ 2 background glitches with palette fading effects in previous test build
    • Better OpenGL compatibility checks, to avoid startup crashes on some machines that require fail-safe mode
    • Using the original emulated S&K credits medley now instead of the remastered on if emulated soundtrack is chosen (this ensures that the medley also works if no remastered soundtrack files are even available)

    Modding features & improvements:

    • Added dynamic icons for input buttons like "@input_icon_button_A"
    • Added support for underwater Super/Hyper palettes
    • Added "Audio.getAudioKeyType" script function
    • Support for constant array definitions in a single line
    • Silently ignore multiple includes of the same file in lemonscript
    • Merged the latest version of Vinegar's script code improvements (as of July 29, 2022) into the main game scripts

    Download sonic3air_game.zip for the game installation.

    HOTFIX v22.07.31.2 - Fixes for the test build that was uploaded earlier today:

    • Fix for compatibility with mods overriding the stringformat function to replace character sprites
    • Fix for sometimes missing Blue Spheres ground and input icon sprites
    • Fix for a bug in the script compiler that first lead to a crash (in v22.07.31.0) and then to a compiler error (in v22.07.31.1) with some mods
    • Fix for emulated soundtrack option having no effect
    Source code(tar.gz)
    Source code(zip)
    artifacts.7z(15.06 MB)
    sonic3air_game.zip(139.00 MB)
  • v22.07.03.0-test(Jul 3, 2022)

    Includes all changes from the preview v22.05.15.0

    Additional fixes include:

    • Fix for broken music fade from title screen to main menu, a regression in the preview
    • Fixed "Value stack error: Too many elements" that could come up when Knuckles' fight against Super Mecha Sonic took very long
    • Fixed a glitch when character gets hurt while triggering a SSZ teleporter
    • Fixed an crash in the script compiler when loading certain script mods

    Plus a few small changes inspired by Sonic Origins:

    • Added an option to activate Hyper Dash only if pressing any direction, like it's done in Origins
    • AI Tails does not consume the bouncepads in the Gumball Machine bonus stage any more

    Modding features & improvement:

    • Added various script code improvements by merging Vinegar's fork (as of June 6, 2022) into the main game scripts
    • Added support for modded fonts
    • Added "Renderer.getTextWidth" script function

    Download sonic3air_game.zip for the game installation.

    Source code(tar.gz)
    Source code(zip)
    artifacts.7z(14.95 MB)
    sonic3air_game.zip(138.80 MB)
  • v22.05.08.0-test(May 8, 2022)

    This is mostly a bug fix release for the previous test build:

    • Fixed missing music after opening the in-game options
    • Fixed that some options got disabled for the main menu options menu as well after opening the in-game options menu once
    • Refinements for the in-game options warning messages
    • Removed the unnecessary "Back" buttons between mods in the mods options
    • Game speed is now applied correctly again
    • Fix for wrong animation sprite when Knuckles loses his super form while climbing
    • Fix for Sonic's broken finger in "Score Millionaire" achievement image
    • Fixed that in lemonscript, defines that referenced other defines could lead to a compile error
    • Added new script functions for modding: "System.callFunctionByName", "System.getGlobalVariableValueByName", "System.setGlobalVariableValueByName"
    Source code(tar.gz)
    Source code(zip)
    sonic3air_game.zip(138.74 MB)
  • v22.04.23.0-test(Apr 23, 2022)

    Includes everything from the previous test builds, plus a few new fixes and features:

    • Added a reduced version of the Options menu to the in-game Pause screen
    • Replaced the static main menu background with an animated (and moddable) one
    • For the highest anti-flicker setting, reduced intensities of Hyper Sonic screen flash and screen shake effects
    • Allowing for extended camera & camera outrun in Time Attack
    • Fix for positioning of Death Egg in SSZ end cutscene, which didn't work in all level layout settings
    • Fix for a regression of the background blur effect in Time Attack results screen
    • Fix for PS4 controller LED color when playing as Sonic & Tails
    • Several fixes in scripts and documentation - thanks especially to Veenee, Lave slime and Dynamic Lemons
    • Connection to game server is now only established when actually needed (for Update Check or Ghost Sync)
    • Smaller performance optimizations for rendering
    • Improvements for frame interpolation (though it's still far from final)
    • And as always a bunch of other smaller changes, see the individual commits for details

    Edit: There's a known regression in the transition from title screen to main menu - a glitch in the music. That will get fixed for the next version.

    Source code(tar.gz)
    Source code(zip)
    sonic3air_game.zip(138.73 MB)
  • v22.02.13.0-test(Feb 13, 2022)

    This build is mostly about new additions to the lemonscript language used for script modding:

    • Constants can now be defined locally inside functions as well, where they are limited to their respective scope, like local variables
    • Constant arrays allow for having a lookup table for a list of fixed integer values or strings; they can be defined globally or locally
    • Strings feature a ".length()" method, and specialized operators + (concatenation of strings) and <, <=, >, >= (string comparisons)
    • Preprocessor directives #define and #error

    All of these are described in the Oxygen Handbook PDF (located at "bonus/oxygenengine/Handbook.pdf" inside the game installation).

    Aside from that, there's a few other improvements:

    • Fix for a bug in Data Select when left + right is pressed at the same time
    • Optimizations for the script compiler to reduce RAM usage and compilation times
    • Plus all changes from the previous two test builds

    Hotfix: The attached sonic3air_game.zip was updated to include hotfix v22.02.13.1 that fixes a possible crash when loading script mods.

    Source code(tar.gz)
    Source code(zip)
    sonic3air_game.zip(138.86 MB)
  • v22.01.23.0-test(Jan 23, 2022)

    Includes all fixes and features from former test build, plus:

    • Lemon script feature level 2 check for equality comparisons whose result is not evaluated (this is practically always a mistake, typing two == where an assigment is intended)
    • Added option for using the Prototype Knuckles' Theme in the Hidden Palace fight against him
    • Fixed palette errors from the original game in some places
    • Dev Mode does not disable Time Attack any more now
    • And some more minor changes, see commit list for details
    Source code(tar.gz)
    Source code(zip)
    sonic3air_game.zip(138.68 MB)
  • v22.01.09.0-test(Jan 9, 2022)

    Fixes and improvements

    • Fix for a crash that can occur when entering the Options menu with certain controllers attached
    • Fixed that audio mods used reverse mod priority
    • Sound Test in Options menu now shows a proper name for each music track as well
    • Enforcing a fixed simulation update rate of 60 Hz in Time Attack
    • Off-screen tails display for player 2 now correctly renders his tails as well
    • Modding: Added "Renderer.drawText" script function for easy text rendering
    • Modding: Added a better way of defining constants in scripts by using the "constant" keyword

    Early preview of larger work-in-progress features

    • Networking test cases, especially Ghost Sync (needs to be enabled in the config.json)
    • Frame Interpolation (needs to be switched to via Alt+H)
    • Lemon script feature level 2: Introduces "string" as a dedicated data type with only limited compatibility to u64 + check for parentheses after "if" (need to be enabled for script mods with "//# script-feature-level(2)")
    Source code(tar.gz)
    Source code(zip)
    sonic3air_game.zip(138.55 MB)
Owner
Eukaryot
Eukaryot
Rogy-Engine- - My 3D game engine source code.

Rogy-Engine Development My 3D game engine. (NOT THE FINAL VERSION- Windows only) Features: PBR shading and reflection probes with parallax correction.

AlaX 97 Nov 28, 2022
Data Structures concepts being implemented to build the Game of Life

The Game of Life Data Structures concepts being implemented to build the Game of Life which is a cellular automation devised by the mathematician Jame

Aleezeh Usman 3 Sep 5, 2021
The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

The Atomic Game Engine is a multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript

null 2.8k Nov 24, 2022
Godot Engine – Multi-platform 2D and 3D game engine

Godot Engine 2D and 3D cross-platform game engine Godot Engine is a feature-packed, cross-platform game engine to create 2D and 3D games from a unifie

Godot Engine 55.4k Nov 25, 2022
CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine

CLUSEK-RT is a complex game engine written in C++ and the successor of the CLUSEK game engine. This engine has been designed with a cross-platform design in mind. Thanks to Vulkan API it delivers a next-gen experience with ray tracing to both Linux and Windows platforms

Jakub Biliński 37 Oct 7, 2022
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World.

OpenXRay OpenXRay is an improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. S

null 2.2k Dec 2, 2022
Flax Engine – multi-platform 3D game engine

Flax Engine – multi-platform 3D game engine

Flax Engine 3.7k Nov 27, 2022
Ground Engine is an easy to use Game Engine for 3D Game Development written in C++

Ground Engine is an easy to use Game Engine Framework for 3D Game Development written in C++. It's currently under development and its creation will b

 PardCode 61 Nov 26, 2022
Hyperion Engine is a 3D game engine written in C++

Hyperion Engine About Hyperion Engine is a 3D game engine written in C++. We aim to make Hyperion be easy to understand and use, while still enabling

null 255 Nov 26, 2022
A Vulkan game engine with a focus on data oriented design

The Fling Engine aims to be a cross platform Vulkan game engine that will experiment with the following: Low-level engine systems such as render API a

Fling Engine 312 Nov 23, 2022