- 239
- Posts
- 9
- Years
- Seen Apr 17, 2025
[Pokefirered] & [Pokeemerald] Quest Menu
This feature was originally implemented for binary hacking, but the PC menu works quite well for a quest menu in my opinion so I kept the original implementation rather than try to improve it.
Pokefirered repo
Pokeemerald repo
How To Add
How to Use (Pokeemerald):
How To Use (Pokefirered):
Scripting Commands:
How To Use (Pokeemerald): The same as above, except everything in contained in src/quests.c, and the function name to call is "QuestMenu_Init(0, some_callback)." A function named "Task_OpenQuestMenuFromStartMenu" is added for you to easily add QUESTS as a start menu option as well
Example Scripts:
Example Script: Unlock quests 2, 5, 7, and 15 and then open the quest menu
Example Script: Mark quest 13 as complete
Example Script: Buffer the active quest name
This feature was originally implemented for binary hacking, but the PC menu works quite well for a quest menu in my opinion so I kept the original implementation rather than try to improve it.
Pokefirered repo
Pokeemerald repo
![[PokeCommunity.com] [Pokefirered + Pokeemerald] Quest Menu [PokeCommunity.com] [Pokefirered + Pokeemerald] Quest Menu](https://i.imgur.com/zO9MisS.gif)
How To Add
- git remote add ghoulslash https://github.com/ghoulslash/pokefirered (or https://github.com/ghoulslash/pokeemerald)
- git pull ghoulslash quest-menu
How to Use (Pokeemerald):
- By default the quest menu is added to the start menu when "FLAG_SYS_QUEST_MENU_GET" is set.
- To open from elsewhere, you just need to call:
Code:QuestMenu_Init(0, <callback>)
- edit "sSideQuests" with your quest info. Strings are found in "src/strings.c"
How To Use (Pokefirered):
- If you want to open from elsewhere, you just need to call ItemPc_Init(0, some_callback).
- The structure, 'sSideQuests' inside src/item_pc.c on line 58 contains each quest's info. The relevant strings can be found in src/strings.c.
- Changing the default flags, number of quests, etc., can be found in include/quests.h
Scripting Commands:
- I've added a script command, 'questmenu', that takes a couple arguments and can be used to open the menu, unlock/complete quests, and more. Here's a rundown for the command "questmenu case, questId"
- openquestmenu (or questmenu QUEST_MENU_OPEN 0): open the quest menu
- QUEST_MENU_UNLOCK_QUEST questId: unlocks a specific quest
- QUEST_MENU_COMPLETE_QUEST questId: mark a quest as complete
- QUEST_MENU_SET_ACTIVE questId: set a quest as the active quest
- QUEST_MENU_RESET_ACTIVE: remove any active quest
- QUEST_MENU_BUFFER_QUEST_NAME questId: buffers the questId name to gStringVar1 (STR_VAR_1)
- QUEST_MENU_GET_ACTIVE_QUEST: returns the active questId to VAR_RESULT
- QUEST_MENU_CHECK_UNLOCKED questId: checks if the questId has been unlocked. Returns result to VAR_RESULT
- QUEST_MENU_CHECK_COMPLETE questId: checks if the questId has been completed. Returns result to VAR_RESULT
How To Use (Pokeemerald): The same as above, except everything in contained in src/quests.c, and the function name to call is "QuestMenu_Init(0, some_callback)." A function named "Task_OpenQuestMenuFromStartMenu" is added for you to easily add QUESTS as a start menu option as well
Example Scripts:
Spoiler:
Example Script: Unlock quests 2, 5, 7, and 15 and then open the quest menu
Code:
questmenu QUEST_MENU_UNLOCK_QUEST SIDE_QUEST_2
questmenu QUEST_MENU_UNLOCK_QUEST SIDE_QUEST_5
questmenu QUEST_MENU_UNLOCK_QUEST SIDE_QUEST_7
questmenu QUEST_MENU_UNLOCK_QUEST SIDE_QUEST_15
openquestmenu
end
Example Script: Mark quest 13 as complete
Code:
questmenu QUEST_MENU_COMPLETE_QUEST SIDE_QUEST_13
end
Example Script: Buffer the active quest name
Code:
questmenu QUEST_MENU_GET_ACTIVE_QUEST 0
questmenu QUEST_MENU_BUFFER_QUEST_NAME VAR_RESULT
msgbox QuestName MSGBOX_SIGN
QuestName: .string "{STR_VAR_1}$"
Last edited: