summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author RobertoFresca <robbie@mamedev.org>2015-10-27 23:30:18 -0300
committer RobertoFresca <robbie@mamedev.org>2015-10-27 23:30:18 -0300
commit2a3c1175704d54e95994737d60a3d7d37010500e (patch)
tree09b2c51fa9b732b4cc2bc4c6630ae8107adb945e
parent898b032f994261a0cbf2e63ab2cee959036afec6 (diff)
parent9ae5afd70742fec2ef8cd2522b1d98edf96090af (diff)
Merge branch 'master' of https://github.com/mamedev/mame
-rw-r--r--hash/spectrum_cass.xml48
-rw-r--r--src/devices/cpu/avr8/avr8.c1
-rw-r--r--src/devices/cpu/dsp56k/pmove.h2
-rw-r--r--src/devices/cpu/e132xs/e132xs.c1
-rw-r--r--src/devices/cpu/esrip/esrip.c1
-rw-r--r--src/devices/cpu/m6805/m6805.c1
-rw-r--r--src/devices/cpu/ssem/ssem.c1
-rw-r--r--src/devices/cpu/upd7725/upd7725.c1
-rw-r--r--src/devices/machine/atahle.c8
-rw-r--r--src/devices/machine/r10696.c2
-rw-r--r--src/emu/diimage.c1
-rw-r--r--src/emu/emuopts.c2
-rw-r--r--src/emu/info.c12
-rw-r--r--src/emu/machine.c4
-rw-r--r--src/emu/memory.c2
-rw-r--r--src/emu/romload.c4
-rw-r--r--src/emu/softlist.c4
-rw-r--r--src/emu/ui/filemngr.c1
-rw-r--r--src/emu/ui/inputmap.c2
-rw-r--r--src/emu/validity.c1
-rw-r--r--src/emu/video.c2
-rw-r--r--src/lib/formats/tzx_cas.c48
-rw-r--r--src/mame/arcade.lst9
-rw-r--r--src/mame/drivers/beathead.c3
-rw-r--r--src/mame/drivers/cardline.c3
-rw-r--r--src/mame/drivers/cave.c42
-rw-r--r--src/mame/drivers/cubeqst.c4
-rw-r--r--src/mame/drivers/firefox.c3
-rw-r--r--src/mame/drivers/galaxian.c3
-rw-r--r--src/mame/drivers/merit.c6
-rw-r--r--src/mame/drivers/osborne1.c30
-rw-r--r--src/mame/drivers/pgm.c239
-rw-r--r--src/mame/drivers/segac2.c10
-rw-r--r--src/mame/drivers/segas24.c7
-rw-r--r--src/mame/drivers/slotcarn.c6
-rw-r--r--src/mame/drivers/vicdual.c6
-rw-r--r--src/mame/includes/osborne1.h7
-rw-r--r--src/mame/machine/315-5881_crypt.c2
-rw-r--r--src/mame/machine/naomim1.c2
-rw-r--r--src/mame/machine/osborne1.c89
-rw-r--r--src/mame/video/btoads.c6
-rw-r--r--src/mame/video/cloak.c4
-rw-r--r--src/mame/video/dkong.c3
-rw-r--r--src/mame/video/galaxian.c41
-rw-r--r--src/mame/video/gyruss.c3
-rw-r--r--src/mame/video/itech8.c3
-rw-r--r--src/mame/video/meadows.c3
-rw-r--r--src/mame/video/qix.c20
-rw-r--r--src/mame/video/spacefb.c6
-rw-r--r--src/mame/video/system1.c23
-rw-r--r--src/mame/video/tp84.c3
51 files changed, 557 insertions, 178 deletions
diff --git a/hash/spectrum_cass.xml b/hash/spectrum_cass.xml
index ff39aebd57e..f29457fc8c8 100644
--- a/hash/spectrum_cass.xml
+++ b/hash/spectrum_cass.xml
@@ -797,9 +797,53 @@
</dataarea>
</part>
</software>
-
+
<!-- V1.0 doesn't exist in Spanish? or Italian (translations were made after the 1.1 release) -->
-
+
+ <!-- what are these? were there unannounced updates at some point? check data, remove if just duplicate -->
+ <software name="castlvsia" cloneof="castlvsi">
+ <description>Castlevania - Spectral Interlude (alt, English, 128K)</description>
+ <year>2015</year>
+ <publisher>Rewind</publisher>
+ <part name="cass" interface="spectrum_cass">
+ <dataarea name="cass" size="126416">
+ <rom name="castlevania_si_en.tap" size="126416" crc="c7fb2adf" sha1="22fdb537a3e4b3ed05aac82f34103212c179db4a" offset="0"/>
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="castlvsirua" cloneof="castlvsi">
+ <description>Castlevania - Spectral Interlude (alt, Russian, 128K)</description>
+ <year>2015</year>
+ <publisher>Rewind</publisher>
+ <part name="cass" interface="spectrum_cass">
+ <dataarea name="cass" size="127075">
+ <rom name="castlevania_si_ru.tap" size="127075" crc="e4e9bd2a" sha1="8bae5e5d2e310335f3aba96b2a0ed6c5c447eb18" offset="0"/>
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="castlvsipla" cloneof="castlvsi">
+ <description>Castlevania - Spectral Interlude (alt, Polish, 128K)</description>
+ <year>2015</year>
+ <publisher>Rewind</publisher>
+ <part name="cass" interface="spectrum_cass">
+ <dataarea name="cass" size="127413">
+ <rom name="castlevania_si_pl.tap" size="127413" crc="98e2c6a6" sha1="6eb777aa7c0c057cf04f3162e7e80f6c4286e406" offset="0"/>
+ </dataarea>
+ </part>
+ </software>
+
+ <software name="castlvsiesa" cloneof="castlvsi">
+ <description>Castlevania - Spectral Interlude (alt, Spanish, 128K)</description>
+ <year>2015</year>
+ <publisher>Rewind</publisher>
+ <part name="cass" interface="spectrum_cass">
+ <dataarea name="cass" size="126973">
+ <rom name="castlevania_si_es.tap" size="126973" crc="4479be59" sha1="c5c816d4b02526c37ea44cbac8d1836ca03fd2fe" offset="0"/>
+ </dataarea>
+ </part>
+ </software>
</softwarelist>
diff --git a/src/devices/cpu/avr8/avr8.c b/src/devices/cpu/avr8/avr8.c
index ebd880af285..063526ff472 100644
--- a/src/devices/cpu/avr8/avr8.c
+++ b/src/devices/cpu/avr8/avr8.c
@@ -752,7 +752,6 @@ void avr8_device::device_start()
m_io = &space(AS_IO);
// register our state for the debugger
- std::string tempstr;
state_add(STATE_GENPC, "GENPC", m_shifted_pc).noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_r[AVR8_REGIDX_SREG]).callimport().callexport().formatstr("%8s").noshow();
state_add(AVR8_SREG, "STATUS", m_r[AVR8_REGIDX_SREG]).mask(0xff);
diff --git a/src/devices/cpu/dsp56k/pmove.h b/src/devices/cpu/dsp56k/pmove.h
index 8e30a534073..cb1bbe0f6f5 100644
--- a/src/devices/cpu/dsp56k/pmove.h
+++ b/src/devices/cpu/dsp56k/pmove.h
@@ -315,8 +315,6 @@ public:
{
INT8 b;
reg_id SD;
- std::string args;
-
b = (char)(word0 & 0x00ff);
decode_HHH_table(BITSn(word1,0x0e00), SD);
assemble_reg_from_W_table(BITSn(word1,0x0100), 'X', SD, b, m_source, m_destination);
diff --git a/src/devices/cpu/e132xs/e132xs.c b/src/devices/cpu/e132xs/e132xs.c
index f714f6f8a6b..deb7eedc587 100644
--- a/src/devices/cpu/e132xs/e132xs.c
+++ b/src/devices/cpu/e132xs/e132xs.c
@@ -1562,7 +1562,6 @@ void hyperstone_device::init(int scale_mask)
m_clock_scale_mask = scale_mask;
// register our state for the debugger
- std::string tempstr;
state_add(STATE_GENPC, "GENPC", m_global_regs[0]).noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_global_regs[1]).callimport().callexport().formatstr("%40s").noshow();
state_add(E132XS_PC, "PC", m_global_regs[0]).mask(0xffffffff);
diff --git a/src/devices/cpu/esrip/esrip.c b/src/devices/cpu/esrip/esrip.c
index fa7ab139b08..07abb25d053 100644
--- a/src/devices/cpu/esrip/esrip.c
+++ b/src/devices/cpu/esrip/esrip.c
@@ -193,7 +193,6 @@ void esrip_device::device_start()
m_direct = &m_program->direct();
// register our state for the debugger
- std::string tempstr;
state_add(STATE_GENPC, "GENPC", m_rip_pc).noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_status).callimport().callexport().formatstr("%8s").noshow();
state_add(ESRIP_PC, "PC:", m_rip_pc).mask(0xffff);
diff --git a/src/devices/cpu/m6805/m6805.c b/src/devices/cpu/m6805/m6805.c
index b7fc47c8dfc..f6de7d06351 100644
--- a/src/devices/cpu/m6805/m6805.c
+++ b/src/devices/cpu/m6805/m6805.c
@@ -424,7 +424,6 @@ void m6805_base_device::device_start()
m_icountptr = &m_icount;
// register our state for the debugger
- std::string tempstr;
state_add(STATE_GENPC, "GENPC", m_pc.w.l).noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_cc).callimport().callexport().formatstr("%8s").noshow();
state_add(M6805_A, "A", m_a).mask(0xff);
diff --git a/src/devices/cpu/ssem/ssem.c b/src/devices/cpu/ssem/ssem.c
index aae760aa26d..0b2af498b95 100644
--- a/src/devices/cpu/ssem/ssem.c
+++ b/src/devices/cpu/ssem/ssem.c
@@ -100,7 +100,6 @@ void ssem_device::device_start()
m_program = &space(AS_PROGRAM);
// register our state for the debugger
- std::string tempstr;
state_add(STATE_GENPC, "GENPC", m_pc).noshow();
state_add(STATE_GENFLAGS, "GENFLAGS", m_halt).callimport().callexport().formatstr("%1s").noshow();
state_add(SSEM_PC, "PC", m_shifted_pc).mask(0xffff);
diff --git a/src/devices/cpu/upd7725/upd7725.c b/src/devices/cpu/upd7725/upd7725.c
index d422eae21b0..ce78b447f59 100644
--- a/src/devices/cpu/upd7725/upd7725.c
+++ b/src/devices/cpu/upd7725/upd7725.c
@@ -69,7 +69,6 @@ void necdsp_device::device_start()
m_direct = &m_program->direct();
// register our state for the debugger
- std::string tempstr;
state_add(STATE_GENPC, "GENPC", regs.pc).noshow();
state_add(UPD7725_PC, "PC", regs.pc);
state_add(UPD7725_RP, "RP", regs.rp);
diff --git a/src/devices/machine/atahle.c b/src/devices/machine/atahle.c
index 850ab39d34f..4bab8c790f5 100644
--- a/src/devices/machine/atahle.c
+++ b/src/devices/machine/atahle.c
@@ -470,8 +470,12 @@ void ata_hle_device::read_buffer_empty()
if ((multi_word_dma_mode() >= 0) || (ultra_dma_mode() >= 0))
set_dmarq(CLEAR_LINE);
- m_buffer_empty_timer->enable(true);
- m_buffer_empty_timer->adjust(attotime::zero);
+ if (ultra_dma_mode() >= 0) {
+ m_buffer_empty_timer->enable(true);
+ m_buffer_empty_timer->adjust(attotime::zero);
+ }
+ else
+ fill_buffer();
}
void ata_hle_device::write_buffer_full()
diff --git a/src/devices/machine/r10696.c b/src/devices/machine/r10696.c
index ab20caed731..819d31084e9 100644
--- a/src/devices/machine/r10696.c
+++ b/src/devices/machine/r10696.c
@@ -154,7 +154,7 @@ READ8_MEMBER( r10696_device::io_r )
io_a = m_iord(0);
io_b = m_iord(1);
io_c = m_iord(2);
- data = (io_a | io_b | io_a) & 0x0f;
+ data = (io_a | io_b | io_c) & 0x0f;
break;
case 0x01: // Read Groups B | C
io_b = m_iord(1);
diff --git a/src/emu/diimage.c b/src/emu/diimage.c
index e4c40167114..46544595475 100644
--- a/src/emu/diimage.c
+++ b/src/emu/diimage.c
@@ -758,7 +758,6 @@ bool device_image_interface::load_software(software_list_device &swlist, const c
{
std::string locationtag, breakstr("%");
const rom_entry *region;
- std::string regiontag;
bool retVal = FALSE;
int warningcount = 0;
for (region = start; region != NULL; region = rom_next_region(region))
diff --git a/src/emu/emuopts.c b/src/emu/emuopts.c
index 148facf5cc4..0a71dd3afe5 100644
--- a/src/emu/emuopts.c
+++ b/src/emu/emuopts.c
@@ -582,7 +582,7 @@ const char *emu_options::sub_value(std::string &buffer, const char *name, const
{
std::string tmp = std::string(",").append(subname).append("=");
buffer = value(name);
- int pos = buffer.find(tmp.c_str());
+ int pos = buffer.find(tmp);
if (pos != -1)
{
int endpos = buffer.find_first_of(',', pos + 1);
diff --git a/src/emu/info.c b/src/emu/info.c
index 25ea424130f..8cdf12f1ded 100644
--- a/src/emu/info.c
+++ b/src/emu/info.c
@@ -645,7 +645,7 @@ void info_xml_creator::output_chips(device_t &device, const char *root_tag)
if (strcmp(exec->device().tag(), device.tag()))
{
std::string newtag(exec->device().tag()), oldtag(":");
- newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length());
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
fprintf(m_output, "\t\t<chip");
fprintf(m_output, " type=\"cpu\"");
@@ -663,7 +663,7 @@ void info_xml_creator::output_chips(device_t &device, const char *root_tag)
if (strcmp(sound->device().tag(), device.tag()))
{
std::string newtag(sound->device().tag()), oldtag(":");
- newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length());
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
fprintf(m_output, "\t\t<chip");
fprintf(m_output, " type=\"audio\"");
@@ -691,7 +691,7 @@ void info_xml_creator::output_display(device_t &device, const char *root_tag)
if (strcmp(screendev->tag(), device.tag()))
{
std::string newtag(screendev->tag()), oldtag(":");
- newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length());
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
fprintf(m_output, "\t\t<display");
fprintf(m_output, " tag=\"%s\"", xml_normalize_string(newtag.c_str()));
@@ -1097,7 +1097,7 @@ void info_xml_creator::output_switches(const ioport_list &portlist, const char *
std::string output;
std::string newtag(port->tag()), oldtag(":");
- newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length());
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
// output the switch name information
std::string normalized_field_name(xml_normalize_string(field->name()));
@@ -1228,7 +1228,7 @@ void info_xml_creator::output_images(device_t &device, const char *root_tag)
if (strcmp(imagedev->device().tag(), device.tag()))
{
std::string newtag(imagedev->device().tag()), oldtag(":");
- newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length());
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
// print m_output device type
fprintf(m_output, "\t\t<device type=\"%s\"", xml_normalize_string(imagedev->image_type_name()));
@@ -1286,7 +1286,7 @@ void info_xml_creator::output_slots(device_t &device, const char *root_tag)
if (strcmp(slot->device().tag(), device.tag()))
{
std::string newtag(slot->device().tag()), oldtag(":");
- newtag = newtag.substr(newtag.find(oldtag.append(root_tag).c_str()) + oldtag.length());
+ newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length());
// print m_output device type
fprintf(m_output, "\t\t<slot name=\"%s\">\n", xml_normalize_string(newtag.c_str()));
diff --git a/src/emu/machine.c b/src/emu/machine.c
index ae85784ed46..16f038e6eb9 100644
--- a/src/emu/machine.c
+++ b/src/emu/machine.c
@@ -206,7 +206,7 @@ TIMER_CALLBACK_MEMBER(running_machine::autoboot_callback)
else if (strlen(options().autoboot_command())!=0) {
std::string cmd = std::string(options().autoboot_command());
strreplace(cmd, "'", "\\'");
- std::string val = std::string("emu.keypost('").append(cmd.c_str()).append("')").c_str();
+ std::string val = std::string("emu.keypost('").append(cmd).append("')");
manager().lua()->load_string(val.c_str());
}
}
@@ -563,7 +563,7 @@ std::string running_machine::get_statename(const char *option)
// handle %d in the template (for image devices)
std::string statename_dev("%d_");
- int pos = statename_str.find(statename_dev.c_str());
+ int pos = statename_str.find(statename_dev);
if (pos != -1)
{
diff --git a/src/emu/memory.c b/src/emu/memory.c
index bf251912004..7a9e3688995 100644
--- a/src/emu/memory.c
+++ b/src/emu/memory.c
@@ -1929,8 +1929,6 @@ void address_space::populate_from_map(address_map *map)
void address_space::populate_map_entry(const address_map_entry &entry, read_or_write readorwrite)
{
const map_handler_data &data = (readorwrite == ROW_READ) ? entry.m_read : entry.m_write;
- std::string fulltag;
-
// based on the handler type, alter the bits, name, funcptr, and object
switch (data.m_type)
{
diff --git a/src/emu/romload.c b/src/emu/romload.c
index fe3104d7f8a..2e64fe20c58 100644
--- a/src/emu/romload.c
+++ b/src/emu/romload.c
@@ -675,7 +675,7 @@ static int open_rom_file(romload_private *romdata, const char *regiontag, const
}
// prepare locations where we have to load from: list/parentname & list/clonename
- std::string swlist(tag1.c_str());
+ std::string swlist(tag1);
tag2.assign(swlist.append(tag4));
if (has_parent)
{
@@ -1076,7 +1076,7 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_
}
// prepare locations where we have to load from: list/parentname (if any) & list/clonename
- std::string swlist(tag1.c_str());
+ std::string swlist(tag1);
tag2.assign(swlist.append(tag4));
if (has_parent)
{
diff --git a/src/emu/softlist.c b/src/emu/softlist.c
index c2e8dba671a..c90bb6cccdc 100644
--- a/src/emu/softlist.c
+++ b/src/emu/softlist.c
@@ -158,7 +158,7 @@ bool software_part::is_compatible(const software_list_device &swlistdev) const
for (int start = 0, end = filt.find_first_of(',',start); end != -1; start = end + 1, end = filt.find_first_of(',', start))
{
std::string token(filt, start, end - start + 1);
- if (comp.find(token.c_str()) != -1)
+ if (comp.find(token) != -1)
return true;
}
return false;
@@ -181,7 +181,7 @@ bool software_part::matches_interface(const char *interface_list) const
// then add a comma to the end of our interface and return true if we find it in the list string
std::string our_interface = std::string(m_interface).append(",");
- return (interfaces.find(our_interface.c_str()) != -1);
+ return (interfaces.find(our_interface) != -1);
}
diff --git a/src/emu/ui/filemngr.c b/src/emu/ui/filemngr.c
index 5e02b657cd0..55070364014 100644
--- a/src/emu/ui/filemngr.c
+++ b/src/emu/ui/filemngr.c
@@ -104,7 +104,6 @@ void ui_menu_file_manager::populate()
{
std::string buffer, tmp_inst, tmp_name;
bool first_entry = true;
- std::string prev_owner;
if (!m_warnings.empty())
{
diff --git a/src/emu/ui/inputmap.c b/src/emu/ui/inputmap.c
index 9aa63fdcec9..375c59075b6 100644
--- a/src/emu/ui/inputmap.c
+++ b/src/emu/ui/inputmap.c
@@ -91,7 +91,6 @@ void ui_menu_input_general::populate()
{
input_item_data *itemlist = NULL;
int suborder[SEQ_TYPE_TOTAL];
- std::string tempstring;
int sortorder = 1;
/* create a mini lookup table for sort order based on sequence type */
@@ -154,7 +153,6 @@ void ui_menu_input_specific::populate()
{
input_item_data *itemlist = NULL;
int suborder[SEQ_TYPE_TOTAL];
- std::string tempstring;
int port_count = 0;
/* create a mini lookup table for sort order based on sequence type */
diff --git a/src/emu/validity.c b/src/emu/validity.c
index 7dbe67206a0..45f39ff444f 100644
--- a/src/emu/validity.c
+++ b/src/emu/validity.c
@@ -196,7 +196,6 @@ bool validity_checker::check_all()
// if we had warnings or errors, output
if (m_errors > 0 || m_warnings > 0)
{
- std::string tempstr;
output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Core: %d errors, %d warnings\n", m_errors, m_warnings);
if (m_errors > 0)
{
diff --git a/src/emu/video.c b/src/emu/video.c
index adc2888b2e7..bdeb0d33faf 100644
--- a/src/emu/video.c
+++ b/src/emu/video.c
@@ -1126,7 +1126,7 @@ file_error video_manager::open_next(emu_file &file, const char *extension)
// handle %d in the template (for image devices)
std::string snapdev("%d_");
- int pos = snapstr.find(snapdev.c_str());
+ int pos = snapstr.find(snapdev);
if (pos != -1)
{
diff --git a/src/lib/formats/tzx_cas.c b/src/lib/formats/tzx_cas.c
index 6037c200122..5c8d79a636c 100644
--- a/src/lib/formats/tzx_cas.c
+++ b/src/lib/formats/tzx_cas.c
@@ -296,6 +296,44 @@ static int tzx_cas_handle_block( INT16 **buffer, const UINT8 *bytes, int pause,
return size;
}
+static int tzx_handle_direct(INT16 **buffer, const UINT8 *bytes, int pause, int data_size, int tstates, int bits_in_last_byte)
+{
+ int size = 0;
+ int samples = tcycles_to_samplecount(tstates);
+
+ /* data */
+ for (int data_index = 0; data_index < data_size; data_index++)
+ {
+ UINT8 byte = bytes[data_index];
+ int bits_to_go = (data_index == (data_size - 1)) ? bits_in_last_byte : 8;
+
+ for ( ; bits_to_go > 0; byte <<= 1, bits_to_go--)
+ {
+ if (byte & 0x80) wave_data = WAVE_HIGH;
+ else wave_data = WAVE_LOW;
+
+ tzx_output_wave(buffer, samples);
+ size += samples;
+
+ }
+ }
+
+ /* pause */
+ if (pause > 0)
+ {
+ int start_pause_samples = millisec_to_samplecount(1);
+ int rest_pause_samples = millisec_to_samplecount(pause - 1);
+
+ tzx_output_wave(buffer, start_pause_samples);
+ size += start_pause_samples;
+ wave_data = WAVE_LOW;
+ tzx_output_wave(buffer, rest_pause_samples);
+ size += rest_pause_samples;
+ }
+ return size;
+}
+
+
static void ascii_block_common_log( const char *block_type_string, UINT8 block_type )
{
LOG_FORMATS("%s (type %02x) encountered.\n", block_type_string, block_type);
@@ -343,7 +381,7 @@ static int tzx_cas_do_work( INT16 **buffer )
int bit0, bit1, bits_in_last_byte;
UINT8 *cur_block = blocks[current_block];
UINT8 block_type = cur_block[0];
-
+ UINT16 tstates = 0;
/* Uncomment this to include into error.log a list of the types each block */
LOG_FORMATS("tzx_cas_fill_wave: block %d, block_type %02x\n", current_block, block_type);
@@ -516,9 +554,13 @@ static int tzx_cas_do_work( INT16 **buffer )
current_block++;
break;
- case 0x15: /* Direct Recording */
+ case 0x15: /* Direct Recording */ // used on 'bombscar' in the cpc_cass list
// having this missing is fatal
- printf("Unsupported block type (0x15 - Direct Recording) encountered.\n");
+ tstates = cur_block[1] + (cur_block[2] << 8);
+ pause_time= cur_block[3] + (cur_block[4] << 8);
+ bits_in_last_byte = cur_block[5];
+ data_size = cur_block[6] + (cur_block[7] << 8) + (cur_block[8] << 16);
+ size += tzx_handle_direct(buffer, &cur_block[9], pause_time, data_size, tstates, bits_in_last_byte);
current_block++;
break;
diff --git a/src/mame/arcade.lst b/src/mame/arcade.lst
index cb4b29d79f2..1b3c3c25888 100644
--- a/src/mame/arcade.lst
+++ b/src/mame/arcade.lst
@@ -2870,6 +2870,7 @@ pacslot // (c) 1996 Namco
ppsatan // (c) 1996 <unknown>
ddonpach // (c) 1997 Atlus/Cave
ddonpachj // (c) 1997 Atlus/Cave
+ddonpacha // hack
dfeveron // (c) 1998 Cave + Nihon System license
feversos // (c) 1998 Cave + Nihon System license
esprade // (c) 1998 Atlus/Cave
@@ -10185,8 +10186,16 @@ svg // (c) 2003 Spectral vs Generation
svgtw
svgpcb //
ket // (c) 2002 Ketsui
+ket1 //
keta //
ketb //
+ketarr // hack
+ketarr151 // hack
+ketarr15 // hack
+ketarr10 // hack
+ketarrs151 // hack
+ketarrs15 // hack
+ketarrf // hack
ddpdoj // (c) 2002 DoDonPachi Dai-Ou-Jou
ddpdoja //
ddpdojb //
diff --git a/src/mame/drivers/beathead.c b/src/mame/drivers/beathead.c
index 66f981626c4..1d6dbe3335c 100644
--- a/src/mame/drivers/beathead.c
+++ b/src/mame/drivers/beathead.c
@@ -120,7 +120,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(beathead_state::scanline_callback)
int scanline = param;
/* update the video */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
/* on scanline zero, clear any halt condition */
if (scanline == 0)
diff --git a/src/mame/drivers/cardline.c b/src/mame/drivers/cardline.c
index 8f2dd4c5bad..2eda29b5910 100644
--- a/src/mame/drivers/cardline.c
+++ b/src/mame/drivers/cardline.c
@@ -139,7 +139,8 @@ WRITE_LINE_MEMBER(cardline_state::hsync_changed)
{
/* update any video up to the current scanline */
m_hsync_q = (state ? 0x00 : 0x10);
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
}
WRITE_LINE_MEMBER(cardline_state::vsync_changed)
diff --git a/src/mame/drivers/cave.c b/src/mame/drivers/cave.c
index 00cacc0285c..eb3e7f32db7 100644
--- a/src/mame/drivers/cave.c
+++ b/src/mame/drivers/cave.c
@@ -72,17 +72,6 @@ Versions known to exist but not dumped:
PCBs were shown running (and could be played) at a Cave fan show known as Cave Festival 2006. There are
videos of the game being played floating around the internet and on YouTube. AKA DDP-CV or DDP BLUE ROM
- Dodonpachi Arrange: This version is a hack by trap15 and ment to be a tribute to the game. It is neither a
- long lost version or official release from Cave and therefore not suitable for MAME.
-
- Known rom version 1.1:
- File CRC32 SHA1
- ---------------------------------------------------------
- u27.bin 44b899ae 798ec437d861b94fcd90c99a7015dd420887c788
- u26.bin 727a09a8 91876386855f19e8a3d8d1df71dfe9b3d98e9ea9
- u51.bin 0f3e5148 3016f4d075940feae691389606cd2aa7ac53849e
- u62.bin 42e4c6c5 4d282f7592f5fc5e11839c57f39cae20b8422aa1
-
***************************************************************************/
#include "emu.h"
@@ -3162,6 +3151,34 @@ ROM_START( ddonpachj )
ROM_END
+ROM_START( ddonpacha )
+ ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */
+ ROM_LOAD16_BYTE( "arrange_u27.bin", 0x000000, 0x080000, CRC(44b899ae) SHA1(798ec437d861b94fcd90c99a7015dd420887c788) )
+ ROM_LOAD16_BYTE( "arrange_u26.bin", 0x000001, 0x080000, CRC(727a09a8) SHA1(91876386855f19e8a3d8d1df71dfe9b3d98e9ea9) )
+
+ ROM_REGION( 0x800000 * 2, "sprites0", 0 ) /* Sprites: * 2 */
+ ROM_LOAD( "u50.bin", 0x000000, 0x200000, CRC(14b260ec) SHA1(33bda210302428d5500115d0c7a839cdfcb67d17) )
+ ROM_LOAD( "arrange_u51.bin", 0x200000, 0x200000, CRC(0f3e5148) SHA1(3016f4d075940feae691389606cd2aa7ac53849e) )
+ ROM_LOAD( "u52.bin", 0x400000, 0x200000, CRC(02492ee0) SHA1(64d9cc64a4ad189a8b03cf6a749ddb732b4a0014) )
+ ROM_LOAD( "u53.bin", 0x600000, 0x200000, CRC(cb4c10f0) SHA1(a622e8bd0c938b5d38b392b247400b744d8be288) )
+
+ ROM_REGION( 0x200000, "layer0", 0 ) /* Layer 0 */
+ ROM_LOAD( "u60.bin", 0x000000, 0x200000, CRC(903096a7) SHA1(a243e903fef7c4a7b71383263e82e42acd869261) )
+
+ ROM_REGION( 0x200000, "layer1", 0 ) /* Layer 1 */
+ ROM_LOAD( "u61.bin", 0x000000, 0x200000, CRC(d89b7631) SHA1(a66bb4955ca58fab8973ca37a0f971e9a67ce017) )
+
+ ROM_REGION( 0x200000, "layer2", 0 ) /* Layer 2 */
+ ROM_LOAD( "arrange_u62.bin", 0x000000, 0x200000, CRC(42e4c6c5) SHA1(4d282f7592f5fc5e11839c57f39cae20b8422aa1) )
+
+ ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */
+ ROM_LOAD( "u6.bin", 0x000000, 0x200000, CRC(9dfdafaf) SHA1(f5cb450cdc78a20c3a74c6dac05c9ac3cba08327) )
+ ROM_LOAD( "u7.bin", 0x200000, 0x200000, CRC(795b17d5) SHA1(cbfc29f1df9600c82e0fdae00edd00da5b73e14c) )
+
+ ROM_REGION16_BE( 0x80, "eeprom", 0 )
+ ROM_LOAD16_WORD( "eeprom-ddonpach.bin", 0x0000, 0x0080, CRC(2df16438) SHA1(4881b70589a97e2420feb6d6e6737273beeff303) )
+ROM_END
+
/***************************************************************************
Donpachi
@@ -5043,6 +5060,9 @@ GAME( 1996, ppsatan, 0, ppsatan, ppsatan, cave_state, ppsatan, ROT0
GAME( 1997, ddonpach, 0, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (International, Master Ver. 97/02/05)", MACHINE_SUPPORTS_SAVE )
GAME( 1997, ddonpachj, ddonpach, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (Japan, Master Ver. 97/02/05)", MACHINE_SUPPORTS_SAVE )
+// NOT an official CAVE release, but several PCBs have been converted to it and used on location.
+GAME( 2012, ddonpacha, ddonpach, ddonpach, cave, cave_state, ddonpach, ROT270, "hack (trap15)", "DoDonPachi (2012/02/12 Arrange Ver. 1.1) (hack)", MACHINE_SUPPORTS_SAVE )
+
GAME( 1998, dfeveron, feversos, dfeveron, cave, cave_state, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan, Ver. 98/09/17)", MACHINE_SUPPORTS_SAVE )
GAME( 1998, feversos, 0, dfeveron, cave, cave_state, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International, Ver. 98/09/25)", MACHINE_SUPPORTS_SAVE )
diff --git a/src/mame/drivers/cubeqst.c b/src/mame/drivers/cubeqst.c
index d11cf9ead2a..837e77c9a9f 100644
--- a/src/mame/drivers/cubeqst.c
+++ b/src/mame/drivers/cubeqst.c
@@ -101,7 +101,9 @@ void cubeqst_state::video_start()
WRITE16_MEMBER(cubeqst_state::palette_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
+
COMBINE_DATA(&m_generic_paletteram_16[offset]);
}
diff --git a/src/mame/drivers/firefox.c b/src/mame/drivers/firefox.c
index 7d18687fed4..d77ee4b6a39 100644
--- a/src/mame/drivers/firefox.c
+++ b/src/mame/drivers/firefox.c
@@ -267,7 +267,8 @@ UINT32 firefox_state::screen_update_firefox(screen_device &screen, bitmap_rgb32
TIMER_DEVICE_CALLBACK_MEMBER(firefox_state::video_timer_callback)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE );
}
diff --git a/src/mame/drivers/galaxian.c b/src/mame/drivers/galaxian.c
index bcd1651c2c7..446e3b310b7 100644
--- a/src/mame/drivers/galaxian.c
+++ b/src/mame/drivers/galaxian.c
@@ -5235,7 +5235,8 @@ TIMER_DEVICE_CALLBACK_MEMBER(galaxian_state::timefgtr_scanline)
// change spriteram base per each 64-line part of the screen
if ((split & 0x3f) == 0)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_sprites_base = 0x40 | (split << 2 & 0x300);
}
}
diff --git a/src/mame/drivers/merit.c b/src/mame/drivers/merit.c
index 7131d099cc5..2983b49aeac 100644
--- a/src/mame/drivers/merit.c
+++ b/src/mame/drivers/merit.c
@@ -232,7 +232,8 @@ WRITE8_MEMBER(merit_state::palette_w)
{
int co;
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
data &= 0x0f;
co = ((m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07);
@@ -305,7 +306,8 @@ MC6845_UPDATE_ROW( merit_state::crtc_update_row )
WRITE_LINE_MEMBER(merit_state::hsync_changed)
{
/* update any video up to the current scanline */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
}
WRITE_LINE_MEMBER(merit_state::vsync_changed)
diff --git a/src/mame/drivers/osborne1.c b/src/mame/drivers/osborne1.c
index dc9b61bf547..6bc318190c3 100644
--- a/src/mame/drivers/osborne1.c
+++ b/src/mame/drivers/osborne1.c
@@ -10,28 +10,35 @@ Bank 1 simply consists of 64KB of RAM. The upper 4KB is used for the lower 8
bit of video RAM entries.
Bank 2 holds the BIOS ROM and I/O area. Only addresses 0000-3FFF are used
-by bank 2. Bank 2 is divided as follows:
-3000-3FFF Unused
+by bank 2 (4000-FFFF mirrors bank 1). Bank 2 is divided as follows:
+3000-3FFF Nominally unused but acts as mirror of 2000-2FFF
2C00-2C03 Video PIA
2A00-2A01 Serial interface
2900-2903 488 PIA
+2400-2400 SCREEN-PAC (if present)
2201-2280 Keyboard
2100-2103 Floppy
-1000-1FFF Unused
+1000-1FFF Nominally unused but acts as read mirror of BIOS ROM
0000-0FFF BIOS ROM
+The logic is actually quite sloppy, and will cause bus fighting under many
+circumstances since it doesn't actually check all four bits, just that two
+are in the desired state.
+
Bank 3 has the ninth bit needed to complete the full Video RAM. These bits
are stored at F000-FFFF. Only the highest bit is used.
On bootup bank 2 is active.
-The actual banking is done through I/O ports 00-03.
-00 - Have both bank 2 and bank 1 active. This seems to be the power up default.
-01 - Only have bank 1 active.
-02 - Have both bank 2 and bank 3 active. (Not 100% sure, also bank 1 from 4000-EFFF?)
-03 - Have both bank 2 and bank 1 active.
+Banking is controlled by writes to I/O space. Only two low address bits are
+used, and the value on the data bus is completley ignored.
+00 - Activate bank 2 (also triggered by CPU reset)
+01 - Activate bank 1
+02 - Set BIT 9 signal (map bank 3 into F000-FFFF)
+03 - Clear BIT 9 signal (map bank 1/2 into F000-FFFF)
TODO:
+ - Implement serial port
- Verify frequency of the beep/audio alarm.
***************************************************************************/
@@ -45,17 +52,16 @@ TODO:
static ADDRESS_MAP_START( osborne1_mem, AS_PROGRAM, 8, osborne1_state )
AM_RANGE( 0x0000, 0x0FFF ) AM_READ_BANK("bank1") AM_WRITE( osborne1_0000_w )
AM_RANGE( 0x1000, 0x1FFF ) AM_READ_BANK("bank2") AM_WRITE( osborne1_1000_w )
- AM_RANGE( 0x2000, 0x2FFF ) AM_READWRITE( osborne1_2000_r, osborne1_2000_w )
- AM_RANGE( 0x3000, 0x3FFF ) AM_READ_BANK("bank3") AM_WRITE( osborne1_3000_w )
+ AM_RANGE( 0x2000, 0x3FFF ) AM_READWRITE( osborne1_2000_r, osborne1_2000_w )
AM_RANGE( 0x4000, 0xEFFF ) AM_RAM
- AM_RANGE( 0xF000, 0xFFFF ) AM_READ_BANK("bank4") AM_WRITE( osborne1_videoram_w )
+ AM_RANGE( 0xF000, 0xFFFF ) AM_READ_BANK("bank3") AM_WRITE( osborne1_videoram_w )
ADDRESS_MAP_END
static ADDRESS_MAP_START( osborne1_io, AS_IO, 8, osborne1_state )
ADDRESS_MAP_UNMAP_HIGH
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE( 0x00, 0x03 ) AM_WRITE( osborne1_bankswitch_w )
+ AM_RANGE( 0x00, 0xff ) AM_WRITE( osborne1_bankswitch_w )
ADDRESS_MAP_END
diff --git a/src/mame/drivers/pgm.c b/src/mame/drivers/pgm.c
index b8a74f70d20..cf117d01f23 100644
--- a/src/mame/drivers/pgm.c
+++ b/src/mame/drivers/pgm.c
@@ -3904,8 +3904,33 @@ ROM_START( ket )
ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
/* doesn't use a separate BIOS rom */
ROM_LOAD16_WORD_SWAP( "ketsui_v100.u38", 0x000000, 0x200000, CRC(dfe62f3b) SHA1(baa58d1ce47a707f84f65779ac0689894793e9d9) )
- // an alt version of this rom exists with 0xff fill in the unused area after 0x1443bc rather than random data like the one above, there are no code changes.
- //ROM_LOAD16_WORD_SWAP( "ketsui_v100.u38", 0x000000, 0x200000, CRC(e140f8a4) SHA1(34fd25f8896935503d7537e89a4cd174e8995070) )
+
+ ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
+ ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
+ ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details
+ ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1
+
+ ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */
+ ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1
+ ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2
+
+ ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
+ ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1
+
+ ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */
+ /* there is a position for the PGM audio bios rom, but it's unpopulated, and the M of PGM has been scratched off the PCB */
+ ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1
+
+ ROM_REGION( 0x20000, "sram", 0 ) /* default settings */
+ ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) )
+ROM_END
+
+ROM_START( ket1 ) // only difference between this and ket1 is the rom fill on the unused area
+ ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
+ /* doesn't use a separate BIOS rom */
+ ROM_LOAD16_WORD_SWAP( "ketsui_v100_alt_fill.u38", 0x000000, 0x200000, CRC(e140f8a4) SHA1(34fd25f8896935503d7537e89a4cd174e8995070) )
ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
@@ -3983,6 +4008,195 @@ ROM_START( ketb )
ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) )
ROM_END
+
+ROM_START( ketarr10 )
+ ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
+ /* doesn't use a separate BIOS rom */
+ ROM_LOAD16_WORD_SWAP( "ketarr_v100.u38", 0x000000, 0x200000, CRC(d4c7a8ab) SHA1(65d104d17bd4fd03a2b44297a003ba03d746c7ee) )
+
+ ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
+ ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
+ ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details
+ ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1
+
+ ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */
+ ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1
+ ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2
+
+ ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
+ ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1
+
+ ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */
+ /* there is a position for the PGM audio bios rom, but it's unpopulated, and the M of PGM has been scratched off the PCB */
+ ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1
+
+ ROM_REGION( 0x20000, "sram", 0 ) /* default settings */
+ ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) )
+ROM_END
+
+
+ROM_START( ketarrf )
+ ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
+ /* doesn't use a separate BIOS rom */
+ ROM_LOAD16_WORD_SWAP( "ketarrf_v100.u38", 0x000000, 0x200000, CRC(6ad17aa4) SHA1(791bd1a107433a3811c8a79ea26a73e66ddd296f) )
+
+ ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
+ ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
+ ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details
+ ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1
+
+ ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */
+ ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1
+ ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2
+
+ ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
+ ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1
+
+ ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */
+ /* there is a position for the PGM audio bios rom, but it's unpopulated, and the M of PGM has been scratched off the PCB */
+ ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1
+
+ ROM_REGION( 0x20000, "sram", 0 ) /* default settings */
+ ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) )
+ROM_END
+
+ROM_START( ketarr15 )
+ ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
+ /* doesn't use a separate BIOS rom */
+ ROM_LOAD16_WORD_SWAP( "ketarr15_v100.u38", 0x000000, 0x200000, CRC(552a7d95) SHA1(4f3fb13f34d58a7482e1d26623d38aa0b54ca8dd) )
+
+ ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
+ ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
+ ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details
+ ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1
+
+ ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */
+ ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1
+ ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2
+
+ ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
+ ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1
+
+ ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */
+ /* there is a position for the PGM audio bios rom, but it's unpopulated, and the M of PGM has been scratched off the PCB */
+ ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1
+
+ ROM_REGION( 0x20000, "sram", 0 ) /* default settings */
+ ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) )
+ROM_END
+
+ROM_START( ketarrs15 )
+ ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
+ /* doesn't use a separate BIOS rom */
+ ROM_LOAD16_WORD_SWAP( "ketarrs15_v100.u38", 0x000000, 0x200000, CRC(a95e71e0) SHA1(182c12e3581ebb20176d8abca41ee62aadcd63e0) )
+
+ ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
+ ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
+ ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details
+ ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1
+
+ ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */
+ ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1
+ ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2
+
+ ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
+ ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1
+
+ ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */
+ /* there is a position for the PGM audio bios rom, but it's unpopulated, and the M of PGM has been scratched off the PCB */
+ ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1
+
+ ROM_REGION( 0x20000, "sram", 0 ) /* default settings */
+ ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) )
+ROM_END
+
+ROM_START( ketarr151 )
+ ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
+ /* doesn't use a separate BIOS rom */
+ ROM_LOAD16_WORD_SWAP( "ketarr151_v100.u38", 0x000000, 0x200000, CRC(2b7c030d) SHA1(9aaba1242d7ce29915a31d40341da82985927f9d) )
+
+ ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
+ ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
+ ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details
+ ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1
+
+ ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */
+ ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1
+ ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2
+
+ ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
+ ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1
+
+ ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */
+ /* there is a position for the PGM audio bios rom, but it's unpopulated, and the M of PGM has been scratched off the PCB */
+ ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1
+
+ ROM_REGION( 0x20000, "sram", 0 ) /* default settings */
+ ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) )
+ROM_END
+
+ROM_START( ketarrs151 )
+ ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
+ /* doesn't use a separate BIOS rom */
+ ROM_LOAD16_WORD_SWAP( "ketarrs151_v100.u38", 0x000000, 0x200000, CRC(35c984e4) SHA1(d4517f318de0c40a3b30e41374f33bb355581434) )
+
+ ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */
+ ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP )
+
+ ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */
+ ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details
+ ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1
+
+ ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */
+ ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1
+ ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2
+
+ ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */
+ ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1
+
+ ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */
+ /* there is a position for the PGM audio bios rom, but it's unpopulated, and the M of PGM has been scratched off the PCB */
+ ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1
+
+ ROM_REGION( 0x20000, "sram", 0 ) /* default settings */
+ ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) )
+ROM_END
+
+ROM_START( ketarr )
+ ROM_REGION( 0x600000, "maincpu", 0 )
+ ROM_LOAD16_WORD_SWAP( "ketarr17_v100.u38", 0x000000, 0x200000, CRC(2cb80b89) SHA1(e1aa072b8344890486e11795e02703aa2d234bb1) )
+
+ ROM_REGION( 0x4000, "prot", 0 )
+ ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, CRC(ab54d286) SHA1(897256b6709e1a4da9daba92b6bde39ccfccd8c1) )
+
+ ROM_REGION( 0xc00000, "tiles", 0 )
+ ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) )
+ ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1
+
+ ROM_REGION( 0x1000000, "sprcol", 0 )
+ ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1
+ ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2
+
+ ROM_REGION( 0x0800000, "sprmask", 0 )
+ ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1
+
+ ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 )
+ ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1
+
+ ROM_REGION( 0x20000, "sram", 0 ) /* default settings */
+ ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) )
+ROM_END
+
ROM_START( espgal )
ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */
/* doesn't use a separate BIOS rom */
@@ -4312,10 +4526,31 @@ GAME( 2002, ddpdojblk, ddpdoj, pgm_arm_type1_cave, pgm, pgm_arm_type1_s
GAME( 2002, ddpdojblka, ddpdoj, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ddp3, ROT270, "Cave (AMI license)", "DoDonPachi Dai-Ou-Jou (2002.10.07 Black Ver)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // Displays "2002.04.05.Master Ver" (old) or "2002.10.07 Black Ver" (new)
// the exact text of the 'version' shows which revision of the game it is; the newest has 2 '.' symbols in the string, the oldest, none.
+// the only difference between 'ket' and 'ket1' is the ROM fill at 0x1443bc-0x1c88cd, on ket1 it seems to be randomized / garbage data, on ket it's all 0xff, both have been seen on more than one PCB.
GAME( 2002, ket, 0, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "Cave (AMI license)", "Ketsui: Kizuna Jigoku Tachi (2003/01/01. Master Ver.)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+GAME( 2002, ket1, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "Cave (AMI license)", "Ketsui: Kizuna Jigoku Tachi (2003/01/01. Master Ver.) (alt rom fill)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 2002, keta, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "Cave (AMI license)", "Ketsui: Kizuna Jigoku Tachi (2003/01/01 Master Ver.)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
GAME( 2002, ketb, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "Cave (AMI license)", "Ketsui: Kizuna Jigoku Tachi (2003/01/01 Master Ver)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
+// these are modern hacks, some of them have been seen on original PCBs, also reportedly on a bootleg PCB with mostly original components but the ARM replaced with a custom chip.
+// this is a significantly reworked version of the game
+GAME( 2014, ketarr, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "hack (trap15)", "Ketsui: Kizuna Jigoku Tachi (2014/07/16 ARRANGE 1.7 VER) (hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, ketarr151, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "hack (trap15)", "Ketsui: Kizuna Jigoku Tachi (2012/06/26 ARRANGE 1.51 VER) (hack)", MACHINE_SUPPORTS_SAVE ) // this apparently crashes on an original PGM PCB when displaying the text after starting a game, find out why and reproduce the issue in MAME.
+GAME( 2012, ketarr15, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "hack (trap15)", "Ketsui: Kizuna Jigoku Tachi (2012/06/26 ARRANGE 1.5 VER) (hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, ketarr10, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "hack (trap15)", "Ketsui: Kizuna Jigoku Tachi (2012/04/17 ARRANGE VER) (hack)", MACHINE_SUPPORTS_SAVE )
+
+// these simplify the scoring system
+GAME( 2012, ketarrs151, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "hack (trap15)", "Ketsui: Kizuna Jigoku Tachi (2012/06/27 MR.STOIC 1.51 VER) (hack)", MACHINE_SUPPORTS_SAVE )
+GAME( 2012, ketarrs15, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "hack (trap15)", "Ketsui: Kizuna Jigoku Tachi (2012/06/27 MR.STOIC 1.5 VER) (hack)", MACHINE_SUPPORTS_SAVE )
+
+// this has the 'programmed slowdown' removed.
+GAME( 2012, ketarrf, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "hack (trap15)", "Ketsui: Kizuna Jigoku Tachi (2012/04/17 FAST. VER) (hack)", MACHINE_SUPPORTS_SAVE )
+
+// this version is stupid, it just simulates what happens if the protection chip isn't returning proper values
+// ROM_LOAD16_WORD_SWAP( "ketarrb_v100.u38", 0x000000, 0x200000, CRC(ec7a4f92) SHA1(6351fb386586956fbdb5f0730c481fb539cc267a) )
+// GAME( 2002, ketarrb, ket, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, ket, ROT270, "trap15", "Ketsui: Kizuna Jigoku Tachi (2012/04/17 BACK. VER)", MACHINE_SUPPORTS_SAVE )
+
+
GAME( 2003, espgal, 0, pgm_arm_type1_cave, pgm, pgm_arm_type1_state, espgal, ROT270, "Cave (AMI license)", "Espgaluda (2003/10/15 Master Ver)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )
// protection simulated, but should be correct
diff --git a/src/mame/drivers/segac2.c b/src/mame/drivers/segac2.c
index 4c0e62c1752..f738901900f 100644
--- a/src/mame/drivers/segac2.c
+++ b/src/mame/drivers/segac2.c
@@ -937,21 +937,21 @@ static INPUT_PORTS_START( sonicpop )
PORT_INCLUDE( systemc_generic )
PORT_MODIFY("P1")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Relay") // relay (must be ON by default or machine will instantly give an 'assistance' error)
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("Relay") // relay (must be ON by default or machine will instantly give an 'assistance' error) - pressing this advances the stages of operation (from type select, and during the turning of the wheel)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Coinblock") // coinblock (inverted)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Sensor") // sensor
+ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Sensor") // sensor - causes an extra animation to play if you press it during attract and 'Sensor Advertise' dip is on
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Cup Select 1") // cup select 2
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Cup Select 2") // cup select 2 - pressing Cup Select 1 and 2 registers as 'Cup Select 3', I presume these are lines from the mechanical part.
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Cup Select 1") // cup select 1
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Handle B") // handle B
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Handle A") // handle A
PORT_MODIFY("P2")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Sold Out LED1") // sold out LED 1
+ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Sold Out LED1") // sold out LED 1 - are these actually output lines?
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("Sold Out LED2") // sold out LED 2
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON11 ) PORT_NAME("Sold Out LED3") // sold out LED 3
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Sold Out SW2") // sold out SW 2
+ PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Sold Out SW2") // sold out SW 2 - holding these while coining up will show popcorn as unavailable, pressing all 3 will fault the machine
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("Sold Out SW3") // sold out SW 3
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Sold Out SW1") // sold out SW 1
diff --git a/src/mame/drivers/segas24.c b/src/mame/drivers/segas24.c
index 7a3a5f76a51..34be9d6ba5d 100644
--- a/src/mame/drivers/segas24.c
+++ b/src/mame/drivers/segas24.c
@@ -878,8 +878,11 @@ TIMER_DEVICE_CALLBACK_MEMBER(segas24_state::irq_timer_cb)
if(irq_allow1 & (1 << IRQ_TIMER))
m_subcpu->set_input_line(IRQ_TIMER+1, ASSERT_LINE);
- if(irq_tmode == 1 || irq_tmode == 2)
- m_screen->update_now();
+ if (irq_tmode == 1 || irq_tmode == 2)
+ {
+ // m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
+ }
}
TIMER_DEVICE_CALLBACK_MEMBER(segas24_state::irq_timer_clear_cb)
diff --git a/src/mame/drivers/slotcarn.c b/src/mame/drivers/slotcarn.c
index c5f0726a886..b1cedc60b39 100644
--- a/src/mame/drivers/slotcarn.c
+++ b/src/mame/drivers/slotcarn.c
@@ -82,7 +82,8 @@ WRITE8_MEMBER(slotcarn_state::palette_w)
{
int co;
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
data &= 0x0f;
co = ((m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07);
@@ -157,7 +158,8 @@ MC6845_UPDATE_ROW( slotcarn_state::crtc_update_row )
WRITE_LINE_MEMBER(slotcarn_state::hsync_changed)
{
/* update any video up to the current scanline */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
}
WRITE_LINE_MEMBER(slotcarn_state::vsync_changed)
diff --git a/src/mame/drivers/vicdual.c b/src/mame/drivers/vicdual.c
index 73e7682a86e..d180791cf48 100644
--- a/src/mame/drivers/vicdual.c
+++ b/src/mame/drivers/vicdual.c
@@ -207,14 +207,16 @@ int vicdual_state::is_cabinet_color()
WRITE8_MEMBER(vicdual_state::videoram_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_videoram[offset] = data;
}
WRITE8_MEMBER(vicdual_state::characterram_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_characterram[offset] = data;
}
diff --git a/src/mame/includes/osborne1.h b/src/mame/includes/osborne1.h
index 1c0564b9dbb..2edf952c22c 100644
--- a/src/mame/includes/osborne1.h
+++ b/src/mame/includes/osborne1.h
@@ -51,7 +51,6 @@ public:
m_bank1(*this, "bank1"),
m_bank2(*this, "bank2"),
m_bank3(*this, "bank3"),
- m_bank4(*this, "bank4"),
m_region_maincpu(*this, "maincpu") { }
virtual void video_start();
@@ -74,7 +73,6 @@ public:
DECLARE_WRITE8_MEMBER(osborne1_1000_w);
DECLARE_READ8_MEMBER(osborne1_2000_r);
DECLARE_WRITE8_MEMBER(osborne1_2000_w);
- DECLARE_WRITE8_MEMBER(osborne1_3000_w);
DECLARE_WRITE8_MEMBER(osborne1_videoram_w);
DECLARE_WRITE8_MEMBER(osborne1_bankswitch_w);
DECLARE_WRITE_LINE_MEMBER(ieee_pia_irq_a_func);
@@ -87,9 +85,7 @@ public:
DECLARE_DIRECT_UPDATE_MEMBER(osborne1_opbase);
bool m_bank2_enabled;
- bool m_bank3_enabled;
- UINT8 *m_bank4_ptr;
- UINT8 *m_empty_4K;
+ UINT8 m_bit_9;
/* IRQ states */
bool m_pia_0_irq_state;
bool m_pia_1_irq_state;
@@ -123,7 +119,6 @@ protected:
required_memory_bank m_bank1;
required_memory_bank m_bank2;
required_memory_bank m_bank3;
- required_memory_bank m_bank4;
required_memory_region m_region_maincpu;
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
diff --git a/src/mame/machine/315-5881_crypt.c b/src/mame/machine/315-5881_crypt.c
index 7997000400d..ec07d1c8380 100644
--- a/src/mame/machine/315-5881_crypt.c
+++ b/src/mame/machine/315-5881_crypt.c
@@ -47,7 +47,7 @@ void sega_315_5881_crypt_device::device_start()
save_item(NAME(line_buffer_pos));
save_item(NAME(line_buffer_size));
- std::string skey = parameter("key").c_str();
+ std::string skey = parameter("key");
if(!skey.empty())
key = strtoll(skey.c_str(), 0, 16);
else
diff --git a/src/mame/machine/naomim1.c b/src/mame/machine/naomim1.c
index 86f0119f578..84d2db5ecef 100644
--- a/src/mame/machine/naomim1.c
+++ b/src/mame/machine/naomim1.c
@@ -32,7 +32,7 @@ void naomi_m1_board::device_start()
{
naomi_board::device_start();
- std::string skey = parameter("key").c_str();
+ std::string skey = parameter("key");
if(!skey.empty())
key = strtoll(skey.c_str(), 0, 16);
else
diff --git a/src/mame/machine/osborne1.c b/src/mame/machine/osborne1.c
index 960a6a0f4d5..dbaf276fbbf 100644
--- a/src/mame/machine/osborne1.c
+++ b/src/mame/machine/osborne1.c
@@ -24,7 +24,7 @@ be written to RAM if RAM was switched in.
WRITE8_MEMBER( osborne1_state::osborne1_0000_w )
{
/* Check whether regular RAM is enabled */
- if ( ! m_bank2_enabled || ( m_in_irq_handler && m_bankswitch == RAMMODE ) )
+ if ( !m_bank2_enabled || ( m_in_irq_handler && m_bankswitch == RAMMODE) )
{
m_ram->pointer()[ offset ] = data;
}
@@ -34,7 +34,7 @@ WRITE8_MEMBER( osborne1_state::osborne1_0000_w )
WRITE8_MEMBER( osborne1_state::osborne1_1000_w )
{
/* Check whether regular RAM is enabled */
- if ( ! m_bank2_enabled || ( m_in_irq_handler && m_bankswitch == RAMMODE ) )
+ if ( !m_bank2_enabled || ( m_in_irq_handler && m_bankswitch == RAMMODE) )
{
m_ram->pointer()[ 0x1000 + offset ] = data;
}
@@ -46,13 +46,16 @@ READ8_MEMBER( osborne1_state::osborne1_2000_r )
UINT8 data = 0xFF;
/* Check whether regular RAM is enabled */
- if ( ! m_bank2_enabled )
+ if ( !m_bank2_enabled )
{
data = m_ram->pointer()[ 0x2000 + offset ];
}
else
{
- switch( offset & 0x0F00 )
+ // This isn't really accurate - bus fighting will occur for many values
+ // since each peripheral only checks two bits. We just return 0xFF for
+ // any undocumented address.
+ switch ( offset & 0x0F00 )
{
case 0x100: /* Floppy */
data = m_fdc->read( space, offset & 0x03 );
@@ -79,12 +82,12 @@ READ8_MEMBER( osborne1_state::osborne1_2000_r )
if (m_screen_pac) data &= 0xFB;
break;
case 0x900: /* IEEE488 PIA */
- data = m_pia0->read(space, offset & 0x03 );
+ data = m_pia0->read(space, offset & 0x03);
break;
case 0xA00: /* Serial */
break;
case 0xC00: /* Video PIA */
- data = m_pia1->read(space, offset & 0x03 );
+ data = m_pia1->read(space, offset & 0x03);
break;
}
}
@@ -95,45 +98,26 @@ READ8_MEMBER( osborne1_state::osborne1_2000_r )
WRITE8_MEMBER( osborne1_state::osborne1_2000_w )
{
/* Check whether regular RAM is enabled */
- if ( ! m_bank2_enabled )
+ if ( !m_bank2_enabled || (m_in_irq_handler && m_bankswitch == RAMMODE) )
{
m_ram->pointer()[ 0x2000 + offset ] = data;
}
else
{
- if ( m_in_irq_handler && m_bankswitch == RAMMODE )
- {
- m_ram->pointer()[ 0x2000 + offset ] = data;
- }
/* Handle writes to the I/O area */
- switch( offset & 0x0F00 )
+ if ( 0x100 == (offset & 0x900) ) /* Floppy */
+ m_fdc->write(space, offset & 0x03, data);
+ if ( 0x400 == (offset & 0xC00) ) /* SCREEN-PAC */
{
- case 0x100: /* Floppy */
- m_fdc->write(space, offset & 0x03, data );
- break;
- case 0x400: /* SCREEN-PAC */
m_resolution = data & 0x01;
m_hc_left = (data >> 1) & 0x01;
- break;
- case 0x900: /* IEEE488 PIA */
- m_pia0->write(space, offset & 0x03, data );
- break;
- case 0xA00: /* Serial */
- break;
- case 0xC00: /* Video PIA */
- m_pia1->write(space, offset & 0x03, data );
- break;
}
- }
-}
-
-
-WRITE8_MEMBER( osborne1_state::osborne1_3000_w )
-{
- /* Check whether regular RAM is enabled */
- if ( ! m_bank2_enabled || ( m_in_irq_handler && m_bankswitch == RAMMODE ) )
- {
- m_ram->pointer()[ 0x3000 + offset ] = data;
+ if ( 0x900 == (offset & 0x900) ) /* IEEE488 PIA */
+ m_pia0->write(space, offset & 0x03, data);
+ if ( 0xA00 == (offset & 0xA00) ) /* Serial */
+ /* not implemented */;
+ if ( 0xC00 == (offset & 0xC00) ) /* Video PIA */
+ m_pia1->write(space, offset & 0x03, data);
}
}
@@ -141,49 +125,43 @@ WRITE8_MEMBER( osborne1_state::osborne1_3000_w )
WRITE8_MEMBER( osborne1_state::osborne1_videoram_w )
{
/* Check whether the video attribute section is enabled */
- if ( m_bank3_enabled )
+ if ( m_bit_9 )
data |= 0x7F;
- m_bank4_ptr[offset] = data;
+ reinterpret_cast<UINT8 *>(m_bank3->base())[offset] = data;
}
WRITE8_MEMBER( osborne1_state::osborne1_bankswitch_w )
{
- switch( offset )
+ switch ( offset & 0x03 )
{
case 0x00:
m_bank2_enabled = 1;
- m_bank3_enabled = 0;
+ m_bankswitch = 0x00;
break;
case 0x01:
m_bank2_enabled = 0;
- m_bank3_enabled = 0;
+ m_bankswitch = 0x01;
break;
case 0x02:
- m_bank2_enabled = 1;
- m_bank3_enabled = 1;
+ m_bit_9 = 1;
break;
case 0x03:
- m_bank2_enabled = 1;
- m_bank3_enabled = 0;
+ m_bit_9 = 0;
break;
}
if ( m_bank2_enabled )
{
- m_bank1->set_base(m_region_maincpu->base() );
- m_bank2->set_base(m_empty_4K );
- m_bank3->set_base(m_empty_4K );
+ m_bank1->set_base(m_region_maincpu->base());
+ m_bank2->set_base(m_region_maincpu->base());
}
else
{
- m_bank1->set_base(m_ram->pointer() );
- m_bank2->set_base(m_ram->pointer() + 0x1000 );
- m_bank3->set_base(m_ram->pointer() + 0x3000 );
+ m_bank1->set_base(m_ram->pointer());
+ m_bank2->set_base(m_ram->pointer() + 0x1000);
}
- m_bank4_ptr = m_ram->pointer() + ( ( m_bank3_enabled ) ? 0x10000 : 0xF000 );
- m_bank4->set_base(m_bank4_ptr );
- m_bankswitch = offset;
+ m_bank3->set_base(m_ram->pointer() + (m_bit_9 ? 0x10000 : 0xF000));
m_in_irq_handler = 0;
}
@@ -394,7 +372,7 @@ TIMER_CALLBACK_MEMBER(osborne1_state::osborne1_video_callback)
}
}
- if ( (ra==2) || (ra== 6) )
+ if ( (ra==2) || (ra==6) )
{
m_beep->set_state( m_beep_state );
}
@@ -436,9 +414,6 @@ void osborne1_state::machine_reset()
DRIVER_INIT_MEMBER(osborne1_state,osborne1)
{
- m_empty_4K = auto_alloc_array(machine(), UINT8, 0x1000 );
- memset( m_empty_4K, 0xFF, 0x1000 );
-
/* Configure the 6850 ACIA */
// acia6850_config( 0, &osborne1_6850_config );
m_video_timer = timer_alloc(TIMER_VIDEO);
diff --git a/src/mame/video/btoads.c b/src/mame/video/btoads.c
index 8dbdec15400..7bbbfbcd014 100644
--- a/src/mame/video/btoads.c
+++ b/src/mame/video/btoads.c
@@ -93,7 +93,8 @@ WRITE16_MEMBER( btoads_state::display_control_w )
WRITE16_MEMBER( btoads_state::scroll0_w )
{
/* allow multiple changes during display */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
/* upper bits are Y scroll, lower bits are X scroll */
if (ACCESSING_BITS_8_15)
@@ -106,7 +107,8 @@ WRITE16_MEMBER( btoads_state::scroll0_w )
WRITE16_MEMBER( btoads_state::scroll1_w )
{
/* allow multiple changes during display */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
/* upper bits are Y scroll, lower bits are X scroll */
if (ACCESSING_BITS_8_15)
diff --git a/src/mame/video/cloak.c b/src/mame/video/cloak.c
index f9138f25970..18551ff6b52 100644
--- a/src/mame/video/cloak.c
+++ b/src/mame/video/cloak.c
@@ -92,7 +92,9 @@ void cloak_state::set_current_bitmap_videoram_pointer()
WRITE8_MEMBER(cloak_state::cloak_clearbmp_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
+
m_bitmap_videoram_selected = data & 0x01;
set_current_bitmap_videoram_pointer();
diff --git a/src/mame/video/dkong.c b/src/mame/video/dkong.c
index 1f8e700a2f1..484be075692 100644
--- a/src/mame/video/dkong.c
+++ b/src/mame/video/dkong.c
@@ -876,7 +876,8 @@ TIMER_CALLBACK_MEMBER(dkong_state::scanline_callback)
radarscp_scanline(scanline);
/* update any video up to the current scanline */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
scanline = (scanline+1) % VTOTAL;
/* come back at the next appropriate scanline */
diff --git a/src/mame/video/galaxian.c b/src/mame/video/galaxian.c
index ce800e92a83..1e84b9b0a9a 100644
--- a/src/mame/video/galaxian.c
+++ b/src/mame/video/galaxian.c
@@ -480,7 +480,8 @@ WRITE8_MEMBER(galaxian_state::galaxian_videoram_w)
{
UINT8 *videoram = m_videoram;
/* update any video up to the current scanline */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
/* store the data and mark the corresponding tile dirty */
videoram[offset] = data;
@@ -491,7 +492,8 @@ WRITE8_MEMBER(galaxian_state::galaxian_videoram_w)
WRITE8_MEMBER(galaxian_state::galaxian_objram_w)
{
/* update any video up to the current scanline */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
/* store the data */
m_spriteram[offset] = data;
@@ -641,7 +643,8 @@ WRITE8_MEMBER(galaxian_state::galaxian_flip_screen_x_w)
{
if (m_flipscreen_x != (data & 0x01))
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
/* when the direction changes, we count a different number of clocks */
/* per frame, so we need to reset the origin of the stars to the current */
@@ -657,7 +660,9 @@ WRITE8_MEMBER(galaxian_state::galaxian_flip_screen_y_w)
{
if (m_flipscreen_y != (data & 0x01))
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
+
m_flipscreen_y = data & 0x01;
m_bg_tilemap->set_flip((m_flipscreen_x ? TILEMAP_FLIPX : 0) | (m_flipscreen_y ? TILEMAP_FLIPY : 0));
}
@@ -680,7 +685,10 @@ WRITE8_MEMBER(galaxian_state::galaxian_flip_screen_xy_w)
WRITE8_MEMBER(galaxian_state::galaxian_stars_enable_w)
{
if ((m_stars_enabled ^ data) & 0x01)
- m_screen->update_now();
+ {
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
+ }
if (!m_stars_enabled && (data & 0x01))
{
@@ -697,7 +705,10 @@ WRITE8_MEMBER(galaxian_state::galaxian_stars_enable_w)
WRITE8_MEMBER(galaxian_state::scramble_background_enable_w)
{
if ((m_background_enable ^ data) & 0x01)
- m_screen->update_now();
+ {
+ // m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
+ }
m_background_enable = data & 0x01;
}
@@ -706,7 +717,10 @@ WRITE8_MEMBER(galaxian_state::scramble_background_enable_w)
WRITE8_MEMBER(galaxian_state::scramble_background_red_w)
{
if ((m_background_red ^ data) & 0x01)
- m_screen->update_now();
+ {
+ // m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
+ }
m_background_red = data & 0x01;
}
@@ -715,7 +729,10 @@ WRITE8_MEMBER(galaxian_state::scramble_background_red_w)
WRITE8_MEMBER(galaxian_state::scramble_background_green_w)
{
if ((m_background_green ^ data) & 0x01)
- m_screen->update_now();
+ {
+ // m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
+ }
m_background_green = data & 0x01;
}
@@ -724,7 +741,10 @@ WRITE8_MEMBER(galaxian_state::scramble_background_green_w)
WRITE8_MEMBER(galaxian_state::scramble_background_blue_w)
{
if ((m_background_blue ^ data) & 0x01)
- m_screen->update_now();
+ {
+ // m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
+ }
m_background_blue = data & 0x01;
}
@@ -741,7 +761,8 @@ WRITE8_MEMBER(galaxian_state::galaxian_gfxbank_w)
{
if (m_gfxbank[offset] != data)
{
- m_screen->update_now();
+ //m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_gfxbank[offset] = data;
m_bg_tilemap->mark_all_dirty();
}
diff --git a/src/mame/video/gyruss.c b/src/mame/video/gyruss.c
index 316a748a971..bf1038ac72b 100644
--- a/src/mame/video/gyruss.c
+++ b/src/mame/video/gyruss.c
@@ -93,7 +93,8 @@ PALETTE_INIT_MEMBER(gyruss_state, gyruss)
WRITE8_MEMBER(gyruss_state::gyruss_spriteram_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_spriteram[offset] = data;
}
diff --git a/src/mame/video/itech8.c b/src/mame/video/itech8.c
index 42a80eb9291..8920c8c423f 100644
--- a/src/mame/video/itech8.c
+++ b/src/mame/video/itech8.c
@@ -537,7 +537,8 @@ WRITE8_MEMBER(itech8_state::grmatch_palette_w)
WRITE8_MEMBER(itech8_state::grmatch_xscroll_w)
{
/* update the X scroll value */
- m_screen->update_now();
+ //m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_grmatch_xscroll = data;
}
diff --git a/src/mame/video/meadows.c b/src/mame/video/meadows.c
index 45d2cedfd3a..d378f15a7cf 100644
--- a/src/mame/video/meadows.c
+++ b/src/mame/video/meadows.c
@@ -64,7 +64,8 @@ WRITE8_MEMBER(meadows_state::meadows_videoram_w)
WRITE8_MEMBER(meadows_state::meadows_spriteram_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_spriteram[offset] = data;
}
diff --git a/src/mame/video/qix.c b/src/mame/video/qix.c
index 53cacf4a472..5bd717ecbc3 100644
--- a/src/mame/video/qix.c
+++ b/src/mame/video/qix.c
@@ -99,7 +99,8 @@ WRITE8_MEMBER(qix_state::qix_videoram_w)
{
/* update the screen in case the game is writing "behind" the beam -
Zookeeper likes to do this */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
/* add in the upper bit of the address latch */
offset += (m_videoram_address[0] & 0x80) << 8;
@@ -113,7 +114,8 @@ WRITE8_MEMBER(qix_state::slither_videoram_w)
{
/* update the screen in case the game is writing "behind" the beam -
Zookeeper likes to do this */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
/* add in the upper bit of the address latch */
offset += (m_videoram_address[0] & 0x80) << 8;
@@ -150,7 +152,8 @@ READ8_MEMBER(qix_state::qix_addresslatch_r)
WRITE8_MEMBER(qix_state::qix_addresslatch_w)
{
/* update the screen in case the game is writing "behind" the beam */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
/* compute the value at the address latch */
offset = (m_videoram_address[0] << 8) | m_videoram_address[1];
@@ -163,7 +166,8 @@ WRITE8_MEMBER(qix_state::qix_addresslatch_w)
WRITE8_MEMBER(qix_state::slither_addresslatch_w)
{
/* update the screen in case the game is writing "behind" the beam */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
/* compute the value at the address latch */
offset = (m_videoram_address[0] << 8) | m_videoram_address[1];
@@ -191,7 +195,10 @@ WRITE8_MEMBER(qix_state::qix_paletteram_w)
/* trigger an update if a currently visible pen has changed */
if (((offset >> 8) == m_palette_bank) &&
(old_data != data))
- m_screen->update_now();
+ {
+ // m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
+ }
set_pen(offset);
}
@@ -202,7 +209,8 @@ WRITE8_MEMBER(qix_state::qix_palettebank_w)
/* set the bank value */
if (m_palette_bank != (data & 3))
{
- m_screen->update_now();
+ //m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_palette_bank = data & 3;
}
diff --git a/src/mame/video/spacefb.c b/src/mame/video/spacefb.c
index c663655dc32..94499a825c3 100644
--- a/src/mame/video/spacefb.c
+++ b/src/mame/video/spacefb.c
@@ -19,14 +19,16 @@
WRITE8_MEMBER(spacefb_state::port_0_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_port_0 = data;
}
WRITE8_MEMBER(spacefb_state::port_2_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_port_2 = data;
}
diff --git a/src/mame/video/system1.c b/src/mame/video/system1.c
index b731529a82e..e88587e69ea 100644
--- a/src/mame/video/system1.c
+++ b/src/mame/video/system1.c
@@ -190,19 +190,22 @@ WRITE8_MEMBER(system1_state::system1_videomode_w)
READ8_MEMBER(system1_state::system1_mixer_collision_r)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
return m_mix_collide[offset & 0x3f] | 0x7e | (m_mix_collide_summary << 7);
}
WRITE8_MEMBER(system1_state::system1_mixer_collision_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_mix_collide[offset & 0x3f] = 0;
}
WRITE8_MEMBER(system1_state::system1_mixer_collision_reset_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_mix_collide_summary = 0;
}
@@ -216,19 +219,22 @@ WRITE8_MEMBER(system1_state::system1_mixer_collision_reset_w)
READ8_MEMBER(system1_state::system1_sprite_collision_r)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
return m_sprite_collide[offset & 0x3ff] | 0x7e | (m_sprite_collide_summary << 7);
}
WRITE8_MEMBER(system1_state::system1_sprite_collision_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_sprite_collide[offset & 0x3ff] = 0;
}
WRITE8_MEMBER(system1_state::system1_sprite_collision_reset_w)
{
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_sprite_collide_summary = 0;
}
@@ -274,7 +280,10 @@ WRITE8_MEMBER(system1_state::system1_videoram_w)
/* force a partial update if the page is changing */
if (m_tilemap_pages > 2 && offset >= 0x740 && offset < 0x748 && offset % 2 == 0)
- m_screen->update_now();
+ {
+ //m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
+ }
}
WRITE8_MEMBER(system1_state::system1_videoram_bank_w)
diff --git a/src/mame/video/tp84.c b/src/mame/video/tp84.c
index fc2f2196bba..cf95dafbc4f 100644
--- a/src/mame/video/tp84.c
+++ b/src/mame/video/tp84.c
@@ -106,7 +106,8 @@ PALETTE_INIT_MEMBER(tp84_state, tp84)
WRITE8_MEMBER(tp84_state::tp84_spriteram_w)
{
/* the game multiplexes the sprites, so update now */
- m_screen->update_now();
+// m_screen->update_now();
+ m_screen->update_partial(m_screen->vpos());
m_spriteram[offset] = data;
}