trunk/src/mess/drivers/pasogo.c
r244752 | r244753 | |
121 | 121 | , m_cart(*this, "cartslot") |
122 | 122 | , m_ems(*this, "ems") |
123 | 123 | , m_vram(*this, "vram") |
| 124 | , m_palette(*this, "palette") |
124 | 125 | { } |
125 | 126 | |
126 | 127 | required_device<cpu_device> m_maincpu; |
127 | 128 | required_device<generic_slot_device> m_cart; |
128 | 129 | required_device<address_map_bank_device> m_ems; |
129 | 130 | required_shared_ptr<UINT16> m_vram; |
| 131 | required_device<palette_device> m_palette; |
130 | 132 | |
131 | 133 | DECLARE_READ16_MEMBER(ems_r); |
132 | 134 | DECLARE_WRITE16_MEMBER(ems_w); |
r244752 | r244753 | |
159 | 161 | void machine_reset(); |
160 | 162 | void machine_start(); |
161 | 163 | |
162 | | DECLARE_PALETTE_INIT(pasogo); |
163 | 164 | UINT32 screen_update_pasogo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); |
164 | 165 | INTERRUPT_GEN_MEMBER(pasogo_interrupt); |
165 | 166 | TIMER_DEVICE_CALLBACK_MEMBER(vg230_timer); |
| 167 | DECLARE_INPUT_CHANGED_MEMBER(contrast); |
166 | 168 | |
167 | 169 | memory_region *m_cart_rom; |
168 | 170 | UINT8 m_ems_index; |
r244752 | r244753 | |
452 | 454 | |
453 | 455 | |
454 | 456 | static INPUT_PORTS_START( pasogo ) |
455 | | PORT_START("JOY") |
| 457 | PORT_START("JOY") |
456 | 458 | // PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_SELECT) PORT_NAME("select") |
457 | 459 | // PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START) PORT_NAME("start") |
458 | 460 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_NAME("O") /*?*/ |
r244752 | r244753 | |
463 | 465 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) |
464 | 466 | PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("a") PORT_CODE(KEYCODE_A) |
465 | 467 | PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER) PORT_NAME("b") PORT_CODE(KEYCODE_B) |
| 468 | PORT_START("COLOR") |
| 469 | PORT_CONFNAME(0x01, 0x01, "Contrast") PORT_CHANGED_MEMBER(DEVICE_SELF, pasogo_state, contrast, 0) |
| 470 | PORT_CONFSETTING(0x00, "Actual") |
| 471 | PORT_CONFSETTING(0x01, "Enhanced") |
466 | 472 | INPUT_PORTS_END |
467 | 473 | |
468 | | PALETTE_INIT_MEMBER(pasogo_state, pasogo) |
| 474 | INPUT_CHANGED_MEMBER(pasogo_state::contrast) |
469 | 475 | { |
470 | | palette.set_pen_color(0, rgb_t(80, 130, 130)); |
471 | | palette.set_pen_color(1, rgb_t(40, 60, 140)); |
| 476 | if(newval) |
| 477 | { |
| 478 | m_palette->set_pen_color(0, rgb_t(80, 130, 130)); |
| 479 | m_palette->set_pen_color(1, rgb_t(40, 60, 140)); |
| 480 | } |
| 481 | else |
| 482 | { |
| 483 | m_palette->set_pen_color(0, rgb_t(100, 110, 100)); |
| 484 | m_palette->set_pen_color(1, rgb_t(90, 80, 110)); |
| 485 | } |
472 | 486 | } |
473 | 487 | |
474 | | |
475 | 488 | UINT32 pasogo_state::screen_update_pasogo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |
476 | 489 | { |
477 | 490 | UINT8 *vram = (UINT8 *)m_vram.target(); |
r244752 | r244753 | |
504 | 517 | void pasogo_state::machine_reset() |
505 | 518 | { |
506 | 519 | astring region_tag; |
| 520 | ioport_port *color = ioport("COLOR"); |
507 | 521 | m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); |
508 | 522 | if (!m_cart_rom) // this should never happen, since we make carts mandatory! |
509 | 523 | m_cart_rom = memregion("maincpu"); |
r244752 | r244753 | |
511 | 525 | membank("bank27")->set_base(m_cart_rom->base()); |
512 | 526 | m_ems_index = 0; |
513 | 527 | memset(m_ems_bank, 0, sizeof(m_ems_bank)); |
| 528 | contrast(*color->first_field(), NULL, 0, color->read()); |
514 | 529 | } |
515 | 530 | |
516 | 531 | static MACHINE_CONFIG_START( pasogo, pasogo_state ) |
r244752 | r244753 | |
541 | 556 | MCFG_SCREEN_UPDATE_DRIVER(pasogo_state, screen_update_pasogo) |
542 | 557 | MCFG_SCREEN_PALETTE("palette") |
543 | 558 | MCFG_PALETTE_ADD("palette", 2) |
544 | | MCFG_PALETTE_INIT_OWNER(pasogo_state, pasogo) |
545 | 559 | |
546 | 560 | MCFG_GENERIC_CARTSLOT_ADD("cartslot", generic_plain_slot, "pasogo_cart") |
547 | 561 | MCFG_GENERIC_WIDTH(GENERIC_ROM16_WIDTH) |