稍微研究了下,发现这个问题还挺神奇的。能确定的是输入界面下键盘是贴图的假名,上屏幕是渲染的文本。然后码表(平假)在.data:003B11B0(50音序), 每一字对应一个假名,比如.data:003B11B0 -> .rodata:003A31A9(平假a),.rodata存储顺序是乱的,对应code.bin的偏移2a31a9处。

所以改键盘贴图和码表,把50音换成部分汉字勉强能显示。但是这个码表不止一个地方有使用,xref里看到至少有4处。不过片假名码表好像只有这一个地方在用,所以把敌人昵称的文字放到片假名码表大概是可行的一种办法。
不过我刚刚发现不输入名字直接点确定好像是会自动填充预设名字的,按照之前的分析应该可见文字就能正常显示,在这里替换中文感觉比换掉键盘更科学。如果有汉化敌人名字其实可以直接试试(我不太清楚敌人名字的存储方式),不过没有所以我就去研究键盘输入逻辑了。
键盘输入的逻辑也很神奇,主要的判断逻辑在:.text:001B0A40。可以看到有一些判断、播放音乐的逻辑。

但是主要的键盘操作逻辑都不在code.bin里面。我个人感觉是太鼓有一个叫lumen的系统专门用来实现UI操作逻辑,所有操作逻辑都是脚本形式的(编译后就是.lm文件)。这里的操作逻辑在romfs/lumen/name_entry/下的两个.lm文件,默认lz11压缩。解包可以看到很多和code.bin调用对应的符号(比如isEnd、isDecide什么的),这些函数的实现逻辑应该就在这里(不在code.bin)。
目前就研究到了这里,一会儿再研究下默认名字的获取逻辑,不过如果逻辑在lumen脚本里那就放弃了……
昨天才接触3ds rom hack,如果有做的不对的地方请dalao们指正。