srcclean (nw)

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

View File

@ -25153,8 +25153,8 @@
* GS-?? - Crouching Tiger Hidden Dragon (99% this is Tiger A Dragon below) * GS-?? - Crouching Tiger Hidden Dragon (99% this is Tiger A Dragon below)
--> -->
<!-- For GS-01: You have to enable the "Skip Logo check", at 0x0423 you have to <!-- For GS-01: You have to enable the "Skip Logo check", at 0x0423 you have to
patch the rom to 0x00 and 0x00....and at 0x0B3D also patch it to patch the rom to 0x00 and 0x00....and at 0x0B3D also patch it to
0x00....the last routine (0x0B3D) checks if the first one was changed... 0x00....the last routine (0x0B3D) checks if the first one was changed...
after that "Sound of the Pipa" should run... Magic Ball should not have after that "Sound of the Pipa" should run... Magic Ball should not have
a Protection Check.... a Protection Check....

View File

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

View File

@ -1539,7 +1539,7 @@
<rom name="msdetecticve1.ccd" size="772" crc="92ccce73" sha1="717957cf8f02b585c5845347035cafca1be9613c"/> <rom name="msdetecticve1.ccd" size="772" crc="92ccce73" sha1="717957cf8f02b585c5845347035cafca1be9613c"/>
<rom name="msdetecticve1.img" size="361540032" crc="bdea9ba7" sha1="dee4ab701aba51df0ebd635131f0b040d5ab81d9"/> <rom name="msdetecticve1.img" size="361540032" crc="bdea9ba7" sha1="dee4ab701aba51df0ebd635131f0b040d5ab81d9"/>
<rom name="msdetecticve1.sub" size="14756736" crc="d02e1e88" sha1="8aa6ebe48b95a36b725748eb43b92d3c90aef63c"/> <rom name="msdetecticve1.sub" size="14756736" crc="d02e1e88" sha1="8aa6ebe48b95a36b725748eb43b92d3c90aef63c"/>
*after conversion with IsoBuster+EAC * *after conversion with IsoBuster+EAC *
<rom name="msdet1.cue" size="263" crc="d2572803" sha1="095924856d2540617e11b88790ad3d50d71b7553"/> <rom name="msdet1.cue" size="263" crc="d2572803" sha1="095924856d2540617e11b88790ad3d50d71b7553"/>
<rom name="Track01.bin" size="470811600" crc="a56fd0c7" sha1="7d1a05f94a1959f28bc5b4f2c9074ea5b0f0488d"/> <rom name="Track01.bin" size="470811600" crc="a56fd0c7" sha1="7d1a05f94a1959f28bc5b4f2c9074ea5b0f0488d"/>

View File

@ -344,7 +344,7 @@
<part name="cart" interface="tourvision_cart"> <part name="cart" interface="tourvision_cart">
<dataarea name="rom" size="1048576"> <dataarea name="rom" size="1048576">
<!-- 0x80000 matches PCE dragnegg --> <!-- 0x80000 matches PCE dragnegg -->
<rom name="dragon_egg.tv" size="1048576" crc="fa24bc20" sha1="d6da2f5c95bb25d15918e01de951bbf35de9de7b" offset="000000" /> <rom name="dragon_egg.tv" size="1048576" crc="fa24bc20" sha1="d6da2f5c95bb25d15918e01de951bbf35de9de7b" offset="000000" />
</dataarea> </dataarea>
</part> </part>
</software> </software>

View File

@ -771,15 +771,15 @@ project "bx"
configuration { } configuration { }
local version = str_to_version(_OPTIONS["gcc_version"]) local version = str_to_version(_OPTIONS["gcc_version"])
if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "gcc") then if _OPTIONS["gcc"]~=nil and string.find(_OPTIONS["gcc"], "gcc") then
if version < 60000 then if version < 60000 then
buildoptions { buildoptions {
"-Wno-strict-overflow", "-Wno-strict-overflow",
} }
end end
end end
includedirs { includedirs {
MAME_DIR .. "3rdparty/bx/include", MAME_DIR .. "3rdparty/bx/include",
} }

View File

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

View File

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

View File

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

View File

@ -1040,7 +1040,7 @@ WRITE8_MEMBER(nes_waixing_sgz_device::write_h)
iNES: mapper 178 iNES: mapper 178
In MESS: Supported. In MESS: Supported.
Implementations wildly vary between emulators, but Implementations wildly vary between emulators, but
Cah4e3's implementation boots up both the games and Cah4e3's implementation boots up both the games and
the educational carts that assumedly use this board. the educational carts that assumedly use this board.
@ -1085,7 +1085,7 @@ WRITE8_MEMBER(nes_waixing_sgzlz_device::write_l)
} }
} }
else else
{ // NROM mode { // NROM mode
if (BIT(m_reg[0], 3)) if (BIT(m_reg[0], 3))
{ {
prg16_89ab(bank); prg16_89ab(bank);

View File

@ -4,7 +4,7 @@
TMS1000 family - TMS1000, TMS1070, TMS1040, TMS1200, TMS1700, TMS1730, TMS1000 family - TMS1000, TMS1070, TMS1040, TMS1200, TMS1700, TMS1730,
and second source Motorola MC141000, MC141200. and second source Motorola MC141000, MC141200.
TODO: TODO:
- add TMS1270 (10 O pins, how does that work?) - add TMS1270 (10 O pins, how does that work?)
- add TMS1000C, TMS1200C (CMOS, and 3-level stack) - add TMS1000C, TMS1200C (CMOS, and 3-level stack)

View File

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

View File

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

View File

@ -6011,10 +6011,10 @@ uint8_t saturn_state::get_odd_bit( void )
{ {
if((STV_VDP2_HRES & 1) == 0) if((STV_VDP2_HRES & 1) == 0)
return STV_VDP2_DISP; return STV_VDP2_DISP;
return 1; return 1;
} }
return machine().first_screen()->frame_number() & 1; return machine().first_screen()->frame_number() & 1;
} }

View File

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

View File

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

View File

@ -1013,7 +1013,7 @@ u64 debugger_cpu::expression_read_memory(void *param, const char *name, expressi
auto dis = m_machine.disable_side_effect(disable_se); auto dis = m_machine.disable_side_effect(disable_se);
return expression_read_program_direct(memory->space(AS_DECRYPTED_OPCODES), (spacenum == EXPSPACE_OPCODE), address, size); return expression_read_program_direct(memory->space(AS_DECRYPTED_OPCODES), (spacenum == EXPSPACE_OPCODE), address, size);
break; break;
} }
case EXPSPACE_REGION: case EXPSPACE_REGION:
if (name == nullptr) if (name == nullptr)

View File

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

View File

@ -334,7 +334,7 @@ private:
// flags // flags
bool m_readonly; bool m_readonly;
bool m_created; bool m_created;
// special - used when creating // special - used when creating
int m_create_format; int m_create_format;
util::option_resolution *m_create_args; util::option_resolution *m_create_args;

View File

@ -159,4 +159,4 @@ bool get_default_card_software_hook::hashfile_extrainfo(std::string &extrainfo)
} }
extrainfo = m_hash_extrainfo; extrainfo = m_hash_extrainfo;
return m_has_hash_extrainfo; return m_has_hash_extrainfo;
} }

View File

@ -99,7 +99,7 @@ class get_default_card_software_hook
public: public:
get_default_card_software_hook(const std::string &path, std::function<bool(util::core_file &, std::string&)> &&get_hashfile_extrainfo); get_default_card_software_hook(const std::string &path, std::function<bool(util::core_file &, std::string&)> &&get_hashfile_extrainfo);
// accesses the image file to be scrutinized by get_default_card_software(); is // accesses the image file to be scrutinized by get_default_card_software(); is
// nullptr in the case of images loaded by software list // nullptr in the case of images loaded by software list
util::core_file::ptr &image_file() { return m_image_file; } util::core_file::ptr &image_file() { return m_image_file; }
@ -110,12 +110,12 @@ public:
bool hashfile_extrainfo(std::string &extrainfo); bool hashfile_extrainfo(std::string &extrainfo);
private: private:
util::core_file::ptr m_image_file; util::core_file::ptr m_image_file;
std::string m_file_type; std::string m_file_type;
std::function<bool(util::core_file &, std::string&)> m_get_hashfile_extrainfo; std::function<bool(util::core_file &, std::string&)> m_get_hashfile_extrainfo;
bool m_called_get_hashfile_extrainfo; bool m_called_get_hashfile_extrainfo;
bool m_has_hash_extrainfo; bool m_has_hash_extrainfo;
std::string m_hash_extrainfo; std::string m_hash_extrainfo;
}; };

View File

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

View File

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

View File

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

View File

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

View File

@ -115,7 +115,7 @@ void mame_options::update_slot_options(emu_options &options, const software_part
//------------------------------------------------- //-------------------------------------------------
// get_default_card_software // get_default_card_software
//------------------------------------------------- //-------------------------------------------------
std::string mame_options::get_default_card_software(device_slot_interface &slot, const emu_options &options) std::string mame_options::get_default_card_software(device_slot_interface &slot, const emu_options &options)
@ -130,7 +130,7 @@ std::string mame_options::get_default_card_software(device_slot_interface &slot,
auto iter = options.image_options().find(image->instance_name()); auto iter = options.image_options().find(image->instance_name());
if (iter != options.image_options().end()) if (iter != options.image_options().end())
image_path = iter->second; image_path = iter->second;
get_hashfile_extrainfo = [image, &options](util::core_file &file, std::string &extrainfo) get_hashfile_extrainfo = [image, &options](util::core_file &file, std::string &extrainfo)
{ {
util::hash_collection hashes = image->calculate_hash_on_file(file); util::hash_collection hashes = image->calculate_hash_on_file(file);

View File

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

View File

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

View File

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

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

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

View File

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

View File

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

View File

@ -50,7 +50,7 @@ static const char *const nsub_sample_names[] =
}; };
/* sample ids - must match sample file name table above */ /* sample ids - must match sample file name table above */
enum enum
{ {
SND_EXPL_L0 = 0, SND_EXPL_L0 = 0,
SND_EXPL_L1, SND_EXPL_L1,

View File

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

View File

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

View File

@ -43,7 +43,7 @@ public:
required_shared_ptr<uint16_t> m_vregs; required_shared_ptr<uint16_t> m_vregs;
/* video-related */ /* video-related */
TILEMAP_MAPPER_MEMBER(pagescan); TILEMAP_MAPPER_MEMBER(pagescan);
tilemap_t *m_bg_tilemap; tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap; tilemap_t *m_fg_tilemap;
DECLARE_WRITE16_MEMBER(acchi_bg_videoram_w); DECLARE_WRITE16_MEMBER(acchi_bg_videoram_w);
@ -94,7 +94,7 @@ TILE_GET_INFO_MEMBER(acchi_state::get_acchi_fg_tile_info)
TILEMAP_MAPPER_MEMBER(acchi_state::pagescan) TILEMAP_MAPPER_MEMBER(acchi_state::pagescan)
{ {
return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x300) << 5); return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x300) << 5);
// return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x100) << 5); // see comment with tilemap creation // return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x100) << 5); // see comment with tilemap creation
} }
@ -107,8 +107,8 @@ void acchi_state::video_start()
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_fg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024,16*2); m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_fg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024,16*2);
// 2nd half of the ram seems unused, maybe it's actually a mirror meaning this would be the correct tilemap sizes // 2nd half of the ram seems unused, maybe it's actually a mirror meaning this would be the correct tilemap sizes
// m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_bg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2); // m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_bg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2);
// m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_fg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2); // m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_fg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2);
m_fg_tilemap->set_transparent_pen(0xf); m_fg_tilemap->set_transparent_pen(0xf);
} }
@ -134,7 +134,7 @@ uint32_t acchi_state::screen_update_acchi(screen_device &screen, bitmap_ind16 &b
scrolly&=0x1ff; scrolly&=0x1ff;
m_fg_tilemap->set_scrollx(0, scrollx); m_fg_tilemap->set_scrollx(0, scrollx);
m_fg_tilemap->set_scrolly(0, scrolly); m_fg_tilemap->set_scrolly(0, scrolly);
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
@ -142,17 +142,17 @@ uint32_t acchi_state::screen_update_acchi(screen_device &screen, bitmap_ind16 &b
/* /*
popmessage("%04x %04x %04x %04x\n%04x %04x %04x %04x", popmessage("%04x %04x %04x %04x\n%04x %04x %04x %04x",
m_vregs[0], m_vregs[1], m_vregs[0], m_vregs[1],
m_vregs[2], m_vregs[3], m_vregs[2], m_vregs[3],
m_vregs[4], m_vregs[5], m_vregs[4], m_vregs[5],
m_vregs[6], m_vregs[7]); m_vregs[6], m_vregs[7]);
*/ */
return 0; return 0;
} }
/* /*
also also
[:maincpu] ':maincpu' (00A284): unmapped program memory write to 110400 = 0000 & FFFF [:maincpu] ':maincpu' (00A284): unmapped program memory write to 110400 = 0000 & FFFF
[:maincpu] ':maincpu' (00A284): unmapped program memory write to 110402 = 0000 & FFFF [:maincpu] ':maincpu' (00A284): unmapped program memory write to 110402 = 0000 & FFFF
@ -173,17 +173,17 @@ static ADDRESS_MAP_START( acchi_map, AS_PROGRAM, 16, acchi_state )
AM_RANGE(0x100014, 0x100015) AM_WRITE8(flipscreen_w, 0x00ff) AM_RANGE(0x100014, 0x100015) AM_WRITE8(flipscreen_w, 0x00ff)
AM_RANGE(0x110000, 0x1103ff) AM_RAM AM_SHARE("videoregs") AM_RANGE(0x110000, 0x1103ff) AM_RAM AM_SHARE("videoregs")
AM_RANGE(0x120000, 0x1205ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x120000, 0x1205ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x130000, 0x13ffff) AM_RAM_WRITE(acchi_fg_videoram_w) AM_SHARE("fg_videoram") AM_RANGE(0x130000, 0x13ffff) AM_RAM_WRITE(acchi_fg_videoram_w) AM_SHARE("fg_videoram")
AM_RANGE(0x140000, 0x14ffff) AM_RAM_WRITE(acchi_bg_videoram_w) AM_SHARE("bg_videoram") AM_RANGE(0x140000, 0x14ffff) AM_RAM_WRITE(acchi_bg_videoram_w) AM_SHARE("bg_videoram")
AM_RANGE(0x150000, 0x150001) AM_WRITENOP // ? also reads (oki?) AM_RANGE(0x150000, 0x150001) AM_WRITENOP // ? also reads (oki?)
AM_RANGE(0x150010, 0x150011) AM_WRITENOP // ? also reads AM_RANGE(0x150010, 0x150011) AM_WRITENOP // ? also reads
AM_RANGE(0x180000, 0x18ffff) AM_RAM // mainram? AM_RANGE(0x180000, 0x18ffff) AM_RAM // mainram?
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( acchi ) // inputs register in test mode but not in game mode? static INPUT_PORTS_START( acchi ) // inputs register in test mode but not in game mode?
@ -219,7 +219,7 @@ static INPUT_PORTS_START( acchi ) // inputs register in test mode but not in gam
PORT_DIPUNKNOWN_DIPLOC(0x40, 0x00, "DSW1:2") PORT_DIPUNKNOWN_DIPLOC(0x40, 0x00, "DSW1:2")
PORT_DIPUNKNOWN_DIPLOC(0x80, 0x00, "DSW1:1") PORT_DIPUNKNOWN_DIPLOC(0x80, 0x00, "DSW1:1")
PORT_START("DSW2") PORT_START("DSW2")
PORT_DIPUNKNOWN_DIPLOC(0x01, 0x00, "DSW2:8") PORT_DIPUNKNOWN_DIPLOC(0x01, 0x00, "DSW2:8")
PORT_DIPUNKNOWN_DIPLOC(0x02, 0x00, "DSW2:7") PORT_DIPUNKNOWN_DIPLOC(0x02, 0x00, "DSW2:7")
@ -277,7 +277,7 @@ static MACHINE_CONFIG_START( acchi, acchi_state )
MCFG_OKIM6295_ADD("oki2", 16000000/16, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified MCFG_OKIM6295_ADD("oki2", 16000000/16, OKIM6295_PIN7_HIGH) // clock frequency & pin 7 not verified
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.47)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.47)
MACHINE_CONFIG_END MACHINE_CONFIG_END
ROM_START( acchi ) ROM_START( acchi )

View File

@ -204,7 +204,7 @@ uint32_t astinvad_state::screen_update_spcking2(screen_device &screen, bitmap_rg
uint32_t astinvad_state::screen_update_spaceint(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) uint32_t astinvad_state::screen_update_spaceint(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
{ {
uint8_t x,y; uint8_t x,y;
for (offs_t offs = 0; offs < m_videoram.bytes(); offs++) for (offs_t offs = 0; offs < m_videoram.bytes(); offs++)
{ {
uint8_t data = m_videoram[offs]; uint8_t data = m_videoram[offs];

View File

@ -1307,7 +1307,7 @@ static INPUT_PORTS_START(crospuzl)
PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN2") PORT_START("IN2")
PORT_DIPNAME( 0x01, 0x01, "IN2" ) PORT_DIPNAME( 0x01, 0x01, "IN2" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
@ -1334,7 +1334,7 @@ static INPUT_PORTS_START(crospuzl)
PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_START("IN3") PORT_START("IN3")
PORT_DIPNAME( 0x01, 0x01, "IN3" ) PORT_DIPNAME( 0x01, 0x01, "IN3" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) )

View File

@ -9,7 +9,7 @@
Appears to be a down-grade of the nmk16 HW Appears to be a down-grade of the nmk16 HW
TODO: TODO:
- Fix MCU simulation for credit subtractions & add coinage settings (currently set to free play for convenience); - Fix MCU simulation for credit subtractions & add coinage settings (currently set to free play for convenience);
- Understand better the video emulation and convert it to tilemaps; - Understand better the video emulation and convert it to tilemaps;
- Decap + emulate MCU, required if the random number generation is going to be accurate; - Decap + emulate MCU, required if the random number generation is going to be accurate;
@ -563,7 +563,7 @@ static INPUT_PORTS_START( ddealer )
PORT_DIPUNUSED_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:1" ) /* Listed as "Always Off" */ PORT_DIPUNUSED_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:1" ) /* Listed as "Always Off" */
PORT_START("UNK") PORT_START("UNK")
PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // MCU port? PORT_BIT( 0x00ff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // MCU port?
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END INPUT_PORTS_END

