diff --git a/.gitattributes b/.gitattributes index 4912d03ee1a..4642fb7d407 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4046,6 +4046,7 @@ src/mame/layout/crusnexo.lay svneol=native#text/plain src/mame/layout/darius.lay svneol=native#text/plain src/mame/layout/dblaxle.lay svneol=native#text/plain src/mame/layout/deadeye.lay svneol=native#text/plain +src/mame/layout/dendego.lay svneol=native#text/plain src/mame/layout/depthch.lay svneol=native#text/plain src/mame/layout/destroyr.lay svneol=native#text/plain src/mame/layout/dlair.lay svneol=native#text/plain diff --git a/src/emu/rendlay.c b/src/emu/rendlay.c index fe6346c7ad2..b283caab27f 100644 --- a/src/emu/rendlay.c +++ b/src/emu/rendlay.c @@ -486,14 +486,10 @@ layout_element::layout_element(running_machine &machine, xml_data_node &elemnode m_maxstate = 31; if (newcomp.m_type == component::CTYPE_DOTMATRIXDOT) m_maxstate = 1; - if (newcomp.m_type == component::CTYPE_SIMPLECOUNTER) - { + if (newcomp.m_type == component::CTYPE_SIMPLECOUNTER) m_maxstate = xml_get_attribute_int_with_subst(machine, *compnode, "maxstate", 999); - } if (newcomp.m_type == component::CTYPE_REEL) - { m_maxstate = 65536; - } } // determine the scale/offset for normalization @@ -621,8 +617,6 @@ layout_element::component::component(running_machine &machine, xml_data_node &co m_file[i] = NULL; } - - // fetch common data m_state = xml_get_attribute_int_with_subst(machine, compnode, "state", -1); parse_bounds(machine, xml_get_sibling(compnode.child, "bounds"), m_bounds); @@ -660,12 +654,15 @@ layout_element::component::component(running_machine &machine, xml_data_node &co { m_type = CTYPE_DOTMATRIXDOT; } + // simplecounter nodes else if (strcmp(compnode.name, "simplecounter") == 0) { m_type = CTYPE_SIMPLECOUNTER; m_digits = xml_get_attribute_int_with_subst(machine, compnode, "digits", 2); + m_textalign = xml_get_attribute_int_with_subst(machine, compnode, "align", 0); } + // fruit machine reels else if (strcmp(compnode.name, "reel") == 0) { @@ -715,6 +712,7 @@ layout_element::component::component(running_machine &machine, xml_data_node &co m_numsymbolsvisible = xml_get_attribute_int_with_subst(machine, compnode, "numsymbolsvisible", 3); m_reelreversed = xml_get_attribute_int_with_subst(machine, compnode, "reelreversed", 0); } + // led7seg nodes else if (strcmp(compnode.name, "led7seg") == 0) m_type = CTYPE_LED7SEG; @@ -1031,8 +1029,6 @@ void layout_element::component::draw_simplecounter(running_machine &machine, bit /* state is a normalized value between 0 and 65536 so that we don't need to worry about how many motor steps here or in the .lay, only the number of symbols */ void layout_element::component::draw_reel(running_machine &machine, bitmap_argb32 &dest, const rectangle &bounds, int state) { - - const int max_state_used = 0x10000; // shift the reels a bit based on this param, allows fine tuning @@ -1055,8 +1051,6 @@ void layout_element::component::draw_reel(running_machine &machine, bitmap_argb3 for (int fruit = 0;fruit> 16) & 0xff]; break; - case 1: m_brake_meter = dendego_brake_table[(data >> 16) & 0xff]; break; + 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) } } - - if(ioport("METER")->read_safe(0)) - { - UINT8 btn = (ioport("BUTTONS")->read() & 0x77); - int mascon_lv; - for (mascon_lv = 5; mascon_lv > 0; mascon_lv--) - if (btn == dendego_mascon_table[mascon_lv]) break; - - popmessage("%d %.02f km/h %.02f MPa",mascon_lv,m_speed_meter,m_brake_meter/10); - } } READ32_MEMBER(taitojc_state::jc_lan_r) @@ -879,12 +891,12 @@ WRITE8_MEMBER(taitojc_state::hc11_lamps_w) dendego/dendego2: d0: START d1: DOOR - d2: JYOUYO - d3: HIJYOU - d4: DENSEI + d2: JYOUYO (normal) + d3: HIJYOU (emergency) + d4: DENSEI (three-stage power) d5: POP L d6: POP R - d7: ------- + d7: ------- (?) landgear: unused? @@ -1180,12 +1192,7 @@ static INPUT_PORTS_START( dendego ) PORT_BIT( 0x88, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("ANALOG1") // Brake Lever at right, rotate handle right (anti clockwise) to increase pressure, 11 positions but not at constant intervals like the throttle lever - PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x00, 0xff) PORT_SENSITIVITY(20) PORT_KEYDELTA(5) PORT_CENTERDELTA(0) PORT_NAME("Brake Lever") - - PORT_START("METER") - PORT_CONFNAME( 0x01, 0x01, "Show Meters" ) - PORT_CONFSETTING( 0x01, DEF_STR( Yes ) ) - PORT_CONFSETTING( 0x00, DEF_STR( No ) ) + PORT_BIT( 0xff, 0x80, IPT_PADDLE ) PORT_MINMAX(0x00, 0xef) PORT_SENSITIVITY(20) PORT_KEYDELTA(5) PORT_CENTERDELTA(0) PORT_NAME("Brake Lever") INPUT_PORTS_END static INPUT_PORTS_START( landgear ) @@ -1297,7 +1304,7 @@ static const hc11_config taitojc_config = static MACHINE_CONFIG_START( taitojc, taitojc_state ) - + /* basic machine hardware */ MCFG_CPU_ADD("maincpu", M68040, 25000000) MCFG_CPU_PROGRAM_MAP(taitojc_map) MCFG_CPU_VBLANK_INT("screen", taitojc_vblank) @@ -1316,6 +1323,7 @@ static MACHINE_CONFIG_START( taitojc, taitojc_state ) MCFG_MACHINE_RESET(taitojc) MCFG_EEPROM_93C46_ADD("eeprom") + /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) @@ -1332,6 +1340,11 @@ static MACHINE_CONFIG_START( taitojc, taitojc_state ) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( dendego, taitojc ) + /* video hardware */ + MCFG_SCREEN_MODIFY("screen") + MCFG_SCREEN_UPDATE_STATIC(dendego) + + /* sound hardware */ 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) @@ -2025,15 +2038,15 @@ ROM_START( dangcurv ) ROM_END -GAME( 1995, dangcurv, 0, taitojc, dangcurv, dangcurv, ROT0, "Taito", "Dangerous Curves (Ver 2.2 J)", GAME_NOT_WORKING ) // DANGEROUS CURVES VER 2.2 J 1995.07.20 17:45 -GAME( 1995, landgear, 0, taitojc, landgear, taitojc, ROT0, "Taito", "Landing Gear (Ver 4.2 O)", GAME_IMPERFECT_GRAPHICS ) // LANDING GEAR VER 4.2 O Feb 8 1996 09:46:22 -GAME( 1995, landgearj, landgear, taitojc, landgear, taitojc, ROT0, "Taito", "Landing Gear (Ver 4.2 J)", GAME_IMPERFECT_GRAPHICS ) // LANDING GEAR VER 4.2 J Feb 8 1996 09:46:22 -GAME( 1995, landgeara, landgear, taitojc, landgear, taitojc, ROT0, "Taito", "Landing Gear (Ver 3.1 O)", GAME_IMPERFECT_GRAPHICS ) // LANDING GEAR VER 3.1 O Feb 8 1996 09:46:22 -GAME( 1995, landgearja,landgear, taitojc, landgear, taitojc, ROT0, "Taito", "Landing Gear (Ver 3.0 J)", GAME_IMPERFECT_GRAPHICS ) // LANDING GEAR VER 3.0 J Feb 8 1996 09:46:22 -GAME( 1996, sidebs, 0, taitojc, sidebs, taitojc, ROT0, "Taito", "Side by Side (Ver 2.5 J)", GAME_IMPERFECT_GRAPHICS ) // SIDE BY SIDE VER 2.5 J 1996/ 6/20 18:13:14 -GAME( 1996, dendego, 0, dendego, dendego, taitojc, ROT0, "Taito", "Densha de GO! (Ver 2.2 J)", GAME_IMPERFECT_GRAPHICS ) // DENSYA DE GO VER 2.2 J 1997/ 2/ 4 12:00:28 -GAME( 1996, dendegox, dendego, dendego, dendego, taitojc, ROT0, "Taito", "Densha de GO! EX (Ver 2.4 J)", GAME_IMPERFECT_GRAPHICS ) // DENSYA DE GO VER 2.4 J 1997/ 4/18 13:38:34 -GAME( 1997, sidebs2, 0, taitojc, sidebs, taitojc, ROT0, "Taito", "Side by Side 2 (Ver 2.6 A)", GAME_IMPERFECT_GRAPHICS ) // SIDE BY SIDE2 VER 2.6 A 1997/ 6/19 09:39:22 -GAME( 1997, sidebs2j, sidebs2, taitojc, sidebs, taitojc, ROT0, "Taito", "Side by Side 2 (Ver 2.4 J)", GAME_IMPERFECT_GRAPHICS ) // SIDE BY SIDE2 VER 2.4 J 1997/ 5/26 13:06:37 -GAME( 1998, dendego2, 0, dendego, dendego, dendego2, ROT0, "Taito", "Densha de GO! 2 Kousoku-hen (Ver 2.5 J)", GAME_IMPERFECT_GRAPHICS ) // DENSYA DE GO2 VER 2.5 J 1998/ 3/ 2 15:30:55 -GAME( 1998, dendego23k,dendego2, dendego, dendego, dendego2, ROT0, "Taito", "Densha de GO! 2 Kousoku-hen 3000-bandai (Ver 2.20 J)", GAME_IMPERFECT_GRAPHICS ) // DENSYA DE GO! 2 3000 VER 2.20 J 1998/ 7/15 17:42:38 +GAME( 1995, dangcurv, 0, taitojc, dangcurv, dangcurv, ROT0, "Taito", "Dangerous Curves (Ver 2.2 J)", GAME_NOT_WORKING ) // DANGEROUS CURVES VER 2.2 J 1995.07.20 17:45 +GAME( 1995, landgear, 0, taitojc, landgear, taitojc, ROT0, "Taito", "Landing Gear (Ver 4.2 O)", GAME_IMPERFECT_GRAPHICS ) // LANDING GEAR VER 4.2 O Feb 8 1996 09:46:22 +GAME( 1995, landgearj, landgear, taitojc, landgear, taitojc, ROT0, "Taito", "Landing Gear (Ver 4.2 J)", GAME_IMPERFECT_GRAPHICS ) // LANDING GEAR VER 4.2 J Feb 8 1996 09:46:22 +GAME( 1995, landgeara, landgear, taitojc, landgear, taitojc, ROT0, "Taito", "Landing Gear (Ver 3.1 O)", GAME_IMPERFECT_GRAPHICS ) // LANDING GEAR VER 3.1 O Feb 8 1996 09:46:22 +GAME( 1995, landgearja,landgear, taitojc, landgear, taitojc, ROT0, "Taito", "Landing Gear (Ver 3.0 J)", GAME_IMPERFECT_GRAPHICS ) // LANDING GEAR VER 3.0 J Feb 8 1996 09:46:22 +GAME( 1996, sidebs, 0, taitojc, sidebs, taitojc, ROT0, "Taito", "Side by Side (Ver 2.5 J)", GAME_IMPERFECT_GRAPHICS ) // SIDE BY SIDE VER 2.5 J 1996/ 6/20 18:13:14 +GAMEL(1996, dendego, 0, dendego, dendego, taitojc, ROT0, "Taito", "Densha de GO! (Ver 2.2 J)", GAME_IMPERFECT_GRAPHICS, layout_dendego ) // DENSYA DE GO VER 2.2 J 1997/ 2/ 4 12:00:28 +GAMEL(1996, dendegox, dendego, dendego, dendego, taitojc, ROT0, "Taito", "Densha de GO! EX (Ver 2.4 J)", GAME_IMPERFECT_GRAPHICS, layout_dendego ) // DENSYA DE GO VER 2.4 J 1997/ 4/18 13:38:34 +GAME( 1997, sidebs2, 0, taitojc, sidebs, taitojc, ROT0, "Taito", "Side by Side 2 (Ver 2.6 A)", GAME_IMPERFECT_GRAPHICS ) // SIDE BY SIDE2 VER 2.6 A 1997/ 6/19 09:39:22 +GAME( 1997, sidebs2j, sidebs2, taitojc, sidebs, taitojc, ROT0, "Taito", "Side by Side 2 (Ver 2.4 J)", GAME_IMPERFECT_GRAPHICS ) // SIDE BY SIDE2 VER 2.4 J 1997/ 5/26 13:06:37 +GAMEL(1998, dendego2, 0, dendego, dendego, dendego2, ROT0, "Taito", "Densha de GO! 2 Kousoku-hen (Ver 2.5 J)", GAME_IMPERFECT_GRAPHICS, layout_dendego ) // DENSYA DE GO2 VER 2.5 J 1998/ 3/ 2 15:30:55 +GAMEL(1998, dendego23k,dendego2, dendego, dendego, dendego2, ROT0, "Taito", "Densha de GO! 2 Kousoku-hen 3000-bandai (Ver 2.20 J)", GAME_IMPERFECT_GRAPHICS, layout_dendego ) // DENSYA DE GO! 2 3000 VER 2.20 J 1998/ 7/15 17:42:38 diff --git a/src/mame/includes/taitojc.h b/src/mame/includes/taitojc.h index e0c0658280e..9a79612a881 100644 --- a/src/mame/includes/taitojc.h +++ b/src/mame/includes/taitojc.h @@ -70,8 +70,8 @@ public: UINT8 m_has_dsp_hack; - double m_speed_meter; - double m_brake_meter; + int m_speed_meter; + int m_brake_meter; UINT32 m_outputs; DECLARE_READ32_MEMBER(taitojc_palette_r); DECLARE_WRITE32_MEMBER(taitojc_palette_w); @@ -125,47 +125,50 @@ void taitojc_render_polygons(running_machine &machine, UINT16 *polygon_fifo, int VIDEO_START(taitojc); SCREEN_UPDATE_IND16(taitojc); +SCREEN_UPDATE_IND16(dendego); // lookup tables for densha de go analog controls/meters -const double dendego_odometer_table[0x100] = +const int dendego_odometer_table[0x100] = { - 0.0, 0.3, 0.7, 1.0, 1.4, 1.7, 2.1, 2.4, 2.8, 3.1, 3.4, 3.8, 4.1, 4.5, 4.8, 5.2, - 5.5, 5.9, 6.2, 6.6, 6.9, 7.2, 7.6, 7.9, 8.3, 8.6, 9.0, 9.3, 9.7, 10.0, 10.5, 11.1, - 11.6, 12.1, 12.6, 13.2, 13.7, 14.2, 14.7, 15.3, 15.8, 16.3, 16.8, 17.4, 17.9, 18.4, 18.9, 19.5, - 20.0, 20.6, 21.1, 21.7, 22.2, 22.8, 23.3, 23.9, 24.4, 25.0, 25.6, 26.1, 26.7, 27.2, 27.8, 28.3, - 28.9, 29.4, 30.0, 30.6, 31.1, 31.7, 32.2, 32.8, 33.3, 33.9, 34.4, 35.0, 35.6, 36.1, 36.7, 37.2, - 37.8, 38.3, 38.9, 39.4, 40.0, 40.6, 41.2, 41.8, 42.4, 42.9, 43.5, 44.1, 44.7, 45.3, 45.9, 46.5, - 47.1, 47.6, 48.2, 48.8, 49.4, 50.0, 50.5, 51.1, 51.6, 52.1, 52.6, 53.2, 53.7, 54.2, 54.7, 55.3, - 55.8, 56.3, 56.8, 57.4, 57.9, 58.4, 58.9, 59.5, 60.0, 60.7, 61.3, 62.0, 62.7, 63.3, 64.0, 64.7, - 65.3, 66.0, 66.7, 67.3, 68.0, 68.7, 69.3, 70.0, 70.5, 71.1, 71.6, 72.1, 72.6, 73.2, 73.7, 74.2, - 74.7, 75.3, 75.8, 76.3, 76.8, 77.4, 77.9, 78.4, 78.9, 79.5, 80.0, 80.6, 81.2, 81.8, 82.4, 82.9, - 83.5, 84.1, 84.7, 85.3, 85.9, 86.5, 87.1, 87.6, 88.2, 88.8, 89.4, 90.0, 90.6, 91.1, 91.7, 92.2, - 92.8, 93.3, 93.9, 94.4, 95.0, 95.6, 96.1, 96.7, 97.2, 97.8, 98.3, 98.9, 99.4, 100.0, 100.5, 101.1, - 101.6, 102.1, 102.6, 103.2, 103.7, 104.2, 104.7, 105.3, 105.8, 106.3, 106.8, 107.4, 107.9, 108.4, 108.9, 109.5, - 110.0, 110.7, 111.3, 112.0, 112.7, 113.3, 114.0, 114.7, 115.3, 116.0, 116.7, 117.3, 118.0, 118.7, 119.3, 120.0, - 120.3, 120.6, 120.9, 121.2, 121.6, 121.9, 122.2, 122.5, 122.8, 123.1, 123.4, 123.8, 124.1, 124.4, 124.7, 125.0, - 125.3, 125.6, 125.9, 126.2, 126.6, 126.9, 127.2, 127.5, 127.8, 128.1, 128.4, 128.8, 129.1, 129.4, 129.7, 130.0, + 0, 3, 7, 10, 14, 17, 21, 24, 28, 31, 34, 38, 41, 45, 48, 52, + 55, 59, 62, 66, 69, 72, 76, 79, 83, 86, 90, 93, 97, 100, 105, 111, + 116, 121, 126, 132, 137, 142, 147, 153, 158, 163, 168, 174, 179, 184, 189, 195, + 200, 206, 211, 217, 222, 228, 233, 239, 244, 250, 256, 261, 267, 272, 278, 283, + 289, 294, 300, 306, 311, 317, 322, 328, 333, 339, 344, 350, 356, 361, 367, 372, + 378, 383, 389, 394, 400, 406, 412, 418, 424, 429, 435, 441, 447, 453, 459, 465, + 471, 476, 482, 488, 494, 500, 505, 511, 516, 521, 526, 532, 537, 542, 547, 553, + 558, 563, 568, 574, 579, 584, 589, 595, 600, 607, 613, 620, 627, 633, 640, 647, + 653, 660, 667, 673, 680, 687, 693, 700, 705, 711, 716, 721, 726, 732, 737, 742, + 747, 753, 758, 763, 768, 774, 779, 784, 789, 795, 800, 806, 812, 818, 824, 829, + 835, 841, 847, 853, 859, 865, 871, 876, 882, 888, 894, 900, 906, 911, 917, 922, + 928, 933, 939, 944, 950, 956, 961, 967, 972, 978, 983, 989, 994, 1000, 1005, 1011, + 1016, 1021, 1026, 1032, 1037, 1042, 1047, 1053, 1058, 1063, 1068, 1074, 1079, 1084, 1089, 1095, + 1100, 1107, 1113, 1120, 1127, 1133, 1140, 1147, 1153, 1160, 1167, 1173, 1180, 1187, 1193, 1200, + 1203, 1206, 1209, 1212, 1216, 1219, 1222, 1225, 1228, 1231, 1234, 1238, 1241, 1244, 1247, 1250, + 1253, 1256, 1259, 1262, 1266, 1269, 1272, 1275, 1278, 1281, 1284, 1288, 1291, 1294, 1297, 1300, }; -const double dendego_brake_table[0x100] = +const int dendego_pressure_table[0x100] = { - 0.00, 0.00, 0.00, 0.00, 0.05, 0.10, 0.14, 0.19, 0.24, 0.29, 0.33, 0.38, 0.43, 0.48, 0.52, 0.57, - 0.62, 0.67, 0.71, 0.76, 0.81, 0.86, 0.90, 0.95, 1.00, 1.06, 1.12, 1.19, 1.25, 1.31, 1.38, 1.44, - 1.50, 1.56, 1.62, 1.69, 1.75, 1.81, 1.88, 1.94, 2.00, 2.06, 2.12, 2.19, 2.25, 2.31, 2.38, 2.44, - 2.50, 2.56, 2.62, 2.69, 2.75, 2.81, 2.88, 2.94, 3.00, 3.06, 3.12, 3.18, 3.24, 3.29, 3.35, 3.41, - 3.47, 3.53, 3.59, 3.65, 3.71, 3.76, 3.82, 3.88, 3.94, 4.00, 4.07, 4.13, 4.20, 4.27, 4.33, 4.40, - 4.47, 4.53, 4.60, 4.67, 4.73, 4.80, 4.87, 4.93, 5.00, 5.07, 5.14, 5.21, 5.29, 5.36, 5.43, 5.50, - 5.57, 5.64, 5.71, 5.79, 5.86, 5.93, 6.00, 6.07, 6.14, 6.21, 6.29, 6.36, 6.43, 6.50, 6.57, 6.64, - 6.71, 6.79, 6.86, 6.93, 7.00, 7.06, 7.12, 7.19, 7.25, 7.31, 7.38, 7.44, 7.50, 7.56, 7.62, 7.69, - 7.75, 7.81, 7.88, 7.94, 8.00, 8.07, 8.14, 8.21, 8.29, 8.36, 8.43, 8.50, 8.57, 8.64, 8.71, 8.79, - 8.86, 8.93, 9.00, 9.07, 9.14, 9.21, 9.29, 9.36, 9.43, 9.50, 9.57, 9.64, 9.71, 9.79, 9.86, 9.93, - 10.00, 10.08, 10.15, 10.23, 10.31, 10.38, 10.46, 10.54, 10.62, 10.69, 10.77, 10.85, 10.92, 11.00, 11.08, 11.15, - 11.23, 11.31, 11.38, 11.46, 11.54, 11.62, 11.69, 11.77, 11.85, 11.92, 12.00, 12.07, 12.14, 12.21, 12.29, 12.36, - 12.43, 12.50, 12.57, 12.64, 12.71, 12.79, 12.86, 12.93, 13.00, 13.07, 13.14, 13.21, 13.29, 13.36, 13.43, 13.50, - 13.57, 13.64, 13.71, 13.79, 13.86, 13.93, 14.00, 14.07, 14.14, 14.21, 14.29, 14.36, 14.43, 14.50, 14.57, 14.64, - 14.71, 14.79, 14.86, 14.93, 15.00, 15.04, 15.07, 15.11, 15.15, 15.19, 15.22, 15.26, 15.30, 15.33, 15.37, 15.41, - 15.44, 15.48, 15.52, 15.56, 15.59, 15.63, 15.67, 15.70, 15.74, 15.78, 15.81, 15.85, 15.89, 15.93, 15.96, 16.00, + 0, 0, 0, 0, 5, 10, 14, 19, 24, 29, 33, 38, 43, 48, 52, 57, + 62, 67, 71, 76, 81, 86, 90, 95, 100, 106, 112, 119, 125, 131, 138, 144, + 150, 156, 162, 169, 175, 181, 188, 194, 200, 206, 212, 219, 225, 231, 238, 244, + 250, 256, 262, 269, 275, 281, 288, 294, 300, 306, 312, 318, 324, 329, 335, 341, + 347, 353, 359, 365, 371, 376, 382, 388, 394, 400, 407, 413, 420, 427, 433, 440, + 447, 453, 460, 467, 473, 480, 487, 493, 500, 507, 514, 521, 529, 536, 543, 550, + 557, 564, 571, 579, 586, 593, 600, 607, 614, 621, 629, 636, 643, 650, 657, 664, + 671, 679, 686, 693, 700, 706, 712, 719, 725, 731, 738, 744, 750, 756, 762, 769, + 775, 781, 788, 794, 800, 807, 814, 821, 829, 836, 843, 850, 857, 864, 871, 879, + 886, 893, 900, 907, 914, 921, 929, 936, 943, 950, 957, 964, 971, 979, 986, 993, + 1000, 1008, 1015, 1023, 1031, 1038, 1046, 1054, 1062, 1069, 1077, 1085, 1092, 1100, 1108, 1115, + 1123, 1131, 1138, 1146, 1154, 1162, 1169, 1177, 1185, 1192, 1200, 1207, 1214, 1221, 1229, 1236, + 1243, 1250, 1257, 1264, 1271, 1279, 1286, 1293, 1300, 1307, 1314, 1321, 1329, 1336, 1343, 1350, + 1357, 1364, 1371, 1379, 1386, 1393, 1400, 1407, 1414, 1421, 1429, 1436, 1443, 1450, 1457, 1464, + 1471, 1479, 1486, 1493, 1500, 1504, 1507, 1511, 1515, 1519, 1522, 1526, 1530, 1533, 1537, 1541, + 1544, 1548, 1552, 1556, 1559, 1563, 1567, 1570, 1574, 1578, 1581, 1585, 1589, 1593, 1596, 1600, }; +const int dendego_brake_table[11] = { 0x00, 0x05, 0x1d, 0x35, 0x4d, 0x65, 0x7d, 0x95, 0xad, 0xc5, 0xd4 }; + // Mascon must always be in a defined state, Densha de Go 2 in particular returns black screen if the Mascon input is undefined -const ioport_value dendego_mascon_table[] = { 0x76, 0x67, 0x75, 0x57, 0x73, 0x37 }; +const ioport_value dendego_mascon_table[6] = { 0x76, 0x67, 0x75, 0x57, 0x73, 0x37 }; diff --git a/src/mame/layout/dendego.lay b/src/mame/layout/dendego.lay new file mode 100644 index 00000000000..33110da9c78 --- /dev/null +++ b/src/mame/layout/dendego.lay @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/mame/mame.mak b/src/mame/mame.mak index 0f018b7e2db..0bca36630f5 100644 --- a/src/mame/mame.mak +++ b/src/mame/mame.mak @@ -2163,6 +2163,8 @@ $(DRIVERS)/sfbonus.o: $(LAYOUT)/pirpok2.lh $(DRIVERS)/taito_z.o: $(LAYOUT)/contcirc.lh \ $(LAYOUT)/dblaxle.lh +$(DRIVERS)/taitojc.o: $(LAYOUT)/dendego.lh + $(DRIVERS)/tatsumi.o: $(LAYOUT)/roundup5.lh $(DRIVERS)/tceptor.o: $(LAYOUT)/tceptor2.lh diff --git a/src/mame/video/taitojc.c b/src/mame/video/taitojc.c index 856772360e4..e288874109e 100644 --- a/src/mame/video/taitojc.c +++ b/src/mame/video/taitojc.c @@ -378,6 +378,28 @@ SCREEN_UPDATE_IND16( taitojc ) return 0; } +SCREEN_UPDATE_IND16( dendego ) +{ + taitojc_state *state = screen.machine().driver_data(); + + // update controller state in artwork + UINT8 btn = (state->ioport("BUTTONS")->read() & 0x77); + int level; + for (level = 5; level > 0; level--) + if (btn == dendego_mascon_table[level]) break; + + if (level != output_get_value("counter0")) + output_set_value("counter0", level); + + btn = (state->ioport("ANALOG1")->read() & 0xff); + for (level = 10; level > 0; level--) + if (btn >= dendego_brake_table[level]) break; + + if (level != output_get_value("counter1")) + output_set_value("counter1", level); + + return SCREEN_UPDATE16_CALL(taitojc); +}