mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
Allow YMF271 4 Channel Output, Move Imperfect_sound tags into ymf271.h (#3229)
* ymf271 : Allow 4 channel output, Add notes, Convert external memory handler to address space, Add notes, Move global imperfect_sound tags to device imperfect_features ms32, bnstars, seibuspi : Minor bankswitching cleanup, Add notes ms32 : Real mobo can output stereo sound (ex: http: //www.nicovideo.jp/watch/sm23743949) And mobo has a second stereo sound connector, Accurate this seibuspi : Single PCBs only output mono sound(sxx2e PCB : unverified), Accurate this * seibuspi : Fix unneeded * seibuspi.h : REAL remove unneeded * seibuspi.cpp : Remove duplicates * seibuspi.h : Minor cleanup
This commit is contained in:
parent
638f84f3db
commit
4457a26752
@ -13,7 +13,6 @@
|
||||
- Src B and Src NOTE bits
|
||||
- statusreg Busy flag
|
||||
- timer register 0x11
|
||||
- ch2/ch3 (4 speakers)
|
||||
- PFM (FM using external PCM waveform)
|
||||
- detune (should be same as on other Yamaha chips)
|
||||
- Acc On bit (some sound effects in viprp1?). The documentation says
|
||||
@ -25,6 +24,8 @@
|
||||
#include "emu.h"
|
||||
#include "ymf271.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#define STD_CLOCK (16934400)
|
||||
|
||||
#define MAXOUT (+32767)
|
||||
@ -452,7 +453,7 @@ void ymf271_device::update_pcm(int slotnum, int32_t *mixp, int length)
|
||||
int i;
|
||||
int64_t final_volume;
|
||||
int16_t sample;
|
||||
int64_t ch0_vol, ch1_vol; //, ch2_vol, ch3_vol;
|
||||
int64_t ch0_vol, ch1_vol, ch2_vol, ch3_vol;
|
||||
|
||||
YMF271Slot *slot = &m_slots[slotnum];
|
||||
|
||||
@ -490,15 +491,15 @@ void ymf271_device::update_pcm(int slotnum, int32_t *mixp, int length)
|
||||
if (slot->bits == 8)
|
||||
{
|
||||
// 8bit
|
||||
sample = ymf271_read_memory(slot->startaddr + (slot->stepptr>>16))<<8;
|
||||
sample = read_byte(slot->startaddr + (slot->stepptr>>16))<<8;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 12bit
|
||||
if (slot->stepptr & 0x10000)
|
||||
sample = ymf271_read_memory(slot->startaddr + (slot->stepptr>>17)*3 + 2)<<8 | ((ymf271_read_memory(slot->startaddr + (slot->stepptr>>17)*3 + 1) << 4) & 0xf0);
|
||||
sample = read_byte(slot->startaddr + (slot->stepptr>>17)*3 + 2)<<8 | ((read_byte(slot->startaddr + (slot->stepptr>>17)*3 + 1) << 4) & 0xf0);
|
||||
else
|
||||
sample = ymf271_read_memory(slot->startaddr + (slot->stepptr>>17)*3)<<8 | (ymf271_read_memory(slot->startaddr + (slot->stepptr>>17)*3 + 1) & 0xf0);
|
||||
sample = read_byte(slot->startaddr + (slot->stepptr>>17)*3)<<8 | (read_byte(slot->startaddr + (slot->stepptr>>17)*3 + 1) & 0xf0);
|
||||
}
|
||||
|
||||
update_envelope(slot);
|
||||
@ -508,14 +509,18 @@ void ymf271_device::update_pcm(int slotnum, int32_t *mixp, int length)
|
||||
|
||||
ch0_vol = (final_volume * m_lut_attenuation[slot->ch0_level]) >> 16;
|
||||
ch1_vol = (final_volume * m_lut_attenuation[slot->ch1_level]) >> 16;
|
||||
// ch2_vol = (final_volume * m_lut_attenuation[slot->ch2_level]) >> 16;
|
||||
// ch3_vol = (final_volume * m_lut_attenuation[slot->ch3_level]) >> 16;
|
||||
ch2_vol = (final_volume * m_lut_attenuation[slot->ch2_level]) >> 16;
|
||||
ch3_vol = (final_volume * m_lut_attenuation[slot->ch3_level]) >> 16;
|
||||
|
||||
if (ch0_vol > 65536) ch0_vol = 65536;
|
||||
if (ch1_vol > 65536) ch1_vol = 65536;
|
||||
|
||||
if (ch2_vol > 65536) ch2_vol = 65536;
|
||||
if (ch3_vol > 65536) ch3_vol = 65536;
|
||||
|
||||
*mixp++ += (sample * ch0_vol) >> 16;
|
||||
*mixp++ += (sample * ch1_vol) >> 16;
|
||||
*mixp++ += (sample * ch2_vol) >> 16;
|
||||
*mixp++ += (sample * ch3_vol) >> 16;
|
||||
|
||||
// go to next step
|
||||
slot->stepptr += slot->step;
|
||||
@ -567,12 +572,12 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
int op;
|
||||
int32_t *mixp;
|
||||
|
||||
memset(m_mix_buffer.get(), 0, sizeof(m_mix_buffer[0])*samples*2);
|
||||
std::fill(m_mix_buffer.begin(), m_mix_buffer.end(), 0);
|
||||
|
||||
for (j = 0; j < 12; j++)
|
||||
{
|
||||
YMF271Group *slot_group = &m_groups[j];
|
||||
mixp = m_mix_buffer.get();
|
||||
mixp = &m_mix_buffer[0];
|
||||
|
||||
if (slot_group->pfm && slot_group->sync != 3)
|
||||
{
|
||||
@ -590,7 +595,7 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
int slot2 = j + (1*12);
|
||||
int slot3 = j + (2*12);
|
||||
int slot4 = j + (3*12);
|
||||
mixp = m_mix_buffer.get();
|
||||
mixp = &m_mix_buffer[0];
|
||||
|
||||
if (m_slots[slot1].active)
|
||||
{
|
||||
@ -804,6 +809,14 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
(output2 * m_lut_attenuation[m_slots[slot2].ch1_level]) +
|
||||
(output3 * m_lut_attenuation[m_slots[slot3].ch1_level]) +
|
||||
(output4 * m_lut_attenuation[m_slots[slot4].ch1_level])) >> 16;
|
||||
*mixp++ += ((output1 * m_lut_attenuation[m_slots[slot1].ch2_level]) +
|
||||
(output2 * m_lut_attenuation[m_slots[slot2].ch2_level]) +
|
||||
(output3 * m_lut_attenuation[m_slots[slot3].ch2_level]) +
|
||||
(output4 * m_lut_attenuation[m_slots[slot4].ch2_level])) >> 16;
|
||||
*mixp++ += ((output1 * m_lut_attenuation[m_slots[slot1].ch3_level]) +
|
||||
(output2 * m_lut_attenuation[m_slots[slot2].ch3_level]) +
|
||||
(output3 * m_lut_attenuation[m_slots[slot3].ch3_level]) +
|
||||
(output4 * m_lut_attenuation[m_slots[slot4].ch3_level])) >> 16;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -817,7 +830,7 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
int slot1 = j + ((op + 0) * 12);
|
||||
int slot3 = j + ((op + 2) * 12);
|
||||
|
||||
mixp = m_mix_buffer.get();
|
||||
mixp = &m_mix_buffer[0];
|
||||
if (m_slots[slot1].active)
|
||||
{
|
||||
for (i = 0; i < samples; i++)
|
||||
@ -867,6 +880,10 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
(output3 * m_lut_attenuation[m_slots[slot3].ch0_level])) >> 16;
|
||||
*mixp++ += ((output1 * m_lut_attenuation[m_slots[slot1].ch1_level]) +
|
||||
(output3 * m_lut_attenuation[m_slots[slot3].ch1_level])) >> 16;
|
||||
*mixp++ += ((output1 * m_lut_attenuation[m_slots[slot1].ch2_level]) +
|
||||
(output3 * m_lut_attenuation[m_slots[slot3].ch2_level])) >> 16;
|
||||
*mixp++ += ((output1 * m_lut_attenuation[m_slots[slot1].ch3_level]) +
|
||||
(output3 * m_lut_attenuation[m_slots[slot3].ch3_level])) >> 16;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -879,7 +896,7 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
int slot1 = j + (0*12);
|
||||
int slot2 = j + (1*12);
|
||||
int slot3 = j + (2*12);
|
||||
mixp = m_mix_buffer.get();
|
||||
mixp = &m_mix_buffer[0];
|
||||
|
||||
if (m_slots[slot1].active)
|
||||
{
|
||||
@ -979,10 +996,16 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
*mixp++ += ((output1 * m_lut_attenuation[m_slots[slot1].ch1_level]) +
|
||||
(output2 * m_lut_attenuation[m_slots[slot2].ch1_level]) +
|
||||
(output3 * m_lut_attenuation[m_slots[slot3].ch1_level])) >> 16;
|
||||
*mixp++ += ((output1 * m_lut_attenuation[m_slots[slot1].ch2_level]) +
|
||||
(output2 * m_lut_attenuation[m_slots[slot2].ch2_level]) +
|
||||
(output3 * m_lut_attenuation[m_slots[slot3].ch2_level])) >> 16;
|
||||
*mixp++ += ((output1 * m_lut_attenuation[m_slots[slot1].ch3_level]) +
|
||||
(output2 * m_lut_attenuation[m_slots[slot2].ch3_level]) +
|
||||
(output3 * m_lut_attenuation[m_slots[slot3].ch3_level])) >> 16;
|
||||
}
|
||||
}
|
||||
|
||||
mixp = m_mix_buffer.get();
|
||||
mixp = &m_mix_buffer[0];
|
||||
update_pcm(j + (3*12), mixp, samples);
|
||||
break;
|
||||
}
|
||||
@ -999,11 +1022,13 @@ void ymf271_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
}
|
||||
}
|
||||
|
||||
mixp = m_mix_buffer.get();
|
||||
mixp = &m_mix_buffer[0];
|
||||
for (i = 0; i < samples; i++)
|
||||
{
|
||||
outputs[0][i] = (*mixp++)>>2;
|
||||
outputs[1][i] = (*mixp++)>>2;
|
||||
outputs[2][i] = (*mixp++)>>2;
|
||||
outputs[3][i] = (*mixp++)>>2;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1036,6 +1061,7 @@ void ymf271_device::write_register(int slotnum, int reg, uint8_t data)
|
||||
{
|
||||
if (slot->active)
|
||||
{
|
||||
//calculate_status_end(slotnum,true); status changes if keyoff? verify this from real hardware.
|
||||
slot->env_state = ENV_RELEASE;
|
||||
}
|
||||
}
|
||||
@ -1325,24 +1351,6 @@ void ymf271_device::device_timer(emu_timer &timer, device_timer_id id, int param
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t ymf271_device::ymf271_read_memory(uint32_t offset)
|
||||
{
|
||||
if (m_ext_read_handler.isnull())
|
||||
{
|
||||
if (offset < m_mem_size)
|
||||
return m_mem_base[offset];
|
||||
|
||||
/* 8MB chip limit (shouldn't happen) */
|
||||
else if (offset > 0x7fffff)
|
||||
return ymf271_read_memory(offset & 0x7fffff);
|
||||
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
return m_ext_read_handler(offset);
|
||||
}
|
||||
|
||||
void ymf271_device::ymf271_write_timer(uint8_t address, uint8_t data)
|
||||
{
|
||||
if ((address & 0xf0) == 0)
|
||||
@ -1433,8 +1441,8 @@ void ymf271_device::ymf271_write_timer(uint8_t address, uint8_t data)
|
||||
|
||||
case 0x17:
|
||||
m_ext_address = (m_ext_address + 1) & 0x7fffff;
|
||||
if (!m_ext_rw && !m_ext_write_handler.isnull())
|
||||
m_ext_write_handler(m_ext_address, data);
|
||||
if (!m_ext_rw)
|
||||
space(0).write_byte(m_ext_address, data);
|
||||
break;
|
||||
|
||||
case 0x20:
|
||||
@ -1513,7 +1521,7 @@ READ8_MEMBER( ymf271_device::read )
|
||||
|
||||
uint8_t ret = m_ext_readlatch;
|
||||
m_ext_address = (m_ext_address + 1) & 0x7fffff;
|
||||
m_ext_readlatch = ymf271_read_memory(m_ext_address);
|
||||
m_ext_readlatch = read_byte(m_ext_address);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -1721,6 +1729,7 @@ void ymf271_device::init_state()
|
||||
save_item(NAME(m_ext_address));
|
||||
save_item(NAME(m_ext_rw));
|
||||
save_item(NAME(m_ext_readlatch));
|
||||
save_item(NAME(m_master_clock));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -1732,18 +1741,14 @@ void ymf271_device::device_start()
|
||||
m_timA = timer_alloc(0);
|
||||
m_timB = timer_alloc(1);
|
||||
|
||||
m_mem_size = m_mem_base.bytes();
|
||||
|
||||
m_irq_handler.resolve();
|
||||
|
||||
m_ext_read_handler.resolve();
|
||||
m_ext_write_handler.resolve();
|
||||
|
||||
m_master_clock = clock();
|
||||
init_tables();
|
||||
init_state();
|
||||
|
||||
m_stream = machine().sound().stream_alloc(*this, 0, 2, clock()/384);
|
||||
m_mix_buffer = std::make_unique<int32_t[]>(44100*2);
|
||||
|
||||
m_mix_buffer.resize(m_master_clock/(384/4));
|
||||
m_stream = machine().sound().stream_alloc(*this, 0, 4, m_master_clock/384);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -1777,15 +1782,30 @@ void ymf271_device::device_reset()
|
||||
|
||||
void ymf271_device::device_clock_changed()
|
||||
{
|
||||
m_stream->set_sample_rate(clock() / 384);
|
||||
uint32_t old_clock = m_master_clock;
|
||||
m_master_clock = clock();
|
||||
|
||||
if (m_master_clock != old_clock)
|
||||
{
|
||||
if (old_clock < m_master_clock)
|
||||
m_mix_buffer.resize(m_master_clock/(384/4));
|
||||
|
||||
m_stream->set_sample_rate(m_master_clock / 384);
|
||||
}
|
||||
calculate_clock_correction();
|
||||
}
|
||||
|
||||
void ymf271_device::rom_bank_updated()
|
||||
{
|
||||
m_stream->update();
|
||||
}
|
||||
|
||||
DEFINE_DEVICE_TYPE(YMF271, ymf271_device, "ymf271", "Yamaha YMF271 OPX")
|
||||
|
||||
ymf271_device::ymf271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, YMF271, tag, owner, clock)
|
||||
, device_sound_interface(mconfig, *this)
|
||||
, device_rom_interface(mconfig, *this, 23)
|
||||
, m_timerA(0)
|
||||
, m_timerB(0)
|
||||
, m_irqstate(0)
|
||||
@ -1794,15 +1814,11 @@ ymf271_device::ymf271_device(const machine_config &mconfig, const char *tag, dev
|
||||
, m_ext_address(0)
|
||||
, m_ext_rw(0)
|
||||
, m_ext_readlatch(0)
|
||||
, m_mem_base(*this, DEVICE_SELF)
|
||||
, m_mem_size(0)
|
||||
, m_master_clock(0)
|
||||
, m_timA(nullptr)
|
||||
, m_timB(nullptr)
|
||||
, m_stream(nullptr)
|
||||
, m_mix_buffer(nullptr)
|
||||
, m_irq_handler(*this)
|
||||
, m_ext_read_handler(*this)
|
||||
, m_ext_write_handler(*this)
|
||||
{
|
||||
memset(m_slots, 0, sizeof(m_slots));
|
||||
memset(m_groups, 0, sizeof(m_groups));
|
||||
|
@ -9,21 +9,15 @@
|
||||
#define MCFG_YMF271_IRQ_HANDLER(_devcb) \
|
||||
devcb = &ymf271_device::set_irq_handler(*device, DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_YMF271_EXT_READ_HANDLER(_devcb) \
|
||||
devcb = &ymf271_device::set_ext_read_handler(*device, DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_YMF271_EXT_WRITE_HANDLER(_devcb) \
|
||||
devcb = &ymf271_device::set_ext_write_handler(*device, DEVCB_##_devcb);
|
||||
|
||||
class ymf271_device : public device_t, public device_sound_interface
|
||||
class ymf271_device : public device_t, public device_sound_interface, public device_rom_interface
|
||||
{
|
||||
public:
|
||||
static constexpr feature_type imperfect_features() { return feature::SOUND; }
|
||||
|
||||
ymf271_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
// static configuration helpers
|
||||
template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ymf271_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> static devcb_base &set_ext_read_handler(device_t &device, Object &&cb) { return downcast<ymf271_device &>(device).m_ext_read_handler.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> static devcb_base &set_ext_write_handler(device_t &device, Object &&cb) { return downcast<ymf271_device &>(device).m_ext_write_handler.set_callback(std::forward<Object>(cb)); }
|
||||
|
||||
DECLARE_READ8_MEMBER( read );
|
||||
DECLARE_WRITE8_MEMBER( write );
|
||||
@ -38,6 +32,9 @@ protected:
|
||||
// sound stream update overrides
|
||||
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
|
||||
|
||||
// device_rom_interface overrides
|
||||
virtual void rom_bank_updated() override;
|
||||
|
||||
private:
|
||||
struct YMF271Slot
|
||||
{
|
||||
@ -113,7 +110,6 @@ private:
|
||||
void ymf271_write_fm(int bank, uint8_t address, uint8_t data);
|
||||
void ymf271_write_pcm(uint8_t address, uint8_t data);
|
||||
void ymf271_write_timer(uint8_t address, uint8_t data);
|
||||
uint8_t ymf271_read_memory(uint32_t offset);
|
||||
|
||||
inline int get_keyscaled_rate(int rate, int keycode, int keyscale);
|
||||
inline int get_internal_keycode(int block, int fns);
|
||||
@ -149,17 +145,14 @@ private:
|
||||
uint8_t m_ext_rw;
|
||||
uint8_t m_ext_readlatch;
|
||||
|
||||
optional_region_ptr<uint8_t> m_mem_base;
|
||||
uint32_t m_mem_size;
|
||||
uint32_t m_master_clock;
|
||||
|
||||
emu_timer *m_timA;
|
||||
emu_timer *m_timB;
|
||||
sound_stream *m_stream;
|
||||
std::unique_ptr<int32_t[]> m_mix_buffer;
|
||||
std::vector<int32_t> m_mix_buffer;
|
||||
|
||||
devcb_write_line m_irq_handler;
|
||||
devcb_read8 m_ext_read_handler;
|
||||
devcb_write8 m_ext_write_handler;
|
||||
};
|
||||
|
||||
DECLARE_DEVICE_TYPE(YMF271, ymf271_device)
|
||||
|
@ -155,7 +155,6 @@ public:
|
||||
TILE_GET_INFO_MEMBER(get_ms32_bg1_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_ms32_roz0_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_ms32_roz1_tile_info);
|
||||
virtual void machine_reset() override;
|
||||
virtual void video_start() override;
|
||||
uint32_t screen_update_bnstars_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
uint32_t screen_update_bnstars_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
@ -797,17 +796,10 @@ ADDRESS_MAP_START(bnstars_state::bnstars_sound_map)
|
||||
AM_RANGE(0x3f70, 0x3f70) AM_WRITENOP // watchdog? banking? very noisy
|
||||
AM_RANGE(0x3f80, 0x3f80) AM_WRITE(ms32_snd_bank_w)
|
||||
AM_RANGE(0x4000, 0x7fff) AM_RAM
|
||||
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank4")
|
||||
AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank5")
|
||||
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank1")
|
||||
AM_RANGE(0xc000, 0xffff) AM_ROMBANK("z80bank2")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
void bnstars_state::machine_reset()
|
||||
{
|
||||
irq_init();
|
||||
membank("bank4")->set_entry(0);
|
||||
membank("bank5")->set_entry(1);
|
||||
}
|
||||
|
||||
|
||||
MACHINE_CONFIG_START(bnstars_state::bnstars)
|
||||
|
||||
@ -818,7 +810,7 @@ MACHINE_CONFIG_START(bnstars_state::bnstars)
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", bnstars_state, ms32_interrupt, "lscreen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 4000000)
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 4000000) // Unverified; it's possibly higher than 4MHz
|
||||
MCFG_CPU_PROGRAM_MAP(bnstars_sound_map)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(60000))
|
||||
@ -856,14 +848,19 @@ MACHINE_CONFIG_START(bnstars_state::bnstars)
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
|
||||
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI))
|
||||
|
||||
MCFG_SOUND_ADD("ymf1", YMF271, 16934400)
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
// MCFG_SOUND_ROUTE(2, "lspeaker", 1.0) Output 2/3 not used?
|
||||
// MCFG_SOUND_ROUTE(3, "rspeaker", 1.0)
|
||||
|
||||
MCFG_SOUND_ADD("ymf2", YMF271, 16934400)
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
// MCFG_SOUND_ROUTE(2, "lspeaker", 1.0) Output 2/3 not used?
|
||||
// MCFG_SOUND_ROUTE(3, "rspeaker", 1.0)
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -937,4 +934,4 @@ DRIVER_INIT_MEMBER(bnstars_state,bnstars)
|
||||
configure_banks();
|
||||
}
|
||||
|
||||
GAME( 1997, bnstars1, 0, bnstars, bnstars, bnstars_state, bnstars, ROT0, "Jaleco", "Vs. Janshi Brandnew Stars", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1997, bnstars1, 0, bnstars, bnstars, bnstars_state, bnstars, ROT0, "Jaleco", "Vs. Janshi Brandnew Stars", MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
@ -523,7 +523,6 @@ READ32_MEMBER(ms32_state::ms32_read_inputs3)
|
||||
WRITE32_MEMBER(ms32_state::ms32_sound_w)
|
||||
{
|
||||
m_soundlatch->write(space, 0, data & 0xff);
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
|
||||
|
||||
// give the Z80 time to respond
|
||||
m_maincpu->spin_until_time(attotime::from_usec(40));
|
||||
@ -1656,14 +1655,13 @@ TIMER_DEVICE_CALLBACK_MEMBER(ms32_state::ms32_interrupt)
|
||||
|
||||
READ8_MEMBER(ms32_state::latch_r)
|
||||
{
|
||||
m_audiocpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
|
||||
return m_soundlatch->read(space,0)^0xff;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ms32_state::ms32_snd_bank_w)
|
||||
{
|
||||
membank("bank4")->set_entry((data >> 0) & 0x0F);
|
||||
membank("bank5")->set_entry((data >> 4) & 0x0F);
|
||||
m_z80bank[0]->set_entry((data >> 0) & 0x0F);
|
||||
m_z80bank[1]->set_entry((data >> 4) & 0x0F);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(ms32_state::to_main_w)
|
||||
@ -1682,8 +1680,8 @@ ADDRESS_MAP_START(ms32_state::ms32_sound_map)
|
||||
AM_RANGE(0x3f70, 0x3f70) AM_WRITENOP // watchdog? banking? very noisy
|
||||
AM_RANGE(0x3f80, 0x3f80) AM_WRITE(ms32_snd_bank_w)
|
||||
AM_RANGE(0x4000, 0x7fff) AM_RAM
|
||||
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank4")
|
||||
AM_RANGE(0xc000, 0xffff) AM_ROMBANK("bank5")
|
||||
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank1")
|
||||
AM_RANGE(0xc000, 0xffff) AM_ROMBANK("z80bank2")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
@ -1691,8 +1689,9 @@ ADDRESS_MAP_END
|
||||
|
||||
void ms32_state::machine_reset()
|
||||
{
|
||||
membank("bank4")->set_entry(0);
|
||||
membank("bank5")->set_entry(1);
|
||||
for (int bank = 0; bank < 2; bank++)
|
||||
m_z80bank[bank]->set_entry(bank);
|
||||
|
||||
irq_init();
|
||||
}
|
||||
|
||||
@ -1707,7 +1706,7 @@ MACHINE_CONFIG_START(ms32_state::ms32)
|
||||
|
||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", ms32_state, ms32_interrupt, "screen", 0, 1)
|
||||
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 4000000)
|
||||
MCFG_CPU_ADD("audiocpu", Z80, 4000000) // Unverified; it's possibly higher than 4MHz
|
||||
MCFG_CPU_PROGRAM_MAP(ms32_sound_map)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(60000))
|
||||
@ -1726,12 +1725,16 @@ MACHINE_CONFIG_START(ms32_state::ms32)
|
||||
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
MCFG_GENERIC_LATCH_8_ADD("soundlatch")
|
||||
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", INPUT_LINE_NMI))
|
||||
|
||||
MCFG_SOUND_ADD("ymf", YMF271, 16934400)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
// MCFG_SOUND_ROUTE(2, "lspeaker", 1.0) Output 2/3 not used?
|
||||
// MCFG_SOUND_ROUTE(3, "rspeaker", 1.0)
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -2496,8 +2499,9 @@ ROM_END
|
||||
void ms32_state::configure_banks()
|
||||
{
|
||||
save_item(NAME(m_to_main));
|
||||
membank("bank4")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x4000, 0x4000);
|
||||
membank("bank5")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x4000, 0x4000);
|
||||
for (int bank = 0; bank < 2; bank++)
|
||||
m_z80bank[bank]->configure_entries(0, 16, memregion("audiocpu")->base() + 0x4000, 0x4000);
|
||||
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(ms32_state,ms32_common)
|
||||
@ -2570,22 +2574,22 @@ DRIVER_INIT_MEMBER(ms32_state,bnstars)
|
||||
|
||||
|
||||
|
||||
GAME( 1994, hayaosi2, 0, ms32, hayaosi2, ms32_state, ss92046_01, ROT0, "Jaleco", "Hayaoshi Quiz Grand Champion Taikai", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1994, hayaosi3, 0, ms32, hayaosi3, ms32_state, ss92046_01, ROT0, "Jaleco", "Hayaoshi Quiz Nettou Namahousou (ver 1.5)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1994, bbbxing, 0, ms32, bbbxing, ms32_state, ss92046_01, ROT0, "Jaleco", "Best Bout Boxing (ver 1.3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1994, suchie2, 0, ms32, suchie2, ms32_state, suchie2, ROT0, "Jaleco", "Idol Janshi Suchie-Pai II (ver 1.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1994, suchie2o, suchie2, ms32, suchie2, ms32_state, suchie2, ROT0, "Jaleco", "Idol Janshi Suchie-Pai II (ver 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, desertwr, 0, ms32, desertwr, ms32_state, ss91022_10, ROT270, "Jaleco", "Desert War / Wangan Sensou (ver 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, gametngk, 0, ms32, gametngk, ms32_state, ss91022_10, ROT270, "Jaleco", "The Game Paradise - Master of Shooting! / Game Tengoku - The Game Paradise (ver 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, tetrisp, 0, ms32, tetrisp, ms32_state, ss92046_01, ROT0, "Jaleco / BPS", "Tetris Plus (ver 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, p47aces, 0, ms32, p47aces, ms32_state, ss92048_01, ROT0, "Jaleco", "P-47 Aces", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, akiss, 0, ms32, suchie2, ms32_state, kirarast, ROT0, "Jaleco", "Mahjong Angel Kiss (ver 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1996, gratia, 0, ms32, gratia, ms32_state, ss92047_01, ROT0, "Jaleco", "Gratia - Second Earth (ver 1.0, 92047-01 version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1996, gratiaa, gratia, ms32, gratia, ms32_state, ss91022_10, ROT0, "Jaleco", "Gratia - Second Earth (ver 1.0, 91022-10 version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1996, kirarast, 0, ms32, kirarast, ms32_state, kirarast, ROT0, "Jaleco", "Ryuusei Janshi Kirara Star", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1997, tp2m32, tetrisp2, ms32, tp2m32, ms32_state, ss91022_10, ROT0, "Jaleco", "Tetris Plus 2 (ver 1.0, MegaSystem 32 Version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1997, bnstars, bnstars1, ms32, suchie2, ms32_state, bnstars, ROT0, "Jaleco", "Vs. Janshi Brandnew Stars (Ver 1.1, MegaSystem32 Version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1996, wpksocv2, 0, ms32, wpksocv2, ms32_state, ss92046_01, ROT0, "Jaleco", "World PK Soccer V2 (ver 1.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1994, hayaosi2, 0, ms32, hayaosi2, ms32_state, ss92046_01, ROT0, "Jaleco", "Hayaoshi Quiz Grand Champion Taikai", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1994, hayaosi3, 0, ms32, hayaosi3, ms32_state, ss92046_01, ROT0, "Jaleco", "Hayaoshi Quiz Nettou Namahousou (ver 1.5)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1994, bbbxing, 0, ms32, bbbxing, ms32_state, ss92046_01, ROT0, "Jaleco", "Best Bout Boxing (ver 1.3)", MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1994, suchie2, 0, ms32, suchie2, ms32_state, suchie2, ROT0, "Jaleco", "Idol Janshi Suchie-Pai II (ver 1.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1994, suchie2o, suchie2, ms32, suchie2, ms32_state, suchie2, ROT0, "Jaleco", "Idol Janshi Suchie-Pai II (ver 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, desertwr, 0, ms32, desertwr, ms32_state, ss91022_10, ROT270, "Jaleco", "Desert War / Wangan Sensou (ver 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, gametngk, 0, ms32, gametngk, ms32_state, ss91022_10, ROT270, "Jaleco", "The Game Paradise - Master of Shooting! / Game Tengoku - The Game Paradise (ver 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, tetrisp, 0, ms32, tetrisp, ms32_state, ss92046_01, ROT0, "Jaleco / BPS", "Tetris Plus (ver 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, p47aces, 0, ms32, p47aces, ms32_state, ss92048_01, ROT0, "Jaleco", "P-47 Aces", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1995, akiss, 0, ms32, suchie2, ms32_state, kirarast, ROT0, "Jaleco", "Mahjong Angel Kiss (ver 1.0)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1996, gratia, 0, ms32, gratia, ms32_state, ss92047_01, ROT0, "Jaleco", "Gratia - Second Earth (ver 1.0, 92047-01 version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1996, gratiaa, gratia, ms32, gratia, ms32_state, ss91022_10, ROT0, "Jaleco", "Gratia - Second Earth (ver 1.0, 91022-10 version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1996, kirarast, 0, ms32, kirarast, ms32_state, kirarast, ROT0, "Jaleco", "Ryuusei Janshi Kirara Star", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1997, tp2m32, tetrisp2, ms32, tp2m32, ms32_state, ss91022_10, ROT0, "Jaleco", "Tetris Plus 2 (ver 1.0, MegaSystem 32 Version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1997, bnstars, bnstars1, ms32, suchie2, ms32_state, bnstars, ROT0, "Jaleco", "Vs. Janshi Brandnew Stars (Ver 1.1, MegaSystem32 Version)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1996, wpksocv2, 0, ms32, wpksocv2, ms32_state, ss92046_01, ROT0, "Jaleco", "World PK Soccer V2 (ver 1.1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
/* these boot and show something */
|
||||
GAME( 1994, f1superb, 0, f1superb, f1superb, ms32_state, f1superb, ROT0, "Jaleco", "F1 Super Battle", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -878,12 +878,9 @@ Notes:
|
||||
|
||||
#include "cpu/i386/i386.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/7200fifo.h"
|
||||
#include "machine/ds2404.h"
|
||||
#include "machine/eepromser.h"
|
||||
#include "machine/intelfsh.h"
|
||||
#include "machine/seibuspi.h"
|
||||
#include "sound/okim6295.h"
|
||||
#include "sound/ymf271.h"
|
||||
#include "sound/ymz280b.h"
|
||||
#include "video/seibu_crtc.h"
|
||||
@ -914,8 +911,8 @@ READ8_MEMBER(seibuspi_state::sound_fifo_status_r)
|
||||
// d0: fifo full flag (z80)
|
||||
// d1: fifo empty flag (main)
|
||||
// other bits: unused?
|
||||
int d1 = (m_soundfifo2 != nullptr) ? m_soundfifo2->ef_r() << 1 : 0;
|
||||
return d1 | m_soundfifo1->ff_r();
|
||||
int d1 = (m_soundfifo[1] != nullptr) ? m_soundfifo[1]->ef_r() << 1 : 0;
|
||||
return d1 | m_soundfifo[0]->ff_r();
|
||||
}
|
||||
|
||||
READ8_MEMBER(seibuspi_state::spi_status_r)
|
||||
@ -949,7 +946,7 @@ WRITE8_MEMBER(seibuspi_state::spi_layerbanks_eeprom_w)
|
||||
|
||||
WRITE8_MEMBER(seibuspi_state::oki_bank_w)
|
||||
{
|
||||
m_oki2->set_rom_bank((data >> 2) & 1);
|
||||
m_oki[1]->set_rom_bank((data >> 2) & 1);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(seibuspi_state::z80_prg_transfer_w)
|
||||
@ -1123,8 +1120,8 @@ READ8_MEMBER(seibuspi_state::z80_soundfifo_status_r)
|
||||
// d0: fifo full flag (main)
|
||||
// d1: fifo empty flag (z80)
|
||||
// other bits: unused?
|
||||
int d0 = (m_soundfifo2 != nullptr) ? m_soundfifo2->ff_r() : 0;
|
||||
return d0 | m_soundfifo1->ef_r() << 1;
|
||||
int d0 = (m_soundfifo[1] != nullptr) ? m_soundfifo[1]->ff_r() : 0;
|
||||
return d0 | m_soundfifo[0]->ef_r() << 1;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(seibuspi_state::z80_bank_w)
|
||||
@ -1135,7 +1132,7 @@ WRITE8_MEMBER(seibuspi_state::z80_bank_w)
|
||||
if (bank != m_z80_lastbank)
|
||||
{
|
||||
m_z80_lastbank = bank;
|
||||
membank("bank1")->set_entry(bank);
|
||||
m_z80_bank->set_entry(bank);
|
||||
}
|
||||
|
||||
// d3: watchdog?
|
||||
@ -1167,7 +1164,7 @@ ADDRESS_MAP_START(seibuspi_state::sxx2e_soundmap)
|
||||
AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN")
|
||||
AM_RANGE(0x401b, 0x401b) AM_WRITE(z80_bank_w)
|
||||
AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("ymf", ymf271_device, read, write)
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
|
||||
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("z80_bank")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
ADDRESS_MAP_START(seibuspi_state::spi_soundmap)
|
||||
@ -1176,27 +1173,15 @@ ADDRESS_MAP_START(seibuspi_state::spi_soundmap)
|
||||
AM_RANGE(0x400a, 0x400a) AM_READ_PORT("JUMPERS") // TO DO: get these to actually work
|
||||
ADDRESS_MAP_END
|
||||
|
||||
ADDRESS_MAP_START(seibuspi_state::spi_ymf271_map)
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x1fffff)
|
||||
AM_RANGE(0x000000, 0x0fffff) AM_DEVREADWRITE("soundflash1", intel_e28f008sa_device, read, write)
|
||||
AM_RANGE(0x100000, 0x1fffff) AM_DEVREADWRITE("soundflash2", intel_e28f008sa_device, read, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
READ8_MEMBER(seibuspi_state::flashrom_read)
|
||||
{
|
||||
offset &= 0x1fffff;
|
||||
if (offset < 0x100000)
|
||||
return m_soundflash1->read(offset);
|
||||
else
|
||||
return m_soundflash2->read(offset & 0x0fffff);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(seibuspi_state::flashrom_write)
|
||||
{
|
||||
offset &= 0x1fffff;
|
||||
if (offset < 0x100000)
|
||||
m_soundflash1->write(offset, data);
|
||||
else
|
||||
m_soundflash2->write(offset & 0x0fffff, data);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(seibuspi_state::ymf_irqhandler)
|
||||
{
|
||||
if (state)
|
||||
@ -1829,7 +1814,7 @@ IRQ_CALLBACK_MEMBER(seibuspi_state::spi_irq_callback)
|
||||
void seibuspi_state::init_spi_common()
|
||||
{
|
||||
if (m_z80_rom != nullptr)
|
||||
membank("bank1")->configure_entries(0, 8, m_z80_rom->base(), 0x8000);
|
||||
m_z80_bank->configure_entries(0, 8, m_z80_rom->base(), 0x8000);
|
||||
}
|
||||
|
||||
void seibuspi_state::init_sei252()
|
||||
@ -1858,7 +1843,7 @@ MACHINE_RESET_MEMBER(seibuspi_state,spi)
|
||||
{
|
||||
m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
|
||||
|
||||
membank("bank1")->set_entry(0);
|
||||
m_z80_bank->set_entry(0);
|
||||
m_z80_lastbank = 0;
|
||||
m_z80_prg_transfer_pos = 0;
|
||||
}
|
||||
@ -1906,11 +1891,12 @@ MACHINE_CONFIG_START(seibuspi_state::spi)
|
||||
|
||||
MCFG_SOUND_ADD("ymf", YMF271, XTAL(16'934'400))
|
||||
MCFG_YMF271_IRQ_HANDLER(WRITELINE(seibuspi_state, ymf_irqhandler))
|
||||
MCFG_YMF271_EXT_READ_HANDLER(READ8(seibuspi_state, flashrom_read))
|
||||
MCFG_YMF271_EXT_WRITE_HANDLER(WRITE8(seibuspi_state, flashrom_write))
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, spi_ymf271_map)
|
||||
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
// MCFG_SOUND_ROUTE(2, "lspeaker", 1.0) Output 2/3 not used?
|
||||
// MCFG_SOUND_ROUTE(3, "rspeaker", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(seibuspi_state::ejanhs)
|
||||
@ -1931,7 +1917,7 @@ MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_RESET_MEMBER(seibuspi_state,sxx2e)
|
||||
{
|
||||
membank("bank1")->set_entry(0);
|
||||
m_z80_bank->set_entry(0);
|
||||
m_z80_lastbank = 0;
|
||||
m_sb_coin_latch = 0;
|
||||
}
|
||||
@ -1952,13 +1938,17 @@ MACHINE_CONFIG_START(seibuspi_state::sxx2e)
|
||||
MCFG_DEVICE_REMOVE("soundflash2")
|
||||
|
||||
MCFG_DEVICE_REMOVE("soundfifo2")
|
||||
|
||||
|
||||
/* sound hardware */
|
||||
// Single PCBs only output mono sound, SXX2E : unverified
|
||||
MCFG_DEVICE_REMOVE("lspeaker")
|
||||
MCFG_DEVICE_REMOVE("rspeaker")
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_REPLACE("ymf", YMF271, XTAL(16'934'400))
|
||||
MCFG_YMF271_IRQ_HANDLER(WRITELINE(seibuspi_state, ymf_irqhandler))
|
||||
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
MACHINE_CONFIG_START(seibuspi_state::sxx2f)
|
||||
@ -1990,8 +1980,7 @@ MACHINE_CONFIG_START(seibuspi_state::sxx2g) // clocks differ, but otherwise same
|
||||
MCFG_SOUND_REPLACE("ymf", YMF271, XTAL(16'384'000)) // 16.384MHz(!)
|
||||
MCFG_YMF271_IRQ_HANDLER(WRITELINE(seibuspi_state, ymf_irqhandler))
|
||||
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
@ -2079,11 +2068,11 @@ MACHINE_CONFIG_START(seibuspi_state::sys386f)
|
||||
MCFG_VIDEO_START_OVERRIDE(seibuspi_state, sys386f)
|
||||
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
// Single PCBs only output mono sound
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL(16'384'000))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
@ -3998,68 +3987,68 @@ ROM_END
|
||||
/*****************************************************************************/
|
||||
|
||||
/* SPI */
|
||||
GAME( 1995, senkyu, 0, spi, spi_3button, seibuspi_state, senkyu, ROT0, "Seibu Kaihatsu", "Senkyu (Japan set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1995, senkyua, senkyu, spi, spi_3button, seibuspi_state, senkyua, ROT0, "Seibu Kaihatsu", "Senkyu (Japan set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1995, batlball, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Tuning license)", "Battle Balls (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1995, batlballu, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Fabtek license)", "Battle Balls (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1995, batlballa, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Hong Kong)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1995, batlballe, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Hong Kong, earlier)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1995, senkyu, 0, spi, spi_3button, seibuspi_state, senkyu, ROT0, "Seibu Kaihatsu", "Senkyu (Japan set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1995, senkyua, senkyu, spi, spi_3button, seibuspi_state, senkyua, ROT0, "Seibu Kaihatsu", "Senkyu (Japan set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1995, batlball, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Tuning license)", "Battle Balls (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1995, batlballu, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Fabtek license)", "Battle Balls (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1995, batlballa, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Hong Kong)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1995, batlballe, senkyu, spi, spi_3button, seibuspi_state, batlball, ROT0, "Seibu Kaihatsu (Metrotainment license)", "Battle Balls (Hong Kong, earlier)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1995, viprp1, 0, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1995, viprp1k, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu (Dream Island license)", "Viper Phase 1 (New Version, Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1995, viprp1u, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu (Fabtek license)", "Viper Phase 1 (New Version, US set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* New version, "=U.S.A=" seems part of title */
|
||||
GAME( 1995, viprp1ua, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu (Fabtek license)", "Viper Phase 1 (New Version, US set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* New version, "=U.S.A=" seems part of title */
|
||||
GAME( 1995, viprp1j, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1995, viprp1s, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Switzerland)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // counterintuitively this seems to be the oldest set of the game despite playing with the 'new version' rules, it has various typos not present in other sets eg. 'UPDATEING'
|
||||
GAME( 1995, viprp1h, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Holland)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // Code is the same as the above Switzerland set, just different region byte
|
||||
GAME( 1995, viprp1, 0, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, World)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1995, viprp1k, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu (Dream Island license)", "Viper Phase 1 (New Version, Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1995, viprp1u, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu (Fabtek license)", "Viper Phase 1 (New Version, US set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) /* New version, "=U.S.A=" seems part of title */
|
||||
GAME( 1995, viprp1ua, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu (Fabtek license)", "Viper Phase 1 (New Version, US set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) /* New version, "=U.S.A=" seems part of title */
|
||||
GAME( 1995, viprp1j, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1995, viprp1s, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Switzerland)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // counterintuitively this seems to be the oldest set of the game despite playing with the 'new version' rules, it has various typos not present in other sets eg. 'UPDATEING'
|
||||
GAME( 1995, viprp1h, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (New Version, Holland)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // Code is the same as the above Switzerland set, just different region byte
|
||||
|
||||
GAME( 1995, viprp1ot, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu (Tuning license)", "Viper Phase 1 (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1995, viprp1oj, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1995, viprp1hk, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Viper Phase 1 (Hong Kong)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) /* "=HONG KONG=" seems part of title */
|
||||
GAME( 1995, viprp1ot, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu (Tuning license)", "Viper Phase 1 (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1995, viprp1oj, viprp1, spi, spi_3button, seibuspi_state, viprp1o, ROT270, "Seibu Kaihatsu", "Viper Phase 1 (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1995, viprp1hk, viprp1, spi, spi_3button, seibuspi_state, viprp1, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Viper Phase 1 (Hong Kong)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) /* "=HONG KONG=" seems part of title */
|
||||
|
||||
GAME( 1996, ejanhs, 0, ejanhs, spi_ejanhs, seibuspi_state, ejanhs, ROT0, "Seibu Kaihatsu", "E Jong High School (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, ejanhs, 0, ejanhs, spi_ejanhs, seibuspi_state, ejanhs, ROT0, "Seibu Kaihatsu", "E Jong High School (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1996, rdft, 0, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdftj, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdftja, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdftjb, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdftu, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdftam, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters (Hong Kong)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdftadi, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdftau, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Australia)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdftauge, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters (Evaluation Software For Show, Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdftit, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdfta, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Austria)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdftgb, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Great Britain)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdft, 0, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1996, rdftj, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1996, rdftja, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1996, rdftjb, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Japan set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1996, rdftu, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1996, rdftam, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters (Hong Kong)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1996, rdftadi, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1996, rdftau, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Australia)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1996, rdftauge, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters (Evaluation Software For Show, Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1996, rdftit, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1996, rdfta, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Austria)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1996, rdftgb, rdft, spi, spi_3button, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu", "Raiden Fighters (Great Britain)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
// this is one revision
|
||||
GAME( 1997, rdft2, 0, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters 2 - Operation Hell Dive (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1997, rdft2j, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1997, rdft2a, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters 2 - Operation Hell Dive (Hong Kong)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1997, rdft2, 0, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters 2 - Operation Hell Dive (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1997, rdft2j, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 1)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1997, rdft2a, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Metrotainment license)", "Raiden Fighters 2 - Operation Hell Dive (Hong Kong)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
// this is another
|
||||
GAME( 1997, rdft2ja, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1997, rdft2aa, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters 2 - Operation Hell Dive (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1997, rdft2it, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1997, rdft2ja, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 2)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1997, rdft2aa, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters 2 - Operation Hell Dive (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1997, rdft2it, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Italy)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
// these are unique
|
||||
GAME( 1997, rdft2jb, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1997, rdft2t, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Taiwan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1997, rdft2u, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1997, rdft2jb, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Japan set 3)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1997, rdft2t, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive (Taiwan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1997, rdft2u, rdft2, rdft2, spi_2button, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
GAME( 1998, rfjet, 0, rdft2, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters Jet (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1998, rfjetu, rfjet, rdft2, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters Jet (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1998, rfjetj, rfjet, rdft2, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1998, rfjeta, rfjet, rdft2, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters Jet (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1998, rfjett, rfjet, rdft2, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Taiwan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1998, rfjet, 0, rdft2, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Tuning license)", "Raiden Fighters Jet (Germany)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1998, rfjetu, rfjet, rdft2, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters Jet (US)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1998, rfjetj, rfjet, rdft2, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Japan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1998, rfjeta, rfjet, rdft2, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu (Dream Island license)", "Raiden Fighters Jet (Korea)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
GAME( 1998, rfjett, rfjet, rdft2, spi_2button, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (Taiwan)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
/* SXX2E */
|
||||
GAME( 1996, rdfts, rdft, sxx2e, sxx2e, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Explorer System Corp. license)", "Raiden Fighters (Taiwan, single board)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
|
||||
GAME( 1996, rdfts, rdft, sxx2e, sxx2e, seibuspi_state, rdft, ROT270, "Seibu Kaihatsu (Explorer System Corp. license)", "Raiden Fighters (Taiwan, single board)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
||||
/* SXX2F */
|
||||
GAME( 1997, rdft2us, rdft2, sxx2f, sxx2f, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US, single board)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // title screen shows small '.1'
|
||||
GAME( 1997, rdft2us, rdft2, sxx2f, sxx2f, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu (Fabtek license)", "Raiden Fighters 2 - Operation Hell Dive (US, single board)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // title screen shows small '.1'
|
||||
|
||||
/* SXX2G */
|
||||
GAME( 1999, rfjets, rfjet, sxx2g, sxx2f, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (US, single board)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // has 1998-99 copyright + planes unlocked
|
||||
GAME( 1999, rfjetsa, rfjet, sxx2g, sxx2f, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (US, single board, test version?)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) // maybe test/proto? see notes at romdefs
|
||||
GAME( 1999, rfjets, rfjet, sxx2g, sxx2f, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (US, single board)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // has 1998-99 copyright + planes unlocked
|
||||
GAME( 1999, rfjetsa, rfjet, sxx2g, sxx2f, seibuspi_state, rfjet, ROT270, "Seibu Kaihatsu", "Raiden Fighters Jet (US, single board, test version?)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // maybe test/proto? see notes at romdefs
|
||||
|
||||
/* SYS386I */
|
||||
GAME( 2000, rdft22kc, rdft2, sys386i, sys386i, seibuspi_state, rdft2, ROT270, "Seibu Kaihatsu", "Raiden Fighters 2 - Operation Hell Dive 2000 (China, SYS386I)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS )
|
||||
|
@ -201,7 +201,9 @@ public:
|
||||
void segapcm_map(address_map &map);
|
||||
void soundchips16_map(address_map &map);
|
||||
void soundchips_map(address_map &map);
|
||||
void ymf271_map(address_map &map);
|
||||
void ymz280b_map(address_map &map);
|
||||
|
||||
private:
|
||||
std::vector<uint8_t> m_file_data;
|
||||
required_device<bitbanger_device> m_file;
|
||||
@ -1570,6 +1572,10 @@ ADDRESS_MAP_START(vgmplay_state::qsound_map)
|
||||
AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, qsound_rom_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
ADDRESS_MAP_START(vgmplay_state::ymf271_map)
|
||||
AM_RANGE(0, 0x7fffff) AM_DEVREAD("vgmplay", vgmplay_device, ymf271_rom_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
ADDRESS_MAP_START(vgmplay_state::ymz280b_map)
|
||||
AM_RANGE(0, 0xffffff) AM_DEVREAD("vgmplay", vgmplay_device, ymz280b_rom_r)
|
||||
ADDRESS_MAP_END
|
||||
@ -1705,7 +1711,7 @@ MACHINE_CONFIG_START(vgmplay_state::vgmplay)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
|
||||
|
||||
MCFG_SOUND_ADD("ymf271", YMF271, 16934400)
|
||||
MCFG_YMF271_EXT_READ_HANDLER(DEVREAD8("vgmplay", vgmplay_device, ymf271_rom_r))
|
||||
MCFG_DEVICE_ADDRESS_MAP(0, ymf271_map)
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1)
|
||||
|
||||
|
@ -10,6 +10,12 @@ class ms32_state : public driver_device
|
||||
public:
|
||||
ms32_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_soundlatch(*this, "soundlatch"),
|
||||
m_mainram(*this, "mainram"),
|
||||
m_roz_ctrl(*this, "roz_ctrl"),
|
||||
m_tx_scroll(*this, "tx_scroll"),
|
||||
@ -23,12 +29,14 @@ public:
|
||||
m_txram(*this, "txram", 32),
|
||||
m_bgram(*this, "bgram", 32),
|
||||
m_f1superb_extraram(*this, "f1sb_extraram", 32),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
m_soundlatch(*this, "soundlatch") { }
|
||||
m_z80bank(*this, "z80bank%u", 1) { }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
optional_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
optional_device<generic_latch_8_device> m_soundlatch;
|
||||
|
||||
optional_shared_ptr<uint32_t> m_mainram;
|
||||
optional_shared_ptr<uint32_t> m_roz_ctrl;
|
||||
@ -43,6 +51,8 @@ public:
|
||||
optional_shared_ptr<uint16_t> m_txram;
|
||||
optional_shared_ptr<uint16_t> m_bgram;
|
||||
optional_shared_ptr<uint16_t> m_f1superb_extraram;
|
||||
|
||||
optional_memory_bank_array<2> m_z80bank;
|
||||
std::unique_ptr<uint8_t[]> m_nvram_8;
|
||||
uint32_t m_to_main;
|
||||
uint16_t m_irqreq;
|
||||
@ -118,15 +128,9 @@ public:
|
||||
void draw_sprites(bitmap_ind16 &bitmap, bitmap_ind8 &bitmap_pri, const rectangle &cliprect, uint16_t *sprram_top, size_t sprram_size, int gfxnum, int reverseorder);
|
||||
void draw_roz(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect,int priority);
|
||||
void configure_banks();
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
optional_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
void ms32(machine_config &config);
|
||||
void f1superb(machine_config &config);
|
||||
void f1superb_map(address_map &map);
|
||||
void ms32_map(address_map &map);
|
||||
void ms32_sound_map(address_map &map);
|
||||
optional_device<generic_latch_8_device> m_soundlatch; //not for bnstars.cpp
|
||||
};
|
||||
|
@ -6,7 +6,6 @@
|
||||
|
||||
******************************************************************************/
|
||||
|
||||
#include "machine/intelfsh.h"
|
||||
#include "machine/eepromser.h"
|
||||
#include "machine/7200fifo.h"
|
||||
#include "sound/okim6295.h"
|
||||
@ -15,22 +14,19 @@ class seibuspi_state : public driver_device
|
||||
{
|
||||
public:
|
||||
seibuspi_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_mainram(*this, "mainram"),
|
||||
m_z80_rom(*this, "audiocpu"),
|
||||
m_eeprom(*this, "eeprom"),
|
||||
m_soundflash1(*this, "soundflash1"),
|
||||
m_soundflash2(*this, "soundflash2"),
|
||||
m_soundfifo1(*this, "soundfifo1"),
|
||||
m_soundfifo2(*this, "soundfifo2"),
|
||||
m_oki1(*this, "oki1"),
|
||||
m_oki2(*this, "oki2"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette"),
|
||||
m_key(*this, "KEY.%u", 0),
|
||||
m_special(*this, "SPECIAL")
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_audiocpu(*this, "audiocpu")
|
||||
, m_mainram(*this, "mainram")
|
||||
, m_z80_rom(*this, "audiocpu")
|
||||
, m_eeprom(*this, "eeprom")
|
||||
, m_soundfifo(*this, "soundfifo%u", 1)
|
||||
, m_oki(*this, "oki%u", 1)
|
||||
, m_gfxdecode(*this, "gfxdecode")
|
||||
, m_palette(*this, "palette")
|
||||
, m_key(*this, "KEY.%u", 0)
|
||||
, m_special(*this, "SPECIAL")
|
||||
, m_z80_bank(*this, "z80_bank")
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -38,18 +34,16 @@ public:
|
||||
required_shared_ptr<uint32_t> m_mainram;
|
||||
optional_memory_region m_z80_rom;
|
||||
optional_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||
optional_device<intel_e28f008sa_device> m_soundflash1;
|
||||
optional_device<intel_e28f008sa_device> m_soundflash2;
|
||||
optional_device<fifo7200_device> m_soundfifo1;
|
||||
optional_device<fifo7200_device> m_soundfifo2;
|
||||
optional_device<okim6295_device> m_oki1;
|
||||
optional_device<okim6295_device> m_oki2;
|
||||
optional_device_array<fifo7200_device, 2> m_soundfifo;
|
||||
optional_device_array<okim6295_device, 2> m_oki;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
optional_ioport_array<5> m_key;
|
||||
optional_ioport m_special;
|
||||
|
||||
optional_memory_bank m_z80_bank;
|
||||
|
||||
int m_z80_prg_transfer_pos;
|
||||
int m_z80_lastbank;
|
||||
uint8_t m_sb_coin_latch;
|
||||
@ -106,8 +100,6 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(eeprom_w);
|
||||
DECLARE_WRITE8_MEMBER(spi_layerbanks_eeprom_w);
|
||||
DECLARE_WRITE8_MEMBER(oki_bank_w);
|
||||
DECLARE_READ8_MEMBER(flashrom_read);
|
||||
DECLARE_WRITE8_MEMBER(flashrom_write);
|
||||
|
||||
DECLARE_READ32_MEMBER(senkyu_speedup_r);
|
||||
DECLARE_READ32_MEMBER(senkyua_speedup_r);
|
||||
@ -178,6 +170,7 @@ public:
|
||||
void sei252_map(address_map &map);
|
||||
void spi_map(address_map &map);
|
||||
void spi_soundmap(address_map &map);
|
||||
void spi_ymf271_map(address_map &map);
|
||||
void sxx2e_map(address_map &map);
|
||||
void sxx2e_soundmap(address_map &map);
|
||||
void sxx2f_map(address_map &map);
|
||||
|
Loading…
Reference in New Issue
Block a user