View File

@ -2937,7 +2937,7 @@ ROM_END
ROM_START( ghostb3a ) ROM_START( ghostb3a )
ROM_REGION( 0x50000, "maincpu", 0 ) ROM_REGION( 0x50000, "maincpu", 0 )
ROM_LOAD( "dz01-2.1d", 0x08000, 0x08000, CRC(1b16890e) SHA1(eebd253d616b6286937b72cfb64612877f383932) ) ROM_LOAD( "dz01-2.1d", 0x08000, 0x08000, CRC(1b16890e) SHA1(eebd253d616b6286937b72cfb64612877f383932) )
ROM_LOAD( "dz02-.3d", 0x10000, 0x10000, CRC(8e117541) SHA1(7dfa6eabb29f39a615f3e5123bddcc7197ab82d0) ) // == dz02.3d (ghostb3) ROM_LOAD( "dz02-.3d", 0x10000, 0x10000, CRC(8e117541) SHA1(7dfa6eabb29f39a615f3e5123bddcc7197ab82d0) ) // == dz02.3d (ghostb3)
ROM_LOAD( "dz03-.4d", 0x20000, 0x10000, CRC(5606a8f4) SHA1(e46e887f13f648fe2162cb853b3c20fa60e3d215) ) // == dz03.4d (ghostb3) ROM_LOAD( "dz03-.4d", 0x20000, 0x10000, CRC(5606a8f4) SHA1(e46e887f13f648fe2162cb853b3c20fa60e3d215) ) // == dz03.4d (ghostb3)
ROM_LOAD( "dz04-.6d", 0x30000, 0x10000, CRC(490b4525) SHA1(3066b76f8fe99c8f9f1cdf943209883a199a4184) ) ROM_LOAD( "dz04-.6d", 0x30000, 0x10000, CRC(490b4525) SHA1(3066b76f8fe99c8f9f1cdf943209883a199a4184) )

View File

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

View File

