mirror of
https://github.com/holub/mame
synced 2025-06-30 07:58:56 +03:00
nbajamex: Implemented ROM banking, game coins up and is playable. [R. Belmont, Peter Ferrie]
This commit is contained in:
parent
50a9cf0de4
commit
3d28212fbb
@ -83,6 +83,7 @@ public:
|
||||
DECLARE_READ16_MEMBER(bam2_unk_r);
|
||||
DECLARE_WRITE16_MEMBER(acpsx_00_w);
|
||||
DECLARE_WRITE16_MEMBER(acpsx_10_w);
|
||||
DECLARE_WRITE16_MEMBER(nbajamex_bank_w);
|
||||
DECLARE_WRITE16_MEMBER(nbajamex_80_w);
|
||||
DECLARE_READ16_MEMBER(nbajamex_08_r);
|
||||
DECLARE_READ16_MEMBER(nbajamex_80_r);
|
||||
@ -2034,17 +2035,55 @@ WRITE16_MEMBER(zn_state::acpsx_00_w)
|
||||
verboselog(0, "acpsx_00_w( %08x, %08x, %08x )\n", offset, data, mem_mask );
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(zn_state::nbajamex_bank_w)
|
||||
{
|
||||
UINT32 newbank = 0;
|
||||
|
||||
verboselog(0, "nbajamex_bank_w( %08x, %08x, %08x )\n", offset, data, mem_mask );
|
||||
|
||||
if (offset > 1)
|
||||
{
|
||||
logerror("Unknown banking offset %x!\n", offset);
|
||||
}
|
||||
|
||||
if (offset == 1)
|
||||
{
|
||||
data -= 1;
|
||||
}
|
||||
|
||||
if (data <= 1)
|
||||
{
|
||||
newbank = (data * 0x400000);
|
||||
}
|
||||
else if (data >= 0x10)
|
||||
{
|
||||
data -= 0x10;
|
||||
newbank = (data * 0x400000);
|
||||
newbank += 0x200000;
|
||||
}
|
||||
|
||||
if (offset == 0)
|
||||
{
|
||||
membank( "bankedroms" )->set_base( memregion( "bankedroms" )->base() + newbank);
|
||||
}
|
||||
else if (offset == 1)
|
||||
{
|
||||
newbank += 0x200000;
|
||||
membank( "bankedroms2" )->set_base( memregion( "bankedroms" )->base() + newbank);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(zn_state::acpsx_10_w)
|
||||
{
|
||||
verboselog(0, "acpsx_10_w( %08x, %08x, %08x )\n", offset, data, mem_mask );
|
||||
}
|
||||
|
||||
// all 16 bits goes to the external soundboard's latch (see sound test menu)
|
||||
WRITE16_MEMBER(zn_state::nbajamex_80_w)
|
||||
{
|
||||
verboselog(0, "nbajamex_80_w( %08x, %08x, %08x )\n", offset, data, mem_mask );
|
||||
psxirq_device *psxirq = (psxirq_device *) machine().device("maincpu:irq");
|
||||
psxirq->intin10(1);
|
||||
membank( "bankedroms" )->set_base( memregion( "bankedroms" )->base() + (data ? 0xe00000 : 0));
|
||||
}
|
||||
|
||||
READ16_MEMBER(zn_state::nbajamex_08_r)
|
||||
@ -2054,6 +2093,7 @@ READ16_MEMBER(zn_state::nbajamex_08_r)
|
||||
return data;
|
||||
}
|
||||
|
||||
// possibly a readback from the external soundboard?
|
||||
READ16_MEMBER(zn_state::nbajamex_80_r)
|
||||
{
|
||||
UINT32 data = 0xffffffff;
|
||||
@ -2070,7 +2110,8 @@ ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START(nbajamex_map, AS_PROGRAM, 32, zn_state)
|
||||
AM_RANGE(0x1f000000, 0x1f1fffff) AM_ROMBANK("bankedroms")
|
||||
AM_RANGE(0x1f200000, 0x1f207fff) AM_RAM AM_SHARE("eeprom")
|
||||
AM_RANGE(0x1f200000, 0x1f7fffff) AM_ROMBANK("bankedroms2")
|
||||
AM_RANGE(0x1fbfff00, 0x1fbfff07) AM_WRITE16(nbajamex_bank_w, 0xffffffff)
|
||||
AM_RANGE(0x1fbfff08, 0x1fbfff0b) AM_READ16(nbajamex_08_r, 0xffff)
|
||||
AM_RANGE(0x1fbfff80, 0x1fbfff83) AM_READWRITE16(nbajamex_80_r, nbajamex_80_w, 0xffff)
|
||||
|
||||
@ -2080,6 +2121,7 @@ ADDRESS_MAP_END
|
||||
MACHINE_RESET_MEMBER(zn_state,nbajamex)
|
||||
{
|
||||
membank( "bankedroms" )->set_base( memregion( "bankedroms" )->base() );
|
||||
membank( "bankedroms2" )->set_base( memregion( "bankedroms" )->base() + 0x200000 );
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START(jdredd_map, AS_PROGRAM, 32, zn_state)
|
||||
|
Loading…
Reference in New Issue
Block a user