trunk/src/mame/drivers/fromanc2.c
| r30613 | r30614 | |
| 83 | 83 | return m_subcpu_nmi_flag & 0x01; |
| 84 | 84 | } |
| 85 | 85 | |
| 86 | | WRITE16_MEMBER(fromanc2_state::fromanc2_eeprom_w) |
| 86 | WRITE16_MEMBER(fromanc2_state::fromancr_gfxbank_eeprom_w) |
| 87 | 87 | { |
| 88 | | if (ACCESSING_BITS_8_15) |
| 89 | | ioport("EEPROMOUT")->write(data >> 8, 0xff); |
| 90 | | } |
| 91 | | |
| 92 | | WRITE16_MEMBER(fromanc2_state::fromancr_eeprom_w) |
| 93 | | { |
| 88 | fromancr_gfxbank_w(data & 0xfff8); |
| 94 | 89 | if (ACCESSING_BITS_0_7) |
| 95 | 90 | { |
| 96 | | fromancr_gfxbank_w(data & 0xfff8); |
| 97 | | ioport("EEPROMOUT")->write(data, 0xff); |
| 91 | m_eeprom->di_write(data & 0x01); |
| 92 | m_eeprom->clk_write((data & 0x02) ? ASSERT_LINE : CLEAR_LINE); |
| 93 | m_eeprom->cs_write((data & 0x04) ? ASSERT_LINE : CLEAR_LINE); |
| 98 | 94 | } |
| 99 | 95 | } |
| 100 | 96 | |
| 101 | | WRITE16_MEMBER(fromanc2_state::fromanc4_eeprom_w) |
| 102 | | { |
| 103 | | if (ACCESSING_BITS_0_7) |
| 104 | | ioport("EEPROMOUT")->write(data, 0xff); |
| 105 | | } |
| 106 | | |
| 107 | 97 | WRITE16_MEMBER(fromanc2_state::fromanc2_subcpu_w) |
| 108 | 98 | { |
| 109 | 99 | m_datalatch1 = data; |
| r30613 | r30614 | |
| 179 | 169 | AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromanc2_videoram_2_w) // VRAM 0, 1 (2P) |
| 180 | 170 | AM_RANGE(0x980000, 0x983fff) AM_WRITE(fromanc2_videoram_3_w) // VRAM 2, 3 (2P) |
| 181 | 171 | |
| 182 | | AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(fromanc2_paletteram_0_r, fromanc2_paletteram_0_w) // PALETTE (1P) |
| 183 | | AM_RANGE(0xa80000, 0xa80fff) AM_READWRITE(fromanc2_paletteram_1_r, fromanc2_paletteram_1_w) // PALETTE (2P) |
| 172 | AM_RANGE(0xa00000, 0xa00fff) AM_RAM_DEVWRITE("lpalette", palette_device, write) AM_SHARE("lpalette") // PALETTE (1P) |
| 173 | AM_RANGE(0xa80000, 0xa80fff) AM_RAM_DEVWRITE("rpalette", palette_device, write) AM_SHARE("rpalette") // PALETTE (2P) |
| 184 | 174 | |
| 185 | 175 | AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromanc2_gfxreg_0_w) // SCROLL REG (1P/2P) |
| 186 | 176 | AM_RANGE(0xd00100, 0xd00123) AM_WRITE(fromanc2_gfxreg_2_w) // SCROLL REG (1P/2P) |
| r30613 | r30614 | |
| 196 | 186 | AM_RANGE(0xd01300, 0xd01301) AM_READ(fromanc2_subcpu_r ) // SUB CPU READ |
| 197 | 187 | AM_RANGE(0xd01400, 0xd01401) AM_WRITE(fromanc2_gfxbank_0_w) // GFXBANK (1P) |
| 198 | 188 | AM_RANGE(0xd01500, 0xd01501) AM_WRITE(fromanc2_gfxbank_1_w) // GFXBANK (2P) |
| 199 | | AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromanc2_eeprom_w) // EEPROM DATA |
| 189 | AM_RANGE(0xd01600, 0xd01601) AM_WRITE_PORT("EEPROMOUT") // EEPROM DATA |
| 200 | 190 | AM_RANGE(0xd01800, 0xd01801) AM_READ(fromanc2_keymatrix_r) // INPUT KEY MATRIX |
| 201 | 191 | AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(fromanc2_portselect_w) // PORT SELECT (1P/2P) |
| 202 | 192 | |
| r30613 | r30614 | |
| 211 | 201 | AM_RANGE(0x900000, 0x903fff) AM_WRITE(fromancr_videoram_2_w) // VRAM TEXT (1P/2P) |
| 212 | 202 | AM_RANGE(0x980000, 0x983fff) AM_WRITENOP // VRAM Unused ? |
| 213 | 203 | |
| 214 | | AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(fromancr_paletteram_0_r, fromancr_paletteram_0_w) // PALETTE (1P) |
| 215 | | AM_RANGE(0xa80000, 0xa80fff) AM_READWRITE(fromancr_paletteram_1_r, fromancr_paletteram_1_w) // PALETTE (2P) |
| 204 | AM_RANGE(0xa00000, 0xa00fff) AM_RAM_DEVWRITE("lpalette", palette_device, write) AM_SHARE("lpalette") // PALETTE (1P) |
| 205 | AM_RANGE(0xa80000, 0xa80fff) AM_RAM_DEVWRITE("rpalette", palette_device, write) AM_SHARE("rpalette") // PALETTE (2P) |
| 216 | 206 | |
| 217 | 207 | AM_RANGE(0xd00000, 0xd00023) AM_WRITE(fromancr_gfxreg_1_w) // SCROLL REG (1P/2P) |
| 218 | 208 | AM_RANGE(0xd00200, 0xd002ff) AM_WRITENOP // ? |
| r30613 | r30614 | |
| 224 | 214 | AM_RANGE(0xd01200, 0xd01201) AM_WRITE(fromanc2_subcpu_w) // SUB CPU WRITE |
| 225 | 215 | AM_RANGE(0xd01300, 0xd01301) AM_READ(fromanc2_subcpu_r) // SUB CPU READ |
| 226 | 216 | AM_RANGE(0xd01400, 0xd01401) AM_WRITENOP // COIN COUNTER ? |
| 227 | | AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromancr_eeprom_w) // EEPROM DATA, GFXBANK (1P/2P) |
| 217 | AM_RANGE(0xd01600, 0xd01601) AM_WRITE(fromancr_gfxbank_eeprom_w) // EEPROM DATA, GFXBANK (1P/2P) |
| 228 | 218 | AM_RANGE(0xd01800, 0xd01801) AM_READ(fromanc2_keymatrix_r) // INPUT KEY MATRIX |
| 229 | 219 | AM_RANGE(0xd01a00, 0xd01a01) AM_WRITE(fromanc2_portselect_w) // PORT SELECT (1P/2P) |
| 230 | 220 | |
| r30613 | r30614 | |
| 241 | 231 | |
| 242 | 232 | AM_RANGE(0xd10000, 0xd10001) AM_WRITENOP // ? |
| 243 | 233 | AM_RANGE(0xd30000, 0xd30001) AM_WRITENOP // ? |
| 244 | | AM_RANGE(0xd50000, 0xd50001) AM_WRITE(fromanc4_eeprom_w) // EEPROM DATA |
| 234 | AM_RANGE(0xd50000, 0xd50001) AM_WRITE_PORT("EEPROMOUT") // EEPROM DATA |
| 245 | 235 | |
| 246 | 236 | AM_RANGE(0xd70000, 0xd70001) AM_WRITE(fromanc2_sndcmd_w) // SOUND REQ (1P/2P) |
| 247 | 237 | |
| r30613 | r30614 | |
| 249 | 239 | AM_RANGE(0xd90000, 0xd9ffff) AM_WRITE(fromanc4_videoram_1_w) // VRAM BG (1P/2P) |
| 250 | 240 | AM_RANGE(0xda0000, 0xdaffff) AM_WRITE(fromanc4_videoram_2_w) // VRAM TEXT (1P/2P) |
| 251 | 241 | |
| 252 | | AM_RANGE(0xdb0000, 0xdb0fff) AM_READWRITE(fromanc4_paletteram_0_r, fromanc4_paletteram_0_w) // PALETTE (1P) |
| 253 | | AM_RANGE(0xdc0000, 0xdc0fff) AM_READWRITE(fromanc4_paletteram_1_r, fromanc4_paletteram_1_w) // PALETTE (2P) |
| 242 | AM_RANGE(0xdb0000, 0xdb0fff) AM_RAM_DEVWRITE("lpalette", palette_device, write) AM_SHARE("lpalette") // PALETTE (1P) |
| 243 | AM_RANGE(0xdc0000, 0xdc0fff) AM_RAM_DEVWRITE("rpalette", palette_device, write) AM_SHARE("rpalette") // PALETTE (2P) |
| 254 | 244 | |
| 255 | 245 | AM_RANGE(0xd10000, 0xd10001) AM_READ(fromanc2_keymatrix_r) // INPUT KEY MATRIX |
| 256 | 246 | AM_RANGE(0xd20000, 0xd20001) AM_READ_PORT("SYSTEM") |
| r30613 | r30614 | |
| 395 | 385 | PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 396 | 386 | |
| 397 | 387 | PORT_START( "EEPROMOUT" ) |
| 398 | | PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) |
| 399 | | PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) |
| 400 | | PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) |
| 388 | PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) |
| 389 | PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) |
| 390 | PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) |
| 391 | PORT_BIT( 0xf8ff, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 401 | 392 | INPUT_PORTS_END |
| 402 | 393 | |
| 403 | 394 | static INPUT_PORTS_START( fromanc4 ) |
| r30613 | r30614 | |
| 419 | 410 | PORT_BIT( 0x0001, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, cs_write) |
| 420 | 411 | PORT_BIT( 0x0002, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, clk_write) |
| 421 | 412 | PORT_BIT( 0x0004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("eeprom", eeprom_serial_93cxx_device, di_write) |
| 413 | PORT_BIT( 0xfff8, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 422 | 414 | INPUT_PORTS_END |
| 423 | 415 | |
| 424 | 416 | |
| r30613 | r30614 | |
| 440 | 432 | }; |
| 441 | 433 | |
| 442 | 434 | static GFXDECODE_START( fromanc2 ) |
| 443 | | GFXDECODE_ENTRY( "gfx1", 0, fromanc2_tilelayout, ( 0 * 2), (256 * 2) ) |
| 444 | | GFXDECODE_ENTRY( "gfx2", 0, fromanc2_tilelayout, (256 * 2), (256 * 2) ) |
| 445 | | GFXDECODE_ENTRY( "gfx3", 0, fromanc2_tilelayout, (512 * 2), (256 * 2) ) |
| 446 | | GFXDECODE_ENTRY( "gfx4", 0, fromanc2_tilelayout, (768 * 2), (256 * 2) ) |
| 435 | GFXDECODE_ENTRY( "gfx1", 0, fromanc2_tilelayout, 0, 4 ) |
| 436 | GFXDECODE_ENTRY( "gfx2", 0, fromanc2_tilelayout, 256, 4 ) |
| 437 | GFXDECODE_ENTRY( "gfx3", 0, fromanc2_tilelayout, 512, 4 ) |
| 438 | GFXDECODE_ENTRY( "gfx4", 0, fromanc2_tilelayout, 768, 4 ) |
| 447 | 439 | GFXDECODE_END |
| 448 | 440 | |
| 449 | 441 | static const gfx_layout fromancr_tilelayout = |
| r30613 | r30614 | |
| 458 | 450 | }; |
| 459 | 451 | |
| 460 | 452 | static GFXDECODE_START( fromancr ) |
| 461 | | GFXDECODE_ENTRY( "gfx1", 0, fromancr_tilelayout, (512 * 2), 2 ) |
| 462 | | GFXDECODE_ENTRY( "gfx2", 0, fromancr_tilelayout, (256 * 2), 2 ) |
| 463 | | GFXDECODE_ENTRY( "gfx3", 0, fromancr_tilelayout, ( 0 * 2), 2 ) |
| 453 | GFXDECODE_ENTRY( "gfx1", 0, fromancr_tilelayout, 512, 1 ) |
| 454 | GFXDECODE_ENTRY( "gfx2", 0, fromancr_tilelayout, 256, 1 ) |
| 455 | GFXDECODE_ENTRY( "gfx3", 0, fromancr_tilelayout, 0, 1 ) |
| 464 | 456 | GFXDECODE_END |
| 465 | 457 | |
| 466 | 458 | |
| r30613 | r30614 | |
| 536 | 528 | MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") |
| 537 | 529 | |
| 538 | 530 | /* video hardware */ |
| 539 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromanc2) |
| 540 | | MCFG_PALETTE_ADD("palette", 4096) |
| 531 | MCFG_GFXDECODE_ADD("gfxdecode", "lpalette", fromanc2) |
| 532 | |
| 533 | MCFG_PALETTE_ADD("lpalette", 2048) |
| 534 | MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx) |
| 535 | MCFG_PALETTE_ADD("rpalette", 2048) |
| 536 | MCFG_PALETTE_FORMAT(GGGGGRRRRRBBBBBx) |
| 537 | |
| 541 | 538 | MCFG_DEFAULT_LAYOUT(layout_dualhsxs) |
| 542 | 539 | |
| 543 | 540 | MCFG_SCREEN_ADD("lscreen", RASTER) |
| r30613 | r30614 | |
| 546 | 543 | MCFG_SCREEN_SIZE(512, 512) |
| 547 | 544 | MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1) |
| 548 | 545 | MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_left) |
| 549 | | MCFG_SCREEN_PALETTE("palette") |
| 546 | MCFG_SCREEN_PALETTE("lpalette") |
| 550 | 547 | |
| 551 | 548 | MCFG_SCREEN_ADD("rscreen", RASTER) |
| 552 | 549 | MCFG_SCREEN_REFRESH_RATE(60) |
| r30613 | r30614 | |
| 554 | 551 | MCFG_SCREEN_SIZE(512, 512) |
| 555 | 552 | MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1) |
| 556 | 553 | MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_right) |
| 557 | | MCFG_SCREEN_PALETTE("palette") |
| 554 | MCFG_SCREEN_PALETTE("rpalette") |
| 558 | 555 | |
| 559 | 556 | MCFG_VIDEO_START_OVERRIDE(fromanc2_state,fromanc2) |
| 560 | 557 | |
| r30613 | r30614 | |
| 588 | 585 | MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") |
| 589 | 586 | |
| 590 | 587 | /* video hardware */ |
| 591 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromancr) |
| 592 | | MCFG_PALETTE_ADD("palette", 4096) |
| 588 | MCFG_GFXDECODE_ADD("gfxdecode", "lpalette", fromancr) |
| 589 | |
| 590 | MCFG_PALETTE_ADD("lpalette", 2048) |
| 591 | MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB) |
| 592 | MCFG_PALETTE_ADD("rpalette", 2048) |
| 593 | MCFG_PALETTE_FORMAT(xGGGGGRRRRRBBBBB) |
| 594 | |
| 593 | 595 | MCFG_DEFAULT_LAYOUT(layout_dualhsxs) |
| 594 | 596 | |
| 595 | 597 | MCFG_SCREEN_ADD("lscreen", RASTER) |
| r30613 | r30614 | |
| 598 | 600 | MCFG_SCREEN_SIZE(512, 512) |
| 599 | 601 | MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1) |
| 600 | 602 | MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_left) |
| 601 | | MCFG_SCREEN_PALETTE("palette") |
| 603 | MCFG_SCREEN_PALETTE("lpalette") |
| 602 | 604 | |
| 603 | 605 | MCFG_SCREEN_ADD("rscreen", RASTER) |
| 604 | 606 | MCFG_SCREEN_REFRESH_RATE(60) |
| r30613 | r30614 | |
| 606 | 608 | MCFG_SCREEN_SIZE(512, 512) |
| 607 | 609 | MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1) |
| 608 | 610 | MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_right) |
| 609 | | MCFG_SCREEN_PALETTE("palette") |
| 611 | MCFG_SCREEN_PALETTE("rpalette") |
| 610 | 612 | |
| 611 | 613 | MCFG_VIDEO_START_OVERRIDE(fromanc2_state,fromancr) |
| 612 | 614 | |
| r30613 | r30614 | |
| 636 | 638 | MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") |
| 637 | 639 | |
| 638 | 640 | /* video hardware */ |
| 639 | | MCFG_GFXDECODE_ADD("gfxdecode", "palette", fromancr) |
| 640 | | MCFG_PALETTE_ADD("palette", 4096) |
| 641 | MCFG_GFXDECODE_ADD("gfxdecode", "lpalette", fromancr) |
| 641 | 642 | |
| 643 | MCFG_PALETTE_ADD("lpalette", 2048) |
| 644 | MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) |
| 645 | MCFG_PALETTE_ADD("rpalette", 2048) |
| 646 | MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) |
| 647 | |
| 642 | 648 | MCFG_DEFAULT_LAYOUT(layout_dualhsxs) |
| 643 | 649 | |
| 644 | 650 | MCFG_SCREEN_ADD("lscreen", RASTER) |
| 645 | 651 | MCFG_SCREEN_REFRESH_RATE(60) |
| 646 | 652 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 647 | | MCFG_SCREEN_SIZE(2048, 256) |
| 653 | MCFG_SCREEN_SIZE(512, 512) |
| 648 | 654 | MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1) |
| 649 | 655 | MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_left) |
| 650 | | MCFG_SCREEN_PALETTE("palette") |
| 656 | MCFG_SCREEN_PALETTE("lpalette") |
| 651 | 657 | |
| 652 | 658 | MCFG_SCREEN_ADD("rscreen", RASTER) |
| 653 | 659 | MCFG_SCREEN_REFRESH_RATE(60) |
| r30613 | r30614 | |
| 655 | 661 | MCFG_SCREEN_SIZE(512, 512) |
| 656 | 662 | MCFG_SCREEN_VISIBLE_AREA(0, 352-1, 0, 240-1) |
| 657 | 663 | MCFG_SCREEN_UPDATE_DRIVER(fromanc2_state, screen_update_fromanc2_right) |
| 658 | | MCFG_SCREEN_PALETTE("palette") |
| 664 | MCFG_SCREEN_PALETTE("rpalette") |
| 659 | 665 | |
| 660 | 666 | MCFG_VIDEO_START_OVERRIDE(fromanc2_state,fromanc4) |
| 661 | 667 | |
trunk/src/mame/includes/fromanc2.h
| r30613 | r30614 | |
| 5 | 5 | public: |
| 6 | 6 | fromanc2_state(const machine_config &mconfig, device_type type, const char *tag) |
| 7 | 7 | : driver_device(mconfig, type, tag), |
| 8 | m_maincpu(*this, "maincpu"), |
| 8 | 9 | m_audiocpu(*this, "audiocpu"), |
| 9 | 10 | m_subcpu(*this, "sub"), |
| 10 | 11 | m_eeprom(*this, "eeprom"), |
| 11 | | m_maincpu(*this, "maincpu"), |
| 12 | 12 | m_gfxdecode(*this, "gfxdecode"), |
| 13 | | m_palette(*this, "palette") { } |
| 13 | m_lpalette(*this, "lpalette"), |
| 14 | m_rpalette(*this, "rpalette") { } |
| 14 | 15 | |
| 15 | 16 | /* memory pointers */ |
| 16 | | UINT16 *m_paletteram[2]; |
| 17 | 17 | UINT16 *m_videoram[2][4]; |
| 18 | 18 | UINT8 *m_bankedram; |
| 19 | 19 | |
| r30613 | r30614 | |
| 33 | 33 | UINT8 m_datalatch_2l; |
| 34 | 34 | |
| 35 | 35 | /* devices */ |
| 36 | required_device<cpu_device> m_maincpu; |
| 36 | 37 | required_device<cpu_device> m_audiocpu; |
| 37 | 38 | optional_device<cpu_device> m_subcpu; |
| 38 | 39 | optional_device<eeprom_serial_93cxx_device> m_eeprom; |
| 40 | required_device<gfxdecode_device> m_gfxdecode; |
| 41 | required_device<palette_device> m_lpalette; |
| 42 | required_device<palette_device> m_rpalette; |
| 39 | 43 | DECLARE_WRITE16_MEMBER(fromanc2_sndcmd_w); |
| 40 | 44 | DECLARE_WRITE16_MEMBER(fromanc2_portselect_w); |
| 41 | 45 | DECLARE_READ16_MEMBER(fromanc2_keymatrix_r); |
| 42 | | DECLARE_WRITE16_MEMBER(fromanc2_eeprom_w); |
| 43 | | DECLARE_WRITE16_MEMBER(fromancr_eeprom_w); |
| 44 | | DECLARE_WRITE16_MEMBER(fromanc4_eeprom_w); |
| 46 | DECLARE_WRITE16_MEMBER(fromancr_gfxbank_eeprom_w); |
| 45 | 47 | DECLARE_WRITE16_MEMBER(fromanc2_subcpu_w); |
| 46 | 48 | DECLARE_READ16_MEMBER(fromanc2_subcpu_r); |
| 47 | 49 | DECLARE_READ8_MEMBER(fromanc2_maincpu_r_l); |
| r30613 | r30614 | |
| 51 | 53 | DECLARE_WRITE8_MEMBER(fromanc2_subcpu_nmi_clr); |
| 52 | 54 | DECLARE_READ8_MEMBER(fromanc2_sndcpu_nmi_clr); |
| 53 | 55 | DECLARE_WRITE8_MEMBER(fromanc2_subcpu_rombank_w); |
| 54 | | DECLARE_READ16_MEMBER(fromanc2_paletteram_0_r); |
| 55 | | DECLARE_READ16_MEMBER(fromanc2_paletteram_1_r); |
| 56 | | DECLARE_WRITE16_MEMBER(fromanc2_paletteram_0_w); |
| 57 | | DECLARE_WRITE16_MEMBER(fromanc2_paletteram_1_w); |
| 58 | | DECLARE_READ16_MEMBER(fromancr_paletteram_0_r); |
| 59 | | DECLARE_READ16_MEMBER(fromancr_paletteram_1_r); |
| 60 | | DECLARE_WRITE16_MEMBER(fromancr_paletteram_0_w); |
| 61 | | DECLARE_WRITE16_MEMBER(fromancr_paletteram_1_w); |
| 62 | | DECLARE_READ16_MEMBER(fromanc4_paletteram_0_r); |
| 63 | | DECLARE_READ16_MEMBER(fromanc4_paletteram_1_r); |
| 64 | | DECLARE_WRITE16_MEMBER(fromanc4_paletteram_0_w); |
| 65 | | DECLARE_WRITE16_MEMBER(fromanc4_paletteram_1_w); |
| 66 | 56 | DECLARE_WRITE16_MEMBER(fromanc2_videoram_0_w); |
| 67 | 57 | DECLARE_WRITE16_MEMBER(fromanc2_videoram_1_w); |
| 68 | 58 | DECLARE_WRITE16_MEMBER(fromanc2_videoram_2_w); |
| r30613 | r30614 | |
| 119 | 109 | void fromancr_gfxbank_w( int data ); |
| 120 | 110 | inline void fromanc4_vram_w( offs_t offset, UINT16 data, UINT16 mem_mask, int layer ); |
| 121 | 111 | DECLARE_WRITE_LINE_MEMBER(irqhandler); |
| 122 | | required_device<cpu_device> m_maincpu; |
| 123 | | required_device<gfxdecode_device> m_gfxdecode; |
| 124 | | required_device<palette_device> m_palette; |
| 125 | 112 | }; |
trunk/src/mame/video/fromanc2.c
| r30613 | r30614 | |
| 17 | 17 | |
| 18 | 18 | inline void fromanc2_state::fromanc2_get_tile_info( tile_data &tileinfo, int tile_index, int vram, int layer ) |
| 19 | 19 | { |
| 20 | | int tile, color; |
| 20 | int tile = (m_videoram[vram][layer][tile_index] & 0x3fff) | (m_gfxbank[vram][layer] << 14); |
| 21 | int color = (m_videoram[vram][layer][tile_index] & 0xc000) >> 14; |
| 21 | 22 | |
| 22 | | tile = (m_videoram[vram][layer][tile_index] & 0x3fff) | (m_gfxbank[vram][layer] << 14); |
| 23 | | color = ((m_videoram[vram][layer][tile_index] & 0xc000) >> 14) | (0x10 * vram); |
| 24 | | |
| 25 | 23 | SET_TILE_INFO_MEMBER(layer, tile, color, 0); |
| 26 | 24 | } |
| 27 | 25 | |
| r30613 | r30614 | |
| 37 | 35 | |
| 38 | 36 | inline void fromanc2_state::fromancr_get_tile_info( tile_data &tileinfo, int tile_index, int vram, int layer ) |
| 39 | 37 | { |
| 40 | | int tile, color; |
| 38 | int tile = m_videoram[vram][layer][tile_index] | (m_gfxbank[vram][layer] << 16); |
| 41 | 39 | |
| 42 | | tile = m_videoram[vram][layer][tile_index] | (m_gfxbank[vram][layer] << 16); |
| 43 | | color = vram; |
| 44 | | |
| 45 | | SET_TILE_INFO_MEMBER(layer, tile, color, 0); |
| 40 | SET_TILE_INFO_MEMBER(layer, tile, 0, 0); |
| 46 | 41 | } |
| 47 | 42 | |
| 48 | 43 | TILE_GET_INFO_MEMBER(fromanc2_state::fromancr_get_v0_l0_tile_info){ fromancr_get_tile_info(tileinfo, tile_index, 0, 0); } |
| r30613 | r30614 | |
| 59 | 54 | |
| 60 | 55 | ******************************************************************************/ |
| 61 | 56 | |
| 62 | | READ16_MEMBER(fromanc2_state::fromanc2_paletteram_0_r) |
| 63 | | { |
| 64 | | return m_paletteram[0][offset]; |
| 65 | | } |
| 66 | | |
| 67 | | READ16_MEMBER(fromanc2_state::fromanc2_paletteram_1_r) |
| 68 | | { |
| 69 | | return m_paletteram[1][offset]; |
| 70 | | } |
| 71 | | |
| 72 | | WRITE16_MEMBER(fromanc2_state::fromanc2_paletteram_0_w) |
| 73 | | { |
| 74 | | UINT16 color; |
| 75 | | |
| 76 | | COMBINE_DATA(&m_paletteram[0][offset]); |
| 77 | | |
| 78 | | // GGGG_GRRR_RRBB_BBBx |
| 79 | | color = ((offset & 0x0700) << 1) + (offset & 0x00ff); |
| 80 | | m_palette->set_pen_color(0x000 + color, pal5bit(data >> 6), pal5bit(data >> 11), pal5bit(data >> 1)); |
| 81 | | } |
| 82 | | |
| 83 | | WRITE16_MEMBER(fromanc2_state::fromanc2_paletteram_1_w) |
| 84 | | { |
| 85 | | UINT16 color; |
| 86 | | |
| 87 | | COMBINE_DATA(&m_paletteram[1][offset]); |
| 88 | | |
| 89 | | // GGGG_GRRR_RRBB_BBBx |
| 90 | | color = ((offset & 0x0700) << 1) + (offset & 0x00ff); |
| 91 | | m_palette->set_pen_color(0x100 + color, pal5bit(data >> 6), pal5bit(data >> 11), pal5bit(data >> 1)); |
| 92 | | } |
| 93 | | |
| 94 | | |
| 95 | | READ16_MEMBER(fromanc2_state::fromancr_paletteram_0_r) |
| 96 | | { |
| 97 | | return m_paletteram[0][offset]; |
| 98 | | } |
| 99 | | |
| 100 | | READ16_MEMBER(fromanc2_state::fromancr_paletteram_1_r) |
| 101 | | { |
| 102 | | return m_paletteram[1][offset]; |
| 103 | | } |
| 104 | | |
| 105 | | WRITE16_MEMBER(fromanc2_state::fromancr_paletteram_0_w) |
| 106 | | { |
| 107 | | UINT16 color; |
| 108 | | |
| 109 | | COMBINE_DATA(&m_paletteram[0][offset]); |
| 110 | | |
| 111 | | // xGGG_GGRR_RRRB_BBBB |
| 112 | | color = ((offset & 0x0700) << 1) + (offset & 0x00ff); |
| 113 | | m_palette->set_pen_color(0x000 + color, pal5bit(data >> 5), pal5bit(data >> 10), pal5bit(data >> 0)); |
| 114 | | } |
| 115 | | |
| 116 | | WRITE16_MEMBER(fromanc2_state::fromancr_paletteram_1_w) |
| 117 | | { |
| 118 | | UINT16 color; |
| 119 | | |
| 120 | | COMBINE_DATA(&m_paletteram[1][offset]); |
| 121 | | |
| 122 | | // xGGG_GGRR_RRRB_BBBB |
| 123 | | color = ((offset & 0x0700) << 1) + (offset & 0x00ff); |
| 124 | | m_palette->set_pen_color(0x100 + color, pal5bit(data >> 5), pal5bit(data >> 10), pal5bit(data >> 0)); |
| 125 | | } |
| 126 | | |
| 127 | | |
| 128 | | READ16_MEMBER(fromanc2_state::fromanc4_paletteram_0_r) |
| 129 | | { |
| 130 | | return m_paletteram[0][offset]; |
| 131 | | } |
| 132 | | |
| 133 | | READ16_MEMBER(fromanc2_state::fromanc4_paletteram_1_r) |
| 134 | | { |
| 135 | | return m_paletteram[1][offset]; |
| 136 | | } |
| 137 | | |
| 138 | | WRITE16_MEMBER(fromanc2_state::fromanc4_paletteram_0_w) |
| 139 | | { |
| 140 | | UINT16 color; |
| 141 | | |
| 142 | | COMBINE_DATA(&m_paletteram[0][offset]); |
| 143 | | |
| 144 | | // xRRR_RRGG_GGGB_BBBB |
| 145 | | color = ((offset & 0x0700) << 1) + (offset & 0x00ff); |
| 146 | | m_palette->set_pen_color(0x000 + color, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); |
| 147 | | } |
| 148 | | |
| 149 | | WRITE16_MEMBER(fromanc2_state::fromanc4_paletteram_1_w) |
| 150 | | { |
| 151 | | UINT16 color; |
| 152 | | |
| 153 | | COMBINE_DATA(&m_paletteram[1][offset]); |
| 154 | | |
| 155 | | // xRRR_RRGG_GGGB_BBBB |
| 156 | | color = ((offset & 0x0700) << 1) + (offset & 0x00ff); |
| 157 | | m_palette->set_pen_color(0x100 + color, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); |
| 158 | | } |
| 159 | | |
| 160 | | |
| 161 | 57 | inline void fromanc2_state::fromanc2_dispvram_w( offs_t offset, UINT16 data, UINT16 mem_mask, int vram, int layer ) |
| 162 | 58 | { |
| 163 | 59 | layer += (offset < 0x1000) ? 0 : 1; |
| r30613 | r30614 | |
| 383 | 279 | m_tilemap[1][2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromanc2_get_v1_l2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); |
| 384 | 280 | m_tilemap[1][3] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromanc2_get_v1_l3_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); |
| 385 | 281 | |
| 386 | | m_tilemap[0][1]->set_transparent_pen(0x000); |
| 387 | | m_tilemap[0][2]->set_transparent_pen(0x000); |
| 388 | | m_tilemap[0][3]->set_transparent_pen(0x000); |
| 389 | | m_tilemap[1][1]->set_transparent_pen(0x000); |
| 390 | | m_tilemap[1][2]->set_transparent_pen(0x000); |
| 391 | | m_tilemap[1][3]->set_transparent_pen(0x000); |
| 282 | for (int screen = 0; screen < 2; screen++) |
| 283 | { |
| 284 | palette_device *palette = (screen == 0 ? m_lpalette : m_rpalette); |
| 285 | for (int tmap = 0; tmap < 4; tmap++) |
| 286 | { |
| 287 | m_videoram[screen][tmap] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 288 | m_tilemap[screen][tmap]->set_palette(palette); |
| 289 | if (tmap != 0) m_tilemap[screen][tmap]->set_transparent_pen(0x000); |
| 290 | } |
| 291 | } |
| 392 | 292 | |
| 393 | | m_videoram[0][0] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 394 | | m_videoram[0][1] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 395 | | m_videoram[0][2] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 396 | | m_videoram[0][3] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 397 | | m_videoram[1][0] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 398 | | m_videoram[1][1] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 399 | | m_videoram[1][2] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 400 | | m_videoram[1][3] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 401 | | |
| 402 | | m_paletteram[0] = auto_alloc_array(machine(), UINT16, 0x800); |
| 403 | | m_paletteram[1] = auto_alloc_array(machine(), UINT16, 0x800); |
| 404 | | |
| 405 | 293 | save_pointer(NAME(m_videoram[0][0]), (64 * 64)); |
| 406 | 294 | save_pointer(NAME(m_videoram[0][1]), (64 * 64)); |
| 407 | 295 | save_pointer(NAME(m_videoram[0][2]), (64 * 64)); |
| r30613 | r30614 | |
| 410 | 298 | save_pointer(NAME(m_videoram[1][1]), (64 * 64)); |
| 411 | 299 | save_pointer(NAME(m_videoram[1][2]), (64 * 64)); |
| 412 | 300 | save_pointer(NAME(m_videoram[1][3]), (64 * 64)); |
| 413 | | save_pointer(NAME(m_paletteram[0]), 0x800); |
| 414 | | save_pointer(NAME(m_paletteram[1]), 0x800); |
| 415 | 301 | save_item(NAME(m_scrollx[0])); |
| 416 | 302 | save_item(NAME(m_scrollx[1])); |
| 417 | 303 | save_item(NAME(m_scrolly[0])); |
| r30613 | r30614 | |
| 425 | 311 | m_tilemap[0][0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); |
| 426 | 312 | m_tilemap[0][1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); |
| 427 | 313 | m_tilemap[0][2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); |
| 428 | | m_tilemap[0][3] = 0; |
| 314 | m_tilemap[0][3] = NULL; |
| 429 | 315 | m_tilemap[1][0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); |
| 430 | 316 | m_tilemap[1][1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); |
| 431 | 317 | m_tilemap[1][2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); |
| 432 | | m_tilemap[1][3] = 0; |
| 318 | m_tilemap[1][3] = NULL; |
| 433 | 319 | |
| 434 | | m_tilemap[0][1]->set_transparent_pen(0x0ff); |
| 435 | | m_tilemap[0][2]->set_transparent_pen(0x0ff); |
| 436 | | m_tilemap[1][1]->set_transparent_pen(0x0ff); |
| 437 | | m_tilemap[1][2]->set_transparent_pen(0x0ff); |
| 320 | for (int screen = 0; screen < 2; screen++) |
| 321 | { |
| 322 | palette_device *palette = (screen == 0 ? m_lpalette : m_rpalette); |
| 323 | for (int tmap = 0; tmap < 3; tmap++) |
| 324 | { |
| 325 | m_videoram[screen][tmap] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 326 | m_tilemap[screen][tmap]->set_palette(palette); |
| 327 | if (tmap != 0) m_tilemap[screen][tmap]->set_transparent_pen(0x0ff); |
| 328 | } |
| 329 | } |
| 438 | 330 | |
| 439 | | m_videoram[0][0] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 440 | | m_videoram[0][1] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 441 | | m_videoram[0][2] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 442 | | m_videoram[1][0] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 443 | | m_videoram[1][1] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 444 | | m_videoram[1][2] = auto_alloc_array(machine(), UINT16, (64 * 64)); |
| 445 | | |
| 446 | | m_paletteram[0] = auto_alloc_array(machine(), UINT16, 0x800); |
| 447 | | m_paletteram[1] = auto_alloc_array(machine(), UINT16, 0x800); |
| 448 | | |
| 449 | 331 | save_pointer(NAME(m_videoram[0][0]), (64 * 64)); |
| 450 | 332 | save_pointer(NAME(m_videoram[0][1]), (64 * 64)); |
| 451 | 333 | save_pointer(NAME(m_videoram[0][2]), (64 * 64)); |
| 452 | 334 | save_pointer(NAME(m_videoram[1][0]), (64 * 64)); |
| 453 | 335 | save_pointer(NAME(m_videoram[1][1]), (64 * 64)); |
| 454 | 336 | save_pointer(NAME(m_videoram[1][2]), (64 * 64)); |
| 455 | | save_pointer(NAME(m_paletteram[0]), 0x800); |
| 456 | | save_pointer(NAME(m_paletteram[1]), 0x800); |
| 457 | 337 | save_item(NAME(m_scrollx[0])); |
| 458 | 338 | save_item(NAME(m_scrollx[1])); |
| 459 | 339 | save_item(NAME(m_scrolly[0])); |
| r30613 | r30614 | |
| 462 | 342 | save_item(NAME(m_gfxbank[1])); |
| 463 | 343 | } |
| 464 | 344 | |
| 465 | | |
| 466 | 345 | VIDEO_START_MEMBER(fromanc2_state,fromanc4) |
| 467 | 346 | { |
| 468 | 347 | m_tilemap[0][0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); |
| 469 | 348 | m_tilemap[0][1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); |
| 470 | 349 | m_tilemap[0][2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v0_l2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); |
| 471 | | m_tilemap[0][3] = 0; |
| 350 | m_tilemap[0][3] = NULL; |
| 472 | 351 | m_tilemap[1][0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); |
| 473 | 352 | m_tilemap[1][1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); |
| 474 | 353 | m_tilemap[1][2] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(fromanc2_state::fromancr_get_v1_l2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); |
| 475 | | m_tilemap[1][3] = 0; |
| 354 | m_tilemap[1][3] = NULL; |
| 476 | 355 | |
| 477 | | m_tilemap[0][1]->set_transparent_pen(0x000); |
| 478 | | m_tilemap[0][2]->set_transparent_pen(0x000); |
| 479 | | m_tilemap[1][1]->set_transparent_pen(0x000); |
| 480 | | m_tilemap[1][2]->set_transparent_pen(0x000); |
| 356 | for (int screen = 0; screen < 2; screen++) |
| 357 | { |
| 358 | palette_device *palette = (screen == 0 ? m_lpalette : m_rpalette); |
| 359 | for (int tmap = 0; tmap < 3; tmap++) |
| 360 | { |
| 361 | m_videoram[screen][tmap] = auto_alloc_array(machine(), UINT16, (256 * 64)); |
| 362 | m_tilemap[screen][tmap]->set_palette(palette); |
| 363 | if (tmap != 0) m_tilemap[screen][tmap]->set_transparent_pen(0x000); |
| 364 | } |
| 365 | } |
| 481 | 366 | |
| 482 | | m_videoram[0][0] = auto_alloc_array(machine(), UINT16, (256 * 64)); |
| 483 | | m_videoram[0][1] = auto_alloc_array(machine(), UINT16, (256 * 64)); |
| 484 | | m_videoram[0][2] = auto_alloc_array(machine(), UINT16, (256 * 64)); |
| 485 | | m_videoram[1][0] = auto_alloc_array(machine(), UINT16, (256 * 64)); |
| 486 | | m_videoram[1][1] = auto_alloc_array(machine(), UINT16, (256 * 64)); |
| 487 | | m_videoram[1][2] = auto_alloc_array(machine(), UINT16, (256 * 64)); |
| 488 | | |
| 489 | | m_paletteram[0] = auto_alloc_array(machine(), UINT16, 0x800); |
| 490 | | m_paletteram[1] = auto_alloc_array(machine(), UINT16, 0x800); |
| 491 | | |
| 492 | 367 | save_pointer(NAME(m_videoram[0][0]), (256 * 64)); |
| 493 | 368 | save_pointer(NAME(m_videoram[0][1]), (256 * 64)); |
| 494 | 369 | save_pointer(NAME(m_videoram[0][2]), (256 * 64)); |
| 495 | 370 | save_pointer(NAME(m_videoram[1][0]), (256 * 64)); |
| 496 | 371 | save_pointer(NAME(m_videoram[1][1]), (256 * 64)); |
| 497 | 372 | save_pointer(NAME(m_videoram[1][2]), (256 * 64)); |
| 498 | | save_pointer(NAME(m_paletteram[0]), 0x800); |
| 499 | | save_pointer(NAME(m_paletteram[1]), 0x800); |
| 500 | 373 | save_item(NAME(m_scrollx[0])); |
| 501 | 374 | save_item(NAME(m_scrollx[1])); |
| 502 | 375 | save_item(NAME(m_scrolly[0])); |