srcclean (nw)

This commit is contained in:
Vas Crabb 2017-04-23 12:27:42 +10:00
parent f5da128a94
commit dac6dc4f62
74 changed files with 765 additions and 765 deletions

View File

@ -52930,22 +52930,22 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
<!-- Alt. Title: Adan y Eva (on the cart label) --> <!-- Alt. Title: Adan y Eva (on the cart label) -->
<software name="adanyeva"> <software name="adanyeva">
<description>Adam &amp; Eve (Spa)</description> <description>Adam &amp; Eve (Spa)</description>
<year>1991</year> <year>1991</year>
<publisher>Gluk Video</publisher> <publisher>Gluk Video</publisher>
<info name="serial" value="CN-11"/> <info name="serial" value="CN-11"/>
<info name="release" value="19910101"/> <info name="release" value="19910101"/>
<part name="cart" interface="nes_cart"> <part name="cart" interface="nes_cart">
<feature name="slot" value="cnrom" /> <feature name="slot" value="cnrom" />
<feature name="pcb" value="NTDEC-N715062" /> <feature name="pcb" value="NTDEC-N715062" />
<feature name="mirroring" value="vertical" /> <feature name="mirroring" value="vertical" />
<dataarea name="prg" size="32768"> <dataarea name="prg" size="32768">
<rom name="0.prg" size="32768" crc="626238f8" sha1="7e757c3f67849330066da6984d97a377bb910f21" offset="00000" /> <rom name="0.prg" size="32768" crc="626238f8" sha1="7e757c3f67849330066da6984d97a377bb910f21" offset="00000" />
</dataarea> </dataarea>
<dataarea name="chr" size="32768"> <dataarea name="chr" size="32768">
<rom name="0.chr" size="32768" crc="0a7307d9" sha1="de1ef6c5c390947aab477afe7d61e37b6c4d2e32" offset="00000" /> <rom name="0.chr" size="32768" crc="0a7307d9" sha1="de1ef6c5c390947aab477afe7d61e37b6c4d2e32" offset="00000" />
</dataarea> </dataarea>
</part> </part>
</software> </software>
<software name="destroyr"> <software name="destroyr">

View File

@ -2,9 +2,9 @@
// copyright-holders:Nathan Woods // copyright-holders:Nathan Woods
/*************************************************************************** /***************************************************************************
coco_multi.cpp coco_multi.cpp
Code for emulating CoCo's Multi-Pak Interface Code for emulating CoCo's Multi-Pak Interface
The Multi-Pak interface multiplexes all I/O lines from the Color The Multi-Pak interface multiplexes all I/O lines from the Color
Computer's expansion port to four identical ports. All I/O lines Computer's expansion port to four identical ports. All I/O lines
@ -47,9 +47,9 @@
$FF9F. No software is known to take advantage of this. After the $FF9F. No software is known to take advantage of this. After the
introduction of the CoCo 3, which uses $FF9F internally, Tandy provided introduction of the CoCo 3, which uses $FF9F internally, Tandy provided
free upgrades to any MPI to fix this problem. This behavior is not free upgrades to any MPI to fix this problem. This behavior is not
emulated (yet). emulated (yet).
Slots seem to be one-counted (i.e. - 1-4, not 0-3) by convention Slots seem to be one-counted (i.e. - 1-4, not 0-3) by convention
***************************************************************************/ ***************************************************************************/
@ -355,15 +355,15 @@ WRITE8_MEMBER(coco_multipak_device::write)
// multiX_slotX_[cart|nmi|halt] trampolines // multiX_slotX_[cart|nmi|halt] trampolines
//------------------------------------------------- //-------------------------------------------------
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_cart_w) { update_line(1, cococart_slot_device::line::CART); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_cart_w) { update_line(1, cococart_slot_device::line::CART); }
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_nmi_w) { update_line(1, cococart_slot_device::line::NMI); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_nmi_w) { update_line(1, cococart_slot_device::line::NMI); }
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_halt_w) { update_line(1, cococart_slot_device::line::HALT); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_halt_w) { update_line(1, cococart_slot_device::line::HALT); }
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_cart_w) { update_line(2, cococart_slot_device::line::CART); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_cart_w) { update_line(2, cococart_slot_device::line::CART); }
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_nmi_w) { update_line(2, cococart_slot_device::line::NMI); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_nmi_w) { update_line(2, cococart_slot_device::line::NMI); }
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_halt_w) { update_line(2, cococart_slot_device::line::HALT); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_halt_w) { update_line(2, cococart_slot_device::line::HALT); }
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_cart_w) { update_line(3, cococart_slot_device::line::CART); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_cart_w) { update_line(3, cococart_slot_device::line::CART); }
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_nmi_w) { update_line(3, cococart_slot_device::line::NMI); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_nmi_w) { update_line(3, cococart_slot_device::line::NMI); }
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_halt_w) { update_line(3, cococart_slot_device::line::HALT); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_halt_w) { update_line(3, cococart_slot_device::line::HALT); }
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_cart_w) { update_line(4, cococart_slot_device::line::CART); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_cart_w) { update_line(4, cococart_slot_device::line::CART); }
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_nmi_w) { update_line(4, cococart_slot_device::line::NMI); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_nmi_w) { update_line(4, cococart_slot_device::line::NMI); }
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_halt_w) { update_line(4, cococart_slot_device::line::HALT); } WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_halt_w) { update_line(4, cococart_slot_device::line::HALT); }

View File

@ -240,7 +240,7 @@ void cococart_slot_device::twiddle_line_if_q(coco_cartridge_line &line)
//------------------------------------------------- //-------------------------------------------------
// twiddle_q_lines - hack to support twiddling the // twiddle_q_lines - hack to support twiddling the
// Q line // Q line
//------------------------------------------------- //-------------------------------------------------
void cococart_slot_device::twiddle_q_lines() void cococart_slot_device::twiddle_q_lines()

View File

@ -160,7 +160,7 @@ void cpc_multiface2_device::multiface_stop()
m_slot->nmi_w(0); m_slot->nmi_w(0);
/* initialise 0065 override to monitor calls to 0065 */ /* initialise 0065 override to monitor calls to 0065 */
// machine().device("maincpu")->memory().space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&cpc_multiface2_device::amstrad_multiface_directoverride,this)); // machine().device("maincpu")->memory().space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&cpc_multiface2_device::amstrad_multiface_directoverride,this));
} }
} }

View File

@ -1085,7 +1085,7 @@ WRITE8_MEMBER(nes_waixing_sgzlz_device::write_l)
} }
} }
else else
{ // NROM mode { // NROM mode
if (BIT(m_reg[0], 3)) if (BIT(m_reg[0], 3))
{ {
prg16_89ab(bank); prg16_89ab(bank);

View File

@ -155,7 +155,7 @@ struct OPL3_SLOT
uint32_t Cnt; /* frequency counter */ uint32_t Cnt; /* frequency counter */
uint32_t Incr; /* frequency counter step */ uint32_t Incr; /* frequency counter step */
uint8_t FB; /* feedback shift value */ uint8_t FB; /* feedback shift value */
uint8_t conn_enum; /* slot output route */ uint8_t conn_enum; /* slot output route */
int32_t *connect; /* slot output pointer */ int32_t *connect; /* slot output pointer */
int32_t op1_out[2]; /* slot1 output for feedback */ int32_t op1_out[2]; /* slot1 output for feedback */
uint8_t CON; /* connection (algorithm) type */ uint8_t CON; /* connection (algorithm) type */

View File

@ -184,7 +184,7 @@ void cesblit_device::do_blit()
#endif #endif
sx &= 0x1ff; sx &= 0x1ff;
sw &= 0x1ff; // can be 0: draw nothing (see e.g. fade-in effect in galgame3/diamond derby) sw &= 0x1ff; // can be 0: draw nothing (see e.g. fade-in effect in galgame3/diamond derby)
sy &= 0x1ff; sy &= 0x1ff;
sh &= 0x1ff; sh &= 0x1ff;

View File

@ -553,10 +553,10 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log
} }
/* /*
m_zeusbase[0x4e] : m_zeusbase[0x4e] :
bit 0 - 1 : which register triggers write through bit 0 - 1 : which register triggers write through
bit 3 : enable write through via these registers bit 3 : enable write through via these registers
bit 4 : seems to be set during reads, when 0x41 is used for latching bit 4 : seems to be set during reads, when 0x41 is used for latching
bit 6 : enable autoincrement on write through bit 6 : enable autoincrement on write through
*/ */
if ((offset & 0xf) == (m_zeusbase[0x4e] & 0xf)) { if ((offset & 0xf) == (m_zeusbase[0x4e] & 0xf)) {
// If the address is auto-increment then don't load new value // If the address is auto-increment then don't load new value
@ -608,8 +608,8 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log
case 5: case 5:
{ {
//if (m_zeusbase[0x41] == 0x266) { //if (m_zeusbase[0x41] == 0x266) {
// logit = 1; // logit = 1;
// log_fifo = 1; // log_fifo = 1;
//} //}
// Zeus microcode burst from waveram // Zeus microcode burst from waveram
if (logit) if (logit)
@ -754,7 +754,7 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log
} }
break; break;
//case 6: { //case 6: {
// // Zeus model fifo burst from waveram // // Zeus model fifo burst from waveram
//} //}
//break; //break;
case 9: case 9:
@ -1813,7 +1813,7 @@ void zeus2_renderer::zeus2_draw_quad(const uint32_t *databuffer, uint32_t texdat
} }
//if (numverts == 3) //if (numverts == 3)
// render_triangle(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, vert[0], vert[1], vert[2]); // render_triangle(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, vert[0], vert[1], vert[2]);
render_polygon<4>(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, vert); render_polygon<4>(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, vert);
} }
@ -1859,9 +1859,9 @@ void zeus2_renderer::render_poly_8bit(int32_t scanline, const extent_t& extent,
curDepthVal = curz; curDepthVal = curz;
} }
//if (curz < object.zbuf_min) //if (curz < object.zbuf_min)
// curDepthVal = object.zbuf_min; // curDepthVal = object.zbuf_min;
//else //else
// curDepthVal = curz; // curDepthVal = curz;
if (curDepthVal < 0) if (curDepthVal < 0)
curDepthVal = 0; curDepthVal = 0;
bool depth_pass = true; bool depth_pass = true;
@ -1974,16 +1974,16 @@ void zeus2_renderer::render_poly_8bit(int32_t scanline, const extent_t& extent,
} }
// Rendering for textures with transparent color // Rendering for textures with transparent color
//} else { //} else {
// // Add rounding // // Add rounding
// u0 += (curu >> 7) & 1; // u0 += (curu >> 7) & 1;
// v0 += (curv >> 7) & 1; // v0 += (curv >> 7) & 1;
// uint8_t texel0 = object.get_texel(texbase, v0, u0, texwidth); // uint8_t texel0 = object.get_texel(texbase, v0, u0, texwidth);
// if (texel0 != transcolor) { // if (texel0 != transcolor) {
// uint32_t color0 = m_state->m_pal_table[texel0]; // uint32_t color0 = m_state->m_pal_table[texel0];
// colorptr[x] = color0; // colorptr[x] = color0;
// if (object.depth_write_enable) // if (object.depth_write_enable)
// depthptr[x] = curz; // Should limit to 24 bits // depthptr[x] = curz; // Should limit to 24 bits
// } // }
} }
} }
curz += dzdx; curz += dzdx;
@ -2232,31 +2232,31 @@ std::string zeus2_device::tex_info(void)
case 0x0003ff20: retVal = "0, s=64, t=8_alpha"; break; case 0x0003ff20: retVal = "0, s=64, t=8_alpha"; break;
case 0x00130300: retVal = "People in stands, s=64, t=8_4x2"; break; case 0x00130300: retVal = "People in stands, s=64, t=8_4x2"; break;
case 0x0007c8e0: retVal = "Greenish blob, s=64, t=8_alpha"; break; case 0x0007c8e0: retVal = "Greenish blob, s=64, t=8_alpha"; break;
case 0x0015c940: retVal = "Red +"; break; case 0x0015c940: retVal = "Red +"; break;
case 0x0015bf40: retVal = "Blue circle with green outline"; break; case 0x0015bf40: retVal = "Blue circle with green outline"; break;
case 0x0015c740: retVal = "Radiation symbol"; break; case 0x0015c740: retVal = "Radiation symbol"; break;
case 0x0015cb80: retVal = "Grey square"; break; case 0x0015cb80: retVal = "Grey square"; break;
case 0x0015d380: retVal = "Green circle inside grey square"; break; case 0x0015d380: retVal = "Green circle inside grey square"; break;
case 0x00159f40: retVal = "Shinny green square"; break; case 0x00159f40: retVal = "Shinny green square"; break;
case 0x001a6340: retVal = "Yellow ski tip"; break; case 0x001a6340: retVal = "Yellow ski tip"; break;
case 0x001a65a0: retVal = "Metal vest"; break; case 0x001a65a0: retVal = "Metal vest"; break;
case 0x001a6a00: retVal = "Head hole metal vest"; break; case 0x001a6a00: retVal = "Head hole metal vest"; break;
case 0x001a6b70: retVal = "Yellow WES badge"; break; case 0x001a6b70: retVal = "Yellow WES badge"; break;
case 0x001a6140: retVal = "Backwards Yellow WES badge"; break; case 0x001a6140: retVal = "Backwards Yellow WES badge"; break;
case 0x001a6d70: retVal = "Maybe stomach"; break; case 0x001a6d70: retVal = "Maybe stomach"; break;
case 0x001a6e60: retVal = "Maybe back"; break; case 0x001a6e60: retVal = "Maybe back"; break;
case 0x001a6f20: retVal = "Hand with black glove"; break; case 0x001a6f20: retVal = "Hand with black glove"; break;
case 0x001a7090: retVal = "Wes Face"; break; case 0x001a7090: retVal = "Wes Face"; break;
case 0x001a72c0: retVal = "Dark red strip"; break; case 0x001a72c0: retVal = "Dark red strip"; break;
case 0x001a7340: retVal = "Wes shoulder pad"; break; case 0x001a7340: retVal = "Wes shoulder pad"; break;
case 0x001a7460: retVal = "Orange circle"; break; case 0x001a7460: retVal = "Orange circle"; break;
case 0x001a5e20: retVal = "Wes belt"; break; case 0x001a5e20: retVal = "Wes belt"; break;
case 0x001a5f40: retVal = "Wes orange strip on side"; break; case 0x001a5f40: retVal = "Wes orange strip on side"; break;
case 0x001a7770: retVal = "Grey something"; break; case 0x001a7770: retVal = "Grey something"; break;
case 0x001a74e0: retVal = "Grey maybe top of boot"; break; case 0x001a74e0: retVal = "Grey maybe top of boot"; break;
case 0x001a76e0: retVal = "Grey hexagon"; break; case 0x001a76e0: retVal = "Grey hexagon"; break;
case 0x001a7800: retVal = "Belt pouches"; break; case 0x001a7800: retVal = "Belt pouches"; break;
case 0x0015a340: retVal = "Green shinny block"; break; case 0x0015a340: retVal = "Green shinny block"; break;
default: retVal = "Unknown"; break; default: retVal = "Unknown"; break;
} }
} }

View File

