mirror of
https://github.com/holub/mame
synced 2025-06-29 23:48:56 +03:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
48a36e5241
@ -38,8 +38,8 @@
|
||||
<publisher>Texas Instruments</publisher>
|
||||
<part name="cart" interface="lantutor">
|
||||
<dataarea name="rom" size="0x10000">
|
||||
<!-- <rom name="cd2315.vsm" size="0x4000" crc="" sha1="" offset="0x0000" /> -->
|
||||
<!-- <rom name="cd2316.vsm" size="0x4000" crc="" sha1="" offset="0x4000" /> -->
|
||||
<!-- <rom name="cd2315.vsm" size="0x4000" crc="" sha1="" offset="0x0000" /> -->
|
||||
<!-- <rom name="cd2316.vsm" size="0x4000" crc="" sha1="" offset="0x4000" /> -->
|
||||
<rom name="cd2317.vsm" size="0x4000" crc="53231c0b" sha1="472117c3d0e28437fa8faa054f98088e06efc2a1" offset="0x8000" />
|
||||
<rom name="cd2318.vsm" size="0x4000" crc="6c0727bc" sha1="132e39755b122f2cbec6f3e767f5d256a9c1e7ae" offset="0xc000" />
|
||||
</dataarea>
|
||||
|
2
makefile
2
makefile
@ -931,7 +931,7 @@ $(EMULATOR): $(EMUINFOOBJ) $(DRIVLISTOBJ) $(DRVLIBS) $(LIBOSD) $(LIBBUS) $(LIBOP
|
||||
$(CC) $(CDEFS) $(CFLAGS) -c $(SRC)/version.c -o $(VERSIONOBJ)
|
||||
@echo Linking $@...
|
||||
ifeq ($(TARGETOS),emscripten)
|
||||
# Emscripten's linker seems to be stricter about the ordering of .a files
|
||||
# Emscripten's linker seems to be stricter about the ordering of .a files
|
||||
$(LD) $(LDFLAGS) $(LDFLAGSEMULATOR) $(VERSIONOBJ) -Wl,--start-group $^ -Wl,--end-group $(LIBS) -o $@
|
||||
else
|
||||
$(LD) $(LDFLAGS) $(LDFLAGSEMULATOR) $(VERSIONOBJ) $^ $(LIBS) -o $@
|
||||
|
@ -217,4 +217,3 @@ WRITE_LINE_MEMBER( device_a8sio_card_interface::motor_w )
|
||||
SLOT_INTERFACE_START(a8sio_cards)
|
||||
SLOT_INTERFACE("cassette", A8SIO_CASSETTE)
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
|
@ -115,4 +115,3 @@ void a8sio_cassette_device::device_timer(emu_timer &timer, device_timer_id id, i
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -105,9 +105,9 @@ UINT8 nes_vaus_device::read_bit34()
|
||||
UINT8 nes_vausfc_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (offset == 0) //$4016
|
||||
if (offset == 0) //$4016
|
||||
ret = m_button->read() << 1;
|
||||
else //$4017
|
||||
else //$4017
|
||||
{
|
||||
ret = (m_latch & 0x80) >> 6;
|
||||
m_latch <<= 1;
|
||||
|
@ -184,7 +184,7 @@ int nes_bcbattle_device::read_current_bit()
|
||||
UINT8 nes_bcbattle_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (offset == 1) //$4017
|
||||
if (offset == 1) //$4017
|
||||
{
|
||||
ret |= read_current_bit() << 2;
|
||||
}
|
||||
|
@ -168,7 +168,7 @@ SLOT_INTERFACE_START( nes_control_port1_devices )
|
||||
SLOT_INTERFACE("joypad", NES_JOYPAD)
|
||||
SLOT_INTERFACE("zapper", NES_ZAPPER)
|
||||
SLOT_INTERFACE("4score_p1p3", NES_4SCORE_P1P3)
|
||||
// SLOT_INTERFACE("miracle_piano", NES_MIRACLE)
|
||||
// SLOT_INTERFACE("miracle_piano", NES_MIRACLE)
|
||||
SLOT_INTERFACE_END
|
||||
|
||||
SLOT_INTERFACE_START( nes_control_port2_devices )
|
||||
|
@ -183,7 +183,7 @@ void nes_fckeybrd_device::device_reset()
|
||||
UINT8 nes_fckeybrd_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (offset == 0) //$4016
|
||||
if (offset == 0) //$4016
|
||||
{
|
||||
// FC Keyboard: tape input
|
||||
if ((m_cassette->get_state() & CASSETTE_MASK_UISTATE) == CASSETTE_PLAY)
|
||||
@ -195,7 +195,7 @@ UINT8 nes_fckeybrd_device::read_exp(offs_t offset)
|
||||
ret |= 0x02;
|
||||
}
|
||||
}
|
||||
else //$4017
|
||||
else //$4017
|
||||
{
|
||||
// FC Keyboard: rows of the keyboard matrix are read 4-bits at time and returned as bit1->bit4
|
||||
if (m_fck_scan < 9)
|
||||
|
@ -119,7 +119,7 @@ void nes_ftrainer_device::device_reset()
|
||||
UINT8 nes_ftrainer_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (offset == 1) //$4017
|
||||
if (offset == 1) //$4017
|
||||
{
|
||||
if (!BIT(m_row_scan, 0))
|
||||
{
|
||||
|
@ -117,9 +117,9 @@ nes_hori4p_device::nes_hori4p_device(const machine_config &mconfig, const char *
|
||||
UINT8 nes_horitwin_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (offset == 0) //$4016
|
||||
if (offset == 0) //$4016
|
||||
ret |= (m_port1->read_bit0() << 1);
|
||||
else //$4017
|
||||
else //$4017
|
||||
ret |= (m_port2->read_bit0() << 1);
|
||||
return ret;
|
||||
}
|
||||
@ -127,21 +127,21 @@ UINT8 nes_horitwin_device::read_exp(offs_t offset)
|
||||
UINT8 nes_hori4p_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (m_cfg->read() == 0) // 2P
|
||||
if (m_cfg->read() == 0) // 2P
|
||||
{
|
||||
if (offset == 0) //$4016
|
||||
if (offset == 0) //$4016
|
||||
ret |= (m_port1->read_bit0() << 1);
|
||||
else //$4017
|
||||
else //$4017
|
||||
ret |= (m_port2->read_bit0() << 1);
|
||||
}
|
||||
else // 4P
|
||||
else // 4P
|
||||
{
|
||||
if (offset == 0) //$4016
|
||||
if (offset == 0) //$4016
|
||||
{
|
||||
ret |= (m_port1->read_bit0() << 0);
|
||||
ret |= (m_port3->read_bit0() << 1);
|
||||
}
|
||||
else //$4017
|
||||
else //$4017
|
||||
{
|
||||
ret |= (m_port2->read_bit0() << 0);
|
||||
ret |= (m_port4->read_bit0() << 1);
|
||||
|
@ -103,14 +103,14 @@ static INPUT_PORTS_START( nes_arcstick )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("B")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SELECT )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x01)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x01)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x01)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x01)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x00)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x00)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x00)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x00)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x01)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x01)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x01)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x01)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_4WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x00)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_4WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x00)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_4WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x00)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_4WAY PORT_CONDITION("CONFIG", 0x01, EQUALS, 0x00)
|
||||
INPUT_PORTS_END
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -245,7 +245,7 @@ UINT8 nes_joypad_device::read_bit0()
|
||||
UINT8 nes_fcpad2_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (!offset) // microphone input
|
||||
if (!offset) // microphone input
|
||||
ret |= m_joypad->read() & 0x04;
|
||||
|
||||
return ret;
|
||||
@ -260,9 +260,9 @@ UINT8 nes_fcpad2_device::read_exp(offs_t offset)
|
||||
UINT8 nes_arcstick_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (offset == 0) //$4016
|
||||
if (offset == 0) //$4016
|
||||
{
|
||||
if ((m_cfg->read() & 2) == 0) // we are P1 input
|
||||
if ((m_cfg->read() & 2) == 0) // we are P1 input
|
||||
{
|
||||
ret |= (m_latch & 1) << 1;
|
||||
m_latch >>= 1;
|
||||
@ -270,9 +270,9 @@ UINT8 nes_arcstick_device::read_exp(offs_t offset)
|
||||
else
|
||||
ret |= m_daisychain->read_exp(0);
|
||||
}
|
||||
else //$4017
|
||||
else //$4017
|
||||
{
|
||||
if ((m_cfg->read() & 2) == 2) // we are P2 input
|
||||
if ((m_cfg->read() & 2) == 2) // we are P2 input
|
||||
{
|
||||
ret |= (m_latch & 1) << 1;
|
||||
m_latch >>= 1;
|
||||
@ -314,4 +314,3 @@ void nes_arcstick_device::write(UINT8 data)
|
||||
|
||||
m_latch = m_joypad->read();
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ void nes_konamihs_device::device_reset()
|
||||
UINT8 nes_konamihs_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (offset == 1) //$4017
|
||||
if (offset == 1) //$4017
|
||||
{
|
||||
ret |= m_latch_p1 << 1;
|
||||
ret |= m_latch_p2 << 3;
|
||||
|
@ -2,8 +2,7 @@
|
||||
|
||||
Nintendo Entertainment System - Miracle Piano Keyboard
|
||||
|
||||
TODO: basically everything, this is just a skeleton with no
|
||||
real MIDI handling at the moment.
|
||||
TODO: MIDI input, output is now working.
|
||||
|
||||
Copyright MESS Team.
|
||||
Visit http://mamedev.org for licensing and usage restrictions.
|
||||
@ -44,6 +43,10 @@ void nes_miracle_device::device_timer(emu_timer &timer, device_timer_id id, int
|
||||
{
|
||||
m_strobe_clock++;
|
||||
}
|
||||
else
|
||||
{
|
||||
device_serial_interface::device_timer(timer, id, param, ptr);
|
||||
}
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
@ -204,7 +207,6 @@ void nes_miracle_device::rcv_complete() // Rx completed receiving byte
|
||||
|
||||
void nes_miracle_device::tra_complete() // Tx completed sending byte
|
||||
{
|
||||
// printf("Tx complete\n");
|
||||
// is there more waiting to send?
|
||||
if (m_xmit_read != m_xmit_write)
|
||||
{
|
||||
@ -222,14 +224,14 @@ void nes_miracle_device::tra_complete() // Tx completed sending byte
|
||||
|
||||
void nes_miracle_device::tra_callback() // Tx send bit
|
||||
{
|
||||
UINT8 bit = transmit_register_get_data_bit();
|
||||
|
||||
// send this to midi out
|
||||
m_midiout->write_txd(transmit_register_get_data_bit());
|
||||
m_midiout->write_txd(bit);
|
||||
}
|
||||
|
||||
void nes_miracle_device::xmit_char(UINT8 data)
|
||||
{
|
||||
// printf("xmit %02x\n", data);
|
||||
|
||||
// if tx is busy it'll pick this up automatically when it completes
|
||||
// if not, send now!
|
||||
if (!m_tx_busy)
|
||||
|
@ -28,7 +28,7 @@ class nes_miracle_device : public device_t,
|
||||
public device_nes_control_port_interface
|
||||
{
|
||||
public:
|
||||
static const int XMIT_RING_SIZE = 16;
|
||||
static const int XMIT_RING_SIZE = 64;
|
||||
|
||||
// construction/destruction
|
||||
nes_miracle_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
@ -85,7 +85,7 @@ UINT8 nes_pachinko_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
// this controller behaves like a standard P3 joypad, with longer stream of inputs
|
||||
if (offset == 0) //$4016
|
||||
if (offset == 0) //$4016
|
||||
{
|
||||
ret |= (m_latch & 1) << 1;
|
||||
m_latch >>= 1;
|
||||
|
@ -81,7 +81,7 @@ void nes_partytap_device::device_reset()
|
||||
UINT8 nes_partytap_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (offset == 1) //$4017
|
||||
if (offset == 1) //$4017
|
||||
{
|
||||
ret |= m_latch & 0x1c;
|
||||
m_latch >>= 3;
|
||||
|
@ -198,7 +198,7 @@ void nes_suborkey_device::device_reset()
|
||||
UINT8 nes_suborkey_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (offset == 1) //$4017
|
||||
if (offset == 1) //$4017
|
||||
{
|
||||
// Subor Keyboard: rows of the keyboard matrix are read 4-bits at time and returned as bit1->bit4
|
||||
if (m_fck_scan < 13)
|
||||
|
@ -91,7 +91,7 @@ UINT8 nes_zapper_device::read_bit34()
|
||||
UINT8 nes_zapper_device::read_exp(offs_t offset)
|
||||
{
|
||||
UINT8 ret = 0;
|
||||
if (offset == 1) // $4017
|
||||
if (offset == 1) // $4017
|
||||
ret |= nes_zapper_device::read_bit34();
|
||||
return ret;
|
||||
}
|
||||
|
@ -36,27 +36,27 @@
|
||||
class media_identifier
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
media_identifier(cli_options &options);
|
||||
// construction/destruction
|
||||
media_identifier(cli_options &options);
|
||||
|
||||
// getters
|
||||
int total() const { return m_total; }
|
||||
int matches() const { return m_matches; }
|
||||
int nonroms() const { return m_nonroms; }
|
||||
// getters
|
||||
int total() const { return m_total; }
|
||||
int matches() const { return m_matches; }
|
||||
int nonroms() const { return m_nonroms; }
|
||||
|
||||
// operations
|
||||
void reset() { m_total = m_matches = m_nonroms = 0; }
|
||||
void identify(const char *name);
|
||||
void identify_file(const char *name);
|
||||
void identify_data(const char *name, const UINT8 *data, int length);
|
||||
int find_by_hash(const hash_collection &hashes, int length);
|
||||
// operations
|
||||
void reset() { m_total = m_matches = m_nonroms = 0; }
|
||||
void identify(const char *name);
|
||||
void identify_file(const char *name);
|
||||
void identify_data(const char *name, const UINT8 *data, int length);
|
||||
int find_by_hash(const hash_collection &hashes, int length);
|
||||
|
||||
private:
|
||||
// internal state
|
||||
driver_enumerator m_drivlist;
|
||||
int m_total;
|
||||
int m_matches;
|
||||
int m_nonroms;
|
||||
// internal state
|
||||
driver_enumerator m_drivlist;
|
||||
int m_total;
|
||||
int m_matches;
|
||||
int m_nonroms;
|
||||
};
|
||||
|
||||
|
||||
@ -1619,8 +1619,8 @@ void cli_frontend::execute_commands(const char *exename)
|
||||
}
|
||||
|
||||
if (!m_osd.execute_command(m_options.command()))
|
||||
// if we get here, we don't know what has been requested
|
||||
throw emu_fatalerror(MAMERR_INVALID_CONFIG, "Unknown command '%s' specified", m_options.command());
|
||||
// if we get here, we don't know what has been requested
|
||||
throw emu_fatalerror(MAMERR_INVALID_CONFIG, "Unknown command '%s' specified", m_options.command());
|
||||
}
|
||||
|
||||
|
||||
|
@ -60,6 +60,5 @@ const options_entry cli_options::s_option_entries[] =
|
||||
cli_options::cli_options()
|
||||
: emu_options()
|
||||
{
|
||||
add_entries(cli_options::s_option_entries);
|
||||
add_entries(cli_options::s_option_entries);
|
||||
}
|
||||
|
||||
|
@ -184,17 +184,17 @@ protected:
|
||||
ARCOMPACT_RETTYPE arcompact_handle04_1c(OPS_32);
|
||||
ARCOMPACT_RETTYPE arcompact_handle04_1d(OPS_32);
|
||||
// ARCOMPACT_RETTYPE arcompact_handle04_20(OPS_32);
|
||||
// ARCOMPACT_RETTYPE arcompact_handle04_21(OPS_32);
|
||||
// ARCOMPACT_RETTYPE arcompact_handle04_21(OPS_32);
|
||||
ARCOMPACT_RETTYPE arcompact_handle04_22(OPS_32);
|
||||
ARCOMPACT_RETTYPE arcompact_handle04_23(OPS_32);
|
||||
ARCOMPACT_RETTYPE arcompact_handle04_28(OPS_32);
|
||||
ARCOMPACT_RETTYPE arcompact_handle04_29(OPS_32);
|
||||
// ARCOMPACT_RETTYPE arcompact_handle04_2a(OPS_32);
|
||||
// ARCOMPACT_RETTYPE arcompact_handle04_2a(OPS_32);
|
||||
// ARCOMPACT_RETTYPE arcompact_handle04_2b(OPS_32);
|
||||
ARCOMPACT_RETTYPE arcompact_handle04_2f_00(OPS_32);
|
||||
ARCOMPACT_RETTYPE arcompact_handle04_2f_01(OPS_32);
|
||||
// ARCOMPACT_RETTYPE arcompact_handle04_2f_02(OPS_32);
|
||||
// ARCOMPACT_RETTYPE arcompact_handle04_2f_03(OPS_32);
|
||||
// ARCOMPACT_RETTYPE arcompact_handle04_2f_03(OPS_32);
|
||||
ARCOMPACT_RETTYPE arcompact_handle04_2f_04(OPS_32);
|
||||
ARCOMPACT_RETTYPE arcompact_handle04_2f_05(OPS_32);
|
||||
ARCOMPACT_RETTYPE arcompact_handle04_2f_06(OPS_32);
|
||||
|
@ -2142,7 +2142,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_21_p11_m0(OPS_32) // Jcc.
|
||||
size = 8;
|
||||
}
|
||||
|
||||
// c = limm;
|
||||
// c = limm;
|
||||
|
||||
}
|
||||
else
|
||||
@ -2151,7 +2151,7 @@ ARCOMPACT_RETTYPE arcompact_device::arcompact_handle04_21_p11_m0(OPS_32) // Jcc.
|
||||
// Jcc [c] 0010 0RRR 1110 0000 0RRR CCCC CC0Q QQQQ
|
||||
// no conditional links to ILINK1, ILINK2?
|
||||
|
||||
// c = m_regs[creg];
|
||||
// c = m_regs[creg];
|
||||
}
|
||||
|
||||
if (!check_condition(condition))
|
||||
|
@ -114,8 +114,14 @@ void h8_device::device_start()
|
||||
save_item(NAME(EXR));
|
||||
save_item(NAME(CCR));
|
||||
save_item(NAME(TMP1));
|
||||
save_item(NAME(TMP2));
|
||||
save_item(NAME(inst_state));
|
||||
save_item(NAME(inst_substate));
|
||||
save_item(NAME(irq_vector));
|
||||
save_item(NAME(taken_irq_vector));
|
||||
save_item(NAME(irq_level));
|
||||
save_item(NAME(taken_irq_level));
|
||||
save_item(NAME(irq_nmi));
|
||||
|
||||
m_icountptr = &icount;
|
||||
|
||||
|
@ -98,7 +98,7 @@ enum
|
||||
#define ALWAYS64 0x400
|
||||
#define SPECIAL64 0x800
|
||||
#define SPECIAL64_ENT(x) (SPECIAL64 | ((x) << 24))
|
||||
#define GROUP_MOD 0x1000
|
||||
#define GROUP_MOD 0x1000
|
||||
|
||||
struct I386_OPCODE {
|
||||
const char *mnemonic;
|
||||
@ -1953,7 +1953,7 @@ static const GROUP_OP group_op_table[] =
|
||||
{ "group0F0D", group0F0D_table },
|
||||
{ "group0F12", group0F12_table },
|
||||
{ "group0F16", group0F16_table },
|
||||
{ "group0F18", group0F18_table },
|
||||
{ "group0F18", group0F18_table },
|
||||
{ "group0F71", group0F71_table },
|
||||
{ "group0F72", group0F72_table },
|
||||
{ "group0F73", group0F73_table },
|
||||
|
@ -75,8 +75,8 @@ void m4510_device::device_reset()
|
||||
nomap = true;
|
||||
|
||||
// Wild guess, this setting makes the cpu start executing some code in the c65 driver
|
||||
map_offset[1] = 0x30000;
|
||||
map_enable = 0x80;
|
||||
//map_offset[1] = 0x2e000;
|
||||
//map_enable = 0x80;
|
||||
m65ce02_device::device_reset();
|
||||
}
|
||||
|
||||
|
@ -579,7 +579,7 @@ offs_t m6502_device::disassemble_generic(char *buffer, offs_t pc, const UINT8 *o
|
||||
break;
|
||||
|
||||
case DASM_rw2:
|
||||
sprintf(buffer, " $%04x", (pc & 0xf0000) | UINT16(pc + 3 + INT16((opram[2] << 8) | opram[1])));
|
||||
sprintf(buffer, " $%04x", (pc & 0xf0000) | UINT16(pc + 2 + INT16((opram[2] << 8) | opram[1])));
|
||||
flags |= 3;
|
||||
break;
|
||||
|
||||
|
@ -220,8 +220,8 @@ protected:
|
||||
|
||||
// inline helpers
|
||||
static inline bool page_changing(UINT16 base, int delta) { return ((base + delta) ^ base) & 0xff00; }
|
||||
static inline UINT16 set_l(UINT16 base, UINT8 val) { return (base & 0xff00) | val; }
|
||||
static inline UINT16 set_h(UINT16 base, UINT8 val) { return (base & 0x00ff) | (val << 8); }
|
||||
static inline UINT16 set_l(UINT16 base, UINT16 val) { return (base & 0xff00) | val; }
|
||||
static inline UINT16 set_h(UINT16 base, UINT16 val) { return (base & 0x00ff) | (val << 8); }
|
||||
|
||||
inline void dec_SP() { SP = set_l(SP, SP-1); }
|
||||
inline void inc_SP() { SP = set_l(SP, SP+1); }
|
||||
|
@ -9,4 +9,13 @@ map_imp
|
||||
map_offset[0] = (A<<8) | ((X & 0xf) << 16);
|
||||
map_offset[1] = (Y<<8) | ((Z & 0xf) << 16);
|
||||
map_enable = ((X & 0xf0) >> 4) | (Z & 0xf0);
|
||||
logerror("MAP execute\n");
|
||||
logerror("0x0000 - 0x1fff = %08x\n",map_enable & 1 ? map_offset[0]+0x0000 : 0x0000);
|
||||
logerror("0x2000 - 0x3fff = %08x\n",map_enable & 2 ? map_offset[0]+0x2000 : 0x2000);
|
||||
logerror("0x4000 - 0x5fff = %08x\n",map_enable & 4 ? map_offset[0]+0x4000 : 0x4000);
|
||||
logerror("0x6000 - 0x7fff = %08x\n",map_enable & 8 ? map_offset[0]+0x6000 : 0x6000);
|
||||
logerror("0x8000 - 0x9fff = %08x\n",map_enable & 16 ? map_offset[1]+0x8000 : 0x8000);
|
||||
logerror("0xa000 - 0xbfff = %08x\n",map_enable & 32 ? map_offset[1]+0xa000 : 0xa000);
|
||||
logerror("0xc000 - 0xdfff = %08x\n",map_enable & 64 ? map_offset[1]+0xc000 : 0xc000);
|
||||
logerror("0xe000 - 0xffff = %08x\n",map_enable & 128 ? map_offset[1]+0xe000 : 0xe000);
|
||||
prefetch();
|
||||
|
@ -245,7 +245,7 @@ bcc_rw2
|
||||
TMP = read_pc();
|
||||
TMP = set_h(TMP, read_pc());
|
||||
if(!(P & F_C))
|
||||
PC += TMP;
|
||||
PC += TMP-1;
|
||||
prefetch();
|
||||
|
||||
bcs_ce_rel
|
||||
@ -258,7 +258,7 @@ bcs_rw2
|
||||
TMP = read_pc();
|
||||
TMP = set_h(TMP, read_pc());
|
||||
if(P & F_C)
|
||||
PC += TMP;
|
||||
PC += TMP-1;
|
||||
prefetch();
|
||||
|
||||
beq_ce_rel
|
||||
@ -271,7 +271,7 @@ beq_rw2
|
||||
TMP = read_pc();
|
||||
TMP = set_h(TMP, read_pc());
|
||||
if(P & F_Z)
|
||||
PC += TMP;
|
||||
PC += TMP-1;
|
||||
prefetch();
|
||||
|
||||
bit_ce_abx
|
||||
@ -307,7 +307,7 @@ bmi_rw2
|
||||
TMP = read_pc();
|
||||
TMP = set_h(TMP, read_pc());
|
||||
if(P & F_N)
|
||||
PC += TMP;
|
||||
PC += TMP-1;
|
||||
prefetch();
|
||||
|
||||
bne_ce_rel
|
||||
@ -320,7 +320,7 @@ bne_rw2
|
||||
TMP = read_pc();
|
||||
TMP = set_h(TMP, read_pc());
|
||||
if(!(P & F_Z))
|
||||
PC += TMP;
|
||||
PC += TMP-1;
|
||||
prefetch();
|
||||
|
||||
bpl_ce_rel
|
||||
@ -333,7 +333,7 @@ bpl_rw2
|
||||
TMP = read_pc();
|
||||
TMP = set_h(TMP, read_pc());
|
||||
if(!(P & F_N))
|
||||
PC += TMP;
|
||||
PC += TMP-1;
|
||||
prefetch();
|
||||
|
||||
bra_ce_rel
|
||||
@ -344,7 +344,7 @@ bra_ce_rel
|
||||
bra_rw2
|
||||
TMP = read_pc();
|
||||
TMP = set_h(TMP, read_pc());
|
||||
PC += TMP;
|
||||
PC += TMP - 1;
|
||||
prefetch();
|
||||
|
||||
brk_ce_imp
|
||||
@ -379,7 +379,7 @@ bsr_rw2
|
||||
write(SP, PC);
|
||||
dec_SP_ce();
|
||||
TMP = set_h(TMP, read_pc());
|
||||
PC += TMP;
|
||||
PC += TMP-1;
|
||||
prefetch();
|
||||
|
||||
bvc_ce_rel
|
||||
@ -392,7 +392,7 @@ bvc_rw2
|
||||
TMP = read_pc();
|
||||
TMP = set_h(TMP, read_pc());
|
||||
if(!(P & F_V))
|
||||
PC += TMP;
|
||||
PC += TMP-1;
|
||||
prefetch();
|
||||
|
||||
bvs_ce_rel
|
||||
@ -405,7 +405,7 @@ bvs_rw2
|
||||
TMP = read_pc();
|
||||
TMP = set_h(TMP, read_pc());
|
||||
if(P & F_V)
|
||||
PC += TMP;
|
||||
PC += TMP-1;
|
||||
prefetch();
|
||||
|
||||
clc_ce_imp
|
||||
@ -419,6 +419,7 @@ cld_ce_imp
|
||||
cle_imp
|
||||
read_pc_noinc();
|
||||
P &= ~F_E;
|
||||
logerror("CLE\n");
|
||||
prefetch();
|
||||
|
||||
cli_ce_imp
|
||||
|
@ -2177,11 +2177,11 @@ void m68881_ftrap(m68000_base_device *m68k)
|
||||
// trap here
|
||||
m68ki_exception_trap(m68k, EXCEPTION_TRAPV);
|
||||
}
|
||||
else // fall through, requires eating the operand
|
||||
else // fall through, requires eating the operand
|
||||
{
|
||||
switch (m68k->ir & 0x7)
|
||||
{
|
||||
case 2: // word operand
|
||||
case 2: // word operand
|
||||
OPER_I_16(m68k);
|
||||
break;
|
||||
|
||||
@ -2189,9 +2189,8 @@ void m68881_ftrap(m68000_base_device *m68k)
|
||||
OPER_I_32(m68k);
|
||||
break;
|
||||
|
||||
case 4: // no operand
|
||||
case 4: // no operand
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -114,12 +114,12 @@ bool finder_base::report_missing(bool found, const char *objname, bool required)
|
||||
|
||||
void finder_base::printf_warning(const char *format, ...)
|
||||
{
|
||||
va_list argptr;
|
||||
char buffer[1024];
|
||||
va_list argptr;
|
||||
char buffer[1024];
|
||||
|
||||
/* do the output */
|
||||
va_start(argptr, format);
|
||||
vsnprintf(buffer, 1024, format, argptr);
|
||||
osd_printf_warning("%s", buffer);
|
||||
va_end(argptr);
|
||||
/* do the output */
|
||||
va_start(argptr, format);
|
||||
vsnprintf(buffer, 1024, format, argptr);
|
||||
osd_printf_warning("%s", buffer);
|
||||
va_end(argptr);
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ protected:
|
||||
void *find_memshare(UINT8 width, size_t &bytes, bool required);
|
||||
bool report_missing(bool found, const char *objname, bool required);
|
||||
|
||||
void printf_warning(const char *format, ...) ATTR_PRINTF(2,3);
|
||||
void printf_warning(const char *format, ...) ATTR_PRINTF(2,3);
|
||||
|
||||
// internal state
|
||||
finder_base *m_next;
|
||||
|
@ -89,7 +89,7 @@ device_state_entry::device_state_entry(int index, const char *symbol, void *data
|
||||
|
||||
device_state_entry::device_state_entry(int index, device_state_interface *dev)
|
||||
: m_device_state(dev),
|
||||
m_next(NULL),
|
||||
m_next(NULL),
|
||||
m_index(index),
|
||||
m_dataptr(NULL),
|
||||
m_datamask(0),
|
||||
|
@ -57,6 +57,7 @@ enum
|
||||
XTAL_2_5MHz = 2500000, /* Janken Man units */
|
||||
XTAL_3MHz = 3000000, /* Probably only used to drive 68705 or similar MCUs on 80's Taito PCBs */
|
||||
XTAL_3_12MHz = 3120000, /* SP0250 clock on Gottlieb games */
|
||||
XTAL_3_5MHz = 3500000, /* Reported by Commodore 65 document, true xtal unchecked on PCB */
|
||||
XTAL_3_52128MHz = 3521280, /* RCA COSMAC VIP */
|
||||
XTAL_3_579545MHz = 3579545, /* NTSC color subcarrier, extremely common, used on 100's of PCBs (Keytronic custom part #48-300-010 is equivalent) */
|
||||
XTAL_3_6864MHz = 3686400, /* CPS3 */
|
||||
|
@ -17,61 +17,61 @@
|
||||
emu_fatalerror::emu_fatalerror(const char *format, ...)
|
||||
: code(0)
|
||||
{
|
||||
if (format == NULL)
|
||||
{
|
||||
text[0] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
vsprintf(text, format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
osd_break_into_debugger(text);
|
||||
if (format == NULL)
|
||||
{
|
||||
text[0] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
vsprintf(text, format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
osd_break_into_debugger(text);
|
||||
}
|
||||
|
||||
emu_fatalerror::emu_fatalerror(const char *format, va_list ap)
|
||||
: code(0)
|
||||
{
|
||||
if (format == NULL)
|
||||
{
|
||||
text[0] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
vsprintf(text, format, ap);
|
||||
}
|
||||
osd_break_into_debugger(text);
|
||||
if (format == NULL)
|
||||
{
|
||||
text[0] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
vsprintf(text, format, ap);
|
||||
}
|
||||
osd_break_into_debugger(text);
|
||||
}
|
||||
|
||||
emu_fatalerror::emu_fatalerror(int _exitcode, const char *format, ...)
|
||||
: code(_exitcode)
|
||||
{
|
||||
if (format == NULL)
|
||||
{
|
||||
text[0] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
vsprintf(text, format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
if (format == NULL)
|
||||
{
|
||||
text[0] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
vsprintf(text, format, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
|
||||
emu_fatalerror::emu_fatalerror(int _exitcode, const char *format, va_list ap)
|
||||
: code(_exitcode)
|
||||
{
|
||||
if (format == NULL)
|
||||
{
|
||||
text[0] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
vsprintf(text, format, ap);
|
||||
}
|
||||
if (format == NULL)
|
||||
{
|
||||
text[0] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
vsprintf(text, format, ap);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -89,18 +89,18 @@ void report_bad_device_cast(const device_t *dev, const std::type_info &src_type,
|
||||
|
||||
void fatalerror(const char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
emu_fatalerror error(format, ap);
|
||||
va_end(ap);
|
||||
throw error;
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
emu_fatalerror error(format, ap);
|
||||
va_end(ap);
|
||||
throw error;
|
||||
}
|
||||
|
||||
void fatalerror_exitcode(running_machine &machine, int exitcode, const char *format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
emu_fatalerror error(exitcode, format, ap);
|
||||
va_end(ap);
|
||||
throw error;
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
emu_fatalerror error(exitcode, format, ap);
|
||||
va_end(ap);
|
||||
throw error;
|
||||
}
|
||||
|
@ -150,10 +150,10 @@ const options_entry emu_options::s_option_entries[] =
|
||||
|
||||
// debugging options
|
||||
{ NULL, NULL, OPTION_HEADER, "CORE DEBUGGING OPTIONS" },
|
||||
{ OPTION_VERBOSE ";v", "0", OPTION_BOOLEAN, "display additional diagnostic information" },
|
||||
{ OPTION_LOG, "0", OPTION_BOOLEAN, "generate an error.log file" },
|
||||
{ OPTION_OSLOG, "0", OPTION_BOOLEAN, "output error.log data to the system debugger" },
|
||||
{ OPTION_DEBUG ";d", "0", OPTION_BOOLEAN, "enable/disable debugger" },
|
||||
{ OPTION_VERBOSE ";v", "0", OPTION_BOOLEAN, "display additional diagnostic information" },
|
||||
{ OPTION_LOG, "0", OPTION_BOOLEAN, "generate an error.log file" },
|
||||
{ OPTION_OSLOG, "0", OPTION_BOOLEAN, "output error.log data to the system debugger" },
|
||||
{ OPTION_DEBUG ";d", "0", OPTION_BOOLEAN, "enable/disable debugger" },
|
||||
{ OPTION_UPDATEINPAUSE, "0", OPTION_BOOLEAN, "keep calling video updates while in pause" },
|
||||
{ OPTION_DEBUGSCRIPT, NULL, OPTION_STRING, "script for debugger" },
|
||||
|
||||
|
@ -318,11 +318,11 @@ public:
|
||||
bool joystick_contradictory() const { return bool_value(OPTION_JOYSTICK_CONTRADICTORY); }
|
||||
int coin_impulse() const { return int_value(OPTION_COIN_IMPULSE); }
|
||||
|
||||
// core debugging options
|
||||
bool log() const { return bool_value(OPTION_LOG); }
|
||||
bool debug() const { return bool_value(OPTION_DEBUG); }
|
||||
bool verbose() const { return bool_value(OPTION_VERBOSE); }
|
||||
bool oslog() const { return bool_value(OPTION_OSLOG); }
|
||||
// core debugging options
|
||||
bool log() const { return bool_value(OPTION_LOG); }
|
||||
bool debug() const { return bool_value(OPTION_DEBUG); }
|
||||
bool verbose() const { return bool_value(OPTION_VERBOSE); }
|
||||
bool oslog() const { return bool_value(OPTION_OSLOG); }
|
||||
const char *debug_script() const { return value(OPTION_DEBUGSCRIPT); }
|
||||
bool update_in_pause() const { return bool_value(OPTION_UPDATEINPAUSE); }
|
||||
|
||||
|
@ -714,8 +714,8 @@ int lua_engine::lua_screen::l_draw_text(lua_State *L)
|
||||
render_container &rc = sc->container();
|
||||
ui_manager &ui = sc->machine().ui();
|
||||
ui.draw_text_full(&rc, msg, x, y , (1.0f - x),
|
||||
JUSTIFY_LEFT, WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR,
|
||||
UI_TEXT_BG_COLOR, NULL, NULL);
|
||||
JUSTIFY_LEFT, WRAP_WORD, DRAW_NORMAL, UI_TEXT_COLOR,
|
||||
UI_TEXT_BG_COLOR, NULL, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -108,7 +108,7 @@ static char giant_string_buffer[65536] = { 0 };
|
||||
|
||||
osd_interface &running_machine::osd() const
|
||||
{
|
||||
return m_manager.osd();
|
||||
return m_manager.osd();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
|
@ -253,7 +253,7 @@ intelfsh_device::intelfsh_device(const machine_config &mconfig, device_type type
|
||||
m_size = 0x400000;
|
||||
m_maker_id = MFG_INTEL;
|
||||
m_device_id = 0x14;
|
||||
// m_sector_is_4k = true; 128kb?
|
||||
// m_sector_is_4k = true; 128kb?
|
||||
map = ADDRESS_MAP_NAME( memory_map16_32Mb );
|
||||
break;
|
||||
case FLASH_SST_39VF020:
|
||||
|
@ -48,17 +48,13 @@ void jvs_host::commit_raw()
|
||||
// - have the message length without the two header bytes but with the checksum byte in the second byte
|
||||
// - have at least one command byte
|
||||
if(send_size < 3 || send_buffer[0] == 0x00 || send_buffer[1] != send_size-1) {
|
||||
logerror("JVS checksum error\n");
|
||||
} /*
|
||||
Naomi suchie3 have bad working controls with this
|
||||
|
||||
// "This message is crap" doesn't exist so call it checksum error
|
||||
recv_buffer[0] = 0x00;
|
||||
recv_buffer[1] = 0x02;
|
||||
recv_buffer[2] = 0x03;
|
||||
recv_size = 3;
|
||||
|
||||
} else */ {
|
||||
logerror("JVS checksum error\n");
|
||||
// "This message is crap" doesn't exist so call it checksum error
|
||||
recv_buffer[0] = 0x00;
|
||||
recv_buffer[1] = 0x02;
|
||||
recv_buffer[2] = 0x03;
|
||||
recv_size = 3;
|
||||
} else {
|
||||
if(first_device) {
|
||||
first_device->message(send_buffer[0], send_buffer+2, send_size-2, recv_buffer+2, recv_size);
|
||||
recv_is_encoded = false;
|
||||
@ -120,10 +116,13 @@ void jvs_host::encode(UINT8 *buffer, UINT32 &size)
|
||||
if(!size)
|
||||
return;
|
||||
UINT32 add = 1;
|
||||
UINT8 sum = 0;
|
||||
for(UINT32 i=0; i<size; i++)
|
||||
sum += buffer[i];
|
||||
buffer[size++] = sum;
|
||||
for(UINT32 i=0; i<size; i++)
|
||||
if(buffer[i] == 0xd0 || buffer[i] == 0xe0)
|
||||
add++;
|
||||
UINT32 nsize = size+add;
|
||||
for(UINT32 i=size; i; i--) {
|
||||
UINT8 t = buffer[i-1];
|
||||
if(t == 0xd0 || t == 0xe0) {
|
||||
@ -134,11 +133,7 @@ void jvs_host::encode(UINT8 *buffer, UINT32 &size)
|
||||
buffer[i+add-1] = t;
|
||||
}
|
||||
buffer[0] = 0xe0;
|
||||
UINT8 sum = 0;
|
||||
for(UINT32 i=1; i<nsize; i++)
|
||||
sum += buffer[i];
|
||||
buffer[nsize++] = sum;
|
||||
size = nsize;
|
||||
size += add;
|
||||
}
|
||||
|
||||
void jvs_host::decode(UINT8 *buffer, UINT32 &size)
|
||||
@ -146,7 +141,7 @@ void jvs_host::decode(UINT8 *buffer, UINT32 &size)
|
||||
if(!size)
|
||||
return;
|
||||
UINT32 pos = 0;
|
||||
for(UINT32 i=0; i<size-1; i++) {
|
||||
for(UINT32 i=0; i<size; i++) {
|
||||
UINT8 t = buffer[i];
|
||||
if(!i && t == 0xe0)
|
||||
continue;
|
||||
@ -156,5 +151,5 @@ void jvs_host::decode(UINT8 *buffer, UINT32 &size)
|
||||
}
|
||||
buffer[pos++] = t;
|
||||
}
|
||||
size = pos;
|
||||
size = pos ? pos - 1 : 0;
|
||||
}
|
||||
|
@ -440,12 +440,12 @@ ATTR_COLD void netlist_mame_device_t::save_state()
|
||||
if (td != NULL) save_pointer(td, s->m_name, s->m_count);
|
||||
}
|
||||
break;
|
||||
case DT_FLOAT:
|
||||
{
|
||||
float *td = s->resolved<float>();
|
||||
if (td != NULL) save_pointer(td, s->m_name, s->m_count);
|
||||
}
|
||||
break;
|
||||
case DT_FLOAT:
|
||||
{
|
||||
float *td = s->resolved<float>();
|
||||
if (td != NULL) save_pointer(td, s->m_name, s->m_count);
|
||||
}
|
||||
break;
|
||||
case DT_INT64:
|
||||
save_pointer((INT64 *) s->m_ptr, s->m_name, s->m_count);
|
||||
break;
|
||||
|
@ -94,7 +94,7 @@ machine_manager* machine_manager::m_manager = NULL;
|
||||
|
||||
osd_interface &machine_manager::osd() const
|
||||
{
|
||||
return m_osd;
|
||||
return m_osd;
|
||||
}
|
||||
|
||||
|
||||
|
@ -14,7 +14,7 @@ class netlist_matrix_solver_direct_t: public netlist_matrix_solver_t
|
||||
public:
|
||||
|
||||
netlist_matrix_solver_direct_t(const netlist_solver_parameters_t ¶ms, int size);
|
||||
netlist_matrix_solver_direct_t(const eSolverType type, const netlist_solver_parameters_t ¶ms, int size);
|
||||
netlist_matrix_solver_direct_t(const eSolverType type, const netlist_solver_parameters_t ¶ms, int size);
|
||||
|
||||
virtual ~netlist_matrix_solver_direct_t();
|
||||
|
||||
@ -69,13 +69,13 @@ netlist_matrix_solver_direct_t<m_N, _storage_N>::~netlist_matrix_solver_direct_t
|
||||
{
|
||||
//delete[] m_A[k];
|
||||
}
|
||||
for (int k = 0; k < N(); k++)
|
||||
{
|
||||
nl_free(m_terms[k]);
|
||||
nl_free(m_row_ops[k]);
|
||||
}
|
||||
nl_free(m_row_ops[N()]);
|
||||
//delete[] m_last_RHS;
|
||||
for (int k = 0; k < N(); k++)
|
||||
{
|
||||
nl_free(m_terms[k]);
|
||||
nl_free(m_row_ops[k]);
|
||||
}
|
||||
nl_free(m_row_ops[N()]);
|
||||
//delete[] m_last_RHS;
|
||||
//delete[] m_RHS;
|
||||
nl_free_array(m_terms);
|
||||
nl_free_array(m_rails_temp);
|
||||
@ -193,17 +193,17 @@ ATTR_COLD void netlist_matrix_solver_direct_t<m_N, _storage_N>::vsetup(netlist_a
|
||||
* Sorting as a general matrix pre-conditioning is mentioned in
|
||||
* literature but I have found no articles about Gauss Seidel.
|
||||
*
|
||||
* For Gaussian Elimination however increasing order is better suited.
|
||||
* FIXME: Even better would be to sort on elements right of the matrix diagonal.
|
||||
*
|
||||
* For Gaussian Elimination however increasing order is better suited.
|
||||
* FIXME: Even better would be to sort on elements right of the matrix diagonal.
|
||||
*
|
||||
*/
|
||||
|
||||
int sort_order = (type() == GAUSS_SEIDEL ? 1 : -1);
|
||||
int sort_order = (type() == GAUSS_SEIDEL ? 1 : -1);
|
||||
|
||||
for (int k = 0; k < N() / 2; k++)
|
||||
for (int i = 0; i < N() - 1; i++)
|
||||
{
|
||||
if ((m_terms[i]->m_railstart - m_terms[i+1]->m_railstart) * sort_order < 0)
|
||||
if ((m_terms[i]->m_railstart - m_terms[i+1]->m_railstart) * sort_order < 0)
|
||||
{
|
||||
std::swap(m_terms[i],m_terms[i+1]);
|
||||
m_nets.swap(i, i+1);
|
||||
@ -475,15 +475,15 @@ netlist_matrix_solver_direct_t<m_N, _storage_N>::netlist_matrix_solver_direct_t(
|
||||
, m_dim(size)
|
||||
, m_lp_fact(0)
|
||||
{
|
||||
m_terms = nl_alloc_array(terms_t *, N());
|
||||
m_rails_temp = nl_alloc_array(terms_t, N());
|
||||
m_terms = nl_alloc_array(terms_t *, N());
|
||||
m_rails_temp = nl_alloc_array(terms_t, N());
|
||||
|
||||
for (int k = 0; k < N(); k++)
|
||||
{
|
||||
m_terms[k] = nl_alloc(terms_t);
|
||||
m_row_ops[k] = vector_ops_t::create_ops(k);
|
||||
}
|
||||
m_row_ops[N()] = vector_ops_t::create_ops(N());
|
||||
for (int k = 0; k < N(); k++)
|
||||
{
|
||||
m_terms[k] = nl_alloc(terms_t);
|
||||
m_row_ops[k] = vector_ops_t::create_ops(k);
|
||||
}
|
||||
m_row_ops[N()] = vector_ops_t::create_ops(N());
|
||||
}
|
||||
|
||||
|
||||
|
@ -17,16 +17,16 @@ class ATTR_ALIGNED(64) netlist_matrix_solver_gauss_seidel_t: public netlist_matr
|
||||
public:
|
||||
|
||||
netlist_matrix_solver_gauss_seidel_t(const netlist_solver_parameters_t ¶ms, int size)
|
||||
: netlist_matrix_solver_direct_t<m_N, _storage_N>(netlist_matrix_solver_t::GAUSS_SEIDEL, params, size)
|
||||
: netlist_matrix_solver_direct_t<m_N, _storage_N>(netlist_matrix_solver_t::GAUSS_SEIDEL, params, size)
|
||||
, m_lp_fact(0)
|
||||
, m_gs_fail(0)
|
||||
, m_gs_total(0)
|
||||
{
|
||||
const char *p = osd_getenv("NETLIST_STATS");
|
||||
if (p != NULL)
|
||||
m_log_stats = (bool) atoi(p);
|
||||
else
|
||||
m_log_stats = false;
|
||||
const char *p = osd_getenv("NETLIST_STATS");
|
||||
if (p != NULL)
|
||||
m_log_stats = (bool) atoi(p);
|
||||
else
|
||||
m_log_stats = false;
|
||||
}
|
||||
|
||||
virtual ~netlist_matrix_solver_gauss_seidel_t() {}
|
||||
@ -52,21 +52,21 @@ private:
|
||||
template <int m_N, int _storage_N>
|
||||
void netlist_matrix_solver_gauss_seidel_t<m_N, _storage_N>::log_stats()
|
||||
{
|
||||
if (this->m_stat_calculations != 0 && m_log_stats)
|
||||
{
|
||||
printf("==============================================\n");
|
||||
printf("Solver %s\n", this->name().cstr());
|
||||
printf(" ==> %d nets\n", this->N()); //, (*(*groups[i].first())->m_core_terms.first())->name().cstr());
|
||||
printf(" has %s elements\n", this->is_dynamic() ? "dynamic" : "no dynamic");
|
||||
printf(" has %s elements\n", this->is_timestep() ? "timestep" : "no timestep");
|
||||
printf(" %6.3f average newton raphson loops\n", (double) this->m_stat_newton_raphson / (double) this->m_stat_vsolver_calls);
|
||||
printf(" %10d invocations (%6d Hz) %10d gs fails (%6.2f%%) %6.3f average\n",
|
||||
this->m_stat_calculations,
|
||||
this->m_stat_calculations * 10 / (int) (this->netlist().time().as_double() * 10.0),
|
||||
this->m_gs_fail,
|
||||
100.0 * (double) this->m_gs_fail / (double) this->m_stat_calculations,
|
||||
(double) this->m_gs_total / (double) this->m_stat_calculations);
|
||||
}
|
||||
if (this->m_stat_calculations != 0 && m_log_stats)
|
||||
{
|
||||
printf("==============================================\n");
|
||||
printf("Solver %s\n", this->name().cstr());
|
||||
printf(" ==> %d nets\n", this->N()); //, (*(*groups[i].first())->m_core_terms.first())->name().cstr());
|
||||
printf(" has %s elements\n", this->is_dynamic() ? "dynamic" : "no dynamic");
|
||||
printf(" has %s elements\n", this->is_timestep() ? "timestep" : "no timestep");
|
||||
printf(" %6.3f average newton raphson loops\n", (double) this->m_stat_newton_raphson / (double) this->m_stat_vsolver_calls);
|
||||
printf(" %10d invocations (%6d Hz) %10d gs fails (%6.2f%%) %6.3f average\n",
|
||||
this->m_stat_calculations,
|
||||
this->m_stat_calculations * 10 / (int) (this->netlist().time().as_double() * 10.0),
|
||||
this->m_gs_fail,
|
||||
100.0 * (double) this->m_gs_fail / (double) this->m_stat_calculations,
|
||||
(double) this->m_gs_total / (double) this->m_stat_calculations);
|
||||
}
|
||||
}
|
||||
|
||||
template <int m_N, int _storage_N>
|
||||
@ -299,7 +299,7 @@ ATTR_HOT inline int netlist_matrix_solver_gauss_seidel_t<m_N, _storage_N>::vsolv
|
||||
//if (fabs(gabs_t - fabs(gtot_t)) > 1e-20)
|
||||
// printf("%d %e abs: %f tot: %f\n",k, gabs_t / gtot_t -1.0, gabs_t, gtot_t);
|
||||
|
||||
gabs_t *= 0.95; // avoid rounding issues
|
||||
gabs_t *= 0.95; // avoid rounding issues
|
||||
if (!USE_GABS || gabs_t <= gtot_t)
|
||||
{
|
||||
w[k] = ws / gtot_t;
|
||||
@ -343,7 +343,7 @@ ATTR_HOT inline int netlist_matrix_solver_gauss_seidel_t<m_N, _storage_N>::vsolv
|
||||
this->m_nets[k]->m_cur_Analog = new_V[k];
|
||||
|
||||
this->m_gs_total += resched_cnt;
|
||||
this->m_stat_calculations++;
|
||||
this->m_stat_calculations++;
|
||||
|
||||
if (resched)
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ NETLIST_START(opamp_lm3900)
|
||||
NET_C(R1.2, R2.2, G1.ON)
|
||||
VCVS(G1)
|
||||
PARAM(G1.G, 10000000)
|
||||
//PARAM(G1.RI, 1)
|
||||
//PARAM(G1.RI, 1)
|
||||
PARAM(G1.RO, RES_K(8))
|
||||
|
||||
NETLIST_END()
|
||||
|
@ -99,11 +99,11 @@ ATTR_COLD void terms_t::set_pointers()
|
||||
|
||||
ATTR_COLD netlist_matrix_solver_t::netlist_matrix_solver_t(const eSolverType type, const netlist_solver_parameters_t ¶ms)
|
||||
: m_stat_calculations(0),
|
||||
m_stat_newton_raphson(0),
|
||||
m_stat_vsolver_calls(0),
|
||||
m_params(params),
|
||||
m_cur_ts(0),
|
||||
m_type(type)
|
||||
m_stat_newton_raphson(0),
|
||||
m_stat_vsolver_calls(0),
|
||||
m_params(params),
|
||||
m_cur_ts(0),
|
||||
m_type(type)
|
||||
{
|
||||
}
|
||||
|
||||
@ -257,7 +257,7 @@ ATTR_HOT void netlist_matrix_solver_t::step(const netlist_time delta)
|
||||
template<class C >
|
||||
void netlist_matrix_solver_t::solve_base(C *p)
|
||||
{
|
||||
m_stat_vsolver_calls++;
|
||||
m_stat_vsolver_calls++;
|
||||
if (is_dynamic())
|
||||
{
|
||||
int this_resched;
|
||||
@ -270,7 +270,7 @@ void netlist_matrix_solver_t::solve_base(C *p)
|
||||
newton_loops++;
|
||||
} while (this_resched > 1 && newton_loops < m_params.m_nr_loops);
|
||||
|
||||
m_stat_newton_raphson += newton_loops;
|
||||
m_stat_newton_raphson += newton_loops;
|
||||
// reschedule ....
|
||||
if (this_resched > 1 && !m_Q_sync.net().is_queued())
|
||||
{
|
||||
@ -438,7 +438,7 @@ netlist_matrix_solver_t * NETLIB_NAME(solver)::create_solver(int size, const int
|
||||
return nl_alloc(netlist_matrix_solver_direct2_t, m_params);
|
||||
else
|
||||
{
|
||||
typedef netlist_matrix_solver_gauss_seidel_t<m_N,_storage_N> solver_N;
|
||||
typedef netlist_matrix_solver_gauss_seidel_t<m_N,_storage_N> solver_N;
|
||||
if (size >= gs_threshold)
|
||||
return nl_alloc(solver_N, m_params, size);
|
||||
else
|
||||
|
@ -197,8 +197,8 @@ public:
|
||||
|
||||
enum eSolverType
|
||||
{
|
||||
GAUSSIAN_ELIMINATION,
|
||||
GAUSS_SEIDEL
|
||||
GAUSSIAN_ELIMINATION,
|
||||
GAUSS_SEIDEL
|
||||
};
|
||||
|
||||
ATTR_COLD netlist_matrix_solver_t(const eSolverType type, const netlist_solver_parameters_t ¶ms);
|
||||
@ -243,9 +243,9 @@ protected:
|
||||
plinearlist_t<netlist_analog_net_t *> m_nets;
|
||||
plinearlist_t<netlist_analog_output_t *> m_inps;
|
||||
|
||||
int m_stat_calculations;
|
||||
int m_stat_newton_raphson;
|
||||
int m_stat_vsolver_calls;
|
||||
int m_stat_calculations;
|
||||
int m_stat_newton_raphson;
|
||||
int m_stat_vsolver_calls;
|
||||
|
||||
const netlist_solver_parameters_t &m_params;
|
||||
|
||||
@ -264,7 +264,7 @@ private:
|
||||
|
||||
ATTR_HOT void update_inputs();
|
||||
|
||||
const eSolverType m_type;
|
||||
const eSolverType m_type;
|
||||
};
|
||||
|
||||
|
||||
|
@ -78,7 +78,7 @@ void nl_initialize_factory(netlist_factory_t &factory)
|
||||
ENTRY(VCCS, VCCS, "-")
|
||||
ENTRY(CCCS, CCCS, "-")
|
||||
ENTRY(dummy_input, DUMMY_INPUT, "-")
|
||||
ENTRY(frontier, FRONTIER, "+I,Q")
|
||||
ENTRY(frontier, FRONTIER, "+I,Q")
|
||||
ENTRY(QBJT_EB, QBJT_EB, "model")
|
||||
ENTRY(QBJT_switch, QBJT_SW, "model")
|
||||
ENTRY(ttl_input, TTL_INPUT, "IN")
|
||||
@ -148,4 +148,3 @@ void nl_initialize_factory(netlist_factory_t &factory)
|
||||
ENTRY(SN74LS629_dip, SN74LS629_DIP, "1.CAP1,2.CAP2")
|
||||
ENTRY(NE555_dip, NE555_DIP, "-")
|
||||
}
|
||||
|
||||
|
@ -43,7 +43,7 @@ NETLIB_START(4020_sub)
|
||||
register_output("Q5", m_Q[4]);
|
||||
register_output("Q6", m_Q[5]);
|
||||
register_output("Q7", m_Q[6]);
|
||||
register_output("Q8", m_Q[7]);
|
||||
register_output("Q8", m_Q[7]);
|
||||
register_output("Q9", m_Q[8]);
|
||||
register_output("Q10", m_Q[9]);
|
||||
register_output("Q11", m_Q[10]);
|
||||
|
@ -21,11 +21,11 @@ class nld_vdd_vss : public netlist_device_t
|
||||
|
||||
protected:
|
||||
ATTR_HOT void update() {};
|
||||
ATTR_HOT void start()
|
||||
{
|
||||
register_input("VDD,", m_vdd);
|
||||
register_input("VSS,", m_vss);
|
||||
};
|
||||
ATTR_HOT void start()
|
||||
{
|
||||
register_input("VDD,", m_vdd);
|
||||
register_input("VSS,", m_vss);
|
||||
};
|
||||
ATTR_HOT void reset() {};
|
||||
|
||||
public:
|
||||
|
@ -40,10 +40,9 @@
|
||||
NET_REGISTER_DEV(dummy_input, _name)
|
||||
|
||||
#define FRONTIER(_name, _IN, _OUT) \
|
||||
NET_REGISTER_DEV(frontier, _name) \
|
||||
NET_C(_IN, _name.I) \
|
||||
NET_C(_OUT, _name.Q) \
|
||||
|
||||
NET_REGISTER_DEV(frontier, _name) \
|
||||
NET_C(_IN, _name.I) \
|
||||
NET_C(_OUT, _name.Q)
|
||||
// -----------------------------------------------------------------------------
|
||||
// mainclock
|
||||
// -----------------------------------------------------------------------------
|
||||
@ -159,31 +158,31 @@ private:
|
||||
class NETLIB_NAME(frontier) : public netlist_device_t
|
||||
{
|
||||
public:
|
||||
ATTR_COLD NETLIB_NAME(frontier)()
|
||||
: netlist_device_t(DUMMY) { }
|
||||
ATTR_COLD NETLIB_NAME(frontier)()
|
||||
: netlist_device_t(DUMMY) { }
|
||||
|
||||
ATTR_COLD virtual ~NETLIB_NAME(frontier)() {}
|
||||
ATTR_COLD virtual ~NETLIB_NAME(frontier)() {}
|
||||
|
||||
protected:
|
||||
|
||||
ATTR_COLD void start()
|
||||
{
|
||||
register_input("I", m_I);
|
||||
register_output("Q", m_Q);
|
||||
}
|
||||
ATTR_COLD void start()
|
||||
{
|
||||
register_input("I", m_I);
|
||||
register_output("Q", m_Q);
|
||||
}
|
||||
|
||||
ATTR_COLD void reset()
|
||||
{
|
||||
}
|
||||
ATTR_COLD void reset()
|
||||
{
|
||||
}
|
||||
|
||||
ATTR_HOT ATTR_ALIGN void update()
|
||||
{
|
||||
OUTANALOG(m_Q, INPANALOG(m_I));
|
||||
}
|
||||
ATTR_HOT ATTR_ALIGN void update()
|
||||
{
|
||||
OUTANALOG(m_Q, INPANALOG(m_I));
|
||||
}
|
||||
|
||||
private:
|
||||
netlist_analog_input_t m_I;
|
||||
netlist_analog_output_t m_Q;
|
||||
netlist_analog_input_t m_I;
|
||||
netlist_analog_output_t m_Q;
|
||||
|
||||
};
|
||||
|
||||
|
@ -1001,4 +1001,3 @@ NETLIB_UPDATE(mainclock)
|
||||
net.toggle_new_Q();
|
||||
net.set_time(netlist().time() + m_inc);
|
||||
}
|
||||
|
||||
|
@ -337,7 +337,7 @@ public:
|
||||
CAPACITOR, // Capacitor
|
||||
DIODE, // Diode
|
||||
DUMMY, // DUMMY device without function
|
||||
FRONTIER, // Net frontier
|
||||
FRONTIER, // Net frontier
|
||||
BJT_EB, // BJT(Ebers-Moll)
|
||||
BJT_SWITCH, // BJT(Switch)
|
||||
VCVS, // Voltage controlled voltage source
|
||||
@ -1268,13 +1268,13 @@ ATTR_HOT inline netlist_logic_net_t & RESTRICT netlist_net_t::as_logic()
|
||||
|
||||
ATTR_HOT inline const netlist_logic_net_t & RESTRICT netlist_net_t::as_logic() const
|
||||
{
|
||||
nl_assert(family() == LOGIC);
|
||||
nl_assert(family() == LOGIC);
|
||||
return static_cast<const netlist_logic_net_t &>(*this);
|
||||
}
|
||||
|
||||
ATTR_HOT inline netlist_analog_net_t & RESTRICT netlist_net_t::as_analog()
|
||||
{
|
||||
nl_assert(family() == ANALOG);
|
||||
nl_assert(family() == ANALOG);
|
||||
return static_cast<netlist_analog_net_t &>(*this);
|
||||
}
|
||||
|
||||
|
@ -121,21 +121,21 @@
|
||||
class nl_fatalerror : public std::exception
|
||||
{
|
||||
public:
|
||||
nl_fatalerror(const char *format, ...) ATTR_PRINTF(2,3)
|
||||
{
|
||||
char text[1024];
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
vsprintf(text, format, ap);
|
||||
va_end(ap);
|
||||
osd_printf_error("%s\n", text);
|
||||
}
|
||||
nl_fatalerror(const char *format, va_list ap)
|
||||
{
|
||||
char text[1024];
|
||||
vsprintf(text, format, ap);
|
||||
osd_printf_error("%s\n", text);
|
||||
}
|
||||
nl_fatalerror(const char *format, ...) ATTR_PRINTF(2,3)
|
||||
{
|
||||
char text[1024];
|
||||
va_list ap;
|
||||
va_start(ap, format);
|
||||
vsprintf(text, format, ap);
|
||||
va_end(ap);
|
||||
osd_printf_error("%s\n", text);
|
||||
}
|
||||
nl_fatalerror(const char *format, va_list ap)
|
||||
{
|
||||
char text[1024];
|
||||
vsprintf(text, format, ap);
|
||||
osd_printf_error("%s\n", text);
|
||||
}
|
||||
};
|
||||
|
||||
//============================================================
|
||||
|
@ -56,18 +56,18 @@
|
||||
|
||||
ATTR_COLD const nl_util::pstring_list net_device_t_base_factory::term_param_list()
|
||||
{
|
||||
if (m_def_param.startsWith("+"))
|
||||
return nl_util::split(m_def_param.substr(1), ",");
|
||||
else
|
||||
return nl_util::pstring_list();
|
||||
if (m_def_param.startsWith("+"))
|
||||
return nl_util::split(m_def_param.substr(1), ",");
|
||||
else
|
||||
return nl_util::pstring_list();
|
||||
}
|
||||
|
||||
ATTR_COLD const nl_util::pstring_list net_device_t_base_factory::def_params()
|
||||
{
|
||||
if (m_def_param.startsWith("+") || m_def_param.equals("-"))
|
||||
return nl_util::pstring_list();
|
||||
else
|
||||
return nl_util::split(m_def_param, ",");
|
||||
if (m_def_param.startsWith("+") || m_def_param.equals("-"))
|
||||
return nl_util::pstring_list();
|
||||
else
|
||||
return nl_util::split(m_def_param, ",");
|
||||
}
|
||||
|
||||
|
||||
|
@ -97,10 +97,10 @@ netlist_device_t *netlist_setup_t::register_dev(netlist_device_t *dev, const pst
|
||||
|
||||
netlist_device_t *netlist_setup_t::register_dev(const pstring &classname, const pstring &name)
|
||||
{
|
||||
netlist_device_t *dev = factory().new_device_by_classname(classname);
|
||||
if (dev == NULL)
|
||||
netlist().error("Class %s not found!\n", classname.cstr());
|
||||
return register_dev(dev, name);
|
||||
netlist_device_t *dev = factory().new_device_by_classname(classname);
|
||||
if (dev == NULL)
|
||||
netlist().error("Class %s not found!\n", classname.cstr());
|
||||
return register_dev(dev, name);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
@ -697,7 +697,7 @@ void netlist_setup_t::resolve_inputs()
|
||||
|
||||
void netlist_setup_t::start_devices()
|
||||
{
|
||||
//FIXME: we need a nl_getenv
|
||||
//FIXME: we need a nl_getenv
|
||||
if (getenv("NL_LOGS"))
|
||||
{
|
||||
NL_VERBOSE_OUT(("Creating dynamic logs ...\n"));
|
||||
|
@ -146,13 +146,13 @@ public:
|
||||
void namespace_push(const pstring &aname);
|
||||
void namespace_pop();
|
||||
|
||||
netlist_factory_t &factory() { return *m_factory; }
|
||||
const netlist_factory_t &factory() const { return *m_factory; }
|
||||
netlist_factory_t &factory() { return *m_factory; }
|
||||
const netlist_factory_t &factory() const { return *m_factory; }
|
||||
|
||||
/* not ideal, but needed for save_state */
|
||||
tagmap_terminal_t m_terminals;
|
||||
/* not ideal, but needed for save_state */
|
||||
tagmap_terminal_t m_terminals;
|
||||
|
||||
void print_stats() const;
|
||||
void print_stats() const;
|
||||
|
||||
protected:
|
||||
|
||||
|
@ -60,7 +60,7 @@ public:
|
||||
ATTR_COLD ~plinearlist_t()
|
||||
{
|
||||
if (m_list != NULL)
|
||||
nl_free_array(m_list);
|
||||
nl_free_array(m_list);
|
||||
m_list = NULL;
|
||||
}
|
||||
|
||||
@ -183,7 +183,7 @@ private:
|
||||
else
|
||||
{
|
||||
if (m_list != NULL)
|
||||
nl_free_array(m_list);
|
||||
nl_free_array(m_list);
|
||||
m_list = NULL;
|
||||
m_count = 0;
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ ATTR_COLD void pstate_manager_t::save_state_ptr(const pstring &stname, const pst
|
||||
"DT_INT8",
|
||||
"DT_INT",
|
||||
"DT_BOOLEAN",
|
||||
"DT_FLOAT"
|
||||
"DT_FLOAT"
|
||||
};
|
||||
|
||||
NL_VERBOSE_OUT(("SAVE: <%s> %s(%d) %p\n", fullname.cstr(), ts[dt].cstr(), size, ptr));
|
||||
@ -64,8 +64,8 @@ ATTR_COLD void pstate_manager_t::post_load()
|
||||
|
||||
template<> ATTR_COLD void pstate_manager_t::save_item(pstate_callback_t &state, const void *owner, const pstring &stname)
|
||||
{
|
||||
//save_state_ptr(stname, DT_CUSTOM, 0, 1, &state);
|
||||
pstate_entry_t *p = nl_alloc(pstate_entry_t, stname, owner, &state);
|
||||
m_save.add(p);
|
||||
state.register_state(*this, stname);
|
||||
//save_state_ptr(stname, DT_CUSTOM, 0, 1, &state);
|
||||
pstate_entry_t *p = nl_alloc(pstate_entry_t, stname, owner, &state);
|
||||
m_save.add(p);
|
||||
state.register_state(*this, stname);
|
||||
}
|
||||
|
@ -24,4 +24,3 @@ void parameters_manager::add(astring tag, astring value)
|
||||
{
|
||||
m_parameters.add(tag, value);
|
||||
}
|
||||
|
||||
|
288
src/emu/render.c
288
src/emu/render.c
@ -207,62 +207,62 @@ inline item_layer get_layer_and_blendmode(const layout_view &view, int index, in
|
||||
|
||||
render_texinfo &render_texinfo::operator=(const render_texinfo &src)
|
||||
{
|
||||
free_palette();
|
||||
base = src.base;
|
||||
rowpixels = src.rowpixels;
|
||||
width = src.width;
|
||||
height = src.height;
|
||||
seqid = src.seqid;
|
||||
osddata = src.osddata;
|
||||
m_palette = src.m_palette;
|
||||
if (m_palette != NULL)
|
||||
{
|
||||
m_palette->ref_count++;
|
||||
}
|
||||
return *this;
|
||||
free_palette();
|
||||
base = src.base;
|
||||
rowpixels = src.rowpixels;
|
||||
width = src.width;
|
||||
height = src.height;
|
||||
seqid = src.seqid;
|
||||
osddata = src.osddata;
|
||||
m_palette = src.m_palette;
|
||||
if (m_palette != NULL)
|
||||
{
|
||||
m_palette->ref_count++;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
render_texinfo::render_texinfo(const render_texinfo &src)
|
||||
{
|
||||
base = src.base;
|
||||
rowpixels = src.rowpixels;
|
||||
width = src.width;
|
||||
height = src.height;
|
||||
seqid = src.seqid;
|
||||
osddata = src.osddata;
|
||||
m_palette = src.m_palette;
|
||||
if (m_palette != NULL)
|
||||
{
|
||||
m_palette->ref_count++;
|
||||
}
|
||||
base = src.base;
|
||||
rowpixels = src.rowpixels;
|
||||
width = src.width;
|
||||
height = src.height;
|
||||
seqid = src.seqid;
|
||||
osddata = src.osddata;
|
||||
m_palette = src.m_palette;
|
||||
if (m_palette != NULL)
|
||||
{
|
||||
m_palette->ref_count++;
|
||||
}
|
||||
}
|
||||
|
||||
void render_texinfo::set_palette(const dynamic_array<rgb_t> *source)
|
||||
{
|
||||
free_palette();
|
||||
if (source != NULL)
|
||||
{
|
||||
m_palette = global_alloc(render_palette_copy);
|
||||
m_palette->palette.copyfrom(*source);
|
||||
m_palette->ref_count = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_palette = NULL;
|
||||
}
|
||||
free_palette();
|
||||
if (source != NULL)
|
||||
{
|
||||
m_palette = global_alloc(render_palette_copy);
|
||||
m_palette->palette.copyfrom(*source);
|
||||
m_palette->ref_count = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_palette = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void render_texinfo::free_palette()
|
||||
{
|
||||
if (m_palette != NULL)
|
||||
{
|
||||
m_palette->ref_count--;
|
||||
if (m_palette->ref_count == 0)
|
||||
{
|
||||
global_free(m_palette);
|
||||
}
|
||||
}
|
||||
m_palette = NULL;
|
||||
if (m_palette != NULL)
|
||||
{
|
||||
m_palette->ref_count--;
|
||||
if (m_palette->ref_count == 0)
|
||||
{
|
||||
global_free(m_palette);
|
||||
}
|
||||
}
|
||||
m_palette = NULL;
|
||||
}
|
||||
|
||||
|
||||
@ -277,31 +277,31 @@ void render_texinfo::free_palette()
|
||||
|
||||
void render_primitive::reset()
|
||||
{
|
||||
// public state
|
||||
type = INVALID;
|
||||
bounds.x0 = 0;
|
||||
bounds.y0 = 0;
|
||||
bounds.x1 = 0;
|
||||
bounds.y1 = 0;
|
||||
color.a = 0;
|
||||
color.r = 0;
|
||||
color.g = 0;
|
||||
color.b = 0;
|
||||
flags = 0;
|
||||
width = 0.0f;
|
||||
texture.set_palette(NULL);
|
||||
texture = render_texinfo();
|
||||
texcoords.bl.u = 0.0f;
|
||||
texcoords.bl.v = 0.0f;
|
||||
texcoords.br.u = 0.0f;
|
||||
texcoords.br.v = 0.0f;
|
||||
texcoords.tl.u = 0.0f;
|
||||
texcoords.tl.v = 0.0f;
|
||||
texcoords.tr.u = 0.0f;
|
||||
texcoords.tr.v = 0.0f;
|
||||
// public state
|
||||
type = INVALID;
|
||||
bounds.x0 = 0;
|
||||
bounds.y0 = 0;
|
||||
bounds.x1 = 0;
|
||||
bounds.y1 = 0;
|
||||
color.a = 0;
|
||||
color.r = 0;
|
||||
color.g = 0;
|
||||
color.b = 0;
|
||||
flags = 0;
|
||||
width = 0.0f;
|
||||
texture.set_palette(NULL);
|
||||
texture = render_texinfo();
|
||||
texcoords.bl.u = 0.0f;
|
||||
texcoords.bl.v = 0.0f;
|
||||
texcoords.br.u = 0.0f;
|
||||
texcoords.br.v = 0.0f;
|
||||
texcoords.tl.u = 0.0f;
|
||||
texcoords.tl.v = 0.0f;
|
||||
texcoords.tr.u = 0.0f;
|
||||
texcoords.tr.v = 0.0f;
|
||||
|
||||
// do not clear m_next!
|
||||
// memset(&type, 0, FPTR(&texcoords + 1) - FPTR(&type));
|
||||
// do not clear m_next!
|
||||
// memset(&type, 0, FPTR(&texcoords + 1) - FPTR(&type));
|
||||
}
|
||||
|
||||
|
||||
@ -556,63 +556,63 @@ void render_texture::get_scaled(UINT32 dwidth, UINT32 dheight, render_texinfo &t
|
||||
texinfo.width = swidth;
|
||||
texinfo.height = sheight;
|
||||
// will be set later
|
||||
texinfo.set_palette(NULL);
|
||||
texinfo.set_palette(NULL);
|
||||
texinfo.seqid = ++m_curseq;
|
||||
}
|
||||
else
|
||||
{
|
||||
// make sure we can recover the original argb32 bitmap
|
||||
bitmap_argb32 dummy;
|
||||
bitmap_argb32 &srcbitmap = (m_bitmap != NULL) ? downcast<bitmap_argb32 &>(*m_bitmap) : dummy;
|
||||
// make sure we can recover the original argb32 bitmap
|
||||
bitmap_argb32 dummy;
|
||||
bitmap_argb32 &srcbitmap = (m_bitmap != NULL) ? downcast<bitmap_argb32 &>(*m_bitmap) : dummy;
|
||||
|
||||
// is it a size we already have?
|
||||
scaled_texture *scaled = NULL;
|
||||
int scalenum;
|
||||
for (scalenum = 0; scalenum < ARRAY_LENGTH(m_scaled); scalenum++)
|
||||
{
|
||||
scaled = &m_scaled[scalenum];
|
||||
// is it a size we already have?
|
||||
scaled_texture *scaled = NULL;
|
||||
int scalenum;
|
||||
for (scalenum = 0; scalenum < ARRAY_LENGTH(m_scaled); scalenum++)
|
||||
{
|
||||
scaled = &m_scaled[scalenum];
|
||||
|
||||
// we need a non-NULL bitmap with matching dest size
|
||||
if (scaled->bitmap != NULL && dwidth == scaled->bitmap->width() && dheight == scaled->bitmap->height())
|
||||
break;
|
||||
}
|
||||
// we need a non-NULL bitmap with matching dest size
|
||||
if (scaled->bitmap != NULL && dwidth == scaled->bitmap->width() && dheight == scaled->bitmap->height())
|
||||
break;
|
||||
}
|
||||
|
||||
// did we get one?
|
||||
if (scalenum == ARRAY_LENGTH(m_scaled))
|
||||
{
|
||||
int lowest = -1;
|
||||
// did we get one?
|
||||
if (scalenum == ARRAY_LENGTH(m_scaled))
|
||||
{
|
||||
int lowest = -1;
|
||||
|
||||
// didn't find one -- take the entry with the lowest seqnum
|
||||
for (scalenum = 0; scalenum < ARRAY_LENGTH(m_scaled); scalenum++)
|
||||
if ((lowest == -1 || m_scaled[scalenum].seqid < m_scaled[lowest].seqid) && !primlist.has_reference(m_scaled[scalenum].bitmap))
|
||||
lowest = scalenum;
|
||||
assert_always(lowest != -1, "Too many live texture instances!");
|
||||
// didn't find one -- take the entry with the lowest seqnum
|
||||
for (scalenum = 0; scalenum < ARRAY_LENGTH(m_scaled); scalenum++)
|
||||
if ((lowest == -1 || m_scaled[scalenum].seqid < m_scaled[lowest].seqid) && !primlist.has_reference(m_scaled[scalenum].bitmap))
|
||||
lowest = scalenum;
|
||||
assert_always(lowest != -1, "Too many live texture instances!");
|
||||
|
||||
// throw out any existing entries
|
||||
scaled = &m_scaled[lowest];
|
||||
if (scaled->bitmap != NULL)
|
||||
{
|
||||
m_manager->invalidate_all(scaled->bitmap);
|
||||
global_free(scaled->bitmap);
|
||||
}
|
||||
// throw out any existing entries
|
||||
scaled = &m_scaled[lowest];
|
||||
if (scaled->bitmap != NULL)
|
||||
{
|
||||
m_manager->invalidate_all(scaled->bitmap);
|
||||
global_free(scaled->bitmap);
|
||||
}
|
||||
|
||||
// allocate a new bitmap
|
||||
scaled->bitmap = global_alloc(bitmap_argb32(dwidth, dheight));
|
||||
scaled->seqid = ++m_curseq;
|
||||
// allocate a new bitmap
|
||||
scaled->bitmap = global_alloc(bitmap_argb32(dwidth, dheight));
|
||||
scaled->seqid = ++m_curseq;
|
||||
|
||||
// let the scaler do the work
|
||||
(*m_scaler)(*scaled->bitmap, srcbitmap, m_sbounds, m_param);
|
||||
}
|
||||
// let the scaler do the work
|
||||
(*m_scaler)(*scaled->bitmap, srcbitmap, m_sbounds, m_param);
|
||||
}
|
||||
|
||||
// finally fill out the new info
|
||||
primlist.add_reference(scaled->bitmap);
|
||||
texinfo.base = &scaled->bitmap->pix32(0);
|
||||
texinfo.rowpixels = scaled->bitmap->rowpixels();
|
||||
texinfo.width = dwidth;
|
||||
texinfo.height = dheight;
|
||||
// will be set later
|
||||
texinfo.set_palette(NULL);
|
||||
texinfo.seqid = scaled->seqid;
|
||||
// finally fill out the new info
|
||||
primlist.add_reference(scaled->bitmap);
|
||||
texinfo.base = &scaled->bitmap->pix32(0);
|
||||
texinfo.rowpixels = scaled->bitmap->rowpixels();
|
||||
texinfo.width = dwidth;
|
||||
texinfo.height = dheight;
|
||||
// will be set later
|
||||
texinfo.set_palette(NULL);
|
||||
texinfo.seqid = scaled->seqid;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1817,26 +1817,26 @@ void render_target::add_container_primitives(render_primitive_list &list, const
|
||||
height = MIN(height, m_maxtexheight);
|
||||
|
||||
curitem->texture()->get_scaled(width, height, prim->texture, list);
|
||||
// set the palette
|
||||
// set the palette
|
||||
#if 1
|
||||
const dynamic_array<rgb_t> *adjusted_pal = curitem->texture()->get_adjusted_palette(container);
|
||||
prim->texture.set_palette(adjusted_pal);
|
||||
prim->texture.set_palette(adjusted_pal);
|
||||
#else
|
||||
prim->texture.palette = curitem->texture()->get_adjusted_palette(container);
|
||||
prim->texture.palette = curitem->texture()->get_adjusted_palette(container);
|
||||
#endif
|
||||
|
||||
// determine UV coordinates and apply clipping
|
||||
prim->texcoords = oriented_texcoords[finalorient];
|
||||
clipped = render_clip_quad(&prim->bounds, &cliprect, &prim->texcoords);
|
||||
// determine UV coordinates and apply clipping
|
||||
prim->texcoords = oriented_texcoords[finalorient];
|
||||
clipped = render_clip_quad(&prim->bounds, &cliprect, &prim->texcoords);
|
||||
|
||||
// apply the final orientation from the quad flags and then build up the final flags
|
||||
prim->flags = (curitem->flags() & ~(PRIMFLAG_TEXORIENT_MASK | PRIMFLAG_BLENDMODE_MASK | PRIMFLAG_TEXFORMAT_MASK)) |
|
||||
PRIMFLAG_TEXORIENT(finalorient) |
|
||||
PRIMFLAG_TEXFORMAT(curitem->texture()->format());
|
||||
if (blendmode != -1)
|
||||
prim->flags |= PRIMFLAG_BLENDMODE(blendmode);
|
||||
else
|
||||
prim->flags |= PRIMFLAG_BLENDMODE(PRIMFLAG_GET_BLENDMODE(curitem->flags()));
|
||||
// apply the final orientation from the quad flags and then build up the final flags
|
||||
prim->flags = (curitem->flags() & ~(PRIMFLAG_TEXORIENT_MASK | PRIMFLAG_BLENDMODE_MASK | PRIMFLAG_TEXFORMAT_MASK)) |
|
||||
PRIMFLAG_TEXORIENT(finalorient) |
|
||||
PRIMFLAG_TEXFORMAT(curitem->texture()->format());
|
||||
if (blendmode != -1)
|
||||
prim->flags |= PRIMFLAG_BLENDMODE(blendmode);
|
||||
else
|
||||
prim->flags |= PRIMFLAG_BLENDMODE(PRIMFLAG_GET_BLENDMODE(curitem->flags()));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1876,15 +1876,15 @@ void render_target::add_container_primitives(render_primitive_list &list, const
|
||||
(container_xform.orientation & ORIENTATION_SWAP_XY) ? width : height, prim->texture, list);
|
||||
|
||||
// determine UV coordinates
|
||||
prim->texcoords = oriented_texcoords[container_xform.orientation];
|
||||
prim->texcoords = oriented_texcoords[container_xform.orientation];
|
||||
|
||||
// set the flags and add it to the list
|
||||
prim->flags = PRIMFLAG_TEXORIENT(container_xform.orientation) |
|
||||
PRIMFLAG_BLENDMODE(BLENDMODE_RGB_MULTIPLY) |
|
||||
PRIMFLAG_TEXFORMAT(container.overlay()->format()) |
|
||||
PRIMFLAG_TEXSHADE(1);
|
||||
// set the flags and add it to the list
|
||||
prim->flags = PRIMFLAG_TEXORIENT(container_xform.orientation) |
|
||||
PRIMFLAG_BLENDMODE(BLENDMODE_RGB_MULTIPLY) |
|
||||
PRIMFLAG_TEXFORMAT(container.overlay()->format()) |
|
||||
PRIMFLAG_TEXSHADE(1);
|
||||
|
||||
list.append_or_return(*prim, false);
|
||||
list.append_or_return(*prim, false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1925,17 +1925,17 @@ void render_target::add_element_primitives(render_primitive_list &list, const ob
|
||||
|
||||
texture->get_scaled(width, height, prim->texture, list);
|
||||
|
||||
// compute the clip rect
|
||||
render_bounds cliprect;
|
||||
cliprect.x0 = render_round_nearest(xform.xoffs);
|
||||
cliprect.y0 = render_round_nearest(xform.yoffs);
|
||||
cliprect.x1 = render_round_nearest(xform.xoffs + xform.xscale);
|
||||
cliprect.y1 = render_round_nearest(xform.yoffs + xform.yscale);
|
||||
sect_render_bounds(&cliprect, &m_bounds);
|
||||
// compute the clip rect
|
||||
render_bounds cliprect;
|
||||
cliprect.x0 = render_round_nearest(xform.xoffs);
|
||||
cliprect.y0 = render_round_nearest(xform.yoffs);
|
||||
cliprect.x1 = render_round_nearest(xform.xoffs + xform.xscale);
|
||||
cliprect.y1 = render_round_nearest(xform.yoffs + xform.yscale);
|
||||
sect_render_bounds(&cliprect, &m_bounds);
|
||||
|
||||
// determine UV coordinates and apply clipping
|
||||
prim->texcoords = oriented_texcoords[xform.orientation];
|
||||
bool clipped = render_clip_quad(&prim->bounds, &cliprect, &prim->texcoords);
|
||||
// determine UV coordinates and apply clipping
|
||||
prim->texcoords = oriented_texcoords[xform.orientation];
|
||||
bool clipped = render_clip_quad(&prim->bounds, &cliprect, &prim->texcoords);
|
||||
|
||||
// add to the list or free if we're clipped out
|
||||
list.append_or_return(*prim, clipped);
|
||||
|
@ -213,26 +213,26 @@ struct render_quad_texuv
|
||||
|
||||
struct render_palette_copy
|
||||
{
|
||||
int ref_count;
|
||||
dynamic_array<rgb_t> palette;
|
||||
int ref_count;
|
||||
dynamic_array<rgb_t> palette;
|
||||
};
|
||||
|
||||
class render_texinfo
|
||||
{
|
||||
public:
|
||||
render_texinfo()
|
||||
: base(NULL), rowpixels(0), width(0), height(0),
|
||||
seqid(0), osddata(0), m_palette(NULL)
|
||||
{}
|
||||
render_texinfo()
|
||||
: base(NULL), rowpixels(0), width(0), height(0),
|
||||
seqid(0), osddata(0), m_palette(NULL)
|
||||
{}
|
||||
|
||||
render_texinfo(const render_texinfo &src);
|
||||
render_texinfo(const render_texinfo &src);
|
||||
|
||||
~render_texinfo()
|
||||
{
|
||||
free_palette();
|
||||
}
|
||||
~render_texinfo()
|
||||
{
|
||||
free_palette();
|
||||
}
|
||||
|
||||
render_texinfo &operator=(const render_texinfo &src);
|
||||
render_texinfo &operator=(const render_texinfo &src);
|
||||
|
||||
void * base; // base of the data
|
||||
UINT32 rowpixels; // pixels per row
|
||||
@ -241,14 +241,14 @@ public:
|
||||
UINT32 seqid; // sequence ID
|
||||
UINT64 osddata; // aux data to pass to osd
|
||||
|
||||
const rgb_t * palette() const { return ((m_palette == NULL) ? NULL : &m_palette->palette[0]); }
|
||||
const rgb_t * palette() const { return ((m_palette == NULL) ? NULL : &m_palette->palette[0]); }
|
||||
|
||||
void set_palette(const dynamic_array<rgb_t> *source);
|
||||
void set_palette(const dynamic_array<rgb_t> *source);
|
||||
|
||||
private:
|
||||
void free_palette();
|
||||
void free_palette();
|
||||
|
||||
render_palette_copy *m_palette; // palette for PALETTE16 textures, LUTs for RGB15/RGB32
|
||||
render_palette_copy *m_palette; // palette for PALETTE16 textures, LUTs for RGB15/RGB32
|
||||
};
|
||||
|
||||
|
||||
|
@ -92,14 +92,14 @@ render_font::render_font(render_manager &manager, const char *filename)
|
||||
m_osdfont = manager.machine().osd().font_alloc();
|
||||
if (m_osdfont != NULL)
|
||||
{
|
||||
if (m_osdfont->open(manager.machine().options().font_path(), filename, m_height))
|
||||
{
|
||||
m_scale = 1.0f / (float)m_height;
|
||||
m_format = FF_OSD;
|
||||
return;
|
||||
}
|
||||
global_free(m_osdfont);
|
||||
m_osdfont = NULL;
|
||||
if (m_osdfont->open(manager.machine().options().font_path(), filename, m_height))
|
||||
{
|
||||
m_scale = 1.0f / (float)m_height;
|
||||
m_format = FF_OSD;
|
||||
return;
|
||||
}
|
||||
global_free(m_osdfont);
|
||||
m_osdfont = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
@ -136,8 +136,8 @@ render_font::~render_font()
|
||||
// release the OSD font
|
||||
if (m_osdfont != NULL)
|
||||
{
|
||||
m_osdfont->close();
|
||||
global_free(m_osdfont);
|
||||
m_osdfont->close();
|
||||
global_free(m_osdfont);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -109,9 +109,9 @@ void ui_menu_device_config::populate()
|
||||
const rectangle &visarea = screen->visible_area();
|
||||
|
||||
string.catprintf("%d " UTF8_MULTIPLY " %d (%s) %f" UTF8_NBSP "Hz\n",
|
||||
visarea.width(), visarea.height(),
|
||||
(machine().system().flags & ORIENTATION_SWAP_XY) ? "V" : "H",
|
||||
ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds));
|
||||
visarea.width(), visarea.height(),
|
||||
(machine().system().flags & ORIENTATION_SWAP_XY) ? "V" : "H",
|
||||
ATTOSECONDS_TO_HZ(screen->frame_period().attoseconds));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -275,7 +275,7 @@ void ui_menu_device_config::populate()
|
||||
}
|
||||
|
||||
if ((execiter.count() + scriter.count() + snditer.count() + imgiter.count() + slotiter.count() + bios + dips + confs
|
||||
+ input + input_mj + input_hana + input_gamble + input_analog + input_adjust + input_keypad + input_keyboard) == 0)
|
||||
+ input + input_mj + input_hana + input_gamble + input_analog + input_adjust + input_keypad + input_keyboard) == 0)
|
||||
string.cat("[None]\n");
|
||||
|
||||
const_cast<machine_config &>(machine().config()).device_remove(&machine().config().root_device(), m_option->name());
|
||||
|
@ -83,9 +83,9 @@ void ui_menu_tape_control::populate()
|
||||
(state & CASSETTE_MASK_UISTATE) == CASSETTE_STOPPED
|
||||
? "stopped"
|
||||
: ((state & CASSETTE_MASK_UISTATE) == CASSETTE_PLAY
|
||||
? ((state & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_ENABLED ? "playing" : "(playing)")
|
||||
: ((state & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_ENABLED ? "recording" : "(recording)")
|
||||
),
|
||||
? ((state & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_ENABLED ? "playing" : "(playing)")
|
||||
: ((state & CASSETTE_MASK_MOTOR) == CASSETTE_MOTOR_ENABLED ? "recording" : "(recording)")
|
||||
),
|
||||
timepos,
|
||||
tapeflags,
|
||||
TAPECMD_SLIDER);
|
||||
|
@ -100,12 +100,12 @@ public:
|
||||
void resize_keep_and_clear_new(int count, UINT8 data = 0) { int oldcount = m_count; resize_keep(count); if (oldcount < m_count) clear_internal(oldcount, m_count - oldcount, data); }
|
||||
|
||||
// batch operations
|
||||
void copyfrom(const dynamic_array<_ElementType> &source)
|
||||
{
|
||||
resize(source.count());
|
||||
for (int i=0; i < source.count(); i++)
|
||||
m_array[i] = source[i];
|
||||
}
|
||||
void copyfrom(const dynamic_array<_ElementType> &source)
|
||||
{
|
||||
resize(source.count());
|
||||
for (int i=0; i < source.count(); i++)
|
||||
m_array[i] = source[i];
|
||||
}
|
||||
|
||||
private:
|
||||
// internal helpers
|
||||
|
@ -171,7 +171,7 @@ public:
|
||||
// entry list getters
|
||||
const rgb_t *entry_list_raw() const { return m_entry_color; }
|
||||
const dynamic_array<rgb_t> *entry_list_adjusted_darray() const { return &m_adjusted_color; }
|
||||
const rgb_t *entry_list_adjusted() const { return m_adjusted_color; }
|
||||
const rgb_t *entry_list_adjusted() const { return m_adjusted_color; }
|
||||
const rgb_t *entry_list_adjusted_rgb15() const { return m_adjusted_rgb15; }
|
||||
|
||||
// group adjustments
|
||||
|
@ -46,47 +46,47 @@
|
||||
/* ---------------------------------------------------------------------- */
|
||||
static NETLIST_START(nl_mario_snd0)
|
||||
|
||||
RES(R17, RES_K(27)) /* 20 according to parts list */
|
||||
/* 27 verified, 30K in schematics */
|
||||
CAP(C14, CAP_U(4.7)) /* verified */
|
||||
RES(R17, RES_K(27)) /* 20 according to parts list */
|
||||
/* 27 verified, 30K in schematics */
|
||||
CAP(C14, CAP_U(4.7)) /* verified */
|
||||
|
||||
TTL_74123(2H_A)
|
||||
NET_C(2H_A.VCC, V5)
|
||||
NET_C(2H_A.GND, GND)
|
||||
NET_C(SOUND0.Q, 2H_A.B)
|
||||
NET_C(GND, 2H_A.A)
|
||||
NET_C(2H_A.CLRQ, ttlhigh) /* NOT IN SCHEMATICS */
|
||||
DIODE(D1, "1N4148") /* FIXME: try to identify */
|
||||
TTL_7404_INVERT(1H_A, 2H_A.QQ)
|
||||
NET_C(R17.1, V5)
|
||||
NET_C(R17.2, D1.A, C14.1)
|
||||
NET_C(D1.K, 2H_A.RC)
|
||||
NET_C(C14.2, 2H_A.C)
|
||||
TTL_74123(2H_A)
|
||||
NET_C(2H_A.VCC, V5)
|
||||
NET_C(2H_A.GND, GND)
|
||||
NET_C(SOUND0.Q, 2H_A.B)
|
||||
NET_C(GND, 2H_A.A)
|
||||
NET_C(2H_A.CLRQ, ttlhigh) /* NOT IN SCHEMATICS */
|
||||
DIODE(D1, "1N4148") /* FIXME: try to identify */
|
||||
TTL_7404_INVERT(1H_A, 2H_A.QQ)
|
||||
NET_C(R17.1, V5)
|
||||
NET_C(R17.2, D1.A, C14.1)
|
||||
NET_C(D1.K, 2H_A.RC)
|
||||
NET_C(C14.2, 2H_A.C)
|
||||
|
||||
RES(R6, RES_K(4.7)) /* verified */
|
||||
CAP(C3, CAP_U(10)) /* verified */
|
||||
RES(R6, RES_K(4.7)) /* verified */
|
||||
CAP(C3, CAP_U(10)) /* verified */
|
||||
|
||||
NET_C(1H_A.Q, R6.1)
|
||||
NET_C(R6.2, C3.1, 1J_A.FC)
|
||||
NET_C(R6.2, 2J_A.FC)
|
||||
NET_C(C3.2, GND)
|
||||
NET_C(1H_A.Q, R6.1)
|
||||
NET_C(R6.2, C3.1, 1J_A.FC)
|
||||
NET_C(R6.2, 2J_A.FC)
|
||||
NET_C(C3.2, GND)
|
||||
|
||||
//#define MR_C6 CAP_N(3.9) /* verified */
|
||||
//#define MR_C6 CAP_N(3.9) /* verified */
|
||||
|
||||
SN74LS629(1J_A, CAP_N(3.9))
|
||||
NET_C(1J_A.RNG, V5)
|
||||
NET_C(1J_A.ENQ, ttllow)
|
||||
NET_C(GND, 1J_A.GND)
|
||||
SN74LS629(1J_A, CAP_N(3.9))
|
||||
NET_C(1J_A.RNG, V5)
|
||||
NET_C(1J_A.ENQ, ttllow)
|
||||
NET_C(GND, 1J_A.GND)
|
||||
|
||||
//#define MR_C17 CAP_N(22) /* verified */
|
||||
//#define MR_C17 CAP_N(22) /* verified */
|
||||
|
||||
SN74LS629(2J_A, CAP_N(22))
|
||||
NET_C(2J_A.RNG, V5)
|
||||
NET_C(2J_A.ENQ, ttllow)
|
||||
NET_C(GND, 2J_A.GND)
|
||||
SN74LS629(2J_A, CAP_N(22))
|
||||
NET_C(2J_A.RNG, V5)
|
||||
NET_C(2J_A.ENQ, ttllow)
|
||||
NET_C(GND, 2J_A.GND)
|
||||
|
||||
TTL_7486_XOR(1K_A, 1J_A.Y, 2J_A.Y)
|
||||
TTL_7408_AND(2K_A, 2H_A.Q, 1K_A)
|
||||
TTL_7486_XOR(1K_A, 1J_A.Y, 2J_A.Y)
|
||||
TTL_7408_AND(2K_A, 2H_A.Q, 1K_A)
|
||||
NETLIST_END()
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
@ -96,49 +96,49 @@ NETLIST_END()
|
||||
// FIXME: Diodes are 1S953
|
||||
static NETLIST_START(nl_mario_snd7)
|
||||
|
||||
RES(R61, RES_K(47))
|
||||
CAP(C41, CAP_U(4.7)) /* verified */
|
||||
RES(R61, RES_K(47))
|
||||
CAP(C41, CAP_U(4.7)) /* verified */
|
||||
|
||||
TTL_74123(4L_A)
|
||||
NET_C(4L_A.VCC, V5)
|
||||
NET_C(4L_A.GND, GND)
|
||||
NET_C(SOUND7.Q, 4L_A.B)
|
||||
NET_C(GND, 4L_A.A)
|
||||
NET_C(4L_A.CLRQ, ttlhigh) /* NOT IN SCHEMATICS */
|
||||
DIODE(D10, "1N4148") /* FIXME: try to identify */
|
||||
TTL_7404_INVERT(4J_A, 4L_A.Q)
|
||||
NET_C(R61.1, V5)
|
||||
NET_C(R61.2, D10.A, C41.1)
|
||||
NET_C(D10.K, 4L_A.RC)
|
||||
NET_C(C41.2, 4L_A.C)
|
||||
TTL_74123(4L_A)
|
||||
NET_C(4L_A.VCC, V5)
|
||||
NET_C(4L_A.GND, GND)
|
||||
NET_C(SOUND7.Q, 4L_A.B)
|
||||
NET_C(GND, 4L_A.A)
|
||||
NET_C(4L_A.CLRQ, ttlhigh) /* NOT IN SCHEMATICS */
|
||||
DIODE(D10, "1N4148") /* FIXME: try to identify */
|
||||
TTL_7404_INVERT(4J_A, 4L_A.Q)
|
||||
NET_C(R61.1, V5)
|
||||
NET_C(R61.2, D10.A, C41.1)
|
||||
NET_C(D10.K, 4L_A.RC)
|
||||
NET_C(C41.2, 4L_A.C)
|
||||
|
||||
RES(R65, RES_K(10))
|
||||
CAP(C44, CAP_U(3.3)) /* verified */
|
||||
RES(R65, RES_K(10))
|
||||
CAP(C44, CAP_U(3.3)) /* verified */
|
||||
|
||||
SN74LS629(4K_A, CAP_U(0.022))
|
||||
NET_C(4K_A.RNG, V5)
|
||||
NET_C(4K_A.ENQ, ttllow)
|
||||
NET_C(GND, 4K_A.GND)
|
||||
NET_C(R65.1, 4J_A.Q)
|
||||
NET_C(R65.2, 4K_A.FC, C44.1)
|
||||
NET_C(C44.2, GND)
|
||||
SN74LS629(4K_A, CAP_U(0.022))
|
||||
NET_C(4K_A.RNG, V5)
|
||||
NET_C(4K_A.ENQ, ttllow)
|
||||
NET_C(GND, 4K_A.GND)
|
||||
NET_C(R65.1, 4J_A.Q)
|
||||
NET_C(R65.2, 4K_A.FC, C44.1)
|
||||
NET_C(C44.2, GND)
|
||||
|
||||
CD_4020(3H, 4K_B.Y, ttllow, V5, GND)
|
||||
TTL_7404_INVERT(4J_B, 3H.Q12)
|
||||
CD_4020(3H, 4K_B.Y, ttllow, V5, GND)
|
||||
TTL_7404_INVERT(4J_B, 3H.Q12)
|
||||
|
||||
RES(R64, RES_K(20))
|
||||
CAP(C43, CAP_U(3.3)) /* verified */
|
||||
RES(R64, RES_K(20))
|
||||
CAP(C43, CAP_U(3.3)) /* verified */
|
||||
|
||||
SN74LS629(4K_B, CAP_U(0.0047))
|
||||
NET_C(4K_B.RNG, V5)
|
||||
NET_C(4K_B.ENQ, ttllow)
|
||||
NET_C(GND, 4K_B.GND)
|
||||
NET_C(R64.1, 4J_B.Q)
|
||||
NET_C(R64.2, 4K_B.FC, C43.1)
|
||||
NET_C(C43.2, GND)
|
||||
SN74LS629(4K_B, CAP_U(0.0047))
|
||||
NET_C(4K_B.RNG, V5)
|
||||
NET_C(4K_B.ENQ, ttllow)
|
||||
NET_C(GND, 4K_B.GND)
|
||||
NET_C(R64.1, 4J_B.Q)
|
||||
NET_C(R64.2, 4K_B.FC, C43.1)
|
||||
NET_C(C43.2, GND)
|
||||
|
||||
TTL_7486_XOR(1K_C, 3H.Q4, 4K_A.Y)
|
||||
TTL_7408_AND(2K_C, 4L_A.Q, 1K_C)
|
||||
TTL_7486_XOR(1K_C, 3H.Q4, 4K_A.Y)
|
||||
TTL_7408_AND(2K_C, 4L_A.Q, 1K_C)
|
||||
|
||||
NETLIST_END()
|
||||
|
||||
@ -146,140 +146,140 @@ NETLIST_END()
|
||||
/* DAC sound */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
static NETLIST_START(nl_mario_dac)
|
||||
RES(R34, RES_M(2))
|
||||
RES(R35, RES_M(1))
|
||||
RES(R36, RES_M(1.8))
|
||||
LM3900(3M_1)
|
||||
NET_C(3M_1.VM, GND)
|
||||
NET_C(3M_1.VP, V5)
|
||||
RES(R34, RES_M(2))
|
||||
RES(R35, RES_M(1))
|
||||
RES(R36, RES_M(1.8))
|
||||
LM3900(3M_1)
|
||||
NET_C(3M_1.VM, GND)
|
||||
NET_C(3M_1.VP, V5)
|
||||
|
||||
NET_C(DAC.VOUT, R34.1)
|
||||
NET_C(3M_1.MINUS, R34.2, R35.2)
|
||||
NET_C(3M_1.OUT, R35.1)
|
||||
NET_C(3M_1.PLUS, R36.1)
|
||||
NET_C(R36.2, GND)
|
||||
NET_C(DAC.VOUT, R34.1)
|
||||
NET_C(3M_1.MINUS, R34.2, R35.2)
|
||||
NET_C(3M_1.OUT, R35.1)
|
||||
NET_C(3M_1.PLUS, R36.1)
|
||||
NET_C(R36.2, GND)
|
||||
|
||||
RES(R21, RES_M(1.8))
|
||||
RES(R23, RES_K(10))
|
||||
RES(R25, RES_K(10))
|
||||
RES(R37, RES_K(750))
|
||||
RES(R38, RES_K(360))
|
||||
RES(R39, RES_K(750))
|
||||
RES(R21, RES_M(1.8))
|
||||
RES(R23, RES_K(10))
|
||||
RES(R25, RES_K(10))
|
||||
RES(R37, RES_K(750))
|
||||
RES(R38, RES_K(360))
|
||||
RES(R39, RES_K(750))
|
||||
|
||||
CAP(C18, CAP_P(100))
|
||||
CAP(C19, CAP_U(10))
|
||||
CAP(C20, CAP_U(1))
|
||||
CAP(C30, CAP_P(100))
|
||||
CAP(C18, CAP_P(100))
|
||||
CAP(C19, CAP_U(10))
|
||||
CAP(C20, CAP_U(1))
|
||||
CAP(C30, CAP_P(100))
|
||||
|
||||
LM3900(3M_2)
|
||||
NET_C(3M_2.VM, GND)
|
||||
NET_C(3M_2.VP, V5)
|
||||
LM3900(3M_2)
|
||||
NET_C(3M_2.VM, GND)
|
||||
NET_C(3M_2.VP, V5)
|
||||
|
||||
NET_C(R35.1, C20.1)
|
||||
NET_C(C20.2, R37.1)
|
||||
NET_C(R37.2, R38.2, C18.1, R39.2)
|
||||
NET_C(R35.1, C20.1)
|
||||
NET_C(C20.2, R37.1)
|
||||
NET_C(R37.2, R38.2, C18.1, R39.2)
|
||||
|
||||
NET_C(C18.2, GND)
|
||||
NET_C(R38.1, C30.2, 3M_2.MINUS)
|
||||
NET_C(3M_2.OUT, R39.1, C30.1)
|
||||
NET_C(C18.2, GND)
|
||||
NET_C(R38.1, C30.2, 3M_2.MINUS)
|
||||
NET_C(3M_2.OUT, R39.1, C30.1)
|
||||
|
||||
NET_C(R21.1, 3M_2.PLUS)
|
||||
NET_C(R21.2, C19.1, R25.2, R23.1)
|
||||
NET_C(C19.2, R23.2, GND)
|
||||
NET_C(R25.1, V5)
|
||||
NET_C(R21.1, 3M_2.PLUS)
|
||||
NET_C(R21.2, C19.1, R25.2, R23.1)
|
||||
NET_C(C19.2, R23.2, GND)
|
||||
NET_C(R25.1, V5)
|
||||
NETLIST_END()
|
||||
|
||||
static NETLIST_START(nl_mario)
|
||||
|
||||
/* Standard stuff */
|
||||
/* Standard stuff */
|
||||
|
||||
SOLVER(Solver, 48000)
|
||||
PARAM(Solver.ACCURACY, 1e-8)
|
||||
PARAM(Solver.SOR_FACTOR, 1.0)
|
||||
PARAM(Solver.GS_THRESHOLD, 5)
|
||||
PARAM(Solver.GS_LOOPS, 4)
|
||||
//PARAM(Solver.LTE, 5e-2) // Default is not enough for paddle control
|
||||
PARAM(Solver.DYNAMIC_TS, 0)
|
||||
ANALOG_INPUT(V5, 5)
|
||||
SOLVER(Solver, 48000)
|
||||
PARAM(Solver.ACCURACY, 1e-8)
|
||||
PARAM(Solver.SOR_FACTOR, 1.0)
|
||||
PARAM(Solver.GS_THRESHOLD, 5)
|
||||
PARAM(Solver.GS_LOOPS, 4)
|
||||
//PARAM(Solver.LTE, 5e-2) // Default is not enough for paddle control
|
||||
PARAM(Solver.DYNAMIC_TS, 0)
|
||||
ANALOG_INPUT(V5, 5)
|
||||
|
||||
TTL_INPUT(SOUND0, 1)
|
||||
INCLUDE(nl_mario_snd0)
|
||||
TTL_INPUT(SOUND0, 1)
|
||||
INCLUDE(nl_mario_snd0)
|
||||
|
||||
TTL_INPUT(SOUND7, 1)
|
||||
INCLUDE(nl_mario_snd7)
|
||||
TTL_INPUT(SOUND7, 1)
|
||||
INCLUDE(nl_mario_snd7)
|
||||
|
||||
R2R_DAC(DAC, 3.4, 10000.0, 8)
|
||||
NET_C(DAC.VGND, GND)
|
||||
R2R_DAC(DAC, 3.4, 10000.0, 8)
|
||||
NET_C(DAC.VGND, GND)
|
||||
|
||||
INCLUDE(nl_mario_dac)
|
||||
INCLUDE(nl_mario_dac)
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* mixing */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* mixing */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
RES(R20, RES_K(22)) /* verified */
|
||||
RES(R19, RES_K(22)) /* verified */
|
||||
RES(R40, RES_K(22)) /* verified */
|
||||
RES(R41, RES_K(100)) /* verified */
|
||||
CAP(C31, CAP_U(0.022)) /* */
|
||||
RES(R20, RES_K(22)) /* verified */
|
||||
RES(R19, RES_K(22)) /* verified */
|
||||
RES(R40, RES_K(22)) /* verified */
|
||||
RES(R41, RES_K(100)) /* verified */
|
||||
CAP(C31, CAP_U(0.022)) /* */
|
||||
|
||||
NET_C(2K_A.Q, R20.1)
|
||||
NET_C(GND, R19.1) //FIXME
|
||||
NET_C(2K_C.Q, R41.1)
|
||||
NET_C(2K_A.Q, R20.1)
|
||||
NET_C(GND, R19.1) //FIXME
|
||||
NET_C(2K_C.Q, R41.1)
|
||||
|
||||
#if 1
|
||||
RES(DUM, RES_K(22))
|
||||
NET_C(R39.1, DUM.1)
|
||||
NET_C(DUM.2, GND)
|
||||
FRONTIER(front1, R39.1, R40.1)
|
||||
RES(DUM, RES_K(22))
|
||||
NET_C(R39.1, DUM.1)
|
||||
NET_C(DUM.2, GND)
|
||||
FRONTIER(front1, R39.1, R40.1)
|
||||
#else
|
||||
NET_C(R39.1, R40.1)
|
||||
NET_C(R39.1, R40.1)
|
||||
#endif
|
||||
|
||||
NET_C(R20.2, R19.2, R40.2, R41.2, C31.1)
|
||||
NET_C(C31.2, GND)
|
||||
NET_C(R20.2, R19.2, R40.2, R41.2, C31.1)
|
||||
NET_C(C31.2, GND)
|
||||
|
||||
CAP(C32, CAP_U(1)) /* verified */
|
||||
RES(R42, RES_K(43)) /* verified */
|
||||
RES(R43, RES_K(100)) /* verified */
|
||||
CAP(C32, CAP_U(1)) /* verified */
|
||||
RES(R42, RES_K(43)) /* verified */
|
||||
RES(R43, RES_K(100)) /* verified */
|
||||
|
||||
NET_C(C31.1, C32.1)
|
||||
NET_C(C32.2, R42.1, R43.2, Q10.B)
|
||||
//NET_C(C32.2, R42.1, R43.2)
|
||||
NET_C(R43.1, V5)
|
||||
NET_C(R42.2, GND)
|
||||
NET_C(C31.1, C32.1)
|
||||
NET_C(C32.2, R42.1, R43.2, Q10.B)
|
||||
//NET_C(C32.2, R42.1, R43.2)
|
||||
NET_C(R43.1, V5)
|
||||
NET_C(R42.2, GND)
|
||||
#if 1
|
||||
RES(R63, RES_K(1)) /* */
|
||||
RES(R62, 150) /* */
|
||||
RES(R63, RES_K(1)) /* */
|
||||
RES(R62, 150) /* */
|
||||
|
||||
QBJT_EB(Q10, "2SC1815")
|
||||
QBJT_EB(Q10, "2SC1815")
|
||||
|
||||
NET_C(R62.2, GND)
|
||||
NET_C(R62.1, Q10.E)
|
||||
NET_C(R62.2, GND)
|
||||
NET_C(R62.1, Q10.E)
|
||||
|
||||
NET_C(R63.1, V5)
|
||||
NET_C(R63.2, Q10.C)
|
||||
NET_C(R63.1, V5)
|
||||
NET_C(R63.2, Q10.C)
|
||||
|
||||
CAP(C42, CAP_U(0.1))
|
||||
CAP(C47, CAP_U(4.7))
|
||||
RES(VR1, RES_K(10))
|
||||
CAP(C42, CAP_U(0.1))
|
||||
CAP(C47, CAP_U(4.7))
|
||||
RES(VR1, RES_K(10))
|
||||
|
||||
NET_C(C42.1, C47.1, R62.1)
|
||||
NET_C(C42.2, GND)
|
||||
NET_C(C47.2, VR1.1)
|
||||
NET_C(VR1.2, GND)
|
||||
NET_C(C42.1, C47.1, R62.1)
|
||||
NET_C(C42.2, GND)
|
||||
NET_C(C47.2, VR1.1)
|
||||
NET_C(VR1.2, GND)
|
||||
#endif
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* Output */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
/* Output */
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
RES(ROUT, 1000000)
|
||||
RES(ROUT, 1000000)
|
||||
|
||||
//NET_C(Q10.C, ROUT.1)
|
||||
//NET_C(R43.2, ROUT.1)
|
||||
NET_C(VR1.1, ROUT.1)
|
||||
//NET_C(Q10.C, ROUT.1)
|
||||
//NET_C(R43.2, ROUT.1)
|
||||
NET_C(VR1.1, ROUT.1)
|
||||
|
||||
NET_C(GND, ROUT.2)
|
||||
NET_C(GND, ROUT.2)
|
||||
|
||||
NETLIST_END()
|
||||
|
||||
@ -790,7 +790,7 @@ WRITE8_MEMBER(mario_state::mario_sh1_w)
|
||||
#if OLD_SOUND
|
||||
m_discrete->write(space, DS_SOUND0_INP, 0);
|
||||
#else
|
||||
m_audio_snd0->write(data);
|
||||
m_audio_snd0->write(data);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -835,7 +835,7 @@ WRITE8_MEMBER(mario_state::mario_sh3_w)
|
||||
#if OLD_SOUND
|
||||
machine().device<discrete_device>("discrete")->write(space, DS_SOUND7_INP, data & 1);
|
||||
#else
|
||||
m_audio_snd7->write((data & 1) ^ 1);
|
||||
m_audio_snd7->write((data & 1) ^ 1);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
@ -891,16 +891,16 @@ MACHINE_CONFIG_FRAGMENT( mario_audio )
|
||||
MCFG_DISCRETE_INTF(mario)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1)
|
||||
#else
|
||||
MCFG_SOUND_ADD("snd_nl", NETLIST_SOUND, 48000)
|
||||
MCFG_NETLIST_SETUP(nl_mario)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MCFG_SOUND_ADD("snd_nl", NETLIST_SOUND, 48000)
|
||||
MCFG_NETLIST_SETUP(nl_mario)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
|
||||
MCFG_NETLIST_LOGIC_INPUT("snd_nl", "snd0", "SOUND0.IN", 0, 1)
|
||||
MCFG_NETLIST_LOGIC_INPUT("snd_nl", "snd7", "SOUND7.IN", 0, 1)
|
||||
MCFG_NETLIST_LOGIC_INPUT("snd_nl", "dac", "DAC.VAL", 0, 255)
|
||||
MCFG_NETLIST_LOGIC_INPUT("snd_nl", "snd0", "SOUND0.IN", 0, 1)
|
||||
MCFG_NETLIST_LOGIC_INPUT("snd_nl", "snd7", "SOUND7.IN", 0, 1)
|
||||
MCFG_NETLIST_LOGIC_INPUT("snd_nl", "dac", "DAC.VAL", 0, 255)
|
||||
|
||||
MCFG_NETLIST_STREAM_OUTPUT("snd_nl", 0, "ROUT.1")
|
||||
MCFG_NETLIST_ANALOG_MULT_OFFSET(150000.0, 0.0)
|
||||
MCFG_NETLIST_STREAM_OUTPUT("snd_nl", 0, "ROUT.1")
|
||||
MCFG_NETLIST_ANALOG_MULT_OFFSET(150000.0, 0.0)
|
||||
#endif
|
||||
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -229,21 +229,11 @@ WRITE8_MEMBER( seibu_sound_device::rst18_ack_w )
|
||||
update_irq_lines(RST18_CLEAR);
|
||||
}
|
||||
|
||||
void seibu_sound_device::ym3812_irqhandler(int linestate)
|
||||
{
|
||||
update_irq_lines(linestate ? RST10_ASSERT : RST10_CLEAR);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER( seibu_sound_device::ym2151_irqhandler )
|
||||
WRITE_LINE_MEMBER( seibu_sound_device::fm_irqhandler )
|
||||
{
|
||||
update_irq_lines(state ? RST10_ASSERT : RST10_CLEAR);
|
||||
}
|
||||
|
||||
void seibu_sound_device::ym2203_irqhandler(int linestate)
|
||||
{
|
||||
update_irq_lines(linestate ? RST10_ASSERT : RST10_CLEAR);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( seibu_sound_device::bank_w )
|
||||
{
|
||||
space.machine().root_device().membank("bank1")->set_entry(data & 1);
|
||||
|
@ -45,17 +45,13 @@ public:
|
||||
|
||||
DECLARE_READ16_MEMBER( main_word_r );
|
||||
DECLARE_WRITE16_MEMBER( main_word_w );
|
||||
|
||||
DECLARE_WRITE16_MEMBER( main_mustb_w );
|
||||
|
||||
DECLARE_WRITE8_MEMBER( irq_clear_w );
|
||||
DECLARE_WRITE8_MEMBER( rst10_ack_w );
|
||||
DECLARE_WRITE8_MEMBER( rst18_ack_w );
|
||||
DECLARE_WRITE8_MEMBER( bank_w );
|
||||
DECLARE_WRITE8_MEMBER( coin_w );
|
||||
void ym3812_irqhandler(int linestate);
|
||||
WRITE_LINE_MEMBER(ym2151_irqhandler);
|
||||
void ym2203_irqhandler(int linestate);
|
||||
WRITE_LINE_MEMBER( fm_irqhandler );
|
||||
DECLARE_READ8_MEMBER( soundlatch_r );
|
||||
DECLARE_READ8_MEMBER( main_data_pending_r );
|
||||
DECLARE_WRITE8_MEMBER( main_data_w );
|
||||
@ -193,8 +189,8 @@ extern const device_type SEIBU_ADPCM;
|
||||
#define SEIBU_SOUND_SYSTEM_YM3812_INTERFACE(freq1,freq2) \
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono") \
|
||||
\
|
||||
MCFG_SOUND_ADD("ymsnd", YM3812, freq1) \
|
||||
MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, ym3812_irqhandler)) \
|
||||
MCFG_SOUND_ADD("ymsnd", YM3812, freq1) \
|
||||
MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) \
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) \
|
||||
\
|
||||
MCFG_OKIM6295_ADD("oki", freq2, OKIM6295_PIN7_LOW) \
|
||||
@ -203,8 +199,8 @@ extern const device_type SEIBU_ADPCM;
|
||||
#define SEIBU_SOUND_SYSTEM_YM3812_RAIDEN_INTERFACE(freq1,freq2) \
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono") \
|
||||
\
|
||||
MCFG_SOUND_ADD("ymsnd", YM3812, freq1) \
|
||||
MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, ym3812_irqhandler)) \
|
||||
MCFG_SOUND_ADD("ymsnd", YM3812, freq1) \
|
||||
MCFG_YM3812_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) \
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) \
|
||||
\
|
||||
MCFG_OKIM6295_ADD("oki", freq2, OKIM6295_PIN7_HIGH) \
|
||||
@ -213,8 +209,8 @@ extern const device_type SEIBU_ADPCM;
|
||||
#define SEIBU_SOUND_SYSTEM_YM2151_INTERFACE(freq1,freq2) \
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono") \
|
||||
\
|
||||
MCFG_YM2151_ADD("ymsnd", freq1) \
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, ym2151_irqhandler)) \
|
||||
MCFG_YM2151_ADD("ymsnd", freq1) \
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) \
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.50) \
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.50) \
|
||||
\
|
||||
@ -224,16 +220,16 @@ extern const device_type SEIBU_ADPCM;
|
||||
#define SEIBU_AIRRAID_SOUND_SYSTEM_YM2151_INTERFACE(freq1) \
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono") \
|
||||
\
|
||||
MCFG_YM2151_ADD("ymsnd", freq1) \
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, ym2151_irqhandler)) \
|
||||
MCFG_YM2151_ADD("ymsnd", freq1) \
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) \
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.50) \
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.50)
|
||||
|
||||
#define SEIBU_SOUND_SYSTEM_YM2151_RAIDEN2_INTERFACE(freq1,freq2,regiona, regionb) \
|
||||
#define SEIBU_SOUND_SYSTEM_YM2151_RAIDEN2_INTERFACE(freq1, freq2, regiona, regionb) \
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono") \
|
||||
\
|
||||
MCFG_YM2151_ADD("ymsnd", freq1) \
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, ym2151_irqhandler)) \
|
||||
MCFG_YM2151_ADD("ymsnd", freq1) \
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) \
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.50) \
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.50) \
|
||||
\
|
||||
@ -247,7 +243,7 @@ extern const device_type SEIBU_ADPCM;
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono") \
|
||||
\
|
||||
MCFG_SOUND_ADD("ym1", YM2203, freq) \
|
||||
MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, ym2203_irqhandler)) \
|
||||
MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) \
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) \
|
||||
\
|
||||
MCFG_SOUND_ADD("ym2", YM2203, freq) \
|
||||
@ -255,11 +251,11 @@ extern const device_type SEIBU_ADPCM;
|
||||
|
||||
#define SEIBU_SOUND_SYSTEM_ADPCM_INTERFACE \
|
||||
MCFG_SOUND_ADD("adpcm1", SEIBU_ADPCM, 8000) \
|
||||
MCFG_SEIBU_ADPCM_ROMREGION("adpcm1") \
|
||||
MCFG_SEIBU_ADPCM_ROMREGION("adpcm1") \
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) \
|
||||
\
|
||||
MCFG_SOUND_ADD("adpcm2", SEIBU_ADPCM, 8000) \
|
||||
MCFG_SEIBU_ADPCM_ROMREGION("adpcm2") \
|
||||
MCFG_SEIBU_ADPCM_ROMREGION("adpcm2") \
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40)
|
||||
|
||||
/**************************************************************************/
|
||||
|
@ -178,8 +178,8 @@ class aleck64_state : public n64_state
|
||||
public:
|
||||
aleck64_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: n64_state(mconfig, type, tag),
|
||||
m_e90_vram(*this,"e90vram"),
|
||||
m_e90_pal(*this,"e90pal"),
|
||||
m_e90_vram(*this,"e90vram"),
|
||||
m_e90_pal(*this,"e90pal"),
|
||||
m_dip_read_offset(0) { }
|
||||
|
||||
optional_shared_ptr<UINT32> m_e90_vram;
|
||||
@ -342,7 +342,7 @@ WRITE16_MEMBER(aleck64_state::e90_prot_w)
|
||||
if(data & 1) // 0 -> 1 transition
|
||||
{
|
||||
//for(int i=0;i<0x1000;i+=4)
|
||||
// space.write_dword(0x007502f4+i,space.read_dword(0xd0000000+i));
|
||||
// space.write_dword(0x007502f4+i,space.read_dword(0xd0000000+i));
|
||||
}
|
||||
break;
|
||||
//0x1e bit 0 probably enables the chip
|
||||
|
@ -106,7 +106,6 @@ public:
|
||||
required_ioport m_io_in3;
|
||||
required_device<palette_device> m_palette;
|
||||
required_shared_ptr<UINT32> m_generic_paletteram_32;
|
||||
DECLARE_WRITE_LINE_MEMBER(sound_irq_gen);
|
||||
};
|
||||
|
||||
//UINT32 *backfire_180010, *backfire_188010;
|
||||
@ -439,11 +438,6 @@ static GFXDECODE_START( backfire )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(backfire_state::sound_irq_gen)
|
||||
{
|
||||
logerror("sound irq\n");
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(backfire_state::deco32_vbl_interrupt)
|
||||
{
|
||||
device.execute().set_input_line(ARM_IRQ_LINE, HOLD_LINE);
|
||||
@ -559,7 +553,6 @@ static MACHINE_CONFIG_START( backfire, backfire_state )
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, 28000000 / 2)
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(backfire_state, sound_irq_gen))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -610,13 +610,6 @@ MACHINE_START_MEMBER(sc4_state,sc4)
|
||||
}
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(sc4_state::bfm_sc4_irqhandler)
|
||||
{
|
||||
logerror("YMZ280 is generating an interrupt. State=%08x\n",state);
|
||||
}
|
||||
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(sc4_state::bfm_sc4_duart_irq_handler)
|
||||
{
|
||||
// triggers after reel tests on luckb, at the start on dnd...
|
||||
@ -709,7 +702,6 @@ MACHINE_CONFIG_FRAGMENT( sc4_common )
|
||||
// MCFG_DEFAULT_LAYOUT(layout_bfm_sc4)
|
||||
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, 16000000) // ?? Mhz
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(sc4_state, bfm_sc4_irqhandler))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
@ -186,14 +186,6 @@ WRITE8_MEMBER( bfm_sc5_state::sc5_10202F0_w )
|
||||
}
|
||||
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(bfm_sc5_state::bfm_sc5_ym_irqhandler)
|
||||
{
|
||||
logerror("YMZ280 is generating an interrupt. State=%08x\n",state);
|
||||
}
|
||||
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(bfm_sc5_state::bfm_sc5_duart_irq_handler)
|
||||
{
|
||||
printf("bfm_sc5_duart_irq_handler\n");
|
||||
@ -235,6 +227,5 @@ MACHINE_CONFIG_START( bfm_sc5, bfm_sc5_state )
|
||||
MCFG_DEFAULT_LAYOUT(layout_bfm_sc5)
|
||||
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, 16000000) // ?? Mhz
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(bfm_sc5_state, bfm_sc5_ym_irqhandler))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -122,7 +122,6 @@ public:
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
DECLARE_WRITE_LINE_MEMBER(irqhandler);
|
||||
|
||||
protected:
|
||||
|
||||
@ -132,12 +131,6 @@ protected:
|
||||
virtual void machine_start();
|
||||
};
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(bfm_swp_state::irqhandler)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
READ32_MEMBER(bfm_swp_state::bfm_swp_mem_r)
|
||||
{
|
||||
int pc = space.device().safe_pc();
|
||||
@ -218,7 +211,6 @@ static MACHINE_CONFIG_START( bfm_swp, bfm_swp_state )
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, 10000000 )
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(bfm_swp_state, irqhandler))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
@ -357,12 +357,6 @@ static INPUT_PORTS_START( bishi2p )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(bishi_state::sound_irq_gen)
|
||||
{
|
||||
m_maincpu->set_input_line(M68K_IRQ_1, (state) ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
void bishi_state::machine_start()
|
||||
{
|
||||
save_item(NAME(m_cur_control));
|
||||
@ -413,7 +407,7 @@ static MACHINE_CONFIG_START( bishi, bishi_state )
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, SOUND_CLOCK) /* 16.9344MHz */
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(bishi_state, sound_irq_gen))
|
||||
MCFG_YMZ280B_IRQ_HANDLER(INPUTLINE("maincpu", M68K_IRQ_1))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -1940,7 +1940,7 @@ ROM_START( discof )
|
||||
ROM_LOAD( "w3-f.4a", 0xc000, 0x1000, CRC(9aadd252) SHA1(c6da7ef46333d525e676c59f03ccc908108b41ba) )
|
||||
ROM_LOAD( "w2-f.6a", 0xd000, 0x1000, CRC(f131a5bb) SHA1(84b7dea112dce12e5cb235a13f6dc4edcfb18c06) )
|
||||
ROM_LOAD( "w1-f.9a", 0xe000, 0x1000, CRC(a6ce9a19) SHA1(e8f380e17a21fb33504d6efe9d01d0f903fa25e1) )
|
||||
// ROM_LOAD( "w1-f", 0xe000, 0x1000, CRC(c8ec57c5) SHA1(904a9ed0a7f1230c611bf473b9bc52e63eb56dbe) ) // 0x7d3 is 0x10 instead of 0x00, 1 bit different, looks out of place, bad?
|
||||
// ROM_LOAD( "w1-f", 0xe000, 0x1000, CRC(c8ec57c5) SHA1(904a9ed0a7f1230c611bf473b9bc52e63eb56dbe) ) // 0x7d3 is 0x10 instead of 0x00, 1 bit different, looks out of place, bad?
|
||||
ROM_LOAD( "w0-f.9a", 0xf000, 0x1000, CRC(b3787a92) SHA1(7f40621dc739c1108a5df43142ab04709a380219) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
|
@ -484,7 +484,7 @@ static MACHINE_CONFIG_START( cabal, cabal_state )
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_YM2151_ADD("ymsnd", XTAL_3_579545MHz) /* verified on pcb */
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, ym2151_irqhandler))
|
||||
MCFG_YM2151_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS,"mono", 0.80)
|
||||
|
||||
MCFG_SOUND_ADD("adpcm1", SEIBU_ADPCM, 8000) /* it should use the msm5205 */
|
||||
|
@ -154,7 +154,7 @@ public:
|
||||
: dynax_state(mconfig, type, tag),
|
||||
m_dsw_sel16(*this, "dsw_sel16"),
|
||||
m_protection1(*this, "protection1"),
|
||||
m_protection2(*this, "protection2") { }
|
||||
m_protection2(*this, "protection2") { }
|
||||
|
||||
|
||||
optional_shared_ptr<UINT16> m_dsw_sel16;
|
||||
|
@ -66,7 +66,6 @@ public:
|
||||
UINT32 screen_update_wcvol95(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
INTERRUPT_GEN_MEMBER(deco32_vbl_interrupt);
|
||||
void descramble_sound( const char *tag );
|
||||
DECLARE_WRITE_LINE_MEMBER(sound_irq_gen);
|
||||
DECO16IC_BANK_CB_MEMBER(bank_callback);
|
||||
DECOSPR_PRIORITY_CB_MEMBER(pri_callback);
|
||||
};
|
||||
@ -315,11 +314,6 @@ GFXDECODE_END
|
||||
|
||||
/**********************************************************************************/
|
||||
|
||||
WRITE_LINE_MEMBER(deco156_state::sound_irq_gen)
|
||||
{
|
||||
logerror("sound irq\n");
|
||||
}
|
||||
|
||||
INTERRUPT_GEN_MEMBER(deco156_state::deco32_vbl_interrupt)
|
||||
{
|
||||
device.execute().set_input_line(ARM_IRQ_LINE, HOLD_LINE);
|
||||
@ -441,7 +435,6 @@ static MACHINE_CONFIG_START( wcvol95, deco156_state )
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, 28000000 / 2)
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(deco156_state, sound_irq_gen))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -356,7 +356,7 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( flashbank_map, AS_PROGRAM, 32, funkball_state )
|
||||
AM_RANGE(0x00000000, 0x003fffff) AM_DEVREADWRITE16("u29", intel_28f320j5_device, read, write, 0xffffffff ) // needed to boot
|
||||
AM_RANGE(0x00400000, 0x007fffff) AM_DEVREADWRITE16("u30", intel_28f320j5_device, read, write, 0xffffffff ) // i assume it maps directly after
|
||||
// AM_RANGE(0x02000000, 0x023fffff) AM_DEVREADWRITE16("u3", intel_28f320j5_device, read, write, 0xffffffff ) // sound program, don't think it matters where we map it, might not even be visible in this space
|
||||
// AM_RANGE(0x02000000, 0x023fffff) AM_DEVREADWRITE16("u3", intel_28f320j5_device, read, write, 0xffffffff ) // sound program, don't think it matters where we map it, might not even be visible in this space
|
||||
/* it checks for 64MBit chips at 0x80000000 the way things are set up, they must return an intel Flash ID of 0x15 */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
@ -1499,8 +1499,8 @@ static ADDRESS_MAP_START( spactrai_map, AS_PROGRAM, 8, galaxian_state )
|
||||
AM_RANGE(0x1200, 0x12ff) AM_MIRROR(0x0100) AM_RAM_WRITE(galaxian_objram_w) AM_SHARE("spriteram")
|
||||
AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x03ff) AM_READ(watchdog_reset_r)
|
||||
AM_RANGE(0x4000, 0xbfff) AM_ROM
|
||||
// AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x3efc) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
|
||||
// AM_RANGE(0xc100, 0xc103) AM_MIRROR(0x3efc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
|
||||
// AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x3efc) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
|
||||
// AM_RANGE(0xc100, 0xc103) AM_MIRROR(0x3efc) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( anteaterg_map, AS_PROGRAM, 8, galaxian_state )
|
||||
|
@ -427,13 +427,13 @@ static ADDRESS_MAP_START( video_map, AS_PROGRAM, 8, caveman_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( video_io_map, AS_IO, 8, caveman_state )
|
||||
// AM_RANGE(0x000, 0x002) AM_READWRITE() // 8259 irq controller
|
||||
// AM_RANGE(0x100, 0x102) AM_READWRITE() // HD46505
|
||||
// AM_RANGE(0x200, 0x200) AM_READWRITE() // 8212 in, ?? out
|
||||
// AM_RANGE(0x300, 0x300) AM_READWRITE() // soundlatch (command?) in, ?? out
|
||||
// AM_RANGE(0x000, 0x002) AM_READWRITE() // 8259 irq controller
|
||||
// AM_RANGE(0x100, 0x102) AM_READWRITE() // HD46505
|
||||
// AM_RANGE(0x200, 0x200) AM_READWRITE() // 8212 in, ?? out
|
||||
// AM_RANGE(0x300, 0x300) AM_READWRITE() // soundlatch (command?) in, ?? out
|
||||
|
||||
// AM_RANGE(0x400, 0x400) AM_READ() // joystick inputs
|
||||
// AM_RANGE(0x500, 0x506) AM_WRITE() // palette
|
||||
// AM_RANGE(0x400, 0x400) AM_READ() // joystick inputs
|
||||
// AM_RANGE(0x500, 0x506) AM_WRITE() // palette
|
||||
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
@ -263,8 +263,6 @@ public:
|
||||
|
||||
int write_dest_byte(UINT8 usedata);
|
||||
//UINT16 main_m_vram[0x800][0x800];
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(sound_irq_gen);
|
||||
};
|
||||
|
||||
|
||||
@ -1314,15 +1312,6 @@ static ADDRESS_MAP_START( io_map, AS_IO, 16, gunpey_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
/***************************************************************************************/
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(gunpey_state::sound_irq_gen)
|
||||
{
|
||||
logerror("sound irq\n");
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************************/
|
||||
|
||||
static INPUT_PORTS_START( gunpey )
|
||||
@ -1467,7 +1456,6 @@ static MACHINE_CONFIG_START( gunpey, gunpey_state )
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.25)
|
||||
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(gunpey_state, sound_irq_gen))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.25)
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -50,7 +50,6 @@ protected:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
public:
|
||||
DECLARE_DRIVER_INIT(maygayep);
|
||||
DECLARE_WRITE_LINE_MEMBER(irqhandler);
|
||||
};
|
||||
|
||||
// bp 29e58 in ep_simp reads the 'INITIALISE . . .' string
|
||||
@ -101,11 +100,6 @@ DRIVER_INIT_MEMBER(maygayep_state,maygayep)
|
||||
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(maygayep_state::irqhandler)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( maygayep, maygayep_state )
|
||||
MCFG_CPU_ADD("maincpu", H83002, 16000000 )
|
||||
MCFG_CPU_PROGRAM_MAP( maygayep_map )
|
||||
@ -113,7 +107,6 @@ static MACHINE_CONFIG_START( maygayep, maygayep_state )
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, 10000000 )
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(maygayep_state, irqhandler))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
@ -85,7 +85,6 @@ public:
|
||||
|
||||
|
||||
UINT32 screen_update_midas(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
|
||||
DECLARE_WRITE_LINE_MEMBER(livequiz_irqhandler);
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
@ -607,15 +606,6 @@ void midas_state::machine_reset()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(midas_state::livequiz_irqhandler)
|
||||
{
|
||||
logerror("YMZ280 is generating an interrupt. State=%08x\n",state);
|
||||
}
|
||||
|
||||
|
||||
void midas_state::screen_eof_midas(screen_device &screen, bool state)
|
||||
{
|
||||
if (state) m_sprgen->buffer_vram();
|
||||
@ -647,7 +637,6 @@ static MACHINE_CONFIG_START( livequiz, midas_state )
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(midas_state, livequiz_irqhandler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
|
||||
MACHINE_CONFIG_END
|
||||
@ -681,7 +670,6 @@ static MACHINE_CONFIG_START( hammer, midas_state )
|
||||
/* sound hardware */
|
||||
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(midas_state, livequiz_irqhandler))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.80)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -2491,7 +2491,7 @@ MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( model2a_0229, model2a )
|
||||
MCFG_DEVICE_ADD("317_0229", SEGA315_5838_COMP, 0)
|
||||
// MCFG_SET_5838_READ_CALLBACK(model2_state, crypt_read_callback)
|
||||
// MCFG_SET_5838_READ_CALLBACK(model2_state, crypt_read_callback)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
READ8_MEMBER(model2_state::driveio_port_r)
|
||||
@ -2599,7 +2599,7 @@ MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( model2b_0229, model2b )
|
||||
MCFG_DEVICE_ADD("317_0229", SEGA315_5838_COMP, 0)
|
||||
// MCFG_SET_5838_READ_CALLBACK(model2_state, crypt_read_callback)
|
||||
// MCFG_SET_5838_READ_CALLBACK(model2_state, crypt_read_callback)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
@ -5947,7 +5947,7 @@ WRITE32_MEMBER(model2_state::jaleco_network_w)
|
||||
|
||||
DRIVER_INIT_MEMBER(model2_state,sgt24h)
|
||||
{
|
||||
// DRIVER_INIT_CALL(genprot);
|
||||
// DRIVER_INIT_CALL(genprot);
|
||||
|
||||
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x01a10000, 0x01a1ffff, read32_delegate(FUNC(model2_state::jaleco_network_r),this), write32_delegate(FUNC(model2_state::jaleco_network_w),this));
|
||||
|
||||
|
@ -1696,11 +1696,11 @@ READ64_MEMBER(model3_state::model3_5881prot_r)
|
||||
{
|
||||
UINT8* base;
|
||||
retvalue = m_cryptdevice->do_decrypt(base);
|
||||
// retvalue = ((retvalue & 0xff00) >> 8) | ((retvalue & 0x00ff) << 8); // don't endian swap the return value on this hardware
|
||||
// retvalue = ((retvalue & 0xff00) >> 8) | ((retvalue & 0x00ff) << 8); // don't endian swap the return value on this hardware
|
||||
retvalue <<= 16;
|
||||
}
|
||||
|
||||
// printf("model3_5881prot_r offset %08x : %08x%08x (%08x%08x)\n", offset * 8, (UINT32)(retvalue >> 32), (UINT32)(retvalue & 0xffffffff), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask & 0xffffffff));
|
||||
// printf("model3_5881prot_r offset %08x : %08x%08x (%08x%08x)\n", offset * 8, (UINT32)(retvalue >> 32), (UINT32)(retvalue & 0xffffffff), (UINT32)(mem_mask >> 32), (UINT32)(mem_mask & 0xffffffff));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -5584,8 +5584,8 @@ UINT16 model3_state::crypt_read_callback(UINT32 addr)
|
||||
dat = m_maincpu->space().read_word((0xf0180000 + 4 * addr)); // every other word is unused in this RAM, probably 32-bit ram on 64-bit bus?
|
||||
}
|
||||
|
||||
// dat = ((dat & 0xff00) >> 8) | ((dat & 0x00ff) << 8);
|
||||
// printf("reading %04x\n", dat);
|
||||
// dat = ((dat & 0xff00) >> 8) | ((dat & 0x00ff) << 8);
|
||||
// printf("reading %04x\n", dat);
|
||||
|
||||
return dat;
|
||||
}
|
||||
@ -5629,7 +5629,7 @@ static void interleave_vroms(running_machine &machine)
|
||||
|
||||
DRIVER_INIT_MEMBER(model3_state, genprot)
|
||||
{
|
||||
// astring key = parameter(":315_5881:key");
|
||||
// astring key = parameter(":315_5881:key");
|
||||
|
||||
m_maincpu->space(AS_PROGRAM).install_ram(0xf0180000, 0xf019ffff, 0, 0x0e000000);
|
||||
|
||||
@ -5846,7 +5846,6 @@ DRIVER_INIT_MEMBER(model3_state,srally2)
|
||||
|
||||
DRIVER_INIT_MEMBER(model3_state,swtrilgy)
|
||||
{
|
||||
|
||||
UINT32 *rom = (UINT32*)memregion("user1")->base();
|
||||
DRIVER_INIT_CALL(model3_20);
|
||||
|
||||
@ -5890,7 +5889,7 @@ DRIVER_INIT_MEMBER(model3_state,dirtdvls)
|
||||
|
||||
DRIVER_INIT_MEMBER(model3_state,daytona2)
|
||||
{
|
||||
// UINT32 *rom = (UINT32*)memregion("user1")->base();
|
||||
// UINT32 *rom = (UINT32*)memregion("user1")->base();
|
||||
DRIVER_INIT_CALL(model3_20);
|
||||
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xc3800000, 0xc3800007, write64_delegate(FUNC(model3_state::daytona2_rombank_w),this));
|
||||
@ -5906,17 +5905,17 @@ DRIVER_INIT_MEMBER(model3_state,daytona2)
|
||||
|
||||
DRIVER_INIT_MEMBER(model3_state,dayto2pe)
|
||||
{
|
||||
// UINT32 *rom = (UINT32*)memregion("user1")->base();
|
||||
// UINT32 *rom = (UINT32*)memregion("user1")->base();
|
||||
DRIVER_INIT_CALL(model3_20);
|
||||
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xc3800000, 0xc3800007, write64_delegate(FUNC(model3_state::daytona2_rombank_w),this));
|
||||
m_maincpu->space(AS_PROGRAM).install_read_bank(0xc3000000, 0xc37fffff, "bank2" );
|
||||
|
||||
// rom[(0x606784^4)/4] = 0x60000000;
|
||||
// rom[(0x69a3fc^4)/4] = 0x60000000; // jump to encrypted code
|
||||
// rom[(0x618b28^4)/4] = 0x60000000; // jump to encrypted code
|
||||
// rom[(0x606784^4)/4] = 0x60000000;
|
||||
// rom[(0x69a3fc^4)/4] = 0x60000000; // jump to encrypted code
|
||||
// rom[(0x618b28^4)/4] = 0x60000000; // jump to encrypted code
|
||||
|
||||
// rom[(0x64ca34^4)/4] = 0x60000000; // dec
|
||||
// rom[(0x64ca34^4)/4] = 0x60000000; // dec
|
||||
|
||||
DRIVER_INIT_CALL(genprot);
|
||||
}
|
||||
|
@ -3780,12 +3780,6 @@ static GFXDECODE_START( atombjt )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(nmk16_state::ym2203_irqhandler)
|
||||
{
|
||||
m_audiocpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
/*
|
||||
----
|
||||
|
||||
@ -3894,7 +3888,7 @@ static MACHINE_CONFIG_START( tharrier, nmk16_state )
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM2203, 1500000)
|
||||
MCFG_YM2203_IRQ_HANDLER(WRITELINE(nmk16_state, ym2203_irqhandler))
|
||||
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.50)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.50)
|
||||
MCFG_SOUND_ROUTE(2, "mono", 0.50)
|
||||
@ -4421,7 +4415,7 @@ static MACHINE_CONFIG_START( macross2, nmk16_state )
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM2203, 1500000)
|
||||
MCFG_YM2203_IRQ_HANDLER(WRITELINE(nmk16_state, ym2203_irqhandler))
|
||||
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.50)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.50)
|
||||
MCFG_SOUND_ROUTE(2, "mono", 0.50)
|
||||
@ -4464,7 +4458,7 @@ static MACHINE_CONFIG_START( tdragon2, nmk16_state )
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM2203, 1500000)
|
||||
MCFG_YM2203_IRQ_HANDLER(WRITELINE(nmk16_state, ym2203_irqhandler))
|
||||
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.50)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.50)
|
||||
MCFG_SOUND_ROUTE(2, "mono", 0.50)
|
||||
@ -4506,7 +4500,7 @@ static MACHINE_CONFIG_START( raphero, nmk16_state )
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM2203, 1500000)
|
||||
MCFG_YM2203_IRQ_HANDLER(WRITELINE(nmk16_state, ym2203_irqhandler))
|
||||
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.50)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.50)
|
||||
MCFG_SOUND_ROUTE(2, "mono", 0.50)
|
||||
@ -4636,7 +4630,7 @@ static MACHINE_CONFIG_START( manybloc, nmk16_state )
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymsnd", YM2203, 1500000)
|
||||
MCFG_YM2203_IRQ_HANDLER(WRITELINE(nmk16_state, ym2203_irqhandler))
|
||||
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
||||
MCFG_SOUND_ROUTE(0, "mono", 0.50)
|
||||
MCFG_SOUND_ROUTE(1, "mono", 0.50)
|
||||
MCFG_SOUND_ROUTE(2, "mono", 0.50)
|
||||
|
@ -947,4 +947,3 @@ ROM_END
|
||||
GAME( 1987, psychic5, 0, psychic5, psychic5, driver_device, 0, ROT270, "Jaleco / NMK", "Psychic 5 (World)", 0 ) // "Oversea's version V2.00 CHANGED BY TAMIO NAKASATO" text present in ROM, various modifications (English names, more complete attract demo etc.)
|
||||
GAME( 1987, psychic5j, psychic5, psychic5, psychic5, driver_device, 0, ROT270, "Jaleco / NMK", "Psychic 5 (Japan)", 0 )
|
||||
GAME( 1988, bombsa, 0, bombsa, bombsa, driver_device, 0, ROT270, "Jaleco", "Bombs Away", GAME_NOT_WORKING )
|
||||
|
||||
|
@ -1584,7 +1584,7 @@ static INPUT_PORTS_START( reelquak )
|
||||
PORT_DIPSETTING( 0x0040, DEF_STR( 1C_5C ) )
|
||||
PORT_DIPSETTING( 0x0000, "1 Coin/10 Credits" )
|
||||
|
||||
PORT_START("DSW2") // $400302.w PORT_START("DSW2") // $400302.w
|
||||
PORT_START("DSW2") // $400302.w PORT_START("DSW2") // $400302.w
|
||||
PORT_DIPNAME( 0x0001, 0x0001, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW2:1") // used
|
||||
PORT_DIPSETTING( 0x0001, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x0000, DEF_STR( On ) )
|
||||
|
@ -514,7 +514,7 @@ static MACHINE_CONFIG_START( kothello, shanghai_state )
|
||||
|
||||
/* same as standard seibu ym2203, but "ym1" also reads "DSW" */
|
||||
MCFG_SOUND_ADD("ym1", YM2203, XTAL_16MHz/4)
|
||||
MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, ym2203_irqhandler))
|
||||
MCFG_YM2203_IRQ_HANDLER(DEVWRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler))
|
||||
MCFG_AY8910_PORT_A_READ_CB(IOPORT("DSW"))
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15)
|
||||
|
||||
|
@ -388,5 +388,5 @@ ROM_START( silkroada )
|
||||
ROM_END
|
||||
|
||||
|
||||
GAME( 1999, silkroad, 0, silkroad, silkroad, driver_device, 0, ROT0, "Unico", "The Legend of Silkroad", 0 )
|
||||
GAME( 1999, silkroada, silkroad, silkroad, silkroad, driver_device, 0, ROT0, "Unico", "The Legend of Silkroad (larger ROMs)", 0 ) // same content but fewer GFX roms of a larger size
|
||||
GAME( 1999, silkroad, 0, silkroad, silkroad, driver_device, 0, ROT0, "Unico", "The Legend of Silkroad", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1999, silkroada, silkroad, silkroad, silkroad, driver_device, 0, ROT0, "Unico", "The Legend of Silkroad (larger ROMs)", GAME_SUPPORTS_SAVE ) // same content but fewer GFX roms of a larger size
|
||||
|
@ -226,7 +226,7 @@ ROM_END
|
||||
MS06 M8 74s287 missile animated graphics
|
||||
MS05 11F IM5610 200pt tank R->L graphic
|
||||
MS05 11E IM5610 200pt tank L->R graphic
|
||||
MS04 N7 IM5610 player missile trajectory pattern
|
||||
MS04 N7 IM5610 player missile trajectory pattern
|
||||
MS03 F3 IM5610 anti-missile ack-ack graphics
|
||||
MS02 L12 IM5610 missile left/right position
|
||||
MS01 D8 IM5610 100pt tanks graphics
|
||||
|
@ -3049,13 +3049,6 @@ static GFXDECODE_START( fixeightbl )
|
||||
GFXDECODE_END
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(toaplan2_state::bbakraid_irqhandler)
|
||||
{
|
||||
// Not used ??? Connected to a test pin (TP082)
|
||||
logerror("YMZ280 is generating an interrupt. State=%08x\n",state);
|
||||
}
|
||||
|
||||
|
||||
static MACHINE_CONFIG_START( tekipaki, toaplan2_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
@ -4003,7 +3996,7 @@ static MACHINE_CONFIG_START( bbakraid, toaplan2_state )
|
||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(toaplan2_state, bbakraid_irqhandler))
|
||||
// IRQ not used ??? Connected to a test pin (TP082)
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
@ -669,13 +669,13 @@ WRITE16_MEMBER(twinkle_state::serial_w)
|
||||
|
||||
WRITE8_MEMBER(twinkle_state::shared_psx_w)
|
||||
{
|
||||
// printf("shared_psx_w: %04x, %04x, %04x\n", offset, data, mem_mask);
|
||||
// printf("shared_psx_w: %04x, %04x, %04x\n", offset, data, mem_mask);
|
||||
|
||||
m_spu_shared[offset] = data;
|
||||
|
||||
if (offset == 0x03fe && data == 0xff)
|
||||
{
|
||||
// printf("spu command %02x %02x\n", m_spu_shared[1], m_spu_shared[3]);
|
||||
// printf("spu command %02x %02x\n", m_spu_shared[1], m_spu_shared[3]);
|
||||
|
||||
m_audiocpu->set_input_line(M68K_IRQ_4, HOLD_LINE);
|
||||
}
|
||||
@ -808,21 +808,21 @@ READ16_MEMBER(twinkle_state::shared_68k_r)
|
||||
{
|
||||
UINT16 result = m_spu_shared[offset];
|
||||
|
||||
// printf("shared_68k_r: %04x, %04x, %04x\n", offset, result, mem_mask);
|
||||
// printf("shared_68k_r: %04x, %04x, %04x\n", offset, result, mem_mask);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(twinkle_state::shared_68k_w)
|
||||
{
|
||||
// printf("shared_68k_w: %04x, %04x, %04x\n", offset, data, mem_mask);
|
||||
// printf("shared_68k_w: %04x, %04x, %04x\n", offset, data, mem_mask);
|
||||
|
||||
m_spu_shared[offset] = data & 0xff;
|
||||
}
|
||||
|
||||
READ16_MEMBER(twinkle_state::unk_68k_r)
|
||||
{
|
||||
return 0xffff; // must return 0xff for 68000 POST to complete properly
|
||||
return 0xffff; // must return 0xff for 68000 POST to complete properly
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 16, twinkle_state )
|
||||
@ -840,7 +840,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 16, twinkle_state )
|
||||
AM_RANGE(0x34000e, 0x34000f) AM_WRITENOP
|
||||
AM_RANGE(0x400000, 0x400fff) AM_DEVREADWRITE("rfsnd", rf5c400_device, rf5c400_r, rf5c400_w)
|
||||
AM_RANGE(0x800000, 0xbfffff) AM_READWRITE(twinkle_waveram_r, twinkle_waveram_w )
|
||||
AM_RANGE(0xfe0000, 0xffffff) AM_RAM // ...and the RAM test checks this last 128k (mirror of the work RAM at 0x100000?)
|
||||
AM_RANGE(0xfe0000, 0xffffff) AM_RAM // ...and the RAM test checks this last 128k (mirror of the work RAM at 0x100000?)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/* SCSI */
|
||||
|
@ -795,17 +795,17 @@ ROM_START( tx1 )
|
||||
ROM_REGION( 0x10000, "audio_cpu", 0 )
|
||||
ROM_LOAD( "8411-136027-157.11", 0x00000, 0x2000, CRC(10ae3075) SHA1(69c5f62f2473aba848383eed3cecf15e273d86ca) )
|
||||
|
||||
ROM_REGION( 0x20000, "char_tiles", 0 )
|
||||
ROM_REGION( 0x8000, "char_tiles", 0 )
|
||||
ROM_LOAD( "8411-136027-156.204", 0x0000, 0x4000, CRC(60f3c616) SHA1(59c4361891e4274e27e6279c919e8fd6803af7cf) )
|
||||
ROM_LOAD( "8411-136027-155.174", 0x4000, 0x4000, CRC(e59a6b72) SHA1(c10efa77ab421ac60b97227a8d547f50f8415670) )
|
||||
|
||||
ROM_REGION( 0x40000, "obj_tiles", 0 )
|
||||
ROM_REGION( 0x10000, "obj_tiles", 0 )
|
||||
ROM_LOAD( "8411-136027-114.203", 0x0000, 0x4000, CRC(fc91328b) SHA1(e57fd2056b65d37cf2e1f0af56616c6555df3006) )
|
||||
ROM_LOAD( "8411-136027-116.258", 0x4000, 0x4000, CRC(5745f671) SHA1(6e471633cd6de9926b3361a84430c088e1f6a097) )
|
||||
ROM_LOAD( "8411-136027-115.173", 0x8000, 0x4000, CRC(720e5873) SHA1(151d9063c35b26f5876cf94bdf0c2665ec701bbd) )
|
||||
ROM_LOAD( "8411-136027-117.232", 0xc000, 0x4000, CRC(3c68d0bc) SHA1(2dbaf2a268b90214fd61c016ac945d4371057826) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx3", 0 )
|
||||
ROM_REGION( 0x6000, "road", 0 )
|
||||
ROM_LOAD( "8411-136027-146.56", 0x0000, 0x2000, CRC(5635b8c1) SHA1(5cc9437a2ff0843f1917f2451852d4561c240b24) )
|
||||
ROM_LOAD( "8411-136027-147.66", 0x2000, 0x2000, CRC(03d83cf8) SHA1(5c0cfc6bf02ad2b3f37e1ceb493f69eb9829ab1e) )
|
||||
ROM_LOAD( "8411-136027-148.76", 0x4000, 0x2000, CRC(ad56013a) SHA1(ae3a91f58f30daff334754476db33ad1d12569fc) )
|
||||
@ -816,11 +816,11 @@ ROM_START( tx1 )
|
||||
ROM_LOAD16_BYTE( "136027-143.ic223", 0x8000, 0x0200, CRC(22c77af6) SHA1(1be8585b95316b4fc5712cdaef699e676320cd4d) )
|
||||
ROM_LOAD16_BYTE( "136027-142.ic213", 0x8001, 0x0200, CRC(f6b8b70b) SHA1(b79374acf11d71db1e4ad3c494ac5f500a52677b) )
|
||||
|
||||
ROM_REGION( 0x50000, "obj_map", 0 )
|
||||
ROM_REGION( 0x8000, "obj_map", 0 )
|
||||
ROM_LOAD( "8411-136027-119.106", 0x0000, 0x4000, CRC(88eec0fb) SHA1(81d7a69dc1a4b3b81d7f28d97a3f80697cdcc6eb) )
|
||||
ROM_LOAD( "8411-136027-120.73", 0x4000, 0x4000, CRC(407cbe65) SHA1(e1c11b65f3c6abde6d55afeaffdb39cdd6d66377) )
|
||||
|
||||
ROM_REGION( 0x50000, "user3", 0 )
|
||||
ROM_REGION( 0x6000, "obj_luts", 0 )
|
||||
ROM_LOAD( "8411-136027-113.48", 0x0000, 0x2000, CRC(4b3d7956) SHA1(fc2432dd69f3be7007d4fd6f7c86c7c19453b1ba) )
|
||||
ROM_LOAD( "8411-136027-118.281", 0x2000, 0x4000, CRC(de418dc7) SHA1(1233e2f7499ec5a73a40ee336d3fe26c06187784) )
|
||||
|
||||
@ -882,17 +882,17 @@ ROM_START( tx1jb )
|
||||
ROM_REGION( 0x10000, "audio_cpu", 0 )
|
||||
ROM_LOAD( "tx1_22h.ic9", 0x00000, 0x2000, CRC(66376232) SHA1(b8a026dae47173e7760eea4f52e67e525ad1b70b) )
|
||||
|
||||
ROM_REGION( 0x20000, "char_tiles", 0 )
|
||||
ROM_REGION( 0x8000, "char_tiles", 0 )
|
||||
ROM_LOAD( "tx1_21a.ic204", 0x0000, 0x4000, CRC(cd3441ad) SHA1(8e6597b3177b8aaa34ed3373d85fc4b6231e1333) )
|
||||
ROM_LOAD( "tx1_20a.ic174", 0x4000, 0x4000, CRC(dbe595fc) SHA1(1ed2f775f0a1b46a2ffbc056eb4ef732ed546d3c) )
|
||||
|
||||
ROM_REGION( 0x40000, "obj_tiles", 0 )
|
||||
ROM_REGION( 0x10000, "obj_tiles", 0 )
|
||||
ROM_LOAD( "tx1_16b.ic203", 0x0000, 0x4000, CRC(1141c965) SHA1(4b90c1428bcbd72d0449c064856a5596269b3fc6) )
|
||||
ROM_LOAD( "tx1_18b.ic258", 0x4000, 0x4000, CRC(0ad36d68) SHA1(fd5a65c56557c1bc9c0f3916f15f62500b52bfe0) )
|
||||
ROM_LOAD( "tx1_15b.ic173", 0x8000, 0x4000, CRC(30d1a8d5) SHA1(b4c585b7b8a8920bb3949d643e9e10c17d4009a0) )
|
||||
ROM_LOAD( "tx1_17b.ic232", 0xc000, 0x4000, CRC(364bb354) SHA1(a26581ca1088b979285471e2c6595048df84d75e) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx3", 0 )
|
||||
ROM_REGION( 0x6000, "road", 0 )
|
||||
ROM_LOAD( "tx1_5a.ic56", 0x0000, 0x2000, CRC(5635b8c1) SHA1(5cc9437a2ff0843f1917f2451852d4561c240b24) )
|
||||
ROM_LOAD( "tx1_6a.ic66", 0x2000, 0x2000, CRC(03d83cf8) SHA1(5c0cfc6bf02ad2b3f37e1ceb493f69eb9829ab1e) )
|
||||
ROM_LOAD( "tx1_7a.ic76", 0x4000, 0x2000, CRC(ad56013a) SHA1(ae3a91f58f30daff334754476db33ad1d12569fc) )
|
||||
@ -903,11 +903,11 @@ ROM_START( tx1jb )
|
||||
ROM_LOAD16_BYTE( "xb02b.ic223", 0x8000, 0x0200, CRC(22c77af6) SHA1(1be8585b95316b4fc5712cdaef699e676320cd4d) )
|
||||
ROM_LOAD16_BYTE( "xb01b.ic213", 0x8001, 0x0200, CRC(f6b8b70b) SHA1(b79374acf11d71db1e4ad3c494ac5f500a52677b) )
|
||||
|
||||
ROM_REGION( 0x50000, "obj_map", 0 )
|
||||
ROM_REGION( 0x8000, "obj_map", 0 )
|
||||
ROM_LOAD( "tx1_14b.ic106", 0x0000, 0x4000, CRC(68c63d6e) SHA1(110e02b99c44d31041be588bd14642e26890ecbd) )
|
||||
ROM_LOAD( "tx1_13b.ic73", 0x4000, 0x4000, CRC(b0c581b2) SHA1(20926bc15e7c97045b219b828acfcdd99b8712a6) )
|
||||
|
||||
ROM_REGION( 0x50000, "user3", 0 )
|
||||
ROM_REGION( 0x6000, "obj_luts", 0 )
|
||||
ROM_LOAD( "tx1_12b.ic48", 0x0000, 0x2000, CRC(4b3d7956) SHA1(fc2432dd69f3be7007d4fd6f7c86c7c19453b1ba) )
|
||||
ROM_LOAD( "tx1_19b.ic281", 0x2000, 0x4000, CRC(cb250de6) SHA1(4bf3006986fb8cbb3dd4fa988e6471633614e4bb) )
|
||||
|
||||
@ -963,17 +963,17 @@ ROM_START( tx1jc )
|
||||
ROM_REGION( 0x10000, "audio_cpu", 0 ) /* Label was missing */
|
||||
ROM_LOAD( "8411-136027-157.11", 0x00000, 0x2000, CRC(10ae3075) SHA1(69c5f62f2473aba848383eed3cecf15e273d86ca) ) /* Unconfirmed TC013A or the later TC013B */
|
||||
|
||||
ROM_REGION( 0x20000, "char_tiles", 0 )
|
||||
ROM_REGION( 0x8000, "char_tiles", 0 )
|
||||
ROM_LOAD( "tx1_21a.ic204", 0x0000, 0x4000, CRC(cd3441ad) SHA1(8e6597b3177b8aaa34ed3373d85fc4b6231e1333) )
|
||||
ROM_LOAD( "tx1_20a.ic174", 0x4000, 0x4000, CRC(dbe595fc) SHA1(1ed2f775f0a1b46a2ffbc056eb4ef732ed546d3c) )
|
||||
|
||||
ROM_REGION( 0x40000, "obj_tiles", 0 )
|
||||
ROM_REGION( 0x10000, "obj_tiles", 0 )
|
||||
ROM_LOAD( "tx1_16b.ic203", 0x0000, 0x4000, CRC(1141c965) SHA1(4b90c1428bcbd72d0449c064856a5596269b3fc6) )
|
||||
ROM_LOAD( "tx1_18b.ic258", 0x4000, 0x4000, CRC(0ad36d68) SHA1(fd5a65c56557c1bc9c0f3916f15f62500b52bfe0) )
|
||||
ROM_LOAD( "tx1_15b.ic173", 0x8000, 0x4000, CRC(30d1a8d5) SHA1(b4c585b7b8a8920bb3949d643e9e10c17d4009a0) )
|
||||
ROM_LOAD( "tx1_17b.ic232", 0xc000, 0x4000, CRC(364bb354) SHA1(a26581ca1088b979285471e2c6595048df84d75e) )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx3", 0 )
|
||||
ROM_REGION( 0x6000, "road", 0 )
|
||||
ROM_LOAD( "tx1_5a.ic56", 0x0000, 0x2000, CRC(5635b8c1) SHA1(5cc9437a2ff0843f1917f2451852d4561c240b24) )
|
||||
ROM_LOAD( "tx1_6a.ic66", 0x2000, 0x2000, CRC(03d83cf8) SHA1(5c0cfc6bf02ad2b3f37e1ceb493f69eb9829ab1e) )
|
||||
ROM_LOAD( "tx1_7a.ic76", 0x4000, 0x2000, CRC(ad56013a) SHA1(ae3a91f58f30daff334754476db33ad1d12569fc) )
|
||||
@ -984,11 +984,11 @@ ROM_START( tx1jc )
|
||||
ROM_LOAD16_BYTE( "xb02b.ic223", 0x8000, 0x0200, CRC(22c77af6) SHA1(1be8585b95316b4fc5712cdaef699e676320cd4d) )
|
||||
ROM_LOAD16_BYTE( "xb01b.ic213", 0x8001, 0x0200, CRC(f6b8b70b) SHA1(b79374acf11d71db1e4ad3c494ac5f500a52677b) )
|
||||
|
||||
ROM_REGION( 0x50000, "obj_map", 0 )
|
||||
ROM_REGION( 0x8000, "obj_map", 0 )
|
||||
ROM_LOAD( "tx1_14b.ic106", 0x0000, 0x4000, CRC(68c63d6e) SHA1(110e02b99c44d31041be588bd14642e26890ecbd) )
|
||||
ROM_LOAD( "tx1_13b.ic73", 0x4000, 0x4000, CRC(b0c581b2) SHA1(20926bc15e7c97045b219b828acfcdd99b8712a6) )
|
||||
|
||||
ROM_REGION( 0x50000, "user3", 0 )
|
||||
ROM_REGION( 0x6000, "obj_luts", 0 )
|
||||
ROM_LOAD( "tx1_12b.ic48", 0x0000, 0x2000, CRC(4b3d7956) SHA1(fc2432dd69f3be7007d4fd6f7c86c7c19453b1ba) )
|
||||
ROM_LOAD( "tx1_19b.ic281", 0x2000, 0x4000, CRC(cb250de6) SHA1(4bf3006986fb8cbb3dd4fa988e6471633614e4bb) )
|
||||
|
||||
@ -1072,7 +1072,7 @@ ROM_START( buggyboy )
|
||||
ROM_LOAD( "bug25.157", 0x2c000, 0x4000, CRC(80c4e045) SHA1(be3b537d3ed3ee74fc51059aa744dca4d63431f6) )
|
||||
ROM_RELOAD( 0x38000, 0x4000 )
|
||||
|
||||
ROM_REGION( 0x40000, "road", 0 )
|
||||
ROM_REGION( 0x8000, "road", 0 )
|
||||
ROM_LOAD( "bug12.58", 0x0000, 0x2000, CRC(bd34d55c) SHA1(05a719a6eff5af3aaaa1e0ee783b18597582ed64) )
|
||||
ROM_LOAD( "bug11.57", 0x2000, 0x2000, CRC(a44d43eb) SHA1(c4d68c7e123506acaa6adc353579cac19ecb3a9d) )
|
||||
ROM_LOAD( "bb3.137", 0x4000, 0x0200, CRC(ad76f3fb) SHA1(bf96f903b32e009a2592df0f28cc3e20b039f4d4) )
|
||||
@ -1086,13 +1086,13 @@ ROM_START( buggyboy )
|
||||
ROM_LOAD16_BYTE( "bb1.245", 0x8000, 0x0200, CRC(0ddbd36d) SHA1(7a08901a350c315d46ab8d0aa881db384b9f37d2) )
|
||||
ROM_LOAD16_BYTE( "bb2.220", 0x8001, 0x0200, CRC(71d47de1) SHA1(2da9aeb3f2ebb1114631c8042a37c4f4c18e741b) )
|
||||
|
||||
ROM_REGION( 0x100000, "obj_map", 0 )
|
||||
ROM_REGION( 0x10000, "obj_map", 0 )
|
||||
ROM_LOAD( "bug16.210", 0x0000, 0x4000, CRC(8b64409e) SHA1(1fb4c6923e6a9e1f2a63a2c335b63e2bdc44b61f) )
|
||||
ROM_LOAD( "bug14.209", 0x4000, 0x4000, CRC(4e765282) SHA1(f7d69d39823a8b33bd0e5b1bd78a5d68a293e221) )
|
||||
ROM_LOAD( "bug17.182", 0x8000, 0x4000, CRC(a5d84df6) SHA1(4e33ef0bee383e0d47b0c679cd2a54edb7ca0e3e) )
|
||||
ROM_LOAD( "bug15.181", 0xc000, 0x4000, CRC(d519de10) SHA1(535d05e11af65be65f3d9924b0c48faf8dcfd1bf) )
|
||||
|
||||
ROM_REGION( 0x10000, "obj_luts", 0 )
|
||||
ROM_REGION( 0x6000, "obj_luts", 0 )
|
||||
ROM_LOAD( "bug13.124", 0x0000, 0x2000, CRC(53604d7a) SHA1(bfa304cd885162ece7a5f54988d9880fc541eb3a) )
|
||||
ROM_LOAD( "bug18.156", 0x2000, 0x4000, CRC(e58321a6) SHA1(81be87d3c6046bb375c74362dc940f0269b39d1d) )
|
||||
|
||||
@ -1161,7 +1161,7 @@ ROM_START( buggyboyjr )
|
||||
ROM_LOAD( "bug30s.145", 0x20000, 0x8000, CRC(11d8e2a8) SHA1(9bf198229a12d331e8e7352b7ee3f39f6891f517) )
|
||||
ROM_LOAD( "bug23s.142", 0x28000, 0x8000, CRC(015db5d8) SHA1(39ef8b44f2eb9399fb1555cffa6763e06d59c181) )
|
||||
|
||||
ROM_REGION( 0x40000, "road", 0 )
|
||||
ROM_REGION( 0x8000, "road", 0 )
|
||||
ROM_LOAD( "bug11s.225",0x0000, 0x4000, CRC(771af4e1) SHA1(a42b164dd0567c78c0d308ee48d63e5a284897bb) )
|
||||
ROM_LOAD( "bb3s.195", 0x4000, 0x0200, CRC(2ab3d5ff) SHA1(9f8359cb4ba2e7d15dbb9dc21cd71c0902cd2153) )
|
||||
ROM_LOAD( "bb4s.193", 0x4200, 0x0200, CRC(630f68a4) SHA1(d730f050353c688f81d090e33e00cd35e7b7b6fa) )
|
||||
@ -1174,11 +1174,11 @@ ROM_START( buggyboyjr )
|
||||
ROM_LOAD16_BYTE( "bb1.163", 0x8000, 0x0200, CRC(0ddbd36d) SHA1(7a08901a350c315d46ab8d0aa881db384b9f37d2) )
|
||||
ROM_LOAD16_BYTE( "bb2.162", 0x8001, 0x0200, CRC(71d47de1) SHA1(2da9aeb3f2ebb1114631c8042a37c4f4c18e741b) )
|
||||
|
||||
ROM_REGION( 0x100000, "obj_map", 0 )
|
||||
ROM_REGION( 0x10000, "obj_map", 0 )
|
||||
ROM_LOAD( "bug16s.139", 0x0000, 0x8000, CRC(1903a9ad) SHA1(526c404c15e3f04b4afb27dee66e9deb0a6b9704) )
|
||||
ROM_LOAD( "bug17s.140", 0x8000, 0x8000, CRC(82cabdd4) SHA1(94324fcf83c373621fc40553473ae3cb552ab704) )
|
||||
|
||||
ROM_REGION( 0x10000, "obj_luts", 0 )
|
||||
ROM_REGION( 0x6000, "obj_luts", 0 )
|
||||
ROM_LOAD( "bug13.32", 0x0000, 0x2000, CRC(53604d7a) SHA1(bfa304cd885162ece7a5f54988d9880fc541eb3a) )
|
||||
ROM_LOAD( "bug18s.141", 0x2000, 0x4000, CRC(67786327) SHA1(32cc1f5bc654497c968ddcd4af29720c6d659482) )
|
||||
|
||||
|
@ -3535,4 +3535,3 @@ GAME( 1980, digger, 0, digger, digger, driver_device, 0, ROT270
|
||||
GAME( 1981, pulsar, 0, pulsar, pulsar, driver_device, 0, ROT270, "Sega", "Pulsar", GAME_IMPERFECT_SOUND )
|
||||
GAME( 1979, heiankyo, 0, heiankyo, heiankyo, driver_device, 0, ROT270, "Denki Onkyo", "Heiankyo Alien", GAME_NO_SOUND )
|
||||
GAME( 19??, alphaho, 0, alphaho, alphaho, driver_device, 0, ROT270, "Data East Corporation", "Alpha Fighter / Head On", GAME_WRONG_COLORS | GAME_NO_SOUND )
|
||||
|
||||
|
@ -90,7 +90,6 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(coh1001l_bank_w);
|
||||
DECLARE_WRITE16_MEMBER(coh1001l_latch_w);
|
||||
DECLARE_WRITE16_MEMBER(coh1001l_sound_unk_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(coh1001l_ymz_irq);
|
||||
DECLARE_WRITE8_MEMBER(coh1002v_bank_w);
|
||||
DECLARE_WRITE8_MEMBER(coh1002m_bank_w);
|
||||
DECLARE_READ8_MEMBER(cbaj_sound_main_status_r);
|
||||
@ -2273,11 +2272,6 @@ Notes:
|
||||
VSync - 60Hz
|
||||
*/
|
||||
|
||||
WRITE_LINE_MEMBER(zn_state::coh1001l_ymz_irq)
|
||||
{
|
||||
m_audiocpu->set_input_line(2, state ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER(zn_state::coh1001l_sound_unk_w)
|
||||
{
|
||||
// irq ack maybe?
|
||||
@ -2326,7 +2320,7 @@ static MACHINE_CONFIG_DERIVED(coh1001l, zn1_2mb_vram)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(zn_state, coh1001l)
|
||||
|
||||
MCFG_SOUND_ADD("ymz", YMZ280B, XTAL_16_9344MHz)
|
||||
MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(zn_state, coh1001l_ymz_irq))
|
||||
MCFG_YMZ280B_IRQ_HANDLER(INPUTLINE("audiocpu", 2))
|
||||
MCFG_SOUND_ROUTE(0, "lspeaker", 0.35)
|
||||
MCFG_SOUND_ROUTE(1, "rspeaker", 0.35)
|
||||
MACHINE_CONFIG_END
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user