The Sonic Cutscene Thread

Discussion in 'Engineering & Reverse Engineering' started by ChickenWingJohnny, Mar 28, 2021.

  1. ChickenWingJohnny

    ChickenWingJohnny

    The Absolute Madlad Member
    2
    0
    1
    Hi!
    I've looked everywhere on the internet, and haven't seen a single thing about ripping sonic cutscenes. So, I thought I'd make this thread, and tell y'all what I've figured out about certain games.

    Sonic Rush Series:

    My first topic will be about the Sonic Rush series. These cutscenes I've been able to fully recreate in blender.
    Here's a demonstration of what I was able to do:


    As I've said, there's little help available on the web, so here's a brief guide on what I found:

    Sonic Rush Adventure's cutscenes are found in the narc folder, prefixed with a pldm.
    upload_2021-3-28_9-40-17.png

    It means player demo, and some files share some models with another, and are named with the order they appear in. The intro animation isn't the one I've highlighted, it is instead prefixed with a dmop (demo opening), a little above this one.

    upload_2021-3-28_9-42-16.png

    I unpacked the .narc files, took the model/animation files, and extracted them using apicula (https://github.com/scurest/apicula) into gltf. I then took the animations, layered them using blender's Non-linear-Animation tab, and voila! The final product.

    Screenshot 2021-03-28 095738.jpg

    This pattern can be replicated among all the other cutscenes in the game, although I haven't tried, since it is EXTREMELY tedious.

    Sonic Rush's cutscenes are similar, yet the files are spread across the game cartridge. The scene that I've been wanting to find, the ending scene, I've never been able to locate, so...

    Finding the ending cutscene in Sonic Rush's files could be a conversation topic here.

    Sonic Unleashed:

    Another game's cutscenes I've been looking into is Sonic Unleashed.

    As proven by XxSuperShadicxX on Youtube, it is possible to rip Sonic Generations' cutscenes, although the methods of which aren't made clear...



    Since the files of the 2 games are similar, one other person and I figured we could do the same with Unleashed.

    The first thing we were able to do was locate the cutscene character models.
    upload_2021-3-28_10-20-35.png

    After unpacking, we got a character model without a mouth:

    [​IMG]

    We also found the cutscene event files. The file structure is similar to Sonic Rush Adventure's, in which the order of the cutscenes is laid out clearly.

    upload_2021-3-28_10-27-54.png

    After unpacking the archive, fixing the animations, and applying them to the character, this is what we got:
    https://cdn.discordapp.com/attachments/718104451646488668/775780363800281108/2020-11-10_11-53-31.mp4
    A model with no root motion, nor lip sync.

    Here's the original cutscene for reference (start at 21:31):


    We also found the audio to the cutscenes (Path: Sound/Inspire). Sometime soon, I'll probably rip all the audio and put it on the sounds resource. Just in case you want to know what I used to rip the sound, I used SonicAudioTools (https://github.com/blueskythlikesclouds/SonicAudioTools)

    Edit: Someone already ripped the cutscene audio, you can go and get it here:
    https://www.sounds-resource.com/xbox_360/sonicunleashed/

    Finding the root motion/mouths for Sonic Unleashed is essential to remaking the unleashed cutscenes, and will be helpful for many fan projects. This is another topic we could find the answer to.

    If anyone else has their own questions or findings, feel free to post it in this thread. I hope this will become a valuable resource to any budding cutscene ripper.
     
    Last edited: Mar 28, 2021
    • Informative Informative x 2
    • List
  2. Speeps

    Speeps

    Member
    122
    40
    28
    I decompiled the cutscenes for Sonic's story in SADX (and a few of Tails' ones) a few months ago with the symbol names from the 360 leak. They're all done through in-game functions, so it's pretty easy to make major changes.

    Here's an example of how cutscene code looks:

    upload_2021-3-28_18-49-5.png

    I cleaned up a lot of the junk in them. The unedited code IDA generates creates a new variable every time it wants to reference an object, plus dumb things like multiple EV_Wait calls in a row and checking which language is used to do nothing but shut a character's mouth regardless of the result.

    A few things I found:
    • Sonic doesn't jump on the Tornado 2 because he's still doing the stage clear pose. Even when he's forced out of it, the inputs the game gives him are old and he gets stuck on a nearby object. He's fine in Tails' story though.
    • Sonic is missing an animation when facing the Egg Viper because it plays too early and overrides his jump.
    • Face motions are represented by letters. Each letter represents a different animation, which is usually combined with others as seen in the image. Some I'm pretty sure aren't used but I haven't checked.
    • There's quite a few parts where the game checks the language, usually to adjust mouths for dialogue length though.
    • When Sonic and Knuckles collide after fighting there's an unused dust effect for the impact.
    • You need to wait a least one frame after creating an object to reference it. Tails is missing for the first part of the scene before fighting Gamma because someone forgot about this. Instead of fixing it, they hid him behind Eggman. Gamma is also affected but the only thing you're missing out on is a slower standing pose.
    • Metal Sonic is compatible with all of Sonic's cutscene animations, you just need to change the model and texture reference.
    • Almost everything can have its speed set, so events can be rewritten to play at any framerate. The only thing that can't is when the event relies on physics, like making someone fall or ordering button input.
     
  3. MainMemory

    MainMemory

    Kate the Wolf Tech Member
    4,525
    133
    43
    SonLVL
    As far as ripping them into Blender or such goes, you're out of luck, you'd have to recreate them by hand with the relevant models and animations.

    SA2 is much easier to deal with in this regard, the data is stored in the e####.prs files in the event folder, and you can use splitEvent in SA Tools to extract all the models and animations from an event, which can be imported into Blender with an addon. However, you cannot import the entire event all at once, and you cannot import the shape motions which control characters' facial and hand motions, or the camera motions (iirc). Hopefully someday we'll get all of that working. There's also an event viewer in SA Tools if you just want to look at them.