@ -42,18 +42,18 @@ struct zeus2_poly_extra_data
uint16_t texwidth; uint16_t texwidth;
uint16_t color; uint16_t color;
uint32_t srcAlpha; uint32_t srcAlpha;
uint32_t dstAlpha; uint32_t dstAlpha;
uint32_t ctrl_word; uint32_t ctrl_word;
uint32_t ucode_src; uint32_t ucode_src;
uint32_t tex_src; uint32_t tex_src;
bool texture_alpha; bool texture_alpha;
bool texture_rgb555; bool texture_rgb555;
bool blend_enable; bool blend_enable;
int32_t zbuf_min; int32_t zbuf_min;
bool depth_min_enable; bool depth_min_enable;
bool depth_test_enable; bool depth_test_enable;
bool depth_write_enable; bool depth_write_enable;
bool depth_clear_enable; bool depth_clear_enable;
uint8_t(*get_texel)(const void *, int, int, int); uint8_t(*get_texel)(const void *, int, int, int);
uint8_t(*get_alpha)(const void *, int, int, int); uint8_t(*get_alpha)(const void *, int, int, int);
@ -245,7 +245,7 @@ public:
addr = m_zeusbase[0x38] >> (16 - 9 - 2 * m_yScale); addr = m_zeusbase[0x38] >> (16 - 9 - 2 * m_yScale);
} }
//uint32_t addr = render ? frame_addr_from_phys_addr(m_renderRegs[0x4] << (15 + m_yScale)) //uint32_t addr = render ? frame_addr_from_phys_addr(m_renderRegs[0x4] << (15 + m_yScale))
// : frame_addr_from_phys_addr((m_zeusbase[0x38] >> 1) << (m_yScale << 1)); // : frame_addr_from_phys_addr((m_zeusbase[0x38] >> 1) << (m_yScale << 1));
addr += (y << (9 + m_yScale)) + x; addr += (y << (9 + m_yScale)) + x;
return addr; return addr;
} }

View File

@ -1208,9 +1208,9 @@ image_init_result device_image_interface::create(const std::string &path, const
//------------------------------------------------- //-------------------------------------------------
// reset_and_load - called internally when we try // reset_and_load - called internally when we try
// to load an is_reset_on_load() item; will reset // to load an is_reset_on_load() item; will reset
// the emulation and record this image to be loaded // the emulation and record this image to be loaded
//------------------------------------------------- //-------------------------------------------------
void device_image_interface::reset_and_load(const std::string &path) void device_image_interface::reset_and_load(const std::string &path)

View File

@ -110,12 +110,12 @@ public:
bool hashfile_extrainfo(std::string &extrainfo); bool hashfile_extrainfo(std::string &extrainfo);
private: private:
util::core_file::ptr m_image_file; util::core_file::ptr m_image_file;
std::string m_file_type; std::string m_file_type;
std::function<bool(util::core_file &, std::string&)> m_get_hashfile_extrainfo; std::function<bool(util::core_file &, std::string&)> m_get_hashfile_extrainfo;
bool m_called_get_hashfile_extrainfo; bool m_called_get_hashfile_extrainfo;
bool m_has_hash_extrainfo; bool m_has_hash_extrainfo;
std::string m_hash_extrainfo; std::string m_hash_extrainfo;
}; };

View File

@ -267,9 +267,9 @@ void emu_options::value_changed(const std::string &name, const std::string &valu
//------------------------------------------------- //-------------------------------------------------
// override_get_value - when saving to an INI, we // override_get_value - when saving to an INI, we
// need to hook into that process so we can write // need to hook into that process so we can write
// out image/slot options // out image/slot options
//------------------------------------------------- //-------------------------------------------------
core_options::override_get_value_result emu_options::override_get_value(const char *name, std::string &value) const core_options::override_get_value_result emu_options::override_get_value(const char *name, std::string &value) const
@ -298,9 +298,9 @@ core_options::override_get_value_result emu_options::override_get_value(const ch
//------------------------------------------------- //-------------------------------------------------
// override_set_value - when parsing an INI, we // override_set_value - when parsing an INI, we
// need to hook into into it so we can do the same // need to hook into into it so we can do the same
// crazy slot logic done in mameopt // crazy slot logic done in mameopt
//------------------------------------------------- //-------------------------------------------------
bool emu_options::override_set_value(const char *name, const std::string &value) bool emu_options::override_set_value(const char *name, const std::string &value)
@ -334,7 +334,7 @@ bool emu_options::override_set_value(const char *name, const std::string &value)
//------------------------------------------------- //-------------------------------------------------
// slot_option ctor // slot_option ctor
//------------------------------------------------- //-------------------------------------------------
slot_option::slot_option(const char *default_value) slot_option::slot_option(const char *default_value)
@ -345,7 +345,7 @@ slot_option::slot_option(const char *default_value)
//------------------------------------------------- //-------------------------------------------------
// slot_option::value // slot_option::value
//------------------------------------------------- //-------------------------------------------------
const std::string &slot_option::value() const const std::string &slot_option::value() const
@ -353,17 +353,17 @@ const std::string &slot_option::value() const
// There are a number of ways that the value can be determined; there // There are a number of ways that the value can be determined; there
// is a specific order of precedence: // is a specific order of precedence:
// //
// 1. Highest priority is whatever may have been specified by the user (whether it // 1. Highest priority is whatever may have been specified by the user (whether it
// was specified at the command line, an INI file, or in the UI). We keep track // was specified at the command line, an INI file, or in the UI). We keep track
// of whether these values were specified this way // of whether these values were specified this way
// //
// Take note that slots have a notion of being "selectable". Slots that are not // Take note that slots have a notion of being "selectable". Slots that are not
// marked as selectable cannot be specified with this technique // marked as selectable cannot be specified with this technique
// //
// 2. Next highest is what is returned from get_default_card_software() // 2. Next highest is what is returned from get_default_card_software()
// //
// 3. Last in priority is what was specified as the slot default. This comes from // 3. Last in priority is what was specified as the slot default. This comes from
// device setup // device setup
if (m_specified) if (m_specified)
return m_specified_value; return m_specified_value;
else if (!m_default_card_software.empty()) else if (!m_default_card_software.empty())
@ -374,7 +374,7 @@ const std::string &slot_option::value() const
//------------------------------------------------- //-------------------------------------------------
// slot_option::specified_value // slot_option::specified_value
//------------------------------------------------- //-------------------------------------------------
std::string slot_option::specified_value() const std::string slot_option::specified_value() const
@ -391,7 +391,7 @@ std::string slot_option::specified_value() const
//------------------------------------------------- //-------------------------------------------------
// slot_option::specify // slot_option::specify
//------------------------------------------------- //-------------------------------------------------
void slot_option::specify(std::string &&text) void slot_option::specify(std::string &&text)
@ -416,7 +416,7 @@ void slot_option::specify(std::string &&text)
//------------------------------------------------- //-------------------------------------------------
// slot_option::set_bios // slot_option::set_bios
//------------------------------------------------- //-------------------------------------------------
void slot_option::set_bios(std::string &&text) void slot_option::set_bios(std::string &&text)

View File

@ -235,11 +235,11 @@ public:
void set_default_card_software(std::string &&s) { m_default_card_software = std::move(s); } void set_default_card_software(std::string &&s) { m_default_card_software = std::move(s); }
private: private:
bool m_specified; bool m_specified;
std::string m_specified_value; std::string m_specified_value;
std::string m_specified_bios; std::string m_specified_bios;
std::string m_default_card_software; std::string m_default_card_software;
std::string m_default_value; std::string m_default_value;
}; };
@ -448,15 +448,15 @@ private:
static const options_entry s_option_entries[]; static const options_entry s_option_entries[];
// slots and devices // slots and devices
std::map<std::string, slot_option> m_slot_options; std::map<std::string, slot_option> m_slot_options;
std::map<std::string, std::string> m_image_options; std::map<std::string, std::string> m_image_options;
// cached options, for scenarios where parsing core_options is too slow // cached options, for scenarios where parsing core_options is too slow
int m_coin_impulse; int m_coin_impulse;
bool m_joystick_contradictory; bool m_joystick_contradictory;
bool m_sleep; bool m_sleep;
bool m_refresh_speed; bool m_refresh_speed;
ui_option m_ui; ui_option m_ui;
}; };
#endif // MAME_EMU_EMUOPTS_H #endif // MAME_EMU_EMUOPTS_H

View File

