mirror of
https://github.com/holub/mame
synced 2025-05-28 16:43:04 +03:00
Merge pull request #3569 from DavidHaywood/140518
new machines marked as NOT WORKING
This commit is contained in:
commit
8c7ab80cba
@ -49,7 +49,7 @@
|
|||||||
- Crazy Driver
|
- Crazy Driver
|
||||||
- Jungle Trophy
|
- Jungle Trophy
|
||||||
- Quadrum
|
- Quadrum
|
||||||
- War Mission **
|
- War Mission ** *
|
||||||
- The Burning Cave
|
- The Burning Cave
|
||||||
- Scorpio
|
- Scorpio
|
||||||
- Paris Dakar **
|
- Paris Dakar **
|
||||||
@ -134,9 +134,13 @@ public:
|
|||||||
m_pal_r(*this, "pal_r"),
|
m_pal_r(*this, "pal_r"),
|
||||||
m_pal_g(*this, "pal_g"),
|
m_pal_g(*this, "pal_g"),
|
||||||
m_pal_b(*this, "pal_b"),
|
m_pal_b(*this, "pal_b"),
|
||||||
|
|
||||||
m_ic48_pio(*this, "z80pio_ic48"),
|
m_ic48_pio(*this, "z80pio_ic48"),
|
||||||
m_ic49_pio(*this, "z80pio_ic49"),
|
m_ic49_pio(*this, "z80pio_ic49"),
|
||||||
|
m_ic48_pio_pa_val(0xff),
|
||||||
|
m_ic48_pio_pb_val(0xff),
|
||||||
|
m_ic49_pio_pb_val(0xff),
|
||||||
|
m_address1hack(-1),
|
||||||
|
m_address2hack(-1),
|
||||||
m_palette(*this, "palette"),
|
m_palette(*this, "palette"),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_cedsound(*this, "cedtop"),
|
m_cedsound(*this, "cedtop"),
|
||||||
@ -144,12 +148,11 @@ public:
|
|||||||
m_cedplane1(*this, "cedplane1"),
|
m_cedplane1(*this, "cedplane1"),
|
||||||
m_cedsprite(*this, "cedsprite")
|
m_cedsprite(*this, "cedsprite")
|
||||||
{
|
{
|
||||||
m_ic48_pio_pa_val = 0xff;
|
|
||||||
m_ic48_pio_pb_val = 0xff;
|
|
||||||
m_ic49_pio_pb_val = 0xff;
|
|
||||||
m_prothack = nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cedar_magnet(machine_config &config);
|
||||||
|
|
||||||
|
private:
|
||||||
required_device<address_map_bank_device> m_bank0;
|
required_device<address_map_bank_device> m_bank0;
|
||||||
required_device<address_map_bank_device> m_sub_ram_bankdev;
|
required_device<address_map_bank_device> m_sub_ram_bankdev;
|
||||||
required_device<address_map_bank_device> m_sub_pal_bankdev;
|
required_device<address_map_bank_device> m_sub_pal_bankdev;
|
||||||
@ -188,7 +191,6 @@ public:
|
|||||||
DECLARE_READ8_MEMBER(port7c_r);
|
DECLARE_READ8_MEMBER(port7c_r);
|
||||||
|
|
||||||
// other ports
|
// other ports
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER(other_cpu_r);
|
DECLARE_READ8_MEMBER(other_cpu_r);
|
||||||
DECLARE_WRITE8_MEMBER(other_cpu_w);
|
DECLARE_WRITE8_MEMBER(other_cpu_w);
|
||||||
|
|
||||||
@ -206,11 +208,9 @@ public:
|
|||||||
|
|
||||||
void handle_sub_board_cpu_lines(cedar_magnet_board_interface &dev, int old_data, int data);
|
void handle_sub_board_cpu_lines(cedar_magnet_board_interface &dev, int old_data, int data);
|
||||||
INTERRUPT_GEN_MEMBER(irq);
|
INTERRUPT_GEN_MEMBER(irq);
|
||||||
typedef void (cedar_magnet_state::*prot_func)();
|
void kludge_protection();
|
||||||
prot_func m_prothack;
|
int m_address1hack;
|
||||||
void mag_time_protection_hack();
|
int m_address2hack;
|
||||||
void mag_xain_protection_hack();
|
|
||||||
void mag_exzi_protection_hack();
|
|
||||||
|
|
||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
virtual void machine_reset() override;
|
virtual void machine_reset() override;
|
||||||
@ -224,10 +224,6 @@ public:
|
|||||||
required_device<cedar_magnet_plane_device> m_cedplane1;
|
required_device<cedar_magnet_plane_device> m_cedplane1;
|
||||||
required_device<cedar_magnet_sprite_device> m_cedsprite;
|
required_device<cedar_magnet_sprite_device> m_cedsprite;
|
||||||
|
|
||||||
void init_mag_time();
|
|
||||||
void init_mag_xain();
|
|
||||||
void init_mag_exzi();
|
|
||||||
void cedar_magnet(machine_config &config);
|
|
||||||
void cedar_bank0(address_map &map);
|
void cedar_bank0(address_map &map);
|
||||||
void cedar_magnet_io(address_map &map);
|
void cedar_magnet_io(address_map &map);
|
||||||
void cedar_magnet_mainboard_sub_pal_map(address_map &map);
|
void cedar_magnet_mainboard_sub_pal_map(address_map &map);
|
||||||
@ -756,8 +752,7 @@ INPUT_PORTS_END
|
|||||||
|
|
||||||
INTERRUPT_GEN_MEMBER(cedar_magnet_state::irq)
|
INTERRUPT_GEN_MEMBER(cedar_magnet_state::irq)
|
||||||
{
|
{
|
||||||
if (m_prothack)
|
kludge_protection();
|
||||||
(this->*m_prothack)();
|
|
||||||
|
|
||||||
m_maincpu->set_input_line(0, HOLD_LINE);
|
m_maincpu->set_input_line(0, HOLD_LINE);
|
||||||
m_cedplane0->irq_hold();
|
m_cedplane0->irq_hold();
|
||||||
@ -864,6 +859,15 @@ ROM_START( mag_xain )
|
|||||||
ROM_LOAD( "xain.img", 0x00000, 0xf0000, CRC(5647849f) SHA1(edd2f3f6359424583bf526bf4601476dc849e617) )
|
ROM_LOAD( "xain.img", 0x00000, 0xf0000, CRC(5647849f) SHA1(edd2f3f6359424583bf526bf4601476dc849e617) )
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
// game has various lockups, including in attract mode, which may be due to problems with the image or other emulation bugs.
|
||||||
|
ROM_START( mag_war )
|
||||||
|
BIOS_ROM
|
||||||
|
|
||||||
|
ROM_REGION( 0x100000, "flop:disk", ROMREGION_ERASE00 )
|
||||||
|
// track 44, side 0 is broken at least (0x400 bytes were missing, substituted with 0x00 values) maybe others have bad data too, needs reading with original drive.
|
||||||
|
ROM_LOAD( "warmission.dsk", 0x00000, 0xf0000, BAD_DUMP CRC(547e2338) SHA1(a798fc0a92d0b8d0d4f95a9eb7081a30f6b28e35) )
|
||||||
|
ROM_END
|
||||||
|
|
||||||
/*
|
/*
|
||||||
protection? (Time Scanner note)
|
protection? (Time Scanner note)
|
||||||
|
|
||||||
@ -879,45 +883,49 @@ ROM_END
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
void protection_hack(uint8_t* ram, int address1, int address2)
|
void cedar_magnet_state::kludge_protection()
|
||||||
{
|
{
|
||||||
if ((ram[address1] == 0x3e) && (ram[address1+1] == 0xff)) ram[address1] = 0xc9;
|
const int max_addr = 0x3ffff;
|
||||||
if ((ram[address2] == 0x3e) && (ram[address2+1] == 0xff)) ram[address2] = 0xc9;
|
|
||||||
|
if (m_address1hack == -1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < max_addr - 4; i++)
|
||||||
|
{
|
||||||
|
if ((m_ram0[i + 0] == 0x7f) && (m_ram0[i + 1] == 0xc8) && (m_ram0[i + 2] == 0x3e) && (m_ram0[i + 3] == 0xff))
|
||||||
|
{
|
||||||
|
m_address1hack = i + 2;
|
||||||
|
logerror("found patch at %06x\n", i + 2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((m_ram0[m_address1hack] == 0x3e) && (m_ram0[m_address1hack + 1] == 0xff)) m_ram0[m_address1hack] = 0xc9;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m_address2hack == -1)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < max_addr - 4; i++)
|
||||||
|
{
|
||||||
|
if ((m_ram0[i + 0] == 0x10) && (m_ram0[i + 1] == 0xdd) && (m_ram0[i + 2] == 0x3e) && (m_ram0[i + 3] == 0xff))
|
||||||
|
{
|
||||||
|
m_address2hack = i + 2;
|
||||||
|
logerror("found patch at %06x\n", i + 2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((m_ram0[m_address2hack] == 0x3e) && (m_ram0[m_address2hack + 1] == 0xff)) m_ram0[m_address2hack] = 0xc9;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void cedar_magnet_state::mag_time_protection_hack()
|
GAME( 1987, cedmag, 0, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT0, "EFO SA / Cedar", "Magnet System", MACHINE_IS_BIOS_ROOT )
|
||||||
{
|
|
||||||
protection_hack(m_ram0, 0x8bc, 0x905);
|
|
||||||
}
|
|
||||||
|
|
||||||
void cedar_magnet_state::mag_xain_protection_hack()
|
GAME( 1987, mag_time, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT90, "EFO SA / Cedar", "Time Scanner (TS 2.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Sega
|
||||||
{
|
GAME( 1987, mag_exzi, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT0, "EFO SA / Cedar", "Exzisus (EX 1.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Taito
|
||||||
protection_hack(m_ram0, 0x796, 0x7df);
|
GAME( 1987, mag_xain, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT0, "EFO SA / Cedar", "Xain'd Sleena (SC 3.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Technos
|
||||||
}
|
GAME( 1987, mag_war, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT90, "EFO SA / Cedar", "War Mission (WM 4/6/87)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||||
|
|
||||||
void cedar_magnet_state::mag_exzi_protection_hack()
|
|
||||||
{
|
|
||||||
protection_hack(m_ram0, 0x8b6, 0x8ff);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void cedar_magnet_state::init_mag_time()
|
|
||||||
{
|
|
||||||
m_prothack = &cedar_magnet_state::mag_time_protection_hack;
|
|
||||||
}
|
|
||||||
|
|
||||||
void cedar_magnet_state::init_mag_xain()
|
|
||||||
{
|
|
||||||
m_prothack = &cedar_magnet_state::mag_xain_protection_hack;
|
|
||||||
}
|
|
||||||
|
|
||||||
void cedar_magnet_state::init_mag_exzi()
|
|
||||||
{
|
|
||||||
m_prothack = &cedar_magnet_state::mag_exzi_protection_hack;
|
|
||||||
}
|
|
||||||
|
|
||||||
GAME( 1987, cedmag, 0, cedar_magnet, cedar_magnet, cedar_magnet_state, empty_init, ROT0, "EFO SA / Cedar", "Magnet System", MACHINE_IS_BIOS_ROOT )
|
|
||||||
|
|
||||||
GAME( 1987, mag_time, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, init_mag_time, ROT90, "EFO SA / Cedar", "Time Scanner (TS 2.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Sega
|
|
||||||
GAME( 1987, mag_exzi, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, init_mag_exzi, ROT0, "EFO SA / Cedar", "Exzisus (EX 1.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Taito
|
|
||||||
GAME( 1987, mag_xain, cedmag, cedar_magnet, cedar_magnet, cedar_magnet_state, init_mag_xain, ROT0, "EFO SA / Cedar", "Xain'd Sleena (SC 3.0, Magnet System)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // original game was by Technos
|
|
||||||
|
@ -9560,6 +9560,7 @@ cedmag
|
|||||||
mag_time
|
mag_time
|
||||||
mag_exzi
|
mag_exzi
|
||||||
mag_xain
|
mag_xain
|
||||||
|
mag_war
|
||||||
|
|
||||||
@source:centiped.cpp
|
@source:centiped.cpp
|
||||||
bullsdrt // (c) 1985 Shinkai
|
bullsdrt // (c) 1985 Shinkai
|
||||||
|
Loading…
Reference in New Issue
Block a user