mirror of
https://github.com/holub/mame
synced 2025-07-01 16:19:38 +03:00
Some misc updates, nw
This commit is contained in:
parent
9c045c920f
commit
c3770fe54e
@ -616,7 +616,7 @@ const struct
|
||||
{ INPUT_STRING_None, "None" },
|
||||
};
|
||||
|
||||
} // anonymous namespace
|
||||
} // TODO: anonymous namespace
|
||||
|
||||
|
||||
std::uint8_t const inp_header::MAGIC[inp_header::OFFS_BASETIME - inp_header::OFFS_MAGIC] = { 'M', 'A', 'M', 'E', 'I', 'N', 'P', 0 };
|
||||
|
@ -361,8 +361,8 @@ static ADDRESS_MAP_START( dlus_map, AS_PROGRAM, 8, dlair_state )
|
||||
AM_RANGE(0x0000, 0x9fff) AM_ROM
|
||||
AM_RANGE(0xa000, 0xa7ff) AM_MIRROR(0x1800) AM_RAM
|
||||
AM_RANGE(0xc000, 0xc000) AM_MIRROR(0x1fc7) AM_DEVREAD("aysnd", ay8910_device, data_r)
|
||||
AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x1fc7) AM_READ_PORT("CONTROLS")
|
||||
AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x1fc7) AM_READ_PORT("SERVICE")
|
||||
AM_RANGE(0xc008, 0xc008) AM_MIRROR(0x1fc7) AM_READ_PORT("P1")
|
||||
AM_RANGE(0xc010, 0xc010) AM_MIRROR(0x1fc7) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0xc020, 0xc020) AM_MIRROR(0x1fc7) AM_READ(laserdisc_r)
|
||||
AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x1fc7) AM_DEVWRITE("aysnd", ay8910_device, data_w)
|
||||
AM_RANGE(0xe008, 0xe008) AM_MIRROR(0x1fc7) AM_WRITE(misc_w)
|
||||
@ -478,11 +478,11 @@ static INPUT_PORTS_START( dlair )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
|
||||
// PORT_DIPSETTING( 0x02, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x03, DEF_STR( Unused ) )
|
||||
PORT_DIPSETTING( 0x03, DEF_STR( Unused ) ) // TODO: kill me
|
||||
PORT_DIPNAME( 0x04, 0x00, "Difficulty Mode" ) PORT_DIPLOCATION("A:3")
|
||||
PORT_DIPSETTING( 0x04, "Mode 1" )
|
||||
PORT_DIPSETTING( 0x00, "Mode 2" )
|
||||
PORT_DIPNAME( 0x08, 0x00, "Engineering mode" ) PORT_DIPLOCATION("A:4")
|
||||
PORT_DIPNAME( 0x08, 0x00, "Engineering Mode" ) PORT_DIPLOCATION("A:4")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x00, "2 Credits/Free play" ) PORT_DIPLOCATION("A:5")
|
||||
@ -524,7 +524,7 @@ static INPUT_PORTS_START( dlair )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Easy ) ) PORT_CONDITION("DSW1", 0x04, EQUALS, 0x04)
|
||||
PORT_DIPSETTING( 0x90, DEF_STR( Easy ) ) PORT_CONDITION("DSW1", 0x04, EQUALS, 0x04)
|
||||
|
||||
PORT_START("CONTROLS")
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
|
||||
@ -534,7 +534,7 @@ static INPUT_PORTS_START( dlair )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */
|
||||
|
||||
PORT_START("SERVICE")
|
||||
PORT_START("SYSTEM")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
@ -627,7 +627,53 @@ static INPUT_PORTS_START( dleuro )
|
||||
PORT_DIPSETTING( 0x90, DEF_STR( Easy ) ) PORT_CONDITION("DSW1", 0x04, EQUALS, 0x04)
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( spaceace )
|
||||
PORT_INCLUDE(dlair)
|
||||
|
||||
PORT_MODIFY("DSW1")
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("A:1")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("A:2")
|
||||
PORT_DIPSETTING( 0x00, "3" )
|
||||
PORT_DIPSETTING( 0x02, "5" )
|
||||
// TODO: manual claims following is "Difficulty Increase", which more or less is again rank ...
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("A:3")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) // 5 chapters without losing life
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Hard ) ) // 3
|
||||
PORT_DIPNAME( 0x08, 0x00, "Difficulty Rank Increase" ) PORT_DIPLOCATION("A:4")
|
||||
PORT_DIPSETTING( 0x00, "Slow" )
|
||||
PORT_DIPSETTING( 0x08, "Fast" )
|
||||
PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("A:5")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, "Demo Sounds Frequency" ) PORT_DIPLOCATION("A:6")
|
||||
PORT_DIPSETTING( 0x00, "All the time" )
|
||||
PORT_DIPSETTING( 0x20, "1 out of eight times" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x40, IP_ACTIVE_HIGH, "A:7")
|
||||
PORT_DIPUNUSED_DIPLOC( 0x80, IP_ACTIVE_HIGH, "A:8")
|
||||
|
||||
PORT_MODIFY("DSW2")
|
||||
PORT_DIPNAME( 0x01, 0x01, "LD Player" ) PORT_DIPLOCATION("B:1")
|
||||
PORT_DIPSETTING( 0x00, "LD-PR7820" )
|
||||
PORT_DIPSETTING( 0x01, "LDV-1000" )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x02, IP_ACTIVE_HIGH, "B:2")
|
||||
PORT_DIPUNUSED_DIPLOC( 0x04, IP_ACTIVE_HIGH, "B:3")
|
||||
PORT_DIPUNUSED_DIPLOC( 0x08, IP_ACTIVE_HIGH, "B:4")
|
||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("B:5")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, "Unlimited Lives" ) PORT_DIPLOCATION("B:6")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( Yes ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, "Enable Frame Display" ) PORT_DIPLOCATION("B:7") // ?
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
||||
PORT_SERVICE_DIPLOC( 0x80, IP_ACTIVE_HIGH, "B:8" ) // "Diagnostic Mode", plays the whole disc from start to finish, start buttons makes the disc go back one chapter. Setting this to off makes it to execute host CPU tests before proceeding to game.
|
||||
|
||||
INPUT_PORTS_END
|
||||
|
||||
// TODO: dips for Space Ace euro
|
||||
|
||||
/*************************************
|
||||
*
|
||||
@ -905,7 +951,7 @@ ROM_START( spaceace ) /* revision A3 */
|
||||
ROM_LOAD( "sa_a3_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
|
||||
|
||||
DISK_REGION( "ld_ldv1000" )
|
||||
DISK_IMAGE_READONLY( "spaceace", 0, NO_DUMP )
|
||||
DISK_IMAGE_READONLY( "space_ace_ver2", 0, SHA1(9ca7d4cba380b04a3277a9b706b35036622fe2fb) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( spaceacea2 ) /* revision A2 */
|
||||
@ -917,7 +963,7 @@ ROM_START( spaceacea2 ) /* revision A2 */
|
||||
ROM_LOAD( "sa_a2_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
|
||||
|
||||
DISK_REGION( "ld_ldv1000" )
|
||||
DISK_IMAGE_READONLY( "spaceace", 0, NO_DUMP )
|
||||
DISK_IMAGE_READONLY( "space_ace_ver2", 0, SHA1(9ca7d4cba380b04a3277a9b706b35036622fe2fb) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( spaceacea ) /* revision A */
|
||||
@ -929,7 +975,7 @@ ROM_START( spaceacea ) /* revision A */
|
||||
ROM_LOAD( "sa_a_u5.bin", 0x8000, 0x2000, CRC(85cbcdc4) SHA1(97e01e96c885ab7af4c3a3b586eb40374d54f12f) )
|
||||
|
||||
DISK_REGION( "ld_ldv1000" )
|
||||
DISK_IMAGE_READONLY( "spaceace", 0, NO_DUMP )
|
||||
DISK_IMAGE_READONLY( "space_ace_ver2", 0, SHA1(9ca7d4cba380b04a3277a9b706b35036622fe2fb) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( spaceaceeuro ) /* Italian Sidam version */
|
||||
@ -989,7 +1035,7 @@ GAMEL( 1983, dleuro, dlair, dleuro, dleuro, dlair_state, fixed, R
|
||||
GAMEL( 1983, dleuroalt,dlair, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Dragon's Lair (European, alternate)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, dlital, dlair, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Sidam license?)","Dragon's Lair (Italian)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
|
||||
GAMEL( 1983, spaceace, 0, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A3)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceacea2, spaceace, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A2)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceacea, spaceace, dlair_ldv1000, dlaire, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceaceeuro, spaceace, dleuro, dleuro, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Space Ace (European)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceace, 0, dlair_ldv1000, spaceace, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A3)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceacea2, spaceace, dlair_ldv1000, spaceace, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A2)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceacea, spaceace, dlair_ldv1000, spaceace, dlair_state, variable, ROT0, "Cinematronics", "Space Ace (US Rev. A)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
GAMEL( 1983, spaceaceeuro, spaceace, dleuro, spaceace, dlair_state, fixed, ROT0, "Cinematronics (Atari license)", "Space Ace (European)", MACHINE_NOT_WORKING, layout_dlair )
|
||||
|
@ -295,6 +295,7 @@ PALETTE_INIT_MEMBER(esh_state, esh)
|
||||
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
|
||||
/* blue component */
|
||||
// TODO: actually opaque flag
|
||||
if((color_prom[i+0x100] >> 7) & 1)
|
||||
b = 0xff;
|
||||
else
|
||||
@ -326,25 +327,10 @@ static GFXDECODE_START( esh )
|
||||
GFXDECODE_ENTRY("gfx2", 0, esh_gfx_layout, 0x0, 0x20)
|
||||
GFXDECODE_END
|
||||
|
||||
#if 0
|
||||
void esh_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case TIMER_IRQ_STOP:
|
||||
m_maincpu->set_input_line(0, CLEAR_LINE);
|
||||
break;
|
||||
default:
|
||||
assert_always(FALSE, "Unknown id in esh_state::device_timer");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
INTERRUPT_GEN_MEMBER(esh_state::vblank_callback_esh)
|
||||
{
|
||||
// IRQ
|
||||
device.execute().set_input_line(0, HOLD_LINE);
|
||||
//timer_set(attotime::from_usec(50), TIMER_IRQ_STOP);
|
||||
}
|
||||
|
||||
// TODO: 0xfe NMI enabled after writing to LD command port, NMI reads LD port.
|
||||
|
@ -86,14 +86,14 @@ public:
|
||||
required_device<pioneer_ldv1000_device> m_laserdisc;
|
||||
required_shared_ptr<UINT8> m_tile_ram;
|
||||
required_shared_ptr<UINT8> m_tile_control_ram;
|
||||
emu_timer *m_irq_timer;
|
||||
DECLARE_READ8_MEMBER(ldp_read);
|
||||
DECLARE_WRITE8_MEMBER(ldp_write);
|
||||
DECLARE_DRIVER_INIT(lgp);
|
||||
virtual void machine_start() override;
|
||||
UINT32 screen_update_lgp(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(vblank_callback_lgp);
|
||||
TIMER_CALLBACK_MEMBER(irq_stop);
|
||||
DECLARE_WRITE_LINE_MEMBER(ld_command_strobe_cb);
|
||||
DECLARE_PALETTE_INIT(lgp);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
@ -160,7 +160,7 @@ static ADDRESS_MAP_START( main_program_map, AS_PROGRAM, 8, lgp_state )
|
||||
|
||||
// AM_RANGE(0xef00,0xef00) AM_READ_PORT("IN_TEST")
|
||||
AM_RANGE(0xef80,0xef80) AM_READWRITE(ldp_read,ldp_write)
|
||||
AM_RANGE(0xefb8,0xefb8) AM_READ(ldp_read) /* Likely not right, calms it down though */
|
||||
AM_RANGE(0xefb8,0xefb8) AM_READNOP // watchdog
|
||||
AM_RANGE(0xefc0,0xefc0) AM_READ_PORT("DSWA") /* Not tested */
|
||||
AM_RANGE(0xefc8,0xefc8) AM_READ_PORT("DSWB")
|
||||
AM_RANGE(0xefd0,0xefd0) AM_READ_PORT("DSWC")
|
||||
@ -341,27 +341,59 @@ static GFXDECODE_START( lgp )
|
||||
GFXDECODE_ENTRY("gfx4", 0, lgp_gfx_layout_16x32, 0x0, 0x100)
|
||||
GFXDECODE_END
|
||||
|
||||
TIMER_CALLBACK_MEMBER(lgp_state::irq_stop)
|
||||
{
|
||||
m_maincpu->set_input_line(0, CLEAR_LINE);
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(lgp_state::vblank_callback_lgp)
|
||||
{
|
||||
// NMI
|
||||
//device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE);
|
||||
|
||||
// IRQ
|
||||
device.execute().set_input_line(0, ASSERT_LINE);
|
||||
m_irq_timer->adjust(attotime::from_usec(50));
|
||||
device.execute().set_input_line(0, HOLD_LINE);
|
||||
}
|
||||
|
||||
|
||||
void lgp_state::machine_start()
|
||||
{
|
||||
m_irq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(lgp_state::irq_stop),this));
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(lgp_state::ld_command_strobe_cb)
|
||||
{
|
||||
//m_maincpu->set_input_line(INPUT_LINE_NMI, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
PALETTE_INIT_MEMBER(lgp_state, lgp)
|
||||
{
|
||||
const UINT8 *color_prom = memregion("proms")->base();
|
||||
int i;
|
||||
|
||||
// for (i = 0; i < palette.entries(); i++)
|
||||
for (i = 0; i < 0x20; i++)
|
||||
{
|
||||
int r,g,b;
|
||||
int bit0,bit1,bit2;
|
||||
|
||||
/* red component */
|
||||
bit0 = 0; //(color_prom[i] >> 0) & 0x01;
|
||||
bit1 = (color_prom[i] >> 0) & 0x01;
|
||||
bit2 = (color_prom[i] >> 1) & 0x01;
|
||||
r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
|
||||
/* green component */
|
||||
bit0 = 0; //(color_prom[i] >> 3) & 0x01;
|
||||
bit1 = (color_prom[i] >> 2) & 0x01;
|
||||
bit2 = (color_prom[i] >> 3) & 0x01;
|
||||
g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
|
||||
/* blue component */
|
||||
bit0 = 0; //(color_prom[i] >> 5) & 0x01;
|
||||
bit1 = (color_prom[i] >> 4) & 0x01;
|
||||
bit2 = (color_prom[i] >> 5) & 0x01;
|
||||
b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2;
|
||||
|
||||
|
||||
palette.set_pen_color(i,rgb_t(r,g,b));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* DRIVER */
|
||||
static MACHINE_CONFIG_START( lgp, lgp_state )
|
||||
@ -378,6 +410,7 @@ static MACHINE_CONFIG_START( lgp, lgp_state )
|
||||
|
||||
|
||||
MCFG_LASERDISC_LDV1000_ADD("laserdisc")
|
||||
MCFG_LASERDISC_LDV1000_COMMAND_STROBE_CB(WRITELINE(lgp_state, ld_command_strobe_cb))
|
||||
MCFG_LASERDISC_OVERLAY_DRIVER(256, 256, lgp_state, screen_update_lgp)
|
||||
MCFG_LASERDISC_OVERLAY_PALETTE("palette")
|
||||
|
||||
@ -385,7 +418,7 @@ static MACHINE_CONFIG_START( lgp, lgp_state )
|
||||
MCFG_LASERDISC_SCREEN_ADD_NTSC("screen", "laserdisc")
|
||||
|
||||
MCFG_PALETTE_ADD("palette", 256)
|
||||
/* MCFG_PALETTE_INIT_OWNER(lgp_state,lgp) */
|
||||
MCFG_PALETTE_INIT_OWNER(lgp_state,lgp)
|
||||
|
||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", lgp)
|
||||
|
||||
@ -470,14 +503,17 @@ ROM_START( lgp )
|
||||
ROM_LOAD( "a02_28.114", 0x24000, 0x4000, CRC(cd69ed20) SHA1(d60782637085491527814889856eb3553950ab55) )
|
||||
|
||||
/* Small ROM dumping ground - color? */
|
||||
ROM_REGION( 0x520, "user4", 0 )
|
||||
ROM_REGION( 0x20, "proms", 0 )
|
||||
ROM_LOAD( "a02_37.43", 0x00000, 0x20, CRC(925ba961) SHA1(6715d80f2346374a0e880cf44cadc36e4a5316ed) )
|
||||
|
||||
ROM_REGION( 0x500, "user4", 0 )
|
||||
ROM_LOAD( "a02_35.23", 0x00000, 0x100, CRC(7b9d44f1) SHA1(bbd7c35a03ca6de116a01f6dcfa2ecd13a7ddb53) )
|
||||
ROM_LOAD( "a02_36.24", 0x00100, 0x100, CRC(169c4216) SHA1(23921e9ef61a68fdd8afceb3b95bbac48190cf1a) )
|
||||
ROM_LOAD( "a02_37.43", 0x00200, 0x20, CRC(925ba961) SHA1(6715d80f2346374a0e880cf44cadc36e4a5316ed) )
|
||||
ROM_LOAD( "a02_38.44", 0x00220, 0x100, CRC(6f37212a) SHA1(32b891dc9b97637620b2f1f9d9d76509c333cb2d) )
|
||||
ROM_LOAD( "a02_39.109", 0x00320, 0x100, CRC(88363809) SHA1(b22a7bd8ce6b28bf7cfa64c3a08e4cf7f9b4cd20) )
|
||||
ROM_LOAD( "a02_40.110", 0x00420, 0x100, CRC(fdfc7aac) SHA1(2413f7f9ad11c91d2adc0aab37bf70ff5c68ab6f) )
|
||||
ROM_LOAD( "a02_38.44", 0x00200, 0x100, CRC(6f37212a) SHA1(32b891dc9b97637620b2f1f9d9d76509c333cb2d) )
|
||||
ROM_LOAD( "a02_39.109", 0x00300, 0x100, CRC(88363809) SHA1(b22a7bd8ce6b28bf7cfa64c3a08e4cf7f9b4cd20) )
|
||||
ROM_LOAD( "a02_40.110", 0x00400, 0x100, CRC(fdfc7aac) SHA1(2413f7f9ad11c91d2adc0aab37bf70ff5c68ab6f) )
|
||||
|
||||
|
||||
DISK_REGION( "laserdisc" )
|
||||
DISK_IMAGE_READONLY( "lgp", 0, NO_DUMP )
|
||||
ROM_END
|
||||
@ -554,13 +590,15 @@ ROM_START( lgpalt )
|
||||
ROM_LOAD( "a02_28.114", 0x24000, 0x4000, CRC(cd69ed20) SHA1(d60782637085491527814889856eb3553950ab55) )
|
||||
|
||||
/* Small ROM dumping ground - color? */
|
||||
ROM_REGION( 0x520, "user4", 0 )
|
||||
ROM_REGION( 0x20, "proms", 0 )
|
||||
ROM_LOAD( "a02_37.43", 0x00000, 0x20, CRC(925ba961) SHA1(6715d80f2346374a0e880cf44cadc36e4a5316ed) )
|
||||
|
||||
ROM_REGION( 0x500, "user4", 0 )
|
||||
ROM_LOAD( "a02_35.23", 0x00000, 0x100, CRC(7b9d44f1) SHA1(bbd7c35a03ca6de116a01f6dcfa2ecd13a7ddb53) )
|
||||
ROM_LOAD( "a02_36.24", 0x00100, 0x100, CRC(169c4216) SHA1(23921e9ef61a68fdd8afceb3b95bbac48190cf1a) )
|
||||
ROM_LOAD( "a02_37.43", 0x00200, 0x20, CRC(925ba961) SHA1(6715d80f2346374a0e880cf44cadc36e4a5316ed) )
|
||||
ROM_LOAD( "a02_38.44", 0x00220, 0x100, CRC(6f37212a) SHA1(32b891dc9b97637620b2f1f9d9d76509c333cb2d) )
|
||||
ROM_LOAD( "a02_39.109", 0x00320, 0x100, CRC(88363809) SHA1(b22a7bd8ce6b28bf7cfa64c3a08e4cf7f9b4cd20) )
|
||||
ROM_LOAD( "a02_40.110", 0x00420, 0x100, CRC(fdfc7aac) SHA1(2413f7f9ad11c91d2adc0aab37bf70ff5c68ab6f) )
|
||||
ROM_LOAD( "a02_38.44", 0x00200, 0x100, CRC(6f37212a) SHA1(32b891dc9b97637620b2f1f9d9d76509c333cb2d) )
|
||||
ROM_LOAD( "a02_39.109", 0x00300, 0x100, CRC(88363809) SHA1(b22a7bd8ce6b28bf7cfa64c3a08e4cf7f9b4cd20) )
|
||||
ROM_LOAD( "a02_40.110", 0x00400, 0x100, CRC(fdfc7aac) SHA1(2413f7f9ad11c91d2adc0aab37bf70ff5c68ab6f) )
|
||||
|
||||
DISK_REGION( "laserdisc" )
|
||||
DISK_IMAGE_READONLY( "lgp", 0, NO_DUMP )
|
||||
|
@ -4,8 +4,9 @@
|
||||
|
||||
Metal Freezer (c) 1989 Seibu
|
||||
|
||||
driver by Angelo Salese
|
||||
|
||||
driver by Angelo Salese, based off initial work by David Haywood
|
||||
thanks to Peter Wilhelmsen for the decryption
|
||||
|
||||
HW seems the natural evolution of Dark Mist type.
|
||||
|
||||
TODO:
|
||||
|
@ -11,15 +11,18 @@
|
||||
|
||||
#include "emu.h"
|
||||
#include "raiden2cop.h"
|
||||
#include "debugger.h"
|
||||
|
||||
// use Z to dump out table info
|
||||
//#define TABLE_DUMPER
|
||||
|
||||
|
||||
#define LOG_CMDS 0
|
||||
#define LOG_Commands 0
|
||||
#define LOG_Phytagoras 0
|
||||
#define LOG_Division 1
|
||||
|
||||
#define seibu_cop_log \
|
||||
if (LOG_CMDS) logerror
|
||||
if (LOG_Commands) logerror
|
||||
|
||||
|
||||
const device_type RAIDEN2COP = &device_creator<raiden2cop_device>;
|
||||
@ -1120,6 +1123,10 @@ void raiden2cop_device::execute_338e(address_space &space, int offset, UINT16 da
|
||||
cop_angle += 0x80;
|
||||
}
|
||||
|
||||
#if LOG_Phytagoras
|
||||
printf("cmd %04x: dx = %d dy = %d angle = %02x\n",data,dx,dy,cop_angle);
|
||||
#endif
|
||||
|
||||
if (data & 0x0080) {
|
||||
space.write_byte(cop_regs[0] + 0x34, cop_angle);
|
||||
}
|
||||
@ -1145,6 +1152,10 @@ void raiden2cop_device::execute_3b30(address_space &space, int offset, UINT16 da
|
||||
dy = dy >> 16;
|
||||
cop_dist = sqrt((double)(dx*dx + dy*dy));
|
||||
|
||||
#if LOG_Phytagoras
|
||||
printf("cmd %04x: dx = %d dy = %d dist = %08x \n",data,dx >> 16,dy >> 16,cop_dist);
|
||||
#endif
|
||||
|
||||
if (data & 0x0080)
|
||||
space.write_word(cop_regs[0] + (data & 0x200 ? 0x3a : 0x38), cop_dist);
|
||||
}
|
||||
@ -1169,6 +1180,11 @@ void raiden2cop_device::LEGACY_execute_3b30(address_space &space, int offset, UI
|
||||
void raiden2cop_device::execute_42c2(address_space &space, int offset, UINT16 data)
|
||||
{
|
||||
int div = space.read_word(cop_regs[0] + (0x36));
|
||||
|
||||
#if LOG_Division
|
||||
printf("cmd %04x: div = %04x scale = %04x\n",data,div,cop_scale);
|
||||
#endif
|
||||
|
||||
if (!div)
|
||||
{
|
||||
cop_status |= 0x8000;
|
||||
@ -1179,6 +1195,13 @@ void raiden2cop_device::execute_42c2(address_space &space, int offset, UINT16 da
|
||||
/* TODO: bits 5-6-15 */
|
||||
cop_status = 7;
|
||||
|
||||
#if LOG_Division
|
||||
printf("res = %04x dist %04x\n",(cop_dist << (5 - cop_scale)) / div,cop_dist);
|
||||
|
||||
// if(div & 0x8000)
|
||||
// machine().debugger().debug_break();
|
||||
#endif
|
||||
|
||||
space.write_word(cop_regs[0] + (0x38), (cop_dist << (5 - cop_scale)) / div);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user