void gameking_state::machine_start() { std::string region_tag; m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (!m_cart_rom) { printf("No Rom\n"); return; } m_bank4000 = membank("bank4000"); m_bank8000 = membank("bank8000"); m_bankc000 = membank("bankc000"); // Minor hacking to get things going (should be removed when we have bios dump) m_cart_rom->base()[0x3ffc] = 0x00; m_cart_rom->base()[0x3ffd] = 0x40; // Some fake code to get bios function calls logged memory_region *maincpu_rom = memregion("maincpu"); maincpu_rom->base()[0x0f80] = 0x9d; // STA $0e00,X maincpu_rom->base()[0x0f81] = 0x00; maincpu_rom->base()[0x0f82] = 0x0e; maincpu_rom->base()[0x0f83] = 0x60; // RTS m_bank8000->set_base(m_cart_rom->base()); m_bankc000->set_base(m_cart_rom->base()); m_bank4000->set_base(m_cart_rom->base() + 0x4000); }
void tutor_state::machine_start() { std::string region_tag; m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); m_tape_interrupt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tutor_state::tape_interrupt_handler),this)); m_bank1->configure_entry(0, memregion("maincpu")->base() + 0x4000); m_bank1->set_entry(0); m_bank2->configure_entry(0, memregion("maincpu")->base() + 0x8000); m_bank2->set_entry(0); if (m_cart_rom) { if (m_cart_rom->bytes() > 0x4000) { m_bank1_switching = 1; m_bank1->configure_entry(1, m_cart_rom->base()); m_bank1->set_entry(1); m_bank2->configure_entry(1, m_cart_rom->base() + 0x4000); m_bank2->set_entry(1); } else { m_bank2->configure_entry(1, m_cart_rom->base()); m_bank2->set_entry(1); } } }
debug_view_memory_source::debug_view_memory_source(const char *name, memory_region ®ion) : debug_view_source(name), m_space(NULL), m_memintf(NULL), m_base(region), m_length(region.bytes()), m_offsetxor(NATIVE_ENDIAN_VALUE_LE_BE(region.width() - 1, 0)), m_endianness(region.endianness()), m_prefsize(MIN(region.width(), 8)) { }
void prestige_state::machine_start() { std::string region_tag; m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); UINT8 *rom = memregion("maincpu")->base(); UINT8 *cart = m_cart_rom->base(); UINT8 *ram = m_ram->pointer(); memset(ram, 0x00, m_ram->size()); m_bank1->configure_entries(0, 64, rom, 0x4000); m_bank1->configure_entries(64,32, cart, 0x4000); m_bank2->configure_entries(0, 64, rom, 0x4000); m_bank2->configure_entries(64,32, cart, 0x4000); m_bank3->configure_entries(0, 64, rom, 0x4000); m_bank3->configure_entries(64,32, cart, 0x4000); m_bank4->configure_entries(0, 4, ram, 0x2000); m_bank5->configure_entries(0, 4, ram, 0x2000); m_bank1->set_entry(0); m_bank2->set_entry(0); m_bank3->set_entry(0); m_bank4->set_entry(0); m_bank5->set_entry(0); //pointer to the videoram m_vram = ram; }
void set_banks() { UINT8 *ram_ptr = m_messram->pointer(); m_ram_0000 = ram_ptr; if ( m_pia0_porta & 0x01 ) m_ram_0000 += 0x10000; membank( "0000" )->set_base( m_ram_0000 + 0x0000 ); membank( "2000" )->set_base( m_ram_0000 + 0x2000 ); membank( "4000" )->set_base( m_ram_0000 + 0x4000 ); m_ram_c000 = m_ram_0000 + 0xc000; membank( "e000" )->set_base( m_ram_0000 + 0xe000 ); if ( m_pia0_porta & 0x80 ) { membank( "0000" )->set_base( memregion("maincpu")->base()); /* When BIOS is enabled 2000-3FFF is set to the "ROM RAM" */ membank( "2000" )->set_base( ram_ptr + 0x20000 ); } if ( m_pia0_porta & 0x40 ) m_ram_c000 = m_vram_region->base(); }
void leapster_state::machine_start() { astring region_tag; m_cart_rom = memregion(region_tag.cpy(m_cart->tag()).cat(GENERIC_ROM_REGION_TAG)); if (m_cart_rom) { address_space &space = m_maincpu->space(AS_PROGRAM); space.install_readwrite_bank(0x80000000, 0x807fffff, "cartrom"); membank("cartrom")->set_base(m_cart_rom->base()); } }
void pb1000_state::machine_start() { std::string region_tag; m_rom_reg = memregion("rom"); if (m_card1) m_card1_reg = memregion(region_tag.assign(m_card1->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); if (m_card2) m_card2_reg = memregion(region_tag.assign(m_card2->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); membank("bank1")->set_base(m_rom_reg->base()); m_kb_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pb1000_state::keyboard_timer),this)); m_kb_timer->adjust(attotime::from_hz(192), 0, attotime::from_hz(192)); }
debug_view_memory_source::debug_view_memory_source(const char *name, memory_region ®ion) : debug_view_source(name), m_space(nullptr), m_memintf(nullptr), m_base(region.base()), m_length(region.bytes()), m_offsetxor(ENDIAN_VALUE_NE_NNE(region.endianness(), 0, region.bytewidth() - 1)), m_endianness(region.endianness()), m_prefsize(std::min<u8>(region.bytewidth(), 8)) { }
void prestige_state::machine_start() { std::string region_tag; m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); uint8_t *rom = memregion("maincpu")->base(); uint8_t *cart = nullptr; if (m_cart_rom != nullptr) { cart = m_cart_rom->base(); } else { cart = rom + 0x40000; // internal ROM also includes extra contents that are activated by a cartridge that works as a jumper } uint8_t *ram = m_ram->pointer(); memset(ram, 0x00, m_ram->size()); m_bank1->configure_entries(0, 64, rom, 0x4000); m_bank1->configure_entries(64,32, cart, 0x4000); m_bank2->configure_entries(0, 64, rom, 0x4000); m_bank2->configure_entries(64,32, cart, 0x4000); m_bank3->configure_entries(0, 64, rom, 0x4000); m_bank3->configure_entries(64,32, cart, 0x4000); m_bank4->configure_entries(0, 4, ram, 0x2000); m_bank5->configure_entries(0, 4, ram, 0x2000); m_bank1->set_entry(0); m_bank2->set_entry(0); m_bank3->set_entry(0); m_bank4->set_entry(0); m_bank5->set_entry(0); //pointer to the videoram m_vram = ram; }
void cc40_state::machine_start() { // init std::string region_tag; m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); membank("sysbank")->configure_entries(0, 4, memregion("system")->base(), 0x2000); if (m_cart_rom) membank("cartbank")->configure_entries(0, 4, m_cart_rom->base(), 0x8000); else membank("cartbank")->set_base(memregion("maincpu")->base() + 0x5000); m_nvram[0] = machine().device<nvram_device>("sysram.1"); m_nvram[1] = machine().device<nvram_device>("sysram.2"); init_sysram(0, 0x800); // default to 6KB init_sysram(1, 0x800); // " address_space &space = m_maincpu->space(AS_PROGRAM); bus_control_w(space, 0, 0); bankswitch_w(space, 0, 0); // zerofill other m_power = 0; m_clock_control = 0; m_key_select = 0; // register for savestates save_item(NAME(m_bus_control)); save_item(NAME(m_power)); save_item(NAME(m_banks)); save_item(NAME(m_clock_control)); save_item(NAME(m_clock_divider)); save_item(NAME(m_key_select)); machine().save().register_postload(save_prepost_delegate(FUNC(cc40_state::postload), this)); }
void tvc_state::set_mem_page(UINT8 data) { address_space &space = m_maincpu->space(AS_PROGRAM); switch (data & 0x18) { case 0x00 : // system ROM selected TVC_INSTALL_ROM_BANK(0, "bank1", 0x0000, 0x3fff); membank("bank1")->set_base(m_bios_rom->base()); break; case 0x08 : // Cart ROM selected if (m_cart_rom) { TVC_INSTALL_ROM_BANK(0, "bank1", 0x0000, 0x3fff); membank("bank1")->set_base(m_cart_rom->base()); } break; case 0x10 : // RAM selected TVC_INSTALL_RAM_BANK(0, "bank1", 0x0000, 0x3fff); membank("bank1")->set_base(m_ram->pointer()); break; case 0x18 : // Video RAM if (m_vram->bytes() > 0x4000) { // TVC 64+ only TVC_INSTALL_RAM_BANK(0, "bank1", 0x0000, 0x3fff); membank("bank1")->set_base(m_vram->base() + ((m_vram_bank & 0x03)<<14)); } else { space.unmap_readwrite(0x0000, 0x3fff); m_bank_type[0] = -1; } break; } if ((data & 0x20)==0) // Video RAM { TVC_INSTALL_RAM_BANK(2, "bank3", 0x8000, 0xbfff); membank("bank3")->set_base(m_vram->base() + ((m_vram_bank & 0x0c)<<12)); } else // System RAM page 3 { if (m_ram->size() > 0x8000) { TVC_INSTALL_RAM_BANK(2, "bank3", 0x8000, 0xbfff); membank("bank3")->set_base(m_ram->pointer() + 0x8000); } else { space.unmap_readwrite(0x8000, 0xbfff); m_bank_type[2] = -1; } } switch(data & 0xc0) { case 0x00 : // Cart ROM selected if (m_cart_rom) { TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff); membank("bank4")->set_base(m_cart_rom->base()); } break; case 0x40 : // System ROM selected TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff); membank("bank4")->set_base(m_bios_rom->base()); break; case 0x80 : // RAM selected if (m_ram->size() > 0x8000) { TVC_INSTALL_RAM_BANK(3, "bank4", 0xc000, 0xffff); membank("bank4")->set_base(m_ram->pointer() + 0xc000); } else { space.unmap_readwrite(0xc000, 0xffff); m_bank_type[3] = -1; } break; case 0xc0 : // External ROM selected TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff); membank("bank4")->set_base(m_ext->base()); space.install_readwrite_handler (0xc000, 0xdfff, 0, 0, read8_delegate(FUNC(tvc_state::expansion_r), this), write8_delegate(FUNC(tvc_state::expansion_w), this), 0); m_bank_type[3] = -1; break; } }