Skip to content

Current Plug + Play PR - added 18 sets, 3 working + 1 software list entry #13931

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions hash/duelmast_cart.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!--
license:CC0-1.0
-->
<softwarelist name="duelmast_cart" description="Takara Duel Masters: Duel Station cartridges">
<!-- cartridges contain the ROM only, the XaviX CPU and BIOS are in the base unit

***********************************************************************************

-->

<!-- only the single known cart exists for this system -->

<software name="ver1" supported="no">
<description>Duel Masters: Duel Station Ver.1</description>
<year>2003</year>
<publisher>Takara</publisher>
<info name="alt_title" value="デュエルマスターズ デュエルステーション専用カートリッジ Ver.1" />
<part name="cart" interface="ekara_cart">
<dataarea name="rom" size="0x800000">
<rom name="duelmasters_cart_ver1.u1" offset="0x000000" size="0x400000" crc="7ba0d51f" sha1="6227866c732ff0b5c9f5026ebabdf220a6c53cc1"/>
<rom name="duelmasters_cart_ver1.u3" offset="0x400000" size="0x400000" crc="1881fc17" sha1="daf201efac1073e790d94438dc49ac5b65df8d67"/>
</dataarea>
</part>
</software>

</softwarelist>
2 changes: 0 additions & 2 deletions src/devices/video/ppu2c0x_sh6578.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ void ppu_sh6578_device::ppu_internal_map(address_map& map)
map(0x0000, 0x1fff).ram();
map(0x2000, 0x27ff).ram();
map(0x2800, 0x7fff).nopr();

map(0x8000, 0xffff).ram(); // machine specific?
}

void ppu_sh6578_device::device_start()
Expand Down
38 changes: 28 additions & 10 deletions src/mame/mame.lst
Original file line number Diff line number Diff line change
Expand Up @@ -35330,20 +35330,22 @@ m82
@source:nintendo/nes_sh6578.cpp
6578cjz1
6578cjz2
ablwikid
bancook
bandgpad
bandggcn
bandgpad
bb6578
cpatrolm
dancmix3
ts_handy11
ablwikid
dgun806
max10in1
maxx5in1
maxx6in1
max10in1
vsmaxx25
mousekid
soulbird
ts_handy11
vsmaxx15
dgun806
vsmaxx25

@source:nintendo/nes_vt02_vt03.cpp
88in1joy
Expand Down Expand Up @@ -35449,6 +35451,7 @@ fcpocket
g5_500
g9_666
gbox2019
goretrop
gprnrs1
gprnrs16
hhgc319
Expand Down Expand Up @@ -40213,14 +40216,11 @@ vtennis3
32xj
aiwamcd
cdx
dcat16
gen_nomd
genesis
genesis_tmss
laseract
laseractj
mahg156
mdhh100
megacd
megacd2
megacd2j
Expand Down Expand Up @@ -40256,15 +40256,21 @@ twinktmb
@source:sega/megadriv_rad.cpp
atgame40
banmrid
dcat16
dgunl3227
dgunl3227a
matet
mahg156
mdhh100
mdtvp1j
mdtvp2j
mdtvp3j
msi_sf2
mygalag
mygalaga
mympac
mypac
mysinv
ra145
rad_gen1
rad_gen2
Expand Down Expand Up @@ -46556,6 +46562,7 @@ carlecfg
pvmil8
pvmilfin
pvwwcas
rad_ftet
rad_sinv
rad_tetr
sudelan
Expand Down Expand Up @@ -46791,6 +46798,8 @@ lpetshop
lxairjet
lxspidaj
mattelcs
mpntball
mpntbalt
mylpony
ordentv
pballpup
Expand Down Expand Up @@ -47039,6 +47048,7 @@ shtscore
teleshi
teleship
trkfldch
trkfldchj

@source:tvgames/tvgame.cpp
tvgame
Expand Down Expand Up @@ -47128,6 +47138,7 @@ taikodp
taitons1
taitons2
tak_beyb
tak_beyu
tak_comt
tak_daig
tak_gin
Expand All @@ -47149,12 +47160,17 @@ tvpc_tom

@source:tvgames/xavix2.cpp
ban_db2j
ltv_naru
ban_dbz
ban_bldj
ban_naru
domfitad
dombikec
epo_dabj
epo_dab2j
epo_dtcj
epo_pabj
epo_sskj
epo_ssk2

@source:tvgames/xavix_2000.cpp
ban_omt
Expand Down Expand Up @@ -47184,6 +47200,7 @@ ban_dn1j
ban_gkrj
ban_kksj
ban_ordj
ban_pr2j
ban_ult
ban_utmj
ban_um2j
Expand All @@ -47199,6 +47216,7 @@ epo_tfit
maxheart
mrangbat
ndpbj
ndpmj
suprtvpc
suprtvpcdo
suprtvpchk
Expand Down
82 changes: 65 additions & 17 deletions src/mame/nintendo/nes_sh6578.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include "screen.h"
#include "speaker.h"
#include "machine/bankdev.h"
#include "machine/nvram.h"
#include "machine/timer.h"

