trunk/src/mame/drivers/tapatune.c
| r243426 | r243427 | |
| 7 | 7 | |
| 8 | 8 | PCB Notes: |
| 9 | 9 | |
| 10 | | Top board notable: |
| 10 | Top board notable (video) |
| 11 | 11 | |
| 12 | 12 | - Hitachi HD68HC000-12 68000 CPU (24 MHz crystal) |
| 13 | 13 | - Hitachi HD46505SP-2 CRTC |
| r243426 | r243427 | |
| 17 | 17 | - rom0.u3 / rom1.u12 - 68000 program |
| 18 | 18 | - rom2.u4 / rom3.u13 / rom4.u5 / rom5.u14 - graphics |
| 19 | 19 | |
| 20 | | Bottom board notable: |
| 20 | Bottom board notable (main / sound / io) |
| 21 | 21 | |
| 22 | 22 | - Zilog Z0840006PSC Z80 CPU (24 MHz crystal) |
| 23 | 23 | - BSMT2000 custom audio IC |
| r243426 | r243427 | |
| 28 | 28 | - many connectors for I/O |
| 29 | 29 | |
| 30 | 30 | The sound and I/O board is used by other redemption games such as |
| 31 | | Colorama and Wheel 'Em In |
| 31 | Colorama and Wheel 'Em In, Super Rock and Bowl |
| 32 | 32 | |
| 33 | 33 | ****************************************************************************/ |
| 34 | 34 | |
| r243426 | r243427 | |
| 52 | 52 | public: |
| 53 | 53 | tapatune_state(const machine_config &mconfig, device_type type, const char *tag) |
| 54 | 54 | : driver_device(mconfig, type, tag), |
| 55 | m_videocpu(*this, "videocpu"), |
| 55 | 56 | m_maincpu(*this, "maincpu"), |
| 56 | | m_soundcpu(*this, "soundcpu"), |
| 57 | 57 | m_bsmt(*this, "bsmt"), |
| 58 | 58 | m_videoram(*this, "videoram") {} |
| 59 | 59 | |
| 60 | optional_device<cpu_device> m_videocpu; |
| 60 | 61 | required_device<cpu_device> m_maincpu; |
| 61 | | required_device<cpu_device> m_soundcpu; |
| 62 | 62 | required_device<bsmt2000_device> m_bsmt; |
| 63 | | required_shared_ptr<UINT16> m_videoram; |
| 63 | optional_shared_ptr<UINT16> m_videoram; |
| 64 | 64 | |
| 65 | 65 | UINT8 m_paletteram[0x300]; |
| 66 | 66 | UINT16 m_palette_write_addr; |
| r243426 | r243427 | |
| 196 | 196 | |
| 197 | 197 | WRITE_LINE_MEMBER(tapatune_state::crtc_vsync) |
| 198 | 198 | { |
| 199 | | m_maincpu->set_input_line(2, state ? HOLD_LINE : CLEAR_LINE); |
| 199 | m_videocpu->set_input_line(2, state ? HOLD_LINE : CLEAR_LINE); |
| 200 | 200 | } |
| 201 | 201 | |
| 202 | 202 | |
| r243426 | r243427 | |
| 240 | 240 | |
| 241 | 241 | WRITE8_MEMBER(tapatune_state::write_data_to_68k) |
| 242 | 242 | { |
| 243 | | m_z80_to_68k_data = data; |
| 244 | | m_z80_data_available = 1; |
| 245 | | m_maincpu->set_input_line(1, HOLD_LINE); |
| 243 | // todo, use callback as this will hook up elsewhere on non-video games |
| 244 | if (m_videocpu) |
| 245 | { |
| 246 | m_z80_to_68k_data = data; |
| 247 | m_z80_data_available = 1; |
| 248 | m_videocpu->set_input_line(1, HOLD_LINE); |
| 249 | } |
| 246 | 250 | } |
| 247 | 251 | |
| 248 | 252 | |
| r243426 | r243427 | |
| 266 | 270 | * |
| 267 | 271 | *************************************/ |
| 268 | 272 | |
| 269 | | static ADDRESS_MAP_START( tapatune_map, AS_PROGRAM, 16, tapatune_state ) |
| 273 | static ADDRESS_MAP_START( video_map, AS_PROGRAM, 16, tapatune_state ) |
| 270 | 274 | AM_RANGE(0x000000, 0x2fffff) AM_ROM |
| 271 | 275 | AM_RANGE(0x300000, 0x31ffff) AM_RAM AM_SHARE("videoram") |
| 272 | 276 | AM_RANGE(0x320000, 0x33ffff) AM_RAM |
| r243426 | r243427 | |
| 278 | 282 | ADDRESS_MAP_END |
| 279 | 283 | |
| 280 | 284 | |
| 281 | | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, tapatune_state ) |
| 285 | static ADDRESS_MAP_START( maincpu_map, AS_PROGRAM, 8, tapatune_state ) |
| 282 | 286 | AM_RANGE(0x0000, 0x7fff) AM_ROM AM_WRITENOP |
| 283 | 287 | AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") |
| 284 | 288 | ADDRESS_MAP_END |
| 285 | 289 | |
| 286 | 290 | |
| 287 | | static ADDRESS_MAP_START ( sound_io_map, AS_IO, 8, tapatune_state ) |
| 291 | static ADDRESS_MAP_START ( maincpu_io_map, AS_IO, 8, tapatune_state ) |
| 288 | 292 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 289 | 293 | AM_RANGE(0x00, 0x00) AM_WRITE(bsmt_data_lo_w) |
| 290 | 294 | AM_RANGE(0x08, 0x08) AM_WRITE(bsmt_data_hi_w) |
| r243426 | r243427 | |
| 311 | 315 | |
| 312 | 316 | READ8_MEMBER(tapatune_state::sound_irq_clear) |
| 313 | 317 | { |
| 314 | | m_soundcpu->set_input_line(0, CLEAR_LINE); |
| 318 | m_maincpu->set_input_line(0, CLEAR_LINE); |
| 315 | 319 | return 0; |
| 316 | 320 | } |
| 317 | 321 | |
| r243426 | r243427 | |
| 500 | 504 | * |
| 501 | 505 | *************************************/ |
| 502 | 506 | |
| 503 | | static MACHINE_CONFIG_START( tapatune, tapatune_state ) |
| 507 | static MACHINE_CONFIG_START( tapatune_base, tapatune_state ) |
| 504 | 508 | /* basic machine hardware */ |
| 505 | | MCFG_CPU_ADD("maincpu", M68000, XTAL_24MHz / 2) |
| 506 | | MCFG_CPU_PROGRAM_MAP(tapatune_map) |
| 507 | | |
| 508 | | MCFG_CPU_ADD("soundcpu", Z80, XTAL_24MHz / 4) |
| 509 | | MCFG_CPU_PROGRAM_MAP(sound_map) |
| 510 | | MCFG_CPU_IO_MAP(sound_io_map) |
| 509 | MCFG_CPU_ADD("maincpu", Z80, XTAL_24MHz / 4) |
| 510 | MCFG_CPU_PROGRAM_MAP(maincpu_map) |
| 511 | MCFG_CPU_IO_MAP(maincpu_io_map) |
| 511 | 512 | MCFG_CPU_PERIODIC_INT_DRIVER(tapatune_state, irq0_line_assert, XTAL_24MHz / 4 / 4 / 4096) |
| 512 | 513 | |
| 513 | | MCFG_QUANTUM_PERFECT_CPU("maincpu") |
| 514 | | |
| 515 | 514 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 516 | 515 | |
| 516 | MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW) |
| 517 | |
| 518 | /* sound hardware */ |
| 519 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 520 | |
| 521 | MCFG_SOUND_ADD("bsmt", BSMT2000, XTAL_24MHz) |
| 522 | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 523 | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 524 | MACHINE_CONFIG_END |
| 525 | |
| 526 | static MACHINE_CONFIG_DERIVED( tapatune, tapatune_base ) |
| 527 | MCFG_CPU_ADD("videocpu", M68000, XTAL_24MHz / 2) |
| 528 | MCFG_CPU_PROGRAM_MAP(video_map) |
| 529 | |
| 530 | MCFG_QUANTUM_PERFECT_CPU("videocpu") |
| 531 | |
| 517 | 532 | MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_24MHz / 16) |
| 518 | 533 | MCFG_MC6845_SHOW_BORDER_AREA(false) |
| 519 | 534 | MCFG_MC6845_CHAR_WIDTH(5) |
| r243426 | r243427 | |
| 521 | 536 | MCFG_MC6845_UPDATE_ROW_CB(tapatune_state, crtc_update_row) |
| 522 | 537 | MCFG_MC6845_OUT_VSYNC_CB(WRITELINE(tapatune_state, crtc_vsync)) |
| 523 | 538 | |
| 524 | | MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(100), TICKET_MOTOR_ACTIVE_LOW, TICKET_STATUS_ACTIVE_LOW) |
| 525 | | |
| 526 | 539 | /* video hardware */ |
| 527 | 540 | MCFG_SCREEN_ADD("screen", RASTER) |
| 528 | 541 | MCFG_SCREEN_RAW_PARAMS(XTAL_24MHz / 16 * 5, 500, 0, 320, 250, 0, 240) |
| 529 | 542 | MCFG_SCREEN_UPDATE_DEVICE("crtc", h46505_device, screen_update) |
| 530 | | |
| 531 | | /* sound hardware */ |
| 532 | | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 533 | | |
| 534 | | MCFG_SOUND_ADD("bsmt", BSMT2000, XTAL_24MHz) |
| 535 | | MCFG_SOUND_ROUTE(0, "lspeaker", 1.0) |
| 536 | | MCFG_SOUND_ROUTE(1, "rspeaker", 1.0) |
| 537 | 543 | MACHINE_CONFIG_END |
| 538 | 544 | |
| 539 | | |
| 540 | 545 | /************************************* |
| 541 | 546 | * |
| 542 | 547 | * ROM definition(s) |
| r243426 | r243427 | |
| 544 | 549 | *************************************/ |
| 545 | 550 | |
| 546 | 551 | ROM_START( tapatune ) |
| 547 | | ROM_REGION( 0x300000, "maincpu", 0 ) |
| 552 | ROM_REGION( 0x300000, "videocpu", 0 ) |
| 548 | 553 | ROM_LOAD16_BYTE("rom1.u12", 0x000000, 0x80000, CRC(1d3ed3f9) SHA1(a42997dffcd4a3e83a5cec75d5bb0c295bd18a8d) ) |
| 549 | 554 | ROM_LOAD16_BYTE("rom0.u3", 0x000001, 0x80000, CRC(d76e5dec) SHA1(11b5fa6019e8b891550d37667aa156b113266b9b) ) |
| 550 | 555 | ROM_LOAD16_BYTE("rom3.u13", 0x100000, 0x80000, CRC(798e004a) SHA1(8e40ea7bf6e9a67d1c182c3b132a71d1334e1ae8) ) |
| r243426 | r243427 | |
| 552 | 557 | ROM_LOAD16_BYTE("rom5.u14", 0x280000, 0x40000, CRC(5d3b8765) SHA1(049a115eb28554cc3f5ca813441c42d6b834fc6f) ) |
| 553 | 558 | ROM_LOAD16_BYTE("rom4.u5", 0x280001, 0x40000, CRC(2a2eda6a) SHA1(ce86f0da2a41e23a842b3aa1659aad4817de333f) ) |
| 554 | 559 | |
| 555 | | ROM_REGION( 0x10000, "soundcpu", 0 ) |
| 560 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 556 | 561 | ROM_LOAD( "rom.u8", 0x0000, 0x10000, CRC(f5c571d7) SHA1(cb5ef3b2bce9a579b54678962082d0e2fc0f1cd9) ) |
| 557 | 562 | |
| 558 | 563 | ROM_REGION( 0x1000000, "bsmt", 0 ) |
| r243426 | r243427 | |
| 563 | 568 | // U21 is not populated |
| 564 | 569 | ROM_END |
| 565 | 570 | |
| 571 | ROM_START( srockbwl ) |
| 572 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 573 | ROM_LOAD( "super_rnb.u8", 0x0000, 0x10000, CRC(ad264e73) SHA1(9f950e7e8ac02619d86d6144e187eddbe299580d) ) |
| 566 | 574 | |
| 575 | ROM_REGION( 0x1000000, "bsmt", 0 ) |
| 576 | ROM_LOAD( "super_rnb_v1.1_4-7-94.u16", 0x000000, 0x20000, CRC(2fe5d1e2) SHA1(5ca18bf369a3021d84a776ce62db44c498119fc9) ) |
| 577 | ROM_CONTINUE( 0x040000, 0x20000 ) |
| 578 | ROM_CONTINUE( 0x080000, 0x20000 ) |
| 579 | ROM_CONTINUE( 0x0c0000, 0x20000 ) |
| 580 | // U21 is not populated |
| 581 | ROM_END |
| 582 | |
| 583 | |
| 567 | 584 | /************************************* |
| 568 | 585 | * |
| 569 | 586 | * Game driver(s) |
| 570 | 587 | * |
| 571 | 588 | *************************************/ |
| 572 | 589 | |
| 573 | | GAME(1994, tapatune, 0, tapatune, tapatune, driver_device, 0, ROT0, "Moloney Manufacturing Inc. / Creative Electronics and Software", "Tap a Tune", 0 ) |
| 590 | GAME(1994, tapatune, 0, tapatune, tapatune, driver_device, 0, ROT0, "Moloney Manufacturing Inc. / Creative Electronics and Software", "Tap a Tune", 0 ) |
| 591 | GAME(1994, srockbwl, 0, tapatune_base, tapatune, driver_device, 0, ROT0, "Bromley", "Super Rock and Bowl (V1.1)", GAME_IS_SKELETON_MECHANICAL ) |