Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Saxman's Sonic Boom Engine
Assembly Shell
Branch: master

README.md

SAXMAN'S SONIC BOOM ENGINE v1.00 A modification of Sonic 2

December 03, 2014


About:

Sonic Boom extends the Sonic 2 engine capabilities and makes it easier to add new levels to the game. It also fixes numerous bugs from the original game. It is based off the 2007 Sonic 2 disassembly.


History:

*** 1.00 (12/03/2014) ***

<<< Design changes >>>

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. To make this possible, modify the "LevelWrapPoint" table. The values must be one less than the wrap size (e.g. 0x7FF is used instead of 0x800).

The maximum number of pattern load requests has been increased from 15 to 24.

The header section of the ROM is now in it's own assembly file.

Constants were added for player, zone and PLC values. This makes it a whole lot easier to locate and keep track of specific code that uses these values.

Each act can now have its own set of art. In addition, the art and palette tables are no longer limited to the quantity provided. Add as many items as you'd like to these tables.

Animals can now be more easily assigned to levels by simply modifying the table at "ZoneAnimalsList".

Now any level can have water, and you can also control the movement of the water for each level. Modify "WaterHeight_Sonic" and "WaterHeight_Tails to set which levels have water and how high the water will be for each character. Use "WaterOscillation" to take control of how much and how fast the water moves for each level. To control the animation used for the surface, you can modify the "WaterSurfaceAnimation" table.

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. You can change the start positions using "StartPos_Sonic", "StartPos_Tails", and "StartPos_2P".

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. This data is found at "DemoData".

Support for 6-button controllers has been added. The extra buttons can be accessed using "Ctrl_1_Ext_Logical", "Ctrl_1_Ext", "Ctrl_2_Ext_Logical", and "Ctrl_2_Ext".

A 32X ROM can be built using the "BUILD_32X_ROM" constant.

The 32X version includes a new version of the Kosinski decompressor that runs on the SH-2. It provides a modest speed increase.

The checksum routine has been completely taken out of the game since it is largely unnecessary and undesirable.

A mistake in the disassembly has been corrected that would cause the continue screen to malfunction if it's associated data moved to a different location in the ROM.

<<< In-game changes >>>

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 different things to be changed in the game using a single code. The code is 01, 09, 08, 04, 00, 07, 02, 07. It can be entered at the options screen or level select menu. Any sounds played after those eight work as parameters for enabling and disabling things. To end the cheat, play sound 00. By turning off the "INCLUDE_SAXMAN_CHEAT" constant, this cheat can be excluded from builds.

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 to start recording gameplay. Press the start button to stop recording.

The A button will no longer reset settings in the options screen. In addition to this, the effects of the A button on the sound test now match that of the level select menu by not resetting the sound test value to zero when it wraps.

The in-game debugger from the original Sonic the Hedgehog has been imported. It is available when "DEVELOPMENT_MODE" is turned on.

A Sonic Boom startup screen will now run at the start of the game. To turn it off, change the "USE_STARTUP_SCREEN" constant. This screen will not run when the game is built with "DEVELOPMENT_MODE" turned on.

A typo in the credits (Carolann Hanshaw) has been fixed.

The 14 continues cheat now plays the correct sound. The chimes for that cheat and the 7 emeralds cheat were also fixed so they play when the region is set to European.

Rings will now wrap the level when vertical wrapping is used.

Collision behavior has been corrected with the final boss.

It is no longer possible to walk on air when walking off an arrow in Aquatic Ruin Zone's boss area.

Players no longer get stuck at the edge of the screen when doing a spindash.

The player will now move correctly while in air in Sky Chase Zone when the camera begins moving backwards.

The Super Sonic ring count now changes every 60 frames instead of 61.

You can no longer turn into Super Sonic at the end of a level.

Super Sonic now has a high jump when underwater.

The invincibility stars will disappear when turning into Super Sonic.

When the player has the super sneakers, the speed no longer reverts back to normal once the player goes underwater.

The player's speed is reset when death occurs in 2 player vs. mode.

Tails now has the correct speed when he flies back to Sonic after previously being underwater.

The speed of the music will revert back to normal after death in 2 player vs. mode. Invincibility music will also be replaced by the level music. This is assuming the other player does not have the super sneakers or invincibility respectively.

When turning back into Sonic in debug mode, the speed will adjust properly if the player was previously underwater.

The player's speed is no longer capped when trying to move in air. Because this behavior breaks some game demos, compatability is preserved via the "COMPATABILITY_DEMO_SPEED_CAP" constant. When this is set, the old behavior is used in demo mode.

The placement of objects in debug mode is now impossible when the player has just died. This is so the game won't crash.

Monitors can now be placed despite being previously broken in debug mode.

Debug mode is now fully functional as Tails.

Tails starts at the same X position as Sonic in 2 player vs. mode. There is an exception for demo mode to preserve compatability. Programmers can disable the exception via the "COMPATABILITY_DEMO_START" constant.

Scrolling in Emerald Hill Zone has been fixed so the bottom two rows of pixels scroll as they should.

The bottom half of the background now scrolls correctly in Casino Night Zone for the second player in 2 player vs. mode.

The game will no longer crash after hitting Rexon in Hill Top Zone.

The vertical camera position is now correct for Tails when rolling.

The ring count is now restored when leaving the special stage. The original game's behavior can still be used via the "RESTORE_RINGS_AFTER_SPECIAL_STAGE" constant. Set it to 0 and the old behavior will be restored.

A bug with the Casino Night Zone bumpers has been corrected. The bug was only exposed for 32X ROM builds.


Saxman cheat parameters:

On either the level select menu or options screen, enter 01, 09, 08, 04, 00, 07, 02, 07, followed by any of the following:

00 - End the Saxman cheat 01 - Enable/disable level select menu 02 - Enable/disable slow motion 03 - Enable/disable debug mode 04 - Enable/disable invulnerability 05 - Enable/disable Knuckles 06 - Enable/disable demo recorder 07 - Enable/disable Miles/Tails name swap 08 - Give player 14 continues 09 - Give player 7 emeralds

More than one parameter can be entered. The parameters list is ended with the 00 parameter.


Adding levels:

To add new levels, the following locations must be modified:

PalCycle
PalPointers_Water_SuperSonic
PalPointers_Water_SuperKnuckles
PalPointers_Level
PalPointers_Water
PalPointers_Water_SonicAndTails
PalPointers_Water_Knuckles
MusicList
MusicList2
WaterHeight_Sonic
WaterHeight_Tails
WaterHeight_Knuckles
WaterEventRoutineTable
DemoScriptPointers
Off_ColP
Off_ColS
WaterOscillation
SetLevelEndType
LevelDimensions
LevelWrapPoint
StartPos_Sonic
StartPos_Tails
StartPos_Knuckles
StartPos_2P
off_C296
JmpTbl_SwScrlMgr
DynamicLevelEventIndex
ZoneAnimalsList
LevelOrder
LevelOrder2P
word_15832
WaterSurfaceAnimation
PLC_DYNANM
AnimPatMaps
JmpTbl_DbgObjLists
LevelArtPointers
ArtLoadCues_Level
Off_Level
Off_Rings
Off_Objects
Something went wrong with that request. Please try again.