#define LOG_DMA (1U << 1)
Expand All @@ -45,14 +46,23 @@ class nes_sh6578_state : public driver_device
m_screen(*this, "screen"),
m_apu(*this, "nesapu"),
m_timer(*this, "timer"),
m_in(*this, "IN%u", 0U)
m_in(*this, "IN%u", 0U),
m_ext(*this, "EXT")
{ }

void nes_sh6578(machine_config& config);
void nes_sh6578_pal(machine_config& config);

void init_nes_sh6578();

int unknown_random_r()
{
if (!machine().side_effects_disabled())
return machine().rand();
else
return 0;
}

protected:
virtual void machine_start() override ATTR_COLD;
virtual void machine_reset() override ATTR_COLD;
Expand Down Expand Up @@ -128,6 +138,7 @@ class nes_sh6578_state : public driver_device

void rom_map(address_map &map) ATTR_COLD;
void nes_sh6578_map(address_map &map) ATTR_COLD;
void ppu_map(address_map &map);

//uint16_t get_tileaddress(uint8_t x, uint8_t y, bool ishigh);

Expand All @@ -140,6 +151,7 @@ class nes_sh6578_state : public driver_device
uint8_t m_previo;
uint8_t m_iolatch[2];
required_ioport_array<2> m_in;
required_ioport m_ext;
};

class nes_sh6578_abl_wikid_state : public nes_sh6578_state
Expand All @@ -165,18 +177,6 @@ class nes_sh6578_max10in1_state : public nes_sh6578_state
virtual void machine_reset() override ATTR_COLD;
};

class nes_sh6578_cjz_state : public nes_sh6578_state
{
public:
nes_sh6578_cjz_state(const machine_config& mconfig, device_type type, const char* tag) :
nes_sh6578_state(mconfig, type, tag)
{ }

protected:
// TODO, work out the I/O and anything else specific to this machine
virtual uint8_t extio_r() override { return machine().rand(); }
};

uint8_t nes_sh6578_state::bank_r(int bank, uint16_t offset)
{
uint32_t address;
Expand Down Expand Up @@ -444,7 +444,7 @@ void nes_sh6578_abl_wikid_state::io_w(uint8_t data)
uint8_t nes_sh6578_state::extio_r()
{
logerror("%s: extio_r\n", machine().describe_context());
return 0x00;
return m_ext->read();
}

void nes_sh6578_state::extio_w(uint8_t data)
Expand Down Expand Up @@ -535,6 +535,9 @@ static INPUT_PORTS_START(nes_sh6578)

PORT_START("IN1")
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )

PORT_START("EXT")
PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END

static INPUT_PORTS_START(bancook)
Expand All @@ -543,6 +546,23 @@ static INPUT_PORTS_START(bancook)

PORT_START("IN1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )

PORT_START("EXT")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_MEMBER(FUNC(nes_sh6578_state::unknown_random_r))
INPUT_PORTS_END

static INPUT_PORTS_START(soulbird)
PORT_START("IN0")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )

