Some fixes for hotslots, nw

This commit is contained in:
Angelo Salese 2014-06-09 02:15:10 +00:00
parent 8351b66b07
commit 3545f1b09a

View File

@ -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<UINT16> m_magicram;
required_shared_ptr<UINT16> m_magicramb;
required_shared_ptr<UINT16> m_pcab_vregs;
required_shared_ptr<UINT16> m_scc68070_ext_irqc_regs;
required_shared_ptr<UINT16> 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 )