cpu/drcbearm64.cpp: orr immediate needs a mask immediate.

This commit is contained in:
Vas Crabb 2025-04-03 16:41:01 +11:00
parent c5460b1011
commit c5629193ce
2 changed files with 2 additions and 2 deletions

View File

@ -4237,7 +4237,7 @@ void drcbe_arm64::op_or(a64::Assembler &a, const uml::instruction &inst)
if ((dst.id() != src1.id()) || ((inst.size() == 4) && (dstp == src1p) && dstp.is_int_register()))
a.mov(dst, src1);
}
else if (src2p.is_immediate() && is_valid_immediate(src2p.immediate(), 12))
else if (src2p.is_immediate() && is_valid_immediate_mask(src2p.immediate(), inst.size()))
{
mov_reg_param(a, inst.size(), src1, src1p);

View File

@ -322,7 +322,7 @@ void zsg2_device::sound_stream_update(sound_stream &stream, std::vector<read_str
int32_t sample = elem.samples[sample_pos];
// linear interpolation (hardware certainly does something similar)
sample += ((uint16_t)(elem.step_ptr << 2 & 0xffff) * (int16_t)(elem.samples[sample_pos+1] - sample)) >> 16;
sample += (uint16_t(elem.step_ptr << 2 & 0xffff) * int16_t(elem.samples[sample_pos+1] - sample)) >> 16;
// another filter...
elem.output_filter_state += (sample - (elem.output_filter_state >> 16)) * elem.output_cutoff;