trunk/src/mess/drivers/a7800.c
| r31891 | r31892 | |
| 1314 | 1314 | save_item(NAME(m_ctrl_reg)); |
| 1315 | 1315 | save_item(NAME(m_maria_flag)); |
| 1316 | 1316 | |
| 1317 | | // install additional POKEY handlers |
| 1317 | // install additional handlers, if needed |
| 1318 | 1318 | switch (m_cartslot->get_cart_type()) |
| 1319 | 1319 | { |
| 1320 | | case A78_TYPE1: |
| 1321 | | case A78_TYPE3: |
| 1322 | | case A78_TYPEB: |
| 1323 | | case A78_XB_BOARD: |
| 1324 | | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0400, 0x047f, read8_delegate(FUNC(a78_cart_slot_device::read_04xx),(a78_cart_slot_device*)m_cartslot), write8_delegate(FUNC(a78_cart_slot_device::write_04xx),(a78_cart_slot_device*)m_cartslot)); |
| 1325 | | break; |
| 1326 | 1320 | case A78_HSC: |
| 1321 | // ROM+NVRAM accesses for HiScore |
| 1327 | 1322 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x17ff, read8_delegate(FUNC(a78_cart_slot_device::read_10xx),(a78_cart_slot_device*)m_cartslot), write8_delegate(FUNC(a78_cart_slot_device::write_10xx),(a78_cart_slot_device*)m_cartslot)); |
| 1328 | 1323 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x3000, 0x3fff, read8_delegate(FUNC(a78_cart_slot_device::read_30xx),(a78_cart_slot_device*)m_cartslot), write8_delegate(FUNC(a78_cart_slot_device::write_30xx),(a78_cart_slot_device*)m_cartslot)); |
| 1329 | 1324 | break; |
| 1325 | case A78_XB_BOARD: |
| 1326 | // POKEY and RAM regs at 0x400-0x47f |
| 1327 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0400, 0x047f, read8_delegate(FUNC(a78_cart_slot_device::read_04xx),(a78_cart_slot_device*)m_cartslot), write8_delegate(FUNC(a78_cart_slot_device::write_04xx),(a78_cart_slot_device*)m_cartslot)); |
| 1328 | break; |
| 1330 | 1329 | case A78_XM_BOARD: |
| 1330 | // POKEY and RAM and YM regs at 0x400-0x47f |
| 1331 | 1331 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0400, 0x047f, read8_delegate(FUNC(a78_cart_slot_device::read_04xx),(a78_cart_slot_device*)m_cartslot), write8_delegate(FUNC(a78_cart_slot_device::write_04xx),(a78_cart_slot_device*)m_cartslot)); |
| 1332 | // ROM+NVRAM accesses for HiScore |
| 1332 | 1333 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x17ff, read8_delegate(FUNC(a78_cart_slot_device::read_10xx),(a78_cart_slot_device*)m_cartslot), write8_delegate(FUNC(a78_cart_slot_device::write_10xx),(a78_cart_slot_device*)m_cartslot)); |
| 1333 | 1334 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x3000, 0x3fff, read8_delegate(FUNC(a78_cart_slot_device::read_30xx),(a78_cart_slot_device*)m_cartslot), write8_delegate(FUNC(a78_cart_slot_device::write_30xx),(a78_cart_slot_device*)m_cartslot)); |
| 1334 | 1335 | break; |
trunk/src/emu/bus/a7800/rom.c
| r31891 | r31892 | |
| 194 | 194 | /*------------------------------------------------- |
| 195 | 195 | |
| 196 | 196 | Carts with no bankswitch + POKEY chip |
| 197 | | The Pokey chips is accessed at 0x0450-0x045f or |
| 198 | | by writing at 0x4000-0x7fff in some games. |
| 197 | The Pokey chips is accessed by writing at |
| 198 | 0x4000-0x7fff. |
| 199 | 199 | |
| 200 | 200 | GAMES: Ballblazer, Beef Drop (homebrew) |
| 201 | 201 | |
| r31891 | r31892 | |
| 207 | 207 | m_pokey->write(space, offset & 0x0f, data); |
| 208 | 208 | } |
| 209 | 209 | |
| 210 | | READ8_MEMBER(a78_rom_pokey_device::read_04xx) |
| 211 | | { |
| 212 | | if (offset >= 0x50 && offset < 0x60) |
| 213 | | return m_pokey->read(space, offset & 0x0f); |
| 214 | | else |
| 215 | | return 0xff; |
| 216 | | } |
| 217 | | |
| 218 | | WRITE8_MEMBER(a78_rom_pokey_device::write_04xx) |
| 219 | | { |
| 220 | | if (offset >= 0x50 && offset < 0x60) |
| 221 | | m_pokey->write(space, offset & 0x0f, data); |
| 222 | | } |
| 223 | | |
| 224 | 210 | machine_config_constructor a78_rom_pokey_device::device_mconfig_additions() const |
| 225 | 211 | { |
| 226 | 212 | return MACHINE_CONFIG_NAME( a78_pokey ); |
| r31891 | r31892 | |
| 264 | 250 | /*------------------------------------------------- |
| 265 | 251 | |
| 266 | 252 | Carts with SuperGame bankswitch + POKEY chip |
| 267 | | As above, the Pokey chips is accessed at |
| 253 | As above + Pokey chip access |
| 268 | 254 | |
| 269 | 255 | GAMES: Commando |
| 270 | 256 | |
| r31891 | r31892 | |
| 278 | 264 | m_bank = data & m_bank_mask; |
| 279 | 265 | } |
| 280 | 266 | |
| 281 | | READ8_MEMBER(a78_rom_sg_pokey_device::read_04xx) |
| 282 | | { |
| 283 | | if (offset >= 0x50 && offset < 0x60) |
| 284 | | return m_pokey->read(space, offset & 0x0f); |
| 285 | | else |
| 286 | | return 0xff; |
| 287 | | } |
| 288 | | |
| 289 | | WRITE8_MEMBER(a78_rom_sg_pokey_device::write_04xx) |
| 290 | | { |
| 291 | | if (offset >= 0x50 && offset < 0x60) |
| 292 | | m_pokey->write(space, offset & 0x0f, data); |
| 293 | | } |
| 294 | | |
| 295 | 267 | machine_config_constructor a78_rom_sg_pokey_device::device_mconfig_additions() const |
| 296 | 268 | { |
| 297 | 269 | return MACHINE_CONFIG_NAME( a78_pokey ); |
| r31891 | r31892 | |
| 405 | 377 | m_bank = (data & m_bank_mask) + 1; |
| 406 | 378 | } |
| 407 | 379 | |
| 408 | | READ8_MEMBER(a78_rom_xm_device::read_04xx) |
| 409 | | { |
| 410 | | if (offset >= 0x50 && offset < 0x60) |
| 411 | | return m_pokey->read(space, offset & 0x0f); |
| 412 | | else |
| 413 | | return 0xff; |
| 414 | | } |
| 415 | | |
| 416 | | WRITE8_MEMBER(a78_rom_xm_device::write_04xx) |
| 417 | | { |
| 418 | | if (offset >= 0x50 && offset < 0x60) |
| 419 | | m_pokey->write(space, offset & 0x0f, data); |
| 420 | | } |
| 421 | | |
| 422 | 380 | machine_config_constructor a78_rom_xm_device::device_mconfig_additions() const |
| 423 | 381 | { |
| 424 | 382 | return MACHINE_CONFIG_NAME( a78_pokey ); |
| 425 | 383 | } |
| 426 | 384 | |
| 427 | | |
| 428 | 385 | /*------------------------------------------------- |
| 429 | 386 | |
| 430 | 387 | Carts with Absolute bankswitch: |
trunk/src/emu/bus/a7800/xboard.c
| r31891 | r31892 | |
| 23 | 23 | +-------------------------------+ |
| 24 | 24 | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| 25 | 25 | +-------------------------------+ |
| 26 | | | | | | | | | | |
| 27 | | | | | | | | | +-- Bank select bit 0 \ |
| 28 | | | | | | | | +------ Bank select bit 1 | Totally 128 KByte in 16 KByte banks |
| 29 | | | | | | | +---------- Bank select bit 2 / |
| 30 | | | | | | +-------------- Enable memory bit** (1 = Memory enabled, 0 after power on) |
| 31 | | | | | +------------------ Enable POKEY bit (1 = POKEY enabled, 0 after power on) |
| 32 | | | | | |
| 33 | | NA NA NA = Not Available or Not Used |
| 26 | | | | | | | | | |
| 27 | | | | | | | | +-- Bank select bit 0 \ |
| 28 | | | | | | | +------ Bank select bit 1 | Totally 128 KByte in 16 KByte banks |
| 29 | | | | | | +---------- Bank select bit 2 / |
| 30 | | | | | +-------------- Enable memory bit (1 = Memory enabled, 0 after power on) |
| 31 | | | | +------------------ Enable POKEY bit** (1 = POKEY enabled, 0 after power on) |
| 32 | | | | |
| 33 | NA NA NA = Not Available or Not Used |
| 34 | 34 | |
| 35 | 35 | * = Can be mounted piggy back on the first POKEY. Description how to do this will come when i have tried it out. |
| 36 | 36 | ** This bit controls both POKEY chip select signals. |
| r31891 | r31892 | |
| 234 | 234 | m_ram_bank = m_reg & 7; |
| 235 | 235 | } |
| 236 | 236 | } |
| 237 | | |
trunk/src/emu/bus/a7800/a78_carts.h
| r31891 | r31892 | |
| 17 | 17 | // not sure which dev cart support banked ram, nor whether there shall be a 9banks or a non-sg version of this... |
| 18 | 18 | SLOT_INTERFACE_INTERNAL("a78_bankram", A78_ROM_BANKRAM) |
| 19 | 19 | SLOT_INTERFACE_INTERNAL("a78_sg9", A78_ROM_SG_9BANKS) |
| 20 | | SLOT_INTERFACE_INTERNAL("a78_xmc", A78_ROM_XM) // carts compatible with the expansions below (basically a 9Banks+POKEY) |
| 20 | SLOT_INTERFACE_INTERNAL("a78_xmc", A78_ROM_XM) // carts compatible with the expansions below (basically a 9Banks+POKEY) |
| 21 | 21 | SLOT_INTERFACE_INTERNAL("a78_abs", A78_ROM_ABSOLUTE) |
| 22 | 22 | SLOT_INTERFACE_INTERNAL("a78_act", A78_ROM_ACTIVISION) |
| 23 | 23 | SLOT_INTERFACE_INTERNAL("a78_hsc", A78_HISCORE) |
trunk/src/emu/bus/a7800/rom.h
| r31891 | r31892 | |
| 36 | 36 | virtual machine_config_constructor device_mconfig_additions() const; |
| 37 | 37 | |
| 38 | 38 | // reading and writing |
| 39 | | virtual DECLARE_READ8_MEMBER(read_04xx); |
| 40 | | virtual DECLARE_WRITE8_MEMBER(write_04xx); |
| 41 | 39 | virtual DECLARE_WRITE8_MEMBER(write_40xx); |
| 42 | 40 | |
| 43 | 41 | protected: |
| r31891 | r31892 | |
| 79 | 77 | virtual machine_config_constructor device_mconfig_additions() const; |
| 80 | 78 | |
| 81 | 79 | // reading and writing |
| 82 | | virtual DECLARE_READ8_MEMBER(read_04xx); |
| 83 | | virtual DECLARE_WRITE8_MEMBER(write_04xx); |
| 84 | 80 | virtual DECLARE_WRITE8_MEMBER(write_40xx); |
| 85 | 81 | |
| 86 | 82 | protected: |
| r31891 | r31892 | |
| 150 | 146 | virtual machine_config_constructor device_mconfig_additions() const; |
| 151 | 147 | |
| 152 | 148 | // reading and writing |
| 153 | | virtual DECLARE_READ8_MEMBER(read_04xx); |
| 154 | | virtual DECLARE_WRITE8_MEMBER(write_04xx); |
| 155 | 149 | virtual DECLARE_WRITE8_MEMBER(write_40xx); |
| 156 | 150 | |
| 157 | 151 | protected: |