Pokemon Center | 口袋中心 以口袋妖怪为主题并带有其他动漫游戏的讨论

 找回密码
 加入口袋中心
搜索
查看: 2449|回复: 8

绿宝石开始菜单翻页(反编译)

[复制链接]

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

发表于 2022-5-3 18:39:41 | 显示全部楼层 |阅读模式
本帖最后由 744865306 于 2022-5-3 19:08 编辑

教程包括:开始菜单翻页程序和开始菜单查看,取放电脑精灵

欢迎转载此教程


首先,打开
  1. src/strings.c
复制代码
修改gText_MenuExit的文本为:下一页,并定义文本:
  1. const u8 gText_MenuPC[]=_("电脑");
  2. const u8 gText_MenuPage[]=_("上一页");
复制代码
接着打开
  1. include/strings.h
复制代码
在底下添加:
  1. extern const u8 gText_MenuPC[];
  2. extern const u8 gText_MenuPage[];
复制代码
打开
  1. src/start_menu.c
复制代码
找到MENU_ACTION的enum,更改:
  1. enum
  2. {
  3.     MENU_ACTION_POKEDEX,
  4.     MENU_ACTION_POKEMON,
  5.     MENU_ACTION_BAG,
  6.     MENU_ACTION_POKENAV,
  7.     MENU_ACTION_PLAYER,
  8.     MENU_ACTION_SAVE,
  9.     MENU_ACTION_OPTION,
  10.     MENU_ACTION_PAGE,
  11.     MENU_ACTION_PC,
  12.     MENU_ACTION_EXIT,
  13.     MENU_ACTION_RETIRE_SAFARI,
  14.     MENU_ACTION_PLAYER_LINK,
  15.     MENU_ACTION_REST_FRONTIER,
  16.     MENU_ACTION_RETIRE_FRONTIER,
  17.     MENU_ACTION_PYRAMID_BAG
  18. };
复制代码
定义新函数:
  1. static bool8 StartMenuExitCallback(void);
  2. static bool8 StartMenuChangePage(void);
  3. static void BuildSecondStartMenu(void);
复制代码
定义新内存用于判断页数:
  1. EWRAM_DATA static u8 sStartMenuPage = 0;
复制代码
搜索:
  1. static const struct MenuAction sStartMenuItems[] =
复制代码
修改内容为:
  1. static const struct MenuAction sStartMenuItems[] =
  2. {
  3.     {gText_MenuPokedex, {.u8_void = StartMenuPokedexCallback}},
  4.     {gText_MenuPokemon, {.u8_void = StartMenuPokemonCallback}},
  5.     {gText_MenuBag, {.u8_void = StartMenuBagCallback}},
  6.     {gText_MenuPokenav, {.u8_void = StartMenuPokeNavCallback}},
  7.     {gText_MenuPlayer, {.u8_void = StartMenuPlayerNameCallback}},
  8.     {gText_MenuSave, {.u8_void = StartMenuSaveCallback}},
  9.     {gText_MenuOption, {.u8_void = StartMenuOptionCallback}},
  10.     {gText_MenuExit, {.u8_void = StartMenuExitCallback}},
  11.     {gText_MenuPC, {.u8_void = StartMenuPCCallback}},
  12.     {gText_MenuPage, {.u8_void = StartMenuChangePage}},
  13.     {gText_MenuRetire, {.u8_void = StartMenuSafariZoneRetireCallback}},
  14.     {gText_MenuPlayer, {.u8_void = StartMenuLinkModePlayerNameCallback}},
  15.     {gText_MenuRest, {.u8_void = StartMenuSaveCallback}},
  16.     {gText_MenuRetire, {.u8_void = StartMenuBattlePyramidRetireCallback}},
  17.     {gText_MenuBag, {.u8_void = StartMenuBattlePyramidBagCallback}}
  18. };
复制代码
修改BuildStartMenuActions函数:
  1. static void BuildStartMenuActions(void)
  2. {
  3.     sNumStartMenuActions = 0;

  4. if (StartMenuPage==0) {
  5.     if (IsUpdateLinkStateCBActive() == TRUE)
  6.     {
  7.         BuildLinkModeStartMenu();
  8.     }
  9.     else if (InUnionRoom() == TRUE)
  10.     {
  11.         BuildUnionRoomStartMenu();
  12.     }
  13.     else if (GetSafariZoneFlag() == TRUE)
  14.     {
  15.         BuildSafariZoneStartMenu();
  16.     }
  17.     else if (InBattlePike())
  18.     {
  19.         BuildBattlePikeStartMenu();
  20.     }
  21.     else if (InBattlePyramid())
  22.     {
  23.         BuildBattlePyramidStartMenu();
  24.     }
  25.     else if (InMultiPartnerRoom())
  26.     {
  27.         BuildMultiPartnerRoomStartMenu();
  28.     }
  29.     else
  30.     {
  31.         BuildNormalStartMenu();
  32.     }
  33. }
  34. if (StartMenuPage==1) {
  35.         BuildSecondStartMenu();
  36. }
  37. }
复制代码
搜索:
  1. if (gMenuCallback != StartMenuSaveCallback
  2.             && gMenuCallback != StartMenuExitCallback
  3.             && gMenuCallback != StartMenuSafariZoneRetireCallback
  4.             && gMenuCallback != StartMenuBattlePyramidRetireCallback)
