For hacking/de-compiling/ripping open sonic generations pc, please go to this page:
3 useful Programs that are listed there (and more):
QuickBMS:
QuickBMS is used to extract CPK files (*.cpk) from the disk and sound folders of Sonic Generations.
CPKREDIR:
CPKREDIR by Korama, a Tech Member of Sonic Retro, is a DLL that intercepts attempts by Sonic Generations to read files within a CPK archive.
Generations Archive Editor:
MainMemory, also a Tech Member of Sonic Retro, has adapted his SADXsndSharp tool to work with Generations' .ar.** files and its stage .pfd files.
SonicGLVL:
Dario FF, another Tech Member, has created a level editing and importing program called SonicGLVL, available for download here. This allows users to create and remove objects, as well as to import Ogre .scene files into Sonic Generations to use as level geometry.
While actually using the Generations Archive editor I ran into a problem with one particular file [So I created a README.txt file explaining what exactly happened] (see below):
README:
When the files were extracted there were some that did not fully extract.
In bb -> sph205.ar.00
For this file there was an error when using the "extract all" option,
with the Generations Archive editor, and this appeared:
-----
"Unhandled exception has occurred in your application. If you click
continue, the application will ignore this error and attempt to continue. If
you click Quit, the application will close immediately.
Illegal characters in path."
-----
And the details provided for this appeared below that:
-----
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.ArgumentException: Illegal characters in path.
at System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String[] str)
at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, AccessControlActions control, String[] pathList, Boolean checkForDuplicates, Boolean needFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.File.WriteAllBytes(String path, Byte[] bytes)
at Generations_Archive_Editor.MainForm.extractAllToolStripMenuItem_Click(Object sender, EventArgs e) in C:\Users\Mike\Documents\Visual Studio 2008\Projects\Generations Archive Editor\Generations Archive Editor\MainForm.cs:line 105
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5485 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
Generations Archive Editor
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/zac.hughes/Downloads/My%20Stuff/Sonic%20Generations%20Modding/GenArcEd/Generations%20Archive%20Editor.exe
----------------------------------------
Ar00Lib
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/zac.hughes/Downloads/My%20Stuff/Sonic%20Generations%20Modding/GenArcEd/Ar00Lib.DLL
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5491 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5485 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5491 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5485 (Win7SP1GDR.050727-5400)
CodeBase: file:///C:/windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
-----
*Also to note, when counting the viewable files in the Generations Archive Editor,
there was a total count of 76 files, while the files shown that was extracted is a total,
of only 50 files.*
If you see this, do any of you understand it, or what went wrong?