don't click here

Help with Big Ring in Sonic CD 510

Discussion in 'Engineering & Reverse Engineering' started by SegaLoco, Dec 21, 2011.

  1. SegaLoco

    SegaLoco

    W)(at did you say? Banned
    Okay, I'm at a bit of a dead end right now when it comes to getting this Big Ring in Sonic CD 510 to work. If you don't know, the ring is there, shows up in levels, but has absolutely no interaction with Sonic. (Well, it technically does, it just spits him out the other side, it doesn't actually send him to the special stage like one would expect, and it doesn't disappear.) Now anyway, I've isolated the object code and the two or three external subroutines it calls, along with the mapping, animation, and graphical data. Now I'm not expecting any miracles but if anyone would be so kind, could you help me out identifying exactly how to get this object here to do what it is supposed to (well, if it is possible with the code that is there by adding or subtracting a line or two or changing a variable). Also, if you need more context than just everything the object calls, feel free to let me know and I'll upload the idb file (no asm file sorry, I don't feel like taking the time to pick through it and get it split up for an upload until it's fairly well documented.)

    Anyway, enough blabbering from me, here is the file: http://www.mediafire.com/?o9ta26a4r8byr3p

    Thank you as always for any help and if you help you will definitely be credited!

    Edit: If it helps any this code is pretty comparable to Sonic 1 code, the mapping formats match up pretty much exactly and the object code array is just about exactly the same as detailed here: info.sonicretro.org/SCHG:Sonic_the_Hedgehog/RAM_Editing (See "Object Status Table Format")
     
  2. Alriightyman

    Alriightyman

    I am back... from the dead! Tech Member
    357
    11
    18
    Somewhere in hot, death Florida
    0101001101101111011011100110100101100011 00000010: 0101001100000011 01000101011001000110100101110100011010010110111101101110
    Sorry I never played the 510 beta. Does the ring function in the beta normally and just not in your disassembly?
    In Sonic 1, IIRC, in the Results Object is where Sonic was sent to the special stage. The big ring set a flag and the results object checked that flag. Something like that.
    Have you gotten the Results Object Disassembled yet? If so, check there.
    I do see the big ring object setting two flags:

    Code (Text):
    1.  
    2.         move.b  #1, ($FF127E).l
    3.  
    and here:
    Code (Text):
    1.  
    2.         move.b  #1, ($FFFFF744).w
    3.  
    I am not sure as to what those addresses are for but maybe they are related?

    Also, are those RAM addresses the same as in Sonic 1? Besides $FFFFD000, that's obvious.
     
  3. SegaLoco

    SegaLoco

    W)(at did you say? Banned
    Well I'm checking through the code in the final version now, I found where it checks ring count to put the big ring up in the first place and a few other things. Also, as the flash that the big ring makes is actually another object on it's own, I'm wondering if that isn't present in 510 yet and if I insert that it might help. Anyway, my main problem now is that I can't find a single bit of padding to shorten in the file so I can stick this extra code in there without going outside of the bounds of the MMD (every single level mmd is exactly 256kb, and although that seems like something achieved via padding, I can't find any anywhere in the code, and I can't go outside that size or it'll mess up the ISO9660 header and throw everything off)
     
  4. Alriightyman

    Alriightyman

    I am back... from the dead! Tech Member
    357
    11
    18
    Somewhere in hot, death Florida
    0101001101101111011011100110100101100011 00000010: 0101001100000011 01000101011001000110100101110100011010010110111101101110
    Well, maybe try inserting into Sonic 1? If you know what some of those ram addresses do that is.
    EDIT: The flash was a separate object in Sonic 1 as well.