PORT_START("IN1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )

PORT_START("EXT")
PORT_BIT( 0x1f, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 )
INPUT_PORTS_END


Expand Down Expand Up @@ -614,6 +634,12 @@ uint32_t nes_sh6578_state::screen_update(screen_device& screen, bitmap_rgb32& bi
return m_ppu->screen_update(screen, bitmap, cliprect);
}

void nes_sh6578_state::ppu_map(address_map &map)
{
map(0x8000, 0xffff).ram().share("nvram"); // machine specific? soulbird seems to expect fc00-fc7f to save at least
}


void nes_sh6578_state::nes_sh6578(machine_config& config)
{
/* basic machine hardware */
Expand All @@ -625,6 +651,7 @@ void nes_sh6578_state::nes_sh6578(machine_config& config)
PPU_SH6578(config, m_ppu, RP2A03_NTSC_XTAL);
m_ppu->set_cpu_tag(m_maincpu);
m_ppu->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
m_ppu->set_addrmap(AS_PROGRAM, &nes_sh6578_state::ppu_map);

/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
Expand All @@ -637,6 +664,8 @@ void nes_sh6578_state::nes_sh6578(machine_config& config)

TIMER(config, m_timer).configure_generic(FUNC(nes_sh6578_state::timer_expired));

NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1);

/* sound hardware */
SPEAKER(config, "mono").front_center();

Expand All @@ -657,6 +686,7 @@ void nes_sh6578_state::nes_sh6578_pal(machine_config& config)
PPU_SH6578PAL(config.replace(), m_ppu, RP2A03_PAL_XTAL);
m_ppu->set_cpu_tag(m_maincpu);
m_ppu->int_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
m_ppu->set_addrmap(AS_PROGRAM, &nes_sh6578_state::ppu_map);

m_screen->set_refresh_hz(50.0070);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC((113.66 / (PALC_APU_CLOCK.dvalue() / 1000000)) *
Expand Down Expand Up @@ -687,6 +717,11 @@ ROM_START( bancook )
ROM_LOAD( "mx27c8000.ic2", 0x00000, 0x100000, CRC(865bef26) SHA1(82820eac162a2b4b4b5da894df4bfc5521d4f89b) )
ROM_END

ROM_START( soulbird )
ROM_REGION( 0x100000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD( "soulbird.ic1", 0x00000, 0x100000, CRC(307c7f95) SHA1(488ed8de5c22122581e89219889fe4f7e5d5bc96) )
ROM_END

ROM_START( ts_handy11 )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "tvplaypowercontroller.bin", 0x00000, 0x100000, CRC(9c7fe9ff) SHA1(c872e91ca835b66c9dd3b380e8374b51f12bcae0) ) // 29LV008B
Expand Down Expand Up @@ -752,6 +787,11 @@ ROM_START( dancmix3 )
ROM_LOAD( "e28f008sa.u5", 0x00000, 0x100000, CRC(faf6480c) SHA1(68bf79910e091443aecc7bf256cd5378a04c550e) )
ROM_END

ROM_START( mousekid )
ROM_REGION( 0x100000, "maincpu", 0 )
ROM_LOAD( "mousekid.ic2", 0x00000, 0x100000, CRC(465d5b5a) SHA1(a27f01ccc7b741b51ea4a9e4455dc4cee4420a89) )
ROM_END

} // anonymous namespace


Expand Down Expand Up @@ -786,17 +826,25 @@ CONS( 1997, bandgpad, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, i

CONS( 1997, bandggcn, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "Bandai", "Go! Go! Connie-chan! Asobou Mouse", MACHINE_NOT_WORKING )

// uses a mouse and buttons (no keyboard)
// テレビであそぼう! ミッキー&ミニー マウスキッズ
CONS( 1997, mousekid, 0, 0, nes_sh6578, bancook, nes_sh6578_state, init_nes_sh6578, "Tomy", "Terebi de Asobou! Mickey & Minnie Mouse Kids (Japan)", MACHINE_NOT_WORKING )

// おジャ魔女どれみのTVでマジカルクッキング
CONS( 2001, bancook, 0, 0, nes_sh6578, bancook, nes_sh6578_cjz_state, init_nes_sh6578, "Bandai", "Ojamajo Doremi no TV de Magical Cooking (Japan)", MACHINE_NOT_WORKING )
CONS( 2001, bancook, 0, 0, nes_sh6578, bancook, nes_sh6578_state, init_nes_sh6578, "Bandai", "Ojamajo Doremi no TV de Magical Cooking (Japan)", MACHINE_NOT_WORKING )

// there's no SEEPROM, it uses a CR2032 to keep some RAM data alive
// 百獣戦隊ガオレンジャー ソウルバード アニマル救出大作戦 (aka DX Soul Bird)
CONS( 2001, soulbird, 0, 0, nes_sh6578, soulbird, nes_sh6578_state, init_nes_sh6578, "Bandai", "Hyakujuu Sentai Gaoranger Soul Bird: Animal Kyuushutsu Daisakusen (Japan)", 0 )

CONS( 200?, cpatrolm, 0, 0, nes_sh6578_pal, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "TimeTop", "City Patrolman", MACHINE_NOT_WORKING )

CONS( 200?, bb6578, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_state, init_nes_sh6578, "DaiDaiXing Electronics", "TV Games Baseball (SH6578 hardware)", MACHINE_NOT_WORKING )

// these don't boot much further than the timetop logo and a splash screen
// 超级知识大富翁 (Chāojí Zhīshì Dà Fùwēng)
CONS( 200?, 6578cjz1, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_cjz_state, init_nes_sh6578, "TimeTop", "Chaoji Zhishi Da Fuweng 1", MACHINE_NOT_WORKING )
CONS( 200?, 6578cjz2, 0, 0, nes_sh6578, nes_sh6578, nes_sh6578_cjz_state, init_nes_sh6578, "TimeTop", "Chaoji Zhishi Da Fuweng 2", MACHINE_NOT_WORKING )
CONS( 200?, 6578cjz1, 0, 0, nes_sh6578, bancook, nes_sh6578_state, init_nes_sh6578, "TimeTop", "Chaoji Zhishi Da Fuweng 1", MACHINE_NOT_WORKING )
CONS( 200?, 6578cjz2, 0, 0, nes_sh6578, bancook, nes_sh6578_state, init_nes_sh6578, "TimeTop", "Chaoji Zhishi Da Fuweng 2", MACHINE_NOT_WORKING )

// Super Moto 3 https://youtu.be/DR5Y_r6C_qk - has JungleTac copyrights intact, and appears to have the SH6578 versions of the games

Expand Down
Loading
Loading