don't click here

Sonic RDX Update

Discussion in 'Engineering & Reverse Engineering' started by Dude, Nov 19, 2008.

Thread Status:
Not open for further replies.
  1. Edit: Nevermind, I can't render the video, programs keep crashing :X
     
  2. Dude

    Dude

    Tech Member
    3,138
    0
    16
    Southbridge, MA
    Random VR/AR trash
    if you could both be so kind, I'd like to throw some clips together and mix your footage with some of my blooper footage.

    Did you try the updated set file?
     
  3. GIHunter

    GIHunter

    Member
    I got it recorded. I had a couple of bloopers of my own. I'll send you the vid in a .rar file in a PM here in a few minutes. I always get a good FPS when playing SADX, so no need to worry about that. BTW the other post was before I had even downloaded the updated .SET file. Although, when I did download it, I think I might have saved it in the wrong game, which is why the whale manages to appear in the recording, causing my death once, at which point I contemplated restarting, but changed my mind. Gameplay was done with a PS3 controller.
     
  4. Jeztac

    Jeztac

    Member
    100
    0
    16
    Sonic R-DX
    Working on textures for Red Mountain
    [​IMG]
    [​IMG]

    All W.I.P, what Dude doesn't like he will replace.
     
  5. GIHunter

    GIHunter

    Member
    *chuckles* You posted the same screenshot twice. Other than that, nice job.
    -EDIT-
    Ignore the same screenshot twice, as it has been fixed.
     
  6. SF94

    SF94

    Tech Member
    Pretty decent textures, nothing special though.
     
  7. Harmony Friends

    Harmony Friends

    it's the whole gang Oldbie
    So, I made a music pack for the RDX demo. I'm not sure if Dude will want to use these in the hack, although he DID say he liked them, but still, I'm throwing this out there for anyone who wants some original music for the hack.

    To use, unzip this archive into the system\sounddata\bgm\wma directory of the SADX install (replacing what's already there, of course).

    http://webspace.isamedia.org/songpack.zip
     
  8. Polygon Jim

    Polygon Jim

    Eternal Tech Member
    0
    3
    0
    across town from Hinchy
    All the bitches.
    I like those, sound pretty good.
     
  9. Dude

    Dude

    Tech Member
    3,138
    0
    16
    Southbridge, MA
    Random VR/AR trash
  10. Dude

    Dude

    Tech Member
    3,138
    0
    16
    Southbridge, MA
    Random VR/AR trash
    moar bamps
    [​IMG]
    [​IMG]
     
  11. Dude

    Dude

    Tech Member
    3,138
    0
    16
    Southbridge, MA
    Random VR/AR trash
    stuff I didn't write:
    guide to the model format

    Stuff I did write:
    I'm going to start posting more of my incomplete findings... mostly for completeness sake.

    Earlier tonight I stumbled upon the loading cue, if you will, for special-use geometry in emerald coast. By special use, I mean sky boxes, death planes, water, etc. Anything where the code goes beyond simple "render this, read collision data". The problem with this is that I think its mostly program instructions and not variables, and even the tiniest alterations are crashing before I can even note their effect.

    I also found three references to the skybox - which corresponds to the amount of times it is used (once per segment), they reside at:
    Code (Text):
    1. keyed pointer value 17019504
    2.  
    3. Instances:
    4. 1011372
    5. 1011775
    6. 1012025
    The loading function seems to process things in chunks (obviously), and interestingly enough it uses the byte 0x68 to determine where the end of one chunk is, and where the beginning of the next one is. However, it isn't consistent whatsoever, and editing things inside of the chunks isn't doing anything productive at all (even copy-pasting data from similar objects is causing the loader to crash) I think this is where geometry objects that are instanced (ie: more than one copy of exactly the same thing). Also, the examples I listed above are pretty simple, but still confusing the hell out of me. I know it works a little something like this:
    Code (Text):
    1. chunk marker
    2. pointer to seg struct
    3. unknown (seems to be one byte and two shorts?)
    4. chunk marker
    Now I realize I'm probably the only person who gives a damn about this game, but I'm at a block here with the loading routine. If someone else could take a look into it, I'd be very appreciative.

    Objects that don't fall under the special use category aren't listed here, but rather go under the collision structure (which is what I'm using for my level edits btw) How the game calculates collision (and also surface properties) is as follows:

    start with 3 coordinates for an origin. Use the 4th float as a radius, and make a detection sphere using this data. The game constantly checks to see if sonic is inside this sphere, and if he is, it'll run the following surface properties. You can set basically any object to from non-solid to solid by making the flags read 01001080
    Code (Text):
    1. Collision data
    2. Unfinished
    3.  
    4.  
    5. Struct Collision Data 0x24
    6. Float X position; //
    7. Float y position; //
    8. Float z position; //
    9. Float Spheresize; //
    10. Float Unknown; //
    11. Float padding; //
    12. Dword Objectpointer; // points to OBJECT struct
    13. Dword Unknown; //
    14. Short Unknown flags; // 01
    15. Short Surface Flags; // These can hurt sonic, support sonic, take traction, etc
    16.  
    17. Unknown flags
    18. 0 - no collision
    19. 1 - default
    20. 2 - weird alpha
    21.  
    22. Surface flags (first byte)
    23. type
    24. 1x = can land on
    25. 2x = push
    26. 3x = push
    27. 4x = Kill sonic
    28. 5x = no alpha, no col
    29. 6x = water
    30. 7x = lighting
    31. 8x = Stage Specific on/off (EC footprints)
    32. 9x = normal surf
    33.  
    34. behavior
    35. x0 = normal
    36. x1 = hurt
    37. x2 = low traction
    38. x3 = hurt
    39.  
    40. Surface Flags (second byte)
    41. Visibility
    42. 1x = invisible (still solid)
    43. 8x = visible
    44.  
    45. Alpha blending
    46. x0 = normal
    47. x1 = blending mode 1
    48. x2 = blending mode 2
    Also, here's some tidbits on the player starts
    Code (Text):
    1. =========================
    2. Spawnpoints - better known as 'player starts', these define where in a map to start the player. Spawn point entries are always 0x14 bytes long
    3. =========================
    4.  
    5. short x_rotation; // rotation values might not really be stored here, just a guess
    6. short y_rotation; //
    7. short z_rotation; //
    8. short segue; // seems to affect how the spawn point is interpreted. Editing this can cause the player to start at 0,0,0
    9. float x_position;
    10. float y_position;
    11. float z_position;
    Code (Text):
    1. And Sonic's 'attack' state. This address jumps around, so I'm not going to list it until I find a pointer address.
    2. 00 - completely vulnerable, no jump ball.
    3. 05 - attack mode, can't be hurt by enemies, but not invulnerable. Jump ball will show if this is active
    4. 02 - light dash charged and holding, sonic will glow.
    Code (Text):
    1. Material Struct -  keep bugging me to update this, so I'll actually do it
    2. ================================
    3. Byte Blue_Diffuse; // This is the amount of blue light to add to the diffuse (texture) channel
    4. Byte Green_Diffuse; // This is the amount of green light to add to the diffuse (texture) channel
    5. Byte Red_Diffuse; // This is the amount of red light to add to the diffuse (texture) channel
    6. Byte Alpha_Diffuse; // This is the transparency for the texture channel
    7. Byte Blue_Specular; // This is the gloss or specularity, blue channel
    8. Btye Green_Specular; // This is the specularity, red channel
    9. Byte Red_specular; // This is the specularity, green chanel
    10. Byte Alpha_specular; // This is the transparency for the specularity
    11. Float unknown; // seems to act like a float most of the time
    12. Byte TexID; // this is the pvr to load... not a gbix - I think the gbix is interpreted somewhere in the pvm caching function
    13. Byte SomethingImportant; // crashes when put to FF
    14. Byte unknown2[3]; //
    15. Byte unknown3; // seems to be Ax (x being a variable)
    16. Byte Spheremap; // first bit - U clamping, second bit - V clamping. Set to 21 to get normal uvs, set to 66 for screen mapping
    17. Byte EndOfStruct; // always 94
    edit: More structures added
     
  12. Sik

    Sik

    Sik is pronounced as "seek", not as "sick". Tech Member
    6,718
    1
    0
    being an asshole =P
    Not really, but most people who wants to hack here just wants that, to hack. Little people is interested in researching, especially for games like this where almost nothing is known.Don't think I'm going slow in Sonic 3D for no reason =P
     
  13. Dude

    Dude

    Tech Member
    3,138
    0
    16
    Southbridge, MA
    Random VR/AR trash
  14. Overlord

    Overlord

    Now playable in Smash Bros Ultimate Moderator
    19,239
    972
    93
    Long-term happiness
  15. Blanche Hodapp

    Blanche Hodapp

    *urp* Eternal Queen
    "Man, everything's frozen!"

    That would be why it's called ICECAP!

    Also, what is that music and I want it.
     
  16. Overlord

    Overlord

    Now playable in Smash Bros Ultimate Moderator
    19,239
    972
    93
    Long-term happiness
    It's from the gameshow Jeopardy, hence my joke above =P
     
  17. Blanche Hodapp

    Blanche Hodapp

    *urp* Eternal Queen
    I need to watch this show. Listening to that music is how I would get myself to sleep at night.
     
  18. Dude

    Dude

    Tech Member
    3,138
    0
    16
    Southbridge, MA
    Random VR/AR trash
    [​IMG]
    [​IMG]

    Stuff in the BG isn't showing up because my of my video card's poly limit... srsly its that bad. So those floating objects won't be floating on the average person's pc. Yes there's a platform there those things are sitting on. Also, what do you guys think of the sonic texture?
     
  19. Skaarg

    Skaarg

    Member
    3,683
    0
    16
    The only thing I think needs changed in that texture is the back of Sonic's shoes. Otherwise things are looking really good.
     
  20. Ollie

    Ollie

    DIGGY DIGGY HOLE Member
    Those streaks look a bit odd on the back of Sonic, also is there a reason why Sonic has a purple tint to him? Other than that, Amazing.
     
Thread Status:
Not open for further replies.