fix for MT02960 & MT03697 [Mamesick]
This commit is contained in:
parent
158ed23dae
commit
f6f36eda21
@ -227,7 +227,7 @@ static WRITE16_HANDLER( bigrun_paletteram16_w )
|
||||
static ADDRESS_MAP_START( bigrun_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM
|
||||
AM_RANGE(0x080000, 0x083fff) AM_READWRITE(bigrun_vregs_r, bigrun_vregs_w) AM_BASE(&megasys1_vregs) // Vregs
|
||||
AM_RANGE(0x084000, 0x087fff) AM_WRITEONLY // Linking with other units
|
||||
AM_RANGE(0x084000, 0x087fff) AM_RAM // Linking with other units
|
||||
AM_RANGE(0x088000, 0x08bfff) AM_READWRITE(sharedram2_r, sharedram2_w) AM_BASE(&sharedram2) // Sharedram with sub CPU#2
|
||||
AM_RANGE(0x08c000, 0x08ffff) AM_READWRITE(sharedram1_r, sharedram1_w) AM_BASE(&sharedram1) // Sharedram with sub CPU#1
|
||||
|
||||
@ -623,7 +623,7 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( bigrun_map3, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM
|
||||
AM_RANGE(0x040000, 0x047fff) AM_READWRITE(sharedram2_r, sharedram1_w) // Shared RAM (with Main CPU)
|
||||
AM_RANGE(0x040000, 0x047fff) AM_READWRITE(sharedram2_r, sharedram2_w) // Shared RAM (with Main CPU)
|
||||
AM_RANGE(0x080000, 0x0807ff) AM_RAM AM_BASE(&cischeat_roadram[1]) // Road RAM
|
||||
AM_RANGE(0x0c0000, 0x0c3fff) AM_RAM // RAM
|
||||
ADDRESS_MAP_END
|
||||
@ -703,8 +703,8 @@ static ADDRESS_MAP_START( bigrun_sound_map, ADDRESS_SPACE_PROGRAM, 16 )
|
||||
AM_RANGE(0x040000, 0x040001) AM_READWRITE(soundlatch_word_r, bigrun_soundbank_w) // From Main CPU
|
||||
AM_RANGE(0x060000, 0x060001) AM_WRITE(soundlatch2_word_w) // To Main CPU
|
||||
AM_RANGE(0x080000, 0x080003) AM_DEVREADWRITE8("ymsnd", ym2151_r, ym2151_w, 0x00ff)
|
||||
AM_RANGE(0x0a0000, 0x0a0001) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)
|
||||
AM_RANGE(0x0c0000, 0x0c0001) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)
|
||||
AM_RANGE(0x0a0000, 0x0a0003) AM_DEVREADWRITE8("oki1", okim6295_r, okim6295_w, 0x00ff)
|
||||
AM_RANGE(0x0c0000, 0x0c0003) AM_DEVREADWRITE8("oki2", okim6295_r, okim6295_w, 0x00ff)
|
||||
AM_RANGE(0x0f0000, 0x0fffff) AM_RAM // RAM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
@ -202,6 +202,12 @@ static READ32_HANDLER(cop_r)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static READ32_HANDLER(irq_ack_clear)
|
||||
{
|
||||
cputag_set_input_line(space->machine, "sub", R3000_IRQ4, CLEAR_LINE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( speglsht_mem, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x00000000, 0x000fffff) AM_RAM
|
||||
AM_RANGE(0x01000000, 0x01007fff) AM_RAM //tested - STATIC RAM
|
||||
@ -214,7 +220,7 @@ static ADDRESS_MAP_START( speglsht_mem, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x01c00000, 0x01dfffff) AM_ROM AM_REGION("user2", 0)
|
||||
AM_RANGE(0x0a000000, 0x0a003fff) AM_READWRITE(shared_r, shared_w)
|
||||
AM_RANGE(0x1eff0000, 0x1eff001f) AM_RAM
|
||||
AM_RANGE(0x1eff003c, 0x1eff003f) AM_READNOP //interrupt related
|
||||
AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ(irq_ack_clear)
|
||||
AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("user1", 0)
|
||||
AM_RANGE(0x2fc00000, 0x2fdfffff) AM_ROM AM_REGION("user1", 0) // mirror for interrupts
|
||||
ADDRESS_MAP_END
|
||||
@ -301,11 +307,6 @@ static const st0016_interface st0016_config =
|
||||
&st0016_charram
|
||||
};
|
||||
|
||||
static INTERRUPT_GEN( irq4_gen )
|
||||
{
|
||||
cpu_set_input_line(device, R3000_IRQ4, ASSERT_LINE);
|
||||
}
|
||||
|
||||
static const r3000_cpu_core config =
|
||||
{
|
||||
0,
|
||||
@ -329,7 +330,7 @@ static MACHINE_DRIVER_START( speglsht )
|
||||
MDRV_CPU_ADD("sub", R3000LE, 25000000)
|
||||
MDRV_CPU_CONFIG(config)
|
||||
MDRV_CPU_PROGRAM_MAP(speglsht_mem)
|
||||
MDRV_CPU_VBLANK_INT("screen", irq4_gen)
|
||||
MDRV_CPU_VBLANK_INT("screen", irq4_line_assert)
|
||||
|
||||
MDRV_QUANTUM_TIME(HZ(6000))
|
||||
MDRV_MACHINE_RESET(speglsht)
|
||||
|
@ -336,6 +336,12 @@ static WRITE32_HANDLER(srmp5_vidregs_w)
|
||||
logerror("vidregs write %08X %08X\n", offset << 2, state->vidregs[offset]);
|
||||
}
|
||||
|
||||
static READ32_HANDLER(irq_ack_clear)
|
||||
{
|
||||
cputag_set_input_line(space->machine, "sub", R3000_IRQ4, CLEAR_LINE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( srmp5_mem, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x00000000, 0x000fffff) AM_RAM //maybe 0 - 2fffff ?
|
||||
AM_RANGE(0x002f0000, 0x002f7fff) AM_RAM
|
||||
@ -362,7 +368,7 @@ static ADDRESS_MAP_START( srmp5_mem, ADDRESS_SPACE_PROGRAM, 32 )
|
||||
AM_RANGE(0x0a200000, 0x0a3fffff) AM_READWRITE(tileram_r, tileram_w)
|
||||
|
||||
AM_RANGE(0x1eff0000, 0x1eff001f) AM_WRITEONLY
|
||||
AM_RANGE(0x1eff003c, 0x1eff003f) AM_READNOP
|
||||
AM_RANGE(0x1eff003c, 0x1eff003f) AM_READ(irq_ack_clear)
|
||||
AM_RANGE(0x1fc00000, 0x1fdfffff) AM_ROM AM_REGION("user1", 0)
|
||||
AM_RANGE(0x2fc00000, 0x2fdfffff) AM_ROM AM_REGION("user1", 0)
|
||||
ADDRESS_MAP_END
|
||||
@ -510,16 +516,6 @@ static const st0016_interface st0016_config =
|
||||
&st0016_charram
|
||||
};
|
||||
|
||||
//It seems that interrupt flags are never cleared, so I use last line only.
|
||||
|
||||
static INTERRUPT_GEN( irq4_gen )
|
||||
{
|
||||
if(cpu_getiloops(device) == 0)
|
||||
cpu_set_input_line(device, R3000_IRQ4, ASSERT_LINE);
|
||||
else
|
||||
cpu_set_input_line(device, R3000_IRQ4, CLEAR_LINE);
|
||||
}
|
||||
|
||||
static const r3000_cpu_core config =
|
||||
{
|
||||
1, /* 1 if we have an FPU, 0 otherwise */
|
||||
@ -569,8 +565,7 @@ static MACHINE_DRIVER_START( srmp5 )
|
||||
MDRV_CPU_ADD("sub", R3000LE, 25000000)
|
||||
MDRV_CPU_CONFIG(config)
|
||||
MDRV_CPU_PROGRAM_MAP(srmp5_mem)
|
||||
//256???K??
|
||||
MDRV_CPU_VBLANK_INT_HACK(irq4_gen, 256)
|
||||
MDRV_CPU_VBLANK_INT("screen", irq4_line_assert)
|
||||
|
||||
MDRV_QUANTUM_TIME(HZ(6000))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user