mirror of
https://github.com/holub/mame
synced 2025-06-07 05:13:46 +03:00
srcclean (nw)
This commit is contained in:
parent
f5da128a94
commit
dac6dc4f62
30
hash/nes.xml
30
hash/nes.xml
@ -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) -->
|
||||
<software name="adanyeva">
|
||||
<description>Adam & Eve (Spa)</description>
|
||||
<year>1991</year>
|
||||
<publisher>Gluk Video</publisher>
|
||||
<info name="serial" value="CN-11"/>
|
||||
<info name="release" value="19910101"/>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<description>Adam & Eve (Spa)</description>
|
||||
<year>1991</year>
|
||||
<publisher>Gluk Video</publisher>
|
||||
<info name="serial" value="CN-11"/>
|
||||
<info name="release" value="19910101"/>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="cnrom" />
|
||||
<feature name="pcb" value="NTDEC-N715062" />
|
||||
<feature name="mirroring" value="vertical" />
|
||||
<dataarea name="prg" size="32768">
|
||||
<rom name="0.prg" size="32768" crc="626238f8" sha1="7e757c3f67849330066da6984d97a377bb910f21" offset="00000" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="32768">
|
||||
<rom name="0.chr" size="32768" crc="0a7307d9" sha1="de1ef6c5c390947aab477afe7d61e37b6c4d2e32" offset="00000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
<feature name="pcb" value="NTDEC-N715062" />
|
||||
<feature name="mirroring" value="vertical" />
|
||||
<dataarea name="prg" size="32768">
|
||||
<rom name="0.prg" size="32768" crc="626238f8" sha1="7e757c3f67849330066da6984d97a377bb910f21" offset="00000" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="32768">
|
||||
<rom name="0.chr" size="32768" crc="0a7307d9" sha1="de1ef6c5c390947aab477afe7d61e37b6c4d2e32" offset="00000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="destroyr">
|
||||
|
@ -2,9 +2,9 @@
|
||||
// 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
|
||||
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
|
||||
introduction of the CoCo 3, which uses $FF9F internally, Tandy provided
|
||||
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
|
||||
//-------------------------------------------------
|
||||
|
||||
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_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_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_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_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_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_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_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_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_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_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_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); }
|
||||
|
@ -240,7 +240,7 @@ void cococart_slot_device::twiddle_line_if_q(coco_cartridge_line &line)
|
||||
|
||||
//-------------------------------------------------
|
||||
// twiddle_q_lines - hack to support twiddling the
|
||||
// Q line
|
||||
// Q line
|
||||
//-------------------------------------------------
|
||||
|
||||
void cococart_slot_device::twiddle_q_lines()
|
||||
|
@ -160,7 +160,7 @@ void cpc_multiface2_device::multiface_stop()
|
||||
m_slot->nmi_w(0);
|
||||
|
||||
/* 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));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1085,7 +1085,7 @@ WRITE8_MEMBER(nes_waixing_sgzlz_device::write_l)
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // NROM mode
|
||||
{ // NROM mode
|
||||
if (BIT(m_reg[0], 3))
|
||||
{
|
||||
prg16_89ab(bank);
|
||||
|
@ -155,7 +155,7 @@ struct OPL3_SLOT
|
||||
uint32_t Cnt; /* frequency counter */
|
||||
uint32_t Incr; /* frequency counter step */
|
||||
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 op1_out[2]; /* slot1 output for feedback */
|
||||
uint8_t CON; /* connection (algorithm) type */
|
||||
|
@ -184,7 +184,7 @@ void cesblit_device::do_blit()
|
||||
#endif
|
||||
|
||||
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;
|
||||
sh &= 0x1ff;
|
||||
|
@ -553,10 +553,10 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log
|
||||
}
|
||||
/*
|
||||
m_zeusbase[0x4e] :
|
||||
bit 0 - 1 : which register triggers write through
|
||||
bit 3 : enable write through via these registers
|
||||
bit 4 : seems to be set during reads, when 0x41 is used for latching
|
||||
bit 6 : enable autoincrement on write through
|
||||
bit 0 - 1 : which register triggers write through
|
||||
bit 3 : enable write through via these registers
|
||||
bit 4 : seems to be set during reads, when 0x41 is used for latching
|
||||
bit 6 : enable autoincrement on write through
|
||||
*/
|
||||
if ((offset & 0xf) == (m_zeusbase[0x4e] & 0xf)) {
|
||||
// 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:
|
||||
{
|
||||
//if (m_zeusbase[0x41] == 0x266) {
|
||||
// logit = 1;
|
||||
// log_fifo = 1;
|
||||
// logit = 1;
|
||||
// log_fifo = 1;
|
||||
//}
|
||||
// Zeus microcode burst from waveram
|
||||
if (logit)
|
||||
@ -754,7 +754,7 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log
|
||||
}
|
||||
break;
|
||||
//case 6: {
|
||||
// // Zeus model fifo burst from waveram
|
||||
// // Zeus model fifo burst from waveram
|
||||
//}
|
||||
//break;
|
||||
case 9:
|
||||
@ -1813,7 +1813,7 @@ void zeus2_renderer::zeus2_draw_quad(const uint32_t *databuffer, uint32_t texdat
|
||||
}
|
||||
|
||||
//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);
|
||||
}
|
||||
|
||||
@ -1859,9 +1859,9 @@ void zeus2_renderer::render_poly_8bit(int32_t scanline, const extent_t& extent,
|
||||
curDepthVal = curz;
|
||||
}
|
||||
//if (curz < object.zbuf_min)
|
||||
// curDepthVal = object.zbuf_min;
|
||||
// curDepthVal = object.zbuf_min;
|
||||
//else
|
||||
// curDepthVal = curz;
|
||||
// curDepthVal = curz;
|
||||
if (curDepthVal < 0)
|
||||
curDepthVal = 0;
|
||||
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
|
||||
//} else {
|
||||
// // Add rounding
|
||||
// u0 += (curu >> 7) & 1;
|
||||
// v0 += (curv >> 7) & 1;
|
||||
// uint8_t texel0 = object.get_texel(texbase, v0, u0, texwidth);
|
||||
// if (texel0 != transcolor) {
|
||||
// uint32_t color0 = m_state->m_pal_table[texel0];
|
||||
// colorptr[x] = color0;
|
||||
// if (object.depth_write_enable)
|
||||
// depthptr[x] = curz; // Should limit to 24 bits
|
||||
// }
|
||||
// // Add rounding
|
||||
// u0 += (curu >> 7) & 1;
|
||||
// v0 += (curv >> 7) & 1;
|
||||
// uint8_t texel0 = object.get_texel(texbase, v0, u0, texwidth);
|
||||
// if (texel0 != transcolor) {
|
||||
// uint32_t color0 = m_state->m_pal_table[texel0];
|
||||
// colorptr[x] = color0;
|
||||
// if (object.depth_write_enable)
|
||||
// depthptr[x] = curz; // Should limit to 24 bits
|
||||
// }
|
||||
}
|
||||
}
|
||||
curz += dzdx;
|
||||
@ -2232,31 +2232,31 @@ std::string zeus2_device::tex_info(void)
|
||||
case 0x0003ff20: retVal = "0, s=64, t=8_alpha"; 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 0x0015c940: retVal = "Red +"; break;
|
||||
case 0x0015bf40: retVal = "Blue circle with green outline"; break;
|
||||
case 0x0015c740: retVal = "Radiation symbol"; break;
|
||||
case 0x0015cb80: retVal = "Grey square"; break;
|
||||
case 0x0015d380: retVal = "Green circle inside grey square"; break;
|
||||
case 0x00159f40: retVal = "Shinny green square"; break;
|
||||
case 0x001a6340: retVal = "Yellow ski tip"; break;
|
||||
case 0x001a65a0: retVal = "Metal vest"; break;
|
||||
case 0x001a6a00: retVal = "Head hole metal vest"; break;
|
||||
case 0x001a6b70: retVal = "Yellow WES badge"; break;
|
||||
case 0x001a6140: retVal = "Backwards Yellow WES badge"; break;
|
||||
case 0x001a6d70: retVal = "Maybe stomach"; break;
|
||||
case 0x001a6e60: retVal = "Maybe back"; break;
|
||||
case 0x001a6f20: retVal = "Hand with black glove"; break;
|
||||
case 0x001a7090: retVal = "Wes Face"; break;
|
||||
case 0x001a72c0: retVal = "Dark red strip"; break;
|
||||
case 0x001a7340: retVal = "Wes shoulder pad"; break;
|
||||
case 0x001a7460: retVal = "Orange circle"; break;
|
||||
case 0x001a5e20: retVal = "Wes belt"; break;
|
||||
case 0x001a5f40: retVal = "Wes orange strip on side"; break;
|
||||
case 0x001a7770: retVal = "Grey something"; break;
|
||||
case 0x001a74e0: retVal = "Grey maybe top of boot"; break;
|
||||
case 0x001a76e0: retVal = "Grey hexagon"; break;
|
||||
case 0x001a7800: retVal = "Belt pouches"; break;
|
||||
case 0x0015a340: retVal = "Green shinny block"; break;
|
||||
case 0x0015c940: retVal = "Red +"; break;
|
||||
case 0x0015bf40: retVal = "Blue circle with green outline"; break;
|
||||
case 0x0015c740: retVal = "Radiation symbol"; break;
|
||||
case 0x0015cb80: retVal = "Grey square"; break;
|
||||
case 0x0015d380: retVal = "Green circle inside grey square"; break;
|
||||
case 0x00159f40: retVal = "Shinny green square"; break;
|
||||
case 0x001a6340: retVal = "Yellow ski tip"; break;
|
||||
case 0x001a65a0: retVal = "Metal vest"; break;
|
||||
case 0x001a6a00: retVal = "Head hole metal vest"; break;
|
||||
case 0x001a6b70: retVal = "Yellow WES badge"; break;
|
||||
case 0x001a6140: retVal = "Backwards Yellow WES badge"; break;
|
||||
case 0x001a6d70: retVal = "Maybe stomach"; break;
|
||||
case 0x001a6e60: retVal = "Maybe back"; break;
|
||||
case 0x001a6f20: retVal = "Hand with black glove"; break;
|
||||
case 0x001a7090: retVal = "Wes Face"; break;
|
||||
case 0x001a72c0: retVal = "Dark red strip"; break;
|
||||
case 0x001a7340: retVal = "Wes shoulder pad"; break;
|
||||
case 0x001a7460: retVal = "Orange circle"; break;
|
||||
case 0x001a5e20: retVal = "Wes belt"; break;
|
||||
case 0x001a5f40: retVal = "Wes orange strip on side"; break;
|
||||
case 0x001a7770: retVal = "Grey something"; break;
|
||||
case 0x001a74e0: retVal = "Grey maybe top of boot"; break;
|
||||
case 0x001a76e0: retVal = "Grey hexagon"; break;
|
||||
case 0x001a7800: retVal = "Belt pouches"; break;
|
||||
case 0x0015a340: retVal = "Green shinny block"; break;
|
||||
default: retVal = "Unknown"; break;
|
||||
}
|
||||
}
|
||||
|
@ -42,18 +42,18 @@ struct zeus2_poly_extra_data
|
||||
uint16_t texwidth;
|
||||
uint16_t color;
|
||||
uint32_t srcAlpha;
|
||||
uint32_t dstAlpha;
|
||||
uint32_t dstAlpha;
|
||||
uint32_t ctrl_word;
|
||||
uint32_t ucode_src;
|
||||
uint32_t tex_src;
|
||||
bool texture_alpha;
|
||||
bool texture_rgb555;
|
||||
uint32_t ucode_src;
|
||||
uint32_t tex_src;
|
||||
bool texture_alpha;
|
||||
bool texture_rgb555;
|
||||
bool blend_enable;
|
||||
int32_t zbuf_min;
|
||||
int32_t zbuf_min;
|
||||
bool depth_min_enable;
|
||||
bool depth_test_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_alpha)(const void *, int, int, int);
|
||||
@ -245,7 +245,7 @@ public:
|
||||
addr = m_zeusbase[0x38] >> (16 - 9 - 2 * 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;
|
||||
return addr;
|
||||
}
|
||||
|
@ -1208,9 +1208,9 @@ image_init_result device_image_interface::create(const std::string &path, const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// reset_and_load - called internally when we try
|
||||
// to load an is_reset_on_load() item; will reset
|
||||
// the emulation and record this image to be loaded
|
||||
// reset_and_load - called internally when we try
|
||||
// to load an is_reset_on_load() item; will reset
|
||||
// the emulation and record this image to be loaded
|
||||
//-------------------------------------------------
|
||||
|
||||
void device_image_interface::reset_and_load(const std::string &path)
|
||||
|
@ -110,12 +110,12 @@ public:
|
||||
bool hashfile_extrainfo(std::string &extrainfo);
|
||||
|
||||
private:
|
||||
util::core_file::ptr m_image_file;
|
||||
std::string m_file_type;
|
||||
std::function<bool(util::core_file &, std::string&)> m_get_hashfile_extrainfo;
|
||||
bool m_called_get_hashfile_extrainfo;
|
||||
bool m_has_hash_extrainfo;
|
||||
std::string m_hash_extrainfo;
|
||||
util::core_file::ptr m_image_file;
|
||||
std::string m_file_type;
|
||||
std::function<bool(util::core_file &, std::string&)> m_get_hashfile_extrainfo;
|
||||
bool m_called_get_hashfile_extrainfo;
|
||||
bool m_has_hash_extrainfo;
|
||||
std::string m_hash_extrainfo;
|
||||
};
|
||||
|
||||
|
||||
|
@ -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
|
||||
// need to hook into that process so we can write
|
||||
// out image/slot options
|
||||
// override_get_value - when saving to an INI, we
|
||||
// need to hook into that process so we can write
|
||||
// out image/slot options
|
||||
//-------------------------------------------------
|
||||
|
||||
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
|
||||
// need to hook into into it so we can do the same
|
||||
// crazy slot logic done in mameopt
|
||||
// override_set_value - when parsing an INI, we
|
||||
// need to hook into into it so we can do the same
|
||||
// crazy slot logic done in mameopt
|
||||
//-------------------------------------------------
|
||||
|
||||
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)
|
||||
@ -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
|
||||
@ -353,17 +353,17 @@ const std::string &slot_option::value() const
|
||||
// There are a number of ways that the value can be determined; there
|
||||
// is a specific order of precedence:
|
||||
//
|
||||
// 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
|
||||
// of whether these values were specified this way
|
||||
// 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
|
||||
// of whether these values were specified this way
|
||||
//
|
||||
// Take note that slots have a notion of being "selectable". Slots that are not
|
||||
// marked as selectable cannot be specified with this technique
|
||||
// Take note that slots have a notion of being "selectable". Slots that are not
|
||||
// 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
|
||||
// device setup
|
||||
// 3. Last in priority is what was specified as the slot default. This comes from
|
||||
// device setup
|
||||
if (m_specified)
|
||||
return m_specified_value;
|
||||
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
|
||||
@ -391,7 +391,7 @@ std::string slot_option::specified_value() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// slot_option::specify
|
||||
// slot_option::specify
|
||||
//-------------------------------------------------
|
||||
|
||||
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)
|
||||
|
@ -235,11 +235,11 @@ public:
|
||||
void set_default_card_software(std::string &&s) { m_default_card_software = std::move(s); }
|
||||
|
||||
private:
|
||||
bool m_specified;
|
||||
std::string m_specified_value;
|
||||
std::string m_specified_bios;
|
||||
std::string m_default_card_software;
|
||||
std::string m_default_value;
|
||||
bool m_specified;
|
||||
std::string m_specified_value;
|
||||
std::string m_specified_bios;
|
||||
std::string m_default_card_software;
|
||||
std::string m_default_value;
|
||||
};
|
||||
|
||||
|
||||
@ -448,15 +448,15 @@ private:
|
||||
static const options_entry s_option_entries[];
|
||||
|
||||
// slots and devices
|
||||
std::map<std::string, slot_option> m_slot_options;
|
||||
std::map<std::string, std::string> m_image_options;
|
||||
std::map<std::string, slot_option> m_slot_options;
|
||||
std::map<std::string, std::string> m_image_options;
|
||||
|
||||
// cached options, for scenarios where parsing core_options is too slow
|
||||
int m_coin_impulse;
|
||||
bool m_joystick_contradictory;
|
||||
bool m_sleep;
|
||||
bool m_refresh_speed;
|
||||
ui_option m_ui;
|
||||
int m_coin_impulse;
|
||||
bool m_joystick_contradictory;
|
||||
bool m_sleep;
|
||||
bool m_refresh_speed;
|
||||
ui_option m_ui;
|
||||
};
|
||||
|
||||
#endif // MAME_EMU_EMUOPTS_H
|
||||
|
@ -1068,15 +1068,15 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_
|
||||
// and try to open that
|
||||
//
|
||||
// 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("889ea", 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("889aa", 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("889ua", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
|
||||
// ...
|
||||
util::hash_collection romphashes(ROM_GETHASHDATA(romp));
|
||||
for (int drv = driver_list::find(*gamedrv); drv != -1; drv = driver_list::clone(drv))
|
||||
{
|
||||
|
@ -100,7 +100,7 @@ private:
|
||||
driver_enumerator m_drivlist;
|
||||
|
||||
// blank options for use during validation
|
||||
emu_options m_blank_options;
|
||||
emu_options m_blank_options;
|
||||
|
||||
// error tracking
|
||||
int m_errors;
|
||||
|
@ -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)
|
||||
|
@ -26,7 +26,7 @@ namespace ui {
|
||||
#define ERROR_MESSAGE_TIME 5
|
||||
|
||||
// item reference for "Switch Item Ordering"
|
||||
#define ITEMREF_SWITCH_ITEM_ORDERING ((void *)1)
|
||||
#define ITEMREF_SWITCH_ITEM_ORDERING ((void *)1)
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -377,42 +377,42 @@ static floperr_t fd_construct(floppy_image_legacy *floppy, int tracks, int secto
|
||||
|
||||
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)
|
||||
{
|
||||
return fd_construct(floppy, 80, 256);
|
||||
return fd_construct(floppy, 80, 256);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
return fd_construct(floppy, 40, 256);
|
||||
return fd_construct(floppy, 40, 256);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
return fd_construct(floppy, 80, 128);
|
||||
return fd_construct(floppy, 80, 128);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
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_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
|
||||
// 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)",
|
||||
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)",
|
||||
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)",
|
||||
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",
|
||||
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)",
|
||||
qdd_dsk_identify, qdd_dsk_construct, nullptr, nullptr)
|
||||
qdd_dsk_identify, qdd_dsk_construct, nullptr, nullptr)
|
||||
|
||||
LEGACY_FLOPPY_OPTIONS_END
|
||||
|
@ -44,9 +44,9 @@ namespace netlist
|
||||
struct need_bytes_for_bits
|
||||
{
|
||||
enum { value =
|
||||
bits <= 8 ? 1 :
|
||||
bits <= 16 ? 2 :
|
||||
bits <= 32 ? 4 :
|
||||
bits <= 8 ? 1 :
|
||||
bits <= 16 ? 2 :
|
||||
bits <= 32 ? 4 :
|
||||
8
|
||||
};
|
||||
};
|
||||
|
82
src/lib/netlist/plib/pstring.h
Executable file → Normal file
82
src/lib/netlist/plib/pstring.h
Executable file → Normal file
@ -62,18 +62,18 @@ public:
|
||||
|
||||
typedef typename traits_type::mem_t mem_t;
|
||||
typedef typename traits_type::code_t code_t;
|
||||
typedef std::size_t size_type;
|
||||
typedef std::ptrdiff_t difference_type;
|
||||
typedef typename traits_type::string_type string_type;
|
||||
typedef std::size_t size_type;
|
||||
typedef std::ptrdiff_t difference_type;
|
||||
typedef typename traits_type::string_type string_type;
|
||||
|
||||
class ref_value_type final
|
||||
{
|
||||
public:
|
||||
ref_value_type() = delete;
|
||||
ref_value_type(const ref_value_type &) = delete;
|
||||
ref_value_type(ref_value_type &&) = delete;
|
||||
ref_value_type &operator=(const ref_value_type &) = delete;
|
||||
ref_value_type &operator=(ref_value_type &&) = delete;
|
||||
ref_value_type() = delete;
|
||||
ref_value_type(const ref_value_type &) = delete;
|
||||
ref_value_type(ref_value_type &&) = delete;
|
||||
ref_value_type &operator=(const ref_value_type &) = delete;
|
||||
ref_value_type &operator=(ref_value_type &&) = delete;
|
||||
operator code_t() const noexcept { return traits_type::code(&m); }
|
||||
private:
|
||||
const mem_t m;
|
||||
@ -166,8 +166,8 @@ public:
|
||||
const_iterator cend() const { return const_iterator(m_str.end()); }
|
||||
|
||||
// C string conversion helpers
|
||||
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 *c_str() const { return static_cast<const mem_t *>(m_str.c_str()); }
|
||||
const mem_t *data() const { return c_str(); }
|
||||
|
||||
size_type length() 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())
|
||||
{
|
||||
// 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))
|
||||
ret++;
|
||||
}
|
||||
@ -377,8 +377,8 @@ struct putf16_traits
|
||||
}
|
||||
static std::size_t codelen(const mem_t *p)
|
||||
{
|
||||
uint16_t c = static_cast<uint16_t>(*p);
|
||||
return ((c & 0xd800) == 0xd800) ? 2 : 1;
|
||||
uint16_t c = static_cast<uint16_t>(*p);
|
||||
return ((c & 0xd800) == 0xd800) ? 2 : 1;
|
||||
}
|
||||
static std::size_t codelen(const code_t c)
|
||||
{
|
||||
@ -389,28 +389,28 @@ struct putf16_traits
|
||||
}
|
||||
static code_t code(const mem_t *p)
|
||||
{
|
||||
uint32_t c = static_cast<uint32_t>(*p++);
|
||||
if ((c & 0xd800) == 0xd800)
|
||||
{
|
||||
c = (c - 0xd800) << 10;
|
||||
c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000;
|
||||
}
|
||||
return static_cast<code_t>(c);
|
||||
uint32_t c = static_cast<uint32_t>(*p++);
|
||||
if ((c & 0xd800) == 0xd800)
|
||||
{
|
||||
c = (c - 0xd800) << 10;
|
||||
c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000;
|
||||
}
|
||||
return static_cast<code_t>(c);
|
||||
}
|
||||
static void encode(code_t c, string_type &s)
|
||||
{
|
||||
uint32_t cu = static_cast<uint32_t>(c);
|
||||
if (c > 0xffff)
|
||||
{ //make a surrogate pair
|
||||
uint32_t t = ((cu - 0x10000) >> 10) + 0xd800;
|
||||
cu = (cu & 0x3ff) + 0xdc00;
|
||||
s += static_cast<mem_t>(t);
|
||||
s += static_cast<mem_t>(cu);
|
||||
}
|
||||
else
|
||||
{
|
||||
s += static_cast<mem_t>(cu);
|
||||
}
|
||||
if (c > 0xffff)
|
||||
{ //make a surrogate pair
|
||||
uint32_t t = ((cu - 0x10000) >> 10) + 0xd800;
|
||||
cu = (cu & 0x3ff) + 0xdc00;
|
||||
s += static_cast<mem_t>(t);
|
||||
s += static_cast<mem_t>(cu);
|
||||
}
|
||||
else
|
||||
{
|
||||
s += static_cast<mem_t>(cu);
|
||||
}
|
||||
}
|
||||
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())
|
||||
{
|
||||
// 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))
|
||||
ret++;
|
||||
}
|
||||
@ -449,8 +449,8 @@ struct pwchar_traits
|
||||
{
|
||||
if (sizeof(wchar_t) == 2)
|
||||
{
|
||||
uint16_t c = static_cast<uint16_t>(*p);
|
||||
return ((c & 0xd800) == 0xd800) ? 2 : 1;
|
||||
uint16_t c = static_cast<uint16_t>(*p);
|
||||
return ((c & 0xd800) == 0xd800) ? 2 : 1;
|
||||
}
|
||||
else
|
||||
return 1;
|
||||
@ -468,13 +468,13 @@ struct pwchar_traits
|
||||
{
|
||||
if (sizeof(wchar_t) == 2)
|
||||
{
|
||||
uint32_t c = static_cast<uint32_t>(*p++);
|
||||
if ((c & 0xd800) == 0xd800)
|
||||
{
|
||||
c = (c - 0xd800) << 10;
|
||||
c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000;
|
||||
}
|
||||
return static_cast<code_t>(c);
|
||||
uint32_t c = static_cast<uint32_t>(*p++);
|
||||
if ((c & 0xd800) == 0xd800)
|
||||
{
|
||||
c = (c - 0xd800) << 10;
|
||||
c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000;
|
||||
}
|
||||
return static_cast<code_t>(c);
|
||||
}
|
||||
else
|
||||
return static_cast<code_t>(*p);
|
||||
|
@ -38,7 +38,7 @@ constexpr bool gregorian_is_leap_year(int year)
|
||||
|
||||
//-------------------------------------------------
|
||||
// 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)
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
namespace util {
|
||||
/***************************************************************************
|
||||
GLOBAL VARIABLES
|
||||
GLOBAL VARIABLES
|
||||
***************************************************************************/
|
||||
|
||||
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
|
||||
// date of the epoch's begining
|
||||
// arbitrary_clock - an std::chrono clock that "knows" the
|
||||
// date of the epoch's begining
|
||||
//---------------------------------------------------------
|
||||
|
||||
template<typename Rep, int Y, int M, int D, int H, int N, int S, typename Ratio>
|
||||
class arbitrary_clock
|
||||
{
|
||||
public:
|
||||
typedef Rep rep;
|
||||
typedef Ratio period;
|
||||
typedef std::chrono::duration<rep, period> duration;
|
||||
typedef std::chrono::time_point<arbitrary_clock> time_point;
|
||||
typedef Rep rep;
|
||||
typedef Ratio period;
|
||||
typedef std::chrono::duration<rep, period> duration;
|
||||
typedef std::chrono::time_point<arbitrary_clock> time_point;
|
||||
static constexpr int base_year = Y;
|
||||
static constexpr int base_month = M;
|
||||
static constexpr int base_day = D;
|
||||
@ -55,8 +55,8 @@ public:
|
||||
static constexpr int base_second = S;
|
||||
|
||||
//---------------------------------------------------------
|
||||
// from_arbitrary_time_point - converts an arbitrary_clock
|
||||
// with a different scale to this arbitrary_clock's scale
|
||||
// from_arbitrary_time_point - converts an arbitrary_clock
|
||||
// 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>
|
||||
@ -75,8 +75,8 @@ public:
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
// to_arbitrary_time_point - converts an arbitrary_clock
|
||||
// of this scale to one of different scale
|
||||
// to_arbitrary_time_point - converts an arbitrary_clock
|
||||
// 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>
|
||||
@ -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)
|
||||
@ -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)
|
||||
@ -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)
|
||||
@ -138,13 +138,13 @@ private:
|
||||
//
|
||||
// * years with leap years are at the end of every quadyear
|
||||
// * 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
|
||||
// end of every quadcentury
|
||||
// * centuries where the last quadyear has a leap year at the end are at the
|
||||
// end of every quadcentury
|
||||
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'
|
||||
// based on a normalized clock
|
||||
// internal_to_tm - formats a structure of type 'struct tm'
|
||||
// based on a normalized clock
|
||||
//---------------------------------------------------------
|
||||
|
||||
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;
|
||||
|
||||
//-------------------------------------------------
|
||||
// absolute_day - returns the absolute day count
|
||||
// for the specified year/month/day
|
||||
// absolute_day - returns the absolute day count
|
||||
// for the specified year/month/day
|
||||
//-------------------------------------------------
|
||||
|
||||
static int64_t absolute_day(int year, int month, int day)
|
||||
|
@ -65,7 +65,7 @@ Notes:
|
||||
|
||||
TODO:
|
||||
|
||||
- PWM sound in ABC-klubben/abc80/grafik/flagga.bac
|
||||
- PWM sound in ABC-klubben/abc80/grafik/flagga.bac
|
||||
- proper keyboard controller emulation
|
||||
- MyAB TKN80 80-column card
|
||||
- GeJo 80-column card
|
||||
|
@ -141,7 +141,7 @@ Notes:
|
||||
|
||||
TODO:
|
||||
|
||||
- option ROM/HR video RAM access needs refactor of memory banking
|
||||
- option ROM/HR video RAM access needs refactor of memory banking
|
||||
- cassette
|
||||
- abc806 RTC
|
||||
- abc806 disks except ufd631 won't boot
|
||||
|
@ -94,7 +94,7 @@ TILE_GET_INFO_MEMBER(acchi_state::get_acchi_fg_tile_info)
|
||||
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 & 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);
|
||||
|
||||
// 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_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_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->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",
|
||||
m_vregs[0], m_vregs[1],
|
||||
m_vregs[2], m_vregs[3],
|
||||
m_vregs[4], m_vregs[5],
|
||||
m_vregs[6], m_vregs[7]);
|
||||
m_vregs[0], m_vregs[1],
|
||||
m_vregs[2], m_vregs[3],
|
||||
m_vregs[4], m_vregs[5],
|
||||
m_vregs[6], m_vregs[7]);
|
||||
*/
|
||||
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(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")
|
||||
|
||||
@ -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(0x150010, 0x150011) AM_WRITENOP // ? also reads
|
||||
|
||||
AM_RANGE(0x180000, 0x18ffff) AM_RAM // mainram?
|
||||
AM_RANGE(0x180000, 0x18ffff) AM_RAM // mainram?
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( acchi ) // inputs register in test mode but not in game mode?
|
||||
|
@ -9,7 +9,7 @@
|
||||
Appears to be a down-grade of the nmk16 HW
|
||||
|
||||
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;
|
||||
- Decap + emulate MCU, required if the random number generation is going to be accurate;
|
||||
|
||||
|
@ -242,8 +242,8 @@ WRITE8_MEMBER(discoboy_state::port_01_w)
|
||||
|
||||
WRITE8_MEMBER(discoboy_state::port_06_w)
|
||||
{
|
||||
//printf("unk discoboy_port_06_w %02x\n",data);
|
||||
if (data != 0) logerror("port 06!!!! %02x\n",data);
|
||||
//printf("unk discoboy_port_06_w %02x\n",data);
|
||||
if (data != 0) logerror("port 06!!!! %02x\n",data);
|
||||
}
|
||||
|
||||
READ8_MEMBER(discoboy_state::rambank2_r)
|
||||
|
@ -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, 2, 0, 2);
|
||||
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;
|
||||
}
|
||||
@ -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(0x100000, 0x103fff) AM_RAM
|
||||
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(0xb00000, 0xb01fff) AM_READ(vrom_r)
|
||||
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(0xf00000, 0xf00001) AM_NOP AM_WRITENOP // watchdog reset
|
||||
AM_RANGE(0xf00000, 0xf00001) AM_NOP AM_WRITENOP // watchdog reset
|
||||
ADDRESS_MAP_END
|
||||
|
||||
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(0x100000, 0x107fff) AM_RAM AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
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(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(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(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(0x400000, 0x41ffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
@ -317,7 +317,7 @@ MACHINE_CONFIG_END
|
||||
static MACHINE_CONFIG_START( giclassvr, giclassicsvr_state )
|
||||
|
||||
/* 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_VBLANK_INT_DRIVER("screen", giclassicsvr_state, giclassicsvr_interrupt)
|
||||
|
||||
|
@ -150,31 +150,31 @@
|
||||
|
||||
// Constants of 98770A video
|
||||
// HBEND & VBEND probably are not really 0
|
||||
#define VIDEO_770_PIXEL_CLOCK 29798400
|
||||
#define VIDEO_770_HTOTAL 1024
|
||||
#define VIDEO_770_HBEND 0
|
||||
#define VIDEO_770_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH)
|
||||
#define VIDEO_770_VTOTAL 485
|
||||
#define VIDEO_770_VBEND 0
|
||||
#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_R_LIM 640 // Right-side limit of alpha-only horizontal part
|
||||
#define VIDEO_770_PIXEL_CLOCK 29798400
|
||||
#define VIDEO_770_HTOTAL 1024
|
||||
#define VIDEO_770_HBEND 0
|
||||
#define VIDEO_770_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH)
|
||||
#define VIDEO_770_VTOTAL 485
|
||||
#define VIDEO_770_VBEND 0
|
||||
#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_R_LIM 640 // Right-side limit of alpha-only horizontal part
|
||||
|
||||
// Constants of 98780A video
|
||||
#define VIDEO_780_PIXEL_CLOCK 28224000
|
||||
#define VIDEO_780_HTOTAL 896
|
||||
#define VIDEO_780_VTOTAL 525
|
||||
#define VIDEO_780_HBEND 0
|
||||
#define VIDEO_780_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH)
|
||||
#define VIDEO_780_VBEND 0
|
||||
#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_R_LIM 640 // Right-side limit of alpha-only horizontal part
|
||||
#define VIDEO_780_PIXEL_CLOCK 28224000
|
||||
#define VIDEO_780_HTOTAL 896
|
||||
#define VIDEO_780_VTOTAL 525
|
||||
#define VIDEO_780_HBEND 0
|
||||
#define VIDEO_780_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH)
|
||||
#define VIDEO_780_VBEND 0
|
||||
#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_R_LIM 640 // Right-side limit of alpha-only horizontal part
|
||||
|
||||
#define I_GR 0xb0 // graphics intensity
|
||||
#define I_AL 0xd0 // alpha intensity
|
||||
#define I_CU 0xf0 // graphics cursor intensity
|
||||
#define I_LP 0xff // light pen cursor intensity
|
||||
#define I_GR 0xb0 // graphics intensity
|
||||
#define I_AL 0xd0 // alpha intensity
|
||||
#define I_CU 0xf0 // graphics cursor intensity
|
||||
#define I_LP 0xff // light pen cursor intensity
|
||||
|
||||
// Palette indexes (for monochromatic screens)
|
||||
#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)
|
||||
|
||||
// Peripheral Addresses (PA)
|
||||
#define IO_SLOT_FIRST_PA 1
|
||||
#define IO_SLOT_LAST_PA 12
|
||||
#define IO_SLOT_FIRST_PA 1
|
||||
#define IO_SLOT_LAST_PA 12
|
||||
#define GVIDEO_PA 13
|
||||
#define T14_PA 14
|
||||
#define T14_PA 14
|
||||
#define T15_PA 15
|
||||
|
||||
#define KEY_SCAN_OSCILLATOR 327680
|
||||
@ -2649,11 +2649,11 @@ void hp9845t_state::machine_start()
|
||||
m_graphic_mem.resize(GVIDEO_MEM_SIZE);
|
||||
|
||||
// initialize palette
|
||||
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_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_LP , 0x00, I_LP, 0x00); // lightpen cursor
|
||||
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_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_LP , 0x00, I_LP, 0x00); // lightpen cursor
|
||||
}
|
||||
|
||||
void hp9845t_state::machine_reset()
|
||||
@ -2697,18 +2697,18 @@ READ16_MEMBER(hp9845t_state::graphic_r)
|
||||
BIT_SET(res, 6);
|
||||
}
|
||||
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: fix 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;
|
||||
}
|
||||
BIT_SET(res, 9); // ID
|
||||
BIT_SET(res, 11); // ID
|
||||
BIT_SET(res, 9); // ID
|
||||
BIT_SET(res, 11); // ID
|
||||
if (m_gv_stat) {
|
||||
BIT_SET(res, 13); // error indication
|
||||
BIT_SET(res, 13); // error indication
|
||||
}
|
||||
|
||||
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_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_dsa_en = BIT(data , 12); // for factory use only (function unknown)
|
||||
m_gv_fsm_state = GV_STAT_RESET; // command/reset state machine
|
||||
m_gv_dsa_en = BIT(data , 12); // for factory use only (function unknown)
|
||||
m_gv_fsm_state = GV_STAT_RESET; // command/reset state machine
|
||||
lp_r5_w(data);
|
||||
advance_gv_fsm(false , false);
|
||||
break;
|
||||
@ -2808,7 +2808,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(hp9845t_state::scanline_timer)
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@ -2955,20 +2955,20 @@ void hp9845t_state::plot(uint16_t x, uint16_t y, bool draw_erase)
|
||||
if (BIT(m_gv_rb_control, 1)) {
|
||||
// save graphics memory to rubber band memory
|
||||
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
|
||||
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++;
|
||||
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;
|
||||
}
|
||||
} else if (BIT(m_gv_rb_control, 0)) {
|
||||
// restore graphics memory from rubber band memory
|
||||
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
|
||||
m_graphic_mem[ addr ] &= ~pixel_mask; // clear
|
||||
m_graphic_mem[ addr ] &= ~pixel_mask; // clear
|
||||
m_gv_rb_counter++;
|
||||
if (m_gv_rb_counter > 4095) {
|
||||
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) {
|
||||
switch (quadrant) {
|
||||
case 0:
|
||||
plot(x0 + x1, y0 - y1, draw_erase); // quadrant 0
|
||||
plot(x0 + x1, y0 - y1, draw_erase); // quadrant 0
|
||||
break;
|
||||
case 1:
|
||||
plot(x0 - y1, y0 - x1, draw_erase); // quadrant 1
|
||||
plot(x0 - y1, y0 - x1, draw_erase); // quadrant 1
|
||||
break;
|
||||
case 2:
|
||||
plot(x0 - x1, y0 + y1, draw_erase); // quadrant 2
|
||||
plot(x0 - x1, y0 + y1, draw_erase); // quadrant 2
|
||||
break;
|
||||
case 3:
|
||||
plot(x0 + y1, y0 + x1, draw_erase); // quadrant 3
|
||||
plot(x0 + y1, y0 + x1, draw_erase); // quadrant 3
|
||||
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);
|
||||
}
|
||||
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;
|
||||
} else if (m_gv_cmd == 0xd) {
|
||||
// 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);
|
||||
}
|
||||
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 {
|
||||
// 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;
|
||||
} else {
|
||||
@ -3139,21 +3139,21 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
case GV_STAT_WAIT_TRIG_0:
|
||||
// process data on R4 or R6
|
||||
switch (m_gv_cmd) {
|
||||
case 0x1: // load end points
|
||||
case 0x1: // load end points
|
||||
m_gv_ypt = m_gv_data_w & 0x3ff;
|
||||
LOG(("load end points y = %d\n", m_gv_ypt));
|
||||
break;
|
||||
case 0x3: // load arc
|
||||
case 0x3: // load arc
|
||||
m_gv_arc_parm = 0;
|
||||
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]));
|
||||
m_gv_arc_parm++;
|
||||
break;
|
||||
case 0x5: // load scan
|
||||
m_gv_scan_start_x = m_gv_data_w & 0x3ff; // 0..559
|
||||
case 0x5: // load scan
|
||||
m_gv_scan_start_x = m_gv_data_w & 0x3ff; // 0..559
|
||||
LOG(("load scan x = %d\n", m_gv_scan_start_x));
|
||||
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;
|
||||
if (BIT(m_gv_line_type_area_fill, 4)) {
|
||||
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));
|
||||
break;
|
||||
case 0x7: // load X/Y I/O address
|
||||
m_gv_word_y_position = m_gv_data_w & 0x1ff; // 0..454
|
||||
case 0x7: // load X/Y I/O address
|
||||
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));
|
||||
break;
|
||||
case 0xa: // load memory control
|
||||
case 0xa: // load memory control
|
||||
// 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;
|
||||
LOG(("load memory control = %04x\n", m_gv_memory_control));
|
||||
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);
|
||||
LOG(("video on/off parm = %d\n", m_gv_data_w & 0x3));
|
||||
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;
|
||||
case 0xe: // Y cursor position
|
||||
case 0xe: // Y cursor position
|
||||
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_y = 559 - (m_gv_data_w >> 7);
|
||||
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));
|
||||
break;
|
||||
case 0xf: // X cursor position
|
||||
case 0xf: // X cursor position
|
||||
m_gv_cursor_x = ((m_gv_data_w >> 6) & 0x3ff) - 121;
|
||||
LOG(("X cursor position = %d\n", m_gv_cursor_x));
|
||||
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));
|
||||
}
|
||||
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 {
|
||||
get_out = true;
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> done
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> done
|
||||
}
|
||||
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 ];
|
||||
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_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 {
|
||||
m_gv_timer->adjust(time_mem_av);
|
||||
get_out = true;
|
||||
@ -3217,7 +3217,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
// wait for data word to be read
|
||||
if (ds) {
|
||||
// -- 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 {
|
||||
// -- done
|
||||
get_out = true;
|
||||
@ -3228,7 +3228,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
// wait for data word to be written
|
||||
if (ds) {
|
||||
// -- 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 {
|
||||
// done
|
||||
get_out = true;
|
||||
@ -3250,12 +3250,12 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
if (BIT(m_gv_data_w, 11)) {
|
||||
// draw vector
|
||||
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 {
|
||||
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_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;
|
||||
|
||||
@ -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]));
|
||||
m_gv_arc_parm++;
|
||||
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 {
|
||||
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;
|
||||
|
||||
case 0x5:
|
||||
// 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));
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_0;
|
||||
break;
|
||||
|
||||
case 0x7:
|
||||
// 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_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));
|
||||
@ -3289,7 +3289,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
|
||||
case 0x8:
|
||||
// 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;
|
||||
@ -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)) {
|
||||
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 {
|
||||
m_gv_timer->adjust(time_mem_av);
|
||||
get_out = true;
|
||||
@ -3470,31 +3470,31 @@ static MACHINE_CONFIG_START( hp9835a, hp9845_state )
|
||||
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 1: 0x008000 - 0x00ffff (PPU RAM, only 0x00c000 - 0x00ffff used)
|
||||
block 2: 0x010000 - 0x017fff (unused)
|
||||
block 3: 0x018000 - 0x01ffff (LPU system ROM)
|
||||
block 4: 0x020000 - 0x027fff (LPU RAM)
|
||||
block 5: 0x028000 - 0x02ffff (PPU system ROM)
|
||||
block 6: 0x030000 - 0x037fff (LPU RAM)
|
||||
block 7: 0x038000 - 0x03ffff (LPU option ROM)
|
||||
block 10: 0x040000 - 0x047fff (LPU RAM)
|
||||
block 11: 0x048000 - 0x04ffff (PPU option ROM)
|
||||
block 12: 0x050000 - 0x057fff (LPU RAM)
|
||||
block 13: 0x058000 - 0x05ffff (LPU option ROM)
|
||||
block 14: 0x060000 - 0x067fff (LPU RAM)
|
||||
block 15: 0x068000 - 0x06ffff (PPU option ROM)
|
||||
block 16: 0x070000 - 0x077fff (LPU RAM)
|
||||
block 17: 0x078000 - 0x07ffff (unused)
|
||||
block 0: 0x000000 - 0x007fff (LPU RAM)
|
||||
block 1: 0x008000 - 0x00ffff (PPU RAM, only 0x00c000 - 0x00ffff used)
|
||||
block 2: 0x010000 - 0x017fff (unused)
|
||||
block 3: 0x018000 - 0x01ffff (LPU system ROM)
|
||||
block 4: 0x020000 - 0x027fff (LPU RAM)
|
||||
block 5: 0x028000 - 0x02ffff (PPU system ROM)
|
||||
block 6: 0x030000 - 0x037fff (LPU RAM)
|
||||
block 7: 0x038000 - 0x03ffff (LPU option ROM)
|
||||
block 10: 0x040000 - 0x047fff (LPU RAM)
|
||||
block 11: 0x048000 - 0x04ffff (PPU option ROM)
|
||||
block 12: 0x050000 - 0x057fff (LPU RAM)
|
||||
block 13: 0x058000 - 0x05ffff (LPU option ROM)
|
||||
block 14: 0x060000 - 0x067fff (LPU RAM)
|
||||
block 15: 0x068000 - 0x06ffff (PPU option ROM)
|
||||
block 16: 0x070000 - 0x077fff (LPU RAM)
|
||||
block 17: 0x078000 - 0x07ffff (unused)
|
||||
|
||||
notes:
|
||||
- all block numbers are octal
|
||||
- blocks 20 to 76 are reserved for 512 kbyte RAM boards (p/n 09845-66590)
|
||||
- block 45 is reserved for the Test ROM
|
||||
- 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).
|
||||
notes:
|
||||
- all block numbers are octal
|
||||
- blocks 20 to 76 are reserved for 512 kbyte RAM boards (p/n 09845-66590)
|
||||
- block 45 is reserved for the Test ROM
|
||||
- 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).
|
||||
- all LPU RAM is dynamically mapped at machine start according to -ramsize option
|
||||
*/
|
||||
|
||||
|
@ -113,9 +113,9 @@ ROM_START(nbamac)
|
||||
ROM_END
|
||||
|
||||
ROM_START(glxplay)
|
||||
ROM_REGION(0x4000, "maincpu", 0)
|
||||
ROM_LOAD("1083-1.cpu", 0x0000, 0x2000, CRC(3df33169) SHA1(657720aab4cccf3364f013acb3f5dbc46fe0e05c))
|
||||
ROM_LOAD("1083-2.cpu", 0x2000, 0x2000, CRC(47b4f49e) SHA1(59853ac56bb9e2dc7b848dc46ebd27c21b9d2e82))
|
||||
ROM_REGION(0x4000, "maincpu", 0)
|
||||
ROM_LOAD("1083-1.cpu", 0x0000, 0x2000, CRC(3df33169) SHA1(657720aab4cccf3364f013acb3f5dbc46fe0e05c))
|
||||
ROM_LOAD("1083-2.cpu", 0x2000, 0x2000, CRC(47b4f49e) SHA1(59853ac56bb9e2dc7b848dc46ebd27c21b9d2e82))
|
||||
ROM_END
|
||||
|
||||
ROM_START(kidnap)
|
||||
|
@ -305,16 +305,16 @@ READ32_MEMBER(midzeus_state::disk_asic_jr_r)
|
||||
/* CMOS/ZPRAM write enable; only low bit is used */
|
||||
case 2:
|
||||
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 */
|
||||
case 3:
|
||||
break;
|
||||
// return disk_asic_jr[offset] | ~1;
|
||||
// return disk_asic_jr[offset] | ~1;
|
||||
|
||||
/* ROM bank selection on Zeus 2; two bits are used */
|
||||
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 */
|
||||
/* 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_START("KEYPAD")
|
||||
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(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(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(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(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(0x400, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) /* keypad 9 */
|
||||
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(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(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(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(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(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_START("TRACKX1")
|
||||
|
@ -16,7 +16,7 @@
|
||||
Some boards use the DS1205 chip for security, others use the DS1991 iButton
|
||||
|
||||
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 5000 (1998) (CD versions: R5A, *R5B, R5D, *R5E, R5G, R5H, *R5I)
|
||||
Megatouch XL 6000 (1999) (CD versions: *R02, R04, R05, *R07)
|
||||
@ -205,7 +205,7 @@ static MACHINE_CONFIG_START( at486, mtxl_state )
|
||||
|
||||
/* internal ram */
|
||||
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 */
|
||||
MCFG_DEVICE_ADD("dbank", ADDRESS_MAP_BANK, 0)
|
||||
|
@ -1,18 +1,18 @@
|
||||
// license:BSD-3-Clause
|
||||
// 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:
|
||||
- Intel Socket 478 Celeron CPU, 2.5 GHz, S-Spec "SL6ZY"
|
||||
More info: http://www.cpu-world.com/sspec/SL/SL6ZY.html
|
||||
- Intel 82865G northbridge
|
||||
- Intel 82801EB southbridge / "ICH5" Super I/O
|
||||
- 512MB of system RAM
|
||||
- ATI-branded Radeon 9600XT AGP video card with 128 MB of VRAM
|
||||
- Konami protection dongle marked "GEGGG JA-B"
|
||||
Hardware for Otomedius:
|
||||
- Intel Socket 478 Celeron CPU, 2.5 GHz, S-Spec "SL6ZY"
|
||||
More info: http://www.cpu-world.com/sspec/SL/SL6ZY.html
|
||||
- Intel 82865G northbridge
|
||||
- Intel 82801EB southbridge / "ICH5" Super I/O
|
||||
- 512MB of system RAM
|
||||
- ATI-branded Radeon 9600XT AGP video card with 128 MB of VRAM
|
||||
- Konami protection dongle marked "GEGGG JA-B"
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
@ -87,7 +87,7 @@ ROM_START( otomedius )
|
||||
ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASEFF )
|
||||
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) )
|
||||
|
||||
DISK_REGION( "ide:0:hdd:image" ) // Seagate ST340015A 40GB PATA drive
|
||||
|
@ -1,6 +1,6 @@
|
||||
// license:BSD-3-Clause
|
||||
/**************************************************************************
|
||||
Pirate Ship
|
||||
Pirate Ship
|
||||
|
||||
PWB(A)354460B
|
||||
|
||||
@ -53,7 +53,7 @@ public:
|
||||
m_k056832(*this, "k056832"),
|
||||
m_k055673(*this, "k055673"),
|
||||
m_k055555(*this, "k055555"),
|
||||
// m_k053246(*this, "k053246"),
|
||||
// m_k053246(*this, "k053246"),
|
||||
m_k054539(*this, "k054539"),
|
||||
m_spriteram(*this,"spriteram")
|
||||
{ }
|
||||
@ -66,7 +66,7 @@ public:
|
||||
required_device<k055673_device> m_k055673;
|
||||
required_device<k055555_device> m_k055555;
|
||||
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;
|
||||
|
||||
@ -127,8 +127,8 @@ K056832_CB_MEMBER(piratesh_state::piratesh_tile_callback)
|
||||
// Code
|
||||
// Color
|
||||
// Flags
|
||||
// if (*color != 0)
|
||||
// printf("%x %x %x\n", layer, *code, *color >> 2);
|
||||
// if (*color != 0)
|
||||
// printf("%x %x %x\n", layer, *code, *color >> 2);
|
||||
|
||||
*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)
|
||||
{
|
||||
// .... .... ...x .... - Unknown (always 1?)
|
||||
// .... .... ...x .... - Unknown (always 1?)
|
||||
// .... .... ..x. .... - Unknown
|
||||
// .... .... .x.. .... - Counter out
|
||||
// .... .... x... .... - Counter in
|
||||
@ -363,7 +363,7 @@ WRITE16_MEMBER(piratesh_state::control2_w)
|
||||
|
||||
WRITE16_MEMBER(piratesh_state::control3_w)
|
||||
{
|
||||
// .... .... .... ...x - Watchdog? (051550?)
|
||||
// .... .... .... ...x - Watchdog? (051550?)
|
||||
// .... .... .... ..x. - 056832 ROM bank control
|
||||
// .... .... ...x .... - Ticket dispenser enable (active high)
|
||||
// .... .... ..x. .... - Hopper enable (active high)
|
||||
@ -372,7 +372,7 @@ WRITE16_MEMBER(piratesh_state::control3_w)
|
||||
if ((data & ~0x0133) || (~data & 0x100))
|
||||
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>("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)
|
||||
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)
|
||||
// for (i=0; i<=7; i++) m_k054539_2->set_gain(i, 0.5);
|
||||
// // soften percussions(chip 1 channel 0-7)
|
||||
// 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-a07.17t", 0x080000, 0x80000, CRC(af7127c5) SHA1(b525f3c6b831e3354eba46016d414bedcb3ae8dc) )
|
||||
|
||||
// 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_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_END
|
||||
|
||||
/* ROM parent machine inp init */
|
||||
|
@ -251,18 +251,18 @@ Source code and text in EPR-6450D
|
||||
|
||||
POWER DOWN CHANGE
|
||||
TSEL:
|
||||
LD A,(BETFLG) ; READ CREDIT
|
||||
RRCA ; CREDIT IN ?
|
||||
JR C,BETSELZ
|
||||
LD A,(BETFLG) ; READ CREDIT
|
||||
RRCA ; CREDIT IN ?
|
||||
JR C,BETSELZ
|
||||
|
||||
LD A,(SELOLD)
|
||||
OR A
|
||||
LD C,A
|
||||
CALL NZ,OLDCLCG
|
||||
LD HL,0
|
||||
LD (SELOLD),HL
|
||||
LD (DBLSWCT),HL
|
||||
LD (LMPCNT),1
|
||||
LD A,(SELOLD)
|
||||
OR A
|
||||
LD C,A
|
||||
CALL NZ,OLDCLCG
|
||||
LD HL,0
|
||||
LD (SELOLD),HL
|
||||
LD (DBLSWCT),HL
|
||||
LD (LMPCNT),1
|
||||
|
||||
================================================================================
|
||||
End
|
||||
|
@ -682,9 +682,9 @@ static MACHINE_CONFIG_START( to7, thomson_state )
|
||||
MCFG_LEGACY_FLOPPY_CONFIG(thomson_floppy_interface)
|
||||
MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(thomson_state, fdc_index_3_w))
|
||||
|
||||
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:1", cd90_640_floppies, "dd", thomson_state::cd90_640_formats)
|
||||
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:1", cd90_640_floppies, "dd", thomson_state::cd90_640_formats)
|
||||
|
||||
|
||||
/* network */
|
||||
|
@ -116,14 +116,14 @@ MACHINE_CONFIG_END
|
||||
/*
|
||||
Shark by U.S. Billiards
|
||||
|
||||
Etched in copper on Top (C) 1975
|
||||
010
|
||||
1SCOOP J6 2SCOOP
|
||||
Etched in copper on Top (C) 1975
|
||||
010
|
||||
1SCOOP J6 2SCOOP
|
||||
|
||||
Handwritten on top J0037
|
||||
124
|
||||
Handwritten on top J0037
|
||||
124
|
||||
|
||||
empty socket at 5M C etched in copper next to socket
|
||||
empty socket at 5M C etched in copper next to socket
|
||||
|
||||
*/
|
||||
|
||||
|
@ -73,8 +73,8 @@
|
||||
0x00009d00: LoadProgram(): R3 = ptr to filename
|
||||
|
||||
|
||||
TODO:
|
||||
- needs a proper way to dump security dongles, anything but p9112 has placeholder ROM for ds2430.
|
||||
TODO:
|
||||
- needs a proper way to dump security dongles, anything but p9112 has placeholder ROM for ds2430.
|
||||
|
||||
Game status:
|
||||
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 )
|
||||
// ADDRESS_MAP_UNMAP_HIGH
|
||||
// ADDRESS_MAP_UNMAP_HIGH
|
||||
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(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))
|
||||
// 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf))
|
||||
// 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(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w)
|
||||
AM_RANGE(0xffe08000, 0xffe08007) AM_NOP
|
||||
|
@ -266,8 +266,8 @@ WRITE16_MEMBER( nevada_state::vram_w )
|
||||
{
|
||||
// Todo, Just for sample
|
||||
|
||||
m_vram[offset] = data;
|
||||
m_tilemap->mark_tile_dirty(offset / 2);
|
||||
m_vram[offset] = data;
|
||||
m_tilemap->mark_tile_dirty(offset / 2);
|
||||
|
||||
}
|
||||
|
||||
@ -281,12 +281,12 @@ GFXDECODE_END
|
||||
|
||||
TILE_GET_INFO_MEMBER( nevada_state::get_bg_tile_info )
|
||||
{
|
||||
//int attr = m_colorram[tile_index];
|
||||
int code = m_vram[tile_index*2+1];
|
||||
//int bank = (attr & 0x02) >> 1;
|
||||
//int color = (attr & 0x3c) >> 2;
|
||||
//int attr = m_colorram[tile_index];
|
||||
int code = m_vram[tile_index*2+1];
|
||||
//int bank = (attr & 0x02) >> 1;
|
||||
//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()
|
||||
{
|
||||
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)
|
||||
{
|
||||
m_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
m_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -5,93 +5,93 @@
|
||||
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)
|
||||
|
||||
Boards:
|
||||
- VP101: Johnny Nero. The original (?)
|
||||
- VP100: Special Forces Elite Training. A not-quite-complete VP101; missing ATA DMA.
|
||||
- VP50 : Zoofari. Cost-reduced (?) with TX4925 SoC, much less complex FPGA.
|
||||
Boards:
|
||||
- VP101: Johnny Nero. The original (?)
|
||||
- VP100: Special Forces Elite Training. A not-quite-complete VP101; missing ATA DMA.
|
||||
- VP50 : Zoofari. Cost-reduced (?) with TX4925 SoC, much less complex FPGA.
|
||||
|
||||
Preliminary driver by R. Belmont
|
||||
|
||||
TODO:
|
||||
- All games: that formidable sounding 3D accelerator mentioned below.
|
||||
- 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.
|
||||
- All games: that formidable sounding 3D accelerator mentioned below.
|
||||
- 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.
|
||||
|
||||
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
|
||||
The VR5500 operates at either at 300 or 400 MHz with 120MHz external bus
|
||||
MIPS 64-bit RISC architecture
|
||||
Two-way super-scalar super pipeline
|
||||
On-chip floating-point unit (FPU)
|
||||
High-speed translation look-aside buffer (TLB)(48 double-entries)
|
||||
On-chip primary cache memory (instruction/data: 32 KB each)
|
||||
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
|
||||
Six execution units (ALU0, ALU1, FPU, FPU/MAC, BRU, and LSU)
|
||||
Employment of out-of-order execution mechanism
|
||||
Branch prediction mechanism - Branch history table with 4K entries
|
||||
Support for CPU emulator connection via JTAG/n-Wire port
|
||||
MIPS VR5500 CPU
|
||||
The VR5500 operates at either at 300 or 400 MHz with 120MHz external bus
|
||||
MIPS 64-bit RISC architecture
|
||||
Two-way super-scalar super pipeline
|
||||
On-chip floating-point unit (FPU)
|
||||
High-speed translation look-aside buffer (TLB)(48 double-entries)
|
||||
On-chip primary cache memory (instruction/data: 32 KB each)
|
||||
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
|
||||
Six execution units (ALU0, ALU1, FPU, FPU/MAC, BRU, and LSU)
|
||||
Employment of out-of-order execution mechanism
|
||||
Branch prediction mechanism - Branch history table with 4K entries
|
||||
Support for CPU emulator connection via JTAG/n-Wire port
|
||||
|
||||
Unified Memory Architecture - DDR SDRAM bank
|
||||
Arbitrating DDR SDRAM Memory controller
|
||||
128Mbyte to 512Mbyte memory capacity
|
||||
120/240 MHz @ 64 bits - ~2GBytes/sec bandwidth
|
||||
Unified Memory Architecture - DDR SDRAM bank
|
||||
Arbitrating DDR SDRAM Memory controller
|
||||
128Mbyte to 512Mbyte memory capacity
|
||||
120/240 MHz @ 64 bits - ~2GBytes/sec bandwidth
|
||||
|
||||
3D Render Engine
|
||||
True color and 8-bit palette lookup textures
|
||||
8K byte texel cache for accelerated source texel selection.
|
||||
Perspective corrected rendering
|
||||
Bi-linear filter for source texel scaling
|
||||
256 Color Palette Lookup (888 RGB plus 8 bit Source Palette Alpha)
|
||||
True Color Source Textures (888 RGB plus 8 bit Alpha)
|
||||
24 bit Z-buffer structure in DDR SDRAM buffer
|
||||
Per-vertex colored lighting
|
||||
Alpha channel structure in DDR SDRAM buffer
|
||||
Pixel processing effects (fog, night, etc.)
|
||||
888 RGB Video DAC output section.
|
||||
Bitmap structure in DDR SDRAM with DMA for screen update
|
||||
Flexible CRT controller with X/Y gun interface counters
|
||||
3D Render Engine
|
||||
True color and 8-bit palette lookup textures
|
||||
8K byte texel cache for accelerated source texel selection.
|
||||
Perspective corrected rendering
|
||||
Bi-linear filter for source texel scaling
|
||||
256 Color Palette Lookup (888 RGB plus 8 bit Source Palette Alpha)
|
||||
True Color Source Textures (888 RGB plus 8 bit Alpha)
|
||||
24 bit Z-buffer structure in DDR SDRAM buffer
|
||||
Per-vertex colored lighting
|
||||
Alpha channel structure in DDR SDRAM buffer
|
||||
Pixel processing effects (fog, night, etc.)
|
||||
888 RGB Video DAC output section.
|
||||
Bitmap structure in DDR SDRAM with DMA for screen update
|
||||
Flexible CRT controller with X/Y gun interface counters
|
||||
|
||||
Game I/O
|
||||
Standard JAMMA I/O interface, including player 3 and 4 connectors
|
||||
4 channel general purpose A to D interface (steering wheel and control pedals)
|
||||
100baseT Ethernet interface for debugging and/or inter game communications
|
||||
Forced-feedback “Wheel Driver Interface” for driving games
|
||||
High-current drivers for lamps or solenoids
|
||||
Gun interface I/O tightly coupled to the CRT controller
|
||||
Game I/O
|
||||
Standard JAMMA I/O interface, including player 3 and 4 connectors
|
||||
4 channel general purpose A to D interface (steering wheel and control pedals)
|
||||
100baseT Ethernet interface for debugging and/or inter game communications
|
||||
Forced-feedback “Wheel Driver Interface” for driving games
|
||||
High-current drivers for lamps or solenoids
|
||||
Gun interface I/O tightly coupled to the CRT controller
|
||||
|
||||
Sound System
|
||||
AC97 codec for low cost of implementation and development
|
||||
TDA7375 40 Watt Integrated Amplifier
|
||||
Codec fed from the DDR bank via a 16 channel (8 channels of stereo) DMA engine.
|
||||
Sound System
|
||||
AC97 codec for low cost of implementation and development
|
||||
TDA7375 40 Watt Integrated Amplifier
|
||||
Codec fed from the DDR bank via a 16 channel (8 channels of stereo) DMA engine.
|
||||
|
||||
ATA/IDE Disk Drive Interface
|
||||
Standard ATA/IDE interface
|
||||
Ultra DMA 33/66/100/133 to the DDR SDRAM memory
|
||||
ATA/IDE Disk Drive Interface
|
||||
Standard ATA/IDE interface
|
||||
Ultra DMA 33/66/100/133 to the DDR SDRAM memory
|
||||
|
||||
Video DAC
|
||||
RGB values at 8 bits per color
|
||||
RGB voltage level adjustable from 0-1.0 Vp-p to 0-4.0 Vp-p
|
||||
Video DAC
|
||||
RGB values at 8 bits per color
|
||||
RGB voltage level adjustable from 0-1.0 Vp-p to 0-4.0 Vp-p
|
||||
|
||||
Flash Memory
|
||||
Minimum of 1MB of Flash memory – expandable to 4 MB
|
||||
Updateable Boot ROM
|
||||
Updateable FPGA configuration
|
||||
Flash Memory
|
||||
Minimum of 1MB of Flash memory – expandable to 4 MB
|
||||
Updateable Boot ROM
|
||||
Updateable FPGA configuration
|
||||
|
||||
Battery Backed Up RAM
|
||||
32K bytes of non-volatile memory for static game configuration and high score table
|
||||
Non-volatile Real-Time clock
|
||||
Battery Backed Up RAM
|
||||
32K bytes of non-volatile memory for static game configuration and high score table
|
||||
Non-volatile Real-Time clock
|
||||
|
||||
Small Footprint
|
||||
Small outline design for easy kit retrofitting of existing cabinet
|
||||
12.2 in x 14.96 in
|
||||
Small Footprint
|
||||
Small outline design for easy kit retrofitting of existing cabinet
|
||||
12.2 in x 14.96 in
|
||||
|
||||
Security Interface
|
||||
Security processor provides for a means to “unlock” the FPGA functions
|
||||
Enabled for software protection against piracy and unwarranted game updates
|
||||
Security Interface
|
||||
Security processor provides for a means to “unlock” the FPGA functions
|
||||
Enabled for software protection against piracy and unwarranted game updates
|
||||
|
||||
Full populated and tested board is less than $500, including IDE hard disk.
|
||||
Small outline design for easy kit retrofitting of existing cabinets.
|
||||
@ -166,7 +166,7 @@ void vp10x_state::machine_reset()
|
||||
void vp10x_state::machine_start()
|
||||
{
|
||||
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)
|
||||
@ -190,7 +190,7 @@ WRITE_LINE_MEMBER(vp10x_state::dmarq_w)
|
||||
while (m_dmarq_state)
|
||||
{
|
||||
*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);
|
||||
@ -213,7 +213,7 @@ READ32_MEMBER(vp10x_state::pic_r)
|
||||
case 0x22:
|
||||
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++];
|
||||
}
|
||||
|
||||
@ -238,7 +238,7 @@ READ32_MEMBER(vp10x_state::spi_r)
|
||||
|
||||
WRITE32_MEMBER(vp10x_state::spi_w)
|
||||
{
|
||||
// printf("%d to SPI select\n", data);
|
||||
// printf("%d to SPI select\n", 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
|
||||
// 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 )
|
||||
@ -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(0x1c400014, 0x1c400017) AM_READ(tty_ready_r)
|
||||
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(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(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(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)
|
||||
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(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(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(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_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,
|
||||
but even factory-new boardsets came with a variety of HDD makes and models */
|
||||
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 */
|
||||
DISK_IMAGE_READONLY("jn010108", 0, SHA1(5a27990478b65fca801c3a6518c519c5b4ca934d) )
|
||||
ROM_END
|
||||
|
||||
|
@ -691,7 +691,7 @@ void mac_state::mac_adb_newaction(int state)
|
||||
m_adb_direction = 1; // Mac is shifting us a command
|
||||
m_adb_waiting_cmd = 1; // we're going to get a command
|
||||
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_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
|
||||
break;
|
||||
@ -709,7 +709,7 @@ void mac_state::mac_adb_newaction(int state)
|
||||
m_adb_send = m_adb_buffer[0];
|
||||
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);
|
||||
|
||||
// move down the rest of the buffer, if any
|
||||
@ -1125,7 +1125,7 @@ void mac_state::adb_vblank()
|
||||
this->adb_talk();
|
||||
|
||||
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);
|
||||
this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
|
||||
}
|
||||
@ -1164,7 +1164,7 @@ void mac_state::adb_vblank()
|
||||
this->adb_talk();
|
||||
|
||||
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);
|
||||
this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
|
||||
}
|
||||
|
@ -27651,14 +27651,14 @@ yis60464 //
|
||||
mt735 //
|
||||
|
||||
@source:mtouchxl.cpp
|
||||
mtouchxl // 1997 Merit Industries
|
||||
mtchxl5k // 1998 Merit Industries
|
||||
mtchxl5ko // 1998 Merit Industries
|
||||
mtchxl5ko2 // 1998 Merit Industries
|
||||
mtchxl6k // 1999 Merit Industries
|
||||
mtchxl6ko // 1999 Merit Industries
|
||||
mtchxlgld // 2000 Merit Industries
|
||||
mtchxlgldo // 2000 Merit Industries
|
||||
mtouchxl // 1997 Merit Industries
|
||||
mtchxl5k // 1998 Merit Industries
|
||||
mtchxl5ko // 1998 Merit Industries
|
||||
mtchxl5ko2 // 1998 Merit Industries
|
||||
mtchxl6k // 1999 Merit Industries
|
||||
mtchxl6ko // 1999 Merit Industries
|
||||
mtchxlgld // 2000 Merit Industries
|
||||
mtchxlgldo // 2000 Merit Industries
|
||||
|
||||
@source:mtx.cpp
|
||||
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)
|
||||
|
||||
@source:otomedius.cpp
|
||||
otomedius // (c) 2007 Konami
|
||||
otomedius // (c) 2007 Konami
|
||||
|
||||
@source:overdriv.cpp
|
||||
overdriv // GX789 (c) 1990
|
||||
@ -30920,7 +30920,7 @@ pirates // (c) 1994 NIX
|
||||
piratesb // bootleg?
|
||||
|
||||
@source:piratesh.cpp
|
||||
piratesh // (c) 1995 Konami
|
||||
piratesh // (c) 1995 Konami
|
||||
|
||||
@source:pitagjr.cpp
|
||||
pitagjr // Pitagorin Junior
|
||||
@ -37001,7 +37001,7 @@ votrtnt // 1980 Votrax Type-'N-Talk
|
||||
|
||||
@source:voyager.cpp
|
||||
voyager // (c) 2002 Team Play, Inc.
|
||||
policet2 // (c) 2003 Team Play, Inc.
|
||||
policet2 // (c) 2003 Team Play, Inc.
|
||||
|
||||
@source:vp101.cpp
|
||||
jnero // (c) 2004 ICE/Play Mechanix
|
||||
|
@ -73,8 +73,8 @@ void k053250ps_device::device_start()
|
||||
m_buffer[0] = &m_ram[0x0000];
|
||||
m_buffer[1] = &m_ram[0x0800];
|
||||
|
||||
// m_buffer[0] = &m_ram[0x2000];
|
||||
// m_buffer[1] = &m_ram[0x2800];
|
||||
// m_buffer[0] = &m_ram[0x2000];
|
||||
// m_buffer[1] = &m_ram[0x2800];
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
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)
|
||||
{
|
||||
// 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;
|
||||
}
|
||||
else
|
||||
{
|
||||
// otherwise disable target wraparound and draw scanline in a single pass
|
||||
// dst_wrapmask = ~0;
|
||||
// dst_wrapmask = ~0;
|
||||
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_dmairq_cb(ASSERT_LINE);
|
||||
|
||||
// memcpy(m_buffer[m_page], &m_ram[0], 0x1000);
|
||||
// m_page ^= 1;
|
||||
// memcpy(m_buffer[m_page], &m_ram[0], 0x1000);
|
||||
// m_page ^= 1;
|
||||
|
||||
break;
|
||||
|
||||
|
@ -88,7 +88,7 @@
|
||||
[memoryScroll setHasVerticalScroller:YES];
|
||||
[memoryScroll setAutohidesScrollers:YES];
|
||||
[memoryScroll setBorderType:NSNoBorder];
|
||||
[memoryScroll setDrawsBackground:NO];
|
||||
[memoryScroll setDrawsBackground:NO];
|
||||
[memoryScroll setDocumentView:memoryView];
|
||||
[memoryView release];
|
||||
[[window contentView] addSubview:memoryScroll];
|
||||
|
Loading…
Reference in New Issue
Block a user