复制代码
更改为:
  1. if (gMenuCallback != StartMenuSaveCallback
  2.             && gMenuCallback != StartMenuExitCallback
  3.             && gMenuCallback != StartMenuSafariZoneRetireCallback
  4.             && gMenuCallback != StartMenuBattlePyramidRetireCallback
  5.             && gMenuCallback != StartMenuChangePage)
复制代码
添加新函数:
  1. /*设置第二页内容*/
  2. static void BuildSecondStartMenu(void) {
  3.         AddStartMenuAction(MENU_ACTION_PC);
  4.         AddStartMenuAction(MENU_ACTION_EXIT);
  5. }

  6. static bool8 StartMenuPCCallback(void)
  7. {
  8.         u8 taskId;
  9.     if (!gPaletteFade.active)
  10.     {
  11.         PlayRainStoppingSoundEffect();
  12.         RemoveExtraStartMenuWindows();
  13.                 EnterPokeStorage(2);
  14.         return TRUE;
  15.     }

  16.     return FALSE;
  17. }

  18. /*切换到第一页*/
  19. static bool8 StartMenuChangePage(void) {
  20.         sStartMenuPage=0;
  21.         RemoveExtraStartMenuWindows();
  22.             HideStartMenu();
  23.             ShowStartMenu();
  24. }
复制代码
最后,更改StartMenuExitCallback函数为:
  1. static bool8 StartMenuExitCallback(void)
  2. {
  3.         sStartMenuPage=1;
  4.             RemoveExtraStartMenuWindows();
  5.             HideStartMenu(); // Hide start menu
  6.             ShowStartMenu();
  7.             return TRUE;
  8. }
复制代码
教程结束,欢迎各位大佬进行优化

评分

参与人数 1积分 +15 现金 +30 收起 理由
jiangzhengwenjz + 15 + 30

查看全部评分

回复

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2022-5-3 18:59:20 | 显示全部楼层
本帖最后由 744865306 于 2022-5-4 11:10 编辑

效果:
https://pan.xb6868.com/api/v3/fi ... kdGjCMf2P1Eg%3D%3A0
回复 支持 反对

使用道具 举报

3369

回帖

552

现金

485

勋章券

超级版主

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
22136
QQ

时光印记Lv.3挥金如土勋章水中王者勋章Lv3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章金银好CP-Ho-oh/LUGIA【里】金银好CP-Ho-oh/LUGIA【真·正常向】异化型LUGIA【M超梦版】

发表于 2022-5-3 21:00:49 | 显示全部楼层
强烈建议你养成代码缩进的习惯
回复 支持 反对

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2022-5-4 11:09:31 来自手机 | 显示全部楼层
jiangzhengwenjz 发表于 2022-5-3 21:00
强烈建议你养成代码缩进的习惯

啊这,我知道,但是感觉很麻烦
回复 支持 反对

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2022-5-4 11:19:11 来自手机 | 显示全部楼层
jiangzhengwenjz 发表于 2022-5-3 21:00
强烈建议你养成代码缩进的习惯

对了,大佬能教我怎么合并项目嘛?
回复 支持 反对

使用道具 举报

3369

回帖

552

现金

485

勋章券

超级版主

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
22136
QQ

时光印记Lv.3挥金如土勋章水中王者勋章Lv3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章金银好CP-Ho-oh/LUGIA【里】金银好CP-Ho-oh/LUGIA【真·正常向】异化型LUGIA【M超梦版】

发表于 2022-5-4 17:44:38 | 显示全部楼层
744865306 发表于 2022-5-4 11:09
啊这,我知道,但是感觉很麻烦

https://qa.1r1g.cn/pt/ask/13331531/
回复 支持 反对

使用道具 举报

3369

回帖

552

现金

485

勋章券

超级版主

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
22136
QQ

时光印记Lv.3挥金如土勋章水中王者勋章Lv3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章金银好CP-Ho-oh/LUGIA【里】金银好CP-Ho-oh/LUGIA【真·正常向】异化型LUGIA【M超梦版】

发表于 2022-5-4 17:45:06 | 显示全部楼层
744865306 发表于 2022-5-4 11:19
对了,大佬能教我怎么合并项目嘛?


git吗?具体你想怎么合并项目?
回复 支持 反对

使用道具 举报

100

回帖

699

现金

0

勋章券

手举徽章的兴奋

Rank: 6Rank: 6

积分
372

时光印记Lv.1

 楼主| 发表于 2022-5-4 20:28:04 来自手机 | 显示全部楼层
jiangzhengwenjz 发表于 2022-5-4 17:45
git吗?具体你想怎么合并项目?

就是把对方项目里一个功能添加进来呀
回复 支持 反对

使用道具 举报

3369

回帖

552

现金

485

勋章券

超级版主

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
22136
QQ

时光印记Lv.3挥金如土勋章水中王者勋章Lv3Omega红宝石发售确认纪念章Alpha蓝宝石发售确认纪念章金银好CP-Ho-oh/LUGIA【里】金银好CP-Ho-oh/LUGIA【真·正常向】异化型LUGIA【M超梦版】

发表于 2022-5-5 12:53:15 | 显示全部楼层
744865306 发表于 2022-5-4 20:28
就是把对方项目里一个功能添加进来呀

假如是在github那正常的做法是那个人fork你的仓库、然后修改、提交、上传后使用pull request
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入口袋中心

本版积分规则

手机版|Archiver|Pokemon Center

GMT+8, 2024-11-21 19:50 , Processed in 0.125360 second(s), 44 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表