From 3545f1b09a058d43fee0a37dbe1b27258761145c Mon Sep 17 00:00:00 2001 From: Angelo Salese Date: Mon, 9 Jun 2014 02:15:10 +0000 Subject: [PATCH] Some fixes for hotslots, nw --- src/mame/drivers/magicard.c | 57 ++++++++++++++++++++++++++++++------- 1 file changed, 46 insertions(+), 11 deletions(-) diff --git a/src/mame/drivers/magicard.c b/src/mame/drivers/magicard.c index 4e7e0f5ecff..a661fa51eb2 100644 --- a/src/mame/drivers/magicard.c +++ b/src/mame/drivers/magicard.c @@ -177,6 +177,7 @@ public: magicard_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_magicram(*this, "magicram"), + m_magicramb(*this, "magicramb"), m_pcab_vregs(*this, "pcab_vregs"), m_scc68070_ext_irqc_regs(*this, "scc_xirqc_regs"), m_scc68070_iic_regs(*this, "scc_iic_regs"), @@ -191,6 +192,7 @@ public: m_palette(*this, "palette") { } required_shared_ptr m_magicram; + required_shared_ptr m_magicramb; required_shared_ptr m_pcab_vregs; required_shared_ptr m_scc68070_ext_irqc_regs; required_shared_ptr m_scc68070_iic_regs; @@ -656,10 +658,22 @@ WRITE16_MEMBER(magicard_state::scc68070_mmu_w) * Memory Maps * *************************/ +static ADDRESS_MAP_START( scc68070_mem, AS_PROGRAM, 16, magicard_state ) + AM_RANGE(0x80001000, 0x8000100f) AM_READWRITE(scc68070_ext_irqc_r,scc68070_ext_irqc_w) AM_SHARE("scc_xirqc_regs") //lir + AM_RANGE(0x80002000, 0x8000200f) AM_READWRITE(scc68070_iic_r,scc68070_iic_w) AM_SHARE("scc_iic_regs") //i2c + AM_RANGE(0x80002010, 0x8000201f) AM_READWRITE(scc68070_uart_r,scc68070_uart_w) AM_SHARE("scc_uart_regs") + AM_RANGE(0x80002020, 0x8000202f) AM_READWRITE(scc68070_timer_r,scc68070_timer_w) AM_SHARE("scc_timer_regs") + AM_RANGE(0x80002040, 0x8000204f) AM_READWRITE(scc68070_int_irqc_r,scc68070_int_irqc_w) AM_SHARE("scc_iirqc_regs") + AM_RANGE(0x80004000, 0x8000403f) AM_READWRITE(scc68070_dma_ch1_r,scc68070_dma_ch1_w) AM_SHARE("scc_dma1_regs") + AM_RANGE(0x80004040, 0x8000407f) AM_READWRITE(scc68070_dma_ch2_r,scc68070_dma_ch2_w) AM_SHARE("scc_dma2_regs") + AM_RANGE(0x80008000, 0x8000807f) AM_READWRITE(scc68070_mmu_r,scc68070_mmu_w) AM_SHARE("scc_mmu_regs") +ADDRESS_MAP_END + static ADDRESS_MAP_START( magicard_mem, AS_PROGRAM, 16, magicard_state ) // ADDRESS_MAP_GLOBAL_MASK(0x1fffff) - AM_RANGE(0x00000000, 0x001ffbff) AM_MIRROR(0x7fe00000) AM_RAM AM_SHARE("magicram") /*only 0-7ffff accessed in Magic Card*/ - AM_RANGE(0x00180000, 0x001ffbff) AM_MIRROR(0x7fe00000) AM_RAM AM_REGION("maincpu", 0) + AM_IMPORT_FROM(scc68070_mem) + AM_RANGE(0x00000000, 0x001ffbff) AM_MIRROR(0x00200000) AM_RAM AM_SHARE("magicram") + AM_RANGE(0x00600000, 0x007ffbff) AM_RAM AM_SHARE("magicramb") /* 001ffc00-001ffdff System I/O */ AM_RANGE(0x001ffc00, 0x001ffc01) AM_MIRROR(0x7fe00000) AM_READ(test_r) AM_RANGE(0x001ffc40, 0x001ffc41) AM_MIRROR(0x7fe00000) AM_READ(test_r) @@ -672,16 +686,25 @@ static ADDRESS_MAP_START( magicard_mem, AS_PROGRAM, 16, magicard_state ) AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_WRITENOP //? AM_RANGE(0x001fff80, 0x001fffbf) AM_MIRROR(0x7fe00000) AM_RAM //DRAM I/O, not accessed by this game, CD buffer? AM_RANGE(0x001fffe0, 0x001fffff) AM_MIRROR(0x7fe00000) AM_READWRITE(philips_66470_r,philips_66470_w) AM_SHARE("pcab_vregs") //video registers - AM_RANGE(0x80001000, 0x8000100f) AM_READWRITE(scc68070_ext_irqc_r,scc68070_ext_irqc_w) AM_SHARE("scc_xirqc_regs") //lir - AM_RANGE(0x80002000, 0x8000200f) AM_READWRITE(scc68070_iic_r,scc68070_iic_w) AM_SHARE("scc_iic_regs") //i2c - AM_RANGE(0x80002010, 0x8000201f) AM_READWRITE(scc68070_uart_r,scc68070_uart_w) AM_SHARE("scc_uart_regs") - AM_RANGE(0x80002020, 0x8000202f) AM_READWRITE(scc68070_timer_r,scc68070_timer_w) AM_SHARE("scc_timer_regs") - AM_RANGE(0x80002040, 0x8000204f) AM_READWRITE(scc68070_int_irqc_r,scc68070_int_irqc_w) AM_SHARE("scc_iirqc_regs") - AM_RANGE(0x80004000, 0x8000403f) AM_READWRITE(scc68070_dma_ch1_r,scc68070_dma_ch1_w) AM_SHARE("scc_dma1_regs") - AM_RANGE(0x80004040, 0x8000407f) AM_READWRITE(scc68070_dma_ch2_r,scc68070_dma_ch2_w) AM_SHARE("scc_dma2_regs") - AM_RANGE(0x80008000, 0x8000807f) AM_READWRITE(scc68070_mmu_r,scc68070_mmu_w) AM_SHARE("scc_mmu_regs") ADDRESS_MAP_END +static ADDRESS_MAP_START( hotslots_mem, AS_PROGRAM, 16, magicard_state ) +// ADDRESS_MAP_GLOBAL_MASK(0x1fffff) + AM_IMPORT_FROM(scc68070_mem) + AM_RANGE(0x00000000, 0x001ffbff) AM_MIRROR(0x00200000) AM_RAM AM_SHARE("magicram") + AM_RANGE(0x00600000, 0x007ffbff) AM_RAM AM_SHARE("magicramb") + AM_RANGE(0x001ffc00, 0x001ffc01) AM_MIRROR(0x7fe00000) AM_READ(test_r) + AM_RANGE(0x001ffc40, 0x001ffc41) AM_MIRROR(0x7fe00000) AM_READ(test_r) + /*not the right sound chip,unknown type,it should be an ADPCM with 8 channels.*/ + AM_RANGE(0x001ffd40, 0x001ffd43) AM_MIRROR(0x7fe00000) AM_DEVWRITE8("ymsnd", ym2413_device, write, 0x00ff) + AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_READ(test_r) + AM_RANGE(0x001ffd80, 0x001ffd81) AM_MIRROR(0x7fe00000) AM_WRITENOP //? + AM_RANGE(0x001fff80, 0x001fffbf) AM_MIRROR(0x7fe00000) AM_RAM //DRAM I/O, not accessed by this game, CD buffer? + AM_RANGE(0x001fffe0, 0x001fffff) AM_MIRROR(0x7fe00000) AM_READWRITE(philips_66470_r,philips_66470_w) AM_SHARE("pcab_vregs") //video registers + AM_RANGE(0x00414000, 0x00414001) AM_DEVWRITE8("ramdac", ramdac_device, index_w, 0x00ff) + AM_RANGE(0x00414002, 0x00414003) AM_DEVWRITE8("ramdac", ramdac_device, pal_w, 0x00ff) + AM_RANGE(0x00414004, 0x00414005) AM_DEVWRITE8("ramdac", ramdac_device, mask_w, 0x00ff) +ADDRESS_MAP_END /************************* * Input ports * @@ -696,6 +719,14 @@ void magicard_state::machine_reset() UINT16 *src = (UINT16*)memregion("maincpu" )->base(); UINT16 *dst = m_magicram; memcpy (dst, src, 0x80000); + memcpy (dst+0x40000*1, src, 0x80000); + memcpy (dst+0x40000*2, src, 0x80000); + memcpy (dst+0x40000*3, src, 0x80000); + dst = m_magicramb; + memcpy (dst, src, 0x80000); + memcpy (dst+0x40000*1, src, 0x80000); + memcpy (dst+0x40000*2, src, 0x80000); + memcpy (dst+0x40000*3, src, 0x80000); m_maincpu->reset(); } @@ -738,6 +769,10 @@ static MACHINE_CONFIG_START( magicard, magicard_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( hotslots, magicard ) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(hotslots_mem) +MACHINE_CONFIG_END /************************* * Rom Load * @@ -873,4 +908,4 @@ GAME( 199?, magicardb, magicard, magicard, magicard, magicard_state, magicard, R GAME( 1994, magicarde, magicard, magicard, magicard, magicard_state, magicard, ROT0, "Impera", "Magic Card Export 94", GAME_NO_SOUND | GAME_NOT_WORKING ) GAME( 1998, magicardj, magicard, magicard, magicard, magicard_state, magicard, ROT0, "Impera", "Magic Card Jackpot (4.01)", GAME_NO_SOUND | GAME_NOT_WORKING ) GAME( 2001, magicle, 0, magicard, magicard, magicard_state, magicard, ROT0, "Impera", "Magic Lotto Export (5.03)", GAME_NO_SOUND | GAME_NOT_WORKING ) -GAME( 2002, hotslots, 0, magicard, magicard, magicard_state, magicard, ROT0, "Impera", "Hot Slots (6.00)", GAME_NO_SOUND | GAME_NOT_WORKING ) +GAME( 2002, hotslots, 0, hotslots, magicard, magicard_state, magicard, ROT0, "Impera", "Hot Slots (6.00)", GAME_NO_SOUND | GAME_NOT_WORKING )