summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/xavix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/xavix.cpp')
-rw-r--r--src/mame/machine/xavix.cpp39
1 files changed, 8 insertions, 31 deletions
diff --git a/src/mame/machine/xavix.cpp b/src/mame/machine/xavix.cpp
index 97ad3993018..a454cc955c2 100644
--- a/src/mame/machine/xavix.cpp
+++ b/src/mame/machine/xavix.cpp
@@ -766,43 +766,18 @@ WRITE8_MEMBER(xavix_state::mult_param_w)
// rad_madf uses this mode (add to previous result)
if ((m_multparams[0] & 0xc0) == 0xc0)
{
- if (signmode == 0x0)
- {
- uint8_t param1 = m_multparams[1];
- uint8_t param2 = m_multparams[2];
- result = param1 * param2;
- }
- else
- {
- popmessage("unknown signmode %02x", m_multparams[0] & 0x3f);
- }
+ const int param1 = signmode & 0x2 ? (int8_t)m_multparams[1] : (uint8_t)m_multparams[1];
+ const int param2 = signmode & 0x1 ? (int8_t)m_multparams[2] : (uint8_t)m_multparams[2];
+
+ result = param1 * param2;
uint16_t oldresult = (m_multresults[1] << 8) | m_multresults[0];
result = oldresult + result;
}
else if ((m_multparams[0] & 0xc0) == 0x00)
{
- int param1 = 0, param2 = 0;
-
- if (signmode == 0x0)
- {
- param1 = (uint8_t)m_multparams[1];
- param2 = (uint8_t)m_multparams[2];
- }
- else if (signmode == 0x2)
- {
- param1 = (int8_t)m_multparams[1];
- param2 = (uint8_t)m_multparams[2];
- }
- else if (signmode == 0x1)
- {
- param1 = (uint8_t)m_multparams[1];
- param2 = (int8_t)m_multparams[2];
- }
- else
- {
- popmessage("unknown signmode %02x", m_multparams[0] & 0x3f);
- }
+ const int param1 = signmode & 0x2 ? (int8_t)m_multparams[1] : (uint8_t)m_multparams[1];
+ const int param2 = signmode & 0x1 ? (int8_t)m_multparams[2] : (uint8_t)m_multparams[2];
result = param1 * param2;
}
@@ -924,6 +899,8 @@ void xavix_state::machine_reset()
m_sound_regbase = 0x00;
m_adc_control = 0x00;
+
+ m_sprite_xhigh_ignore_hack = true;
}
typedef device_delegate<uint8_t(int which, int half)> xavix_interrupt_vector_delegate;