void msx_cart_halnote::map_bank(int bank) { if (bank < 2) { return; } // Special banks if (bank == 6 || bank == 7) { m_bank_base[bank] = get_rom_base() + 0x80000 + (m_selected_bank[bank] * 0x800); return; } m_bank_base[bank] = get_rom_base() + ((m_selected_bank[bank] * 0x2000) & 0xFFFFF); if (bank == 2) { if (m_selected_bank[bank] & 0x80) { m_bank_base[0] = get_sram_base(); m_bank_base[1] = get_sram_base() + 0x2000; } else { m_bank_base[0] = nullptr; m_bank_base[1] = nullptr; } } }
void msx_cart_ascii8_sram::setup_bank(UINT8 bank) { if (m_selected_bank[bank] & ~(m_sram_select_mask | m_bank_mask)) { // Nothing is mapped m_bank_base[bank] = NULL; } else if (m_selected_bank[bank] & m_sram_select_mask) { // SRAM is selected m_bank_base[bank] = get_sram_base(); } else { m_bank_base[bank] = get_rom_base() + (m_selected_bank[bank] & m_bank_mask ) * 0x2000; } }
void msx_cart_gamemaster2::setup_bank(uint8_t bank) { switch (bank) { case 0: if (m_selected_bank[0] & 0x10) { m_bank_base[1] = get_sram_base() + ((m_selected_bank[0] & 0x20) ? 0x1000 : 0); m_bank_base[3] = get_sram_base() + ((m_selected_bank[0] & 0x20) ? 0x1000 : 0); } else { m_bank_base[1] = get_rom_base() + ( m_selected_bank[0] & 0x0f ) * 0x2000; m_bank_base[3] = get_rom_base() + ( m_selected_bank[0] & 0x0f ) * 0x2000; } break; case 1: if (m_selected_bank[1] & 0x10) { m_bank_base[4] = get_sram_base() + ((m_selected_bank[1] & 0x20) ? 0x1000 : 0); m_bank_base[6] = get_sram_base() + ((m_selected_bank[1] & 0x20) ? 0x1000 : 0); } else { m_bank_base[4] = get_rom_base() + ( m_selected_bank[1] & 0x0f ) * 0x2000; m_bank_base[6] = get_rom_base() + ( m_selected_bank[1] & 0x0f ) * 0x2000; } break; case 2: if (m_selected_bank[2] & 0x10) { m_bank_base[5] = get_sram_base() + ((m_selected_bank[2] & 0x20) ? 0x1000 : 0); m_bank_base[7] = get_sram_base() + ((m_selected_bank[2] & 0x20) ? 0x1000 : 0); } else { m_bank_base[5] = get_rom_base() + ( m_selected_bank[2] & 0x0f ) * 0x2000; m_bank_base[7] = get_rom_base() + ( m_selected_bank[2] & 0x0f ) * 0x2000; } break; } }