- 106
- Posts
- 16
- Years
- Seen May 29, 2019
I've always enjoyed the idea of customisation in games, so I've implemented a costume menu for Pokémon Emerald using the pokeemerald disassembly, and the best part is the source code is available for all to enjoy (src/costume_menu.c).
Features:
Planned features:
Known issues:
I may provide a standalone branch with only the costume menu and dynamic palette system if it is wanted.
Adding new costumes
Although I intend to simplify it as well as adding an unlock message automatically, akin to picking up an item.
At present pokeemerald is 68% decompiled, meaning that there are still limitations on what can be done with it and it is not in a user friendly state, but I would still recommend playing around with it as it allows for much more complex changes than a binary ROM hack.
I will periodically be merging with the master branch until it is completely decompiled.
FAQ:
Is this compatible with existing hacks?
If the hack is using the pokeemerald disassembly then yes, it should also be fairly simple to port to pokeruby. You will need to understand how to use github though.
If you're doing a traditional binary ROM hack then no, but the benefits of learning how to use the disassemblies are significant.
Will a patch be made?
It could but that would defeat the point of using the disassemblies.
I don't want it on the start menu, can I access it some other way?
Yes, you have the source code available, you can undo the changes I made by comparing it with the master branch and going to src/start_menu.c: https://github.com/pret/pokeemerald...costume#diff-bafcaeb8ddf95aafdb833e0768944e24
You will need to familiarise yourself with pokeemerald to understand where to insert the callback for the costume menu (CB2_CostumeMenu) if you want to access it from somewhere else.
Features:
- Ability to change the character you play as via a menu.
- Up to 255 costumes (though that can be easily expanded if required)
- Filter costumes by male/female/unlocked.
- Locked costumes are displayed in greyscale.
- Ability to hide specific costumes from being displayed until they've been unlocked.
- Dynamic overworld and reflection palette system.
- Support for asymmetric overworlds.
Planned features:
- Expanded overworlds (Whilst I have started this and am fairly sure on how to do the rest, I am unable to do so until more code has been decompiled, specifically any code that references gSaveBlock1Ptr).
- Accurate Gen IV style overworlds (Requires custom graphics, if you're interested in contributing check out the Playable Character Community Project thread).
Known issues:
- Due to having started the overworld expansion but being unable to complete is at present, any event object over 255 cannot be displayed.
- As custom graphics are required there are some graphical issues with placeholder graphics that share the same palette slot (such as the player's running pose for instance) but use a different palette.
I may provide a standalone branch with only the costume menu and dynamic palette system if it is wanted.
Adding new costumes
- Within "include/constants/costumes.h" Add new defines (before NUMBER_OF_COSTUMES) for your new costumes and renumber them accordingly, this will affect SaveBlock2 so any previous save will be incompatible after these changes.
- Next add a name and description for your costume in "src/data/costume_menu/costume_descriptions.h"
- Add an entry to gCostumes within "src/data/costume_menu/costumes.h"
- To be able to use your costume in-game you need to create a script to unlock it:
Code:
UnlockCostume_ExampleScript:: setvar VAR_0x8004 COSTUME_RED special UnlockCostume_Special end
Although I intend to simplify it as well as adding an unlock message automatically, akin to picking up an item.
At present pokeemerald is 68% decompiled, meaning that there are still limitations on what can be done with it and it is not in a user friendly state, but I would still recommend playing around with it as it allows for much more complex changes than a binary ROM hack.
I will periodically be merging with the master branch until it is completely decompiled.
FAQ:
Is this compatible with existing hacks?
If the hack is using the pokeemerald disassembly then yes, it should also be fairly simple to port to pokeruby. You will need to understand how to use github though.
If you're doing a traditional binary ROM hack then no, but the benefits of learning how to use the disassemblies are significant.
Will a patch be made?
It could but that would defeat the point of using the disassemblies.
I don't want it on the start menu, can I access it some other way?
Yes, you have the source code available, you can undo the changes I made by comparing it with the master branch and going to src/start_menu.c: https://github.com/pret/pokeemerald...costume#diff-bafcaeb8ddf95aafdb833e0768944e24
You will need to familiarise yourself with pokeemerald to understand where to insert the callback for the costume menu (CB2_CostumeMenu) if you want to access it from somewhere else.
Last edited by a moderator: