change how flags works
This commit is contained in:
15
src/emu.c
15
src/emu.c
@@ -5,13 +5,14 @@ static inline Instruction fetchInst(Emulator* emu) {
|
||||
}
|
||||
|
||||
static inline void updateFlagsRegister(Emulator* emu, int32_t value) {
|
||||
if (value == 0) {
|
||||
emu->regs[REG_F] = FLAG_ZERO;
|
||||
} else if (value < 0) {
|
||||
emu->regs[REG_F] = FLAG_NEGATIVE;
|
||||
} else if (value > UINT16_MAX) {
|
||||
emu->regs[REG_F] = FLAG_OVERFLOW;
|
||||
}
|
||||
|
||||
FlagsRegister flags = (FlagsRegister)emu->regs[REG_F];
|
||||
|
||||
flags.fields.zero = value == 0;
|
||||
flags.fields.negative = value < 0;
|
||||
flags.fields.overflow = value > UINT16_MAX;
|
||||
|
||||
emu->regs[REG_F] = flags.raw;
|
||||
}
|
||||
|
||||
static inline void updateDevices(Emulator* emu) {
|
||||
|
||||
Reference in New Issue
Block a user