summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/ddragon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/ddragon.cpp')
-rw-r--r--src/mame/drivers/ddragon.cpp73
1 files changed, 37 insertions, 36 deletions
diff --git a/src/mame/drivers/ddragon.cpp b/src/mame/drivers/ddragon.cpp
index b32cfa04b99..84fbad2680b 100644
--- a/src/mame/drivers/ddragon.cpp
+++ b/src/mame/drivers/ddragon.cpp
@@ -349,26 +349,16 @@ WRITE8_MEMBER(darktowr_state::mcu_port_a_w)
}
-READ8_MEMBER(ddragon_state::ddragon_hd63701_internal_registers_r)
-{
- logerror("%s: read %d\n", machine().describe_context(), offset);
- return 0;
-}
-
-
-WRITE8_MEMBER(ddragon_state::ddragon_hd63701_internal_registers_w)
+void ddragon_state::sub_port6_w(uint8_t data)
{
// Port 6
- if (offset == 0x17)
- {
- if ((data & 0x1) == 0)
- m_subcpu->set_input_line(m_sprite_irq, CLEAR_LINE);
+ if ((data & 0x1) == 0)
+ m_subcpu->set_input_line(m_sprite_irq, CLEAR_LINE);
- if (!(m_ddragon_sub_port & 0x2) && (data & 0x2))
- m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
+ if (!(m_ddragon_sub_port & 0x2) && (data & 0x2))
+ m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE);
- m_ddragon_sub_port = data;
- }
+ m_ddragon_sub_port = data;
}
@@ -553,7 +543,17 @@ void ddragon_state::dd2_map(address_map &map)
void ddragon_state::sub_map(address_map &map)
{
- map(0x0000, 0x001f).rw(FUNC(ddragon_state::ddragon_hd63701_internal_registers_r), FUNC(ddragon_state::ddragon_hd63701_internal_registers_w));
+ map(0x0000, 0x001f).m(m_subcpu, FUNC(hd63701y0_cpu_device::hd6301y_io));
+ map(0x0040, 0x013f).ram();
+ map(0x8000, 0x81ff).ram().share("comram");
+ map(0xc000, 0xffff).rom().region("sub", 0);
+}
+
+void ddragon_state::sub_6309_map(address_map &map)
+{
+ map(0x0005, 0x0005).nopw();
+ map(0x0016, 0x0016).nopw();
+ map(0x0017, 0x0017).w(FUNC(ddragon_state::sub_port6_w));
map(0x0020, 0x0fff).ram();
map(0x8000, 0x81ff).ram().share("comram");
map(0xc000, 0xffff).rom();
@@ -948,8 +948,9 @@ void ddragon_state::ddragon(machine_config &config)
m_maincpu->set_addrmap(AS_PROGRAM, &ddragon_state::ddragon_map);
TIMER(config, "scantimer").configure_scanline(FUNC(ddragon_state::ddragon_scanline), "screen", 0, 1);
- HD63701Y0(config, m_subcpu, MAIN_CLOCK / 2); /* HD63701YOP, 6 MHz / 4 internally */
- m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sub_map);
+ hd63701y0_cpu_device &subcpu(HD63701Y0(config, m_subcpu, MAIN_CLOCK / 2)); /* HD63701YOP, 6 MHz / 4 internally */
+ subcpu.set_addrmap(AS_PROGRAM, &ddragon_state::sub_map);
+ subcpu.out_p6_cb().set(FUNC(ddragon_state::sub_port6_w));
MC6809(config, m_soundcpu, MAIN_CLOCK / 2); /* HD68A09P, 6 MHz / 4 internally */
m_soundcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sound_map);
@@ -998,7 +999,7 @@ void ddragon_state::ddragonb(machine_config &config)
/* basic machine hardware */
HD6309E(config.replace(), m_subcpu, MAIN_CLOCK / 8); /* 1.5MHz; labeled "ENC EL1200AR" on one PCB */
- m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sub_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sub_6309_map);
}
void ddragon_state::ddragonba(machine_config &config)
@@ -1020,7 +1021,7 @@ void ddragon_state::ddragon6809(machine_config &config)
TIMER(config, "scantimer").configure_scanline(FUNC(ddragon_state::ddragon_scanline), "screen", 0, 1);
MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 1.5 Mhz */
- m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sub_map);
+ m_subcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sub_6309_map); // wrong
MC6809E(config, m_soundcpu, MAIN_CLOCK / 8); /* 1.5 MHz */
m_soundcpu->set_addrmap(AS_PROGRAM, &ddragon_state::sound_map);
@@ -1147,8 +1148,8 @@ ROM_START( ddragon )
ROM_LOAD( "21j-3.24", 0x18000, 0x08000, CRC(3bdea613) SHA1(d9038c80646a6ce3ea61da222873237b0383680e) ) /* banked at 0x4000-0x8000 */
ROM_LOAD( "21j-4-1.23", 0x20000, 0x08000, CRC(728f87b9) SHA1(d7442be24d41bb9fc021587ef44ae5b830e4503d) ) /* banked at 0x4000-0x8000 */
- ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
- ROM_LOAD( "21jm-0.ic55", 0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
+ ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
+ ROM_LOAD( "21jm-0.ic55", 0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
ROM_LOAD( "21j-0-1", 0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
@@ -1190,8 +1191,8 @@ ROM_START( ddragonw )
ROM_LOAD( "21a-3.24", 0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
ROM_LOAD( "21j-4.23", 0x20000, 0x08000, CRC(6c9f46fa) SHA1(df251a4aea69b2328f7a543bf085b9c35933e2c1) ) /* banked at 0x4000-0x8000 */
- ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
- ROM_LOAD( "21jm-0.ic55", 0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
+ ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
+ ROM_LOAD( "21jm-0.ic55", 0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
ROM_LOAD( "21j-0-1", 0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
@@ -1233,8 +1234,8 @@ ROM_START( ddragonw1 )
ROM_LOAD( "21a-3.24", 0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
ROM_LOAD( "e4-1.23", 0x20000, 0x08000, CRC(b1e26935) SHA1(dfff666fd5e9dc4dfb2a1d891eced88730cbaf30) ) /* banked at 0x4000-0x8000 */
- ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
- ROM_LOAD( "21jm-0.ic55", 0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
+ ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
+ ROM_LOAD( "21jm-0.ic55", 0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
ROM_LOAD( "21j-0-1", 0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
@@ -1276,8 +1277,8 @@ ROM_START( ddragonu )
ROM_LOAD( "21a-3.24", 0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
ROM_LOAD( "21a-4.23", 0x20000, 0x08000, CRC(6ea16072) SHA1(0b3b84a0d54f7a3aba411586009babbfee653f9a) ) /* banked at 0x4000-0x8000 */
- ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
- ROM_LOAD( "21jm-0.ic55", 0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
+ ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
+ ROM_LOAD( "21jm-0.ic55", 0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
ROM_LOAD( "21j-0-1", 0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
@@ -1319,8 +1320,8 @@ ROM_START( ddragonua )
ROM_LOAD( "21a-3", 0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
ROM_LOAD( "21a-4_2", 0x20000, 0x08000, CRC(9b019598) SHA1(59f3aa15389f53c4646d21a39634cb1502e66ff6) ) /* banked at 0x4000-0x8000 */
- ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
- ROM_LOAD( "21jm-0.ic55", 0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
+ ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
+ ROM_LOAD( "21jm-0.ic55", 0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
ROM_LOAD( "21j-0-1", 0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
@@ -1363,8 +1364,8 @@ ROM_START( ddragonub )
ROM_LOAD( "21a-3", 0x18000, 0x08000, CRC(dbf24897) SHA1(1504faaf07c541330cd43b72dc6846911dfd85a3) ) /* banked at 0x4000-0x8000 */
ROM_LOAD( "21a-4_2", 0x20000, 0x08000, CRC(9b019598) SHA1(59f3aa15389f53c4646d21a39634cb1502e66ff6) ) /* banked at 0x4000-0x8000 */
- ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
- ROM_LOAD( "21jm-0.ic55", 0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
+ ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
+ ROM_LOAD( "21jm-0.ic55", 0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) ) /* 63701Y0P MCU */
ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
ROM_LOAD( "21j-0-1", 0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
@@ -1493,8 +1494,8 @@ ROM_START( ddragonb2 )
ROM_LOAD( "b2_6.bin", 0x18000, 0x08000, CRC(3bdea613) SHA1(d9038c80646a6ce3ea61da222873237b0383680e) ) /* banked at 0x4000-0x8000 */
ROM_LOAD( "b2_7.bin", 0x20000, 0x08000, CRC(728f87b9) SHA1(d7442be24d41bb9fc021587ef44ae5b830e4503d) ) /* banked at 0x4000-0x8000 */
- ROM_REGION( 0x10000, "sub", 0 ) /* sprite cpu */
- ROM_LOAD( "63701.bin", 0xc000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
+ ROM_REGION( 0x4000, "sub", 0 ) /* sprite cpu */
+ ROM_LOAD( "63701.bin", 0x0000, 0x4000, CRC(f5232d03) SHA1(e2a194e38633592fd6587690b3cb2669d93985c7) )
ROM_REGION( 0x10000, "soundcpu", 0 ) /* audio cpu */
ROM_LOAD( "b2_3.bin", 0x08000, 0x08000, CRC(9efa95bb) SHA1(da997d9cc7b9e7b2c70a4b6d30db693086a6f7d8) )
@@ -2208,7 +2209,7 @@ GAME( 1987, ddragonua, ddragon, ddragon, ddragon, ddragon_state, init_
GAME( 1987, ddragonub, ddragon, ddragon, ddragon, ddragon_state, init_ddragon, ROT0, "Technos Japan (Taito America license)", "Double Dragon (US set 3)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, ddragonb2, ddragon, ddragon, ddragon, ddragon_state, init_ddragon, ROT0, "bootleg", "Double Dragon (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, ddragonb, ddragon, ddragonb, ddragon, ddragon_state, init_ddragon, ROT0, "bootleg", "Double Dragon (bootleg with HD6309)", MACHINE_SUPPORTS_SAVE ) // according to dump notes
-GAME( 1987, ddragonba, ddragon, ddragonba, ddragon, ddragon_state, init_ddragon, ROT0, "bootleg", "Double Dragon (bootleg with M6803)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, ddragonba, ddragon, ddragonba, ddragon, ddragon_state, init_ddragon, ROT0, "bootleg", "Double Dragon (bootleg with MC6803)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, ddragon6809, ddragon, ddragon6809, ddragon, ddragon_state, init_ddragon6809, ROT0, "bootleg", "Double Dragon (bootleg with 3xM6809, set 1)", MACHINE_NOT_WORKING )
GAME( 1987, ddragon6809a, ddragon, ddragon6809, ddragon, ddragon_state, init_ddragon6809, ROT0, "bootleg", "Double Dragon (bootleg with 3xM6809, set 2)", MACHINE_NOT_WORKING )