diff options
author | cam900 <dbtlrchl@naver.com> | 2018-05-17 12:59:46 +0900 |
---|---|---|
committer | Vas Crabb <cuavas@users.noreply.github.com> | 2018-05-17 13:59:46 +1000 |
commit | f7b6bb6bbb9007aebfe9a4748c8a08e58d1614ec (patch) | |
tree | 03a589dbb95b142321cb2a3a5fc557a18b378593 /src/mame/machine | |
parent | 2da9fd50a611b0b6c3a9fea54ad46a3377e5284c (diff) |
leland.cpp cleanups (#3519)
* leland.cpp : Cleanup duplicates, Add generic_latch_16_device for maincpu to soundcpu comms, Improve tags, Reduce runtime tag lookups, Make drawing function relate to cliprect
* leland.cpp : Fix compile
* leland.cpp : Fix compile(again)
* leland.cpp : Fix sound command
* leland.cpp : Fix error
* leland.cpp : Background is tilemap; Accurate this and reduce unnecessary things
Diffstat (limited to 'src/mame/machine')
-rw-r--r-- | src/mame/machine/leland.cpp | 74 |
1 files changed, 32 insertions, 42 deletions
diff --git a/src/mame/machine/leland.cpp b/src/mame/machine/leland.cpp index 05a33177fa0..d7873d0cb6f 100644 --- a/src/mame/machine/leland.cpp +++ b/src/mame/machine/leland.cpp @@ -317,9 +317,6 @@ WRITE8_MEMBER(leland_state::indyheat_analog_w) MACHINE_START_MEMBER(leland_state,leland) { - /* allocate extra stuff */ - m_battery_ram = reinterpret_cast<uint8_t *>(memshare("battery")->ptr()); - /* start scanline interrupts going */ m_master_int_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(leland_state::leland_interrupt_callback),this)); @@ -367,22 +364,17 @@ MACHINE_RESET_MEMBER(leland_state,leland) m_alternate_bank = 0; /* initialize the master banks */ - m_master_length = memregion("master")->bytes(); - m_master_base = memregion("master")->base(); (this->*m_update_master_bank)(); /* initialize the slave banks */ - m_slave_length = memregion("slave")->bytes(); - m_slave_base = memregion("slave")->base(); - if (m_slave_length > 0x10000) - membank("bank3")->set_base(&m_slave_base[0x10000]); + if (m_slave_base.length() > 0x10000) + m_slave_bankslot->set_base(&m_slave_base[0x10000]); } MACHINE_START_MEMBER(leland_state,ataxx) { /* set the odd data banks */ - m_battery_ram = reinterpret_cast<uint8_t *>(memshare("battery")->ptr()); m_extra_tram = std::make_unique<uint8_t[]>(ATAXX_EXTRA_TRAM_SIZE); /* start scanline interrupts going */ @@ -405,7 +397,6 @@ MACHINE_RESET_MEMBER(leland_state,ataxx) m_master_int_timer->adjust(m_screen->time_until_pos(8), 8); /* initialize the XROM */ - m_xrom_base = memregion("user1")->base(); m_xrom1_addr = 0; m_xrom2_addr = 0; @@ -419,15 +410,11 @@ MACHINE_RESET_MEMBER(leland_state,ataxx) m_master_bank = 0; /* initialize the master banks */ - m_master_length = memregion("master")->bytes(); - m_master_base = memregion("master")->base(); ataxx_bankswitch(); /* initialize the slave banks */ - m_slave_length = memregion("slave")->bytes(); - m_slave_base = memregion("slave")->base(); - if (m_slave_length > 0x10000) - membank("bank3")->set_base(&m_slave_base[0x10000]); + if (m_slave_base.length() > 0x10000) + m_slave_bankslot->set_base(&m_slave_base[0x10000]); } @@ -511,10 +498,10 @@ void leland_state::mayhem_bankswitch() m_battery_ram_enable = ((m_sound_port_bank & 0x24) == 0); address = (!(m_sound_port_bank & 0x04)) ? &m_master_base[0x10000] : &m_master_base[0x1c000]; - membank("bank1")->set_base(address); + m_master_bankslot[0]->set_base(address); address = m_battery_ram_enable ? m_battery_ram : &address[0x8000]; - membank("bank2")->set_base(address); + m_master_bankslot[1]->set_base(address); } @@ -526,10 +513,10 @@ void leland_state::dangerz_bankswitch() m_battery_ram_enable = ((m_top_board_bank & 0x80) != 0); address = (!(m_alternate_bank & 1)) ? &m_master_base[0x02000] : &m_master_base[0x12000]; - membank("bank1")->set_base(address); + m_master_bankslot[0]->set_base(address); address = m_battery_ram_enable ? m_battery_ram : &address[0x8000]; - membank("bank2")->set_base(address); + m_master_bankslot[1]->set_base(address); } @@ -544,10 +531,10 @@ void leland_state::basebal2_bankswitch() address = (!(m_sound_port_bank & 0x04)) ? &m_master_base[0x10000] : &m_master_base[0x1c000]; else address = (!(m_top_board_bank & 0x40)) ? &m_master_base[0x28000] : &m_master_base[0x30000]; - membank("bank1")->set_base(address); + m_master_bankslot[0]->set_base(address); address = m_battery_ram_enable ? m_battery_ram : &address[0x8000]; - membank("bank2")->set_base(address); + m_master_bankslot[1]->set_base(address); } @@ -560,10 +547,10 @@ void leland_state::redline_bankswitch() m_battery_ram_enable = ((m_alternate_bank & 3) == 1); address = &m_master_base[bank_list[m_alternate_bank & 3]]; - membank("bank1")->set_base(address); + m_master_bankslot[0]->set_base(address); address = m_battery_ram_enable ? m_battery_ram : &m_master_base[0xa000]; - membank("bank2")->set_base(address); + m_master_bankslot[1]->set_base(address); } @@ -576,15 +563,15 @@ void leland_state::viper_bankswitch() m_battery_ram_enable = ((m_alternate_bank & 0x04) != 0); address = &m_master_base[bank_list[m_alternate_bank & 3]]; - if (bank_list[m_alternate_bank & 3] >= m_master_length) + if (bank_list[m_alternate_bank & 3] >= m_master_base.length()) { logerror("%s:Master bank %02X out of range!\n", machine().describe_context(), m_alternate_bank & 3); address = &m_master_base[bank_list[0]]; } - membank("bank1")->set_base(address); + m_master_bankslot[0]->set_base(address); address = m_battery_ram_enable ? m_battery_ram : &m_master_base[0xa000]; - membank("bank2")->set_base(address); + m_master_bankslot[1]->set_base(address); } @@ -597,15 +584,15 @@ void leland_state::offroad_bankswitch() m_battery_ram_enable = ((m_alternate_bank & 7) == 1); address = &m_master_base[bank_list[m_alternate_bank & 7]]; - if (bank_list[m_alternate_bank & 7] >= m_master_length) + if (bank_list[m_alternate_bank & 7] >= m_master_base.length()) { logerror("%s:Master bank %02X out of range!\n", machine().describe_context(), m_alternate_bank & 7); address = &m_master_base[bank_list[0]]; } - membank("bank1")->set_base(address); + m_master_bankslot[0]->set_base(address); address = m_battery_ram_enable ? m_battery_ram : &m_master_base[0xa000]; - membank("bank2")->set_base(address); + m_master_bankslot[1]->set_base(address); } @@ -622,12 +609,12 @@ void leland_state::ataxx_bankswitch() m_battery_ram_enable = ((m_master_bank & 0x30) == 0x10); address = &m_master_base[bank_list[m_master_bank & 15]]; - if (bank_list[m_master_bank & 15] >= m_master_length) + if (bank_list[m_master_bank & 15] >= m_master_base.length()) { logerror("%s:Master bank %02X out of range!\n", machine().describe_context(), m_master_bank & 15); address = &m_master_base[bank_list[0]]; } - membank("bank1")->set_base(address); + m_master_bankslot[0]->set_base(address); if (m_battery_ram_enable) address = m_battery_ram; @@ -635,7 +622,7 @@ void leland_state::ataxx_bankswitch() address = &m_ataxx_qram[(m_master_bank & 0xc0) << 8]; else address = &m_master_base[0xa000]; - membank("bank2")->set_base(address); + m_master_bankslot[1]->set_base(address); m_wcol_enable = ((m_master_bank & 0x30) == 0x30); } @@ -878,7 +865,10 @@ WRITE8_MEMBER(leland_state::ataxx_battery_ram_w) m_battery_ram[offset] = data; } else if ((m_master_bank & 0x30) == 0x20) - m_ataxx_qram[((m_master_bank & 0xc0) << 8) + offset] = data; + { + m_ataxx_qram[((m_master_bank & 0xc0) << 8) | offset] = data; + m_tilemap->mark_tile_dirty(((m_master_bank & 0x80) << 8) | offset); + } else logerror("%04X:BatteryW@%04X (invalid!)\n", m_master->pc(), offset); } @@ -1355,12 +1345,12 @@ WRITE8_MEMBER(leland_state::leland_slave_small_banksw_w) { int bankaddress = 0x10000 + 0xc000 * (data & 1); - if (bankaddress >= m_slave_length) + if (bankaddress >= m_slave_base.length()) { logerror("%04X:Slave bank %02X out of range!", m_slave->pc(), data & 1); bankaddress = 0x10000; } - membank("bank3")->set_base(&m_slave_base[bankaddress]); + m_slave_bankslot->set_base(&m_slave_base[bankaddress]); if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", m_slave->pc(), data & 1, bankaddress); } @@ -1370,12 +1360,12 @@ WRITE8_MEMBER(leland_state::leland_slave_large_banksw_w) { int bankaddress = 0x10000 + 0x8000 * (data & 15); - if (bankaddress >= m_slave_length) + if (bankaddress >= m_slave_base.length()) { logerror("%04X:Slave bank %02X out of range!", m_slave->pc(), data & 15); bankaddress = 0x10000; } - membank("bank3")->set_base(&m_slave_base[bankaddress]); + m_slave_bankslot->set_base(&m_slave_base[bankaddress]); if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", m_slave->pc(), data & 15, bankaddress); } @@ -1390,16 +1380,16 @@ WRITE8_MEMBER(leland_state::ataxx_slave_banksw_w) else { bankaddress = 0x10000 * bank + 0x8000 * ((data >> 4) & 1); - if (m_slave_length > 0x100000) + if (m_slave_base.length() > 0x100000) bankaddress += 0x100000 * ((data >> 5) & 1); } - if (bankaddress >= m_slave_length) + if (bankaddress >= m_slave_base.length()) { logerror("%04X:Slave bank %02X out of range!", m_slave->pc(), data & 0x3f); bankaddress = 0x2000; } - membank("bank3")->set_base(&m_slave_base[bankaddress]); + m_slave_bankslot->set_base(&m_slave_base[bankaddress]); if (LOG_BANKSWITCHING_S) logerror("%04X:Slave bank = %02X (%05X)\n", m_slave->pc(), data, bankaddress); } |