trunk/src/mame/drivers/mastboy.c
| r243477 | r243478 | |
| 445 | 445 | public: |
| 446 | 446 | mastboy_state(const machine_config &mconfig, device_type type, const char *tag) |
| 447 | 447 | : driver_device(mconfig, type, tag), |
| 448 | | m_nvram(*this, "nvram") , |
| 449 | | m_workram(*this, "workram"), |
| 450 | | m_tileram(*this, "tileram"), |
| 451 | | m_colram(*this, "colram"), |
| 452 | 448 | m_maincpu(*this, "maincpu"), |
| 453 | 449 | m_msm(*this, "msm"), |
| 454 | 450 | m_gfxdecode(*this, "gfxdecode"), |
| 455 | | m_palette(*this, "palette") { } |
| 451 | m_palette(*this, "palette"), |
| 452 | m_nvram(*this, "nvram") , |
| 453 | m_workram(*this, "workram"), |
| 454 | m_tileram(*this, "tileram"), |
| 455 | m_colram(*this, "colram") { } |
| 456 | 456 | |
| 457 | | required_shared_ptr<UINT8> m_nvram; |
| 457 | required_device<cpu_device> m_maincpu; |
| 458 | required_device<msm5205_device> m_msm; |
| 459 | required_device<gfxdecode_device> m_gfxdecode; |
| 460 | required_device<palette_device> m_palette; |
| 461 | |
| 462 | required_shared_ptr<UINT8> m_nvram; |
| 458 | 463 | required_shared_ptr<UINT8> m_workram; |
| 459 | 464 | required_shared_ptr<UINT8> m_tileram; |
| 460 | 465 | required_shared_ptr<UINT8> m_colram; |
| 466 | |
| 461 | 467 | UINT8* m_vram; |
| 462 | 468 | UINT8 m_bank; |
| 463 | 469 | int m_irq0_ack; |
| r243477 | r243478 | |
| 466 | 472 | int m_m5205_part; |
| 467 | 473 | int m_m5205_sambit0; |
| 468 | 474 | int m_m5205_sambit1; |
| 475 | |
| 469 | 476 | DECLARE_READ8_MEMBER(banked_ram_r); |
| 470 | 477 | DECLARE_WRITE8_MEMBER(banked_ram_w); |
| 471 | | DECLARE_WRITE8_MEMBER(mastboy_bank_w); |
| 472 | | DECLARE_READ8_MEMBER(mastboy_backupram_r); |
| 473 | | DECLARE_WRITE8_MEMBER(mastboy_backupram_w); |
| 478 | DECLARE_WRITE8_MEMBER(bank_w); |
| 479 | DECLARE_READ8_MEMBER(backupram_r); |
| 480 | DECLARE_WRITE8_MEMBER(backupram_w); |
| 474 | 481 | DECLARE_WRITE8_MEMBER(backupram_enable_w); |
| 475 | | DECLARE_WRITE8_MEMBER(msm5205_mastboy_m5205_sambit0_w); |
| 476 | | DECLARE_WRITE8_MEMBER(msm5205_mastboy_m5205_sambit1_w); |
| 477 | | DECLARE_WRITE8_MEMBER(mastboy_msm5205_data_w); |
| 478 | | DECLARE_WRITE8_MEMBER(mastboy_irq0_ack_w); |
| 479 | | DECLARE_READ8_MEMBER(mastboy_port_38_read); |
| 480 | | DECLARE_READ8_MEMBER(mastboy_nmi_read); |
| 481 | | DECLARE_WRITE8_MEMBER(mastboy_msm5205_reset_w); |
| 482 | | DECLARE_DRIVER_INIT(mastboy); |
| 482 | DECLARE_WRITE8_MEMBER(msm5205_sambit0_w); |
| 483 | DECLARE_WRITE8_MEMBER(msm5205_sambit1_w); |
| 484 | DECLARE_WRITE8_MEMBER(msm5205_data_w); |
| 485 | DECLARE_WRITE8_MEMBER(irq0_ack_w); |
| 486 | DECLARE_READ8_MEMBER(port_38_read); |
| 487 | DECLARE_READ8_MEMBER(nmi_read); |
| 488 | DECLARE_WRITE8_MEMBER(msm5205_reset_w); |
| 489 | DECLARE_WRITE_LINE_MEMBER(adpcm_int); |
| 490 | |
| 491 | virtual void machine_start(); |
| 483 | 492 | virtual void machine_reset(); |
| 484 | 493 | virtual void video_start(); |
| 485 | | UINT32 screen_update_mastboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 486 | | INTERRUPT_GEN_MEMBER(mastboy_interrupt); |
| 487 | | DECLARE_WRITE_LINE_MEMBER(mastboy_adpcm_int); |
| 488 | | required_device<cpu_device> m_maincpu; |
| 489 | | required_device<msm5205_device> m_msm; |
| 490 | | required_device<gfxdecode_device> m_gfxdecode; |
| 491 | | required_device<palette_device> m_palette; |
| 494 | |
| 495 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 496 | |
| 497 | INTERRUPT_GEN_MEMBER(interrupt); |
| 492 | 498 | }; |
| 493 | 499 | |
| 494 | 500 | |
| r243477 | r243478 | |
| 497 | 503 | void mastboy_state::video_start() |
| 498 | 504 | { |
| 499 | 505 | m_gfxdecode->gfx(0)->set_source(m_vram); |
| 506 | |
| 507 | save_pointer(NAME(m_vram), 0x10000); |
| 500 | 508 | } |
| 501 | 509 | |
| 502 | | UINT32 mastboy_state::screen_update_mastboy(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 510 | UINT32 mastboy_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 503 | 511 | { |
| 504 | 512 | int y,x,i; |
| 505 | 513 | int count = 0x000; |
| r243477 | r243478 | |
| 609 | 617 | } |
| 610 | 618 | } |
| 611 | 619 | |
| 612 | | WRITE8_MEMBER(mastboy_state::mastboy_bank_w) |
| 620 | WRITE8_MEMBER(mastboy_state::bank_w) |
| 613 | 621 | { |
| 614 | 622 | // controls access to banked ram / rom |
| 615 | 623 | m_bank = data; |
| r243477 | r243478 | |
| 617 | 625 | |
| 618 | 626 | /* Backup RAM access */ |
| 619 | 627 | |
| 620 | | READ8_MEMBER(mastboy_state::mastboy_backupram_r) |
| 628 | READ8_MEMBER(mastboy_state::backupram_r) |
| 621 | 629 | { |
| 622 | 630 | return m_nvram[offset]; |
| 623 | 631 | } |
| 624 | 632 | |
| 625 | | WRITE8_MEMBER(mastboy_state::mastboy_backupram_w) |
| 633 | WRITE8_MEMBER(mastboy_state::backupram_w) |
| 626 | 634 | { |
| 627 | 635 | // if (m_backupram_enabled) |
| 628 | 636 | // { |
| r243477 | r243478 | |
| 643 | 651 | |
| 644 | 652 | /* MSM5205 Related */ |
| 645 | 653 | |
| 646 | | WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit0_w) |
| 654 | WRITE8_MEMBER(mastboy_state::msm5205_sambit0_w) |
| 647 | 655 | { |
| 648 | 656 | m_m5205_sambit0 = data & 1; |
| 649 | 657 | m_msm->playmode_w((1 << 2) | (m_m5205_sambit1 << 1) | (m_m5205_sambit0) ); |
| r243477 | r243478 | |
| 651 | 659 | logerror("msm5205 samplerate bit 0, set to %02x\n",data); |
| 652 | 660 | } |
| 653 | 661 | |
| 654 | | WRITE8_MEMBER(mastboy_state::msm5205_mastboy_m5205_sambit1_w) |
| 662 | WRITE8_MEMBER(mastboy_state::msm5205_sambit1_w) |
| 655 | 663 | { |
| 656 | 664 | m_m5205_sambit1 = data & 1; |
| 657 | 665 | |
| r243477 | r243478 | |
| 660 | 668 | logerror("msm5205 samplerate bit 0, set to %02x\n",data); |
| 661 | 669 | } |
| 662 | 670 | |
| 663 | | WRITE8_MEMBER(mastboy_state::mastboy_msm5205_reset_w) |
| 671 | WRITE8_MEMBER(mastboy_state::msm5205_reset_w) |
| 664 | 672 | { |
| 665 | 673 | m_m5205_part = 0; |
| 666 | 674 | m_msm->reset_w(data & 1); |
| 667 | 675 | } |
| 668 | 676 | |
| 669 | | WRITE8_MEMBER(mastboy_state::mastboy_msm5205_data_w) |
| 677 | WRITE8_MEMBER(mastboy_state::msm5205_data_w) |
| 670 | 678 | { |
| 671 | 679 | m_m5205_next = data; |
| 672 | 680 | } |
| 673 | 681 | |
| 674 | | WRITE_LINE_MEMBER(mastboy_state::mastboy_adpcm_int) |
| 682 | WRITE_LINE_MEMBER(mastboy_state::adpcm_int) |
| 675 | 683 | { |
| 676 | 684 | m_msm->data_w(m_m5205_next); |
| 677 | 685 | m_m5205_next >>= 4; |
| r243477 | r243478 | |
| 684 | 692 | |
| 685 | 693 | /* Interrupt Handling */ |
| 686 | 694 | |
| 687 | | WRITE8_MEMBER(mastboy_state::mastboy_irq0_ack_w) |
| 695 | WRITE8_MEMBER(mastboy_state::irq0_ack_w) |
| 688 | 696 | { |
| 689 | 697 | m_irq0_ack = data; |
| 690 | 698 | if ((data & 1) == 1) |
| 691 | 699 | m_maincpu->set_input_line(0, CLEAR_LINE); |
| 692 | 700 | } |
| 693 | 701 | |
| 694 | | INTERRUPT_GEN_MEMBER(mastboy_state::mastboy_interrupt) |
| 702 | INTERRUPT_GEN_MEMBER(mastboy_state::interrupt) |
| 695 | 703 | { |
| 696 | 704 | if ((m_irq0_ack & 1) == 1) |
| 697 | 705 | { |
| r243477 | r243478 | |
| 711 | 719 | |
| 712 | 720 | AM_RANGE(0xc000, 0xffff) AM_READWRITE(banked_ram_r,banked_ram_w) // mastboy bank area read / write |
| 713 | 721 | |
| 714 | | AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(mastboy_backupram_r,mastboy_backupram_w) AM_SHARE("nvram") |
| 722 | AM_RANGE(0xff000, 0xff7ff) AM_READWRITE(backupram_r,backupram_w) AM_SHARE("nvram") |
| 715 | 723 | |
| 716 | 724 | AM_RANGE(0xff800, 0xff807) AM_READ_PORT("P1") |
| 717 | 725 | AM_RANGE(0xff808, 0xff80f) AM_READ_PORT("P2") |
| 718 | 726 | AM_RANGE(0xff810, 0xff817) AM_READ_PORT("DSW1") |
| 719 | 727 | AM_RANGE(0xff818, 0xff81f) AM_READ_PORT("DSW2") |
| 720 | 728 | |
| 721 | | AM_RANGE(0xff820, 0xff827) AM_WRITE(mastboy_bank_w) |
| 722 | | AM_RANGE(0xff828, 0xff828) AM_DEVWRITE("saa", saa1099_device, saa1099_data_w) |
| 723 | | AM_RANGE(0xff829, 0xff829) AM_DEVWRITE("saa", saa1099_device, saa1099_control_w) |
| 724 | | AM_RANGE(0xff830, 0xff830) AM_WRITE(mastboy_msm5205_data_w) |
| 725 | | AM_RANGE(0xff838, 0xff838) AM_WRITE(mastboy_irq0_ack_w) |
| 726 | | AM_RANGE(0xff839, 0xff839) AM_WRITE(msm5205_mastboy_m5205_sambit0_w) |
| 727 | | AM_RANGE(0xff83a, 0xff83a) AM_WRITE(msm5205_mastboy_m5205_sambit1_w) |
| 728 | | AM_RANGE(0xff83b, 0xff83b) AM_WRITE(mastboy_msm5205_reset_w) |
| 729 | AM_RANGE(0xff820, 0xff827) AM_WRITE(bank_w) |
| 730 | AM_RANGE(0xff828, 0xff828) AM_DEVWRITE("saa", saa1099_device, data_w) |
| 731 | AM_RANGE(0xff829, 0xff829) AM_DEVWRITE("saa", saa1099_device, control_w) |
| 732 | AM_RANGE(0xff830, 0xff830) AM_WRITE(msm5205_data_w) |
| 733 | AM_RANGE(0xff838, 0xff838) AM_WRITE(irq0_ack_w) |
| 734 | AM_RANGE(0xff839, 0xff839) AM_WRITE(msm5205_sambit0_w) |
| 735 | AM_RANGE(0xff83a, 0xff83a) AM_WRITE(msm5205_sambit1_w) |
| 736 | AM_RANGE(0xff83b, 0xff83b) AM_WRITE(msm5205_reset_w) |
| 729 | 737 | AM_RANGE(0xff83c, 0xff83c) AM_WRITE(backupram_enable_w) |
| 730 | 738 | |
| 731 | 739 | AM_RANGE(0xffc00, 0xfffff) AM_RAM // Internal RAM |
| r243477 | r243478 | |
| 733 | 741 | |
| 734 | 742 | /* Ports */ |
| 735 | 743 | |
| 736 | | READ8_MEMBER(mastboy_state::mastboy_port_38_read) |
| 744 | READ8_MEMBER(mastboy_state::port_38_read) |
| 737 | 745 | { |
| 738 | 746 | return 0x00; |
| 739 | 747 | } |
| 740 | 748 | |
| 741 | | READ8_MEMBER(mastboy_state::mastboy_nmi_read) |
| 749 | READ8_MEMBER(mastboy_state::nmi_read) |
| 742 | 750 | { |
| 743 | 751 | // this is read in the NMI, it's related to the Z180 MMU I think, must return right value or game jumps to 0000 |
| 744 | 752 | return 0x00; |
| 745 | 753 | } |
| 746 | 754 | |
| 747 | 755 | static ADDRESS_MAP_START( mastboy_io_map, AS_IO, 8, mastboy_state ) |
| 748 | | AM_RANGE(0x38, 0x38) AM_READ(mastboy_port_38_read) |
| 749 | | AM_RANGE(0x39, 0x39) AM_READ(mastboy_nmi_read) |
| 756 | AM_RANGE(0x38, 0x38) AM_READ(port_38_read) |
| 757 | AM_RANGE(0x39, 0x39) AM_READ(nmi_read) |
| 750 | 758 | ADDRESS_MAP_END |
| 751 | 759 | |
| 752 | 760 | /* Input Ports */ |
| r243477 | r243478 | |
| 866 | 874 | |
| 867 | 875 | /* Machine Functions / Driver */ |
| 868 | 876 | |
| 877 | void mastboy_state::machine_start() |
| 878 | { |
| 879 | m_vram = memregion( "gfx1" )->base(); // makes decoding the RAM based tiles easier this way |
| 880 | |
| 881 | save_item(NAME(m_bank)); |
| 882 | save_item(NAME(m_irq0_ack)); |
| 883 | save_item(NAME(m_backupram_enabled)); |
| 884 | save_item(NAME(m_m5205_next)); |
| 885 | save_item(NAME(m_m5205_part)); |
| 886 | save_item(NAME(m_m5205_sambit0)); |
| 887 | save_item(NAME(m_m5205_sambit1)); |
| 888 | } |
| 889 | |
| 869 | 890 | void mastboy_state::machine_reset() |
| 870 | 891 | { |
| 871 | 892 | /* clear some ram */ |
| r243477 | r243478 | |
| 885 | 906 | MCFG_CPU_ADD("maincpu", Z180, 12000000/2) /* HD647180X0CP6-1M1R */ |
| 886 | 907 | MCFG_CPU_PROGRAM_MAP(mastboy_map) |
| 887 | 908 | MCFG_CPU_IO_MAP(mastboy_io_map) |
| 888 | | MCFG_CPU_VBLANK_INT_DRIVER("screen", mastboy_state, mastboy_interrupt) |
| 909 | MCFG_CPU_VBLANK_INT_DRIVER("screen", mastboy_state, interrupt) |
| 889 | 910 | |
| 890 | 911 | MCFG_NVRAM_ADD_1FILL("nvram") |
| 891 | 912 | |
| r243477 | r243478 | |
| 896 | 917 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) |
| 897 | 918 | MCFG_SCREEN_SIZE(256, 256) |
| 898 | 919 | MCFG_SCREEN_VISIBLE_AREA(0, 256-1, 16, 256-16-1) |
| 899 | | MCFG_SCREEN_UPDATE_DRIVER(mastboy_state, screen_update_mastboy) |
| 920 | MCFG_SCREEN_UPDATE_DRIVER(mastboy_state, screen_update) |
| 900 | 921 | MCFG_SCREEN_PALETTE("palette") |
| 901 | 922 | |
| 902 | 923 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", mastboy) |
| r243477 | r243478 | |
| 909 | 930 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 910 | 931 | |
| 911 | 932 | MCFG_SOUND_ADD("msm", MSM5205, 384000) |
| 912 | | MCFG_MSM5205_VCLK_CB(WRITELINE(mastboy_state, mastboy_adpcm_int)) /* interrupt function */ |
| 933 | MCFG_MSM5205_VCLK_CB(WRITELINE(mastboy_state, adpcm_int)) /* interrupt function */ |
| 913 | 934 | MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_SEX_4B) /* 4KHz 4-bit */ |
| 914 | 935 | MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) |
| 915 | 936 | MACHINE_CONFIG_END |
| r243477 | r243478 | |
| 993 | 1014 | /* 0x1c0000 to 0x1fffff EMPTY */ |
| 994 | 1015 | ROM_END |
| 995 | 1016 | |
| 996 | | DRIVER_INIT_MEMBER(mastboy_state,mastboy) |
| 997 | | { |
| 998 | | m_vram = memregion( "gfx1" )->base(); // makes decoding the RAM based tiles easier this way |
| 999 | | } |
| 1000 | 1017 | |
| 1001 | | GAME( 1991, mastboy, 0, mastboy, mastboy, mastboy_state, mastboy, ROT0, "Gaelco", "Master Boy (Spanish, PCB Rev A)", 0 ) |
| 1002 | | GAME( 1991, mastboyi, mastboy, mastboy, mastboy, mastboy_state, mastboy, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A)", 0 ) |
| 1018 | GAME( 1991, mastboy, 0, mastboy, mastboy, driver_device, 0, ROT0, "Gaelco", "Master Boy (Spanish, PCB Rev A)", GAME_SUPPORTS_SAVE ) |
| 1019 | GAME( 1991, mastboyi, mastboy, mastboy, mastboy, driver_device, 0, ROT0, "Gaelco", "Master Boy (Italian, PCB Rev A)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/drivers/mpu4vid.c
| r243477 | r243478 | |
| 1283 | 1283 | AM_RANGE(0x000000, 0x7fffff) AM_ROM |
| 1284 | 1284 | AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") |
| 1285 | 1285 | // AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ |
| 1286 | | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) |
| 1287 | | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) |
| 1286 | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) |
| 1287 | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) |
| 1288 | 1288 | AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) |
| 1289 | 1289 | /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ |
| 1290 | 1290 | |
| r243477 | r243478 | |
| 1303 | 1303 | AM_RANGE(0x600000, 0x63ffff) AM_RAM /* The Mating Game has an extra 256kB RAM on the program card */ |
| 1304 | 1304 | // AM_RANGE(0x640000, 0x7fffff) AM_NOP /* Possible bug, reads and writes here */ |
| 1305 | 1305 | AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") |
| 1306 | | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) |
| 1307 | | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) |
| 1306 | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) |
| 1307 | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) |
| 1308 | 1308 | AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) |
| 1309 | 1309 | |
| 1310 | 1310 | AM_RANGE(0xb00000, 0xb0000f) AM_DEVREADWRITE8("scn2674_vid", scn2674_device, mpu4_vid_scn2674_r, mpu4_vid_scn2674_w,0x00ff) |
| r243477 | r243478 | |
| 1325 | 1325 | AM_RANGE(0x000000, 0x7fffff) AM_ROM |
| 1326 | 1326 | AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") |
| 1327 | 1327 | AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ |
| 1328 | | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) |
| 1329 | | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) |
| 1328 | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) |
| 1329 | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) |
| 1330 | 1330 | AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) |
| 1331 | 1331 | // AM_RANGE(0xa00000, 0xa0000f) AM_READWRITE(bt471_r,bt471_w) //Some games use this |
| 1332 | 1332 | /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ |
| r243477 | r243478 | |
| 1343 | 1343 | AM_RANGE(0x000000, 0x7fffff) AM_ROM |
| 1344 | 1344 | AM_RANGE(0x800000, 0x80ffff) AM_RAM AM_SHARE("vid_mainram") |
| 1345 | 1345 | AM_RANGE(0x810000, 0x81ffff) AM_RAM /* ? */ |
| 1346 | | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) |
| 1347 | | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) |
| 1346 | AM_RANGE(0x900000, 0x900001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) |
| 1347 | AM_RANGE(0x900002, 0x900003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) |
| 1348 | 1348 | AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(ef9369_r, ef9369_w,0x00ff) |
| 1349 | 1349 | //AM_RANGE(0xa00000, 0xa00003) AM_READWRITE8(bt471_r,bt471_w,0x00ff) Some games use this |
| 1350 | 1350 | /* AM_RANGE(0xa00004, 0xa0000f) AM_READWRITE(mpu4_vid_unmap_r, mpu4_vid_unmap_w) */ |
trunk/src/mame/drivers/xorworld.c
| r243477 | r243478 | |
| 62 | 62 | m_eeprom->di_write(data & 0x01); |
| 63 | 63 | } |
| 64 | 64 | |
| 65 | | WRITE16_MEMBER(xorworld_state::xorworld_irq2_ack_w) |
| 65 | WRITE16_MEMBER(xorworld_state::irq2_ack_w) |
| 66 | 66 | { |
| 67 | 67 | m_maincpu->set_input_line(2, CLEAR_LINE); |
| 68 | 68 | } |
| 69 | 69 | |
| 70 | | WRITE16_MEMBER(xorworld_state::xorworld_irq6_ack_w) |
| 70 | WRITE16_MEMBER(xorworld_state::irq6_ack_w) |
| 71 | 71 | { |
| 72 | 72 | m_maincpu->set_input_line(6, CLEAR_LINE); |
| 73 | 73 | } |
| r243477 | r243478 | |
| 77 | 77 | AM_RANGE(0x200000, 0x200001) AM_READ_PORT("P1") |
| 78 | 78 | AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P2") |
| 79 | 79 | AM_RANGE(0x600000, 0x600001) AM_READ_PORT("DSW") |
| 80 | | AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("saa", saa1099_device, saa1099_data_w, 0x00ff) |
| 81 | | AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8("saa", saa1099_device, saa1099_control_w, 0x00ff) |
| 80 | AM_RANGE(0x800000, 0x800001) AM_DEVWRITE8("saa", saa1099_device, data_w, 0x00ff) |
| 81 | AM_RANGE(0x800002, 0x800003) AM_DEVWRITE8("saa", saa1099_device, control_w, 0x00ff) |
| 82 | 82 | AM_RANGE(0xa00008, 0xa00009) AM_WRITE(eeprom_chip_select_w) |
| 83 | 83 | AM_RANGE(0xa0000a, 0xa0000b) AM_WRITE(eeprom_serial_clock_w) |
| 84 | 84 | AM_RANGE(0xa0000c, 0xa0000d) AM_WRITE(eeprom_data_w) |
| 85 | | AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(xorworld_videoram16_w) AM_SHARE("videoram") |
| 85 | AM_RANGE(0xffc000, 0xffc7ff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") |
| 86 | 86 | AM_RANGE(0xffc800, 0xffc87f) AM_RAM AM_SHARE("spriteram") |
| 87 | | AM_RANGE(0xffc880, 0xffc881) AM_WRITE(xorworld_irq2_ack_w) |
| 88 | | AM_RANGE(0xffc882, 0xffc883) AM_WRITE(xorworld_irq6_ack_w) |
| 87 | AM_RANGE(0xffc880, 0xffc881) AM_WRITE(irq2_ack_w) |
| 88 | AM_RANGE(0xffc882, 0xffc883) AM_WRITE(irq6_ack_w) |
| 89 | 89 | AM_RANGE(0xffc884, 0xffffff) AM_RAM |
| 90 | 90 | ADDRESS_MAP_END |
| 91 | 91 | |
| r243477 | r243478 | |
| 182 | 182 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) |
| 183 | 183 | MCFG_SCREEN_SIZE(32*8, 32*8) |
| 184 | 184 | MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) |
| 185 | | MCFG_SCREEN_UPDATE_DRIVER(xorworld_state, screen_update_xorworld) |
| 185 | MCFG_SCREEN_UPDATE_DRIVER(xorworld_state, screen_update) |
| 186 | 186 | MCFG_SCREEN_PALETTE("palette") |
| 187 | 187 | |
| 188 | 188 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", xorworld) |
| r243477 | r243478 | |
| 235 | 235 | } |
| 236 | 236 | |
| 237 | 237 | |
| 238 | | GAME( 1990, xorworld, 0, xorworld, xorworld, xorworld_state, xorworld, ROT0, "Gaelco", "Xor World (prototype)", 0 ) |
| 238 | GAME( 1990, xorworld, 0, xorworld, xorworld, xorworld_state, xorworld, ROT0, "Gaelco", "Xor World (prototype)", GAME_SUPPORTS_SAVE ) |
trunk/src/mame/includes/xorworld.h
| r243477 | r243478 | |
| 5 | 5 | public: |
| 6 | 6 | xorworld_state(const machine_config &mconfig, device_type type, const char *tag) |
| 7 | 7 | : driver_device(mconfig, type, tag), |
| 8 | | m_videoram(*this, "videoram"), |
| 9 | | m_spriteram(*this, "spriteram"), |
| 10 | 8 | m_maincpu(*this, "maincpu"), |
| 11 | 9 | m_eeprom(*this, "eeprom"), |
| 12 | 10 | m_gfxdecode(*this, "gfxdecode"), |
| 13 | | m_palette(*this, "palette") { } |
| 11 | m_palette(*this, "palette"), |
| 12 | m_videoram(*this, "videoram"), |
| 13 | m_spriteram(*this, "spriteram") { } |
| 14 | 14 | |
| 15 | required_device<cpu_device> m_maincpu; |
| 16 | required_device<eeprom_serial_93cxx_device> m_eeprom; |
| 17 | required_device<gfxdecode_device> m_gfxdecode; |
| 18 | required_device<palette_device> m_palette; |
| 19 | |
| 15 | 20 | required_shared_ptr<UINT16> m_videoram; |
| 21 | required_shared_ptr<UINT16> m_spriteram; |
| 22 | |
| 16 | 23 | tilemap_t *m_bg_tilemap; |
| 17 | | required_shared_ptr<UINT16> m_spriteram; |
| 18 | | DECLARE_WRITE16_MEMBER(xorworld_irq2_ack_w); |
| 19 | | DECLARE_WRITE16_MEMBER(xorworld_irq6_ack_w); |
| 20 | | DECLARE_WRITE16_MEMBER(xorworld_videoram16_w); |
| 24 | |
| 25 | DECLARE_WRITE16_MEMBER(irq2_ack_w); |
| 26 | DECLARE_WRITE16_MEMBER(irq6_ack_w); |
| 27 | DECLARE_WRITE16_MEMBER(videoram_w); |
| 21 | 28 | DECLARE_WRITE16_MEMBER(eeprom_chip_select_w); |
| 22 | 29 | DECLARE_WRITE16_MEMBER(eeprom_serial_clock_w); |
| 23 | 30 | DECLARE_WRITE16_MEMBER(eeprom_data_w); |
| 31 | |
| 32 | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
| 33 | |
| 24 | 34 | DECLARE_DRIVER_INIT(xorworld); |
| 25 | | TILE_GET_INFO_MEMBER(get_bg_tile_info); |
| 26 | 35 | virtual void video_start(); |
| 27 | 36 | DECLARE_PALETTE_INIT(xorworld); |
| 28 | | UINT32 screen_update_xorworld(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 37 | |
| 38 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 29 | 39 | void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); |
| 30 | | required_device<cpu_device> m_maincpu; |
| 31 | | required_device<eeprom_serial_93cxx_device> m_eeprom; |
| 32 | | required_device<gfxdecode_device> m_gfxdecode; |
| 33 | | required_device<palette_device> m_palette; |
| 34 | 40 | }; |