mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
segas16b.cpp: Replace goldnaxe2 317-0122 i8751 bad dump with working redump from undamaged chip. Remove MCU HLE code. [anonymous, digshadow]
This commit is contained in:
parent
b62aa7b1b7
commit
d9530078dd
@ -1405,41 +1405,6 @@ void segas16b_state::ddux_i8751_sim()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// goldnaxe_i8751_sim - simulate the I8751
|
||||
// from Golden Axe
|
||||
//-------------------------------------------------
|
||||
|
||||
void segas16b_state::goldnaxe_i8751_sim()
|
||||
{
|
||||
// signal a VBLANK to the main CPU
|
||||
m_maincpu->set_input_line(4, HOLD_LINE);
|
||||
|
||||
// they periodically clear the data at 2cd8,2cda,2cdc,2cde and expect the MCU to fill it in
|
||||
if (m_workram[0x2cd8/2] == 0 && m_workram[0x2cda/2] == 0 && m_workram[0x2cdc/2] == 0 && m_workram[0x2cde/2] == 0)
|
||||
{
|
||||
m_workram[0x2cd8/2] = 0x048c;
|
||||
m_workram[0x2cda/2] = 0x159d;
|
||||
m_workram[0x2cdc/2] = 0x26ae;
|
||||
m_workram[0x2cde/2] = 0x37bf;
|
||||
}
|
||||
|
||||
// process any new sound data
|
||||
uint16_t temp = m_workram[0x2cfc/2];
|
||||
if ((temp & 0xff00) != 0x0000)
|
||||
{
|
||||
address_space &space = m_maincpu->space(AS_PROGRAM);
|
||||
m_mapper->write(space, 0x03, temp >> 8);
|
||||
m_workram[0x2cfc/2] = temp & 0x00ff;
|
||||
}
|
||||
|
||||
// read inputs
|
||||
m_workram[0x2cd0/2] = (ioport("P1")->read() << 8) | ioport("P2")->read();
|
||||
m_workram[0x2c96/2] = ioport("SERVICE")->read() << 8;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// tturf_i8751_sim - simulate the I8751
|
||||
// from Tough Turf
|
||||
@ -6475,15 +6440,7 @@ ROM_START( goldnaxe2 )
|
||||
ROM_LOAD( "mpr-12384.a11", 0x10000, 0x20000, CRC(6218d8e7) SHA1(5a745c750efb4a61716f99befb7ed14cc84e9973) )
|
||||
|
||||
ROM_REGION( 0x1000, "mcu", 0 ) // Intel i8751 protection MCU
|
||||
/* NOT CURRENTLY USED
|
||||
|
||||
this chip was faulty, the internal checksum routine fails. actual code looks like it should be 99.99% the
|
||||
same as the 'goldnaxe' set but unused areas have different garbage fill data, so finding the bad bits is
|
||||
difficult.
|
||||
|
||||
Calculated checksum: 5F8F
|
||||
File checksum: 5E8F */
|
||||
ROM_LOAD( "317-0112.c2", 0x00000, 0x1000, BAD_DUMP CRC(d8f2f1c0) SHA1(04594ed5558af63cde62de6cc4020b35b8a5889e) )
|
||||
ROM_LOAD( "317-0112.c2", 0x00000, 0x1000, CRC(bda31044) SHA1(79ba41ac0768c1a55faad2f768120f15bcde4b90) )
|
||||
ROM_END
|
||||
|
||||
//*************************************************************************************************************************
|
||||
@ -8737,17 +8694,6 @@ DRIVER_INIT_MEMBER(segas16b_state,exctleag_5358)
|
||||
m_custom_io_r = read16_delegate(FUNC(segas16b_state::sdi_custom_io_r), this);
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(segas16b_state,goldnaxe_5704)
|
||||
{
|
||||
DRIVER_INIT_CALL(generic_5704);
|
||||
m_i8751_vblank_hook = i8751_sim_delegate(&segas16b_state::goldnaxe_i8751_sim, this);
|
||||
|
||||
static const uint8_t memory_control_5704[0x10] =
|
||||
{ 0x02,0x00, 0x02,0x08, 0x00,0x1f, 0x00,0xff, 0x00,0x20, 0x01,0x10, 0x00,0x14, 0x00,0xc4 };
|
||||
m_i8751_initial_config = memory_control_5704;
|
||||
}
|
||||
|
||||
|
||||
DRIVER_INIT_MEMBER(segas16b_state,hwchamp_5521)
|
||||
{
|
||||
DRIVER_INIT_CALL(generic_5521);
|
||||
@ -8892,7 +8838,7 @@ GAME( 1989, goldnaxe, 0, system16b_i8751_5797,goldnaxe, segas16b_state,
|
||||
GAME( 1989, goldnaxeu, goldnaxe, system16b_fd1094_5797,goldnaxe,segas16b_state,generic_5797, ROT0, "Sega", "Golden Axe (set 5, US) (FD1094 317-0122)", 0 )
|
||||
GAME( 1989, goldnaxej, goldnaxe, system16b_fd1094, goldnaxe, segas16b_state,generic_5704, ROT0, "Sega", "Golden Axe (set 4, Japan) (FD1094 317-0121)", 0 )
|
||||
GAME( 1989, goldnaxe3, goldnaxe, system16b_fd1094, goldnaxe, segas16b_state,generic_5704, ROT0, "Sega", "Golden Axe (set 3, World) (FD1094 317-0120)", 0)
|
||||
GAME( 1989, goldnaxe2, goldnaxe, system16b_i8751, goldnaxe, segas16b_state,goldnaxe_5704, ROT0, "Sega", "Golden Axe (set 2, US) (8751 317-0112)", 0 )
|
||||
GAME( 1989, goldnaxe2, goldnaxe, system16b_i8751, goldnaxe, segas16b_state,generic_5704, ROT0, "Sega", "Golden Axe (set 2, US) (8751 317-0112)", 0 )
|
||||
GAME( 1989, goldnaxe1, goldnaxe, system16b_fd1094_5797,goldnaxe,segas16b_state,generic_5797, ROT0, "Sega", "Golden Axe (set 1, World) (FD1094 317-0110)", 0 )
|
||||
|
||||
GAME( 1987, hwchamp, 0, system16b, hwchamp, segas16b_state,hwchamp_5521, ROT0, "Sega", "Heavyweight Champ", 0 )
|
||||
|
@ -115,7 +115,6 @@ public:
|
||||
DECLARE_DRIVER_INIT(ddux_5704);
|
||||
DECLARE_DRIVER_INIT(snapper);
|
||||
DECLARE_DRIVER_INIT(shinobi4_5521);
|
||||
DECLARE_DRIVER_INIT(goldnaxe_5704);
|
||||
DECLARE_DRIVER_INIT(defense_5358_small);
|
||||
DECLARE_DRIVER_INIT(sjryuko_5358_small);
|
||||
DECLARE_DRIVER_INIT(exctleag_5358);
|
||||
@ -175,7 +174,6 @@ protected:
|
||||
void altbeasj_i8751_sim();
|
||||
void altbeas5_i8751_sim();
|
||||
void ddux_i8751_sim();
|
||||
void goldnaxe_i8751_sim();
|
||||
void tturf_i8751_sim();
|
||||
void wb3_i8751_sim();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user