mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
msx1_cart.xml: Added 100 items (99 working). (#11235)
bus/msx/cart: Added support for Love Plus Pack 0 multi-game cartridge. New working software list items (msx1_cart.xml) ------------------------------- The Love Plus Pack 0 (Korea, pirate) [file-hunter] Trun (demo) [file-hunter] Twin Hammer (Europe, alt) [file-hunter] Twin Hammer (Europe, alt 2) [file-hunter] Video Hustler (Japan, alt 2) [file-hunter] Volguard (Japan, alt) [file-hunter] TT Racer (Al Alamiah) [file-hunter] Voyage to Mecca (Arab, alt 3) [file-hunter] T-Game 4 [file-hunter] T-Game 4 (alt) [file-hunter] T-Virus [MSXDev] Tales of Popolon (English, v1.3.1) [santiontanon] Tales of Popolon (Spanish, v1.3.1) [santiontanon] Tales of Popolon (English, v1.3) [santiontanon] Tales of Popolon (Spanish, v1.3) [santiontanon] Tales of Popolon (English, v1.2) [santiontanon] Tales of Popolon (Spanish, v1.2) [santiontanon] Tales of Popolon (English, v1.1.1) [santiontanon] Tales of Popolon (English, v1.1) [santiontanon] Tales of Popolon (English, v1.0) [santiontanon] Teki-Paki [file-hunter] Teki-Paki (beta) [MSXDev] Tekmo 400 [file-hunter] Teodoro no Sabe Volar (English) [MSXDev] Teodoro no Sabe Volar (Spanish) [MSXDev] The Circus Mystery (v1.4) [MSXDev] The Circus Mystery (v1.3) [file-hunter] The Cure [MSXDev] The Cure (alt) [file-hunter] The Lost Mines [file-hunter] The Mansion (English) [MSXDev] The Mansion (Spanish) [MSXDev] The Menace from Triton (v1.2) [santiontanon] The Menace from Triton (v1.1) [santiontanon] The Menace from Triton (v1.0.2) [santiontanon] The Menace from Triton (v1.0.1) [santiontanon] The Menace from Triton (v1.0.0) [santiontanon] The Queen's Footsteps (v1.1.1) [Davide Bucci] The Queen's Footsteps (v1.0) [file-hunter] Tiles of Shalom [MSXDev] Tilez [[msx.org](http://msx.org/)] Tina's Adventure Island [hobbyretro] Tiny Slot Checker (v3.2) [tiny-yarou] Tiny Slot Checker (v2) [tiny-yarou] Tiny Slot Checker (older) [file-hunter] Tomb of Genghis Khan [MSXDev] Tool Blocks [MSXDev] Tortilla Sunrise (English, v1.1) [MSXDev] Tortilla Sunrise (Spanish, v1.1) [MSXDev] Tortilla Sunrise (English, v1.0) [MSXDev] Toss a Coin to your Witcher [cobinee] Traffic Jam [MSXDev] Traffic Jam (alt) [file-hunter] Tragaperras (Spanish) [MSXDev] Trail 2 [file-hunter] Transball (v1.3.2, English) [santiontanon] Transball (v1.3.2, Spanish) [santiontanon] Transball (v1.3.1, English) [santiontanon] Transball (v1.3.1, Spanish) [santiontanon] Transball (v1.3, English) [santiontanon] Transball (v1.3, Spanish) [santiontanon] Transball (v1.2.1, English) [santiontanon] Transball (v1.2.1, Spanish) [santiontanon] Transball (v1.2, English) [santiontanon] Transball (v1.2, Spanish) [santiontanon] Transball (v1.1.1, English) [santiontanon] Transball (v1.1.1, Spanish) [santiontanon] Transball (v1.1, English) [santiontanon] Transball (v1.1, Spanish) [santiontanon] Transball (v1.0.1, Spanish) [santiontanon] Transball (v1.0, English) [santiontanon] Transball (v1.0, Spanish) [santiontanon] Turfy (2019 version) [file-hunter] Turfy (2016 version) [file-hunter] Twinlight [retrosouls] Twinlight (alt) [file-hunter] Txupinazo! [MSXDev] U-Do [file-hunter] U.F.O. [file-hunter] UnidentifiedFlyingObject [cobinee] Universe Unknown [file-hunter] Universe Unknown (alt) [file-hunter] Up Tack [cobinee] Uridium [file-hunter] Uridium (alt) [file-hunter] Uridium (alt 2) [file-hunter] Uridium (alt 3) [file-hunter] Utopia [file-hunter] veejingSX (v0.996b) [303bcn] veejingSX (v0.99b) [303bcn] veejingSX (v0.9b) [303bcn] 9918-veejing (v0.7b, Russian) [303bcn] 9918-veejing (v0.1b) [303bcn] Viking (English) [MSXDev] Viking (Spanish) [MSXDev] Virus LPQ-79 (v1.20) [MSXDev] Virus LPQ-79 (v1.10) [file-hunter] Virus LPQ-79 (v1.00) [file-hunter] VVVVVV (unfinished) [hap] New NOT_WORKING software list additions (msx1_cart.xml) ------------------------------------------ Tel-Tron (Netherlands) [file-hunter]
This commit is contained in:
parent
dcf0346ad0
commit
d605021ac0
1345
hash/msx1_cart.xml
1345
hash/msx1_cart.xml
File diff suppressed because it is too large
Load Diff
@ -1928,6 +1928,8 @@ if (BUSES["MSX_SLOT"]~=null) then
|
||||
MAME_DIR .. "src/devices/bus/msx/cart/konami.h",
|
||||
MAME_DIR .. "src/devices/bus/msx/cart/korean.cpp",
|
||||
MAME_DIR .. "src/devices/bus/msx/cart/korean.h",
|
||||
MAME_DIR .. "src/devices/bus/msx/cart/loveplus.cpp",
|
||||
MAME_DIR .. "src/devices/bus/msx/cart/loveplus.h",
|
||||
MAME_DIR .. "src/devices/bus/msx/cart/majutsushi.cpp",
|
||||
MAME_DIR .. "src/devices/bus/msx/cart/majutsushi.h",
|
||||
MAME_DIR .. "src/devices/bus/msx/cart/moonsound.h",
|
||||
|
119
src/devices/bus/msx/cart/loveplus.cpp
Normal file
119
src/devices/bus/msx/cart/loveplus.cpp
Normal file
@ -0,0 +1,119 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Wilbert Pol
|
||||
/******************************************************************************
|
||||
|
||||
Banking for Love Plus Pack 0, Korean 83-in-1 pirate.
|
||||
|
||||
******************************************************************************/
|
||||
#include "emu.h"
|
||||
#include "loveplus.h"
|
||||
|
||||
|
||||
namespace {
|
||||
|
||||
class msx_cart_loveplus_device : public device_t, public msx_cart_interface
|
||||
{
|
||||
public:
|
||||
msx_cart_loveplus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
virtual std::error_condition initialize_cartridge(std::string &message) override;
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
private:
|
||||
template <int Bank> void bank_w(u8 data);
|
||||
void bank_9000_w(u8 data);
|
||||
|
||||
memory_bank_array_creator<4> m_rombank;
|
||||
|
||||
u8 m_bank_mask;
|
||||
bool m_bank_locked[4];
|
||||
};
|
||||
|
||||
|
||||
msx_cart_loveplus_device::msx_cart_loveplus_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: device_t(mconfig, MSX_CART_LOVEPLUS, tag, owner, clock)
|
||||
, msx_cart_interface(mconfig, *this)
|
||||
, m_rombank(*this, "rombank%u", 0U)
|
||||
{
|
||||
}
|
||||
|
||||
void msx_cart_loveplus_device::device_start()
|
||||
{
|
||||
save_item(NAME(m_bank_locked));
|
||||
}
|
||||
|
||||
void msx_cart_loveplus_device::device_reset()
|
||||
{
|
||||
m_rombank[0]->set_entry(0);
|
||||
m_rombank[1]->set_entry(1);
|
||||
m_rombank[2]->set_entry(2);
|
||||
m_rombank[3]->set_entry(3);
|
||||
}
|
||||
|
||||
std::error_condition msx_cart_loveplus_device::initialize_cartridge(std::string &message)
|
||||
{
|
||||
if (!cart_rom_region())
|
||||
{
|
||||
message = "msx_cart_loveplus_device: Required region 'rom' was not found.";
|
||||
return image_error::INTERNAL;
|
||||
}
|
||||
|
||||
const u32 size = cart_rom_region()->bytes();
|
||||
const u16 banks = size / 0x2000;
|
||||
|
||||
if (size > 256 * 0x8000 || size < 0x10000 || size != banks * 0x2000 || (~(banks - 1) % banks))
|
||||
{
|
||||
message = "msx_cart_loveplus_device: Region 'rom' has unsupported size.";
|
||||
return image_error::INVALIDLENGTH;
|
||||
}
|
||||
|
||||
m_bank_mask = banks - 1;
|
||||
|
||||
m_rombank[0]->configure_entries(0, banks, cart_rom_region()->base(), 0x2000);
|
||||
m_rombank[1]->configure_entries(0, banks, cart_rom_region()->base(), 0x2000);
|
||||
m_rombank[2]->configure_entries(0, banks, cart_rom_region()->base(), 0x2000);
|
||||
m_rombank[3]->configure_entries(0, banks, cart_rom_region()->base(), 0x2000);
|
||||
|
||||
page(1)->install_read_bank(0x4000, 0x5fff, m_rombank[0]);
|
||||
page(1)->install_read_bank(0x6000, 0x7fff, m_rombank[1]);
|
||||
page(1)->nop_write(0x5000, 0x5000); // Referenced from code but never used
|
||||
page(1)->install_write_handler(0x6000, 0x6000, emu::rw_delegate(*this, FUNC(msx_cart_loveplus_device::bank_w<0>)));
|
||||
page(1)->install_write_handler(0x6800, 0x6800, emu::rw_delegate(*this, FUNC(msx_cart_loveplus_device::bank_w<1>)));
|
||||
page(1)->install_write_handler(0x7000, 0x7000, emu::rw_delegate(*this, FUNC(msx_cart_loveplus_device::bank_w<2>)));
|
||||
page(1)->install_write_handler(0x7800, 0x7800, emu::rw_delegate(*this, FUNC(msx_cart_loveplus_device::bank_w<3>)));
|
||||
page(2)->install_read_bank(0x8000, 0x9fff, m_rombank[2]);
|
||||
page(2)->install_read_bank(0xa000, 0xbfff, m_rombank[3]);
|
||||
page(2)->install_write_handler(0x9000, 0x9000, emu::rw_delegate(*this, FUNC(msx_cart_loveplus_device::bank_9000_w)));
|
||||
page(2)->nop_write(0xb000, 0xb000); // Referenced from code but never used
|
||||
|
||||
return std::error_condition();
|
||||
}
|
||||
|
||||
template <int Bank>
|
||||
void msx_cart_loveplus_device::bank_w(u8 data)
|
||||
{
|
||||
// The banking registers can be only written to once otherwise Q-Bert will not
|
||||
// start and drop back to Basic.
|
||||
if (!m_bank_locked[Bank])
|
||||
{
|
||||
m_rombank[Bank]->set_entry(data & m_bank_mask);
|
||||
m_bank_locked[Bank] = true;
|
||||
}
|
||||
}
|
||||
|
||||
void msx_cart_loveplus_device::bank_9000_w(u8 data)
|
||||
{
|
||||
// Before switching to a game the sequence 00, 3f, c2 is written here.
|
||||
// This unlocks and/or configures the write-once banking somehow
|
||||
for (int i = 0; i < 4; i++)
|
||||
m_bank_locked[i] = false;
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
DEFINE_DEVICE_TYPE_PRIVATE(MSX_CART_LOVEPLUS, msx_cart_interface, msx_cart_loveplus_device, "msx_cart_loveplus", "MSX Cartridge - Love Plus Pack")
|
14
src/devices/bus/msx/cart/loveplus.h
Normal file
14
src/devices/bus/msx/cart/loveplus.h
Normal file
@ -0,0 +1,14 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Wilbert Pol
|
||||
#ifndef MAME_BUS_MSX_CART_LOVEPLUS_H
|
||||
#define MAME_BUS_MSX_CART_LOVEPLUS_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "bus/msx/slot/cartridge.h"
|
||||
|
||||
|
||||
DECLARE_DEVICE_TYPE(MSX_CART_LOVEPLUS, msx_cart_interface)
|
||||
|
||||
|
||||
#endif // MAME_BUS_MSX_CART_LOVEPLUS_H
|
@ -47,6 +47,7 @@ char const *const KONAMI_SCC = "konami_scc";
|
||||
char const *const KOREAN_80IN1 = "korean_80in1";
|
||||
char const *const KOREAN_90IN1 = "korean_90in1";
|
||||
char const *const KOREAN_126IN1 = "korean_126in1";
|
||||
char const *const LOVEPLUS = "loveplus";
|
||||
char const *const MAJUSTUSHI = "majutsushi";
|
||||
char const *const MM256K = "mm256k";
|
||||
char const *const MM512K = "mm512k";
|
||||
|
@ -50,6 +50,7 @@ extern char const *const KONAMI_SCC;
|
||||
extern char const *const KOREAN_80IN1;
|
||||
extern char const *const KOREAN_90IN1;
|
||||
extern char const *const KOREAN_126IN1;
|
||||
extern char const *const LOVEPLUS;
|
||||
extern char const *const MAJUSTUSHI;
|
||||
extern char const *const MM256K;
|
||||
extern char const *const MM512K;
|
||||
|
Loading…
Reference in New Issue
Block a user