 
 // Increment 8-bit Register
 def om_inc8(r: uint8): uint8 {
-  flag_set(FLAG_H, (((r & 0xF) + (1 & 0xF)) & 0x10) > 0);
-
   r += 1;
 
   flag_set(FLAG_Z, r == 0);
   flag_set(FLAG_N, false);
+  flag_set(FLAG_H, r & 0x0F == 0x00);
 
   return r;
 }
 
 // Decrement 8-bit Register
 def om_dec8(r: uint8): uint8 {
-  flag_set(FLAG_H, (((r & 0xF) - (1 & 0xF)) & 0x10) < 0);
-
   r -= 1;
 
   flag_set(FLAG_Z, r == 0);
   flag_set(FLAG_N, true);
+  flag_set(FLAG_H, r & 0x0F == 0x0F);
 
   return r;
 }


// [82] ADD A, D
def op_82() {
  *A = om_add8(*A, *C);
}

// [83] ADD A, E


// [AA] XOR A, D
def op_AA() {
  *A = om_xor8(*A, *D);
}

// [AB] XOR A, E
