gameboy
gameboy copied to clipboard
SUB A, r8/d8 command to set flag C
According to the GBCPUman: C - Set if no borrow.
In my opinion, the code should be:
self.reg.set_flag(Flag::C, a >= n);
when the value of register A is greater then the number n, a-n is not borrowed. But in the project, the code is:
self.reg.set_flag(C, u16::from(a) < u16::from(n));
Which I couldn't understand.
The substract in i8080/z80 is 'unintuitive' behaviour, See https://retrocomputing.stackexchange.com/questions/12558/the-behavior-of-the-auxiliary-carry-flag-in-subtraction-on-intel-8080