summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2018-09-08 16:03:51 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2018-09-08 16:03:51 +0200
commit80adcb6f16f8d263e109a7d9231a9b7729f8b7d3 (patch)
tree118d5a9a6d8ce661cf2352cc765d609f60502274
parent48510ad1cb1ef6650d0f2eb50b1bec41795ce013 (diff)
new working clone
------------------------------------- Midnight Landing (Japan) [ShouTime] (maybe should rename this to 'Japanese / English' and the other set to 'Japanese / German'?)
-rw-r--r--src/mame/drivers/mlanding.cpp116
-rw-r--r--src/mame/mame.lst3
2 files changed, 78 insertions, 41 deletions
diff --git a/src/mame/drivers/mlanding.cpp b/src/mame/drivers/mlanding.cpp
index 0e5521ed97f..34023f5380a 100644
--- a/src/mame/drivers/mlanding.cpp
+++ b/src/mame/drivers/mlanding.cpp
@@ -36,7 +36,6 @@
To do:
- * Find Japanese version
* Determine correct CPU and video timings
* Unknown sound writes (volume and body sonic control?)
* Better document mecha drive CPU
@@ -93,6 +92,11 @@ public:
void mlanding(machine_config &config);
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+ virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
+
private:
enum
{
@@ -133,9 +137,6 @@ private:
uint8_t m_msm2_vck;
uint8_t m_msm2_vck2;
- virtual void machine_start() override;
- virtual void machine_reset() override;
-
DECLARE_WRITE16_MEMBER(dma_start_w);
DECLARE_WRITE16_MEMBER(dma_stop_w);
DECLARE_WRITE16_MEMBER(output_w);
@@ -175,8 +176,6 @@ private:
void main_map(address_map &map);
void mecha_map_prog(address_map &map);
void sub_map(address_map &map);
-
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
};
@@ -262,7 +261,7 @@ uint32_t mlanding_state::screen_update_mlanding(screen_device &screen, bitmap_in
WRITE16_MEMBER(mlanding_state::dma_start_w)
{
m_dma_cpu_bank ^= 1;
- membank("dma_ram")->set_entry(m_dma_cpu_bank);
+ m_dma_bank->set_entry(m_dma_cpu_bank);
uint32_t pixels = exec_dma();
@@ -723,9 +722,9 @@ void mlanding_state::main_map(address_map &map)
{
map(0x000000, 0x05ffff).rom();
map(0x080000, 0x08ffff).ram();
- map(0x100000, 0x17ffff).ram().share("g_ram");
- map(0x180000, 0x1bffff).ram().share("cha_ram");
- map(0x1c0000, 0x1c3fff).bankrw("dma_ram");
+ map(0x100000, 0x17ffff).ram().share(m_g_ram);
+ map(0x180000, 0x1bffff).ram().share(m_cha_ram);
+ map(0x1c0000, 0x1c3fff).bankrw(m_dma_bank);
map(0x1c4000, 0x1cffff).ram().share("sub_com_ram");
map(0x1d0000, 0x1d0001).w(FUNC(mlanding_state::dma_start_w));
map(0x1d0002, 0x1d0003).w(FUNC(mlanding_state::dma_stop_w));
@@ -761,10 +760,10 @@ void mlanding_state::sub_map(address_map &map)
map(0x040000, 0x043fff).ram();
map(0x050000, 0x0503ff).ram().share("dsp_prog");
map(0x060000, 0x060001).w(FUNC(mlanding_state::dsp_control_w));
- map(0x1c0000, 0x1c3fff).bankrw("dma_ram");
+ map(0x1c0000, 0x1c3fff).bankrw(m_dma_bank);
map(0x1c4000, 0x1cffff).ram().share("sub_com_ram");
map(0x200000, 0x2007ff).ram();
- map(0x200800, 0x203fff).ram().share("dot_ram");
+ map(0x200800, 0x203fff).ram().share(m_dot_ram);
}
@@ -782,7 +781,7 @@ void mlanding_state::dsp_map_prog(address_map &map)
void mlanding_state::dsp_map_data(address_map &map)
{
- map(0x0400, 0x1fff).ram().share("dot_ram");
+ map(0x0400, 0x1fff).ram().share(m_dot_ram);
}
/*************************************
@@ -828,7 +827,7 @@ void mlanding_state::mecha_map_prog(address_map &map)
{
map(0x0000, 0x7fff).rom();
map(0x8000, 0x87ff).ram();
- map(0x8800, 0x8fff).ram().share("power_ram");
+ map(0x8800, 0x8fff).ram().share(m_power_ram);
map(0x9000, 0x9003).nopw();
map(0x9800, 0x9805).r(FUNC(mlanding_state::motor_r));
}
@@ -919,6 +918,14 @@ static INPUT_PORTS_START( mlanding )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("yokectrl", taitoio_yoke_device, handle_up_r )
INPUT_PORTS_END
+static INPUT_PORTS_START( mlandingj )
+ PORT_INCLUDE(mlanding)
+
+ PORT_MODIFY("DSWB")
+ PORT_DIPNAME( 0x40, 0x40, DEF_STR( Language ) ) PORT_DIPLOCATION("SWB:7")
+ PORT_DIPSETTING( 0x40, DEF_STR( Japanese ) )
+ PORT_DIPSETTING( 0x00, DEF_STR( English ) )
+INPUT_PORTS_END
/*************************************
*
@@ -929,22 +936,22 @@ INPUT_PORTS_END
MACHINE_CONFIG_START(mlanding_state::mlanding)
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 8000000) // Appears to be 68000P8 in PCB photo
+ MCFG_DEVICE_ADD(m_maincpu, M68000, 8000000) // 68000P8 in PCB photo
MCFG_DEVICE_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mlanding_state, irq6_line_hold)
- MCFG_DEVICE_ADD("subcpu", M68000, 8000000) // Appears to be 68000P8 in PCB photo
+ MCFG_DEVICE_ADD(m_subcpu, M68000, 8000000) // 68000P8 in PCB photo
MCFG_DEVICE_PROGRAM_MAP(sub_map)
- MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) // ?
+ MCFG_DEVICE_ADD(m_audiocpu, Z80, 4000000) // Z8040004
MCFG_DEVICE_PROGRAM_MAP(audio_map_prog)
MCFG_DEVICE_IO_MAP(audio_map_io)
- MCFG_DEVICE_ADD("mechacpu", Z80, 4000000) // ?
+ MCFG_DEVICE_ADD(m_mechacpu, Z80, 4000000) // ?
MCFG_DEVICE_PROGRAM_MAP(mecha_map_prog)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", mlanding_state, irq0_line_hold)
- MCFG_DEVICE_ADD("dsp", TMS32025, 32000000) // ?
+ MCFG_DEVICE_ADD(m_dsp, TMS32025, 32000000) // ?
MCFG_DEVICE_PROGRAM_MAP(dsp_map_prog)
MCFG_DEVICE_DATA_MAP(dsp_map_data)
MCFG_TMS32025_HOLD_IN_CB(READ16(*this, mlanding_state, dsp_hold_signal_r))
@@ -967,9 +974,9 @@ MACHINE_CONFIG_START(mlanding_state::mlanding)
// Estimated
MCFG_SCREEN_RAW_PARAMS(16000000, 640, 0, 512, 462, 0, 400)
MCFG_SCREEN_UPDATE_DRIVER(mlanding_state, screen_update_mlanding)
- MCFG_SCREEN_PALETTE("palette")
+ MCFG_SCREEN_PALETTE(m_palette)
- MCFG_PALETTE_ADD("palette", 32768)
+ MCFG_PALETTE_ADD(m_palette, 32768)
MCFG_PALETTE_FORMAT(xBBBBBGGGGGRRRRR)
/* sound hardware */
@@ -981,12 +988,12 @@ MACHINE_CONFIG_START(mlanding_state::mlanding)
MCFG_SOUND_ROUTE(0, "mono", 0.50)
MCFG_SOUND_ROUTE(1, "mono", 0.50)
- MCFG_DEVICE_ADD("msm1", MSM5205, 384000)
+ MCFG_DEVICE_ADD(m_msm1, MSM5205, 384000)
MCFG_MSM5205_VCLK_CB(WRITELINE(*this, mlanding_state, msm5205_1_vck)) // VCK function
MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) // 8 kHz, 4-bit
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
- MCFG_DEVICE_ADD("msm2", MSM5205, 384000)
+ MCFG_DEVICE_ADD(m_msm2, MSM5205, 384000)
MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) // Slave mode, 4-bit
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10)
MACHINE_CONFIG_END
@@ -1001,35 +1008,63 @@ MACHINE_CONFIG_END
ROM_START( mlanding )
ROM_REGION( 0x60000, "maincpu", 0 )
- ROM_LOAD16_BYTE( "ml_b0929.epr", 0x00000, 0x10000, CRC(ab3f38f3) SHA1(4357112ca11a8e7bfe08ba99ac3bddac046c230a))
- ROM_LOAD16_BYTE( "ml_b0928.epr", 0x00001, 0x10000, CRC(21e7a8f6) SHA1(860d3861d4375866cd27d426d546ddb2894a6629) )
- ROM_LOAD16_BYTE( "ml_b0927.epr", 0x20000, 0x10000, CRC(b02f1805) SHA1(b8050f955c7070dc9b962db329b5b0ee8b2acb70) )
- ROM_LOAD16_BYTE( "ml_b0926.epr", 0x20001, 0x10000, CRC(d57ff428) SHA1(8ff1ab666b06fb873f1ba9b25edf4cd49b9861a1) )
- ROM_LOAD16_BYTE( "ml_b0925.epr", 0x40000, 0x10000, CRC(ff59f049) SHA1(aba490a28aba03728415f34d321fd599c31a5fde) )
- ROM_LOAD16_BYTE( "ml_b0924.epr", 0x40001, 0x10000, CRC(9bc3e1b0) SHA1(6d86804327df11a513a0f06dceb57b83b34ac007) )
+ ROM_LOAD16_BYTE( "b09_29.ic44", 0x00000, 0x10000, CRC(ab3f38f3) SHA1(4357112ca11a8e7bfe08ba99ac3bddac046c230a) ) // label needs verifying
+ ROM_LOAD16_BYTE( "b09_28.ic27", 0x00001, 0x10000, CRC(21e7a8f6) SHA1(860d3861d4375866cd27d426d546ddb2894a6629) ) // label needs verifying
+ ROM_LOAD16_BYTE( "b09_27.ic45", 0x20000, 0x10000, CRC(b02f1805) SHA1(b8050f955c7070dc9b962db329b5b0ee8b2acb70) )
+ ROM_LOAD16_BYTE( "b09_26.ic28", 0x20001, 0x10000, CRC(d57ff428) SHA1(8ff1ab666b06fb873f1ba9b25edf4cd49b9861a1) )
+ ROM_LOAD16_BYTE( "b09_25.ic46", 0x40000, 0x10000, CRC(ff59f049) SHA1(aba490a28aba03728415f34d321fd599c31a5fde) )
+ ROM_LOAD16_BYTE( "b09_24.ic29", 0x40001, 0x10000, CRC(9bc3e1b0) SHA1(6d86804327df11a513a0f06dceb57b83b34ac007) )
ROM_REGION( 0x20000, "subcpu", 0 )
- ROM_LOAD16_BYTE( "ml_b0923.epr", 0x00000, 0x10000, CRC(81b2c871) SHA1(a085bc528c63834079469db6ae263a5b9b984a7c) )
- ROM_LOAD16_BYTE( "ml_b0922.epr", 0x00001, 0x10000, CRC(36923b42) SHA1(c31d7c45a563cfc4533379f69f32889c79562534) )
+ ROM_LOAD16_BYTE( "b09_23.ic56", 0x00000, 0x10000, CRC(81b2c871) SHA1(a085bc528c63834079469db6ae263a5b9b984a7c) )
+ ROM_LOAD16_BYTE( "b09_22.ic39", 0x00001, 0x10000, CRC(36923b42) SHA1(c31d7c45a563cfc4533379f69f32889c79562534) )
ROM_REGION( 0x10000, "audiocpu", 0 )
- ROM_LOAD( "ml_b0935.epr", 0x00000, 0x08000, CRC(b85915c5) SHA1(656e97035ae304f84e90758d0dd6f0616c40f1db) )
+ ROM_LOAD( "b09_35.ic80", 0x00000, 0x08000, CRC(b85915c5) SHA1(656e97035ae304f84e90758d0dd6f0616c40f1db) )
ROM_REGION( 0x10000, "mechacpu", 0 )
- ROM_LOAD( "ml_b0937.epr", 0x00000, 0x08000, CRC(4bdf15ed) SHA1(b960208e63cede116925e064279a6cf107aef81c) )
+ ROM_LOAD( "b09_37.epr", 0x00000, 0x08000, CRC(4bdf15ed) SHA1(b960208e63cede116925e064279a6cf107aef81c) )
ROM_REGION( 0x80000, "adpcm1", 0 )
- ROM_LOAD( "ml_b0934.epr", 0x00000, 0x10000, CRC(0899666f) SHA1(032e3ddd4caa48f82592570616e16c084de91f3e) )
- ROM_LOAD( "ml_b0933.epr", 0x10000, 0x10000, CRC(f5cac954) SHA1(71abdc545e0196ad4d357af22dd6312d10a1323f) )
- ROM_LOAD( "ml_b0932.epr", 0x20000, 0x10000, CRC(4721dc59) SHA1(faad75d577344e9ba495059040a2cf0647567426) )
- ROM_LOAD( "ml_b0931.epr", 0x30000, 0x10000, CRC(9c4a82bf) SHA1(daeac620c636013a36595ce9f37e84e807f88977) )
- ROM_LOAD( "ml_b0930.epr", 0x40000, 0x10000, CRC(214a30e2) SHA1(3dcc3a89ed52e4dbf232d2a92a3e64975b46c2dd) )
+ ROM_LOAD( "b09_34.ic62", 0x00000, 0x10000, CRC(0899666f) SHA1(032e3ddd4caa48f82592570616e16c084de91f3e) )
+ ROM_LOAD( "b09_33.ic63", 0x10000, 0x10000, CRC(f5cac954) SHA1(71abdc545e0196ad4d357af22dd6312d10a1323f) )
+ ROM_LOAD( "b09_32.ic64", 0x20000, 0x10000, CRC(4721dc59) SHA1(faad75d577344e9ba495059040a2cf0647567426) )
+ ROM_LOAD( "b09_31.ic65", 0x30000, 0x10000, CRC(9c4a82bf) SHA1(daeac620c636013a36595ce9f37e84e807f88977) )
+ ROM_LOAD( "b09_30.ic66", 0x40000, 0x10000, CRC(214a30e2) SHA1(3dcc3a89ed52e4dbf232d2a92a3e64975b46c2dd) )
ROM_REGION( 0x2000, "adpcm2", 0 )
- ROM_LOAD( "ml_b0936.epr", 0x00000, 0x02000, CRC(51fd3a77) SHA1(1fcbadf1877e25848a1d1017322751560a4823c0) )
+ ROM_LOAD( "b09_36.ic111", 0x00000, 0x02000, CRC(51fd3a77) SHA1(1fcbadf1877e25848a1d1017322751560a4823c0) )
ROM_END
+ROM_START( mlandingj )
+ ROM_REGION( 0x60000, "maincpu", 0 )
+ ROM_LOAD16_BYTE( "b09_29-2.ic44", 0x00000, 0x10000, CRC(c78d55cd) SHA1(0126524310048a55f4c0c361a1673cc259e461ba) ) // 27512
+ ROM_LOAD16_BYTE( "b09_28-3.ic27", 0x00001, 0x10000, CRC(7098c18d) SHA1(ee5b386fed9df5edfd19cb967fd01e9e7fd9ad08) ) // 27512
+ ROM_LOAD16_BYTE( "b09_27.ic45", 0x20000, 0x10000, CRC(b02f1805) SHA1(b8050f955c7070dc9b962db329b5b0ee8b2acb70) )
+ ROM_LOAD16_BYTE( "b09_26.ic28", 0x20001, 0x10000, CRC(d57ff428) SHA1(8ff1ab666b06fb873f1ba9b25edf4cd49b9861a1) )
+ ROM_LOAD16_BYTE( "b09_25.ic46", 0x40000, 0x10000, CRC(ff59f049) SHA1(aba490a28aba03728415f34d321fd599c31a5fde) )
+ ROM_LOAD16_BYTE( "b09_24.ic29", 0x40001, 0x10000, CRC(9bc3e1b0) SHA1(6d86804327df11a513a0f06dceb57b83b34ac007) )
+
+ ROM_REGION( 0x20000, "subcpu", 0 )
+ ROM_LOAD16_BYTE( "b09_23.ic56", 0x00000, 0x10000, CRC(81b2c871) SHA1(a085bc528c63834079469db6ae263a5b9b984a7c) )
+ ROM_LOAD16_BYTE( "b09_22.ic39", 0x00001, 0x10000, CRC(36923b42) SHA1(c31d7c45a563cfc4533379f69f32889c79562534) )
+
+ ROM_REGION( 0x10000, "audiocpu", 0 )
+ ROM_LOAD( "b09_35.ic80", 0x00000, 0x08000, CRC(b85915c5) SHA1(656e97035ae304f84e90758d0dd6f0616c40f1db) )
+
+ ROM_REGION( 0x10000, "mechacpu", 0 )
+ ROM_LOAD( "b09_37.epr", 0x00000, 0x08000, CRC(4bdf15ed) SHA1(b960208e63cede116925e064279a6cf107aef81c) )
+
+ ROM_REGION( 0x80000, "adpcm1", 0 )
+ ROM_LOAD( "b09_34.ic62", 0x00000, 0x10000, CRC(0899666f) SHA1(032e3ddd4caa48f82592570616e16c084de91f3e) )
+ ROM_LOAD( "b09_33.ic63", 0x10000, 0x10000, CRC(f5cac954) SHA1(71abdc545e0196ad4d357af22dd6312d10a1323f) )
+ ROM_LOAD( "b09_32.ic64", 0x20000, 0x10000, CRC(4721dc59) SHA1(faad75d577344e9ba495059040a2cf0647567426) )
+ ROM_LOAD( "b09_31.ic65", 0x30000, 0x10000, CRC(9c4a82bf) SHA1(daeac620c636013a36595ce9f37e84e807f88977) )
+ ROM_LOAD( "b09_30.ic66", 0x40000, 0x10000, CRC(214a30e2) SHA1(3dcc3a89ed52e4dbf232d2a92a3e64975b46c2dd) )
+ ROM_REGION( 0x2000, "adpcm2", 0 )
+ ROM_LOAD( "b09_36.ic111", 0x00000, 0x02000, CRC(51fd3a77) SHA1(1fcbadf1877e25848a1d1017322751560a4823c0) )
+ROM_END
/*************************************
*
@@ -1037,4 +1072,5 @@ ROM_END
*
*************************************/
-GAME( 1987, mlanding, 0, mlanding, mlanding, mlanding_state, empty_init, ROT0, "Taito America Corporation", "Midnight Landing (Germany)", MACHINE_SUPPORTS_SAVE )
+GAME( 1987, mlanding, 0, mlanding, mlanding, mlanding_state, empty_init, ROT0, "Taito America Corporation", "Midnight Landing (Germany)", MACHINE_SUPPORTS_SAVE ) // Japanese or German selectable via dip-switch. Copyright changes accordingly.
+GAME( 1987, mlandingj, mlanding, mlanding, mlandingj, mlanding_state, empty_init, ROT0, "Taito Corporation", "Midnight Landing (Japan)", MACHINE_SUPPORTS_SAVE ) // Japanese or English selectable via dip-switch. Copyright changes accordingly.
diff --git a/src/mame/mame.lst b/src/mame/mame.lst
index c00dd58fb92..c24e94d1827 100644
--- a/src/mame/mame.lst
+++ b/src/mame/mame.lst
@@ -21470,7 +21470,8 @@ mkit09 //
mkit09a //
@source:mlanding.cpp
-mlanding // ??? (c) 1987 Taito America Corporation (US)
+mlanding // B09 (c) 1987 Taito America Corporation (US)
+mlandingj // B09 (c) 1987 Taito Corporation (US)
@source:mmagic.cpp
mmagic // (c) 1979 Nintendo