@ -1110,7 +1110,7 @@ WRITE8_MEMBER(fidelz80_state::dsc_select_w)
{ {
// d4: speaker out // d4: speaker out
m_dac->write(BIT(~data, 4)); m_dac->write(BIT(~data, 4));
// d0-d3: digit select // d0-d3: digit select
m_led_select = data & 0xf; m_led_select = data & 0xf;
dsc_prepare_display(); dsc_prepare_display();

View File

@ -93,7 +93,7 @@ else on it because when I ripped the entire drive and compressed it, the compres
to upload. So I just ripped the partitions (it had 3) and the size was reasonable. This rip was burned into another drive and to upload. So I just ripped the partitions (it had 3) and the size was reasonable. This rip was burned into another drive and
tested working on the real hardware. It uses the same hardware and bios as the kit version.*/ tested working on the real hardware. It uses the same hardware and bios as the kit version.*/
DISK_REGION( "disks" ) DISK_REGION( "disks" )
DISK_IMAGE( "tokyocop", 0, SHA1(f3b60046da7094743822191473e05ee9cbc1af86) ) DISK_IMAGE( "tokyocop", 0, SHA1(f3b60046da7094743822191473e05ee9cbc1af86) )
ROM_END ROM_END

View File

@ -17,14 +17,14 @@
Main CPU: 68000-12 Main CPU: 68000-12
Video: 056832 / 058143 (GX tilemaps) Video: 056832 / 058143 (GX tilemaps)
Video: 000907 LCD Controller Video: 000907 LCD Controller
WANTED: main PCB and any other PCBs for GI Classic EX, plus any and all WANTED: main PCB and any other PCBs for GI Classic EX, plus any and all
PCBs for other games also believed to be on this h/w: PCBs for other games also believed to be on this h/w:
- GI-Classic (1995) - GI-Classic (1995)
- GI-Classic Special (1996) - GI-Classic Special (1996)
- GI-Classic WINDS (1996) - GI-Classic WINDS (1996)
- GI-Classic WINDS EX (1998) - GI-Classic WINDS EX (1998)
Other "GI" games, list from http://www.konami.jp/am/g1/ Other "GI" games, list from http://www.konami.jp/am/g1/
- GI-LEADING SIRE (1999) - GI-LEADING SIRE (1999)
- GI-LEADING SIRE Ver. 2 (2000) - GI-LEADING SIRE Ver. 2 (2000)
@ -40,7 +40,7 @@
- GI-HORSEPARK GX STD (2009) - GI-HORSEPARK GX STD (2009)
- GI-HORSEPARK GX (2009) - GI-HORSEPARK GX (2009)
- GI-Turf TV (2010) - GI-Turf TV (2010)
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"
@ -68,7 +68,7 @@ public:
required_device<palette_device> m_palette; required_device<palette_device> m_palette;
DECLARE_PALETTE_INIT(giclassic); DECLARE_PALETTE_INIT(giclassic);
INTERRUPT_GEN_MEMBER(giclassic_interrupt); INTERRUPT_GEN_MEMBER(giclassic_interrupt);
virtual void machine_start() override; virtual void machine_start() override;
@ -76,7 +76,7 @@ public:
virtual void video_start() override; virtual void video_start() override;
uint32_t screen_update_giclassic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_giclassic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
K056832_CB_MEMBER(tile_callback); K056832_CB_MEMBER(tile_callback);
DECLARE_WRITE16_MEMBER(control_w); DECLARE_WRITE16_MEMBER(control_w);
DECLARE_READ16_MEMBER(vrom_r); DECLARE_READ16_MEMBER(vrom_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, 3, 0, 1);
m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, 0, 2); m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, 0, 2);
m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, 0, 4); m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, 0, 4);
// m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, 0, 8); // m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, 0, 8);
return 0; return 0;
} }
@ -137,7 +137,7 @@ READ16_MEMBER(giclassic_state::vrom_r)
{ {
return m_k056832->piratesh_rom_r(space, offset + 0x1000); return m_k056832->piratesh_rom_r(space, offset + 0x1000);
} }
return m_k056832->piratesh_rom_r(space, offset); return m_k056832->piratesh_rom_r(space, offset);
} }
@ -145,13 +145,13 @@ static ADDRESS_MAP_START( satellite_main, AS_PROGRAM, 16, giclassic_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0)
AM_RANGE(0x100000, 0x103fff) AM_RAM AM_RANGE(0x100000, 0x103fff) AM_RAM
AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x800000, 0x801fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) AM_RANGE(0x800000, 0x801fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
AM_RANGE(0x900000, 0x90003f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w) AM_RANGE(0x900000, 0x90003f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w)
AM_RANGE(0xb00000, 0xb01fff) AM_READ(vrom_r) AM_RANGE(0xb00000, 0xb01fff) AM_READ(vrom_r)
AM_RANGE(0xc00000, 0xc00001) AM_WRITE(control_w) AM_RANGE(0xc00000, 0xc00001) AM_WRITE(control_w)
AM_RANGE(0xd00000, 0xd0003f) AM_RAM // these must read/write or 26S (LCD controller) fails AM_RANGE(0xd00000, 0xd0003f) AM_RAM // these must read/write or 26S (LCD controller) fails
AM_RANGE(0xe00000, 0xe0001f) AM_DEVWRITE8("k056832", k056832_device, b_w, 0xff00) AM_RANGE(0xe00000, 0xe0001f) AM_DEVWRITE8("k056832", k056832_device, b_w, 0xff00)
AM_RANGE(0xf00000, 0xf00001) AM_NOP AM_WRITENOP // watchdog reset AM_RANGE(0xf00000, 0xf00001) AM_NOP AM_WRITENOP // watchdog reset
ADDRESS_MAP_END ADDRESS_MAP_END
static INPUT_PORTS_START( giclassic ) static INPUT_PORTS_START( giclassic )
@ -192,10 +192,10 @@ public:
uint32_t screen_update_giclassicsvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_giclassicsvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
K056832_CB_MEMBER(tile_callback); K056832_CB_MEMBER(tile_callback);
K055673_CB_MEMBER(sprite_callback); K055673_CB_MEMBER(sprite_callback);
DECLARE_WRITE16_MEMBER(control_w); DECLARE_WRITE16_MEMBER(control_w);
DECLARE_READ16_MEMBER(control_r); DECLARE_READ16_MEMBER(control_r);
private: private:
uint16 m_control; uint16 m_control;
}; };
@ -209,7 +209,7 @@ READ16_MEMBER(giclassicsvr_state::control_r)
{ {
return m_control; return m_control;
} }
INTERRUPT_GEN_MEMBER(giclassicsvr_state::giclassicsvr_interrupt) INTERRUPT_GEN_MEMBER(giclassicsvr_state::giclassicsvr_interrupt)
{ {
//if (m_control & 2) //if (m_control & 2)
@ -235,12 +235,12 @@ K055673_CB_MEMBER(giclassicsvr_state::sprite_callback)
// ..x. .... .... .... - ? // ..x. .... .... .... - ?
*priority_mask = 0; *priority_mask = 0;
// 0 - Sprites over everything // 0 - Sprites over everything
// f0 - // f0 -
// f0 cc - // f0 cc -
// f0 cc aa - // f0 cc aa -
// 1111 0000 // 1111 0000
// 1100 1100 // 1100 1100
// 1010 1010 // 1010 1010
@ -266,13 +266,13 @@ static ADDRESS_MAP_START( server_main, AS_PROGRAM, 16, giclassicsvr_state )
AM_RANGE(0x090000, 0x093fff) AM_RAM AM_RANGE(0x090000, 0x093fff) AM_RAM
AM_RANGE(0x100000, 0x107fff) AM_RAM AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x100000, 0x107fff) AM_RAM AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
AM_RANGE(0x180000, 0x183fff) AM_RAM AM_RANGE(0x180000, 0x183fff) AM_RAM
AM_RANGE(0x280000, 0x281fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) AM_RANGE(0x280000, 0x281fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES
AM_RANGE(0x300060, 0x30006f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES AM_RANGE(0x300060, 0x30006f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES
AM_RANGE(0x308000, 0x30803f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w) AM_RANGE(0x308000, 0x30803f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w)
AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252a", k053252_device, read, write, 0x00ff) // CRTC 1 AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252a", k053252_device, read, write, 0x00ff) // CRTC 1
AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252b", k053252_device, read, write, 0xff00) // CRTC 2 AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252b", k053252_device, read, write, 0xff00) // CRTC 2
AM_RANGE(0x380000, 0x380001) AM_WRITENOP // watchdog reset AM_RANGE(0x380000, 0x380001) AM_WRITENOP // watchdog reset
AM_RANGE(0x398000, 0x398001) AM_READWRITE(control_r, control_w) AM_RANGE(0x398000, 0x398001) AM_READWRITE(control_r, control_w)
AM_RANGE(0x400000, 0x41ffff) AM_RAM AM_RANGE(0x400000, 0x41ffff) AM_RAM
ADDRESS_MAP_END ADDRESS_MAP_END
@ -317,7 +317,7 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( giclassvr, giclassicsvr_state ) static MACHINE_CONFIG_START( giclassvr, giclassicsvr_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // unknown speed MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // unknown speed
MCFG_CPU_PROGRAM_MAP(server_main) MCFG_CPU_PROGRAM_MAP(server_main)
MCFG_CPU_VBLANK_INT_DRIVER("screen", giclassicsvr_state, giclassicsvr_interrupt) MCFG_CPU_VBLANK_INT_DRIVER("screen", giclassicsvr_state, giclassicsvr_interrupt)
@ -338,39 +338,39 @@ static MACHINE_CONFIG_START( giclassvr, giclassicsvr_state )
MCFG_K056832_CB(giclassicsvr_state, tile_callback) MCFG_K056832_CB(giclassicsvr_state, tile_callback)
MCFG_K056832_CONFIG("gfx1", K056832_BPP_4PIRATESH, 0, 0, "none") MCFG_K056832_CONFIG("gfx1", K056832_BPP_4PIRATESH, 0, 0, "none")
MCFG_K056832_PALETTE("palette") MCFG_K056832_PALETTE("palette")
MCFG_DEVICE_ADD("k055673", K055673, 0) MCFG_DEVICE_ADD("k055673", K055673, 0)
MCFG_K055673_CB(giclassicsvr_state, sprite_callback) MCFG_K055673_CB(giclassicsvr_state, sprite_callback)
MCFG_K055673_CONFIG("gfx2", K055673_LAYOUT_PS, -60, 24) MCFG_K055673_CONFIG("gfx2", K055673_LAYOUT_PS, -60, 24)
MCFG_K055673_PALETTE("palette") MCFG_K055673_PALETTE("palette")
MCFG_DEVICE_ADD("k053252a", K053252, XTAL_32MHz/4) MCFG_DEVICE_ADD("k053252a", K053252, XTAL_32MHz/4)
MCFG_K053252_OFFSETS(40, 16) // TODO MCFG_K053252_OFFSETS(40, 16) // TODO
MCFG_DEVICE_ADD("k053252b", K053252, XTAL_32MHz/4) MCFG_DEVICE_ADD("k053252b", K053252, XTAL_32MHz/4)
MCFG_K053252_OFFSETS(40, 16) // TODO MCFG_K053252_OFFSETS(40, 16) // TODO
MACHINE_CONFIG_END MACHINE_CONFIG_END
ROM_START( giclasex ) ROM_START( giclasex )
ROM_REGION( 0x80000, "maincpu", 0 ) /* main program */ ROM_REGION( 0x80000, "maincpu", 0 ) /* main program */
ROM_LOAD16_WORD_SWAP( "gsgu760ae01.12t", 0x000000, 0x080000, CRC(f0f9c118) SHA1(1753d53946bc0703d329e4a09c452713b260da75) ) ROM_LOAD16_WORD_SWAP( "gsgu760ae01.12t", 0x000000, 0x080000, CRC(f0f9c118) SHA1(1753d53946bc0703d329e4a09c452713b260da75) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* tilemaps */ ROM_REGION( 0x100000, "gfx1", 0 ) /* tilemaps */
ROM_LOAD( "gsgu760ae03.14c", 0x000000, 0x080000, CRC(1663d327) SHA1(98c1a9653d38f4918f78b3a11af0c29c658201f5) ) ROM_LOAD( "gsgu760ae03.14c", 0x000000, 0x080000, CRC(1663d327) SHA1(98c1a9653d38f4918f78b3a11af0c29c658201f5) )
ROM_LOAD( "gsgu760ae02.14e", 0x080000, 0x080000, CRC(2b9fe163) SHA1(f60190a9689a70d6c5bb14fb46b7ac2267cf0969) ) ROM_LOAD( "gsgu760ae02.14e", 0x080000, 0x080000, CRC(2b9fe163) SHA1(f60190a9689a70d6c5bb14fb46b7ac2267cf0969) )
ROM_END ROM_END
ROM_START( giclassvr ) ROM_START( giclassvr )
ROM_REGION( 0x80000, "maincpu", 0 ) /* main program */ ROM_REGION( 0x80000, "maincpu", 0 ) /* main program */
ROM_LOAD16_WORD_SWAP( "gsgu_760_fd01.34e.bin", 0x000000, 0x080000, CRC(da89c1d7) SHA1(551d050a9b6e54fbf98e966eb37924b644037893) ) ROM_LOAD16_WORD_SWAP( "gsgu_760_fd01.34e.bin", 0x000000, 0x080000, CRC(da89c1d7) SHA1(551d050a9b6e54fbf98e966eb37924b644037893) )
ROM_REGION( 0x100000, "gfx1", 0 ) /* tilemaps */ ROM_REGION( 0x100000, "gfx1", 0 ) /* tilemaps */
ROM_LOAD( "gsgu_760_ad04.25q", 0x080000, 0x080000, CRC(71a45742) SHA1(fbddd54f5fb236662f7cc7e9b350723bc5404f72) ) ROM_LOAD( "gsgu_760_ad04.25q", 0x080000, 0x080000, CRC(71a45742) SHA1(fbddd54f5fb236662f7cc7e9b350723bc5404f72) )
ROM_LOAD( "gsgu_760_ad05.25r", 0x000000, 0x080000, CRC(44221eec) SHA1(966452e606e828b536ed11cbdd626a2fe3165199) ) ROM_LOAD( "gsgu_760_ad05.25r", 0x000000, 0x080000, CRC(44221eec) SHA1(966452e606e828b536ed11cbdd626a2fe3165199) )
ROM_REGION( 0x100000, "gfx2", 0 ) /* tilemaps */ ROM_REGION( 0x100000, "gfx2", 0 ) /* tilemaps */
ROM_LOAD32_WORD( "gsgu_760_ad02.34j", 0x000000, 0x080000, CRC(6d33c720) SHA1(35da3e1f0133a76480d2078fae89ea87b841ffc7) ) ROM_LOAD32_WORD( "gsgu_760_ad02.34j", 0x000000, 0x080000, CRC(6d33c720) SHA1(35da3e1f0133a76480d2078fae89ea87b841ffc7) )
ROM_LOAD32_WORD( "gsgu_760_ad02.34k", 0x000002, 0x080000, CRC(8057a417) SHA1(82d4a1d84729e9f0a8aff4c219a19601b89caf15) ) ROM_LOAD32_WORD( "gsgu_760_ad02.34k", 0x000002, 0x080000, CRC(8057a417) SHA1(82d4a1d84729e9f0a8aff4c219a19601b89caf15) )
ROM_END ROM_END
GAME( 1998, giclasex, 0, giclassic, giclassic, driver_device, 0, 0, "Konami", "GI-Classic EX (satellite terminal)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND_HW) GAME( 1998, giclasex, 0, giclassic, giclassic, driver_device, 0, 0, "Konami", "GI-Classic EX (satellite terminal)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND_HW)

View File

@ -254,7 +254,7 @@ MACHINE_CONFIG_END
Konami Contra Konami Contra
* PCB label BH002 * PCB label BH002
* Sharp SM511 under epoxy (die label KMS73B, KMS773) * Sharp SM511 under epoxy (die label KMS73B, KMS773)
Contra handheld is titled simply "C" in the USA. Contra handheld is titled simply "C" in the USA.
***************************************************************************/ ***************************************************************************/
@ -649,7 +649,7 @@ MACHINE_CONFIG_END
Nintendo Game & Watch: Boxing (model BX-301) Nintendo Game & Watch: Boxing (model BX-301)
* Sharp SM511 label BX-301 287C (die label KMS73B, KMS744) * Sharp SM511 label BX-301 287C (die label KMS73B, KMS744)
Also known as Punch-Out!! in the USA. Also known as Punch-Out!! in the USA.
***************************************************************************/ ***************************************************************************/

View File

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

View File

@ -202,7 +202,7 @@ public:
/* keycode buffer (used for keypad/arrow key transition) */ /* keycode buffer (used for keypad/arrow key transition) */
int m_keycode_buf[2]; int m_keycode_buf[2];
int m_keycode_buf_index; int m_keycode_buf_index;
int m_cb2_in; int m_cb2_in;
#endif #endif
@ -974,7 +974,7 @@ TIMER_CALLBACK_MEMBER(mac128_state::kbd_clock)
m_via->write_cb1(0); m_via->write_cb1(0);
m_via->write_cb1(1); m_via->write_cb1(1);
if (m_kbd_receive == TRUE) if (m_kbd_receive == TRUE)
{ {
if (i < 8) if (i < 8)

View File

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

View File

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

View File

@ -3,20 +3,20 @@
/*************************************************************************** /***************************************************************************
mtouchxl.cpp: Merit Industries MegaTouch XL mtouchxl.cpp: Merit Industries MegaTouch XL
Hardware includes a base 486 PC with VGA and a customized ISA I/O Hardware includes a base 486 PC with VGA and a customized ISA I/O
card. The I/O card includes audio and an option ROM which patches int 19h card. The I/O card includes audio and an option ROM which patches int 19h
(POST Completed) to instead jump back to the option ROM which loads (POST Completed) to instead jump back to the option ROM which loads
"ROM-DOS", installs drivers for the Microtouch screen, and then boots "ROM-DOS", installs drivers for the Microtouch screen, and then boots
from the CD-ROM drive. from the CD-ROM drive.
Audio is a CS4231 combination CODEC/Mixer also found in Gravis Ultraound MAX Audio is a CS4231 combination CODEC/Mixer also found in Gravis Ultraound MAX
and some SPARCstations. and some SPARCstations.
Some boards use the DS1205 chip for security, others use the DS1991 iButton Some boards use the DS1205 chip for security, others use the DS1991 iButton
Megatouch XL (Software) (* indicated verified dumps of CD + Boot ROM, Megatouch XL (Software) (* indicated verified dumps of CD + Boot ROM,
- means we have it working but would like a redump) - means we have it working but would like a redump)
Megatouch XL (1997) (CD versions: R0, R0A, R0B, R0C, R0D, R1, R2, R3, R3A, R3B, R3C) Megatouch XL (1997) (CD versions: R0, R0A, R0B, R0C, R0D, R1, R2, R3, R3A, R3B, R3C)
Megatouch XL 5000 (1998) (CD versions: R5A, *R5B, R5D, *R5E, R5G, R5H, *R5I) Megatouch XL 5000 (1998) (CD versions: R5A, *R5B, R5D, *R5E, R5G, R5H, *R5I)
Megatouch XL 6000 (1999) (CD versions: *R02, R04, R05, *R07) Megatouch XL 6000 (1999) (CD versions: *R02, R04, R05, *R07)
@ -205,18 +205,18 @@ static MACHINE_CONFIG_START( at486, mtxl_state )
/* internal ram */ /* internal ram */
MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_ADD(RAM_TAG)
MCFG_RAM_DEFAULT_SIZE("32M") // Early XL games had 8 MB RAM, 6000 and later require 32MB MCFG_RAM_DEFAULT_SIZE("32M") // Early XL games had 8 MB RAM, 6000 and later require 32MB
/* bankdev for dxxxx */ /* bankdev for dxxxx */
MCFG_DEVICE_ADD("dbank", ADDRESS_MAP_BANK, 0) MCFG_DEVICE_ADD("dbank", ADDRESS_MAP_BANK, 0)
MCFG_DEVICE_PROGRAM_MAP(dbank_map) MCFG_DEVICE_PROGRAM_MAP(dbank_map)
MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE) MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(32) MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(32)
MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000) MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000)
/* Flash ROM */ /* Flash ROM */
MCFG_AMD_29F040_ADD("flash") MCFG_AMD_29F040_ADD("flash")
/* Security key */ /* Security key */
MCFG_DS1205_ADD("multikey") MCFG_DS1205_ADD("multikey")
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -229,65 +229,65 @@ MACHINE_CONFIG_END
ROM_START( mtouchxl ) ROM_START( mtouchxl )
MOTHERBOARD_ROMS MOTHERBOARD_ROMS
ROM_REGION(0x100000, "ioboard", 0) ROM_REGION(0x100000, "ioboard", 0)
ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) ) ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) )
ROM_REGION(192, "multikey", ROMREGION_ERASE00) ROM_REGION(192, "multikey", ROMREGION_ERASE00)
ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(4ad37efa) SHA1(aa7d0347df61a9fdcc283f362e64e70300eb927f) ) ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(4ad37efa) SHA1(aa7d0347df61a9fdcc283f362e64e70300eb927f) )
DISK_REGION("board1:ide:ide:0:cdrom") DISK_REGION("board1:ide:ide:0:cdrom")
DISK_IMAGE_READONLY("r1", 0, SHA1(874545bfc48eacba4c4887d1c45a40ebc7da456a)) DISK_IMAGE_READONLY("r1", 0, SHA1(874545bfc48eacba4c4887d1c45a40ebc7da456a))
ROM_END ROM_END
ROM_START( mtchxl5k ) ROM_START( mtchxl5k )
MOTHERBOARD_ROMS MOTHERBOARD_ROMS
ROM_REGION(0x100000, "ioboard", 0) ROM_REGION(0x100000, "ioboard", 0)
ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) ) ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) )
ROM_REGION(192, "multikey", ROMREGION_ERASE00) ROM_REGION(192, "multikey", ROMREGION_ERASE00)
ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(4ad37efa) SHA1(aa7d0347df61a9fdcc283f362e64e70300eb927f) ) ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(4ad37efa) SHA1(aa7d0347df61a9fdcc283f362e64e70300eb927f) )
DISK_REGION("board1:ide:ide:0:cdrom") DISK_REGION("board1:ide:ide:0:cdrom")
DISK_IMAGE_READONLY("r5i", 0, SHA1(e776a842b557f402e179862397b2ded5cf926702)) DISK_IMAGE_READONLY("r5i", 0, SHA1(e776a842b557f402e179862397b2ded5cf926702))
ROM_END ROM_END
ROM_START( mtchxl5ko ) ROM_START( mtchxl5ko )
MOTHERBOARD_ROMS MOTHERBOARD_ROMS
ROM_REGION(0x100000, "ioboard", 0) ROM_REGION(0x100000, "ioboard", 0)
ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) ) ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) )
ROM_REGION(192, "multikey", ROMREGION_ERASE00) ROM_REGION(192, "multikey", ROMREGION_ERASE00)
ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(4ad37efa) SHA1(aa7d0347df61a9fdcc283f362e64e70300eb927f) ) ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(4ad37efa) SHA1(aa7d0347df61a9fdcc283f362e64e70300eb927f) )
DISK_REGION("board1:ide:ide:0:cdrom") DISK_REGION("board1:ide:ide:0:cdrom")
DISK_IMAGE_READONLY("r5b", 0, SHA1(37c2562053f0f4ed18c72a8ea04be371a6ac8413)) DISK_IMAGE_READONLY("r5b", 0, SHA1(37c2562053f0f4ed18c72a8ea04be371a6ac8413))
ROM_END ROM_END
ROM_START( mtchxl5ko2 ) ROM_START( mtchxl5ko2 )
MOTHERBOARD_ROMS MOTHERBOARD_ROMS
ROM_REGION(0x100000, "ioboard", 0) ROM_REGION(0x100000, "ioboard", 0)
ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) ) ROM_LOAD( "sa3014-03_u12-r3", 0x000000, 0x100000, CRC(5a14b68a) SHA1(351a3ae14c335ac0b52e6f4976f9819c11a668f9) )
ROM_REGION(192, "multikey", ROMREGION_ERASE00) ROM_REGION(192, "multikey", ROMREGION_ERASE00)
ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(4ad37efa) SHA1(aa7d0347df61a9fdcc283f362e64e70300eb927f) ) ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(4ad37efa) SHA1(aa7d0347df61a9fdcc283f362e64e70300eb927f) )
DISK_REGION("board1:ide:ide:0:cdrom") DISK_REGION("board1:ide:ide:0:cdrom")
DISK_IMAGE_READONLY("r5e", 0, SHA1(a07dc6da346bee999f822a3517ea1d65a68dd4a2)) DISK_IMAGE_READONLY("r5e", 0, SHA1(a07dc6da346bee999f822a3517ea1d65a68dd4a2))
ROM_END ROM_END
ROM_START( mtchxl6k ) ROM_START( mtchxl6k )
MOTHERBOARD_ROMS MOTHERBOARD_ROMS
ROM_REGION(0x100000, "ioboard", 0) ROM_REGION(0x100000, "ioboard", 0)
ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) ) ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) )
ROM_REGION(192, "multikey", 0) ROM_REGION(192, "multikey", 0)
ROM_LOAD( "multikey", 0, 192, BAD_DUMP CRC(a7d118c1) SHA1(c1a08315a2ddaee1fa626a22553b1560b255a59e) ) // hand made ROM_LOAD( "multikey", 0, 192, BAD_DUMP CRC(a7d118c1) SHA1(c1a08315a2ddaee1fa626a22553b1560b255a59e) ) // hand made
DISK_REGION("board1:ide:ide:0:cdrom") DISK_REGION("board1:ide:ide:0:cdrom")
DISK_IMAGE_READONLY("r07", 0, SHA1(95599e181d9249db09464420522180d753857f3b)) DISK_IMAGE_READONLY("r07", 0, SHA1(95599e181d9249db09464420522180d753857f3b))
ROM_END ROM_END
@ -296,11 +296,11 @@ ROM_START( mtchxl6ko )
MOTHERBOARD_ROMS MOTHERBOARD_ROMS
ROM_REGION(0x100000, "ioboard", 0) ROM_REGION(0x100000, "ioboard", 0)
ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) ) ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) )
ROM_REGION(192, "multikey", 0) ROM_REGION(192, "multikey", 0)
ROM_LOAD( "multikey", 0, 192, BAD_DUMP CRC(a7d118c1) SHA1(c1a08315a2ddaee1fa626a22553b1560b255a59e) ) // hand made ROM_LOAD( "multikey", 0, 192, BAD_DUMP CRC(a7d118c1) SHA1(c1a08315a2ddaee1fa626a22553b1560b255a59e) ) // hand made
DISK_REGION("board1:ide:ide:0:cdrom") DISK_REGION("board1:ide:ide:0:cdrom")
DISK_IMAGE_READONLY("r02", 0, SHA1(eaaf26d2b700f16138090de7f372b40b93e8dba9)) DISK_IMAGE_READONLY("r02", 0, SHA1(eaaf26d2b700f16138090de7f372b40b93e8dba9))
ROM_END ROM_END
@ -309,13 +309,13 @@ ROM_START( mtchxlgld )
MOTHERBOARD_ROMS MOTHERBOARD_ROMS
ROM_REGION(0x100000, "ioboard", 0) ROM_REGION(0x100000, "ioboard", 0)
ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) ) ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) )
ROM_REGION(0x8000, "nvram", 0) ROM_REGION(0x8000, "nvram", 0)
ROM_LOAD( "u12-nvram-ds1235", 0x000000, 0x008000, CRC(b3b5379d) SHA1(91b3d8b7eb2df127ba35700317aa1aac14e49bb9) ) ROM_LOAD( "u12-nvram-ds1235", 0x000000, 0x008000, CRC(b3b5379d) SHA1(91b3d8b7eb2df127ba35700317aa1aac14e49bb9) )
ROM_REGION(192, "multikey", ROMREGION_ERASE00) ROM_REGION(192, "multikey", ROMREGION_ERASE00)
ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(b9c6aa26) SHA1(23af5b85e19cde700ac045d4770a22bf5d380076) ) ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(b9c6aa26) SHA1(23af5b85e19cde700ac045d4770a22bf5d380076) )
DISK_REGION("board1:ide:ide:0:cdrom") DISK_REGION("board1:ide:ide:0:cdrom")
DISK_IMAGE_READONLY("r01", 0, SHA1(9946bb14d3f77eadbbc606ca9c79f233e402189b)) DISK_IMAGE_READONLY("r01", 0, SHA1(9946bb14d3f77eadbbc606ca9c79f233e402189b))
@ -325,13 +325,13 @@ ROM_START( mtchxlgldo )
MOTHERBOARD_ROMS MOTHERBOARD_ROMS
ROM_REGION(0x100000, "ioboard", 0) ROM_REGION(0x100000, "ioboard", 0)
ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) ) ROM_LOAD( "sa3014-04_u12-r00.u12", 0x000000, 0x100000, CRC(2a6fbca4) SHA1(186eb052cb9b77ffe6ee4cb50c1b580532fd8f47) )
ROM_REGION(0x8000, "nvram", 0) ROM_REGION(0x8000, "nvram", 0)
ROM_LOAD( "u12-nvram-ds1235", 0x000000, 0x008000, CRC(b3b5379d) SHA1(91b3d8b7eb2df127ba35700317aa1aac14e49bb9) ) ROM_LOAD( "u12-nvram-ds1235", 0x000000, 0x008000, CRC(b3b5379d) SHA1(91b3d8b7eb2df127ba35700317aa1aac14e49bb9) )
ROM_REGION(192, "multikey", ROMREGION_ERASE00) ROM_REGION(192, "multikey", ROMREGION_ERASE00)
ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(b9c6aa26) SHA1(23af5b85e19cde700ac045d4770a22bf5d380076) ) ROM_LOAD( "multikey", 0x000000, 0x0000c0, BAD_DUMP CRC(b9c6aa26) SHA1(23af5b85e19cde700ac045d4770a22bf5d380076) )
DISK_REGION("board1:ide:ide:0:cdrom") DISK_REGION("board1:ide:ide:0:cdrom")
DISK_IMAGE_READONLY("r00", 0, SHA1(635e267f1abea060ce813eb7e78b88d57ea3f951)) DISK_IMAGE_READONLY("r00", 0, SHA1(635e267f1abea060ce813eb7e78b88d57ea3f951))