@ -1068,15 +1068,15 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_
// and try to open that // and try to open that
// //
// An example of a system that requires this is src/mame/drivers/ksys673.cpp, that has declarations like this: // An example of a system that requires this is src/mame/drivers/ksys673.cpp, that has declarations like this:
// ... // ...
// DISK_IMAGE_READONLY("889aa", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac)) // DISK_IMAGE_READONLY("889aa", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
// ... // ...
// DISK_IMAGE_READONLY("889ea", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac)) // DISK_IMAGE_READONLY("889ea", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
// ... // ...
// DISK_IMAGE_READONLY("889ja", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac)) // DISK_IMAGE_READONLY("889ja", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
// ... // ...
// DISK_IMAGE_READONLY("889ua", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac)) // DISK_IMAGE_READONLY("889ua", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
// ... // ...
util::hash_collection romphashes(ROM_GETHASHDATA(romp)); util::hash_collection romphashes(ROM_GETHASHDATA(romp));
for (int drv = driver_list::find(*gamedrv); drv != -1; drv = driver_list::clone(drv)) for (int drv = driver_list::find(*gamedrv); drv != -1; drv = driver_list::clone(drv))
{ {

View File

@ -100,7 +100,7 @@ private:
driver_enumerator m_drivlist; driver_enumerator m_drivlist;
// blank options for use during validation // blank options for use during validation
emu_options m_blank_options; emu_options m_blank_options;
// error tracking // error tracking
int m_errors; int m_errors;

View File

@ -115,7 +115,7 @@ void mame_options::update_slot_options(emu_options &options, const software_part
//------------------------------------------------- //-------------------------------------------------
// get_default_card_software // get_default_card_software
//------------------------------------------------- //-------------------------------------------------
std::string mame_options::get_default_card_software(device_slot_interface &slot, const emu_options &options) std::string mame_options::get_default_card_software(device_slot_interface &slot, const emu_options &options)

View File

@ -26,7 +26,7 @@ namespace ui {
#define ERROR_MESSAGE_TIME 5 #define ERROR_MESSAGE_TIME 5
// item reference for "Switch Item Ordering" // item reference for "Switch Item Ordering"
#define ITEMREF_SWITCH_ITEM_ORDERING ((void *)1) #define ITEMREF_SWITCH_ITEM_ORDERING ((void *)1)
/*************************************************************************** /***************************************************************************

View File

@ -377,42 +377,42 @@ static floperr_t fd_construct(floppy_image_legacy *floppy, int tracks, int secto
static FLOPPY_IDENTIFY(fd_80_256_identify) static FLOPPY_IDENTIFY(fd_80_256_identify)
{ {
return fd_identify(floppy, vote, 80, 256); return fd_identify(floppy, vote, 80, 256);
} }
static FLOPPY_CONSTRUCT(fd_80_256_construct) static FLOPPY_CONSTRUCT(fd_80_256_construct)
{ {
return fd_construct(floppy, 80, 256); return fd_construct(floppy, 80, 256);
} }
static FLOPPY_IDENTIFY(fd_40_256_identify) static FLOPPY_IDENTIFY(fd_40_256_identify)
{ {
return fd_identify(floppy, vote, 40, 256); return fd_identify(floppy, vote, 40, 256);
} }
static FLOPPY_CONSTRUCT(fd_40_256_construct) static FLOPPY_CONSTRUCT(fd_40_256_construct)
{ {
return fd_construct(floppy, 40, 256); return fd_construct(floppy, 40, 256);
} }
static FLOPPY_IDENTIFY(fd_80_128_identify) static FLOPPY_IDENTIFY(fd_80_128_identify)
{ {
return fd_identify(floppy, vote, 80, 128); return fd_identify(floppy, vote, 80, 128);
} }
static FLOPPY_CONSTRUCT(fd_80_128_construct) static FLOPPY_CONSTRUCT(fd_80_128_construct)
{ {
return fd_construct(floppy, 80, 128); return fd_construct(floppy, 80, 128);
} }
static FLOPPY_IDENTIFY(fd_40_128_identify) static FLOPPY_IDENTIFY(fd_40_128_identify)
{ {
return fd_identify(floppy, vote, 40, 128); return fd_identify(floppy, vote, 40, 128);
} }
static FLOPPY_CONSTRUCT(fd_40_128_construct) static FLOPPY_CONSTRUCT(fd_40_128_construct)
{ {
return fd_construct(floppy, 40, 128); return fd_construct(floppy, 40, 128);
} }
@ -421,24 +421,24 @@ static FLOPPY_CONSTRUCT(fd_40_128_construct)
LEGACY_FLOPPY_OPTIONS_START(thomson) LEGACY_FLOPPY_OPTIONS_START(thomson)
LEGACY_FLOPPY_OPTION(fdmfm2, "fd", "Thomson FD (MFM) 80 tracks disk image (3\"1/2 DD)", LEGACY_FLOPPY_OPTION(fdmfm2, "fd", "Thomson FD (MFM) 80 tracks disk image (3\"1/2 DD)",
fd_80_256_identify, fd_80_256_construct, nullptr, nullptr) fd_80_256_identify, fd_80_256_construct, nullptr, nullptr)
// Note: no way to distinguish between FD files for 5"1/4 DD and 3"1/2 SD actually, as they have the same size // Note: no way to distinguish between FD files for 5"1/4 DD and 3"1/2 SD actually, as they have the same size
// however, we expect 3"1/2 SD to be rather rare, so, we simply put it after 5"1/4 DD // however, we expect 3"1/2 SD to be rather rare, so, we simply put it after 5"1/4 DD
LEGACY_FLOPPY_OPTION(fdmfm, "fd", "Thomson FD (MFM) 40 tracks disk image (5\"1/4 DD)", LEGACY_FLOPPY_OPTION(fdmfm, "fd", "Thomson FD (MFM) 40 tracks disk image (5\"1/4 DD)",
fd_40_256_identify, fd_40_256_construct, nullptr, nullptr) fd_40_256_identify, fd_40_256_construct, nullptr, nullptr)
LEGACY_FLOPPY_OPTION(fd2, "fd", "Thomson FD (FM) 80 tracks disk image (3\"1/2 SD)", LEGACY_FLOPPY_OPTION(fd2, "fd", "Thomson FD (FM) 80 tracks disk image (3\"1/2 SD)",
fd_80_128_identify, fd_80_128_construct, nullptr, nullptr) fd_80_128_identify, fd_80_128_construct, nullptr, nullptr)
LEGACY_FLOPPY_OPTION(fd, "fd", "Thomson FD (FM) 40 tracks disk image (5\"1/4 SD)", LEGACY_FLOPPY_OPTION(fd, "fd", "Thomson FD (FM) 40 tracks disk image (5\"1/4 SD)",
fd_40_128_identify, fd_40_128_construct, nullptr, nullptr) fd_40_128_identify, fd_40_128_construct, nullptr, nullptr)
LEGACY_FLOPPY_OPTION(sap,"sap", "Thomson SAP floppy disk image", LEGACY_FLOPPY_OPTION(sap,"sap", "Thomson SAP floppy disk image",
sap_dsk_identify, sap_dsk_construct, nullptr, nullptr) sap_dsk_identify, sap_dsk_construct, nullptr, nullptr)
LEGACY_FLOPPY_OPTION(qdd,"qd", "Thomson QDD floppy disk image (2\"8 SD)", LEGACY_FLOPPY_OPTION(qdd,"qd", "Thomson QDD floppy disk image (2\"8 SD)",
qdd_dsk_identify, qdd_dsk_construct, nullptr, nullptr) qdd_dsk_identify, qdd_dsk_construct, nullptr, nullptr)
LEGACY_FLOPPY_OPTIONS_END LEGACY_FLOPPY_OPTIONS_END

View File

@ -44,9 +44,9 @@ namespace netlist
struct need_bytes_for_bits struct need_bytes_for_bits
{ {
enum { value = enum { value =
bits <= 8 ? 1 : bits <= 8 ? 1 :
bits <= 16 ? 2 : bits <= 16 ? 2 :
bits <= 32 ? 4 : bits <= 32 ? 4 :
8 8
}; };
}; };

82
src/lib/netlist/plib/pstring.h Executable file → Normal file
View File

@ -62,18 +62,18 @@ public:
typedef typename traits_type::mem_t mem_t; typedef typename traits_type::mem_t mem_t;
typedef typename traits_type::code_t code_t; typedef typename traits_type::code_t code_t;
typedef std::size_t size_type; typedef std::size_t size_type;
typedef std::ptrdiff_t difference_type; typedef std::ptrdiff_t difference_type;
typedef typename traits_type::string_type string_type; typedef typename traits_type::string_type string_type;
class ref_value_type final class ref_value_type final
{ {
public: public:
ref_value_type() = delete; ref_value_type() = delete;
ref_value_type(const ref_value_type &) = delete; ref_value_type(const ref_value_type &) = delete;
ref_value_type(ref_value_type &&) = delete; ref_value_type(ref_value_type &&) = delete;
ref_value_type &operator=(const ref_value_type &) = delete; ref_value_type &operator=(const ref_value_type &) = delete;
ref_value_type &operator=(ref_value_type &&) = delete; ref_value_type &operator=(ref_value_type &&) = delete;
operator code_t() const noexcept { return traits_type::code(&m); } operator code_t() const noexcept { return traits_type::code(&m); }
private: private:
const mem_t m; const mem_t m;
@ -166,8 +166,8 @@ public:
const_iterator cend() const { return const_iterator(m_str.end()); } const_iterator cend() const { return const_iterator(m_str.end()); }
// C string conversion helpers // C string conversion helpers
const mem_t *c_str() const { return static_cast<const mem_t *>(m_str.c_str()); } const mem_t *c_str() const { return static_cast<const mem_t *>(m_str.c_str()); }
const mem_t *data() const { return c_str(); } const mem_t *data() const { return c_str(); }
size_type length() const { return traits_type::len(m_str); } size_type length() const { return traits_type::len(m_str); }
size_type size() const { return traits_type::len(m_str); } size_type size() const { return traits_type::len(m_str); }
@ -369,7 +369,7 @@ struct putf16_traits
while (i != p.end()) while (i != p.end())
{ {
// FIXME: check that size is equal // FIXME: check that size is equal
uint16_t c = static_cast<uint16_t>(*i++); uint16_t c = static_cast<uint16_t>(*i++);
if (!((c & 0xd800) == 0xd800)) if (!((c & 0xd800) == 0xd800))
ret++; ret++;
} }
@ -377,8 +377,8 @@ struct putf16_traits
} }
static std::size_t codelen(const mem_t *p) static std::size_t codelen(const mem_t *p)
{ {
uint16_t c = static_cast<uint16_t>(*p); uint16_t c = static_cast<uint16_t>(*p);
return ((c & 0xd800) == 0xd800) ? 2 : 1; return ((c & 0xd800) == 0xd800) ? 2 : 1;
} }
static std::size_t codelen(const code_t c) static std::size_t codelen(const code_t c)
{ {
@ -389,28 +389,28 @@ struct putf16_traits
} }
static code_t code(const mem_t *p) static code_t code(const mem_t *p)
{ {
uint32_t c = static_cast<uint32_t>(*p++); uint32_t c = static_cast<uint32_t>(*p++);
if ((c & 0xd800) == 0xd800) if ((c & 0xd800) == 0xd800)
{ {
c = (c - 0xd800) << 10; c = (c - 0xd800) << 10;
c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000; c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000;
} }
return static_cast<code_t>(c); return static_cast<code_t>(c);
} }
static void encode(code_t c, string_type &s) static void encode(code_t c, string_type &s)
{ {
uint32_t cu = static_cast<uint32_t>(c); uint32_t cu = static_cast<uint32_t>(c);
if (c > 0xffff) if (c > 0xffff)
{ //make a surrogate pair { //make a surrogate pair
uint32_t t = ((cu - 0x10000) >> 10) + 0xd800; uint32_t t = ((cu - 0x10000) >> 10) + 0xd800;
cu = (cu & 0x3ff) + 0xdc00; cu = (cu & 0x3ff) + 0xdc00;
s += static_cast<mem_t>(t); s += static_cast<mem_t>(t);
s += static_cast<mem_t>(cu); s += static_cast<mem_t>(cu);
} }
else else
{ {
s += static_cast<mem_t>(cu); s += static_cast<mem_t>(cu);
} }
} }
static const mem_t *nthcode(const mem_t *p, const std::size_t n) static const mem_t *nthcode(const mem_t *p, const std::size_t n)
{ {
@ -435,7 +435,7 @@ struct pwchar_traits
while (i != p.end()) while (i != p.end())
{ {
// FIXME: check that size is equal // FIXME: check that size is equal
uint32_t c = static_cast<uint32_t>(*i++); uint32_t c = static_cast<uint32_t>(*i++);
if (!((c & 0xd800) == 0xd800)) if (!((c & 0xd800) == 0xd800))
ret++; ret++;
} }
@ -449,8 +449,8 @@ struct pwchar_traits
{ {
if (sizeof(wchar_t) == 2) if (sizeof(wchar_t) == 2)
{ {
uint16_t c = static_cast<uint16_t>(*p); uint16_t c = static_cast<uint16_t>(*p);
return ((c & 0xd800) == 0xd800) ? 2 : 1; return ((c & 0xd800) == 0xd800) ? 2 : 1;
} }
else else
return 1; return 1;
@ -468,13 +468,13 @@ struct pwchar_traits
{ {
if (sizeof(wchar_t) == 2) if (sizeof(wchar_t) == 2)
{ {
uint32_t c = static_cast<uint32_t>(*p++); uint32_t c = static_cast<uint32_t>(*p++);
if ((c & 0xd800) == 0xd800) if ((c & 0xd800) == 0xd800)
{ {
c = (c - 0xd800) << 10; c = (c - 0xd800) << 10;
c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000; c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000;
} }
return static_cast<code_t>(c); return static_cast<code_t>(c);
} }
else else
return static_cast<code_t>(*p); return static_cast<code_t>(*p);

View File

@ -38,7 +38,7 @@ constexpr bool gregorian_is_leap_year(int year)
//------------------------------------------------- //-------------------------------------------------
// gregorian_days_in_month - given a year and a one-counted // gregorian_days_in_month - given a year and a one-counted
// month, return the amount of days in that month // month, return the amount of days in that month
//------------------------------------------------- //-------------------------------------------------
inline int gregorian_days_in_month(int month, int year) inline int gregorian_days_in_month(int month, int year)

View File

@ -21,7 +21,7 @@
namespace util { namespace util {
/*************************************************************************** /***************************************************************************
GLOBAL VARIABLES GLOBAL VARIABLES
***************************************************************************/ ***************************************************************************/
extern std::chrono::system_clock::duration system_clock_adjustment; extern std::chrono::system_clock::duration system_clock_adjustment;
@ -35,18 +35,18 @@ typedef std::chrono::duration<std::uint64_t, std::ratio<1, 10000000> > ntfs_dura
//--------------------------------------------------------- //---------------------------------------------------------
// arbitrary_clock - an std::chrono clock that "knows" the // arbitrary_clock - an std::chrono clock that "knows" the
// date of the epoch's begining // date of the epoch's begining
//--------------------------------------------------------- //---------------------------------------------------------
template<typename Rep, int Y, int M, int D, int H, int N, int S, typename Ratio> template<typename Rep, int Y, int M, int D, int H, int N, int S, typename Ratio>
class arbitrary_clock class arbitrary_clock
{ {
public: public:
typedef Rep rep; typedef Rep rep;
typedef Ratio period; typedef Ratio period;
typedef std::chrono::duration<rep, period> duration; typedef std::chrono::duration<rep, period> duration;
typedef std::chrono::time_point<arbitrary_clock> time_point; typedef std::chrono::time_point<arbitrary_clock> time_point;
static constexpr int base_year = Y; static constexpr int base_year = Y;
static constexpr int base_month = M; static constexpr int base_month = M;
static constexpr int base_day = D; static constexpr int base_day = D;
@ -55,8 +55,8 @@ public:
static constexpr int base_second = S; static constexpr int base_second = S;
//--------------------------------------------------------- //---------------------------------------------------------
// from_arbitrary_time_point - converts an arbitrary_clock // from_arbitrary_time_point - converts an arbitrary_clock
// with a different scale to this arbitrary_clock's scale // with a different scale to this arbitrary_clock's scale
//--------------------------------------------------------- //---------------------------------------------------------
template<typename Rep2, int Y2, int M2, int D2, int H2, int N2, int S2, typename Ratio2> template<typename Rep2, int Y2, int M2, int D2, int H2, int N2, int S2, typename Ratio2>
@ -75,8 +75,8 @@ public:
//--------------------------------------------------------- //---------------------------------------------------------
// to_arbitrary_time_point - converts an arbitrary_clock // to_arbitrary_time_point - converts an arbitrary_clock
// of this scale to one of different scale // of this scale to one of different scale
//--------------------------------------------------------- //---------------------------------------------------------
template<typename Rep2, int Y2, int M2, int D2, int H2, int N2, int S2, typename Ratio2> template<typename Rep2, int Y2, int M2, int D2, int H2, int N2, int S2, typename Ratio2>
@ -87,7 +87,7 @@ public:
//--------------------------------------------------------- //---------------------------------------------------------
// to_tm - formats a structure of type 'struct tm' // to_tm - formats a structure of type 'struct tm'
//--------------------------------------------------------- //---------------------------------------------------------
static struct tm to_tm(const time_point &tp) static struct tm to_tm(const time_point &tp)
@ -106,7 +106,7 @@ public:
//--------------------------------------------------------- //---------------------------------------------------------
// to_system_clock - converts to a system_clock time_point // to_system_clock - converts to a system_clock time_point
//--------------------------------------------------------- //---------------------------------------------------------
static std::chrono::time_point<std::chrono::system_clock> to_system_clock(const time_point &tp) static std::chrono::time_point<std::chrono::system_clock> to_system_clock(const time_point &tp)
@ -124,7 +124,7 @@ public:
} }
//--------------------------------------------------------- //---------------------------------------------------------
// from_system_clock - converts from a system_clock time_point // from_system_clock - converts from a system_clock time_point
//--------------------------------------------------------- //---------------------------------------------------------
static time_point from_system_clock(const std::chrono::time_point<std::chrono::system_clock> &tp) static time_point from_system_clock(const std::chrono::time_point<std::chrono::system_clock> &tp)
@ -138,13 +138,13 @@ private:
// //
// * years with leap years are at the end of every quadyear // * years with leap years are at the end of every quadyear
// * quadyears without leap years are at the end of every century // * quadyears without leap years are at the end of every century
// * centuries where the last quadyear has a leap year at the end are at the // * centuries where the last quadyear has a leap year at the end are at the
// end of every quadcentury // end of every quadcentury
typedef arbitrary_clock<std::int64_t, 1601, 1, 1, 0, 0, 0, std::ratio<1, 1> > tm_conversion_clock; typedef arbitrary_clock<std::int64_t, 1601, 1, 1, 0, 0, 0, std::ratio<1, 1> > tm_conversion_clock;
//--------------------------------------------------------- //---------------------------------------------------------
// internal_to_tm - formats a structure of type 'struct tm' // internal_to_tm - formats a structure of type 'struct tm'
// based on a normalized clock // based on a normalized clock
//--------------------------------------------------------- //---------------------------------------------------------
static struct tm internal_to_tm(std::chrono::duration<std::int64_t, std::ratio<1, 1> > duration) static struct tm internal_to_tm(std::chrono::duration<std::int64_t, std::ratio<1, 1> > duration)
@ -217,8 +217,8 @@ private:
typedef arbitrary_clock<std::int64_t, 1970, 1, 1, 0, 0, 0, std::chrono::system_clock::period > system_conversion_clock; typedef arbitrary_clock<std::int64_t, 1970, 1, 1, 0, 0, 0, std::chrono::system_clock::period > system_conversion_clock;
//------------------------------------------------- //-------------------------------------------------
// absolute_day - returns the absolute day count // absolute_day - returns the absolute day count
// for the specified year/month/day // for the specified year/month/day
//------------------------------------------------- //-------------------------------------------------
static int64_t absolute_day(int year, int month, int day) static int64_t absolute_day(int year, int month, int day)

View File

@ -65,7 +65,7 @@ Notes:
TODO: TODO:
- PWM sound in ABC-klubben/abc80/grafik/flagga.bac - PWM sound in ABC-klubben/abc80/grafik/flagga.bac
- proper keyboard controller emulation - proper keyboard controller emulation
- MyAB TKN80 80-column card - MyAB TKN80 80-column card
- GeJo 80-column card - GeJo 80-column card

View File

@ -141,7 +141,7 @@ Notes:
TODO: TODO:
- option ROM/HR video RAM access needs refactor of memory banking - option ROM/HR video RAM access needs refactor of memory banking
- cassette - cassette
- abc806 RTC - abc806 RTC
- abc806 disks except ufd631 won't boot - abc806 disks except ufd631 won't boot

View File

@ -94,7 +94,7 @@ TILE_GET_INFO_MEMBER(acchi_state::get_acchi_fg_tile_info)
TILEMAP_MAPPER_MEMBER(acchi_state::pagescan) TILEMAP_MAPPER_MEMBER(acchi_state::pagescan)
{ {
return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x300) << 5); return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x300) << 5);
// return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x100) << 5); // see comment with tilemap creation // return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x100) << 5); // see comment with tilemap creation
} }
@ -107,8 +107,8 @@ void acchi_state::video_start()
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_fg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024,16*2); m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_fg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024,16*2);
// 2nd half of the ram seems unused, maybe it's actually a mirror meaning this would be the correct tilemap sizes // 2nd half of the ram seems unused, maybe it's actually a mirror meaning this would be the correct tilemap sizes
// m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_bg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2); // m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_bg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2);
// m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_fg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2); // m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_fg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2);
m_fg_tilemap->set_transparent_pen(0xf); m_fg_tilemap->set_transparent_pen(0xf);
} }
@ -142,10 +142,10 @@ uint32_t acchi_state::screen_update_acchi(screen_device &screen, bitmap_ind16 &b
/* /*
popmessage("%04x %04x %04x %04x\n%04x %04x %04x %04x", popmessage("%04x %04x %04x %04x\n%04x %04x %04x %04x",
m_vregs[0], m_vregs[1], m_vregs[0], m_vregs[1],
m_vregs[2], m_vregs[3], m_vregs[2], m_vregs[3],
m_vregs[4], m_vregs[5], m_vregs[4], m_vregs[5],
m_vregs[6], m_vregs[7]); m_vregs[6], m_vregs[7]);
*/ */
return 0; return 0;
} }
@ -173,7 +173,7 @@ static ADDRESS_MAP_START( acchi_map, AS_PROGRAM, 16, acchi_state )
AM_RANGE(0x100014, 0x100015) AM_WRITE8(flipscreen_w, 0x00ff) AM_RANGE(0x100014, 0x100015) AM_WRITE8(flipscreen_w, 0x00ff)
AM_RANGE(0x110000, 0x1103ff) AM_RAM AM_SHARE("videoregs") AM_RANGE(0x110000, 0x1103ff) AM_RAM AM_SHARE("videoregs")
AM_RANGE(0x120000, 0x1205ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x120000, 0x1205ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
@ -183,7 +183,7 @@ static ADDRESS_MAP_START( acchi_map, AS_PROGRAM, 16, acchi_state )
AM_RANGE(0x150000, 0x150001) AM_WRITENOP // ? also reads (oki?) AM_RANGE(0x150000, 0x150001) AM_WRITENOP // ? also reads (oki?)
AM_RANGE(0x150010, 0x150011) AM_WRITENOP // ? also reads AM_RANGE(0x150010, 0x150011) AM_WRITENOP // ? also reads
AM_RANGE(0x180000, 0x18ffff) AM_RAM // mainram? AM_RANGE(0x180000, 0x18ffff) AM_RAM // mainram?
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( acchi ) // inputs register in test mode but not in game mode? static INPUT_PORTS_START( acchi ) // inputs register in test mode but not in game mode?

View File

@ -9,7 +9,7 @@
Appears to be a down-grade of the nmk16 HW Appears to be a down-grade of the nmk16 HW
TODO: TODO:
- Fix MCU simulation for credit subtractions & add coinage settings (currently set to free play for convenience); - Fix MCU simulation for credit subtractions & add coinage settings (currently set to free play for convenience);
- Understand better the video emulation and convert it to tilemaps; - Understand better the video emulation and convert it to tilemaps;
- Decap + emulate MCU, required if the random number generation is going to be accurate; - Decap + emulate MCU, required if the random number generation is going to be accurate;

View File

@ -242,8 +242,8 @@ WRITE8_MEMBER(discoboy_state::port_01_w)
WRITE8_MEMBER(discoboy_state::port_06_w) WRITE8_MEMBER(discoboy_state::port_06_w)
{ {
//printf("unk discoboy_port_06_w %02x\n",data); //printf("unk discoboy_port_06_w %02x\n",data);
if (data != 0) logerror("port 06!!!! %02x\n",data); if (data != 0) logerror("port 06!!!! %02x\n",data);
} }
READ8_MEMBER(discoboy_state::rambank2_r) READ8_MEMBER(discoboy_state::rambank2_r)

View File

@ -105,7 +105,7 @@ uint32_t giclassic_state::screen_update_giclassic(screen_device &screen, bitmap_
m_k056832->tilemap_draw(screen, bitmap, cliprect, 3, 0, 1); m_k056832->tilemap_draw(screen, bitmap, cliprect, 3, 0, 1);
m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, 0, 2); m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, 0, 2);
m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, 0, 4); m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, 0, 4);
// m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, 0, 8); // m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, 0, 8);
return 0; return 0;
} }
@ -145,13 +145,13 @@ static ADDRESS_MAP_START( satellite_main, AS_PROGRAM, 16, giclassic_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0)
AM_RANGE(0x100000, 0x103fff) AM_RAM AM_RANGE(0x100000, 0x103fff) AM_RAM
AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x800000, 0x801fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) AM_RANGE(0x800000, 0x801fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
AM_RANGE(0x900000, 0x90003f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w) AM_RANGE(0x900000, 0x90003f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w)
AM_RANGE(0xb00000, 0xb01fff) AM_READ(vrom_r) AM_RANGE(0xb00000, 0xb01fff) AM_READ(vrom_r)
AM_RANGE(0xc00000, 0xc00001) AM_WRITE(control_w) AM_RANGE(0xc00000, 0xc00001) AM_WRITE(control_w)
AM_RANGE(0xd00000, 0xd0003f) AM_RAM // these must read/write or 26S (LCD controller) fails AM_RANGE(0xd00000, 0xd0003f) AM_RAM // these must read/write or 26S (LCD controller) fails
AM_RANGE(0xe00000, 0xe0001f) AM_DEVWRITE8("k056832", k056832_device, b_w, 0xff00) AM_RANGE(0xe00000, 0xe0001f) AM_DEVWRITE8("k056832", k056832_device, b_w, 0xff00)
AM_RANGE(0xf00000, 0xf00001) AM_NOP AM_WRITENOP // watchdog reset AM_RANGE(0xf00000, 0xf00001) AM_NOP AM_WRITENOP // watchdog reset
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( giclassic ) static INPUT_PORTS_START( giclassic )
@ -266,13 +266,13 @@ static ADDRESS_MAP_START( server_main, AS_PROGRAM, 16, giclassicsvr_state )
AM_RANGE(0x090000, 0x093fff) AM_RAM AM_RANGE(0x090000, 0x093fff) AM_RAM
AM_RANGE(0x100000, 0x107fff) AM_RAM AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x100000, 0x107fff) AM_RAM AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x180000, 0x183fff) AM_RAM AM_RANGE(0x180000, 0x183fff) AM_RAM
AM_RANGE(0x280000, 0x281fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) AM_RANGE(0x280000, 0x281fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES
AM_RANGE(0x300060, 0x30006f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES AM_RANGE(0x300060, 0x30006f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES
AM_RANGE(0x308000, 0x30803f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w) AM_RANGE(0x308000, 0x30803f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w)
AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252a", k053252_device, read, write, 0x00ff) // CRTC 1 AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252a", k053252_device, read, write, 0x00ff) // CRTC 1
AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252b", k053252_device, read, write, 0xff00) // CRTC 2 AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252b", k053252_device, read, write, 0xff00) // CRTC 2
AM_RANGE(0x380000, 0x380001) AM_WRITENOP // watchdog reset AM_RANGE(0x380000, 0x380001) AM_WRITENOP // watchdog reset
AM_RANGE(0x398000, 0x398001) AM_READWRITE(control_r, control_w) AM_RANGE(0x398000, 0x398001) AM_READWRITE(control_r, control_w)
AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_RANGE(0x400000, 0x41ffff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -317,7 +317,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( giclassvr, giclassicsvr_state ) static MACHINE_CONFIG_START( giclassvr, giclassicsvr_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // unknown speed MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // unknown speed
MCFG_CPU_PROGRAM_MAP(server_main) MCFG_CPU_PROGRAM_MAP(server_main)
MCFG_CPU_VBLANK_INT_DRIVER("screen", giclassicsvr_state, giclassicsvr_interrupt) MCFG_CPU_VBLANK_INT_DRIVER("screen", giclassicsvr_state, giclassicsvr_interrupt)

View File

@ -150,31 +150,31 @@
// Constants of 98770A video // Constants of 98770A video
// HBEND & VBEND probably are not really 0 // HBEND & VBEND probably are not really 0
#define VIDEO_770_PIXEL_CLOCK 29798400 #define VIDEO_770_PIXEL_CLOCK 29798400
#define VIDEO_770_HTOTAL 1024 #define VIDEO_770_HTOTAL 1024
#define VIDEO_770_HBEND 0 #define VIDEO_770_HBEND 0
#define VIDEO_770_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH) #define VIDEO_770_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH)
#define VIDEO_770_VTOTAL 485 #define VIDEO_770_VTOTAL 485
#define VIDEO_770_VBEND 0 #define VIDEO_770_VBEND 0
#define VIDEO_770_VBSTART (VIDEO_770_VBEND + GVIDEO_VPIXELS) #define VIDEO_770_VBSTART (VIDEO_770_VBEND + GVIDEO_VPIXELS)
#define VIDEO_770_ALPHA_L_LIM 80 // Left-side limit of alpha-only horizontal part #define VIDEO_770_ALPHA_L_LIM 80 // Left-side limit of alpha-only horizontal part
#define VIDEO_770_ALPHA_R_LIM 640 // Right-side limit of alpha-only horizontal part #define VIDEO_770_ALPHA_R_LIM 640 // Right-side limit of alpha-only horizontal part
// Constants of 98780A video // Constants of 98780A video
#define VIDEO_780_PIXEL_CLOCK 28224000 #define VIDEO_780_PIXEL_CLOCK 28224000
#define VIDEO_780_HTOTAL 896 #define VIDEO_780_HTOTAL 896
#define VIDEO_780_VTOTAL 525 #define VIDEO_780_VTOTAL 525
#define VIDEO_780_HBEND 0 #define VIDEO_780_HBEND 0
#define VIDEO_780_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH) #define VIDEO_780_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH)
#define VIDEO_780_VBEND 0 #define VIDEO_780_VBEND 0
#define VIDEO_780_VBSTART (VIDEO_780_VBEND + GVIDEO_VPIXELS) #define VIDEO_780_VBSTART (VIDEO_780_VBEND + GVIDEO_VPIXELS)
#define VIDEO_780_ALPHA_L_LIM 80 // Left-side limit of alpha-only horizontal part #define VIDEO_780_ALPHA_L_LIM 80 // Left-side limit of alpha-only horizontal part
#define VIDEO_780_ALPHA_R_LIM 640 // Right-side limit of alpha-only horizontal part #define VIDEO_780_ALPHA_R_LIM 640 // Right-side limit of alpha-only horizontal part
#define I_GR 0xb0 // graphics intensity #define I_GR 0xb0 // graphics intensity
#define I_AL 0xd0 // alpha intensity #define I_AL 0xd0 // alpha intensity
#define I_CU 0xf0 // graphics cursor intensity #define I_CU 0xf0 // graphics cursor intensity
#define I_LP 0xff // light pen cursor intensity #define I_LP 0xff // light pen cursor intensity
// Palette indexes (for monochromatic screens) // Palette indexes (for monochromatic screens)
#define PEN_BLACK 0 // Black #define PEN_BLACK 0 // Black
@ -188,10 +188,10 @@ constexpr unsigned LP_FOV = 9; // Field of view
constexpr unsigned LP_XOFFSET = 5; // x-offset of LP (due to delay in hit recognition) constexpr unsigned LP_XOFFSET = 5; // x-offset of LP (due to delay in hit recognition)
// Peripheral Addresses (PA) // Peripheral Addresses (PA)
#define IO_SLOT_FIRST_PA 1 #define IO_SLOT_FIRST_PA 1
#define IO_SLOT_LAST_PA 12 #define IO_SLOT_LAST_PA 12
#define GVIDEO_PA 13 #define GVIDEO_PA 13
#define T14_PA 14 #define T14_PA 14
#define T15_PA 15 #define T15_PA 15
#define KEY_SCAN_OSCILLATOR 327680 #define KEY_SCAN_OSCILLATOR 327680
@ -2649,11 +2649,11 @@ void hp9845t_state::machine_start()
m_graphic_mem.resize(GVIDEO_MEM_SIZE); m_graphic_mem.resize(GVIDEO_MEM_SIZE);
// initialize palette // initialize palette
m_palette->set_pen_color(PEN_BLACK , 0x00, 0x00, 0x00); // black m_palette->set_pen_color(PEN_BLACK , 0x00, 0x00, 0x00); // black
m_palette->set_pen_color(PEN_GRAPHIC, 0x00, I_GR, 0x00); // graphics m_palette->set_pen_color(PEN_GRAPHIC, 0x00, I_GR, 0x00); // graphics
m_palette->set_pen_color(PEN_ALPHA , 0x00, I_AL, 0x00); // alpha m_palette->set_pen_color(PEN_ALPHA , 0x00, I_AL, 0x00); // alpha
m_palette->set_pen_color(PEN_CURSOR , 0x00, I_CU, 0x00); // graphics cursor m_palette->set_pen_color(PEN_CURSOR , 0x00, I_CU, 0x00); // graphics cursor
m_palette->set_pen_color(PEN_LP , 0x00, I_LP, 0x00); // lightpen cursor m_palette->set_pen_color(PEN_LP , 0x00, I_LP, 0x00); // lightpen cursor
} }
void hp9845t_state::machine_reset() void hp9845t_state::machine_reset()
@ -2697,18 +2697,18 @@ READ16_MEMBER(hp9845t_state::graphic_r)
BIT_SET(res, 6); BIT_SET(res, 6);
} }
if (m_gv_lp_status && m_gv_lp_int_en) { if (m_gv_lp_status && m_gv_lp_int_en) {
BIT_SET(res, 0); // Lightpen service request BIT_SET(res, 0); // Lightpen service request
} }
// TODO: gsr/ // TODO: gsr/
// TODO: fix sk status // TODO: fix sk status
if (m_gv_sk_status) { if (m_gv_sk_status) {
BIT_SET(res, 1); // Softkey service request BIT_SET(res, 1); // Softkey service request
m_gv_sk_status = false; m_gv_sk_status = false;
} }
BIT_SET(res, 9); // ID BIT_SET(res, 9); // ID
BIT_SET(res, 11); // ID BIT_SET(res, 11); // ID
if (m_gv_stat) { if (m_gv_stat) {
BIT_SET(res, 13); // error indication BIT_SET(res, 13); // error indication
} }
update_graphic_bits(); update_graphic_bits();
@ -2758,8 +2758,8 @@ WRITE16_MEMBER(hp9845t_state::graphic_w)
m_gv_gr_en = BIT(data , 8); // enables graphics controller & vector generator command processing and IRQs m_gv_gr_en = BIT(data , 8); // enables graphics controller & vector generator command processing and IRQs
m_gv_sk_en = BIT(data , 9); // enables reads on R4 to return SK keycode, also enables SK IRQs m_gv_sk_en = BIT(data , 9); // enables reads on R4 to return SK keycode, also enables SK IRQs
m_gv_opt_en = BIT(data , 11); // not really used m_gv_opt_en = BIT(data , 11); // not really used
m_gv_dsa_en = BIT(data , 12); // for factory use only (function unknown) m_gv_dsa_en = BIT(data , 12); // for factory use only (function unknown)
m_gv_fsm_state = GV_STAT_RESET; // command/reset state machine m_gv_fsm_state = GV_STAT_RESET; // command/reset state machine
lp_r5_w(data); lp_r5_w(data);
advance_gv_fsm(false , false); advance_gv_fsm(false , false);
break; break;
@ -2808,7 +2808,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(hp9845t_state::scanline_timer)
void hp9845t_state::set_graphic_mode(bool graphic , bool alpha) void hp9845t_state::set_graphic_mode(bool graphic , bool alpha)
{ {
m_back_arrow_cursor = graphic; // triggers back arrow cursor, 98780A uses video on/off command for enabling/disabling graphics m_back_arrow_cursor = graphic; // triggers back arrow cursor, 98780A uses video on/off command for enabling/disabling graphics
m_alpha_sel = alpha; m_alpha_sel = alpha;
} }
@ -2955,20 +2955,20 @@ void hp9845t_state::plot(uint16_t x, uint16_t y, bool draw_erase)
if (BIT(m_gv_rb_control, 1)) { if (BIT(m_gv_rb_control, 1)) {
// save graphics memory to rubber band memory // save graphics memory to rubber band memory
if (m_graphic_mem[ addr ] & pixel_mask) if (m_graphic_mem[ addr ] & pixel_mask)
m_gv_rb_memory[m_gv_rb_counter/16] |= 0x1 << (m_gv_rb_counter % 16); // set m_gv_rb_memory[m_gv_rb_counter/16] |= 0x1 << (m_gv_rb_counter % 16); // set
else else
m_gv_rb_memory[m_gv_rb_counter/16] &= ~(0x1 << (m_gv_rb_counter % 16)); // clear m_gv_rb_memory[m_gv_rb_counter/16] &= ~(0x1 << (m_gv_rb_counter % 16)); // clear
m_gv_rb_counter++; m_gv_rb_counter++;
if (m_gv_rb_counter > 4095) { if (m_gv_rb_counter > 4095) {
m_gv_stat = true; // we might prevent data corruption here, but the original hardware doesn't m_gv_stat = true; // we might prevent data corruption here, but the original hardware doesn't
m_gv_rb_counter = 0; m_gv_rb_counter = 0;
} }
} else if (BIT(m_gv_rb_control, 0)) { } else if (BIT(m_gv_rb_control, 0)) {
// restore graphics memory from rubber band memory // restore graphics memory from rubber band memory
if (BIT(m_gv_rb_memory[m_gv_rb_counter / 16], m_gv_rb_counter % 16)) if (BIT(m_gv_rb_memory[m_gv_rb_counter / 16], m_gv_rb_counter % 16))
m_graphic_mem[ addr ] |= pixel_mask; // set m_graphic_mem[ addr ] |= pixel_mask; // set
else else
m_graphic_mem[ addr ] &= ~pixel_mask; // clear m_graphic_mem[ addr ] &= ~pixel_mask; // clear
m_gv_rb_counter++; m_gv_rb_counter++;
if (m_gv_rb_counter > 4095) { if (m_gv_rb_counter > 4095) {
m_gv_stat = true; m_gv_stat = true;
@ -3020,16 +3020,16 @@ void hp9845t_state::draw_arc(uint16_t x0, uint16_t y0, int xstart, int ystart, u
if (do_plot) { if (do_plot) {
switch (quadrant) { switch (quadrant) {
case 0: case 0:
plot(x0 + x1, y0 - y1, draw_erase); // quadrant 0 plot(x0 + x1, y0 - y1, draw_erase); // quadrant 0
break; break;
case 1: case 1:
plot(x0 - y1, y0 - x1, draw_erase); // quadrant 1 plot(x0 - y1, y0 - x1, draw_erase); // quadrant 1
break; break;
case 2: case 2:
plot(x0 - x1, y0 + y1, draw_erase); // quadrant 2 plot(x0 - x1, y0 + y1, draw_erase); // quadrant 2
break; break;
case 3: case 3:
plot(x0 + y1, y0 + x1, draw_erase); // quadrant 3 plot(x0 + y1, y0 + x1, draw_erase); // quadrant 3
break; break;
} }
} }
@ -3112,7 +3112,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position); m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position);
} }
LOG(("read words, last = %x\n", m_gv_last_cmd)); LOG(("read words, last = %x\n", m_gv_last_cmd));
m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> read stream m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> read stream
m_gv_last_cmd = m_gv_cmd; m_gv_last_cmd = m_gv_cmd;
} else if (m_gv_cmd == 0xd) { } else if (m_gv_cmd == 0xd) {
// fast clear/set command // fast clear/set command
@ -3125,10 +3125,10 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position); m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position);
} }
LOG(("write words\n")); LOG(("write words\n"));
m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> write stream m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> write stream
} else { } else {
// any other command // any other command
m_gv_fsm_state = GV_STAT_WAIT_TRIG_0; // -> wait for trigger m_gv_fsm_state = GV_STAT_WAIT_TRIG_0; // -> wait for trigger
} }
m_gv_last_cmd = m_gv_cmd; m_gv_last_cmd = m_gv_cmd;
} else { } else {
@ -3139,21 +3139,21 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
case GV_STAT_WAIT_TRIG_0: case GV_STAT_WAIT_TRIG_0:
// process data on R4 or R6 // process data on R4 or R6
switch (m_gv_cmd) { switch (m_gv_cmd) {
case 0x1: // load end points case 0x1: // load end points
m_gv_ypt = m_gv_data_w & 0x3ff; m_gv_ypt = m_gv_data_w & 0x3ff;
LOG(("load end points y = %d\n", m_gv_ypt)); LOG(("load end points y = %d\n", m_gv_ypt));
break; break;
case 0x3: // load arc case 0x3: // load arc
m_gv_arc_parm = 0; m_gv_arc_parm = 0;
m_gv_arc[ m_gv_arc_parm ] = m_gv_data_w; m_gv_arc[ m_gv_arc_parm ] = m_gv_data_w;
LOG(("load arc parm%d = %04x\n", m_gv_arc_parm, m_gv_arc[m_gv_arc_parm])); LOG(("load arc parm%d = %04x\n", m_gv_arc_parm, m_gv_arc[m_gv_arc_parm]));
m_gv_arc_parm++; m_gv_arc_parm++;
break; break;
case 0x5: // load scan case 0x5: // load scan
m_gv_scan_start_x = m_gv_data_w & 0x3ff; // 0..559 m_gv_scan_start_x = m_gv_data_w & 0x3ff; // 0..559
LOG(("load scan x = %d\n", m_gv_scan_start_x)); LOG(("load scan x = %d\n", m_gv_scan_start_x));
break; break;
case 0x6: // set line type/area fill case 0x6: // set line type/area fill
m_gv_line_type_area_fill = m_gv_data_w & 0x1ff; m_gv_line_type_area_fill = m_gv_data_w & 0x1ff;
if (BIT(m_gv_line_type_area_fill, 4)) { if (BIT(m_gv_line_type_area_fill, 4)) {
m_gv_line_type_mask = m_line_type[ m_gv_line_type_area_fill & 0x7 ]; m_gv_line_type_mask = m_line_type[ m_gv_line_type_area_fill & 0x7 ];
@ -3161,29 +3161,29 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
} }
LOG(("set line type = %04x\n", m_gv_line_type_area_fill)); LOG(("set line type = %04x\n", m_gv_line_type_area_fill));
break; break;
case 0x7: // load X/Y I/O address case 0x7: // load X/Y I/O address
m_gv_word_y_position = m_gv_data_w & 0x1ff; // 0..454 m_gv_word_y_position = m_gv_data_w & 0x1ff; // 0..454
LOG(("load X/Y I/O adress y = %04x\n", m_gv_word_y_position)); LOG(("load X/Y I/O adress y = %04x\n", m_gv_word_y_position));
break; break;
case 0xa: // load memory control case 0xa: // load memory control
// A single bit is saved (InvBit) // A single bit is saved (InvBit)
m_gv_memory_control = (m_gv_data_w & 0x9) == 9 || (m_gv_data_w & 0x12) == 0x12 || (m_gv_data_w & 0x24) == 0x24; m_gv_memory_control = (m_gv_data_w & 0x9) == 9 || (m_gv_data_w & 0x12) == 0x12 || (m_gv_data_w & 0x24) == 0x24;
LOG(("load memory control = %04x\n", m_gv_memory_control)); LOG(("load memory control = %04x\n", m_gv_memory_control));
break; break;
case 0xb: // video on/off - enable graphics video output (1=on 2=off) case 0xb: // video on/off - enable graphics video output (1=on 2=off)
m_graphic_sel = BIT(m_gv_data_w, 0); m_graphic_sel = BIT(m_gv_data_w, 0);
LOG(("video on/off parm = %d\n", m_gv_data_w & 0x3)); LOG(("video on/off parm = %d\n", m_gv_data_w & 0x3));
break; break;
case 0xc: // load color mask (no effect, just for compatibility with 9845c), takes a single word as parameter case 0xc: // load color mask (no effect, just for compatibility with 9845c), takes a single word as parameter
break; break;
case 0xe: // Y cursor position case 0xe: // Y cursor position
m_gv_cursor_fs = (m_gv_data_w & 0x3) == 0; m_gv_cursor_fs = (m_gv_data_w & 0x3) == 0;
m_gv_cursor_gc = ((m_gv_data_w & 0x3) == 1) || m_gv_cursor_fs; m_gv_cursor_gc = ((m_gv_data_w & 0x3) == 1) || m_gv_cursor_fs;
m_gv_cursor_y = 559 - (m_gv_data_w >> 7); m_gv_cursor_y = 559 - (m_gv_data_w >> 7);
if (m_gv_cursor_fs) m_gv_cursor_y -= 4; if (m_gv_cursor_fs) m_gv_cursor_y -= 4;
LOG(("Y cursor position = %d, fs = %d, gc = %d\n", m_gv_cursor_y, m_gv_cursor_fs, m_gv_cursor_gc)); LOG(("Y cursor position = %d, fs = %d, gc = %d\n", m_gv_cursor_y, m_gv_cursor_fs, m_gv_cursor_gc));
break; break;
case 0xf: // X cursor position case 0xf: // X cursor position
m_gv_cursor_x = ((m_gv_data_w >> 6) & 0x3ff) - 121; m_gv_cursor_x = ((m_gv_data_w >> 6) & 0x3ff) - 121;
LOG(("X cursor position = %d\n", m_gv_cursor_x)); LOG(("X cursor position = %d\n", m_gv_cursor_x));
break; break;
@ -3191,10 +3191,10 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
LOG(("unknown 98780A command = %d, parm = 0x%04x\n", m_gv_cmd, m_gv_data_w)); LOG(("unknown 98780A command = %d, parm = 0x%04x\n", m_gv_cmd, m_gv_data_w));
} }
if ((m_gv_cmd == 0x1) || (m_gv_cmd == 0x3) || (m_gv_cmd == 0x5) || (m_gv_cmd == 0x7)) { if ((m_gv_cmd == 0x1) || (m_gv_cmd == 0x3) || (m_gv_cmd == 0x5) || (m_gv_cmd == 0x7)) {
m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> get second data word m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> get second data word
} else { } else {
get_out = true; get_out = true;
m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> done m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> done
} }
break; break;
@ -3206,7 +3206,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
m_gv_data_r = m_graphic_mem[ m_gv_io_counter ]; m_gv_data_r = m_graphic_mem[ m_gv_io_counter ];
LOG(("read words @%04x = %04x\n" , m_gv_io_counter , m_gv_data_r)); LOG(("read words @%04x = %04x\n" , m_gv_io_counter , m_gv_data_r));
m_gv_io_counter = (m_gv_io_counter + 1) & GVIDEO_ADDR_MASK; m_gv_io_counter = (m_gv_io_counter + 1) & GVIDEO_ADDR_MASK;
m_gv_fsm_state = GV_STAT_WAIT_DS_1; // -> proceed with read stream m_gv_fsm_state = GV_STAT_WAIT_DS_1; // -> proceed with read stream
} else { } else {
m_gv_timer->adjust(time_mem_av); m_gv_timer->adjust(time_mem_av);
get_out = true; get_out = true;
@ -3217,7 +3217,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
// wait for data word to be read // wait for data word to be read
if (ds) { if (ds) {
// -- next word // -- next word
m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> process data word m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> process data word
} else { } else {
// -- done // -- done
get_out = true; get_out = true;
@ -3228,7 +3228,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
// wait for data word to be written // wait for data word to be written
if (ds) { if (ds) {
// -- next word // -- next word
m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> process data word m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> process data word
} else { } else {
// done // done
get_out = true; get_out = true;
@ -3250,12 +3250,12 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
if (BIT(m_gv_data_w, 11)) { if (BIT(m_gv_data_w, 11)) {
// draw vector // draw vector
LOG(("load end points x = %d, rb = %d (draw)\n", m_gv_xpt, m_gv_rb_control)); LOG(("load end points x = %d, rb = %d (draw)\n", m_gv_xpt, m_gv_rb_control));
m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector
} else { } else {
LOG(("load end points x = %d, rb = %d (move)\n", m_gv_xpt, m_gv_rb_control)); LOG(("load end points x = %d, rb = %d (move)\n", m_gv_xpt, m_gv_rb_control));
m_gv_last_xpt = m_gv_xpt; m_gv_last_xpt = m_gv_xpt;
m_gv_last_ypt = m_gv_ypt; m_gv_last_ypt = m_gv_ypt;
m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> proceed with next word pair m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> proceed with next word pair
} }
break; break;
@ -3265,22 +3265,22 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
LOG(("load arc parm%d = %04x\n", m_gv_arc_parm, m_gv_arc[m_gv_arc_parm])); LOG(("load arc parm%d = %04x\n", m_gv_arc_parm, m_gv_arc[m_gv_arc_parm]));
m_gv_arc_parm++; m_gv_arc_parm++;
if (m_gv_arc_parm < 4) { if (m_gv_arc_parm < 4) {
m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with next word m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with next word
} else { } else {
m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector
} }
break; break;
case 0x5: case 0x5:
// load scan // load scan
m_gv_scan_start_y = m_gv_data_w & 0x3ff; // 0..454 m_gv_scan_start_y = m_gv_data_w & 0x3ff; // 0..454
LOG(("load scan y = %d\n", m_gv_scan_start_y)); LOG(("load scan y = %d\n", m_gv_scan_start_y));
m_gv_fsm_state = GV_STAT_WAIT_DS_0; m_gv_fsm_state = GV_STAT_WAIT_DS_0;
break; break;
case 0x7: case 0x7:
// load X/Y I/O address // load X/Y I/O address
m_gv_word_x_position = (m_gv_data_w & 0x3f0) >> 4; // 0..34 m_gv_word_x_position = (m_gv_data_w & 0x3f0) >> 4; // 0..34
m_gv_increment_to_next_row = BIT(m_gv_data_w, 11); m_gv_increment_to_next_row = BIT(m_gv_data_w, 11);
m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position); m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position);
LOG(("load X/Y I/O adress x = %04x increment = %d\n", m_gv_word_x_position, m_gv_increment_to_next_row)); LOG(("load X/Y I/O adress x = %04x increment = %d\n", m_gv_word_x_position, m_gv_increment_to_next_row));
@ -3289,7 +3289,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
case 0x8: case 0x8:
// write words command // write words command
m_gv_fsm_state = GV_STAT_WAIT_MEM_1; // -> proceed with next word m_gv_fsm_state = GV_STAT_WAIT_MEM_1; // -> proceed with next word
break; break;
} }
break; break;
@ -3304,7 +3304,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
if (!m_gv_increment_to_next_row || (m_gv_word_x_position < 34)) { if (!m_gv_increment_to_next_row || (m_gv_word_x_position < 34)) {
m_gv_io_counter = (m_gv_io_counter + 1) & GVIDEO_ADDR_MASK; m_gv_io_counter = (m_gv_io_counter + 1) & GVIDEO_ADDR_MASK;
} }
m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with write stream m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with write stream
} else { } else {
m_gv_timer->adjust(time_mem_av); m_gv_timer->adjust(time_mem_av);
get_out = true; get_out = true;
@ -3470,31 +3470,31 @@ static MACHINE_CONFIG_START( hp9835a, hp9845_state )
MACHINE_CONFIG_END MACHINE_CONFIG_END
/* /*
Global memory map in blocks of 32 kwords / 64 kbytes each: Global memory map in blocks of 32 kwords / 64 kbytes each:
block 0: 0x000000 - 0x007fff (LPU RAM) block 0: 0x000000 - 0x007fff (LPU RAM)
block 1: 0x008000 - 0x00ffff (PPU RAM, only 0x00c000 - 0x00ffff used) block 1: 0x008000 - 0x00ffff (PPU RAM, only 0x00c000 - 0x00ffff used)
block 2: 0x010000 - 0x017fff (unused) block 2: 0x010000 - 0x017fff (unused)
block 3: 0x018000 - 0x01ffff (LPU system ROM) block 3: 0x018000 - 0x01ffff (LPU system ROM)
block 4: 0x020000 - 0x027fff (LPU RAM) block 4: 0x020000 - 0x027fff (LPU RAM)
block 5: 0x028000 - 0x02ffff (PPU system ROM) block 5: 0x028000 - 0x02ffff (PPU system ROM)
block 6: 0x030000 - 0x037fff (LPU RAM) block 6: 0x030000 - 0x037fff (LPU RAM)
block 7: 0x038000 - 0x03ffff (LPU option ROM) block 7: 0x038000 - 0x03ffff (LPU option ROM)
block 10: 0x040000 - 0x047fff (LPU RAM) block 10: 0x040000 - 0x047fff (LPU RAM)
block 11: 0x048000 - 0x04ffff (PPU option ROM) block 11: 0x048000 - 0x04ffff (PPU option ROM)
block 12: 0x050000 - 0x057fff (LPU RAM) block 12: 0x050000 - 0x057fff (LPU RAM)
block 13: 0x058000 - 0x05ffff (LPU option ROM) block 13: 0x058000 - 0x05ffff (LPU option ROM)
block 14: 0x060000 - 0x067fff (LPU RAM) block 14: 0x060000 - 0x067fff (LPU RAM)
block 15: 0x068000 - 0x06ffff (PPU option ROM) block 15: 0x068000 - 0x06ffff (PPU option ROM)
block 16: 0x070000 - 0x077fff (LPU RAM) block 16: 0x070000 - 0x077fff (LPU RAM)
block 17: 0x078000 - 0x07ffff (unused) block 17: 0x078000 - 0x07ffff (unused)
notes: notes:
- all block numbers are octal - all block numbers are octal
- blocks 20 to 76 are reserved for 512 kbyte RAM boards (p/n 09845-66590) - blocks 20 to 76 are reserved for 512 kbyte RAM boards (p/n 09845-66590)
- block 45 is reserved for the Test ROM - block 45 is reserved for the Test ROM
- memory addresses are continuous (for convenience, the mapping below uses block numbers as - memory addresses are continuous (for convenience, the mapping below uses block numbers as
address part above 0xffff, so there are gaps between 0x8000 and 0xffff which are masked out). address part above 0xffff, so there are gaps between 0x8000 and 0xffff which are masked out).
- all LPU RAM is dynamically mapped at machine start according to -ramsize option - all LPU RAM is dynamically mapped at machine start according to -ramsize option
*/ */

View File

@ -113,9 +113,9 @@ ROM_START(nbamac)
ROM_END ROM_END
ROM_START(glxplay) ROM_START(glxplay)
ROM_REGION(0x4000, "maincpu", 0) ROM_REGION(0x4000, "maincpu", 0)
ROM_LOAD("1083-1.cpu", 0x0000, 0x2000, CRC(3df33169) SHA1(657720aab4cccf3364f013acb3f5dbc46fe0e05c)) ROM_LOAD("1083-1.cpu", 0x0000, 0x2000, CRC(3df33169) SHA1(657720aab4cccf3364f013acb3f5dbc46fe0e05c))
ROM_LOAD("1083-2.cpu", 0x2000, 0x2000, CRC(47b4f49e) SHA1(59853ac56bb9e2dc7b848dc46ebd27c21b9d2e82)) ROM_LOAD("1083-2.cpu", 0x2000, 0x2000, CRC(47b4f49e) SHA1(59853ac56bb9e2dc7b848dc46ebd27c21b9d2e82))
ROM_END ROM_END
ROM_START(kidnap) ROM_START(kidnap)

View File

@ -305,16 +305,16 @@ READ32_MEMBER(midzeus_state::disk_asic_jr_r)
/* CMOS/ZPRAM write enable; only low bit is used */ /* CMOS/ZPRAM write enable; only low bit is used */
case 2: case 2:
break; break;
// return disk_asic_jr[offset] | ~1; // return disk_asic_jr[offset] | ~1;
/* reset status; bit 0 is watchdog reset; mk4/invasn/thegrid read at startup; invasn freaks if it is 1 at startup */ /* reset status; bit 0 is watchdog reset; mk4/invasn/thegrid read at startup; invasn freaks if it is 1 at startup */
case 3: case 3:
break; break;
// return disk_asic_jr[offset] | ~1; // return disk_asic_jr[offset] | ~1;
/* ROM bank selection on Zeus 2; two bits are used */ /* ROM bank selection on Zeus 2; two bits are used */
case 5: case 5:
// return disk_asic_jr[offset] | ~3; // return disk_asic_jr[offset] | ~3;
/* disk asic jr id; crusnexo reads at startup: if (val & 0xf0) == 0xa0 it affects */ /* disk asic jr id; crusnexo reads at startup: if (val & 0xf0) == 0xa0 it affects */
/* how the Zeus is used (reg 0x5d is set to 0x54580006) */ /* how the Zeus is used (reg 0x5d is set to 0x54580006) */
@ -1226,17 +1226,17 @@ static INPUT_PORTS_START( thegrid )
PORT_BIT( 0xff, 0x38, IPT_AD_STICK_Y ) PORT_MINMAX(0x00,0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_REVERSE PORT_BIT( 0xff, 0x38, IPT_AD_STICK_Y ) PORT_MINMAX(0x00,0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_REVERSE
PORT_START("KEYPAD") PORT_START("KEYPAD")
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) /* keypad 1 */ PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) /* keypad 1 */
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) /* keypad 4 */ PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) /* keypad 4 */
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) /* keypad 7 */ PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) /* keypad 7 */
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad *") PORT_CODE(KEYCODE_MINUS_PAD) /* keypad * */ PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad *") PORT_CODE(KEYCODE_MINUS_PAD) /* keypad * */
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) /* keypad 2 */ PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) /* keypad 2 */
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) /* keypad 5 */ PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) /* keypad 5 */
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) /* keypad 8 */ PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) /* keypad 8 */
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) /* keypad 0 */ PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) /* keypad 0 */
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) /* keypad 3 */ PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) /* keypad 3 */
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) /* keypad 6 */ PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) /* keypad 6 */
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) /* keypad 9 */ PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) /* keypad 9 */
PORT_BIT(0x800, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad #") PORT_CODE(KEYCODE_PLUS_PAD) /* keypad # */ PORT_BIT(0x800, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad #") PORT_CODE(KEYCODE_PLUS_PAD) /* keypad # */
PORT_START("TRACKX1") PORT_START("TRACKX1")

View File

@ -16,7 +16,7 @@
Some boards use the DS1205 chip for security, others use the DS1991 iButton Some boards use the DS1205 chip for security, others use the DS1991 iButton
Megatouch XL (Software) (* indicated verified dumps of CD + Boot ROM, Megatouch XL (Software) (* indicated verified dumps of CD + Boot ROM,
- means we have it working but would like a redump) - means we have it working but would like a redump)
Megatouch XL (1997) (CD versions: R0, R0A, R0B, R0C, R0D, R1, R2, R3, R3A, R3B, R3C) Megatouch XL (1997) (CD versions: R0, R0A, R0B, R0C, R0D, R1, R2, R3, R3A, R3B, R3C)
Megatouch XL 5000 (1998) (CD versions: R5A, *R5B, R5D, *R5E, R5G, R5H, *R5I) Megatouch XL 5000 (1998) (CD versions: R5A, *R5B, R5D, *R5E, R5G, R5H, *R5I)
Megatouch XL 6000 (1999) (CD versions: *R02, R04, R05, *R07) Megatouch XL 6000 (1999) (CD versions: *R02, R04, R05, *R07)
@ -205,7 +205,7 @@ static MACHINE_CONFIG_START( at486, mtxl_state )
/* internal ram */ /* internal ram */
MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("32M") // Early XL games had 8 MB RAM, 6000 and later require 32MB MCFG_RAM_DEFAULT_SIZE("32M") // Early XL games had 8 MB RAM, 6000 and later require 32MB
/* bankdev for dxxxx */ /* bankdev for dxxxx */
MCFG_DEVICE_ADD("dbank", ADDRESS_MAP_BANK, 0) MCFG_DEVICE_ADD("dbank", ADDRESS_MAP_BANK, 0)

View File

@ -1,18 +1,18 @@
// license:BSD-3-Clause // license:BSD-3-Clause
// copyright-holders:R. Belmont // copyright-holders:R. Belmont
/* /*
otomedius.cpp: Konami Otomedius (and maybe related Konami PC-based stuff) otomedius.cpp: Konami Otomedius (and maybe related Konami PC-based stuff)
Skeleton by R. Belmont Skeleton by R. Belmont
Hardware for Otomedius: Hardware for Otomedius:
- Intel Socket 478 Celeron CPU, 2.5 GHz, S-Spec "SL6ZY" - Intel Socket 478 Celeron CPU, 2.5 GHz, S-Spec "SL6ZY"
More info: http://www.cpu-world.com/sspec/SL/SL6ZY.html More info: http://www.cpu-world.com/sspec/SL/SL6ZY.html
- Intel 82865G northbridge - Intel 82865G northbridge
- Intel 82801EB southbridge / "ICH5" Super I/O - Intel 82801EB southbridge / "ICH5" Super I/O
- 512MB of system RAM - 512MB of system RAM
- ATI-branded Radeon 9600XT AGP video card with 128 MB of VRAM - ATI-branded Radeon 9600XT AGP video card with 128 MB of VRAM
- Konami protection dongle marked "GEGGG JA-B" - Konami protection dongle marked "GEGGG JA-B"
*/ */
#include "emu.h" #include "emu.h"
@ -87,7 +87,7 @@ ROM_START( otomedius )
ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASEFF ) ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASEFF )
ROM_LOAD( "sst49fl004b.u18", 0x000000, 0x080000, CRC(bb9f4e3e) SHA1(95b393a38a5eded3204debfe7a88cc7ea15adf9a) ) ROM_LOAD( "sst49fl004b.u18", 0x000000, 0x080000, CRC(bb9f4e3e) SHA1(95b393a38a5eded3204debfe7a88cc7ea15adf9a) )
ROM_REGION( 0x10000, "vbios", 0 ) // video card BIOS ROM_REGION( 0x10000, "vbios", 0 ) // video card BIOS
ROM_LOAD( "ati.9600xt.128.samsung.031113.rom", 0x000000, 0x00d000, CRC(020ec211) SHA1(3860c980106f00e5259ecd8d4cd2f9b3fca2428a) ) ROM_LOAD( "ati.9600xt.128.samsung.031113.rom", 0x000000, 0x00d000, CRC(020ec211) SHA1(3860c980106f00e5259ecd8d4cd2f9b3fca2428a) )
DISK_REGION( "ide:0:hdd:image" ) // Seagate ST340015A 40GB PATA drive DISK_REGION( "ide:0:hdd:image" ) // Seagate ST340015A 40GB PATA drive

