diff options
author | Michaël Banaan Ananas <happppp@users.noreply.github.com> | 2012-07-13 01:13:50 +0000 |
---|---|---|
committer | Michaël Banaan Ananas <happppp@users.noreply.github.com> | 2012-07-13 01:13:50 +0000 |
commit | 28a5da6eef4bb8ed612f08883651cc841fe0ad66 (patch) | |
tree | 7a6352718a8028f98fafa0553e476bccb9217872 | |
parent | f31760c27f7e2367afe24ec15e581b5176af5e71 (diff) |
hooked up dendego oki chip
-rw-r--r-- | src/mame/drivers/taitojc.c | 85 | ||||
-rw-r--r-- | src/mame/includes/taitojc.h | 3 |
2 files changed, 47 insertions, 41 deletions
diff --git a/src/mame/drivers/taitojc.c b/src/mame/drivers/taitojc.c index 78bcc35a363..e8b608429df 100644 --- a/src/mame/drivers/taitojc.c +++ b/src/mame/drivers/taitojc.c @@ -342,7 +342,6 @@ Notes: - dendego intro object RAM usage has various gfx bugs (check video file) - dendego title screen builds up and it shouldn't - dendego attract mode train doesn't ride, the doors light doesn't turn on. - - dendego/dendego2 train board (external sound board with OKI6295) is not emulated. where is it accessed??? - dendego2 shows a debug string during gameplay? it also shows up in the 2nd demo run. - landgear has some weird crashes (after playing one round, after a couple of loops in attract mode) (needs testing -AS) - landgear has huge 3d problems on gameplay (CPU comms?) @@ -810,41 +809,6 @@ WRITE32_MEMBER(taitojc_state::snd_share_w) } } -WRITE32_MEMBER(taitojc_state::jc_meters_w) -{ - // printf("jc_output_w: %08x, %08x %08x\n", offset, data,mem_mask); - if (ACCESSING_BITS_16_31) - { - switch (offset & 3) - { - case 0: - { - int val = dendego_odometer_table[(data >> 16) & 0xff]; - if (val != m_speed_meter) - { - m_speed_meter = val; - output_set_value("counter2", val / 10); - output_set_value("counter3", val % 10); - } - break; - } - - case 1: - { - int val = dendego_pressure_table[(data >> 16) & 0xff]; - if (val != m_brake_meter) - { - m_brake_meter = val; - output_set_value("counter4", val); - } - break; - } - case 2: break; // unused? - case 3: break; // motor (used in dendego2 to shake seat) - } - } -} - READ32_MEMBER(taitojc_state::jc_lan_r) { return 0xffffffff; @@ -867,12 +831,49 @@ static ADDRESS_MAP_START( taitojc_map, AS_PROGRAM, 32, taitojc_state ) AM_RANGE(0x06800000, 0x06800003) AM_WRITENOP // irq mask/ack? a watchdog? AM_RANGE(0x06a00000, 0x06a01fff) AM_READWRITE(snd_share_r, snd_share_w) AM_SHARE("snd_shared") AM_RANGE(0x06c00000, 0x06c0001f) AM_READ(jc_lan_r) - AM_RANGE(0x06e00000, 0x06e0000f) AM_WRITE(jc_meters_w) AM_RANGE(0x08000000, 0x080fffff) AM_RAM AM_SHARE("main_ram") AM_RANGE(0x10000000, 0x10001fff) AM_READWRITE(dsp_shared_r, dsp_shared_w) ADDRESS_MAP_END +/* + +Densha de Go games have odometers for speed and brakepressure. +There's a voltmeter too, but seems to be a dummy (always stuck on 1.5kV) + +The OKI is used for seat vibration effects. + +*/ + +WRITE8_MEMBER(taitojc_state::dendego_speedmeter_w) +{ + int val = dendego_odometer_table[(data >> 16) & 0xff]; + if (val != m_speed_meter) + { + m_speed_meter = val; + output_set_value("counter2", val / 10); + output_set_value("counter3", val % 10); + } +} + +WRITE8_MEMBER(taitojc_state::dendego_brakemeter_w) +{ + int val = dendego_pressure_table[(data >> 16) & 0xff]; + if (val != m_brake_meter) + { + m_brake_meter = val; + output_set_value("counter4", val); + } +} + +static ADDRESS_MAP_START( dendego_map, AS_PROGRAM, 32, taitojc_state ) + AM_RANGE(0x06e00000, 0x06e00003) AM_WRITE8(dendego_speedmeter_w, 0x00ff0000) + AM_RANGE(0x06e00004, 0x06e00007) AM_WRITE8(dendego_brakemeter_w, 0x00ff0000) + AM_RANGE(0x06e0000c, 0x06e0000f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff0000) + AM_IMPORT_FROM( taitojc_map ) +ADDRESS_MAP_END + + /*****************************************************************************/ READ8_MEMBER(taitojc_state::hc11_comm_r) @@ -1186,7 +1187,7 @@ static INPUT_PORTS_START( dendego ) PORT_INCLUDE( common ) PORT_MODIFY("UNUSED") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Horn Button") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Horn Pedal") PORT_MODIFY("BUTTONS") // Throttle Lever at left, move down to speed up, 6 positions PORT_BIT( 0x77, 0x00, IPT_POSITIONAL_V ) PORT_POSITIONS(6) PORT_REMAP_TABLE(dendego_mascon_table) PORT_SENSITIVITY(10) PORT_KEYDELTA(1) PORT_CENTERDELTA(0) PORT_NAME("Throttle Lever") @@ -1341,14 +1342,18 @@ static MACHINE_CONFIG_START( taitojc, taitojc_state ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( dendego, taitojc ) + /* basic machine hardware */ + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(dendego_map) + /* video hardware */ MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_UPDATE_STATIC(dendego) /* sound hardware */ + MCFG_SPEAKER_ADD("subwoofer", 0.0, 0.0, 1.0) MCFG_OKIM6295_ADD("oki", 32000000/32, OKIM6295_PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "subwoofer", 0.20) MACHINE_CONFIG_END READ16_MEMBER(taitojc_state::taitojc_dsp_idle_skip_r) diff --git a/src/mame/includes/taitojc.h b/src/mame/includes/taitojc.h index 9a79612a881..2f7d425962b 100644 --- a/src/mame/includes/taitojc.h +++ b/src/mame/includes/taitojc.h @@ -85,7 +85,8 @@ public: DECLARE_WRITE32_MEMBER(dsp_shared_w); DECLARE_READ32_MEMBER(snd_share_r); DECLARE_WRITE32_MEMBER(snd_share_w); - DECLARE_WRITE32_MEMBER(jc_meters_w); + DECLARE_WRITE8_MEMBER(dendego_speedmeter_w); + DECLARE_WRITE8_MEMBER(dendego_brakemeter_w); DECLARE_READ32_MEMBER(jc_lan_r); DECLARE_READ8_MEMBER(hc11_comm_r); DECLARE_WRITE8_MEMBER(hc11_comm_w); |