diff --git a/src/mame/drivers/itech32.cpp b/src/mame/drivers/itech32.cpp index 50fae1f92b9..12d71b9bf22 100644 --- a/src/mame/drivers/itech32.cpp +++ b/src/mame/drivers/itech32.cpp @@ -25,6 +25,7 @@ * Golden Tee Golf 2K (5 sets) * Golden Tee Classic (3 sets) * Must Shoot TV (prototype) (1 set) + * Power Up Baseball (prototype) (1 set) Known issues: * volume controls do not work in the Golden Tee games @@ -1011,8 +1012,7 @@ void itech32_state::itech020_map(address_map &map) map(0x500000, 0x5000ff).rw(FUNC(itech32_state::bloodstm_video_r), FUNC(itech32_state::bloodstm_video_w)); map(0x578000, 0x57ffff).nopr(); /* touched by protection */ map(0x580000, 0x59ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); - map(0x600000, 0x603fff).ram().share("nvram32"); -/* ? */ map(0x61ff00, 0x61ffff).nopw(); /* Unknown Writes */ + map(0x600000, 0x61ffff).ram().share("nvram32"); map(0x680002, 0x680002).r(FUNC(itech32_state::itech020_prot_result_r)); map(0x680000, 0x680003).nopw(); /* ! */ map(0x680800, 0x68083f).readonly().nopw(); /* Serial DUART Channel A/B & Top LED sign - To Do! */ @@ -1040,10 +1040,16 @@ void shoottv_state::shoottv_map(address_map &map) map(0x280000, 0x280003).lr32(NAME([this]() { return m_dips->read() << 16; } )); map(0x300003, 0x300003).w(FUNC(shoottv_state::color_w<0>)); map(0x380003, 0x380003).w(FUNC(shoottv_state::color_w<1>)); - map(0x610000, 0x61ffff).ram().share("nvram_b"); map(0x680000, 0x680003).lr32(NAME([]() { return 0x00002000; } )); // Fake the security PIC response } +void itech32_state::pubball_map(address_map &map) +{ + itech020_map(map); + map(0x300000, 0x300003).w(FUNC(itech32_state::color_w<0>)).umask32(0x00ff00ff); + map(0x380000, 0x380003).w(FUNC(itech32_state::color_w<1>)).umask32(0x00ff00ff); +} + /************************************* * @@ -1708,6 +1714,39 @@ static INPUT_PORTS_START( aama ) PORT_DIPSETTING( 0x00200000, DEF_STR( Cocktail ) ) /* Cocktail mode REQUIRES "Controls" to be set to "Two Trackballs" */ INPUT_PORTS_END +static INPUT_PORTS_START( pubball ) + PORT_INCLUDE( itech32_base_32bit ) + + PORT_MODIFY("P1") + PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 First Base") PORT_PLAYER(1) + PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Second Base") PORT_PLAYER(1) + PORT_BIT( 0x00f00000, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("P2") + PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 First Base") PORT_PLAYER(2) + PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Second Base") PORT_PLAYER(2) + PORT_BIT( 0x00f00000, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("P3") + PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Third Base") PORT_PLAYER(1) + PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Third Base") PORT_PLAYER(2) + PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Home") PORT_PLAYER(1) + PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P2 Home") PORT_PLAYER(2) + PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P1 Power Up") PORT_PLAYER(1) + PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P2 Power Up") PORT_PLAYER(2) + + PORT_START("TRACKX1") + PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_REVERSE PORT_PLAYER(1) + + PORT_START("TRACKY1") + PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_PLAYER(1) + + PORT_START("TRACKX2") + PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_REVERSE PORT_PLAYER(2) + + PORT_START("TRACKY2") + PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_Y ) PORT_SENSITIVITY(25) PORT_KEYDELTA(32) PORT_PLAYER(2) +INPUT_PORTS_END /************************************* * @@ -1825,8 +1864,6 @@ void shoottv_state::shoottv(machine_config &config) { itech32_state::sftm(config); m_maincpu->set_addrmap(AS_PROGRAM, &shoottv_state::shoottv_map); - - NVRAM(config, "nvram_b"); } void itech32_state::sftm(machine_config &config) @@ -1857,6 +1894,11 @@ void itech32_state::tourny(machine_config &config) M48T02(config, m_timekeeper); } +void itech32_state::pubball(machine_config &config) +{ + itech32_state::sftm(config); + m_maincpu->set_addrmap(AS_PROGRAM, &itech32_state::pubball_map); +} /************************************* @@ -4602,9 +4644,18 @@ ROM_START( gtclasscs ) /* Version 1.00S for the 3 tier type PCB with short ROM ROM_LOAD16_BYTE( "gtg3_srom2_nr+.srom2", 0x200000, 0x080000, CRC(1b3f18b6) SHA1(3b65de6a90c5ede183b5f8ca1875736bc1425772) ) /* actually labeled "GTG3 SROM2 NR*" */ ROM_END +/*************************************************************************** + The ROM images for both sets below were found by analyzing the contents + of archived source-code CDs acquired at auction. This is why the ROM + definitions in question are not sized to a power of two, as most ROM + dumps typically are. + However, the provided dump of Power Up Baseball has been proven to + work as-is on a properly-configured itech32 board, and passes all + relevant ROM tests, and so can be considered authoritative. +****************************************************************************/ ROM_START( shoottv ) - ROM_REGION32_BE( CODE_SIZE, "user1", 0 ) + ROM_REGION32_BE( CODE_SIZE, "user1", ROMREGION_ERASEFF ) ROM_LOAD32_BYTE( "gun_0.bin", 0x00000, 0xc5f9, CRC(1086b219) SHA1(a9e9545911e427e819d4c98885cbfe871ce7e83a) ) // from GUN/roms ROM_LOAD32_BYTE( "gun_1.bin", 0x00001, 0xc5f9, CRC(a0f0e5ea) SHA1(39560d76759d17c34c353dbe202ec22af234238d) ) ROM_LOAD32_BYTE( "gun_2.bin", 0x00002, 0xc5f9, CRC(1b84cf05) SHA1(8f4b816ab2808258399072545f5dda0316e554ea) ) @@ -4630,6 +4681,44 @@ ROM_START( shoottv ) ROM_END +ROM_START( pubball ) + ROM_REGION32_BE( CODE_SIZE, "user1", ROMREGION_ERASEFF ) + ROM_LOAD32_BYTE( "bb0.bin", 0x00000, 0x25a91, CRC(f9350590) SHA1(91352373fb6a41495bb04db01d097e76770c5419) ) // from SOURCE + ROM_LOAD32_BYTE( "bb1.bin", 0x00001, 0x25a91, CRC(5711f503) SHA1(94765a5e9311fffbf0bc386c3b531c79acd7cada) ) + ROM_LOAD32_BYTE( "bb2.bin", 0x00002, 0x25a91, CRC(3e202dc6) SHA1(a1a9fdff1957a8e43f002883666f1cd489879258) ) + ROM_LOAD32_BYTE( "bb3.bin", 0x00003, 0x25a91, CRC(e6d1ba8d) SHA1(c07fe0f9093422505079785ef8e019d1ba69e2ff) ) + + ROM_REGION( 0x28000, "soundcpu", 0 ) + ROM_LOAD( "bball.bim", 0x10000, 0x18000, CRC(915a9116) SHA1(54dbb9f8eb358c5dbe2022fad86cdd411c893b83) ) // from SOUNDS + ROM_CONTINUE( 0x08000, 0x08000 ) + + ROM_REGION( 0xE00000, "gfx1", 0 ) + ROM_LOAD32_BYTE( "grom00_0.bin", 0x000000, 0x100000, CRC(46822b0f) SHA1(0b9758a1ccad252973a1fc61dc1a4eb1d0eb1636) ) // from ART + ROM_LOAD32_BYTE( "grom00_1.bin", 0x000001, 0x100000, CRC(c11236ce) SHA1(1459646b4d947aa63b037c7c5ab19d3261cbaa19) ) + ROM_LOAD32_BYTE( "grom00_2.bin", 0x000002, 0x100000, CRC(e6be30f3) SHA1(832aff7b9a42fa57ccff09554c9f65f469e1045d) ) + ROM_LOAD32_BYTE( "grom00_3.bin", 0x000003, 0x100000, CRC(e0d454fb) SHA1(26ca842682ad618619d4311f7ecd1bb326771c2e) ) + ROM_LOAD32_BYTE( "grom01_0.bin", 0x400000, 0x100000, CRC(115a66f2) SHA1(9f514c82943d3a779bd44c93618a396b1f9184b9) ) + ROM_LOAD32_BYTE( "grom01_1.bin", 0x400001, 0x100000, CRC(1dfc8dbd) SHA1(2e3018d61b1c7acec4a2f5da8184da33764e7965) ) + ROM_LOAD32_BYTE( "grom01_2.bin", 0x400002, 0x100000, CRC(23386483) SHA1(9198b9d7e45d0a276947ebfbdda844113aa71928) ) + ROM_LOAD32_BYTE( "grom01_3.bin", 0x400003, 0x100000, CRC(ac0123ce) SHA1(c6fe79ca8c3efdfaf9310dfab3e0142042319b11) ) + ROM_LOAD32_BYTE( "grom02_0.bin", 0x800000, 0x100000, CRC(06cd3cca) SHA1(501b0be9388c5a6b89d453f3287217dd286eecff) ) + ROM_LOAD32_BYTE( "grom02_1.bin", 0x800001, 0x100000, CRC(3df38e91) SHA1(f3adf29598481d050258d266a360d5b40d86f665) ) + ROM_LOAD32_BYTE( "grom02_2.bin", 0x800002, 0x100000, CRC(7c47dde9) SHA1(654656878676278e0ea73e367337eaac5f1f1d50) ) + ROM_LOAD32_BYTE( "grom02_3.bin", 0x800003, 0x100000, CRC(e6eb01bf) SHA1(f0e7f2372dfd072e005fbf7489f54242523b4a28) ) + ROM_LOAD32_BYTE( "grom3_0.bin", 0xC00000, 0x080000, CRC(376beb10) SHA1(2dcea69b5e81d010b4c660df189a560742719ce6) ) + ROM_LOAD32_BYTE( "grom3_1.bin", 0xC00001, 0x080000, CRC(3b3cb8ba) SHA1(eabac9e381dd652a4575f159dac45499406b2702) ) + ROM_LOAD32_BYTE( "grom3_2.bin", 0xC00002, 0x080000, CRC(3bdfac73) SHA1(64777cdf92bbdfbfb6806039421a28f9810b6b03) ) + ROM_LOAD32_BYTE( "grom3_3.bin", 0xC00003, 0x080000, CRC(1de04025) SHA1(25ba2fa49cc2423642020e05586662f67943381b) ) + + ROM_REGION16_BE( 0x400000, "ensoniq.0", ROMREGION_ERASE00 ) + ROM_LOAD16_BYTE( "bbsrom0.bin", 0x000000, 0x0f8b8e, CRC(2a69f77e) SHA1(c98ccdb0d79e77bf87077ac29626d84a811d1326) ) // from SOUNDS + ROM_LOAD16_BYTE( "bbsrom1.bin", 0x200000, 0x0fe442, CRC(4af8c871) SHA1(fe4b0ed0a4ef77147fe150c0cd70dff1929e9aff) ) + + ROM_REGION16_BE( 0x400000, "ensoniq.1", ROMREGION_ERASE00 ) + ROM_LOAD16_BYTE( "bbsrom2.bin", 0x000000, 0x0fe62d, CRC(e4f9ad52) SHA1(c8bf590de35155937bd656b39658880d9a40f5c3) ) + ROM_LOAD16_BYTE( "bbsrom3.bin", 0x200000, 0x0f90b3, CRC(b37e2906) SHA1(f8c2fd54fe8579eb2875c77630efa8d715eae022) ) +ROM_END + /************************************* * @@ -4920,6 +5009,18 @@ Label1 bne.s Label1 ; Infinite loop if result isn't 0x80 } +void itech32_state::init_pubball() +{ + init_program_rom(); + m_vram_height = 1024; + m_planes = 2; + + m_maincpu->space(AS_PROGRAM).install_write_handler(0x300000, 0x300003, write8smo_delegate(*this, FUNC(itech32_state::color_w<0>)), 0x000000ff); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x380000, 0x380003, write8smo_delegate(*this, FUNC(itech32_state::color_w<1>)), 0x000000ff); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x180800, 0x180803, read32smo_delegate(*this, FUNC(itech32_state::trackball32_4bit_p1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x181000, 0x181003, read32smo_delegate(*this, FUNC(itech32_state::trackball32_4bit_p2_r))); +} + /************************************* * @@ -5057,3 +5158,4 @@ GAME( 2001, gtclasscp, gtclassc, sftm, aama, itech32_state, init_gtclasscp, R GAME( 2001, gtclasscs, gtclassc, sftm, s_ver, itech32_state, init_s_ver, ROT0, "Incredible Technologies", "Golden Tee Classic (v1.00S)" , MACHINE_SUPPORTS_SAVE ) /* PIC 16C54 labeled as ITGFCL-M */ GAME( 199?, shoottv, 0, shoottv, shoottv, shoottv_state, empty_init, ROT0, "Incredible Technologies", "Must Shoot TV (prototype)" , MACHINE_SUPPORTS_SAVE ) +GAME( 1996, pubball, 0, pubball, pubball, itech32_state, init_pubball,ROT0, "Midway / Incredible Technologies", "Power Up Baseball (prototype)" , MACHINE_SUPPORTS_SAVE ) \ No newline at end of file diff --git a/src/mame/includes/itech32.h b/src/mame/includes/itech32.h index f2e9d3b5585..ce41a1efd36 100644 --- a/src/mame/includes/itech32.h +++ b/src/mame/includes/itech32.h @@ -58,6 +58,7 @@ public: void sftm(machine_config &config); void bloodstm(machine_config &config); void timekill(machine_config &config); + void pubball(machine_config &config); void init_gtclasscp(); void init_shufshot(); @@ -76,6 +77,7 @@ public: void init_timekill(); void init_gt3d(); void init_gt3dl(); + void init_pubball(); DECLARE_READ_LINE_MEMBER(special_port_r); @@ -205,6 +207,7 @@ protected: void sound_020_map(address_map &map); void sound_map(address_map &map); void timekill_map(address_map &map); + void pubball_map(address_map &map); }; class drivedge_state : public itech32_state @@ -279,7 +282,6 @@ public: m_dips(*this, "DIPS"), m_gun_x(*this, "GUNX%u", 1U), m_gun_y(*this, "GUNY%u", 1U), - m_nvram_b(*this, "nvram_b"), m_gun_timer(nullptr) { } @@ -299,7 +301,6 @@ private: required_ioport m_dips; required_ioport_array<2> m_gun_x; required_ioport_array<2> m_gun_y; - optional_shared_ptr m_nvram_b; emu_timer *m_gun_timer; }; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 5854cb94b08..2b5290ac4ef 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -17123,6 +17123,7 @@ wcbowl161 // (c) 1995 Incredible Technologies wcbowl165 // (c) 1995 Incredible Technologies wcbowldx // (c) 1999 Incredible Technologies shoottv // (c) 199? Incredible Technologies +pubball // (c) 1996 Midway/Incredible Technologies @source:itech8.cpp arlingtn // (c) 1991 Strata/Incredible Technologies