mirror of
https://github.com/holub/mame
synced 2025-04-16 13:34:55 +03:00
Cleanups and version bump
This commit is contained in:
parent
2dc6458ede
commit
16f5234d43
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<softwarelist name="ep64_cart" description="Enterprise Sixty Four cartridges">
|
||||
|
||||
|
||||
<software name="basic">
|
||||
<description>BASIC (v2.1)</description>
|
||||
<year>198?</year>
|
||||
|
@ -16,7 +16,7 @@
|
||||
#ifndef __RSP_H__
|
||||
#define __RSP_H__
|
||||
|
||||
#define USE_SIMD (0)
|
||||
#define USE_SIMD (0)
|
||||
|
||||
#if USE_SIMD
|
||||
#include <tmmintrin.h>
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
dvpoints.c
|
||||
|
||||
Breakpoint debugger view.
|
||||
Breakpoint debugger view.
|
||||
|
||||
****************************************************************************
|
||||
|
||||
@ -131,15 +131,15 @@ void debug_view_breakpoints::view_click(const int button, const debug_view_xy& p
|
||||
|
||||
void debug_view_breakpoints::pad_astring_to_length(astring& str, int len)
|
||||
{
|
||||
int diff = len - str.len();
|
||||
if (diff > 0)
|
||||
{
|
||||
astring buffer;
|
||||
buffer.expand(diff);
|
||||
for (int i = 0; i < diff; i++)
|
||||
buffer.catprintf(" ");
|
||||
str.catprintf("%s", buffer.cstr());
|
||||
}
|
||||
int diff = len - str.len();
|
||||
if (diff > 0)
|
||||
{
|
||||
astring buffer;
|
||||
buffer.expand(diff);
|
||||
for (int i = 0; i < diff; i++)
|
||||
buffer.catprintf(" ");
|
||||
str.catprintf("%s", buffer.cstr());
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -162,7 +162,7 @@ void debug_view_breakpoints::view_update()
|
||||
for (device_debug::breakpoint *bp = debugInterface.breakpoint_first(); bp != NULL; bp = bp->next())
|
||||
numBPs++;
|
||||
bpList = new device_debug::breakpoint*[numBPs];
|
||||
|
||||
|
||||
// Collect
|
||||
int i = 1;
|
||||
for (device_debug::breakpoint *bp = debugInterface.breakpoint_first(); bp != NULL; bp = bp->next())
|
||||
@ -176,7 +176,7 @@ void debug_view_breakpoints::view_update()
|
||||
for (int row = 0; row < m_visible.y; row++)
|
||||
{
|
||||
UINT32 effrow = m_topleft.y + row;
|
||||
|
||||
|
||||
// Header
|
||||
if (effrow == 0)
|
||||
{
|
||||
@ -195,8 +195,8 @@ void debug_view_breakpoints::view_update()
|
||||
if (bpi < numBPs && bpi >= 0)
|
||||
{
|
||||
device_debug::breakpoint* bp = bpList[bpi];
|
||||
|
||||
astring buffer;
|
||||
|
||||
astring buffer;
|
||||
buffer.printf("%x", bp->index());
|
||||
pad_astring_to_length(buffer, 5);
|
||||
buffer.catprintf("%c", bp->enabled() ? 'X' : 'O');
|
||||
@ -213,7 +213,7 @@ void debug_view_breakpoints::view_update()
|
||||
buffer.catprintf("%s", bp->action());
|
||||
pad_astring_to_length(buffer, 60);
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i < m_visible.x; i++)
|
||||
{
|
||||
dest->byte = (i < buffer.len()) ? buffer[i] : ' ';
|
||||
@ -222,7 +222,7 @@ void debug_view_breakpoints::view_update()
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// Fill the remaining vertical space
|
||||
for (int i = 0; i < m_visible.x; i++)
|
||||
{
|
||||
@ -231,6 +231,6 @@ void debug_view_breakpoints::view_update()
|
||||
dest++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
delete bpList;
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
dvpoints.h
|
||||
|
||||
Breakpoint debugger view.
|
||||
Breakpoint debugger view.
|
||||
|
||||
****************************************************************************
|
||||
|
||||
@ -77,7 +77,7 @@ private:
|
||||
// internal helpers
|
||||
void enumerate_sources();
|
||||
bool recompute(offs_t pc, int startline, int lines);
|
||||
void pad_astring_to_length(astring& str, int len);
|
||||
void pad_astring_to_length(astring& str, int len);
|
||||
|
||||
// internal state
|
||||
};
|
||||
|
@ -43,7 +43,7 @@ device_card_options *device_slot_interface::static_alloc_card_options(device_t &
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
|
||||
void device_slot_interface::static_set_card_machine_config(device_t &device, const char *card, const machine_config_constructor machine_config)
|
||||
{
|
||||
static_alloc_card_options(device, card)->m_machine_config = machine_config;
|
||||
|
@ -135,20 +135,20 @@ EMUSOUNDOBJS = \
|
||||
$(EMUOBJ)/sound/flt_vol.o \
|
||||
$(EMUOBJ)/sound/flt_rc.o \
|
||||
$(EMUOBJ)/sound/wavwrite.o \
|
||||
$(EMUOBJ)/sound/samples.o \
|
||||
$(EMUOBJ)/sound/samples.o \
|
||||
|
||||
EMUDRIVEROBJS = \
|
||||
$(EMUDRIVERS)/empty.o \
|
||||
$(EMUDRIVERS)/testcpu.o \
|
||||
|
||||
|
||||
EMUMACHINEOBJS = \
|
||||
$(EMUMACHINE)/generic.o \
|
||||
$(EMUMACHINE)/ram.o \
|
||||
$(EMUMACHINE)/nvram.o \
|
||||
$(EMUMACHINE)/generic.o \
|
||||
$(EMUMACHINE)/ram.o \
|
||||
$(EMUMACHINE)/nvram.o \
|
||||
$(EMUMACHINE)/laserdsc.o \
|
||||
$(EMUMACHINE)/net_lib.o \
|
||||
$(EMUMACHINE)/netlist.o \
|
||||
|
||||
|
||||
EMUIMAGEDEVOBJS = \
|
||||
$(EMUIMAGEDEV)/bitbngr.o \
|
||||
$(EMUIMAGEDEV)/cartslot.o \
|
||||
@ -165,10 +165,10 @@ EMUIMAGEDEVOBJS = \
|
||||
|
||||
|
||||
EMUVIDEOOBJS = \
|
||||
$(EMUVIDEO)/generic.o \
|
||||
$(EMUVIDEO)/resnet.o \
|
||||
$(EMUVIDEO)/rgbutil.o \
|
||||
$(EMUVIDEO)/vector.o \
|
||||
$(EMUVIDEO)/generic.o \
|
||||
$(EMUVIDEO)/resnet.o \
|
||||
$(EMUVIDEO)/rgbutil.o \
|
||||
$(EMUVIDEO)/vector.o \
|
||||
|
||||
|
||||
LIBEMUOBJS = $(EMUOBJS) $(EMUSOUNDOBJS) $(EMUDRIVEROBJS) $(EMUMACHINEOBJS) $(EMUIMAGEDEVOBJS) $(EMUVIDEOOBJS)
|
||||
|
@ -559,16 +559,16 @@ astring running_machine::get_statename(const char *option)
|
||||
statename_str.cpy("%g");
|
||||
else
|
||||
statename_str.cpy(option);
|
||||
|
||||
|
||||
// strip any extension in the provided statename
|
||||
int index = statename_str.rchr(0, '.');
|
||||
if (index != -1)
|
||||
statename_str.substr(0, index);
|
||||
|
||||
|
||||
// handle %d in the template (for image devices)
|
||||
astring statename_dev("%d_");
|
||||
int pos = statename_str.find(0, statename_dev);
|
||||
|
||||
|
||||
if (pos != -1)
|
||||
{
|
||||
// if more %d are found, revert to default and ignore them all
|
||||
@ -578,12 +578,12 @@ astring running_machine::get_statename(const char *option)
|
||||
else
|
||||
{
|
||||
int name_found = 0;
|
||||
|
||||
|
||||
// find length of the device name
|
||||
int end1 = statename_str.find(pos + 3, "/");
|
||||
int end2 = statename_str.find(pos + 3, "%");
|
||||
int end = -1;
|
||||
|
||||
|
||||
if ((end1 != -1) && (end2 != -1))
|
||||
end = MIN(end1, end2);
|
||||
else if (end1 != -1)
|
||||
@ -592,15 +592,15 @@ astring running_machine::get_statename(const char *option)
|
||||
end = end2;
|
||||
else
|
||||
end = statename_str.len();
|
||||
|
||||
|
||||
if (end - pos < 3)
|
||||
fatalerror("Something very wrong is going on!!!\n");
|
||||
|
||||
|
||||
// copy the device name to an astring
|
||||
astring devname_str;
|
||||
devname_str.cpysubstr(statename_str, pos + 3, end - pos - 3);
|
||||
//printf("check template: %s\n", devname_str.cstr());
|
||||
|
||||
|
||||
// verify that there is such a device for this system
|
||||
image_interface_iterator iter(root_device());
|
||||
for (device_image_interface *image = iter.first(); image != NULL; image = iter.next())
|
||||
@ -608,30 +608,30 @@ astring running_machine::get_statename(const char *option)
|
||||
// get the device name
|
||||
astring tempdevname(image->brief_instance_name());
|
||||
//printf("check device: %s\n", tempdevname.cstr());
|
||||
|
||||
|
||||
if (devname_str.cmp(tempdevname) == 0)
|
||||
{
|
||||
// verify that such a device has an image mounted
|
||||
if (image->basename_noext() != NULL)
|
||||
{
|
||||
astring filename(image->basename_noext());
|
||||
|
||||
|
||||
// setup snapname and remove the %d_
|
||||
statename_str.replace(0, devname_str, filename);
|
||||
statename_str.del(pos, 3);
|
||||
//printf("check image: %s\n", filename.cstr());
|
||||
|
||||
|
||||
name_found = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// or fallback to default
|
||||
if (name_found == 0)
|
||||
statename_str.cpy("%g");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// substitute path and gamename up front
|
||||
statename_str.replace(0, "/", PATH_SEPARATOR);
|
||||
statename_str.replace(0, "%g", basename());
|
||||
|
@ -41,7 +41,7 @@ void fifo7200_device::device_start()
|
||||
m_ef_handler.resolve();
|
||||
m_ff_handler.resolve();
|
||||
m_hf_handler.resolve();
|
||||
|
||||
|
||||
// state save
|
||||
save_item(NAME(m_read_ptr));
|
||||
save_item(NAME(m_write_ptr));
|
||||
@ -60,11 +60,11 @@ void fifo7200_device::device_reset()
|
||||
memset(m_buffer, 0, m_ram_size * sizeof(UINT16));
|
||||
m_read_ptr = 0;
|
||||
m_write_ptr = 0;
|
||||
|
||||
|
||||
m_ef = 1;
|
||||
m_ff = 0;
|
||||
m_hf = 0;
|
||||
|
||||
|
||||
if (!m_ef_handler.isnull()) m_ef_handler(m_ef);
|
||||
if (!m_ff_handler.isnull()) m_ff_handler(m_ff);
|
||||
if (!m_hf_handler.isnull()) m_hf_handler(m_hf);
|
||||
@ -82,7 +82,7 @@ void fifo7200_device::fifo_write(UINT16 data)
|
||||
|
||||
m_buffer[m_write_ptr] = data & 0x1ff;
|
||||
m_write_ptr = (m_write_ptr + 1) % m_ram_size;
|
||||
|
||||
|
||||
// update flags
|
||||
if (m_ef)
|
||||
{
|
||||
@ -110,7 +110,7 @@ UINT16 fifo7200_device::fifo_read()
|
||||
logerror("IDT7200 %s fifo_read underflow!\n", tag());
|
||||
return 0x1ff;
|
||||
}
|
||||
|
||||
|
||||
UINT16 ret = m_buffer[m_read_ptr];
|
||||
m_read_ptr = (m_read_ptr + 1) % m_ram_size;
|
||||
|
||||
@ -126,12 +126,12 @@ UINT16 fifo7200_device::fifo_read()
|
||||
m_ef = 1;
|
||||
if (!m_ef_handler.isnull()) m_ef_handler(m_ef);
|
||||
}
|
||||
|
||||
|
||||
else if (((m_read_ptr + m_ram_size / 2) % m_ram_size) == m_write_ptr)
|
||||
{
|
||||
m_hf = 0;
|
||||
if (!m_hf_handler.isnull()) m_hf_handler(m_hf);
|
||||
}
|
||||
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ public:
|
||||
DECLARE_READ_LINE_MEMBER( ef_r ) { return m_ef; }
|
||||
DECLARE_READ_LINE_MEMBER( ff_r ) { return m_ff; }
|
||||
DECLARE_READ_LINE_MEMBER( hf_r ) { return m_hf; }
|
||||
|
||||
|
||||
// normal configuration
|
||||
DECLARE_WRITE16_MEMBER( data_word_w ) { fifo_write(data); }
|
||||
DECLARE_READ16_MEMBER( data_word_r ) { return (UINT16)fifo_read(); }
|
||||
@ -113,14 +113,14 @@ private:
|
||||
|
||||
UINT16* m_buffer;
|
||||
int m_ram_size;
|
||||
|
||||
|
||||
int m_read_ptr;
|
||||
int m_write_ptr;
|
||||
|
||||
|
||||
int m_ef; // empty flag
|
||||
int m_ff; // full flag
|
||||
int m_hf; // half-full flag
|
||||
|
||||
|
||||
devcb2_write_line m_ef_handler;
|
||||
devcb2_write_line m_ff_handler;
|
||||
devcb2_write_line m_hf_handler;
|
||||
|
@ -47,7 +47,7 @@ protected:
|
||||
virtual void device_config_complete();
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
|
||||
|
||||
adc1038_input_read_func m_input_callback_r_func;
|
||||
|
||||
private:
|
||||
|
@ -40,17 +40,17 @@ public:
|
||||
DECLARE_WRITE8_MEMBER( conv_w );
|
||||
DECLARE_READ8_MEMBER( do_r );
|
||||
DECLARE_READ8_MEMBER( eoc_r );
|
||||
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
|
||||
|
||||
void convert(int channel, int bits16, int lsbfirst);
|
||||
|
||||
adc1213x_input_convert_func m_input_callback_r_func;
|
||||
|
||||
|
||||
private:
|
||||
// internal state
|
||||
int m_cycle;
|
||||
|
@ -122,7 +122,7 @@ void ay31015_device::device_config_complete()
|
||||
const ay31015_config *intf = reinterpret_cast<const ay31015_config *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<ay31015_config *>(this) = *intf;
|
||||
|
||||
|
||||
// or initialize to defaults if none provided
|
||||
else
|
||||
{
|
||||
@ -143,13 +143,13 @@ void ay31015_device::device_start()
|
||||
m_read_si.resolve(read_si_cb, *this);
|
||||
m_write_so.resolve(write_so_cb, *this);
|
||||
m_status_changed.resolve(status_changed_cb, *this);
|
||||
|
||||
|
||||
m_tx_clock = transmitter_clock;
|
||||
m_rx_clock = receiver_clock;
|
||||
|
||||
|
||||
m_rx_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ay31015_device::rx_process),this));
|
||||
m_tx_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ay31015_device::tx_process),this));
|
||||
|
||||
|
||||
update_rx_timer();
|
||||
update_tx_timer();
|
||||
|
||||
@ -184,7 +184,7 @@ void ay31015_device::device_reset()
|
||||
{
|
||||
m_control_reg = 0;
|
||||
m_rx_data = 0;
|
||||
|
||||
|
||||
internal_reset();
|
||||
}
|
||||
|
||||
@ -566,12 +566,12 @@ void ay51013_device::internal_reset()
|
||||
{
|
||||
/* total pulses = 16 * data-bits */
|
||||
UINT8 t1;
|
||||
|
||||
|
||||
if (m_control_reg & CONTROL_NB2)
|
||||
t1 = (m_control_reg & CONTROL_NB1) ? 8 : 7;
|
||||
else
|
||||
t1 = (m_control_reg & CONTROL_NB1) ? 6 : 5;
|
||||
|
||||
|
||||
m_total_pulses = t1 << 4; /* total clock pulses to load a byte */
|
||||
m_second_stop_bit = ((m_control_reg & CONTROL_TSB) ? 16 : 0); /* 2nd stop bit */
|
||||
if ((t1 == 5) && (m_second_stop_bit == 16))
|
||||
@ -730,4 +730,3 @@ void ay31015_device::set_transmit_data( UINT8 data )
|
||||
update_status_pins();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -74,32 +74,32 @@ public:
|
||||
ay31015_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock);
|
||||
~ay31015_device() {}
|
||||
|
||||
|
||||
|
||||
/* Set an input pin */
|
||||
void set_input_pin( ay31015_input_pin_t pin, int data );
|
||||
|
||||
|
||||
|
||||
|
||||
/* Get an output pin */
|
||||
int get_output_pin( ay31015_output_pin_t pin );
|
||||
|
||||
|
||||
|
||||
|
||||
/* Set a new transmitter clock (new_clock is in Hz) */
|
||||
void set_transmitter_clock( double new_clock );
|
||||
|
||||
|
||||
|
||||
|
||||
/* Set a new receiver clock (new_clock is in Hz) */
|
||||
void set_receiver_clock( double new_clock );
|
||||
|
||||
|
||||
|
||||
|
||||
/* Reead the received data */
|
||||
/* The received data is available on RD8-RD1 (pins 5-12) */
|
||||
UINT8 get_received_data();
|
||||
|
||||
|
||||
|
||||
|
||||
/* Set the transmitter buffer */
|
||||
/* The data to transmit is set on DB1-DB8 (pins 26-33) */
|
||||
void set_transmit_data( UINT8 data );
|
||||
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
@ -120,13 +120,13 @@ protected:
|
||||
TIMER_CALLBACK_MEMBER(tx_process);
|
||||
|
||||
int m_pins[41];
|
||||
|
||||
|
||||
UINT8 m_control_reg;
|
||||
UINT8 m_status_reg;
|
||||
UINT16 m_second_stop_bit; // 0, 8, 16
|
||||
UINT16 m_total_pulses; // bits * 16
|
||||
UINT8 m_internal_sample;
|
||||
|
||||
|
||||
state_t m_rx_state;
|
||||
UINT8 m_rx_data; // byte being received
|
||||
UINT8 m_rx_buffer; // received byte waiting to be accepted by computer
|
||||
@ -135,7 +135,7 @@ protected:
|
||||
UINT16 m_rx_pulses; // total pulses left
|
||||
double m_rx_clock;
|
||||
emu_timer *m_rx_timer;
|
||||
|
||||
|
||||
state_t m_tx_state;
|
||||
UINT8 m_tx_data; // byte being sent
|
||||
UINT8 m_tx_buffer; // next byte to send
|
||||
@ -143,7 +143,7 @@ protected:
|
||||
UINT16 m_tx_pulses; // total pulses left
|
||||
double m_tx_clock;
|
||||
emu_timer *m_tx_timer;
|
||||
|
||||
|
||||
devcb_resolved_read8 m_read_si; /* SI - pin 20 - This will be called whenever the SI pin is sampled. Optional */
|
||||
devcb_resolved_write8 m_write_so; /* SO - pin 25 - This will be called whenever data is put on the SO pin. Optional */
|
||||
devcb_resolved_write8 m_status_changed; /* This will be called whenever one of the status pins may have changed. Optional */
|
||||
@ -153,14 +153,14 @@ class ay51013_device : public ay31015_device
|
||||
{
|
||||
public:
|
||||
ay51013_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
|
||||
protected:
|
||||
virtual void internal_reset();
|
||||
|
||||
};
|
||||
|
||||
extern const device_type AY31015; // For AY-3-1014A, AY-3-1015(D) and HD6402 variants
|
||||
extern const device_type AY51013; // For AY-3-1014, AY-5-1013 and AY-6-1013 variants
|
||||
extern const device_type AY31015; // For AY-3-1014A, AY-3-1015(D) and HD6402 variants
|
||||
extern const device_type AY51013; // For AY-3-1014, AY-5-1013 and AY-6-1013 variants
|
||||
|
||||
|
||||
|
||||
|
@ -48,9 +48,9 @@ const int com8116_device::divisors_32X_5_0688MHz[] =
|
||||
|
||||
com8116_device::com8116_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, COM8116, "COM8116", tag, owner, clock),
|
||||
m_write_fx4(*this),
|
||||
m_write_fr(*this),
|
||||
m_write_ft(*this)
|
||||
m_write_fx4(*this),
|
||||
m_write_fr(*this),
|
||||
m_write_ft(*this)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -301,7 +301,7 @@ static astring &nvram_filename(astring &result, device_t &device)
|
||||
running_machine &machine = device.machine();
|
||||
|
||||
// start with either basename or basename_biosnum
|
||||
result.cpy(machine.basename());
|
||||
result.cpy(machine.basename());
|
||||
if (device.machine().root_device().system_bios() != 0 && device.machine().root_device().default_bios() != device.machine().root_device().system_bios())
|
||||
result.catprintf("_%d", device.machine().root_device().system_bios() - 1);
|
||||
|
||||
|
@ -97,7 +97,7 @@ void ide_controller_device::set_irq(int state)
|
||||
LOG(("IDE interrupt assert\n"));
|
||||
else
|
||||
LOG(("IDE interrupt clear\n"));
|
||||
|
||||
|
||||
/* signal an interrupt */
|
||||
m_irq_handler(state);
|
||||
interrupt_pending = state;
|
||||
@ -885,7 +885,7 @@ READ8_MEMBER( ide_controller_device::read_via_config )
|
||||
break;
|
||||
}
|
||||
|
||||
// printf( "read via config %04x %04x %04x\n", offset, result, mem_mask );
|
||||
// printf( "read via config %04x %04x %04x\n", offset, result, mem_mask );
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -1009,7 +1009,7 @@ READ16_MEMBER( ide_controller_device::read_cs0 )
|
||||
break;
|
||||
}
|
||||
|
||||
// printf( "read cs0 %04x %04x %04x\n", offset, result, mem_mask );
|
||||
// printf( "read cs0 %04x %04x %04x\n", offset, result, mem_mask );
|
||||
|
||||
/* return the result */
|
||||
return result;
|
||||
@ -1071,7 +1071,7 @@ READ16_MEMBER( ide_controller_device::read_cs1 )
|
||||
break;
|
||||
}
|
||||
|
||||
// printf( "read cs1 %04x %04x %04x\n", offset, result, mem_mask );
|
||||
// printf( "read cs1 %04x %04x %04x\n", offset, result, mem_mask );
|
||||
|
||||
/* return the result */
|
||||
return result;
|
||||
@ -1086,7 +1086,7 @@ READ16_MEMBER( ide_controller_device::read_cs1 )
|
||||
|
||||
WRITE8_MEMBER( ide_controller_device::write_via_config )
|
||||
{
|
||||
// printf( "write via config %04x %04x %04x\n", offset, data, mem_mask );
|
||||
// printf( "write via config %04x %04x %04x\n", offset, data, mem_mask );
|
||||
|
||||
/* logit */
|
||||
LOG(("%s:IDE via config write to %X = %08X, mem_mask=%d\n", machine().describe_context(), offset, data, mem_mask));
|
||||
@ -1139,7 +1139,7 @@ void ide_controller_device::write_dma( UINT16 data )
|
||||
|
||||
WRITE16_MEMBER( ide_controller_device::write_cs0 )
|
||||
{
|
||||
// printf( "write cs0 %04x %04x %04x\n", offset, data, mem_mask );
|
||||
// printf( "write cs0 %04x %04x %04x\n", offset, data, mem_mask );
|
||||
|
||||
switch (offset)
|
||||
{
|
||||
@ -1229,7 +1229,7 @@ WRITE16_MEMBER( ide_controller_device::write_cs1_pc )
|
||||
|
||||
WRITE16_MEMBER( ide_controller_device::write_cs1 )
|
||||
{
|
||||
// printf( "write cs1 %04x %04x %04x\n", offset, data, mem_mask );
|
||||
// printf( "write cs1 %04x %04x %04x\n", offset, data, mem_mask );
|
||||
|
||||
/* logit */
|
||||
LOG(("%s:IDE cs1 write to %X = %08X, mem_mask=%d\n", machine().describe_context(), offset, data, mem_mask));
|
||||
|
@ -100,7 +100,7 @@ public:
|
||||
DECLARE_READ16_MEMBER(read_cs1_pc);
|
||||
DECLARE_WRITE16_MEMBER(write_cs0_pc);
|
||||
DECLARE_WRITE16_MEMBER(write_cs1_pc);
|
||||
|
||||
|
||||
virtual void set_irq(int state);
|
||||
virtual void set_dmarq(int state);
|
||||
void read_sector_done();
|
||||
|
@ -239,7 +239,7 @@ ide_hdd_device::ide_hdd_device(const machine_config &mconfig, device_type type,
|
||||
|
||||
void ide_hdd_device::device_start()
|
||||
{
|
||||
// save_item(NAME(features));
|
||||
// save_item(NAME(features));
|
||||
|
||||
save_item(NAME(cur_cylinder));
|
||||
save_item(NAME(cur_sector));
|
||||
|
@ -278,7 +278,7 @@ WRITE8_MEMBER( im6402_device::write )
|
||||
}
|
||||
else
|
||||
{
|
||||
set_tbre(CLEAR_LINE);
|
||||
set_tbre(CLEAR_LINE);
|
||||
}
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -12,7 +12,7 @@ class mb14241_device : public device_t
|
||||
{
|
||||
public:
|
||||
mb14241_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
|
||||
DECLARE_WRITE8_MEMBER ( shift_count_w );
|
||||
DECLARE_WRITE8_MEMBER ( shift_data_w );
|
||||
DECLARE_READ8_MEMBER( shift_result_r );
|
||||
@ -25,7 +25,7 @@ protected:
|
||||
|
||||
private:
|
||||
// internal state
|
||||
|
||||
|
||||
UINT16 m_shift_data; /* 15 bits only */
|
||||
UINT8 m_shift_count; /* 3 bits */
|
||||
};
|
||||
|
@ -1232,7 +1232,7 @@ void mc68901_device::register_w(offs_t offset, UINT8 data)
|
||||
if (data & UCR_PARITY_EVEN)
|
||||
{
|
||||
if (LOG) logerror("MC68901 '%s' Parity : Even\n", tag());
|
||||
|
||||
|
||||
parity_code = SERIAL_PARITY_EVEN;
|
||||
}
|
||||
else
|
||||
|
@ -99,7 +99,7 @@ void mm58274c_device::device_start()
|
||||
save_item(NAME(m_minutes2));
|
||||
save_item(NAME(m_seconds1));
|
||||
save_item(NAME(m_seconds2));
|
||||
save_item(NAME(m_tenths));
|
||||
save_item(NAME(m_tenths));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -109,14 +109,14 @@ void mm58274c_device::device_start()
|
||||
void mm58274c_device::device_reset()
|
||||
{
|
||||
system_time systime;
|
||||
|
||||
|
||||
/* get the current date/time from the core */
|
||||
machine().current_datetime(systime);
|
||||
|
||||
|
||||
m_clk_set = systime.local_time.year & 3 << 2;
|
||||
if (m_mode24)
|
||||
m_clk_set |= clk_set_24;
|
||||
|
||||
|
||||
/* The clock count starts on 1st January 1900 */
|
||||
m_wday = 1 + ((systime.local_time.weekday - m_day1) % 7);
|
||||
m_years1 = (systime.local_time.year / 10) % 10;
|
||||
@ -175,75 +175,75 @@ READ8_MEMBER( mm58274c_device::read )
|
||||
reply = m_status;
|
||||
m_status = 0;
|
||||
break;
|
||||
|
||||
|
||||
case 0x01: /* Tenths of Seconds */
|
||||
reply = m_tenths;
|
||||
break;
|
||||
|
||||
|
||||
case 0x02: /* Units Seconds */
|
||||
reply = m_seconds2;
|
||||
break;
|
||||
|
||||
|
||||
case 0x03: /* Tens Seconds */
|
||||
reply = m_seconds1;
|
||||
break;
|
||||
|
||||
|
||||
case 0x04: /* Units Minutes */
|
||||
reply = m_minutes2;
|
||||
break;
|
||||
|
||||
|
||||
case 0x05: /* Tens Minutes */
|
||||
reply = m_minutes1;
|
||||
break;
|
||||
|
||||
|
||||
case 0x06: /* Units Hours */
|
||||
reply = m_hours2;
|
||||
break;
|
||||
|
||||
|
||||
case 0x07: /* Tens Hours */
|
||||
reply = m_hours1;
|
||||
break;
|
||||
|
||||
|
||||
case 0x08: /* Units Days */
|
||||
reply = m_days2;
|
||||
break;
|
||||
|
||||
|
||||
case 0x09: /* Tens Days */
|
||||
reply = m_days1;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0a: /* Units Months */
|
||||
reply = m_months2;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0b: /* Tens Months */
|
||||
reply = m_months1;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0c: /* Units Years */
|
||||
reply = m_years2;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0d: /* Tens Years */
|
||||
reply = m_years1;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0e: /* Day of Week */
|
||||
reply = m_wday;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0f: /* Clock Setting & Interrupt Registers */
|
||||
if (m_control & ctl_intsel) /* interrupt register */
|
||||
if (m_control & ctl_intsel) /* interrupt register */
|
||||
reply = m_int_ctl;
|
||||
else /* clock setting register */
|
||||
else /* clock setting register */
|
||||
{
|
||||
if (m_clk_set & clk_set_24) /* 24-hour mode */
|
||||
if (m_clk_set & clk_set_24) /* 24-hour mode */
|
||||
reply = m_clk_set & ~clk_set_pm;
|
||||
else /* 12-hour mode */
|
||||
else /* 12-hour mode */
|
||||
reply = m_clk_set;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
reply = 0;
|
||||
break;
|
||||
@ -261,90 +261,90 @@ WRITE8_MEMBER( mm58274c_device::write )
|
||||
switch (offset)
|
||||
{
|
||||
case 0x00: /* Control Register (test mode and interrupt not emulated) */
|
||||
if ((!(m_control & ctl_intstop)) && (data & ctl_intstop)) /* interrupt stop */
|
||||
if ((!(m_control & ctl_intstop)) && (data & ctl_intstop)) /* interrupt stop */
|
||||
m_interrupt_timer->enable(0);
|
||||
else if ((m_control & ctl_intstop) && (!(data & ctl_intstop))) /* interrupt run */
|
||||
else if ((m_control & ctl_intstop) && (!(data & ctl_intstop))) /* interrupt run */
|
||||
{
|
||||
attotime period = interrupt_period_table(m_int_ctl & int_ctl_dly);
|
||||
|
||||
|
||||
m_interrupt_timer->adjust(period, 0, m_int_ctl & int_ctl_rpt ? period : attotime::zero);
|
||||
}
|
||||
if (data & ctl_clkstop) /* stopping the clock clears the tenth counter */
|
||||
if (data & ctl_clkstop) /* stopping the clock clears the tenth counter */
|
||||
m_tenths = 0;
|
||||
m_control = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x01: /* Tenths of Seconds: cannot be written */
|
||||
break;
|
||||
|
||||
|
||||
case 0x02: /* Units Seconds */
|
||||
m_seconds2 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x03: /* Tens Seconds */
|
||||
m_seconds1 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x04: /* Units Minutes */
|
||||
m_minutes2 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x05: /* Tens Minutes */
|
||||
m_minutes1 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x06: /* Units Hours */
|
||||
m_hours2 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x07: /* Tens Hours */
|
||||
m_hours1 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x08: /* Units Days */
|
||||
m_days2 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x09: /* Tens Days */
|
||||
m_days1 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0a: /* Units Months */
|
||||
m_months2 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0b: /* Tens Months */
|
||||
m_months1 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0c: /* Units Years */
|
||||
m_years2 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0d: /* Tens Years */
|
||||
m_years1 = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0e: /* Day of Week */
|
||||
m_wday = data;
|
||||
break;
|
||||
|
||||
|
||||
case 0x0f: /* Clock Setting & Interrupt Registers */
|
||||
if (m_control & ctl_intsel) /* interrupt register (not emulated) */
|
||||
if (m_control & ctl_intsel) /* interrupt register (not emulated) */
|
||||
{
|
||||
m_int_ctl = data;
|
||||
if (!(m_control & ctl_intstop)) /* interrupt run */
|
||||
if (!(m_control & ctl_intstop)) /* interrupt run */
|
||||
{
|
||||
attotime period = interrupt_period_table(m_int_ctl & int_ctl_dly);
|
||||
|
||||
|
||||
m_interrupt_timer->adjust(period, 0, m_int_ctl & int_ctl_rpt ? period : attotime::zero);
|
||||
}
|
||||
}
|
||||
else /* clock setting register */
|
||||
else /* clock setting register */
|
||||
{
|
||||
m_clk_set = data;
|
||||
#if 0
|
||||
if (m_clk_set & clk_set_24) /* 24-hour mode */
|
||||
if (m_clk_set & clk_set_24) /* 24-hour mode */
|
||||
m_clk_set &= ~clk_set_pm;
|
||||
#endif
|
||||
}
|
||||
@ -482,4 +482,3 @@ TIMER_CALLBACK_MEMBER(mm58274c_device::rtc_increment_cb)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ class mm58274c_device : public device_t,
|
||||
public:
|
||||
mm58274c_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
~mm58274c_device() {}
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER(read);
|
||||
DECLARE_WRITE8_MEMBER(write);
|
||||
|
||||
@ -42,14 +42,14 @@ protected:
|
||||
private:
|
||||
// internal state
|
||||
attotime interrupt_period_table(int val);
|
||||
|
||||
|
||||
int m_status; /* status register (*read* from address 0 = control register) */
|
||||
int m_control; /* control register (*write* to address 0) */
|
||||
|
||||
|
||||
int m_clk_set; /* clock setting register */
|
||||
int m_int_ctl; /* interrupt control register */
|
||||
|
||||
|
||||
|
||||
|
||||
int m_wday; /* day of the week (1-7 (1=day1 as set in init)) */
|
||||
int m_years1; /* years (BCD: 0-99) */
|
||||
int m_years2;
|
||||
@ -64,7 +64,7 @@ private:
|
||||
int m_seconds1; /* seconds (BCD : 0-59) */
|
||||
int m_seconds2;
|
||||
int m_tenths; /* tenths of second (BCD : 0-9) */
|
||||
|
||||
|
||||
emu_timer *m_increment_rtc;
|
||||
emu_timer *m_interrupt_timer;
|
||||
};
|
||||
|
@ -75,24 +75,24 @@ void pit8253_device::device_config_complete()
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void pit8253_device::common_start( int device_type )
|
||||
void pit8253_device::common_start( int device_type )
|
||||
{
|
||||
m_device_type = device_type;
|
||||
|
||||
|
||||
/* register for state saving */
|
||||
for (int timerno = 0; timerno < PIT8253_MAX_TIMER; timerno++)
|
||||
{
|
||||
pit8253_timer *timer = get_timer(timerno);
|
||||
|
||||
|
||||
/* initialize timer */
|
||||
timer->clockin = m_intf_timer[timerno].clockin;
|
||||
timer->updatetimer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(pit8253_device::update_timer_cb),this));
|
||||
timer->updatetimer->adjust(attotime::never, timerno);
|
||||
|
||||
|
||||
/* resolve callbacks */
|
||||
timer->in_gate_func.resolve(m_intf_timer[timerno].in_gate_func, *this);
|
||||
timer->out_out_func.resolve(m_intf_timer[timerno].out_out_func, *this);
|
||||
|
||||
|
||||
/* set up state save values */
|
||||
save_item(NAME(timer->clockin), timerno);
|
||||
save_item(NAME(timer->control), timerno);
|
||||
@ -144,20 +144,20 @@ void pit8253_device::device_reset()
|
||||
timer->rmsb = timer->wmsb = 0;
|
||||
timer->count = timer->value = timer->latch = 0;
|
||||
timer->lowcount = 0;
|
||||
|
||||
|
||||
if (!timer->in_gate_func.isnull())
|
||||
timer->gate = timer->in_gate_func();
|
||||
else
|
||||
timer->gate = 1;
|
||||
|
||||
|
||||
timer->output = 2; /* output is undetermined */
|
||||
timer->latched_count = 0;
|
||||
timer->latched_status = 0;
|
||||
timer->null_count = 1;
|
||||
timer->cycles_to_output = CYCLES_NEVER;
|
||||
|
||||
|
||||
timer->last_updated = machine().time();
|
||||
|
||||
|
||||
update(timer);
|
||||
}
|
||||
}
|
||||
@ -311,7 +311,7 @@ void pit8253_device::simulate2(pit8253_timer *timer, INT64 elapsed_cycles)
|
||||
LOG2(("pit8253: simulate2(): simulating %d cycles for %d in mode %d, bcd = %d, phase = %d, gate = %d, output %d, value = 0x%04x\n",
|
||||
(int)elapsed_cycles, timer->index, mode, bcd, timer->phase, pit8253_gate(timer), timer->output, timer->value));
|
||||
|
||||
switch (mode)
|
||||
switch (mode)
|
||||
{
|
||||
case 0:
|
||||
/* Mode 0: (Interrupt on Terminal Count)
|
||||
@ -342,7 +342,7 @@ void pit8253_device::simulate2(pit8253_timer *timer, INT64 elapsed_cycles)
|
||||
if (elapsed_cycles >= 0 && timer->phase == 1)
|
||||
{
|
||||
/* Counter load cycle */
|
||||
if (elapsed_cycles > 0)
|
||||
if (elapsed_cycles > 0)
|
||||
{
|
||||
--elapsed_cycles;
|
||||
timer->phase = 2;
|
||||
@ -406,7 +406,7 @@ void pit8253_device::simulate2(pit8253_timer *timer, INT64 elapsed_cycles)
|
||||
if (elapsed_cycles >= 0 && timer->phase == 1)
|
||||
{
|
||||
/* Counter load cycle, output goes low */
|
||||
if (elapsed_cycles > 0)
|
||||
if (elapsed_cycles > 0)
|
||||
{
|
||||
--elapsed_cycles;
|
||||
timer->phase = 2;
|
||||
@ -472,7 +472,7 @@ void pit8253_device::simulate2(pit8253_timer *timer, INT64 elapsed_cycles)
|
||||
{
|
||||
if (elapsed_cycles >= 0 && timer->phase == 1)
|
||||
{
|
||||
if (elapsed_cycles > 0)
|
||||
if (elapsed_cycles > 0)
|
||||
{
|
||||
--elapsed_cycles;
|
||||
timer->phase = 2;
|
||||
@ -552,7 +552,7 @@ void pit8253_device::simulate2(pit8253_timer *timer, INT64 elapsed_cycles)
|
||||
{
|
||||
if (elapsed_cycles >= 0 && timer->phase == 1)
|
||||
{
|
||||
if (elapsed_cycles > 0)
|
||||
if (elapsed_cycles > 0)
|
||||
{
|
||||
--elapsed_cycles;
|
||||
timer->phase = 2;
|
||||
@ -560,7 +560,7 @@ void pit8253_device::simulate2(pit8253_timer *timer, INT64 elapsed_cycles)
|
||||
load_counter_value(timer);
|
||||
}
|
||||
|
||||
if (elapsed_cycles > 0)
|
||||
if (elapsed_cycles > 0)
|
||||
{
|
||||
adjusted_value = adjusted_count(bcd, timer->value);
|
||||
|
||||
@ -635,7 +635,7 @@ void pit8253_device::simulate2(pit8253_timer *timer, INT64 elapsed_cycles)
|
||||
{
|
||||
if (elapsed_cycles >= 0 && timer->phase == 1)
|
||||
{
|
||||
if (elapsed_cycles > 0)
|
||||
if (elapsed_cycles > 0)
|
||||
{
|
||||
--elapsed_cycles;
|
||||
timer->phase = 2;
|
||||
@ -799,12 +799,12 @@ READ8_MEMBER( pit8253_device::read )
|
||||
timer->rmsb = 1 - timer->rmsb;
|
||||
--timer->latched_count;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
value = masked_value(timer);
|
||||
|
||||
/* Read back current count */
|
||||
switch(CTRL_ACCESS(timer->control))
|
||||
switch(CTRL_ACCESS(timer->control))
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
@ -892,7 +892,7 @@ void pit8253_device::readback(pit8253_timer *timer, int command)
|
||||
if (timer->latched_count == 0)
|
||||
{
|
||||
value = masked_value(timer);
|
||||
switch(CTRL_ACCESS(timer->control))
|
||||
switch(CTRL_ACCESS(timer->control))
|
||||
{
|
||||
case 0:
|
||||
/* This should never happen */
|
||||
@ -928,7 +928,7 @@ WRITE8_MEMBER( pit8253_device::write )
|
||||
|
||||
LOG2(("pit8253: write(): offset=%d data=0x%02x\n", offset, data));
|
||||
|
||||
if (timer == NULL)
|
||||
if (timer == NULL)
|
||||
{
|
||||
/* Write to mode control register */
|
||||
timer = get_timer((data >> 6) & 3);
|
||||
@ -982,7 +982,7 @@ WRITE8_MEMBER( pit8253_device::write )
|
||||
if (machine().time() > timer->last_updated && timer->clockin != 0)
|
||||
middle_of_a_cycle = 1;
|
||||
|
||||
switch(CTRL_ACCESS(timer->control))
|
||||
switch(CTRL_ACCESS(timer->control))
|
||||
{
|
||||
case 0:
|
||||
/* This should never happen */
|
||||
@ -1124,4 +1124,3 @@ void pit8253_device::set_clock_signal(int timerno, int state)
|
||||
WRITE_LINE_MEMBER( pit8253_device::clk0_w ) { set_clock_signal(0, state); }
|
||||
WRITE_LINE_MEMBER( pit8253_device::clk1_w ) { set_clock_signal(1, state); }
|
||||
WRITE_LINE_MEMBER( pit8253_device::clk2_w ) { set_clock_signal(2, state); }
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
|
||||
/* device types */
|
||||
enum
|
||||
enum
|
||||
{
|
||||
TYPE_PIT8253 = 0,
|
||||
TYPE_PIT8254
|
||||
@ -52,14 +52,14 @@ struct pit8253_timer
|
||||
int index; /* index number of the timer */
|
||||
double clockin; /* input clock frequency in Hz */
|
||||
int clock; /* clock signal when clockin is 0 */
|
||||
|
||||
|
||||
devcb_resolved_read_line in_gate_func; /* callback for gate input */
|
||||
devcb_resolved_write_line out_out_func; /* callback function for when output changes */
|
||||
|
||||
|
||||
attotime last_updated; /* time when last updated */
|
||||
|
||||
|
||||
emu_timer *updatetimer; /* MAME timer to process updates */
|
||||
|
||||
|
||||
UINT16 value; /* current counter value ("CE" in Intel docs) */
|
||||
UINT16 latch; /* latched counter value ("OL" in Intel docs) */
|
||||
UINT16 count; /* new counter value ("CR" in Intel docs) */
|
||||
@ -69,13 +69,13 @@ struct pit8253_timer
|
||||
INT32 rmsb; /* 1 = Next read is MSB of 16-bit value */
|
||||
INT32 wmsb; /* 1 = Next write is MSB of 16-bit value */
|
||||
INT32 output; /* 0 = low, 1 = high */
|
||||
|
||||
|
||||
INT32 gate; /* gate input (0 = low, 1 = high) */
|
||||
INT32 latched_count; /* number of bytes of count latched */
|
||||
INT32 latched_status; /* 1 = status latched (8254 only) */
|
||||
INT32 null_count; /* 1 = mode control or count written, 0 = count loaded */
|
||||
INT32 phase; /* see phase definition tables in simulate2(), below */
|
||||
|
||||
|
||||
UINT32 cycles_to_output; /* cycles until output callback called */
|
||||
};
|
||||
|
||||
@ -90,20 +90,20 @@ public:
|
||||
|
||||
DECLARE_READ8_MEMBER(read);
|
||||
DECLARE_WRITE8_MEMBER(write);
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(clk0_w);
|
||||
WRITE_LINE_MEMBER(clk1_w);
|
||||
WRITE_LINE_MEMBER(clk2_w);
|
||||
|
||||
|
||||
WRITE_LINE_MEMBER(gate0_w);
|
||||
WRITE_LINE_MEMBER(gate1_w);
|
||||
WRITE_LINE_MEMBER(gate2_w);
|
||||
|
||||
|
||||
|
||||
|
||||
/* In the 8253/8254 the CLKx input lines can be attached to a regular clock
|
||||
signal. Another option is to use the output from one timer as the input
|
||||
clock to another timer.
|
||||
|
||||
|
||||
The functions below should supply both functionalities. If the signal is
|
||||
a regular clock signal, use the pit8253_set_clockin function. If the
|
||||
CLKx input signal is the output of the different source, set the new_clockin
|
||||
@ -113,14 +113,14 @@ public:
|
||||
int get_output(int timer);
|
||||
void set_clockin(int timer, double new_clockin);
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
|
||||
|
||||
|
||||
// internal state
|
||||
void common_start(int device_type);
|
||||
pit8253_timer *get_timer(int which);
|
||||
@ -138,7 +138,7 @@ protected:
|
||||
void set_clock_signal(int timerno, int state);
|
||||
|
||||
TIMER_CALLBACK_MEMBER(update_timer_cb);
|
||||
|
||||
|
||||
int m_device_type;
|
||||
|
||||
pit8253_timer m_timers[PIT8253_MAX_TIMER];
|
||||
|
@ -89,7 +89,7 @@ READ16_MEMBER(rf5c296_device::io_r)
|
||||
case 0x3e1:
|
||||
data = reg_r(m_rf5c296_reg);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
data = m_pccard->read_memory(space, offset, mem_mask);
|
||||
break;
|
||||
|
@ -3,8 +3,8 @@
|
||||
RP5H01
|
||||
|
||||
TODO:
|
||||
- follow the datasheet better (all dumps presumably needs to be redone
|
||||
from scratch?)
|
||||
- follow the datasheet better (all dumps presumably needs to be redone
|
||||
from scratch?)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -187,5 +187,3 @@ READ8_MEMBER( rp5h01_device::data_r )
|
||||
/* return the data */
|
||||
return (m_data[byte] >> bit) & 1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -27,7 +27,7 @@ class rp5h01_device : public device_t
|
||||
{
|
||||
public:
|
||||
rp5h01_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
|
||||
DECLARE_WRITE8_MEMBER( enable_w ); /* /CE */
|
||||
DECLARE_WRITE8_MEMBER( reset_w ); /* RESET */
|
||||
DECLARE_WRITE8_MEMBER( cs_w ); /* CS */
|
||||
|
@ -46,7 +46,7 @@ void serflash_device::device_reset()
|
||||
{
|
||||
m_flash_enab = 0;
|
||||
flash_hard_reset(machine());
|
||||
|
||||
|
||||
m_last_flash_cmd = 0x00;
|
||||
m_flash_addr_seq = 0;
|
||||
m_flash_addr = 0;
|
||||
@ -61,7 +61,6 @@ void serflash_device::device_reset()
|
||||
|
||||
void serflash_device::nvram_default()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -98,7 +97,6 @@ void serflash_device::nvram_read(emu_file &file)
|
||||
|
||||
void serflash_device::nvram_write(emu_file &file)
|
||||
{
|
||||
|
||||
if (m_length % FLASH_PAGE_SIZE) return; // region size must be multiple of flash page size
|
||||
int size = m_length /= FLASH_PAGE_SIZE;
|
||||
|
||||
@ -167,7 +165,7 @@ WRITE8_MEMBER( serflash_device::flash_cmd_w )
|
||||
|
||||
switch (data)
|
||||
{
|
||||
case 0x00: // READ
|
||||
case 0x00: // READ
|
||||
m_flash_addr_seq = 0;
|
||||
break;
|
||||
|
||||
@ -175,21 +173,21 @@ WRITE8_MEMBER( serflash_device::flash_cmd_w )
|
||||
m_flash_addr_seq = 0;
|
||||
break;
|
||||
|
||||
case 0x70: // READ STATUS
|
||||
case 0x70: // READ STATUS
|
||||
flash_change_state( space.machine(), STATE_READ_STATUS );
|
||||
break;
|
||||
|
||||
case 0x80: // PAGE / CACHE PROGRAM
|
||||
case 0x80: // PAGE / CACHE PROGRAM
|
||||
m_flash_addr_seq = 0;
|
||||
// this actually seems to be set with the next 2 writes?
|
||||
m_flash_page_addr = 0;
|
||||
break;
|
||||
|
||||
case 0x90: // READ ID
|
||||
case 0x90: // READ ID
|
||||
flash_change_state( space.machine(), STATE_READ_ID );
|
||||
break;
|
||||
|
||||
case 0xff: // RESET
|
||||
case 0xff: // RESET
|
||||
flash_change_state( space.machine(), STATE_IDLE );
|
||||
break;
|
||||
|
||||
@ -203,11 +201,9 @@ WRITE8_MEMBER( serflash_device::flash_cmd_w )
|
||||
{
|
||||
switch (m_flash_cmd_prev)
|
||||
{
|
||||
case 0x00: // READ
|
||||
case 0x00: // READ
|
||||
if (data == 0x30)
|
||||
{
|
||||
|
||||
|
||||
memcpy(m_flash_page_data, m_region + m_flash_row * FLASH_PAGE_SIZE, FLASH_PAGE_SIZE);
|
||||
m_flash_page_addr = m_flash_col;
|
||||
m_flash_page_index = m_flash_row;
|
||||
@ -306,16 +302,16 @@ READ8_MEMBER( serflash_device::flash_io_r )
|
||||
switch( m_flash_read_seq++ )
|
||||
{
|
||||
case 0:
|
||||
data = 0xEC; // Manufacturer
|
||||
data = 0xEC; // Manufacturer
|
||||
break;
|
||||
case 1:
|
||||
data = 0xF1; // Device
|
||||
data = 0xF1; // Device
|
||||
break;
|
||||
case 2:
|
||||
data = 0x00; // XX
|
||||
data = 0x00; // XX
|
||||
break;
|
||||
case 3:
|
||||
data = 0x15; // Flags
|
||||
data = 0x15; // Flags
|
||||
m_flash_read_seq = 0;
|
||||
break;
|
||||
}
|
||||
@ -342,7 +338,7 @@ READ8_MEMBER( serflash_device::flash_io_r )
|
||||
|
||||
default:
|
||||
{
|
||||
// logerror("%08x FLASH: unknown read in state %s\n",0x00/*m_maincpu->pc()*/, m_flash_state_name[m_flash_state]);
|
||||
// logerror("%08x FLASH: unknown read in state %s\n",0x00/*m_maincpu->pc()*/, m_flash_state_name[m_flash_state]);
|
||||
}
|
||||
}
|
||||
|
||||
@ -412,4 +408,3 @@ WRITE8_MEMBER(serflash_device::n3d_flash_addr_w)
|
||||
logerror("set flash block to %08x\n", m_flash_addr);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
#define __SERFLASH_H__
|
||||
|
||||
|
||||
#define FLASH_PAGE_SIZE (2048+64)
|
||||
#define FLASH_PAGE_SIZE (2048+64)
|
||||
|
||||
|
||||
|
||||
@ -18,16 +18,15 @@
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_SERFLASH_ADD(_tag) \
|
||||
MCFG_DEVICE_ADD(_tag, SERFLASH, 0) \
|
||||
|
||||
MCFG_DEVICE_ADD(_tag, SERFLASH, 0)
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
class serflash_device;
|
||||
|
||||
typedef enum { STATE_IDLE = 0, STATE_READ, STATE_READ_ID, STATE_READ_STATUS, STATE_BLOCK_ERASE, STATE_PAGE_PROGRAM } flash_state_t;
|
||||
//const char *m_flash_state_name[] = { "IDLE", "READ", "READ_ID", "READ_STATUS", "BLOCK ERASE", "PAGE PROGRAM" };
|
||||
typedef enum { STATE_IDLE = 0, STATE_READ, STATE_READ_ID, STATE_READ_STATUS, STATE_BLOCK_ERASE, STATE_PAGE_PROGRAM } flash_state_t;
|
||||
//const char *m_flash_state_name[] = { "IDLE", "READ", "READ_ID", "READ_STATUS", "BLOCK ERASE", "PAGE PROGRAM" };
|
||||
|
||||
// custom initialization for default state
|
||||
typedef device_delegate<void (serflash_device &, void *, size_t)> serflash_init_delegate;
|
||||
@ -105,4 +104,3 @@ extern const device_type SERFLASH;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -85,14 +85,14 @@ tms6100_device::tms6100_device(const machine_config &mconfig, const char *tag, d
|
||||
: device_t(mconfig, TMS6100, "TMS6100", tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
const device_type M58819 = &device_creator<m58819_device>;
|
||||
|
||||
m58819_device::m58819_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: tms6100_device(mconfig, M58819, "M58819", tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
@ -231,5 +231,3 @@ READ_LINE_MEMBER(tms6100_device::tms6100_data_r)
|
||||
{
|
||||
return m_data;
|
||||
}
|
||||
|
||||
|
||||
|
@ -10,7 +10,7 @@ class tms6100_device : public device_t
|
||||
public:
|
||||
tms6100_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
tms6100_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( tms6100_m0_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( tms6100_m1_w );
|
||||
DECLARE_WRITE_LINE_MEMBER( tms6100_romclock_w );
|
||||
@ -34,8 +34,8 @@ private:
|
||||
UINT8 m_tms_clock;
|
||||
UINT8 m_data;
|
||||
UINT8 m_state;
|
||||
|
||||
const UINT8 *m_rom;
|
||||
|
||||
const UINT8 *m_rom;
|
||||
|
||||
};
|
||||
|
||||
|
@ -20,8 +20,8 @@
|
||||
|
||||
TODO:
|
||||
|
||||
- devcb2
|
||||
- i8274 DMA scheme
|
||||
- devcb2
|
||||
- i8274 DMA scheme
|
||||
- break detection
|
||||
- wr0 reset tx interrupt pending
|
||||
- wait/ready
|
||||
@ -494,7 +494,7 @@ z80dart_channel::z80dart_channel(const machine_config &mconfig, const char *tag,
|
||||
{
|
||||
m_rx_data_fifo[i] = 0;
|
||||
m_rx_error_fifo[i] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -929,7 +929,7 @@ void z80dart_channel::control_write(UINT8 data)
|
||||
LOG(("Z80DART \"%s\" Channel %c : Parity %s\n", m_owner->tag(), 'A' + m_index, (data & WR4_PARITY_EVEN) ? "Even" : "Odd"));
|
||||
LOG(("Z80DART \"%s\" Channel %c : Stop Bits %f\n", m_owner->tag(), 'A' + m_index, get_stop_bits()));
|
||||
LOG(("Z80DART \"%s\" Channel %c : Clock Mode %uX\n", m_owner->tag(), 'A' + m_index, get_clock_mode()));
|
||||
|
||||
|
||||
update_serial();
|
||||
break;
|
||||
|
||||
@ -1279,7 +1279,7 @@ void z80dart_channel::update_serial()
|
||||
{
|
||||
if (m_wr[1] & WR4_PARITY_EVEN)
|
||||
parity_code = SERIAL_PARITY_EVEN;
|
||||
else
|
||||
else
|
||||
parity_code = SERIAL_PARITY_ODD;
|
||||
}
|
||||
|
||||
|
@ -360,18 +360,18 @@ protected:
|
||||
|
||||
enum
|
||||
{
|
||||
WR2_DATA_XFER_INT = 0x00, // not supported
|
||||
WR2_DATA_XFER_DMA_INT = 0x01, // not supported
|
||||
WR2_DATA_XFER_DMA = 0x02, // not supported
|
||||
WR2_DATA_XFER_ILLEGAL = 0x03, // not supported
|
||||
WR2_DATA_XFER_MASK = 0x03, // not supported
|
||||
WR2_PRIORITY = 0x04, // not supported
|
||||
WR2_MODE_8085_1 = 0x00, // not supported
|
||||
WR2_MODE_8085_2 = 0x08, // not supported
|
||||
WR2_MODE_8086_8088 = 0x10, // not supported
|
||||
WR2_MODE_ILLEGAL = 0x18, // not supported
|
||||
WR2_MODE_MASK = 0x18, // not supported
|
||||
WR2_VECTORED_INT = 0x20, // not supported
|
||||
WR2_DATA_XFER_INT = 0x00, // not supported
|
||||
WR2_DATA_XFER_DMA_INT = 0x01, // not supported
|
||||
WR2_DATA_XFER_DMA = 0x02, // not supported
|
||||
WR2_DATA_XFER_ILLEGAL = 0x03, // not supported
|
||||
WR2_DATA_XFER_MASK = 0x03, // not supported
|
||||
WR2_PRIORITY = 0x04, // not supported
|
||||
WR2_MODE_8085_1 = 0x00, // not supported
|
||||
WR2_MODE_8085_2 = 0x08, // not supported
|
||||
WR2_MODE_8086_8088 = 0x10, // not supported
|
||||
WR2_MODE_ILLEGAL = 0x18, // not supported
|
||||
WR2_MODE_MASK = 0x18, // not supported
|
||||
WR2_VECTORED_INT = 0x20, // not supported
|
||||
WR2_PIN10_SYNDETB_RTSB = 0x80 // not supported
|
||||
};
|
||||
|
||||
|
@ -937,23 +937,23 @@ private:
|
||||
|
||||
|
||||
// device delegate macros
|
||||
#define READ8_DELEGATE(_class, _member) read8_delegate(FUNC(_class::_member), this)
|
||||
#define WRITE8_DELEGATE(_class, _member) write8_delegate(FUNC(_class::_member), this)
|
||||
#define READ16_DELEGATE(_class, _member) read16_delegate(FUNC(_class::_member), this)
|
||||
#define WRITE16_DELEGATE(_class, _member) write16_delegate(FUNC(_class::_member), this)
|
||||
#define READ32_DELEGATE(_class, _member) read32_delegate(FUNC(_class::_member), this)
|
||||
#define WRITE32_DELEGATE(_class, _member) write32_delegate(FUNC(_class::_member), this)
|
||||
#define READ64_DELEGATE(_class, _member) read64_delegate(FUNC(_class::_member), this)
|
||||
#define WRITE64_DELEGATE(_class, _member) write64_delegate(FUNC(_class::_member), this)
|
||||
#define READ8_DELEGATE(_class, _member) read8_delegate(FUNC(_class::_member), this)
|
||||
#define WRITE8_DELEGATE(_class, _member) write8_delegate(FUNC(_class::_member), this)
|
||||
#define READ16_DELEGATE(_class, _member) read16_delegate(FUNC(_class::_member), this)
|
||||
#define WRITE16_DELEGATE(_class, _member) write16_delegate(FUNC(_class::_member), this)
|
||||
#define READ32_DELEGATE(_class, _member) read32_delegate(FUNC(_class::_member), this)
|
||||
#define WRITE32_DELEGATE(_class, _member) write32_delegate(FUNC(_class::_member), this)
|
||||
#define READ64_DELEGATE(_class, _member) read64_delegate(FUNC(_class::_member), this)
|
||||
#define WRITE64_DELEGATE(_class, _member) write64_delegate(FUNC(_class::_member), this)
|
||||
|
||||
#define READ8_DEVICE_DELEGATE(_device, _class, _member) read8_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define WRITE8_DEVICE_DELEGATE(_device, _class, _member) write8_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define READ16_DEVICE_DELEGATE(_device, _class, _member) read16_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define WRITE16_DEVICE_DELEGATE(_device, _class, _member) write16_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define READ32_DEVICE_DELEGATE(_device, _class, _member) read32_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define WRITE32_DEVICE_DELEGATE(_device, _class, _member) write32_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define READ64_DEVICE_DELEGATE(_device, _class, _member) read64_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define WRITE64_DEVICE_DELEGATE(_device, _class, _member) write64_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define READ8_DEVICE_DELEGATE(_device, _class, _member) read8_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define WRITE8_DEVICE_DELEGATE(_device, _class, _member) write8_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define READ16_DEVICE_DELEGATE(_device, _class, _member) read16_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define WRITE16_DEVICE_DELEGATE(_device, _class, _member) write16_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define READ32_DEVICE_DELEGATE(_device, _class, _member) read32_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define WRITE32_DEVICE_DELEGATE(_device, _class, _member) write32_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define READ64_DEVICE_DELEGATE(_device, _class, _member) read64_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
#define WRITE64_DEVICE_DELEGATE(_device, _class, _member) write64_delegate(FUNC(_class::_member), (_class *)_device)
|
||||
|
||||
|
||||
// helper macro for merging data with the memory mask
|
||||
|
@ -85,14 +85,14 @@ void msm5205_device::device_config_complete()
|
||||
const msm5205_interface *intf = reinterpret_cast<const msm5205_interface *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<msm5205_interface *>(this) = *intf;
|
||||
|
||||
|
||||
// or initialize to defaults if none provided
|
||||
else
|
||||
{
|
||||
memset(&m_vclk_cb, 0, sizeof(m_vclk_cb));
|
||||
m_select = 0;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -103,14 +103,14 @@ void msm5205_device::device_start()
|
||||
{
|
||||
m_mod_clock = clock();
|
||||
m_vclk_callback.resolve(m_vclk_cb, *this);
|
||||
|
||||
|
||||
/* compute the difference tables */
|
||||
compute_tables();
|
||||
|
||||
|
||||
/* stream system initialize */
|
||||
m_stream = machine().sound().stream_alloc(*this, 0, 1, clock(), this);
|
||||
m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(msm5205_device::vclk_callback), this));
|
||||
|
||||
|
||||
/* register for save states */
|
||||
save_item(NAME(m_mod_clock));
|
||||
save_item(NAME(m_data));
|
||||
@ -127,14 +127,14 @@ void msm5205_device::device_start()
|
||||
//-------------------------------------------------
|
||||
|
||||
void msm5205_device::device_reset()
|
||||
{
|
||||
{
|
||||
/* initialize work */
|
||||
m_data = 0;
|
||||
m_vclk = 0;
|
||||
m_reset = 0;
|
||||
m_signal = 0;
|
||||
m_step = 0;
|
||||
|
||||
|
||||
/* timer and bitwidth set */
|
||||
playmode_w(m_select);
|
||||
}
|
||||
@ -189,7 +189,7 @@ TIMER_CALLBACK_MEMBER( msm5205_device::vclk_callback )
|
||||
int new_signal;
|
||||
|
||||
/* callback user handler and latch next data */
|
||||
if (!m_vclk_callback.isnull())
|
||||
if (!m_vclk_callback.isnull())
|
||||
m_vclk_callback(1);
|
||||
|
||||
/* reset check at last hiedge of VCLK */
|
||||
@ -237,7 +237,7 @@ void msm5205_device::vclk_w(int vclk)
|
||||
if (m_vclk != vclk)
|
||||
{
|
||||
m_vclk = vclk;
|
||||
if (!vclk)
|
||||
if (!vclk)
|
||||
vclk_callback(this, 0);
|
||||
}
|
||||
}
|
||||
@ -325,7 +325,7 @@ void msm5205_device::change_clock_w(INT32 clock)
|
||||
void msm5205_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
|
||||
{
|
||||
stream_sample_t *buffer = outputs[0];
|
||||
|
||||
|
||||
/* if this voice is active */
|
||||
if(m_signal)
|
||||
{
|
||||
|
@ -27,7 +27,7 @@
|
||||
the sp0256_start() call.
|
||||
|
||||
If the memory map contents is modified during execution (accross of ROM
|
||||
bank switching) the bitrevbuff() call must be called after the section
|
||||
bank switching) the bitrevbuff() call must be called after the section
|
||||
of ROM is modified.
|
||||
*/
|
||||
|
||||
@ -112,14 +112,14 @@ void sp0256_device::device_config_complete()
|
||||
const sp0256_interface *intf = reinterpret_cast<const sp0256_interface *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<sp0256_interface *>(this) = *intf;
|
||||
|
||||
|
||||
// or initialize to defaults if none provided
|
||||
else
|
||||
{
|
||||
memset(&m_lrq_cb, 0, sizeof(m_lrq_cb));
|
||||
memset(&m_sby_cb, 0, sizeof(m_sby_cb));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
@ -132,14 +132,14 @@ void sp0256_device::device_start()
|
||||
m_sby.resolve(m_sby_cb, *this);
|
||||
m_drq(1);
|
||||
m_sby(1);
|
||||
|
||||
|
||||
m_stream = machine().sound().stream_alloc(*this, 0, 1, clock() / CLOCK_DIVIDER, this);
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* Configure our internal variables. */
|
||||
/* -------------------------------------------------------------------- */
|
||||
m_filt.rng = 1;
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* Allocate a scratch buffer for generating ~10kHz samples. */
|
||||
/* -------------------------------------------------------------------- */
|
||||
@ -147,7 +147,7 @@ void sp0256_device::device_start()
|
||||
save_pointer(NAME(m_scratch), SCBUF_SIZE);
|
||||
|
||||
m_sc_head = m_sc_tail = 0;
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* Set up the microsequencer's initial state. */
|
||||
/* -------------------------------------------------------------------- */
|
||||
@ -156,7 +156,7 @@ void sp0256_device::device_start()
|
||||
m_lrq = 0x8000;
|
||||
m_page = 0x1000 << 3;
|
||||
m_silent = 1;
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* Setup the ROM. */
|
||||
/* -------------------------------------------------------------------- */
|
||||
@ -165,7 +165,7 @@ void sp0256_device::device_start()
|
||||
// see http://forums.bannister.org/ubbthreads.php?ubb=showflat&Number=72385#Post72385
|
||||
// TODO: because of this, check if the bitrev functions are even used anywhere else
|
||||
// bitrevbuff(m_rom, 0, 0xffff);
|
||||
|
||||
|
||||
m_lrq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(sp0256_device::set_lrq_timer_proc),this));
|
||||
|
||||
// save device variables
|
||||
@ -208,7 +208,7 @@ void sp0256_device::device_reset()
|
||||
{
|
||||
// reset FIFO and SP0256
|
||||
m_fifo_head = m_fifo_tail = m_fifo_bitp = 0;
|
||||
|
||||
|
||||
memset(&m_filt, 0, sizeof(m_filt));
|
||||
m_halted = 1;
|
||||
m_filt.rpt = -1;
|
||||
@ -223,7 +223,7 @@ void sp0256_device::device_reset()
|
||||
m_silent = 1;
|
||||
m_drq(1);
|
||||
SET_SBY(1)
|
||||
|
||||
|
||||
m_lrq = 0;
|
||||
m_lrq_timer->adjust(attotime::from_ticks(50, m_clock));
|
||||
}
|
||||
@ -1196,7 +1196,7 @@ WRITE8_MEMBER( sp0256_device::ald_w )
|
||||
LOG(("sp0256: Droped ALD write\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
/* Set LRQ to "busy" and load the 8 LSBs of the data into the ALD */
|
||||
/* reg. We take the command address, and multiply by 2 bytes to */
|
||||
@ -1206,7 +1206,7 @@ WRITE8_MEMBER( sp0256_device::ald_w )
|
||||
m_ald = (0xff & data) << 4;
|
||||
m_drq(0);
|
||||
SET_SBY(0)
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1214,13 +1214,13 @@ READ_LINE_MEMBER( sp0256_device::lrq_r )
|
||||
{
|
||||
// force stream update
|
||||
m_stream->update();
|
||||
|
||||
|
||||
return m_lrq == 0x8000;
|
||||
}
|
||||
|
||||
READ_LINE_MEMBER( sp0256_device::sby_r )
|
||||
{
|
||||
// TODO: force stream update??
|
||||
// TODO: force stream update??
|
||||
|
||||
return m_sby_line;
|
||||
}
|
||||
@ -1234,7 +1234,7 @@ READ16_MEMBER( sp0256_device::spb640_r )
|
||||
{
|
||||
return m_lrq;
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* Offset 1 returns the SPB640 FIFO full status on bit 15. */
|
||||
/* -------------------------------------------------------------------- */
|
||||
@ -1242,7 +1242,7 @@ READ16_MEMBER( sp0256_device::spb640_r )
|
||||
{
|
||||
return (m_fifo_head - m_fifo_tail) >= 64 ? 0x8000 : 0;
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* Just return 255 for all other addresses in our range. */
|
||||
/* -------------------------------------------------------------------- */
|
||||
@ -1256,20 +1256,20 @@ WRITE16_MEMBER( sp0256_device::spb640_w )
|
||||
ald_w(space, 0, data & 0xff);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (offset == 1)
|
||||
{
|
||||
/* ---------------------------------------------------------------- */
|
||||
/* If Bit 10 is set, reset the FIFO, and SP0256. */
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
||||
|
||||
if (data & 0x400)
|
||||
{
|
||||
m_fifo_head = m_fifo_tail = m_fifo_bitp = 0;
|
||||
device_reset();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
/* If the FIFO is full, drop the data. */
|
||||
/* ---------------------------------------------------------------- */
|
||||
@ -1278,16 +1278,16 @@ WRITE16_MEMBER( sp0256_device::spb640_w )
|
||||
LOG(("spb640: Dropped FIFO write\n"));
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
/* FIFO up the lower 10 bits of the data. */
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
||||
|
||||
LOG(("spb640: WR_FIFO %.3X %d.%d %d\n", data & 0x3ff,
|
||||
m_fifo_tail, m_fifo_bitp, m_fifo_head));
|
||||
|
||||
m_fifo_tail, m_fifo_bitp, m_fifo_head));
|
||||
|
||||
m_fifo[m_fifo_head++ & 63] = data & 0x3ff;
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -1313,31 +1313,31 @@ void sp0256_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
stream_sample_t *output = outputs[0];
|
||||
int output_index = 0;
|
||||
int length, did_samp/*, old_idx*/;
|
||||
|
||||
|
||||
while (output_index < samples)
|
||||
{
|
||||
/* ---------------------------------------------------------------- */
|
||||
/* First, drain as much of our scratch buffer as we can into the */
|
||||
/* sound buffer. */
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
||||
|
||||
while (m_sc_tail != m_sc_head)
|
||||
{
|
||||
output[output_index++] = m_scratch[m_sc_tail++ & SCBUF_MASK];
|
||||
m_sc_tail &= SCBUF_MASK;
|
||||
|
||||
|
||||
if (output_index > samples)
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
/* If output outputs is full, then we're done. */
|
||||
/* ---------------------------------------------------------------- */
|
||||
if (output_index > samples)
|
||||
break;
|
||||
|
||||
|
||||
length = samples - output_index;
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
/* Process the current set of filter coefficients as long as the */
|
||||
/* repeat count holds up and we have room in our scratch buffer. */
|
||||
@ -1347,26 +1347,26 @@ void sp0256_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
if (length > 0) do
|
||||
{
|
||||
int do_samp;
|
||||
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
/* If our repeat count expired, emulate the microsequencer. */
|
||||
/* ------------------------------------------------------------ */
|
||||
if (m_filt.rpt <= 0)
|
||||
micro();
|
||||
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
/* Do as many samples as we can. */
|
||||
/* ------------------------------------------------------------ */
|
||||
do_samp = length - did_samp;
|
||||
if (m_sc_head + do_samp - m_sc_tail > SCBUF_SIZE)
|
||||
do_samp = m_sc_tail + SCBUF_SIZE - m_sc_head;
|
||||
|
||||
|
||||
if (do_samp == 0) break;
|
||||
|
||||
|
||||
if (m_silent && m_filt.rpt <= 0)
|
||||
{
|
||||
int y = m_sc_head;
|
||||
|
||||
|
||||
for (int x = 0; x < do_samp; x++)
|
||||
m_scratch[y++ & SCBUF_MASK] = 0;
|
||||
m_sc_head += do_samp;
|
||||
@ -1375,11 +1375,11 @@ void sp0256_device::sound_stream_update(sound_stream &stream, stream_sample_t **
|
||||
else
|
||||
{
|
||||
did_samp += lpc12_update(&m_filt, do_samp,
|
||||
m_scratch, &m_sc_head);
|
||||
m_scratch, &m_sc_head);
|
||||
}
|
||||
|
||||
|
||||
m_sc_head &= SCBUF_MASK;
|
||||
|
||||
|
||||
} while (m_filt.rpt >= 0 && length > did_samp);
|
||||
}
|
||||
}
|
||||
|
@ -81,11 +81,11 @@ public:
|
||||
DECLARE_READ_LINE_MEMBER(sby_r);
|
||||
DECLARE_READ16_MEMBER(spb640_r);
|
||||
DECLARE_WRITE16_MEMBER(spb640_w);
|
||||
|
||||
|
||||
TIMER_CALLBACK_MEMBER(set_lrq_timer_proc);
|
||||
void set_clock(int clock);
|
||||
void bitrevbuff(UINT8 *buffer, unsigned int start, unsigned int length);
|
||||
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
@ -97,20 +97,20 @@ protected:
|
||||
private:
|
||||
UINT32 getb(int len);
|
||||
void micro();
|
||||
|
||||
|
||||
sound_stream *m_stream; /* MAME core sound stream */
|
||||
devcb_resolved_write_line m_drq; /* Data request callback */
|
||||
devcb_resolved_write_line m_sby; /* Standby callback */
|
||||
|
||||
int m_sby_line; /* Standby line state */
|
||||
int m_cur_len; /* Fullness of current sound buffer. */
|
||||
|
||||
|
||||
int m_silent; /* Flag: SP0256 is silent. */
|
||||
|
||||
|
||||
INT16 *m_scratch; /* Scratch buffer for audio. */
|
||||
UINT32 m_sc_head; /* Head pointer into scratch circular buf */
|
||||
UINT32 m_sc_tail; /* Tail pointer into scratch circular buf */
|
||||
|
||||
|
||||
struct lpc12_t m_filt; /* 12-pole filter */
|
||||
int m_lrq; /* Load ReQuest. == 0 if we can accept a load */
|
||||
int m_ald; /* Address LoaD. < 0 if no command pending. */
|
||||
@ -120,12 +120,12 @@ private:
|
||||
int m_halted; /* True when CPU is halted. */
|
||||
UINT32 m_mode; /* Mode register. */
|
||||
UINT32 m_page; /* Page set by SETPAGE */
|
||||
|
||||
|
||||
UINT32 m_fifo_head; /* FIFO head pointer (where new data goes). */
|
||||
UINT32 m_fifo_tail; /* FIFO tail pointer (where data comes from). */
|
||||
UINT32 m_fifo_bitp; /* FIFO bit-pointer (for partial decles). */
|
||||
UINT16 m_fifo[64]; /* The 64-decle FIFO. */
|
||||
|
||||
|
||||
UINT8 *m_rom; /* 64K ROM. */
|
||||
|
||||
emu_timer *m_lrq_timer;
|
||||
|
@ -99,7 +99,7 @@ void speaker_sound_device::device_config_complete()
|
||||
const speaker_interface *intf = reinterpret_cast<const speaker_interface *>(static_config());
|
||||
if (intf != NULL)
|
||||
*static_cast<speaker_interface *>(this) = *intf;
|
||||
|
||||
|
||||
// or initialize to defaults if none provided
|
||||
else
|
||||
{
|
||||
@ -116,7 +116,7 @@ void speaker_sound_device::device_start()
|
||||
{
|
||||
int i;
|
||||
double x;
|
||||
|
||||
|
||||
m_channel = machine().sound().stream_alloc(*this, 0, 1, machine().sample_rate(), this);
|
||||
|
||||
m_level = 0;
|
||||
@ -137,7 +137,7 @@ void speaker_sound_device::device_start()
|
||||
/* Note: To avoid time drift due to floating point inaccuracies,
|
||||
* it is good if the speaker time synchronizes itself with the stream timing regularly.
|
||||
*/
|
||||
|
||||
|
||||
/* Compute filter kernel; */
|
||||
/* (Done for each device though the data is shared...
|
||||
* No problem really, but should be done as part of system init if I knew how)
|
||||
@ -157,8 +157,8 @@ void speaker_sound_device::device_start()
|
||||
#define FILTER_STEP (M_PI / 2 / RATE_MULTIPLIER)
|
||||
/* Distribute symmetrically on x axis; center has x=0 if length is odd */
|
||||
for (i = 0, x = (0.5 - FILTER_LENGTH / 2.) * FILTER_STEP;
|
||||
i < FILTER_LENGTH;
|
||||
i++, x += FILTER_STEP)
|
||||
i < FILTER_LENGTH;
|
||||
i++, x += FILTER_STEP)
|
||||
{
|
||||
if (x == 0)
|
||||
m_ampl[i] = 1;
|
||||
@ -180,7 +180,7 @@ void speaker_sound_device::device_start()
|
||||
save_item(NAME(m_channel_last_sample_time));
|
||||
save_item(NAME(m_interm_sample_index));
|
||||
save_item(NAME(m_last_update_time));
|
||||
|
||||
|
||||
machine().save().register_postload(save_prepost_delegate(FUNC(speaker_sound_device::speaker_postload), this));
|
||||
}
|
||||
|
||||
@ -201,35 +201,35 @@ void speaker_sound_device::sound_stream_update(sound_stream &stream, stream_samp
|
||||
int volume = m_levels[m_level];
|
||||
double filtered_volume;
|
||||
attotime sampled_time = attotime::zero;
|
||||
|
||||
|
||||
if (samples > 0)
|
||||
{
|
||||
/* Prepare to update time state */
|
||||
sampled_time = attotime(0, m_channel_sample_period);
|
||||
if (samples > 1)
|
||||
sampled_time *= samples;
|
||||
|
||||
|
||||
/* Note: since the stream is in the process of being updated,
|
||||
* stream->sample_time() will return the time before the update! (MAME 0.130)
|
||||
* Avoid using it here in order to avoid a subtle dependence on the stream implementation.
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
if (samples-- > 0)
|
||||
{
|
||||
/* Note that first interm. sample may be composed... */
|
||||
filtered_volume = update_interm_samples_get_filtered_volume(volume);
|
||||
|
||||
|
||||
/* Composite volume is now quantized to the stream resolution */
|
||||
*buffer++ = (stream_sample_t)filtered_volume;
|
||||
|
||||
|
||||
/* Any additional samples will be homogeneous, however may need filtering across samples: */
|
||||
while (samples-- > 0)
|
||||
{
|
||||
filtered_volume = update_interm_samples_get_filtered_volume(volume);
|
||||
*buffer++ = (stream_sample_t)filtered_volume;
|
||||
}
|
||||
|
||||
|
||||
/* Update the time state */
|
||||
m_channel_last_sample_time += sampled_time;
|
||||
m_channel_next_sample_time = m_channel_last_sample_time + attotime(0, m_channel_sample_period);
|
||||
@ -289,7 +289,7 @@ void speaker_sound_device::level_w(int new_level)
|
||||
|
||||
/* Finally update speaker state before returning */
|
||||
m_level = new_level;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -394,5 +394,3 @@ double speaker_sound_device::get_filtered_volume()
|
||||
|
||||
return filtered_volume;
|
||||
}
|
||||
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
#define __SOUND_SPEAKER_H__
|
||||
|
||||
// Length of anti-aliasing filter kernel, measured in number of intermediate samples
|
||||
enum
|
||||
enum
|
||||
{
|
||||
FILTER_LENGTH = 64
|
||||
};
|
||||
@ -48,21 +48,21 @@ private:
|
||||
|
||||
// Updates the composed volume array according to time
|
||||
void update_interm_samples(attotime time, int volume);
|
||||
|
||||
|
||||
// Updates the composed volume array and returns final filtered volume of next stream sample
|
||||
double update_interm_samples_get_filtered_volume(int volume);
|
||||
|
||||
|
||||
void finalize_interm_sample(int volume);
|
||||
void init_next_interm_sample();
|
||||
inline double make_fraction(attotime a, attotime b, double timediv);
|
||||
double get_filtered_volume();
|
||||
|
||||
|
||||
// Kernel (pulse response) for filtering across samples (while we avoid fancy filtering within samples)
|
||||
double m_ampl[FILTER_LENGTH];
|
||||
|
||||
|
||||
sound_stream *m_channel;
|
||||
int m_level;
|
||||
|
||||
|
||||
/* The volume of a composed sample grows incrementally each time the speaker is over-sampled.
|
||||
* That is in effect a basic average filter.
|
||||
* Another filter can and will be applied to the array of composed samples.
|
||||
|
@ -1136,7 +1136,7 @@ void ymf271_device::write_register(int slotnum, int reg, int data)
|
||||
slot->ch3_level = data & 0xf;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1318,7 +1318,7 @@ void ymf271_device::device_timer(emu_timer &timer, device_timer_id id, int param
|
||||
if (!m_irq_handler.isnull())
|
||||
m_irq_handler(1);
|
||||
}
|
||||
|
||||
|
||||
// reload timer
|
||||
m_timA->adjust(attotime::from_hz(m_clock) * (384 * 4 * (256 - m_timerA)), 0);
|
||||
break;
|
||||
@ -1334,7 +1334,7 @@ void ymf271_device::device_timer(emu_timer &timer, device_timer_id id, int param
|
||||
if (!m_irq_handler.isnull())
|
||||
m_irq_handler(1);
|
||||
}
|
||||
|
||||
|
||||
// reload timer
|
||||
m_timB->adjust(attotime::from_hz(m_clock) * (384 * 16 * (256 - m_timerB)), 0);
|
||||
break;
|
||||
@ -1447,7 +1447,7 @@ void ymf271_device::ymf271_write_timer(int data)
|
||||
if (!m_ext_rw && !m_ext_write_handler.isnull())
|
||||
m_ext_write_handler(m_ext_address, data);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1737,11 +1737,11 @@ void ymf271_device::device_reset()
|
||||
m_slots[i].active = 0;
|
||||
m_slots[i].volume = 0;
|
||||
}
|
||||
|
||||
|
||||
// reset timers and IRQ
|
||||
m_timA->reset();
|
||||
m_timB->reset();
|
||||
|
||||
|
||||
m_irqstate = 0;
|
||||
m_status = 0;
|
||||
m_enable = 0;
|
||||
|
@ -17,7 +17,7 @@
|
||||
8-bit PCM, 16-bit PCM ...... 0.172 to 88.2kHz in 512 steps
|
||||
256 steps total level and 16 steps panpot can be set
|
||||
Voice signal is output in stereo 16-bit 2's complement MSB-first format
|
||||
|
||||
|
||||
TODO:
|
||||
- Is memory handling 100% correct? At the moment, Konami firebeat.c is the only
|
||||
hardware currently emulated that uses external handlers.
|
||||
|
@ -41,9 +41,9 @@ const device_type CDP1861 = &device_creator<cdp1861_device>;
|
||||
|
||||
cdp1861_device::cdp1861_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, CDP1861, "CDP1861", tag, owner, clock),
|
||||
m_write_irq(*this),
|
||||
m_write_dma_out(*this),
|
||||
m_write_efx(*this)
|
||||
m_write_irq(*this),
|
||||
m_write_dma_out(*this),
|
||||
m_write_efx(*this)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -78,9 +78,9 @@ inline void cdp1862_device::initialize_palette()
|
||||
|
||||
cdp1862_device::cdp1862_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, CDP1862, "CDP1862", tag, owner, clock),
|
||||
m_read_rd(*this),
|
||||
m_read_bd(*this),
|
||||
m_read_gd(*this)
|
||||
m_read_rd(*this),
|
||||
m_read_bd(*this),
|
||||
m_read_gd(*this)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -67,7 +67,7 @@ private:
|
||||
HUC6270_VDW,
|
||||
HUC6270_VCR
|
||||
};
|
||||
|
||||
|
||||
enum huc6270_h_state {
|
||||
HUC6270_HDS,
|
||||
HUC6270_HDW,
|
||||
|
@ -198,7 +198,7 @@ READ8_MEMBER( msm6255_device::ir_r )
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ir_w -
|
||||
// ir_w -
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER( msm6255_device::ir_w )
|
||||
@ -257,7 +257,7 @@ READ8_MEMBER( msm6255_device::dr_r )
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// dr_w -
|
||||
// dr_w -
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER( msm6255_device::dr_w )
|
||||
|
@ -85,14 +85,14 @@ void tms9927_device::device_start()
|
||||
{
|
||||
assert(clock() > 0);
|
||||
assert(m_hpixels_per_column > 0);
|
||||
|
||||
|
||||
/* copy the initial parameters */
|
||||
m_clock = clock();
|
||||
|
||||
|
||||
/* get the screen device */
|
||||
m_screen = downcast<screen_device *>(machine().device(m_screen_tag));
|
||||
assert(m_screen != NULL);
|
||||
|
||||
|
||||
/* get the self-load PROM */
|
||||
if (m_selfload_region != NULL)
|
||||
{
|
||||
@ -102,7 +102,7 @@ void tms9927_device::device_start()
|
||||
|
||||
/* register for state saving */
|
||||
machine().save().register_postload(save_prepost_delegate(FUNC(tms9927_device::state_postload), this));
|
||||
|
||||
|
||||
save_item(NAME(m_reg));
|
||||
save_item(NAME(m_start_datarow));
|
||||
save_item(NAME(m_reset));
|
||||
@ -123,11 +123,11 @@ void tms9927_device::device_reset()
|
||||
void tms9927_device::device_stop()
|
||||
{
|
||||
mame_printf_debug("TMS9937: Final params: (%d, %d, %d, %d, %d, %d, %d)\n",
|
||||
m_clock,
|
||||
m_total_hpix,
|
||||
0, m_visible_hpix,
|
||||
m_total_vpix,
|
||||
0, m_visible_vpix);
|
||||
m_clock,
|
||||
m_total_hpix,
|
||||
0, m_visible_hpix,
|
||||
m_total_vpix,
|
||||
0, m_visible_vpix);
|
||||
}
|
||||
|
||||
|
||||
@ -300,4 +300,3 @@ void tms9927_device::recompute_parameters(int postload)
|
||||
|
||||
m_screen->configure(m_total_hpix, m_total_vpix, visarea, refresh);
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@ public:
|
||||
int screen_reset();
|
||||
int upscroll_offset();
|
||||
int cursor_bounds(rectangle &bounds);
|
||||
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
@ -46,17 +46,17 @@ private:
|
||||
void state_postload();
|
||||
void recompute_parameters(int postload);
|
||||
void generic_access(address_space &space, offs_t offset);
|
||||
|
||||
|
||||
// internal state
|
||||
screen_device *m_screen;
|
||||
const UINT8 *m_selfload;
|
||||
|
||||
|
||||
/* live state */
|
||||
UINT32 m_clock;
|
||||
UINT8 m_reg[9];
|
||||
UINT8 m_start_datarow;
|
||||
UINT8 m_reset;
|
||||
|
||||
|
||||
/* derived state; no need to save */
|
||||
UINT8 m_valid_config;
|
||||
UINT16 m_total_hpix, m_total_vpix;
|
||||
|
@ -44,13 +44,13 @@ ADDRESS_MAP_END
|
||||
|
||||
upd7227_device::upd7227_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, UPD7227, "uPD7227", tag, owner, clock),
|
||||
device_memory_interface(mconfig, *this),
|
||||
m_space_config("videoram", ENDIANNESS_BIG, 8, 7, 0, *ADDRESS_MAP_NAME(upd7227_map)),
|
||||
m_cs(1),
|
||||
m_cd(1),
|
||||
m_sck(1),
|
||||
m_si(1),
|
||||
m_so(1)
|
||||
device_memory_interface(mconfig, *this),
|
||||
m_space_config("videoram", ENDIANNESS_BIG, 8, 7, 0, *ADDRESS_MAP_NAME(upd7227_map)),
|
||||
m_cs(1),
|
||||
m_cd(1),
|
||||
m_sck(1),
|
||||
m_si(1),
|
||||
m_so(1)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -63,18 +63,18 @@ protected:
|
||||
private:
|
||||
enum
|
||||
{
|
||||
CMD_SMM = 0x18,
|
||||
CMD_SFF = 0x10,
|
||||
CMD_LDPI = 0x80,
|
||||
CMD_SWM = 0x64,
|
||||
CMD_SRM = 0x60,
|
||||
CMD_SANDM = 0x6c,
|
||||
CMD_SORM = 0x68,
|
||||
CMD_SCM = 0x72,
|
||||
CMD_BSET = 0x40,
|
||||
CMD_BRESET = 0x20,
|
||||
CMD_DISP_ON = 0x09,
|
||||
CMD_DISP_OFF = 0x08
|
||||
CMD_SMM = 0x18,
|
||||
CMD_SFF = 0x10,
|
||||
CMD_LDPI = 0x80,
|
||||
CMD_SWM = 0x64,
|
||||
CMD_SRM = 0x60,
|
||||
CMD_SANDM = 0x6c,
|
||||
CMD_SORM = 0x68,
|
||||
CMD_SCM = 0x72,
|
||||
CMD_BSET = 0x40,
|
||||
CMD_BRESET = 0x20,
|
||||
CMD_DISP_ON = 0x09,
|
||||
CMD_DISP_OFF = 0x08
|
||||
};
|
||||
|
||||
int m_sx;
|
||||
|
@ -15,15 +15,15 @@ VIDEOOBJ = $(EMUOBJ)/video
|
||||
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter SEGA315_5124,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/315_5124.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/315_5124.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter BUFSPRITE,$(VIDEOS)),)
|
||||
@ -31,47 +31,47 @@ VIDEOOBJS+= $(VIDEOOBJ)/bufsprite.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter CDP1861,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/cdp1861.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/cdp1861.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter CDP1862,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/cdp1862.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/cdp1862.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter CRT9007,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/crt9007.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/crt9007.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter CRT9021,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/crt9021.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/crt9021.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter CRT9212,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/crt9212.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/crt9212.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter DL1416,$(VIDEOS)),)
|
||||
@ -79,7 +79,7 @@ VIDEOOBJS+= $(VIDEOOBJ)/dl1416.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter DM9368,$(VIDEOS)),)
|
||||
@ -87,225 +87,225 @@ VIDEOOBJS+= $(VIDEOOBJ)/dm9368.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter EF9340_1,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/ef9340_1.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/ef9340_1.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter H63484,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/h63484.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/h63484.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter HD44102,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd44102.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd44102.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter HD44352,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd44352.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd44352.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter HD44780,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd44780.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd44780.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter HD61830,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd61830.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd61830.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter HD63484,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd63484.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd63484.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter HD66421,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd66421.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/hd66421.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter HUC6202,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/huc6202.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/huc6202.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter HUC6260,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/huc6260.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/huc6260.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter HUC6261,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/huc6261.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/huc6261.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter HUC6270,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/huc6270.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/huc6270.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter HUC6272,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/huc6272.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/huc6272.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter I8244,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/i8244.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/i8244.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter I8275,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/i8275.o \
|
||||
$(VIDEOOBJ)/i8275x.o
|
||||
$(VIDEOOBJ)/i8275x.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter K053250,$(VIDEOS)),)
|
||||
ifneq ($(filter K053250,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/k053250.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter M50458,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/m50458.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/m50458.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter MB90082,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/mb90082.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/mb90082.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter MC6845,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/mc6845.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/mc6845.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter MC6847,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/mc6847.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/mc6847.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter MSM6255,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/msm6255.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/msm6255.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter PC_CGA,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/pc_cga.o \
|
||||
$(VIDEOOBJ)/cgapal.o
|
||||
$(VIDEOOBJ)/cgapal.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter PC_VGA,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/pc_vga.o
|
||||
ifneq ($(filter PC_VGA,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/pc_vga.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter POLY,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/poly.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/poly.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter PSX,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/psx.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/psx.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter RAMDAC,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/ramdac.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/ramdac.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter S2636,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/s2636.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/s2636.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter SAA5050,$(VIDEOS)),)
|
||||
@ -313,14 +313,14 @@ VIDEOOBJS+= $(VIDEOOBJ)/saa5050.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
ifneq ($(filter SED1330,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/sed1330.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter STVVDP,$(VIDEOS)),)
|
||||
@ -329,39 +329,39 @@ VIDEOOBJS+= $(VIDEOOBJ)/stvvdp1.o \
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter TLC34076,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/tlc34076.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/tlc34076.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter TMS34061,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/tms34061.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/tms34061.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter TMS3556,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/tms3556.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/tms3556.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter TMS9927,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/tms9927.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/tms9927.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter TMS9928A,$(VIDEOS)),)
|
||||
@ -369,7 +369,7 @@ VIDEOOBJS+= $(VIDEOOBJ)/tms9928a.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter UPD3301,$(VIDEOS)),)
|
||||
@ -377,15 +377,15 @@ VIDEOOBJS+= $(VIDEOOBJ)/upd3301.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter UPD7220,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/upd7220.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/upd7220.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter UPD7227,$(VIDEOS)),)
|
||||
@ -393,15 +393,15 @@ VIDEOOBJS+= $(VIDEOOBJ)/upd7227.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter V9938,$(VIDEOS)),)
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/v9938.o
|
||||
VIDEOOBJS+= $(VIDEOOBJ)/v9938.o
|
||||
endif
|
||||
|
||||
#-------------------------------------------------
|
||||
#
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
ifneq ($(filter VOODOO,$(VIDEOS)),)
|
||||
|
@ -36,7 +36,7 @@ static FLOPPY_CONSTRUCT(bml3_dsk_construct)
|
||||
|
||||
|
||||
LEGACY_FLOPPY_OPTIONS_START( bml3 )
|
||||
LEGACY_FLOPPY_OPTION( bml3_dsk, "bm3", "BML3 floppy disk image", bml3_dsk_identify, bml3_dsk_construct, NULL,
|
||||
LEGACY_FLOPPY_OPTION( bml3_dsk, "bm3", "BML3 floppy disk image", bml3_dsk_identify, bml3_dsk_construct, NULL,
|
||||
HEADS([2])
|
||||
TRACKS([40])
|
||||
SECTORS([16])
|
||||
|
@ -1022,5 +1022,3 @@ bool td0_format::supports_save() const
|
||||
}
|
||||
|
||||
const floppy_format_type FLOPPY_TD0_FORMAT = &floppy_image_format_creator<td0_format>;
|
||||
|
||||
|
||||
|
@ -140,7 +140,7 @@ void flower_sound_device::device_timer(emu_timer &timer, device_timer_id id, int
|
||||
for (voice = m_channel_list; voice < m_last_channel; voice++)
|
||||
voice->ecount += (voice->ecount < (1<<22));
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
assert_always(FALSE, "Unknown id in flower_sound_device::device_timer");
|
||||
}
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
|
||||
const device_type GEEBEE = &device_creator<geebee_sound_device>;
|
||||
|
||||
|
||||
geebee_sound_device::geebee_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, GEEBEE, "Gee Bee Custom", tag, owner, clock),
|
||||
device_sound_interface(mconfig, *this),
|
||||
@ -26,17 +26,17 @@ geebee_sound_device::geebee_sound_device(const machine_config &mconfig, const ch
|
||||
m_vcount(0)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
|
||||
void geebee_sound_device::device_config_complete()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
@ -60,7 +60,7 @@ void geebee_sound_device::device_start()
|
||||
save_item(NAME(m_noise));
|
||||
save_item(NAME(m_vcount));
|
||||
}
|
||||
|
||||
|
||||
void geebee_sound_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
switch (id)
|
||||
@ -69,7 +69,7 @@ void geebee_sound_device::device_timer(emu_timer &timer, device_timer_id id, int
|
||||
if (--m_volume < 0)
|
||||
m_volume = 0;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
assert_always(FALSE, "Unknown id in geebee_device::device_timer");
|
||||
}
|
||||
@ -81,11 +81,11 @@ WRITE8_MEMBER( geebee_sound_device::sound_w )
|
||||
m_sound_latch = data;
|
||||
m_volume = 0x7fff; /* set volume */
|
||||
m_noise = 0x0000; /* reset noise shifter */
|
||||
/* faster decay enabled? */
|
||||
/* faster decay enabled? */
|
||||
if( m_sound_latch & 8 )
|
||||
{
|
||||
/*
|
||||
* R24 is 10k, Rb is 0, C57 is 1uF
|
||||
{
|
||||
/*
|
||||
* R24 is 10k, Rb is 0, C57 is 1uF
|
||||
* charge time t1 = 0.693 * (R24 + Rb) * C57 -> 0.22176s
|
||||
* discharge time t2 = 0.693 * (Rb) * C57 -> 0
|
||||
* Then C33 is only charged via D6 (1N914), not discharged!
|
||||
@ -114,52 +114,52 @@ WRITE8_MEMBER( geebee_sound_device::sound_w )
|
||||
//-------------------------------------------------
|
||||
|
||||
void geebee_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
|
||||
{
|
||||
stream_sample_t *buffer = outputs[0];
|
||||
|
||||
while (samples--)
|
||||
{
|
||||
{
|
||||
stream_sample_t *buffer = outputs[0];
|
||||
|
||||
while (samples--)
|
||||
{
|
||||
*buffer++ = m_sound_signal;
|
||||
/* 1V = HSYNC = 18.432MHz / 3 / 2 / 384 = 8000Hz */
|
||||
{
|
||||
/* 1V = HSYNC = 18.432MHz / 3 / 2 / 384 = 8000Hz */
|
||||
{
|
||||
m_vcount++;
|
||||
/* noise clocked with raising edge of 2V */
|
||||
/* noise clocked with raising edge of 2V */
|
||||
if ((m_vcount & 3) == 2)
|
||||
{
|
||||
/* bit0 = bit0 ^ !bit10 */
|
||||
{
|
||||
/* bit0 = bit0 ^ !bit10 */
|
||||
if ((m_noise & 1) == ((m_noise >> 10) & 1))
|
||||
m_noise = ((m_noise << 1) & 0xfffe) | 1;
|
||||
else
|
||||
else
|
||||
m_noise = (m_noise << 1) & 0xfffe;
|
||||
}
|
||||
}
|
||||
switch (m_sound_latch & 7)
|
||||
{
|
||||
case 0: /* 4V */
|
||||
{
|
||||
case 0: /* 4V */
|
||||
m_sound_signal = (m_vcount & 0x04) ? m_decay[m_volume] : 0;
|
||||
break;
|
||||
case 1: /* 8V */
|
||||
break;
|
||||
case 1: /* 8V */
|
||||
m_sound_signal = (m_vcount & 0x08) ? m_decay[m_volume] : 0;
|
||||
break;
|
||||
case 2: /* 16V */
|
||||
break;
|
||||
case 2: /* 16V */
|
||||
m_sound_signal = (m_vcount & 0x10) ? m_decay[m_volume] : 0;
|
||||
break;
|
||||
case 3: /* 32V */
|
||||
break;
|
||||
case 3: /* 32V */
|
||||
m_sound_signal = (m_vcount & 0x20) ? m_decay[m_volume] : 0;
|
||||
break;
|
||||
case 4: /* TONE1 */
|
||||
break;
|
||||
case 4: /* TONE1 */
|
||||
m_sound_signal = !(m_vcount & 0x01) && !(m_vcount & 0x10) ? m_decay[m_volume] : 0;
|
||||
break;
|
||||
case 5: /* TONE2 */
|
||||
break;
|
||||
case 5: /* TONE2 */
|
||||
m_sound_signal = !(m_vcount & 0x02) && !(m_vcount & 0x20) ? m_decay[m_volume] : 0;
|
||||
break;
|
||||
case 6: /* TONE3 */
|
||||
break;
|
||||
case 6: /* TONE3 */
|
||||
m_sound_signal = !(m_vcount & 0x04) && !(m_vcount & 0x40) ? m_decay[m_volume] : 0;
|
||||
break;
|
||||
default: /* NOISE */
|
||||
/* QH of 74164 #4V */
|
||||
break;
|
||||
default: /* NOISE */
|
||||
/* QH of 74164 #4V */
|
||||
m_sound_signal = (m_noise & 0x8000) ? m_decay[m_volume] : 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,9 +9,9 @@ class redbaron_sound_device : public device_t,
|
||||
{
|
||||
public:
|
||||
redbaron_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
|
||||
DECLARE_WRITE8_MEMBER( sounds_w );
|
||||
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start();
|
||||
|
@ -176,12 +176,12 @@ void snes_sound_device::device_config_complete()
|
||||
void snes_sound_device::device_start()
|
||||
{
|
||||
m_channel = machine().sound().stream_alloc(*this, 0, 2, 32000, this);
|
||||
|
||||
|
||||
m_ram = auto_alloc_array_clear(machine(), UINT8, SNES_SPCRAM_SIZE);
|
||||
|
||||
|
||||
/* put IPL image at the top of RAM */
|
||||
memcpy(m_ipl_region, machine().root_device().memregion("sound_ipl")->base(), 64);
|
||||
|
||||
|
||||
/* Initialize the timers */
|
||||
m_timer[0] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(snes_sound_device::spc_timer),this));
|
||||
m_timer[0]->adjust(attotime::from_hz(8000), 0, attotime::from_hz(8000));
|
||||
@ -192,7 +192,7 @@ void snes_sound_device::device_start()
|
||||
m_timer[2] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(snes_sound_device::spc_timer),this));
|
||||
m_timer[2]->adjust(attotime::from_hz(64000), 2, attotime::from_hz(64000));
|
||||
m_timer[2]->enable(false);
|
||||
|
||||
|
||||
state_register();
|
||||
save_pointer(NAME(m_ram), SNES_SPCRAM_SIZE);
|
||||
}
|
||||
@ -205,14 +205,14 @@ void snes_sound_device::device_reset()
|
||||
{
|
||||
/* default to ROM visible */
|
||||
m_ram[0xf1] = 0x80;
|
||||
|
||||
|
||||
/* Sort out the ports */
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
m_port_in[i] = 0;
|
||||
m_port_out[i] = 0;
|
||||
}
|
||||
|
||||
|
||||
dsp_reset();
|
||||
}
|
||||
|
||||
@ -1242,12 +1242,12 @@ void snes_sound_device::state_register()
|
||||
void snes_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
|
||||
{
|
||||
short mix[2];
|
||||
|
||||
|
||||
for (int i = 0; i < samples; i++)
|
||||
{
|
||||
mix[0] = mix[1] = 0;
|
||||
dsp_update(mix);
|
||||
|
||||
|
||||
/* Update the buffers */
|
||||
outputs[0][i] = (stream_sample_t)mix[0];
|
||||
outputs[1][i] = (stream_sample_t)mix[1];
|
||||
|
@ -73,8 +73,8 @@ public:
|
||||
DECLARE_WRITE8_MEMBER( spc_io_w );
|
||||
DECLARE_WRITE8_MEMBER( spc_ram_w );
|
||||
DECLARE_WRITE8_MEMBER( spc_port_in );
|
||||
|
||||
// UINT8 *spc_get_ram() { return m_ram; }
|
||||
|
||||
// UINT8 *spc_get_ram() { return m_ram; }
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
@ -86,7 +86,7 @@ protected:
|
||||
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
|
||||
|
||||
private:
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER(dsp_io_r);
|
||||
DECLARE_WRITE8_MEMBER(dsp_io_w);
|
||||
TIMER_CALLBACK_MEMBER(spc_timer);
|
||||
@ -94,21 +94,21 @@ private:
|
||||
void dsp_update(short *sound_ptr);
|
||||
int advance_envelope(int v);
|
||||
void state_register();
|
||||
|
||||
|
||||
// internal state
|
||||
UINT8 *m_ram;
|
||||
sound_stream *m_channel;
|
||||
UINT8 m_dsp_regs[256]; /* DSP registers */
|
||||
UINT8 m_ipl_region[64]; /* SPC top 64 bytes */
|
||||
|
||||
|
||||
int m_keyed_on;
|
||||
int m_keys; /* 8-bits for 8 voices */
|
||||
voice_state_type m_voice_state[8];
|
||||
|
||||
|
||||
/* Noise stuff */
|
||||
int m_noise_cnt;
|
||||
int m_noise_lev;
|
||||
|
||||
|
||||
/* These are for the FIR echo filter */
|
||||
#ifndef NO_ECHO
|
||||
short m_fir_lbuf[8];
|
||||
@ -116,12 +116,12 @@ private:
|
||||
int m_fir_ptr;
|
||||
int m_echo_ptr;
|
||||
#endif
|
||||
|
||||
|
||||
/* timers */
|
||||
emu_timer *m_timer[3];
|
||||
UINT8 m_enabled[3];
|
||||
UINT16 m_counter[3];
|
||||
|
||||
|
||||
/* IO ports */
|
||||
UINT8 m_port_in[4]; /* SPC input ports */
|
||||
UINT8 m_port_out[4]; /* SPC output ports */
|
||||
|
@ -15,7 +15,7 @@
|
||||
|
||||
|
||||
const device_type WARPWARP = &device_creator<warpwarp_sound_device>;
|
||||
|
||||
|
||||
warpwarp_sound_device::warpwarp_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
|
||||
: device_t(mconfig, WARPWARP, "Warp Warp Custom", tag, owner, clock),
|
||||
device_sound_interface(mconfig, *this),
|
||||
@ -43,11 +43,11 @@ warpwarp_sound_device::warpwarp_sound_device(const machine_config &mconfig, cons
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
|
||||
void warpwarp_sound_device::device_config_complete()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
@ -77,38 +77,38 @@ void warpwarp_sound_device::device_start()
|
||||
save_item(NAME(m_mcarry));
|
||||
save_item(NAME(m_mcount));
|
||||
}
|
||||
|
||||
|
||||
void warpwarp_sound_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case TIMER_SOUND_VOLUME_DECAY:
|
||||
case TIMER_SOUND_VOLUME_DECAY:
|
||||
if (--m_sound_volume < 0)
|
||||
m_sound_volume = 0;
|
||||
break;
|
||||
|
||||
|
||||
case TIMER_MUSIC_VOLUME_DECAY:
|
||||
if (--m_music_volume < 0)
|
||||
m_music_volume = 0;
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
assert_always(FALSE, "Unknown id in warpwarp_sound_device::device_timer");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER( warpwarp_sound_device::sound_w )
|
||||
{
|
||||
m_channel->update();
|
||||
m_sound_latch = data & 0x0f;
|
||||
m_sound_volume = 0x7fff; /* set sound_volume */
|
||||
m_noise = 0x0000; /* reset noise shifter */
|
||||
|
||||
/* faster decay enabled? */
|
||||
|
||||
/* faster decay enabled? */
|
||||
if( m_sound_latch & 8 )
|
||||
{
|
||||
/*
|
||||
* R85(?) is 10k, Rb is 0, C92 is 1uF
|
||||
{
|
||||
/*
|
||||
* R85(?) is 10k, Rb is 0, C92 is 1uF
|
||||
* charge time t1 = 0.693 * (R24 + Rb) * C57 -> 0.22176s
|
||||
* discharge time t2 = 0.693 * (Rb) * C57 -> 0
|
||||
* C90(?) is only charged via D17 (1N914), no discharge!
|
||||
@ -139,17 +139,17 @@ WRITE8_MEMBER( warpwarp_sound_device::music1_w )
|
||||
m_channel->update();
|
||||
m_music1_latch = data & 0x3f;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER( warpwarp_sound_device::music2_w )
|
||||
{
|
||||
m_channel->update();
|
||||
m_music2_latch = data & 0x3f;
|
||||
m_music_volume = 0x7fff;
|
||||
/* fast decay enabled? */
|
||||
/* fast decay enabled? */
|
||||
if( m_music2_latch & 0x10 )
|
||||
{
|
||||
/*
|
||||
* Ra (R83?) is 10k, Rb is 0, C92 is 1uF
|
||||
{
|
||||
/*
|
||||
* Ra (R83?) is 10k, Rb is 0, C92 is 1uF
|
||||
* charge time t1 = 0.693 * (Ra + Rb) * C -> 0.22176s
|
||||
* discharge time is (nearly) zero, because Rb is zero
|
||||
* C95(?) is only charged via D17, not discharged!
|
||||
@ -180,11 +180,11 @@ WRITE8_MEMBER( warpwarp_sound_device::music2_w )
|
||||
//-------------------------------------------------
|
||||
|
||||
void warpwarp_sound_device::sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples)
|
||||
{
|
||||
stream_sample_t *buffer = outputs[0];
|
||||
|
||||
while (samples--)
|
||||
{
|
||||
{
|
||||
stream_sample_t *buffer = outputs[0];
|
||||
|
||||
while (samples--)
|
||||
{
|
||||
*buffer++ = (m_sound_signal + m_music_signal) / 2;
|
||||
|
||||
/*
|
||||
@ -198,65 +198,65 @@ void warpwarp_sound_device::sound_stream_update(sound_stream &stream, stream_sam
|
||||
* ...
|
||||
* 48 = 64 steps -> 3000 Hz
|
||||
* ...
|
||||
* 63 = 4 steps -> 48 kHz
|
||||
*/
|
||||
* 63 = 4 steps -> 48 kHz
|
||||
*/
|
||||
|
||||
m_mcarry -= CLOCK_16H / (4 * (64 - m_music1_latch));
|
||||
while( m_mcarry < 0 )
|
||||
{
|
||||
{
|
||||
m_mcarry += CLOCK_16H;
|
||||
m_mcount++;
|
||||
m_music_signal = (m_mcount & ~m_music2_latch & 15) ? m_decay[m_music_volume] : 0;
|
||||
/* override by noise gate? */
|
||||
/* override by noise gate? */
|
||||
if( (m_music2_latch & 32) && (m_noise & 0x8000) )
|
||||
m_music_signal = m_decay[m_music_volume];
|
||||
}
|
||||
|
||||
/* clock 1V = 8kHz */
|
||||
}
|
||||
|
||||
/* clock 1V = 8kHz */
|
||||
m_vcarry -= CLOCK_1V;
|
||||
while (m_vcarry < 0)
|
||||
{
|
||||
{
|
||||
m_vcarry += CLOCK_16H;
|
||||
m_vcount++;
|
||||
|
||||
/* noise is clocked with raising edge of 2V */
|
||||
|
||||
/* noise is clocked with raising edge of 2V */
|
||||
if ((m_vcount & 3) == 2)
|
||||
{
|
||||
/* bit0 = bit0 ^ !bit10 */
|
||||
{
|
||||
/* bit0 = bit0 ^ !bit10 */
|
||||
if ((m_noise & 1) == ((m_noise >> 10) & 1))
|
||||
m_noise = (m_noise << 1) | 1;
|
||||
else
|
||||
else
|
||||
m_noise = m_noise << 1;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
switch (m_sound_latch & 7)
|
||||
{
|
||||
case 0: /* 4V */
|
||||
{
|
||||
case 0: /* 4V */
|
||||
m_sound_signal = (m_vcount & 0x04) ? m_decay[m_sound_volume] : 0;
|
||||
break;
|
||||
case 1: /* 8V */
|
||||
break;
|
||||
case 1: /* 8V */
|
||||
m_sound_signal = (m_vcount & 0x08) ? m_decay[m_sound_volume] : 0;
|
||||
break;
|
||||
case 2: /* 16V */
|
||||
break;
|
||||
case 2: /* 16V */
|
||||
m_sound_signal = (m_vcount & 0x10) ? m_decay[m_sound_volume] : 0;
|
||||
break;
|
||||
case 3: /* 32V */
|
||||
break;
|
||||
case 3: /* 32V */
|
||||
m_sound_signal = (m_vcount & 0x20) ? m_decay[m_sound_volume] : 0;
|
||||
break;
|
||||
case 4: /* TONE1 */
|
||||
break;
|
||||
case 4: /* TONE1 */
|
||||
m_sound_signal = !(m_vcount & 0x01) && !(m_vcount & 0x10) ? m_decay[m_sound_volume] : 0;
|
||||
break;
|
||||
case 5: /* TONE2 */
|
||||
break;
|
||||
case 5: /* TONE2 */
|
||||
m_sound_signal = !(m_vcount & 0x02) && !(m_vcount & 0x20) ? m_decay[m_sound_volume] : 0;
|
||||
break;
|
||||
case 6: /* TONE3 */
|
||||
break;
|
||||
case 6: /* TONE3 */
|
||||
m_sound_signal = !(m_vcount & 0x04) && !(m_vcount & 0x40) ? m_decay[m_sound_volume] : 0;
|
||||
break;
|
||||
default: /* NOISE */
|
||||
/* QH of 74164 #4V */
|
||||
break;
|
||||
default: /* NOISE */
|
||||
/* QH of 74164 #4V */
|
||||
m_sound_signal = (m_noise & 0x8000) ? m_decay[m_sound_volume] : 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,14 +3,14 @@ class geebee_sound_device : public device_t,
|
||||
{
|
||||
public:
|
||||
geebee_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
TIMER_VOLUME_DECAY
|
||||
};
|
||||
|
||||
|
||||
DECLARE_WRITE8_MEMBER( sound_w );
|
||||
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
@ -18,9 +18,9 @@ protected:
|
||||
|
||||
// sound stream update overrides
|
||||
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
|
||||
|
||||
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
|
||||
|
||||
private:
|
||||
// internal state
|
||||
UINT16 *m_decay;
|
||||
@ -49,8 +49,8 @@ public:
|
||||
TIMER_SOUND_VOLUME_DECAY,
|
||||
TIMER_MUSIC_VOLUME_DECAY
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
DECLARE_WRITE8_MEMBER( sound_w );
|
||||
DECLARE_WRITE8_MEMBER( music1_w );
|
||||
DECLARE_WRITE8_MEMBER( music2_w );
|
||||
@ -59,12 +59,12 @@ protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete();
|
||||
virtual void device_start();
|
||||
|
||||
|
||||
// sound stream update overrides
|
||||
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples);
|
||||
|
||||
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
|
||||
|
||||
private:
|
||||
// internal state
|
||||
INT16 *m_decay;
|
||||
|
@ -3023,9 +3023,9 @@ INPUT_PORTS_END
|
||||
Attack Force, by E.G.S., Italy
|
||||
Not much information is available for this game.
|
||||
It may have had an amber monitor?
|
||||
|
||||
|
||||
XTAL 20MHz
|
||||
|
||||
|
||||
TODO: sound
|
||||
|
||||
*****************************************************/
|
||||
@ -3073,7 +3073,7 @@ DRIVER_INIT_MEMBER(_8080bw_state,attackfc)
|
||||
UINT8 *rom = memregion("maincpu")->base();
|
||||
UINT32 len = memregion("maincpu")->bytes();
|
||||
UINT8 *buffer = auto_alloc_array(machine(), UINT8, len);
|
||||
|
||||
|
||||
// swap a8/a9
|
||||
for (int i = 0; i < len; i++)
|
||||
buffer[BITSWAP16(i, 15,14,13,12,11,10,8,9, 7,6,5,4,3,2,1,0)] = rom[i];
|
||||
@ -4554,7 +4554,7 @@ ROM_START( attackfc )
|
||||
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASE00 )
|
||||
ROM_LOAD( "30a.bin", 0x0000, 0x0400, CRC(c12e3386) SHA1(72b1d3d67a83edf0be0b0c37ef6dcffba450f16f) )
|
||||
ROM_LOAD( "36a.bin", 0x0400, 0x0400, CRC(6738dcb9) SHA1(e4c68553fc3f2d3db3d251b9cb325e2409d9c02a) )
|
||||
ROM_LOAD( "31a.bin", 0x0800, 0x0400, CRC(787a4658) SHA1(5be3143bdba6a32256603be94400034a8ea1fda6) )
|
||||
ROM_LOAD( "31a.bin", 0x0800, 0x0400, CRC(787a4658) SHA1(5be3143bdba6a32256603be94400034a8ea1fda6) )
|
||||
ROM_LOAD( "37a.bin", 0x0c00, 0x0400, CRC(ad6bfbbe) SHA1(5f5437b6c8e7dfe9649b25040862f8a51d8c43ed) )
|
||||
ROM_LOAD( "32a.bin", 0x1000, 0x0400, CRC(cbe0a711) SHA1(6e5f4214a4b48b70464005f4263c9b1ec3cbbeb1) )
|
||||
ROM_LOAD( "33a.bin", 0x1800, 0x0400, CRC(53147393) SHA1(57e078f1734e382e8a46be09c133daab30c75681) )
|
||||
|
@ -2751,15 +2751,15 @@ ROM_END
|
||||
|
||||
ROM_START( skysoldrbl )
|
||||
ROM_REGION( 0x80000, "maincpu", 0 )
|
||||
ROM_LOAD16_BYTE( "g.bin", 0x00000, 0x10000, CRC(4d3273e9) SHA1(7ddaba59114180fe371d2326fc49d6274e58f5c9) ) //different from other set
|
||||
ROM_LOAD16_BYTE( "c.bin", 0x00001, 0x10000, CRC(86c7af62) SHA1(4092558f3c11130e917d06b8d43f8f00815e4148) ) //different from other set
|
||||
ROM_LOAD16_BYTE( "g.bin", 0x00000, 0x10000, CRC(4d3273e9) SHA1(7ddaba59114180fe371d2326fc49d6274e58f5c9) ) //different from other set
|
||||
ROM_LOAD16_BYTE( "c.bin", 0x00001, 0x10000, CRC(86c7af62) SHA1(4092558f3c11130e917d06b8d43f8f00815e4148) ) //different from other set
|
||||
ROM_LOAD16_BYTE( "e.bin", 0x20000, 0x10000, CRC(03115b75) SHA1(e36f2eab0198bf6b5b419aacc593b3790b479e81) )
|
||||
ROM_LOAD16_BYTE( "a.bin", 0x20001, 0x10000, CRC(7aa103c7) SHA1(1907b92a3769089e01af36f74e0ff30e7a8f178c) )
|
||||
ROM_LOAD16_BYTE( "h-gtop.bin", 0x40000, 0x10000, CRC(f41dfeab) SHA1(1b4f68c0f55e89a9dcd0fae8fb26074b97b5303a) )
|
||||
ROM_LOAD16_BYTE( "d-ctop.bin", 0x40001, 0x10000, CRC(56560a3c) SHA1(c57c33d3935c23d56ae256981e4c3dcd80fb86a2) )
|
||||
ROM_LOAD16_BYTE( "f-etop.bin", 0x60000, 0x10000, CRC(60a52583) SHA1(975d309ba55730c87cb5ea786c4d2d82358a1b73) )
|
||||
ROM_LOAD16_BYTE( "b-atop.bin", 0x60001, 0x10000, CRC(028fd31b) SHA1(feb18a7217c107bb5f8e5c5ec5bc4173e977286b) )
|
||||
|
||||
|
||||
ROM_REGION( 0x80000, "audiocpu", 0 ) /* Sound CPU */
|
||||
ROM_LOAD( "33.ic11", 0x00000, 0x08000, CRC(b711fad4) SHA1(0a9515cb36b8d03ee5f7e0669a9948571b4ec34e) )
|
||||
ROM_CONTINUE( 0x18000, 0x08000 )
|
||||
@ -2781,7 +2781,7 @@ ROM_START( skysoldrbl )
|
||||
ROM_LOAD( "30.ic43", 0x040000, 0x10000, CRC(9eb10d3d) SHA1(ba1445e2c166f72a67295d595990efbdd3460736) )
|
||||
ROM_LOAD( "31.ic44", 0x050000, 0x10000, CRC(6b6c4e56) SHA1(1af79c5931be2eb1421172e6e7877a97681fdb84) )
|
||||
ROM_LOAD( "32.ic45", 0x060000, 0x10000, CRC(fdf55eca) SHA1(0c61ab8fc60c69c4d3fa976976f42bda63c06549) )
|
||||
ROM_LOAD( "29.ic42", 0x070000, 0x10000, CRC(cf888369) SHA1(d1ef5b2c81bbf4e039cc6cfee8339700a1dbb4ca) ) //different from other set (is one of them bad?)
|
||||
ROM_LOAD( "29.ic42", 0x070000, 0x10000, CRC(cf888369) SHA1(d1ef5b2c81bbf4e039cc6cfee8339700a1dbb4ca) ) //different from other set (is one of them bad?)
|
||||
ROM_LOAD( "18.ica1", 0x080000, 0x10000, CRC(08419273) SHA1(0ded4b60b0ce17a922fb7170f992c4f6c75be895) )
|
||||
ROM_LOAD( "17.ic30", 0x090000, 0x10000, CRC(6258a61b) SHA1(d56a9f1dfa02dc59935f03b86a134076e3039bf4) )
|
||||
ROM_LOAD( "20.ica3", 0x0a0000, 0x10000, CRC(5e716c62) SHA1(9427cd1578221ee48f4a8d8a24a232cb9e9b2206) )
|
||||
@ -3377,7 +3377,7 @@ GAME( 1987, btlfield, timesold, alpha68k_II, btlfield, alpha68k_state, btlfi
|
||||
GAME( 1987, btlfieldb, timesold, btlfieldb, btlfieldb, alpha68k_state,btlfieldb,ROT90, "bootleg", "Battle Field (bootleg)", GAME_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1988, skysoldr, 0, alpha68k_II, skysoldr, alpha68k_state, skysoldr, ROT90, "Alpha Denshi Co. (SNK of America/Romstar license)", "Sky Soldiers (US)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1988, skysoldrbl,skysoldr, alpha68k_II, skysoldr, alpha68k_state, skysoldr, ROT90, "bootleg", "Sky Soldiers (bootleg)", GAME_SUPPORTS_SAVE )
|
||||
GAME( 1988, skysoldrbl,skysoldr, alpha68k_II, skysoldr, alpha68k_state, skysoldr, ROT90, "bootleg", "Sky Soldiers (bootleg)", GAME_SUPPORTS_SAVE )
|
||||
|
||||
|
||||
GAME( 1988, goldmedl, 0, alpha68k_II_gm, goldmedl, alpha68k_state, goldmedl, ROT0, "SNK", "Gold Medalist (set 1)", GAME_SUPPORTS_SAVE )
|
||||
|
@ -286,14 +286,14 @@ ROM_END
|
||||
|
||||
ROM_START( ambushh )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
/* displays an M ("Mal" is Bad in Spanish) next to ROM 1 during the test, why is internal checksum wrong (0x02 instead of 0x00) ?
|
||||
/* displays an M ("Mal" is Bad in Spanish) next to ROM 1 during the test, why is internal checksum wrong (0x02 instead of 0x00) ?
|
||||
I think the ROM has been hacked(?)
|
||||
*/
|
||||
ROM_LOAD( "a1_hack.i7", 0x0000, 0x2000, CRC(a7cd149d) SHA1(470ebe60bc23a7908fb96caef8074d65f8c57625) )
|
||||
// 1A6D: 0C -> 00
|
||||
// 1A75: 18 -> 0D
|
||||
// 1A76: D5 -> 18
|
||||
// 1A77: 00 -> D6
|
||||
// 1A6D: 0C -> 00
|
||||
// 1A75: 18 -> 0D
|
||||
// 1A76: D5 -> 18
|
||||
// 1A77: 00 -> D6
|
||||
|
||||
ROM_LOAD( "a2.g7", 0x2000, 0x2000, CRC(8328d88a) SHA1(690f0af10a0550566b67ee570f849b2764448d15) )
|
||||
ROM_LOAD( "a3.f7", 0x4000, 0x2000, CRC(8db57ab5) SHA1(5cc7d7ebdfc91fb8d9ed52836d70c1de68001402) )
|
||||
|
@ -392,7 +392,7 @@ INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( aerolitos )
|
||||
PORT_INCLUDE( asteroid )
|
||||
|
||||
|
||||
PORT_MODIFY("DSW1") // this bootleg was for the Spanish market, so set it to Spanish by default
|
||||
PORT_DIPNAME( 0x03, 0x03, DEF_STR( Language ) ) PORT_DIPLOCATION("SW:1,2")
|
||||
PORT_DIPSETTING ( 0x00, DEF_STR( English ) )
|
||||
|
@ -900,9 +900,9 @@ static INPUT_PORTS_START( bnj )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( caractn2 ) /* 2/3 Lives Dip changes in this set */
|
||||
PORT_INCLUDE( bnj )
|
||||
PORT_INCLUDE( bnj )
|
||||
|
||||
PORT_MODIFY("DSW2")
|
||||
PORT_MODIFY("DSW2")
|
||||
PORT_DIPNAME( 0x01, 0x01, DEF_STR( Lives ) ) PORT_DIPLOCATION("7D:1")
|
||||
PORT_DIPSETTING( 0x01, "2" )
|
||||
PORT_DIPSETTING( 0x00, "3" )
|
||||
|
@ -1,65 +1,65 @@
|
||||
/*********************************************************************************************************
|
||||
|
||||
Double Dealer (c)NMK 1991
|
||||
Double Dealer (c)NMK 1991
|
||||
|
||||
driver by Angelo Salese & David Haywood, based on early work by Tomasz Slanina
|
||||
driver by Angelo Salese & David Haywood, based on early work by Tomasz Slanina
|
||||
|
||||
Appears to be a down-grade of the nmk16 HW
|
||||
Appears to be a down-grade of the nmk16 HW
|
||||
|
||||
TODO:
|
||||
-When you use the "gun card" the game gives "minus" points,but points are always added,inaccurate protection?
|
||||
-Understand better the video emulation and convert it to tilemaps;
|
||||
-A Double Dealer manual is needed for the coinage settings and coin/credit simulation;
|
||||
-Decap + emulate MCU, required if the random number generation is going to be accurate;
|
||||
TODO:
|
||||
-When you use the "gun card" the game gives "minus" points,but points are always added,inaccurate protection?
|
||||
-Understand better the video emulation and convert it to tilemaps;
|
||||
-A Double Dealer manual is needed for the coinage settings and coin/credit simulation;
|
||||
-Decap + emulate MCU, required if the random number generation is going to be accurate;
|
||||
|
||||
==========================================================================================================
|
||||
--
|
||||
--
|
||||
|
||||
pcb marked GD91071
|
||||
pcb marked GD91071
|
||||
|
||||
68000P10
|
||||
YM2203C
|
||||
91071-3 (Mask ROM)
|
||||
NMK-110 8131 ( Mitsubishi M50747 MCU ?)
|
||||
NMK 901
|
||||
NMK 902
|
||||
NMK 903 x2
|
||||
82S135N ("5")
|
||||
82S129N ("6")
|
||||
xtals 16.000 MHz and 6.000 MHz
|
||||
DSW x2
|
||||
68000P10
|
||||
YM2203C
|
||||
91071-3 (Mask ROM)
|
||||
NMK-110 8131 ( Mitsubishi M50747 MCU ?)
|
||||
NMK 901
|
||||
NMK 902
|
||||
NMK 903 x2
|
||||
82S135N ("5")
|
||||
82S129N ("6")
|
||||
xtals 16.000 MHz and 6.000 MHz
|
||||
DSW x2
|
||||
|
||||
--
|
||||
--
|
||||
|
||||
Few words about protection:
|
||||
Few words about protection:
|
||||
|
||||
- Work RAM at $fe000 - $fffff is shared with MCU . Maybe whole $f0000-$fffff is shared ...
|
||||
- After boot, game writes random-looking data to work RAM:
|
||||
- Work RAM at $fe000 - $fffff is shared with MCU . Maybe whole $f0000-$fffff is shared ...
|
||||
- After boot, game writes random-looking data to work RAM:
|
||||
|
||||
00052C: 33FC 1234 000F E086 move.w #$1234, $fe086.l
|
||||
000534: 33FC 5678 000F E164 move.w #$5678, $fe164.l
|
||||
00053C: 33FC 9CA3 000F E62E move.w #$9ca3, $fe62e.l
|
||||
000544: 33FC ABA2 000F E734 move.w #$aba2, $fe734.l
|
||||
00054C: 33FC B891 000F E828 move.w #$b891, $fe828.l
|
||||
000554: 33FC C760 000F E950 move.w #$c760, $fe950.l
|
||||
00055C: 33FC D45F 000F EA7C move.w #$d45f, $fea7c.l
|
||||
000564: 33FC E32E 000F ED4A move.w #$e32e, $fed4a.l
|
||||
00052C: 33FC 1234 000F E086 move.w #$1234, $fe086.l
|
||||
000534: 33FC 5678 000F E164 move.w #$5678, $fe164.l
|
||||
00053C: 33FC 9CA3 000F E62E move.w #$9ca3, $fe62e.l
|
||||
000544: 33FC ABA2 000F E734 move.w #$aba2, $fe734.l
|
||||
00054C: 33FC B891 000F E828 move.w #$b891, $fe828.l
|
||||
000554: 33FC C760 000F E950 move.w #$c760, $fe950.l
|
||||
00055C: 33FC D45F 000F EA7C move.w #$d45f, $fea7c.l
|
||||
000564: 33FC E32E 000F ED4A move.w #$e32e, $fed4a.l
|
||||
|
||||
Some (or maybe all ?) of above enables random generator at $fe010 - $fe017
|
||||
Some (or maybe all ?) of above enables random generator at $fe010 - $fe017
|
||||
|
||||
- There's also MCU response (write/read/test) test just after these writes.
|
||||
(probably data used in the check depends on above writes). It's similar to
|
||||
jalmah.c tests, but num of responses is different, and shared ram is
|
||||
used to communicate with MCU
|
||||
- There's also MCU response (write/read/test) test just after these writes.
|
||||
(probably data used in the check depends on above writes). It's similar to
|
||||
jalmah.c tests, but num of responses is different, and shared ram is
|
||||
used to communicate with MCU
|
||||
|
||||
- After last check (or maybe durning tests ... no idea)
|
||||
MCU writes $4ef900000604 (jmp $604) to $fe000 and game jumps to this address.
|
||||
- After last check (or maybe durning tests ... no idea)
|
||||
MCU writes $4ef900000604 (jmp $604) to $fe000 and game jumps to this address.
|
||||
|
||||
- code at $604 writes $20.w to $fe018 and $1.w to $fe01e.
|
||||
As result shared ram $fe000 - $fe007 is cleared.
|
||||
- code at $604 writes $20.w to $fe018 and $1.w to $fe01e.
|
||||
As result shared ram $fe000 - $fe007 is cleared.
|
||||
|
||||
Also many, many other reads/writes from/to shared mem.
|
||||
Few checks every interrupt:
|
||||
Also many, many other reads/writes from/to shared mem.
|
||||
Few checks every interrupt:
|
||||
|
||||
interrupt, lvl1
|
||||
|
||||
|
@ -1657,16 +1657,16 @@ DRIVER_INIT_MEMBER(decocass_state,cdsteljn)
|
||||
/* 11 */ GAME( 1981, clocknch, decocass, clocknch, clocknch, decocass_state, decocass, ROT270, "Data East Corporation", "Lock'n'Chase (DECO Cassette)", 0 )
|
||||
/* 12 */ // 1981.08 Flash Boy/DECO Kid
|
||||
/* 13 */ GAME( 1981, cprogolf, decocass, cprogolf, cprogolf, decocass_state, decocass, ROT270, "Data East Corporation", "Tournament Pro Golf (DECO Cassette)", 0 )
|
||||
GAME( 1981, cprogolfj, cprogolf, cprogolfj,cprogolf, decocass_state, decocass, ROT270, "Data East Corporation", "Tournament Pro Golf (DECO Cassette, Japan)", 0 )
|
||||
GAME( 1981, cprogolfj, cprogolf, cprogolfj,cprogolf, decocass_state, decocass, ROT270, "Data East Corporation", "Tournament Pro Golf (DECO Cassette, Japan)", 0 )
|
||||
/* 14 */ GAME( 1981, cdsteljn, decocass, cdsteljn, cdsteljn, decocass_state, cdsteljn, ROT270, "Data East Corporation", "DS Telejan (DECO Cassette, Japan)", 0 )
|
||||
/* 15 */ GAME( 1981, cluckypo, decocass, cluckypo, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Lucky Poker (DECO Cassette)", 0 )
|
||||
/* 16 */ GAME( 1981, ctisland, decocass, ctisland, decocass, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette, set 1)", 0 )
|
||||
GAME( 1981, ctisland2, ctisland, ctisland, decocass, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette, set 2)", 0 )
|
||||
GAME( 1981, ctisland3, ctisland, ctisland, decocass, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette, set 3)", GAME_NOT_WORKING ) /* Different Bitswap? */
|
||||
GAME( 1981, ctisland2, ctisland, ctisland, decocass, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette, set 2)", 0 )
|
||||
GAME( 1981, ctisland3, ctisland, ctisland, decocass, decocass_state, decocrom, ROT270, "Data East Corporation", "Treasure Island (DECO Cassette, set 3)", GAME_NOT_WORKING ) /* Different Bitswap? */
|
||||
/* 17 */ // 1981.10 Bobbitto
|
||||
/* 18 */ GAME( 1982, cexplore, decocass, cexplore, cexplore, decocass_state, decocass, ROT270, "Data East Corporation", "Explorer (DECO Cassette)", GAME_NOT_WORKING )
|
||||
/* 19 */ GAME( 1982, cdiscon1, decocass, cdiscon1, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Disco No.1 (DECO Cassette)", 0 )
|
||||
GAME( 1982, csweetht, cdiscon1, cdiscon1, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Sweet Heart (DECO Cassette)", 0 )
|
||||
GAME( 1982, csweetht, cdiscon1, cdiscon1, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Sweet Heart (DECO Cassette)", 0 )
|
||||
/* 20 */ GAME( 1982, ctornado, decocass, ctornado, ctornado, decocass_state, decocass, ROT270, "Data East Corporation", "Tornado (DECO Cassette)", 0 )
|
||||
/* 21 */ GAME( 1982, cmissnx, decocass, cmissnx, cmissnx, decocass_state, decocass, ROT270, "Data East Corporation", "Mission-X (DECO Cassette)", 0 )
|
||||
/* 22 */ GAME( 1982, cptennis, decocass, cptennis, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Tennis (DECO Cassette)", 0 )
|
||||
@ -1675,28 +1675,28 @@ DRIVER_INIT_MEMBER(decocass_state,cdsteljn)
|
||||
/* 25 */ GAME( 1982, cadanglr, decocass, cfishing, cfishing, decocass_state, decocass, ROT270, "Data East Corporation", "Angler Dangler (DECO Cassette)", 0 )
|
||||
/* 25 */ GAME( 1982, cfishing, cadanglr, cfishing, cfishing, decocass_state, decocass, ROT270, "Data East Corporation", "Fishing (DECO Cassette)", 0 )
|
||||
/* 26 */ GAME( 1983, cbtime, decocass, cbtime, cbtime, decocass_state, decocass, ROT270, "Data East Corporation", "Burger Time (DECO Cassette)", 0 )
|
||||
GAME( 1982, chamburger,cbtime, cbtime, cbtime, decocass_state, decocass, ROT270, "Data East Corporation", "Hamburger (DECO Cassette, Japan)", 0 )
|
||||
GAME( 1982, chamburger,cbtime, cbtime, cbtime, decocass_state, decocass, ROT270, "Data East Corporation", "Hamburger (DECO Cassette, Japan)", 0 )
|
||||
/* 27 */ GAME( 1982, cburnrub, decocass, cburnrub, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Burnin' Rubber (DECO Cassette, set 1)", 0 )
|
||||
GAME( 1982, cburnrub2, cburnrub, cburnrub, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Burnin' Rubber (DECO Cassette, set 2)", 0 )
|
||||
GAME( 1982, cbnj, cburnrub, cburnrub, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Bump 'n' Jump (DECO Cassette)", 0 )
|
||||
GAME( 1982, cburnrub2, cburnrub, cburnrub, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Burnin' Rubber (DECO Cassette, set 2)", 0 )
|
||||
GAME( 1982, cbnj, cburnrub, cburnrub, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Bump 'n' Jump (DECO Cassette)", 0 )
|
||||
/* 28 */ GAME( 1983, cgraplop, decocass, cgraplop, cgraplop, decocass_state, decocass, ROT270, "Data East Corporation", "Cluster Buster (DECO Cassette)", 0 )
|
||||
GAME( 1983, cgraplop2, cgraplop, cgraplop2,cgraplop, decocass_state, decocass, ROT270, "Data East Corporation", "Graplop (no title screen) (DECO Cassette)", 0 ) // a version with title screen exists, see reference videos
|
||||
GAME( 1983, cgraplop2, cgraplop, cgraplop2,cgraplop, decocass_state, decocass, ROT270, "Data East Corporation", "Graplop (no title screen) (DECO Cassette)", 0 ) // a version with title screen exists, see reference videos
|
||||
/* 29 */ GAME( 1983, clapapa, decocass, clapapa, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Rootin' Tootin' / La-Pa-Pa (DECO Cassette)" , 0) /* Displays 'La-Pa-Pa during attract */
|
||||
GAME( 1983, clapapa2, clapapa, clapapa, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Rootin' Tootin' (DECO Cassette)" , 0) /* Displays 'Rootin' Tootin' during attract */
|
||||
GAME( 1983, clapapa2, clapapa, clapapa, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Rootin' Tootin' (DECO Cassette)" , 0) /* Displays 'Rootin' Tootin' during attract */
|
||||
/* 30 */ GAME( 1983, cskater, decocass, cskater, cskater, decocass_state, decocass, ROT270, "Data East Corporation", "Skater (DECO Cassette, Japan)", 0 )
|
||||
/* 31 */ GAME( 1983, cprobowl, decocass, cprobowl, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Bowling (DECO Cassette)", 0 )
|
||||
/* 32 */ GAME( 1983, cnightst, decocass, cnightst, cnightst, decocass_state, decocass, ROT270, "Data East Corporation", "Night Star (DECO Cassette, set 1)", 0 )
|
||||
GAME( 1983, cnightst2, cnightst, cnightst, cnightst, decocass_state, decocass, ROT270, "Data East Corporation", "Night Star (DECO Cassette, set 2)", 0 )
|
||||
GAME( 1983, cnightst2, cnightst, cnightst, cnightst, decocass_state, decocass, ROT270, "Data East Corporation", "Night Star (DECO Cassette, set 2)", 0 )
|
||||
/* 33 */ GAME( 1983, cpsoccer, decocass, cpsoccer, cpsoccer, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Soccer (DECO Cassette)", 0 )
|
||||
GAME( 1983, cpsoccerj, cpsoccer, cpsoccer, cpsoccer, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Soccer (DECO Cassette, Japan)", 0 )
|
||||
GAME( 1983, cpsoccerj, cpsoccer, cpsoccer, cpsoccer, decocass_state, decocass, ROT270, "Data East Corporation", "Pro Soccer (DECO Cassette, Japan)", 0 )
|
||||
/* 34 */ GAME( 1983, csdtenis, decocass, csdtenis, csdtenis, decocass_state, decocass, ROT270, "Data East Corporation", "Super Doubles Tennis (DECO Cassette, Japan)", GAME_WRONG_COLORS )
|
||||
/* 35 */ GAME( 1985, cflyball, decocass, cflyball, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Flying Ball (DECO Cassette)", 0 )
|
||||
/* 36 */ // 1984.04 Genesis/Boomer Rang'r
|
||||
/* 37 */ GAME( 1983, czeroize, decocass, czeroize, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Zeroize (DECO Cassette)", 0 )
|
||||
/* 38 */ GAME( 1984, cscrtry, decocass, type4, cscrtry, decocass_state, decocass, ROT270, "Data East Corporation", "Scrum Try (DECO Cassette, set 1)", 0 )
|
||||
GAME( 1984, cscrtry2, cscrtry, type4, cscrtry, decocass_state, decocass, ROT270, "Data East Corporation", "Scrum Try (DECO Cassette, set 2)", 0 )
|
||||
GAME( 1984, cscrtry2, cscrtry, type4, cscrtry, decocass_state, decocass, ROT270, "Data East Corporation", "Scrum Try (DECO Cassette, set 2)", 0 )
|
||||
/* 39 */ GAME( 1984, cppicf, decocass, cppicf, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Peter Pepper's Ice Cream Factory (DECO Cassette, set 1)", 0 )
|
||||
GAME( 1984, cppicf2, cppicf, cppicf, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Peter Pepper's Ice Cream Factory (DECO Cassette, set 2)", 0 )
|
||||
GAME( 1984, cppicf2, cppicf, cppicf, decocass, decocass_state, decocass, ROT270, "Data East Corporation", "Peter Pepper's Ice Cream Factory (DECO Cassette, set 2)", 0 )
|
||||
/* 40 */ GAME( 1984, cfghtice, decocass, cfghtice, cfghtice, decocass_state, decocass, ROT270, "Data East Corporation", "Fighting Ice Hockey (DECO Cassette)", 0 )
|
||||
/* 41 */ GAME( 1984, coozumou, decocass, type4, cscrtry, decocass_state, decocass, ROT270, "Data East Corporation", "Oozumou - The Grand Sumo (DECO Cassette, Japan)", 0 )
|
||||
/* 42 */ // 1984.08 Hellow Gateball // not a typo, this is official spelling
|
||||
|
@ -193,7 +193,7 @@ public:
|
||||
|
||||
UINT8 m_extend_board_irq_enable;
|
||||
UINT8 m_extend_board_irq_active;
|
||||
// emu_timer *m_keyboard_timer;
|
||||
// emu_timer *m_keyboard_timer;
|
||||
GCU_REGS m_gcu[2];
|
||||
int m_tick;
|
||||
int m_layer;
|
||||
@ -209,7 +209,7 @@ public:
|
||||
UINT8 m_temp_data[64*1024];
|
||||
int m_cab_data_ptr;
|
||||
const int * m_cur_cab_data;
|
||||
// int m_keyboard_state[2];
|
||||
// int m_keyboard_state[2];
|
||||
UINT8 m_spu_shared_ram[0x400];
|
||||
IBUTTON m_ibutton;
|
||||
int m_ibutton_state;
|
||||
@ -239,8 +239,8 @@ public:
|
||||
DECLARE_WRITE32_MEMBER(atapi_command_w);
|
||||
DECLARE_READ32_MEMBER(atapi_control_r);
|
||||
DECLARE_WRITE32_MEMBER(atapi_control_w);
|
||||
// DECLARE_READ32_MEMBER(comm_uart_r);
|
||||
// DECLARE_WRITE32_MEMBER(comm_uart_w);
|
||||
// DECLARE_READ32_MEMBER(comm_uart_r);
|
||||
// DECLARE_WRITE32_MEMBER(comm_uart_w);
|
||||
DECLARE_READ32_MEMBER(cabinet_r);
|
||||
DECLARE_READ32_MEMBER(keyboard_wheel_r);
|
||||
DECLARE_READ8_MEMBER(midi_uart_r);
|
||||
@ -257,7 +257,7 @@ public:
|
||||
DECLARE_READ32_MEMBER(ppc_spu_share_r);
|
||||
DECLARE_WRITE32_MEMBER(ppc_spu_share_w);
|
||||
DECLARE_READ16_MEMBER(spu_unk_r);
|
||||
// TIMER_CALLBACK_MEMBER(keyboard_timer_callback);
|
||||
// TIMER_CALLBACK_MEMBER(keyboard_timer_callback);
|
||||
void gcu_draw_object(bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, UINT32 *cmd);
|
||||
void gcu_fill_rect(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *cmd);
|
||||
void gcu_draw_character(bitmap_ind16 &bitmap, const rectangle &cliprect, int chip, UINT32 *cmd);
|
||||
@ -1404,52 +1404,52 @@ WRITE32_MEMBER(firebeat_state::atapi_control_w )
|
||||
/*
|
||||
READ32_MEMBER(firebeat_state::comm_uart_r )
|
||||
{
|
||||
UINT32 r = 0;
|
||||
UINT32 r = 0;
|
||||
|
||||
if (ACCESSING_BITS_24_31)
|
||||
{
|
||||
r |= pc16552d_0_r(space, (offset*4)+0) << 24;
|
||||
}
|
||||
if (ACCESSING_BITS_16_23)
|
||||
{
|
||||
r |= pc16552d_0_r(space, (offset*4)+1) << 16;
|
||||
}
|
||||
if (ACCESSING_BITS_8_15)
|
||||
{
|
||||
r |= pc16552d_0_r(space, (offset*4)+2) << 8;
|
||||
}
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
r |= pc16552d_0_r(space, (offset*4)+3) << 0;
|
||||
}
|
||||
if (ACCESSING_BITS_24_31)
|
||||
{
|
||||
r |= pc16552d_0_r(space, (offset*4)+0) << 24;
|
||||
}
|
||||
if (ACCESSING_BITS_16_23)
|
||||
{
|
||||
r |= pc16552d_0_r(space, (offset*4)+1) << 16;
|
||||
}
|
||||
if (ACCESSING_BITS_8_15)
|
||||
{
|
||||
r |= pc16552d_0_r(space, (offset*4)+2) << 8;
|
||||
}
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
r |= pc16552d_0_r(space, (offset*4)+3) << 0;
|
||||
}
|
||||
|
||||
return r;
|
||||
return r;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(firebeat_state::comm_uart_w )
|
||||
{
|
||||
if (ACCESSING_BITS_24_31)
|
||||
{
|
||||
pc16552d_0_w(space, (offset*4)+0, (data >> 24) & 0xff);
|
||||
}
|
||||
if (ACCESSING_BITS_16_23)
|
||||
{
|
||||
pc16552d_0_w(space, (offset*4)+1, (data >> 16) & 0xff);
|
||||
}
|
||||
if (ACCESSING_BITS_8_15)
|
||||
{
|
||||
pc16552d_0_w(space, (offset*4)+2, (data >> 8) & 0xff);
|
||||
}
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
pc16552d_0_w(space, (offset*4)+3, (data >> 0) & 0xff);
|
||||
}
|
||||
if (ACCESSING_BITS_24_31)
|
||||
{
|
||||
pc16552d_0_w(space, (offset*4)+0, (data >> 24) & 0xff);
|
||||
}
|
||||
if (ACCESSING_BITS_16_23)
|
||||
{
|
||||
pc16552d_0_w(space, (offset*4)+1, (data >> 16) & 0xff);
|
||||
}
|
||||
if (ACCESSING_BITS_8_15)
|
||||
{
|
||||
pc16552d_0_w(space, (offset*4)+2, (data >> 8) & 0xff);
|
||||
}
|
||||
if (ACCESSING_BITS_0_7)
|
||||
{
|
||||
pc16552d_0_w(space, (offset*4)+3, (data >> 0) & 0xff);
|
||||
}
|
||||
}
|
||||
|
||||
static void comm_uart_irq_callback(running_machine &machine, int channel, int value)
|
||||
{
|
||||
// TODO
|
||||
//m_maincpu->set_input_line(INPUT_LINE_IRQ2, ASSERT_LINE);
|
||||
// TODO
|
||||
//m_maincpu->set_input_line(INPUT_LINE_IRQ2, ASSERT_LINE);
|
||||
}
|
||||
*/
|
||||
static const ins8250_interface firebeat_com0_interface =
|
||||
@ -1569,74 +1569,74 @@ static const ins8250_interface firebeat_midi1_interface =
|
||||
/*
|
||||
static const int keyboard_notes[24] =
|
||||
{
|
||||
0x3c, // C1
|
||||
0x3d, // C1#
|
||||
0x3e, // D1
|
||||
0x3f, // D1#
|
||||
0x40, // E1
|
||||
0x41, // F1
|
||||
0x42, // F1#
|
||||
0x43, // G1
|
||||
0x44, // G1#
|
||||
0x45, // A1
|
||||
0x46, // A1#
|
||||
0x47, // B1
|
||||
0x48, // C2
|
||||
0x49, // C2#
|
||||
0x4a, // D2
|
||||
0x4b, // D2#
|
||||
0x4c, // E2
|
||||
0x4d, // F2
|
||||
0x4e, // F2#
|
||||
0x4f, // G2
|
||||
0x50, // G2#
|
||||
0x51, // A2
|
||||
0x52, // A2#
|
||||
0x53, // B2
|
||||
0x3c, // C1
|
||||
0x3d, // C1#
|
||||
0x3e, // D1
|
||||
0x3f, // D1#
|
||||
0x40, // E1
|
||||
0x41, // F1
|
||||
0x42, // F1#
|
||||
0x43, // G1
|
||||
0x44, // G1#
|
||||
0x45, // A1
|
||||
0x46, // A1#
|
||||
0x47, // B1
|
||||
0x48, // C2
|
||||
0x49, // C2#
|
||||
0x4a, // D2
|
||||
0x4b, // D2#
|
||||
0x4c, // E2
|
||||
0x4d, // F2
|
||||
0x4e, // F2#
|
||||
0x4f, // G2
|
||||
0x50, // G2#
|
||||
0x51, // A2
|
||||
0x52, // A2#
|
||||
0x53, // B2
|
||||
};
|
||||
|
||||
TIMER_CALLBACK_MEMBER(firebeat_state::keyboard_timer_callback)
|
||||
{
|
||||
static const int kb_uart_channel[2] = { 1, 0 };
|
||||
static const char *const keynames[] = { "KEYBOARD_P1", "KEYBOARD_P2" };
|
||||
int keyboard;
|
||||
int i;
|
||||
static const int kb_uart_channel[2] = { 1, 0 };
|
||||
static const char *const keynames[] = { "KEYBOARD_P1", "KEYBOARD_P2" };
|
||||
int keyboard;
|
||||
int i;
|
||||
|
||||
for (keyboard=0; keyboard < 2; keyboard++)
|
||||
{
|
||||
UINT32 kbstate = ioport(keynames[keyboard])->read();
|
||||
int uart_channel = kb_uart_channel[keyboard];
|
||||
for (keyboard=0; keyboard < 2; keyboard++)
|
||||
{
|
||||
UINT32 kbstate = ioport(keynames[keyboard])->read();
|
||||
int uart_channel = kb_uart_channel[keyboard];
|
||||
|
||||
if (kbstate != m_keyboard_state[keyboard])
|
||||
{
|
||||
for (i=0; i < 24; i++)
|
||||
{
|
||||
int kbnote = keyboard_notes[i];
|
||||
if (kbstate != m_keyboard_state[keyboard])
|
||||
{
|
||||
for (i=0; i < 24; i++)
|
||||
{
|
||||
int kbnote = keyboard_notes[i];
|
||||
|
||||
if ((m_keyboard_state[keyboard] & (1 << i)) != 0 && (kbstate & (1 << i)) == 0)
|
||||
{
|
||||
// key was on, now off -> send Note Off message
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, 0x80);
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, kbnote);
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, 0x7f);
|
||||
}
|
||||
else if ((m_keyboard_state[keyboard] & (1 << i)) == 0 && (kbstate & (1 << i)) != 0)
|
||||
{
|
||||
// key was off, now on -> send Note On message
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, 0x90);
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, kbnote);
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, 0x7f);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// no messages, send Active Sense message instead
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, 0xfe);
|
||||
}
|
||||
if ((m_keyboard_state[keyboard] & (1 << i)) != 0 && (kbstate & (1 << i)) == 0)
|
||||
{
|
||||
// key was on, now off -> send Note Off message
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, 0x80);
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, kbnote);
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, 0x7f);
|
||||
}
|
||||
else if ((m_keyboard_state[keyboard] & (1 << i)) == 0 && (kbstate & (1 << i)) != 0)
|
||||
{
|
||||
// key was off, now on -> send Note On message
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, 0x90);
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, kbnote);
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, 0x7f);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// no messages, send Active Sense message instead
|
||||
pc16552d_rx_data(machine(), 1, uart_channel, 0xfe);
|
||||
}
|
||||
|
||||
m_keyboard_state[keyboard] = kbstate;
|
||||
}
|
||||
m_keyboard_state[keyboard] = kbstate;
|
||||
}
|
||||
}
|
||||
*/
|
||||
// Extend board IRQs
|
||||
@ -1984,57 +1984,57 @@ static INPUT_PORTS_START(kbm)
|
||||
PORT_BIT( 0xff, 0x80, IPT_PADDLE_V ) PORT_MINMAX(0xff, 0x00) PORT_SENSITIVITY(30) PORT_KEYDELTA(10)
|
||||
|
||||
/*
|
||||
PORT_START("KEYBOARD_P1")
|
||||
PORT_BIT( 0x000001, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 C1") PORT_CODE(KEYCODE_Q)
|
||||
PORT_BIT( 0x000002, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 C1#") PORT_CODE(KEYCODE_W)
|
||||
PORT_BIT( 0x000004, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 D1") PORT_CODE(KEYCODE_E)
|
||||
PORT_BIT( 0x000008, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 D1#") PORT_CODE(KEYCODE_R)
|
||||
PORT_BIT( 0x000010, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 E1") PORT_CODE(KEYCODE_T)
|
||||
PORT_BIT( 0x000020, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 F1") PORT_CODE(KEYCODE_Y)
|
||||
PORT_BIT( 0x000040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 F1#") PORT_CODE(KEYCODE_U)
|
||||
PORT_BIT( 0x000080, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 G1") PORT_CODE(KEYCODE_I)
|
||||
PORT_BIT( 0x000100, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 G1#") PORT_CODE(KEYCODE_O)
|
||||
PORT_BIT( 0x000200, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 A1") PORT_CODE(KEYCODE_A)
|
||||
PORT_BIT( 0x000400, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 A1#") PORT_CODE(KEYCODE_S)
|
||||
PORT_BIT( 0x000800, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 B1") PORT_CODE(KEYCODE_D)
|
||||
PORT_BIT( 0x001000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 C2") PORT_CODE(KEYCODE_F)
|
||||
PORT_BIT( 0x002000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 C2#") PORT_CODE(KEYCODE_G)
|
||||
PORT_BIT( 0x004000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 D2") PORT_CODE(KEYCODE_H)
|
||||
PORT_BIT( 0x008000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 D2#") PORT_CODE(KEYCODE_J)
|
||||
PORT_BIT( 0x010000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 E2") PORT_CODE(KEYCODE_K)
|
||||
PORT_BIT( 0x020000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 F2") PORT_CODE(KEYCODE_L)
|
||||
PORT_BIT( 0x040000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 F2#") PORT_CODE(KEYCODE_Z)
|
||||
PORT_BIT( 0x080000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 G2") PORT_CODE(KEYCODE_X)
|
||||
PORT_BIT( 0x100000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 G2#") PORT_CODE(KEYCODE_C)
|
||||
PORT_BIT( 0x200000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 A2") PORT_CODE(KEYCODE_V)
|
||||
PORT_BIT( 0x400000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 A2#") PORT_CODE(KEYCODE_B)
|
||||
PORT_BIT( 0x800000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 B2") PORT_CODE(KEYCODE_N)
|
||||
PORT_START("KEYBOARD_P1")
|
||||
PORT_BIT( 0x000001, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 C1") PORT_CODE(KEYCODE_Q)
|
||||
PORT_BIT( 0x000002, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 C1#") PORT_CODE(KEYCODE_W)
|
||||
PORT_BIT( 0x000004, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 D1") PORT_CODE(KEYCODE_E)
|
||||
PORT_BIT( 0x000008, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 D1#") PORT_CODE(KEYCODE_R)
|
||||
PORT_BIT( 0x000010, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 E1") PORT_CODE(KEYCODE_T)
|
||||
PORT_BIT( 0x000020, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 F1") PORT_CODE(KEYCODE_Y)
|
||||
PORT_BIT( 0x000040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 F1#") PORT_CODE(KEYCODE_U)
|
||||
PORT_BIT( 0x000080, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 G1") PORT_CODE(KEYCODE_I)
|
||||
PORT_BIT( 0x000100, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 G1#") PORT_CODE(KEYCODE_O)
|
||||
PORT_BIT( 0x000200, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 A1") PORT_CODE(KEYCODE_A)
|
||||
PORT_BIT( 0x000400, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 A1#") PORT_CODE(KEYCODE_S)
|
||||
PORT_BIT( 0x000800, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 B1") PORT_CODE(KEYCODE_D)
|
||||
PORT_BIT( 0x001000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 C2") PORT_CODE(KEYCODE_F)
|
||||
PORT_BIT( 0x002000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 C2#") PORT_CODE(KEYCODE_G)
|
||||
PORT_BIT( 0x004000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 D2") PORT_CODE(KEYCODE_H)
|
||||
PORT_BIT( 0x008000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 D2#") PORT_CODE(KEYCODE_J)
|
||||
PORT_BIT( 0x010000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 E2") PORT_CODE(KEYCODE_K)
|
||||
PORT_BIT( 0x020000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 F2") PORT_CODE(KEYCODE_L)
|
||||
PORT_BIT( 0x040000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 F2#") PORT_CODE(KEYCODE_Z)
|
||||
PORT_BIT( 0x080000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 G2") PORT_CODE(KEYCODE_X)
|
||||
PORT_BIT( 0x100000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 G2#") PORT_CODE(KEYCODE_C)
|
||||
PORT_BIT( 0x200000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 A2") PORT_CODE(KEYCODE_V)
|
||||
PORT_BIT( 0x400000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 A2#") PORT_CODE(KEYCODE_B)
|
||||
PORT_BIT( 0x800000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P1 B2") PORT_CODE(KEYCODE_N)
|
||||
|
||||
PORT_START("KEYBOARD_P2")
|
||||
PORT_BIT( 0x000001, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 C1") PORT_CODE(KEYCODE_Q)
|
||||
PORT_BIT( 0x000002, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 C1#") PORT_CODE(KEYCODE_W)
|
||||
PORT_BIT( 0x000004, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 D1") PORT_CODE(KEYCODE_E)
|
||||
PORT_BIT( 0x000008, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 D1#") PORT_CODE(KEYCODE_R)
|
||||
PORT_BIT( 0x000010, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 E1") PORT_CODE(KEYCODE_T)
|
||||
PORT_BIT( 0x000020, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 F1") PORT_CODE(KEYCODE_Y)
|
||||
PORT_BIT( 0x000040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 F1#") PORT_CODE(KEYCODE_U)
|
||||
PORT_BIT( 0x000080, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 G1") PORT_CODE(KEYCODE_I)
|
||||
PORT_BIT( 0x000100, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 G1#") PORT_CODE(KEYCODE_O)
|
||||
PORT_BIT( 0x000200, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 A1") PORT_CODE(KEYCODE_A)
|
||||
PORT_BIT( 0x000400, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 A1#") PORT_CODE(KEYCODE_S)
|
||||
PORT_BIT( 0x000800, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 B1") PORT_CODE(KEYCODE_D)
|
||||
PORT_BIT( 0x001000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 C2") PORT_CODE(KEYCODE_F)
|
||||
PORT_BIT( 0x002000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 C2#") PORT_CODE(KEYCODE_G)
|
||||
PORT_BIT( 0x004000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 D2") PORT_CODE(KEYCODE_H)
|
||||
PORT_BIT( 0x008000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 D2#") PORT_CODE(KEYCODE_J)
|
||||
PORT_BIT( 0x010000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 E2") PORT_CODE(KEYCODE_K)
|
||||
PORT_BIT( 0x020000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 F2") PORT_CODE(KEYCODE_L)
|
||||
PORT_BIT( 0x040000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 F2#") PORT_CODE(KEYCODE_Z)
|
||||
PORT_BIT( 0x080000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 G2") PORT_CODE(KEYCODE_X)
|
||||
PORT_BIT( 0x100000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 G2#") PORT_CODE(KEYCODE_C)
|
||||
PORT_BIT( 0x200000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 A2") PORT_CODE(KEYCODE_V)
|
||||
PORT_BIT( 0x400000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 A2#") PORT_CODE(KEYCODE_B)
|
||||
PORT_BIT( 0x800000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 B2") PORT_CODE(KEYCODE_N)
|
||||
PORT_START("KEYBOARD_P2")
|
||||
PORT_BIT( 0x000001, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 C1") PORT_CODE(KEYCODE_Q)
|
||||
PORT_BIT( 0x000002, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 C1#") PORT_CODE(KEYCODE_W)
|
||||
PORT_BIT( 0x000004, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 D1") PORT_CODE(KEYCODE_E)
|
||||
PORT_BIT( 0x000008, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 D1#") PORT_CODE(KEYCODE_R)
|
||||
PORT_BIT( 0x000010, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 E1") PORT_CODE(KEYCODE_T)
|
||||
PORT_BIT( 0x000020, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 F1") PORT_CODE(KEYCODE_Y)
|
||||
PORT_BIT( 0x000040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 F1#") PORT_CODE(KEYCODE_U)
|
||||
PORT_BIT( 0x000080, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 G1") PORT_CODE(KEYCODE_I)
|
||||
PORT_BIT( 0x000100, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 G1#") PORT_CODE(KEYCODE_O)
|
||||
PORT_BIT( 0x000200, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 A1") PORT_CODE(KEYCODE_A)
|
||||
PORT_BIT( 0x000400, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 A1#") PORT_CODE(KEYCODE_S)
|
||||
PORT_BIT( 0x000800, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 B1") PORT_CODE(KEYCODE_D)
|
||||
PORT_BIT( 0x001000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 C2") PORT_CODE(KEYCODE_F)
|
||||
PORT_BIT( 0x002000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 C2#") PORT_CODE(KEYCODE_G)
|
||||
PORT_BIT( 0x004000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 D2") PORT_CODE(KEYCODE_H)
|
||||
PORT_BIT( 0x008000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 D2#") PORT_CODE(KEYCODE_J)
|
||||
PORT_BIT( 0x010000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 E2") PORT_CODE(KEYCODE_K)
|
||||
PORT_BIT( 0x020000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 F2") PORT_CODE(KEYCODE_L)
|
||||
PORT_BIT( 0x040000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 F2#") PORT_CODE(KEYCODE_Z)
|
||||
PORT_BIT( 0x080000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 G2") PORT_CODE(KEYCODE_X)
|
||||
PORT_BIT( 0x100000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 G2#") PORT_CODE(KEYCODE_C)
|
||||
PORT_BIT( 0x200000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 A2") PORT_CODE(KEYCODE_V)
|
||||
PORT_BIT( 0x400000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 A2#") PORT_CODE(KEYCODE_B)
|
||||
PORT_BIT( 0x800000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("P2 B2") PORT_CODE(KEYCODE_N)
|
||||
*/
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -2355,8 +2355,8 @@ void firebeat_state::init_firebeat()
|
||||
|
||||
atapi_init();
|
||||
|
||||
// pc16552d_init(machine(), 0, 19660800, comm_uart_irq_callback, 0); // Network UART
|
||||
// pc16552d_init(machine(), 1, 24000000, midi_uart_irq_callback, 0); // MIDI UART
|
||||
// pc16552d_init(machine(), 0, 19660800, comm_uart_irq_callback, 0); // Network UART
|
||||
// pc16552d_init(machine(), 1, 24000000, midi_uart_irq_callback, 0); // MIDI UART
|
||||
|
||||
m_extend_board_irq_enable = 0x3f;
|
||||
m_extend_board_irq_active = 0x00;
|
||||
@ -2387,8 +2387,8 @@ DRIVER_INIT_MEMBER(firebeat_state,ppd)
|
||||
void firebeat_state::init_keyboard()
|
||||
{
|
||||
// set keyboard timer
|
||||
// m_keyboard_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(firebeat_state::keyboard_timer_callback),this));
|
||||
// m_keyboard_timer->adjust(attotime::from_msec(10), 0, attotime::from_msec(10));
|
||||
// m_keyboard_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(firebeat_state::keyboard_timer_callback),this));
|
||||
// m_keyboard_timer->adjust(attotime::from_msec(10), 0, attotime::from_msec(10));
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(firebeat_state,kbm)
|
||||
|
@ -84,21 +84,21 @@ ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( fruitpc )
|
||||
PORT_START("pc_keyboard_0")
|
||||
// PORT_BIT ( 0x0001, 0x0000, IPT_UNUSED ) /* unused scancode 0 */
|
||||
// AT_KEYB_HELPER( 0x0002, "Esc", KEYCODE_Q ) /* Esc 01 81 */
|
||||
// PORT_BIT ( 0x0001, 0x0000, IPT_UNUSED ) /* unused scancode 0 */
|
||||
// AT_KEYB_HELPER( 0x0002, "Esc", KEYCODE_Q ) /* Esc 01 81 */
|
||||
|
||||
PORT_START("pc_keyboard_1")
|
||||
// AT_KEYB_HELPER( 0x0010, "T", KEYCODE_T ) /* T 14 94 */
|
||||
// AT_KEYB_HELPER( 0x0020, "Y", KEYCODE_Y ) /* Y 15 95 */
|
||||
// AT_KEYB_HELPER( 0x0100, "O", KEYCODE_O ) /* O 18 98 */
|
||||
// AT_KEYB_HELPER( 0x1000, "Enter", KEYCODE_ENTER ) /* Enter 1C 9C */
|
||||
// AT_KEYB_HELPER( 0x0010, "T", KEYCODE_T ) /* T 14 94 */
|
||||
// AT_KEYB_HELPER( 0x0020, "Y", KEYCODE_Y ) /* Y 15 95 */
|
||||
// AT_KEYB_HELPER( 0x0100, "O", KEYCODE_O ) /* O 18 98 */
|
||||
// AT_KEYB_HELPER( 0x1000, "Enter", KEYCODE_ENTER ) /* Enter 1C 9C */
|
||||
|
||||
PORT_START("pc_keyboard_2")
|
||||
|
||||
PORT_START("pc_keyboard_3")
|
||||
// AT_KEYB_HELPER( 0x0001, "B", KEYCODE_B ) /* B 30 B0 */
|
||||
// AT_KEYB_HELPER( 0x0002, "N", KEYCODE_N ) /* N 31 B1 */
|
||||
// AT_KEYB_HELPER( 0x0800, "F1", KEYCODE_S ) /* F1 3B BB */
|
||||
// AT_KEYB_HELPER( 0x0001, "B", KEYCODE_B ) /* B 30 B0 */
|
||||
// AT_KEYB_HELPER( 0x0002, "N", KEYCODE_N ) /* N 31 B1 */
|
||||
// AT_KEYB_HELPER( 0x0800, "F1", KEYCODE_S ) /* F1 3B BB */
|
||||
// AT_KEYB_HELPER( 0x8000, "F5", KEYCODE_F5 )
|
||||
|
||||
PORT_START("pc_keyboard_4")
|
||||
@ -107,13 +107,13 @@ static INPUT_PORTS_START( fruitpc )
|
||||
PORT_START("pc_keyboard_5")
|
||||
|
||||
PORT_START("pc_keyboard_6")
|
||||
// AT_KEYB_HELPER( 0x0040, "(MF2)Cursor Up", KEYCODE_UP ) /* Up 67 e7 */
|
||||
// AT_KEYB_HELPER( 0x0080, "(MF2)Page Up", KEYCODE_PGUP ) /* Page Up 68 e8 */
|
||||
// AT_KEYB_HELPER( 0x0100, "(MF2)Cursor Left", KEYCODE_LEFT ) /* Left 69 e9 */
|
||||
// AT_KEYB_HELPER( 0x0200, "(MF2)Cursor Right", KEYCODE_RIGHT ) /* Right 6a ea */
|
||||
// AT_KEYB_HELPER( 0x0800, "(MF2)Cursor Down", KEYCODE_DOWN ) /* Down 6c ec */
|
||||
// AT_KEYB_HELPER( 0x1000, "(MF2)Page Down", KEYCODE_PGDN ) /* Page Down 6d ed */
|
||||
// AT_KEYB_HELPER( 0x4000, "Del", KEYCODE_A ) /* Delete 6f ef */
|
||||
// AT_KEYB_HELPER( 0x0040, "(MF2)Cursor Up", KEYCODE_UP ) /* Up 67 e7 */
|
||||
// AT_KEYB_HELPER( 0x0080, "(MF2)Page Up", KEYCODE_PGUP ) /* Page Up 68 e8 */
|
||||
// AT_KEYB_HELPER( 0x0100, "(MF2)Cursor Left", KEYCODE_LEFT ) /* Left 69 e9 */
|
||||
// AT_KEYB_HELPER( 0x0200, "(MF2)Cursor Right", KEYCODE_RIGHT ) /* Right 6a ea */
|
||||
// AT_KEYB_HELPER( 0x0800, "(MF2)Cursor Down", KEYCODE_DOWN ) /* Down 6c ec */
|
||||
// AT_KEYB_HELPER( 0x1000, "(MF2)Page Down", KEYCODE_PGDN ) /* Page Down 6d ed */
|
||||
// AT_KEYB_HELPER( 0x4000, "Del", KEYCODE_A ) /* Delete 6f ef */
|
||||
|
||||
PORT_START("pc_keyboard_7")
|
||||
|
||||
|
@ -637,7 +637,7 @@ static ADDRESS_MAP_START( scrambler_map, AS_PROGRAM, 8, galaxold_state )
|
||||
AM_RANGE(0x6805, 0x6805) AM_DEVWRITE_LEGACY(GAL_AUDIO, galaxian_shoot_enable_w)
|
||||
AM_RANGE(0x6806, 0x6807) AM_DEVWRITE_LEGACY(GAL_AUDIO, galaxian_vol_w)
|
||||
AM_RANGE(0x7000, 0x7000) AM_READ_PORT("IN2") AM_WRITE(galaxold_nmi_enable_w)
|
||||
// AM_RANGE(0x7001, 0x7001)
|
||||
// AM_RANGE(0x7001, 0x7001)
|
||||
AM_RANGE(0x7002, 0x7002) AM_WRITE(galaxold_coin_counter_w)
|
||||
AM_RANGE(0x7003, 0x7003) AM_WRITE(scrambold_background_enable_w)
|
||||
AM_RANGE(0x7004, 0x7004) AM_WRITE(galaxold_stars_enable_w)
|
||||
@ -645,13 +645,13 @@ static ADDRESS_MAP_START( scrambler_map, AS_PROGRAM, 8, galaxold_state )
|
||||
AM_RANGE(0x7007, 0x7007) AM_WRITE(galaxold_flip_screen_y_w)
|
||||
AM_RANGE(0x7800, 0x7800) AM_READ(watchdog_reset_r)
|
||||
AM_RANGE(0x7800, 0x7800) AM_DEVWRITE_LEGACY(GAL_AUDIO, galaxian_pitch_w)
|
||||
// AM_RANGE(0x8102, 0x8102) AM_READ(scramblb_protection_1_r)
|
||||
// AM_RANGE(0x8102, 0x8102) AM_READ(scramblb_protection_1_r)
|
||||
AM_RANGE(0x8202, 0x8202) AM_READ(scrambler_protection_2_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
WRITE8_MEMBER( galaxold_state::guttang_rombank_w )
|
||||
{
|
||||
// printf("rombank %02x\n",data);
|
||||
// printf("rombank %02x\n",data);
|
||||
if (data&1)
|
||||
{
|
||||
UINT8 *rom = memregion("maincpu")->base();
|
||||
@ -2104,7 +2104,7 @@ static INPUT_PORTS_START( guttangt )
|
||||
PORT_DIPNAME( 0x40, 0x40, "IN1:7" )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, "IN1:8" )
|
||||
PORT_DIPNAME( 0x80, 0x80, "IN1:8" )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
@ -2130,7 +2130,7 @@ static INPUT_PORTS_START( guttangt )
|
||||
PORT_DIPNAME( 0x40, 0x40, "IN2:7" )
|
||||
PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_DIPNAME( 0x80, 0x80, "IN2:8" )
|
||||
PORT_DIPNAME( 0x80, 0x80, "IN2:8" )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
INPUT_PORTS_END
|
||||
@ -2368,7 +2368,7 @@ static MACHINE_CONFIG_DERIVED( guttang, galaxian )
|
||||
/* video hardware */
|
||||
MCFG_PALETTE_LENGTH(32+2+64+1) /* 32 for the characters, 2 for the bullets, 64 for the stars, 1 for background */
|
||||
|
||||
// MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,scrambold)
|
||||
// MCFG_PALETTE_INIT_OVERRIDE(galaxold_state,scrambold)
|
||||
MCFG_VIDEO_START_OVERRIDE(galaxold_state,mooncrst)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -3282,7 +3282,7 @@ ROM_START( guttangt )
|
||||
ROM_REGION( 0x2000, "gfx1", 0 )
|
||||
ROM_LOAD( "gg9-2732.rom", 0x0000, 0x1000, CRC(be6bf522) SHA1(23a09409b7de4bfdb970e4ff23d89a2439a0aee5) )
|
||||
ROM_LOAD( "gg10-2732.rom", 0x1000, 0x1000, CRC(b04c34c5) SHA1(a37db70ce67d64daa5f0c41cce1136d1c9d8c175) )
|
||||
|
||||
|
||||
ROM_REGION( 0x0020, "proms", 0 ) // no PROM was present..
|
||||
ROM_LOAD( "mmi6331.6l", 0x0000, 0x0020, BAD_DUMP CRC(6a0c7d87) SHA1(140335d85c67c75b65689d4e76d29863c209cf32) )
|
||||
ROM_END
|
||||
|
@ -46,7 +46,7 @@ INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( galaxianbl )
|
||||
PORT_INCLUDE(galaxian)
|
||||
|
||||
|
||||
PORT_MODIFY("IN2")
|
||||
PORT_DIPNAME( 0x03, 0x00, DEF_STR( Bonus_Life ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR(None) )
|
||||
@ -5075,7 +5075,7 @@ ROM_START( mooncrsl ) // similar to above
|
||||
ROM_LOAD( "07.bin", 0x3000, 0x0800, CRC(8e9ac0fc) SHA1(ddc11ad20ecbd954098becf7d7a1bbe6cddeda1b) )
|
||||
ROM_LOAD( "08.bin", 0x3800, 0x0800, CRC(020a8e2f) SHA1(b64438cb043252565d8a4f3f58f4a4f78a276ba2) )
|
||||
|
||||
ROM_REGION( 0x2000, "gfx1", 0 ) // not present in this set
|
||||
ROM_REGION( 0x2000, "gfx1", 0 ) // not present in this set
|
||||
ROM_LOAD( "mcs_b", 0x0000, 0x0800, CRC(fb0f1f81) SHA1(38a6679a8b69bc1870a0e67e692131c42f9535c8) )
|
||||
ROM_LOAD( "mcs_d", 0x0800, 0x0800, CRC(13932a15) SHA1(b8885c555c6ad7021be55c6925a0a0872c1b6abd) )
|
||||
ROM_LOAD( "mcs_a", 0x1000, 0x0800, CRC(631ebb5a) SHA1(5bc9493afa76c55858b8c8849524cbc77dc838fc) )
|
||||
|
@ -272,10 +272,10 @@ INTERRUPT_GEN_MEMBER(gaplus_state::gapluso_vblank_main_irq)
|
||||
{
|
||||
if(m_main_irq_mask)
|
||||
m_maincpu->set_input_line(0, ASSERT_LINE);
|
||||
|
||||
|
||||
if (!m_namco58xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */
|
||||
timer_set(attotime::from_usec(50), TIMER_NAMCOIO_RUN, 1);
|
||||
|
||||
|
||||
if (!m_namco56xx->read_reset_line()) /* give the cpu a tiny bit of time to write the command before processing it */
|
||||
timer_set(attotime::from_usec(50), TIMER_NAMCOIO_RUN, 0);
|
||||
}
|
||||
@ -960,15 +960,15 @@ ROM_END
|
||||
DRIVER_INIT_MEMBER(gaplus_state,gaplus)
|
||||
{
|
||||
UINT8 *rom;
|
||||
|
||||
|
||||
rom = memregion("gfx1")->base();
|
||||
for (int i = 0;i < 0x2000;i++)
|
||||
rom[i + 0x2000] = rom[i] >> 4;
|
||||
|
||||
|
||||
rom = memregion("gfx2")->base() + 0x6000;
|
||||
for (int i = 0;i < 0x2000;i++)
|
||||
rom[i + 0x2000] = rom[i] << 4;
|
||||
|
||||
|
||||
m_type = GAME_GAPLUS;
|
||||
}
|
||||
|
||||
|
@ -182,7 +182,7 @@ GAME(198?, j_nuddup ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "J
|
||||
|
||||
GAME(198?, j_nuddup2,j_nuddup ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM","Nudge Double Up (JPM SRU, set 2)", GAME_IS_SKELETON_MECHANICAL )
|
||||
|
||||
GAME(198?, j_unk ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM?","Unknown SRU Game (JPM?)", GAME_IS_SKELETON_MECHANICAL )
|
||||
GAME(198?, j_unk ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM?","Unknown SRU Game (JPM?)", GAME_IS_SKELETON_MECHANICAL )
|
||||
|
||||
// this one is different again?
|
||||
GAME(198?, j_plus2 ,0 ,jpmsru_4,jpmsru, jpmsru_state,jpmsru,ROT0, "JPM","Plus 2 (JPM)", GAME_IS_SKELETON_MECHANICAL )
|
||||
|
@ -578,7 +578,7 @@ TODO:
|
||||
void mappy_state::common_latch_w(UINT32 offset)
|
||||
{
|
||||
int bit = offset & 1;
|
||||
|
||||
|
||||
switch (offset & 0x0e)
|
||||
{
|
||||
case 0x00: /* INT ON 2 */
|
||||
@ -586,27 +586,27 @@ void mappy_state::common_latch_w(UINT32 offset)
|
||||
if (!bit)
|
||||
m_subcpu->set_input_line(0, CLEAR_LINE);
|
||||
break;
|
||||
|
||||
|
||||
case 0x02: /* INT ON */
|
||||
m_main_irq_mask = bit;
|
||||
if (!bit)
|
||||
m_maincpu->set_input_line(0, CLEAR_LINE);
|
||||
break;
|
||||
|
||||
|
||||
case 0x04: /* n.c. */
|
||||
break;
|
||||
|
||||
|
||||
case 0x06: /* SOUND ON */
|
||||
mappy_sound_enable(machine().device("namco"), bit);
|
||||
break;
|
||||
|
||||
|
||||
case 0x0a: /* SUB RESET */
|
||||
m_subcpu->set_input_line(INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
|
||||
break;
|
||||
|
||||
|
||||
case 0x0c: /* n.c. */
|
||||
break;
|
||||
|
||||
|
||||
case 0x0e: /* n.c. */
|
||||
break;
|
||||
}
|
||||
@ -638,7 +638,7 @@ WRITE8_MEMBER(mappy_state::superpac_latch_w)
|
||||
|
||||
default:
|
||||
common_latch_w(offset);
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -662,10 +662,10 @@ WRITE8_MEMBER(mappy_state::phozon_latch_w)
|
||||
case 0x0c:
|
||||
m_subcpu2->set_input_line(INPUT_LINE_RESET, bit ? CLEAR_LINE : ASSERT_LINE);
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
common_latch_w(offset);
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -697,10 +697,10 @@ WRITE8_MEMBER(mappy_state::mappy_latch_w)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
common_latch_w(offset);
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1714,7 +1714,7 @@ static MACHINE_CONFIG_FRAGMENT( superpac_common )
|
||||
|
||||
MCFG_WATCHDOG_VBLANK_INIT(8)
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
|
||||
/* synchronization of the CPUs */
|
||||
/* synchronization of the CPUs */
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(mappy_state,mappy)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(mappy_state,superpac)
|
||||
@ -1792,7 +1792,7 @@ static MACHINE_CONFIG_START( phozon, mappy_state )
|
||||
|
||||
MCFG_WATCHDOG_VBLANK_INIT(8)
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
|
||||
/* synchronization of the CPUs */
|
||||
/* synchronization of the CPUs */
|
||||
MCFG_MACHINE_START_OVERRIDE(mappy_state,mappy)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(mappy_state,phozon)
|
||||
|
||||
@ -1832,7 +1832,7 @@ static MACHINE_CONFIG_FRAGMENT( mappy_common )
|
||||
|
||||
MCFG_WATCHDOG_VBLANK_INIT(8)
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
|
||||
/* synchronization of the CPUs */
|
||||
/* synchronization of the CPUs */
|
||||
MCFG_MACHINE_START_OVERRIDE(mappy_state,mappy)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(mappy_state,mappy)
|
||||
|
||||
|
@ -6604,7 +6604,7 @@ ROM_END
|
||||
|
||||
#define EP_TREAS_SOUND \
|
||||
ROM_REGION( 0x100000, "ymz", 0 ) \
|
||||
ROM_LOAD( "treas1_6.s0", 0x000000, 0x080000, CRC(df792dc0) SHA1(96647eb579a3a60f1a4a2bea53d7a13030838437) )
|
||||
ROM_LOAD( "treas1_6.s0", 0x000000, 0x080000, CRC(df792dc0) SHA1(96647eb579a3a60f1a4a2bea53d7a13030838437) )
|
||||
|
||||
ROM_START( ep_treas )
|
||||
ROM_REGION( 0x080000, "maincpu", 0 )
|
||||
|
@ -20,7 +20,7 @@ ZPU-2000 - main cpu board
|
||||
- four 'test button' style switches
|
||||
- one 4Mhz xtal @A1
|
||||
- this same board is shared with cliff hanger (clifhgr.c)
|
||||
|
||||
|
||||
CFB-1000 - video/subcpu board
|
||||
- this board has a sub-cpu on it and four roms (six sockets for roms, two empty)
|
||||
- the roms go in sockets "ROM0"@G8, "ROM2"@K8, "ROM3"@K10, "ROM4"@K11
|
||||
|
@ -502,7 +502,7 @@ ROM_END
|
||||
|
||||
Sound: 1x U6295 (U53)
|
||||
|
||||
RAM: 2x 6116.
|
||||
RAM: 2x 6116.
|
||||
2x 6264 (prg RAM)
|
||||
2x 62256 (near battery)
|
||||
|
||||
@ -518,27 +518,27 @@ ROM_END
|
||||
|
||||
*/
|
||||
ROM_START( top21 )
|
||||
ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code
|
||||
ROM_REGION( 0x100000, "maincpu", 0 ) // 68000 code
|
||||
ROM_LOAD16_BYTE( "odd_1-2.u75", 0x000001, 0x80000, CRC(ce4f2a74) SHA1(f9a9043da924ddba16f49d6856dbcfd8f066c824) )
|
||||
ROM_LOAD16_BYTE( "even_1-2.u76", 0x000000, 0x80000, CRC(8d645456) SHA1(06c59816f259168f15503b276fc28c947e17cc60) )
|
||||
ROM_COPY( "maincpu", 0x080000, 0x00000, 0x80000 ) // copying the second halves to the right offset
|
||||
ROM_COPY( "maincpu", 0x080000, 0x00000, 0x80000 ) // copying the second halves to the right offset
|
||||
|
||||
ROM_REGION( 0xa0000, "gfx1", 0 )
|
||||
ROM_LOAD( "36.u36", 0x000000, 0x20000, CRC(071883f7) SHA1(16b5c251975394bb94c0d32277912ea99280c21c) )
|
||||
ROM_LOAD( "35.u35", 0x020000, 0x20000, CRC(cdc8cc44) SHA1(ce703e7f050465b1bc07800eb84eb7f127ebbddb) ) // double size. 2nd half empty
|
||||
ROM_LOAD( "35.u35", 0x020000, 0x20000, CRC(cdc8cc44) SHA1(ce703e7f050465b1bc07800eb84eb7f127ebbddb) ) // double size. 2nd half empty
|
||||
ROM_IGNORE( 0x20000)
|
||||
ROM_LOAD( "34.u34", 0x040000, 0x20000, CRC(bdbe7360) SHA1(3038f66d57a43afea9d6c05908bfb50167a881c2) )
|
||||
ROM_LOAD( "33.u33", 0x060000, 0x20000, CRC(670584b0) SHA1(23772404b5e5066828c59d9baa03b732a80db676) )
|
||||
ROM_LOAD( "32.u32", 0x080000, 0x20000, CRC(c5bc3950) SHA1(aebaae91ade0c221ba14186fde78206996cdec30) )
|
||||
|
||||
ROM_REGION( 0x80000, "oki", 0 ) // 6295 samples (first half empty)
|
||||
ROM_REGION( 0x80000, "oki", 0 ) // 6295 samples (first half empty)
|
||||
ROM_LOAD( "audio.u64", 0x00000, 0x80000, CRC(4f70a9bc) SHA1(83f0664eadf923ed45e3e18bfcefafb85163c4a0) )
|
||||
ROM_COPY( "oki", 0x40000, 0x00000, 0x40000 ) // copying the second half to the right offset
|
||||
ROM_COPY( "oki", 0x40000, 0x00000, 0x40000 ) // copying the second half to the right offset
|
||||
|
||||
ROM_REGION( 0x4000, "mcu", 0 ) // MCU code
|
||||
ROM_REGION( 0x4000, "mcu", 0 ) // MCU code
|
||||
ROM_LOAD( "pic16c65b_top21.u60", 0x0000, 0x4000, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x10000, "nvram", 0 ) // default NVRAM (2x 62256)
|
||||
ROM_REGION( 0x10000, "nvram", 0 ) // default NVRAM (2x 62256)
|
||||
ROM_LOAD( "top21_nvram.bin", 0x00000, 0x10000, CRC(638726ce) SHA1(c55c77df5fbddfb19acf50f1b4467c63c818d5e7) )
|
||||
ROM_END
|
||||
|
||||
|
@ -1885,27 +1885,27 @@ ROM_END
|
||||
/*
|
||||
Coinworld data
|
||||
|
||||
Error Number Cause of alarm Comments
|
||||
11 1 GBP coin in These alarms go off when a coin is jammed in the mech, or if the Mars anti-strimming alarm is activated.
|
||||
Error Number Cause of alarm Comments
|
||||
11 1 GBP coin in These alarms go off when a coin is jammed in the mech, or if the Mars anti-strimming alarm is activated.
|
||||
12 50p coin in The machine will lock up for a short amount of time, whilst sounding as alarm tone.
|
||||
13 20p coin in Error 15 can be caused by having DIL switch 6 in the wrong position for your coin mech loom.
|
||||
14 10p coin in
|
||||
15 5p coin in
|
||||
16 2 GBP coin in
|
||||
16 2 GBP coin in
|
||||
21 Reel 1 alarm The faulty reel will flash. Nothing more will happen until the machine is reset
|
||||
22 Reel 2 alarm
|
||||
23 Reel 3 alarm
|
||||
42 Ram Cleared The RAM is cleared when the machine is turned on for the first time, or when the price of play is changed. The alarm
|
||||
23 Reel 3 alarm
|
||||
42 Ram Cleared The RAM is cleared when the machine is turned on for the first time, or when the price of play is changed. The alarm
|
||||
clears after a short time
|
||||
51 Checksum error The machine will lock up completely if the eprom has failed, or if the security chip is missing or has failed
|
||||
51 Checksum error The machine will lock up completely if the eprom has failed, or if the security chip is missing or has failed
|
||||
54 Security chip fail
|
||||
61 Cash in meter failure The machine will not run if the cash in, or cash out meters are not connected properly.
|
||||
62 Cash out meter failure
|
||||
71 Datapack error If the machine is in protocol mode, and a datapack is not connected, then the machine alarms. It will reset after a
|
||||
62 Cash out meter failure
|
||||
71 Datapack error If the machine is in protocol mode, and a datapack is not connected, then the machine alarms. It will reset after a
|
||||
time, and have another go at transmitting the data
|
||||
72 Sound card fail If the sound card is missing, or the wrong sound eprom is fitted, the machine alarms on power on. The machine will then
|
||||
72 Sound card fail If the sound card is missing, or the wrong sound eprom is fitted, the machine alarms on power on. The machine will then
|
||||
operate in silence.
|
||||
99 Payout tubes empty If one of the tubes runs dry, the machine will attempt to compensate by paying from the other tube. If this runs dry
|
||||
99 Payout tubes empty If one of the tubes runs dry, the machine will attempt to compensate by paying from the other tube. If this runs dry
|
||||
as well, the machine will lock up, requiring a refill before games can continue. The alarm tone is a softer, more friendly one.
|
||||
*/
|
||||
|
||||
|
@ -1801,7 +1801,7 @@ INPUT_PORTS_START( mpu4_cw )
|
||||
PORT_DIPNAME( 0x0C, 0x00, "Jackpot" ) PORT_DIPLOCATION("DIL1:03,04")
|
||||
PORT_DIPSETTING( 0x04, "15 GBP" )
|
||||
PORT_DIPSETTING( 0x00, "10 GBP" )
|
||||
PORT_DIPSETTING( 0x08, "5 GBP" )
|
||||
PORT_DIPSETTING( 0x08, "5 GBP" )
|
||||
PORT_DIPNAME( 0x10, 0x00, "Hold Mode" ) PORT_DIPLOCATION("DIL1:05")
|
||||
PORT_DIPSETTING( 0x00, "Show Hints" )
|
||||
PORT_DIPSETTING( 0x10, "Auto Hold" )
|
||||
@ -1813,18 +1813,18 @@ INPUT_PORTS_START( mpu4_cw )
|
||||
PORT_DIPSETTING( 0x40, "Fat motor" )
|
||||
PORT_DIPNAME( 0x80, 0x00, "Payout Tube" ) PORT_DIPLOCATION("DIL1:05")
|
||||
PORT_DIPSETTING( 0x00, "20p" )
|
||||
PORT_DIPSETTING( 0x80, "10p" )
|
||||
PORT_DIPSETTING( 0x80, "10p" )
|
||||
|
||||
PORT_MODIFY("DIL2")
|
||||
PORT_DIPNAME( 0x07, 0x00, "Stake Setting" )
|
||||
PORT_DIPSETTING( 0x00, "Not fitted / 5p" )
|
||||
PORT_DIPSETTING( 0x01, "10p" )
|
||||
PORT_DIPSETTING( 0x02, "20p" )
|
||||
PORT_DIPSETTING( 0x03, "25p" )
|
||||
PORT_DIPSETTING( 0x03, "25p" )
|
||||
PORT_DIPSETTING( 0x04, "30p" )
|
||||
PORT_BIT(0xE0, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
INPUT_PORTS_START( mpu4jackpot8tkn )
|
||||
PORT_INCLUDE( mpu4 )
|
||||
|
||||
|
@ -5,20 +5,20 @@
|
||||
what's the difference between the platforms, sound hardware?
|
||||
|
||||
Some early Proconn hardware was used for Maygay stuff, so this may be a bit of a mix.
|
||||
|
||||
|
||||
Error codes:
|
||||
|
||||
ERROR 1 EPROM FAILED
|
||||
ERROR 3 RAM CORRUPTION DETECTED (common on PC90 boards)
|
||||
ERROR 10 RAM FAILURE
|
||||
ERROR 20 METERS DISCONNECTED
|
||||
ERROR 21 CASH IN METER FAIL
|
||||
ERROR 22 CASH OUT METER FAIL
|
||||
ERROR 25 REFILL METER FAIL
|
||||
ERROR 30 REEL 1 FAIL
|
||||
ERROR 31 REEL 2 FAIL
|
||||
ERROR 32 REEL 3 FAIL
|
||||
ERROR 99 SECURITY CARD MISSING OR FAILED, OR INCORRECT FOR PROGRAM
|
||||
|
||||
ERROR 1 EPROM FAILED
|
||||
ERROR 3 RAM CORRUPTION DETECTED (common on PC90 boards)
|
||||
ERROR 10 RAM FAILURE
|
||||
ERROR 20 METERS DISCONNECTED
|
||||
ERROR 21 CASH IN METER FAIL
|
||||
ERROR 22 CASH OUT METER FAIL
|
||||
ERROR 25 REFILL METER FAIL
|
||||
ERROR 30 REEL 1 FAIL
|
||||
ERROR 31 REEL 2 FAIL
|
||||
ERROR 32 REEL 3 FAIL
|
||||
ERROR 99 SECURITY CARD MISSING OR FAILED, OR INCORRECT FOR PROGRAM
|
||||
*/
|
||||
|
||||
|
||||
|
@ -31,7 +31,7 @@
|
||||
The kram3 set used to be playable with the implementation in the MAME M6809
|
||||
CPU core, encrypting only the first byte in 10 xx and 11 xx opcodes.
|
||||
This should get a cleaner implementation. Until then, kram3 is broken on purpose.
|
||||
|
||||
|
||||
According to the QIX and Kram schematics, these games should be using 68A90Es.
|
||||
The 6809E has a 'Last Instruction Cycle' pin that is likely tied in with the encryption:
|
||||
"LIC is HIGH during the last cycle of every instruction and its transition from
|
||||
|
@ -92,7 +92,7 @@ ADDRESS_MAP_END
|
||||
static ADDRESS_MAP_START( quake_io, AS_IO, 32, quakeat_state )
|
||||
AM_IMPORT_FROM(pcat32_io_common)
|
||||
AM_RANGE(0x00e8, 0x00eb) AM_NOP
|
||||
// AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0_pc, write_cs0_pc, 0xffffffff)
|
||||
// AM_RANGE(0x01f0, 0x01f7) AM_DEVREADWRITE16("ide", ide_controller_device, read_cs0_pc, write_cs0_pc, 0xffffffff)
|
||||
AM_RANGE(0x0300, 0x03af) AM_NOP
|
||||
AM_RANGE(0x03b0, 0x03df) AM_NOP
|
||||
// AM_RANGE(0x0278, 0x027b) AM_WRITE(pnp_config_w)
|
||||
|
@ -423,24 +423,24 @@ WRITE32_MEMBER(savquest_state::parallel_port_w)
|
||||
*/
|
||||
|
||||
if ((data8 == 0x94)
|
||||
|| (data8 == 0x9e)
|
||||
|| (data8 == 0xa4)
|
||||
|| (data8 == 0xb2)
|
||||
|| (data8 == 0xbe)
|
||||
|| (data8 == 0xd0)
|
||||
)
|
||||
|| (data8 == 0x9e)
|
||||
|| (data8 == 0xa4)
|
||||
|| (data8 == 0xb2)
|
||||
|| (data8 == 0xbe)
|
||||
|| (data8 == 0xd0)
|
||||
)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ((data8 == 0x8a)
|
||||
|| (data8 == 0x8e)
|
||||
|| (data8 == 0xca)
|
||||
|| (data8 == 0xd2)
|
||||
|| (data8 == 0xe2)
|
||||
|| (data8 == 0xf0)
|
||||
|| (data8 == 0xfc)
|
||||
)
|
||||
|| (data8 == 0x8e)
|
||||
|| (data8 == 0xca)
|
||||
|| (data8 == 0xd2)
|
||||
|| (data8 == 0xe2)
|
||||
|| (data8 == 0xf0)
|
||||
|| (data8 == 0xfc)
|
||||
)
|
||||
{
|
||||
/* someone with access to the actual dongle could dump the true values
|
||||
I've never seen it so I just determined the relevant bits instead
|
||||
@ -509,8 +509,8 @@ WRITE32_MEMBER(savquest_state::parallel_port_w)
|
||||
}
|
||||
|
||||
if ((m_haspstate == HASPSTATE_PASSBEG)
|
||||
&& (data8 & 1)
|
||||
)
|
||||
&& (data8 & 1)
|
||||
)
|
||||
{
|
||||
m_hasp_tmppass[m_hasp_passind] = data8;
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
||||
|
||||
This code is also in the main PRG ROM at offset 0x1ffffc, even on single
|
||||
board games. Known regions are:
|
||||
|
||||
|
||||
0x01 Japan
|
||||
0x10 US
|
||||
0x20 Taiwan
|
||||
@ -951,8 +951,8 @@ WRITE32_MEMBER(seibuspi_state::ejsakura_input_select_w)
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( base_map, AS_PROGRAM, 32, seibuspi_state )
|
||||
// AM_RANGE(0x00000104, 0x00000107) AM_WRITENOP // ?
|
||||
// AM_RANGE(0x00000108, 0x0000010b) AM_WRITENOP // ?
|
||||
// AM_RANGE(0x00000104, 0x00000107) AM_WRITENOP // ?
|
||||
// AM_RANGE(0x00000108, 0x0000010b) AM_WRITENOP // ?
|
||||
AM_RANGE(0x00000000, 0x000003ff) AM_RAM
|
||||
AM_RANGE(0x00000414, 0x00000417) AM_WRITENOP // bg gfx decryption key, see machine/seibuspi.c
|
||||
AM_RANGE(0x00000418, 0x0000041b) AM_READWRITE(spi_layer_bank_r, spi_layer_bank_w)
|
||||
@ -1059,7 +1059,7 @@ WRITE8_MEMBER(seibuspi_state::z80_bank_w)
|
||||
m_z80_lastbank = bank;
|
||||
membank("bank1")->set_entry(bank);
|
||||
}
|
||||
|
||||
|
||||
// d3: watchdog?
|
||||
}
|
||||
|
||||
@ -1067,7 +1067,7 @@ WRITE8_MEMBER(seibuspi_state::spi_coin_w)
|
||||
{
|
||||
coin_counter_w(machine(), 0, data & 1);
|
||||
coin_counter_w(machine(), 1, data & 2);
|
||||
|
||||
|
||||
// coin latch used by single boards
|
||||
if (data)
|
||||
m_sb_coin_latch = 0xa0 | data;
|
||||
@ -1903,7 +1903,7 @@ static MACHINE_CONFIG_DERIVED( sxx2f, sxx2e )
|
||||
MCFG_DEVICE_REMOVE("ds2404")
|
||||
|
||||
MCFG_EEPROM_ADD("eeprom", eeprom_intf)
|
||||
|
||||
|
||||
// Z80 is Z84C0006PCS instead of Z84C0008PEC
|
||||
// clock is unknown, possibly slower than 7.159MHz
|
||||
MACHINE_CONFIG_END
|
||||
|
@ -80,7 +80,7 @@ WRITE8_MEMBER(speedbal_state::leds_output_block)
|
||||
{
|
||||
if (!m_leds_start)
|
||||
return;
|
||||
|
||||
|
||||
m_leds_start = false;
|
||||
|
||||
// Each hypothetical led block has 3 7seg leds.
|
||||
@ -362,11 +362,10 @@ DRIVER_INIT_MEMBER(speedbal_state,musicbal)
|
||||
|
||||
for (int i=0;i<0x8000;i++)
|
||||
{
|
||||
|
||||
// some bits are ^ 0x05
|
||||
/*if ((i&0x30) == 0x00)
|
||||
{
|
||||
if ((( i & 0x0f ) > 0x08) && (( i & 0x0f ) < 0x0f)) MUSICBALL_XOR05
|
||||
if ((( i & 0x0f ) > 0x08) && (( i & 0x0f ) < 0x0f)) MUSICBALL_XOR05
|
||||
}
|
||||
*/
|
||||
|
||||
|
@ -85,7 +85,7 @@ public:
|
||||
m_tms(*this, "tms"),
|
||||
m_videoram(*this, "videoram"),
|
||||
m_question_offset(*this, "question_offset")
|
||||
{ }
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<tms9927_device> m_tms;
|
||||
|
@ -149,7 +149,7 @@ PALETTE_INIT( stuntair )
|
||||
int b = (data&0xc0)>>6;
|
||||
int g = (data&0x38)>>3;
|
||||
int r = (data&0x07)>>0;
|
||||
|
||||
|
||||
palette_set_color(machine,i,MAKE_RGB(r<<5,g<<5,b<<6));
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/***************************************************************************
|
||||
|
||||
Taito F3 Package System (aka F3 Cybercore System)
|
||||
|
||||
|
||||
Emulation by Bryan McPhail, mish@tendril.co.uk/mish@mame.net
|
||||
Thanks to Ian Schmidt and Stiletto for sound information!
|
||||
Major thanks to Aaron Giles for sound info, figuring out the 68K/ES5505
|
||||
|
@ -288,11 +288,11 @@ public:
|
||||
tempest_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_mathbox(*this, "mathbox") { }
|
||||
m_mathbox(*this, "mathbox") { }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<mathbox_device> m_mathbox;
|
||||
|
||||
|
||||
UINT8 m_player_select;
|
||||
DECLARE_WRITE8_MEMBER(wdclr_w);
|
||||
DECLARE_WRITE8_MEMBER(tempest_led_w);
|
||||
|
@ -2132,7 +2132,7 @@ static ADDRESS_MAP_START(coh1001l_map, AS_PROGRAM, 32, zn_state)
|
||||
AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("bankedroms")
|
||||
AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITE16(coh1001l_latch_w, 0x0000ffff)
|
||||
AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITE8(coh1001l_bank_w, 0x00ff0000)
|
||||
|
||||
|
||||
AM_IMPORT_FROM(zn_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -2368,7 +2368,7 @@ WRITE8_MEMBER(zn_state::coh1002m_bank_w)
|
||||
static ADDRESS_MAP_START(coh1002m_map, AS_PROGRAM, 32, zn_state)
|
||||
AM_RANGE(0x1f000000, 0x1f7fffff) AM_ROMBANK("bankedroms")
|
||||
AM_RANGE(0x1fb00004, 0x1fb00007) AM_WRITE8(coh1002m_bank_w, 0x00ff0000)
|
||||
|
||||
|
||||
AM_IMPORT_FROM(zn_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -2394,7 +2394,7 @@ static ADDRESS_MAP_START(coh1002msnd_map, AS_PROGRAM, 32, zn_state)
|
||||
AM_RANGE(0x1fb00000, 0x1fb00003) AM_DEVREAD8("cbaj_fifo2", fifo7200_device, data_byte_r, 0x000000ff)
|
||||
AM_RANGE(0x1fb00000, 0x1fb00003) AM_DEVWRITE8("cbaj_fifo1", fifo7200_device, data_byte_w, 0x000000ff)
|
||||
AM_RANGE(0x1fb00000, 0x1fb00003) AM_READ8(cbaj_sound_main_status_r, 0xff000000)
|
||||
|
||||
|
||||
AM_IMPORT_FROM(coh1002m_map)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -2426,7 +2426,7 @@ static MACHINE_CONFIG_DERIVED( coh1002msnd, coh1002m )
|
||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_32MHz/8)
|
||||
MCFG_CPU_PROGRAM_MAP(cbaj_z80_map)
|
||||
MCFG_CPU_IO_MAP(cbaj_z80_port_map)
|
||||
|
||||
|
||||
MCFG_FIFO7200_ADD("cbaj_fifo1", 0x400) // LH540202
|
||||
MCFG_FIFO7200_ADD("cbaj_fifo2", 0x400) // "
|
||||
|
||||
|
@ -21,7 +21,7 @@ public:
|
||||
m_discrete(*this, "discrete"),
|
||||
m_redbaronsound(*this, "custom")
|
||||
{ }
|
||||
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<mathbox_device> m_mathbox;
|
||||
optional_device<discrete_device> m_discrete;
|
||||
@ -45,7 +45,3 @@ public:
|
||||
|
||||
/*----------- defined in audio/bzone.c -----------*/
|
||||
MACHINE_CONFIG_EXTERN( bzone_audio );
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -104,11 +104,11 @@ public:
|
||||
device_t *m_dev_vp2; /* virtual port 2 */
|
||||
device_t *m_dev_6h;
|
||||
optional_device<discrete_device> m_discrete;
|
||||
|
||||
|
||||
/* memory pointers */
|
||||
required_shared_ptr<UINT8> m_video_ram;
|
||||
required_shared_ptr<UINT8> m_sprite_ram;
|
||||
|
||||
|
||||
/* machine states */
|
||||
UINT8 m_hardware_type;
|
||||
UINT8 m_nmi_mask;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*************************************************************************
|
||||
|
||||
Exidy 440 hardware
|
||||
Exidy 440 hardware
|
||||
|
||||
*************************************************************************/
|
||||
|
||||
|
@ -78,7 +78,7 @@ public:
|
||||
{
|
||||
TIMER_CLOCK_EFFECT
|
||||
};
|
||||
|
||||
|
||||
DECLARE_WRITE8_MEMBER( sound1_w );
|
||||
DECLARE_WRITE8_MEMBER( sound2_w );
|
||||
|
||||
@ -87,7 +87,7 @@ protected:
|
||||
virtual void device_config_complete();
|
||||
virtual void device_start();
|
||||
virtual void device_reset();
|
||||
|
||||
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
|
||||
// sound stream update overrides
|
||||
@ -96,7 +96,7 @@ protected:
|
||||
private:
|
||||
void make_mixer_table(int voices, int gain);
|
||||
void show_soundregs();
|
||||
|
||||
|
||||
// internal state
|
||||
emu_timer *m_effect_timer;
|
||||
|
||||
|
@ -129,7 +129,7 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(rockclim_scroll_w);
|
||||
DECLARE_WRITE8_MEMBER(guttang_rombank_w);
|
||||
|
||||
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER(rockclim_videoram_r);
|
||||
DECLARE_WRITE8_MEMBER(dambustr_bg_split_line_w);
|
||||
|
@ -16,14 +16,14 @@ public:
|
||||
{
|
||||
TIMER_NAMCOIO_RUN
|
||||
};
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
GAME_GAPLUS = 0,
|
||||
GAME_GAPLUSD,
|
||||
GAME_GALAGA3
|
||||
};
|
||||
|
||||
|
||||
gaplus_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
@ -33,7 +33,7 @@ public:
|
||||
m_customio_3(*this,"customio_3"),
|
||||
m_videoram(*this,"videoram"),
|
||||
m_spriteram(*this,"spriteram") { }
|
||||
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_subcpu;
|
||||
required_device<cpu_device> m_subcpu2;
|
||||
@ -45,7 +45,7 @@ public:
|
||||
namco56xx_device *m_namco56xx;
|
||||
|
||||
int m_type;
|
||||
|
||||
|
||||
tilemap_t *m_bg_tilemap;
|
||||
UINT8 m_starfield_control[4];
|
||||
int m_total_stars;
|
||||
@ -86,7 +86,7 @@ public:
|
||||
void starfield_init();
|
||||
void starfield_render(bitmap_ind16 &bitmap);
|
||||
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect );
|
||||
|
||||
|
||||
protected:
|
||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
|
||||
};
|
||||
|
@ -26,7 +26,7 @@ public:
|
||||
GAME_DIGDUG2,
|
||||
GAME_MOTOS
|
||||
};
|
||||
|
||||
|
||||
mappy_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_videoram(*this, "videoram"),
|
||||
@ -38,7 +38,7 @@ public:
|
||||
|
||||
required_shared_ptr<UINT8> m_videoram;
|
||||
required_shared_ptr<UINT8> m_spriteram;
|
||||
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_subcpu;
|
||||
optional_device<cpu_device> m_subcpu2;
|
||||
@ -49,7 +49,7 @@ public:
|
||||
namco58xx_device *m_namco58xx_1;
|
||||
namco58xx_device *m_namco58xx_2;
|
||||
namco59xx_device *m_namco59xx;
|
||||
|
||||
|
||||
// per-game variable to distinguish between the various IO chip config
|
||||
int m_type;
|
||||
|
||||
|
@ -192,5 +192,5 @@ public:
|
||||
void decode_tdragonb();
|
||||
void decode_ssmissin();
|
||||
DECLARE_WRITE_LINE_MEMBER(ym2203_irqhandler);
|
||||
|
||||
|
||||
};
|
||||
|
@ -400,9 +400,9 @@ public:
|
||||
|
||||
const UINT8 (*m_drgw2_source_data)[0xec];
|
||||
|
||||
UINT16 m_drgw2_prot_hold;
|
||||
UINT16 m_drgw2_prot_hilo;
|
||||
UINT16 m_drgw2_prot_hilo_select;
|
||||
UINT16 m_drgw2_prot_hold;
|
||||
UINT16 m_drgw2_prot_hilo;
|
||||
UINT16 m_drgw2_prot_hilo_select;
|
||||
int m_drgw2_cmd;
|
||||
int m_drgw2_ptr;
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user