Users browsing this thread: 1 Guest(s)
Sonic Adventure 2 PC Version
#1
THE GOAL OF THIS RESEARCH :

https://www.vg-resource.com/thread-29688.html

BASIC INFO :

Originally for the Dreamcast.
Developed by Sonic Team, published by SEGA.
Ported to GC and PC in 2001 and 2012.


KNOWN (FILE FORMATS) :

Uncompressed (not in an archive, anyway):
ADX : Dreamcast audio (songs)
MLT : Dreamcast audio (sfx)
SFD : Video file
M1V : Technically a video file, but often used for particle effects (Chaos Control)

Compressed files:
PAK: Compressed (various) files.
PRS: Compressed (various) files.

Files contained in PRS/PAK:

DDS (Direct Draw Surface): Textures (Microsoft's format, interestingly)
Ninja Chunk: Model format (characters, objects, and stages)

HOW DATA IS STRUCTURED :

Folders:
root (Sonic Adventure 2)/resource/gd_PC/
 in gd_PC:
ADX: ADX audio files
Debug: Debug Font
DLL: DLLs
event: Cutscene/event files
Font: font (which isn't actually used for most things, as text is usually prerendered)
Message: Messages with button icons
MessageK: Messages with key icons
MLT (Manatee Library): Sound effects
MPB: More sound effects
PRS: Texture/Stage/Model/Main Menu and Stage Map Files (in the PAK format)
SAVEDATA: Save data
SOC: 2P and Menu Textures

PRS files in root: particle and effect textures, PRS may have been used on DC.
SET/BIN files: Stage layouts

Objects are included in the archive for every instance they're used (so stages that use the same items have duplicates in their folder).
This is likely what resulted in some cutscenes using Dreamcast models and others using higher-poly ones.

From vg-resource:

"Sound Effect files are stored in the files with SE in beginning of the filename.

The files with EH are for the Emerald Hunt hints that come from the monitors. The MH files, if memory serves, are for Omochao and monitor hints in levels.

All of the SET files are files that place objects in a level. If you're familiar with SADX modding, they're the same thing. SA2 just happens to use them for a lot more stuff than just objects.

All stage data is stored in STG file names with just the stage ID attached. The _FOG, etc, files are for handling other aspects of the stage.

All character data is stored inside any files with a character name in it and MDL also in the filename. Here's a list of all of the character files.

sonicmdl    Sonic
teriosmdl    Shadow

knuckmdl    Knuckles
rougemdl    Rouge

twalkmdl    Tails Mech
ewalkmdl    Eggman Mech

eggmdl        Eggman
milesmdl    Tails

ssonicmdl    Super Sonic
sshadowmdl    Super Shadow


==Alt Costumes==
psosonicmdl    PSO Sonic Costume
psoshadowmdl    PSO Shadow Costume

bknuckmdl    Black Knuckles Costume
brougemdl    Black Rouge Costume

twalk1mdl    Tornado 1 Costume
ewalk1mdl    Camo Costume


==Alt Characters==
amymdl        Amy
metalsonicmdl    Metal Sonic

ticalmdl    Tikal
chaos0mdl    Chaos 0

cwalkmdl    Chao Walker
bwalkmdl    Big the Cat Walker


==Halloween Costumes==
hsonicmdl    Sonic with Pumpkin
hshadowmdl    Shadow with Bones

hknuckmdl    Knuckles with Bones
hrougemdl    Rouge the Witch

htwalkmdl    Tails Pumpkin Colors
hewalkmdl    Eggman Pumpkin Colors


==Christmas Costumes==
xsonicmdl    Sonic as Santa
xshadowmdl    Shadow as Santa

xknuckmdl    Knuckles with Ornaments
xrougemdl    Rouge Christmas Colors

xtwalkmdl    Tails Christmas Colors
xewalkmdl    Eggman Christmas Colors

"


Stage files/data addresses:

    http://info.sonicretro.org/SCHG:Sonic_Ad..._Locations

RIPPING STAGE DATA :

MainMemory's SALVL can rip level geometry.
The issue is with things like enemies that store data making use of the Ninja format's cache.
Animated objects do not read properly:
    https://www.vg-resource.com/archive/inde...29688.html
I suspect that some enemies like the Artificial Chaos Units may actually not use skeletal animations.

Current code used to load model vertices:
    https://github.com/sonicretro/sa_tools/b...ch.cs#L200

Video tutorial (this is for the Dreamcast version):

https://www.youtube.com/watch?v=oB1ZYNp9bEc


EVERYTHING BELOW THIS POINT IS MISCELLANEOUS, PERSONAL RESEARCH, AND/OR SPECULATION

Sonic Adventure 2's shadows on Dreamcast do not use the same LANTERN engine as Sonic Adventure 1.
Certain areas have prerendered shadows (trees in City Escape, and the bridge in the limo cutscene).

The Dreamcast was the only console to support Order-Independent-Transparency on the hardware level.
This means that it could load a series of transparent items without much problem.
The GameCube did not, so places requiring transparency (for the most part) had to have textures edited or changed.
Texture fighting can be seen on Super Sonic's body and when Dr.Eggman shines the flashlight (the windshield appears over the light).

Character lighting is duller and less detailed that the Dreamcast version, likely because of hardware differences that could make the same shading difficult to implement.

In the file resource/SHADER/win32/obj.pak, there are several WPU/WVU files.

According to YouTuber Darío, the same file format is used in Generations for the same purpose, and can be read using the Windows SDK.

"Done by carefully implementing the WPU/WVU files from the game. I had to crack all the related shader files to get the right indices for knowing which registers to pass the parameters to and what shader to use in the correct occasion. There's quite a lot of inaccuracies and non-working shaders due to not having implemented most of the buffers / parameters it needs just yet, but this is what can be previewed so far. The WPU/WVU files were disassembled to HLSL ASM with the Windows SDK."

Video of SonicGLVL here:

https://www.youtube.com/watch?v=1OorZ6Sjfmg

I believe that it is actually a very similar format, not just the same extension, because the PC version actually repackages Windows DirectX (graphics) libraries.

The (Generations) shaders say "Generated by Microsoft ® HLSL Shader Compiler 9.29.952.3111"

SonicGLvl source code can be found here:
https://github.com/DarioSamo/libgens-son...GI.wpu.asm

Looking up HLSL Shader Compiler returns only source code for converting HLSL to .DIRECTX shaders.

THE WINDOWS SDK:
I saw no mention of shaders, HLSL, or the WVU/WPU format on Wikipedia, but here's the SDK:
https://developer.microsoft.com/en-us/windows/downloads

POSSIBLE METHOD FOR OPENING MODELS:
Programmer Rich Whitehouse has created a program called Noesis (I think the name means something like 'enlightenment' in Greek, not sure) that apparently supports the Ninja Chunk format. It is open source, but I have yet to test it.

Note: Not direct download:
http://www.richwhitehouse.com/index.php?...sv4395.zip


NOTE: I have been informed (see reply) that there is no connection between the RenderWare Engine and Sonic Adventure 2.

The RenderWare Engine was used for Sonic Heroes:
  https://gta.fandom.com/wiki/RenderWare

Shaders (not model shaders, just overall ?Framebuffer? (applied after everything else is rendered) shaders) copied from GTA: San Andreas (which also uses the RenderWare engine) work in SA2:B (see video)
  https://youtu.be/Yrjm-fRYpIM
Note: to fix the bug that he refers to in the description, open the DLLs in a Hex Editor and then remove/edit the text lines that match the ones that appear at the top left (In Resource Hacker, which isn't a hex editor, I know, if it asks to recompile the code, select yes).

ANY INFO ON THE NINJA CHUNK MODEL FORMAT IS WELCOME
Reply
Thanked by:
#2
So, given this is one of my favorite games, I thought I'd at least pop in to comment; first of all, we now CAN get every model from the game essentially. TGE went ahead and made a tool for it. Getting some things is more annoying than others are there are some quirks such as needing to apply textures manually, but thankfully obtaining textures isn't an issue and with some elbow grease you can get around the rest.

https://www.vg-resource.com/thread-33758.html

Most models, though not all, are in the EXE on the pc version. A predumped set of these in .dae format can be found here: https://1drv.ms/u/s!AmsmLjy_fwAMgdJ2IUg3__-AZIw4pQ
Some, though not all, of them have swapped red and blue vertex colors. This script will fix that in 3ds Max: https://1drv.ms/u/s!AmsmLjy_fwAMgdJ3kuAlhTm-mc6pMg
Textures can be dumped using PVMEditSharp in SATools: http://info.sonicretro.org/SA_Tools

I'd advise trying to do final export for them with vertex coloring intact as it adds a lot of detail. This means exporting the resulting import to .dae/.fbx for example. .obj does NOT retain vertex coloring.

Second, levels are currently not exported in a nice way from SALVL. While it will work, vertex coloring loss will result in a lot of detail loss. If you're willing to accept this though, then yes it is a method of getting them. TGE's tool would be the better option here.

Third, SA2 has zero ties to Renderware. The shaders you're looking at are not what you're probably thinking they are. As a trivia fact though, Heroes and Shadow the Hedgehog do build on what SA2 had as a base for logic systems.

It's also worth noting that yes, noesis does support ninja chunk to a degree and ItsEasyActually found a simple way to make files using that format readable to noesis. His work can be found here: https://mega.nz/#!adAXRYSR!Jj6EBOyrXq3sz...t19_O3jpKY

Using that, you can also use my script along with SA Tools's animation conversion to bring the animations into 3ds Max: https://gamebanana.com/tools/6545

Anyways, I frequent the X-Hax discord and am in a good few other discords including the DYKG/VG Resource one. Feel free to hit me up there I suppose if you'd like more help with this. I don't check here especially often these days admittedly though I try to look every now and then.
Reply


Forum Jump: