diff --git a/src/cpu.rs b/src/cpu.rs index f78bf7d..a817b05 100644 --- a/src/cpu.rs +++ b/src/cpu.rs @@ -610,29 +610,18 @@ impl CPU { } } - fn set_flags_from_i8(status: &mut Status, value: i8) { - let is_zero = value == 0; - let is_negative = value < 0; - - status.set_with_mask( - Status::PS_ZERO | Status::PS_NEGATIVE, - Status::new(StatusArgs { - zero: is_zero, - negative: is_negative, - ..StatusArgs::none() - }), - ); + const fn value_is_negative(value: u8) -> bool { + value > 127 } fn set_flags_from_u8(status: &mut Status, value: u8) { let is_zero = value == 0; - let is_negative = value > 127; status.set_with_mask( Status::PS_ZERO | Status::PS_NEGATIVE, Status::new(StatusArgs { zero: is_zero, - negative: is_negative, + negative: Self::value_is_negative(value), ..StatusArgs::none() }), ); @@ -650,7 +639,7 @@ impl CPU { ..StatusArgs::none() }), ); - CPU::::set_flags_from_i8(status, *p_val as i8); + CPU::::set_flags_from_u8(status, *p_val); } fn shift_right_with_flags(p_val: &mut u8, status: &mut Status) { @@ -664,7 +653,7 @@ impl CPU { ..StatusArgs::none() }), ); - CPU::::set_flags_from_i8(status, *p_val as i8); + CPU::::set_flags_from_u8(status, *p_val); } fn rotate_left_with_flags(p_val: &mut u8, status: &mut Status) { @@ -680,7 +669,7 @@ impl CPU { ..StatusArgs::none() }), ); - CPU::::set_flags_from_i8(status, *p_val as i8); + CPU::::set_flags_from_u8(status, *p_val); } fn rotate_right_with_flags(p_val: &mut u8, status: &mut Status) { @@ -696,7 +685,7 @@ impl CPU { ..StatusArgs::none() }), ); - CPU::::set_flags_from_i8(status, *p_val as i8); + CPU::::set_flags_from_u8(status, *p_val); } fn set_u8_with_flags(mem: &mut u8, status: &mut Status, value: u8) { @@ -917,13 +906,12 @@ impl CPU { let value_new = val.wrapping_add(1); *val = value_new; - let is_negative = (value_new as i8) < 0; let is_zero = value_new == 0; flags.set_with_mask( Status::PS_NEGATIVE | Status::PS_ZERO, Status::new(StatusArgs { - negative: is_negative, + negative: Self::value_is_negative(value_new), zero: is_zero, ..StatusArgs::none() }), @@ -934,13 +922,12 @@ impl CPU { let value_new = val.wrapping_sub(1); *val = value_new; - let is_negative = (value_new as i8) < 0; let is_zero = value_new == 0; flags.set_with_mask( Status::PS_NEGATIVE | Status::PS_ZERO, Status::new(StatusArgs { - negative: is_negative, + negative: Self::value_is_negative(value_new), zero: is_zero, ..StatusArgs::none() }),