trunk/src/mame/drivers/zn.c
| r243103 | r243104 | |
| 83 | 83 | DECLARE_READ16_MEMBER(bam2_unk_r); |
| 84 | 84 | DECLARE_WRITE16_MEMBER(acpsx_00_w); |
| 85 | 85 | DECLARE_WRITE16_MEMBER(acpsx_10_w); |
| 86 | DECLARE_WRITE16_MEMBER(nbajamex_bank_w); |
| 86 | 87 | DECLARE_WRITE16_MEMBER(nbajamex_80_w); |
| 87 | 88 | DECLARE_READ16_MEMBER(nbajamex_08_r); |
| 88 | 89 | DECLARE_READ16_MEMBER(nbajamex_80_r); |
| r243103 | r243104 | |
| 2034 | 2035 | verboselog(0, "acpsx_00_w( %08x, %08x, %08x )\n", offset, data, mem_mask ); |
| 2035 | 2036 | } |
| 2036 | 2037 | |
| 2038 | WRITE16_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 | |
| 2037 | 2076 | WRITE16_MEMBER(zn_state::acpsx_10_w) |
| 2038 | 2077 | { |
| 2039 | 2078 | verboselog(0, "acpsx_10_w( %08x, %08x, %08x )\n", offset, data, mem_mask ); |
| 2040 | 2079 | } |
| 2041 | 2080 | |
| 2081 | // all 16 bits goes to the external soundboard's latch (see sound test menu) |
| 2042 | 2082 | WRITE16_MEMBER(zn_state::nbajamex_80_w) |
| 2043 | 2083 | { |
| 2044 | 2084 | verboselog(0, "nbajamex_80_w( %08x, %08x, %08x )\n", offset, data, mem_mask ); |
| 2045 | 2085 | psxirq_device *psxirq = (psxirq_device *) machine().device("maincpu:irq"); |
| 2046 | 2086 | psxirq->intin10(1); |
| 2047 | | membank( "bankedroms" )->set_base( memregion( "bankedroms" )->base() + (data ? 0xe00000 : 0)); |
| 2048 | 2087 | } |
| 2049 | 2088 | |
| 2050 | 2089 | READ16_MEMBER(zn_state::nbajamex_08_r) |
| r243103 | r243104 | |
| 2054 | 2093 | return data; |
| 2055 | 2094 | } |
| 2056 | 2095 | |
| 2096 | // possibly a readback from the external soundboard? |
| 2057 | 2097 | READ16_MEMBER(zn_state::nbajamex_80_r) |
| 2058 | 2098 | { |
| 2059 | 2099 | UINT32 data = 0xffffffff; |
| r243103 | r243104 | |
| 2070 | 2110 | |
| 2071 | 2111 | static ADDRESS_MAP_START(nbajamex_map, AS_PROGRAM, 32, zn_state) |
| 2072 | 2112 | 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) |
| 2074 | 2115 | AM_RANGE(0x1fbfff08, 0x1fbfff0b) AM_READ16(nbajamex_08_r, 0xffff) |
| 2075 | 2116 | AM_RANGE(0x1fbfff80, 0x1fbfff83) AM_READWRITE16(nbajamex_80_r, nbajamex_80_w, 0xffff) |
| 2076 | 2117 | |
| r243103 | r243104 | |
| 2080 | 2121 | MACHINE_RESET_MEMBER(zn_state,nbajamex) |
| 2081 | 2122 | { |
| 2082 | 2123 | membank( "bankedroms" )->set_base( memregion( "bankedroms" )->base() ); |
| 2124 | membank( "bankedroms2" )->set_base( memregion( "bankedroms" )->base() + 0x200000 ); |
| 2083 | 2125 | } |
| 2084 | 2126 | |
| 2085 | 2127 | static ADDRESS_MAP_START(jdredd_map, AS_PROGRAM, 32, zn_state) |