View File

@ -1,6 +1,6 @@
// license:BSD-3-Clause // license:BSD-3-Clause
/************************************************************************** /**************************************************************************
Pirate Ship Pirate Ship
PWB(A)354460B PWB(A)354460B
@ -53,7 +53,7 @@ public:
m_k056832(*this, "k056832"), m_k056832(*this, "k056832"),
m_k055673(*this, "k055673"), m_k055673(*this, "k055673"),
m_k055555(*this, "k055555"), m_k055555(*this, "k055555"),
// m_k053246(*this, "k053246"), // m_k053246(*this, "k053246"),
m_k054539(*this, "k054539"), m_k054539(*this, "k054539"),
m_spriteram(*this,"spriteram") m_spriteram(*this,"spriteram")
{ } { }
@ -66,7 +66,7 @@ public:
required_device<k055673_device> m_k055673; required_device<k055673_device> m_k055673;
required_device<k055555_device> m_k055555; required_device<k055555_device> m_k055555;
required_device<k054539_device> m_k054539; required_device<k054539_device> m_k054539;
// required_device<k053247_device> m_k053246; // required_device<k053247_device> m_k053246;
optional_shared_ptr<uint16_t> m_spriteram; optional_shared_ptr<uint16_t> m_spriteram;
@ -127,8 +127,8 @@ K056832_CB_MEMBER(piratesh_state::piratesh_tile_callback)
// Code // Code
// Color // Color
// Flags // Flags
// if (*color != 0) // if (*color != 0)
// printf("%x %x %x\n", layer, *code, *color >> 2); // printf("%x %x %x\n", layer, *code, *color >> 2);
*color = (m_layer_colorbase[layer] << 4) + ((*color >> 2));// & 0x0f); *color = (m_layer_colorbase[layer] << 4) + ((*color >> 2));// & 0x0f);
} }
@ -341,7 +341,7 @@ WRITE16_MEMBER(piratesh_state::control1_w)
WRITE16_MEMBER(piratesh_state::control2_w) WRITE16_MEMBER(piratesh_state::control2_w)
{ {
// .... .... ...x .... - Unknown (always 1?) // .... .... ...x .... - Unknown (always 1?)
// .... .... ..x. .... - Unknown // .... .... ..x. .... - Unknown
// .... .... .x.. .... - Counter out // .... .... .x.. .... - Counter out
// .... .... x... .... - Counter in // .... .... x... .... - Counter in
@ -363,7 +363,7 @@ WRITE16_MEMBER(piratesh_state::control2_w)
WRITE16_MEMBER(piratesh_state::control3_w) WRITE16_MEMBER(piratesh_state::control3_w)
{ {
// .... .... .... ...x - Watchdog? (051550?) // .... .... .... ...x - Watchdog? (051550?)
// .... .... .... ..x. - 056832 ROM bank control // .... .... .... ..x. - 056832 ROM bank control
// .... .... ...x .... - Ticket dispenser enable (active high) // .... .... ...x .... - Ticket dispenser enable (active high)
// .... .... ..x. .... - Hopper enable (active high) // .... .... ..x. .... - Hopper enable (active high)
@ -372,7 +372,7 @@ WRITE16_MEMBER(piratesh_state::control3_w)
if ((data & ~0x0133) || (~data & 0x100)) if ((data & ~0x0133) || (~data & 0x100))
printf("CTRL1 W: %x %x %x\n", offset, data, mem_mask); printf("CTRL1 W: %x %x %x\n", offset, data, mem_mask);
// printf("CTRL 1: %x\n", data & 0x0010); // printf("CTRL 1: %x\n", data & 0x0010);
machine().device<ticket_dispenser_device>("ticket")->motor_w(data & 0x0010 ? 1 : 0); machine().device<ticket_dispenser_device>("ticket")->motor_w(data & 0x0010 ? 1 : 0);
machine().device<ticket_dispenser_device>("hopper")->motor_w(data & 0x0020 ? 1 : 0); machine().device<ticket_dispenser_device>("hopper")->motor_w(data & 0x0020 ? 1 : 0);
@ -571,11 +571,11 @@ MACHINE_RESET_MEMBER(piratesh_state,piratesh)
// soften chorus(chip 0 channel 0-3), boost voice(chip 0 channel 4-7) // soften chorus(chip 0 channel 0-3), boost voice(chip 0 channel 4-7)
for (i=0; i<=7; i++) for (i=0; i<=7; i++)
{ {
// m_k054539->set_gain(i, 0.5); // m_k054539->set_gain(i, 0.5);
} }
// // soften percussions(chip 1 channel 0-7) // // soften percussions(chip 1 channel 0-7)
// for (i=0; i<=7; i++) m_k054539_2->set_gain(i, 0.5); // for (i=0; i<=7; i++) m_k054539_2->set_gain(i, 0.5);
} }
@ -671,8 +671,8 @@ ROM_START( piratesh )
ROM_LOAD( "360ua-a06.15t", 0x000000, 0x80000, CRC(6816a493) SHA1(4fc4cfbc164d84bbf8d75ccd78c9f40f3273d852) ) ROM_LOAD( "360ua-a06.15t", 0x000000, 0x80000, CRC(6816a493) SHA1(4fc4cfbc164d84bbf8d75ccd78c9f40f3273d852) )
ROM_LOAD( "360ua-a07.17t", 0x080000, 0x80000, CRC(af7127c5) SHA1(b525f3c6b831e3354eba46016d414bedcb3ae8dc) ) ROM_LOAD( "360ua-a07.17t", 0x080000, 0x80000, CRC(af7127c5) SHA1(b525f3c6b831e3354eba46016d414bedcb3ae8dc) )
// ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error // ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
// ROM_LOAD( "piratesh.nv", 0x0000, 0x080, CRC(28df2269) SHA1(3f071c97662745a199f96964e2e79f795bd5a391) ) // ROM_LOAD( "piratesh.nv", 0x0000, 0x080, CRC(28df2269) SHA1(3f071c97662745a199f96964e2e79f795bd5a391) )
ROM_END ROM_END
/* ROM parent machine inp init */ /* ROM parent machine inp init */

View File

@ -251,18 +251,18 @@ Source code and text in EPR-6450D
POWER DOWN CHANGE POWER DOWN CHANGE
TSEL: TSEL:
LD A,(BETFLG) ; READ CREDIT LD A,(BETFLG) ; READ CREDIT
RRCA ; CREDIT IN ? RRCA ; CREDIT IN ?
JR C,BETSELZ JR C,BETSELZ
LD A,(SELOLD) LD A,(SELOLD)
OR A OR A
LD C,A LD C,A
CALL NZ,OLDCLCG CALL NZ,OLDCLCG
LD HL,0 LD HL,0
LD (SELOLD),HL LD (SELOLD),HL
LD (DBLSWCT),HL LD (DBLSWCT),HL
LD (LMPCNT),1 LD (LMPCNT),1
================================================================================ ================================================================================
End End

View File

@ -682,9 +682,9 @@ static MACHINE_CONFIG_START( to7, thomson_state )
MCFG_LEGACY_FLOPPY_CONFIG(thomson_floppy_interface) MCFG_LEGACY_FLOPPY_CONFIG(thomson_floppy_interface)
MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(thomson_state, fdc_index_3_w)) MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(thomson_state, fdc_index_3_w))
MCFG_WD2793_ADD("wd2793", XTAL_1MHz) MCFG_WD2793_ADD("wd2793", XTAL_1MHz)
MCFG_FLOPPY_DRIVE_ADD("wd2793:0", cd90_640_floppies, "dd", thomson_state::cd90_640_formats) MCFG_FLOPPY_DRIVE_ADD("wd2793:0", cd90_640_floppies, "dd", thomson_state::cd90_640_formats)
MCFG_FLOPPY_DRIVE_ADD("wd2793:1", cd90_640_floppies, "dd", thomson_state::cd90_640_formats) MCFG_FLOPPY_DRIVE_ADD("wd2793:1", cd90_640_floppies, "dd", thomson_state::cd90_640_formats)
/* network */ /* network */

