trunk/src/mess/drivers/segapico.c
| r24848 | r24849 | |
| 111 | 111 | #include "machine/md_slot.h" |
| 112 | 112 | #include "machine/md_rom.h" |
| 113 | 113 | #include "includes/md_cons.h" |
| 114 | #include "sound/upd7759.h" |
| 114 | 115 | |
| 116 | |
| 115 | 117 | #define PICO_PENX 1 |
| 116 | 118 | #define PICO_PENY 2 |
| 117 | 119 | |
| r24848 | r24849 | |
| 119 | 121 | { |
| 120 | 122 | public: |
| 121 | 123 | pico_base_state(const machine_config &mconfig, device_type type, const char *tag) |
| 122 | | : md_cons_state(mconfig, type, tag) { } |
| 124 | : md_cons_state(mconfig, type, tag), |
| 125 | m_upd7759(*this, "7759") { } |
| 123 | 126 | |
| 127 | optional_device<upd7759_device> m_upd7759; |
| 128 | |
| 124 | 129 | ioport_port *m_io_page; |
| 125 | 130 | ioport_port *m_io_pad; |
| 126 | 131 | ioport_port *m_io_penx; |
| r24848 | r24849 | |
| 239 | 244 | return retdata | retdata << 8; |
| 240 | 245 | } |
| 241 | 246 | |
| 247 | |
| 248 | static void sound_cause_irq( device_t *device, int chip ) |
| 249 | { |
| 250 | // pico_base_state *state = device->machine().driver_data<pico_base_state>(); |
| 251 | printf("sound irq\n"); |
| 252 | /* upd7759 callback */ |
| 253 | // state->m_soundcpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); |
| 254 | } |
| 255 | |
| 256 | |
| 257 | const upd775x_interface pico_upd7759_interface = |
| 258 | { |
| 259 | sound_cause_irq |
| 260 | }; |
| 261 | |
| 262 | |
| 242 | 263 | WRITE16_MEMBER(pico_base_state::pico_68k_io_write ) |
| 243 | 264 | { |
| 265 | printf("pico_68k_io_write %04x %04x %04x\n", offset*2, data, mem_mask); |
| 266 | |
| 244 | 267 | switch (offset) |
| 245 | 268 | { |
| 269 | case 0x12/2: // guess |
| 270 | if (mem_mask&0x00ff) m_upd7759->port_w(space,0,data&0xff); |
| 271 | if (mem_mask&0xff00) m_upd7759->port_w(space,0,(data>>8)&0xff); |
| 272 | |
| 273 | break; |
| 246 | 274 | } |
| 247 | 275 | } |
| 248 | 276 | |
| r24848 | r24849 | |
| 294 | 322 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_picocart)); |
| 295 | 323 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_picocart)); |
| 296 | 324 | m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_picocart)); |
| 325 | |
| 326 | m_upd7759->reset_w(0); |
| 327 | m_upd7759->start_w(0); |
| 328 | m_upd7759->reset_w(1); |
| 329 | m_upd7759->start_w(1); |
| 297 | 330 | } |
| 298 | 331 | |
| 299 | 332 | static MACHINE_CONFIG_START( pico, pico_state ) |
| r24848 | r24849 | |
| 309 | 342 | |
| 310 | 343 | MCFG_PICO_CARTRIDGE_ADD("picoslot", pico_cart, NULL) |
| 311 | 344 | MCFG_SOFTWARE_LIST_ADD("cart_list","pico") |
| 345 | |
| 346 | MCFG_SOUND_ADD("7759", UPD7759, UPD7759_STANDARD_CLOCK) |
| 347 | MCFG_SOUND_CONFIG(pico_upd7759_interface) |
| 348 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.48) |
| 349 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.48) |
| 312 | 350 | MACHINE_CONFIG_END |
| 313 | 351 | |
| 314 | 352 | static MACHINE_CONFIG_START( picopal, pico_state ) |
| r24848 | r24849 | |
| 324 | 362 | |
| 325 | 363 | MCFG_PICO_CARTRIDGE_ADD("picoslot", pico_cart, NULL) |
| 326 | 364 | MCFG_SOFTWARE_LIST_ADD("cart_list","pico") |
| 365 | |
| 366 | MCFG_SOUND_ADD("7759", UPD7759, UPD7759_STANDARD_CLOCK) |
| 367 | MCFG_SOUND_CONFIG(pico_upd7759_interface) |
| 368 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.48) |
| 369 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.48) |
| 327 | 370 | MACHINE_CONFIG_END |
| 328 | 371 | |
| 329 | 372 | |
| r24848 | r24849 | |
| 468 | 511 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_picocart)); |
| 469 | 512 | m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_picocart)); |
| 470 | 513 | m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_picocart)); |
| 514 | |
| 515 | m_upd7759->reset_w(0); |
| 516 | m_upd7759->start_w(0); |
| 517 | m_upd7759->reset_w(1); |
| 518 | m_upd7759->start_w(1); |
| 519 | |
| 471 | 520 | } |
| 472 | 521 | |
| 473 | 522 | static MACHINE_CONFIG_START( copera, copera_state ) |
| r24848 | r24849 | |
| 483 | 532 | |
| 484 | 533 | MCFG_COPERA_CARTRIDGE_ADD("coperaslot", copera_cart, NULL) |
| 485 | 534 | MCFG_SOFTWARE_LIST_ADD("cart_list","copera") |
| 535 | |
| 536 | MCFG_SOUND_ADD("7759", UPD7759, UPD7759_STANDARD_CLOCK) |
| 537 | MCFG_SOUND_CONFIG(pico_upd7759_interface) |
| 538 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.48) |
| 539 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.48) |
| 486 | 540 | MACHINE_CONFIG_END |
| 487 | 541 | |
| 488 | 542 | |