diff options
Diffstat (limited to 'src/mame/drivers/homerun.cpp')
-rw-r--r-- | src/mame/drivers/homerun.cpp | 559 |
1 files changed, 0 insertions, 559 deletions
diff --git a/src/mame/drivers/homerun.cpp b/src/mame/drivers/homerun.cpp deleted file mode 100644 index 324e2056aeb..00000000000 --- a/src/mame/drivers/homerun.cpp +++ /dev/null @@ -1,559 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Tomasz Slanina -/* - Moero!! Pro Yakyuu Homerun Kyousou - (c) 1988 Jaleco - Dynamic Shoot Kyousou - (c) 1988 Jaleco - Ganbare Jajamaru Saisho wa Goo / Ganbare Jajamaru Hop Step & Jump - (c) 1990 Jaleco - Driver by Tomasz Slanina - - They're gambling games (seems to be aimed at kids), with a little skill involved. - All games have a medal hopper to reward the player. - - *weird* hardware - based on NES version - (gfx bank changed in the middle of screen, - sprites in NES format etc) - - homerun, dynashot and ganjaja use an extra soundchip for playing voice/samples - -Todo : - - Dump homerun and dynashot sample rom - - Improve controls/DIP switches - - Fix sprite glitches in ganjaja Hop Step & Jump - - Fix sample playing in ganjaja Saisho wa Goo. The words 'rock', 'paper', scissors' are not played? - - Fix small gfx glitch on right side of screen in homerun. On the real PCB there is nothing on the right side. - - Fix coinage; Extra credits are added on the first coin-up so with 5C 1C, only 4 coins are required for a credit. - After that first credit, coinage works as expected and additional crediting requires the correct number of coins. - When X-Coins Y-Credits is active (where X=* and Y>1), coinage works as expected. - When starting the game with 1C 1C active, all games start with 1 credit. - - ------------------------------------------------------------------------------------- - -Hardware info by Guru - -All these games run on the same PCB. -All games use a NEC uPD7756 for speech. - - -PCB Layout ----------- - -JALECO HR-8847 MADE IN JAPAN -|---------------------------------| -|C1230 4558 YM3014 Z80B 6264 | -|VOL 358 YM2203 DSW(8) 1.43 | -| D7756C 6264 | -| 640kHz | -|J 3.60 | -|A 2018 | -|M 8255| -|M 2018 | -|A 2018 | -| 2018 | -| 555| -| 1.120 20MHz| -|---------------------------------| -Notes: - Z80 - Clock 5.000MHz [20/4] - 2018 - 2k x8-bit SRAM - 6264 - 8k x8-bit SRAM - YM2203 - Clock 2.500MHz [20/8] - YM3014 - Yamaha YM3014 DAC - D7756 - NEC uPD7756 ADPCM Speech Processor with internal 256k-bit ROM (32k x8-bit). Clock input 640kHz - 358 - NEC C358 Dual Op AMP - 4558 - NEC C4558 Dual Op AMP - C1230 - NEC uPC1230H 23W Power AMP - 1,2,3 - EPROMs - VSync - 59.something. Measured value moves between 59Hz and 60Hz - HSync - 15.21kHz - -Edge Connector is JAMMA but with some pins re-used for other functions. -Controls are up, down, left, right, button 1 and start. -Coin 1 is JAMMA pin 16 -Coin 2 is JAMMA pin 24. Note this is equivalent to JAMMA button 3 -For Coin 1 (JAMMA pin 16)... -1C 1C - DSW 1 OFF & DSW 2 OFF -2C 1C - DSW 1 ON & DSW 2 OFF -3C 1C - DSW 1 OFF & DSW 2 ON -5C 1C - DSW 1 ON & DSW 2 ON -For Coin 2 (JAMMA pin 24) -1C 1C - DSW 1 OFF & DSW 2 OFF -2C 1C - DSW 1 ON & DSW 2 OFF -1C 3C - DSW 1 OFF & DSW 2 ON -1C 5C - DSW 1 ON & DSW 2 ON -Above coinage for Coin 1 and Coin 2 is confirmed correct on the real PCB. - -JAMMA pin 8 is Hopper Solenoid (5VDC) -JAMMA pin 25 is Hopper Switch (SPST On/Off; when active pin 25 is tied to ground) -Hopper operates on 100VAC through a solid-state relay connected to the Hopper Solenoid signal - -The cabinet has a digital number display somewhere because the manual mentions a 2nd chance -given if the digital counter reads 777. It may be on-screen or 3x 7-segment LEDs on -the control panel somewhere or maybe there's a DIP setting to turn it on. - -At the title screen the sample played is 'bat hitting ball'. -When the game play starts a voice says 'play ball' but this is not played in the emulation. -When the ball is hit the sample played is 'bat hitting ball', then 'crowd cheers'. -After several strikes in a row the sample played is 'aho' -If a foul ball goes behind and is caught by the crowd the sample that plays is 'yah'. - -Homerun reference video: https://www.youtube.com/watch?v=80jtlNKZtEE&t=519 -This appears to be a different version with Japanese text for 'credit' and 'game over' and -the team selection screen shows the number of credits in the game. -This version shows the 2nd-chance number countdown on screen that is mentioned in the manual. -777 2nd chance video reference: https://www.youtube.com/watch?v=FBCD2tXG4Jo&t=392 -This version of Homerun is not dumped. - - ------------------------------------------------------------------------------------- -*/ - -#include "emu.h" -#include "includes/homerun.h" - -#include "cpu/z80/z80.h" -#include "machine/i8255.h" -#include "sound/samples.h" -#include "sound/ym2203.h" -#include "speaker.h" - - -/*************************************************************************** - - I/O / Memory - -***************************************************************************/ - -void homerun_state::control_w(u8 data) -{ - // d0, d1: somehow related to port $40? - - // d4: d7756 start pin - // d5: d7756 reset pin(?) - if (m_d7756 != nullptr) - { - m_d7756->reset_w(!BIT(data, 5)); - m_d7756->start_w(!BIT(data, 4)); - } - if (m_samples != nullptr) - { - // play MAME sample if a dump of the internal rom does not exist - if (data & 0x20 & ~m_control) - m_samples->stop(0); - - if (~data & 0x10 & m_control && !m_samples->playing(0)) - { - samples_iterator iter(*m_samples); - if (m_sample < iter.count()) - m_samples->start(0, m_sample); - } - } - - // other bits: ? - m_control = data; -} - -void homerun_state::d7756_sample_w(u8 data) -{ - m_sample = data; - - if (m_d7756 != nullptr) - m_d7756->port_w(data); -} - -void homerun_state::mem_map(address_map &map) -{ - map(0x0000, 0x3fff).rom(); - map(0x4000, 0x7fff).bankr("mainbank"); - map(0x8000, 0x9fff).ram().w(FUNC(homerun_state::videoram_w)).share("videoram"); - map(0xa000, 0xa0ff).ram().share("spriteram"); - map(0xb000, 0xb03f).ram().w(m_palette, FUNC(palette_device::write8)).share("palette"); - map(0xc000, 0xdfff).ram(); -} - -void homerun_state::io_map(address_map &map) -{ - map.global_mask(0xff); - map(0x10, 0x10).w(FUNC(homerun_state::d7756_sample_w)); - map(0x20, 0x20).w(FUNC(homerun_state::control_w)); - map(0x30, 0x33).rw("ppi8255", FUNC(i8255_device::read), FUNC(i8255_device::write)); - map(0x40, 0x40).portr("IN0"); - map(0x50, 0x50).portr("IN2"); - map(0x60, 0x60).portr("IN1"); - map(0x70, 0x71).rw("ymsnd", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); -} - - -READ_LINE_MEMBER(homerun_state::homerun_d7756_busy_r) -{ - return m_samples->playing(0) ? 0 : 1; -} - -READ_LINE_MEMBER(homerun_state::ganjaja_d7756_busy_r) -{ - return m_d7756->busy_r(); -} - -CUSTOM_INPUT_MEMBER(homerun_state::ganjaja_hopper_status_r) -{ - // gives hopper error if not 0 - return 0; -} - - -/*************************************************************************** - - Inputs - -***************************************************************************/ - -static INPUT_PORTS_START( homerun ) - PORT_START("IN0") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(homerun_state, sprite0_r) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(homerun_state, homerun_d7756_busy_r) - PORT_BIT( 0x37, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - - PORT_START("IN2") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0xdf, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - - PORT_START("DSW") - PORT_DIPNAME( 0x03, 0x02, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DIPSW:1,2") - PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( Free_Play ) ) // game boots with 2 permanent credits which is correct - PORT_DIPUNUSED_DIPLOC( 0x04, 0x04, "DIPSW:3" ) // manual shows blank so assumed to be unused - PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DIPSW:4") - PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DIPSW:5") - PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DIPSW:6") - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DIPSW:7") - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x80, 0x80, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DIPSW:8") - PORT_DIPSETTING( 0x80, DEF_STR( 1C_1C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_2C ) ) - -// The manuals shows the following DIPs but they don't appear to do anything -// so this could be for a different version which is not dumped. -//..PORT_DIPNAME( 0x70, 0x70, "Difficulty" ) PORT_DIPLOCATION("DIPSW:5,6,7") -//..PORT_DIPSETTING( 0x70, "1" ) -//..PORT_DIPSETTING( 0x10, "2" ) -//..PORT_DIPSETTING( 0x20, "3" ) // manual only shows difficulty 1-5 but using 3 DIP switches -//..PORT_DIPSETTING( 0x30, "4" ) -//..PORT_DIPSETTING( 0x40, "5" ) -//..PORT_DIPSETTING( 0x50, "?" ) -//..PORT_DIPSETTING( 0x60, "?" ) -//..PORT_DIPSETTING( 0x00, "?" ) -//..PORT_DIPNAME( 0x88, 0x88, "Payout" ) PORT_DIPLOCATION("DIPSW:8,4") -//..PORT_DIPSETTING( 0x88, "1 Medal" ) // after number is a Japanese symbol 枚 which is used for counting flat thin objects -//..PORT_DIPSETTING( 0x08, "2 Medals" ) // so it must be referring to 'medals' since the wiring diagram shows a 'medal hopper' -//..PORT_DIPSETTING( 0x80, "3 Medals" ) -//..PORT_DIPSETTING( 0x00, "Unused" ) - -INPUT_PORTS_END - -static INPUT_PORTS_START( dynashot ) - PORT_START("IN0") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(homerun_state, sprite0_r) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNUSED ) // ... actually does have a D7756 on the PCB - PORT_BIT( 0x37, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_START1 ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) - - PORT_START("IN2") - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0xdf, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - - PORT_START("DSW") - PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DIPSW:1,2") - PORT_DIPSETTING( 0x00, DEF_STR( 5C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) // game boots with 1 credit inserted - wrong - PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DIPSW:3" ) - PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DIPSW:4" ) - PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DIPSW:5" ) - PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DIPSW:6" ) - PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DIPSW:7,8") - PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) // game boots with 1 credit inserted - wrong - PORT_DIPSETTING( 0x40, DEF_STR( 1C_3C ) ) - PORT_DIPSETTING( 0x00, DEF_STR( 1C_5C ) ) -INPUT_PORTS_END - -static INPUT_PORTS_START( ganjaja ) - PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // ? - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(homerun_state, sprite0_r) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(homerun_state, ganjaja_d7756_busy_r) - PORT_BIT( 0x36, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - - PORT_START("IN1") - PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_NAME("P1 Up / Rock") - PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_NAME("P1 Down / Paper") - PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_NAME("P1 Right / Scissors") - PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) // unused? - PORT_BIT( 0x30, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_CUSTOM_MEMBER(homerun_state, ganjaja_hopper_status_r) - PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - - PORT_START("IN2") - PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // bit masked with IN0 IPT_COIN1, maybe coin lockout? - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0xcf, IP_ACTIVE_HIGH, IPT_UNKNOWN ) - - PORT_START("DSW") - // Starts game with coin in if 1C_1C - // With 2C_1C only 1 coin is needed to start the game because 1 extra credit is incorrectly given - PORT_DIPNAME( 0x01, 0x00, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DIPSW:1") - PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) ) // game boots with 1 credit inserted - wrong - PORT_DIPNAME( 0x02, 0x02, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DIPSW:2") - PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) - PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C ) ) - PORT_DIPUNKNOWN_DIPLOC( 0x04, 0x04, "DIPSW:3" ) - PORT_DIPUNKNOWN_DIPLOC( 0x08, 0x08, "DIPSW:4" ) - PORT_DIPUNKNOWN_DIPLOC( 0x10, 0x10, "DIPSW:5" ) - PORT_DIPUNKNOWN_DIPLOC( 0x20, 0x20, "DIPSW:6" ) // chance to win? - PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "DIPSW:7" ) // " - PORT_DIPNAME( 0x80, 0x80, "Game" ) PORT_DIPLOCATION("DIPSW:8") - PORT_DIPSETTING( 0x80, "Saisho wa Goo" ) - PORT_DIPSETTING( 0x00, "Hop Step & Jump" ) -INPUT_PORTS_END - - -/*************************************************************************** - - Machine Config - -***************************************************************************/ - -// homerun samples, taken from the Famicom version of Moero!! Pro Yakyuu -// note that this is the complete rom contents; not all samples are used in this game -static const char *const homerun_sample_names[] = -{ - "*homerun", - "00", // strike (not used) - "01", // ball (not used) - "02", // time (ask for time out) (not used) - "03", // out (not used) - "04", // safe (not used) - "05", // foul (not used) - "06", // yah (person in crowd catching a foul ball going behind)(used) - "07", // batter out (batter out after 3 strikes) (not used) - "08", // play ball (based on video reference this should be played but isn't) - "09", // ball four (not used) - "10", // home run (used) - "11", // new pitcher (choosing new pitcher in time out) (not used) - "12", // ouch (batter gets hit by pitcher) (not used) - "13", // aho (be called a fool by supervisor)(used) - "14", // bat hits ball(used) - "15", // crowd cheers(used) - nullptr -}; - -/**************************************************************************/ - -static const gfx_layout gfxlayout = -{ - 8,8, - RGN_FRAC(1,1), - 2, - { 8*8,0}, - { STEP8(0,1) }, - { STEP8(0,8) }, - 8*8*2 -}; - -static const gfx_layout spritelayout = -{ - 16,16, - RGN_FRAC(1,1), - 2, - { 8*8,0 }, - { STEP8(0,1), STEP8(8*8*2,1) }, - { STEP8(0,8), STEP8(8*8*2*2,8) }, - 8*8*2*4 -}; - -static GFXDECODE_START( gfx_homerun ) - GFXDECODE_ENTRY( "gfx1", 0, gfxlayout, 0, 16 ) - GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 16 ) -GFXDECODE_END - - -/**************************************************************************/ - -void homerun_state::machine_start() -{ - u8 *ROM = memregion("maincpu")->base(); - - m_mainbank->configure_entries(0, 8, &ROM[0x00000], 0x4000); - - save_item(NAME(m_control)); - save_item(NAME(m_sample)); -} - -void homerun_state::machine_reset() -{ - control_w(0); - d7756_sample_w(0); - banking_w(0); - m_scrolly = 0; - m_scrollx = 0; -} - -/**************************************************************************/ - -void homerun_state::dynashot(machine_config &config) -{ - /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(20'000'000)/4); - m_maincpu->set_addrmap(AS_PROGRAM, &homerun_state::mem_map); - m_maincpu->set_addrmap(AS_IO, &homerun_state::io_map); - m_maincpu->set_vblank_int("screen", FUNC(homerun_state::irq0_line_hold)); - - i8255_device &ppi(I8255A(config, "ppi8255")); - ppi.out_pa_callback().set(FUNC(homerun_state::scrollhi_w)); - ppi.out_pb_callback().set(FUNC(homerun_state::scrolly_w)); - ppi.out_pc_callback().set(FUNC(homerun_state::scrollx_w)); - - /* video hardware */ - SCREEN(config, m_screen, SCREEN_TYPE_RASTER); - m_screen->set_raw(XTAL(20'000'000)/4,328,0,256,253,0,240); - m_screen->set_screen_update(FUNC(homerun_state::screen_update)); - m_screen->set_palette(m_palette); - - GFXDECODE(config, m_gfxdecode, m_palette, gfx_homerun); - PALETTE(config, m_palette).set_format(1, &homerun_state::homerun_RGB332, 16*4); - - /* sound hardware */ - SPEAKER(config, "mono").front_center(); - - ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(20'000'000)/8)); - ymsnd.port_a_read_callback().set_ioport("DSW"); - ymsnd.port_b_write_callback().set(FUNC(homerun_state::banking_w)); - ymsnd.add_route(ALL_OUTPUTS, "mono", 0.50); -} - -void homerun_state::homerun(machine_config &config) -{ - dynashot(config); - - /* sound hardware */ - UPD7756(config, m_d7756); - m_d7756->add_route(ALL_OUTPUTS, "mono", 0.75); - - SAMPLES(config, m_samples); - m_samples->set_channels(1); - m_samples->set_samples_names(homerun_sample_names); - m_samples->add_route(ALL_OUTPUTS, "mono", 0.50); -} - -void homerun_state::ganjaja(machine_config &config) -{ - dynashot(config); - - /* basic machine hardware */ - m_maincpu->set_periodic_int(FUNC(homerun_state::irq0_line_hold), attotime::from_hz(4*60)); // ? - - /* sound hardware */ - UPD7756(config, m_d7756); - m_d7756->add_route(ALL_OUTPUTS, "mono", 0.75); -} - - - -/**************************************************************************/ - -ROM_START( homerun ) - ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "homerun.ic43", 0x00000, 0x20000, CRC(e759e476) SHA1(ad4f356ff26209033320a3e6353e4d4d9beb59c1) ) - - ROM_REGION( 0x10000, "gfx1", 0 ) - ROM_LOAD( "homerun.ic60", 0x00000, 0x10000, CRC(69a720d1) SHA1(0f0a4877578f358e9e829ece8c31e23f01adcf83) ) - - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "homerun.ic120", 0x00000, 0x20000, CRC(52f0709b) SHA1(19e675bcccadb774f60ec5929fc1fb5cf0d3f617) ) - - ROM_REGION( 0x08000, "d7756", ROMREGION_ERASE00 ) - ROM_LOAD( "d7756c_146.ic98", 0x00000, 0x08000, NO_DUMP ) // D7756C built-in rom - same maskrom serial as Moero!! Pro Yakyuu (Black/Red) on Famicom -ROM_END - -ROM_START( nhomerun ) - ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "1.ic43", 0x00000, 0x20000, CRC(aed96d6d) SHA1(5cb3932f4cfa3f6c0134ac20a1747c562db31a65) ) - - ROM_REGION( 0x10000, "gfx1", 0 ) - ROM_LOAD( "3.ic60", 0x00000, 0x10000, CRC(69a720d1) SHA1(0f0a4877578f358e9e829ece8c31e23f01adcf83) ) - - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "2.ic120", 0x00000, 0x20000, CRC(57e9b757) SHA1(8190d690721005407a5b06d13d64e70301d1e925) ) - - ROM_REGION( 0x08000, "d7756", ROMREGION_ERASE00 ) - ROM_LOAD( "d7756c_146.ic98", 0x00000, 0x08000, NO_DUMP ) -ROM_END - -ROM_START( dynashot ) - ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "1.ic43", 0x00000, 0x20000, CRC(bf3c9586) SHA1(439effbda305f5fa265e5897c81dc1447e5d867d) ) - - ROM_REGION( 0x10000, "gfx1", 0 ) - ROM_LOAD( "3.ic60", 0x00000, 0x10000, CRC(77d6a608) SHA1(a31ff343a5d4d6f20301c030ecc2e252149bcf9d) ) - - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "2.ic120", 0x00000, 0x20000, CRC(bedf7b98) SHA1(cb6c5fcaf8df5f5c7636c3c8f79b9dda78e30c2e) ) - - ROM_REGION( 0x08000, "d7756", ROMREGION_ERASE00 ) - ROM_LOAD( "d7756c_146.ic98", 0x00000, 0x08000, NO_DUMP ) // unused? -ROM_END - - -ROM_START( ganjaja ) - ROM_REGION( 0x20000, "maincpu", 0 ) - ROM_LOAD( "1.ic43", 0x00000, 0x20000, CRC(dad57543) SHA1(dbd8b5cee33756ee5e3c41bf84c0f7141d3466dc) ) - - ROM_REGION( 0x10000, "gfx1", 0 ) - ROM_LOAD( "ic60", 0x00000, 0x10000, CRC(855f6b28) SHA1(386411e88cf9bed54fe2073f0828d579cb1d04ee) ) - - ROM_REGION( 0x20000, "gfx2", 0 ) - ROM_LOAD( "2.ic120", 0x00000, 0x20000, CRC(e65d4d57) SHA1(2ec9e5bdaa94b808573313b6eca657d798004b53) ) - - ROM_REGION( 0x08000, "d7756", 0 ) - ROM_LOAD( "d77p56cr.ic98", 0x00000, 0x08000, CRC(06a234ac) SHA1(b4ceff3f9f78551cf4a085642e162e33b266f067) ) /* D77P56CR OTP rom (One-Time Programmable, note the extra P) */ -ROM_END - - -// YEAR NAME PARENT MACHINE INPUT STATE INIT ROT COMPANY FULLNAME FLAGS -GAME( 1988, nhomerun, 0, homerun, homerun, homerun_state, empty_init, ROT0, "Jaleco", "NEW Moero!! Pro Yakyuu Homerun Kyousou", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // same as below but harder? -GAME( 1988, homerun, nhomerun, homerun, homerun, homerun_state, empty_init, ROT0, "Jaleco", "Moero!! Pro Yakyuu Homerun Kyousou", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1988, dynashot, 0, dynashot, dynashot, homerun_state, empty_init, ROT0, "Jaleco", "Dynamic Shoot Kyousou", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1990, ganjaja, 0, ganjaja, ganjaja, homerun_state, empty_init, ROT0, "Jaleco", "Ganbare Jajamaru Saisho wa Goo / Ganbare Jajamaru Hop Step & Jump", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) |