Retro Engine Facts's Avatar

Retro Engine Facts

@rsdkfacts.bsky.social

Posting facts about the workings of Sonic Mania, Penny's Big Breakaway, and other Retro Engine games. Not affiliated with SEGA, Evening Star, or Headcannon.

22 Followers  |  13 Following  |  10 Posts  |  Joined: 10.01.2026  |  1.5998

Latest posts by rsdkfacts.bsky.social on Bluesky


Video thumbnail

Here's what this could've been like if these sound effects did exist.

28.01.2026 20:29 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
void Staircase_StageLoad(void)
{
    if (RSDK.CheckSceneFolder("CPZ")) {
        Staircase->aniFrames = RSDK.LoadSpriteAnimation("CPZ/Staircase.bin", SCOPE_STAGE);

        Staircase->sfxBlockStop = RSDK.GetSfx("CPZ/CPZ2HitBlocksStop.wav");
        Soundboard_LoadSfx("CPZ/CPZ2HitBlocks.wav", true, Staircase_SfxCheck_HitBlocks, StateMachine_None);
    }
}

void Staircase_StageLoad(void) { if (RSDK.CheckSceneFolder("CPZ")) { Staircase->aniFrames = RSDK.LoadSpriteAnimation("CPZ/Staircase.bin", SCOPE_STAGE); Staircase->sfxBlockStop = RSDK.GetSfx("CPZ/CPZ2HitBlocksStop.wav"); Soundboard_LoadSfx("CPZ/CPZ2HitBlocks.wav", true, Staircase_SfxCheck_HitBlocks, StateMachine_None); } }


bool32 Staircase_SfxCheck_HitBlocks(void)
{
    foreach_active(Staircase, entity)
    {
        if (entity->stateDraw == Staircase_Draw_Shake)
            return true;
    }

    return false;
}

bool32 Staircase_SfxCheck_HitBlocks(void) { foreach_active(Staircase, entity) { if (entity->stateDraw == Staircase_Draw_Shake) return true; } return false; }

void Staircase_State_Wait(void)
{
    RSDK_THIS(Staircase);

    Vector2 posStore = self->position;
    foreach_active(Player, player)
    {
        for (int32 i = 0; i < STAIRCASE_STAIR_COUNT; i++) {
            self->position = self->blockPos[i];
            Player_CheckCollisionBox(player, self, &Staircase->blockHitbox);
        }
    }
    self->position = posStore;

    if (--self->timer < 0) {
        self->timer = 128;
        if (!RSDK.IsSfxPlaying(Staircase->sfxBlockStop))
            RSDK.PlaySfx(Staircase->sfxBlockStop, false, 255);
        self->state     = Staircase_State_MoveBlocks;
        self->stateDraw = Staircase_Draw_Blocks;
    }

    if (!RSDK.CheckOnScreen(self, &self->updateRange))
        Staircase_Create(NULL);
}

void Staircase_State_Wait(void) { RSDK_THIS(Staircase); Vector2 posStore = self->position; foreach_active(Player, player) { for (int32 i = 0; i < STAIRCASE_STAIR_COUNT; i++) { self->position = self->blockPos[i]; Player_CheckCollisionBox(player, self, &Staircase->blockHitbox); } } self->position = posStore; if (--self->timer < 0) { self->timer = 128; if (!RSDK.IsSfxPlaying(Staircase->sfxBlockStop)) RSDK.PlaySfx(Staircase->sfxBlockStop, false, 255); self->state = Staircase_State_MoveBlocks; self->stateDraw = Staircase_Draw_Blocks; } if (!RSDK.CheckOnScreen(self, &self->updateRange)) Staircase_Create(NULL); }

In Sonic Mania, the Chemical Plant staircases have full functionality for playing a looping sound effect when the blocks are shaking after being hit from below, as well as another playing as they begin moving. However, neither of these sound effects exist in the game's files.

28.01.2026 20:29 โ€” ๐Ÿ‘ 0    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Video thumbnail

Although Mania's method is effective, it does result in quirks such as this:

15.01.2026 14:25 โ€” ๐Ÿ‘ 1    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 1
Post image Post image Mania GHZ collapsing ledges with the RSDKv5U decompilation's hitbox visualizer enabled.

Mania GHZ collapsing ledges with the RSDKv5U decompilation's hitbox visualizer enabled.

Sonic Mania uses a much simpler approach: it uses a large hitbox based on a given size determined per-entity, and if the player is touching that hitbox while grounded, the collapse is activated.

15.01.2026 14:25 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

In early versions of the game, there's evidence that a file named "CLedgeMask.bin" once existed. This may have been used for the top offsets in the proof-of-concept phase of development, back before tables were implemented in the scripting language the game uses.

15.01.2026 14:25 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image Post image

Well, these ledges are objects, and RSDK doesn't support hitboxes that are angled or any shape other than a straight rectangle. Rather than make a ton of hitboxes to match the ledge's shape, the devs made one hitbox and used a table and checks to determine the top's offset.

15.01.2026 14:25 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Sonic standing on the lower point of the crumbling ledge. The displayed hitbox matches Sonic's vertical position.

Sonic standing on the lower point of the crumbling ledge. The displayed hitbox matches Sonic's vertical position.

Sonic standing on the higher point of the crumbling ledge. The displayed hitbox matches Sonic's vertical position.

Sonic standing on the higher point of the crumbling ledge. The displayed hitbox matches Sonic's vertical position.

If we enable the RSDKv4 decompilation's object hitbox visualizer, we can see that the top of the hitbox for the ledges get taller or shorter depending on where the player is standing on it, rather than having a hitbox that properly matches the ledge itself. What's going on here?

15.01.2026 14:25 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Sonic standing on a crumbling ledge in Green Hill Zone.

Sonic standing on a crumbling ledge in Green Hill Zone.

Curious how the crumbling ledges in Sonic 1 work? No? Too bad, here's how it's done!

15.01.2026 14:25 โ€” ๐Ÿ‘ 1    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Super Tails with the Super Flicky value modified to spawn 2 Flickies, half the regular amount.

Super Tails with the Super Flicky value modified to spawn 2 Flickies, half the regular amount.

Super Tails with the Super Flicky value modified to spawn 8 Flickies, double the regular amount.

Super Tails with the Super Flicky value modified to spawn 8 Flickies, double the regular amount.

Super Tails with the Super Flicky value modified to spawn 32 Flickies, octuple the regular amount.

Super Tails with the Super Flicky value modified to spawn 32 Flickies, octuple the regular amount.

Super Tails with the Super Flicky value modified to spawn 256 Flickies, sixty-four times the regular amount. Some other objects start behaving improperly with an army this big present.

Super Tails with the Super Flicky value modified to spawn 256 Flickies, sixty-four times the regular amount. Some other objects start behaving improperly with an army this big present.

Sonic 3 & Knuckles handles the amount of Super Flickies present with Super Tails as a single value in the code. Although this value is stored as a constant, this could have theoretically been used to control how many Flickies appear based on certain conditions in development.

11.01.2026 20:55 โ€” ๐Ÿ‘ 13    ๐Ÿ” 6    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

Please know that anything regarding Sonic Origins posted on this account isn't meant to attack the game; I personally love the collection despite its flaws and lack of polish.

Also, I (the owner of this account) don't have a main, so please don't ask what it is.

11.01.2026 20:52 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

@rsdkfacts is following 13 prominent accounts