You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

宝可梦红/蓝Recover技能故障分析:为何代码使用sbc指令?

宝可梦红/蓝Recover技能失效问题研究

我正在研究宝可梦红/蓝中出现的一个奇怪bug:当宝可梦当前HP比最大HP恰好少255时,使用Recover技能会触发失效问题。
我参考的宝可梦红/蓝反汇编代码中,该功能相关逻辑位于.healEffect标签下。

已梳理的代码触发逻辑

该bug的核心触发原因是开发人员错误使用了仅支持8位数值的cp指令做HP值比较,截断了高位比特,属于典型的编程失误,具体示例如下:

  • 测试数值:最大HP为703,当前HP为448,两者差值恰好为255
  • 对应二进制表示:

703 = 00000010 10111111
448 = 00000001 11000000

  • 截断高位后的8位数值:最大HP变为191,当前HP变为192,该非法比较会触发进位标志。

待解答的疑问

目前我无法理解的是此处sbc指令的使用逻辑:执行sbc时会计算 当前HP - 最大HP - 进位值,以上述示例计算结果为0,程序会误判为满血导致技能失效。
cp指令的误用可以解释为编程失误,但sbc本身是用于多字算术运算的指令,而HP是16位数值,我无法想到该场景下使用sbc的合理原因,希望得到相关解答。


内容的提问来源于stack exchange,提问作者Gummysaur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:27:04