
BACKGROUND:
It's called Saxman's Sonic Boom engine, but you can just call it Sonic Boom for short like I do (and did going all the way back to 2011). Why Sonic Boom? Because "boom" means to progress rapidly.
The project started out as a series of bug fixes for Sonic 2 with the intent of being released as THE unofficial revision 3 of Sonic the Hedgehog 2. However, at some point along the way I decided this project should be much more than simple bug fixes, because who would really want to download that? I probably wouldn't bother myself. So, inspired by Team TNT's BOOM engine (Remember that? No? Well, it was a pretty big deal back in 1998), I decided to make this an enhancement of the Sonic 2 disassembly itself and focus on trying to turn it into a developer's crutch of sorts. The idea was that new features could be plugged in by setting certain flags in the code. That way, hackers can pick and choose what they want for their projects.
The source code is intended to replace the need for any other disassemblies currently being used. The source code is based on the 2007 disassembly, partly because I did not really like the overall state of the SVN code. I decided to clean up the code myself and slowly but surely make it more maintainable, customizable, and readable. That effort is not done, but I did make a lot of progress on that front. If you want byte-by-byte perfection, look elsewhere. The Sonic Boom source code is intended to provide you with a plethora of bug fixes and enhancements designed to make your hacks better.
I wrote a wiki entry on Sonic Boom -- http://info.sonicret...nic_Boom_Engine. I will highlight the engine enhancements which I think are most important changes below.
ENHANCEMENTS:
## A new level layout format was created to conserve RAM. This allows levels to be much larger than even those from Sonic 3. It also separates physical layout from visual layout, allowing one meta-block to use a different meta-block's physical properties.
## Levels can now wrap at points other than 0x800. These include 0x2000, 0x1000, 0x400, 0x200, and 0x100.
## The maximum number of pattern load requests has been increased from 15 to 24. No additional RAM is required to make this possible.
## Each act can now have its own set of art.
## Now any level can have water, and you can also control the movement of the water for each level.
## Sonic and Tails can now start in different locations of a level. The 2 player vs. mode also has its own start positions for both players.
## Game demos now have more data associated with them. Each demo has data for the start position, length of the demo, which player the demo was recorded with, the zone and act, and whether or not two player split-screen was used.
## Knuckles the Echidna has been imported from Knuckles in Sonic 2. He can be enabled using the cheat code U, U, U, D, D, D, L, R, L, R at the title screen.
## The "Saxman" cheat was added to allow many other cheats and options be enabled through one code. The code is 01, 09, 08, 04, 00, 07, 02, 07.
## Invulnerability mode from the original Sonic the Hedgehog can now be used. It is enabled when the debug cheat is entered. To activate, hold A and press the start button when starting the game.
## A demo recorder has been added to the game. Hold the B button when entering a level with the demo recorder flag enabled (via the Saxman cheat) to start recording gameplay. Press the start button to stop recording. The demo will be played during the normal game demo sequence following the title screen.
## The in-game debugger from the original Sonic the Hedgehog has been imported.
## Support for 6-button controllers has been added.
## Sega 32X support added.
## The 32X version includes a new version of the Kosinski decompressor that runs on the SH-2. It provides a modest speed increase.
Additionally, the source code has been restructured in certain ways so data can be more easily maintained. For instance, the animals designated to each zone is now controlled by simplified tables that allow for easy maintanence and expandability. The same with water settings for each stage.
SONIC BOOM LEVEL FORMAT (SBLF):
I completely rewrote the code for the handling of level data. The source code still supports the original Sonic 2 level format. But now, optionally, hackers can choose to use the brand new Sonic Boom Level Format (SBLF). It does a couple things:
First, it separates physical layout from visual layout. This allows collision properties to be placed independant of their original meta-block associations. So the same meta-block at two different locations in the same level could have different collision properties assigned to it.
Second, a number of light-weight compression schemes are used so the levels take up less space in RAM.
Third, as made possible by the point noted above, levels can now be much larger than they were in the original Sonic 2. The maximum theoretical size of a level is 0x8000 x 0x2000. That's freakin' huge.
An earlier version of Sonic Boom was supported by an earlier version of S2LVL, although the current version does not fully support Sonic Boom (ring layout is, but not meta-block layout). I have provided plenty of documentation though, so interested individuals could add this support. Thanks to MainMemory for working with me on this.
In the downloads below, I have included a link to some utilities I created to convert standard Sonic 2 level format files over to the new Sonic Boom format.
DOWNLOADS:
Get Saxman's Sonic Boom engine source code and other goodies below:
Sonic 2 R3 (Genesis and 32X ROMs): https://onedrive.liv...88367A4D%211723
Saxman's Sonic Boom engine source: https://onedrive.liv...88367A4D%211722
Level layout format conversion tools: https://onedrive.liv...88367A4D%211716
SonLVL INI files (legacy level format only): http://1drv.ms/1z4fOUV
Sonic Boom engine documentation: https://onedrive.liv...88367A4D%211720
Sonic Boom Level Format (SBLF) documentation: https://onedrive.liv...88367A4D%211719
GIT HUB REPOSITORY
Saxman's Sonic Boom Engine is now on GitHub: https://github.com/saxman727/sboom
Please create a new branch with a unique name (I.e. NOT "sboom_#.##") if you wish to make modifications.
THANKS:
I didn't do a good job of keeping track of everyone who helped me in one way or another. If I forget anyone at all, then please accept my fullest appologies!
- redhotsonic
- Chilly Willy
- FraGag
- MainMemory
- nesboy43
- 87th
- MarkeyJester
- KingofHarts
- Eric Wright
- Overlord
- sasuke


00