diff options
Diffstat (limited to 'src/mame/drivers/kickgoal.cpp')
-rw-r--r-- | src/mame/drivers/kickgoal.cpp | 103 |
1 files changed, 34 insertions, 69 deletions
diff --git a/src/mame/drivers/kickgoal.cpp b/src/mame/drivers/kickgoal.cpp index 96c206769aa..5bb83e1b919 100644 --- a/src/mame/drivers/kickgoal.cpp +++ b/src/mame/drivers/kickgoal.cpp @@ -42,7 +42,7 @@ lev 7 : 0x7c : 0000 0000 - x /* **************************************************************** -Hollywood Action +Action Hollywood 01-19 Samples 21-26 Melodies Bank 0 @@ -139,9 +139,7 @@ WRITE16_MEMBER(kickgoal_state::actionhw_snd_w) } - - -static const uint16_t kickgoal_default_eeprom_type1[64] = { +static const u16 kickgoal_default_eeprom_type1[64] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -153,40 +151,9 @@ static const uint16_t kickgoal_default_eeprom_type1[64] = { }; - -READ16_MEMBER(kickgoal_state::kickgoal_eeprom_r) -{ - if (ACCESSING_BITS_0_7) - { - return m_eeprom->do_read(); - } - return 0; -} - - -WRITE16_MEMBER(kickgoal_state::kickgoal_eeprom_w) -{ - if (ACCESSING_BITS_0_7) - { - switch (offset) - { - case 0: - m_eeprom->cs_write((data & 0x0001) ? ASSERT_LINE : CLEAR_LINE); - break; - case 1: - m_eeprom->clk_write((data & 0x0001) ? ASSERT_LINE : CLEAR_LINE); - break; - case 2: - m_eeprom->di_write(data & 0x0001); - break; - } - } -} - - /* Memory Maps *****************************************************************/ -void kickgoal_state::kickgoal_program_map(address_map &map) +void kickgoal_state::program_map(address_map &map) { map(0x000000, 0x0fffff).rom(); @@ -199,12 +166,14 @@ void kickgoal_state::kickgoal_program_map(address_map &map) map(0x880000, 0x89ffff).nopw(); // during startup map(0x900000, 0x90ffff).nopw(); // during startup - map(0x900000, 0x900005).w(FUNC(kickgoal_state::kickgoal_eeprom_w)); - map(0x900006, 0x900007).r(FUNC(kickgoal_state::kickgoal_eeprom_r)); - - map(0xa00000, 0xa03fff).ram().w(FUNC(kickgoal_state::kickgoal_fgram_w)).share("fgram"); /* FG Layer */ - map(0xa04000, 0xa07fff).ram().w(FUNC(kickgoal_state::kickgoal_bgram_w)).share("bgram"); /* Higher BG Layer */ - map(0xa08000, 0xa0bfff).ram().w(FUNC(kickgoal_state::kickgoal_bg2ram_w)).share("bg2ram"); /* Lower BG Layer */ + map(0x900001, 0x900001).lw8("eeprom_cs_w", [this](u8 data){ m_eeprom->cs_write(BIT(data, 0)); }); + map(0x900003, 0x900003).lw8("eeprom_clk_w", [this](u8 data){ m_eeprom->clk_write(BIT(data, 0)); }); + map(0x900005, 0x900005).lw8("eeprom_di_w", [this](u8 data){ m_eeprom->di_write(BIT(data, 0)); }); + map(0x900007, 0x900007).lr8("eeprom_r", [this](){ return m_eeprom->do_read(); }); + + map(0xa00000, 0xa03fff).ram().w(FUNC(kickgoal_state::fgram_w)).share("fgram"); /* FG Layer */ + map(0xa04000, 0xa07fff).ram().w(FUNC(kickgoal_state::bgram_w)).share("bgram"); /* Higher BG Layer */ + map(0xa08000, 0xa0bfff).ram().w(FUNC(kickgoal_state::bg2ram_w)).share("bg2ram"); /* Lower BG Layer */ map(0xa0c000, 0xa0ffff).ram(); // more tilemap? map(0xa10000, 0xa1000f).writeonly().share("scrram"); /* Scroll Registers */ map(0xb00000, 0xb007ff).writeonly().share("spriteram"); /* Sprites */ @@ -257,64 +226,63 @@ INPUT_PORTS_END /* GFX Decodes ***************************************************************/ -static const gfx_layout fg88_charlayout = +static const gfx_layout layout_8x8 = { 8,8, RGN_FRAC(1,4), 4, { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 2*8, 4*8, 6*8, 8*8, 10*8, 12*8, 14*8 }, // note 1*3, 3*8, 5*8 etc. not used, the pixel data is the same, CPS1-like + { STEP8(0,1) }, + { STEP8(0,8*2) }, 16*8 }; -static const gfx_layout fg88_alt_charlayout = + +static const gfx_layout layout_8x8_alt = { 8,8, RGN_FRAC(1,4), 4, { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) }, - { 0, 1, 2, 3, 4, 5, 6, 7 }, - { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 }, + { STEP8(0,1) }, + { STEP8(0,8) }, 8*8 }; -static const gfx_layout bg1616_charlayout = +static const gfx_layout layout_16x16 = { 16,16, RGN_FRAC(1,4), 4, { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) }, - { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, + { STEP16(0,1) }, { STEP16(0,16) }, 16*16 }; -static const gfx_layout bg3232_charlayout = +static const gfx_layout layout_32x32 = { 32,32, RGN_FRAC(1,4), 4, { RGN_FRAC(3,4), RGN_FRAC(2,4), RGN_FRAC(1,4), RGN_FRAC(0,4) }, - { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 - }, + { STEP32(0,1) }, { STEP32(0,32) }, 32*32, }; static GFXDECODE_START( gfx_kickgoal ) - GFXDECODE_ENTRY( "gfx1", 0, fg88_charlayout, 0x000, 0x40 ) - GFXDECODE_ENTRY( "gfx1", 0, bg1616_charlayout, 0x000, 0x40 ) - GFXDECODE_ENTRY( "gfx1", 0, bg3232_charlayout, 0x000, 0x40 ) + GFXDECODE_ENTRY( "gfx1", 0, layout_8x8, 0x000, 0x40 ) // FG GFX for even column like CPS1 + GFXDECODE_ENTRY( "gfx1", 0, layout_16x16, 0x000, 0x40 ) + GFXDECODE_ENTRY( "gfx1", 0, layout_32x32, 0x000, 0x40 ) + GFXDECODE_ENTRY( "gfx1", 1, layout_8x8, 0x000, 0x40 ) // FG GFX for odd column like CPS1 GFXDECODE_END static GFXDECODE_START( gfx_actionhw ) - GFXDECODE_ENTRY( "gfx1", 0, fg88_alt_charlayout, 0x000, 0x40 ) - GFXDECODE_ENTRY( "gfx1", 0, bg1616_charlayout, 0x000, 0x40 ) + GFXDECODE_ENTRY( "gfx1", 0, layout_8x8_alt, 0x000, 0x40 ) + GFXDECODE_ENTRY( "gfx1", 0, layout_16x16, 0x000, 0x40 ) GFXDECODE_END /* MACHINE drivers ***********************************************************/ @@ -417,12 +385,11 @@ WRITE16_MEMBER(kickgoal_state::to_pic_w) } - void kickgoal_state::kickgoal(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(12'000'000)); /* 12 MHz */ - m_maincpu->set_addrmap(AS_PROGRAM, &kickgoal_state::kickgoal_program_map); + m_maincpu->set_addrmap(AS_PROGRAM, &kickgoal_state::program_map); m_maincpu->set_vblank_int("screen", FUNC(kickgoal_state::irq6_line_hold)); PIC16C57(config, m_audiocpu, XTAL(12'000'000)/3); /* 4MHz ? */ @@ -442,7 +409,7 @@ void kickgoal_state::kickgoal(machine_config &config) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(64*8, 32*8); screen.set_visarea(9*8, 55*8-1, 2*8, 30*8-1); - screen.set_screen_update(FUNC(kickgoal_state::screen_update_kickgoal)); + screen.set_screen_update(FUNC(kickgoal_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_kickgoal); @@ -464,7 +431,7 @@ void kickgoal_state::actionhw(machine_config &config) { /* basic machine hardware */ M68000(config, m_maincpu, XTAL(12'000'000)); /* verified on pcb */ - m_maincpu->set_addrmap(AS_PROGRAM, &kickgoal_state::kickgoal_program_map); + m_maincpu->set_addrmap(AS_PROGRAM, &kickgoal_state::program_map); m_maincpu->set_vblank_int("screen", FUNC(kickgoal_state::irq6_line_hold)); PIC16C57(config, m_audiocpu, XTAL(12'000'000)/3); /* verified on pcb */ @@ -479,7 +446,7 @@ void kickgoal_state::actionhw(machine_config &config) screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); screen.set_size(64*8, 32*8); screen.set_visarea(10*8+2, 54*8-1+2, 0*8, 30*8-1); - screen.set_screen_update(FUNC(kickgoal_state::screen_update_kickgoal)); + screen.set_screen_update(FUNC(kickgoal_state::screen_update)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_actionhw); @@ -498,7 +465,6 @@ void kickgoal_state::actionhw(machine_config &config) } - /* Rom Loading ***************************************************************/ ROM_START( kickgoal ) /* PRO-3/B pcb */ @@ -550,7 +516,7 @@ ROM_START( actionhw ) /* PRO-3/B pcb */ ROM_LOAD16_BYTE( "1.ic5", 0x000001, 0x80000, CRC(136b9711) SHA1(553f9fdd99bb9ce2e1492d0755633075e59ba587) ) ROM_REGION( 0x1000, "audiocpu", 0 ) /* sound? (missing) */ - /* Remove the CPU_DISABLED flag in MACHINE_DRIVER when the rom is dumped */ + /* Remove the m_audiocpu->set_disable(); flag in MACHINE_DRIVER when the rom is dumped */ ROM_LOAD( "pic16c57", 0x0000, 0x0800, NO_DUMP ) ROM_REGION( 0x400000, "gfx1", 0 ) @@ -572,7 +538,7 @@ ROM_END void kickgoal_state::init_kickgoal() { #if 0 /* we should find a real fix instead */ - uint16_t *rom = (uint16_t *)memregion("maincpu")->base(); + u16 *rom = (u16 *)memregion("maincpu")->base(); /* fix "bug" that prevents game from writing to EEPROM */ rom[0x12b0/2] = 0x0001; @@ -588,4 +554,3 @@ GAME( 1995, kickgoal, 0, kickgoal, kickgoal, kickgoal_state, init_kickgo GAME( 1995, kickgoala, kickgoal, kickgoal, kickgoal, kickgoal_state, init_kickgoal, ROT0, "TCH", "Kick Goal (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1995, actionhw, 0, actionhw, kickgoal, kickgoal_state, init_actionhw, ROT0, "TCH", "Action Hollywood", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) - |