From 033e54d938b8f63682ee6eb06e8cb1b79eb56423 Mon Sep 17 00:00:00 2001 From: David Haywood <28625134+DavidHaywood@users.noreply.github.com> Date: Mon, 16 Dec 2019 04:34:35 +0000 Subject: not NOT WORKING (plug and play / handhelds) (#6051) * new NOT WORKING ---- Lexibook Compact Cyber Arcade - Star Wars [Team Europe] Unknown M&D Handheld [zhongtiao1] - hooked up controls for shredmjr, now runs the ame as taikeegr [David Haywood] * new NOT WORKING ---- BBL380 - 180 in 1 [zhongtiao1] * (nw) * unkmandd contains some unsp code (nw) * same hardware these are not (nw) * tidy unused (nw) * comment (nw) * (nw) --- scripts/target/mame/mess.lua | 2 + src/mame/drivers/bbl380.cpp | 72 +++++++++++++ src/mame/drivers/c2color.cpp | 1 - src/mame/drivers/nes_vt.cpp | 27 ++++- src/mame/drivers/unkmandd.cpp | 72 +++++++++++++ src/mame/drivers/vii.cpp | 246 +++++++++++++++--------------------------- src/mame/mame.lst | 9 +- 7 files changed, 263 insertions(+), 166 deletions(-) create mode 100644 src/mame/drivers/bbl380.cpp create mode 100644 src/mame/drivers/unkmandd.cpp diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index b25ce62e8aa..282e5de85d1 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -3774,6 +3774,8 @@ files { MAME_DIR .. "src/mame/drivers/xavix2.cpp", MAME_DIR .. "src/mame/drivers/titan_soc.cpp", MAME_DIR .. "src/mame/drivers/lexibook_jg7425.cpp", + MAME_DIR .. "src/mame/drivers/unkmandd.cpp", + MAME_DIR .. "src/mame/drivers/bbl380.cpp", } createMESSProjects(_target, _subtarget, "ultimachine") diff --git a/src/mame/drivers/bbl380.cpp b/src/mame/drivers/bbl380.cpp new file mode 100644 index 00000000000..794b3be9299 --- /dev/null +++ b/src/mame/drivers/bbl380.cpp @@ -0,0 +1,72 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood + +// the BBL 380 - 180 in 1 features similar menus / presentation / games to the 'ORB Gaming Retro Arcade Pocket Handheld Games Console with 153 Games' (eg has Matchstick Man, Gang Tie III etc.) +// https://www.youtube.com/watch?v=NacY2WHd-CY + +// contains 6502 code + +#include "emu.h" + +#include "screen.h" +#include "emupal.h" +#include "speaker.h" + +class bbl380_state : public driver_device +{ +public: + bbl380_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_palette(*this, "palette"), + m_screen(*this, "screen") + { } + + void bbl380(machine_config &config); + +private: + virtual void machine_start() override; + virtual void machine_reset() override; + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + required_device m_palette; + required_device m_screen; +}; + +uint32_t bbl380_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + return 0; +} + +void bbl380_state::machine_start() +{ +} + +void bbl380_state::machine_reset() +{ +} + +static INPUT_PORTS_START( bbl380 ) +INPUT_PORTS_END + +void bbl380_state::bbl380(machine_config &config) +{ + // unknown CPU, 6502 based + + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(64*8, 32*8); + m_screen->set_visarea(0*8, 40*8-1, 0*8, 30*8-1); + m_screen->set_screen_update(FUNC(bbl380_state::screen_update)); + m_screen->set_palette(m_palette); + + PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x200); +} + +ROM_START( bbl380 ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "bbl 380 180 in 1.bin", 0x000000, 0x400000, CRC(146c88da) SHA1(7f18526a6d8cf991f86febce3418d35aac9f49ad) ) +ROM_END + +CONS( 200?, bbl380, 0, 0, bbl380, bbl380, bbl380_state, empty_init, "BaoBaoLong", "BBL380 - 180 in 1", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/c2color.cpp b/src/mame/drivers/c2color.cpp index a3ebfaa48dd..0c3549f9b25 100644 --- a/src/mame/drivers/c2color.cpp +++ b/src/mame/drivers/c2color.cpp @@ -49,7 +49,6 @@ public: { } void c2_color(machine_config &config); - void leapfrog_mfleappad(machine_config &config); private: virtual void machine_start() override; diff --git a/src/mame/drivers/nes_vt.cpp b/src/mame/drivers/nes_vt.cpp index 7ab17fab4ea..4831938091f 100644 --- a/src/mame/drivers/nes_vt.cpp +++ b/src/mame/drivers/nes_vt.cpp @@ -25,7 +25,7 @@ Adds scrambled opcodes (XORed with 0xA1) and RGB444 palette mode, and more advanced PCM modes (CPU and video working, sound NYI) - VT368 (?) - used in DGUN2561, lexcyber + VT368 (?) - used in DGUN2561, lxcmcy Various enhancements not yet emulated. Different banking, possibly an ALU, larger palette space @@ -48,7 +48,7 @@ todo (newer VTxx): new PCM audio in FC Pocket and DGUN-2573 - add support for VT368 (?) in DGUN-2561 and lexcyber + add support for VT368 (?) in DGUN-2561 and lxcmcy add support for the VT369 (?) featurs used by the MOGIS M320 todo (general) @@ -2019,9 +2019,17 @@ ROM_START( dgun2561 ) ROM_LOAD( "dgun2561.bin", 0x00000, 0x4000000, CRC(a6e627b4) SHA1(2667d2feb02de349387f9dcfa5418e7ed3afeef6) ) ROM_END -ROM_START( lexcyber ) + +// The maximum address space a VT chip can see is 32MB, so these 64MB roms are actually 2 programs (there are vectors in the first half and the 2nd half) +// there must be a bankswitch bit that switches the whole 32MB space. Loading the 2nd half in Star Wars does actually boot straight to a game. +ROM_START( lxcmcy ) ROM_REGION( 0x4000000, "mainrom", 0 ) - ROM_LOAD( "lexcyber.bin", 0x00000, 0x4000000, CRC(3f3af72c) SHA1(76127054291568fcce1431d21af71f775cfb05a6) ) + ROM_LOAD( "lxcmcy.bin", 0x00000, 0x4000000, CRC(3f3af72c) SHA1(76127054291568fcce1431d21af71f775cfb05a6) ) +ROM_END + +ROM_START( lxcmcysw ) + ROM_REGION( 0x4000000, "mainrom", 0 ) + ROM_LOAD( "jl2365swr-1.u2", 0x00000, 0x4000000, CRC(60ece391) SHA1(655de6b36ba596d873de2839522b948ccf45e006) ) ROM_END ROM_START( cybar120 ) @@ -2333,7 +2341,16 @@ CONS( 200?, dgun2500, 0, 0, nes_vt_dg, nes_vt, nes_vt_dg_state, empty_init, " // don't even get to menu. very enhanced chipset, VT368/9? CONS( 2012, dgun2561, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "dreamGEAR", "dreamGEAR My Arcade Portable Gaming System (DGUN-2561)", MACHINE_NOT_WORKING ) -CONS( 200?, lexcyber, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmcy, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade", MACHINE_NOT_WORKING ) +CONS( 200?, lxcmcysw, 0, 0, nes_vt_cy, nes_vt, nes_vt_cy_state, empty_init, "Lexibook", "Lexibook Compact Cyber Arcade - Star Wars Rebels", MACHINE_NOT_WORKING ) +// Also Lexibook Compact Cyber Arcade - Disney Princesses +// Lexibook Compact Cyber Arcade - Cars +// Lexibook Compact Cyber Arcade - Frozen +// Lexibook Compact Cyber Arcade - Paw Patrol +// Lexibook Compact Cyber Arcade - Barbie +// Lexibook Compact Cyber Arcade - Finding Dory +// more? + // boots, same platform with scrambled opcodes as FC pocket // palette issues in some games because they actually use the old VT style palette diff --git a/src/mame/drivers/unkmandd.cpp b/src/mame/drivers/unkmandd.cpp new file mode 100644 index 00000000000..0517e5fa065 --- /dev/null +++ b/src/mame/drivers/unkmandd.cpp @@ -0,0 +1,72 @@ +// license:BSD-3-Clause +// copyright-holders:David Haywood + +// unkmandd contains unsp code, but no obvious startup code / vectors, so it's probably booting from another device / bootstrapped + +#include "emu.h" + +#include "screen.h" +#include "emupal.h" +#include "speaker.h" + +class unkmandd_state : public driver_device +{ +public: + unkmandd_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_palette(*this, "palette"), + m_screen(*this, "screen") + { } + + void unkmandd(machine_config &config); + +private: + virtual void machine_start() override; + virtual void machine_reset() override; + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + required_device m_palette; + required_device m_screen; +}; + +uint32_t unkmandd_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + return 0; +} + + + + +void unkmandd_state::machine_start() +{ +} + +void unkmandd_state::machine_reset() +{ +} + +static INPUT_PORTS_START( unkmandd ) +INPUT_PORTS_END + +void unkmandd_state::unkmandd(machine_config &config) +{ + // unknown CPU, unsp based + + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(64*8, 32*8); + m_screen->set_visarea(0*8, 40*8-1, 0*8, 30*8-1); + m_screen->set_screen_update(FUNC(unkmandd_state::screen_update)); + m_screen->set_palette(m_palette); + + PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 0x200); +} + +ROM_START( unkmandd ) + ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF ) + ROM_LOAD( "8718_en25f32.bin", 0x000000, 0x400000, CRC(cc138db4) SHA1(379af3d94ae840f52c06416d6cf32e25923af5ae) ) +ROM_END + +CONS( 200?, unkmandd, 0, 0, unkmandd, unkmandd, unkmandd_state, empty_init, "M&D", "Unknown M&D Handheld", MACHINE_IS_SKELETON ) diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp index d7c87c8a3e9..56f9331476b 100644 --- a/src/mame/drivers/vii.cpp +++ b/src/mame/drivers/vii.cpp @@ -191,7 +191,6 @@ public: void non_spg_base(machine_config &config); void lexizeus(machine_config &config); void taikeegr(machine_config &config); - void shredmjr(machine_config &config); void init_crc(); void init_zeus(); @@ -611,6 +610,26 @@ private: required_device m_eeprom; }; +class shredmjr_game_state : public spg2xx_game_state +{ +public: + shredmjr_game_state(const machine_config &mconfig, device_type type, const char *tag) : + spg2xx_game_state(mconfig, type, tag), + m_porta_data(0x0000), + m_shiftamount(0) + { } + + void shredmjr(machine_config &config); + +protected: + DECLARE_READ16_MEMBER(porta_r); + DECLARE_WRITE16_MEMBER(porta_w); + +private: + uint16_t m_porta_data; + int m_shiftamount; + +}; /************************* @@ -2078,158 +2097,6 @@ static INPUT_PORTS_START( taikeegr ) PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN ) INPUT_PORTS_END -static INPUT_PORTS_START( shredmjr ) - PORT_START("P1") - PORT_DIPNAME( 0x0001, 0x0001, "0" ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - - PORT_START("P2") - PORT_DIPNAME( 0x0001, 0x0001, "1" ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - - PORT_START("P3") - PORT_DIPNAME( 0x0001, 0x0001, "2" ) - PORT_DIPSETTING( 0x0001, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0002, 0x0002, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0002, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0004, 0x0004, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0004, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0008, 0x0008, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0008, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0020, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0020, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0040, 0x0040, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0040, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0080, 0x0080, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0100, 0x0100, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0100, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0200, 0x0200, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0200, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0400, 0x0400, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0400, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x0800, 0x0800, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x0800, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x1000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x4000, 0x4000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x8000, 0x8000, DEF_STR( Unknown ) ) - PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) -INPUT_PORTS_END - static INPUT_PORTS_START( sentx6p ) PORT_START("P1") @@ -3202,16 +3069,77 @@ void spg2xx_game_state::taikeegr(machine_config &config) // m_maincpu->portc_in().set_ioport("P3"); } -void spg2xx_game_state::shredmjr(machine_config &config) +// Shredmaster Jr uses the same input order as the regular Taikee Guitar, but reads all inputs through a single multplexed bit +WRITE16_MEMBER(shredmjr_game_state::porta_w) +{ + if (data != m_porta_data) + { + if ((data & 0x0800) != (m_porta_data & 0x0800)) + { + if (data & 0x0800) + { + //logerror("0x0800 low -> high\n"); + } + else + { + //logerror("0x0800 high -> low\n"); + } + } + + if ((data & 0x0200) != (m_porta_data & 0x0200)) + { + if (data & 0x0200) + { + //logerror("0x0200 low -> high\n"); + m_shiftamount++; + } + else + { + //logerror("0x0200 high -> low\n"); + } + } + + if ((data & 0x0100) != (m_porta_data & 0x0100)) + { + if (data & 0x0100) + { + //logerror("0x0100 low -> high\n"); + m_shiftamount = 0; + } + else + { + //logerror("0x0100 high -> low\n"); + } + } + } + + m_porta_data = data; +} + +READ16_MEMBER(shredmjr_game_state::porta_r) +{ + //logerror("porta_r with shift amount %d \n", m_shiftamount); + uint16_t ret = 0x0000; + + uint16_t portdata = m_io_p1->read(); + + portdata = (portdata >> m_shiftamount) & 0x1; + + if (portdata) + ret |= 0x0400; + + return ret; +} + +void shredmjr_game_state::shredmjr(machine_config &config) { SPG24X(config, m_maincpu, XTAL(27'000'000), m_screen); - m_maincpu->set_addrmap(AS_PROGRAM, &spg2xx_game_state::mem_map_4m); + m_maincpu->set_addrmap(AS_PROGRAM, &shredmjr_game_state::mem_map_4m); spg2xx_base(config); - m_maincpu->porta_in().set_ioport("P1"); - m_maincpu->portb_in().set_ioport("P2"); - m_maincpu->portc_in().set_ioport("P3"); + m_maincpu->porta_in().set(FUNC(shredmjr_game_state::porta_r)); + m_maincpu->porta_out().set(FUNC(shredmjr_game_state::porta_w)); } @@ -4012,7 +3940,7 @@ CONS( 2006, pvmil, 0, 0, pvmil, pvmil, pvmil_state, e // for the UK version the title screen always shows "Guitar Rock", however there are multiple boxes with different titles and song selections. // ROM is glued on the underside and soldered to the PCB, very difficult to remove without damaging. CONS( 2007, taikeegr, 0, 0, taikeegr, taikeegr, spg2xx_game_state, init_taikeegr, "TaiKee", "Rockstar Guitar / Guitar Rock (PAL)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // bad music timings (too slow) -CONS( 2007, shredmjr, taikeegr, 0, shredmjr, shredmjr, spg2xx_game_state, init_taikeegr, "DreamGear", "Shredmaster Jr (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // bad music timings (too slow), input reading different to above +CONS( 2007, shredmjr, taikeegr, 0, shredmjr, taikeegr, shredmjr_game_state, init_taikeegr, "dreamGEAR", "Shredmaster Jr (NTSC)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // bad music timings (too slow) // "go 02d1d0" "do r1 = ff" to get past initial screen (currently bypassed by setting controller sense in RAM earlier, see hack in machine_reset) // a 'deluxe' version of this also exists with extra game modes diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a465bc3f2e9..c1ef685a87c 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -3184,6 +3184,9 @@ mechattj // A8002 'MA' (c) 1989 mechattu // A8002 'MA' (c) 1989 mechattu1 // A8002 'MA' (c) 1989 +@source:bbl380.cpp +bbl380 + @source:bcs3.cpp bcs3 // bcs3a // @@ -31133,7 +31136,8 @@ ablpinb mc_dgear dgun2500 dgun2561 -lexcyber +lxcmcy +lxcmcysw cybar120 mc_dg101 mc_aa2 @@ -39319,6 +39323,9 @@ uts20 // @source:unkhorse.cpp unkhorse // +@source:unkmandd.cpp +unkmandd + @source:unkpoker.cpp unkpoker // -- cgit v1.2.3