don't click here

Sonic Classic Heroes

Discussion in 'Engineering & Reverse Engineering' started by flamewing, Nov 2, 2010.

  1. flamewing

    flamewing

    Emerald Hunter Tech Member
    1,161
    68
    28
    France
    Sonic Classic Heroes; Sonic 2 Special Stage Editor; Sonic 3&K Heroes (on hold)
    Thanks for that in-depth analysis! You have now make me seriously consider requiring two button presses for Sonic whenever he is uncurled, but only one when already curled. Except maybe for insta-shield, I still have to think if it warrants the double-tap.
     
  2. RetroKoH

    RetroKoH

    Member
    1,728
    107
    43
    S1Fixed: A successor to ReadySonic
    If going in this direction suggested above... I'd say that Insta-shield should demand a double press if Sonic is uncurled... In the current release, it DOES look a little off... seeing Sonic go right into said maneuver while uncurled.
     
  3. Deef

    Deef

    Member
    733
    22
    18
    Thanks for hearing my input on a hack that I really enjoy.


    Regarding the insta-insta-shield, I dunno either way. Yeah it does seem a little redundant; a second press that isn't so amazing. But I'm gonna go with keep it as a 2nd press. The main defense for supporting that possibly redundant feel is that this is exactly how it is for the move in its native game for any non-rolling jump. Sometimes the insta-shield just doesn't impress the player, but that's how it has always been. It's somewhat of a punishment reminder: You don't have a shield? Well this is all you get. It's subtle. Admittedly it's a shame that its subtlety (the rolling jump aid) can't be applied here since in this recently-recurled situation, since the character is always guaranteed to already have horizontal control. (Unless you make Sonic's recurling disable horizontal control! Heh ok now I'm making things too messy. But hmm.)

    Another reason to keep it as 2 presses is that if the player finds the 2nd press insta-shield underwhelming (even though it's the same in Sonic 3), they'll probably find the 2nd press nothing-happens-at-all fairly disappointing as well. Let it remain stored and ready to use, the player uses it, doesn't think it's that great and viola, he feels just like he would in Sonic 3: "Hmm be cool if I had a shield."

    Meanwhile, in practical terms the 2nd press method is more useful to the player. Recurl to bounce off a Buzzer, but hold your insta for the rebound onto a Coconuts (because they can be little mofos with their timing sometimes). In fact if you Youtube "The Bouncing Challenge" you'll see a video of a 10-hit rebound in EHZ. The most irritating thing about trying to pull that off? The god damn Coconuts and their timing. Now if the player had started The Bouncing Challenge with a run-off the left quarterpipe instead of a roll-off (perhaps to make good use of Sonic's slightly better speed now?), the 2nd press insta-shield would be an absolute treasure and you would feel like a boss as you tell that Coconuts he can kindly stfu with his damn projectiles.

    The 2nd press method also saves you from having to decide if a running fall --> recurl+insta move --> bounce off a lightning shield --> press jump the 2nd time will now have the secondary move ready or not.
    If not, then the player was unable to enjoy the lightning shield's move kicking in* even though he hadn't used his 2nd press.
    If so, then we just changed from hammering jump does nothing, to pressing jump does lightning jump.
    * A note here. This particular idea of being able to fall or spring, then recurl, then bounce off a shield monitor, then use that shield ability while still leaping around through the air (with no ground reset necessary) is something I have often wished I could do in one particular place in EHZ. (Red diagonal spring that's tucked under a mobius strip --> recurl --> lightning shield --> huge bounce to where 4 Coconuts and a life are.) (Man I love EHZ in this hack heh.)

    And yeah, KofH's point about the look of insta-shielding from a running Sonic.


    Just my 222 cents.
     
  4. flamewing

    flamewing

    Emerald Hunter Tech Member
    1,161
    68
    28
    France
    Sonic Classic Heroes; Sonic 2 Special Stage Editor; Sonic 3&K Heroes (on hold)
    You make a good point overall; I will be making Sonic have to press twice for his double-jump in all cases. There is now the issue if Super/Hyper Sonic will also need this; and I am tending to yes.

    I will just disagree about the usefulness of insta-shield -- it is a great tool if you know how to use it: higher collision size and temporary invincibility? That is just too good -- think how much easier the final boss in Death Egg is with it.
     
  5. Beedlee

    Beedlee

    Member
    13
    0
    0
    Don't know if it helps bugfixing, but I managed to get myself stuck in this part of CPZ2, couldn't get outside the box with any of the characters.

    [​IMG]
     
  6. Deef

    Deef

    Member
    733
    22
    18
    Ah heh yeah. Well it's completely useful when it's useful; Sonic 3's boss is a different story for Tails for the same reason. Personally though I find the jump control business the real beauty of it. I really love the insta-shield, it's probably my favourite of all the classic moves.

    Super and Hyper Sonic's double jump? Oh man, not fussed lol.

    Edit - All cases? What about rolling falls?
     
  7. The Shad

    The Shad

    ↑ & ↓ & ↻ Oldbie
    3,073
    8
    18
    I did a quick search but I didn't see anything mentioned about this, but hell, I could've missed it.

    Is there something that can be done about Sonic constantly catching up to and then skidding to slow down and then repeating whenever he's CPU controlled? I understand the point of making him a bit faster to try and separate the characters some and maybe I'm the only one who finds the constant skidding annoying, but it's something I figured I'd throw my two cents out on. (I'm sure if Player 2 was controlling him, he'd go running ahead of Player 1 constantly as well, already making a haphazard co-op experience even more so :P)
     
  8. Covarr

    Covarr

    Sentient Cash Register Member
    4,233
    3
    18
    Trapped in my own thoughts.
    Two stageplays, a screenplay, and an album
    Perhaps if CPU-controlled Sonic had different stats from proper Sonic. I've seen the same principle applied in other games often enough.

    fucking Daisy catching up from 6th place because the game decided that her kart is faster now
     
  9. flamewing

    flamewing

    Emerald Hunter Tech Member
    1,161
    68
    28
    France
    Sonic Classic Heroes; Sonic 2 Special Stage Editor; Sonic 3&K Heroes (on hold)
    I am convinced: I will change the code such that only the leading player will determine the speed, acceleration, deceleration and jump strength, and all players use the stats of the leader. This will have Sonic play nice with the other 2, and will simplify the code slightly.
     
  10. RetroKoH

    RetroKoH

    Member
    1,728
    107
    43
    S1Fixed: A successor to ReadySonic
    I know I've pointed this out, but the sonic speed glitch also occurs during the ending sequence, with sonic leaving the others behind in the fire. I can easily see this happening in the post-Scrap Brain segment too. Nothing too important, but surely something to look into later on down the line.
     
  11. flamewing

    flamewing

    Emerald Hunter Tech Member
    1,161
    68
    28
    France
    Sonic Classic Heroes; Sonic 2 Special Stage Editor; Sonic 3&K Heroes (on hold)
    I changed Sonic so that he always has the same speed (and jump strength for Super/Hyper Sonic) as everyone else; that speed is higher when he is in the lead, as usual.

    I have a status update: I have been making a hybrid object manager to reduce lag, and so far, it is working beautifully (but still crashes a lot). The code is a mix of S3&K code (the object manager proper), including a code pointer to the object data instead of an object ID, and a Chaotix-based linked-list memory manager/main object loop. With this hybrid monstrosity, there are several things that caused enormous amounts of lag previously (particularly in the S1 portion) that will be much better.

    Also, I have a query: in S3&K, only Super Sonic had separate underwater palette cycles; all others (including Hyper Sonic, Super/Hyper Knuckles and Super Tails) use the same colors regardless of whether they are underwater or not. I tried it out, and the effect is nice enough; but I am thinking of keeping it for the Hyper forms only (making them even flashier).
     
  12. RetroKoH

    RetroKoH

    Member
    1,728
    107
    43
    S1Fixed: A successor to ReadySonic
    I never noticed that. Is there any reason why that is in S3K? Either they simply neglected to make the palette changes? Or they couldn't get all the colors needed for each of their underwater palettes... Or the palette effect simply wasn't applied due to only having Hyper forms and Super Tails in lock-on mode...
     
  13. flamewing

    flamewing

    Emerald Hunter Tech Member
    1,161
    68
    28
    France
    Sonic Classic Heroes; Sonic 2 Special Stage Editor; Sonic 3&K Heroes (on hold)
    My guess is that they simply neglected it: only Super Sonic is available in Sonic 3, which has water levels, hence palette cycles for Super Sonic. Super Knuckles is available starting in Sonic & Knuckles, which has no water levels; likewise, Hyper Sonic/Knuckles and Super Tails are included in Sonic & Knuckles code, so it is quite possible that they simply didn't do the water palettes. That Super Sonic has water palettes can be explained as they copying the S3 code over, then modifying to include branches for Knuckles and Tails, then forgot/didn't have time to add water palette for the super forms.
     
  14. flamewing

    flamewing

    Emerald Hunter Tech Member
    1,161
    68
    28
    France
    Sonic Classic Heroes; Sonic 2 Special Stage Editor; Sonic 3&K Heroes (on hold)
    I was looking into the ARZ boss code for a completely unrelated thing and I took the opportunity to figure out what was causing this: the problem is that once the ARZ boss is reaches a pillar, the following happens, in order:
    1. Boss checks to see if he has been hit; if so, and if this is the last hit, set subroutine counter (stored in angle/$26 on the normal game) to 8 (exploding after defeat) and variable Boss_Countdown to $B3;
    2. When an internal counter reaches zero, the boss begins to swing the hammer; this increases the subroutine counter (stored in angle/$26 on the normal game) by 2 and Boss_Countdown to $1E.
    If The boss is defeated on the same when the internal counter reaches zero, the subroutine counter is set to 8 (exploding after defeat), then increased by 2 (bobbing up and down before blasting off); similarly, Boss_Countdown is set to $B3 then changed to $1E. Either of those two values would have the same basic effect, with a difference of a couple of frames: in subroutine $A, a value of $1E is after the threshold to load the animal PLCs (so they show pieces of explosions), and after 2 frames of being incremented, it reaches $20, which further increases the subroutine counter by 2 (Robotnik going away).

    The fix? After this block of code:

    Code (Text):
    1. loc_306B8:
    2.     bsr.w   Boss_MoveObject
    3.     bsr.w   loc_3075C
    4.     bsr.w   loc_30824
    5.     cmpi.b  #$C0,mapping_frame(a0)
    6.     bne.s   loc_306F8
    add the following 2 lines:

    Code (Text):
    1.     cmpi.b  #8,angle(a0)    ; Has Robotnik been defeated?
    2.     beq.s   loc_306F8   ; If so, branch
    That is it. I am now wondering if I should add the fix to SCH...




     
  15. RetroKoH

    RetroKoH

    Member
    1,728
    107
    43
    S1Fixed: A successor to ReadySonic
    Sweet it got fixed. I would be willing to believe that it's not a big deal if it doesn't get added, being that it's a rare bug that doesn't even break the game. If you don't have the time to bother with it, I could certainly do it when I hop on my laptop later.
     
  16. flamewing

    flamewing

    Emerald Hunter Tech Member
    1,161
    68
    28
    France
    Sonic Classic Heroes; Sonic 2 Special Stage Editor; Sonic 3&K Heroes (on hold)
    Something like this?
     
  17. steveswede

    steveswede

    Member
    5,032
    2
    16
    Ask my hand
    Fighting against the Unitary State of Europe
    Man you don't half have some great ideas and having the gift to apply them fast and effectively is just an incredible sight to see.
     
  18. Hitaxas

    Hitaxas

    Retro 80's themed Twitch streamer ( on hiatus) Member
    That looks fantastic. Though, It'd look better if they started running from off screen when the ending starts. It always looked weird that Sonic stood there in running pose for a second before moving.
     
  19. ICEknight

    ICEknight

    Researcher Researcher
    Oh my god, that's such a cool idea...

    I'd make the Death Egg raise from the ground instead of coming with the Wing Fortress, though.
     
  20. flamewing

    flamewing

    Emerald Hunter Tech Member
    1,161
    68
    28
    France
    Sonic Classic Heroes; Sonic 2 Special Stage Editor; Sonic 3&K Heroes (on hold)
    Just a thing I noticed: because Youtube chops the framerate in half, you can't see that the Wing Fortress has helices for propulsion; here is an APNG showing how it should look:
    [​IMG]