diff options
author | Ivan Vangelista <mesgnet@yahoo.it> | 2015-06-30 19:27:30 +0200 |
---|---|---|
committer | Ivan Vangelista <mesgnet@yahoo.it> | 2015-06-30 19:27:30 +0200 |
commit | 14f7f02159d9ca62b4d87faaf3e132c96c59e193 (patch) | |
tree | c2f3a02ecc13af8551971ad9b8b27bd961fa73d5 /src/mame/drivers/pcktgal.c | |
parent | 0b7f2bedcbd71118d8377d8b46affa58ee729e60 (diff) |
pcktgal.c: added save state support, configured banking (nw)
Diffstat (limited to 'src/mame/drivers/pcktgal.c')
-rw-r--r-- | src/mame/drivers/pcktgal.c | 52 |
1 files changed, 27 insertions, 25 deletions
diff --git a/src/mame/drivers/pcktgal.c b/src/mame/drivers/pcktgal.c index 4cc2fea62f5..2e0a7bf2cc9 100644 --- a/src/mame/drivers/pcktgal.c +++ b/src/mame/drivers/pcktgal.c @@ -18,36 +18,33 @@ #include "cpu/m6502/m6502.h" #include "sound/2203intf.h" #include "sound/3812intf.h" -#include "sound/msm5205.h" #include "includes/pcktgal.h" #include "machine/deco222.h" /***************************************************************************/ -WRITE8_MEMBER(pcktgal_state::pcktgal_bank_w) +WRITE8_MEMBER(pcktgal_state::bank_w) { - UINT8 *RAM = memregion("maincpu")->base(); + if (data & 1) { membank("bank1")->set_entry(0); } + else { membank("bank1")->set_entry(1); } - if (data & 1) { membank("bank1")->set_base(&RAM[0x4000]); } - else { membank("bank1")->set_base(&RAM[0x10000]); } - - if (data & 2) { membank("bank2")->set_base(&RAM[0x6000]); } - else { membank("bank2")->set_base(&RAM[0x12000]); } + if (data & 2) { membank("bank2")->set_entry(0); } + else { membank("bank2")->set_entry(1); } } -WRITE8_MEMBER(pcktgal_state::pcktgal_sound_bank_w) +WRITE8_MEMBER(pcktgal_state::sound_bank_w) { membank("bank3")->set_entry((data >> 2) & 1); } -WRITE8_MEMBER(pcktgal_state::pcktgal_sound_w) +WRITE8_MEMBER(pcktgal_state::sound_w) { soundlatch_byte_w(space, 0, data); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } -WRITE_LINE_MEMBER(pcktgal_state::pcktgal_adpcm_int) +WRITE_LINE_MEMBER(pcktgal_state::adpcm_int) { m_msm->data_w(m_msm5205next >> 4); m_msm5205next <<= 4; @@ -57,12 +54,12 @@ WRITE_LINE_MEMBER(pcktgal_state::pcktgal_adpcm_int) m_audiocpu->set_input_line(M6502_IRQ_LINE, HOLD_LINE); } -WRITE8_MEMBER(pcktgal_state::pcktgal_adpcm_data_w) +WRITE8_MEMBER(pcktgal_state::adpcm_data_w) { m_msm5205next = data; } -READ8_MEMBER(pcktgal_state::pcktgal_adpcm_reset_r) +READ8_MEMBER(pcktgal_state::adpcm_reset_r) { m_msm->reset_w(0); return 0; @@ -78,8 +75,8 @@ static ADDRESS_MAP_START( pcktgal_map, AS_PROGRAM, 8, pcktgal_state ) AM_RANGE(0x1800, 0x1807) AM_DEVWRITE("tilegen1", deco_bac06_device, pf_control0_8bit_w) AM_RANGE(0x1810, 0x181f) AM_DEVREADWRITE("tilegen1", deco_bac06_device, pf_control1_8bit_r, pf_control1_8bit_w) - AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("P2") AM_WRITE(pcktgal_sound_w) - AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW") AM_WRITE(pcktgal_bank_w) + AM_RANGE(0x1a00, 0x1a00) AM_READ_PORT("P2") AM_WRITE(sound_w) + AM_RANGE(0x1c00, 0x1c00) AM_READ_PORT("DSW") AM_WRITE(bank_w) AM_RANGE(0x4000, 0x5fff) AM_ROMBANK("bank1") AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank2") AM_RANGE(0x8000, 0xffff) AM_ROM @@ -92,10 +89,10 @@ static ADDRESS_MAP_START( pcktgal_sound_map, AS_PROGRAM, 8, pcktgal_state ) AM_RANGE(0x0000, 0x07ff) AM_RAM AM_RANGE(0x0800, 0x0801) AM_DEVWRITE("ym1", ym2203_device, write) AM_RANGE(0x1000, 0x1001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x1800, 0x1800) AM_WRITE(pcktgal_adpcm_data_w) /* ADPCM data for the MSM5205 chip */ - AM_RANGE(0x2000, 0x2000) AM_WRITE(pcktgal_sound_bank_w) + AM_RANGE(0x1800, 0x1800) AM_WRITE(adpcm_data_w) /* ADPCM data for the MSM5205 chip */ + AM_RANGE(0x2000, 0x2000) AM_WRITE(sound_bank_w) AM_RANGE(0x3000, 0x3000) AM_READ(soundlatch_byte_r) - AM_RANGE(0x3400, 0x3400) AM_READ(pcktgal_adpcm_reset_r) /* ? not sure */ + AM_RANGE(0x3400, 0x3400) AM_READ(adpcm_reset_r) /* ? not sure */ AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank3") AM_RANGE(0x8000, 0xffff) AM_ROM ADDRESS_MAP_END @@ -212,7 +209,12 @@ GFXDECODE_END void pcktgal_state::machine_start() { + membank("bank1")->configure_entries(0, 2, memregion("maincpu")->base() + 0x4000, 0xc000); + membank("bank2")->configure_entries(0, 2, memregion("maincpu")->base() + 0x6000, 0xc000); membank("bank3")->configure_entries(0, 2, memregion("audiocpu")->base() + 0x10000, 0x4000); + + save_item(NAME(m_msm5205next)); + save_item(NAME(m_toggle)); } static MACHINE_CONFIG_START( pcktgal, pcktgal_state ) @@ -255,7 +257,7 @@ static MACHINE_CONFIG_START( pcktgal, pcktgal_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MCFG_SOUND_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(pcktgal_state, pcktgal_adpcm_int)) /* interrupt function */ + MCFG_MSM5205_VCLK_CB(WRITELINE(pcktgal_state, adpcm_int)) /* interrupt function */ MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8KHz */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.70) MACHINE_CONFIG_END @@ -440,9 +442,9 @@ DRIVER_INIT_MEMBER(pcktgal_state,pcktgal) /***************************************************************************/ -GAME( 1987, pcktgal, 0, pcktgal, pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Pocket Gal (Japan)", 0 ) -GAME( 1987, pcktgalb, pcktgal, bootleg, pcktgal, driver_device, 0, ROT0, "bootleg", "Pocket Gal (bootleg)", 0 ) -GAME( 1989, pcktgal2, pcktgal, pcktgal2,pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Pocket Gal 2 (English)", 0 ) -GAME( 1989, pcktgal2j,pcktgal, pcktgal2,pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Pocket Gal 2 (Japanese)", 0 ) -GAME( 1989, spool3, pcktgal, pcktgal2,pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Super Pool III (English)", 0 ) -GAME( 1990, spool3i, pcktgal, pcktgal2,pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation (I-Vics license)", "Super Pool III (I-Vics)", 0 ) +GAME( 1987, pcktgal, 0, pcktgal, pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Pocket Gal (Japan)", GAME_SUPPORTS_SAVE ) +GAME( 1987, pcktgalb, pcktgal, bootleg, pcktgal, driver_device, 0, ROT0, "bootleg", "Pocket Gal (bootleg)", GAME_SUPPORTS_SAVE ) +GAME( 1989, pcktgal2, pcktgal, pcktgal2,pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Pocket Gal 2 (English)", GAME_SUPPORTS_SAVE ) +GAME( 1989, pcktgal2j,pcktgal, pcktgal2,pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Pocket Gal 2 (Japanese)", GAME_SUPPORTS_SAVE ) +GAME( 1989, spool3, pcktgal, pcktgal2,pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation", "Super Pool III (English)", GAME_SUPPORTS_SAVE ) +GAME( 1990, spool3i, pcktgal, pcktgal2,pcktgal, pcktgal_state, pcktgal, ROT0, "Data East Corporation (I-Vics license)", "Super Pool III (I-Vics)", GAME_SUPPORTS_SAVE ) |