View File

@ -910,7 +910,7 @@ static INPUT_PORTS_START( outfxies )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1") PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN4 ) /* Under Coin Options, it shows COIN1 through COIN4 */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN4 ) /* Under Coin Options, it shows COIN1 through COIN4 */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) /* When the Coin Mode is set to COMMON, each coin slot can be set to specific values and will be used during game play */ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) /* When the Coin Mode is set to COMMON, each coin slot can be set to specific values and will be used during game play */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -944,7 +944,7 @@ static INPUT_PORTS_START( nbsports )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1") PORT_SERVICE_DIPLOC(0x02, 0x02, "SW1: 1")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN4 ) /* Under Coin Options, it shows COIN1 through COIN4 */ PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN4 ) /* Under Coin Options, it shows COIN1 through COIN4 */
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) /* When the Coin Mode is set to COMMON, each coin slot can be set to specific values and will be used during game play */ PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) /* When the Coin Mode is set to COMMON, each coin slot can be set to specific values and will be used during game play */
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )

View File

@ -72,10 +72,10 @@ WRITE8_MEMBER(novagmcs48_state::presto_control_w)
{ {
// P21: input mux high // P21: input mux high
m_inp_mux = (m_inp_mux & 0xff) | (~data << 7 & 0x100); m_inp_mux = (m_inp_mux & 0xff) | (~data << 7 & 0x100);
// P22,P23: speaker lead 1,2 // P22,P23: speaker lead 1,2
m_dac->write(BIT(data, 2) & BIT(~data, 3)); m_dac->write(BIT(data, 2) & BIT(~data, 3));
// P24-P26: led select // P24-P26: led select
m_led_select = ~data >> 4 & 7; m_led_select = ~data >> 4 & 7;
display_matrix(8, 3, m_led_data, m_led_select); display_matrix(8, 3, m_led_data, m_led_select);

View File

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

View File

@ -4766,7 +4766,7 @@ GAME( 1998, olds103t, olds, pgm, pgm, pgm_state,
GAME( 1999, kov, pgm, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 117)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ // V0008 04/27/99 10:33:33 GAME( 1999, kov, pgm, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 117)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ // V0008 04/27/99 10:33:33
GAME( 1999, kov115, kov, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 115)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ // V0006 02/22/99 11:53:18 GAME( 1999, kov115, kov, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 115)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ // V0006 02/22/99 11:53:18
GAME( 1999, kov100, kov, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 100, Japanese Board)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ // V0002 01/31/99 01:54:16 GAME( 1999, kov100, kov, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 100, Japanese Board)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ // V0002 01/31/99 01:54:16
GAME( 1999, kov100hk, kov, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 100, Hong Kong)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ GAME( 1999, kov100hk, kov, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour / Sangoku Senki (ver. 100, Hong Kong)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */
GAME( 1999, kovplus, pgm, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour Plus / Sangoku Senki Plus (ver. 119, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ GAME( 1999, kovplus, pgm, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour Plus / Sangoku Senki Plus (ver. 119, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */
GAME( 1999, kovplusa, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour Plus / Sangoku Senki Plus (ver. 119, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */ GAME( 1999, kovplusa, kovplus, pgm_arm_type1_sim, sango, pgm_arm_type1_state, kov, ROT0, "IGS", "Knights of Valour Plus / Sangoku Senki Plus (ver. 119, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) /* need internal rom of IGS027A */

View File

@ -1,9 +1,9 @@
// license:BSD-3-Clause // license:BSD-3-Clause
/************************************************************************** /**************************************************************************
Pirate Ship Pirate Ship
PWB(A)354460B PWB(A)354460B
MC68HC00FN16 MC68HC00FN16
054539 - 8-Channel ADPCM sound generator. Clock input 18.432MHz. Clock outputs 18.432/4 & 18.432/8 054539 - 8-Channel ADPCM sound generator. Clock input 18.432MHz. Clock outputs 18.432/4 & 18.432/8
@ -14,17 +14,17 @@
056832 - Tilemap generator 056832 - Tilemap generator
054156 - Tilemap generator 054156 - Tilemap generator
053252 - CRTC 053252 - CRTC
053250 config: 053250 config:
SELC (69) GND SELC (69) GND
SEL1 (83) GND SEL1 (83) GND
SEL0 (82) GND SEL0 (82) GND
MODE (68) GND MODE (68) GND
TODO: Music stops if a coin is inserted. MAME or BTNAB? TODO: Music stops if a coin is inserted. MAME or BTNAB?
**************************************************************************/ **************************************************************************/
#include "emu.h" #include "emu.h"
@ -53,11 +53,11 @@ public:
m_k056832(*this, "k056832"), m_k056832(*this, "k056832"),
m_k055673(*this, "k055673"), m_k055673(*this, "k055673"),
m_k055555(*this, "k055555"), m_k055555(*this, "k055555"),
// m_k053246(*this, "k053246"), // m_k053246(*this, "k053246"),
m_k054539(*this, "k054539"), m_k054539(*this, "k054539"),
m_spriteram(*this,"spriteram") m_spriteram(*this,"spriteram")
{ } { }
required_device<cpu_device> m_maincpu; required_device<cpu_device> m_maincpu;
required_device<k053250ps_device> m_k053250; required_device<k053250ps_device> m_k053250;
@ -66,22 +66,22 @@ public:
required_device<k055673_device> m_k055673; required_device<k055673_device> m_k055673;
required_device<k055555_device> m_k055555; required_device<k055555_device> m_k055555;
required_device<k054539_device> m_k054539; required_device<k054539_device> m_k054539;
// required_device<k053247_device> m_k053246; // required_device<k053247_device> m_k053246;
optional_shared_ptr<uint16_t> m_spriteram; optional_shared_ptr<uint16_t> m_spriteram;
int m_layer_colorbase[6]; int m_layer_colorbase[6];
int m_sprite_colorbase; int m_sprite_colorbase;
int m_lvc_colorbase; int m_lvc_colorbase;
uint8_t m_int_enable; uint8_t m_int_enable;
uint8_t m_int_status; uint8_t m_int_status;
uint8_t m_sound_ctrl; uint8_t m_sound_ctrl;
uint8_t m_sound_nmi_clk; uint8_t m_sound_nmi_clk;
uint16_t m_control; uint16_t m_control;
void update_interrupts(); void update_interrupts();
DECLARE_READ16_MEMBER(K056832_rom_r); DECLARE_READ16_MEMBER(K056832_rom_r);
DECLARE_WRITE16_MEMBER(control1_w); DECLARE_WRITE16_MEMBER(control1_w);
DECLARE_WRITE16_MEMBER(control2_w); DECLARE_WRITE16_MEMBER(control2_w);
@ -93,7 +93,7 @@ public:
DECLARE_WRITE16_MEMBER(k053247_martchmp_word_w); DECLARE_WRITE16_MEMBER(k053247_martchmp_word_w);
DECLARE_CUSTOM_INPUT_MEMBER(helm_r); DECLARE_CUSTOM_INPUT_MEMBER(helm_r);
DECLARE_CUSTOM_INPUT_MEMBER(battery_r); DECLARE_CUSTOM_INPUT_MEMBER(battery_r);
DECLARE_MACHINE_START(piratesh); DECLARE_MACHINE_START(piratesh);
DECLARE_MACHINE_RESET(piratesh); DECLARE_MACHINE_RESET(piratesh);
DECLARE_VIDEO_START(piratesh); DECLARE_VIDEO_START(piratesh);
@ -114,11 +114,11 @@ void piratesh_state::update_interrupts()
/* /*
Priority issues: Priority issues:
1. On title screen, stars should be behind the helm 1. On title screen, stars should be behind the helm
2. The Konami logo is a square transition 2. The Konami logo is a square transition
3. 3.
*/ */
K056832_CB_MEMBER(piratesh_state::piratesh_tile_callback) K056832_CB_MEMBER(piratesh_state::piratesh_tile_callback)
@ -127,9 +127,9 @@ K056832_CB_MEMBER(piratesh_state::piratesh_tile_callback)
// Code // Code
// Color // Color
// Flags // Flags
// if (*color != 0) // if (*color != 0)
// printf("%x %x %x\n", layer, *code, *color >> 2); // printf("%x %x %x\n", layer, *code, *color >> 2);
*color = (m_layer_colorbase[layer] << 4) + ((*color >> 2));// & 0x0f); *color = (m_layer_colorbase[layer] << 4) + ((*color >> 2));// & 0x0f);
} }
@ -143,16 +143,16 @@ K055673_CB_MEMBER(piratesh_state::piratesh_sprite_callback)
// .... .... xxx. .... - Priority? // .... .... xxx. .... - Priority?
// .... ..x. .... .... - ? // .... ..x. .... .... - ?
// ..x. .... .... .... - ? // ..x. .... .... .... - ?
#if 0 #if 0
int layerpri[4]; int layerpri[4];
static const int pris[4] = { K55_PRIINP_0, K55_PRIINP_3, K55_PRIINP_6, K55_PRIINP_7 }; static const int pris[4] = { K55_PRIINP_0, K55_PRIINP_3, K55_PRIINP_6, K55_PRIINP_7 };
for (uint32_t i = 0; i < 4; i++) for (uint32_t i = 0; i < 4; i++)
{ {
layerpri[i] = m_k055555->K055555_read_register(pris[i]); layerpri[i] = m_k055555->K055555_read_register(pris[i]);
} }
// TODO: THIS IS ALL WRONG // TODO: THIS IS ALL WRONG
if (pri <= layerpri[0]) if (pri <= layerpri[0])
*priority_mask = 0; *priority_mask = 0;
@ -165,12 +165,12 @@ K055673_CB_MEMBER(piratesh_state::piratesh_sprite_callback)
#endif #endif
*priority_mask = 0; *priority_mask = 0;
// 0 - Sprites over everything // 0 - Sprites over everything
// f0 - // f0 -
// f0 cc - // f0 cc -
// f0 cc aa - // f0 cc aa -
// 1111 0000 // 1111 0000
// 1100 1100 // 1100 1100
// 1010 1010 // 1010 1010
@ -189,7 +189,7 @@ VIDEO_START_MEMBER(piratesh_state, piratesh)
m_lvc_colorbase = 3; m_lvc_colorbase = 3;
#if 0 #if 0
konamigx_mixer_init(*m_screen, 0); konamigx_mixer_init(*m_screen, 0);
m_k056832->set_layer_offs(0, -2+2-1, 0-1); m_k056832->set_layer_offs(0, -2+2-1, 0-1);
m_k056832->set_layer_offs(1, 0+2, 0); m_k056832->set_layer_offs(1, 0+2, 0);
m_k056832->set_layer_offs(2, 2+2, 0); m_k056832->set_layer_offs(2, 2+2, 0);
@ -202,21 +202,21 @@ uint32_t piratesh_state::screen_update_piratesh(screen_device &screen, bitmap_rg
{ {
bitmap.fill(0, cliprect); bitmap.fill(0, cliprect);
#if 1 #if 1
int layers[4], layerpri[4]; int layers[4], layerpri[4];
static const int pris[4] = { K55_PRIINP_0, K55_PRIINP_3, K55_PRIINP_6, K55_PRIINP_7 }; static const int pris[4] = { K55_PRIINP_0, K55_PRIINP_3, K55_PRIINP_6, K55_PRIINP_7 };
static const int enables[4] = { K55_INP_VRAM_A, K55_INP_VRAM_B, K55_INP_VRAM_C, K55_INP_VRAM_D }; static const int enables[4] = { K55_INP_VRAM_A, K55_INP_VRAM_B, K55_INP_VRAM_C, K55_INP_VRAM_D };
for (uint32_t i = 0; i < 4; i++) for (uint32_t i = 0; i < 4; i++)
{ {
layers[i] = i; layers[i] = i;
layerpri[i] = m_k055555->K055555_read_register(pris[i]); layerpri[i] = m_k055555->K055555_read_register(pris[i]);
} }
konami_sortlayers4(layers, layerpri); konami_sortlayers4(layers, layerpri);
screen.priority().fill(0, cliprect); screen.priority().fill(0, cliprect);
const uint32_t input_enables = m_k055555->K055555_read_register(K55_INPUT_ENABLES); const uint32_t input_enables = m_k055555->K055555_read_register(K55_INPUT_ENABLES);
// TODO: FIX COLORBASES // TODO: FIX COLORBASES
@ -229,10 +229,10 @@ uint32_t piratesh_state::screen_update_piratesh(screen_device &screen, bitmap_rg
m_k056832->tilemap_draw(screen, bitmap, cliprect, layers[i], 0, 1 << i); m_k056832->tilemap_draw(screen, bitmap, cliprect, layers[i], 0, 1 << i);
} }
} }
if (input_enables & K55_INP_SUB2) if (input_enables & K55_INP_SUB2)
m_k055673->k053247_sprites_draw(bitmap, cliprect); m_k055673->k053247_sprites_draw(bitmap, cliprect);
#if 0 #if 0
#define K55_INP_VRAM_A 0x01 #define K55_INP_VRAM_A 0x01
#define K55_INP_VRAM_B 0x02 #define K55_INP_VRAM_B 0x02
@ -243,7 +243,7 @@ uint32_t piratesh_state::screen_update_piratesh(screen_device &screen, bitmap_rg
#define K55_INP_SUB2 0x40 #define K55_INP_SUB2 0x40
#define K55_INP_SUB3 0x80 #define K55_INP_SUB3 0x80
#endif #endif
//055555: 4 to reg 7 (A PRI 0) //055555: 4 to reg 7 (A PRI 0)
//055555: 0 to reg 8 (A PRI 1) //055555: 0 to reg 8 (A PRI 1)
//055555: 0 to reg 9 (A COLPRI) //055555: 0 to reg 9 (A COLPRI)
@ -254,7 +254,7 @@ uint32_t piratesh_state::screen_update_piratesh(screen_device &screen, bitmap_rg
//055555: 18 to reg e (D PRI) //055555: 18 to reg e (D PRI)
//055555: 0 to reg 11 (SUB2 PRI) //055555: 0 to reg 11 (SUB2 PRI)
//055555: 0 to reg 12 (SUB3 PRI) //055555: 0 to reg 12 (SUB3 PRI)
//055555: 0 to reg 17 (A PAL) //055555: 0 to reg 17 (A PAL)
//055555: 2 to reg 18 (B PAL) //055555: 2 to reg 18 (B PAL)
//055555: 4 to reg 19 (C PAL) //055555: 4 to reg 19 (C PAL)
@ -262,18 +262,18 @@ uint32_t piratesh_state::screen_update_piratesh(screen_device &screen, bitmap_rg
//055555: 3 to reg 1d (SUB2 PAL) //055555: 3 to reg 1d (SUB2 PAL)
//055555: 1 to reg 1e (SUB3 PAL) //055555: 1 to reg 1e (SUB3 PAL)
#else #else
// LAYER, FLAGS, PRIORITY // LAYER, FLAGS, PRIORITY
m_k056832->tilemap_draw(screen, bitmap, cliprect, 3, K056832_DRAW_FLAG_MIRROR, 1); m_k056832->tilemap_draw(screen, bitmap, cliprect, 3, K056832_DRAW_FLAG_MIRROR, 1);
m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, K056832_DRAW_FLAG_MIRROR, 2); m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, K056832_DRAW_FLAG_MIRROR, 2);
// TODO: Fix priority // TODO: Fix priority
m_k053250->draw(bitmap, cliprect, 0x20, 0, screen.priority(), 8); m_k053250->draw(bitmap, cliprect, 0x20, 0, screen.priority(), 8);
m_k055673->k053247_sprites_draw(bitmap, cliprect); m_k055673->k053247_sprites_draw(bitmap, cliprect);
m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, K056832_DRAW_FLAG_MIRROR, 4); m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, K056832_DRAW_FLAG_MIRROR, 4);
m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, K056832_DRAW_FLAG_MIRROR, 0); m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, K056832_DRAW_FLAG_MIRROR, 0);
#endif #endif
@ -297,7 +297,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(piratesh_state::piratesh_interrupt)
if (scanline == 240) if (scanline == 240)
{ {
m_k053250->vblank_w(1); m_k053250->vblank_w(1);
if (m_int_enable & 2) if (m_int_enable & 2)
{ {
m_int_status |= 2; m_int_status |= 2;
@ -308,7 +308,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(piratesh_state::piratesh_interrupt)
if (scanline == 0) if (scanline == 0)
{ {
m_k053250->vblank_w(0); m_k053250->vblank_w(0);
if (m_int_enable & 4) if (m_int_enable & 4)
{ {
m_int_status |= 4; m_int_status |= 4;
@ -341,7 +341,7 @@ WRITE16_MEMBER(piratesh_state::control1_w)
WRITE16_MEMBER(piratesh_state::control2_w) WRITE16_MEMBER(piratesh_state::control2_w)
{ {
// .... .... ...x .... - Unknown (always 1?) // .... .... ...x .... - Unknown (always 1?)
// .... .... ..x. .... - Unknown // .... .... ..x. .... - Unknown
// .... .... .x.. .... - Counter out // .... .... .x.. .... - Counter out
// .... .... x... .... - Counter in // .... .... x... .... - Counter in
@ -363,16 +363,16 @@ WRITE16_MEMBER(piratesh_state::control2_w)
WRITE16_MEMBER(piratesh_state::control3_w) WRITE16_MEMBER(piratesh_state::control3_w)
{ {
// .... .... .... ...x - Watchdog? (051550?) // .... .... .... ...x - Watchdog? (051550?)
// .... .... .... ..x. - 056832 ROM bank control // .... .... .... ..x. - 056832 ROM bank control
// .... .... ...x .... - Ticket dispenser enable (active high) // .... .... ...x .... - Ticket dispenser enable (active high)
// .... .... ..x. .... - Hopper enable (active high) // .... .... ..x. .... - Hopper enable (active high)
// .... ...x .... .... - Unknown (always 1?) // .... ...x .... .... - Unknown (always 1?)
if ((data & ~0x0133) || (~data & 0x100)) if ((data & ~0x0133) || (~data & 0x100))
printf("CTRL1 W: %x %x %x\n", offset, data, mem_mask); printf("CTRL1 W: %x %x %x\n", offset, data, mem_mask);
// printf("CTRL 1: %x\n", data & 0x0010); // printf("CTRL 1: %x\n", data & 0x0010);
machine().device<ticket_dispenser_device>("ticket")->motor_w(data & 0x0010 ? 1 : 0); machine().device<ticket_dispenser_device>("ticket")->motor_w(data & 0x0010 ? 1 : 0);
machine().device<ticket_dispenser_device>("hopper")->motor_w(data & 0x0020 ? 1 : 0); machine().device<ticket_dispenser_device>("hopper")->motor_w(data & 0x0020 ? 1 : 0);
@ -423,7 +423,7 @@ WRITE_LINE_MEMBER(piratesh_state::k054539_nmi_gen)
update_interrupts(); update_interrupts();
} }
} }
m_sound_intck = state; m_sound_intck = state;
} }
@ -432,10 +432,10 @@ CUSTOM_INPUT_MEMBER(piratesh_state::helm_r)
// Appears to be a quadrature encoder // Appears to be a quadrature encoder
uint8_t xa, xb; uint8_t xa, xb;
uint16_t dx = ioport("HELM")->read(); uint16_t dx = ioport("HELM")->read();
xa = ((dx + 1) & 7) <= 3; xa = ((dx + 1) & 7) <= 3;
xb = (dx & 7) <= 3; xb = (dx & 7) <= 3;
return (xb << 1) | xa; return (xb << 1) | xa;
} }
@ -443,7 +443,7 @@ CUSTOM_INPUT_MEMBER(piratesh_state::battery_r)
{ {
// .x MB3790 /ALARM1 // .x MB3790 /ALARM1
// x. MB3790 /ALARM2 // x. MB3790 /ALARM2
return 0x3; return 0x3;
} }
@ -571,11 +571,11 @@ MACHINE_RESET_MEMBER(piratesh_state,piratesh)
// soften chorus(chip 0 channel 0-3), boost voice(chip 0 channel 4-7) // soften chorus(chip 0 channel 0-3), boost voice(chip 0 channel 4-7)
for (i=0; i<=7; i++) for (i=0; i<=7; i++)
{ {
// m_k054539->set_gain(i, 0.5); // m_k054539->set_gain(i, 0.5);
} }
// // soften percussions(chip 1 channel 0-7) // // soften percussions(chip 1 channel 0-7)
// for (i=0; i<=7; i++) m_k054539_2->set_gain(i, 0.5); // for (i=0; i<=7; i++) m_k054539_2->set_gain(i, 0.5);
} }
@ -671,8 +671,8 @@ ROM_START( piratesh )
ROM_LOAD( "360ua-a06.15t", 0x000000, 0x80000, CRC(6816a493) SHA1(4fc4cfbc164d84bbf8d75ccd78c9f40f3273d852) ) ROM_LOAD( "360ua-a06.15t", 0x000000, 0x80000, CRC(6816a493) SHA1(4fc4cfbc164d84bbf8d75ccd78c9f40f3273d852) )
ROM_LOAD( "360ua-a07.17t", 0x080000, 0x80000, CRC(af7127c5) SHA1(b525f3c6b831e3354eba46016d414bedcb3ae8dc) ) ROM_LOAD( "360ua-a07.17t", 0x080000, 0x80000, CRC(af7127c5) SHA1(b525f3c6b831e3354eba46016d414bedcb3ae8dc) )
// ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error // ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
// ROM_LOAD( "piratesh.nv", 0x0000, 0x080, CRC(28df2269) SHA1(3f071c97662745a199f96964e2e79f795bd5a391) ) // ROM_LOAD( "piratesh.nv", 0x0000, 0x080, CRC(28df2269) SHA1(3f071c97662745a199f96964e2e79f795bd5a391) )
ROM_END ROM_END
/* ROM parent machine inp init */ /* ROM parent machine inp init */

View File

@ -134,7 +134,7 @@ ROM_START( unkm1 ) // 1992.01.31 string
ROM_LOAD( "epr-14429.ic104", 0x00000, 0x20000, CRC(1ff8262d) SHA1(fb90bd877b2dc65eb3e5495d6e21dee1f871fb44) ) ROM_LOAD( "epr-14429.ic104", 0x00000, 0x20000, CRC(1ff8262d) SHA1(fb90bd877b2dc65eb3e5495d6e21dee1f871fb44) )
// ROM_REGION( 0x8000, "m1comm", 0 ) // not present? // ROM_REGION( 0x8000, "m1comm", 0 ) // not present?
ROM_REGION( 0x100, "plds", 0 ) ROM_REGION( 0x100, "plds", 0 )
ROM_LOAD( "315-5472-01.ic22", 0x000, 0x0eb, CRC(828ee6e2) SHA1(f32dd0f6297cc8bd3049be4bca502c0f8ec738cf) ) ROM_LOAD( "315-5472-01.ic22", 0x000, 0x0eb, CRC(828ee6e2) SHA1(f32dd0f6297cc8bd3049be4bca502c0f8ec738cf) )
// dumps of the X-Board part, and the LINK PCB are missing. // dumps of the X-Board part, and the LINK PCB are missing.

View File

@ -164,7 +164,7 @@ On top copper layer:
On bottom copper layer: On bottom copper layer:
"171-5200" "171-5200"
On a sticker: On a sticker:
"REV C" "REV C"
On a sticker: On a sticker:
@ -184,7 +184,7 @@ All ICs have a date code of either 1983 or 1984.
IC6 - SN74LS244N IC6 - SN74LS244N
IC7 - SN73LS244N IC7 - SN73LS244N
IC8 - Toshiba TC5517APL (backed by a super capacitor) IC8 - Toshiba TC5517APL (backed by a super capacitor)
IC9 - NEC D8255AC-2 IC9 - NEC D8255AC-2
IC10 - 28-pin socket (silkscreen is "27128") for "EPR-6450D" (Fujitsu MB27128-30) IC10 - 28-pin socket (silkscreen is "27128") for "EPR-6450D" (Fujitsu MB27128-30)
IC11 - 28-pin socket (silkscreen is "27128") for "EPR-6504D" (Fujitsu MB27128-30) IC11 - 28-pin socket (silkscreen is "27128") for "EPR-6504D" (Fujitsu MB27128-30)
IC12 - Toshiba TC4053BP IC12 - Toshiba TC4053BP
@ -206,7 +206,7 @@ IC27 - Motorola NE592N
IC28 - Motorola NE592N IC28 - Motorola NE592N
IC29 - NEC 7808 IC29 - NEC 7808
PC1 - GI B 5102 321J "TLP521-1" PC1 - GI B 5102 321J "TLP521-1"
PC2 - GI D 5102 423J PC2 - GI D 5102 423J
PC3 - GI D 5102 423J PC3 - GI D 5102 423J
PC4 - GI D 5102 423J PC4 - GI D 5102 423J
@ -251,18 +251,18 @@ Source code and text in EPR-6450D
POWER DOWN CHANGE POWER DOWN CHANGE
TSEL: TSEL:
LD A,(BETFLG) ; READ CREDIT LD A,(BETFLG) ; READ CREDIT
RRCA ; CREDIT IN ? RRCA ; CREDIT IN ?
JR C,BETSELZ JR C,BETSELZ
LD A,(SELOLD) LD A,(SELOLD)
OR A OR A
LD C,A LD C,A
CALL NZ,OLDCLCG CALL NZ,OLDCLCG
LD HL,0 LD HL,0
LD (SELOLD),HL LD (SELOLD),HL
LD (DBLSWCT),HL LD (DBLSWCT),HL
LD (LMPCNT),1 LD (LMPCNT),1
================================================================================ ================================================================================
End End

View File

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

View File

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

View File

@ -6,7 +6,7 @@
Driver by Ville Linde Driver by Ville Linde
Software notes (as per Police 911) Software notes (as per Police 911)
-- VL - 01.06.2011 -- VL - 01.06.2011
@ -73,8 +73,8 @@
0x00009d00: LoadProgram(): R3 = ptr to filename 0x00009d00: LoadProgram(): R3 = ptr to filename
TODO: TODO:
- needs a proper way to dump security dongles, anything but p9112 has placeholder ROM for ds2430. - needs a proper way to dump security dongles, anything but p9112 has placeholder ROM for ds2430.
Game status: Game status:
ppp2nd POST: "DIP SWITCH ERROR", "NO SECURITY ERROR" ppp2nd POST: "DIP SWITCH ERROR", "NO SECURITY ERROR"
@ -1809,7 +1809,7 @@ READ64_MEMBER(viper_state::input_r)
#endif #endif
READ8_MEMBER(viper_state::input_r) READ8_MEMBER(viper_state::input_r)
{ {
return (m_io_ports[offset & 7])->read(); return (m_io_ports[offset & 7])->read();
} }
@ -2068,7 +2068,7 @@ WRITE64_MEMBER(viper_state::unk_serial_w)
/*****************************************************************************/ /*****************************************************************************/
static ADDRESS_MAP_START(viper_map, AS_PROGRAM, 64, viper_state ) static ADDRESS_MAP_START(viper_map, AS_PROGRAM, 64, viper_state )
// ADDRESS_MAP_UNMAP_HIGH // ADDRESS_MAP_UNMAP_HIGH
AM_RANGE(0x00000000, 0x00ffffff) AM_MIRROR(0x1000000) AM_RAM AM_SHARE("workram") AM_RANGE(0x00000000, 0x00ffffff) AM_MIRROR(0x1000000) AM_RAM AM_SHARE("workram")
AM_RANGE(0x80000000, 0x800fffff) AM_READWRITE32(epic_r, epic_w,0xffffffffffffffffU) AM_RANGE(0x80000000, 0x800fffff) AM_READWRITE32(epic_r, epic_w,0xffffffffffffffffU)
AM_RANGE(0x82000000, 0x83ffffff) AM_READWRITE(voodoo3_r, voodoo3_w) AM_RANGE(0x82000000, 0x83ffffff) AM_READWRITE(voodoo3_r, voodoo3_w)
@ -2079,7 +2079,7 @@ static ADDRESS_MAP_START(viper_map, AS_PROGRAM, 64, viper_state )
// 0xff000000, 0xff000fff - cf_card_data_r/w (installed in DRIVER_INIT(vipercf)) // 0xff000000, 0xff000fff - cf_card_data_r/w (installed in DRIVER_INIT(vipercf))
// 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf)) // 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf))
// 0xff300000, 0xff300fff - ata_r/w (installed in DRIVER_INIT(viperhd)) // 0xff300000, 0xff300fff - ata_r/w (installed in DRIVER_INIT(viperhd))
// AM_RANGE(0xff400xxx, 0xff400xxx) ppp2nd sense device // AM_RANGE(0xff400xxx, 0xff400xxx) ppp2nd sense device
AM_RANGE(0xffe00000, 0xffe00007) AM_READ(e00000_r) AM_RANGE(0xffe00000, 0xffe00007) AM_READ(e00000_r)
AM_RANGE(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w) AM_RANGE(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w)
AM_RANGE(0xffe08000, 0xffe08007) AM_NOP AM_RANGE(0xffe08000, 0xffe08007) AM_NOP
@ -2108,10 +2108,10 @@ CUSTOM_INPUT_MEMBER(viper_state::ds2430_unk_r)
static INPUT_PORTS_START( viper ) static INPUT_PORTS_START( viper )
PORT_START("IN0") PORT_START("IN0")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN1") PORT_START("IN1")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN2") PORT_START("IN2")
PORT_DIPNAME( 0x01, 0x01, "DIP4" ) PORT_DIPLOCATION("SW:4") PORT_DIPNAME( 0x01, 0x01, "DIP4" ) PORT_DIPLOCATION("SW:4")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
@ -2129,7 +2129,7 @@ static INPUT_PORTS_START( viper )
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, viper_state, ds2430_unk_r, nullptr) PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, viper_state, ds2430_unk_r, nullptr)
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // if this bit is 0, loads a disk copier instead PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // if this bit is 0, loads a disk copier instead
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("IN3") PORT_START("IN3")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) /* Test Button */ PORT_SERVICE_NO_TOGGLE( 0x02, IP_ACTIVE_LOW ) /* Test Button */
@ -2145,7 +2145,7 @@ static INPUT_PORTS_START( viper )
PORT_DIPNAME( 0x80, 0x80, "3-3" ) PORT_DIPNAME( 0x80, 0x80, "3-3" )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("IN4") PORT_START("IN4")
PORT_DIPNAME( 0x01, 0x01, "4" ) PORT_DIPNAME( 0x01, 0x01, "4" )
PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
@ -2172,22 +2172,22 @@ static INPUT_PORTS_START( viper )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_START("IN5") PORT_START("IN5")
PORT_BIT(0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT(0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
PORT_START("IN6") PORT_START("IN6")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_START("IN7") PORT_START("IN7")
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
INPUT_PORTS_END INPUT_PORTS_END
INPUT_PORTS_START( ppp2nd ) INPUT_PORTS_START( ppp2nd )
PORT_INCLUDE( viper ) PORT_INCLUDE( viper )
PORT_MODIFY("IN2") PORT_MODIFY("IN2")
PORT_DIPNAME( 0x01, 0x01, "DIP4" ) PORT_DIPLOCATION("SW:4") PORT_DIPNAME( 0x01, 0x01, "DIP4" ) PORT_DIPLOCATION("SW:4")
PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
@ -2201,14 +2201,14 @@ INPUT_PORTS_START( ppp2nd )
PORT_DIPNAME( 0x08, 0x08, "DIP1" ) PORT_DIPLOCATION("SW:1") PORT_DIPNAME( 0x08, 0x08, "DIP1" ) PORT_DIPLOCATION("SW:1")
PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_MODIFY("IN3") PORT_MODIFY("IN3")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("OK Button") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("OK Button")
PORT_MODIFY("IN4") PORT_MODIFY("IN4")
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Left Button") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Left Button")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Right Button") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Right Button")
PORT_MODIFY("IN5") PORT_MODIFY("IN5")
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // another OK button PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // another OK button
INPUT_PORTS_END INPUT_PORTS_END
@ -2218,41 +2218,41 @@ INPUT_PORTS_START( thrild2 )
PORT_MODIFY("IN3") PORT_MODIFY("IN3")
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Shift Down") PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Shift Down")
PORT_MODIFY("IN4") PORT_MODIFY("IN4")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Shift Up") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Shift Up")
// TODO: analog channels // TODO: analog channels
INPUT_PORTS_END INPUT_PORTS_END
INPUT_PORTS_START( gticlub2 ) INPUT_PORTS_START( gticlub2 )
PORT_INCLUDE( thrild2 ) PORT_INCLUDE( thrild2 )
// TODO: specific analog channel for hand brake // TODO: specific analog channel for hand brake
INPUT_PORTS_END INPUT_PORTS_END
INPUT_PORTS_START( boxingm ) INPUT_PORTS_START( boxingm )
PORT_INCLUDE( viper ) PORT_INCLUDE( viper )
PORT_MODIFY("IN5") PORT_MODIFY("IN5")
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // memory card check for boxingm (actually comms enable?) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // memory card check for boxingm (actually comms enable?)
INPUT_PORTS_END INPUT_PORTS_END
INPUT_PORTS_START( p911 ) INPUT_PORTS_START( p911 )
PORT_INCLUDE( viper ) PORT_INCLUDE( viper )
PORT_MODIFY("IN5") PORT_MODIFY("IN5")
// one of these is P2 SHT2 (checks and fails serial if pressed) // one of these is P2 SHT2 (checks and fails serial if pressed)
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
INPUT_PORTS_END INPUT_PORTS_END
INPUT_PORTS_START( tsurugi ) INPUT_PORTS_START( tsurugi )
PORT_INCLUDE( viper ) PORT_INCLUDE( viper )
PORT_MODIFY("IN4") PORT_MODIFY("IN4")
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Shot Button") PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Shot Button")
PORT_MODIFY("IN5") PORT_MODIFY("IN5")
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Foot Pedal") PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Foot Pedal")
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // deluxe ID? if off tries to check UART & "lampo"/bleeder at POST PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) // deluxe ID? if off tries to check UART & "lampo"/bleeder at POST
@ -2263,7 +2263,7 @@ INPUT_PORTS_END
INTERRUPT_GEN_MEMBER(viper_state::viper_vblank) INTERRUPT_GEN_MEMBER(viper_state::viper_vblank)
{ {
mpc8240_interrupt(MPC8240_IRQ0); mpc8240_interrupt(MPC8240_IRQ0);
//mpc8240_interrupt(MPC8240_IRQ3); //mpc8240_interrupt(MPC8240_IRQ3);
} }
@ -2298,7 +2298,7 @@ void viper_state::machine_reset()
// Viper expects these settings or the BIOS fails // Viper expects these settings or the BIOS fails
identify_device[51] = 0x0200; /* 51: PIO data transfer cycle timing mode */ identify_device[51] = 0x0200; /* 51: PIO data transfer cycle timing mode */
identify_device[67] = 0x00f0; /* 67: minimum PIO transfer cycle time without flow control */ identify_device[67] = 0x00f0; /* 67: minimum PIO transfer cycle time without flow control */
m_ds2430_unk_status = 1; m_ds2430_unk_status = 1;
} }

