-
Notifications
You must be signed in to change notification settings - Fork 164
Tutorial: Allow Deleting HM Moves
RavePossum edited this page Feb 22, 2026
·
1 revision
Author: RavePossum
If we remove the checks that stop you from deleting HM moves, we can allow overwriting them at any time.
Doing so is relatively simple - just make the following changes in the relevant files:
src/applications/pokemon_summary_screen/main.c:
static int HandleInput_SelectMove(PokemonSummaryScreen *summaryScreen)
...
if (JOY_NEW(PAD_BUTTON_A)) {
Sound_PlayEffect(SEQ_SE_DP_DECIDE);
- if (summaryScreen->cursor != LEARNED_MOVES_MAX) {
- if (Item_IsHMMove(summaryScreen->monData.moves[summaryScreen->cursor]) == TRUE && summaryScreen->data->move != MOVE_NONE) {
- Sprite_SetDrawFlag2(summaryScreen->sprites[SUMMARY_SPRITE_MOVE_CATEGORY_ICON], FALSE);
- DrawEmptyHearts(summaryScreen);
- PokemonSummaryScreen_PrintHMMovesCantBeForgotten(summaryScreen);
- return SUMMARY_STATE_WAIT_HM_MSG_INPUT;
- }
- }
summaryScreen->data->selectedMoveSlot = summaryScreen->cursor;
summaryScreen->data->returnMode = SUMMARY_RETURN_SELECT;
return SUMMARY_STATE_TRANSITION_OUT;src/battle_party.c:
static u8 BattlePartyTask_ConfirmLearnMoveScreen(BattleParty *battleParty)
...
ov13_02225FCC(battleParty, 29);
}
- if (CheckSelectedMoveIsHM(battleParty) == TRUE) {
- BattlePartyText_PrintHMMovesCantBeForgottenText(battleParty);
-
- if (battleParty->displayingContestStats == FALSE) {
- ClearMoveStats(battleParty);
- } else {
- ClearMoveContestStats(battleParty);
- }
-
- battleParty->queuedState = TASK_STATE_CONFIRM_LEARN_MOVE_SCREEN;
- } else {
- battleParty->queuedState = TASK_STATE_EXIT;
- }
+ battleParty->queuedState = TASK_STATE_EXIT;
return TASK_STATE_SCREEN_TRANSITION;
case BATTLE_CONFIRM_LEARN_MOVE_SCREEN_BUTTON_CONTEST_STATS: