mirror of
https://github.com/holub/mame
synced 2025-06-30 07:58:56 +03:00
new machines marked as NOT WORKING
War Mission (WM 4/6/87) [Jordi Beltrán Casany, Recreativas.org, The Dumping Union] The disk needs reading again using the original drive, which produced better results for the other disks, at least one track is bad at the moment.
This commit is contained in:
parent
2ed913b682
commit
3abb049877
@ -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