View File

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

View File

@ -529,7 +529,7 @@ ROM_END
ROM_START( policet2 ) ROM_START( policet2 )
ROM_REGION( 0x40000, "bios", 0 ) ROM_REGION( 0x40000, "bios", 0 )
ROM_LOAD( "pm29f002t.u22", 0x000000, 0x040000, CRC(eb32ace6) SHA1(1b1eeb07e20822c690d05959077c7ddcc22d1708) ) ROM_LOAD( "pm29f002t.u22", 0x000000, 0x040000, CRC(eb32ace6) SHA1(1b1eeb07e20822c690d05959077c7ddcc22d1708) )
ROM_REGION( 0x8000, "video_bios", 0 ) // incorrect, need GeForce 2MX BIOS for 32MB card ROM_REGION( 0x8000, "video_bios", 0 ) // incorrect, need GeForce 2MX BIOS for 32MB card
ROM_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, CRC(1eebde64) BAD_DUMP SHA1(67896a854d43a575037613b3506aea6dae5d6a19) ) ROM_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, CRC(1eebde64) BAD_DUMP SHA1(67896a854d43a575037613b3506aea6dae5d6a19) )

View File

@ -5,93 +5,93 @@
Play Mechanix / Right Hand Tech "VP50", "VP100" and "VP101" platforms Play Mechanix / Right Hand Tech "VP50", "VP100" and "VP101" platforms
(PCBs are also marked "Raw Thrills" but all RT games appear to be on PC hardware) (PCBs are also marked "Raw Thrills" but all RT games appear to be on PC hardware)
Boards: Boards:
- VP101: Johnny Nero. The original (?) - VP101: Johnny Nero. The original (?)
- VP100: Special Forces Elite Training. A not-quite-complete VP101; missing ATA DMA. - VP100: Special Forces Elite Training. A not-quite-complete VP101; missing ATA DMA.
- VP50 : Zoofari. Cost-reduced (?) with TX4925 SoC, much less complex FPGA. - VP50 : Zoofari. Cost-reduced (?) with TX4925 SoC, much less complex FPGA.
Preliminary driver by R. Belmont Preliminary driver by R. Belmont
TODO: TODO:
- All games: that formidable sounding 3D accelerator mentioned below. - All games: that formidable sounding 3D accelerator mentioned below.
- All games: the sound system (the POST plays some example sounds) - All games: the sound system (the POST plays some example sounds)
- Zoofari's framebuffer is 256 color but I don't know where the CLUT comes from. - Zoofari's framebuffer is 256 color but I don't know where the CLUT comes from.
To make the games go into a POST test, hold down START 1 while resetting. To make the games go into a POST test, hold down START 1 while resetting.
VP101 Features from http://web.archive.org/web/20041016000248/http://www.righthandtech.com/projects.htm VP101 Features from http://web.archive.org/web/20041016000248/http://www.righthandtech.com/projects.htm
MIPS VR5500 CPU
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
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
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 MIPS VR5500 CPU
Standard ATA/IDE interface The VR5500 operates at either at 300 or 400 MHz with 120MHz external bus
Ultra DMA 33/66/100/133 to the DDR SDRAM memory 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
Video DAC Unified Memory Architecture - DDR SDRAM bank
RGB values at 8 bits per color Arbitrating DDR SDRAM Memory controller
RGB voltage level adjustable from 0-1.0 Vp-p to 0-4.0 Vp-p 128Mbyte to 512Mbyte memory capacity
120/240 MHz @ 64 bits - ~2GBytes/sec bandwidth
Flash Memory 3D Render Engine
Minimum of 1MB of Flash memory expandable to 4 MB True color and 8-bit palette lookup textures
Updateable Boot ROM 8K byte texel cache for accelerated source texel selection.
Updateable FPGA configuration 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
Battery Backed Up RAM Game I/O
32K bytes of non-volatile memory for static game configuration and high score table Standard JAMMA I/O interface, including player 3 and 4 connectors
Non-volatile Real-Time clock 4 channel general purpose A to D interface (steering wheel and control pedals)
100baseT Ethernet interface for debugging and/or inter game communications
Small Footprint Forced-feedback Wheel Driver Interface for driving games
Small outline design for easy kit retrofitting of existing cabinet High-current drivers for lamps or solenoids
12.2 in x 14.96 in Gun interface I/O tightly coupled to the CRT controller
Security Interface Sound System
Security processor provides for a means to unlock the FPGA functions AC97 codec for low cost of implementation and development
Enabled for software protection against piracy and unwarranted game updates 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
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
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
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. Full populated and tested board is less than $500, including IDE hard disk.
Small outline design for easy kit retrofitting of existing cabinets. Small outline design for easy kit retrofitting of existing cabinets.
@ -118,25 +118,25 @@ public:
virtual void machine_reset() override; virtual void machine_reset() override;
virtual void machine_start() override; virtual void machine_start() override;
DECLARE_READ32_MEMBER(tty_ready_r); DECLARE_READ32_MEMBER(tty_ready_r);
DECLARE_WRITE32_MEMBER(tty_w); DECLARE_WRITE32_MEMBER(tty_w);
DECLARE_READ32_MEMBER(test_r) { return 0xffffffff; } DECLARE_READ32_MEMBER(test_r) { return 0xffffffff; }
DECLARE_READ32_MEMBER(pic_r); DECLARE_READ32_MEMBER(pic_r);
DECLARE_WRITE32_MEMBER(pic_w); DECLARE_WRITE32_MEMBER(pic_w);
DECLARE_WRITE32_MEMBER(dmaaddr_w); DECLARE_WRITE32_MEMBER(dmaaddr_w);
DECLARE_WRITE_LINE_MEMBER(dmarq_w); DECLARE_WRITE_LINE_MEMBER(dmarq_w);
DECLARE_READ32_MEMBER(tty_4925_rdy_r) { return 0x2; } DECLARE_READ32_MEMBER(tty_4925_rdy_r) { return 0x2; }
DECLARE_READ32_MEMBER(spi_status_r) { return 0x8007; } DECLARE_READ32_MEMBER(spi_status_r) { return 0x8007; }
DECLARE_READ32_MEMBER(spi_r); DECLARE_READ32_MEMBER(spi_r);
DECLARE_WRITE32_MEMBER(spi_w); DECLARE_WRITE32_MEMBER(spi_w);
uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
uint32_t vp50_screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t vp50_screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
@ -166,9 +166,9 @@ void vp10x_state::machine_reset()
void vp10x_state::machine_start() void vp10x_state::machine_start()
{ {
m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS); m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS);
// m_maincpu->add_fastram(0x00000000, 0x03ffffff, false, m_mainram); // m_maincpu->add_fastram(0x00000000, 0x03ffffff, false, m_mainram);
} }
WRITE32_MEMBER(vp10x_state::dmaaddr_w) WRITE32_MEMBER(vp10x_state::dmaaddr_w)
{ {
m_dma_ptr = (data & 0x07ffffff); m_dma_ptr = (data & 0x07ffffff);
@ -179,18 +179,18 @@ WRITE_LINE_MEMBER(vp10x_state::dmarq_w)
if (state != m_dmarq_state) if (state != m_dmarq_state)
{ {
m_dmarq_state = state; m_dmarq_state = state;
if (state) if (state)
{ {
uint16_t *RAMbase = (uint16_t *)&m_mainram[0]; uint16_t *RAMbase = (uint16_t *)&m_mainram[0];
uint16_t *RAM = &RAMbase[m_dma_ptr>>1]; uint16_t *RAM = &RAMbase[m_dma_ptr>>1];
m_ata->write_dmack(ASSERT_LINE); m_ata->write_dmack(ASSERT_LINE);
while (m_dmarq_state) while (m_dmarq_state)
{ {
*RAM++ = m_ata->read_dma(); *RAM++ = m_ata->read_dma();
m_dma_ptr += 2; // pointer must advance m_dma_ptr += 2; // pointer must advance
} }
m_ata->write_dmack(CLEAR_LINE); m_ata->write_dmack(CLEAR_LINE);
@ -198,7 +198,7 @@ WRITE_LINE_MEMBER(vp10x_state::dmarq_w)
} }
} }
READ32_MEMBER(vp10x_state::pic_r) READ32_MEMBER(vp10x_state::pic_r)
{ {
static const uint8_t vers[5] = { 0x00, 0x01, 0x00, 0x00, 0x00 }; static const uint8_t vers[5] = { 0x00, 0x01, 0x00, 0x00, 0x00 };
static const uint8_t serial[10] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a }; static const uint8_t serial[10] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a };
@ -208,15 +208,15 @@ READ32_MEMBER(vp10x_state::pic_r)
{ {
case 0x20: case 0x20:
return vers[pic_state++]; return vers[pic_state++];
case 0x21: case 0x21:
case 0x22: case 0x22:
return serial[pic_state++]; return serial[pic_state++];
case 0x23: // this is the same for jnero and specfrce. great security! case 0x23: // this is the same for jnero and specfrce. great security!
return magic[pic_state++]; return magic[pic_state++];
} }
return 0; return 0;
} }
@ -231,14 +231,14 @@ WRITE32_MEMBER(vp10x_state::pic_w)
pic_state = 0; pic_state = 0;
} }
READ32_MEMBER(vp10x_state::spi_r) READ32_MEMBER(vp10x_state::spi_r)
{ {
return 0xffffffff; return 0xffffffff;
} }
WRITE32_MEMBER(vp10x_state::spi_w) WRITE32_MEMBER(vp10x_state::spi_w)
{ {
// printf("%d to SPI select\n", data); // printf("%d to SPI select\n", data);
m_spi_select = data; m_spi_select = data;
} }
@ -288,7 +288,7 @@ uint32_t vp10x_state::vp50_screen_update(screen_device &screen, bitmap_rgb32 &bi
r = pal_ram[video_ram[x]] >> 11; r = pal_ram[video_ram[x]] >> 11;
g = (pal_ram[video_ram[x]] >> 5) & 0x3f; g = (pal_ram[video_ram[x]] >> 5) & 0x3f;
b = pal_ram[video_ram[x]] & 0x1f; b = pal_ram[video_ram[x]] & 0x1f;
*line++ = (r << 19) | (g << 10) | (b << 3); *line++ = (r << 19) | (g << 10) | (b << 3);
} }
} }
@ -304,7 +304,7 @@ WRITE32_MEMBER(vp10x_state::tty_w) // set breakpoint at bfc01430 to catch when
{ {
// uncomment to see startup messages - it says "RAM OK" and "EPI RSS Ver 4.5.1" followed by "<RSS active>" and then lots of dots // uncomment to see startup messages - it says "RAM OK" and "EPI RSS Ver 4.5.1" followed by "<RSS active>" and then lots of dots
// Special Forces also says "<inited tv_cap> = 00000032" // Special Forces also says "<inited tv_cap> = 00000032"
// printf("%c", data); // printf("%c", data);
} }
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, vp10x_state ) static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, vp10x_state )
@ -315,13 +315,13 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, vp10x_state )
AM_RANGE(0x1c400000, 0x1c400003) AM_WRITE(tty_w) // boot ROM code uses this one AM_RANGE(0x1c400000, 0x1c400003) AM_WRITE(tty_w) // boot ROM code uses this one
AM_RANGE(0x1c400014, 0x1c400017) AM_READ(tty_ready_r) AM_RANGE(0x1c400014, 0x1c400017) AM_READ(tty_ready_r)
AM_RANGE(0x1ca0000c, 0x1ca0000f) AM_READ_PORT("IN0") AM_RANGE(0x1ca0000c, 0x1ca0000f) AM_READ_PORT("IN0")
AM_RANGE(0x1ca00010, 0x1ca00013) AM_READ(test_r) // bits here cause various test mode stuff AM_RANGE(0x1ca00010, 0x1ca00013) AM_READ(test_r) // bits here cause various test mode stuff
AM_RANGE(0x1cf00000, 0x1cf00003) AM_NOP AM_READNOP AM_RANGE(0x1cf00000, 0x1cf00003) AM_NOP AM_READNOP
AM_RANGE(0x1d000030, 0x1d000033) AM_WRITE(dmaaddr_w) // ATA DMA destination address AM_RANGE(0x1d000030, 0x1d000033) AM_WRITE(dmaaddr_w) // ATA DMA destination address
AM_RANGE(0x1d000040, 0x1d00005f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff) AM_RANGE(0x1d000040, 0x1d00005f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff)
AM_RANGE(0x1d000060, 0x1d00007f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0x0000ffff) AM_RANGE(0x1d000060, 0x1d00007f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0x0000ffff)
AM_RANGE(0x1f200000, 0x1f200003) AM_READWRITE(pic_r, pic_w) AM_RANGE(0x1f200000, 0x1f200003) AM_READWRITE(pic_r, pic_w)
AM_RANGE(0x1f807000, 0x1f807fff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x1f807000, 0x1f807fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0) AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0)
ADDRESS_MAP_END ADDRESS_MAP_END
@ -329,10 +329,10 @@ static ADDRESS_MAP_START( vp50_map, AS_PROGRAM, 32, vp10x_state )
AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("mainram") AM_RANGE(0x00000000, 0x03ffffff) AM_RAM AM_SHARE("mainram")
AM_RANGE(0x1f000010, 0x1f00001f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff) AM_RANGE(0x1f000010, 0x1f00001f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff)
AM_RANGE(0x1f000020, 0x1f00002f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff) AM_RANGE(0x1f000020, 0x1f00002f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff)
AM_RANGE(0x1f400000, 0x1f400003) AM_NOP // FPGA bitstream download? AM_RANGE(0x1f400000, 0x1f400003) AM_NOP // FPGA bitstream download?
AM_RANGE(0x1f400800, 0x1f400bff) AM_RAM AM_SHARE("nvram") AM_RANGE(0x1f400800, 0x1f400bff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0) AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0)
// TX4925 peripherals // TX4925 peripherals
AM_RANGE(0xff1ff40c, 0xff1ff40f) AM_READ(tty_4925_rdy_r) AM_RANGE(0xff1ff40c, 0xff1ff40f) AM_READ(tty_4925_rdy_r)
AM_RANGE(0xff1ff41c, 0xff1ff41f) AM_WRITE(tty_w) AM_RANGE(0xff1ff41c, 0xff1ff41f) AM_WRITE(tty_w)
@ -347,7 +347,7 @@ static INPUT_PORTS_START( vp101 )
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0xfffffff0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0xfffffff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
INPUT_PORTS_END INPUT_PORTS_END
@ -357,7 +357,7 @@ static INPUT_PORTS_START( vp50 )
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START1 )
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_COIN2 )
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 )
PORT_BIT( 0xfffffff0, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_BIT( 0xfffffff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
INPUT_PORTS_END INPUT_PORTS_END
@ -373,10 +373,10 @@ static MACHINE_CONFIG_START( vp101, vp10x_state )
MCFG_SCREEN_UPDATE_DRIVER(vp10x_state, screen_update) MCFG_SCREEN_UPDATE_DRIVER(vp10x_state, screen_update)
MCFG_SCREEN_SIZE(320, 240) MCFG_SCREEN_SIZE(320, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
MCFG_ATA_INTERFACE_ADD("ata", ata_devices, "hdd", nullptr, false) MCFG_ATA_INTERFACE_ADD("ata", ata_devices, "hdd", nullptr, false)
MCFG_ATA_INTERFACE_DMARQ_HANDLER(WRITELINE(vp10x_state, dmarq_w)) MCFG_ATA_INTERFACE_DMARQ_HANDLER(WRITELINE(vp10x_state, dmarq_w))
MCFG_NVRAM_ADD_0FILL("nvram") MCFG_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -392,9 +392,9 @@ static MACHINE_CONFIG_START( vp50, vp10x_state )
MCFG_SCREEN_UPDATE_DRIVER(vp10x_state, vp50_screen_update) MCFG_SCREEN_UPDATE_DRIVER(vp10x_state, vp50_screen_update)
MCFG_SCREEN_SIZE(400, 240) MCFG_SCREEN_SIZE(400, 240)
MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 239) MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 239)
MCFG_ATA_INTERFACE_ADD("ata", ata_devices, "hdd", nullptr, false) MCFG_ATA_INTERFACE_ADD("ata", ata_devices, "hdd", nullptr, false)
MCFG_NVRAM_ADD_0FILL("nvram") MCFG_NVRAM_ADD_0FILL("nvram")
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -405,8 +405,8 @@ ROM_START(jnero)
ROM_REGION(0x80000, "pic", 0) /* PIC18c422 program - read-protected, need dumped */ ROM_REGION(0x80000, "pic", 0) /* PIC18c422 program - read-protected, need dumped */
ROM_LOAD( "8722a-1206.bin", 0x000000, 0x80000, NO_DUMP ) ROM_LOAD( "8722a-1206.bin", 0x000000, 0x80000, NO_DUMP )
DISK_REGION( "ata:0:hdd:image" ) /* ideally an IDENTIFY page from a real drive should be the IDTN metadata, DISK_REGION( "ata:0:hdd:image" ) /* ideally an IDENTIFY page from a real drive should be the IDTN metadata,
but even factory-new boardsets came with a variety of HDD makes and models */ but even factory-new boardsets came with a variety of HDD makes and models */
DISK_IMAGE_READONLY("jn010108", 0, SHA1(5a27990478b65fca801c3a6518c519c5b4ca934d) ) DISK_IMAGE_READONLY("jn010108", 0, SHA1(5a27990478b65fca801c3a6518c519c5b4ca934d) )
ROM_END ROM_END

View File

@ -185,7 +185,7 @@ public:
uint8_t *maskBaseAddr; uint8_t *maskBaseAddr;
c123_tilemap_delegate cb; c123_tilemap_delegate cb;
}; };
c123_mTilemapInfo m_c123_TilemapInfo; c123_mTilemapInfo m_c123_TilemapInfo;
// C169 ROZ Layer Emulation // C169 ROZ Layer Emulation

