trunk/src/mess/drivers/vii.c
| r20866 | r20867 | |
| 92 | 92 | m_p_rowscroll(*this, "p_rowscroll"), |
| 93 | 93 | m_p_palette(*this, "p_palette"), |
| 94 | 94 | m_p_spriteram(*this, "p_spriteram"), |
| 95 | | m_p_cart(*this, "p_cart"){ } |
| 95 | m_p_cart(*this, "p_cart"), |
| 96 | m_region_cart(*this, "cart"), |
| 97 | m_io_p1(*this, "P1") |
| 98 | { } |
| 96 | 99 | |
| 97 | 100 | required_device<cpu_device> m_maincpu; |
| 98 | 101 | DECLARE_READ16_MEMBER(vii_video_r); |
| r20866 | r20867 | |
| 145 | 148 | TIMER_CALLBACK_MEMBER(tmb2_tick); |
| 146 | 149 | DECLARE_DEVICE_IMAGE_LOAD_MEMBER(vii_cart); |
| 147 | 150 | DECLARE_DEVICE_IMAGE_LOAD_MEMBER(vsmile_cart); |
| 151 | |
| 152 | protected: |
| 153 | optional_memory_region m_region_cart; |
| 154 | required_ioport m_io_p1; |
| 148 | 155 | }; |
| 149 | 156 | |
| 150 | 157 | enum |
| r20866 | r20867 | |
| 176 | 183 | va_start( v, s_fmt ); |
| 177 | 184 | vsprintf( buf, s_fmt, v ); |
| 178 | 185 | va_end( v ); |
| 179 | | logerror( "%04x: %s", machine.device("maincpu")->safe_pc(), buf ); |
| 186 | logerror( "%04x: %s", machine.driver_data<vii_state>()->m_maincpu->pc(), buf ); |
| 180 | 187 | } |
| 181 | 188 | } |
| 182 | 189 | #else |
| r20866 | r20867 | |
| 559 | 566 | |
| 560 | 567 | void vii_state::vii_switch_bank(UINT32 bank) |
| 561 | 568 | { |
| 562 | | UINT8 *cart = memregion("cart")->base(); |
| 569 | UINT8 *cart = m_region_cart->base(); |
| 563 | 570 | |
| 564 | 571 | if(bank != m_current_bank) |
| 565 | 572 | { |
| r20866 | r20867 | |
| 595 | 602 | { |
| 596 | 603 | if(index == 0) |
| 597 | 604 | { |
| 598 | | UINT16 temp = ioport("P1")->read(); |
| 605 | UINT16 temp = m_io_p1->read(); |
| 599 | 606 | what |= (temp & 0x0001) ? 0x8000 : 0; |
| 600 | 607 | what |= (temp & 0x0002) ? 0x4000 : 0; |
| 601 | 608 | what |= (temp & 0x0004) ? 0x2000 : 0; |
| r20866 | r20867 | |
| 928 | 935 | |
| 929 | 936 | DEVICE_IMAGE_LOAD_MEMBER( vii_state, vii_cart ) |
| 930 | 937 | { |
| 931 | | UINT8 *cart = memregion( "cart" )->base(); |
| 938 | UINT8 *cart = m_region_cart->base(); |
| 932 | 939 | if (image.software_entry() == NULL) |
| 933 | 940 | { |
| 934 | 941 | int size = image.length(); |
| r20866 | r20867 | |
| 961 | 968 | |
| 962 | 969 | DEVICE_IMAGE_LOAD_MEMBER( vii_state, vsmile_cart ) |
| 963 | 970 | { |
| 964 | | UINT8 *cart = memregion( "cart" )->base(); |
| 971 | UINT8 *cart = m_region_cart->base(); |
| 965 | 972 | if (image.software_entry() == NULL) |
| 966 | 973 | { |
| 967 | 974 | int size = image.length(); |
| r20866 | r20867 | |
| 1002 | 1009 | m_controller_input[6] = 0xff; |
| 1003 | 1010 | m_controller_input[7] = 0; |
| 1004 | 1011 | |
| 1005 | | UINT8 *rom = memregion( "cart" )->base(); |
| 1012 | UINT8 *rom = m_region_cart->base(); |
| 1006 | 1013 | if (rom) |
| 1007 | 1014 | { // to prevent batman crash |
| 1008 | 1015 | memcpy(m_p_cart, rom + 0x4000*2, (0x400000 - 0x4000) * 2); |
| r20866 | r20867 | |
| 1028 | 1035 | UINT32 z = machine().rand() & 0x3ff; |
| 1029 | 1036 | |
| 1030 | 1037 | |
| 1031 | | m_controller_input[0] = ioport("P1")->read(); |
| 1038 | m_controller_input[0] = m_io_p1->read(); |
| 1032 | 1039 | m_controller_input[1] = (UINT8)x; |
| 1033 | 1040 | m_controller_input[2] = (UINT8)y; |
| 1034 | 1041 | m_controller_input[3] = (UINT8)z; |