- seta.cpp: removed some unneeded VIDEO_START macros

- taito_x.cpp: split in subclasses, minor cleanups
This commit is contained in:
Ivan Vangelista 2021-11-19 18:12:44 +01:00
parent f85d81986d
commit d4d92d2aa9
5 changed files with 266 additions and 343 deletions

View File

@ -2425,13 +2425,13 @@ void seta_state::drgnunit_map(address_map &map)
The Roulette
***************************************************************************/
MACHINE_START_MEMBER(setaroul_state, setaroul)
void setaroul_state::machine_start()
{
m_leds.resolve();
}
// Coin drop
MACHINE_RESET_MEMBER(setaroul_state, setaroul)
void setaroul_state::machine_reset()
{
m_coin_start_cycles = 0;
}
@ -7947,8 +7947,6 @@ void downtown_state::tndrcade(machine_config &config)
PALETTE(config, m_palette).set_entries(512); // sprites only
MCFG_VIDEO_START_OVERRIDE(downtown_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8005,8 +8003,6 @@ void downtown_state::twineagl(machine_config &config)
PALETTE(config, m_palette).set_entries(512);
MCFG_VIDEO_START_OVERRIDE(downtown_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8057,8 +8053,6 @@ void downtown_state::downtown(machine_config &config)
PALETTE(config, m_palette).set_entries(512);
MCFG_VIDEO_START_OVERRIDE(downtown_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8147,8 +8141,6 @@ void usclssic_state::usclssic(machine_config &config)
PALETTE(config, m_palette, FUNC(usclssic_state::usclssic_palette), 16*32 + 64*32*2, 0x400); // sprites, layer - layer is 6 planes deep
MCFG_VIDEO_START_OVERRIDE(usclssic_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8212,8 +8204,6 @@ void downtown_state::calibr50(machine_config &config)
PALETTE(config, m_palette).set_entries(512);
MCFG_VIDEO_START_OVERRIDE(downtown_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8267,8 +8257,6 @@ void downtown_state::metafox(machine_config &config)
PALETTE(config, m_palette).set_entries(512);
MCFG_VIDEO_START_OVERRIDE(downtown_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8317,8 +8305,6 @@ void seta_state::atehate(machine_config &config)
PALETTE(config, m_palette).set_entries(512); // sprites only
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8366,8 +8352,6 @@ void seta_state::blandia(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_blandia_layer2).set_xoffsets(6, -2);
PALETTE(config, m_palette, FUNC(seta_state::blandia_palette), (16*32 + 64*32*4)*2, 0x600*2); // sprites, layer1, layer2, palette effect - layers 1&2 are 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8405,8 +8389,6 @@ void seta_state::blandiap(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_blandia_layer2).set_xoffsets(6, -2);
PALETTE(config, m_palette, FUNC(seta_state::blandia_palette), (16*32 + 64*32*4)*2, 0x600*2); // sprites, layer1, layer2, palette effect - layers 1&2 are 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8445,8 +8427,6 @@ void seta_state::blockcar(machine_config &config)
PALETTE(config, m_palette).set_entries(512); // sprites only
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8523,8 +8503,6 @@ void seta_state::daioh(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(-2, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8582,8 +8560,6 @@ void seta_state::drgnunit(machine_config &config)
X1_012(config, m_layers[0], m_palette, gfx_downtown).set_xoffsets(-2, -2);
PALETTE(config, m_palette).set_entries(512);
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8643,9 +8619,6 @@ void setaroul_state::setaroul(machine_config &config)
WATCHDOG_TIMER(config, "watchdog");
MCFG_MACHINE_START_OVERRIDE(setaroul_state, setaroul)
MCFG_MACHINE_RESET_OVERRIDE(setaroul_state, setaroul)
SETA001_SPRITE(config, m_seta001, 16'000'000, m_palette, gfx_setaroul_sprites);
m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback));
// position kludges
@ -8674,8 +8647,6 @@ void setaroul_state::setaroul(machine_config &config)
X1_012(config, m_layers[0], m_palette, gfx_setaroul).set_xoffsets(0, 5);
PALETTE(config, m_palette, FUNC(setaroul_state::setaroul_palette), 512);
MCFG_VIDEO_START_OVERRIDE(setaroul_state,seta)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@ -8721,8 +8692,6 @@ void seta_state::eightfrc(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8769,8 +8738,6 @@ void seta_state::extdwnhl(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_zingzip_layer2).set_xoffsets(-2, -2);
PALETTE(config, m_palette, FUNC(seta_state::zingzip_palette), 16*32 + 16*32 + 64*32*2, 0x600); // sprites, layer2, layer1 - layer 1 gfx is 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@ -8838,8 +8805,6 @@ void seta_state::gundhara(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_jjsquawk_layer2);
PALETTE(config, m_palette, FUNC(seta_state::gundhara_palette), 16*32 + 64*32*4, 0x600); // sprites, layer2, layer1 - layers are 6 planes deep (seta_state,but have only 4 palettes)
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8914,8 +8879,6 @@ void seta_state::jjsquawk(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_jjsquawk_layer2).set_xoffsets(-1, -1);
PALETTE(config, m_palette, FUNC(seta_state::jjsquawk_palette), 16*32 + 64*32*4, 0x600); // sprites, layer2, layer1 - layers are 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8950,8 +8913,6 @@ void seta_state::jjsquawb(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_jjsquawkb_layer2).set_xoffsets(-1, -1);
PALETTE(config, m_palette, FUNC(seta_state::jjsquawk_palette), 16*32 + 64*32*4, 0x600); // sprites, layer2, layer1 - layers are 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -8998,8 +8959,6 @@ void seta_state::kamenrid(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(-2, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9039,8 +8998,6 @@ void seta_state::orbs(machine_config &config)
PALETTE(config, m_palette).set_entries(512); // sprites only
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@ -9082,8 +9039,6 @@ void seta_state::keroppi(machine_config &config)
PALETTE(config, m_palette).set_entries(512); // sprites only
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@ -9131,8 +9086,6 @@ void seta_state::krzybowl(machine_config &config)
PALETTE(config, m_palette).set_entries(512); // sprites only
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9179,8 +9132,6 @@ void seta_state::madshark(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_jjsquawk_layer2);
PALETTE(config, m_palette, FUNC(seta_state::jjsquawk_palette), 16*32 + 64*32*4, 0x600); // sprites, layer2, layer1 - layers are 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9231,8 +9182,6 @@ void seta_state::magspeed(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(0, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9279,8 +9228,6 @@ void seta_state::msgundam(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(-2, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9421,8 +9368,6 @@ void kiwame_state::kiwame(machine_config &config)
PALETTE(config, m_palette).set_entries(512); // sprites only
MCFG_VIDEO_START_OVERRIDE(kiwame_state,seta)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@ -9468,8 +9413,6 @@ void seta_state::rezon(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(-2, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9509,8 +9452,6 @@ void seta_state::thunderl(machine_config &config)
PALETTE(config, m_palette).set_entries(512); // sprites only
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9585,8 +9526,6 @@ void seta_state::wiggie(machine_config &config)
PALETTE(config, m_palette).set_entries(512); // sprites only
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9627,8 +9566,6 @@ void seta_state::wits(machine_config &config)
PALETTE(config, m_palette).set_entries(512); // sprites only
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9666,8 +9603,6 @@ void seta_state::umanclub(machine_config &config)
PALETTE(config, m_palette).set_entries(512);
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9711,8 +9646,6 @@ void seta_state::utoukond(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2).set_xoffsets(0, -2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@ -9773,8 +9706,6 @@ void seta_state::wrofaero(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_msgundam_layer2);
PALETTE(config, m_palette).set_entries(512 * 3); // sprites, layer1, layer2
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9821,8 +9752,6 @@ void seta_state::zingzip(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_zingzip_layer2).set_xoffsets(-2, -1);
PALETTE(config, m_palette, FUNC(seta_state::zingzip_palette), 16*32 + 16*32 + 64*32*2, 0x600); // sprites, layer2, layer1 - layer 1 gfx is 6 planes deep
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9877,8 +9806,6 @@ void seta_state::pairlove(machine_config &config)
PALETTE(config, m_palette).set_entries(2048); // sprites only
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -9929,8 +9856,6 @@ void seta_state::crazyfgt(machine_config &config)
X1_012(config, m_layers[1], m_palette, gfx_blandia_layer2).set_xoffsets(0, -2);
PALETTE(config, m_palette, FUNC(seta_state::gundhara_palette), 16*32 + 64*32*4, 0x600); // sprites, layer2, layer1 - layers are 6 planes deep (seta_state,but have only 4 palettes)
MCFG_VIDEO_START_OVERRIDE(seta_state,seta)
/* sound hardware */
SPEAKER(config, "mono").front_center();
@ -10010,8 +9935,6 @@ void jockeyc_state::jockeyc(machine_config &config)
X1_012(config, m_layers[0], m_palette, gfx_downtown).set_xoffsets(126, -2);
PALETTE(config, m_palette, FUNC(seta_state::palette_init_RRRRRGGGGGBBBBB_proms), 512 * 1);
MCFG_VIDEO_START_OVERRIDE(jockeyc_state,seta)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();

View File

@ -317,18 +317,90 @@ Stephh's notes (based on the game M68000 code and some tests) :
***************************************************************************/
#include "emu.h"
#include "includes/taito_x.h"
#include "includes/seta.h"
#include "includes/taitoipt.h"
#include "audio/taitosnd.h"
#include "machine/taitocchip.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
#include "machine/timer.h"
#include "sound/ymopm.h"
#include "sound/ymopn.h"
#include "screen.h"
#include "speaker.h"
void taitox_state::superman_counters_w(u8 data)
namespace {
class taitox_state : public seta_state
{
public:
taitox_state(const machine_config &mconfig, device_type type, const char *tag) :
seta_state(mconfig, type, tag),
m_z80bank(*this, "z80bank"),
m_dswa_io(*this, "DSWA"),
m_dswb_io(*this, "DSWB"),
m_in_io(*this, "IN%u", 0U)
{ }
void ballbros(machine_config &config);
void kyustrkr(machine_config &config);
void gigandes(machine_config &config);
void daisenpu(machine_config &config);
protected:
virtual void machine_start() override;
u16 dsw_input_r(offs_t offset);
void taito_x_base_map(address_map &map);
void sound_map(address_map &map);
private:
u16 input_r(offs_t offset);
void daisenpu_input_w(offs_t offset, u16 data);
void kyustrkr_input_w(offs_t offset, u16 data);
void sound_bankswitch_w(u8 data);
void ballbros_map(address_map &map);
void daisenpu_map(address_map &map);
void daisenpu_sound_map(address_map &map);
void gigandes_map(address_map &map);
void kyustrkr_map(address_map &map);
required_memory_bank m_z80bank;
required_ioport m_dswa_io;
required_ioport m_dswb_io;
required_ioport_array<3> m_in_io;
};
class taitox_cchip_state : public taitox_state
{
public:
taitox_cchip_state(const machine_config &mconfig, device_type type, const char *tag) :
taitox_state(mconfig, type, tag),
m_cchip(*this, "cchip"),
m_cchip_irq_clear(*this, "cchip_irq_clear")
{ }
void superman(machine_config &config);
private:
void counters_w(u8 data);
INTERRUPT_GEN_MEMBER(interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(cchip_irq_clear_cb);
void superman_map(address_map &map);
required_device<taito_cchip_device> m_cchip;
required_device<timer_device> m_cchip_irq_clear;
};
void taitox_cchip_state::counters_w(u8 data)
{
machine().bookkeeping().coin_lockout_w(1, data & 0x08);
machine().bookkeeping().coin_lockout_w(0, data & 0x04);
@ -336,7 +408,7 @@ void taitox_state::superman_counters_w(u8 data)
machine().bookkeeping().coin_counter_w(0, data & 0x01);
}
u16 taitox_state::superman_dsw_input_r(offs_t offset)
u16 taitox_state::dsw_input_r(offs_t offset)
{
switch (offset)
{
@ -354,16 +426,16 @@ u16 taitox_state::superman_dsw_input_r(offs_t offset)
}
}
u16 taitox_state::daisenpu_input_r(offs_t offset)
u16 taitox_state::input_r(offs_t offset)
{
switch (offset)
{
case 0x00:
return m_in_io[0]->read(); /* Player 1 controls + START1 */
return m_in_io[0]->read(); // Player 1 controls + START1
case 0x01:
return m_in_io[1]->read(); /* Player 2 controls + START2 */
return m_in_io[1]->read(); // Player 2 controls + START2
case 0x02:
return m_in_io[2]->read(); /* COINn + SERVICE1 + TILT */
return m_in_io[2]->read(); // COINn + SERVICE1 + TILT
default:
logerror("taitox unknown input read offset: %04x\n", offset);
@ -375,16 +447,16 @@ void taitox_state::daisenpu_input_w(offs_t offset, u16 data)
{
switch (offset)
{
case 0x04: /* coin counters and lockout */
machine().bookkeeping().coin_counter_w(0,data & 0x01);
machine().bookkeeping().coin_counter_w(1,data & 0x02);
machine().bookkeeping().coin_lockout_w(0,~data & 0x04);
machine().bookkeeping().coin_lockout_w(1,~data & 0x08);
//logerror("taitox coin control %04x to offset %04x\n",data,offset);
case 0x04: // coin counters and lockout
machine().bookkeeping().coin_counter_w(0, data & 0x01);
machine().bookkeeping().coin_counter_w(1, data & 0x02);
machine().bookkeeping().coin_lockout_w(0, ~data & 0x04);
machine().bookkeeping().coin_lockout_w(1, ~data & 0x08);
//logerror("taitox coin control %04x to offset %04x\n", data, offset);
break;
default:
logerror("taitox unknown input write %04x to offset %04x\n",data,offset);
logerror("taitox unknown input write %04x to offset %04x\n", data, offset);
}
}
@ -393,16 +465,16 @@ void taitox_state::kyustrkr_input_w(offs_t offset, u16 data)
{
switch (offset)
{
case 0x04: /* coin counters and lockout */
machine().bookkeeping().coin_counter_w(0,data & 0x01);
machine().bookkeeping().coin_counter_w(1,data & 0x02);
machine().bookkeeping().coin_lockout_w(0,data & 0x04);
machine().bookkeeping().coin_lockout_w(1,data & 0x08);
//logerror("taitox coin control %04x to offset %04x\n",data,offset);
case 0x04: // coin counters and lockout
machine().bookkeeping().coin_counter_w(0, data & 0x01);
machine().bookkeeping().coin_counter_w(1, data & 0x02);
machine().bookkeeping().coin_lockout_w(0, data & 0x04);
machine().bookkeeping().coin_lockout_w(1, data & 0x08);
//logerror("taitox coin control %04x to offset %04x\n", data, offset);
break;
default:
logerror("taitox unknown input write %04x to offset %04x\n",data,offset);
logerror("taitox unknown input write %04x to offset %04x\n", data, offset);
}
}
@ -423,17 +495,17 @@ void taitox_state::taito_x_base_map(address_map &map)
map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y
map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16));
map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr
map(0xf00000, 0xf03fff).ram(); /* Main RAM */
map(0xf00000, 0xf03fff).ram(); // Main RAM
}
void taitox_state::superman_map(address_map &map)
void taitox_cchip_state::superman_map(address_map &map)
{
taito_x_base_map(map);
map(0x000000, 0x07ffff).rom();
map(0x300000, 0x300001).nopw(); /* written each frame at $3a9c, mostly 0x10 */
map(0x400000, 0x400001).nopw(); /* written each frame at $3aa2, mostly 0x10 */
map(0x500000, 0x500007).r(FUNC(taitox_state::superman_dsw_input_r));
map(0x600000, 0x600001).nopw(); /* written each frame at $3ab0, mostly 0x10 */
map(0x300000, 0x300001).nopw(); // written each frame at $3a9c, mostly 0x10
map(0x400000, 0x400001).nopw(); // written each frame at $3aa2, mostly 0x10
map(0x500000, 0x500007).r(FUNC(taitox_cchip_state::dsw_input_r));
map(0x600000, 0x600001).nopw(); // written each frame at $3ab0, mostly 0x10
map(0x800000, 0x800001).nopr();
map(0x800001, 0x800001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
map(0x800003, 0x800003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
@ -445,52 +517,52 @@ void taitox_state::daisenpu_map(address_map &map)
{
taito_x_base_map(map);
map(0x000000, 0x03ffff).rom();
// map(0x400000, 0x400001).nopw(); /* written each frame at $2ac, values change */
map(0x500000, 0x50000f).r(FUNC(taitox_state::superman_dsw_input_r));
// map(0x600000, 0x600001).nopw(); /* written each frame at $2a2, values change */
// map(0x400000, 0x400001).nopw(); // written each frame at $2ac, values change
map(0x500000, 0x50000f).r(FUNC(taitox_state::dsw_input_r));
// map(0x600000, 0x600001).nopw(); // written each frame at $2a2, values change
map(0x800000, 0x800001).nopr();
map(0x800001, 0x800001).w("ciu", FUNC(pc060ha_device::master_port_w));
map(0x800003, 0x800003).rw("ciu", FUNC(pc060ha_device::master_comm_r), FUNC(pc060ha_device::master_comm_w));
map(0x900000, 0x90000f).rw(FUNC(taitox_state::daisenpu_input_r), FUNC(taitox_state::daisenpu_input_w));
map(0x900000, 0x90000f).rw(FUNC(taitox_state::input_r), FUNC(taitox_state::daisenpu_input_w));
}
void taitox_state::gigandes_map(address_map &map)
{
taito_x_base_map(map);
map(0x000000, 0x07ffff).rom();
map(0x400000, 0x400001).nopw(); /* 0x1 written each frame at $d42, watchdog? */
map(0x500000, 0x500007).r(FUNC(taitox_state::superman_dsw_input_r));
map(0x600000, 0x600001).nopw(); /* 0x1 written each frame at $d3c, watchdog? */
map(0x400000, 0x400001).nopw(); // 0x1 written each frame at $d42, watchdog?
map(0x500000, 0x500007).r(FUNC(taitox_state::dsw_input_r));
map(0x600000, 0x600001).nopw(); // 0x1 written each frame at $d3c, watchdog?
map(0x800000, 0x800001).nopr();
map(0x800001, 0x800001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
map(0x800003, 0x800003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
map(0x900000, 0x90000f).rw(FUNC(taitox_state::daisenpu_input_r), FUNC(taitox_state::daisenpu_input_w));
map(0x900000, 0x90000f).rw(FUNC(taitox_state::input_r), FUNC(taitox_state::daisenpu_input_w));
}
void taitox_state::ballbros_map(address_map &map)
{
taito_x_base_map(map);
map(0x000000, 0x03ffff).rom();
map(0x400000, 0x400001).nopw(); /* 0x1 written each frame at $c56, watchdog? */
map(0x500000, 0x50000f).r(FUNC(taitox_state::superman_dsw_input_r));
map(0x600000, 0x600001).nopw(); /* 0x1 written each frame at $c4e, watchdog? */
map(0x400000, 0x400001).nopw(); // 0x1 written each frame at $c56, watchdog?
map(0x500000, 0x50000f).r(FUNC(taitox_state::dsw_input_r));
map(0x600000, 0x600001).nopw(); // 0x1 written each frame at $c4e, watchdog?
map(0x800000, 0x800001).nopr();
map(0x800001, 0x800001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
map(0x800003, 0x800003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
map(0x900000, 0x90000f).rw(FUNC(taitox_state::daisenpu_input_r), FUNC(taitox_state::daisenpu_input_w));
map(0x900000, 0x90000f).rw(FUNC(taitox_state::input_r), FUNC(taitox_state::daisenpu_input_w));
}
void taitox_state::kyustrkr_map(address_map &map)
{
taito_x_base_map(map);
map(0x000000, 0x03ffff).rom();
map(0x400000, 0x400001).nopw(); /* 0x1 written each frame at $c56, watchdog? */
map(0x500000, 0x50000f).r(FUNC(taitox_state::superman_dsw_input_r));
map(0x600000, 0x600001).nopw(); /* 0x1 written each frame at $c4e, watchdog? */
map(0x400000, 0x400001).nopw(); // 0x1 written each frame at $c56, watchdog?
map(0x500000, 0x50000f).r(FUNC(taitox_state::dsw_input_r));
map(0x600000, 0x600001).nopw(); // 0x1 written each frame at $c4e, watchdog?
map(0x800000, 0x800001).nopr();
map(0x800001, 0x800001).w("tc0140syt", FUNC(tc0140syt_device::master_port_w));
map(0x800003, 0x800003).rw("tc0140syt", FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w));
map(0x900000, 0x90000f).rw(FUNC(taitox_state::daisenpu_input_r), FUNC(taitox_state::kyustrkr_input_w));
map(0x900000, 0x90000f).rw(FUNC(taitox_state::input_r), FUNC(taitox_state::kyustrkr_input_w));
}
@ -504,10 +576,10 @@ void taitox_state::sound_map(address_map &map)
map(0xe000, 0xe003).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
map(0xe200, 0xe200).nopr().w("tc0140syt", FUNC(tc0140syt_device::slave_port_w));
map(0xe201, 0xe201).rw("tc0140syt", FUNC(tc0140syt_device::slave_comm_r), FUNC(tc0140syt_device::slave_comm_w));
map(0xe400, 0xe403).nopw(); /* pan */
map(0xe400, 0xe403).nopw(); // pan
map(0xea00, 0xea00).nopr();
map(0xee00, 0xee00).nopw(); /* ? */
map(0xf000, 0xf000).nopw(); /* ? */
map(0xee00, 0xee00).nopw(); // ?
map(0xf000, 0xf000).nopw(); // ?
map(0xf200, 0xf200).w(FUNC(taitox_state::sound_bankswitch_w));
}
@ -519,9 +591,9 @@ void taitox_state::daisenpu_sound_map(address_map &map)
map(0xe000, 0xe001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
map(0xe200, 0xe200).nopr().w("ciu", FUNC(pc060ha_device::slave_port_w));
map(0xe201, 0xe201).rw("ciu", FUNC(pc060ha_device::slave_comm_r), FUNC(pc060ha_device::slave_comm_w));
map(0xe400, 0xe403).nopw(); /* pan */
map(0xe400, 0xe403).nopw(); // pan
map(0xea00, 0xea00).nopr();
map(0xee00, 0xee00).nopw(); /* ? */
map(0xee00, 0xee00).nopw(); // ?
map(0xf000, 0xf000).nopw();
map(0xf200, 0xf200).w(FUNC(taitox_state::sound_bankswitch_w));
}
@ -529,7 +601,7 @@ void taitox_state::daisenpu_sound_map(address_map &map)
/**************************************************************************/
static INPUT_PORTS_START( taitox_generic ) /* The Dip Switches will be modified as needed for each game */
static INPUT_PORTS_START( taitox_generic ) // The Dip Switches will be modified as needed for each game
PORT_START("DSWA")
TAITO_MACHINE_NO_COCKTAIL_LOC(SW1)
@ -561,7 +633,7 @@ static INPUT_PORTS_START( taitox_generic ) /* The Dip Switches will be modified
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END
static INPUT_PORTS_START( taitox_east_tech ) /* The Dip Switches will be modified as needed for each game */
static INPUT_PORTS_START( taitox_east_tech ) // The Dip Switches will be modified as needed for each game
PORT_START("DSWA")
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SW1:1,2")
@ -625,8 +697,8 @@ static INPUT_PORTS_START( taitox_east_tech ) /* The Dip Switches will be modifie
INPUT_PORTS_END
static INPUT_PORTS_START( superman )
/* DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf01c4a ($1c4a,A5) */
/* DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf01c4c ($1c4c,A5) */
// DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf01c4a ($1c4a,A5)
// DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf01c4c ($1c4c,A5)
PORT_INCLUDE( taitox_generic )
PORT_MODIFY("DSWB")
@ -662,8 +734,8 @@ static INPUT_PORTS_START( supermanj )
INPUT_PORTS_END
static INPUT_PORTS_START( twinhawk )
/* DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf001b8 */
/* DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf001ba */
// DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf001b8
// DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf001ba
PORT_INCLUDE( taitox_generic )
PORT_MODIFY("DSWB")
@ -694,8 +766,8 @@ static INPUT_PORTS_START( twinhawku )
INPUT_PORTS_END
static INPUT_PORTS_START( daisenpu )
/* DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf001a4 */
/* DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf001a6 */
// DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf001a4
// DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf001a6
PORT_INCLUDE( twinhawk )
PORT_MODIFY("DSWA")
@ -711,14 +783,14 @@ static INPUT_PORTS_START( daisenpu )
INPUT_PORTS_END
static INPUT_PORTS_START( gigandes )
/* DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf00a3c */
/* DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf00a3e */
// DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf00a3c
// DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf00a3e
PORT_INCLUDE( taitox_east_tech )
INPUT_PORTS_END
static INPUT_PORTS_START( kyustrkr )
/* DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf028fe */
/* DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf02900 */
// DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf028fe
// DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf02900
PORT_INCLUDE( taitox_east_tech )
PORT_MODIFY("DSWB")
@ -734,15 +806,15 @@ static INPUT_PORTS_START( kyustrkr )
INPUT_PORTS_END
static INPUT_PORTS_START( ballbros )
/* DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf028fe */
/* DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf02900 */
// DSWA - 0x500000 (low) and 0x500002 (high) -> 0xf028fe
// DSWB - 0x500004 (low) and 0x500006 (high) -> 0xf02900
PORT_INCLUDE( taitox_east_tech )
PORT_MODIFY("DSWB")
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:2") /* Opposite of the other East Technology games */
PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW2:2") // Opposite of the other East Technology games
PORT_DIPSETTING( 0x02, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:3") /* Opposite of the other East Technology games */
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW2:3") // Opposite of the other East Technology games
PORT_DIPSETTING( 0x00, DEF_STR( No ) )
PORT_DIPSETTING( 0x04, DEF_STR( Yes ) )
PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW2:4" )
@ -751,8 +823,8 @@ static INPUT_PORTS_START( ballbros )
PORT_DIPSETTING( 0x00, DEF_STR( English ) )
PORT_DIPSETTING( 0x20, DEF_STR( Japanese ) )
PORT_DIPNAME( 0x40, 0x00, "Color Change" ) PORT_DIPLOCATION("SW2:7")
PORT_DIPSETTING( 0x00, "Less" ) /* each pattern */
PORT_DIPSETTING( 0x40, "More" ) /* every 3 times */
PORT_DIPSETTING( 0x00, "Less" ) // each pattern
PORT_DIPSETTING( 0x40, "More" ) // every 3 times
PORT_MODIFY("IN0")
TAITO_JOY_UDLR_1_BUTTON_START( 1 )
@ -766,37 +838,37 @@ INPUT_PORTS_END
static const gfx_layout tilelayout =
{
16,16, /* 16*16 sprites */
RGN_FRAC(1,1), /* 16384 of them */
4, /* 4 bits per pixel */
16,16, // 16*16 sprites
RGN_FRAC(1,1), // 16384 of them
4, // 4 bits per pixel
{ STEP4(0,8) },
{ STEP8(0,1), STEP8(8*4*8,1) },
{ STEP8(0,8*4), STEP8(8*4*8*2,8*4) },
16*16*4 /* every sprite takes 64 consecutive bytes */
16*16*4 // every sprite takes 64 consecutive bytes
};
static GFXDECODE_START( gfx_taito_x )
GFXDECODE_ENTRY( "gfx1", 0x000000, tilelayout, 0, 128 ) /* sprites & playfield */
GFXDECODE_ENTRY( "gfx1", 0x000000, tilelayout, 0, 128 ) // sprites & playfield
GFXDECODE_END
/**************************************************************************/
MACHINE_START_MEMBER(taitox_state,taitox)
void taitox_state::machine_start()
{
int banks = memregion("audiocpu")->bytes() / 0x4000;
m_z80bank->configure_entries(0, banks, memregion("audiocpu")->base(), 0x4000);
}
INTERRUPT_GEN_MEMBER(taitox_state::interrupt)
INTERRUPT_GEN_MEMBER(taitox_cchip_state::interrupt)
{
m_maincpu->set_input_line(6, HOLD_LINE);
m_cchip->ext_interrupt(ASSERT_LINE);
m_cchip_irq_clear->adjust(attotime::zero);
}
TIMER_DEVICE_CALLBACK_MEMBER(taitox_state::cchip_irq_clear_cb)
TIMER_DEVICE_CALLBACK_MEMBER(taitox_cchip_state::cchip_irq_clear_cb)
{
m_cchip->ext_interrupt(CLEAR_LINE);
}
@ -804,51 +876,47 @@ TIMER_DEVICE_CALLBACK_MEMBER(taitox_state::cchip_irq_clear_cb)
/**************************************************************************/
void taitox_state::superman(machine_config &config)
void taitox_cchip_state::superman(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
m_maincpu->set_addrmap(AS_PROGRAM, &taitox_state::superman_map);
m_maincpu->set_vblank_int("screen", FUNC(taitox_state::interrupt));
// basic machine hardware
M68000(config, m_maincpu, XTAL(16'000'000) / 2); // verified on PCB
m_maincpu->set_addrmap(AS_PROGRAM, &taitox_cchip_state::superman_map);
m_maincpu->set_vblank_int("screen", FUNC(taitox_cchip_state::interrupt));
Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* verified on pcb */
m_audiocpu->set_addrmap(AS_PROGRAM, &taitox_state::sound_map);
Z80(config, m_audiocpu, XTAL(16'000'000) / 4); // verified on PCB
m_audiocpu->set_addrmap(AS_PROGRAM, &taitox_cchip_state::sound_map);
TAITO_CCHIP(config, m_cchip, 16_MHz_XTAL/2); // 8MHz measured on pin 20
TAITO_CCHIP(config, m_cchip, 16_MHz_XTAL / 2); // 8MHz measured on pin 20
m_cchip->in_pa_callback().set_ioport("IN0");
m_cchip->in_pb_callback().set_ioport("IN1");
m_cchip->in_ad_callback().set_ioport("IN2");
m_cchip->out_pc_callback().set(FUNC(taitox_state::superman_counters_w));
m_cchip->out_pc_callback().set(FUNC(taitox_cchip_state::counters_w));
TIMER(config, "cchip_irq_clear").configure_generic(FUNC(taitox_state::cchip_irq_clear_cb));
TIMER(config, m_cchip_irq_clear).configure_generic(FUNC(taitox_cchip_state::cchip_irq_clear_cb));
config.set_maximum_quantum(attotime::from_hz(600)); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
MCFG_MACHINE_START_OVERRIDE(taitox_state,taitox)
config.set_maximum_quantum(attotime::from_hz(600)); // 10 CPU slices per frame - enough for the sound CPU to read all commands
SETA001_SPRITE(config, m_seta001, 16'000'000, m_palette, gfx_taito_x);
// position kludges
m_seta001->set_fg_yoffsets(-0x12, 0x0e);
m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(57.43);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
screen.set_size(52*8, 32*8);
screen.set_visarea(0*8, 48*8-1, 1*8, 31*8-1);
screen.set_screen_update(FUNC(taitox_state::screen_update_seta_no_layers));
screen.set_screen_update(FUNC(taitox_cchip_state::screen_update_seta_no_layers));
screen.set_palette(m_palette);
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
MCFG_VIDEO_START_OVERRIDE(taitox_state,seta)
/* sound hardware */
// sound hardware
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
ym2610_device &ymsnd(YM2610(config, "ymsnd", XTAL(16'000'000)/2)); /* verified on pcb */
ym2610_device &ymsnd(YM2610(config, "ymsnd", XTAL(16'000'000) / 2)); // verified on PCB
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.add_route(0, "lspeaker", 0.25);
ymsnd.add_route(0, "rspeaker", 0.25);
@ -862,24 +930,22 @@ void taitox_state::superman(machine_config &config)
void taitox_state::daisenpu(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, XTAL(16'000'000)/2); /* verified on pcb */
// basic machine hardware
M68000(config, m_maincpu, XTAL(16'000'000) / 2); // verified on PCB
m_maincpu->set_addrmap(AS_PROGRAM, &taitox_state::daisenpu_map);
m_maincpu->set_vblank_int("screen", FUNC(taitox_state::irq2_line_hold));
Z80(config, m_audiocpu, XTAL(16'000'000)/4); /* verified on pcb */
Z80(config, m_audiocpu, XTAL(16'000'000) / 4); // verified on PCB
m_audiocpu->set_addrmap(AS_PROGRAM, &taitox_state::daisenpu_sound_map);
config.set_maximum_quantum(attotime::from_hz(600)); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
MCFG_MACHINE_START_OVERRIDE(taitox_state,taitox)
config.set_maximum_quantum(attotime::from_hz(600)); // 10 CPU slices per frame - enough for the sound CPU to read all commands
SETA001_SPRITE(config, m_seta001, 16'000'000, m_palette, gfx_taito_x);
// position kludges
m_seta001->set_fg_yoffsets(-0x12, 0x0e);
m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
@ -890,13 +956,11 @@ void taitox_state::daisenpu(machine_config &config)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
MCFG_VIDEO_START_OVERRIDE(taitox_state,seta)
/* sound hardware */
// sound hardware
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(16'000'000)/4)); /* verified on pcb */
ym2151_device &ymsnd(YM2151(config, "ymsnd", XTAL(16'000'000) / 4)); // verified on PCB
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.add_route(0, "lspeaker", 0.45);
ymsnd.add_route(1, "rspeaker", 0.45);
@ -908,23 +972,21 @@ void taitox_state::daisenpu(machine_config &config)
void taitox_state::gigandes(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, 8000000); /* 8 MHz? */
// basic machine hardware
M68000(config, m_maincpu, 8000000); // 8 MHz?
m_maincpu->set_addrmap(AS_PROGRAM, &taitox_state::gigandes_map);
m_maincpu->set_vblank_int("screen", FUNC(taitox_state::irq2_line_hold));
Z80(config, m_audiocpu, 4000000); /* 4 MHz ??? */
Z80(config, m_audiocpu, 4000000); // 4 MHz ???
m_audiocpu->set_addrmap(AS_PROGRAM, &taitox_state::sound_map);
config.set_maximum_quantum(attotime::from_hz(600)); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
MCFG_MACHINE_START_OVERRIDE(taitox_state,taitox)
config.set_maximum_quantum(attotime::from_hz(600)); // 10 CPU slices per frame - enough for the sound CPU to read all commands
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_taito_x);
m_seta001->set_fg_yoffsets(-0xa, 0xe);
m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
@ -935,9 +997,7 @@ void taitox_state::gigandes(machine_config &config)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
MCFG_VIDEO_START_OVERRIDE(taitox_state,seta)
/* sound hardware */
// sound hardware
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@ -955,24 +1015,22 @@ void taitox_state::gigandes(machine_config &config)
void taitox_state::ballbros(machine_config &config)
{
/* basic machine hardware */
M68000(config, m_maincpu, 8000000); /* 8 MHz? */
// basic machine hardware
M68000(config, m_maincpu, 8000000); // 8 MHz?
m_maincpu->set_addrmap(AS_PROGRAM, &taitox_state::ballbros_map);
m_maincpu->set_vblank_int("screen", FUNC(taitox_state::irq2_line_hold));
Z80(config, m_audiocpu, 4000000); /* 4 MHz ??? */
Z80(config, m_audiocpu, 4000000); // 4 MHz ???
m_audiocpu->set_addrmap(AS_PROGRAM, &taitox_state::sound_map);
config.set_maximum_quantum(attotime::from_hz(600)); /* 10 CPU slices per frame - enough for the sound CPU to read all commands */
MCFG_MACHINE_START_OVERRIDE(taitox_state,taitox)
config.set_maximum_quantum(attotime::from_hz(600)); // 10 CPU slices per frame - enough for the sound CPU to read all commands
SETA001_SPRITE(config, m_seta001, 16000000, m_palette, gfx_taito_x);
// position kludges
m_seta001->set_fg_yoffsets(-0x0a, 0x0e);
m_seta001->set_bg_yoffsets(0x1, -0x1);
/* video hardware */
// video hardware
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_refresh_hz(60);
screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
@ -983,9 +1041,7 @@ void taitox_state::ballbros(machine_config &config)
PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048);
MCFG_VIDEO_START_OVERRIDE(taitox_state, seta)
/* sound hardware */
// sound hardware
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
@ -1004,7 +1060,7 @@ void taitox_state::ballbros(machine_config &config)
void taitox_state::kyustrkr(machine_config &config)
{
ballbros(config);
/* basic machine hardware */
// basic machine hardware
m_maincpu->set_addrmap(AS_PROGRAM, &taitox_state::kyustrkr_map);
}
@ -1056,74 +1112,75 @@ Notes:
YM2203 running at 3.000Mz (12/4)
VSync 60Hz
NOTE: There is an alternate version that uses a daughter card to replace the 8Mbit mask roms
with two 4Mbit mask roms. These roms are B61-02 through B61-05, high and low for each.
NOTE: There is an alternate version that uses a daughter card (K9100202A J9100154A) to replace
the 4Mbit mask ROMs with two 2Mbit mask ROMs. These ROMs are B61-02 through B61-05, high
and low for each.
*/
ROM_START( superman )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
ROM_REGION( 0x80000, "maincpu", 0 ) // 512k for 68000 code
ROM_LOAD16_BYTE( "b61_09.a10", 0x00000, 0x20000, CRC(640f1d58) SHA1(e768d32eae1dba39c23189996fbd5454c8627809) )
ROM_LOAD16_BYTE( "b61_07.a5", 0x00001, 0x20000, CRC(fddb9953) SHA1(8b562712810a5a72f4647f1ba1314a1be2e249e7) )
ROM_LOAD16_BYTE( "b61_08.a8", 0x40000, 0x20000, CRC(79fc028e) SHA1(bf42b3f84dcad8fd9085c702a78dc895cc12d670) )
ROM_LOAD16_BYTE( "b61_13.a3", 0x40001, 0x20000, CRC(9f446a44) SHA1(16f7cd6438e47fdaac93a368df5c093f6ff0f1f0) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for Z80 code */
ROM_REGION( 0x10000, "audiocpu", 0 ) // 64k for Z80 code
ROM_LOAD( "b61_10.d18", 0x00000, 0x10000, CRC(6efe79e8) SHA1(7a76efaaeab71473f4b0b23a89141f203488ce1d) )
ROM_REGION( 0x200000, "gfx1", 0 )
ROM_LOAD32_WORD_SWAP( "b61-14.f1", 0x000002, 0x80000, CRC(89368c3e) SHA1(8d227439ab321fd5d432d860544daea0e78ce588) ) /* Plane 0, 1 */
ROM_LOAD32_WORD_SWAP( "b61-14.f1", 0x000002, 0x80000, CRC(89368c3e) SHA1(8d227439ab321fd5d432d860544daea0e78ce588) ) // Plane 0, 1
ROM_LOAD32_WORD_SWAP( "b61-15.h1", 0x100002, 0x80000, CRC(910cc4f9) SHA1(9ecfa84123a8f9d048f0a689647e92f25af73899) )
ROM_LOAD32_WORD_SWAP( "b61-16.j1", 0x000000, 0x80000, CRC(3622ed2f) SHA1(03f4383f6ff8b5f1e26bc6bbef2fb1855d3bb93f) ) /* Plane 2, 3 */
ROM_LOAD32_WORD_SWAP( "b61-16.j1", 0x000000, 0x80000, CRC(3622ed2f) SHA1(03f4383f6ff8b5f1e26bc6bbef2fb1855d3bb93f) ) // Plane 2, 3
ROM_LOAD32_WORD_SWAP( "b61-17.k1", 0x100000, 0x80000, CRC(c34f27e0) SHA1(07ee02c18ce29f35e8ae87d0c1ed80b726c246a6) )
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) /* ADPCM samples */
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) // ADPCM samples
ROM_LOAD( "b61-01.e18", 0x00000, 0x80000, CRC(3cf99786) SHA1(f6febf9bda87ca04f0a5890d0e8001c26dfa6c81) )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "b61_11.m11", 0x0000, 0x2000, CRC(3bc5d44b) SHA1(6ba3ba35fe313af77d732412572d91a202b50542) )
ROM_END
ROM_START( supermanu ) /* No US copyright notice or FBI logo - Just a coinage difference, see notes above */
ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
ROM_START( supermanu ) // No US copyright notice or FBI logo - Just a coinage difference, see notes above
ROM_REGION( 0x80000, "maincpu", 0 ) // 512k for 68000 code
ROM_LOAD16_BYTE( "b61_09.a10", 0x00000, 0x20000, CRC(640f1d58) SHA1(e768d32eae1dba39c23189996fbd5454c8627809) )
ROM_LOAD16_BYTE( "b61_07.a5", 0x00001, 0x20000, CRC(fddb9953) SHA1(8b562712810a5a72f4647f1ba1314a1be2e249e7) )
ROM_LOAD16_BYTE( "b61_08.a8", 0x40000, 0x20000, CRC(79fc028e) SHA1(bf42b3f84dcad8fd9085c702a78dc895cc12d670) )
ROM_LOAD16_BYTE( "b61_12.a3", 0x40001, 0x20000, CRC(064d3bfe) SHA1(75abf924a6e44203169d2fa15852caa0bf57db30) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for Z80 code */
ROM_REGION( 0x10000, "audiocpu", 0 ) // 64k for Z80 code
ROM_LOAD( "b61_10.d18", 0x00000, 0x10000, CRC(6efe79e8) SHA1(7a76efaaeab71473f4b0b23a89141f203488ce1d) )
ROM_REGION( 0x200000, "gfx1", 0 )
ROM_LOAD32_WORD_SWAP( "b61-14.f1", 0x000002, 0x80000, CRC(89368c3e) SHA1(8d227439ab321fd5d432d860544daea0e78ce588) ) /* Plane 0, 1 */
ROM_LOAD32_WORD_SWAP( "b61-14.f1", 0x000002, 0x80000, CRC(89368c3e) SHA1(8d227439ab321fd5d432d860544daea0e78ce588) ) // Plane 0, 1
ROM_LOAD32_WORD_SWAP( "b61-15.h1", 0x100002, 0x80000, CRC(910cc4f9) SHA1(9ecfa84123a8f9d048f0a689647e92f25af73899) )
ROM_LOAD32_WORD_SWAP( "b61-16.j1", 0x000000, 0x80000, CRC(3622ed2f) SHA1(03f4383f6ff8b5f1e26bc6bbef2fb1855d3bb93f) ) /* Plane 2, 3 */
ROM_LOAD32_WORD_SWAP( "b61-16.j1", 0x000000, 0x80000, CRC(3622ed2f) SHA1(03f4383f6ff8b5f1e26bc6bbef2fb1855d3bb93f) ) // Plane 2, 3
ROM_LOAD32_WORD_SWAP( "b61-17.k1", 0x100000, 0x80000, CRC(c34f27e0) SHA1(07ee02c18ce29f35e8ae87d0c1ed80b726c246a6) )
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) /* ADPCM samples */
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) // ADPCM samples
ROM_LOAD( "b61-01.e18", 0x00000, 0x80000, CRC(3cf99786) SHA1(f6febf9bda87ca04f0a5890d0e8001c26dfa6c81) )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
ROM_LOAD( "b61_11.m11", 0x0000, 0x2000, CRC(3bc5d44b) SHA1(6ba3ba35fe313af77d732412572d91a202b50542) )
ROM_END
ROM_START( supermanj ) /* Shows a Japan copyright notice */
ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
ROM_START( supermanj ) // Shows a Japan copyright notice
ROM_REGION( 0x80000, "maincpu", 0 ) // 512k for 68000 code
ROM_LOAD16_BYTE( "b61_09.a10", 0x00000, 0x20000, CRC(640f1d58) SHA1(e768d32eae1dba39c23189996fbd5454c8627809) )
ROM_LOAD16_BYTE( "b61_07.a5", 0x00001, 0x20000, CRC(fddb9953) SHA1(8b562712810a5a72f4647f1ba1314a1be2e249e7) )
ROM_LOAD16_BYTE( "b61_08.a8", 0x40000, 0x20000, CRC(79fc028e) SHA1(bf42b3f84dcad8fd9085c702a78dc895cc12d670) )
ROM_LOAD16_BYTE( "b61_06.a3", 0x40001, 0x20000, CRC(714a0b68) SHA1(b0b42c55d2404c7c193eb8cab3bd92e321947845) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for Z80 code */
ROM_REGION( 0x10000, "audiocpu", 0 ) // 64k for Z80 code
ROM_LOAD( "b61_10.d18", 0x00000, 0x10000, CRC(6efe79e8) SHA1(7a76efaaeab71473f4b0b23a89141f203488ce1d) )
ROM_REGION( 0x200000, "gfx1", 0 )
ROM_LOAD32_WORD_SWAP( "b61-14.f1", 0x000002, 0x80000, CRC(89368c3e) SHA1(8d227439ab321fd5d432d860544daea0e78ce588) ) /* Plane 0, 1 */
ROM_LOAD32_WORD_SWAP( "b61-14.f1", 0x000002, 0x80000, CRC(89368c3e) SHA1(8d227439ab321fd5d432d860544daea0e78ce588) ) // Plane 0, 1
ROM_LOAD32_WORD_SWAP( "b61-15.h1", 0x100002, 0x80000, CRC(910cc4f9) SHA1(9ecfa84123a8f9d048f0a689647e92f25af73899) )
ROM_LOAD32_WORD_SWAP( "b61-16.j1", 0x000000, 0x80000, CRC(3622ed2f) SHA1(03f4383f6ff8b5f1e26bc6bbef2fb1855d3bb93f) ) /* Plane 2, 3 */
ROM_LOAD32_WORD_SWAP( "b61-16.j1", 0x000000, 0x80000, CRC(3622ed2f) SHA1(03f4383f6ff8b5f1e26bc6bbef2fb1855d3bb93f) ) // Plane 2, 3
ROM_LOAD32_WORD_SWAP( "b61-17.k1", 0x100000, 0x80000, CRC(c34f27e0) SHA1(07ee02c18ce29f35e8ae87d0c1ed80b726c246a6) )
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) /* ADPCM samples */
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) // ADPCM samples
ROM_LOAD( "b61-01.e18", 0x00000, 0x80000, CRC(3cf99786) SHA1(f6febf9bda87ca04f0a5890d0e8001c26dfa6c81) )
ROM_REGION( 0x2000, "cchip:cchip_eprom", 0 )
@ -1141,102 +1198,102 @@ P0-051A
*/
ROM_START( twinhawk )
ROM_REGION( 0x40000, "maincpu", 0 ) /* 256k for 68000 code */
ROM_REGION( 0x40000, "maincpu", 0 ) // 256k for 68000 code
ROM_LOAD16_BYTE( "b87-11.u7", 0x00000, 0x20000, CRC(fc84a399) SHA1(6e5552b7ee433bee74f8936a8e583b5f81b5f2b2) )
ROM_LOAD16_BYTE( "b87-10.u5", 0x00001, 0x20000, CRC(17181706) SHA1(b7cab502b68a8f02918412538f23682120cbe1d3) )
ROM_REGION( 0x8000, "audiocpu", 0 ) /* 32k for Z80 code */
ROM_REGION( 0x8000, "audiocpu", 0 ) // 32k for Z80 code
ROM_LOAD( "b87-07.13e", 0x00000, 0x8000, CRC(e2e0efa0) SHA1(4f1435ba738895996f26a64c2237e8349337df4a) )
ROM_REGION( 0x200000, "gfx1", 0 )
ROM_LOAD32_WORD_SWAP( "b87-02.3h", 0x000002, 0x80000, CRC(89ad43a0) SHA1(6ff6ee085c1c06a05f4f8743d979d3552b7475a0) ) /* Plane 0, 1 */
ROM_LOAD32_WORD_SWAP( "b87-02.3h", 0x000002, 0x80000, CRC(89ad43a0) SHA1(6ff6ee085c1c06a05f4f8743d979d3552b7475a0) ) // Plane 0, 1
ROM_LOAD32_WORD_SWAP( "b87-01.3f", 0x100002, 0x80000, CRC(81e82ae1) SHA1(d4dbdbf9ae0af69bbeccafb3cc2f67dadda72432) )
ROM_LOAD32_WORD_SWAP( "b87-04.3k", 0x000000, 0x80000, CRC(958434b6) SHA1(cf5912c4468cb2079ff180203045a436175c037c) ) /* Plane 2, 3 */
ROM_LOAD32_WORD_SWAP( "b87-04.3k", 0x000000, 0x80000, CRC(958434b6) SHA1(cf5912c4468cb2079ff180203045a436175c037c) ) // Plane 2, 3
ROM_LOAD32_WORD_SWAP( "b87-03.3j", 0x100000, 0x80000, CRC(ce155ae0) SHA1(7293125fc23f2411c4edd427a2576c145b3f2dd4) )
ROM_END
ROM_START( twinhawku )
ROM_REGION( 0x40000, "maincpu", 0 ) /* 256k for 68000 code */
ROM_REGION( 0x40000, "maincpu", 0 ) // 256k for 68000 code
ROM_LOAD16_BYTE( "b87-09.u7", 0x00000, 0x20000, CRC(7e6267c7) SHA1(a623c1b740008675f36e8b63bbc17a573917db30) )
ROM_LOAD16_BYTE( "b87-08.u5", 0x00001, 0x20000, CRC(31d9916f) SHA1(8ae491a51a4095717c6f65fe81a83902feccd54b) )
ROM_REGION( 0x8000, "audiocpu", 0 ) /* 32k for Z80 code */
ROM_REGION( 0x8000, "audiocpu", 0 ) // 32k for Z80 code
ROM_LOAD( "b87-07.13e", 0x00000, 0x8000, CRC(e2e0efa0) SHA1(4f1435ba738895996f26a64c2237e8349337df4a) )
ROM_REGION( 0x200000, "gfx1", 0 )
ROM_LOAD32_WORD_SWAP( "b87-02.3h", 0x000002, 0x80000, CRC(89ad43a0) SHA1(6ff6ee085c1c06a05f4f8743d979d3552b7475a0) ) /* Plane 0, 1 */
ROM_LOAD32_WORD_SWAP( "b87-02.3h", 0x000002, 0x80000, CRC(89ad43a0) SHA1(6ff6ee085c1c06a05f4f8743d979d3552b7475a0) ) // Plane 0, 1
ROM_LOAD32_WORD_SWAP( "b87-01.3f", 0x100002, 0x80000, CRC(81e82ae1) SHA1(d4dbdbf9ae0af69bbeccafb3cc2f67dadda72432) )
ROM_LOAD32_WORD_SWAP( "b87-04.3k", 0x000000, 0x80000, CRC(958434b6) SHA1(cf5912c4468cb2079ff180203045a436175c037c) ) /* Plane 2, 3 */
ROM_LOAD32_WORD_SWAP( "b87-04.3k", 0x000000, 0x80000, CRC(958434b6) SHA1(cf5912c4468cb2079ff180203045a436175c037c) ) // Plane 2, 3
ROM_LOAD32_WORD_SWAP( "b87-03.3j", 0x100000, 0x80000, CRC(ce155ae0) SHA1(7293125fc23f2411c4edd427a2576c145b3f2dd4) )
ROM_END
ROM_START( daisenpu )
ROM_REGION( 0x40000, "maincpu", 0 ) /* 256k for 68000 code */
ROM_REGION( 0x40000, "maincpu", 0 ) // 256k for 68000 code
ROM_LOAD16_BYTE( "b87-06.u7", 0x00000, 0x20000, CRC(cf236100) SHA1(7944a20950188f64c0a09edd1a4efe0270264b27) )
ROM_LOAD16_BYTE( "b87-05.u5", 0x00001, 0x20000, CRC(7f15edc7) SHA1(3deba512f3c97f354ed4155f62058da160047bc5) )
ROM_REGION( 0x8000, "audiocpu", 0 ) /* 32k for Z80 code */
ROM_REGION( 0x8000, "audiocpu", 0 ) // 32k for Z80 code
ROM_LOAD( "b87-07.13e", 0x00000, 0x8000, CRC(e2e0efa0) SHA1(4f1435ba738895996f26a64c2237e8349337df4a) )
ROM_REGION( 0x200000, "gfx1", 0 )
ROM_LOAD32_WORD_SWAP( "b87-02.3h", 0x000002, 0x80000, CRC(89ad43a0) SHA1(6ff6ee085c1c06a05f4f8743d979d3552b7475a0) ) /* Plane 0, 1 */
ROM_LOAD32_WORD_SWAP( "b87-02.3h", 0x000002, 0x80000, CRC(89ad43a0) SHA1(6ff6ee085c1c06a05f4f8743d979d3552b7475a0) ) // Plane 0, 1
ROM_LOAD32_WORD_SWAP( "b87-01.3f", 0x100002, 0x80000, CRC(81e82ae1) SHA1(d4dbdbf9ae0af69bbeccafb3cc2f67dadda72432) )
ROM_LOAD32_WORD_SWAP( "b87-04.3k", 0x000000, 0x80000, CRC(958434b6) SHA1(cf5912c4468cb2079ff180203045a436175c037c) ) /* Plane 2, 3 */
ROM_LOAD32_WORD_SWAP( "b87-04.3k", 0x000000, 0x80000, CRC(958434b6) SHA1(cf5912c4468cb2079ff180203045a436175c037c) ) // Plane 2, 3
ROM_LOAD32_WORD_SWAP( "b87-03.3j", 0x100000, 0x80000, CRC(ce155ae0) SHA1(7293125fc23f2411c4edd427a2576c145b3f2dd4) )
ROM_END
ROM_START( gigandes )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
ROM_LOAD16_BYTE( "east_1.10a", 0x00000, 0x20000, CRC(ae74e4e5) SHA1(1cac0a0e591b63142d8d249c67f803256fb28c2a) ) /* 'fixed' test mode, see notes above */
ROM_LOAD16_BYTE( "east_3.5a", 0x00001, 0x20000, CRC(8bcf2116) SHA1(9255d7e0ab568ad7a894421d3260fa80b8a0a5d0) ) /* 'fixed' test mode, see notes above */
ROM_REGION( 0x80000, "maincpu", 0 ) // 512k for 68000 code
ROM_LOAD16_BYTE( "east_1.10a", 0x00000, 0x20000, CRC(ae74e4e5) SHA1(1cac0a0e591b63142d8d249c67f803256fb28c2a) ) // 'fixed' test mode, see notes above
ROM_LOAD16_BYTE( "east_3.5a", 0x00001, 0x20000, CRC(8bcf2116) SHA1(9255d7e0ab568ad7a894421d3260fa80b8a0a5d0) ) // 'fixed' test mode, see notes above
ROM_LOAD16_BYTE( "east_2.8a", 0x40000, 0x20000, CRC(dd94b4d0) SHA1(2efff9fd51b28fd1fb46d16b359f0991af91054e) )
ROM_LOAD16_BYTE( "east_4.3a", 0x40001, 0x20000, CRC(a647310a) SHA1(49db488a36f6c74729825bdf0214bcd30773eaf4) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for Z80 code */
ROM_REGION( 0x10000, "audiocpu", 0 ) // 64k for Z80 code
ROM_LOAD( "east_5.17d", 0x00000, 0x10000, CRC(b24ab5f4) SHA1(e4730df984e9686c538df5fc626b795bda1db939) )
ROM_REGION( 0x200000, "gfx1", 0 )
ROM_LOAD32_WORD_SWAP( "east_8.3f", 0x000002, 0x80000, CRC(75eece28) SHA1(7ce66cd8bca7dd214367beae067727c8735c0f7e) ) /* Plane 0, 1 */
ROM_LOAD32_WORD_SWAP( "east_8.3f", 0x000002, 0x80000, CRC(75eece28) SHA1(7ce66cd8bca7dd214367beae067727c8735c0f7e) ) // Plane 0, 1
ROM_LOAD32_WORD_SWAP( "east_7.3h", 0x100002, 0x80000, CRC(b179a76a) SHA1(cff2caf1eb0dda8a1b8283b9950b908b102f61de) )
ROM_LOAD32_WORD_SWAP( "east_9.3j", 0x000000, 0x80000, CRC(5c5e6898) SHA1(f348ac752a571902c55f36e21aa3fb9ef97528e3) ) /* Plane 2, 3 */
ROM_LOAD32_WORD_SWAP( "east_9.3j", 0x000000, 0x80000, CRC(5c5e6898) SHA1(f348ac752a571902c55f36e21aa3fb9ef97528e3) ) // Plane 2, 3
ROM_LOAD32_WORD_SWAP( "east_6.3k", 0x100000, 0x80000, CRC(52db30e9) SHA1(0b6d73f2c6e6c1ad5fcb2a9edf50069cd0691483) )
ROM_REGION( 0x80000, "ymsnd:adpcmb", 0 ) /* Delta-T samples */
ROM_REGION( 0x80000, "ymsnd:adpcmb", 0 ) // Delta-T samples
ROM_LOAD( "east-11.16f", 0x00000, 0x80000, CRC(92111f96) SHA1(e781f24761b7a923388f4cda64c7b31388fd64c5) )
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) /* ADPCM samples */
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) // ADPCM samples
ROM_LOAD( "east-10.16e", 0x00000, 0x80000, CRC(ca0ac419) SHA1(b29f30a8ff1286c65b741353b6551918a45bcafe) )
ROM_END
ROM_START( gigandesa )
ROM_REGION( 0x80000, "maincpu", 0 ) /* 512k for 68000 code */
ROM_LOAD16_BYTE( "east-1.10a", 0x00000, 0x20000, CRC(290c50e0) SHA1(ac8008619891a5b54ba2069e4e18836976532c99) ) /* 'buggy' test mode, see notes above */
ROM_LOAD16_BYTE( "east-3.5a", 0x00001, 0x20000, CRC(9cef82af) SHA1(6dad850de699d40dfba54bde6baca75bb0059c83) ) /* 'buggy' test mode, see notes above */
ROM_REGION( 0x80000, "maincpu", 0 ) // 512k for 68000 code
ROM_LOAD16_BYTE( "east-1.10a", 0x00000, 0x20000, CRC(290c50e0) SHA1(ac8008619891a5b54ba2069e4e18836976532c99) ) // 'buggy' test mode, see notes above
ROM_LOAD16_BYTE( "east-3.5a", 0x00001, 0x20000, CRC(9cef82af) SHA1(6dad850de699d40dfba54bde6baca75bb0059c83) ) // 'buggy' test mode, see notes above
ROM_LOAD16_BYTE( "east_2.8a", 0x40000, 0x20000, CRC(dd94b4d0) SHA1(2efff9fd51b28fd1fb46d16b359f0991af91054e) )
ROM_LOAD16_BYTE( "east_4.3a", 0x40001, 0x20000, CRC(a647310a) SHA1(49db488a36f6c74729825bdf0214bcd30773eaf4) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for Z80 code */
ROM_REGION( 0x10000, "audiocpu", 0 ) // 64k for Z80 code
ROM_LOAD( "east_5.17d", 0x00000, 0x10000, CRC(b24ab5f4) SHA1(e4730df984e9686c538df5fc626b795bda1db939) )
ROM_REGION( 0x200000, "gfx1", 0 )
ROM_LOAD32_WORD_SWAP( "east_8.3f", 0x000002, 0x80000, CRC(75eece28) SHA1(7ce66cd8bca7dd214367beae067727c8735c0f7e) ) /* Plane 0, 1 */
ROM_LOAD32_WORD_SWAP( "east_8.3f", 0x000002, 0x80000, CRC(75eece28) SHA1(7ce66cd8bca7dd214367beae067727c8735c0f7e) ) // Plane 0, 1
ROM_LOAD32_WORD_SWAP( "east_7.3h", 0x100002, 0x80000, CRC(b179a76a) SHA1(cff2caf1eb0dda8a1b8283b9950b908b102f61de) )
ROM_LOAD32_WORD_SWAP( "east_9.3j", 0x000000, 0x80000, CRC(5c5e6898) SHA1(f348ac752a571902c55f36e21aa3fb9ef97528e3) ) /* Plane 2, 3 */
ROM_LOAD32_WORD_SWAP( "east_9.3j", 0x000000, 0x80000, CRC(5c5e6898) SHA1(f348ac752a571902c55f36e21aa3fb9ef97528e3) ) // Plane 2, 3
ROM_LOAD32_WORD_SWAP( "east_6.3k", 0x100000, 0x80000, CRC(52db30e9) SHA1(0b6d73f2c6e6c1ad5fcb2a9edf50069cd0691483) )
ROM_REGION( 0x80000, "ymsnd:adpcmb", 0 ) /* Delta-T samples */
ROM_REGION( 0x80000, "ymsnd:adpcmb", 0 ) // Delta-T samples
ROM_LOAD( "east-11.16f", 0x00000, 0x80000, CRC(92111f96) SHA1(e781f24761b7a923388f4cda64c7b31388fd64c5) )
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) /* ADPCM samples */
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) // ADPCM samples
ROM_LOAD( "east-10.16e", 0x00000, 0x80000, CRC(ca0ac419) SHA1(b29f30a8ff1286c65b741353b6551918a45bcafe) )
ROM_END
ROM_START( kyustrkr )
ROM_REGION( 0x40000, "maincpu", 0 ) /* 512k for 68000 code */
ROM_REGION( 0x40000, "maincpu", 0 ) // 512k for 68000 code
ROM_LOAD16_BYTE( "pe.9a", 0x00000, 0x20000, CRC(082b5f96) SHA1(97c08b506b2a07d63f3323359b8564aa3621f483) )
ROM_LOAD16_BYTE( "po.4a", 0x00001, 0x20000, CRC(0100361e) SHA1(45791f697c86309c459d0d8c3d3e967a3ece3ede) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for Z80 code */
ROM_REGION( 0x10000, "audiocpu", 0 ) // 64k for Z80 code
ROM_LOAD( "ic.18d", 0x00000, 0x10000, CRC(92cfb788) SHA1(41cd5433584df05652bd0ce8c5a35dc38262d6f2) )
ROM_REGION( 0x80000, "gfx1", 0 )
@ -1245,42 +1302,44 @@ ROM_START( kyustrkr )
ROM_LOAD32_BYTE( "m-8-1.u5", 0x00001, 0x20000, CRC(9d95aad6) SHA1(3391b14196fea12223ab247d909791bc68fc8d56) )
ROM_LOAD32_BYTE( "m-8-0.u6", 0x00000, 0x20000, CRC(0dfb6ed3) SHA1(0937614c8f97040d0216363bfb2bc21161128a3c) )
ROM_REGION( 0x80000, "ymsnd:adpcmb", 0 ) /* Delta-T samples */
ROM_REGION( 0x80000, "ymsnd:adpcmb", 0 ) // Delta-T samples
ROM_LOAD( "m-8-5.u2", 0x00000, 0x20000, CRC(d9d90e0a) SHA1(1011548b4fb5f1a194c93ded512e74cda2c06ceb) )
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) /* ADPCM samples */
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) // ADPCM samples
ROM_LOAD( "m-8-4.u1", 0x00000, 0x20000, CRC(d3f6047a) SHA1(0db6d762bbe2d68cddf30e06125b904e1021b96d) )
ROM_END
ROM_START( ballbros )
ROM_REGION( 0x40000, "maincpu", 0 ) /* 256k for 68000 code */
ROM_REGION( 0x40000, "maincpu", 0 ) // 256k for 68000 code
ROM_LOAD16_BYTE( "10a", 0x00000, 0x20000, CRC(4af0e858) SHA1(817817169aee075d52411bdbe568514511760386) )
ROM_LOAD16_BYTE( "5a", 0x00001, 0x20000, CRC(0b983a69) SHA1(7be06761a19e1dc5d1404d1920797b406421e365) )
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for Z80 code */
ROM_REGION( 0x10000, "audiocpu", 0 ) // 64k for Z80 code
ROM_LOAD( "8d", 0x00000, 0x10000, CRC(d1c515af) SHA1(00451991b4c793487b156f9be2b2e4688325ff24) )
ROM_REGION( 0x080000, "gfx1", 0 )
ROM_LOAD32_BYTE( "3", 0x000003, 0x20000, CRC(ec3e0537) SHA1(51fe5c6ef007c188b2f51ad2225753d2b403e35a) ) /* Plane 0 */
ROM_LOAD32_BYTE( "2", 0x000002, 0x20000, CRC(bb441717) SHA1(205ae0aa3ded11766ae8f6fe7d08fefff17a9b73) ) /* Plane 1 */
ROM_LOAD32_BYTE( "1", 0x000001, 0x20000, CRC(8196d624) SHA1(c859e3b1d3b481f38cfe47576efc1dcdbe6cde28) ) /* Plane 2 */
ROM_LOAD32_BYTE( "0", 0x000000, 0x20000, CRC(1cc584e5) SHA1(18cf607fa06c095d088b80cea2a1e507d19c7126) ) /* Plane 3 */
ROM_LOAD32_BYTE( "3", 0x000003, 0x20000, CRC(ec3e0537) SHA1(51fe5c6ef007c188b2f51ad2225753d2b403e35a) ) // Plane 0
ROM_LOAD32_BYTE( "2", 0x000002, 0x20000, CRC(bb441717) SHA1(205ae0aa3ded11766ae8f6fe7d08fefff17a9b73) ) // Plane 1
ROM_LOAD32_BYTE( "1", 0x000001, 0x20000, CRC(8196d624) SHA1(c859e3b1d3b481f38cfe47576efc1dcdbe6cde28) ) // Plane 2
ROM_LOAD32_BYTE( "0", 0x000000, 0x20000, CRC(1cc584e5) SHA1(18cf607fa06c095d088b80cea2a1e507d19c7126) ) // Plane 3
ROM_REGION( 0x80000, "ymsnd:adpcmb", 0 ) /* Delta-T samples */
ROM_REGION( 0x80000, "ymsnd:adpcmb", 0 ) // Delta-T samples
ROM_LOAD( "east-11", 0x00000, 0x80000, CRC(92111f96) SHA1(e781f24761b7a923388f4cda64c7b31388fd64c5) )
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) /* ADPCM samples */
ROM_REGION( 0x80000, "ymsnd:adpcma", 0 ) // ADPCM samples
ROM_LOAD( "east-10", 0x00000, 0x80000, CRC(ca0ac419) SHA1(b29f30a8ff1286c65b741353b6551918a45bcafe) )
ROM_END
} // Anonymous namespace
GAME( 1988, superman, 0, superman, superman, taitox_state, empty_init, ROT0, "Taito Corporation", "Superman (World)", 0 )
GAME( 1988, supermanu, superman, superman, supermanu, taitox_state, empty_init, ROT0, "Taito Corporation", "Superman (US)", 0 )
GAME( 1988, supermanj, superman, superman, supermanj, taitox_state, empty_init, ROT0, "Taito Corporation", "Superman (Japan)", 0 )
GAME( 1989, twinhawk, 0, daisenpu, twinhawk, taitox_state, empty_init, ROT270, "Taito Corporation Japan", "Twin Hawk (World)", 0 )
GAME( 1989, twinhawku, twinhawk, daisenpu, twinhawku, taitox_state, empty_init, ROT270, "Taito America Corporation", "Twin Hawk (US)", 0 )
GAME( 1989, daisenpu, twinhawk, daisenpu, daisenpu, taitox_state, empty_init, ROT270, "Taito Corporation", "Daisenpu (Japan)", 0 )
GAME( 1989, gigandes, 0, gigandes, gigandes, taitox_state, empty_init, ROT0, "East Technology", "Gigandes", 0 )
GAME( 1989, gigandesa, gigandes, gigandes, gigandes, taitox_state, empty_init, ROT0, "East Technology", "Gigandes (earlier)", 0 )
GAME( 1989, kyustrkr, 0, kyustrkr, kyustrkr, taitox_state, empty_init, ROT180, "East Technology", "Last Striker / Kyuukyoku no Striker", 0 )
GAME( 1992, ballbros, 0, ballbros, ballbros, taitox_state, empty_init, ROT0, "East Technology", "Balloon Brothers", 0 )
GAME( 1988, superman, 0, superman, superman, taitox_cchip_state, empty_init, ROT0, "Taito Corporation", "Superman (World)", MACHINE_SUPPORTS_SAVE )
GAME( 1988, supermanu, superman, superman, supermanu, taitox_cchip_state, empty_init, ROT0, "Taito Corporation", "Superman (US)", MACHINE_SUPPORTS_SAVE )
GAME( 1988, supermanj, superman, superman, supermanj, taitox_cchip_state, empty_init, ROT0, "Taito Corporation", "Superman (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, twinhawk, 0, daisenpu, twinhawk, taitox_state, empty_init, ROT270, "Taito Corporation Japan", "Twin Hawk (World)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, twinhawku, twinhawk, daisenpu, twinhawku, taitox_state, empty_init, ROT270, "Taito America Corporation", "Twin Hawk (US)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, daisenpu, twinhawk, daisenpu, daisenpu, taitox_state, empty_init, ROT270, "Taito Corporation", "Daisenpu (Japan)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, gigandes, 0, gigandes, gigandes, taitox_state, empty_init, ROT0, "East Technology", "Gigandes", MACHINE_SUPPORTS_SAVE )
GAME( 1989, gigandesa, gigandes, gigandes, gigandes, taitox_state, empty_init, ROT0, "East Technology", "Gigandes (earlier)", MACHINE_SUPPORTS_SAVE )
GAME( 1989, kyustrkr, 0, kyustrkr, kyustrkr, taitox_state, empty_init, ROT180, "East Technology", "Last Striker / Kyuukyoku no Striker", MACHINE_SUPPORTS_SAVE )
GAME( 1992, ballbros, 0, ballbros, ballbros, taitox_state, empty_init, ROT0, "East Technology", "Balloon Brothers", MACHINE_SUPPORTS_SAVE )

View File

@ -108,6 +108,8 @@ public:
u32 screen_update_seta_layers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
protected:
virtual void video_start() override;
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu;
required_device<seta001_device> m_seta001;
@ -162,8 +164,6 @@ protected:
void magspeed_lights_w(offs_t offset, u16 data, u16 mem_mask = ~0);
u16 extra_r();
DECLARE_VIDEO_START(seta);
void blandia_palette(palette_device &palette) const;
void zingzip_palette(palette_device &palette) const;
DECLARE_MACHINE_START(wrofaero);
@ -437,6 +437,10 @@ public:
DECLARE_WRITE_LINE_MEMBER(screen_vblank);
protected:
virtual void machine_start() override;
virtual void machine_reset() override;
private:
void rtc_w(u16 data);
u16 rtc_r(offs_t offset);
@ -454,9 +458,6 @@ private:
void spritectrl_w(offs_t offset, u16 data);
DECLARE_MACHINE_START(setaroul);
DECLARE_MACHINE_RESET(setaroul);
void setaroul_palette(palette_device &palette) const;
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);

View File

@ -1,61 +0,0 @@
// license:BSD-3-Clause
// copyright-holders:Howie Cohen, Yochizo
// thanks-to:Richard Bush
#ifndef MAME_INCLUDES_TAITO_X_H
#define MAME_INCLUDES_TAITO_X_H
#pragma once
#include "includes/seta.h"
#include "machine/taitocchip.h"
#include "machine/timer.h"
class taitox_state : public seta_state
{
public:
taitox_state(const machine_config &mconfig, device_type type, const char *tag) :
seta_state(mconfig, type, tag),
m_cchip(*this, "cchip"),
m_cchip_irq_clear(*this, "cchip_irq_clear"),
m_z80bank(*this, "z80bank"),
m_dswa_io(*this, "DSWA"),
m_dswb_io(*this, "DSWB"),
m_in_io(*this, "IN%u", 0U)
{ }
void superman(machine_config &config);
void ballbros(machine_config &config);
void kyustrkr(machine_config &config);
void gigandes(machine_config &config);
void daisenpu(machine_config &config);
private:
u16 superman_dsw_input_r(offs_t offset);
void superman_counters_w(u8 data);
u16 daisenpu_input_r(offs_t offset);
void daisenpu_input_w(offs_t offset, u16 data);
void kyustrkr_input_w(offs_t offset, u16 data);
void sound_bankswitch_w(u8 data);
DECLARE_MACHINE_START(taitox);
INTERRUPT_GEN_MEMBER(interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(cchip_irq_clear_cb);
void ballbros_map(address_map &map);
void daisenpu_map(address_map &map);
void daisenpu_sound_map(address_map &map);
void gigandes_map(address_map &map);
void kyustrkr_map(address_map &map);
void sound_map(address_map &map);
void superman_map(address_map &map);
void taito_x_base_map(address_map &map);
optional_device<taito_cchip_device> m_cchip;
optional_device<timer_device> m_cchip_irq_clear;
required_memory_bank m_z80bank;
optional_ioport m_dswa_io;
optional_ioport m_dswb_io;
optional_ioport_array<3> m_in_io;
};
#endif // MAME_INCLUDES_TAITO_X_H

View File

@ -42,8 +42,8 @@ Note: if MAME_DEBUG is defined, pressing Z with:
[ 1024 Sprites ]
Sprites are 16x16x4. They are just like those in "The Newzealand Story",
"Revenge of DOH" etc (tnzs.c). Obviously they're hooked to a 16 bit
Sprites are 16x16x4. They are just like those in "The NewZealand Story",
"Revenge of DOH" etc (tnzs.cpp). Obviously they're hooked to a 16 bit
CPU here, so they're mapped a bit differently in memory. Additionally,
there are two banks of sprites. The game can flip between the two to
do double buffering, writing to a bit of a control register(see below)
@ -247,7 +247,8 @@ u16 usclssic_state::tile_offset(u16 code)
VIDEO_START_MEMBER(seta_state,oisipuzl)
{
VIDEO_START_CALL_MEMBER(seta);
video_start();
m_tilemaps_flip = 1;
}
@ -259,7 +260,7 @@ SETA001_SPRITE_GFXBANK_CB_MEMBER(seta_state::setac_gfxbank_callback)
return code;
}
VIDEO_START_MEMBER(seta_state,seta)
void seta_state::video_start()
{
m_tilemaps_flip = 0;