trunk/src/mame/drivers/welltris.c
| r243555 | r243556 | |
| 320 | 320 | |
| 321 | 321 | |
| 322 | 322 | |
| 323 | | WRITE8_MEMBER(welltris_state::welltris_sh_bankswitch_w) |
| 323 | WRITE8_MEMBER(welltris_state::sound_bankswitch_w) |
| 324 | 324 | { |
| 325 | | UINT8 *rom = memregion("audiocpu")->base() + 0x10000; |
| 326 | | |
| 327 | | membank("bank1")->set_base(rom + (data & 0x03) * 0x8000); |
| 325 | membank("soundbank")->set_entry(data & 0x03); |
| 328 | 326 | } |
| 329 | 327 | |
| 330 | 328 | |
| r243555 | r243556 | |
| 355 | 353 | AM_RANGE(0x800000, 0x81ffff) AM_RAM AM_SHARE("pixelram") /* Graph_1 & 2*/ |
| 356 | 354 | AM_RANGE(0xff8000, 0xffbfff) AM_RAM /* work */ |
| 357 | 355 | AM_RANGE(0xffc000, 0xffc3ff) AM_RAM AM_SHARE("spriteram") /* Sprite */ |
| 358 | | AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(welltris_charvideoram_w) AM_SHARE("charvideoram") /* Char */ |
| 356 | AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(charvideoram_w) AM_SHARE("charvideoram") /* Char */ |
| 359 | 357 | AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") /* Palette */ |
| 360 | 358 | AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1") /* Bottom Controls */ |
| 361 | | AM_RANGE(0xfff000, 0xfff001) AM_WRITE(welltris_palette_bank_w) |
| 359 | AM_RANGE(0xfff000, 0xfff001) AM_WRITE(palette_bank_w) |
| 362 | 360 | AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("P2") /* Top Controls */ |
| 363 | | AM_RANGE(0xfff002, 0xfff003) AM_WRITE(welltris_gfxbank_w) |
| 361 | AM_RANGE(0xfff002, 0xfff003) AM_WRITE(gfxbank_w) |
| 364 | 362 | AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("P3") /* Left Side Ctrls */ |
| 365 | | AM_RANGE(0xfff004, 0xfff007) AM_WRITE(welltris_scrollreg_w) |
| 363 | AM_RANGE(0xfff004, 0xfff007) AM_WRITE(scrollreg_w) |
| 366 | 364 | AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("P4") /* Right Side Ctrls */ |
| 367 | 365 | AM_RANGE(0xfff008, 0xfff009) AM_READ_PORT("SYSTEM") /* Bit 5 Tested at start of irq 1 */ |
| 368 | 366 | AM_RANGE(0xfff008, 0xfff009) AM_WRITE(sound_command_w) |
| r243555 | r243556 | |
| 376 | 374 | static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, welltris_state ) |
| 377 | 375 | AM_RANGE(0x0000, 0x77ff) AM_ROM |
| 378 | 376 | AM_RANGE(0x7800, 0x7fff) AM_RAM |
| 379 | | AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") |
| 377 | AM_RANGE(0x8000, 0xffff) AM_ROMBANK("soundbank") |
| 380 | 378 | ADDRESS_MAP_END |
| 381 | 379 | |
| 382 | 380 | static ADDRESS_MAP_START( sound_port_map, AS_IO, 8, welltris_state ) |
| 383 | 381 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 384 | | AM_RANGE(0x00, 0x00) AM_WRITE(welltris_sh_bankswitch_w) |
| 382 | AM_RANGE(0x00, 0x00) AM_WRITE(sound_bankswitch_w) |
| 385 | 383 | AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write) |
| 386 | 384 | AM_RANGE(0x10, 0x10) AM_READ(soundlatch_byte_r) |
| 387 | 385 | AM_RANGE(0x18, 0x18) AM_WRITE(pending_command_clear_w) |
| r243555 | r243556 | |
| 640 | 638 | |
| 641 | 639 | |
| 642 | 640 | |
| 643 | | static const gfx_layout welltris_charlayout = |
| 641 | static const gfx_layout charlayout = |
| 644 | 642 | { |
| 645 | 643 | 8,8, |
| 646 | 644 | RGN_FRAC(1,1), |
| r243555 | r243556 | |
| 651 | 649 | 32*8 |
| 652 | 650 | }; |
| 653 | 651 | |
| 654 | | static const gfx_layout welltris_spritelayout = |
| 652 | static const gfx_layout spritelayout = |
| 655 | 653 | { |
| 656 | 654 | 16,16, |
| 657 | 655 | RGN_FRAC(1,2), |
| r243555 | r243556 | |
| 665 | 663 | }; |
| 666 | 664 | |
| 667 | 665 | static GFXDECODE_START( welltris ) |
| 668 | | GFXDECODE_ENTRY( "gfx1", 0, welltris_charlayout, 16* 0, 4*16 ) |
| 669 | | GFXDECODE_ENTRY( "gfx2", 0, welltris_spritelayout, 16*96, 2*16 ) |
| 666 | GFXDECODE_ENTRY( "gfx1", 0, charlayout, 16* 0, 4*16 ) |
| 667 | GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 16*96, 2*16 ) |
| 670 | 668 | GFXDECODE_END |
| 671 | 669 | |
| 672 | 670 | |
| r243555 | r243556 | |
| 688 | 686 | #endif |
| 689 | 687 | } |
| 690 | 688 | |
| 691 | | DRIVER_INIT_MEMBER(welltris_state,quiz18k) |
| 689 | void welltris_state::machine_start() |
| 692 | 690 | { |
| 691 | membank("soundbank")->configure_entries(0, 4, memregion("audiocpu")->base(), 0x8000); |
| 692 | |
| 693 | save_item(NAME(m_pending_command)); |
| 693 | 694 | } |
| 694 | 695 | |
| 695 | | |
| 696 | | |
| 697 | 696 | static MACHINE_CONFIG_START( welltris, welltris_state ) |
| 698 | 697 | |
| 699 | 698 | /* basic machine hardware */ |
| r243555 | r243556 | |
| 711 | 710 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 712 | 711 | MCFG_SCREEN_SIZE(512, 256) |
| 713 | 712 | MCFG_SCREEN_VISIBLE_AREA(15, 367-1, 8, 248-1) |
| 714 | | MCFG_SCREEN_UPDATE_DRIVER(welltris_state, screen_update_welltris) |
| 713 | MCFG_SCREEN_UPDATE_DRIVER(welltris_state, screen_update) |
| 715 | 714 | MCFG_SCREEN_PALETTE("palette") |
| 716 | 715 | |
| 717 | 716 | MCFG_GFXDECODE_ADD("gfxdecode", "palette", welltris) |
| r243555 | r243556 | |
| 755 | 754 | ROM_LOAD16_BYTE( "lh532j10.10", 0x100000, 0x40000, CRC(1187c665) SHA1(c6c55016e46805694348b386e521a3ef1a443621) ) |
| 756 | 755 | ROM_LOAD16_BYTE( "lh532j11.9", 0x100001, 0x40000, CRC(18eda9e5) SHA1(c01d1dc6bfde29797918490947c89440b58d5372) ) |
| 757 | 756 | |
| 758 | | ROM_REGION( 0x30000, "audiocpu", 0 ) /* 64k for the audio CPU + banks */ |
| 757 | ROM_REGION( 0x20000, "audiocpu", 0 ) /* 128k for the audio CPU + banks */ |
| 759 | 758 | ROM_LOAD( "3.144", 0x00000, 0x20000, CRC(ae8f763e) SHA1(255419e02189c2e156c1fbcb0cd4aedd14ed8ffa) ) |
| 760 | | ROM_RELOAD( 0x10000, 0x20000 ) |
| 761 | 759 | |
| 762 | 760 | ROM_REGION( 0x0a0000, "gfx1", 0 ) /* CHAR Tiles */ |
| 763 | 761 | ROM_LOAD( "lh534j12.77", 0x000000, 0x80000, CRC(b61a8b74) SHA1(e17f7355375bdc166ef8131f7de9dbda5453f570) ) |
| r243555 | r243556 | |
| 782 | 780 | ROM_LOAD16_BYTE( "lh532j10.10", 0x100000, 0x40000, CRC(1187c665) SHA1(c6c55016e46805694348b386e521a3ef1a443621) ) |
| 783 | 781 | ROM_LOAD16_BYTE( "lh532j11.9", 0x100001, 0x40000, CRC(18eda9e5) SHA1(c01d1dc6bfde29797918490947c89440b58d5372) ) |
| 784 | 782 | |
| 785 | | ROM_REGION( 0x30000, "audiocpu", 0 ) /* 64k for the audio CPU + banks */ |
| 783 | ROM_REGION( 0x20000, "audiocpu", 0 ) /* 128k for the audio CPU + banks */ |
| 786 | 784 | ROM_LOAD( "3.144", 0x00000, 0x20000, CRC(ae8f763e) SHA1(255419e02189c2e156c1fbcb0cd4aedd14ed8ffa) ) |
| 787 | | ROM_RELOAD( 0x10000, 0x20000 ) |
| 788 | 785 | |
| 789 | 786 | ROM_REGION( 0x0a0000, "gfx1", 0 ) /* CHAR Tiles */ |
| 790 | 787 | ROM_LOAD( "lh534j12.77", 0x000000, 0x80000, CRC(b61a8b74) SHA1(e17f7355375bdc166ef8131f7de9dbda5453f570) ) |
| r243555 | r243556 | |
| 809 | 806 | ROM_LOAD16_BYTE( "ic10.bin", 0x100000, 0x40000, CRC(501453a3) SHA1(d127f417f1c52333e478ac397fbe8a2f223b1ce7) ) |
| 810 | 807 | ROM_LOAD16_BYTE( "ic9.bin", 0x100001, 0x40000, CRC(99b6840f) SHA1(8409a33c64729066bfed6e49dcd84f30906274cb) ) |
| 811 | 808 | |
| 812 | | ROM_REGION( 0x30000, "audiocpu", 0 ) /* 64k for the audio CPU + banks */ |
| 809 | ROM_REGION( 0x20000, "audiocpu", 0 ) /* 128k for the audio CPU + banks */ |
| 813 | 810 | ROM_LOAD( "3-ic144.bin", 0x00000, 0x20000, CRC(72d372e3) SHA1(d077e34947de1050b68d76506cc8926b06a94a76) ) |
| 814 | | ROM_RELOAD( 0x10000, 0x20000 ) |
| 815 | 811 | |
| 816 | 812 | ROM_REGION( 0x180000, "gfx1", 0 ) /* CHAR Tiles */ |
| 817 | 813 | ROM_LOAD( "ic77.bin", 0x000000, 0x80000, CRC(af3b6fd1) SHA1(d22f7cf62a94ae3a2dcb0236630e9ac88d5e528b) ) |
| r243555 | r243556 | |
| 832 | 828 | |
| 833 | 829 | |
| 834 | 830 | |
| 835 | | GAME( 1991, welltris, 0, welltris, welltris, welltris_state, welltris, ROT0, "Video System Co.", "Welltris (World?, 2 players)", GAME_NO_COCKTAIL ) |
| 836 | | GAME( 1991, welltrisj,welltris, welltris, welltris, welltris_state, welltris, ROT0, "Video System Co.", "Welltris (Japan, 2 players)", GAME_NO_COCKTAIL ) |
| 837 | | GAME( 1992, quiz18k, 0, quiz18k, quiz18k, welltris_state, quiz18k, ROT0, "EIM", "Miyasu Nonki no Quiz 18-Kin", GAME_NO_COCKTAIL ) |
| 831 | GAME( 1991, welltris, 0, welltris, welltris, welltris_state, welltris, ROT0, "Video System Co.", "Welltris (World?, 2 players)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 832 | GAME( 1991, welltrisj,welltris, welltris, welltris, welltris_state, welltris, ROT0, "Video System Co.", "Welltris (Japan, 2 players)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
| 833 | GAME( 1992, quiz18k, 0, quiz18k, quiz18k, driver_device, 0, ROT0, "EIM", "Miyasu Nonki no Quiz 18-Kin", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) |
trunk/src/mame/includes/welltris.h
| r243555 | r243556 | |
| 5 | 5 | public: |
| 6 | 6 | welltris_state(const machine_config &mconfig, device_type type, const char *tag) |
| 7 | 7 | : driver_device(mconfig, type, tag), |
| 8 | m_maincpu(*this, "maincpu"), |
| 9 | m_audiocpu(*this, "audiocpu"), |
| 10 | m_spr_old(*this, "vsystem_spr_old"), |
| 11 | m_gfxdecode(*this, "gfxdecode"), |
| 8 | 12 | m_spriteram(*this, "spriteram"), |
| 9 | 13 | m_pixelram(*this, "pixelram"), |
| 10 | | m_charvideoram(*this, "charvideoram"), |
| 11 | | m_spr_old(*this, "vsystem_spr_old"), |
| 12 | | m_maincpu(*this, "maincpu"), |
| 13 | | m_audiocpu(*this, "audiocpu"), |
| 14 | | m_gfxdecode(*this, "gfxdecode") { } |
| 14 | m_charvideoram(*this, "charvideoram") { } |
| 15 | 15 | |
| 16 | | int m_pending_command; |
| 17 | 16 | |
| 17 | required_device<cpu_device> m_maincpu; |
| 18 | required_device<cpu_device> m_audiocpu; |
| 19 | required_device<vsystem_spr2_device> m_spr_old; |
| 20 | required_device<gfxdecode_device> m_gfxdecode; |
| 21 | |
| 18 | 22 | required_shared_ptr<UINT16> m_spriteram; |
| 19 | 23 | required_shared_ptr<UINT16> m_pixelram; |
| 20 | 24 | required_shared_ptr<UINT16> m_charvideoram; |
| 21 | 25 | |
| 22 | | /* devices referenced above */ |
| 23 | | required_device<vsystem_spr2_device> m_spr_old; |
| 24 | | |
| 25 | 26 | tilemap_t *m_char_tilemap; |
| 26 | | UINT8 m_gfxbank[8]; |
| 27 | int m_pending_command; |
| 28 | UINT8 m_gfxbank[2]; |
| 27 | 29 | UINT16 m_charpalettebank; |
| 28 | 30 | UINT16 m_spritepalettebank; |
| 29 | 31 | UINT16 m_pixelpalettebank; |
| 30 | 32 | int m_scrollx; |
| 31 | 33 | int m_scrolly; |
| 32 | | DECLARE_WRITE8_MEMBER(welltris_sh_bankswitch_w); |
| 34 | |
| 35 | DECLARE_WRITE8_MEMBER(sound_bankswitch_w); |
| 33 | 36 | DECLARE_WRITE16_MEMBER(sound_command_w); |
| 34 | 37 | DECLARE_WRITE8_MEMBER(pending_command_clear_w); |
| 35 | | DECLARE_WRITE16_MEMBER(welltris_palette_bank_w); |
| 36 | | DECLARE_WRITE16_MEMBER(welltris_gfxbank_w); |
| 37 | | DECLARE_WRITE16_MEMBER(welltris_scrollreg_w); |
| 38 | | DECLARE_WRITE16_MEMBER(welltris_charvideoram_w); |
| 39 | | void setbank(int num, int bank); |
| 38 | DECLARE_WRITE16_MEMBER(palette_bank_w); |
| 39 | DECLARE_WRITE16_MEMBER(gfxbank_w); |
| 40 | DECLARE_WRITE16_MEMBER(scrollreg_w); |
| 41 | DECLARE_WRITE16_MEMBER(charvideoram_w); |
| 42 | DECLARE_WRITE_LINE_MEMBER(irqhandler); |
| 43 | |
| 40 | 44 | DECLARE_CUSTOM_INPUT_MEMBER(pending_sound_r); |
| 45 | |
| 41 | 46 | DECLARE_DRIVER_INIT(quiz18k); |
| 42 | 47 | DECLARE_DRIVER_INIT(welltris); |
| 43 | | TILE_GET_INFO_MEMBER(get_welltris_tile_info); |
| 48 | virtual void machine_start(); |
| 44 | 49 | virtual void video_start(); |
| 45 | | UINT32 screen_update_welltris(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 50 | |
| 51 | TILE_GET_INFO_MEMBER(get_tile_info); |
| 52 | UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 46 | 53 | void draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect); |
| 47 | | DECLARE_WRITE_LINE_MEMBER(irqhandler); |
| 48 | | required_device<cpu_device> m_maincpu; |
| 49 | | required_device<cpu_device> m_audiocpu; |
| 50 | | required_device<gfxdecode_device> m_gfxdecode; |
| 54 | void setbank(int num, int bank); |
| 51 | 55 | }; |
trunk/src/mame/video/welltris.c
| r243555 | r243556 | |
| 3 | 3 | |
| 4 | 4 | |
| 5 | 5 | |
| 6 | | |
| 7 | | |
| 8 | | |
| 9 | 6 | void welltris_state::setbank(int num, int bank) |
| 10 | 7 | { |
| 11 | 8 | if (m_gfxbank[num] != bank) |
| r243555 | r243556 | |
| 18 | 15 | |
| 19 | 16 | /* Not really enough evidence here */ |
| 20 | 17 | |
| 21 | | WRITE16_MEMBER(welltris_state::welltris_palette_bank_w) |
| 18 | WRITE16_MEMBER(welltris_state::palette_bank_w) |
| 22 | 19 | { |
| 23 | 20 | if (ACCESSING_BITS_0_7) |
| 24 | 21 | { |
| r243555 | r243556 | |
| 35 | 32 | } |
| 36 | 33 | } |
| 37 | 34 | |
| 38 | | WRITE16_MEMBER(welltris_state::welltris_gfxbank_w) |
| 35 | WRITE16_MEMBER(welltris_state::gfxbank_w) |
| 39 | 36 | { |
| 40 | 37 | if (ACCESSING_BITS_0_7) |
| 41 | 38 | { |
| r243555 | r243556 | |
| 44 | 41 | } |
| 45 | 42 | } |
| 46 | 43 | |
| 47 | | WRITE16_MEMBER(welltris_state::welltris_scrollreg_w) |
| 44 | WRITE16_MEMBER(welltris_state::scrollreg_w) |
| 48 | 45 | { |
| 49 | 46 | switch (offset) { |
| 50 | 47 | case 0: m_scrollx = data - 14; break; |
| r243555 | r243556 | |
| 52 | 49 | } |
| 53 | 50 | } |
| 54 | 51 | |
| 55 | | TILE_GET_INFO_MEMBER(welltris_state::get_welltris_tile_info) |
| 52 | TILE_GET_INFO_MEMBER(welltris_state::get_tile_info) |
| 56 | 53 | { |
| 57 | 54 | UINT16 code = m_charvideoram[tile_index]; |
| 58 | 55 | int bank = (code & 0x1000) >> 12; |
| r243555 | r243556 | |
| 63 | 60 | 0); |
| 64 | 61 | } |
| 65 | 62 | |
| 66 | | WRITE16_MEMBER(welltris_state::welltris_charvideoram_w) |
| 63 | WRITE16_MEMBER(welltris_state::charvideoram_w) |
| 67 | 64 | { |
| 68 | 65 | COMBINE_DATA(&m_charvideoram[offset]); |
| 69 | 66 | m_char_tilemap->mark_tile_dirty(offset); |
| r243555 | r243556 | |
| 71 | 68 | |
| 72 | 69 | void welltris_state::video_start() |
| 73 | 70 | { |
| 74 | | m_char_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(welltris_state::get_welltris_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); |
| 71 | m_char_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(welltris_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); |
| 75 | 72 | |
| 76 | 73 | m_char_tilemap->set_transparent_pen(15); |
| 74 | |
| 75 | save_item(NAME(m_gfxbank)); |
| 76 | save_item(NAME(m_charpalettebank)); |
| 77 | save_item(NAME(m_spritepalettebank)); |
| 78 | save_item(NAME(m_pixelpalettebank)); |
| 79 | save_item(NAME(m_scrollx)); |
| 80 | save_item(NAME(m_scrolly)); |
| 77 | 81 | } |
| 78 | 82 | |
| 79 | 83 | void welltris_state::draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect) |
| r243555 | r243556 | |
| 91 | 95 | } |
| 92 | 96 | } |
| 93 | 97 | |
| 94 | | UINT32 welltris_state::screen_update_welltris(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 98 | UINT32 welltris_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
| 95 | 99 | { |
| 96 | 100 | m_char_tilemap->set_scrollx(0, m_scrollx); |
| 97 | 101 | m_char_tilemap->set_scrolly(0, m_scrolly); |