Some fixes for hotslots, nw
This commit is contained in:
parent
8351b66b07
commit
3545f1b09a
@ -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 )
|
||||
|
Loading…
Reference in New Issue
Block a user