mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
New systems marked not working
------------------------------ Tangram Q [system11, buffi, rtw, f205v, Sean Sutton, Smitdogg, The Dumping Union]
This commit is contained in:
parent
ecacee4733
commit
878d70d975
@ -34196,6 +34196,7 @@ silvland // Falcon
|
||||
swimmer // (c) 1982 Tehkan
|
||||
swimmera // (c) 1982 Tehkan
|
||||
swimmerb // (c) 1982 Tehkan
|
||||
tangramq // (c) 1983 SNK
|
||||
toprollr // (c) 1983 Jaleco
|
||||
yamato // (c) 1983 Sega
|
||||
yamato2 // (c) 1983 Sega
|
||||
|
@ -240,15 +240,22 @@ Dip location verified from manual for: cclimber, guzzler, swimmer
|
||||
this causes them to crash after the a few rounds - confirmed on an original PCB.
|
||||
They clearly weren't tested properly by the bootleggers.
|
||||
|
||||
Tangram Q
|
||||
---------
|
||||
Inputs aren't correct, sound tempo is wrong (NMI ack problem?)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
|
||||
#include "cclimber.h"
|
||||
#include "cclimber_a.h"
|
||||
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "sound/ay8910.h"
|
||||
#include "sound/samples.h"
|
||||
#include "sound/snkwave.h"
|
||||
|
||||
#include "speaker.h"
|
||||
|
||||
|
||||
@ -497,6 +504,27 @@ void cclimber_state::bagmanf_map(address_map &map)
|
||||
map(0xb800, 0xb800).nopr();
|
||||
}
|
||||
|
||||
void cclimber_state::tangramq_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x5fff).rom();
|
||||
map(0x6000, 0x6bff).ram();
|
||||
map(0x8000, 0x8000).portr("P1");
|
||||
map(0x8020, 0x8020).portr("P2");
|
||||
map(0x8800, 0x88ff).ram().share("bigspriteram");
|
||||
map(0x9000, 0x93ff).mirror(0x0400).ram().share("videoram");
|
||||
map(0x9800, 0x981f).ram().share("column_scroll");
|
||||
map(0x9820, 0x987f).ram(); // not used, but initialized
|
||||
map(0x9880, 0x989f).ram().share("spriteram");
|
||||
map(0x98a0, 0x98db).ram(); // not used, but initialized
|
||||
map(0x98dc, 0x98df).ram().share("bigspritectrl");
|
||||
map(0x98e0, 0x98ff).ram(); // not used, but initialized
|
||||
map(0x9c00, 0x9fff).ram().w(FUNC(cclimber_state::cclimber_colorram_w)).share("colorram");
|
||||
map(0xa000, 0xa000).portr("P3");
|
||||
map(0xa000, 0xa007).w(m_mainlatch, FUNC(ls259_device::write_d0));
|
||||
map(0xb000, 0xb000).portr("DSW").w("soundlatch", FUNC(generic_latch_8_device::write));
|
||||
map(0xb800, 0xb800).portr("SYSTEM");
|
||||
}
|
||||
|
||||
void toprollr_state::toprollr_decrypted_opcodes_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x5fff).bankr("bank1d");
|
||||
@ -557,6 +585,17 @@ void yamato_state::yamato_audio_portmap(address_map &map)
|
||||
map(0x08, 0x08).r(FUNC(yamato_state::yamato_p1_r)); // ???
|
||||
}
|
||||
|
||||
void cclimber_state::tangramq_sound_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x1fff).rom();
|
||||
map(0x4000, 0x4000).r("soundlatch", FUNC(generic_latch_8_device::read));
|
||||
map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
|
||||
map(0x8002, 0x8007).w("wave", FUNC(snkwave_device::snkwave_w));
|
||||
map(0x8008, 0x8009).w("ay2", FUNC(ay8910_device::address_data_w));
|
||||
// map(0xa000, 0xa000) // TODO: NMI related?
|
||||
map(0xe000, 0xe3ff).ram();
|
||||
}
|
||||
|
||||
|
||||
static INPUT_PORTS_START( cclimber )
|
||||
PORT_START("P1")
|
||||
@ -800,6 +839,89 @@ static INPUT_PORTS_START( rpatrol )
|
||||
PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( tangramq )
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("P2")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("P3")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) // this drops the piece
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) // pressing this one and the following together rotates pieces
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
PORT_START("DSW")
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:1")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:2")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x02, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:3")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, "Invincibility" ) PORT_DIPLOCATION("DSW1:4")
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:5")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:6")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:7")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("DSW1:8")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( On ) )
|
||||
|
||||
PORT_START("SYSTEM")
|
||||
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("DSW2:1,2")
|
||||
PORT_DIPSETTING( 0x00, "1" )
|
||||
PORT_DIPSETTING( 0x01, "2" )
|
||||
PORT_DIPSETTING( 0x02, "3" )
|
||||
PORT_DIPSETTING( 0x03, "5" )
|
||||
PORT_DIPNAME( 0x04, 0x04, "Freeze" ) PORT_DIPLOCATION("DSW2:3")
|
||||
PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW2:4")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x70, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("DSW2:5,6,7")
|
||||
PORT_DIPSETTING( 0x70, DEF_STR( 4C_1C ) )
|
||||
PORT_DIPSETTING( 0x60, DEF_STR( 3C_1C ) )
|
||||
PORT_DIPSETTING( 0x50, DEF_STR( 2C_1C ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) )
|
||||
PORT_DIPSETTING( 0x10, DEF_STR( 1C_2C ) )
|
||||
PORT_DIPSETTING( 0x20, DEF_STR( 1C_3C ) )
|
||||
PORT_DIPSETTING( 0x30, DEF_STR( 1C_5C ) )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( 1C_6C ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW2:8")
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( swimmer )
|
||||
PORT_START("P1")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
||||
@ -1204,7 +1326,6 @@ void cclimber_state::root(machine_config &config)
|
||||
// basic machine hardware
|
||||
Z80(config, m_maincpu, 18.432_MHz_XTAL/3/2); // 3.072 MHz
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &cclimber_state::cclimber_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &cclimber_state::cclimber_portmap);
|
||||
|
||||
LS259(config, m_mainlatch, 0);
|
||||
m_mainlatch->q_out_cb<0>().set(FUNC(cclimber_state::nmi_mask_w));
|
||||
@ -1230,6 +1351,8 @@ void cclimber_state::cclimber(machine_config &config)
|
||||
{
|
||||
root(config);
|
||||
|
||||
m_maincpu->set_addrmap(AS_IO, &cclimber_state::cclimber_portmap);
|
||||
|
||||
// 7J on CCG-1
|
||||
m_mainlatch->q_out_cb<4>().set("cclimber_audio", FUNC(cclimber_audio_device::sample_trigger));
|
||||
|
||||
@ -1250,6 +1373,29 @@ void cclimber_state::rpatrol(machine_config &config)
|
||||
AY8910(config, "aysnd", 18.432_MHz_XTAL/3/2/2).add_route(ALL_OUTPUTS, "speaker", 0.5);
|
||||
}
|
||||
|
||||
void cclimber_state::tangramq(machine_config &config)
|
||||
{
|
||||
root(config);
|
||||
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &cclimber_state::tangramq_map);
|
||||
|
||||
Z80(config, m_audiocpu, 8_MHz_XTAL / 2); // divider not verified
|
||||
m_audiocpu->set_addrmap(AS_PROGRAM, &cclimber_state::tangramq_sound_map);
|
||||
|
||||
m_screen->screen_vblank().append_inputline(m_audiocpu, INPUT_LINE_NMI); // TODO: probably wrong
|
||||
|
||||
// sound hardware
|
||||
SPEAKER(config, "speaker").front_center();
|
||||
|
||||
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0, HOLD_LINE);
|
||||
|
||||
AY8910(config, "ay1", 8_MHz_XTAL / 4).add_route(ALL_OUTPUTS, "speaker", 0.35); // divider not verified
|
||||
|
||||
AY8910(config, "ay2", 8_MHz_XTAL / 4).add_route(ALL_OUTPUTS, "speaker", 0.35); // divider not verified
|
||||
|
||||
SNKWAVE(config, "wave", 8_MHz_XTAL).add_route(ALL_OUTPUTS, "speaker", 0.30); // lack of divider not verified
|
||||
}
|
||||
|
||||
void cclimber_state::cclimberx(machine_config &config)
|
||||
{
|
||||
cclimber(config);
|
||||
@ -2385,6 +2531,51 @@ ROM_START( silvland )
|
||||
ROM_END
|
||||
|
||||
|
||||
/*
|
||||
Tangram Q
|
||||
|
||||
SNK ELECTRONICS A3002 UC01 + A2003UP03-01 PCBs
|
||||
|
||||
A3002 UC01 main components:
|
||||
NEC D780C-1 CPU
|
||||
18.432 MHz XTAL
|
||||
2x HM6116LP-3 RAM (near program ROMs)
|
||||
6x TMM315D-1 SRAM (near CPU)
|
||||
2x M5L5101LP-1 RAM (near BG ROMs)
|
||||
2x bank of 8 DIP switches
|
||||
lots of TTL
|
||||
|
||||
A2003UP03-01 main components:
|
||||
NEC D780C-1 CPU
|
||||
2x AY-3-8910 sound chip
|
||||
8 MHz XTAL
|
||||
HM6116P-4 RAM
|
||||
lots of TTL
|
||||
*/
|
||||
|
||||
ROM_START(tangramq)
|
||||
ROM_REGION( 0x6000, "maincpu", 0 )
|
||||
ROM_LOAD( "m1.k5", 0x0000, 0x2000, CRC(dff92169) SHA1(805784afeba676306ed6c0d41d33ed0163bdc08e) )
|
||||
ROM_LOAD( "m2.k4", 0x2000, 0x2000, CRC(1cbade75) SHA1(1fa276261428c392917df4a4dbd9f99710b9855e) )
|
||||
|
||||
ROM_REGION( 0x2000, "audiocpu", 0 )
|
||||
ROM_LOAD( "s1.a6", 0x0000, 0x2000, CRC(05af38f6) SHA1(7bdbf798964aa4d603fca0178b3f8fc251d207f6) )
|
||||
|
||||
ROM_REGION( 0x2000, "bigsprite", 0 )
|
||||
ROM_LOAD( "b1.e19", 0x0000, 0x1000, CRC(f3ec2562) SHA1(859473c45b9d22c138b70ea649b93d41721e1e0d) ) // 1xxxxxxxxxxx = 0xFF
|
||||
ROM_LOAD( "b2.e17", 0x1000, 0x1000, CRC(77d21b84) SHA1(7f9bfbfbc7fd51a97f15fee54ac851ddfa97b213) ) // 1xxxxxxxxxxx = 0xFF
|
||||
|
||||
ROM_REGION( 0x4000, "tile", 0 )
|
||||
ROM_LOAD( "f1.h4", 0x0000, 0x2000, CRC(c7c3ffe1) SHA1(f8f0ac3b73f560af3ef0954e5d80984bad605ea2) )
|
||||
ROM_LOAD( "f2.h2", 0x2000, 0x2000, CRC(dbc13c1f) SHA1(b299582f97a384b2d252d815a3c64e9f54346748) )
|
||||
|
||||
ROM_REGION( 0x60, "proms", 0 )
|
||||
ROM_LOAD( "mb7051_m02.m6", 0x00, 0x20, CRC(b3fc1505) SHA1(5b94adde0428a26b815c7eb9b3f3716470d349c7) )
|
||||
ROM_LOAD( "mb7051_m02.m7", 0x20, 0x20, CRC(26aada9e) SHA1(f59645e606ea4f0dd0fc4ea47dd03f526c534941) )
|
||||
ROM_LOAD( "mb7051_m02.m8", 0x40, 0x20, CRC(676b3166) SHA1(29b9434cd34d43ea5664e436e2a24b54f8d88aac) )
|
||||
ROM_END
|
||||
|
||||
|
||||
/* This dump was a mess. 11n and 11k seem to be bad dumps, the second half should probably be sprite data
|
||||
Comparing to set 2 11l and 11h are unnecessary, and are actually from Le Bagnard(set1), as is 5m.
|
||||
5n ID'd as unknown, but it also is from bagnard with some patches.
|
||||
@ -2933,6 +3124,8 @@ GAME( 1981, rpatroln, rpatrol, rpatrol, rpatrol, cclimber_state, empty_i
|
||||
GAME( 1981, rpatrolb, rpatrol, rpatrol, rpatrol, cclimber_state, empty_init, ROT0, "bootleg", "River Patrol (bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1981, silvland, rpatrol, rpatrol, rpatrol, cclimber_state, empty_init, ROT0, "Falcon", "Silver Land (hack of River Patrol)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1983, tangramq, 0, tangramq, tangramq, cclimber_state, empty_init, ROT270, "SNK", "Tangram Q", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
// see pacman.cpp for parent
|
||||
GAME( 1985, cannonb, cannonbp, cannonb, cannonb, cclimber_state, init_cannonb, ROT90, "bootleg (Soft)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 1, buggy)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // bootleggers missed protection after bonus game
|
||||
GAME( 1985, cannonb2, cannonbp, cannonb, cannonb, cclimber_state, init_cannonb2, ROT90, "bootleg (TV Game Gruenberg)", "Cannon Ball (bootleg on Crazy Kong hardware) (set 2, buggy)", MACHINE_SUPPORTS_SAVE ) // bootleggers missed protection after bonus game
|
||||
|
@ -48,6 +48,7 @@ public:
|
||||
void cclimberx(machine_config &config);
|
||||
void ckongb(machine_config &config);
|
||||
void rpatrol(machine_config &config);
|
||||
void tangramq(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
@ -112,6 +113,8 @@ private:
|
||||
void decrypted_opcodes_map(address_map &map) ATTR_COLD;
|
||||
void rpatrol_map(address_map &map) ATTR_COLD;
|
||||
void rpatrol_portmap(address_map &map) ATTR_COLD;
|
||||
void tangramq_map(address_map &map) ATTR_COLD;
|
||||
void tangramq_sound_map(address_map &map) ATTR_COLD;
|
||||
};
|
||||
|
||||
class swimmer_state : public cclimber_state
|
||||
|
@ -6,6 +6,8 @@
|
||||
|
||||
Driver by Frank Palazzolo (palazzol@comcast.net)
|
||||
|
||||
Hardware is extremely similar to nichibutsu/cclimber.cpp (possibly derived)
|
||||
|
||||
- This driver was done with only flyer shots to go by.
|
||||
- Colors are a good guess (might be perfect)
|
||||
- Clock and interrupt speeds for the sound CPU is a guess, but seem
|
||||
|
Loading…
Reference in New Issue
Block a user