View File

@ -26,7 +26,7 @@ public:
uint8_t m_irq_mask; uint8_t m_irq_mask;
emu_timer *m_dac_irq_timer; emu_timer *m_dac_irq_timer;
DECLARE_WRITE8_MEMBER(irq_enable_w); DECLARE_WRITE8_MEMBER(irq_enable_w);
DECLARE_WRITE8_MEMBER(trucocl_videoram_w); DECLARE_WRITE8_MEMBER(trucocl_videoram_w);
DECLARE_WRITE8_MEMBER(trucocl_colorram_w); DECLARE_WRITE8_MEMBER(trucocl_colorram_w);

View File

@ -646,7 +646,7 @@ TIMER_CALLBACK_MEMBER(mac_state::mac_adb_tick)
{ {
m_adb_command <<= 1; m_adb_command <<= 1;
} }
// do one clock transition on CB1 to advance the VIA shifter // do one clock transition on CB1 to advance the VIA shifter
m_via1->write_cb1(m_adb_extclock ^ 1); m_via1->write_cb1(m_adb_extclock ^ 1);
m_via1->write_cb1(m_adb_extclock); m_via1->write_cb1(m_adb_extclock);
@ -659,7 +659,7 @@ TIMER_CALLBACK_MEMBER(mac_state::mac_adb_tick)
if ((m_adb_direction) && (ADB_IS_BITBANG_CLASS)) if ((m_adb_direction) && (ADB_IS_BITBANG_CLASS))
{ {
adb_talk(); adb_talk();
if((m_adb_last_talk == 2) && m_adb_datasize) if((m_adb_last_talk == 2) && m_adb_datasize)
{ {
m_adb_timer_ticks = 8; m_adb_timer_ticks = 8;
m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
@ -691,7 +691,7 @@ void mac_state::mac_adb_newaction(int state)
m_adb_direction = 1; // Mac is shifting us a command m_adb_direction = 1; // Mac is shifting us a command
m_adb_waiting_cmd = 1; // we're going to get a command m_adb_waiting_cmd = 1; // we're going to get a command
m_adb_irq_pending = 0; m_adb_irq_pending = 0;
m_adb_extclock = 1; // VIA output shifts on falling clock m_adb_extclock = 1; // VIA output shifts on falling clock
m_via1->write_cb1(m_adb_extclock); m_via1->write_cb1(m_adb_extclock);
m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
break; break;
@ -709,9 +709,9 @@ void mac_state::mac_adb_newaction(int state)
m_adb_send = m_adb_buffer[0]; m_adb_send = m_adb_buffer[0];
m_adb_datasize--; m_adb_datasize--;
m_adb_extclock = 0; // VIA input shifts on rising clock m_adb_extclock = 0; // VIA input shifts on rising clock
m_via1->write_cb1(m_adb_extclock); m_via1->write_cb1(m_adb_extclock);
// move down the rest of the buffer, if any // move down the rest of the buffer, if any
for (i = 0; i < m_adb_datasize; i++) for (i = 0; i < m_adb_datasize; i++)
{ {
@ -1125,7 +1125,7 @@ void mac_state::adb_vblank()
this->adb_talk(); this->adb_talk();
m_adb_timer_ticks = 8; m_adb_timer_ticks = 8;
m_adb_extclock = 0; // VIA input shifts on rising clock m_adb_extclock = 0; // VIA input shifts on rising clock
m_via1->write_cb1(m_adb_extclock); m_via1->write_cb1(m_adb_extclock);
this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
} }
@ -1164,7 +1164,7 @@ void mac_state::adb_vblank()
this->adb_talk(); this->adb_talk();
m_adb_timer_ticks = 8; m_adb_timer_ticks = 8;
m_adb_extclock = 0; // VIA input shifts on rising clock m_adb_extclock = 0; // VIA input shifts on rising clock
m_via1->write_cb1(m_adb_extclock); m_via1->write_cb1(m_adb_extclock);
this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100))); this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
} }