View File

@ -116,14 +116,14 @@ MACHINE_CONFIG_END
/* /*
Shark by U.S. Billiards Shark by U.S. Billiards
Etched in copper on Top (C) 1975 Etched in copper on Top (C) 1975
010 010
1SCOOP J6 2SCOOP 1SCOOP J6 2SCOOP
Handwritten on top J0037 Handwritten on top J0037
124 124
empty socket at 5M C etched in copper next to socket empty socket at 5M C etched in copper next to socket
*/ */

View File

@ -73,8 +73,8 @@
0x00009d00: LoadProgram(): R3 = ptr to filename 0x00009d00: LoadProgram(): R3 = ptr to filename
TODO: TODO:
- needs a proper way to dump security dongles, anything but p9112 has placeholder ROM for ds2430. - needs a proper way to dump security dongles, anything but p9112 has placeholder ROM for ds2430.
Game status: Game status:
ppp2nd POST: "DIP SWITCH ERROR", "NO SECURITY ERROR" ppp2nd POST: "DIP SWITCH ERROR", "NO SECURITY ERROR"
@ -2068,7 +2068,7 @@ WRITE64_MEMBER(viper_state::unk_serial_w)
/*****************************************************************************/ /*****************************************************************************/
static ADDRESS_MAP_START(viper_map, AS_PROGRAM, 64, viper_state ) static ADDRESS_MAP_START(viper_map, AS_PROGRAM, 64, viper_state )
// ADDRESS_MAP_UNMAP_HIGH // ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00000000, 0x00ffffff) AM_MIRROR(0x1000000) AM_RAM AM_SHARE("workram") AM_RANGE(0x00000000, 0x00ffffff) AM_MIRROR(0x1000000) AM_RAM AM_SHARE("workram")
AM_RANGE(0x80000000, 0x800fffff) AM_READWRITE32(epic_r, epic_w,0xffffffffffffffffU) AM_RANGE(0x80000000, 0x800fffff) AM_READWRITE32(epic_r, epic_w,0xffffffffffffffffU)
AM_RANGE(0x82000000, 0x83ffffff) AM_READWRITE(voodoo3_r, voodoo3_w) AM_RANGE(0x82000000, 0x83ffffff) AM_READWRITE(voodoo3_r, voodoo3_w)
@ -2079,7 +2079,7 @@ static ADDRESS_MAP_START(viper_map, AS_PROGRAM, 64, viper_state )
// 0xff000000, 0xff000fff - cf_card_data_r/w (installed in DRIVER_INIT(vipercf)) // 0xff000000, 0xff000fff - cf_card_data_r/w (installed in DRIVER_INIT(vipercf))
// 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf)) // 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf))
// 0xff300000, 0xff300fff - ata_r/w (installed in DRIVER_INIT(viperhd)) // 0xff300000, 0xff300fff - ata_r/w (installed in DRIVER_INIT(viperhd))
// AM_RANGE(0xff400xxx, 0xff400xxx) ppp2nd sense device // AM_RANGE(0xff400xxx, 0xff400xxx) ppp2nd sense device
AM_RANGE(0xffe00000, 0xffe00007) AM_READ(e00000_r) AM_RANGE(0xffe00000, 0xffe00007) AM_READ(e00000_r)
AM_RANGE(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w) AM_RANGE(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w)
AM_RANGE(0xffe08000, 0xffe08007) AM_NOP AM_RANGE(0xffe08000, 0xffe08007) AM_NOP

