summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/seta.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/seta.cpp')
-rw-r--r--src/mame/drivers/seta.cpp93
1 files changed, 20 insertions, 73 deletions
diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp
index 8ee07a16bed..10b8e864981 100644
--- a/src/mame/drivers/seta.cpp
+++ b/src/mame/drivers/seta.cpp
@@ -111,7 +111,7 @@ TODO:
zombraid not aligned when flipped vertically or horizontally
- bad sound in sokonuke?
-- in msgundam1, colors for the score display screw up after the second animation
+- in msgunda1, colors for the score display screw up after the second animation
in attract mode. The end of the animation also has garbled sprites.
Note that the animation is not present in msgundam.
- Some games: battery backed portion of RAM (e.g. downtown, kiwame, zombraid)
@@ -2789,32 +2789,6 @@ void seta_state::msgundam_map(address_map &map)
map(0xd00000, 0xd00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
}
-void seta_state::msgundamb_map(address_map &map)
-{
- map(0x000000, 0x07ffff).rom(); // ROM
- map(0x100000, 0x1fffff).rom(); // ROM
- map(0x200000, 0x20ffff).ram(); // RAM
- map(0x400000, 0x400001).portr("P1"); // P1
- map(0x400002, 0x400003).portr("P2"); // P2
- map(0x400004, 0x400005).portr("COINS"); // Coins
- map(0x400000, 0x400001).w(FUNC(seta_state::ipl1_ack_w)); // Lev 2 IRQ Ack
- map(0x400004, 0x400005).w(FUNC(seta_state::ipl2_ack_w)); // Lev 4 IRQ Ack
- map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_counter_w));
- map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w)); // Video Registers
- map(0x500004, 0x500005).nopw();
- map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r)); // DSW
- map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette
- map(0x800000, 0x803fff).ram().w(FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1
- map(0x880000, 0x883fff).ram().w(FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3
- map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl
- map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl
- map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
- map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
- map(0xa80000, 0xa80001).ram(); // ? 0x4000
- map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
- map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
- map(0xd00000, 0xd00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff);
-}
/***************************************************************************
Oishii Puzzle
@@ -2923,6 +2897,7 @@ void kiwame_state::kiwame_map(address_map &map)
map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound
map(0xd00000, 0xd00009).r(FUNC(kiwame_state::input_r)); // mahjong panel
map(0xe00000, 0xe00003).r(FUNC(kiwame_state::seta_dsw_r)); // DSW
+ map(0xfffc00, 0xffffff).rw(m_tmp68301, FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w));
}
@@ -4740,7 +4715,7 @@ static INPUT_PORTS_START( gundhara )
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(5)
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(5)
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW )
+ PORT_SERVICE_NO_TOGGLE( 0x0008, IP_ACTIVE_LOW)
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN )
@@ -4779,10 +4754,10 @@ static INPUT_PORTS_START( gundhara )
PORT_DIPSETTING( 0x0100, DEF_STR( Hard ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) )
PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:3,4")
- PORT_DIPSETTING( 0x0800, "2" )
- PORT_DIPSETTING( 0x0c00, "3" )
- PORT_DIPSETTING( 0x0400, "4" )
- PORT_DIPSETTING( 0x0000, "5" )
+ PORT_DIPSETTING( 0x0800, "1" )
+ PORT_DIPSETTING( 0x0c00, "2" )
+ PORT_DIPSETTING( 0x0400, "3" )
+ PORT_DIPSETTING( 0x0000, "4" )
PORT_DIPNAME( 0x3000, 0x3000, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:5,6")
PORT_DIPSETTING( 0x3000, "200K" )
PORT_DIPSETTING( 0x2000, "200K, Every 200K" )
@@ -5430,11 +5405,11 @@ static INPUT_PORTS_START( msgundam )
PORT_SERVICE_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW1:8" )
INPUT_PORTS_END
-static INPUT_PORTS_START( msgundam1 )
+static INPUT_PORTS_START( msgunda1 )
PORT_INCLUDE(msgundam)
PORT_MODIFY("COINS") // IN2 - Coins - $400004.w
- /* this set seems to be a Japan set, English mode doesn't work correctly */
+ /* this set seems to be a japan set, english mode doesn't work correctly */
PORT_DIPNAME( 0x0080, 0x0000, DEF_STR( Language ) )
// PORT_DIPSETTING( 0x0080, DEF_STR( English ) )
PORT_DIPSETTING( 0x0000, DEF_STR( Japanese ) )
@@ -8038,7 +8013,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(seta_state::calibr50_interrupt)
void usclssic_state::machine_start()
{
- m_buttonmux->ab_w(0xff);
+ m_buttonmux->write_ab(0xff);
}
@@ -8413,7 +8388,7 @@ void seta_state::daioh(machine_config &config)
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57.42); /* verified on PCB */
+ screen.set_refresh_hz(57.42); /* verified on PCB */;
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
@@ -8450,7 +8425,7 @@ void seta_state::daiohp(machine_config &config)
/* video hardware */
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_refresh_hz(57.42); /* verified on PCB */
+ screen.set_refresh_hz(57.42); /* verified on PCB */;
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(64*8, 32*8);
screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
@@ -9180,12 +9155,7 @@ void seta_state::msgundam(machine_config &config)
m_x1->add_route(ALL_OUTPUTS, "mono", 1.0);
}
-void seta_state::msgundamb(machine_config &config)
-{
- msgundam(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::msgundamb_map);
-}
/***************************************************************************
Oishii Puzzle
@@ -9274,15 +9244,19 @@ void seta_state::triplfun(machine_config &config)
WRITE_LINE_MEMBER(kiwame_state::kiwame_vblank)
{
if (state)
- m_maincpu->external_interrupt_0();
+ m_tmp68301->external_interrupt_0();
}
void kiwame_state::kiwame(machine_config &config)
{
/* basic machine hardware */
- TMP68301(config, m_maincpu, 16000000); /* 16 MHz */
+ M68000(config, m_maincpu, 16000000); /* 16 MHz */
m_maincpu->set_addrmap(AS_PROGRAM, &kiwame_state::kiwame_map);
- m_maincpu->out_parallel_callback().set(FUNC(kiwame_state::row_select_w));
+ m_maincpu->set_irq_acknowledge_callback("tmp68301", FUNC(tmp68301_device::irq_callback));
+
+ tmp68301_device &tmp68301(TMP68301(config, "tmp68301", 0));
+ tmp68301.set_cputag(m_maincpu);
+ tmp68301.out_parallel_callback().set(FUNC(kiwame_state::row_select_w));
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
@@ -10815,32 +10789,6 @@ ROM_START( msgundam1 )
ROM_LOAD( "fa001004.u26", 0x000000, 0x100000, CRC(b965f07c) SHA1(ff7827cc80655465ffbb732d55ba81f21f51a5ca) )
ROM_END
-ROM_START( msgundamb ) // 2 PCB stack, one has a 'Tecnoval - tecnologia valenciana del recreativo' sticker
- ROM_REGION( 0x300000, "maincpu", 0 ) /* 68000 Code, on lower board */
- ROM_LOAD16_BYTE( "d-4.bin", 0x000000, 0x040000, CRC(ca5bfa89) SHA1(108435cb65919b4b90be102e7ac2799501149fc8) ) // 27c020
- ROM_LOAD16_BYTE( "d-2.bin", 0x000001, 0x040000, CRC(b4b86d1b) SHA1(d9b625cfdabcabed9308fccc29c66adfe566a996) ) // 27c020
- ROM_LOAD16_BYTE( "27c8001-7.bin", 0x100000, 0x100000, CRC(803f279c) SHA1(1095ac434ce553ed56d106556e7d23ccac1f0cd4) ) // 1ST AND 2ND HALF IDENTICAL
- ROM_LOAD16_BYTE( "27c8001-8.bin", 0x100001, 0x100000, CRC(a310fa93) SHA1(2ee1616699c95ed2b8c46d43de4cffece1b033ea) ) // 1ST AND 2ND HALF IDENTICAL
-
- ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites, on top board, almost identical to the original but split */
- ROM_LOAD16_BYTE( "27c8001-3.bin", 0x000000, 0x100000, CRC(9f36d867) SHA1(01a15dcdcb1077d7c8678762f58ad705dc29e8c9) )
- ROM_LOAD16_BYTE( "27c8001-2.bin", 0x000001, 0x100000, CRC(70d333d9) SHA1(9ef3b0e0567ceed082921a5c384cfcfeb154f048) )
- ROM_LOAD16_BYTE( "27c8001-1.bin", 0x200000, 0x100000, CRC(2792692c) SHA1(ed99c589ed15f8c1a4e2ab435a379b35105ba503) )
- ROM_LOAD16_BYTE( "4.bin", 0x200001, 0x080000, CRC(eb551f1a) SHA1(e9d2fc31c3076164c5ee9722ea1b1e60b4f6d663) ) // mx27c4000
- ROM_LOAD16_BYTE( "5.bin", 0x300001, 0x080000, CRC(e9aa57e8) SHA1(699c0132f4be81570f748e5ca2f88fc4fc6802bb) ) // mx27c4000
-
- ROM_REGION( 0x200000, "gfx2", 0 ) /* Layer 1, on lower board */
- ROM_LOAD16_BYTE( "27c8001-6.bin", 0x000000, 0x100000, CRC(8fbb5478) SHA1(247fd080f0ee18282c4d8b918171cfeab4b40d23) ) // 1ST AND 2ND HALF IDENTICAL, fa001006.u23 [even] IDENTICAL
- ROM_LOAD16_BYTE( "27c8001-5.bin", 0x000001, 0x100000, CRC(c83ae34a) SHA1(d7bf49843c443c5b7cb9187404a3518eaed577a6) ) // 1ST AND 2ND HALF IDENTICAL, fa001006.u23 [odd] IDENTICAL
-
- ROM_REGION( 0x080000, "gfx3", 0 ) /* Layer 2, on lower board, identical to the original but split */
- ROM_LOAD16_BYTE( "d-8.bin", 0x000000, 0x040000, CRC(a03c8345) SHA1(d3c3f0045ebb3d82d82432c212db4a801cb53b60) ) // 27c020
- ROM_LOAD16_BYTE( "d-9.bin", 0x000001, 0x040000, CRC(cfd47024) SHA1(ab4fbaf258d2694407dd6c896f45d69821ccc408) ) // 27c020
-
- ROM_REGION( 0x100000, "x1snd", 0 ) /* Samples, on lower board */
- ROM_LOAD( "27c8001-4.bin", 0x000000, 0x100000, CRC(b965f07c) SHA1(ff7827cc80655465ffbb732d55ba81f21f51a5ca) ) // identical to the original
-ROM_END
-
ROM_START( oisipuzl )
ROM_REGION( 0x180000, "maincpu", 0 ) /* 68000 Code */
ROM_LOAD16_WORD_SWAP( "ss1u200.v10", 0x000000, 0x080000, CRC(f5e53baf) SHA1(057e8b35bc6f65634685b5d0cf38e12f2e62d72c) )
@@ -12195,8 +12143,7 @@ GAME( 1993, madshark, 0, madshark, madshark, seta_state, empty_ini
// end credits shows Allumer as developer.
GAME( 1993, msgundam, 0, msgundam, msgundam, seta_state, empty_init, ROT0, "Banpresto / Allumer", "Mobile Suit Gundam", 0 )
-GAME( 1993, msgundam1, msgundam, msgundam, msgundam1, seta_state, empty_init, ROT0, "Banpresto / Allumer", "Mobile Suit Gundam (Japan)", 0 )
-GAME( 1993, msgundamb, msgundam, msgundamb, msgundam, seta_state, empty_init, ROT0, "bootleg", "Mobile Suit Gundam (bootleg)", 0 )
+GAME( 1993, msgundam1, msgundam, msgundam, msgunda1, seta_state, empty_init, ROT0, "Banpresto / Allumer", "Mobile Suit Gundam (Japan)", 0 )
GAME( 1993, oisipuzl, 0, oisipuzl, oisipuzl, seta_state, empty_init, ROT0, "Sunsoft / Atlus", "Oishii Puzzle Ha Irimasenka", 0 )
GAME( 1993, triplfun, oisipuzl, triplfun, oisipuzl, seta_state, empty_init, ROT0, "bootleg", "Triple Fun", 0 )