don't click here

"Press Start Button"

Discussion in 'General Sonic Discussion' started by Quickman, Mar 29, 2008.

Thread Status:
Not open for further replies.
  1. Quickman

    Quickman

    be attitude for gains Tech Member
    5,604
    19
    18
    :x
    omg porjcet
    I've finally isolated precisely why the PRESS START BUTTON (PSB) text doesn't appear on the Sonic 1 title screen, and given the nature I suspect it to be a bug in Sonic Team's original code. (You may now be shocked.)

    Now, the PSB object is initialised in object RAM slot $D080 on line 3237 of the disassembly I'm currently using (modified by Pu7o to work on Linux; it's just under the label Title_ClrObjRam2, in case it's not the same line in an unmodified Sonic 1 disassembly). That same chunk of RAM is previously used for the SONIC TEAM PRESENTS (STP) object earlier in the TitleScreen routine (line 3162, adjust as necessary).

    The reason the PSB text doesn't appear is because the STP object scribbles in object RAM, but the TitleScreen routine only clears the top $1C bytes. Any data between $D09C and $D0A0 previously touched by the STB object is unmodified. This, I suspect, is why the PSB text fails to appear, and it's a surprisingly difficult bug to track down without really scrutinising the code and a few quite remarkable deductions.

    The correction is simple enough; delete the object RAM for the object at $D080 more thoroughly. Here's the replacement I made. (Lines are prefixed diff-style - a minus indicates a deleted line, a plus indicates an inserted line.)

    Code (Text):
    1.                 lea  ($FFFFD080).w,a1
    2. -              moveq   #0,d0
    3. -              move.w  #7,d1
    4.  
    5. -Title_ClrObjRam2:
    6. -              move.l  d0,(a1)+
    7. -              dbf   d1,Title_ClrObjRam2
    8.  
    9. +              jsr   DeleteObject2
    10.                 move.b  #$E,($FFFFD040).w; load big Sonic object
     
  2. Hayate

    Hayate

    Tech Member
    Aha...

    I was wondering why PRESS START BUTTON suddenly showed up in SATSEE after removing the SEGA and SONIC TEAM PRESENTS.

    Now I know why.

    Great find :thumbsup:
     
  3. Liliam

    Liliam

    Oldbie
    1,563
    119
    43
    Or you could just load up the japanese version, press C, C, C, C, C, C, up, down, down, down, left, right, wait for the demo to start, hold A + B + C + down and hit start.
     
  4. JoseTB

    JoseTB

    Tech Member
    717
    59
    28
    That's possibly a side effect of the bug explained by Quickman (ie the STP object is not loaded with that code or something similar)

    Needless to say, excellent find.
     
  5. Liliam

    Liliam

    Oldbie
    1,563
    119
    43
    Possibly, yes, but it almost seems like it was intentional. I was just pointing out the code because it often goes unnoticed.

    Additionally, play 9E and 9F in the sound test after activating the code to play the credits or the ending sequence.
     
  6. ICEknight

    ICEknight

    Researcher Researcher
    You don't need to press start. :P

    So getting rid of the STP object just makes it work automatically? That's awesome, it might have been a last-minute addition they couldn't fix in time... Although it's wierd how they didn't bother fixing it for v.1.
     
  7. Liliam

    Liliam

    Oldbie
    1,563
    119
    43
    Well, yeah, all you need to do is be holding the button combination as the Sonic Team Presents screen is loading, but pressing Start during the demo skips it and makes it quicker to pull off. You could just wait the 30 seconds for the demo to end, I guess.
     
  8. JoseTB

    JoseTB

    Tech Member
    717
    59
    28
    I'd rather think they implemented the press start object early, and later on the sonic team presents screen messing up the other object. Unless you meant the STP screen being the last-minute addition that's it, I agree on this part if so. And yeah, it's strange how they didn't fix this on REV01, nor in early versions of Sonic 2, I suppose they ended up liking it as it was with the "bug".
     
  9. drx

    drx

    mfw Researcher
    2,254
    351
    63
    :rolleyes:
    What's really funny is how Sonic Team were immune to the Sega Standards. Mere mortals, aka all other developers were required to for example put a 'Press Start Button' on the title screen of all their games.

    Anyway, great post, Quickman.
     
  10. ICEknight

    ICEknight

    Researcher Researcher
    Yeah, that's what I meant. Well, not the screen itself with the hidden text, but just the STP object.

    They might have had the original SONIC TEAM PRESENTS words written as a background image, before they inserted the hidden stuff. I'm suspecting they deliberately tried to fool the execs into thinking there was nothing else in there, seeing how this was one of the last Japanese SEGA games to feature nicknames in the ending credits.
     
  11. Quickman

    Quickman

    be attitude for gains Tech Member
    5,604
    19
    18
    :x
    omg porjcet
    Yep. If the Japanese dev credits cheat is enabled the STP object kills itself by calling DeleteObject, thus clearing its own $40 bytes of object RAM. It all hinges on the TitleScreen routine not fully cleaning up after the STP object before loading the PSB object.
     
Thread Status:
Not open for further replies.