Kiwi is reachable over EmuDev Discord's #resources-systems and I was pleasantly surprised that it is still updated, thank you for doing that!
I had a look, and I recognized a few issues related to the fact that in conflict of math opcode registers Vx or Vy with VF, especially VF being Vx, the result in VF should be the flag of the operation (as if no conflict occurred). It is the math result in this implementation.
There is a great test suite by Timendus at https://github.com/Timendus/chip8-test-suite and its 04-flags.ch8 will fail at a few places because of this.
There are a few smaller other issues, like Ex9E, ExA1 and Fx29 should mask the value from Vx to four bit only, to keep it safe (that behavior is actually documented in the VIP manual), and Fx0A should wait for the release of a key, but the flags issue is the most obvious and VF is a favorite register for math used to just get the flag, so it kinda matters.
Feel free to ask any questions about this here or meet us at #chip-8 on the EmuDev Discord.
PS: I can open separate issues for the masking and the key issue, if you prefer.
Kiwi is reachable over EmuDev Discord's #resources-systems and I was pleasantly surprised that it is still updated, thank you for doing that!
I had a look, and I recognized a few issues related to the fact that in conflict of math opcode registers Vx or Vy with VF, especially VF being Vx, the result in VF should be the flag of the operation (as if no conflict occurred). It is the math result in this implementation.
There is a great test suite by Timendus at https://github.com/Timendus/chip8-test-suite and its 04-flags.ch8 will fail at a few places because of this.
There are a few smaller other issues, like Ex9E, ExA1 and Fx29 should mask the value from Vx to four bit only, to keep it safe (that behavior is actually documented in the VIP manual), and Fx0A should wait for the release of a key, but the flags issue is the most obvious and VF is a favorite register for math used to just get the flag, so it kinda matters.
Feel free to ask any questions about this here or meet us at #chip-8 on the EmuDev Discord.
PS: I can open separate issues for the masking and the key issue, if you prefer.