• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[Pokeemerald] Sideways Stairs

239
Posts
8
Years
    • Seen Apr 15, 2024
    [Pokeemerald] Sideways Stairs

    NOTE: This project has been revamped!

    This feature adds sideways stairs to pokeemerald, which give maps a better sense of elevation change. In addition, it adds the feature from FRLG where the player moves slower when moving on stairs.

    Jr75OdM.gif
    GTL2LTN.gif
    3Mj7RtZ.gif
    NKtECSC.gif
    jRnha2N.gif


    Here is the repo. I've tried to make it as simple as possible to set up. In order to keep the number of additional tiles/metatiles as low as possible, 6 additional behaviors are added
    • This way you only really need to add 6 more metatiles (3 per side) to your tilesets. You won't have to worry about arranging the tiles in a complex pattern, or making new tiles of grass/cave floors/etc with different behaviors.
    • Left Side describes stairs that fall on the left side of a mountain (northeast/southwest movement)
    • Right Side refers to stairs that fall to the right hand side (northwest/southeast movement).
    Code:
    #define MB_SIDEWAYS_STAIRS_RIGHT_SIDE           0x49
    #define MB_SIDEWAYS_STAIRS_LEFT_SIDE            0x4A
    #define MB_SIDEWAYS_STAIRS_RIGHT_SIDE_TOP       0x4B
    #define MB_SIDEWAYS_STAIRS_LEFT_SIDE_TOP        0x4C
    #define MB_SIDEWAYS_STAIRS_RIGHT_SIDE_BOTTOM    0x4D
    #define MB_SIDEWAYS_STAIRS_LEFT_SIDE_BOTTOM     0x4E

    The following spoiler details how the collisions/tile behaviors are arranged. The top/bottom behaviors are needed to prevent the player from walking up/down the outside of the stairs.
    Spoiler:


    Feature Notes:
    • To make things simple and reduce the number of added movement actions, I've changed the facing directions for diagonal movement to left/right instead of up/down. So any scripts with diagonal movement will need to use lock_facing_direction and unlock_facing_direction if they didn't before
    • SLOW_MOVEMENT_ON_STAIRS is defined in include/constants/global.h. Set it to FALSE to allow the player to move at normal speed on stairs
    • The following tileset image can replace gTileset_General (palette 3), and includes the stair tiles used in the GIFs
      Spoiler:

    Feature Changes:
    • New movement actions are removed, and a new object event element is used to modify the object direction on stairs

    How To Add:
    Bugs/Issues:
    • The priority of the player/other objects on stairs can be messed up depending on how each party is moving. This may be corrected with clever stair collision tiles, though
    • SLOW_MOVEMENT_ON_STAIRS does not include acro bike hopping/whatnot
    • Please report any issues!

    Credits:
    • Spherical Ice/Pokemon Gaia for the tiles
     
    Last edited:
    239
    Posts
    8
    Years
    • Seen Apr 15, 2024
    I'm posting again to highlight a major revamp of this project. Details in the spoiler:
    Spoiler:

    New/Updated Features:
    • Cleaner player stairs interaction
    • NPCs interact with stairs
    • Proper object collision/interaction on/near stairs
    • Proper follower movement on stairs (see follow me feature)
    • slow stair movement removed to make all movements consistent

    I'm hoping it will be easy to overwrite the previous implementation with the new changes, but if not I may have to add a tutorial on how to replace the old sideways stairs implementation
     
    203
    Posts
    7
    Years
    • Seen today
    So I've implemented this in my project, yet I'm totally unable to make them work. I set the correct behavior for the 6 tiles as you wrote, set the correct height and I actually checked the code itself and it's completely correctly implemented. To recap, I've installed your repository, then I set 6 blocks that contain the sideway stairs behavior, then I set the correct height, but they don't work for me. Any idea? It may be totally on me, but I can't think of anything else right now.
     
    239
    Posts
    8
    Years
    • Seen Apr 15, 2024
    So I've implemented this in my project, yet I'm totally unable to make them work. I set the correct behavior for the 6 tiles as you wrote, set the correct height and I actually checked the code itself and it's completely correctly implemented. To recap, I've installed your repository, then I set 6 blocks that contain the sideway stairs behavior, then I set the correct height, but they don't work for me. Any idea? It may be totally on me, but I can't think of anything else right now.

    Don't work how? I tested the code on a separate branch so I may have left something out. Feel free to message me on discord as well (ghoulslash#3839)
     
    203
    Posts
    7
    Years
    • Seen today
    I just tested it on the sideways stairs branch and it seems to be working - can you double check that the behaviors are set up correctly?

    Actually, I made it work. It was just the "Follow Me" code, I just manually removed as you did in your latest commit and now side way stairs work. I did nothing else, so that was it.

    Thanks!
     
    13
    Posts
    11
    Years
    • Seen Sep 24, 2023
    Ok I feel very dumb for saying this, but I have zero experience whatsoever when it comes to stuff outside of basic binary hacking. So how do I install this, I am very confused trying to figure it out.
     
    239
    Posts
    8
    Years
    • Seen Apr 15, 2024
    Ok I feel very dumb for saying this, but I have zero experience whatsoever when it comes to stuff outside of basic binary hacking. So how do I install this, I am very confused trying to figure it out.

    Since we use git with decomps, we can add "remotes", which are essentially other people's forks of pokeemerald. This lets us easily merge features other people have made! You can add my pokeemerald branch as a remote by typing the following in your git bash:
    Code:
    git remote add ghoul https://github.com/ghoulslash/pokeemerald
    This now says that my remote branch is known on your own fork as "ghoul". So you can pull any branch of mine via
    Code:
    git pull ghoul <branch_name>
    which in this case would be:
    Code:
    git pull ghoul sideways_stairs

    Depending on what you've merged so far, you may get conflicts, meaning both parties have edited the same file at similar lines. Hopefully you won't run into any trouble there, though :)
     
    13
    Posts
    11
    Years
    • Seen Sep 24, 2023
    Since we use git with decomps, we can add "remotes", which are essentially other people's forks of pokeemerald. This lets us easily merge features other people have made! You can add my pokeemerald branch as a remote by typing the following in your git bash:
    Code:
    git remote add ghoul https://github.com/ghoulslash/pokeemerald
    This now says that my remote branch is known on your own fork as "ghoul". So you can pull any branch of mine via
    Code:
    git pull ghoul <branch_name>
    which in this case would be:
    Code:
    git pull ghoul sideways_stairs

    Depending on what you've merged so far, you may get conflicts, meaning both parties have edited the same file at similar lines. Hopefully you won't run into any trouble there, though :)

    Don't mind me asking but what exactly is a git bash?

    Also is there a way to put this onto an Emerald ROM?
     

    Lunos

    Random Uruguayan User
    3,114
    Posts
    15
    Years
  • Don't mind me asking but what exactly is a git bash?
    A bash is a command processor. A window that presents feedback in the form of text and has the user input commands in order to do things.
    Ghoul is talking about a terminal, basically. Cygwin's, MSys2's or WSL's. The environment that you use Git from.
    Also is there a way to put this onto an Emerald ROM?
    Matters related to binary hacking (as in the action of doing ROM Hacking by modifying a ROM) don't belong in this part of the forum.

    I don't think there's an implementation of Sideways Stairs for Emerald in binary hacking, but you're free to ask about it in the ROM Hacking Help Section, or to port the FireRed implementation made by Spherical Ice.
     
    13
    Posts
    11
    Years
    • Seen Sep 24, 2023
    A bash is a command processor. A window that presents feedback in the form of text and has the user input commands in order to do things.
    Ghoul is talking about a terminal, basically. Cygwin's, MSys2's or WSL's. The environment that you use Git from.

    Matters related to binary hacking (as in the action of doing ROM Hacking by modifying a ROM) don't belong in this part of the forum.

    I don't think there's an implementation of Sideways Stairs for Emerald in binary hacking, but you're free to ask about it in the ROM Hacking Help Section, or to port the FireRed implementation made by Spherical Ice.

    Well what I meant is, is it possible to build this into an Emerald ROM just like u would normally recompile pokeemerald. If not then it would kinda defeat the purpose of this existing wouldn't you think?
     

    Lunos

    Random Uruguayan User
    3,114
    Posts
    15
    Years
  • Well what I meant is, is it possible to build this into an Emerald ROM just like u would normally recompile pokeemerald. If not then it would kinda defeat the purpose of this existing wouldn't you think?
    I'm not sure what do you mean, to be quite honest with you.
    The main post of this thread presents an implementation of Sideways Stairs for Pokeemerald based projects.
    Once you build a ROM after implementing the feature into your project, you'll naturally have the feature implemented in that ROM.

    If you want to implement this directly into the ROM instead, again, this isn't the right place to ask for help about it.
     
    13
    Posts
    11
    Years
    • Seen Sep 24, 2023
    I'm not sure what do you mean, to be quite honest with you.
    The main post of this thread presents an implementation of Sideways Stairs for Pokeemerald based projects.
    Once you build a ROM after implementing the feature into your project, you'll naturally have the feature implemented in that ROM.

    If you want to implement this directly into the ROM instead, again, this isn't the right place to ask for help about it.

    What I am asking is how exactly do I build this into a ROM. I have found plenty of tutorials online on how to build ROMs out of pokeemerald but none of them are beginner friendly at all and my tiny brain can't comprehend how to do it.
     
    239
    Posts
    8
    Years
    • Seen Apr 15, 2024
    What I am asking is how exactly do I build this into a ROM. I have found plenty of tutorials online on how to build ROMs out of pokeemerald but none of them are beginner friendly at all and my tiny brain can't comprehend how to do it.

    Well step 1 is definitely to be able to build pokeemerald by itself before trying to add features. You can get help in the pret server, or try using Inmortal's tutorial on setting up decomps with little effort. I think there are several other beginner-friendly tutorials on setting up the decomp project if that one is too difficult, as well
     

    Lunos

    Random Uruguayan User
    3,114
    Posts
    15
    Years
  • What I am asking is how exactly do I build this into a ROM. I have found plenty of tutorials online on how to build ROMs out of pokeemerald but none of them are beginner friendly at all and my tiny brain can't comprehend how to do it.
    I'm confident in my tutorials as I wrote them in the most straightforward way possible.
    They're all posted in this same section of the forum we're in right now, that is the Decomp & Disassembly Tutorials & Resources Section.
    You only need to pick one and stick to it.
    https://www.pokecommunity.com/showthread.php?t=432351 - WSL (If you're using Win10, this is the superior choice.)
    https://www.pokecommunity.com/showthread.php?t=425246 - MSys2 (For Windows 8.1 or Windows 7 users specifically.)
    https://www.pokecommunity.com/showthread.php?t=426921 - Cygwin (For Windows 8.1 or Windows 7 users specifically. Slightly worse than MSys2.)

    Alternatively, InmortalKaktus created a tool recently that sets up a vanilla Pokeemerald project for you.
    https://www.pokecommunity.com/showthread.php?t=446273

    Then to implement this specific feature that is Sideways Stairs, you follow the instructions in the main post, making use of git remote to track Ghoulslash's Pokeemerald GitHub repository and then git pull to pull the code changes from his sideways_stairs branch into your project.
     
    13
    Posts
    11
    Years
    • Seen Sep 24, 2023
    I'm confident in my tutorials as I wrote them in the most straightforward way possible.
    They're all posted in this same section of the forum we're in right now, that is the Decomp & Disassembly Tutorials & Resources Section.
    You only need to pick one and stick to it.
    https://www.pokecommunity.com/showthread.php?t=432351 - WSL (If you're using Win10, this is the superior choice.)
    https://www.pokecommunity.com/showthread.php?t=425246 - MSys2 (For Windows 8.1 or Windows 7 users specifically.)
    https://www.pokecommunity.com/showthread.php?t=426921 - Cygwin (For Windows 8.1 or Windows 7 users specifically. Slightly worse than MSys2.)

    Alternatively, InmortalKaktus created a tool recently that sets up a vanilla Pokeemerald project for you.
    https://www.pokecommunity.com/showthread.php?t=446273

    Then to implement this specific feature that is Sideways Stairs, you follow the instructions in the main post, making use of git remote to track Ghoulslash's Pokeemerald GitHub repository and then git pull to pull the code changes from his sideways_stairs branch into your project.

    What exactly is git remote and git pull? are these cmd commands? That is the part I'm mainly confused about.
     

    Lunos

    Random Uruguayan User
    3,114
    Posts
    15
    Years
  • What exactly is git remote and git pull? are these cmd commands? That is the part I'm mainly confused about.
    Functions of Git, the version control system that is used when working with the decomps.
    As I explained:
    git remote allows you to track Git repositories at will.
    git pull allows you to incorporate commits containing changes of code submitted to a repository tracked via git remote, into your own project.
     
    13
    Posts
    11
    Years
    • Seen Sep 24, 2023
    Functions of Git, the version control system that is used when working with the decomps.
    As I explained:
    git remote allows you to track Git repositories at will.
    git pull allows you to incorporate commits containing changes of code submitted to a repository tracked via git remote, into your own project.

    Welp... I'm gonna pretend I know what that means.
     

    thechurchofcage

    a.k.a. The Cancer Fairy
    124
    Posts
    15
    Years
    • Seen Jul 24, 2023
    I hate to say it, but using the git pull method gives me a ridiculous number of conflicts. I don't suppose you have the SHA's of the relevant commits? I'm surprised that you've regularly been merging into that branch after completing the function, makes it quite hard to untangle.

    The stairs themselves look damn good though!
     
    Back
    Top