don't click here

Sonic Jam unused objects

Discussion in 'Engineering & Reverse Engineering' started by evilhamwizard, Aug 16, 2016.

  1. evilhamwizard

    evilhamwizard

    Researcher
    1,392
    455
    63
    Wasn't sure either to post this in some other thread as it's quite small.

    I figured out some things about objects in Sonic Jam. The game uses a set file for the stage layout just like Sonic Adventure that's fixed at 0x8000 bytes. Each object in the set file is 0xF bytes long. I don't know much about the other values, but I do know that the second byte in each entry is the object ID. The other bytes are more than likely X/Y/Z coordinates and rotation data, probably not single precision floating point (as far as I know).

    Like Sonic Adventure, there is a resemblance to the object table used in stages that's stored in the Sonic World binary (MUSEUM.MUS, anything with a .MUS extension is for Sonic World/Museum). The binary file contains the code and some other data for the Sonic World, the menus, challenges, etc. This file has a base address of 06040000.

    In the US version, there is a table that exists at 0605EF34 in MUSEUM.MUS that contains a series of data related to objects as part of this structure:

    00000000 ObjListEntry struc ; (sizeof=0x20)
    00000000 LoadingSub: .data.l ? ; offset
    00000004 Unk_A: .data.b ?
    00000005 Unk_B: .data.b ?
    00000006 Unk_C: .data.b ?
    00000007 Unk_D: .data.b ?
    00000008 Obj_Name: .data.b 8 dup(?) ; string(C)
    00000010 PtrTable: .data.l ? ; offset
    00000014 DataPtr1: .data.l ? ; offset
    00000018 DataPtr2: .data.l ? ; offset
    0000001C DataPtr3: .data.l ? ; offset
    00000020 ObjListEntry ends

    "LoadingSub", is the main subroutine for the object. Each entry in the table only makes reference to one location for code. The four Unk byte entries I have no idea. Possibly parameters of some kind? "Obj_Name" is a hardcoded string containing the name of the object (fixed to 8 bytes long, with the 8th byte being a terminator). This is unlike Sonic Adventure, which references the name of an object by pointer, rather than listing it directly as part of the struct. "TblPtr" always points to a small list of pointers that point to other subsets of pointers, maybe this is referencing some kind of model data? The three DataPtrs contain some misc data which can be sometimes null'd out depending on the object, so what they point to I have no idea either.

    The most interesting thing are the objects that are available in the game. Here's a list:
    00 - RING
    01 - CARD
    02 - DOOR
    03 - WACOLLI
    04 - BXCOLLI
    05 - SOUND
    06 - HISTORY
    07 - MOVIE
    08 - CHARA
    09 - GALLERY
    0a - EXIT
    0b - YASHI
    0c - KI01
    0d - TOTEM
    0e - TOTEM2
    0f - ENCOLLI
    10 - BARU
    11 - -------
    12 - F_IWA
    13 - CHECK
    14 - CHECK2
    15 - BANE
    16 - H_SONIC
    17 - H_EGG
    18 - H_DAIZA
    19 - -------
    1a - MONITA
    1b - POL1
    1c - POL2
    1d - ARCH
    1e - -------
    1f - -------
    20 - SIBU
    21 - SOUN_IN
    22 - GALL_IN
    23 - HIST_IN
    24 - CHAR_IN
    25 - MOVE_IN
    26 - FLICKYB
    27 - FLICKYG
    28 - FLICKYP
    29 - FLICKYR
    2a - FLICKYY
    2b - MONKEY
    2c - KAMOME
    2d - SIBU2
    2e - HAPPA

    Some of these are self-explanatory. There are three unused objects that aren't completely null, and they are:

    2b - MONKEY:
    [​IMG]
    A monkey that walks in place. You can walk through it and he does nothing else. Probably meant to be in a tree.

    2c - KAMOME:
    [​IMG]
    A seagull that just sits in place. Probably meant to be in the sky. You can walk through it too.

    2e - HAPPA:
    *no image*
    This object is strange as the pointers for the data are null'd out but the loading subroutine is still referenced. No idea what it's meant to do.

    The impression I get is that most of the unused objects here were probably going to be added to Sonic World but they ran out of time to implement them. In the early demo build featured in some Saturn demo discs, there are still a ton of objects that aren't referenced at all that would be eventually added into the game (such as the Flickies, etc).

    That's all I have for now, but I'll keep poking around to see if there's more.

    PS: Coincidentally, every version of Sonic Jam has symbol/assembly trash compiled into some random parts of SPRDATA.MUS, _DAT0999.bin, and _DAT1499.bin. They all seem to be a mix of raw art asm output and symbols for Sonic 3/K.
     
    • Informative Informative x 1
    • List
  2. BlazeHedgehog

    BlazeHedgehog

    A "Community Enigma"? Oldbie
    1,467
    11
    18
    In Japanese, HAPPA means "leaf" so it could be that when you'd stand on top of a palm tree (which I think you can do), leaves or something might rain down?

    Could also be related to the monkey, maybe
     
  3. Shoemanbundy

    Shoemanbundy

    Researcher
    1,094
    30
    28
    Chicago, Illinois
    selling shoes
    Just when you think you've seen it all. Good detective work!
     
  4. Ritz

    Ritz

    Subhedgehog Member
    4,086
    110
    43
    That monkey brings me joy. Can we get a video showing it from all angles?