def METHOD_NAME(self, name, mode='normal'):
    """
    Args:
        name (str): Campaign name, such as '7-2', 'd3', 'sp3'.
        mode (str): 'normal' or 'hard'.
    """
    chapter, _ = self._campaign_separate_name(name)
    if chapter.isdigit():
        self.ui_goto_campaign()
        self.campaign_ensure_mode('normal')
        self.campaign_ensure_chapter(index=chapter)
        if mode == 'hard':
            self.campaign_ensure_mode('hard')
            self.campaign_ensure_chapter(index=chapter)
    elif chapter in ['a', 'b', 'c', 'd', 'ex_sp', 'as', 'bs', 'cs', 'ds']:
        self.ui_goto_event()
        if chapter in ['a', 'b', 'as', 'bs']:
            self.campaign_ensure_mode('normal')
        elif chapter in ['c', 'd', 'cs', 'ds']:
            self.campaign_ensure_mode('hard')
        elif chapter == 'ex_sp':
            # self.campaign_ensure_mode('ex')
            pass  # Difference
        self.campaign_ensure_chapter(index=chapter)
    elif chapter == 'sp':
        # self.ui_goto_sp()
        self.ui_goto_event()  # Difference
        self.campaign_ensure_chapter(index=chapter)
    else:
        logger.warning(f'Unknown campaign chapter: {name}')