mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
New working machines
-------------------- Dora the Explorer (JAKKS Pacific TV Game) [Sean Riddle, David Haywood] -unsp: Fixed S flag calculation. [Vas Crabb, Ryan Holtz]
This commit is contained in:
parent
05e1dc2353
commit
f0b4faef4e
@ -256,13 +256,13 @@ void unsp_device::state_import(const device_state_entry &entry)
|
||||
void unsp_device::update_nzsc(uint32_t value, uint16_t r0, uint16_t r1)
|
||||
{
|
||||
m_core->m_r[REG_SR] &= ~(UNSP_N | UNSP_Z | UNSP_S | UNSP_C);
|
||||
if((int16_t)r0 < (int16_t)r1)
|
||||
if (int16_t(r0) < int16_t(~r1))
|
||||
m_core->m_r[REG_SR] |= UNSP_S;
|
||||
if(value & 0x8000)
|
||||
if (BIT(value, 15))
|
||||
m_core->m_r[REG_SR] |= UNSP_N;
|
||||
if((uint16_t)value == 0)
|
||||
m_core->m_r[REG_SR] |= UNSP_Z;
|
||||
if(value != (uint16_t)value)
|
||||
if (BIT(value, 16))
|
||||
m_core->m_r[REG_SR] |= UNSP_C;
|
||||
}
|
||||
|
||||
@ -877,33 +877,37 @@ inline void unsp_device::execute_one(const uint16_t op)
|
||||
switch (op0)
|
||||
{
|
||||
case 0x00: // Add
|
||||
{
|
||||
lres = r0 + r1;
|
||||
if (opa != 7)
|
||||
update_nzsc(lres, r0, r1);
|
||||
break;
|
||||
}
|
||||
case 0x01: // Add w/ carry
|
||||
lres = r0 + r1;
|
||||
if(m_core->m_r[REG_SR] & UNSP_C)
|
||||
lres++;
|
||||
{
|
||||
uint32_t c = (m_core->m_r[REG_SR] & UNSP_C) ? 1 : 0;
|
||||
lres = r0 + r1 + c;
|
||||
if (opa != 7)
|
||||
update_nzsc(lres, r0, r1);
|
||||
break;
|
||||
}
|
||||
case 0x02: // Subtract
|
||||
lres = r0 + (uint16_t)(~r1) + 1;
|
||||
lres = r0 + (uint16_t)(~r1) + uint32_t(1);
|
||||
if (opa != 7)
|
||||
update_nzsc(lres, r0, r1);
|
||||
update_nzsc(lres, r0, ~r1);
|
||||
break;
|
||||
case 0x03: // Subtract w/ carry
|
||||
lres = r0 + (uint16_t)(~r1);
|
||||
if(m_core->m_r[REG_SR] & UNSP_C)
|
||||
lres++;
|
||||
{
|
||||
uint32_t c = (m_core->m_r[REG_SR] & UNSP_C) ? 1 : 0;
|
||||
lres = r0 + (uint16_t)(~r1) + c;
|
||||
if (opa != 7)
|
||||
update_nzsc(lres, r0, r1);
|
||||
update_nzsc(lres, r0, ~r1);
|
||||
break;
|
||||
}
|
||||
case 0x04: // Compare
|
||||
lres = r0 + (uint16_t)(~r1) + 1;
|
||||
lres = r0 + (uint16_t)(~r1) + uint32_t(1);
|
||||
if (opa != 7)
|
||||
update_nzsc(lres, r0, r1);
|
||||
update_nzsc(lres, r0, ~r1);
|
||||
return;
|
||||
case 0x06: // Negate
|
||||
lres = -r1;
|
||||
|
@ -634,6 +634,7 @@ void unsp_device::generate_add_lpc(drcuml_block &block, int32_t offset)
|
||||
|
||||
void unsp_device::generate_update_nzsc(drcuml_block &block)
|
||||
{
|
||||
UML_XOR(block, I1, I1, 0x0000ffff);
|
||||
UML_SEXT(block, I1, I1, SIZE_WORD);
|
||||
UML_SEXT(block, I2, I2, SIZE_WORD);
|
||||
UML_CMP(block, I2, I1);
|
||||
@ -644,9 +645,8 @@ void unsp_device::generate_update_nzsc(drcuml_block &block)
|
||||
UML_SETc(block, uml::COND_NZ, I1);
|
||||
UML_ROLINS(block, mem(&m_core->m_r[REG_SR]), I1, UNSP_N_SHIFT, UNSP_N);
|
||||
|
||||
UML_AND(block, I2, I3, 0x0000ffff);
|
||||
UML_CMP(block, I3, I2);
|
||||
UML_SETc(block, uml::COND_NE, I1);
|
||||
UML_TEST(block, I3, 0x10000);
|
||||
UML_SETc(block, uml::COND_NZ, I1);
|
||||
UML_ROLINS(block, mem(&m_core->m_r[REG_SR]), I1, UNSP_C_SHIFT, UNSP_C);
|
||||
|
||||
UML_CMP(block, I2, 0);
|
||||
|
@ -1236,7 +1236,7 @@ CONS( 2008, jak_wall, 0, 0, walle, walle, spg2xx_game_state, empty_init, "JAKKS
|
||||
CONS( 2005, jak_wwe, 0, 0, jakks_gkr, jak_gkr,jakks_gkr_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "WWE (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // WW (no game-keys released)
|
||||
CONS( 2005, jak_fan4, 0, 0, jakks_gkr, jak_gkr,jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Digital Eclipse", "Fantastic Four (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // F4 (no game-keys released)
|
||||
CONS( 2005, jak_just, 0, 0, jakks_gkr, jak_gkr,jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Taniko", "Justice League (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // DC (no game-keys released)
|
||||
CONS( 2005, jak_dora, 0, 0, jakks_gkr_nk, jak_gkr,jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Handheld Games", "Dora the Explorer - Race To Play Park (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses NK keys (same as Nicktoons & Spongebob) (3+ released)
|
||||
CONS( 2005, jak_dora, 0, 0, jakks_gkr_nk, jak_gkr,jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Handheld Games", "Dora the Explorer - Race To Play Park (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses NK keys (same as Nicktoons & Spongebob) (3+ released)
|
||||
CONS( 2005, jak_sdoo, 0, 0, jakks_gkr, jak_gkr,jakks_gkr_state, empty_init, "JAKKS Pacific Inc / Jolliford Management","Scooby-Doo! and the Mystery of the Castle (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // SD (no game-keys released)
|
||||
CONS( 2005, jak_disf, 0, 0, jakks_gkr_dy, jak_gkr,jakks_gkr_state, empty_init, "JAKKS Pacific Inc / HotGen Ltd", "Disney Friends (JAKKS Pacific TV Game, Game-Key Ready)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // uses DY keys (3 released)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user