Sonic Generations (PC)

After a drought of Sonic games for the PC, Sega releases one for the PC! Now nobody will stop hacking into it. Also, it's not on the Japanese store, and a few weeks later those in Europe and Australia got it in PC DVD format!

Unlockable Sonic 1
In the console versions of Sonic Generations, you could purchase an item in the Skill Shop called the Sega Genesis/Mega Drive Controller to unlock the ability to play the original Sonic the Hedgehog. The PC version removes this entirely, leaving a blank spot in the HUB. However, files for it (such as the White World HUB song and shop icons) are still in the game.

Framerate
The game now runs at a consistent 60 frames per second on a PC meeting the right requirements – the console versions were capped at least by half, and even then there would occasionally be slowdown.

Lua Script
The game uses Lua script files (*.lua) for configuring some parts of the game. The Lua scripts included in #Application.ar.00 archive (contains the game's startup process and story sequences) were plain-text format in console versions, but PC version uses binary-compiled format instead. The actual contents of the script is presumably unchanged from the console versions, as the PC version accepts console version's Lua files just fine.

The game also uses Lua scripts in the missions and some of the bosses, but they are in plain text format for all versions.

Debug Leftovers
There are evidences that once a huge debug mode was present in the game.

Debug Leftovers in MainSequence.lua
The Lua script for boot sequence (disk/bb3/#Application.ar.00/MainSequence.lua, Plain-text version here) contains some debug-related stuff.

global("g_IsDebugSequence", 0);	-- デバッグシーケンスフラグ At the beginning of the file, there is a variable named "g_IsDebugSequence". If this value is 1, the Lua script will boot directly into the debug initialization (MODULE_DEBUGINIT) instead of the start of logo sequences (MODULE_NOTICE_CESA). However, the game will stuck at the black screen, because the game requires displaying the Havok logo to successfully initialize the game. In addition, this flag is reset to 0 when the game enters the title screen.

If the debug initialization (MODULE_DEBUGINIT) is entered from the title screen without setting g_IsDebugSequence to 1, the game will enter the main game, but with no visible changes.

If the debug initialization is entered AND the variable g_IsDebugSequence is 1, the lua script will try to enter the debug menu screen mode (MODULE_DEBUGMENU) instead of the hub world (MODULE_PLAYABLEMENU). However, the game will stuck at the last frame of "Sonic is falling" intro animation.

Sonic Unleashed Debugger Images
Images from the Sonic Unleashed debugger remain in the game.

All these debug images were in a folder named "reddog". An of Sonic Unleashed showed the debugger in action.

Unused Lua Files
disk/bb3/#Application.ar.00 holds these files. Some of them, such as ApplicationSettingDebug.lua and DebugLauncher.lua, seem to be unused.

ArchiveTree.xml EnemyArchiveTree.xml EventArchiveTree.xml LanguageTree.xml NPCArchiveTree.xml OtherArchiveTree.xml VoiceTree.xml ApplicationMain.lua ApplicationSetting.lua ApplicationSettingDebug.lua DebugLauncher.lua MainSequence.lua MainSequenceDemo.lua PlayableMenuNPCTalkSetting.lua PlayableMenuNPCTimeTable.lua PlayableMenuSequenceTable.lua scheduler.lua ScoreTimeTable.lua script_core.lua ScriptTest.lua StorySequence.lua StorySequenceDemo.lua StorySequenceUtility.lua Vibration.lua

Dummy "gi" Files
Within an unpacked bb3.cpk is an Application.ar.00 which contains these files:

10SYS_CMN.csb ev011.evs ev113.evs converse_common.dds gi-dummy-black.dds gi-dummy-blue.dds gi-dummy-gray.dds gi-dummy-green.dds gi-dummy-red.dds gi-dummy-white.dds gi-dummy-yellow.dds fxp_radial_noise.dds fxp_tonemap_mask.dds

There's a lot of "dummy" files in there. The dummy- is just a pixel of that respective color.

Internal Object Names
The game has a XML file which stores the name of each level object in Japanese, which will never seen in normal gameplay. The XML file organizes the objects by category, so it was possibly used by Sega/Sonic Team's level editor.

The dump of XML file is available in the Notes page.

Source Code File Names
The game's executable is scattered with the filename of the game's source code. For some reason, some of the filenames such as "hhMessage.h" is repeated many times in the exe. More info is on the Notes page.

Unused Super Sonic Character Text
In the Characters section of the art room there are 14 characters with biographies, however, the data includes text for an entry for Super Sonic, who's never seen in this section and lacks any other data for it in the XML files.

The name given to Sonic's ultimate form when he is  transformed through the power of the Chaos Emeralds. Sonic is more powerful than normal as Super Sonic, but he can remain so for only a short time due to the tremendous amounts of  energy required.

Unused Wisp Skill Descriptions
In Planet Wisp, Sonic can collect Wisps from Sonic Colors: Classic Sonic can use the Pink Spikes, while Modern Sonic can use the Orange Rocket. Normally, they're only in this level, but there are skill entries/descriptions for them in the skills file. However, they cannot be hacked into a save file, as they are missing from the game's Skill list.

Turns Sonic into an Orange Rocket to fly up.

Turns Sonic into Pink Spikes- Cling to surfaces!

Unused Mission Options
The mission levels have a "MissionScript.lua" file which sets the objective of the mission. The objective of the mission is set by calling "SetMissionType" function. Some of the objectives are never used.

Except for "OrderDashRing" (used) and "BreakEnemy" (unused), every mission type is described by the Japanese developer's comment in the mission script.

Default
-- "Default"			0				// 特に条件がない場合 -- "Default"			0				// No special conditions SetMissionType("Default", 0); This mission type has no objectives or limitations.

BoostMax
-- "BoostMax"			ブースト倍率	// ブースト全開 -- "BoostMax"			Boost Multiplier	// Maximum Boost SetMissionType("BoostMax", Boost Multiplier); This mission type doesn't seem to have an effect; presumably replaced by the Endless Boost skill.

BreakEnemy
SetMissionType("BreakEnemy", Number of enemies); Sonic must destroy certain number of enemies before reaching the goal. HUD shows an icon of Motobug, the number of enemies beaten, and the number of kills required. This mission type is not listed in the developer's comment.

Unused Music
The game features a few unused jingles and a prototype Green Hill Zone HUB song.

EMBB072_Invincible2_wav.aax
This song plays when Modern Sonic gets an invincibility box...but there aren't any in any Modern acts. It still works if you hack Modern Sonic into a Classic stage, however. This did eventually get used in the 3DS version.

EMBB075_1up_wav.aax
This song was unused in Sonic Adventure, used in Sonic Adventure 2 and returns to being unused in Sonic Generations! The actual 1-Up jingle in the game is stored as a short sound file instead.

PAMxx_Dummy_A_wav.aax through PAMxx_Dummy_M_wav.aax
An unused White World HUB song, which sounds like a beta or remix of the final Green Hill Zone HUB song.

Environment Map Secret


The environment map for Planet Wisp is actually made of screenshots made with the team's dev program, either due to ingenuity or laziness. The six parts of the image, which are assembled together to form a cube, all show Sonic running through the air in a nondescript location in Planet Wisp. Just below his feet is a ball made of red wires, which indicates the use of a 3D rotation tool. To further demonstrate the team's ingenuity/laziness, the last two sides are duplicates of the first two.

Sonic Unleashed Leftovers
Since Sonic Generations is basically just a modified Sonic Unleashed using the same engine there's bound to be leftovers in there. But more than you think. These images were extracted from the PC version and converted from .DDS to a more friendlier format.

Install Leftovers
Images that look like they'd be used during install progress.

Images from SystemCommon.ar.00
disk/bb/SystemCommon.ar.00 contain several images for debug mode/level editor things, plus the infamous Werehog icon.

Leftover Unleashed Renderer and Shader Tables
While there are new Shader Tables and a new optimized renderer, it looks like Sega forgot to take the old ones out. Oops.

One thing you can notice right off the bat is that the Unleashed renderer uses more intense motion blur. This is not so on the one that is used in game. Additionally, the Unleashed version displays angular shadows (objects cast their shadows at an angle depending on the light source), which is not the case in Generations.

Others
Also included are logos from Sonic Unleashed/Sonic World Adventure, all of the Hints (picture wise), and every single inventory item/collectible.

Unused Sonic parameters
Sonic's parameters (such as his speed) are stored in disk/bb3/#SonicClassic.ar.00/SonicClassic.prm.xml (Classic Sonic) and disk/bb3/#Sonic.ar.00/Sonic.prm.xml (Modern Sonic). Some of the parameters are unused.

OnIce2D/OnIce3D
There are Friction/Acceleration/Velocity-related settings for ice surfaces, but since there are no ice-themed levels in Generations, these settings are unused.

XButtonHoming
false If set to true, Modern Sonic can no longer perform the Air Dash, and Homing Attack is performed by pressing X. For Classic Sonic, he can use the Air Dash by pressing A, but he still needs the Homing Attack skill (unlocked by collecting all Red Rings from Planet Wisp Act 1) to actually home into the enemies. He also becomes unable to activate the double-jump ability of elemental shields.

Debug Options
    false false false false false </Param> </Damage> <Skill> <Param> <DebugSkillCancelEnabled>false</DebugSkillCancelEnabled> <DebugSkillSpikeEndless>false</DebugSkillSpikeEndless> <DebugSkillSuperSonic>false</DebugSkillSuperSonic> </Param> </Skill> </Category> </Debug> Unfortunately, none of these debug options are functional in the retail version. Sonic still takes damage and dies regardless of these settings.

Other Things

 * Some of the rings in Classic Sonic's levels have the "light dashable" flag on, which won't do anything when playing as Classic Sonic.