branches/kale/src/mame/drivers/thedeep.c
| r244596 | r244597 | |
| 51 | 51 | |
| 52 | 52 | void thedeep_state::machine_start() |
| 53 | 53 | { |
| 54 | membank("bank1")->configure_entries(0, 4, memregion("maincpu")->base() + 0x10000, 0x4000); |
| 54 | 55 | save_item(NAME(m_nmi_enable)); |
| 55 | 56 | save_item(NAME(m_protection_command)); |
| 56 | 57 | save_item(NAME(m_protection_data)); |
| 57 | 58 | save_item(NAME(m_protection_index)); |
| 58 | 59 | save_item(NAME(m_protection_irq)); |
| 59 | | save_item(NAME(m_rombank)); |
| 60 | 60 | save_item(NAME(m_mcu_p3_reg)); |
| 61 | 61 | } |
| 62 | 62 | |
| 63 | 63 | void thedeep_state::machine_reset() |
| 64 | 64 | { |
| 65 | | membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000 + 0 * 0x4000); |
| 65 | membank("bank1")->set_entry(0); |
| 66 | 66 | m_scroll[0] = 0; |
| 67 | 67 | m_scroll[1] = 0; |
| 68 | 68 | m_scroll[2] = 0; |
| r244596 | r244597 | |
| 70 | 70 | m_protection_command = 0; |
| 71 | 71 | m_protection_index = -1; |
| 72 | 72 | m_protection_irq = 0; |
| 73 | | m_rombank = -1; |
| 74 | 73 | } |
| 75 | 74 | |
| 76 | 75 | WRITE8_MEMBER(thedeep_state::protection_w) |
| r244596 | r244597 | |
| 90 | 89 | case 0x31: |
| 91 | 90 | case 0x32: |
| 92 | 91 | case 0x33: |
| 93 | | { |
| 94 | | UINT8 *rom; |
| 95 | | int new_rombank = m_protection_command & 3; |
| 96 | | if (m_rombank == new_rombank) break; |
| 97 | | m_rombank = new_rombank; |
| 98 | | rom = memregion("maincpu")->base(); |
| 99 | | membank("bank1")->set_base(rom + 0x10000 + m_rombank * 0x4000); |
| 100 | | |
| 101 | | } |
| 92 | membank("bank1")->set_entry(m_protection_command & 3); |
| 102 | 93 | break; |
| 103 | 94 | |
| 104 | 95 | case 0x59: |
| r244596 | r244597 | |
| 195 | 186 | |
| 196 | 187 | ***************************************************************************/ |
| 197 | 188 | |
| 198 | | void thedeep_state::maincpu_bankswitch(UINT8 bank_trig) |
| 199 | | { |
| 200 | | UINT8 *rom; |
| 201 | | int new_rombank = bank_trig & 3; |
| 202 | | |
| 203 | | if (m_rombank == new_rombank) |
| 204 | | return; |
| 205 | | m_rombank = new_rombank; |
| 206 | | rom = memregion("maincpu")->base(); |
| 207 | | membank("bank1")->set_base(rom + 0x10000 + m_rombank * 0x4000); |
| 208 | | |
| 209 | | } |
| 210 | | |
| 211 | 189 | WRITE8_MEMBER(thedeep_state::p1_w) |
| 212 | 190 | { |
| 213 | 191 | flip_screen_set((data & 1) ^ 1); |
| 214 | | maincpu_bankswitch((data & 6) >> 1); |
| 192 | membank("bank1")->set_entry((data & 6) >> 1); |
| 215 | 193 | logerror("P1 %02x\n",data); |
| 216 | 194 | } |
| 217 | 195 | |