View File

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

View File

@ -194,7 +194,7 @@ READ16_MEMBER( k053247_device::k055673_ps_rom_word_r )
romofs = m_kx46_regs[6] << 16 | m_kx46_regs[7] << 8 | m_kx46_regs[4]; romofs = m_kx46_regs[6] << 16 | m_kx46_regs[7] << 8 | m_kx46_regs[4];
offset = ((offset & 4) >> 1); offset = ((offset & 4) >> 1);
int finoffs = (romofs * 2) + (offset * 2) + magic; int finoffs = (romofs * 2) + (offset * 2) + magic;
return ROM[finoffs+2] | (ROM[finoffs]<<8); return ROM[finoffs+2] | (ROM[finoffs]<<8);

View File

@ -7,19 +7,19 @@
/* /*
Registers Registers
0 0
xxxx xxxx X-Scroll [7:0] xxxx xxxx X-Scroll [7:0]
1 1
xxxx xxxx X-Scroll [15:8] xxxx xxxx X-Scroll [15:8]
2 2
xxxx xxxx Y-Scroll [7:0] xxxx xxxx Y-Scroll [7:0]
3 3
xxxx xxxx Y-Scroll [15:8] xxxx xxxx Y-Scroll [15:8]
4 Control 4 Control
.... ...x 0:Swap XY 1:Normal .... ...x 0:Swap XY 1:Normal
.... ..x. Interrupt related? .... ..x. Interrupt related?
@ -27,13 +27,13 @@
.... x... Flip X .... x... Flip X
...x .... Flip Y ...x .... Flip Y
xxx. .... Wrap control xxx. .... Wrap control
5 5
.... .... Unknown .... .... Unknown
6 6
xxxx xxxx ROM access address [7:0] xxxx xxxx ROM access address [7:0]
7 7
xxxx xxxx ROM access address [15:8] xxxx xxxx ROM access address [15:8]
*/ */
@ -72,9 +72,9 @@ void k053250ps_device::device_start()
m_ram.resize(0x6000/2); m_ram.resize(0x6000/2);
m_buffer[0] = &m_ram[0x0000]; m_buffer[0] = &m_ram[0x0000];
m_buffer[1] = &m_ram[0x0800]; m_buffer[1] = &m_ram[0x0800];
// m_buffer[0] = &m_ram[0x2000]; // m_buffer[0] = &m_ram[0x2000];
// m_buffer[1] = &m_ram[0x2800]; // m_buffer[1] = &m_ram[0x2800];
unpack_nibbles(); unpack_nibbles();
@ -82,7 +82,7 @@ void k053250ps_device::device_start()
save_item(NAME(m_regs)); save_item(NAME(m_regs));
save_item(NAME(m_page)); save_item(NAME(m_page));
save_item(NAME(m_dmairq_on)); save_item(NAME(m_dmairq_on));
m_dmairq_cb.resolve_safe(); m_dmairq_cb.resolve_safe();
m_timer_lvcdma = timer_alloc(0); m_timer_lvcdma = timer_alloc(0);
} }
@ -91,10 +91,10 @@ void k053250ps_device::device_reset()
{ {
m_page = 0; m_page = 0;
memset(m_regs, 0, sizeof(m_regs)); memset(m_regs, 0, sizeof(m_regs));
m_timer_lvcdma_state = OD_IDLE; m_timer_lvcdma_state = OD_IDLE;
m_timer_lvcdma->adjust(attotime::never); m_timer_lvcdma->adjust(attotime::never);
m_dmairq_on = false; m_dmairq_on = false;
} }
@ -263,19 +263,19 @@ inline void k053250ps_device::pdraw_scanline32(bitmap_rgb32 &bitmap, const pen_t
void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, int colorbase, int flags, bitmap_ind8 &priority_bitmap, int priority ) void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, int colorbase, int flags, bitmap_ind8 &priority_bitmap, int priority )
{ {
static int16_t scroll_x; static int16_t scroll_x;
if (machine().input().code_pressed(KEYCODE_A)) if (machine().input().code_pressed(KEYCODE_A))
{ {
scroll_x--; scroll_x--;
popmessage("SCROLL: %d\n", scroll_x); popmessage("SCROLL: %d\n", scroll_x);
} }
else if (machine().input().code_pressed(KEYCODE_S)) else if (machine().input().code_pressed(KEYCODE_S))
{ {
scroll_x++; scroll_x++;
popmessage("SCROLL: %d\n", scroll_x); popmessage("SCROLL: %d\n", scroll_x);
} }
uint8_t *pix_ptr; uint8_t *pix_ptr;
const pen_t *pal_base, *pal_ptr; const pen_t *pal_base, *pal_ptr;
uint32_t src_clipmask, src_wrapmask; //, dst_wrapmask; uint32_t src_clipmask, src_wrapmask; //, dst_wrapmask;
@ -308,11 +308,11 @@ void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, in
if (ctrl & 0x10) orientation |= ORIENTATION_FLIP_Y; if (ctrl & 0x10) orientation |= ORIENTATION_FLIP_Y;
//printf("CTRL: %x\n", ctrl); //printf("CTRL: %x\n", ctrl);
// 00 // 00
// 0x12 // 0x12
// 0x10 // 0x10
switch (ctrl >> 5) // the upper four bits of the control register select source and target dimensions switch (ctrl >> 5) // the upper four bits of the control register select source and target dimensions
{ {
case 0 : case 0 :
@ -371,7 +371,7 @@ void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, in
linedata_offs += bitmap.height() - 1; // and get info for the first line from the bottom linedata_offs += bitmap.height() - 1; // and get info for the first line from the bottom
} }
// dst_wrapmask = ~0; // scanlines don't seem to wrap horizontally in normal orientation // dst_wrapmask = ~0; // scanlines don't seem to wrap horizontally in normal orientation
passes = 1; // draw scanline in a single pass passes = 1; // draw scanline in a single pass
} }
else // orientaion with X and Y parameters switched else // orientaion with X and Y parameters switched
@ -401,13 +401,13 @@ void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, in
if (src_clipmask) if (src_clipmask)
{ {
// determine target wrap boundary and draw scanline in two passes if the source is clipped // determine target wrap boundary and draw scanline in two passes if the source is clipped
// dst_wrapmask = dst_height - 1; // dst_wrapmask = dst_height - 1;
passes = 2; passes = 2;
} }
else else
{ {
// otherwise disable target wraparound and draw scanline in a single pass // otherwise disable target wraparound and draw scanline in a single pass
// dst_wrapmask = ~0; // dst_wrapmask = ~0;
passes = 1; passes = 1;
} }
} }
@ -421,7 +421,7 @@ void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, in
// load physical palette base // load physical palette base
pal_base = palette().pens() + (colorbase << 4) % palette().entries(); pal_base = palette().pens() + (colorbase << 4) % palette().entries();
//printf("Line Start: %u Line End: %u Advance: %u\n", line_start, line_end, linedata_adv); //printf("Line Start: %u Line End: %u Advance: %u\n", line_start, line_end, linedata_adv);
@ -429,7 +429,7 @@ void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, in
for (line_pos=line_start; line_pos <= line_end; linedata_offs += linedata_adv, line_pos++) for (line_pos=line_start; line_pos <= line_end; linedata_offs += linedata_adv, line_pos++)
{ {
linedata_offs &= 0x7ff; // line info data wraps at the four-kilobyte boundary linedata_offs &= 0x7ff; // line info data wraps at the four-kilobyte boundary
color = line_ram[linedata_offs]; // get scanline color code color = line_ram[linedata_offs]; // get scanline color code
if (color == 0xffff) continue; // reject scanline if color code equals minus one if (color == 0xffff) continue; // reject scanline if color code equals minus one
@ -451,10 +451,10 @@ void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, in
zoom = line_ram[linedata_offs + 2]; zoom = line_ram[linedata_offs + 2];
scroll = ((short)line_ram[linedata_offs + 3]); // get signed local scroll value for the current scanline scroll = ((short)line_ram[linedata_offs + 3]); // get signed local scroll value for the current scanline
// scavenged from old code; improves Xexex' first level sky // scavenged from old code; improves Xexex' first level sky
if (wrap500 && scroll >= 0x500) scroll -= 0x800; if (wrap500 && scroll >= 0x500) scroll -= 0x800;
if (1 && scroll >= 0x500) scroll -= 0x800; if (1 && scroll >= 0x500) scroll -= 0x800;
scroll += scroll_corr; // apply final scroll correction scroll += scroll_corr; // apply final scroll correction
@ -465,8 +465,8 @@ void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, in
{ {
printf("%u: [%x] COLR:%x OFFS:%x ZOOM:%x SCRL:%d (%.4x)\n", line_pos, linedata_offs, color, offset, zoom, scroll, line_ram[linedata_offs + 3]); printf("%u: [%x] COLR:%x OFFS:%x ZOOM:%x SCRL:%d (%.4x)\n", line_pos, linedata_offs, color, offset, zoom, scroll, line_ram[linedata_offs + 3]);
} }
// draw scanlines wrapped at virtual bitmap boundary in two passes // draw scanlines wrapped at virtual bitmap boundary in two passes
// this should not impose too much overhead due to clipping performed by the render code // this should not impose too much overhead due to clipping performed by the render code
i = passes; i = passes;
@ -513,17 +513,17 @@ void k053250ps_device::device_timer(emu_timer &timer, device_timer_id id, int pa
m_timer_lvcdma_state = OD_WAIT_END; m_timer_lvcdma_state = OD_WAIT_END;
m_timer_lvcdma->adjust(attotime::from_ticks(4096, clock())); m_timer_lvcdma->adjust(attotime::from_ticks(4096, clock()));
m_dmairq_cb(ASSERT_LINE); m_dmairq_cb(ASSERT_LINE);
// memcpy(m_buffer[m_page], &m_ram[0], 0x1000); // memcpy(m_buffer[m_page], &m_ram[0], 0x1000);
// m_page ^= 1; // m_page ^= 1;
break; break;
case OD_WAIT_END: case OD_WAIT_END:
m_timer_lvcdma_state = OD_IDLE; m_timer_lvcdma_state = OD_IDLE;
m_timer_lvcdma->adjust(attotime::never); m_timer_lvcdma->adjust(attotime::never);
m_dmairq_cb(CLEAR_LINE); m_dmairq_cb(CLEAR_LINE);
if(/*(m_regs[4] & 0x02) &&*/ !m_dmairq_on) if(/*(m_regs[4] & 0x02) &&*/ !m_dmairq_on)
{ {
m_dmairq_on = true; m_dmairq_on = true;

View File

@ -26,7 +26,7 @@ public:
static void static_set_offsets(device_t &device, int offx, int offy); static void static_set_offsets(device_t &device, int offx, int offy);
template<class _cb> static devcb_base &set_dmairq_cb(device_t &device, _cb cb) { return downcast<k053250ps_device &>(device).m_dmairq_cb.set_callback(cb); } template<class _cb> static devcb_base &set_dmairq_cb(device_t &device, _cb cb) { return downcast<k053250ps_device &>(device).m_dmairq_cb.set_callback(cb); }
DECLARE_READ16_MEMBER(reg_r); DECLARE_READ16_MEMBER(reg_r);
DECLARE_WRITE16_MEMBER(reg_w); DECLARE_WRITE16_MEMBER(reg_w);
DECLARE_READ16_MEMBER(ram_r); DECLARE_READ16_MEMBER(ram_r);
@ -44,7 +44,7 @@ protected:
virtual void device_reset() override; virtual void device_reset() override;
private: private:
enum { enum {
OD_IDLE, OD_IDLE,
OD_WAIT_START, OD_WAIT_START,
@ -54,7 +54,7 @@ private:
devcb_write_line m_dmairq_cb; devcb_write_line m_dmairq_cb;
int m_timer_lvcdma_state; int m_timer_lvcdma_state;
bool m_dmairq_on; bool m_dmairq_on;
// configuration // configuration
int m_offx, m_offy; int m_offx, m_offy;

View File

@ -154,4 +154,4 @@ pen_t s97269pb_device::choose_pen(uint8_t x, uint8_t y, pen_t back_pen)
} }
} }
return back_pen; return back_pen;
} }

View File

@ -31,7 +31,7 @@ protected:
private: private:
required_region_ptr<uint8_t> m_prom_ptr; required_region_ptr<uint8_t> m_prom_ptr;
// bit 2 enables gradient and starfield // bit 2 enables gradient and starfield
// bit 3 seems to be used to flip for cocktail // bit 3 seems to be used to flip for cocktail
uint8_t m_palette_bank; uint8_t m_palette_bank;
}; };

