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)
This commit is contained in:
David Haywood 2019-12-16 04:34:35 +00:00 committed by ajrhacker
parent 40823998fa
commit 033e54d938
7 changed files with 263 additions and 166 deletions

View File

@ -3774,6 +3774,8 @@ files {
MAME_DIR .. "src/mame/drivers/xavix2.cpp", MAME_DIR .. "src/mame/drivers/xavix2.cpp",
MAME_DIR .. "src/mame/drivers/titan_soc.cpp", MAME_DIR .. "src/mame/drivers/titan_soc.cpp",
MAME_DIR .. "src/mame/drivers/lexibook_jg7425.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") createMESSProjects(_target, _subtarget, "ultimachine")

View File

@ -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<palette_device> m_palette;
required_device<screen_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 )

View File

@ -49,7 +49,6 @@ public:
{ } { }
void c2_color(machine_config &config); void c2_color(machine_config &config);
void leapfrog_mfleappad(machine_config &config);
private: private:
virtual void machine_start() override; virtual void machine_start() override;

View File

@ -25,7 +25,7 @@
Adds scrambled opcodes (XORed with 0xA1) and RGB444 palette mode, Adds scrambled opcodes (XORed with 0xA1) and RGB444 palette mode,
and more advanced PCM modes (CPU and video working, sound NYI) 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, Various enhancements not yet emulated. Different banking, possibly an ALU,
larger palette space larger palette space
@ -48,7 +48,7 @@
todo (newer VTxx): todo (newer VTxx):
new PCM audio in FC Pocket and DGUN-2573 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 add support for the VT369 (?) featurs used by the MOGIS M320
todo (general) todo (general)
@ -2019,9 +2019,17 @@ ROM_START( dgun2561 )
ROM_LOAD( "dgun2561.bin", 0x00000, 0x4000000, CRC(a6e627b4) SHA1(2667d2feb02de349387f9dcfa5418e7ed3afeef6) ) ROM_LOAD( "dgun2561.bin", 0x00000, 0x4000000, CRC(a6e627b4) SHA1(2667d2feb02de349387f9dcfa5418e7ed3afeef6) )
ROM_END 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_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_END
ROM_START( cybar120 ) 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? // 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( 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 // boots, same platform with scrambled opcodes as FC pocket
// palette issues in some games because they actually use the old VT style palette // palette issues in some games because they actually use the old VT style palette

View File

@ -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<palette_device> m_palette;
required_device<screen_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 )

View File

@ -191,7 +191,6 @@ public:
void non_spg_base(machine_config &config); void non_spg_base(machine_config &config);
void lexizeus(machine_config &config); void lexizeus(machine_config &config);
void taikeegr(machine_config &config); void taikeegr(machine_config &config);
void shredmjr(machine_config &config);
void init_crc(); void init_crc();
void init_zeus(); void init_zeus();
@ -611,6 +610,26 @@ private:
required_device<eeprom_serial_93cxx_device> m_eeprom; required_device<eeprom_serial_93cxx_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 ) PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END 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 ) static INPUT_PORTS_START( sentx6p )
PORT_START("P1") PORT_START("P1")
@ -3202,16 +3069,77 @@ void spg2xx_game_state::taikeegr(machine_config &config)
// m_maincpu->portc_in().set_ioport("P3"); // 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); 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); spg2xx_base(config);
m_maincpu->porta_in().set_ioport("P1"); m_maincpu->porta_in().set(FUNC(shredmjr_game_state::porta_r));
m_maincpu->portb_in().set_ioport("P2"); m_maincpu->porta_out().set(FUNC(shredmjr_game_state::porta_w));
m_maincpu->portc_in().set_ioport("P3");
} }
@ -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. // 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. // 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, 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) // "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 // a 'deluxe' version of this also exists with extra game modes

View File

@ -3184,6 +3184,9 @@ mechattj // A8002 'MA' (c) 1989
mechattu // A8002 'MA' (c) 1989 mechattu // A8002 'MA' (c) 1989
mechattu1 // A8002 'MA' (c) 1989 mechattu1 // A8002 'MA' (c) 1989
@source:bbl380.cpp
bbl380
@source:bcs3.cpp @source:bcs3.cpp
bcs3 // bcs3 //
bcs3a // bcs3a //
@ -31133,7 +31136,8 @@ ablpinb
mc_dgear mc_dgear
dgun2500 dgun2500
dgun2561 dgun2561
lexcyber lxcmcy
lxcmcysw
cybar120 cybar120
mc_dg101 mc_dg101
mc_aa2 mc_aa2
@ -39319,6 +39323,9 @@ uts20 //
@source:unkhorse.cpp @source:unkhorse.cpp
unkhorse // unkhorse //
@source:unkmandd.cpp
unkmandd
@source:unkpoker.cpp @source:unkpoker.cpp
unkpoker // unkpoker //