我看过一些关于检测 GBA 的 HALF CARRY 标志更改的文档。我正在用 C++ 编写一个模拟器,当我减去两个不同的数字时,我很难思考如何检测 HALF CARRY 标志的变化。(这在 shift 和 rotate 操作中也应该很明显,ADD 在 Stack Overflow 和不同的指南上都有很好的记录)。
到目前为止,我有这个功能可以检测一个操作是否触发了 HALF CARRY 设置(我很肯定这仅适用于添加):
#include <stdint.h>
static constexpr bool HalfCarryOnAddition(uint8_t first_num, uint8_t second_num)
{
return (((first_num & 0xF) + (second_num & 0xF)) & 0x10) == 0x10;
}
谢谢!