| Previous | 199869 Revisions | Next |
| r41409 Wednesday 28th October, 2015 at 02:30:18 UTC by Roberto Fresca |
|---|
| Merge branch 'master' of https://github.com/mamedev/mame |
| [hash] | spectrum_cass.xml |
| [src/devices/cpu/avr8] | avr8.c |
| [src/devices/cpu/dsp56k] | pmove.h |
| [src/devices/cpu/e132xs] | e132xs.c |
| [src/devices/cpu/esrip] | esrip.c |
| [src/devices/cpu/m6805] | m6805.c |
| [src/devices/cpu/ssem] | ssem.c |
| [src/devices/cpu/upd7725] | upd7725.c |
| [src/devices/machine] | atahle.c r10696.c |
| [src/emu] | diimage.c emuopts.c info.c machine.c memory.c romload.c softlist.c validity.c video.c |
| [src/emu/ui] | filemngr.c inputmap.c |
| [src/lib/formats] | tzx_cas.c |
| [src/mame] | arcade.lst |
| [src/mame/drivers] | beathead.c cardline.c cave.c cubeqst.c firefox.c galaxian.c merit.c osborne1.c pgm.c segac2.c segas24.c slotcarn.c vicdual.c |
| [src/mame/includes] | osborne1.h |
| [src/mame/machine] | 315-5881_crypt.c naomim1.c osborne1.c |
| [src/mame/video] | btoads.c cloak.c dkong.c galaxian.c gyruss.c itech8.c meadows.c qix.c spacefb.c system1.c tp84.c |
| r249920 | r249921 | |
|---|---|---|
| 797 | 797 | </dataarea> |
| 798 | 798 | </part> |
| 799 | 799 | </software> |
| 800 | ||
| 800 | ||
| 801 | 801 | <!-- V1.0 doesn't exist in Spanish? or Italian (translations were made after the 1.1 release) --> |
| 802 | ||
| 802 | ||
| 803 | <!-- what are these? were there unannounced updates at some point? check data, remove if just duplicate --> | |
| 804 | <software name="castlvsia" cloneof="castlvsi"> | |
| 805 | <description>Castlevania - Spectral Interlude (alt, English, 128K)</description> | |
| 806 | <year>2015</year> | |
| 807 | <publisher>Rewind</publisher> | |
| 808 | <part name="cass" interface="spectrum_cass"> | |
| 809 | <dataarea name="cass" size="126416"> | |
| 810 | <rom name="castlevania_si_en.tap" size="126416" crc="c7fb2adf" sha1="22fdb537a3e4b3ed05aac82f34103212c179db4a" offset="0"/> | |
| 811 | </dataarea> | |
| 812 | </part> | |
| 813 | </software> | |
| 814 | ||
| 815 | <software name="castlvsirua" cloneof="castlvsi"> | |
| 816 | <description>Castlevania - Spectral Interlude (alt, Russian, 128K)</description> | |
| 817 | <year>2015</year> | |
| 818 | <publisher>Rewind</publisher> | |
| 819 | <part name="cass" interface="spectrum_cass"> | |
| 820 | <dataarea name="cass" size="127075"> | |
| 821 | <rom name="castlevania_si_ru.tap" size="127075" crc="e4e9bd2a" sha1="8bae5e5d2e310335f3aba96b2a0ed6c5c447eb18" offset="0"/> | |
| 822 | </dataarea> | |
| 823 | </part> | |
| 824 | </software> | |
| 825 | ||
| 826 | <software name="castlvsipla" cloneof="castlvsi"> | |
| 827 | <description>Castlevania - Spectral Interlude (alt, Polish, 128K)</description> | |
| 828 | <year>2015</year> | |
| 829 | <publisher>Rewind</publisher> | |
| 830 | <part name="cass" interface="spectrum_cass"> | |
| 831 | <dataarea name="cass" size="127413"> | |
| 832 | <rom name="castlevania_si_pl.tap" size="127413" crc="98e2c6a6" sha1="6eb777aa7c0c057cf04f3162e7e80f6c4286e406" offset="0"/> | |
| 833 | </dataarea> | |
| 834 | </part> | |
| 835 | </software> | |
| 836 | ||
| 837 | <software name="castlvsiesa" cloneof="castlvsi"> | |
| 838 | <description>Castlevania - Spectral Interlude (alt, Spanish, 128K)</description> | |
| 839 | <year>2015</year> | |
| 840 | <publisher>Rewind</publisher> | |
| 841 | <part name="cass" interface="spectrum_cass"> | |
| 842 | <dataarea name="cass" size="126973"> | |
| 843 | <rom name="castlevania_si_es.tap" size="126973" crc="4479be59" sha1="c5c816d4b02526c37ea44cbac8d1836ca03fd2fe" offset="0"/> | |
| 844 | </dataarea> | |
| 845 | </part> | |
| 846 | </software> | |
| 803 | 847 | </softwarelist> |
| 804 | 848 | |
| 805 | 849 |
| r249920 | r249921 | |
|---|---|---|
| 752 | 752 | m_io = &space(AS_IO); |
| 753 | 753 | |
| 754 | 754 | // register our state for the debugger |
| 755 | std::string tempstr; | |
| 756 | 755 | state_add(STATE_GENPC, "GENPC", m_shifted_pc).noshow(); |
| 757 | 756 | state_add(STATE_GENFLAGS, "GENFLAGS", m_r[AVR8_REGIDX_SREG]).callimport().callexport().formatstr("%8s").noshow(); |
| 758 | 757 | state_add(AVR8_SREG, "STATUS", m_r[AVR8_REGIDX_SREG]).mask(0xff); |
| r249920 | r249921 | |
|---|---|---|
| 315 | 315 | { |
| 316 | 316 | INT8 b; |
| 317 | 317 | reg_id SD; |
| 318 | std::string args; | |
| 319 | ||
| 320 | 318 | b = (char)(word0 & 0x00ff); |
| 321 | 319 | decode_HHH_table(BITSn(word1,0x0e00), SD); |
| 322 | 320 | assemble_reg_from_W_table(BITSn(word1,0x0100), 'X', SD, b, m_source, m_destination); |
| r249920 | r249921 | |
|---|---|---|
| 1562 | 1562 | m_clock_scale_mask = scale_mask; |
| 1563 | 1563 | |
| 1564 | 1564 | // register our state for the debugger |
| 1565 | std::string tempstr; | |
| 1566 | 1565 | state_add(STATE_GENPC, "GENPC", m_global_regs[0]).noshow(); |
| 1567 | 1566 | state_add(STATE_GENFLAGS, "GENFLAGS", m_global_regs[1]).callimport().callexport().formatstr("%40s").noshow(); |
| 1568 | 1567 | state_add(E132XS_PC, "PC", m_global_regs[0]).mask(0xffffffff); |
| r249920 | r249921 | |
|---|---|---|
| 193 | 193 | m_direct = &m_program->direct(); |
| 194 | 194 | |
| 195 | 195 | // register our state for the debugger |
| 196 | std::string tempstr; | |
| 197 | 196 | state_add(STATE_GENPC, "GENPC", m_rip_pc).noshow(); |
| 198 | 197 | state_add(STATE_GENFLAGS, "GENFLAGS", m_status).callimport().callexport().formatstr("%8s").noshow(); |
| 199 | 198 | state_add(ESRIP_PC, "PC:", m_rip_pc).mask(0xffff); |
| r249920 | r249921 | |
|---|---|---|
| 424 | 424 | m_icountptr = &m_icount; |
| 425 | 425 | |
| 426 | 426 | // register our state for the debugger |
| 427 | std::string tempstr; | |
| 428 | 427 | state_add(STATE_GENPC, "GENPC", m_pc.w.l).noshow(); |
| 429 | 428 | state_add(STATE_GENFLAGS, "GENFLAGS", m_cc).callimport().callexport().formatstr("%8s").noshow(); |
| 430 | 429 | state_add(M6805_A, "A", m_a).mask(0xff); |
| r249920 | r249921 | |
|---|---|---|
| 100 | 100 | m_program = &space(AS_PROGRAM); |
| 101 | 101 | |
| 102 | 102 | // register our state for the debugger |
| 103 | std::string tempstr; | |
| 104 | 103 | state_add(STATE_GENPC, "GENPC", m_pc).noshow(); |
| 105 | 104 | state_add(STATE_GENFLAGS, "GENFLAGS", m_halt).callimport().callexport().formatstr("%1s").noshow(); |
| 106 | 105 | state_add(SSEM_PC, "PC", m_shifted_pc).mask(0xffff); |
| r249920 | r249921 | |
|---|---|---|
| 69 | 69 | m_direct = &m_program->direct(); |
| 70 | 70 | |
| 71 | 71 | // register our state for the debugger |
| 72 | std::string tempstr; | |
| 73 | 72 | state_add(STATE_GENPC, "GENPC", regs.pc).noshow(); |
| 74 | 73 | state_add(UPD7725_PC, "PC", regs.pc); |
| 75 | 74 | state_add(UPD7725_RP, "RP", regs.rp); |
| r249920 | r249921 | |
|---|---|---|
| 470 | 470 | if ((multi_word_dma_mode() >= 0) || (ultra_dma_mode() >= 0)) |
| 471 | 471 | set_dmarq(CLEAR_LINE); |
| 472 | 472 | |
| 473 | m_buffer_empty_timer->enable(true); | |
| 474 | m_buffer_empty_timer->adjust(attotime::zero); | |
| 473 | if (ultra_dma_mode() >= 0) { | |
| 474 | m_buffer_empty_timer->enable(true); | |
| 475 | m_buffer_empty_timer->adjust(attotime::zero); | |
| 476 | } | |
| 477 | else | |
| 478 | fill_buffer(); | |
| 475 | 479 | } |
| 476 | 480 | |
| 477 | 481 | void ata_hle_device::write_buffer_full() |
| r249920 | r249921 | |
|---|---|---|
| 154 | 154 | io_a = m_iord(0); |
| 155 | 155 | io_b = m_iord(1); |
| 156 | 156 | io_c = m_iord(2); |
| 157 | data = (io_a | io_b | io_ | |
| 157 | data = (io_a | io_b | io_c) & 0x0f; | |
| 158 | 158 | break; |
| 159 | 159 | case 0x01: // Read Groups B | C |
| 160 | 160 | io_b = m_iord(1); |
| r249920 | r249921 | |
|---|---|---|
| 758 | 758 | { |
| 759 | 759 | std::string locationtag, breakstr("%"); |
| 760 | 760 | const rom_entry *region; |
| 761 | std::string regiontag; | |
| 762 | 761 | bool retVal = FALSE; |
| 763 | 762 | int warningcount = 0; |
| 764 | 763 | for (region = start; region != NULL; region = rom_next_region(region)) |
| r249920 | r249921 | |
|---|---|---|
| 582 | 582 | { |
| 583 | 583 | std::string tmp = std::string(",").append(subname).append("="); |
| 584 | 584 | buffer = value(name); |
| 585 | int pos = buffer.find(tmp | |
| 585 | int pos = buffer.find(tmp); | |
| 586 | 586 | if (pos != -1) |
| 587 | 587 | { |
| 588 | 588 | int endpos = buffer.find_first_of(',', pos + 1); |
| r249920 | r249921 | |
|---|---|---|
| 645 | 645 | if (strcmp(exec->device().tag(), device.tag())) |
| 646 | 646 | { |
| 647 | 647 | std::string newtag(exec->device().tag()), oldtag(":"); |
| 648 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag) | |
| 648 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); | |
| 649 | 649 | |
| 650 | 650 | fprintf(m_output, "\t\t<chip"); |
| 651 | 651 | fprintf(m_output, " type=\"cpu\""); |
| r249920 | r249921 | |
| 663 | 663 | if (strcmp(sound->device().tag(), device.tag())) |
| 664 | 664 | { |
| 665 | 665 | std::string newtag(sound->device().tag()), oldtag(":"); |
| 666 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag) | |
| 666 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); | |
| 667 | 667 | |
| 668 | 668 | fprintf(m_output, "\t\t<chip"); |
| 669 | 669 | fprintf(m_output, " type=\"audio\""); |
| r249920 | r249921 | |
| 691 | 691 | if (strcmp(screendev->tag(), device.tag())) |
| 692 | 692 | { |
| 693 | 693 | std::string newtag(screendev->tag()), oldtag(":"); |
| 694 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag) | |
| 694 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); | |
| 695 | 695 | |
| 696 | 696 | fprintf(m_output, "\t\t<display"); |
| 697 | 697 | fprintf(m_output, " tag=\"%s\"", xml_normalize_string(newtag.c_str())); |
| r249920 | r249921 | |
| 1097 | 1097 | std::string output; |
| 1098 | 1098 | |
| 1099 | 1099 | std::string newtag(port->tag()), oldtag(":"); |
| 1100 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag) | |
| 1100 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); | |
| 1101 | 1101 | |
| 1102 | 1102 | // output the switch name information |
| 1103 | 1103 | std::string normalized_field_name(xml_normalize_string(field->name())); |
| r249920 | r249921 | |
| 1228 | 1228 | if (strcmp(imagedev->device().tag(), device.tag())) |
| 1229 | 1229 | { |
| 1230 | 1230 | std::string newtag(imagedev->device().tag()), oldtag(":"); |
| 1231 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag) | |
| 1231 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); | |
| 1232 | 1232 | |
| 1233 | 1233 | // print m_output device type |
| 1234 | 1234 | fprintf(m_output, "\t\t<device type=\"%s\"", xml_normalize_string(imagedev->image_type_name())); |
| r249920 | r249921 | |
| 1286 | 1286 | if (strcmp(slot->device().tag(), device.tag())) |
| 1287 | 1287 | { |
| 1288 | 1288 | std::string newtag(slot->device().tag()), oldtag(":"); |
| 1289 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag) | |
| 1289 | newtag = newtag.substr(newtag.find(oldtag.append(root_tag)) + oldtag.length()); | |
| 1290 | 1290 | |
| 1291 | 1291 | // print m_output device type |
| 1292 | 1292 | fprintf(m_output, "\t\t<slot name=\"%s\">\n", xml_normalize_string(newtag.c_str())); |
| r249920 | r249921 | |
|---|---|---|
| 206 | 206 | else if (strlen(options().autoboot_command())!=0) { |
| 207 | 207 | std::string cmd = std::string(options().autoboot_command()); |
| 208 | 208 | strreplace(cmd, "'", "\\'"); |
| 209 | std::string val = std::string("emu.keypost('").append(cmd | |
| 209 | std::string val = std::string("emu.keypost('").append(cmd).append("')"); | |
| 210 | 210 | manager().lua()->load_string(val.c_str()); |
| 211 | 211 | } |
| 212 | 212 | } |
| r249920 | r249921 | |
| 563 | 563 | |
| 564 | 564 | // handle %d in the template (for image devices) |
| 565 | 565 | std::string statename_dev("%d_"); |
| 566 | int pos = statename_str.find(statename_dev | |
| 566 | int pos = statename_str.find(statename_dev); | |
| 567 | 567 | |
| 568 | 568 | if (pos != -1) |
| 569 | 569 | { |
| r249920 | r249921 | |
|---|---|---|
| 1929 | 1929 | void address_space::populate_map_entry(const address_map_entry &entry, read_or_write readorwrite) |
| 1930 | 1930 | { |
| 1931 | 1931 | const map_handler_data &data = (readorwrite == ROW_READ) ? entry.m_read : entry.m_write; |
| 1932 | std::string fulltag; | |
| 1933 | ||
| 1934 | 1932 | // based on the handler type, alter the bits, name, funcptr, and object |
| 1935 | 1933 | switch (data.m_type) |
| 1936 | 1934 | { |
| r249920 | r249921 | |
|---|---|---|
| 675 | 675 | } |
| 676 | 676 | |
| 677 | 677 | // prepare locations where we have to load from: list/parentname & list/clonename |
| 678 | std::string swlist(tag1 | |
| 678 | std::string swlist(tag1); | |
| 679 | 679 | tag2.assign(swlist.append(tag4)); |
| 680 | 680 | if (has_parent) |
| 681 | 681 | { |
| r249920 | r249921 | |
| 1076 | 1076 | } |
| 1077 | 1077 | |
| 1078 | 1078 | // prepare locations where we have to load from: list/parentname (if any) & list/clonename |
| 1079 | std::string swlist(tag1 | |
| 1079 | std::string swlist(tag1); | |
| 1080 | 1080 | tag2.assign(swlist.append(tag4)); |
| 1081 | 1081 | if (has_parent) |
| 1082 | 1082 | { |
| r249920 | r249921 | |
|---|---|---|
| 158 | 158 | for (int start = 0, end = filt.find_first_of(',',start); end != -1; start = end + 1, end = filt.find_first_of(',', start)) |
| 159 | 159 | { |
| 160 | 160 | std::string token(filt, start, end - start + 1); |
| 161 | if (comp.find(token | |
| 161 | if (comp.find(token) != -1) | |
| 162 | 162 | return true; |
| 163 | 163 | } |
| 164 | 164 | return false; |
| r249920 | r249921 | |
| 181 | 181 | |
| 182 | 182 | // then add a comma to the end of our interface and return true if we find it in the list string |
| 183 | 183 | std::string our_interface = std::string(m_interface).append(","); |
| 184 | return (interfaces.find(our_interface | |
| 184 | return (interfaces.find(our_interface) != -1); | |
| 185 | 185 | } |
| 186 | 186 | |
| 187 | 187 |
| r249920 | r249921 | |
|---|---|---|
| 104 | 104 | { |
| 105 | 105 | std::string buffer, tmp_inst, tmp_name; |
| 106 | 106 | bool first_entry = true; |
| 107 | std::string prev_owner; | |
| 108 | 107 | |
| 109 | 108 | if (!m_warnings.empty()) |
| 110 | 109 | { |
| r249920 | r249921 | |
|---|---|---|
| 91 | 91 | { |
| 92 | 92 | input_item_data *itemlist = NULL; |
| 93 | 93 | int suborder[SEQ_TYPE_TOTAL]; |
| 94 | std::string tempstring; | |
| 95 | 94 | int sortorder = 1; |
| 96 | 95 | |
| 97 | 96 | /* create a mini lookup table for sort order based on sequence type */ |
| r249920 | r249921 | |
| 154 | 153 | { |
| 155 | 154 | input_item_data *itemlist = NULL; |
| 156 | 155 | int suborder[SEQ_TYPE_TOTAL]; |
| 157 | std::string tempstring; | |
| 158 | 156 | int port_count = 0; |
| 159 | 157 | |
| 160 | 158 | /* create a mini lookup table for sort order based on sequence type */ |
| r249920 | r249921 | |
|---|---|---|
| 196 | 196 | // if we had warnings or errors, output |
| 197 | 197 | if (m_errors > 0 || m_warnings > 0) |
| 198 | 198 | { |
| 199 | std::string tempstr; | |
| 200 | 199 | output_via_delegate(OSD_OUTPUT_CHANNEL_ERROR, "Core: %d errors, %d warnings\n", m_errors, m_warnings); |
| 201 | 200 | if (m_errors > 0) |
| 202 | 201 | { |
| r249920 | r249921 | |
|---|---|---|
| 1126 | 1126 | |
| 1127 | 1127 | // handle %d in the template (for image devices) |
| 1128 | 1128 | std::string snapdev("%d_"); |
| 1129 | int pos = snapstr.find(snapdev | |
| 1129 | int pos = snapstr.find(snapdev); | |
| 1130 | 1130 | |
| 1131 | 1131 | if (pos != -1) |
| 1132 | 1132 | { |
| r249920 | r249921 | |
|---|---|---|
| 296 | 296 | return size; |
| 297 | 297 | } |
| 298 | 298 | |
| 299 | static int tzx_handle_direct(INT16 **buffer, const UINT8 *bytes, int pause, int data_size, int tstates, int bits_in_last_byte) | |
| 300 | { | |
| 301 | int size = 0; | |
| 302 | int samples = tcycles_to_samplecount(tstates); | |
| 303 | ||
| 304 | /* data */ | |
| 305 | for (int data_index = 0; data_index < data_size; data_index++) | |
| 306 | { | |
| 307 | UINT8 byte = bytes[data_index]; | |
| 308 | int bits_to_go = (data_index == (data_size - 1)) ? bits_in_last_byte : 8; | |
| 309 | ||
| 310 | for ( ; bits_to_go > 0; byte <<= 1, bits_to_go--) | |
| 311 | { | |
| 312 | if (byte & 0x80) wave_data = WAVE_HIGH; | |
| 313 | else wave_data = WAVE_LOW; | |
| 314 | ||
| 315 | tzx_output_wave(buffer, samples); | |
| 316 | size += samples; | |
| 317 | ||
| 318 | } | |
| 319 | } | |
| 320 | ||
| 321 | /* pause */ | |
| 322 | if (pause > 0) | |
| 323 | { | |
| 324 | int start_pause_samples = millisec_to_samplecount(1); | |
| 325 | int rest_pause_samples = millisec_to_samplecount(pause - 1); | |
| 326 | ||
| 327 | tzx_output_wave(buffer, start_pause_samples); | |
| 328 | size += start_pause_samples; | |
| 329 | wave_data = WAVE_LOW; | |
| 330 | tzx_output_wave(buffer, rest_pause_samples); | |
| 331 | size += rest_pause_samples; | |
| 332 | } | |
| 333 | return size; | |
| 334 | } | |
| 335 | ||
| 336 | ||
| 299 | 337 | static void ascii_block_common_log( const char *block_type_string, UINT8 block_type ) |
| 300 | 338 | { |
| 301 | 339 | LOG_FORMATS("%s (type %02x) encountered.\n", block_type_string, block_type); |
| r249920 | r249921 | |
| 343 | 381 | int bit0, bit1, bits_in_last_byte; |
| 344 | 382 | UINT8 *cur_block = blocks[current_block]; |
| 345 | 383 | UINT8 block_type = cur_block[0]; |
| 384 | UINT16 tstates = 0; | |
| 346 | 385 | |
| 347 | ||
| 348 | 386 | /* Uncomment this to include into error.log a list of the types each block */ |
| 349 | 387 | LOG_FORMATS("tzx_cas_fill_wave: block %d, block_type %02x\n", current_block, block_type); |
| 350 | 388 | |
| r249920 | r249921 | |
| 516 | 554 | current_block++; |
| 517 | 555 | break; |
| 518 | 556 | |
| 519 | case 0x15: /* Direct Recording */ | |
| 557 | case 0x15: /* Direct Recording */ // used on 'bombscar' in the cpc_cass list | |
| 520 | 558 | // having this missing is fatal |
| 521 | printf("Unsupported block type (0x15 - Direct Recording) encountered.\n"); | |
| 559 | tstates = cur_block[1] + (cur_block[2] << 8); | |
| 560 | pause_time= cur_block[3] + (cur_block[4] << 8); | |
| 561 | bits_in_last_byte = cur_block[5]; | |
| 562 | data_size = cur_block[6] + (cur_block[7] << 8) + (cur_block[8] << 16); | |
| 563 | size += tzx_handle_direct(buffer, &cur_block[9], pause_time, data_size, tstates, bits_in_last_byte); | |
| 522 | 564 | current_block++; |
| 523 | 565 | break; |
| 524 | 566 |
| r249920 | r249921 | |
|---|---|---|
| 2870 | 2870 | ppsatan // (c) 1996 <unknown> |
| 2871 | 2871 | ddonpach // (c) 1997 Atlus/Cave |
| 2872 | 2872 | ddonpachj // (c) 1997 Atlus/Cave |
| 2873 | ddonpacha // hack | |
| 2873 | 2874 | dfeveron // (c) 1998 Cave + Nihon System license |
| 2874 | 2875 | feversos // (c) 1998 Cave + Nihon System license |
| 2875 | 2876 | esprade // (c) 1998 Atlus/Cave |
| r249920 | r249921 | |
| 10185 | 10186 | svgtw |
| 10186 | 10187 | svgpcb // |
| 10187 | 10188 | ket // (c) 2002 Ketsui |
| 10189 | ket1 // | |
| 10188 | 10190 | keta // |
| 10189 | 10191 | ketb // |
| 10192 | ketarr // hack | |
| 10193 | ketarr151 // hack | |
| 10194 | ketarr15 // hack | |
| 10195 | ketarr10 // hack | |
| 10196 | ketarrs151 // hack | |
| 10197 | ketarrs15 // hack | |
| 10198 | ketarrf // hack | |
| 10190 | 10199 | ddpdoj // (c) 2002 DoDonPachi Dai-Ou-Jou |
| 10191 | 10200 | ddpdoja // |
| 10192 | 10201 | ddpdojb // |
| r249920 | r249921 | |
|---|---|---|
| 120 | 120 | int scanline = param; |
| 121 | 121 | |
| 122 | 122 | /* update the video */ |
| 123 | m_screen->update_now(); | |
| 123 | // m_screen->update_now(); | |
| 124 | m_screen->update_partial(m_screen->vpos()); | |
| 124 | 125 | |
| 125 | 126 | /* on scanline zero, clear any halt condition */ |
| 126 | 127 | if (scanline == 0) |
| r249920 | r249921 | |
|---|---|---|
| 139 | 139 | { |
| 140 | 140 | /* update any video up to the current scanline */ |
| 141 | 141 | m_hsync_q = (state ? 0x00 : 0x10); |
| 142 | m_screen->update_now(); | |
| 142 | // m_screen->update_now(); | |
| 143 | m_screen->update_partial(m_screen->vpos()); | |
| 143 | 144 | } |
| 144 | 145 | |
| 145 | 146 | WRITE_LINE_MEMBER(cardline_state::vsync_changed) |
| r249920 | r249921 | |
|---|---|---|
| 72 | 72 | PCBs were shown running (and could be played) at a Cave fan show known as Cave Festival 2006. There are |
| 73 | 73 | videos of the game being played floating around the internet and on YouTube. AKA DDP-CV or DDP BLUE ROM |
| 74 | 74 | |
| 75 | Dodonpachi Arrange: This version is a hack by trap15 and ment to be a tribute to the game. It is neither a | |
| 76 | long lost version or official release from Cave and therefore not suitable for MAME. | |
| 77 | ||
| 78 | Known rom version 1.1: | |
| 79 | File CRC32 SHA1 | |
| 80 | --------------------------------------------------------- | |
| 81 | u27.bin 44b899ae 798ec437d861b94fcd90c99a7015dd420887c788 | |
| 82 | u26.bin 727a09a8 91876386855f19e8a3d8d1df71dfe9b3d98e9ea9 | |
| 83 | u51.bin 0f3e5148 3016f4d075940feae691389606cd2aa7ac53849e | |
| 84 | u62.bin 42e4c6c5 4d282f7592f5fc5e11839c57f39cae20b8422aa1 | |
| 85 | ||
| 86 | 75 | ***************************************************************************/ |
| 87 | 76 | |
| 88 | 77 | #include "emu.h" |
| r249920 | r249921 | |
| 3162 | 3151 | ROM_END |
| 3163 | 3152 | |
| 3164 | 3153 | |
| 3154 | ROM_START( ddonpacha ) | |
| 3155 | ROM_REGION( 0x100000, "maincpu", 0 ) /* 68000 Code */ | |
| 3156 | ROM_LOAD16_BYTE( "arrange_u27.bin", 0x000000, 0x080000, CRC(44b899ae) SHA1(798ec437d861b94fcd90c99a7015dd420887c788) ) | |
| 3157 | ROM_LOAD16_BYTE( "arrange_u26.bin", 0x000001, 0x080000, CRC(727a09a8) SHA1(91876386855f19e8a3d8d1df71dfe9b3d98e9ea9) ) | |
| 3158 | ||
| 3159 | ROM_REGION( 0x800000 * 2, "sprites0", 0 ) /* Sprites: * 2 */ | |
| 3160 | ROM_LOAD( "u50.bin", 0x000000, 0x200000, CRC(14b260ec) SHA1(33bda210302428d5500115d0c7a839cdfcb67d17) ) | |
| 3161 | ROM_LOAD( "arrange_u51.bin", 0x200000, 0x200000, CRC(0f3e5148) SHA1(3016f4d075940feae691389606cd2aa7ac53849e) ) | |
| 3162 | ROM_LOAD( "u52.bin", 0x400000, 0x200000, CRC(02492ee0) SHA1(64d9cc64a4ad189a8b03cf6a749ddb732b4a0014) ) | |
| 3163 | ROM_LOAD( "u53.bin", 0x600000, 0x200000, CRC(cb4c10f0) SHA1(a622e8bd0c938b5d38b392b247400b744d8be288) ) | |
| 3164 | ||
| 3165 | ROM_REGION( 0x200000, "layer0", 0 ) /* Layer 0 */ | |
| 3166 | ROM_LOAD( "u60.bin", 0x000000, 0x200000, CRC(903096a7) SHA1(a243e903fef7c4a7b71383263e82e42acd869261) ) | |
| 3167 | ||
| 3168 | ROM_REGION( 0x200000, "layer1", 0 ) /* Layer 1 */ | |
| 3169 | ROM_LOAD( "u61.bin", 0x000000, 0x200000, CRC(d89b7631) SHA1(a66bb4955ca58fab8973ca37a0f971e9a67ce017) ) | |
| 3170 | ||
| 3171 | ROM_REGION( 0x200000, "layer2", 0 ) /* Layer 2 */ | |
| 3172 | ROM_LOAD( "arrange_u62.bin", 0x000000, 0x200000, CRC(42e4c6c5) SHA1(4d282f7592f5fc5e11839c57f39cae20b8422aa1) ) | |
| 3173 | ||
| 3174 | ROM_REGION( 0x400000, "ymz", 0 ) /* Samples */ | |
| 3175 | ROM_LOAD( "u6.bin", 0x000000, 0x200000, CRC(9dfdafaf) SHA1(f5cb450cdc78a20c3a74c6dac05c9ac3cba08327) ) | |
| 3176 | ROM_LOAD( "u7.bin", 0x200000, 0x200000, CRC(795b17d5) SHA1(cbfc29f1df9600c82e0fdae00edd00da5b73e14c) ) | |
| 3177 | ||
| 3178 | ROM_REGION16_BE( 0x80, "eeprom", 0 ) | |
| 3179 | ROM_LOAD16_WORD( "eeprom-ddonpach.bin", 0x0000, 0x0080, CRC(2df16438) SHA1(4881b70589a97e2420feb6d6e6737273beeff303) ) | |
| 3180 | ROM_END | |
| 3181 | ||
| 3165 | 3182 | /*************************************************************************** |
| 3166 | 3183 | |
| 3167 | 3184 | Donpachi |
| r249920 | r249921 | |
| 5043 | 5060 | |
| 5044 | 5061 | GAME( 1997, ddonpach, 0, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (International, Master Ver. 97/02/05)", MACHINE_SUPPORTS_SAVE ) |
| 5045 | 5062 | GAME( 1997, ddonpachj, ddonpach, ddonpach, cave, cave_state, ddonpach, ROT270, "Cave (Atlus license)", "DoDonPachi (Japan, Master Ver. 97/02/05)", MACHINE_SUPPORTS_SAVE ) |
| 5063 | // NOT an official CAVE release, but several PCBs have been converted to it and used on location. | |
| 5064 | GAME( 2012, ddonpacha, ddonpach, ddonpach, cave, cave_state, ddonpach, ROT270, "hack (trap15)", "DoDonPachi (2012/02/12 Arrange Ver. 1.1) (hack)", MACHINE_SUPPORTS_SAVE ) | |
| 5046 | 5065 | |
| 5066 | ||
| 5047 | 5067 | GAME( 1998, dfeveron, feversos, dfeveron, cave, cave_state, dfeveron, ROT270, "Cave (Nihon System license)", "Dangun Feveron (Japan, Ver. 98/09/17)", MACHINE_SUPPORTS_SAVE ) |
| 5048 | 5068 | GAME( 1998, feversos, 0, dfeveron, cave, cave_state, feversos, ROT270, "Cave (Nihon System license)", "Fever SOS (International, Ver. 98/09/25)", MACHINE_SUPPORTS_SAVE ) |
| 5049 | 5069 |
| r249920 | r249921 | |
|---|---|---|
| 101 | 101 | |
| 102 | 102 | WRITE16_MEMBER(cubeqst_state::palette_w) |
| 103 | 103 | { |
| 104 | m_screen->update_now(); | |
| 104 | // m_screen->update_now(); | |
| 105 | m_screen->update_partial(m_screen->vpos()); | |
| 106 | ||
| 105 | 107 | COMBINE_DATA(&m_generic_paletteram_16[offset]); |
| 106 | 108 | } |
| 107 | 109 |
| r249920 | r249921 | |
|---|---|---|
| 267 | 267 | |
| 268 | 268 | TIMER_DEVICE_CALLBACK_MEMBER(firefox_state::video_timer_callback) |
| 269 | 269 | { |
| 270 | m_screen->update_now(); | |
| 270 | // m_screen->update_now(); | |
| 271 | m_screen->update_partial(m_screen->vpos()); | |
| 271 | 272 | |
| 272 | 273 | m_maincpu->set_input_line(M6809_IRQ_LINE, ASSERT_LINE ); |
| 273 | 274 | } |
| r249920 | r249921 | |
|---|---|---|
| 5235 | 5235 | // change spriteram base per each 64-line part of the screen |
| 5236 | 5236 | if ((split & 0x3f) == 0) |
| 5237 | 5237 | { |
| 5238 | m_screen->update_now(); | |
| 5238 | // m_screen->update_now(); | |
| 5239 | m_screen->update_partial(m_screen->vpos()); | |
| 5239 | 5240 | m_sprites_base = 0x40 | (split << 2 & 0x300); |
| 5240 | 5241 | } |
| 5241 | 5242 | } |
| r249920 | r249921 | |
|---|---|---|
| 232 | 232 | { |
| 233 | 233 | int co; |
| 234 | 234 | |
| 235 | m_screen->update_now(); | |
| 235 | // m_screen->update_now(); | |
| 236 | m_screen->update_partial(m_screen->vpos()); | |
| 236 | 237 | data &= 0x0f; |
| 237 | 238 | |
| 238 | 239 | co = ((m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); |
| r249920 | r249921 | |
| 305 | 306 | WRITE_LINE_MEMBER(merit_state::hsync_changed) |
| 306 | 307 | { |
| 307 | 308 | /* update any video up to the current scanline */ |
| 308 | m_screen->update_now(); | |
| 309 | // m_screen->update_now(); | |
| 310 | m_screen->update_partial(m_screen->vpos()); | |
| 309 | 311 | } |
| 310 | 312 | |
| 311 | 313 | WRITE_LINE_MEMBER(merit_state::vsync_changed) |
| r249920 | r249921 | |
|---|---|---|
| 10 | 10 | bit of video RAM entries. |
| 11 | 11 | |
| 12 | 12 | Bank 2 holds the BIOS ROM and I/O area. Only addresses 0000-3FFF are used |
| 13 | by bank 2. Bank 2 is divided as follows: | |
| 14 | 3000-3FFF Unused | |
| 13 | by bank 2 (4000-FFFF mirrors bank 1). Bank 2 is divided as follows: | |
| 14 | 3000-3FFF Nominally unused but acts as mirror of 2000-2FFF | |
| 15 | 15 | 2C00-2C03 Video PIA |
| 16 | 16 | 2A00-2A01 Serial interface |
| 17 | 17 | 2900-2903 488 PIA |
| 18 | 2400-2400 SCREEN-PAC (if present) | |
| 18 | 19 | 2201-2280 Keyboard |
| 19 | 20 | 2100-2103 Floppy |
| 20 | 1000-1FFF | |
| 21 | 1000-1FFF Nominally unused but acts as read mirror of BIOS ROM | |
| 21 | 22 | 0000-0FFF BIOS ROM |
| 22 | 23 | |
| 24 | The logic is actually quite sloppy, and will cause bus fighting under many | |
| 25 | circumstances since it doesn't actually check all four bits, just that two | |
| 26 | are in the desired state. | |
| 27 | ||
| 23 | 28 | Bank 3 has the ninth bit needed to complete the full Video RAM. These bits |
| 24 | 29 | are stored at F000-FFFF. Only the highest bit is used. |
| 25 | 30 | |
| 26 | 31 | On bootup bank 2 is active. |
| 27 | 32 | |
| 28 | The actual banking is done through I/O ports 00-03. | |
| 29 | 00 - Have both bank 2 and bank 1 active. This seems to be the power up default. | |
| 30 | 01 - Only have bank 1 active. | |
| 31 | 02 - Have both bank 2 and bank 3 active. (Not 100% sure, also bank 1 from 4000-EFFF?) | |
| 32 | 03 - Have both bank 2 and bank 1 active. | |
| 33 | Banking is controlled by writes to I/O space. Only two low address bits are | |
| 34 | used, and the value on the data bus is completley ignored. | |
| 35 | 00 - Activate bank 2 (also triggered by CPU reset) | |
| 36 | 01 - Activate bank 1 | |
| 37 | 02 - Set BIT 9 signal (map bank 3 into F000-FFFF) | |
| 38 | 03 - Clear BIT 9 signal (map bank 1/2 into F000-FFFF) | |
| 33 | 39 | |
| 34 | 40 | TODO: |
| 41 | - Implement serial port | |
| 35 | 42 | - Verify frequency of the beep/audio alarm. |
| 36 | 43 | |
| 37 | 44 | ***************************************************************************/ |
| r249920 | r249921 | |
| 45 | 52 | static ADDRESS_MAP_START( osborne1_mem, AS_PROGRAM, 8, osborne1_state ) |
| 46 | 53 | AM_RANGE( 0x0000, 0x0FFF ) AM_READ_BANK("bank1") AM_WRITE( osborne1_0000_w ) |
| 47 | 54 | AM_RANGE( 0x1000, 0x1FFF ) AM_READ_BANK("bank2") AM_WRITE( osborne1_1000_w ) |
| 48 | AM_RANGE( 0x2000, 0x2FFF ) AM_READWRITE( osborne1_2000_r, osborne1_2000_w ) | |
| 49 | AM_RANGE( 0x3000, 0x3FFF ) AM_READ_BANK("bank3") AM_WRITE( osborne1_3000_w ) | |
| 55 | AM_RANGE( 0x2000, 0x3FFF ) AM_READWRITE( osborne1_2000_r, osborne1_2000_w ) | |
| 50 | 56 | AM_RANGE( 0x4000, 0xEFFF ) AM_RAM |
| 51 | AM_RANGE( 0xF000, 0xFFFF ) AM_READ_BANK("bank | |
| 57 | AM_RANGE( 0xF000, 0xFFFF ) AM_READ_BANK("bank3") AM_WRITE( osborne1_videoram_w ) | |
| 52 | 58 | ADDRESS_MAP_END |
| 53 | 59 | |
| 54 | 60 | |
| 55 | 61 | static ADDRESS_MAP_START( osborne1_io, AS_IO, 8, osborne1_state ) |
| 56 | 62 | ADDRESS_MAP_UNMAP_HIGH |
| 57 | 63 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 58 | AM_RANGE( 0x00, 0x | |
| 64 | AM_RANGE( 0x00, 0xff ) AM_WRITE( osborne1_bankswitch_w ) | |
| 59 | 65 | ADDRESS_MAP_END |
| 60 | 66 | |
| 61 | 67 |
| r249920 | r249921 | |
|---|---|---|
| 3904 | 3904 | ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ |
| 3905 | 3905 | /* doesn't use a separate BIOS rom */ |
| 3906 | 3906 | ROM_LOAD16_WORD_SWAP( "ketsui_v100.u38", 0x000000, 0x200000, CRC(dfe62f3b) SHA1(baa58d1ce47a707f84f65779ac0689894793e9d9) ) |
| 3907 | // 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. | |
| 3908 | //ROM_LOAD16_WORD_SWAP( "ketsui_v100.u38", 0x000000, 0x200000, CRC(e140f8a4) SHA1(34fd25f8896935503d7537e89a4cd174e8995070) ) | |
| 3909 | 3907 | |
| 3910 | 3908 | ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ |
| 3911 | 3909 | ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP ) |
| r249920 | r249921 | |
| 3929 | 3927 | ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) ) |
| 3930 | 3928 | ROM_END |
| 3931 | 3929 | |
| 3930 | ROM_START( ket1 ) // only difference between this and ket1 is the rom fill on the unused area | |
| 3931 | ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ | |
| 3932 | /* doesn't use a separate BIOS rom */ | |
| 3933 | ROM_LOAD16_WORD_SWAP( "ketsui_v100_alt_fill.u38", 0x000000, 0x200000, CRC(e140f8a4) SHA1(34fd25f8896935503d7537e89a4cd174e8995070) ) | |
| 3934 | ||
| 3935 | ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ | |
| 3936 | ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP ) | |
| 3937 | ||
| 3938 | ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ | |
| 3939 | ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details | |
| 3940 | ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1 | |
| 3941 | ||
| 3942 | ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */ | |
| 3943 | ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1 | |
| 3944 | ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2 | |
| 3945 | ||
| 3946 | ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ | |
| 3947 | ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1 | |
| 3948 | ||
| 3949 | ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */ | |
| 3950 | /* 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 */ | |
| 3951 | ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1 | |
| 3952 | ||
| 3953 | ROM_REGION( 0x20000, "sram", 0 ) /* default settings */ | |
| 3954 | ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) ) | |
| 3955 | ROM_END | |
| 3956 | ||
| 3932 | 3957 | ROM_START( keta ) |
| 3933 | 3958 | ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ |
| 3934 | 3959 | /* doesn't use a separate BIOS rom */ |
| r249920 | r249921 | |
| 3983 | 4008 | ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) ) |
| 3984 | 4009 | ROM_END |
| 3985 | 4010 | |
| 4011 | ||
| 4012 | ROM_START( ketarr10 ) | |
| 4013 | ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ | |
| 4014 | /* doesn't use a separate BIOS rom */ | |
| 4015 | ROM_LOAD16_WORD_SWAP( "ketarr_v100.u38", 0x000000, 0x200000, CRC(d4c7a8ab) SHA1(65d104d17bd4fd03a2b44297a003ba03d746c7ee) ) | |
| 4016 | ||
| 4017 | ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ | |
| 4018 | ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP ) | |
| 4019 | ||
| 4020 | ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ | |
| 4021 | ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details | |
| 4022 | ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1 | |
| 4023 | ||
| 4024 | ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */ | |
| 4025 | ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1 | |
| 4026 | ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2 | |
| 4027 | ||
| 4028 | ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ | |
| 4029 | ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1 | |
| 4030 | ||
| 4031 | ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */ | |
| 4032 | /* 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 */ | |
| 4033 | ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1 | |
| 4034 | ||
| 4035 | ROM_REGION( 0x20000, "sram", 0 ) /* default settings */ | |
| 4036 | ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) ) | |
| 4037 | ROM_END | |
| 4038 | ||
| 4039 | ||
| 4040 | ROM_START( ketarrf ) | |
| 4041 | ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ | |
| 4042 | /* doesn't use a separate BIOS rom */ | |
| 4043 | ROM_LOAD16_WORD_SWAP( "ketarrf_v100.u38", 0x000000, 0x200000, CRC(6ad17aa4) SHA1(791bd1a107433a3811c8a79ea26a73e66ddd296f) ) | |
| 4044 | ||
| 4045 | ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ | |
| 4046 | ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP ) | |
| 4047 | ||
| 4048 | ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ | |
| 4049 | ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details | |
| 4050 | ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1 | |
| 4051 | ||
| 4052 | ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */ | |
| 4053 | ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1 | |
| 4054 | ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2 | |
| 4055 | ||
| 4056 | ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ | |
| 4057 | ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1 | |
| 4058 | ||
| 4059 | ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */ | |
| 4060 | /* 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 */ | |
| 4061 | ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1 | |
| 4062 | ||
| 4063 | ROM_REGION( 0x20000, "sram", 0 ) /* default settings */ | |
| 4064 | ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) ) | |
| 4065 | ROM_END | |
| 4066 | ||
| 4067 | ROM_START( ketarr15 ) | |
| 4068 | ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ | |
| 4069 | /* doesn't use a separate BIOS rom */ | |
| 4070 | ROM_LOAD16_WORD_SWAP( "ketarr15_v100.u38", 0x000000, 0x200000, CRC(552a7d95) SHA1(4f3fb13f34d58a7482e1d26623d38aa0b54ca8dd) ) | |
| 4071 | ||
| 4072 | ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ | |
| 4073 | ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP ) | |
| 4074 | ||
| 4075 | ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ | |
| 4076 | ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details | |
| 4077 | ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1 | |
| 4078 | ||
| 4079 | ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */ | |
| 4080 | ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1 | |
| 4081 | ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2 | |
| 4082 | ||
| 4083 | ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ | |
| 4084 | ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1 | |
| 4085 | ||
| 4086 | ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */ | |
| 4087 | /* 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 */ | |
| 4088 | ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1 | |
| 4089 | ||
| 4090 | ROM_REGION( 0x20000, "sram", 0 ) /* default settings */ | |
| 4091 | ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) ) | |
| 4092 | ROM_END | |
| 4093 | ||
| 4094 | ROM_START( ketarrs15 ) | |
| 4095 | ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ | |
| 4096 | /* doesn't use a separate BIOS rom */ | |
| 4097 | ROM_LOAD16_WORD_SWAP( "ketarrs15_v100.u38", 0x000000, 0x200000, CRC(a95e71e0) SHA1(182c12e3581ebb20176d8abca41ee62aadcd63e0) ) | |
| 4098 | ||
| 4099 | ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ | |
| 4100 | ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP ) | |
| 4101 | ||
| 4102 | ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ | |
| 4103 | ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details | |
| 4104 | ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1 | |
| 4105 | ||
| 4106 | ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */ | |
| 4107 | ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1 | |
| 4108 | ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2 | |
| 4109 | ||
| 4110 | ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ | |
| 4111 | ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1 | |
| 4112 | ||
| 4113 | ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */ | |
| 4114 | /* 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 */ | |
| 4115 | ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1 | |
| 4116 | ||
| 4117 | ROM_REGION( 0x20000, "sram", 0 ) /* default settings */ | |
| 4118 | ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) ) | |
| 4119 | ROM_END | |
| 4120 | ||
| 4121 | ROM_START( ketarr151 ) | |
| 4122 | ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ | |
| 4123 | /* doesn't use a separate BIOS rom */ | |
| 4124 | ROM_LOAD16_WORD_SWAP( "ketarr151_v100.u38", 0x000000, 0x200000, CRC(2b7c030d) SHA1(9aaba1242d7ce29915a31d40341da82985927f9d) ) | |
| 4125 | ||
| 4126 | ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ | |
| 4127 | ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP ) | |
| 4128 | ||
| 4129 | ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ | |
| 4130 | ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details | |
| 4131 | ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1 | |
| 4132 | ||
| 4133 | ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */ | |
| 4134 | ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1 | |
| 4135 | ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2 | |
| 4136 | ||
| 4137 | ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ | |
| 4138 | ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1 | |
| 4139 | ||
| 4140 | ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */ | |
| 4141 | /* 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 */ | |
| 4142 | ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1 | |
| 4143 | ||
| 4144 | ROM_REGION( 0x20000, "sram", 0 ) /* default settings */ | |
| 4145 | ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) ) | |
| 4146 | ROM_END | |
| 4147 | ||
| 4148 | ROM_START( ketarrs151 ) | |
| 4149 | ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ | |
| 4150 | /* doesn't use a separate BIOS rom */ | |
| 4151 | ROM_LOAD16_WORD_SWAP( "ketarrs151_v100.u38", 0x000000, 0x200000, CRC(35c984e4) SHA1(d4517f318de0c40a3b30e41374f33bb355581434) ) | |
| 4152 | ||
| 4153 | ROM_REGION( 0x4000, "prot", 0 ) /* ARM protection ASIC - internal rom */ | |
| 4154 | ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, NO_DUMP ) | |
| 4155 | ||
| 4156 | ROM_REGION( 0xc00000, "tiles", 0 ) /* 8x8 Text Tiles + 32x32 BG Tiles */ | |
| 4157 | ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) // same as standard PGM text bios - surface scratched to remove details | |
| 4158 | ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1 | |
| 4159 | ||
| 4160 | ROM_REGION( 0x1000000, "sprcol", 0 ) /* Sprite Colour Data */ | |
| 4161 | ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1 | |
| 4162 | ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2 | |
| 4163 | ||
| 4164 | ROM_REGION( 0x0800000, "sprmask", 0 ) /* Sprite Masks + Colour Indexes */ | |
| 4165 | ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1 | |
| 4166 | ||
| 4167 | ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) /* Samples - (8 bit mono 11025Hz) - */ | |
| 4168 | /* 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 */ | |
| 4169 | ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1 | |
| 4170 | ||
| 4171 | ROM_REGION( 0x20000, "sram", 0 ) /* default settings */ | |
| 4172 | ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) ) | |
| 4173 | ROM_END | |
| 4174 | ||
| 4175 | ROM_START( ketarr ) | |
| 4176 | ROM_REGION( 0x600000, "maincpu", 0 ) | |
| 4177 | ROM_LOAD16_WORD_SWAP( "ketarr17_v100.u38", 0x000000, 0x200000, CRC(2cb80b89) SHA1(e1aa072b8344890486e11795e02703aa2d234bb1) ) | |
| 4178 | ||
| 4179 | ROM_REGION( 0x4000, "prot", 0 ) | |
| 4180 | ROM_LOAD( "ket_igs027a.bin", 0x000000, 0x04000, CRC(ab54d286) SHA1(897256b6709e1a4da9daba92b6bde39ccfccd8c1) ) | |
| 4181 | ||
| 4182 | ROM_REGION( 0xc00000, "tiles", 0 ) | |
| 4183 | ROM_LOAD( "pgm_t01s.rom", 0x000000, 0x200000, CRC(1a7123a0) SHA1(cc567f577bfbf45427b54d6695b11b74f2578af3) ) | |
| 4184 | ROM_LOAD( "t04701w064.u19", 0x180000, 0x800000, CRC(2665b041) SHA1(fb1107778b66f2af0de77ac82e1ee2902f53a959) ) //text-1 | |
| 4185 | ||
| 4186 | ROM_REGION( 0x1000000, "sprcol", 0 ) | |
| 4187 | ROM_LOAD( "a04701w064.u7", 0x0000000, 0x0800000, CRC(5ef1b94b) SHA1(f10dfa46e0a4d297c3a856aea5b49d648f98935c) ) //image-1 | |
| 4188 | ROM_LOAD( "a04702w064.u8", 0x0800000, 0x0800000, CRC(26d6da7f) SHA1(f20e07a7994f41b5ed917f8b0119dc5542f3541c) ) //image-2 | |
| 4189 | ||
| 4190 | ROM_REGION( 0x0800000, "sprmask", 0 ) | |
| 4191 | ROM_LOAD( "b04701w064.u1", 0x0000000, 0x0800000, CRC(1bec008d) SHA1(07d117dc2eebb35727fb18a7c563acbaf25a8d36) ) //bitmap-1 | |
| 4192 | ||
| 4193 | ROM_REGION( 0x800000, "ics", ROMREGION_ERASE00 ) | |
| 4194 | ROM_LOAD( "m04701b032.u17", 0x400000, 0x400000, CRC(b46e22d1) SHA1(670853dc485942fb96380568494bdf3235f446ee) ) //music-1 | |
| 4195 | ||
| 4196 | ROM_REGION( 0x20000, "sram", 0 ) /* default settings */ | |
| 4197 | ROM_LOAD( "ket_defaults.nv", 0x0000000, 0x020000, CRC(3ca892d8) SHA1(67430df5217e453ae8140c5653deeadfad8fa684) ) | |
| 4198 | ROM_END | |
| 4199 | ||
| 3986 | 4200 | ROM_START( espgal ) |
| 3987 | 4201 | ROM_REGION( 0x600000, "maincpu", 0 ) /* 68000 Code */ |
| 3988 | 4202 | /* doesn't use a separate BIOS rom */ |
| r249920 | r249921 | |
| 4312 | 4526 | 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) |
| 4313 | 4527 | |
| 4314 | 4528 | // 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. |
| 4529 | // 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. | |
| 4315 | 4530 | 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 ) |
| 4531 | 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 ) | |
| 4316 | 4532 | 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 ) |
| 4317 | 4533 | 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 ) |
| 4318 | 4534 | |
| 4535 | // 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. | |
| 4536 | // this is a significantly reworked version of the game | |
| 4537 | 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 ) | |
| 4538 | 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. | |
| 4539 | 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 ) | |
| 4540 | 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 ) | |
| 4541 | ||
| 4542 | // these simplify the scoring system | |
| 4543 | 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 ) | |
| 4544 | 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 ) | |
| 4545 | ||
| 4546 | // this has the 'programmed slowdown' removed. | |
| 4547 | 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 ) | |
| 4548 | ||
| 4549 | // this version is stupid, it just simulates what happens if the protection chip isn't returning proper values | |
| 4550 | // ROM_LOAD16_WORD_SWAP( "ketarrb_v100.u38", 0x000000, 0x200000, CRC(ec7a4f92) SHA1(6351fb386586956fbdb5f0730c481fb539cc267a) ) | |
| 4551 | // 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 ) | |
| 4552 | ||
| 4553 | ||
| 4319 | 4554 | 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 ) |
| 4320 | 4555 | |
| 4321 | 4556 | // protection simulated, but should be correct |
| r249920 | r249921 | |
|---|---|---|
| 937 | 937 | PORT_INCLUDE( systemc_generic ) |
| 938 | 938 | |
| 939 | 939 | PORT_MODIFY("P1") |
| 940 | 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) | |
| 940 | 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) | |
| 941 | 941 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("Coinblock") // coinblock (inverted) |
| 942 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("Sensor") // sensor | |
| 942 | 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 | |
| 943 | 943 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 944 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START2 ) PORT_NAME("Cup Select | |
| 944 | 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. | |
| 945 | 945 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("Cup Select 1") // cup select 1 |
| 946 | 946 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Handle B") // handle B |
| 947 | 947 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Handle A") // handle A |
| 948 | 948 | |
| 949 | 949 | PORT_MODIFY("P2") |
| 950 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Sold Out LED1") // sold out LED 1 | |
| 950 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON9 ) PORT_NAME("Sold Out LED1") // sold out LED 1 - are these actually output lines? | |
| 951 | 951 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON10 ) PORT_NAME("Sold Out LED2") // sold out LED 2 |
| 952 | 952 | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON11 ) PORT_NAME("Sold Out LED3") // sold out LED 3 |
| 953 | 953 | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 954 | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON7 ) PORT_NAME("Sold Out SW2") // sold out SW 2 | |
| 954 | 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 | |
| 955 | 955 | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON8 ) PORT_NAME("Sold Out SW3") // sold out SW 3 |
| 956 | 956 | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 957 | 957 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("Sold Out SW1") // sold out SW 1 |
| r249920 | r249921 | |
|---|---|---|
| 878 | 878 | if(irq_allow1 & (1 << IRQ_TIMER)) |
| 879 | 879 | m_subcpu->set_input_line(IRQ_TIMER+1, ASSERT_LINE); |
| 880 | 880 | |
| 881 | if(irq_tmode == 1 || irq_tmode == 2) | |
| 882 | m_screen->update_now(); | |
| 881 | if (irq_tmode == 1 || irq_tmode == 2) | |
| 882 | { | |
| 883 | // m_screen->update_now(); | |
| 884 | m_screen->update_partial(m_screen->vpos()); | |
| 885 | } | |
| 883 | 886 | } |
| 884 | 887 | |
| 885 | 888 | TIMER_DEVICE_CALLBACK_MEMBER(segas24_state::irq_timer_clear_cb) |
| r249920 | r249921 | |
|---|---|---|
| 82 | 82 | { |
| 83 | 83 | int co; |
| 84 | 84 | |
| 85 | m_screen->update_now(); | |
| 85 | // m_screen->update_now(); | |
| 86 | m_screen->update_partial(m_screen->vpos()); | |
| 86 | 87 | data &= 0x0f; |
| 87 | 88 | |
| 88 | 89 | co = ((m_ram_attr[offset] & 0x7F) << 3) | (offset & 0x07); |
| r249920 | r249921 | |
| 157 | 158 | WRITE_LINE_MEMBER(slotcarn_state::hsync_changed) |
| 158 | 159 | { |
| 159 | 160 | /* update any video up to the current scanline */ |
| 160 | m_screen->update_now(); | |
| 161 | // m_screen->update_now(); | |
| 162 | m_screen->update_partial(m_screen->vpos()); | |
| 161 | 163 | } |
| 162 | 164 | |
| 163 | 165 | WRITE_LINE_MEMBER(slotcarn_state::vsync_changed) |
| r249920 | r249921 | |
|---|---|---|
| 207 | 207 | |
| 208 | 208 | WRITE8_MEMBER(vicdual_state::videoram_w) |
| 209 | 209 | { |
| 210 | m_screen->update_now(); | |
| 210 | // m_screen->update_now(); | |
| 211 | m_screen->update_partial(m_screen->vpos()); | |
| 211 | 212 | m_videoram[offset] = data; |
| 212 | 213 | } |
| 213 | 214 | |
| 214 | 215 | |
| 215 | 216 | WRITE8_MEMBER(vicdual_state::characterram_w) |
| 216 | 217 | { |
| 217 | m_screen->update_now(); | |
| 218 | // m_screen->update_now(); | |
| 219 | m_screen->update_partial(m_screen->vpos()); | |
| 218 | 220 | m_characterram[offset] = data; |
| 219 | 221 | } |
| 220 | 222 |
| r249920 | r249921 | |
|---|---|---|
| 51 | 51 | m_bank1(*this, "bank1"), |
| 52 | 52 | m_bank2(*this, "bank2"), |
| 53 | 53 | m_bank3(*this, "bank3"), |
| 54 | m_bank4(*this, "bank4"), | |
| 55 | 54 | m_region_maincpu(*this, "maincpu") { } |
| 56 | 55 | |
| 57 | 56 | virtual void video_start(); |
| r249920 | r249921 | |
| 74 | 73 | DECLARE_WRITE8_MEMBER(osborne1_1000_w); |
| 75 | 74 | DECLARE_READ8_MEMBER(osborne1_2000_r); |
| 76 | 75 | DECLARE_WRITE8_MEMBER(osborne1_2000_w); |
| 77 | DECLARE_WRITE8_MEMBER(osborne1_3000_w); | |
| 78 | 76 | DECLARE_WRITE8_MEMBER(osborne1_videoram_w); |
| 79 | 77 | DECLARE_WRITE8_MEMBER(osborne1_bankswitch_w); |
| 80 | 78 | DECLARE_WRITE_LINE_MEMBER(ieee_pia_irq_a_func); |
| r249920 | r249921 | |
| 87 | 85 | DECLARE_DIRECT_UPDATE_MEMBER(osborne1_opbase); |
| 88 | 86 | |
| 89 | 87 | bool m_bank2_enabled; |
| 90 | bool m_bank3_enabled; | |
| 91 | UINT8 *m_bank4_ptr; | |
| 92 | UINT8 *m_empty_4K; | |
| 88 | UINT8 m_bit_9; | |
| 93 | 89 | /* IRQ states */ |
| 94 | 90 | bool m_pia_0_irq_state; |
| 95 | 91 | bool m_pia_1_irq_state; |
| r249920 | r249921 | |
| 123 | 119 | required_memory_bank m_bank1; |
| 124 | 120 | required_memory_bank m_bank2; |
| 125 | 121 | required_memory_bank m_bank3; |
| 126 | required_memory_bank m_bank4; | |
| 127 | 122 | required_memory_region m_region_maincpu; |
| 128 | 123 | |
| 129 | 124 | virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); |
| r249920 | r249921 | |
|---|---|---|
| 47 | 47 | save_item(NAME(line_buffer_pos)); |
| 48 | 48 | save_item(NAME(line_buffer_size)); |
| 49 | 49 | |
| 50 | std::string skey = parameter("key") | |
| 50 | std::string skey = parameter("key"); | |
| 51 | 51 | if(!skey.empty()) |
| 52 | 52 | key = strtoll(skey.c_str(), 0, 16); |
| 53 | 53 | else |
| r249920 | r249921 | |
|---|---|---|
| 32 | 32 | { |
| 33 | 33 | naomi_board::device_start(); |
| 34 | 34 | |
| 35 | std::string skey = parameter("key") | |
| 35 | std::string skey = parameter("key"); | |
| 36 | 36 | if(!skey.empty()) |
| 37 | 37 | key = strtoll(skey.c_str(), 0, 16); |
| 38 | 38 | else |
| r249920 | r249921 | |
|---|---|---|
| 24 | 24 | WRITE8_MEMBER( osborne1_state::osborne1_0000_w ) |
| 25 | 25 | { |
| 26 | 26 | /* Check whether regular RAM is enabled */ |
| 27 | if ( ! | |
| 27 | if ( !m_bank2_enabled || ( m_in_irq_handler && m_bankswitch == RAMMODE) ) | |
| 28 | 28 | { |
| 29 | 29 | m_ram->pointer()[ offset ] = data; |
| 30 | 30 | } |
| r249920 | r249921 | |
| 34 | 34 | WRITE8_MEMBER( osborne1_state::osborne1_1000_w ) |
| 35 | 35 | { |
| 36 | 36 | /* Check whether regular RAM is enabled */ |
| 37 | if ( ! | |
| 37 | if ( !m_bank2_enabled || ( m_in_irq_handler && m_bankswitch == RAMMODE) ) | |
| 38 | 38 | { |
| 39 | 39 | m_ram->pointer()[ 0x1000 + offset ] = data; |
| 40 | 40 | } |
| r249920 | r249921 | |
| 46 | 46 | UINT8 data = 0xFF; |
| 47 | 47 | |
| 48 | 48 | /* Check whether regular RAM is enabled */ |
| 49 | if ( ! | |
| 49 | if ( !m_bank2_enabled ) | |
| 50 | 50 | { |
| 51 | 51 | data = m_ram->pointer()[ 0x2000 + offset ]; |
| 52 | 52 | } |
| 53 | 53 | else |
| 54 | 54 | { |
| 55 | switch( offset & 0x0F00 ) | |
| 55 | // This isn't really accurate - bus fighting will occur for many values | |
| 56 | // since each peripheral only checks two bits. We just return 0xFF for | |
| 57 | // any undocumented address. | |
| 58 | switch ( offset & 0x0F00 ) | |
| 56 | 59 | { |
| 57 | 60 | case 0x100: /* Floppy */ |
| 58 | 61 | data = m_fdc->read( space, offset & 0x03 ); |
| r249920 | r249921 | |
| 79 | 82 | if (m_screen_pac) data &= 0xFB; |
| 80 | 83 | break; |
| 81 | 84 | case 0x900: /* IEEE488 PIA */ |
| 82 | data = m_pia0->read(space, offset & 0x03 | |
| 85 | data = m_pia0->read(space, offset & 0x03); | |
| 83 | 86 | break; |
| 84 | 87 | case 0xA00: /* Serial */ |
| 85 | 88 | break; |
| 86 | 89 | case 0xC00: /* Video PIA */ |
| 87 | data = m_pia1->read(space, offset & 0x03 | |
| 90 | data = m_pia1->read(space, offset & 0x03); | |
| 88 | 91 | break; |
| 89 | 92 | } |
| 90 | 93 | } |
| r249920 | r249921 | |
| 95 | 98 | WRITE8_MEMBER( osborne1_state::osborne1_2000_w ) |
| 96 | 99 | { |
| 97 | 100 | /* Check whether regular RAM is enabled */ |
| 98 | if ( ! | |
| 101 | if ( !m_bank2_enabled || (m_in_irq_handler && m_bankswitch == RAMMODE) ) | |
| 99 | 102 | { |
| 100 | 103 | m_ram->pointer()[ 0x2000 + offset ] = data; |
| 101 | 104 | } |
| 102 | 105 | else |
| 103 | 106 | { |
| 104 | if ( m_in_irq_handler && m_bankswitch == RAMMODE ) | |
| 105 | { | |
| 106 | m_ram->pointer()[ 0x2000 + offset ] = data; | |
| 107 | } | |
| 108 | 107 | /* Handle writes to the I/O area */ |
| 109 | switch( offset & 0x0F00 ) | |
| 108 | if ( 0x100 == (offset & 0x900) ) /* Floppy */ | |
| 109 | m_fdc->write(space, offset & 0x03, data); | |
| 110 | if ( 0x400 == (offset & 0xC00) ) /* SCREEN-PAC */ | |
| 110 | 111 | { |
| 111 | case 0x100: /* Floppy */ | |
| 112 | m_fdc->write(space, offset & 0x03, data ); | |
| 113 | break; | |
| 114 | case 0x400: /* SCREEN-PAC */ | |
| 115 | 112 | m_resolution = data & 0x01; |
| 116 | 113 | m_hc_left = (data >> 1) & 0x01; |
| 117 | break; | |
| 118 | case 0x900: /* IEEE488 PIA */ | |
| 119 | m_pia0->write(space, offset & 0x03, data ); | |
| 120 | break; | |
| 121 | case 0xA00: /* Serial */ | |
| 122 | break; | |
| 123 | case 0xC00: /* Video PIA */ | |
| 124 | m_pia1->write(space, offset & 0x03, data ); | |
| 125 | break; | |
| 126 | 114 | } |
| 115 | if ( 0x900 == (offset & 0x900) ) /* IEEE488 PIA */ | |
| 116 | m_pia0->write(space, offset & 0x03, data); | |
| 117 | if ( 0xA00 == (offset & 0xA00) ) /* Serial */ | |
| 118 | /* not implemented */; | |
| 119 | if ( 0xC00 == (offset & 0xC00) ) /* Video PIA */ | |
| 120 | m_pia1->write(space, offset & 0x03, data); | |
| 127 | 121 | } |
| 128 | 122 | } |
| 129 | 123 | |
| 130 | 124 | |
| 131 | WRITE8_MEMBER( osborne1_state::osborne1_3000_w ) | |
| 132 | { | |
| 133 | /* Check whether regular RAM is enabled */ | |
| 134 | if ( ! m_bank2_enabled || ( m_in_irq_handler && m_bankswitch == RAMMODE ) ) | |
| 135 | { | |
| 136 | m_ram->pointer()[ 0x3000 + offset ] = data; | |
| 137 | } | |
| 138 | } | |
| 139 | ||
| 140 | ||
| 141 | 125 | WRITE8_MEMBER( osborne1_state::osborne1_videoram_w ) |
| 142 | 126 | { |
| 143 | 127 | /* Check whether the video attribute section is enabled */ |
| 144 | if ( m_b | |
| 128 | if ( m_bit_9 ) | |
| 145 | 129 | data |= 0x7F; |
| 146 | 130 | |
| 147 | m_bank | |
| 131 | reinterpret_cast<UINT8 *>(m_bank3->base())[offset] = data; | |
| 148 | 132 | } |
| 149 | 133 | |
| 150 | 134 | |
| 151 | 135 | WRITE8_MEMBER( osborne1_state::osborne1_bankswitch_w ) |
| 152 | 136 | { |
| 153 | switch( offset ) | |
| 137 | switch ( offset & 0x03 ) | |
| 154 | 138 | { |
| 155 | 139 | case 0x00: |
| 156 | 140 | m_bank2_enabled = 1; |
| 157 | m_bank | |
| 141 | m_bankswitch = 0x00; | |
| 158 | 142 | break; |
| 159 | 143 | case 0x01: |
| 160 | 144 | m_bank2_enabled = 0; |
| 161 | m_bank | |
| 145 | m_bankswitch = 0x01; | |
| 162 | 146 | break; |
| 163 | 147 | case 0x02: |
| 164 | m_bank2_enabled = 1; | |
| 165 | m_bank3_enabled = 1; | |
| 148 | m_bit_9 = 1; | |
| 166 | 149 | break; |
| 167 | 150 | case 0x03: |
| 168 | m_bank2_enabled = 1; | |
| 169 | m_bank3_enabled = 0; | |
| 151 | m_bit_9 = 0; | |
| 170 | 152 | break; |
| 171 | 153 | } |
| 172 | 154 | if ( m_bank2_enabled ) |
| 173 | 155 | { |
| 174 | m_bank1->set_base(m_region_maincpu->base() ); | |
| 175 | m_bank2->set_base(m_empty_4K ); | |
| 176 | m_bank3->set_base(m_empty_4K ); | |
| 156 | m_bank1->set_base(m_region_maincpu->base()); | |
| 157 | m_bank2->set_base(m_region_maincpu->base()); | |
| 177 | 158 | } |
| 178 | 159 | else |
| 179 | 160 | { |
| 180 | m_bank1->set_base(m_ram->pointer() ); | |
| 181 | m_bank2->set_base(m_ram->pointer() + 0x1000 ); | |
| 182 | m_bank3->set_base(m_ram->pointer() + 0x3000 ); | |
| 161 | m_bank1->set_base(m_ram->pointer()); | |
| 162 | m_bank2->set_base(m_ram->pointer() + 0x1000); | |
| 183 | 163 | } |
| 184 | m_bank4_ptr = m_ram->pointer() + ( ( m_bank3_enabled ) ? 0x10000 : 0xF000 ); | |
| 185 | m_bank4->set_base(m_bank4_ptr ); | |
| 186 | m_bankswitch = offset; | |
| 164 | m_bank3->set_base(m_ram->pointer() + (m_bit_9 ? 0x10000 : 0xF000)); | |
| 187 | 165 | m_in_irq_handler = 0; |
| 188 | 166 | } |
| 189 | 167 | |
| r249920 | r249921 | |
| 394 | 372 | } |
| 395 | 373 | } |
| 396 | 374 | |
| 397 | if ( (ra==2) || (ra== | |
| 375 | if ( (ra==2) || (ra==6) ) | |
| 398 | 376 | { |
| 399 | 377 | m_beep->set_state( m_beep_state ); |
| 400 | 378 | } |
| r249920 | r249921 | |
| 436 | 414 | |
| 437 | 415 | DRIVER_INIT_MEMBER(osborne1_state,osborne1) |
| 438 | 416 | { |
| 439 | m_empty_4K = auto_alloc_array(machine(), UINT8, 0x1000 ); | |
| 440 | memset( m_empty_4K, 0xFF, 0x1000 ); | |
| 441 | ||
| 442 | 417 | /* Configure the 6850 ACIA */ |
| 443 | 418 | // acia6850_config( 0, &osborne1_6850_config ); |
| 444 | 419 | m_video_timer = timer_alloc(TIMER_VIDEO); |
| r249920 | r249921 | |
|---|---|---|
| 93 | 93 | WRITE16_MEMBER( btoads_state::scroll0_w ) |
| 94 | 94 | { |
| 95 | 95 | /* allow multiple changes during display */ |
| 96 | m_screen->update_now(); | |
| 96 | // m_screen->update_now(); | |
| 97 | m_screen->update_partial(m_screen->vpos()); | |
| 97 | 98 | |
| 98 | 99 | /* upper bits are Y scroll, lower bits are X scroll */ |
| 99 | 100 | if (ACCESSING_BITS_8_15) |
| r249920 | r249921 | |
| 106 | 107 | WRITE16_MEMBER( btoads_state::scroll1_w ) |
| 107 | 108 | { |
| 108 | 109 | /* allow multiple changes during display */ |
| 109 | m_screen->update_now(); | |
| 110 | // m_screen->update_now(); | |
| 111 | m_screen->update_partial(m_screen->vpos()); | |
| 110 | 112 | |
| 111 | 113 | /* upper bits are Y scroll, lower bits are X scroll */ |
| 112 | 114 | if (ACCESSING_BITS_8_15) |
| r249920 | r249921 | |
|---|---|---|
| 92 | 92 | |
| 93 | 93 | WRITE8_MEMBER(cloak_state::cloak_clearbmp_w) |
| 94 | 94 | { |
| 95 | m_screen->update_now(); | |
| 95 | // m_screen->update_now(); | |
| 96 | m_screen->update_partial(m_screen->vpos()); | |
| 97 | ||
| 96 | 98 | m_bitmap_videoram_selected = data & 0x01; |
| 97 | 99 | set_current_bitmap_videoram_pointer(); |
| 98 | 100 |
| r249920 | r249921 | |
|---|---|---|
| 876 | 876 | radarscp_scanline(scanline); |
| 877 | 877 | |
| 878 | 878 | /* update any video up to the current scanline */ |
| 879 | m_screen->update_now(); | |
| 879 | // m_screen->update_now(); | |
| 880 | m_screen->update_partial(m_screen->vpos()); | |
| 880 | 881 | |
| 881 | 882 | scanline = (scanline+1) % VTOTAL; |
| 882 | 883 | /* come back at the next appropriate scanline */ |
| r249920 | r249921 | |
|---|---|---|
| 480 | 480 | { |
| 481 | 481 | UINT8 *videoram = m_videoram; |
| 482 | 482 | /* update any video up to the current scanline */ |
| 483 | m_screen->update_now(); | |
| 483 | // m_screen->update_now(); | |
| 484 | m_screen->update_partial(m_screen->vpos()); | |
| 484 | 485 | |
| 485 | 486 | /* store the data and mark the corresponding tile dirty */ |
| 486 | 487 | videoram[offset] = data; |
| r249920 | r249921 | |
| 491 | 492 | WRITE8_MEMBER(galaxian_state::galaxian_objram_w) |
| 492 | 493 | { |
| 493 | 494 | /* update any video up to the current scanline */ |
| 494 | m_screen->update_now(); | |
| 495 | // m_screen->update_now(); | |
| 496 | m_screen->update_partial(m_screen->vpos()); | |
| 495 | 497 | |
| 496 | 498 | /* store the data */ |
| 497 | 499 | m_spriteram[offset] = data; |
| r249920 | r249921 | |
| 641 | 643 | { |
| 642 | 644 | if (m_flipscreen_x != (data & 0x01)) |
| 643 | 645 | { |
| 644 | m_screen->update_now(); | |
| 646 | // m_screen->update_now(); | |
| 647 | m_screen->update_partial(m_screen->vpos()); | |
| 645 | 648 | |
| 646 | 649 | /* when the direction changes, we count a different number of clocks */ |
| 647 | 650 | /* per frame, so we need to reset the origin of the stars to the current */ |
| r249920 | r249921 | |
| 657 | 660 | { |
| 658 | 661 | if (m_flipscreen_y != (data & 0x01)) |
| 659 | 662 | { |
| 660 | m_screen->update_now(); | |
| 663 | // m_screen->update_now(); | |
| 664 | m_screen->update_partial(m_screen->vpos()); | |
| 665 | ||
| 661 | 666 | m_flipscreen_y = data & 0x01; |
| 662 | 667 | m_bg_tilemap->set_flip((m_flipscreen_x ? TILEMAP_FLIPX : 0) | (m_flipscreen_y ? TILEMAP_FLIPY : 0)); |
| 663 | 668 | } |
| r249920 | r249921 | |
| 680 | 685 | WRITE8_MEMBER(galaxian_state::galaxian_stars_enable_w) |
| 681 | 686 | { |
| 682 | 687 | if ((m_stars_enabled ^ data) & 0x01) |
| 683 | m_screen->update_now(); | |
| 688 | { | |
| 689 | // m_screen->update_now(); | |
| 690 | m_screen->update_partial(m_screen->vpos()); | |
| 691 | } | |
| 684 | 692 | |
| 685 | 693 | if (!m_stars_enabled && (data & 0x01)) |
| 686 | 694 | { |
| r249920 | r249921 | |
| 697 | 705 | WRITE8_MEMBER(galaxian_state::scramble_background_enable_w) |
| 698 | 706 | { |
| 699 | 707 | if ((m_background_enable ^ data) & 0x01) |
| 700 | m_screen->update_now(); | |
| 708 | { | |
| 709 | // m_screen->update_now(); | |
| 710 | m_screen->update_partial(m_screen->vpos()); | |
| 711 | } | |
| 701 | 712 | |
| 702 | 713 | m_background_enable = data & 0x01; |
| 703 | 714 | } |
| r249920 | r249921 | |
| 706 | 717 | WRITE8_MEMBER(galaxian_state::scramble_background_red_w) |
| 707 | 718 | { |
| 708 | 719 | if ((m_background_red ^ data) & 0x01) |
| 709 | m_screen->update_now(); | |
| 720 | { | |
| 721 | // m_screen->update_now(); | |
| 722 | m_screen->update_partial(m_screen->vpos()); | |
| 723 | } | |
| 710 | 724 | |
| 711 | 725 | m_background_red = data & 0x01; |
| 712 | 726 | } |
| r249920 | r249921 | |
| 715 | 729 | WRITE8_MEMBER(galaxian_state::scramble_background_green_w) |
| 716 | 730 | { |
| 717 | 731 | if ((m_background_green ^ data) & 0x01) |
| 718 | m_screen->update_now(); | |
| 732 | { | |
| 733 | // m_screen->update_now(); | |
| 734 | m_screen->update_partial(m_screen->vpos()); | |
| 735 | } | |
| 719 | 736 | |
| 720 | 737 | m_background_green = data & 0x01; |
| 721 | 738 | } |
| r249920 | r249921 | |
| 724 | 741 | WRITE8_MEMBER(galaxian_state::scramble_background_blue_w) |
| 725 | 742 | { |
| 726 | 743 | if ((m_background_blue ^ data) & 0x01) |
| 727 | m_screen->update_now(); | |
| 744 | { | |
| 745 | // m_screen->update_now(); | |
| 746 | m_screen->update_partial(m_screen->vpos()); | |
| 747 | } | |
| 728 | 748 | |
| 729 | 749 | m_background_blue = data & 0x01; |
| 730 | 750 | } |
| r249920 | r249921 | |
| 741 | 761 | { |
| 742 | 762 | if (m_gfxbank[offset] != data) |
| 743 | 763 | { |
| 744 | m_screen->update_now(); | |
| 764 | //m_screen->update_now(); | |
| 765 | m_screen->update_partial(m_screen->vpos()); | |
| 745 | 766 | m_gfxbank[offset] = data; |
| 746 | 767 | m_bg_tilemap->mark_all_dirty(); |
| 747 | 768 | } |
| r249920 | r249921 | |
|---|---|---|
| 93 | 93 | |
| 94 | 94 | WRITE8_MEMBER(gyruss_state::gyruss_spriteram_w) |
| 95 | 95 | { |
| 96 | m_screen->update_now(); | |
| 96 | // m_screen->update_now(); | |
| 97 | m_screen->update_partial(m_screen->vpos()); | |
| 97 | 98 | m_spriteram[offset] = data; |
| 98 | 99 | } |
| 99 | 100 |
| r249920 | r249921 | |
|---|---|---|
| 537 | 537 | WRITE8_MEMBER(itech8_state::grmatch_xscroll_w) |
| 538 | 538 | { |
| 539 | 539 | /* update the X scroll value */ |
| 540 | m_screen->update_now(); | |
| 540 | //m_screen->update_now(); | |
| 541 | m_screen->update_partial(m_screen->vpos()); | |
| 541 | 542 | m_grmatch_xscroll = data; |
| 542 | 543 | } |
| 543 | 544 |
| r249920 | r249921 | |
|---|---|---|
| 64 | 64 | |
| 65 | 65 | WRITE8_MEMBER(meadows_state::meadows_spriteram_w) |
| 66 | 66 | { |
| 67 | m_screen->update_now(); | |
| 67 | // m_screen->update_now(); | |
| 68 | m_screen->update_partial(m_screen->vpos()); | |
| 68 | 69 | m_spriteram[offset] = data; |
| 69 | 70 | } |
| 70 | 71 |
| r249920 | r249921 | |
|---|---|---|
| 99 | 99 | { |
| 100 | 100 | /* update the screen in case the game is writing "behind" the beam - |
| 101 | 101 | Zookeeper likes to do this */ |
| 102 | m_screen->update_now(); | |
| 102 | // m_screen->update_now(); | |
| 103 | m_screen->update_partial(m_screen->vpos()); | |
| 103 | 104 | |
| 104 | 105 | /* add in the upper bit of the address latch */ |
| 105 | 106 | offset += (m_videoram_address[0] & 0x80) << 8; |
| r249920 | r249921 | |
| 113 | 114 | { |
| 114 | 115 | /* update the screen in case the game is writing "behind" the beam - |
| 115 | 116 | Zookeeper likes to do this */ |
| 116 | m_screen->update_now(); | |
| 117 | // m_screen->update_now(); | |
| 118 | m_screen->update_partial(m_screen->vpos()); | |
| 117 | 119 | |
| 118 | 120 | /* add in the upper bit of the address latch */ |
| 119 | 121 | offset += (m_videoram_address[0] & 0x80) << 8; |
| r249920 | r249921 | |
| 150 | 152 | WRITE8_MEMBER(qix_state::qix_addresslatch_w) |
| 151 | 153 | { |
| 152 | 154 | /* update the screen in case the game is writing "behind" the beam */ |
| 153 | m_screen->update_now(); | |
| 155 | // m_screen->update_now(); | |
| 156 | m_screen->update_partial(m_screen->vpos()); | |
| 154 | 157 | |
| 155 | 158 | /* compute the value at the address latch */ |
| 156 | 159 | offset = (m_videoram_address[0] << 8) | m_videoram_address[1]; |
| r249920 | r249921 | |
| 163 | 166 | WRITE8_MEMBER(qix_state::slither_addresslatch_w) |
| 164 | 167 | { |
| 165 | 168 | /* update the screen in case the game is writing "behind" the beam */ |
| 166 | m_screen->update_now(); | |
| 169 | // m_screen->update_now(); | |
| 170 | m_screen->update_partial(m_screen->vpos()); | |
| 167 | 171 | |
| 168 | 172 | /* compute the value at the address latch */ |
| 169 | 173 | offset = (m_videoram_address[0] << 8) | m_videoram_address[1]; |
| r249920 | r249921 | |
| 191 | 195 | /* trigger an update if a currently visible pen has changed */ |
| 192 | 196 | if (((offset >> 8) == m_palette_bank) && |
| 193 | 197 | (old_data != data)) |
| 194 | m_screen->update_now(); | |
| 198 | { | |
| 199 | // m_screen->update_now(); | |
| 200 | m_screen->update_partial(m_screen->vpos()); | |
| 201 | } | |
| 195 | 202 | |
| 196 | 203 | set_pen(offset); |
| 197 | 204 | } |
| r249920 | r249921 | |
| 202 | 209 | /* set the bank value */ |
| 203 | 210 | if (m_palette_bank != (data & 3)) |
| 204 | 211 | { |
| 205 | m_screen->update_now(); | |
| 212 | //m_screen->update_now(); | |
| 213 | m_screen->update_partial(m_screen->vpos()); | |
| 206 | 214 | m_palette_bank = data & 3; |
| 207 | 215 | } |
| 208 | 216 |
| r249920 | r249921 | |
|---|---|---|
| 19 | 19 | |
| 20 | 20 | WRITE8_MEMBER(spacefb_state::port_0_w) |
| 21 | 21 | { |
| 22 | m_screen->update_now(); | |
| 22 | // m_screen->update_now(); | |
| 23 | m_screen->update_partial(m_screen->vpos()); | |
| 23 | 24 | m_port_0 = data; |
| 24 | 25 | } |
| 25 | 26 | |
| 26 | 27 | |
| 27 | 28 | WRITE8_MEMBER(spacefb_state::port_2_w) |
| 28 | 29 | { |
| 29 | m_screen->update_now(); | |
| 30 | // m_screen->update_now(); | |
| 31 | m_screen->update_partial(m_screen->vpos()); | |
| 30 | 32 | m_port_2 = data; |
| 31 | 33 | } |
| 32 | 34 |
| r249920 | r249921 | |
|---|---|---|
| 190 | 190 | |
| 191 | 191 | READ8_MEMBER(system1_state::system1_mixer_collision_r) |
| 192 | 192 | { |
| 193 | m_screen->update_now(); | |
| 193 | // m_screen->update_now(); | |
| 194 | m_screen->update_partial(m_screen->vpos()); | |
| 194 | 195 | return m_mix_collide[offset & 0x3f] | 0x7e | (m_mix_collide_summary << 7); |
| 195 | 196 | } |
| 196 | 197 | |
| 197 | 198 | WRITE8_MEMBER(system1_state::system1_mixer_collision_w) |
| 198 | 199 | { |
| 199 | m_screen->update_now(); | |
| 200 | // m_screen->update_now(); | |
| 201 | m_screen->update_partial(m_screen->vpos()); | |
| 200 | 202 | m_mix_collide[offset & 0x3f] = 0; |
| 201 | 203 | } |
| 202 | 204 | |
| 203 | 205 | WRITE8_MEMBER(system1_state::system1_mixer_collision_reset_w) |
| 204 | 206 | { |
| 205 | m_screen->update_now(); | |
| 207 | // m_screen->update_now(); | |
| 208 | m_screen->update_partial(m_screen->vpos()); | |
| 206 | 209 | m_mix_collide_summary = 0; |
| 207 | 210 | } |
| 208 | 211 | |
| r249920 | r249921 | |
| 216 | 219 | |
| 217 | 220 | READ8_MEMBER(system1_state::system1_sprite_collision_r) |
| 218 | 221 | { |
| 219 | m_screen->update_now(); | |
| 222 | // m_screen->update_now(); | |
| 223 | m_screen->update_partial(m_screen->vpos()); | |
| 220 | 224 | return m_sprite_collide[offset & 0x3ff] | 0x7e | (m_sprite_collide_summary << 7); |
| 221 | 225 | } |
| 222 | 226 | |
| 223 | 227 | WRITE8_MEMBER(system1_state::system1_sprite_collision_w) |
| 224 | 228 | { |
| 225 | m_screen->update_now(); | |
| 229 | // m_screen->update_now(); | |
| 230 | m_screen->update_partial(m_screen->vpos()); | |
| 226 | 231 | m_sprite_collide[offset & 0x3ff] = 0; |
| 227 | 232 | } |
| 228 | 233 | |
| 229 | 234 | WRITE8_MEMBER(system1_state::system1_sprite_collision_reset_w) |
| 230 | 235 | { |
| 231 | m_screen->update_now(); | |
| 236 | // m_screen->update_now(); | |
| 237 | m_screen->update_partial(m_screen->vpos()); | |
| 232 | 238 | m_sprite_collide_summary = 0; |
| 233 | 239 | } |
| 234 | 240 | |
| r249920 | r249921 | |
| 274 | 280 | |
| 275 | 281 | /* force a partial update if the page is changing */ |
| 276 | 282 | if (m_tilemap_pages > 2 && offset >= 0x740 && offset < 0x748 && offset % 2 == 0) |
| 277 | m_screen->update_now(); | |
| 283 | { | |
| 284 | //m_screen->update_now(); | |
| 285 | m_screen->update_partial(m_screen->vpos()); | |
| 286 | } | |
| 278 | 287 | } |
| 279 | 288 | |
| 280 | 289 | WRITE8_MEMBER(system1_state::system1_videoram_bank_w) |
| r249920 | r249921 | |
|---|---|---|
| 106 | 106 | WRITE8_MEMBER(tp84_state::tp84_spriteram_w) |
| 107 | 107 | { |
| 108 | 108 | /* the game multiplexes the sprites, so update now */ |
| 109 | m_screen->update_now(); | |
| 109 | // m_screen->update_now(); | |
| 110 | m_screen->update_partial(m_screen->vpos()); | |
| 110 | 111 | m_spriteram[offset] = data; |
| 111 | 112 | } |
| 112 | 113 |
| https://github.com/mamedev/mame/commit/2a3c1175704d54e95994737d60a3d7d37010500e |
| Previous | 199869 Revisions | Next |