diff options
Diffstat (limited to 'src/devices/cpu/scudsp/scudsp.cpp')
-rw-r--r-- | src/devices/cpu/scudsp/scudsp.cpp | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/devices/cpu/scudsp/scudsp.cpp b/src/devices/cpu/scudsp/scudsp.cpp index 4f4d697a900..2f8c2d0e0a6 100644 --- a/src/devices/cpu/scudsp/scudsp.cpp +++ b/src/devices/cpu/scudsp/scudsp.cpp @@ -611,15 +611,13 @@ void scudsp_cpu_device::scudsp_move_immediate( uint32_t opcode ) { if ( scudsp_compute_condition( (opcode & 0x3F80000 ) >> 19 ) ) { - value = opcode & 0x7ffff; - if ( value & 0x40000 ) value |= 0xfff80000; + value = util::sext( opcode, 19 ); scudsp_set_dest_mem_reg_2( (opcode & 0x3C000000) >> 26, value ); } } else { - value = opcode & 0x1ffffff; - if ( value & 0x1000000 ) value |= 0xfe000000; + value = util::sext( opcode, 25 ); scudsp_set_dest_mem_reg_2( (opcode & 0x3C000000) >> 26, value ); } m_icount -= 1; @@ -989,10 +987,6 @@ void scudsp_cpu_device::device_start() state_add( STATE_GENPCBASE, "CURPC", m_pc ).noshow(); state_add( STATE_GENFLAGS, "GENFLAGS", m_flags ).formatstr("%17s").noshow(); - m_out_irq_cb.resolve_safe(); - m_in_dma_cb.resolve_safe(0); - m_out_dma_cb.resolve_safe(); - set_icountptr(m_icount); } @@ -1023,7 +1017,7 @@ void scudsp_cpu_device::data_map(address_map &map) scudsp_cpu_device::scudsp_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : cpu_device(mconfig, SCUDSP, tag, owner, clock) , m_out_irq_cb(*this) - , m_in_dma_cb(*this) + , m_in_dma_cb(*this, 0) , m_out_dma_cb(*this) , m_program_config("program", ENDIANNESS_BIG, 32, 8, -2, address_map_constructor(FUNC(scudsp_cpu_device::program_map), this)) , m_data_config("data", ENDIANNESS_BIG, 32, 8, -2, address_map_constructor(FUNC(scudsp_cpu_device::data_map), this)) |