new WORKING machines (Dora TV Explorer Phone plug+play) + some leapfrog softlists + ekara carts (#7816)

new WORKING machines
-------
Dora the Explorer - Dora TV Explorer Phone / Boots's Special Day [Sean Riddle, David Haywood, Kamaal Brown]
Namco Classics Vol.1 (3-in-1) (MSI Plug & Play) [Sean Riddle]

new NOT WORKING software list additions
---------
leapfrog_zippity_cart.xml:
The World of Cars - Driven to Learn (500-13589-B) (UK) [David Haywood, TeamEurope]
Disney Princess - Magical Movement & Learning (500-13590-A) (UK) [David Haywood, TeamEurope]
leapfrog_didj_cart.xml:
Super Chicks (USA) [TeamEurope]

new software list additions
---------
ekara_japan_s.xml:
Hello Kitty Special (Japan) (SC0001-KTY) [TeamEurope]
ekara_japan_sp.xml:
SP-05 Super Cartridge - SP-05 Super Cartridge - TV POP Junior with Chibi Marukochan & Anpanman (Japan) [TeamEurope]
ekara_japan_gk.xml:
GK-2 - Disney Princess: Princess Debut (Japan) [TeamEurope]
GK-3 - Disney Tinkerbell to Tinkle Star Uranai (Japan) [TeamEurope]
This commit is contained in:
David Haywood 2021-02-25 04:10:46 +00:00 committed by GitHub
parent 589a000679
commit 86c5beb9d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 320 additions and 14 deletions

View File

@ -14,8 +14,8 @@ license:CC0
(check what units these are for)
*GK-1 Detective Conan
GK-2 (unknown)
GK-3 (seen)
*GK-2 Disney Princess: Princess Debut
*GK-3 Disney Tinkerbell to Tinkle Star Uranai
(more? what's the GK highest number?)
@ -31,5 +31,28 @@ license:CC0
</dataarea>
</part>
</software>
<software name="gk2">
<description>GK-2 - Disney Princess: Princess Debut (Japan)</description>
<year>2004</year>
<publisher>Takara</publisher>
<part name="cart" interface="ekara_cart">
<feature name="slot" value="rom_24c08_epitch"/> <!-- FIXME: actually 24c04 -->
<dataarea name="rom" size="0x200000">
<rom name="gk2.u1" size="0x200000" crc="d4413f35" sha1="ef9999422adfea77c7ca4abd4f2f21e75d66be77"/>
</dataarea>
</part>
</software>
<software name="gk3">
<description>GK-3 - Disney Tinkerbell to Tinkle Star Uranai (Japan)</description>
<year>2004</year>
<publisher>Takara</publisher>
<part name="cart" interface="ekara_cart">
<dataarea name="rom" size="0x200000">
<rom name="gk3.u1" size="0x200000" crc="5877877b" sha1="c789b96ffcb3c303d552b236e01fd5fb587df7d3"/>
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -13,7 +13,7 @@ license:CC0
SAI seems to be used for multiple different series here, need to look at the subtitles too
S-1 SC0001- Hello Kitty Special
S-1 *SC0001-KTY Hello Kitty Special
S-2 SC0002-SAI SAI (series 3) Volume 1
S-3 *SC0003- Kids' Challenge Volume 1
S-4 *SC0004-SAI SAI (series 1) Volume 1
@ -43,6 +43,18 @@ license:CC0
<!-- Japanese e-kara cartridges SC (Special?) series -->
<!-- these have unique presentation -->
<software name="sc0001">
<description>Hello Kitty Special (Japan) (SC0001-KTY)</description>
<year>2001</year>
<publisher>Takara</publisher>
<part name="cart" interface="ekara_cart">
<dataarea name="rom" size="0x100000">
<rom name="01.bin" size="0x100000" crc="0635e39f" sha1="bfe33b0de01e8618abfdd190abf752cee53a6403"/>
</dataarea>
</part>
</software>
<software name="sc0003">
<description>Kids' Challenge Volume 1 (Japan) (SC0003-xxx)</description>
<year>2001</year>

View File

@ -26,13 +26,13 @@ license:CC0
SP-01 (unknown)
*SP-02 'Super Cartridge' SP-2
*SP-03 'Super Cartridge' SP-3
*SP-03 'Super Cartridge' SP-3 TV Pop
*SP-04 'Super Cartridge' SP-4
SP-05
*SP-05 'Super Cartridge' SP-5 TV POP Junior with Chibi Marukochan & Anpanman
SP-06 (seen)
SP-07 (seen)
(more? what's the SP highest number?)
(more? what's the SP highest number? correct titles for each of these etc.)
-->
@ -49,7 +49,7 @@ license:CC0
</software>
<software name="sp03">
<description>SP-03 Super Cartridge (Japan)</description>
<description>SP-03 Super Cartridge - TV Pop (Japan)</description>
<year>2004</year>
<publisher>Takara</publisher>
<part name="cart" interface="ekara_cart">
@ -71,5 +71,17 @@ license:CC0
</dataarea>
</part>
</software>
<software name="sp05">
<description>SP-05 Super Cartridge - TV POP Junior with Chibi Marukochan &amp; Anpanman (Japan)</description>
<year>2004</year>
<publisher>Takara</publisher>
<part name="cart" interface="ekara_cart">
<feature name="slot" value="rom_24lc04"/>
<dataarea name="rom" size="0x200000">
<rom name="sp05.u1" size="0x200000" crc="f5ae63b2" sha1="d471ee862aa2ab790defb57873a10862531fd76b"/>
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -70,4 +70,16 @@
</part>
</software>
<software name="schicks" supported="no">
<description>Super Chicks (USA)</description>
<year>2008</year>
<publisher>LeapFrog</publisher>
<info name="serial" value="500-13289-B"/>
<part name="cart" interface="leapfrog_didj_cart">
<dataarea name="rom" size="0x4200000" width="32" endianness="big">
<rom loadflag="load16_word_swap" name="500-13289-B - Super Chicks (US).bin" size="0x4200000" crc="852646c5" sha1="17a2dd4cf097481b755c7a40da41a62b4fc2b1b7" />
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -0,0 +1,40 @@
<?xml version="1.0"?>
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
<!--
license:CC0
-->
<!--
Not dumped:
The Princess and the Frog
Toy Story 3
(it also needs confirming if US / UK cartridges are different, dumps are all from UK cartridges)
-->
<softwarelist name="leapfrog_zippity_cart" description="LeapFrog Zippity Cartridges">
<software name="cars" supported="no">
<description>The World of Cars - Driven to Learn (500-13589-B) (UK)</description>
<year>2009</year>
<publisher>LeapFrog</publisher>
<part name="cart" interface="leapfrog_zippity_cart">
<dataarea name="rom" size="0x4200000">
<rom name="500-13589-B - The World of Cars - Driven to Learn.bin" size="0x4200000" crc="f52e613e" sha1="81da432cbdf6f80ac1a42656978d4027b50e0587" />
</dataarea>
</part>
</software>
<software name="disprin" supported="no">
<description>Disney Princess - Magical Movement &amp; Learning (500-13590-A) (UK)</description>
<year>2009</year>
<publisher>LeapFrog</publisher>
<part name="cart" interface="leapfrog_zippity_cart">
<dataarea name="rom" size="0x4200000">
<rom name="500-13590-A - DisneyPrincess - Magical Movement &amp; Learning.bin" size="0x4200000" crc="d060a223" sha1="00f454b629d7bcc7f58a43dd453d410a8ed60a99" />
</dataarea>
</part>
</software>
</softwarelist>

View File

@ -24,6 +24,9 @@
#include "cpu/arm7/arm7.h"
#include "cpu/arm7/arm7core.h"
#include "bus/generic/slot.h"
#include "bus/generic/carts.h"
#include "softlist.h"
#include "screen.h"
#include "speaker.h"
@ -41,18 +44,19 @@ public:
void nand_init840();
private:
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
void arm_map(address_map &map);
required_device<cpu_device> m_maincpu;
required_device<screen_device> m_screen;
uint32_t screen_update_gpl32612(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
private:
void nand_init(int blocksize, int blocksize_stripped);
void copy_block(int i, int blocksize, int blocksize_stripped, uint8_t* nandrom, int dest);
void bootstrap();
@ -65,6 +69,30 @@ private:
uint32_t unk_d0900153_r(offs_t offset, uint32_t mem_mask);
};
class generalplus_zippity_game_state : public generalplus_gpl32612_game_state
{
public:
generalplus_zippity_game_state(const machine_config &mconfig, device_type type, const char *tag) :
generalplus_gpl32612_game_state(mconfig, type, tag),
m_cart(*this, "cartslot"),
m_cart_region(nullptr)
{ }
void zippity(machine_config &config);
protected:
virtual void machine_start() override;
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
required_device<generic_slot_device> m_cart;
memory_region *m_cart_region;
};
uint32_t generalplus_gpl32612_game_state::unk_d000003c_r(offs_t offset, uint32_t mem_mask)
{
return machine().rand();
@ -144,7 +172,7 @@ void generalplus_gpl32612_game_state::bootstrap()
void generalplus_gpl32612_game_state::gpl32612(machine_config &config)
{
ARM9(config, m_maincpu, 240000000); // unknown core / frequency, but ARM based
ARM9(config, m_maincpu, 240'000'000); // unknown core / frequency, but ARM based
m_maincpu->set_addrmap(AS_PROGRAM, &generalplus_gpl32612_game_state::arm_map);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@ -157,6 +185,54 @@ void generalplus_gpl32612_game_state::gpl32612(machine_config &config)
SPEAKER(config, "rspeaker").front_right();
}
void generalplus_zippity_game_state::machine_start()
{
generalplus_gpl32612_game_state::machine_start();
// if there's a cart, override the standard mapping
if (m_cart && m_cart->exists())
{
m_cart_region = memregion(std::string(m_cart->tag()) + GENERIC_ROM_REGION_TAG);
}
}
DEVICE_IMAGE_LOAD_MEMBER(generalplus_zippity_game_state::cart_load)
{
uint32_t size = m_cart->common_get_size("rom");
m_cart->rom_alloc(size, GENERIC_ROM16_WIDTH, ENDIANNESS_LITTLE);
m_cart->common_load_rom(m_cart->get_rom_base(), size, "rom");
return image_init_result::PASS;
}
void generalplus_zippity_game_state::zippity(machine_config &config)
{
// don't inherit from gpl32612 as in reality this is GPL32300A and could differ
ARM9(config, m_maincpu, 240'000'000); // unknown core / frequency, but ARM based
m_maincpu->set_addrmap(AS_PROGRAM, &generalplus_zippity_game_state::arm_map);
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
m_screen->set_refresh_hz(60);
m_screen->set_size(320, 262);
m_screen->set_visarea(0, 320-1, 0, 240-1);
m_screen->set_screen_update(FUNC(generalplus_zippity_game_state::screen_update_gpl32612));
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "leapfrog_zippity_cart");
m_cart->set_width(GENERIC_ROM16_WIDTH);
m_cart->set_device_load(FUNC(generalplus_zippity_game_state::cart_load));
SOFTWARE_LIST(config, "cart_list").set_original("leapfrog_zippity_cart");
}
// NAND dumps, so there will be a bootloader / boot strap at least
ROM_START( jak_swbstrik )
@ -245,6 +321,6 @@ CONS( 200?, jak_prhp, 0, 0, gpl32612, gpl32612, generalplus_gp
CONS( 200?, jak_dchp, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, nand_init840, "JAKKS Pacific Inc", "DC Super Heroes The Watchtower Hero Portal", MACHINE_IS_SKELETON )
// Might not belong here, SoC is marked GPL32300A instead, but is still ARM based, and has GPNAND strings
CONS( 201?, zippity, 0, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, empty_init, "LeapFrog", "Zippity (US)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
CONS( 201?, zippity, 0, 0, zippity, gpl32612, generalplus_zippity_game_state, empty_init, "LeapFrog", "Zippity (US)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
// TODO, check if code differs, or just unused areas of the NAND
CONS( 201?, zippityuk, zippity, 0, gpl32612, gpl32612, generalplus_gpl32612_game_state, empty_init, "LeapFrog", "Zippity (UK)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
CONS( 201?, zippityuk, zippity, 0, zippity, gpl32612, generalplus_zippity_game_state, empty_init, "LeapFrog", "Zippity (UK)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)

View File

@ -324,7 +324,8 @@ static INPUT_PORTS_START( nes_vt09_msi )
PORT_START("IO0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("A")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("B")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_PLAYER(1) // doesn't exist?
//PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_PLAYER(1) // doesn't exist?
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
@ -339,7 +340,8 @@ static INPUT_PORTS_START( nes_vt09_msi_mm2 )
PORT_START("IO0")
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("A")
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("B")
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_PLAYER(1) // doesn't exist?
//PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT ) PORT_PLAYER(1) // doesn't exist?
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START ) PORT_PLAYER(1)
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1) PORT_8WAY
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_PLAYER(1) PORT_8WAY
@ -371,6 +373,11 @@ ROM_START( msimm2 )
ROM_LOAD( "megaman2_s99jl032hbt1_001227e_readas_s29jl032h.bin", 0x00000, 0x400000, CRC(f537a053) SHA1(bd9353df34c0c0ee7d0e5e9808fc36f1a5eecc22) )
ROM_END
ROM_START( msinamco )
ROM_REGION( 0x200000, "mainrom", 0 )
ROM_LOAD( "msinamco3in1.bin", 0x00000, 0x200000, CRC(c69ad54a) SHA1(f12b9274d827e8a8a8f1bf2646fa426d9f8e6ece) )
ROM_END
ROM_START( msimpac )
ROM_REGION( 0x100000, "mainrom", 0 )
ROM_LOAD( "mspacman_29dl800ba_000422cb.bin", 0x00000, 0x100000, CRC(c66300e3) SHA1(3fc0bdfbf449d884151f1b581e848243cd2df3a5) )
@ -463,6 +470,8 @@ CONS( 2016, msisinv, 0, 0, nes_vt09_1mb, nes_vt09_msi, nes_vt09_state, empt
// MSI also issued a version in the original Majesco shell but with the updated case logos and boot logos in the software, the software on that revision might match this one.
CONS( 2016, msifrog, 0, 0, nes_vt09_4mb_rasterhack, nes_vt09_msi, nes_vt09_state, empty_init, "MSI / Konami", "Frogger (MSI Plug & Play, white joystick)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // raster timing for need a hack
CONS( 2018, msinamco, 0, 0, nes_vt09_1mb, nes_vt09_msi, nes_vt09_state, empty_init, "MSI / Bandai Namco", "Namco Classics Vol.1 (3-in-1) (MSI Plug & Play)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
// MSI Midway (Joust+Gauntlet 2 + Defender 2) has 2x Globs, rather than Glob + Flash ROM
// this is VT09 based

View File

@ -1066,6 +1066,69 @@ static INPUT_PORTS_START( hotwheels )
PORT_BIT( 0xffff, IP_ACTIVE_HIGH, IPT_UNUSED )
INPUT_PORTS_END
// TODO: work out how to access hidden test mode again
static INPUT_PORTS_START( doraphone )
PORT_START("P1")
PORT_CONFNAME( 0x0070, 0x0060, "On/Off Mode Slider" )
PORT_CONFSETTING( 0x0030, "Play Alone (no video)" )
PORT_CONFSETTING( 0x0060, "Play on TV" )
PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("Lift Handset") // this could be done as a toggle, although note, handset being down is treated like a button being held
PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_CUSTOM ) // this setting is US NTSC, ACTIVE_LOW gives US PAL (invalid?) no way to switch to non-US?
PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_CUSTOM ) // must be 0x0200 or resets over and over
PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(1)
PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(1)
PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(1)
PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(1)
PORT_START("P1_ROW1")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 1") PORT_CODE(KEYCODE_1_PAD)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 4") PORT_CODE(KEYCODE_4_PAD)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 7") PORT_CODE(KEYCODE_7_PAD)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 'Repeat'") PORT_CODE(KEYCODE_PLUS_PAD)
PORT_START("P1_ROW2")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 2") PORT_CODE(KEYCODE_2_PAD)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 5") PORT_CODE(KEYCODE_5_PAD)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 8") PORT_CODE(KEYCODE_8_PAD)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 0") PORT_CODE(KEYCODE_0_PAD)
PORT_START("P1_ROW3")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 3") PORT_CODE(KEYCODE_3_PAD)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 6") PORT_CODE(KEYCODE_6_PAD)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 9") PORT_CODE(KEYCODE_9_PAD)
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_NAME("Phone Pad 'Help'") PORT_CODE(KEYCODE_MINUS_PAD)
PORT_START("P1_ROW4")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("Show Answer") // Not 'answer phone'
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("Enter")
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_PLAYER(1) PORT_NAME("Reset")
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_PLAYER(1) PORT_NAME("Hear Dora (non-TV mode only)")
PORT_START("P1_ROW5")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON12 ) PORT_PLAYER(1) PORT_NAME("Dora The Explorer Logo Button (non-TV mode only)") // manual doesn't list this? speech says 'Dora the Explorer' in alone mode, presumably when you press the logo
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("Exit")
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_PLAYER(1) PORT_NAME("Adventure Mode")
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON11 ) PORT_PLAYER(1) PORT_NAME("Hear Boots (non-TV mode only)")
PORT_START("P1_ROW6")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_PLAYER(1) PORT_NAME("Amusement Park")
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_PLAYER(1) PORT_NAME("Quick Play")
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_PLAYER(1) PORT_NAME("Big Drum Parade")
PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_PLAYER(1) PORT_NAME("Banana Grove")
PORT_START("P2")
PORT_BIT( 0xff7f, IP_ACTIVE_HIGH, IPT_UNUSED )
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_CUSTOM ) // battery state
PORT_START("P3")
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END
void spg2xx_game_state::machine_start()
{
if (m_bank)
@ -1709,7 +1772,35 @@ void spg2xx_game_hotwheels_state::hotwheels(machine_config &config)
m_screen->set_refresh_hz(50);
}
uint16_t spg2xx_game_doraphone_state::porta_r(offs_t offset, uint16_t mem_mask)
{
uint16_t matrix = 0x000f;
for (int b = 1; 6 >= b; ++b)
{
if (!BIT(m_portb_data, b))
matrix &= m_io_p1_rows[b - 1]->read();
}
return matrix | (m_io_p1->read() & 0xfff0);
}
void spg2xx_game_doraphone_state::portb_w(offs_t offset, uint16_t data, uint16_t mem_mask)
{
m_portb_data = data;
}
void spg2xx_game_doraphone_state::doraphone(machine_config &config)
{
SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen);
m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_doraphone_state::mem_map_4m);
spg2xx_base(config);
m_maincpu->porta_in().set(FUNC(spg2xx_game_doraphone_state::porta_r));
m_maincpu->portb_out().set(FUNC(spg2xx_game_doraphone_state::portb_w));
m_maincpu->portb_in().set(FUNC(spg2xx_game_doraphone_state::base_portb_r));
m_maincpu->portc_in().set(FUNC(spg2xx_game_doraphone_state::base_portc_r));
}
ROM_START( rad_skat )
@ -1867,6 +1958,12 @@ ROM_START( jouet )
ROM_LOAD16_WORD_SWAP( "jouet.bin", 0x000000, 0x400000, CRC(da46097e) SHA1(f760f4d126a8291b7dacdea7a70691b25ad8b989) )
ROM_END
ROM_START( doraphon )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "doraphone.bin", 0x000000, 0x800000, CRC(a79c154b) SHA1(f5b9bf63ea52d058252ab6702508b519fbdee0cc) )
ROM_END
ROM_START( senspeed )
ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASE00 )
ROM_LOAD16_WORD_SWAP( "speedracer.bin", 0x000000, 0x800000, CRC(4efbcd39) SHA1(2edffbaa9ea309ad308fa60f32d8b7a98ee313c7) )
@ -1994,6 +2091,9 @@ CONS( 2009, senwfit, 0, 0, gssytts, senwfit, spg2xx_game_senwfit_s
CONS( 2006, vtechtvssp, 0, 0, spg2xx, spg2xx, spg2xx_game_state, empty_init, "VTech", "TV Station (VTech, Spain)", MACHINE_NOT_WORKING )
CONS( 2006, vtechtvsgr, 0, 0, spg2xx, spg2xx, spg2xx_game_state, empty_init, "VTech", "TV Learning Station (VTech, Germany)", MACHINE_NOT_WORKING )
// "Boots's" is used on the title screen and in the manual, even if "Boots'" is usually used outside of this game.
CONS( 200?, doraphon, 0, 0, doraphone, doraphone, spg2xx_game_doraphone_state,empty_init, "VTech", "Dora the Explorer - Dora TV Explorer Phone / Boots's Special Day", MACHINE_IMPERFECT_SOUND )
// ROM checksum fails, but is expecting 0 as a result? shows 'CopyRight' when booting normally? protection?
CONS( 200?, jouet, 0, 0, spg2xx, spg2xx, spg2xx_game_state, empty_init, "<unknown>", "10 Jeux Interactifs / Jeux Pour Filles (France)", MACHINE_NOT_WORKING )

View File

@ -335,6 +335,26 @@ private:
required_ioport m_io_p1_extra;
};
class spg2xx_game_doraphone_state : public spg2xx_game_state
{
public:
spg2xx_game_doraphone_state(const machine_config &mconfig, device_type type, const char *tag) :
spg2xx_game_state(mconfig, type, tag),
m_portb_data(0),
m_io_p1_rows(*this, "P1_ROW%u", 1U)
{ }
void doraphone(machine_config &config);
private:
uint16_t porta_r(offs_t offset, uint16_t mem_mask = ~0);
void portb_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0) override;
uint16_t m_portb_data;
required_ioport_array<6> m_io_p1_rows;
};
#endif // MAME_INCLUDES_SPG2XX_H

View File

@ -32517,6 +32517,7 @@ msiwwea
msidd
msimpac
msimm2
msinamco
msisinv
msifrog
rcapnp
@ -38511,6 +38512,7 @@ tmntbftc
gssytts
senwfit
jjstrip
doraphon // (c) 2006 VTech
vtechtvssp // (c) 2006 VTech
vtechtvsgr // (c) 2006 VTech
tmntmutm