View File

@ -103,7 +103,7 @@ void wolfpack_state::video_start()
for (int i = 0; i < 0x8000; i++) for (int i = 0; i < 0x8000; i++)
{ {
uint16_t val = 0; uint16_t val = 0;
int bit = (val >> 0x0) ^ (val >> 0xe) ^ 1; int bit = (val >> 0x0) ^ (val >> 0xe) ^ 1;
val = (val << 1) | (bit & 1); val = (val << 1) | (bit & 1);

View File

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

View File

@ -83,7 +83,7 @@ int emulator_info::start_frontend(emu_options &options, osd_interface &osd, std:
options.set_value(OSDOPTION_SOUND, "none", OPTION_PRIORITY_MAXIMUM, error_string); options.set_value(OSDOPTION_SOUND, "none", OPTION_PRIORITY_MAXIMUM, error_string);
//options.set_value(OPTION_DEBUG, true, OPTION_PRIORITY_MAXIMUM, error_string); //options.set_value(OPTION_DEBUG, true, OPTION_PRIORITY_MAXIMUM, error_string);
options.set_value(OPTION_THROTTLE, false, OPTION_PRIORITY_MAXIMUM, error_string); options.set_value(OPTION_THROTTLE, false, OPTION_PRIORITY_MAXIMUM, error_string);
zexall_machine_manager::instance(options,osd)->start_http_server(); zexall_machine_manager::instance(options,osd)->start_http_server();
zexall_machine_manager::instance(options,osd)->execute(); zexall_machine_manager::instance(options,osd)->execute();
return 0; return 0;