【发布时间】:2020-01-09 01:53:46
【问题描述】:
我看过一些关于检测 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;
}
谢谢!
【问题讨论】:
标签: c++ emulation game-boy-advance