diff --git a/hash/msx1_cart.xml b/hash/msx1_cart.xml index 15050e35d9e..d1186b4816f 100644 --- a/hash/msx1_cart.xml +++ b/hash/msx1_cart.xml @@ -2830,7 +2830,7 @@ kept for now until finding out what those bytes affect... - + Break In (Jpn) 1987 Jaleco @@ -5303,7 +5303,7 @@ kept for now until finding out what those bytes affect... - + Flight Deck (Jpn) 1986 Pony Canyon @@ -5316,7 +5316,7 @@ kept for now until finding out what those bytes affect... - + Flight Deck (Jpn, Alt) 1986 Pony Canyon @@ -8426,7 +8426,7 @@ kept for now until finding out what those bytes affect... - + Mashou no Yakata - Gabalin (Jpn) 1987 Pony Canyon @@ -8440,7 +8440,7 @@ kept for now until finding out what those bytes affect... - + Mashou no Yakata - Gabalin (Jpn, Alt) 1987 Pony Canyon @@ -11285,7 +11285,7 @@ kept for now until finding out what those bytes affect... - + Skooter (Jpn, Alt) 1988 Pony Canyon @@ -13175,7 +13175,7 @@ kept for now until finding out what those bytes affect... - + Xanadu - Dragon Slayer II (Kor) 1987 Zemina @@ -13721,7 +13721,7 @@ kept for now until finding out what those bytes affect... - + FM Pana Amusement Cartridge 19?? Panasoft @@ -13885,7 +13885,7 @@ kept for now until finding out what those bytes affect... - + Konami no Shin 10-bai Cartridge (Jpn) 1987 Konami @@ -14525,6 +14525,7 @@ kept for now until finding out what those bytes affect... 1985 Toshiba + diff --git a/src/emu/bus/msx_cart/konami.c b/src/emu/bus/msx_cart/konami.c index ee8115efd07..d6ff7f8866b 100644 --- a/src/emu/bus/msx_cart/konami.c +++ b/src/emu/bus/msx_cart/konami.c @@ -14,7 +14,7 @@ msx_cart_konami::msx_cart_konami(const machine_config &mconfig, const char *tag, , msx_cart_interface(mconfig, *this) , m_bank_mask(0) { - for (int i = 0; i < 3; i++) + for (int i = 0; i < 4; i++) { m_selected_bank[i] = 0; } @@ -35,22 +35,22 @@ void msx_cart_konami::device_start() void msx_cart_konami::restore_banks() { - m_bank_base[0] = get_rom_base(); - m_bank_base[1] = get_rom_base() + ( m_selected_bank[0] & m_bank_mask ) * 0x2000; - m_bank_base[2] = get_rom_base(); - m_bank_base[3] = get_rom_base() + ( m_selected_bank[0] & m_bank_mask ) * 0x2000; - m_bank_base[4] = get_rom_base() + ( m_selected_bank[1] & m_bank_mask ) * 0x2000; - m_bank_base[5] = get_rom_base() + ( m_selected_bank[2] & m_bank_mask ) * 0x2000; - m_bank_base[6] = get_rom_base() + ( m_selected_bank[1] & m_bank_mask ) * 0x2000; - m_bank_base[7] = get_rom_base() + ( m_selected_bank[2] & m_bank_mask ) * 0x2000; + m_bank_base[0] = get_rom_base() + ( m_selected_bank[0] & m_bank_mask ) * 0x2000; + m_bank_base[1] = get_rom_base() + ( m_selected_bank[1] & m_bank_mask ) * 0x2000; + m_bank_base[2] = get_rom_base() + ( m_selected_bank[0] & m_bank_mask ) * 0x2000; + m_bank_base[3] = get_rom_base() + ( m_selected_bank[1] & m_bank_mask ) * 0x2000; + m_bank_base[4] = get_rom_base() + ( m_selected_bank[2] & m_bank_mask ) * 0x2000; + m_bank_base[5] = get_rom_base() + ( m_selected_bank[3] & m_bank_mask ) * 0x2000; + m_bank_base[6] = get_rom_base() + ( m_selected_bank[2] & m_bank_mask ) * 0x2000; + m_bank_base[7] = get_rom_base() + ( m_selected_bank[3] & m_bank_mask ) * 0x2000; } void msx_cart_konami::device_reset() { - for (int i = 0; i < 3; i++) + for (int i = 0; i < 4; i++) { - m_selected_bank[i] = i + 1; + m_selected_bank[i] = i; } } @@ -87,22 +87,28 @@ WRITE8_MEMBER(msx_cart_konami::write_cart) { switch (offset) { - case 0x6000: + case 0x4000: m_selected_bank[0] = data; - m_bank_base[1] = get_rom_base() + ( m_selected_bank[0] & m_bank_mask ) * 0x2000; - m_bank_base[3] = get_rom_base() + ( m_selected_bank[0] & m_bank_mask ) * 0x2000; + m_bank_base[0] = get_rom_base() + ( m_selected_bank[0] & m_bank_mask ) * 0x2000; + m_bank_base[2] = get_rom_base() + ( m_selected_bank[0] & m_bank_mask ) * 0x2000; + break; + + case 0x6000: + m_selected_bank[1] = data; + m_bank_base[1] = get_rom_base() + ( m_selected_bank[1] & m_bank_mask ) * 0x2000; + m_bank_base[3] = get_rom_base() + ( m_selected_bank[1] & m_bank_mask ) * 0x2000; break; case 0x8000: - m_selected_bank[1] = data; - m_bank_base[4] = get_rom_base() + ( m_selected_bank[1] & m_bank_mask ) * 0x2000; - m_bank_base[6] = get_rom_base() + ( m_selected_bank[1] & m_bank_mask ) * 0x2000; + m_selected_bank[2] = data; + m_bank_base[4] = get_rom_base() + ( m_selected_bank[2] & m_bank_mask ) * 0x2000; + m_bank_base[6] = get_rom_base() + ( m_selected_bank[2] & m_bank_mask ) * 0x2000; break; case 0xa000: - m_selected_bank[2] = data; - m_bank_base[5] = get_rom_base() + ( m_selected_bank[2] & m_bank_mask ) * 0x2000; - m_bank_base[7] = get_rom_base() + ( m_selected_bank[2] & m_bank_mask ) * 0x2000; + m_selected_bank[3] = data; + m_bank_base[5] = get_rom_base() + ( m_selected_bank[3] & m_bank_mask ) * 0x2000; + m_bank_base[7] = get_rom_base() + ( m_selected_bank[3] & m_bank_mask ) * 0x2000; break; } } diff --git a/src/emu/bus/msx_cart/konami.h b/src/emu/bus/msx_cart/konami.h index 18d0429d302..5d1501cdaef 100644 --- a/src/emu/bus/msx_cart/konami.h +++ b/src/emu/bus/msx_cart/konami.h @@ -33,7 +33,7 @@ public: private: UINT8 m_bank_mask; - UINT8 m_selected_bank[3]; + UINT8 m_selected_bank[4]; UINT8 *m_bank_base[8]; }; diff --git a/src/emu/bus/msx_cart/nomapper.c b/src/emu/bus/msx_cart/nomapper.c index faa91b3d1dc..a53b42f547f 100644 --- a/src/emu/bus/msx_cart/nomapper.c +++ b/src/emu/bus/msx_cart/nomapper.c @@ -35,6 +35,11 @@ void msx_cart_nomapper::initialize_cartridge() } } + if (size == 0x10000) + { + m_start_address = 0; + } + m_end_address = MIN(m_start_address + size, 0x10000); }