圣魔之光石吧 关注:26,980贴子:390,628

回复:(随缘更) FE8U的Pre-Battle阶段程序解读

只看楼主收藏回复

【2】Menu
我能找到的最早对Menu的研究工作是StanH@FEU针对FE8U中骨科兄妹分道扬镳时弹出的 lord split menu的研究(https://feuniverse.us/t/fe8u-doc-guide-analysing-extending-mimicking-the-lord-split-menu/2878),如果你打算成为一名进阶向GBAFE ASM Hacker的话,这篇帖子绝对不能错过。原帖对探索过程演绎非常精彩,我们在此处只对其成果进行简单介绍。
本部分主要参考StanH所做MenuNotes.txt,可以前往 (https://github.com/StanHash/DOC/) 下载。


IP属地:上海18楼2021-07-07 14:01
回复
    【2.1】 Menu与Command的数据结构
    首先,UnitMenu分为两个部分,分别是Menu_Defination与Menu_Command。
    Menu_Defination的结构如下:

    当系统试图开启一个菜单的时候,首先会寻址Menu_definition,随后循着其0x8的位置查找对应的Menu_Command。
    Menu_Command的结构如下:

    其中,Menu_Command中的每一个Command_definition分别对应一个选项(Size、Attack、Item、Wait等等)。而在Command_definition内部则可以找到是否可选(U****lity)、点击后的效果(Effect)等函数以及其他数据。


    IP属地:上海19楼2021-07-07 14:03
    回复
      2026-01-31 01:33:00
      广告
      不感兴趣
      开通SVIP免广告
      尼玛Usa------bility竟然给屏蔽了????彳亍


      IP属地:上海21楼2021-07-07 14:05
      回复
        回到FE8U,具体到UnitMenu部分,其数据如下(可以采用FEB查看):
        Menu_Defination(UnitMenu):

        Command_definition:

        转换成我们刚才罗列的格式就是:



        IP属地:上海22楼2021-07-07 14:06
        回复
          武器范围不能选魔/2这一条吧,我一选直接不能攻击了


          IP属地:浙江25楼2021-07-14 21:22
          收起回复
            实际上基于上述少量的知识,我们已经可以着手制作一个简单的菜单了:
            首先,将59D1F0(UnitMenu处)覆盖上我们重新做的UM Defination:

            我们在这里只简单地把+0x8,也即MenuCommand的部分单列出来。
            那么接下来来做Command吧:

            改动同样很简单,只把+0xC处,也即Command U****lity的函数做了定义 ( return r0=1 ),即可让这一Command永远可选。
            那么烧录进游戏看一下情况吧:

            "Eirika"正是我们定义在MenuCommand+0x4处的字串ID,0x212。
            当然了目前点击之后没有任何效果,因为MenuCommand+0x14处,即Command Effect处并没有指向某一个函数。你可以尝试抄来Wait的效果函数,烧录进游戏看看效果


            IP属地:上海26楼2021-07-22 20:59
            回复
              好牛好牛,会加入feb补丁吗


              IP属地:广东30楼2022-03-26 00:35
              收起回复