mirror of
https://github.com/holub/mame
synced 2025-07-02 00:29:37 +03:00
Benesse work / Challenge Gear (#12487)
New NOT WORKING Machine ---------- Challenge Gear [TeamEurope, SSJ, Youkal3] New NOT WORKING Software List Entries --------- challenge_gear_cart.xml: Challenge 6 Years [TeamEurope, SSJ, Youkal3] - moved pockchal.cpp and the new driver to a benesse folder, as benesse had many more products - created a separate machine for the Pocket Challenge v2, the BIOS isn't dumped, but carts aren't physically compatible with a Wonderswan even if the software is. Makes more sense to have a driver with the borrowed Wonderswan BIOS marked as BAD_DUMP than hiding everything behind the Wonderswan itself.
This commit is contained in:
parent
c6a47e34df
commit
166311e24e
60
hash/challenge_gear_cart.xml
Normal file
60
hash/challenge_gear_cart.xml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||||
|
<!--
|
||||||
|
license:CC0-1.0
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Cartridge:
|
||||||
|
FRONT: BACK:
|
||||||
|
+~~~~~~~~~~~~~~~~~+ +~~~~~~~~~~~~~~~~~+
|
||||||
|
| | | |
|
||||||
|
| +~~~~~~~+ | | |
|
||||||
|
| |TSOP 32| | | |
|
||||||
|
| +~~~~~~~+ | | |
|
||||||
|
+~~+20 01+~~+ +~~+21 40+~~+
|
||||||
|
|___________| |___________|
|
||||||
|
|
||||||
|
|
||||||
|
01 | GND 21 | GND
|
||||||
|
02 | D01 22 | D02
|
||||||
|
03 | D00 23 | D03
|
||||||
|
04 | OE 24 | D04
|
||||||
|
05 | NC 25 | GND
|
||||||
|
06 | A01 26 | D05
|
||||||
|
07 | NC 27 | D06
|
||||||
|
08 | NC 28 | D07
|
||||||
|
09 | VCC 29 | A00
|
||||||
|
10 | VCC 30 | A17
|
||||||
|
11 | A02 31 | A16
|
||||||
|
12 | A03 32 | A15
|
||||||
|
13 | A04 33 | A14
|
||||||
|
14 | A05 34 | A13
|
||||||
|
15 | A06 35 | A12
|
||||||
|
16 | CE 36 | A11
|
||||||
|
17 | A07 37 | A10
|
||||||
|
18 | A08 38 | A09
|
||||||
|
19 | A18 39 | WE / NC
|
||||||
|
20 | GND 40 | GND
|
||||||
|
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<softwarelist name="challenge_gear_cart" description="Benesse Challenge Gear cartridges">
|
||||||
|
|
||||||
|
<software name="6years" supported="no">
|
||||||
|
<description>Challenge 6 Years</description>
|
||||||
|
<year>199?</year>
|
||||||
|
<publisher>Benesse Corporation</publisher>
|
||||||
|
<part name="cart" interface="challenge_gear_cart">
|
||||||
|
<dataarea name="rom" size="0x80000">
|
||||||
|
<rom name="MS040601.ic1" size="0x80000" crc="487ecb9c" sha1="bc89468aff7f06f1694eed17f15cab46c0d1638e" />
|
||||||
|
</dataarea>
|
||||||
|
</part>
|
||||||
|
</software>
|
||||||
|
|
||||||
|
</softwarelist>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -12,6 +12,8 @@
|
|||||||
|
|
||||||
Based on the WStech documentation by Judge and Dox.
|
Based on the WStech documentation by Judge and Dox.
|
||||||
|
|
||||||
|
These systems were developed by Koto Laboratory
|
||||||
|
|
||||||
Usage:
|
Usage:
|
||||||
Keep START button pressed during startup (or reset) to enter the internal
|
Keep START button pressed during startup (or reset) to enter the internal
|
||||||
configuration menu.
|
configuration menu.
|
||||||
@ -63,8 +65,11 @@ public:
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
void wswan(machine_config &config);
|
void wswan(machine_config &config);
|
||||||
|
void pockchv2(machine_config &config);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
void wswan_base(machine_config &config);
|
||||||
|
|
||||||
// Interrupt flags
|
// Interrupt flags
|
||||||
static constexpr u8 WSWAN_IFLAG_STX = 0x01;
|
static constexpr u8 WSWAN_IFLAG_STX = 0x01;
|
||||||
static constexpr u8 WSWAN_IFLAG_KEY = 0x02;
|
static constexpr u8 WSWAN_IFLAG_KEY = 0x02;
|
||||||
@ -258,7 +263,7 @@ static void wswan_cart(device_slot_interface &device)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void wswan_state::wswan(machine_config &config)
|
void wswan_state::wswan_base(machine_config &config)
|
||||||
{
|
{
|
||||||
// Basic machine hardware
|
// Basic machine hardware
|
||||||
V30MZ(config, m_maincpu, X1 / 4);
|
V30MZ(config, m_maincpu, X1 / 4);
|
||||||
@ -298,13 +303,26 @@ void wswan_state::wswan(machine_config &config)
|
|||||||
// cartridge
|
// cartridge
|
||||||
WS_CART_SLOT(config, m_cart, X1 / 32, wswan_cart, nullptr);
|
WS_CART_SLOT(config, m_cart, X1 / 32, wswan_cart, nullptr);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void wswan_state::wswan(machine_config &config)
|
||||||
|
{
|
||||||
|
wswan_base(config);
|
||||||
|
|
||||||
// software lists
|
// software lists
|
||||||
SOFTWARE_LIST(config, "cart_list").set_original("wswan");
|
SOFTWARE_LIST(config, "cart_list").set_original("wswan");
|
||||||
SOFTWARE_LIST(config, "wsc_list").set_compatible("wscolor");
|
SOFTWARE_LIST(config, "wsc_list").set_compatible("wscolor");
|
||||||
|
|
||||||
SOFTWARE_LIST(config, "pc2_list").set_compatible("pockchalv2");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// while the pc2 software is compatible with a Wonderswan, the physical cartridges are not
|
||||||
|
void wswan_state::pockchv2(machine_config &config)
|
||||||
|
{
|
||||||
|
wswan_base(config);
|
||||||
|
|
||||||
|
// software lists
|
||||||
|
SOFTWARE_LIST(config, "pc2_list").set_compatible("pockchalv2");
|
||||||
|
}
|
||||||
|
|
||||||
void wscolor_state::wscolor(machine_config &config)
|
void wscolor_state::wscolor(machine_config &config)
|
||||||
{
|
{
|
||||||
@ -982,11 +1000,24 @@ ROM_START(wscolor)
|
|||||||
ROM_LOAD("internal_eeprom.wsc", 0x000, 0x800, BAD_DUMP CRC(ca11afc9) SHA1(0951845f01f83bee497268a63b5fb7baccfeff7c))
|
ROM_LOAD("internal_eeprom.wsc", 0x000, 0x800, BAD_DUMP CRC(ca11afc9) SHA1(0951845f01f83bee497268a63b5fb7baccfeff7c))
|
||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
// this currently uses the wswan internal ROMs, the real ones should be different
|
||||||
|
ROM_START(pockchv2)
|
||||||
|
ROM_REGION(0x1000, "maincpu", 0)
|
||||||
|
ROM_LOAD("boot.rom", 0x0000, 0x1000, BAD_DUMP CRC(7f35f890) SHA1(4015bcacea76bb0b5bbdb13c5358f7e1abb986a1))
|
||||||
|
|
||||||
|
ROM_REGION(0x80, "nvram", 0)
|
||||||
|
// Need a dump from an original new unit
|
||||||
|
// Empty file containing just the name 'WONDERSAN'
|
||||||
|
ROM_LOAD("internal_eeprom.ws", 0x00, 0x80, BAD_DUMP CRC(b1dff316) SHA1(7b76c3d59c9add9501f95e8bfc34427773fcbd28))
|
||||||
|
ROM_END
|
||||||
|
|
||||||
// SwanCrystal has the name 'SWANCRYSTAL' (from Youtube videos)
|
// SwanCrystal has the name 'SWANCRYSTAL' (from Youtube videos)
|
||||||
|
|
||||||
} // anonymous namespace
|
} // anonymous namespace
|
||||||
|
|
||||||
|
|
||||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME
|
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME
|
||||||
CONS( 1999, wswan, 0, 0, wswan, wswan, wswan_state, empty_init, "Bandai", "WonderSwan", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
CONS( 1999, wswan, 0, 0, wswan, wswan, wswan_state, empty_init, "Bandai", "WonderSwan", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||||
CONS( 2000, wscolor, wswan, 0, wscolor, wswan, wscolor_state, empty_init, "Bandai", "WonderSwan Color", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
CONS( 2000, wscolor, wswan, 0, wscolor, wswan, wscolor_state, empty_init, "Bandai", "WonderSwan Color", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||||
|
|
||||||
|
CONS( 2002, pockchv2, wswan, 0, pockchv2, wswan, wswan_state, empty_init, "Benesse Corporation", "Pocket Challenge V2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||||
|
131
src/mame/benesse/challenge_gear.cpp
Normal file
131
src/mame/benesse/challenge_gear.cpp
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:David Haywood
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
|
||||||
|
//#include "cpu/olms66k/nx8.h"
|
||||||
|
|
||||||
|
#include "bus/generic/slot.h"
|
||||||
|
#include "bus/generic/carts.h"
|
||||||
|
|
||||||
|
#include "emupal.h"
|
||||||
|
#include "screen.h"
|
||||||
|
#include "softlist_dev.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
TSOP32 Maskrom:
|
||||||
|
The pinout matches nearly the 29LV040 (TSOP32) flashrom. It has no WE# and Pin 07 and 09 are swapped.
|
||||||
|
|
||||||
|
--------
|
||||||
|
A11 --|01 32|-- OE#
|
||||||
|
A09 --|02 31|-- A10
|
||||||
|
A08 --|03 30|-- CE#
|
||||||
|
A13 --|04 29|-- Q07
|
||||||
|
A14 --|05 28|-- Q06
|
||||||
|
A17 --|06 27|-- Q05
|
||||||
|
A18 --|07 26|-- Q04
|
||||||
|
VCC --|08 25|-- Q03
|
||||||
|
NC --|09 24|-- GND
|
||||||
|
A16 --|10 23|-- Q02
|
||||||
|
A15 --|11 22|-- Q01
|
||||||
|
A12 --|12 21|-- Q00
|
||||||
|
A07 --|13 20|-- A00
|
||||||
|
A06 --|14 19|-- A01
|
||||||
|
A05 --|15 18|-- A02
|
||||||
|
A04 --|16 17|-- A03
|
||||||
|
--------
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
class challenge_gear_state : public driver_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
challenge_gear_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: driver_device(mconfig, type, tag)
|
||||||
|
//, m_maincpu(*this, "maincpu")
|
||||||
|
, m_cart(*this, "cartslot")
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void challenge_gear(machine_config &config);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void machine_start() override;
|
||||||
|
virtual void machine_reset() override;
|
||||||
|
virtual void video_start() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
uint32_t screen_update_challenge_gear(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||||
|
DECLARE_DEVICE_IMAGE_LOAD_MEMBER(cart_load);
|
||||||
|
void challenge_gear_map(address_map &map);
|
||||||
|
|
||||||
|
//required_device<cpu_device> m_maincpu;
|
||||||
|
required_device<generic_slot_device> m_cart;
|
||||||
|
uint32_t m_rom_size = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
DEVICE_IMAGE_LOAD_MEMBER( challenge_gear_state::cart_load )
|
||||||
|
{
|
||||||
|
m_rom_size = m_cart->common_get_size("rom");
|
||||||
|
m_cart->rom_alloc(m_rom_size, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE);
|
||||||
|
m_cart->common_load_rom(m_cart->get_rom_base(), m_rom_size, "rom");
|
||||||
|
|
||||||
|
return std::make_pair(std::error_condition(), std::string());
|
||||||
|
}
|
||||||
|
|
||||||
|
void challenge_gear_state::video_start()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t challenge_gear_state::screen_update_challenge_gear(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( challenge_gear )
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
void challenge_gear_state::machine_start()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void challenge_gear_state::machine_reset()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void challenge_gear_state::challenge_gear(machine_config &config)
|
||||||
|
{
|
||||||
|
/* basic machine hardware */
|
||||||
|
// Oki nX-8/500S
|
||||||
|
|
||||||
|
/* video hardware - this is incorrect, but it does have a screen */
|
||||||
|
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
|
||||||
|
screen.set_refresh_hz(60);
|
||||||
|
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
|
||||||
|
screen.set_size(256, 256);
|
||||||
|
screen.set_visarea(0, 256-1, 16, 256-16-1);
|
||||||
|
screen.set_screen_update(FUNC(challenge_gear_state::screen_update_challenge_gear));
|
||||||
|
|
||||||
|
generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "challenge_gear_cart", "bin"));
|
||||||
|
cartslot.set_device_load(FUNC(challenge_gear_state::cart_load));
|
||||||
|
|
||||||
|
SOFTWARE_LIST(config, "cg_list").set_compatible("challenge_gear_cart");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ROM_START( chalgear )
|
||||||
|
ROM_REGION(0x80000, "maincpu", 0)
|
||||||
|
ROM_SYSTEM_BIOS(0, "rom501", "ms040501") // yellow function buttons (blue text), orange number buttons (blue text), patterned purple screen surround
|
||||||
|
ROMX_LOAD("ms040501.ic2", 0x0000, 0x80000, CRC(fe8918ca) SHA1(e1e560d0bf811f3f8a6c122fbff065da4a30a9b6), ROM_BIOS(0))
|
||||||
|
|
||||||
|
ROM_SYSTEM_BIOS(1, "rom402", "ms040402") // blue function buttons (yellow text), yellow numbers buttons (blue text), plain black screen surrounded
|
||||||
|
ROMX_LOAD("ms040402.ic2", 0x0000, 0x80000, CRC(25aa24b2) SHA1(72c3f304289da531165d83c63f2c3632985428ba), ROM_BIOS(1))
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
} // Anonymous namespace
|
||||||
|
|
||||||
|
CONS( 199?, chalgear, 0, 0, challenge_gear, challenge_gear, challenge_gear_state, empty_init, "Benesse Corporation", "Challenge Gear (Japan)", MACHINE_IS_SKELETON )
|
@ -138,4 +138,4 @@ ROM_END
|
|||||||
|
|
||||||
|
|
||||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||||
CONS( 199?, pockchal, 0, 0, pockchalv1, pockchalv1, pockchalv1_state, empty_init, "Benesse Corporation", "Pocket Challenge W (Japan)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
|
CONS( 199?, pockchal, 0, 0, pockchalv1, pockchalv1, pockchalv1_state, empty_init, "Benesse Corporation", "Pocket Challenge W (Japan)", MACHINE_IS_SKELETON )
|
@ -2371,6 +2371,7 @@ sv8000 // Super Vision 8000
|
|||||||
tama // Bandai
|
tama // Bandai
|
||||||
|
|
||||||
@source:bandai/wswan.cpp
|
@source:bandai/wswan.cpp
|
||||||
|
pockchv2 // Benesse Pocket Challenge V2
|
||||||
wscolor // Bandai WonderSwan Color Handheld
|
wscolor // Bandai WonderSwan Color Handheld
|
||||||
wswan // Bandai WonderSwan Handheld
|
wswan // Bandai WonderSwan Handheld
|
||||||
|
|
||||||
@ -9152,6 +9153,12 @@ bebox2 // BeBox Dual603-133
|
|||||||
@source:beehive/microb.cpp
|
@source:beehive/microb.cpp
|
||||||
dm3270 //
|
dm3270 //
|
||||||
|
|
||||||
|
@source:benesse/challenge_gear.cpp
|
||||||
|
chalgear
|
||||||
|
|
||||||
|
@source:benesse/pockchal.cpp
|
||||||
|
pockchal
|
||||||
|
|
||||||
@source:bfm/bfcobra.cpp
|
@source:bfm/bfcobra.cpp
|
||||||
beeline // 1991 BFM
|
beeline // 1991 BFM
|
||||||
brkball // 1994 BFM / ATOD
|
brkball // 1994 BFM / ATOD
|
||||||
@ -42178,9 +42185,6 @@ plan80 //
|
|||||||
@source:skeleton/pm68k.cpp
|
@source:skeleton/pm68k.cpp
|
||||||
pm68k //
|
pm68k //
|
||||||
|
|
||||||
@source:skeleton/pockchal.cpp
|
|
||||||
pockchal
|
|
||||||
|
|
||||||
@source:skeleton/proteus3.cpp
|
@source:skeleton/proteus3.cpp
|
||||||
proteus3 //
|
proteus3 //
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user