View File

@ -266,8 +266,8 @@ WRITE16_MEMBER( nevada_state::vram_w )
{ {
// Todo, Just for sample // Todo, Just for sample
m_vram[offset] = data; m_vram[offset] = data;
m_tilemap->mark_tile_dirty(offset / 2); m_tilemap->mark_tile_dirty(offset / 2);
} }
@ -281,12 +281,12 @@ GFXDECODE_END
TILE_GET_INFO_MEMBER( nevada_state::get_bg_tile_info ) TILE_GET_INFO_MEMBER( nevada_state::get_bg_tile_info )
{ {
//int attr = m_colorram[tile_index]; //int attr = m_colorram[tile_index];
int code = m_vram[tile_index*2+1]; int code = m_vram[tile_index*2+1];
//int bank = (attr & 0x02) >> 1; //int bank = (attr & 0x02) >> 1;
//int color = (attr & 0x3c) >> 2; //int color = (attr & 0x3c) >> 2;
SET_TILE_INFO_MEMBER(0, code, 0, 0); SET_TILE_INFO_MEMBER(0, code, 0, 0);
} }
@ -294,13 +294,13 @@ TILE_GET_INFO_MEMBER( nevada_state::get_bg_tile_info )
/***************************************************************************/ /***************************************************************************/
void nevada_state::video_start() void nevada_state::video_start()
{ {
m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nevada_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,31,31); m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nevada_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,31,31);
} }
/***************************************************************************/ /***************************************************************************/
uint32_t nevada_state::screen_update_nevada(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) uint32_t nevada_state::screen_update_nevada(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{ {
m_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_tilemap->draw(screen, bitmap, cliprect, 0, 0);
return 0; return 0;
} }

View File

@ -5,93 +5,93 @@
Play Mechanix / Right Hand Tech "VP50", "VP100" and "VP101" platforms Play Mechanix / Right Hand Tech "VP50", "VP100" and "VP101" platforms
(PCBs are also marked "Raw Thrills" but all RT games appear to be on PC hardware) (PCBs are also marked "Raw Thrills" but all RT games appear to be on PC hardware)
Boards: Boards:
- VP101: Johnny Nero. The original (?) - VP101: Johnny Nero. The original (?)
- VP100: Special Forces Elite Training. A not-quite-complete VP101; missing ATA DMA. - VP100: Special Forces Elite Training. A not-quite-complete VP101; missing ATA DMA.
- VP50 : Zoofari. Cost-reduced (?) with TX4925 SoC, much less complex FPGA. - VP50 : Zoofari. Cost-reduced (?) with TX4925 SoC, much less complex FPGA.
Preliminary driver by R. Belmont Preliminary driver by R. Belmont
TODO: TODO:
- All games: that formidable sounding 3D accelerator mentioned below. - All games: that formidable sounding 3D accelerator mentioned below.
- All games: the sound system (the POST plays some example sounds) - All games: the sound system (the POST plays some example sounds)
- Zoofari's framebuffer is 256 color but I don't know where the CLUT comes from. - Zoofari's framebuffer is 256 color but I don't know where the CLUT comes from.
To make the games go into a POST test, hold down START 1 while resetting. To make the games go into a POST test, hold down START 1 while resetting.
VP101 Features from http://web.archive.org/web/20041016000248/http://www.righthandtech.com/projects.htm VP101 Features from http://web.archive.org/web/20041016000248/http://www.righthandtech.com/projects.htm
MIPS VR5500 CPU MIPS VR5500 CPU
The VR5500 operates at either at 300 or 400 MHz with 120MHz external bus The VR5500 operates at either at 300 or 400 MHz with 120MHz external bus
MIPS 64-bit RISC architecture MIPS 64-bit RISC architecture
Two-way super-scalar super pipeline Two-way super-scalar super pipeline
On-chip floating-point unit (FPU) On-chip floating-point unit (FPU)
High-speed translation look-aside buffer (TLB)(48 double-entries) High-speed translation look-aside buffer (TLB)(48 double-entries)
On-chip primary cache memory (instruction/data: 32 KB each) On-chip primary cache memory (instruction/data: 32 KB each)
2-way set associative, Supports line lock feature 2-way set associative, Supports line lock feature
Conforms to MIPS I, II, III, and IV instruction sets. Also supports product-sum operation instruction, rotate instruction, register scan instruction Conforms to MIPS I, II, III, and IV instruction sets. Also supports product-sum operation instruction, rotate instruction, register scan instruction
Six execution units (ALU0, ALU1, FPU, FPU/MAC, BRU, and LSU) Six execution units (ALU0, ALU1, FPU, FPU/MAC, BRU, and LSU)
Employment of out-of-order execution mechanism Employment of out-of-order execution mechanism
Branch prediction mechanism - Branch history table with 4K entries Branch prediction mechanism - Branch history table with 4K entries
Support for CPU emulator connection via JTAG/n-Wire port Support for CPU emulator connection via JTAG/n-Wire port
Unified Memory Architecture - DDR SDRAM bank Unified Memory Architecture - DDR SDRAM bank
Arbitrating DDR SDRAM Memory controller Arbitrating DDR SDRAM Memory controller
128Mbyte to 512Mbyte memory capacity 128Mbyte to 512Mbyte memory capacity
120/240 MHz @ 64 bits - ~2GBytes/sec bandwidth 120/240 MHz @ 64 bits - ~2GBytes/sec bandwidth
3D Render Engine 3D Render Engine
True color and 8-bit palette lookup textures True color and 8-bit palette lookup textures
8K byte texel cache for accelerated source texel selection. 8K byte texel cache for accelerated source texel selection.
Perspective corrected rendering Perspective corrected rendering
Bi-linear filter for source texel scaling Bi-linear filter for source texel scaling
256 Color Palette Lookup (888 RGB plus 8 bit Source Palette Alpha) 256 Color Palette Lookup (888 RGB plus 8 bit Source Palette Alpha)
True Color Source Textures (888 RGB plus 8 bit Alpha) True Color Source Textures (888 RGB plus 8 bit Alpha)
24 bit Z-buffer structure in DDR SDRAM buffer 24 bit Z-buffer structure in DDR SDRAM buffer
Per-vertex colored lighting Per-vertex colored lighting
Alpha channel structure in DDR SDRAM buffer Alpha channel structure in DDR SDRAM buffer
Pixel processing effects (fog, night, etc.) Pixel processing effects (fog, night, etc.)
888 RGB Video DAC output section. 888 RGB Video DAC output section.
Bitmap structure in DDR SDRAM with DMA for screen update Bitmap structure in DDR SDRAM with DMA for screen update
Flexible CRT controller with X/Y gun interface counters Flexible CRT controller with X/Y gun interface counters
Game I/O Game I/O
Standard JAMMA I/O interface, including player 3 and 4 connectors Standard JAMMA I/O interface, including player 3 and 4 connectors
4 channel general purpose A to D interface (steering wheel and control pedals) 4 channel general purpose A to D interface (steering wheel and control pedals)
100baseT Ethernet interface for debugging and/or inter game communications 100baseT Ethernet interface for debugging and/or inter game communications
Forced-feedback Wheel Driver Interface for driving games Forced-feedback Wheel Driver Interface for driving games
High-current drivers for lamps or solenoids High-current drivers for lamps or solenoids
Gun interface I/O tightly coupled to the CRT controller Gun interface I/O tightly coupled to the CRT controller
Sound System Sound System
AC97 codec for low cost of implementation and development AC97 codec for low cost of implementation and development
TDA7375 40 Watt Integrated Amplifier TDA7375 40 Watt Integrated Amplifier
Codec fed from the DDR bank via a 16 channel (8 channels of stereo) DMA engine. Codec fed from the DDR bank via a 16 channel (8 channels of stereo) DMA engine.
ATA/IDE Disk Drive Interface ATA/IDE Disk Drive Interface
Standard ATA/IDE interface Standard ATA/IDE interface
Ultra DMA 33/66/100/133 to the DDR SDRAM memory Ultra DMA 33/66/100/133 to the DDR SDRAM memory
Video DAC Video DAC
RGB values at 8 bits per color RGB values at 8 bits per color
RGB voltage level adjustable from 0-1.0 Vp-p to 0-4.0 Vp-p RGB voltage level adjustable from 0-1.0 Vp-p to 0-4.0 Vp-p
Flash Memory Flash Memory
Minimum of 1MB of Flash memory expandable to 4 MB Minimum of 1MB of Flash memory expandable to 4 MB
Updateable Boot ROM Updateable Boot ROM
Updateable FPGA configuration Updateable FPGA configuration
Battery Backed Up RAM Battery Backed Up RAM
32K bytes of non-volatile memory for static game configuration and high score table 32K bytes of non-volatile memory for static game configuration and high score table
Non-volatile Real-Time clock Non-volatile Real-Time clock
Small Footprint Small Footprint
Small outline design for easy kit retrofitting of existing cabinet Small outline design for easy kit retrofitting of existing cabinet
12.2 in x 14.96 in 12.2 in x 14.96 in
Security Interface Security Interface
Security processor provides for a means to unlock the FPGA functions Security processor provides for a means to unlock the FPGA functions
Enabled for software protection against piracy and unwarranted game updates Enabled for software protection against piracy and unwarranted game updates
Full populated and tested board is less than $500, including IDE hard disk. Full populated and tested board is less than $500, including IDE hard disk.
Small outline design for easy kit retrofitting of existing cabinets. Small outline design for easy kit retrofitting of existing cabinets.
@ -166,7 +166,7 @@ void vp10x_state::machine_reset()
void vp10x_state::machine_start() void vp10x_state::machine_start()
{ {
m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS); m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS);
// m_maincpu->add_fastram(0x00000000, 0x03ffffff, false, m_mainram); // m_maincpu->add_fastram(0x00000000, 0x03ffffff, false, m_mainram);
} }
WRITE32_MEMBER(vp10x_state::dmaaddr_w) WRITE32_MEMBER(vp10x_state::dmaaddr_w)
@ -190,7 +190,7 @@ WRITE_LINE_MEMBER(vp10x_state::dmarq_w)
while (m_dmarq_state) while (m_dmarq_state)
{ {
*RAM++ = m_ata->read_dma(); *RAM++ = m_ata->read_dma();
m_dma_ptr += 2; // pointer must advance m_dma_ptr += 2; // pointer must advance
} }
m_ata->write_dmack(CLEAR_LINE); m_ata->write_dmack(CLEAR_LINE);
@ -213,7 +213,7 @@ READ32_MEMBER(vp10x_state::pic_r)
case 0x22: case 0x22:
return serial[pic_state++]; return serial[pic_state++];
case 0x23: // this is the same for jnero and specfrce. great security! case 0x23: // this is the same for jnero and specfrce. great security!
return magic[pic_state++]; return magic[pic_state++];
} }
@ -238,7 +238,7 @@ READ32_MEMBER(vp10x_state::spi_r)
WRITE32_MEMBER(vp10x_state::spi_w) WRITE32_MEMBER(vp10x_state::spi_w)
{ {
// printf("%d to SPI select\n", data); // printf("%d to SPI select\n", data);
m_spi_select = data; m_spi_select = data;
} }
@ -304,7 +304,7 @@ WRITE32_MEMBER(vp10x_state::tty_w) // set breakpoint at bfc01430 to catch when
{ {
// uncomment to see startup messages - it says "RAM OK" and "EPI RSS Ver 4.5.1" followed by "<RSS active>" and then lots of dots // uncomment to see startup messages - it says "RAM OK" and "EPI RSS Ver 4.5.1" followed by "<RSS active>" and then lots of dots
// Special Forces also says "<inited tv_cap> = 00000032" // Special Forces also says "<inited tv_cap> = 00000032"
// printf("%c", data); // printf("%c", data);
} }
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, vp10x_state ) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, vp10x_state )
@ -315,13 +315,13 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, vp10x_state )
AM_RANGE(0x1c400000, 0x1c400003) AM_WRITE(tty_w) // boot ROM code uses this one AM_RANGE(0x1c400000, 0x1c400003) AM_WRITE(tty_w) // boot ROM code uses this one
AM_RANGE(0x1c400014, 0x1c400017) AM_READ(tty_ready_r) AM_RANGE(0x1c400014, 0x1c400017) AM_READ(tty_ready_r)
AM_RANGE(0x1ca0000c, 0x1ca0000f) AM_READ_PORT("IN0") AM_RANGE(0x1ca0000c, 0x1ca0000f) AM_READ_PORT("IN0")
AM_RANGE(0x1ca00010, 0x1ca00013) AM_READ(test_r) // bits here cause various test mode stuff AM_RANGE(0x1ca00010, 0x1ca00013) AM_READ(test_r) // bits here cause various test mode stuff
AM_RANGE(0x1cf00000, 0x1cf00003) AM_NOP AM_READNOP AM_RANGE(0x1cf00000, 0x1cf00003) AM_NOP AM_READNOP
AM_RANGE(0x1d000030, 0x1d000033) AM_WRITE(dmaaddr_w) // ATA DMA destination address AM_RANGE(0x1d000030, 0x1d000033) AM_WRITE(dmaaddr_w) // ATA DMA destination address
AM_RANGE(0x1d000040, 0x1d00005f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff) AM_RANGE(0x1d000040, 0x1d00005f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff)
AM_RANGE(0x1d000060, 0x1d00007f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0x0000ffff) AM_RANGE(0x1d000060, 0x1d00007f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0x0000ffff)
AM_RANGE(0x1f200000, 0x1f200003) AM_READWRITE(pic_r, pic_w) AM_RANGE(0x1f200000, 0x1f200003) AM_READWRITE(pic_r, pic_w)
AM_RANGE(0x1f807000, 0x1f807fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x1f807000, 0x1f807fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0) AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -329,7 +329,7 @@ static ADDRESS_MAP_START( vp50_map, AS_PROGRAM, 32, vp10x_state )
AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("mainram") AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("mainram")
AM_RANGE(0x1f000010, 0x1f00001f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff) AM_RANGE(0x1f000010, 0x1f00001f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff)
AM_RANGE(0x1f000020, 0x1f00002f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) AM_RANGE(0x1f000020, 0x1f00002f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff)
AM_RANGE(0x1f400000, 0x1f400003) AM_NOP // FPGA bitstream download? AM_RANGE(0x1f400000, 0x1f400003) AM_NOP // FPGA bitstream download?
AM_RANGE(0x1f400800, 0x1f400bff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x1f400800, 0x1f400bff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0) AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0)
@ -405,8 +405,8 @@ ROM_START(jnero)
ROM_REGION(0x80000, "pic", 0) /* PIC18c422 program - read-protected, need dumped */ ROM_REGION(0x80000, "pic", 0) /* PIC18c422 program - read-protected, need dumped */
ROM_LOAD( "8722a-1206.bin", 0x000000, 0x80000, NO_DUMP ) ROM_LOAD( "8722a-1206.bin", 0x000000, 0x80000, NO_DUMP )
DISK_REGION( "ata:0:hdd:image" ) /* ideally an IDENTIFY page from a real drive should be the IDTN metadata, DISK_REGION( "ata:0:hdd:image" ) /* ideally an IDENTIFY page from a real drive should be the IDTN metadata,
but even factory-new boardsets came with a variety of HDD makes and models */ but even factory-new boardsets came with a variety of HDD makes and models */
DISK_IMAGE_READONLY("jn010108", 0, SHA1(5a27990478b65fca801c3a6518c519c5b4ca934d) ) DISK_IMAGE_READONLY("jn010108", 0, SHA1(5a27990478b65fca801c3a6518c519c5b4ca934d) )
ROM_END ROM_END

