From 0c929ce6d989bff8c7764a436feff758d049e364 Mon Sep 17 00:00:00 2001 From: David Haywood Date: Tue, 20 Jun 2017 01:41:21 +0100 Subject: [PATCH] new WORKING game - Jump Kun (prototype) [ShouTime] --- src/mame/drivers/pitnrun.cpp | 125 +++++++++++++++++++++++++++++++---- src/mame/includes/pitnrun.h | 3 +- src/mame/machine/pitnrun.cpp | 2 +- src/mame/mame.lst | 1 + src/mame/video/pitnrun.cpp | 9 ++- 5 files changed, 122 insertions(+), 18 deletions(-) diff --git a/src/mame/drivers/pitnrun.cpp b/src/mame/drivers/pitnrun.cpp index e1474e0e22b..b9d063f9731 100644 --- a/src/mame/drivers/pitnrun.cpp +++ b/src/mame/drivers/pitnrun.cpp @@ -5,6 +5,7 @@ driver by Tomasz Slanina and Pierpaolo Prazzoli + hardware is very similar to suprridr.cpp, thepit.cpp, timelimt.cpp TODO: @@ -116,14 +117,21 @@ static ADDRESS_MAP_START( pitnrun_map, AS_PROGRAM, 8, pitnrun_state ) AM_RANGE(0xb007, 0xb007) AM_WRITE(vflip_w) AM_RANGE(0xb800, 0xb800) AM_READ_PORT("INPUTS") AM_DEVWRITE("soundlatch", generic_latch_8_device, write) AM_RANGE(0xc800, 0xc801) AM_WRITE(scroll_w) - AM_RANGE(0xc802, 0xc802) AM_WRITENOP/* VP(VF?)MCV - not used ?*/ - AM_RANGE(0xc804, 0xc804) AM_WRITE(mcu_data_w) + AM_RANGE(0xc802, 0xc802) AM_WRITE(scroll_y_w) + //AM_RANGE(0xc804, 0xc804) AM_WRITE(mcu_data_w) AM_RANGE(0xc805, 0xc805) AM_WRITE(h_heed_w) AM_RANGE(0xc806, 0xc806) AM_WRITE(v_heed_w) AM_RANGE(0xc807, 0xc807) AM_WRITE(ha_w) + //AM_RANGE(0xd000, 0xd000) AM_READ(mcu_data_r) + //AM_RANGE(0xd800, 0xd800) AM_READ(mcu_status_r) + AM_RANGE(0xf000, 0xf000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( pitnrun_map_mcu, AS_PROGRAM, 8, pitnrun_state ) + AM_IMPORT_FROM(pitnrun_map) + AM_RANGE(0xc804, 0xc804) AM_WRITE(mcu_data_w) AM_RANGE(0xd000, 0xd000) AM_READ(mcu_data_r) AM_RANGE(0xd800, 0xd800) AM_READ(mcu_status_r) - AM_RANGE(0xf000, 0xf000) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r) ADDRESS_MAP_END static ADDRESS_MAP_START( pitnrun_sound_map, AS_PROGRAM, 8, pitnrun_state ) @@ -187,6 +195,54 @@ static INPUT_PORTS_START( pitnrun ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) // also enables bootup test INPUT_PORTS_END +static INPUT_PORTS_START( jumpkun ) + PORT_START("SYSTEM") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE1 ) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + + PORT_START("INPUTS") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON2 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + + PORT_START("DSW") + PORT_DIPNAME( 0x07, 0x01, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW:1,2,3") + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) + PORT_DIPSETTING( 0x03, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) + PORT_DIPSETTING( 0x05, DEF_STR( 1C_5C ) ) + PORT_DIPSETTING( 0x06, DEF_STR( 1C_6C ) ) + PORT_DIPSETTING( 0x07, DEF_STR( 1C_7C ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:4") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x08, DEF_STR( On ) ) + PORT_DIPNAME( 0x10, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("DSW:5") + PORT_DIPSETTING( 0x00, "2" ) + PORT_DIPSETTING( 0x10, "4" ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW:6") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x20, DEF_STR( On ) ) + PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("DSW:7") + PORT_DIPSETTING( 0x00, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x40, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x80, 0x00, "Invincibility (Cheat)") PORT_DIPLOCATION("DSW:8") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) +INPUT_PORTS_END + static const gfx_layout spritelayout = { @@ -228,13 +284,6 @@ static MACHINE_CONFIG_START( pitnrun ) MCFG_CPU_IO_MAP(pitnrun_sound_io_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", pitnrun_state, irq0_line_hold) - MCFG_CPU_ADD("mcu", M68705P5, XTAL_18_432MHz/6) /* verified on pcb */ - MCFG_M68705_PORTA_R_CB(READ8(pitnrun_state, m68705_portA_r)) - MCFG_M68705_PORTB_R_CB(READ8(pitnrun_state, m68705_portB_r)) - MCFG_M68705_PORTC_R_CB(READ8(pitnrun_state, m68705_portC_r)) - MCFG_M68705_PORTA_W_CB(WRITE8(pitnrun_state, m68705_portA_w)) - MCFG_M68705_PORTB_W_CB(WRITE8(pitnrun_state, m68705_portB_w)) - MCFG_WATCHDOG_ADD("watchdog") MCFG_QUANTUM_TIME(attotime::from_hz(6000)) @@ -267,7 +316,18 @@ static MACHINE_CONFIG_START( pitnrun ) MCFG_AY8910_PORT_B_READ_CB(DEVREAD8("soundlatch", generic_latch_8_device, read)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( pitnrun_mcu, pitnrun ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(pitnrun_map_mcu) + MCFG_CPU_ADD("mcu", M68705P5, XTAL_18_432MHz/6) /* verified on pcb */ + MCFG_M68705_PORTA_R_CB(READ8(pitnrun_state, m68705_portA_r)) + MCFG_M68705_PORTB_R_CB(READ8(pitnrun_state, m68705_portB_r)) + MCFG_M68705_PORTC_R_CB(READ8(pitnrun_state, m68705_portC_r)) + MCFG_M68705_PORTA_W_CB(WRITE8(pitnrun_state, m68705_portA_w)) + MCFG_M68705_PORTB_W_CB(WRITE8(pitnrun_state, m68705_portB_w)) +MACHINE_CONFIG_END ROM_START( pitnrun ) ROM_REGION( 0x10000, "maincpu", 0 ) @@ -295,7 +355,7 @@ ROM_START( pitnrun ) ROM_LOAD( "pr6", 0x0000, 0x1000, CRC(c53cb897) SHA1(81a73e6031b52fa45ec507ff4264b14474ef42a2) ) ROM_LOAD( "pr7", 0x1000, 0x1000, CRC(7cdf9a55) SHA1(404dface7e09186e486945981e39063929599efc) ) - ROM_REGION( 0x2000, "user1", 0 ) + ROM_REGION( 0x2000, "spot", 0 ) ROM_LOAD( "pr8", 0x0000, 0x2000, CRC(8e346d10) SHA1(1362ce4362c2d28c48fbd8a33da0cec5ef8e321f) ) ROM_REGION( 0x0060, "proms", 0 ) @@ -330,7 +390,7 @@ ROM_START( pitnruna ) ROM_LOAD( "pr-6.3m", 0x0000, 0x1000, CRC(c53cb897) SHA1(81a73e6031b52fa45ec507ff4264b14474ef42a2) ) ROM_LOAD( "pr-7.3p", 0x1000, 0x1000, CRC(7cdf9a55) SHA1(404dface7e09186e486945981e39063929599efc) ) - ROM_REGION( 0x2000, "user1", 0 ) + ROM_REGION( 0x2000, "spot", 0 ) ROM_LOAD( "pr-8.4j", 0x0000, 0x2000, CRC(8e346d10) SHA1(1362ce4362c2d28c48fbd8a33da0cec5ef8e321f) ) ROM_REGION( 0x0060, "proms", 0 ) @@ -339,5 +399,42 @@ ROM_START( pitnruna ) ROM_LOAD( "clr.3", 0x0040, 0x0020, CRC(25e70e5e) SHA1(fdb9c69e9568a725dd0e3ac25835270fb4f49280) ) ROM_END -GAME( 1984, pitnrun, 0, pitnrun, pitnrun, pitnrun_state, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, pitnruna, pitnrun, pitnrun, pitnrun, pitnrun_state, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +ROM_START( jumpkun ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "PR1.5D.2764", 0x00000, 0x02000, CRC(b0eabe9f) SHA1(e662f3946efe72b0bbf6c6934201163f765bb7aa) ) + ROM_LOAD( "PR2.5C.2764", 0x02000, 0x02000, CRC(d9240413) SHA1(f4d0491e125f1fe435b200b38fa125889784af0a) ) + ROM_LOAD( "PR3.5B.2764", 0x04000, 0x02000, CRC(105e3fec) SHA1(06ea902e6647fc37a603146324e3d0a067e1f649) ) + ROM_LOAD( "PR4.5A.2764", 0x06000, 0x02000, CRC(3a17ca88) SHA1(00516798d546098831e75547664c8fdaa2bbf050) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "SND1.2732", 0x00000, 0x01000, CRC(1290f316) SHA1(13e393860c1f7d1f97343b9f936c60adb7641efc) ) + ROM_LOAD( "SND2.2732", 0x01000, 0x01000, CRC(ec5e4489) SHA1(fc94fe798a1925e8e3dd15161648e9a960969fc4) ) + + ROM_REGION( 0x0800, "mcu", ROMREGION_ERASE00 ) + // not populated + + ROM_REGION( 0x6000, "gfx1", 0 ) + ROM_LOAD( "OBJ1.1K.2764", 0x00000, 0x02000, CRC(8929abfd) SHA1(978994af5816c20a8cd520263d04d1cc1e4df576) ) + ROM_LOAD( "OBJ2.1M.2764", 0x02000, 0x02000, CRC(c7bf5819) SHA1(15d8e1dd1c0911785237e9063a75a42a2dc1bd50) ) + ROM_LOAD( "OBJ3.1N.2764", 0x04000, 0x02000, CRC(5eeec986) SHA1(e58a0b98b90a1dd3971ed305100337aa2e5ec450) ) + + ROM_REGION( 0x4000, "gfx2", 0 ) + ROM_LOAD( "CHR1.6D.2764", 0x00000, 0x02000, CRC(3c93d4ee) SHA1(003121c49bccbb95efb137e6d92d26eea1957fbd) ) + ROM_LOAD( "CHR2.6F.2764", 0x02000, 0x02000, CRC(154fad33) SHA1(7eddc794bd547053f185bb79a8220907bab13d85) ) + + ROM_REGION( 0x2000, "gfx3", 0 ) + ROM_LOAD( "BSC2.3M.2764", 0x00000, 0x01000, CRC(25445f17) SHA1(b1ada95d8f02623bb4a4562d2d278a882414e57e) ) + ROM_LOAD( "BSC1.3P.2764", 0x01000, 0x01000, CRC(39ca2c37) SHA1(b8c71f443a0faf54df03ac5aca46ddd34c42d3a0) ) + + ROM_REGION( 0x2000, "spot", ROMREGION_ERASE00 ) + // not populated + + ROM_REGION( 0x0060, "proms", 0 ) + ROM_LOAD( "8H.82S123.bin", 0x0000, 0x0020, CRC(e54a6fe6) SHA1(c51da2cbf54b7abff7b0cdf0d6846c375b71edcd) ) + ROM_LOAD( "8L.82S123.bin", 0x0020, 0x0020, CRC(624830d5) SHA1(793b2f770ccef6c03bf3ecbf4debcc0531f62da1) ) + ROM_LOAD( "8J.82S123.bin", 0x0040, 0x0020, CRC(223a6990) SHA1(06e16de037c2c7ad5733390859fa7ec1ab1e2f69) ) +ROM_END + +GAME( 1984, pitnrun, 0, pitnrun_mcu, pitnrun, pitnrun_state, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, pitnruna, pitnrun, pitnrun_mcu, pitnrun, pitnrun_state, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, jumpkun, 0, pitnrun, jumpkun, pitnrun_state, 0, ROT90, "Kaneko", "Jump Kun (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // no copyright message diff --git a/src/mame/includes/pitnrun.h b/src/mame/includes/pitnrun.h index 8136a9a80a6..3eec602aaa5 100644 --- a/src/mame/includes/pitnrun.h +++ b/src/mame/includes/pitnrun.h @@ -14,7 +14,7 @@ public: m_spriteram(*this, "spriteram") { } required_device m_maincpu; - required_device m_mcu; + optional_device m_mcu; required_device m_gfxdecode; required_device m_palette; @@ -55,6 +55,7 @@ public: DECLARE_WRITE8_MEMBER(videoram2_w); DECLARE_WRITE8_MEMBER(char_bank_select); DECLARE_WRITE8_MEMBER(scroll_w); + DECLARE_WRITE8_MEMBER(scroll_y_w); DECLARE_WRITE8_MEMBER(ha_w); DECLARE_WRITE8_MEMBER(h_heed_w); DECLARE_WRITE8_MEMBER(v_heed_w); diff --git a/src/mame/machine/pitnrun.cpp b/src/mame/machine/pitnrun.cpp index 1e8ab1091c1..9b7d691108d 100644 --- a/src/mame/machine/pitnrun.cpp +++ b/src/mame/machine/pitnrun.cpp @@ -30,7 +30,7 @@ void pitnrun_state::machine_reset() { m_zaccept = 1; m_zready = 0; - m_mcu->set_input_line(0, CLEAR_LINE); + if (m_mcu) m_mcu->set_input_line(0, CLEAR_LINE); } TIMER_CALLBACK_MEMBER(pitnrun_state::mcu_real_data_r) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 9ff0184c47f..30680ddf5f2 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -31089,6 +31089,7 @@ pitagjr // Pitagorin Junior @source:pitnrun.cpp pitnrun // PR (c) 1984 Taito Corporation pitnruna // PR (c) 1984 Taito Corporation +jumpkun // prototype @source:pk8000.cpp hobby // diff --git a/src/mame/video/pitnrun.cpp b/src/mame/video/pitnrun.cpp index 86a9b8c770c..866ec300a97 100644 --- a/src/mame/video/pitnrun.cpp +++ b/src/mame/video/pitnrun.cpp @@ -68,6 +68,11 @@ WRITE8_MEMBER(pitnrun_state::scroll_w) m_scroll = (m_scroll & (0xff<<((offset)?0:8))) |( data<<((offset)?8:0)); m_bg->set_scrollx(0, m_scroll); } + +WRITE8_MEMBER(pitnrun_state::scroll_y_w) +{ + m_bg->set_scrolly(0, data); +} WRITE8_MEMBER(pitnrun_state::ha_w) { @@ -93,7 +98,7 @@ WRITE8_MEMBER(pitnrun_state::color_select_w) void pitnrun_state::spotlights() { int x,y,i,b,datapix; - uint8_t *ROM = memregion("user1")->base(); + uint8_t *ROM = memregion("spot")->base(); for(i=0;i<4;i++) for(y=0;y<128;y++) for(x=0;x<16;x++) @@ -184,7 +189,7 @@ void pitnrun_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect pal=spriteram[offs+2]&0x3; sy = 256-spriteram[offs+0]-16; - sx = spriteram[offs+3]; + sx = spriteram[offs+3]+1; // +1 needed to properly align Jump Kun flipy = (spriteram[offs+1]&0x80)>>7; flipx = (spriteram[offs+1]&0x40)>>6;