Previous 199869 Revisions Next

r34592 Sunday 25th January, 2015 at 02:17:59 UTC by R. Belmont
nbajamex: Implemented ROM banking, game coins up and is playable. [R. Belmont, Peter Ferrie]
[src/mame/drivers]zn.c

trunk/src/mame/drivers/zn.c
r243103r243104
8383   DECLARE_READ16_MEMBER(bam2_unk_r);
8484   DECLARE_WRITE16_MEMBER(acpsx_00_w);
8585   DECLARE_WRITE16_MEMBER(acpsx_10_w);
86   DECLARE_WRITE16_MEMBER(nbajamex_bank_w);
8687   DECLARE_WRITE16_MEMBER(nbajamex_80_w);
8788   DECLARE_READ16_MEMBER(nbajamex_08_r);
8889   DECLARE_READ16_MEMBER(nbajamex_80_r);
r243103r243104
20342035   verboselog(0, "acpsx_00_w( %08x, %08x, %08x )\n", offset, data, mem_mask );
20352036}
20362037
2038WRITE16_MEMBER(zn_state::nbajamex_bank_w)
2039{
2040   UINT32 newbank = 0;
2041
2042   verboselog(0, "nbajamex_bank_w( %08x, %08x, %08x )\n", offset, data, mem_mask );
2043
2044   if (offset > 1)
2045   {
2046      logerror("Unknown banking offset %x!\n", offset);
2047   }
2048
2049   if (offset == 1)
2050   {
2051      data -= 1;
2052   }
2053
2054   if (data <= 1)
2055   {
2056      newbank = (data * 0x400000);
2057   }
2058   else if (data >= 0x10)
2059   {
2060      data -= 0x10;
2061      newbank = (data * 0x400000);
2062      newbank += 0x200000;
2063   }
2064
2065   if (offset == 0)
2066   {
2067      membank( "bankedroms" )->set_base( memregion( "bankedroms" )->base() + newbank);
2068   }
2069   else if (offset == 1)
2070   {
2071      newbank += 0x200000;
2072      membank( "bankedroms2" )->set_base( memregion( "bankedroms" )->base() + newbank);
2073   }
2074}
2075
20372076WRITE16_MEMBER(zn_state::acpsx_10_w)
20382077{
20392078   verboselog(0, "acpsx_10_w( %08x, %08x, %08x )\n", offset, data, mem_mask );
20402079}
20412080
2081// all 16 bits goes to the external soundboard's latch (see sound test menu)
20422082WRITE16_MEMBER(zn_state::nbajamex_80_w)
20432083{
20442084   verboselog(0, "nbajamex_80_w( %08x, %08x, %08x )\n", offset, data, mem_mask );
20452085   psxirq_device *psxirq = (psxirq_device *) machine().device("maincpu:irq");
20462086   psxirq->intin10(1);
2047   membank( "bankedroms" )->set_base( memregion( "bankedroms" )->base() + (data ? 0xe00000 : 0));
20482087}
20492088
20502089READ16_MEMBER(zn_state::nbajamex_08_r)
r243103r243104
20542093   return data;
20552094}
20562095
2096// possibly a readback from the external soundboard?
20572097READ16_MEMBER(zn_state::nbajamex_80_r)
20582098{
20592099   UINT32 data = 0xffffffff;
r243103r243104
20702110
20712111static ADDRESS_MAP_START(nbajamex_map, AS_PROGRAM, 32, zn_state)
20722112   AM_RANGE(0x1f000000, 0x1f1fffff) AM_ROMBANK("bankedroms")
2073   AM_RANGE(0x1f200000, 0x1f207fff) AM_RAM AM_SHARE("eeprom")
2113   AM_RANGE(0x1f200000, 0x1f7fffff) AM_ROMBANK("bankedroms2")
2114   AM_RANGE(0x1fbfff00, 0x1fbfff07) AM_WRITE16(nbajamex_bank_w, 0xffffffff)
20742115   AM_RANGE(0x1fbfff08, 0x1fbfff0b) AM_READ16(nbajamex_08_r, 0xffff)
20752116   AM_RANGE(0x1fbfff80, 0x1fbfff83) AM_READWRITE16(nbajamex_80_r, nbajamex_80_w, 0xffff)
20762117
r243103r243104
20802121MACHINE_RESET_MEMBER(zn_state,nbajamex)
20812122{
20822123   membank( "bankedroms" )->set_base( memregion( "bankedroms" )->base() );
2124   membank( "bankedroms2" )->set_base( memregion( "bankedroms" )->base() + 0x200000 );
20832125}
20842126
20852127static ADDRESS_MAP_START(jdredd_map, AS_PROGRAM, 32, zn_state)


Previous 199869 Revisions Next


© 1997-2024 The MAME Team