View File

@ -691,7 +691,7 @@ void mac_state::mac_adb_newaction(int state)
m_adb_direction = 1; // Mac is shifting us a command m_adb_direction = 1; // Mac is shifting us a command
m_adb_waiting_cmd = 1; // we're going to get a command m_adb_waiting_cmd = 1; // we're going to get a command
m_adb_irq_pending = 0; m_adb_irq_pending = 0;
m_adb_extclock = 1; // VIA output shifts on falling clock m_adb_extclock = 1; // VIA output shifts on falling clock
m_via1->write_cb1(m_adb_extclock); m_via1->write_cb1(m_adb_extclock);
m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
break; break;
@ -709,7 +709,7 @@ void mac_state::mac_adb_newaction(int state)
m_adb_send = m_adb_buffer[0]; m_adb_send = m_adb_buffer[0];
m_adb_datasize--; m_adb_datasize--;
m_adb_extclock = 0; // VIA input shifts on rising clock m_adb_extclock = 0; // VIA input shifts on rising clock
m_via1->write_cb1(m_adb_extclock); m_via1->write_cb1(m_adb_extclock);
// move down the rest of the buffer, if any // move down the rest of the buffer, if any
@ -1125,7 +1125,7 @@ void mac_state::adb_vblank()
this->adb_talk(); this->adb_talk();
m_adb_timer_ticks = 8; m_adb_timer_ticks = 8;
m_adb_extclock = 0; // VIA input shifts on rising clock m_adb_extclock = 0; // VIA input shifts on rising clock
m_via1->write_cb1(m_adb_extclock); m_via1->write_cb1(m_adb_extclock);
this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
} }
@ -1164,7 +1164,7 @@ void mac_state::adb_vblank()
this->adb_talk(); this->adb_talk();
m_adb_timer_ticks = 8; m_adb_timer_ticks = 8;
m_adb_extclock = 0; // VIA input shifts on rising clock m_adb_extclock = 0; // VIA input shifts on rising clock
m_via1->write_cb1(m_adb_extclock); m_via1->write_cb1(m_adb_extclock);
this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
} }

View File

@ -27651,14 +27651,14 @@ yis60464 //
mt735 // mt735 //
@source:mtouchxl.cpp @source:mtouchxl.cpp
mtouchxl // 1997 Merit Industries mtouchxl // 1997 Merit Industries
mtchxl5k // 1998 Merit Industries mtchxl5k // 1998 Merit Industries
mtchxl5ko // 1998 Merit Industries mtchxl5ko // 1998 Merit Industries
mtchxl5ko2 // 1998 Merit Industries mtchxl5ko2 // 1998 Merit Industries
mtchxl6k // 1999 Merit Industries mtchxl6k // 1999 Merit Industries
mtchxl6ko // 1999 Merit Industries mtchxl6ko // 1999 Merit Industries
mtchxlgld // 2000 Merit Industries mtchxlgld // 2000 Merit Industries
mtchxlgldo // 2000 Merit Industries mtchxlgldo // 2000 Merit Industries
@source:mtx.cpp @source:mtx.cpp
mtx500 // 1983 Memotech MTX 500 mtx500 // 1983 Memotech MTX 500
@ -29616,7 +29616,7 @@ othunderu // B67 (c) 1988 Taito America Corporation (US, r
othunderuo // B67 (c) 1988 Taito America Corporation (US) othunderuo // B67 (c) 1988 Taito America Corporation (US)
@source:otomedius.cpp @source:otomedius.cpp
otomedius // (c) 2007 Konami otomedius // (c) 2007 Konami
@source:overdriv.cpp @source:overdriv.cpp
overdriv // GX789 (c) 1990 overdriv // GX789 (c) 1990
@ -30920,7 +30920,7 @@ pirates // (c) 1994 NIX
piratesb // bootleg? piratesb // bootleg?
@source:piratesh.cpp @source:piratesh.cpp
piratesh // (c) 1995 Konami piratesh // (c) 1995 Konami
@source:pitagjr.cpp @source:pitagjr.cpp
pitagjr // Pitagorin Junior pitagjr // Pitagorin Junior
@ -37001,7 +37001,7 @@ votrtnt // 1980 Votrax Type-'N-Talk
@source:voyager.cpp @source:voyager.cpp
voyager // (c) 2002 Team Play, Inc. voyager // (c) 2002 Team Play, Inc.
policet2 // (c) 2003 Team Play, Inc. policet2 // (c) 2003 Team Play, Inc.
@source:vp101.cpp @source:vp101.cpp
jnero // (c) 2004 ICE/Play Mechanix jnero // (c) 2004 ICE/Play Mechanix

View File

@ -73,8 +73,8 @@ void k053250ps_device::device_start()
m_buffer[0] = &m_ram[0x0000]; m_buffer[0] = &m_ram[0x0000];
m_buffer[1] = &m_ram[0x0800]; m_buffer[1] = &m_ram[0x0800];
// m_buffer[0] = &m_ram[0x2000]; // m_buffer[0] = &m_ram[0x2000];
// m_buffer[1] = &m_ram[0x2800]; // m_buffer[1] = &m_ram[0x2800];
unpack_nibbles(); unpack_nibbles();
@ -371,7 +371,7 @@ void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, in
linedata_offs += bitmap.height() - 1; // and get info for the first line from the bottom linedata_offs += bitmap.height() - 1; // and get info for the first line from the bottom
} }
// dst_wrapmask = ~0; // scanlines don't seem to wrap horizontally in normal orientation // dst_wrapmask = ~0; // scanlines don't seem to wrap horizontally in normal orientation
passes = 1; // draw scanline in a single pass passes = 1; // draw scanline in a single pass
} }
else // orientaion with X and Y parameters switched else // orientaion with X and Y parameters switched
@ -401,13 +401,13 @@ void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, in
if (src_clipmask) if (src_clipmask)
{ {
// determine target wrap boundary and draw scanline in two passes if the source is clipped // determine target wrap boundary and draw scanline in two passes if the source is clipped
// dst_wrapmask = dst_height - 1; // dst_wrapmask = dst_height - 1;
passes = 2; passes = 2;
} }
else else
{ {
// otherwise disable target wraparound and draw scanline in a single pass // otherwise disable target wraparound and draw scanline in a single pass
// dst_wrapmask = ~0; // dst_wrapmask = ~0;
passes = 1; passes = 1;
} }
} }
@ -514,8 +514,8 @@ void k053250ps_device::device_timer(emu_timer &timer, device_timer_id id, int pa
m_timer_lvcdma->adjust(attotime::from_ticks(4096, clock())); m_timer_lvcdma->adjust(attotime::from_ticks(4096, clock()));
m_dmairq_cb(ASSERT_LINE); m_dmairq_cb(ASSERT_LINE);
// memcpy(m_buffer[m_page], &m_ram[0], 0x1000); // memcpy(m_buffer[m_page], &m_ram[0], 0x1000);
// m_page ^= 1; // m_page ^= 1;
break; break;

View File

@ -88,7 +88,7 @@
[memoryScroll setHasVerticalScroller:YES]; [memoryScroll setHasVerticalScroller:YES];
[memoryScroll setAutohidesScrollers:YES]; [memoryScroll setAutohidesScrollers:YES];
[memoryScroll setBorderType:NSNoBorder]; [memoryScroll setBorderType:NSNoBorder];
[memoryScroll setDrawsBackground:NO]; [memoryScroll setDrawsBackground:NO];
[memoryScroll setDocumentView:memoryView]; [memoryScroll setDocumentView:memoryView];
[memoryView release]; [memoryView release];
[[window contentView] addSubview:memoryScroll]; [[window contentView] addSubview:memoryScroll];