mirror of
https://github.com/holub/mame
synced 2025-05-22 05:38:52 +03:00
Fixed MT04961: darkhors: Game no longer allows for boot up - From Haze
This commit is contained in:
parent
fa8164f908
commit
57548fb1e4
@ -246,20 +246,6 @@ static SCREEN_UPDATE_IND16( darkhors )
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
static const eeprom_interface eeprom_intf =
|
|
||||||
{
|
|
||||||
7, // address bits 7
|
|
||||||
8, // data bits 8
|
|
||||||
"*110", // read 1 10 aaaaaaa
|
|
||||||
"*101", // write 1 01 aaaaaaa dddddddd
|
|
||||||
"*111", // erase 1 11 aaaaaaa
|
|
||||||
"*10000xxxx", // lock 1 00 00xxxx
|
|
||||||
"*10011xxxx", // unlock 1 00 11xxxx
|
|
||||||
1,
|
|
||||||
// "*10001xxxx" // write all 1 00 01xxxx dddddddd
|
|
||||||
// "*10010xxxx" // erase all 1 00 10xxxx
|
|
||||||
};
|
|
||||||
|
|
||||||
WRITE32_MEMBER(darkhors_state::darkhors_eeprom_w)
|
WRITE32_MEMBER(darkhors_state::darkhors_eeprom_w)
|
||||||
{
|
{
|
||||||
device_t *device = machine().device("eeprom");
|
device_t *device = machine().device("eeprom");
|
||||||
@ -673,7 +659,7 @@ static MACHINE_CONFIG_START( darkhors, darkhors_state )
|
|||||||
MCFG_CPU_PROGRAM_MAP(darkhors_map)
|
MCFG_CPU_PROGRAM_MAP(darkhors_map)
|
||||||
MCFG_TIMER_ADD_SCANLINE("scantimer", darkhors_irq, "screen", 0, 1)
|
MCFG_TIMER_ADD_SCANLINE("scantimer", darkhors_irq, "screen", 0, 1)
|
||||||
|
|
||||||
MCFG_EEPROM_ADD("eeprom", eeprom_intf)
|
MCFG_EEPROM_ADD("eeprom", eeprom_interface_93C46_8bit)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
@ -723,7 +709,7 @@ static MACHINE_CONFIG_START( jclub2, darkhors_state )
|
|||||||
MCFG_CPU_PROGRAM_MAP(jclub2_map)
|
MCFG_CPU_PROGRAM_MAP(jclub2_map)
|
||||||
MCFG_TIMER_ADD_SCANLINE("scantimer", darkhors_irq, "screen", 0, 1)
|
MCFG_TIMER_ADD_SCANLINE("scantimer", darkhors_irq, "screen", 0, 1)
|
||||||
|
|
||||||
MCFG_EEPROM_ADD("eeprom", eeprom_intf)
|
MCFG_EEPROM_ADD("eeprom", eeprom_interface_93C46_8bit)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
@ -782,7 +768,7 @@ static MACHINE_CONFIG_START( jclub2o, darkhors_state )
|
|||||||
MCFG_CPU_ADD("maincpu", M68EC020, 12000000)
|
MCFG_CPU_ADD("maincpu", M68EC020, 12000000)
|
||||||
MCFG_CPU_PROGRAM_MAP(jclub2o_map)
|
MCFG_CPU_PROGRAM_MAP(jclub2o_map)
|
||||||
|
|
||||||
MCFG_EEPROM_ADD("eeprom", eeprom_intf)
|
MCFG_EEPROM_ADD("eeprom", eeprom_interface_93C46_8bit)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
@ -965,22 +951,26 @@ ROM_END
|
|||||||
|
|
||||||
static DRIVER_INIT( darkhors )
|
static DRIVER_INIT( darkhors )
|
||||||
{
|
{
|
||||||
UINT32 *rom = (UINT32 *) machine.root_device().memregion("maincpu")->base();
|
// the dumped eeprom bytes are in a different order to how MAME expects them to be
|
||||||
// UINT8 *eeprom = (UINT8 *) machine.root_device().memregion("eeprom")->base();
|
// (offset 0x00, 0x40, 0x01, 0x41, 0x02, 0x42 ..... )
|
||||||
// int i;
|
// I guess this is the difference between the internal organization on the real
|
||||||
|
// device, and how MAME represents it?
|
||||||
|
|
||||||
#if 1
|
// the eeprom contains the game ID, which must be valid for it to boot
|
||||||
// eeprom error patch
|
// is there a way (key sequence) to reprogram it??
|
||||||
rom[0x0444c/4] = 0x02b34e71;
|
// I bet the original sets need similar get further in their boot sequence
|
||||||
rom[0x04450/4] = 0x4e710839;
|
UINT8 *eeprom = (UINT8 *) machine.root_device().memregion("eeprom")->base();
|
||||||
|
if (eeprom != NULL)
|
||||||
rom[0x045fc/4] = 0xbe224e71;
|
{
|
||||||
rom[0x04600/4] = 0x4e714eb9;
|
size_t len = machine.root_device().memregion("eeprom")->bytes();
|
||||||
#endif
|
UINT8* temp = (UINT8*)auto_alloc_array(machine, UINT8, len);
|
||||||
|
int i;
|
||||||
// if (eeprom != NULL)
|
for (i = 0; i < len; i++)
|
||||||
// for (i = 0; i < (1<<7); i++)
|
temp[i] = eeprom[BITSWAP8(i,7,5,4,3,2,1,0,6)];
|
||||||
// eeprom[i] = eeprom[i*2];
|
|
||||||
|
memcpy(eeprom, temp, len);
|
||||||
|
auto_free(machine, temp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
GAME( 199?, jclub2, 0, jclub2, darkhors, 0, ROT0, "Seta", "Jockey Club II (newer hardware)", GAME_NOT_WORKING | GAME_NO_SOUND )
|
GAME( 199?, jclub2, 0, jclub2, darkhors, 0, ROT0, "Seta", "Jockey Club II (newer hardware)", GAME_NOT_WORKING | GAME_NO_SOUND )
|
||||||
|
Loading…
Reference in New Issue
Block a user