The Sonic Origins Music Situation

Discussion in 'Discussion & Q&A' started by MDTravis, Jun 9, 2023.

  1. MDTravis

    MDTravis Local Prototyper Member

    Dec 22, 2019
    As we all know, Sonic Origins included some rather low-quality music as the replacement tracks for Brad Buxer’s contributions. These would be the tracks that were heard in the PC release in MIDI form. It is said by the social media team that Jun Senoue would be redoing the tracks on the original hardware. That sounds pretty fun, right?
    …or did he?
    I'll first be talking about the Universal Voice Bank and its different versions.

    In the final game, certain songs use a set of voices that are at the beginning of each Z80 sound bank. If you understand SMPS Z80, you’ll understand what I mean. This is what’s known as “Universal Voice Bank”. I’ll be shortening it to UVB from now on. The following list of songs in the final game uses the UVB:
    In the prototype, there is no UVB at the top of each bank. Instead, songs that use the UVB have the whole bank attached to the song itself, like the non-UVB songs. The following additional songs in the prototype have the UVB attached:
    The UVB used in these songs is different from the final release. I’ll call the final version of the UVB the “Final Bank”, and the version in the prototype the “1103 Bank”. There is, however, one more version bank. Within the same prototype, a few of the UVB songs have an earlier version of the UVB appended to the file. I’ll be calling this version the “Old Bank”. The following songs in the prototype use the Old Bank:
    This is documentation on what voices got updated in each bank, and what were moved or duplicated.​
    Well, how do we even know this "Old Bank" is even an older bank? This section will be split into parts, showcasing individual songs that lead into evidence of why the Old Bank actually is an older version.

    Angel Island Act 1
    In the prototype, one of the most notable differences in the song is the usage of a distorted guitar instrument in place of the flute. You can hear this version of the song here. Turns out, that’s a leftover from the Old Bank! Within the Old Bank, the voice slot that holds the distorted guitar originally held a duplicate of an older version of the flute voice. When they swapped out the UVBs, this wasn’t updated. A similar situation happens with Hydrocity Act 1.
    Angel Island Act 1 with the Old Bank can be heard here, and the same with Hydrocity Act 1 here.

    Save Menu
    As stated before, the Save Menu in the prototype uses the Old Bank. You can hear this version of the song here. In the final game, it’s of course updated to the Final Bank. It seems that they didn’t modify what voices to use though, so the piccolo instrument (replaced with a flute in 1103 Bank) used in the song was replaced by the distorted guitar. This is basically the inverse of what happened to Angel Island Act 1.

    I've listed comparisons alongside basic research here.

    Songs with unaligned voices
    Since the Old Bank has some different voices in some slots, many songs sound rather grating when applying the old bank to these songs, unlike Angel Island Act 1 and Hydrocity Act 1.
    There are many other misc things to mention, but they aren’t too grating to bring up here.
    So, why am I talking about the Old Bank so much? The Origins replacement tracks use the Old Bank.
    That’s right! Those unique voices you hear in the Old Bank? Those are heard in the Origins replacement tracks! I’ll also split this off into sections to explain what’s what. This’ll also explain other technical things that suggest the Origins versions are actually older versions of the song.

    I should note that Ice Cap Act 2, Credits, and Competition Menu remain identical in the prototype

    Carnival Night Act 1
    In the Origins version, the key is lower than the prototype version by 3 semitones. Turns out, in the prototype, the header has all the channels set to play 3 semitones higher than the programmed key. The instrumentation, key, and note differences of the Origins version are present in the PC version.
    ;    Notice how the pitches here are 3 values higher than they should be.
    ;    This makes each channel play 3 semitones higher.
    ;                                    vvv Pitch Value
        smpsHeaderDAC       s3p7_DAC,    $00, $0A
        smpsHeaderFM        s3p7_FM1,    $03, $15
        smpsHeaderFM        s3p7_FM2,    $03, $15
        smpsHeaderFM        s3p7_FM3,    $03, $14
        smpsHeaderFM        s3p7_FM4,    $1B, $12
        smpsHeaderFM        s3p7_FM5,    $03, $18
        smpsHeaderPSG       s3p7_PSG1,    $03, $05, $00, sTone_0C
        smpsHeaderPSG       s3p7_PSG2,    $03, $05, $00, sTone_0C
        smpsHeaderPSG       s3p7_PSG3,    $00, $03, $00, sTone_0C
    ;                                     ^^^ Pitch Value
    Carnival Night Act 2
    The weird bell heard in the second section of the song is unique to the Old Bank. It's the same voice that's used as that very high-pitched voice in those previews I've shown earlier. It was replaced by a twinkly piano-like voice in the 1103 Bank (which was duplicated to $1D). All the other voices used here are also present in the Old Bank, though most of the rest weren’t updated in the 1103 and Final versions. This instrumentation and note differences are present in the PC version.

    Ice Cap Act 1
    This is identical to the prototype version, but it uses Act 2's voices. If you apply Act 2's voices to Act 1, it'll sound identical to the Origins version.

    Launch Base Act 1
    The most complex of them all.

    Interestingly, the prototype does not have a pitch difference in the header, suggesting the whole song was re-imported. The bugged DAC is not present in the Origins version, and all the bugged notes are not present. This also features voice changes that aren’t present in the prototype version… but they are!

    In the data for the song, there are sets of commands that change the modulation. detune, and voice settings for the song, but it often just set it to exactly what it was before. These are placed exactly where they are changing things in the Origins version. It is also impossible to tell if this track is actually from an earlier prototype, as all the voices this version of the song used never changed across any version of the UVB. The key of the Origins version is present in the PC version.
    ;    An example of redundant voice swaps.
    ;    This is the beginning of FM2 in Launch Base 1.
        smpsSetvoice        $0A                    ;    Voice is set to 0A
        smpsDetune          $04                    ;    Detune is set to 04
        smpsModSet          $0F, $01, $06, $06    ;    Modulation is set to 0F010606
        smpsCall            s3p13_Call02
        smpsSetvoice        $0A                    ;    Voice is set again, albeit identical to last set.
        smpsDetune          $04                    ;    Also identical.
        smpsModSet          $0F, $01, $06, $06    ;    Also identical.
        smpsSetvoice        $0A                    ;    Just like last time, this is also redundant.
        smpsDetune          $04                    ;    More redundancy.
        smpsModSet          $0F, $01, $06, $06    ;    You get the point.
        smpsCall            s3p13_Call03
        smpsJump            s3p13_Jump04
    I've made a recreation of the Origins version here.

    Launch Base Act 2
    The unique piccolo voice is used in a section of the song. Like Act 1, there is also a redundant voice change here, which switches to the piccolo in the Origins version, at the exact place. This instrumentation and note differences are present in the PC version.
        smpsSetvoice        $03                    ;    Set once...
        smpsDetune          $FE
        smpsModSet          $0F, $01, $06, $06
        dc.b    nC3, $16, nRst, $02, nG3, $10, nRst, $02, nC4, $04, nRst, $08
        dc.b    nG3, $10, nRst, $02, nC4, $04, nRst, $08, nG3, $04, nRst, $08
        dc.b    nBb3, $16, nRst, $02, nA3, $10, nRst, $02, nF3, $04, nRst, $26
        dc.b    nA3, $0A, nRst, $02, nG3, $04, nRst, $14, nG3, $10, nRst, $02
        dc.b    nC3, $04, nRst, $7A, nBb2, $0A, nRst, $02, nD3, $0A, nRst, $02
        dc.b    nC3, $16, nRst, $02, nG3, $10, nRst, $02, nC4, $04, nRst, $08
        dc.b    nG3, $10, nRst, $02, nC4, $04, nRst, $08, nG3, $04, nRst, $08
        dc.b    nBb3, $16, nRst, $02, nA3, $10, nRst, $02, nF3, $04, nRst, $26
        dc.b    nA3, $0A, nRst, $02, nG3, $52, nRst, $02, nG3, $06, nC3, nD3
        dc.b    $48, nRst, $0C, nG2, $06, nA2, nBb2, $16, nRst, $02, nF3, $10
        dc.b    nRst, $02, nBb3, $04, nRst, $08, nF3, $10, nRst, $02, nBb3, $04
        dc.b    nRst, $08, nF3, $04, nRst, $08, nAb3, $16, nRst, $02, nG3, $10
        dc.b    nRst, $02, nEb3, $04, nRst, $26, nG3, $0A, nRst, $02, nF3, $04
        dc.b    nRst, $14, nF3, $10, nRst, $02, nBb2, $04, nRst, $7A, nG2, $0A
        dc.b    nRst, $02, nAb2, $0A, nRst, $02, nBb2, $16, nRst, $02, nF3, $10
        dc.b    nRst, $02, nBb3, $04, nRst, $08, nF3, $10, nRst, $02, nBb3, $04
        dc.b    nRst, $08, nF3, $04, nRst, $08, nAb3, $16, nRst, $02, nG3, $10
        dc.b    nRst, $02, nEb3, $04, nRst, $26, nG3, $0A, nRst, $02, nF3, $52
        dc.b    nRst, $02, nF3, $06, nBb2, nC3, $52, nRst, $0E
        smpsSetvoice        $03                    ;    Set again with identical values...
        smpsDetune          $FE
        smpsModSet          $0F, $01, $06, $06
        dc.b    nF4, $16, nRst, $02, nBb4, $10, nRst, $02, nF4, $04, nRst, $08
        dc.b    nD4, $04, nRst, $02, nF4, $0A, nRst, $02, nA4, $0A, nRst, $02
        dc.b    nF4, $0A, nRst, $02, nBb4, $16, nRst, $02, nA4, $10, nRst, $02
        dc.b    nG4, $04, nRst, $08, nF4, $10, nRst, $02, nF4, $0A, nRst, $02
        dc.b    nG4, $0A, nRst, $02, nA4, $04, nRst, $08, nF4, $04, nRst, $08
        dc.b    nD4, $04, nRst, $08, nF4, $14, nRst, $04, nD4, nRst, $08, nF4
        dc.b    $04, nRst, $08, nG4, $64, nRst, $08, nF4, $16, nRst, $02, nBb4
        dc.b    $10, nRst, $02, nF4, $04, nRst, $08, nF4, $04, nRst, $02, nG4
        dc.b    $0A, nRst, $02, nA4, $0A, nRst, $02, nF4, $0A, nRst, $02, nD5
        dc.b    $16, nRst, $02, nC5, $10, nRst, $02, nBb4, $04, nRst, $08, nF4
        dc.b    $04, nRst, $02, nG4, $04, nRst, $02, nA4, $04, nRst, $02, nBb4
        dc.b    $0A, nRst, $02, nC5, $0A, nRst, $02, nA4, $22, nRst, $02, nG4
        dc.b    $08, nRst, $04, nG4, $64, nRst, $02
        smpsSetvoice        $03                    ;    Oh, the redundancy...
        smpsDetune          $FE
        smpsModSet          $0F, $01, $06, $06
        dc.b    nD3, $06, nE3, nF3, nG3, nA3, nB3, nD4, nEb4, $0A, nRst, $0E
    Super Sonic
    To those of you that still believe Jun Senoue did the replacements, this is actually the only one he did for Origins. This isn’t UVB. Or SMPS. Or even a Genesis song. This is using the exact same method Jun Senoue used for his “Sonic the Hedgehog 4: EP II” soundtrack, using the same VSTs. It’s obvious with Sonic 4 and this new track that he actually didn't do any of the other songs here.
    In conclusion, Sonic Origins would logically have to use older versions of the prototype songs. It seems to be whatever Sega had in their archives, and they never updated it with any later revisions created. This same set of songs was used in Sonic & Knuckles Collection, which also has plenty of more oddities with prototype leftovers (such as Mushroom Hill 1 lacking its intro like 1103, and the bass of Sky Sanctuary resembling the prototype version).

    Collective research done by MDTravis, Mastered Realm, ehw, and Bouncy Glow.
    Extra discoveries found by Chainspike and Dio-ZX.
    Last edited: Jun 9, 2023
  2. Clownacy

    Clownacy Retired Staff lolololo Member

    Aug 15, 2014
    Excellent write-up! It's great to have all of this explained in such detail - even an SMPS nerd like me didn't know most of this information!