mirror of
https://github.com/holub/mame
synced 2025-06-05 12:26:35 +03:00
srcclean (nw)
This commit is contained in:
parent
f5da128a94
commit
dac6dc4f62
@ -25153,8 +25153,8 @@
|
||||
* 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
|
||||
patch the rom to 0x00 and 0x00....and at 0x0B3D also patch it 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
|
||||
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
|
||||
a Protection Check....
|
||||
|
30
hash/nes.xml
30
hash/nes.xml
@ -52930,22 +52930,22 @@ preliminary proto for the PAL version, still running on NTSC systems) or the gfx
|
||||
|
||||
<!-- Alt. Title: Adan y Eva (on the cart label) -->
|
||||
<software name="adanyeva">
|
||||
<description>Adam & Eve (Spa)</description>
|
||||
<year>1991</year>
|
||||
<publisher>Gluk Video</publisher>
|
||||
<info name="serial" value="CN-11"/>
|
||||
<info name="release" value="19910101"/>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<description>Adam & Eve (Spa)</description>
|
||||
<year>1991</year>
|
||||
<publisher>Gluk Video</publisher>
|
||||
<info name="serial" value="CN-11"/>
|
||||
<info name="release" value="19910101"/>
|
||||
<part name="cart" interface="nes_cart">
|
||||
<feature name="slot" value="cnrom" />
|
||||
<feature name="pcb" value="NTDEC-N715062" />
|
||||
<feature name="mirroring" value="vertical" />
|
||||
<dataarea name="prg" size="32768">
|
||||
<rom name="0.prg" size="32768" crc="626238f8" sha1="7e757c3f67849330066da6984d97a377bb910f21" offset="00000" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="32768">
|
||||
<rom name="0.chr" size="32768" crc="0a7307d9" sha1="de1ef6c5c390947aab477afe7d61e37b6c4d2e32" offset="00000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
<feature name="pcb" value="NTDEC-N715062" />
|
||||
<feature name="mirroring" value="vertical" />
|
||||
<dataarea name="prg" size="32768">
|
||||
<rom name="0.prg" size="32768" crc="626238f8" sha1="7e757c3f67849330066da6984d97a377bb910f21" offset="00000" />
|
||||
</dataarea>
|
||||
<dataarea name="chr" size="32768">
|
||||
<rom name="0.chr" size="32768" crc="0a7307d9" sha1="de1ef6c5c390947aab477afe7d61e37b6c4d2e32" offset="00000" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="destroyr">
|
||||
|
@ -1539,7 +1539,7 @@
|
||||
<rom name="msdetecticve1.ccd" size="772" crc="92ccce73" sha1="717957cf8f02b585c5845347035cafca1be9613c"/>
|
||||
<rom name="msdetecticve1.img" size="361540032" crc="bdea9ba7" sha1="dee4ab701aba51df0ebd635131f0b040d5ab81d9"/>
|
||||
<rom name="msdetecticve1.sub" size="14756736" crc="d02e1e88" sha1="8aa6ebe48b95a36b725748eb43b92d3c90aef63c"/>
|
||||
|
||||
|
||||
*after conversion with IsoBuster+EAC *
|
||||
<rom name="msdet1.cue" size="263" crc="d2572803" sha1="095924856d2540617e11b88790ad3d50d71b7553"/>
|
||||
<rom name="Track01.bin" size="470811600" crc="a56fd0c7" sha1="7d1a05f94a1959f28bc5b4f2c9074ea5b0f0488d"/>
|
||||
|
@ -344,7 +344,7 @@
|
||||
<part name="cart" interface="tourvision_cart">
|
||||
<dataarea name="rom" size="1048576">
|
||||
<!-- 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>
|
||||
</part>
|
||||
</software>
|
||||
|
@ -771,15 +771,15 @@ project "bx"
|
||||
|
||||
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 version < 60000 then
|
||||
buildoptions {
|
||||
"-Wno-strict-overflow",
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
includedirs {
|
||||
MAME_DIR .. "3rdparty/bx/include",
|
||||
}
|
||||
|
@ -2,9 +2,9 @@
|
||||
// copyright-holders:Nathan Woods
|
||||
/***************************************************************************
|
||||
|
||||
coco_multi.cpp
|
||||
coco_multi.cpp
|
||||
|
||||
Code for emulating CoCo's Multi-Pak Interface
|
||||
Code for emulating CoCo's Multi-Pak Interface
|
||||
|
||||
The Multi-Pak interface multiplexes all I/O lines from the Color
|
||||
Computer's expansion port to four identical ports. All I/O lines
|
||||
@ -47,9 +47,9 @@
|
||||
$FF9F. No software is known to take advantage of this. After the
|
||||
introduction of the CoCo 3, which uses $FF9F internally, Tandy provided
|
||||
free upgrades to any MPI to fix this problem. This behavior is not
|
||||
emulated (yet).
|
||||
emulated (yet).
|
||||
|
||||
Slots seem to be one-counted (i.e. - 1-4, not 0-3) by convention
|
||||
Slots seem to be one-counted (i.e. - 1-4, not 0-3) by convention
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
@ -355,15 +355,15 @@ WRITE8_MEMBER(coco_multipak_device::write)
|
||||
// multiX_slotX_[cart|nmi|halt] trampolines
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_cart_w) { update_line(1, cococart_slot_device::line::CART); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_nmi_w) { update_line(1, cococart_slot_device::line::NMI); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_halt_w) { update_line(1, cococart_slot_device::line::HALT); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_cart_w) { update_line(2, cococart_slot_device::line::CART); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_nmi_w) { update_line(2, cococart_slot_device::line::NMI); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_halt_w) { update_line(2, cococart_slot_device::line::HALT); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_cart_w) { update_line(3, cococart_slot_device::line::CART); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_nmi_w) { update_line(3, cococart_slot_device::line::NMI); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_halt_w) { update_line(3, cococart_slot_device::line::HALT); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_cart_w) { update_line(4, cococart_slot_device::line::CART); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_nmi_w) { update_line(4, cococart_slot_device::line::NMI); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_halt_w) { update_line(4, cococart_slot_device::line::HALT); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_cart_w) { update_line(1, cococart_slot_device::line::CART); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_nmi_w) { update_line(1, cococart_slot_device::line::NMI); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot1_halt_w) { update_line(1, cococart_slot_device::line::HALT); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_cart_w) { update_line(2, cococart_slot_device::line::CART); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_nmi_w) { update_line(2, cococart_slot_device::line::NMI); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot2_halt_w) { update_line(2, cococart_slot_device::line::HALT); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_cart_w) { update_line(3, cococart_slot_device::line::CART); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_nmi_w) { update_line(3, cococart_slot_device::line::NMI); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot3_halt_w) { update_line(3, cococart_slot_device::line::HALT); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_cart_w) { update_line(4, cococart_slot_device::line::CART); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_nmi_w) { update_line(4, cococart_slot_device::line::NMI); }
|
||||
WRITE_LINE_MEMBER(coco_multipak_device::multi_slot4_halt_w) { update_line(4, cococart_slot_device::line::HALT); }
|
||||
|
@ -240,7 +240,7 @@ void cococart_slot_device::twiddle_line_if_q(coco_cartridge_line &line)
|
||||
|
||||
//-------------------------------------------------
|
||||
// twiddle_q_lines - hack to support twiddling the
|
||||
// Q line
|
||||
// Q line
|
||||
//-------------------------------------------------
|
||||
|
||||
void cococart_slot_device::twiddle_q_lines()
|
||||
|
@ -160,7 +160,7 @@ void cpc_multiface2_device::multiface_stop()
|
||||
m_slot->nmi_w(0);
|
||||
|
||||
/* initialise 0065 override to monitor calls to 0065 */
|
||||
// machine().device("maincpu")->memory().space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&cpc_multiface2_device::amstrad_multiface_directoverride,this));
|
||||
// machine().device("maincpu")->memory().space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(&cpc_multiface2_device::amstrad_multiface_directoverride,this));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1040,7 +1040,7 @@ WRITE8_MEMBER(nes_waixing_sgz_device::write_h)
|
||||
iNES: mapper 178
|
||||
|
||||
In MESS: Supported.
|
||||
|
||||
|
||||
Implementations wildly vary between emulators, but
|
||||
Cah4e3's implementation boots up both the games and
|
||||
the educational carts that assumedly use this board.
|
||||
@ -1085,7 +1085,7 @@ WRITE8_MEMBER(nes_waixing_sgzlz_device::write_l)
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // NROM mode
|
||||
{ // NROM mode
|
||||
if (BIT(m_reg[0], 3))
|
||||
{
|
||||
prg16_89ab(bank);
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
TMS1000 family - TMS1000, TMS1070, TMS1040, TMS1200, TMS1700, TMS1730,
|
||||
and second source Motorola MC141000, MC141200.
|
||||
|
||||
|
||||
TODO:
|
||||
- add TMS1270 (10 O pins, how does that work?)
|
||||
- add TMS1000C, TMS1200C (CMOS, and 3-level stack)
|
||||
|
@ -155,7 +155,7 @@ struct OPL3_SLOT
|
||||
uint32_t Cnt; /* frequency counter */
|
||||
uint32_t Incr; /* frequency counter step */
|
||||
uint8_t FB; /* feedback shift value */
|
||||
uint8_t conn_enum; /* slot output route */
|
||||
uint8_t conn_enum; /* slot output route */
|
||||
int32_t *connect; /* slot output pointer */
|
||||
int32_t op1_out[2]; /* slot1 output for feedback */
|
||||
uint8_t CON; /* connection (algorithm) type */
|
||||
|
@ -184,7 +184,7 @@ void cesblit_device::do_blit()
|
||||
#endif
|
||||
|
||||
sx &= 0x1ff;
|
||||
sw &= 0x1ff; // can be 0: draw nothing (see e.g. fade-in effect in galgame3/diamond derby)
|
||||
sw &= 0x1ff; // can be 0: draw nothing (see e.g. fade-in effect in galgame3/diamond derby)
|
||||
|
||||
sy &= 0x1ff;
|
||||
sh &= 0x1ff;
|
||||
|
@ -6011,10 +6011,10 @@ uint8_t saturn_state::get_odd_bit( void )
|
||||
{
|
||||
if((STV_VDP2_HRES & 1) == 0)
|
||||
return STV_VDP2_DISP;
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
return machine().first_screen()->frame_number() & 1;
|
||||
}
|
||||
|
||||
|
@ -553,10 +553,10 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log
|
||||
}
|
||||
/*
|
||||
m_zeusbase[0x4e] :
|
||||
bit 0 - 1 : which register triggers write through
|
||||
bit 3 : enable write through via these registers
|
||||
bit 4 : seems to be set during reads, when 0x41 is used for latching
|
||||
bit 6 : enable autoincrement on write through
|
||||
bit 0 - 1 : which register triggers write through
|
||||
bit 3 : enable write through via these registers
|
||||
bit 4 : seems to be set during reads, when 0x41 is used for latching
|
||||
bit 6 : enable autoincrement on write through
|
||||
*/
|
||||
if ((offset & 0xf) == (m_zeusbase[0x4e] & 0xf)) {
|
||||
// If the address is auto-increment then don't load new value
|
||||
@ -608,8 +608,8 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log
|
||||
case 5:
|
||||
{
|
||||
//if (m_zeusbase[0x41] == 0x266) {
|
||||
// logit = 1;
|
||||
// log_fifo = 1;
|
||||
// logit = 1;
|
||||
// log_fifo = 1;
|
||||
//}
|
||||
// Zeus microcode burst from waveram
|
||||
if (logit)
|
||||
@ -754,7 +754,7 @@ void zeus2_device::zeus2_register_update(offs_t offset, uint32_t oldval, int log
|
||||
}
|
||||
break;
|
||||
//case 6: {
|
||||
// // Zeus model fifo burst from waveram
|
||||
// // Zeus model fifo burst from waveram
|
||||
//}
|
||||
//break;
|
||||
case 9:
|
||||
@ -1813,7 +1813,7 @@ void zeus2_renderer::zeus2_draw_quad(const uint32_t *databuffer, uint32_t texdat
|
||||
}
|
||||
|
||||
//if (numverts == 3)
|
||||
// render_triangle(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, vert[0], vert[1], vert[2]);
|
||||
// render_triangle(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, vert[0], vert[1], vert[2]);
|
||||
render_polygon<4>(m_state->zeus_cliprect, render_delegate(&zeus2_renderer::render_poly_8bit, this), 4, vert);
|
||||
}
|
||||
|
||||
@ -1859,9 +1859,9 @@ void zeus2_renderer::render_poly_8bit(int32_t scanline, const extent_t& extent,
|
||||
curDepthVal = curz;
|
||||
}
|
||||
//if (curz < object.zbuf_min)
|
||||
// curDepthVal = object.zbuf_min;
|
||||
// curDepthVal = object.zbuf_min;
|
||||
//else
|
||||
// curDepthVal = curz;
|
||||
// curDepthVal = curz;
|
||||
if (curDepthVal < 0)
|
||||
curDepthVal = 0;
|
||||
bool depth_pass = true;
|
||||
@ -1974,16 +1974,16 @@ void zeus2_renderer::render_poly_8bit(int32_t scanline, const extent_t& extent,
|
||||
}
|
||||
// Rendering for textures with transparent color
|
||||
//} else {
|
||||
// // Add rounding
|
||||
// u0 += (curu >> 7) & 1;
|
||||
// v0 += (curv >> 7) & 1;
|
||||
// uint8_t texel0 = object.get_texel(texbase, v0, u0, texwidth);
|
||||
// if (texel0 != transcolor) {
|
||||
// uint32_t color0 = m_state->m_pal_table[texel0];
|
||||
// colorptr[x] = color0;
|
||||
// if (object.depth_write_enable)
|
||||
// depthptr[x] = curz; // Should limit to 24 bits
|
||||
// }
|
||||
// // Add rounding
|
||||
// u0 += (curu >> 7) & 1;
|
||||
// v0 += (curv >> 7) & 1;
|
||||
// uint8_t texel0 = object.get_texel(texbase, v0, u0, texwidth);
|
||||
// if (texel0 != transcolor) {
|
||||
// uint32_t color0 = m_state->m_pal_table[texel0];
|
||||
// colorptr[x] = color0;
|
||||
// if (object.depth_write_enable)
|
||||
// depthptr[x] = curz; // Should limit to 24 bits
|
||||
// }
|
||||
}
|
||||
}
|
||||
curz += dzdx;
|
||||
@ -2232,31 +2232,31 @@ std::string zeus2_device::tex_info(void)
|
||||
case 0x0003ff20: retVal = "0, s=64, t=8_alpha"; break;
|
||||
case 0x00130300: retVal = "People in stands, s=64, t=8_4x2"; break;
|
||||
case 0x0007c8e0: retVal = "Greenish blob, s=64, t=8_alpha"; break;
|
||||
case 0x0015c940: retVal = "Red +"; break;
|
||||
case 0x0015bf40: retVal = "Blue circle with green outline"; break;
|
||||
case 0x0015c740: retVal = "Radiation symbol"; break;
|
||||
case 0x0015cb80: retVal = "Grey square"; break;
|
||||
case 0x0015d380: retVal = "Green circle inside grey square"; break;
|
||||
case 0x00159f40: retVal = "Shinny green square"; break;
|
||||
case 0x001a6340: retVal = "Yellow ski tip"; break;
|
||||
case 0x001a65a0: retVal = "Metal vest"; break;
|
||||
case 0x001a6a00: retVal = "Head hole metal vest"; break;
|
||||
case 0x001a6b70: retVal = "Yellow WES badge"; break;
|
||||
case 0x001a6140: retVal = "Backwards Yellow WES badge"; break;
|
||||
case 0x001a6d70: retVal = "Maybe stomach"; break;
|
||||
case 0x001a6e60: retVal = "Maybe back"; break;
|
||||
case 0x001a6f20: retVal = "Hand with black glove"; break;
|
||||
case 0x001a7090: retVal = "Wes Face"; break;
|
||||
case 0x001a72c0: retVal = "Dark red strip"; break;
|
||||
case 0x001a7340: retVal = "Wes shoulder pad"; break;
|
||||
case 0x001a7460: retVal = "Orange circle"; break;
|
||||
case 0x001a5e20: retVal = "Wes belt"; break;
|
||||
case 0x001a5f40: retVal = "Wes orange strip on side"; break;
|
||||
case 0x001a7770: retVal = "Grey something"; break;
|
||||
case 0x001a74e0: retVal = "Grey maybe top of boot"; break;
|
||||
case 0x001a76e0: retVal = "Grey hexagon"; break;
|
||||
case 0x001a7800: retVal = "Belt pouches"; break;
|
||||
case 0x0015a340: retVal = "Green shinny block"; break;
|
||||
case 0x0015c940: retVal = "Red +"; break;
|
||||
case 0x0015bf40: retVal = "Blue circle with green outline"; break;
|
||||
case 0x0015c740: retVal = "Radiation symbol"; break;
|
||||
case 0x0015cb80: retVal = "Grey square"; break;
|
||||
case 0x0015d380: retVal = "Green circle inside grey square"; break;
|
||||
case 0x00159f40: retVal = "Shinny green square"; break;
|
||||
case 0x001a6340: retVal = "Yellow ski tip"; break;
|
||||
case 0x001a65a0: retVal = "Metal vest"; break;
|
||||
case 0x001a6a00: retVal = "Head hole metal vest"; break;
|
||||
case 0x001a6b70: retVal = "Yellow WES badge"; break;
|
||||
case 0x001a6140: retVal = "Backwards Yellow WES badge"; break;
|
||||
case 0x001a6d70: retVal = "Maybe stomach"; break;
|
||||
case 0x001a6e60: retVal = "Maybe back"; break;
|
||||
case 0x001a6f20: retVal = "Hand with black glove"; break;
|
||||
case 0x001a7090: retVal = "Wes Face"; break;
|
||||
case 0x001a72c0: retVal = "Dark red strip"; break;
|
||||
case 0x001a7340: retVal = "Wes shoulder pad"; break;
|
||||
case 0x001a7460: retVal = "Orange circle"; break;
|
||||
case 0x001a5e20: retVal = "Wes belt"; break;
|
||||
case 0x001a5f40: retVal = "Wes orange strip on side"; break;
|
||||
case 0x001a7770: retVal = "Grey something"; break;
|
||||
case 0x001a74e0: retVal = "Grey maybe top of boot"; break;
|
||||
case 0x001a76e0: retVal = "Grey hexagon"; break;
|
||||
case 0x001a7800: retVal = "Belt pouches"; break;
|
||||
case 0x0015a340: retVal = "Green shinny block"; break;
|
||||
default: retVal = "Unknown"; break;
|
||||
}
|
||||
}
|
||||
|
@ -42,18 +42,18 @@ struct zeus2_poly_extra_data
|
||||
uint16_t texwidth;
|
||||
uint16_t color;
|
||||
uint32_t srcAlpha;
|
||||
uint32_t dstAlpha;
|
||||
uint32_t dstAlpha;
|
||||
uint32_t ctrl_word;
|
||||
uint32_t ucode_src;
|
||||
uint32_t tex_src;
|
||||
bool texture_alpha;
|
||||
bool texture_rgb555;
|
||||
uint32_t ucode_src;
|
||||
uint32_t tex_src;
|
||||
bool texture_alpha;
|
||||
bool texture_rgb555;
|
||||
bool blend_enable;
|
||||
int32_t zbuf_min;
|
||||
int32_t zbuf_min;
|
||||
bool depth_min_enable;
|
||||
bool depth_test_enable;
|
||||
bool depth_write_enable;
|
||||
bool depth_clear_enable;
|
||||
bool depth_clear_enable;
|
||||
|
||||
uint8_t(*get_texel)(const void *, int, int, int);
|
||||
uint8_t(*get_alpha)(const void *, int, int, int);
|
||||
@ -245,7 +245,7 @@ public:
|
||||
addr = m_zeusbase[0x38] >> (16 - 9 - 2 * m_yScale);
|
||||
}
|
||||
//uint32_t addr = render ? frame_addr_from_phys_addr(m_renderRegs[0x4] << (15 + m_yScale))
|
||||
// : frame_addr_from_phys_addr((m_zeusbase[0x38] >> 1) << (m_yScale << 1));
|
||||
// : frame_addr_from_phys_addr((m_zeusbase[0x38] >> 1) << (m_yScale << 1));
|
||||
addr += (y << (9 + m_yScale)) + x;
|
||||
return addr;
|
||||
}
|
||||
|
@ -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);
|
||||
return expression_read_program_direct(memory->space(AS_DECRYPTED_OPCODES), (spacenum == EXPSPACE_OPCODE), address, size);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
case EXPSPACE_REGION:
|
||||
if (name == nullptr)
|
||||
|
@ -1208,9 +1208,9 @@ image_init_result device_image_interface::create(const std::string &path, const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// reset_and_load - called internally when we try
|
||||
// to load an is_reset_on_load() item; will reset
|
||||
// the emulation and record this image to be loaded
|
||||
// reset_and_load - called internally when we try
|
||||
// to load an is_reset_on_load() item; will reset
|
||||
// the emulation and record this image to be loaded
|
||||
//-------------------------------------------------
|
||||
|
||||
void device_image_interface::reset_and_load(const std::string &path)
|
||||
|
@ -334,7 +334,7 @@ private:
|
||||
// flags
|
||||
bool m_readonly;
|
||||
bool m_created;
|
||||
|
||||
|
||||
// special - used when creating
|
||||
int m_create_format;
|
||||
util::option_resolution *m_create_args;
|
||||
|
@ -159,4 +159,4 @@ bool get_default_card_software_hook::hashfile_extrainfo(std::string &extrainfo)
|
||||
}
|
||||
extrainfo = m_hash_extrainfo;
|
||||
return m_has_hash_extrainfo;
|
||||
}
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ class get_default_card_software_hook
|
||||
public:
|
||||
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
|
||||
util::core_file::ptr &image_file() { return m_image_file; }
|
||||
|
||||
@ -110,12 +110,12 @@ public:
|
||||
bool hashfile_extrainfo(std::string &extrainfo);
|
||||
|
||||
private:
|
||||
util::core_file::ptr m_image_file;
|
||||
std::string m_file_type;
|
||||
std::function<bool(util::core_file &, std::string&)> m_get_hashfile_extrainfo;
|
||||
bool m_called_get_hashfile_extrainfo;
|
||||
bool m_has_hash_extrainfo;
|
||||
std::string m_hash_extrainfo;
|
||||
util::core_file::ptr m_image_file;
|
||||
std::string m_file_type;
|
||||
std::function<bool(util::core_file &, std::string&)> m_get_hashfile_extrainfo;
|
||||
bool m_called_get_hashfile_extrainfo;
|
||||
bool m_has_hash_extrainfo;
|
||||
std::string m_hash_extrainfo;
|
||||
};
|
||||
|
||||
|
||||
|
@ -267,9 +267,9 @@ void emu_options::value_changed(const std::string &name, const std::string &valu
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// override_get_value - when saving to an INI, we
|
||||
// need to hook into that process so we can write
|
||||
// out image/slot options
|
||||
// override_get_value - when saving to an INI, we
|
||||
// need to hook into that process so we can write
|
||||
// out image/slot options
|
||||
//-------------------------------------------------
|
||||
|
||||
core_options::override_get_value_result emu_options::override_get_value(const char *name, std::string &value) const
|
||||
@ -298,9 +298,9 @@ core_options::override_get_value_result emu_options::override_get_value(const ch
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// override_set_value - when parsing an INI, we
|
||||
// need to hook into into it so we can do the same
|
||||
// crazy slot logic done in mameopt
|
||||
// override_set_value - when parsing an INI, we
|
||||
// need to hook into into it so we can do the same
|
||||
// crazy slot logic done in mameopt
|
||||
//-------------------------------------------------
|
||||
|
||||
bool emu_options::override_set_value(const char *name, const std::string &value)
|
||||
@ -334,7 +334,7 @@ bool emu_options::override_set_value(const char *name, const std::string &value)
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// slot_option ctor
|
||||
// slot_option ctor
|
||||
//-------------------------------------------------
|
||||
|
||||
slot_option::slot_option(const char *default_value)
|
||||
@ -345,7 +345,7 @@ slot_option::slot_option(const char *default_value)
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// slot_option::value
|
||||
// slot_option::value
|
||||
//-------------------------------------------------
|
||||
|
||||
const std::string &slot_option::value() const
|
||||
@ -353,17 +353,17 @@ const std::string &slot_option::value() const
|
||||
// There are a number of ways that the value can be determined; there
|
||||
// is a specific order of precedence:
|
||||
//
|
||||
// 1. Highest priority is whatever may have been specified by the user (whether it
|
||||
// was specified at the command line, an INI file, or in the UI). We keep track
|
||||
// of whether these values were specified this way
|
||||
// 1. Highest priority is whatever may have been specified by the user (whether it
|
||||
// was specified at the command line, an INI file, or in the UI). We keep track
|
||||
// of whether these values were specified this way
|
||||
//
|
||||
// Take note that slots have a notion of being "selectable". Slots that are not
|
||||
// marked as selectable cannot be specified with this technique
|
||||
// Take note that slots have a notion of being "selectable". Slots that are not
|
||||
// marked as selectable cannot be specified with this technique
|
||||
//
|
||||
// 2. Next highest is what is returned from get_default_card_software()
|
||||
// 2. Next highest is what is returned from get_default_card_software()
|
||||
//
|
||||
// 3. Last in priority is what was specified as the slot default. This comes from
|
||||
// device setup
|
||||
// 3. Last in priority is what was specified as the slot default. This comes from
|
||||
// device setup
|
||||
if (m_specified)
|
||||
return m_specified_value;
|
||||
else if (!m_default_card_software.empty())
|
||||
@ -374,7 +374,7 @@ const std::string &slot_option::value() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// slot_option::specified_value
|
||||
// slot_option::specified_value
|
||||
//-------------------------------------------------
|
||||
|
||||
std::string slot_option::specified_value() const
|
||||
@ -391,7 +391,7 @@ std::string slot_option::specified_value() const
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// slot_option::specify
|
||||
// slot_option::specify
|
||||
//-------------------------------------------------
|
||||
|
||||
void slot_option::specify(std::string &&text)
|
||||
@ -416,7 +416,7 @@ void slot_option::specify(std::string &&text)
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// slot_option::set_bios
|
||||
// slot_option::set_bios
|
||||
//-------------------------------------------------
|
||||
|
||||
void slot_option::set_bios(std::string &&text)
|
||||
|
@ -235,11 +235,11 @@ public:
|
||||
void set_default_card_software(std::string &&s) { m_default_card_software = std::move(s); }
|
||||
|
||||
private:
|
||||
bool m_specified;
|
||||
std::string m_specified_value;
|
||||
std::string m_specified_bios;
|
||||
std::string m_default_card_software;
|
||||
std::string m_default_value;
|
||||
bool m_specified;
|
||||
std::string m_specified_value;
|
||||
std::string m_specified_bios;
|
||||
std::string m_default_card_software;
|
||||
std::string m_default_value;
|
||||
};
|
||||
|
||||
|
||||
@ -448,15 +448,15 @@ private:
|
||||
static const options_entry s_option_entries[];
|
||||
|
||||
// slots and devices
|
||||
std::map<std::string, slot_option> m_slot_options;
|
||||
std::map<std::string, std::string> m_image_options;
|
||||
std::map<std::string, slot_option> m_slot_options;
|
||||
std::map<std::string, std::string> m_image_options;
|
||||
|
||||
// cached options, for scenarios where parsing core_options is too slow
|
||||
int m_coin_impulse;
|
||||
bool m_joystick_contradictory;
|
||||
bool m_sleep;
|
||||
bool m_refresh_speed;
|
||||
ui_option m_ui;
|
||||
int m_coin_impulse;
|
||||
bool m_joystick_contradictory;
|
||||
bool m_sleep;
|
||||
bool m_refresh_speed;
|
||||
ui_option m_ui;
|
||||
};
|
||||
|
||||
#endif // MAME_EMU_EMUOPTS_H
|
||||
|
@ -1068,15 +1068,15 @@ int open_disk_image(emu_options &options, const game_driver *gamedrv, const rom_
|
||||
// and try to open that
|
||||
//
|
||||
// An example of a system that requires this is src/mame/drivers/ksys673.cpp, that has declarations like this:
|
||||
// ...
|
||||
// DISK_IMAGE_READONLY("889aa", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
|
||||
// ...
|
||||
// DISK_IMAGE_READONLY("889ea", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
|
||||
// ...
|
||||
// DISK_IMAGE_READONLY("889ja", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
|
||||
// ...
|
||||
// DISK_IMAGE_READONLY("889ua", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
|
||||
// ...
|
||||
// ...
|
||||
// DISK_IMAGE_READONLY("889aa", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
|
||||
// ...
|
||||
// DISK_IMAGE_READONLY("889ea", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
|
||||
// ...
|
||||
// DISK_IMAGE_READONLY("889ja", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
|
||||
// ...
|
||||
// DISK_IMAGE_READONLY("889ua", 0, BAD_DUMP SHA1(0b567bf2f03ee8089e0b021ea502a53b3f6fe7ac))
|
||||
// ...
|
||||
util::hash_collection romphashes(ROM_GETHASHDATA(romp));
|
||||
for (int drv = driver_list::find(*gamedrv); drv != -1; drv = driver_list::clone(drv))
|
||||
{
|
||||
|
@ -100,7 +100,7 @@ private:
|
||||
driver_enumerator m_drivlist;
|
||||
|
||||
// blank options for use during validation
|
||||
emu_options m_blank_options;
|
||||
emu_options m_blank_options;
|
||||
|
||||
// error tracking
|
||||
int m_errors;
|
||||
|
@ -115,7 +115,7 @@ void mame_options::update_slot_options(emu_options &options, const software_part
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// get_default_card_software
|
||||
// get_default_card_software
|
||||
//-------------------------------------------------
|
||||
|
||||
std::string mame_options::get_default_card_software(device_slot_interface &slot, const emu_options &options)
|
||||
@ -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());
|
||||
if (iter != options.image_options().end())
|
||||
image_path = iter->second;
|
||||
|
||||
|
||||
get_hashfile_extrainfo = [image, &options](util::core_file &file, std::string &extrainfo)
|
||||
{
|
||||
util::hash_collection hashes = image->calculate_hash_on_file(file);
|
||||
|
@ -26,7 +26,7 @@ namespace ui {
|
||||
#define ERROR_MESSAGE_TIME 5
|
||||
|
||||
// item reference for "Switch Item Ordering"
|
||||
#define ITEMREF_SWITCH_ITEM_ORDERING ((void *)1)
|
||||
#define ITEMREF_SWITCH_ITEM_ORDERING ((void *)1)
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
@ -377,42 +377,42 @@ static floperr_t fd_construct(floppy_image_legacy *floppy, int tracks, int secto
|
||||
|
||||
static FLOPPY_IDENTIFY(fd_80_256_identify)
|
||||
{
|
||||
return fd_identify(floppy, vote, 80, 256);
|
||||
return fd_identify(floppy, vote, 80, 256);
|
||||
}
|
||||
|
||||
static FLOPPY_CONSTRUCT(fd_80_256_construct)
|
||||
{
|
||||
return fd_construct(floppy, 80, 256);
|
||||
return fd_construct(floppy, 80, 256);
|
||||
}
|
||||
|
||||
static FLOPPY_IDENTIFY(fd_40_256_identify)
|
||||
{
|
||||
return fd_identify(floppy, vote, 40, 256);
|
||||
return fd_identify(floppy, vote, 40, 256);
|
||||
}
|
||||
|
||||
static FLOPPY_CONSTRUCT(fd_40_256_construct)
|
||||
{
|
||||
return fd_construct(floppy, 40, 256);
|
||||
return fd_construct(floppy, 40, 256);
|
||||
}
|
||||
|
||||
static FLOPPY_IDENTIFY(fd_80_128_identify)
|
||||
{
|
||||
return fd_identify(floppy, vote, 80, 128);
|
||||
return fd_identify(floppy, vote, 80, 128);
|
||||
}
|
||||
|
||||
static FLOPPY_CONSTRUCT(fd_80_128_construct)
|
||||
{
|
||||
return fd_construct(floppy, 80, 128);
|
||||
return fd_construct(floppy, 80, 128);
|
||||
}
|
||||
|
||||
static FLOPPY_IDENTIFY(fd_40_128_identify)
|
||||
{
|
||||
return fd_identify(floppy, vote, 40, 128);
|
||||
return fd_identify(floppy, vote, 40, 128);
|
||||
}
|
||||
|
||||
static FLOPPY_CONSTRUCT(fd_40_128_construct)
|
||||
{
|
||||
return fd_construct(floppy, 40, 128);
|
||||
return fd_construct(floppy, 40, 128);
|
||||
}
|
||||
|
||||
|
||||
@ -421,24 +421,24 @@ static FLOPPY_CONSTRUCT(fd_40_128_construct)
|
||||
LEGACY_FLOPPY_OPTIONS_START(thomson)
|
||||
|
||||
LEGACY_FLOPPY_OPTION(fdmfm2, "fd", "Thomson FD (MFM) 80 tracks disk image (3\"1/2 DD)",
|
||||
fd_80_256_identify, fd_80_256_construct, nullptr, nullptr)
|
||||
fd_80_256_identify, fd_80_256_construct, nullptr, nullptr)
|
||||
|
||||
// Note: no way to distinguish between FD files for 5"1/4 DD and 3"1/2 SD actually, as they have the same size
|
||||
// however, we expect 3"1/2 SD to be rather rare, so, we simply put it after 5"1/4 DD
|
||||
|
||||
LEGACY_FLOPPY_OPTION(fdmfm, "fd", "Thomson FD (MFM) 40 tracks disk image (5\"1/4 DD)",
|
||||
fd_40_256_identify, fd_40_256_construct, nullptr, nullptr)
|
||||
fd_40_256_identify, fd_40_256_construct, nullptr, nullptr)
|
||||
|
||||
LEGACY_FLOPPY_OPTION(fd2, "fd", "Thomson FD (FM) 80 tracks disk image (3\"1/2 SD)",
|
||||
fd_80_128_identify, fd_80_128_construct, nullptr, nullptr)
|
||||
fd_80_128_identify, fd_80_128_construct, nullptr, nullptr)
|
||||
|
||||
LEGACY_FLOPPY_OPTION(fd, "fd", "Thomson FD (FM) 40 tracks disk image (5\"1/4 SD)",
|
||||
fd_40_128_identify, fd_40_128_construct, nullptr, nullptr)
|
||||
fd_40_128_identify, fd_40_128_construct, nullptr, nullptr)
|
||||
|
||||
LEGACY_FLOPPY_OPTION(sap,"sap", "Thomson SAP floppy disk image",
|
||||
sap_dsk_identify, sap_dsk_construct, nullptr, nullptr)
|
||||
sap_dsk_identify, sap_dsk_construct, nullptr, nullptr)
|
||||
|
||||
LEGACY_FLOPPY_OPTION(qdd,"qd", "Thomson QDD floppy disk image (2\"8 SD)",
|
||||
qdd_dsk_identify, qdd_dsk_construct, nullptr, nullptr)
|
||||
qdd_dsk_identify, qdd_dsk_construct, nullptr, nullptr)
|
||||
|
||||
LEGACY_FLOPPY_OPTIONS_END
|
||||
|
@ -44,9 +44,9 @@ namespace netlist
|
||||
struct need_bytes_for_bits
|
||||
{
|
||||
enum { value =
|
||||
bits <= 8 ? 1 :
|
||||
bits <= 16 ? 2 :
|
||||
bits <= 32 ? 4 :
|
||||
bits <= 8 ? 1 :
|
||||
bits <= 16 ? 2 :
|
||||
bits <= 32 ? 4 :
|
||||
8
|
||||
};
|
||||
};
|
||||
|
82
src/lib/netlist/plib/pstring.h
Executable file → Normal file
82
src/lib/netlist/plib/pstring.h
Executable file → Normal file
@ -62,18 +62,18 @@ public:
|
||||
|
||||
typedef typename traits_type::mem_t mem_t;
|
||||
typedef typename traits_type::code_t code_t;
|
||||
typedef std::size_t size_type;
|
||||
typedef std::ptrdiff_t difference_type;
|
||||
typedef typename traits_type::string_type string_type;
|
||||
typedef std::size_t size_type;
|
||||
typedef std::ptrdiff_t difference_type;
|
||||
typedef typename traits_type::string_type string_type;
|
||||
|
||||
class ref_value_type final
|
||||
{
|
||||
public:
|
||||
ref_value_type() = delete;
|
||||
ref_value_type(const ref_value_type &) = delete;
|
||||
ref_value_type(ref_value_type &&) = delete;
|
||||
ref_value_type &operator=(const ref_value_type &) = delete;
|
||||
ref_value_type &operator=(ref_value_type &&) = delete;
|
||||
ref_value_type() = delete;
|
||||
ref_value_type(const ref_value_type &) = delete;
|
||||
ref_value_type(ref_value_type &&) = delete;
|
||||
ref_value_type &operator=(const ref_value_type &) = delete;
|
||||
ref_value_type &operator=(ref_value_type &&) = delete;
|
||||
operator code_t() const noexcept { return traits_type::code(&m); }
|
||||
private:
|
||||
const mem_t m;
|
||||
@ -166,8 +166,8 @@ public:
|
||||
const_iterator cend() const { return const_iterator(m_str.end()); }
|
||||
|
||||
// C string conversion helpers
|
||||
const mem_t *c_str() const { return static_cast<const mem_t *>(m_str.c_str()); }
|
||||
const mem_t *data() const { return c_str(); }
|
||||
const mem_t *c_str() const { return static_cast<const mem_t *>(m_str.c_str()); }
|
||||
const mem_t *data() const { return c_str(); }
|
||||
|
||||
size_type length() const { return traits_type::len(m_str); }
|
||||
size_type size() const { return traits_type::len(m_str); }
|
||||
@ -369,7 +369,7 @@ struct putf16_traits
|
||||
while (i != p.end())
|
||||
{
|
||||
// FIXME: check that size is equal
|
||||
uint16_t c = static_cast<uint16_t>(*i++);
|
||||
uint16_t c = static_cast<uint16_t>(*i++);
|
||||
if (!((c & 0xd800) == 0xd800))
|
||||
ret++;
|
||||
}
|
||||
@ -377,8 +377,8 @@ struct putf16_traits
|
||||
}
|
||||
static std::size_t codelen(const mem_t *p)
|
||||
{
|
||||
uint16_t c = static_cast<uint16_t>(*p);
|
||||
return ((c & 0xd800) == 0xd800) ? 2 : 1;
|
||||
uint16_t c = static_cast<uint16_t>(*p);
|
||||
return ((c & 0xd800) == 0xd800) ? 2 : 1;
|
||||
}
|
||||
static std::size_t codelen(const code_t c)
|
||||
{
|
||||
@ -389,28 +389,28 @@ struct putf16_traits
|
||||
}
|
||||
static code_t code(const mem_t *p)
|
||||
{
|
||||
uint32_t c = static_cast<uint32_t>(*p++);
|
||||
if ((c & 0xd800) == 0xd800)
|
||||
{
|
||||
c = (c - 0xd800) << 10;
|
||||
c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000;
|
||||
}
|
||||
return static_cast<code_t>(c);
|
||||
uint32_t c = static_cast<uint32_t>(*p++);
|
||||
if ((c & 0xd800) == 0xd800)
|
||||
{
|
||||
c = (c - 0xd800) << 10;
|
||||
c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000;
|
||||
}
|
||||
return static_cast<code_t>(c);
|
||||
}
|
||||
static void encode(code_t c, string_type &s)
|
||||
{
|
||||
uint32_t cu = static_cast<uint32_t>(c);
|
||||
if (c > 0xffff)
|
||||
{ //make a surrogate pair
|
||||
uint32_t t = ((cu - 0x10000) >> 10) + 0xd800;
|
||||
cu = (cu & 0x3ff) + 0xdc00;
|
||||
s += static_cast<mem_t>(t);
|
||||
s += static_cast<mem_t>(cu);
|
||||
}
|
||||
else
|
||||
{
|
||||
s += static_cast<mem_t>(cu);
|
||||
}
|
||||
if (c > 0xffff)
|
||||
{ //make a surrogate pair
|
||||
uint32_t t = ((cu - 0x10000) >> 10) + 0xd800;
|
||||
cu = (cu & 0x3ff) + 0xdc00;
|
||||
s += static_cast<mem_t>(t);
|
||||
s += static_cast<mem_t>(cu);
|
||||
}
|
||||
else
|
||||
{
|
||||
s += static_cast<mem_t>(cu);
|
||||
}
|
||||
}
|
||||
static const mem_t *nthcode(const mem_t *p, const std::size_t n)
|
||||
{
|
||||
@ -435,7 +435,7 @@ struct pwchar_traits
|
||||
while (i != p.end())
|
||||
{
|
||||
// FIXME: check that size is equal
|
||||
uint32_t c = static_cast<uint32_t>(*i++);
|
||||
uint32_t c = static_cast<uint32_t>(*i++);
|
||||
if (!((c & 0xd800) == 0xd800))
|
||||
ret++;
|
||||
}
|
||||
@ -449,8 +449,8 @@ struct pwchar_traits
|
||||
{
|
||||
if (sizeof(wchar_t) == 2)
|
||||
{
|
||||
uint16_t c = static_cast<uint16_t>(*p);
|
||||
return ((c & 0xd800) == 0xd800) ? 2 : 1;
|
||||
uint16_t c = static_cast<uint16_t>(*p);
|
||||
return ((c & 0xd800) == 0xd800) ? 2 : 1;
|
||||
}
|
||||
else
|
||||
return 1;
|
||||
@ -468,13 +468,13 @@ struct pwchar_traits
|
||||
{
|
||||
if (sizeof(wchar_t) == 2)
|
||||
{
|
||||
uint32_t c = static_cast<uint32_t>(*p++);
|
||||
if ((c & 0xd800) == 0xd800)
|
||||
{
|
||||
c = (c - 0xd800) << 10;
|
||||
c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000;
|
||||
}
|
||||
return static_cast<code_t>(c);
|
||||
uint32_t c = static_cast<uint32_t>(*p++);
|
||||
if ((c & 0xd800) == 0xd800)
|
||||
{
|
||||
c = (c - 0xd800) << 10;
|
||||
c += static_cast<uint32_t>(*p) - 0xdc00 + 0x10000;
|
||||
}
|
||||
return static_cast<code_t>(c);
|
||||
}
|
||||
else
|
||||
return static_cast<code_t>(*p);
|
||||
|
@ -38,7 +38,7 @@ constexpr bool gregorian_is_leap_year(int year)
|
||||
|
||||
//-------------------------------------------------
|
||||
// gregorian_days_in_month - given a year and a one-counted
|
||||
// month, return the amount of days in that month
|
||||
// month, return the amount of days in that month
|
||||
//-------------------------------------------------
|
||||
|
||||
inline int gregorian_days_in_month(int month, int year)
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
namespace util {
|
||||
/***************************************************************************
|
||||
GLOBAL VARIABLES
|
||||
GLOBAL VARIABLES
|
||||
***************************************************************************/
|
||||
|
||||
extern std::chrono::system_clock::duration system_clock_adjustment;
|
||||
@ -35,18 +35,18 @@ typedef std::chrono::duration<std::uint64_t, std::ratio<1, 10000000> > ntfs_dura
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
// arbitrary_clock - an std::chrono clock that "knows" the
|
||||
// date of the epoch's begining
|
||||
// arbitrary_clock - an std::chrono clock that "knows" the
|
||||
// date of the epoch's begining
|
||||
//---------------------------------------------------------
|
||||
|
||||
template<typename Rep, int Y, int M, int D, int H, int N, int S, typename Ratio>
|
||||
class arbitrary_clock
|
||||
{
|
||||
public:
|
||||
typedef Rep rep;
|
||||
typedef Ratio period;
|
||||
typedef std::chrono::duration<rep, period> duration;
|
||||
typedef std::chrono::time_point<arbitrary_clock> time_point;
|
||||
typedef Rep rep;
|
||||
typedef Ratio period;
|
||||
typedef std::chrono::duration<rep, period> duration;
|
||||
typedef std::chrono::time_point<arbitrary_clock> time_point;
|
||||
static constexpr int base_year = Y;
|
||||
static constexpr int base_month = M;
|
||||
static constexpr int base_day = D;
|
||||
@ -55,8 +55,8 @@ public:
|
||||
static constexpr int base_second = S;
|
||||
|
||||
//---------------------------------------------------------
|
||||
// from_arbitrary_time_point - converts an arbitrary_clock
|
||||
// with a different scale to this arbitrary_clock's scale
|
||||
// from_arbitrary_time_point - converts an arbitrary_clock
|
||||
// with a different scale to this arbitrary_clock's scale
|
||||
//---------------------------------------------------------
|
||||
|
||||
template<typename Rep2, int Y2, int M2, int D2, int H2, int N2, int S2, typename Ratio2>
|
||||
@ -75,8 +75,8 @@ public:
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
// to_arbitrary_time_point - converts an arbitrary_clock
|
||||
// of this scale to one of different scale
|
||||
// to_arbitrary_time_point - converts an arbitrary_clock
|
||||
// of this scale to one of different scale
|
||||
//---------------------------------------------------------
|
||||
|
||||
template<typename Rep2, int Y2, int M2, int D2, int H2, int N2, int S2, typename Ratio2>
|
||||
@ -87,7 +87,7 @@ public:
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
// to_tm - formats a structure of type 'struct tm'
|
||||
// to_tm - formats a structure of type 'struct tm'
|
||||
//---------------------------------------------------------
|
||||
|
||||
static struct tm to_tm(const time_point &tp)
|
||||
@ -106,7 +106,7 @@ public:
|
||||
|
||||
|
||||
//---------------------------------------------------------
|
||||
// to_system_clock - converts to a system_clock time_point
|
||||
// to_system_clock - converts to a system_clock time_point
|
||||
//---------------------------------------------------------
|
||||
|
||||
static std::chrono::time_point<std::chrono::system_clock> to_system_clock(const time_point &tp)
|
||||
@ -124,7 +124,7 @@ public:
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// from_system_clock - converts from a system_clock time_point
|
||||
// from_system_clock - converts from a system_clock time_point
|
||||
//---------------------------------------------------------
|
||||
|
||||
static time_point from_system_clock(const std::chrono::time_point<std::chrono::system_clock> &tp)
|
||||
@ -138,13 +138,13 @@ private:
|
||||
//
|
||||
// * years with leap years are at the end of every quadyear
|
||||
// * quadyears without leap years are at the end of every century
|
||||
// * centuries where the last quadyear has a leap year at the end are at the
|
||||
// end of every quadcentury
|
||||
// * centuries where the last quadyear has a leap year at the end are at the
|
||||
// end of every quadcentury
|
||||
typedef arbitrary_clock<std::int64_t, 1601, 1, 1, 0, 0, 0, std::ratio<1, 1> > tm_conversion_clock;
|
||||
|
||||
//---------------------------------------------------------
|
||||
// internal_to_tm - formats a structure of type 'struct tm'
|
||||
// based on a normalized clock
|
||||
// internal_to_tm - formats a structure of type 'struct tm'
|
||||
// based on a normalized clock
|
||||
//---------------------------------------------------------
|
||||
|
||||
static struct tm internal_to_tm(std::chrono::duration<std::int64_t, std::ratio<1, 1> > duration)
|
||||
@ -217,8 +217,8 @@ private:
|
||||
typedef arbitrary_clock<std::int64_t, 1970, 1, 1, 0, 0, 0, std::chrono::system_clock::period > system_conversion_clock;
|
||||
|
||||
//-------------------------------------------------
|
||||
// absolute_day - returns the absolute day count
|
||||
// for the specified year/month/day
|
||||
// absolute_day - returns the absolute day count
|
||||
// for the specified year/month/day
|
||||
//-------------------------------------------------
|
||||
|
||||
static int64_t absolute_day(int year, int month, int day)
|
||||
|
@ -50,7 +50,7 @@ static const char *const nsub_sample_names[] =
|
||||
};
|
||||
|
||||
/* sample ids - must match sample file name table above */
|
||||
enum
|
||||
enum
|
||||
{
|
||||
SND_EXPL_L0 = 0,
|
||||
SND_EXPL_L1,
|
||||
|
@ -65,7 +65,7 @@ Notes:
|
||||
|
||||
TODO:
|
||||
|
||||
- PWM sound in ABC-klubben/abc80/grafik/flagga.bac
|
||||
- PWM sound in ABC-klubben/abc80/grafik/flagga.bac
|
||||
- proper keyboard controller emulation
|
||||
- MyAB TKN80 80-column card
|
||||
- GeJo 80-column card
|
||||
|
@ -141,7 +141,7 @@ Notes:
|
||||
|
||||
TODO:
|
||||
|
||||
- option ROM/HR video RAM access needs refactor of memory banking
|
||||
- option ROM/HR video RAM access needs refactor of memory banking
|
||||
- cassette
|
||||
- abc806 RTC
|
||||
- abc806 disks except ufd631 won't boot
|
||||
|
@ -43,7 +43,7 @@ public:
|
||||
required_shared_ptr<uint16_t> m_vregs;
|
||||
|
||||
/* video-related */
|
||||
TILEMAP_MAPPER_MEMBER(pagescan);
|
||||
TILEMAP_MAPPER_MEMBER(pagescan);
|
||||
tilemap_t *m_bg_tilemap;
|
||||
tilemap_t *m_fg_tilemap;
|
||||
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)
|
||||
{
|
||||
return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x300) << 5);
|
||||
// return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x100) << 5); // see comment with tilemap creation
|
||||
// return (col &0xff) * (num_rows>>1) + (row & 0xf) + ((row & 0x10)<<8) + ((col & 0x100) << 5); // see comment with tilemap creation
|
||||
}
|
||||
|
||||
|
||||
@ -107,8 +107,8 @@ void acchi_state::video_start()
|
||||
m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_fg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024,16*2);
|
||||
|
||||
// 2nd half of the ram seems unused, maybe it's actually a mirror meaning this would be the correct tilemap sizes
|
||||
// m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_bg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2);
|
||||
// m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_fg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2);
|
||||
// m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_bg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2);
|
||||
// m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(acchi_state::get_acchi_fg_tile_info),this), tilemap_mapper_delegate(FUNC(acchi_state::pagescan),this), 16, 16, 1024/2,16*2);
|
||||
|
||||
m_fg_tilemap->set_transparent_pen(0xf);
|
||||
}
|
||||
@ -134,7 +134,7 @@ uint32_t acchi_state::screen_update_acchi(screen_device &screen, bitmap_ind16 &b
|
||||
scrolly&=0x1ff;
|
||||
|
||||
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);
|
||||
@ -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",
|
||||
m_vregs[0], m_vregs[1],
|
||||
m_vregs[2], m_vregs[3],
|
||||
m_vregs[4], m_vregs[5],
|
||||
m_vregs[6], m_vregs[7]);
|
||||
m_vregs[0], m_vregs[1],
|
||||
m_vregs[2], m_vregs[3],
|
||||
m_vregs[4], m_vregs[5],
|
||||
m_vregs[6], m_vregs[7]);
|
||||
*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
also
|
||||
also
|
||||
|
||||
[:maincpu] ':maincpu' (00A284): unmapped program memory write to 110400 = 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(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(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(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(0x150000, 0x150001) AM_WRITENOP // ? also reads (oki?)
|
||||
AM_RANGE(0x150010, 0x150011) AM_WRITENOP // ? also reads
|
||||
|
||||
AM_RANGE(0x180000, 0x18ffff) AM_RAM // mainram?
|
||||
AM_RANGE(0x180000, 0x18ffff) AM_RAM // mainram?
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( acchi ) // inputs register in test mode but not in game mode?
|
||||
@ -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(0x80, 0x00, "DSW1:1")
|
||||
|
||||
|
||||
|
||||
PORT_START("DSW2")
|
||||
PORT_DIPUNKNOWN_DIPLOC(0x01, 0x00, "DSW2:8")
|
||||
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_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
|
||||
|
||||
ROM_START( acchi )
|
||||
|
@ -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)
|
||||
{
|
||||
uint8_t x,y;
|
||||
|
||||
|
||||
for (offs_t offs = 0; offs < m_videoram.bytes(); offs++)
|
||||
{
|
||||
uint8_t data = m_videoram[offs];
|
||||
|
@ -1307,7 +1307,7 @@ static INPUT_PORTS_START(crospuzl)
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN2" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
@ -1334,7 +1334,7 @@ static INPUT_PORTS_START(crospuzl)
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
PORT_BIT( 0xffffff00, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
|
||||
PORT_START("IN3")
|
||||
PORT_DIPNAME( 0x01, 0x01, "IN3" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
|
@ -9,7 +9,7 @@
|
||||
Appears to be a down-grade of the nmk16 HW
|
||||
|
||||
TODO:
|
||||
- Fix MCU simulation for credit subtractions & add coinage settings (currently set to free play for convenience);
|
||||
- Fix MCU simulation for credit subtractions & add coinage settings (currently set to free play for convenience);
|
||||
- Understand better the video emulation and convert it to tilemaps;
|
||||
- Decap + emulate MCU, required if the random number generation is going to be accurate;
|
||||
|
||||
@ -563,7 +563,7 @@ static INPUT_PORTS_START( ddealer )
|
||||
PORT_DIPUNUSED_DIPLOC( 0x8000, IP_ACTIVE_LOW, "SW2:1" ) /* Listed as "Always Off" */
|
||||
|
||||
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 )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
@ -2937,7 +2937,7 @@ ROM_END
|
||||
|
||||
ROM_START( ghostb3a )
|
||||
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( "dz03-.4d", 0x20000, 0x10000, CRC(5606a8f4) SHA1(e46e887f13f648fe2162cb853b3c20fa60e3d215) ) // == dz03.4d (ghostb3)
|
||||
ROM_LOAD( "dz04-.6d", 0x30000, 0x10000, CRC(490b4525) SHA1(3066b76f8fe99c8f9f1cdf943209883a199a4184) )
|
||||
|
@ -242,8 +242,8 @@ WRITE8_MEMBER(discoboy_state::port_01_w)
|
||||
|
||||
WRITE8_MEMBER(discoboy_state::port_06_w)
|
||||
{
|
||||
//printf("unk discoboy_port_06_w %02x\n",data);
|
||||
if (data != 0) logerror("port 06!!!! %02x\n",data);
|
||||
//printf("unk discoboy_port_06_w %02x\n",data);
|
||||
if (data != 0) logerror("port 06!!!! %02x\n",data);
|
||||
}
|
||||
|
||||
READ8_MEMBER(discoboy_state::rambank2_r)
|
||||
|
@ -1110,7 +1110,7 @@ WRITE8_MEMBER(fidelz80_state::dsc_select_w)
|
||||
{
|
||||
// d4: speaker out
|
||||
m_dac->write(BIT(~data, 4));
|
||||
|
||||
|
||||
// d0-d3: digit select
|
||||
m_led_select = data & 0xf;
|
||||
dsc_prepare_display();
|
||||
|
@ -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
|
||||
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) )
|
||||
ROM_END
|
||||
|
||||
|
@ -17,14 +17,14 @@
|
||||
Main CPU: 68000-12
|
||||
Video: 056832 / 058143 (GX tilemaps)
|
||||
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:
|
||||
- GI-Classic (1995)
|
||||
- GI-Classic Special (1996)
|
||||
- GI-Classic WINDS (1996)
|
||||
- GI-Classic WINDS EX (1998)
|
||||
|
||||
|
||||
Other "GI" games, list from http://www.konami.jp/am/g1/
|
||||
- GI-LEADING SIRE (1999)
|
||||
- GI-LEADING SIRE Ver. 2 (2000)
|
||||
@ -40,7 +40,7 @@
|
||||
- GI-HORSEPARK GX STD (2009)
|
||||
- GI-HORSEPARK GX (2009)
|
||||
- GI-Turf TV (2010)
|
||||
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
@ -68,7 +68,7 @@ public:
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
DECLARE_PALETTE_INIT(giclassic);
|
||||
|
||||
|
||||
INTERRUPT_GEN_MEMBER(giclassic_interrupt);
|
||||
|
||||
virtual void machine_start() override;
|
||||
@ -76,7 +76,7 @@ public:
|
||||
virtual void video_start() override;
|
||||
uint32_t screen_update_giclassic(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
K056832_CB_MEMBER(tile_callback);
|
||||
|
||||
|
||||
DECLARE_WRITE16_MEMBER(control_w);
|
||||
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, 2, 0, 2);
|
||||
m_k056832->tilemap_draw(screen, bitmap, cliprect, 1, 0, 4);
|
||||
// m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, 0, 8);
|
||||
// m_k056832->tilemap_draw(screen, bitmap, cliprect, 0, 0, 8);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -145,13 +145,13 @@ static ADDRESS_MAP_START( satellite_main, AS_PROGRAM, 16, giclassic_state )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_REGION("maincpu", 0)
|
||||
AM_RANGE(0x100000, 0x103fff) AM_RAM
|
||||
AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x800000, 0x801fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
|
||||
AM_RANGE(0x800000, 0x801fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
|
||||
AM_RANGE(0x900000, 0x90003f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w)
|
||||
AM_RANGE(0xb00000, 0xb01fff) AM_READ(vrom_r)
|
||||
AM_RANGE(0xc00000, 0xc00001) AM_WRITE(control_w)
|
||||
AM_RANGE(0xd00000, 0xd0003f) AM_RAM // these must read/write or 26S (LCD controller) fails
|
||||
AM_RANGE(0xd00000, 0xd0003f) AM_RAM // these must read/write or 26S (LCD controller) fails
|
||||
AM_RANGE(0xe00000, 0xe0001f) AM_DEVWRITE8("k056832", k056832_device, b_w, 0xff00)
|
||||
AM_RANGE(0xf00000, 0xf00001) AM_NOP AM_WRITENOP // watchdog reset
|
||||
AM_RANGE(0xf00000, 0xf00001) AM_NOP AM_WRITENOP // watchdog reset
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static INPUT_PORTS_START( giclassic )
|
||||
@ -192,10 +192,10 @@ public:
|
||||
uint32_t screen_update_giclassicsvr(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
K056832_CB_MEMBER(tile_callback);
|
||||
K055673_CB_MEMBER(sprite_callback);
|
||||
|
||||
|
||||
DECLARE_WRITE16_MEMBER(control_w);
|
||||
DECLARE_READ16_MEMBER(control_r);
|
||||
|
||||
|
||||
private:
|
||||
uint16 m_control;
|
||||
};
|
||||
@ -209,7 +209,7 @@ READ16_MEMBER(giclassicsvr_state::control_r)
|
||||
{
|
||||
return m_control;
|
||||
}
|
||||
|
||||
|
||||
INTERRUPT_GEN_MEMBER(giclassicsvr_state::giclassicsvr_interrupt)
|
||||
{
|
||||
//if (m_control & 2)
|
||||
@ -235,12 +235,12 @@ K055673_CB_MEMBER(giclassicsvr_state::sprite_callback)
|
||||
// ..x. .... .... .... - ?
|
||||
|
||||
*priority_mask = 0;
|
||||
|
||||
|
||||
// 0 - Sprites over everything
|
||||
// f0 -
|
||||
// f0 cc -
|
||||
// f0 cc aa -
|
||||
|
||||
|
||||
// 1111 0000
|
||||
// 1100 1100
|
||||
// 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(0x100000, 0x107fff) AM_RAM AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x180000, 0x183fff) AM_RAM
|
||||
AM_RANGE(0x280000, 0x281fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
|
||||
AM_RANGE(0x280000, 0x281fff) AM_RAM AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w)
|
||||
AM_RANGE(0x300000, 0x300007) AM_DEVWRITE("k055673", k055673_device, k053246_word_w) // SPRITES
|
||||
AM_RANGE(0x300060, 0x30006f) AM_DEVREAD("k055673", k055673_device, k055673_ps_rom_word_r) // SPRITES
|
||||
AM_RANGE(0x308000, 0x30803f) AM_DEVREADWRITE("k056832", k056832_device, word_r, word_w)
|
||||
AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252a", k053252_device, read, write, 0x00ff) // CRTC 1
|
||||
AM_RANGE(0x320000, 0x32001f) AM_DEVREADWRITE8("k053252b", k053252_device, read, write, 0xff00) // CRTC 2
|
||||
AM_RANGE(0x380000, 0x380001) AM_WRITENOP // watchdog reset
|
||||
AM_RANGE(0x380000, 0x380001) AM_WRITENOP // watchdog reset
|
||||
AM_RANGE(0x398000, 0x398001) AM_READWRITE(control_r, control_w)
|
||||
AM_RANGE(0x400000, 0x41ffff) AM_RAM
|
||||
ADDRESS_MAP_END
|
||||
@ -317,7 +317,7 @@ MACHINE_CONFIG_END
|
||||
static MACHINE_CONFIG_START( giclassvr, giclassicsvr_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // unknown speed
|
||||
MCFG_CPU_ADD("maincpu", M68000, XTAL_16MHz) // unknown speed
|
||||
MCFG_CPU_PROGRAM_MAP(server_main)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", giclassicsvr_state, giclassicsvr_interrupt)
|
||||
|
||||
@ -338,39 +338,39 @@ static MACHINE_CONFIG_START( giclassvr, giclassicsvr_state )
|
||||
MCFG_K056832_CB(giclassicsvr_state, tile_callback)
|
||||
MCFG_K056832_CONFIG("gfx1", K056832_BPP_4PIRATESH, 0, 0, "none")
|
||||
MCFG_K056832_PALETTE("palette")
|
||||
|
||||
|
||||
MCFG_DEVICE_ADD("k055673", K055673, 0)
|
||||
MCFG_K055673_CB(giclassicsvr_state, sprite_callback)
|
||||
MCFG_K055673_CONFIG("gfx2", K055673_LAYOUT_PS, -60, 24)
|
||||
MCFG_K055673_PALETTE("palette")
|
||||
|
||||
|
||||
MCFG_DEVICE_ADD("k053252a", K053252, XTAL_32MHz/4)
|
||||
MCFG_K053252_OFFSETS(40, 16) // TODO
|
||||
|
||||
|
||||
MCFG_DEVICE_ADD("k053252b", K053252, XTAL_32MHz/4)
|
||||
MCFG_K053252_OFFSETS(40, 16) // TODO
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
ROM_START( giclasex )
|
||||
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_LOAD( "gsgu760ae03.14c", 0x000000, 0x080000, CRC(1663d327) SHA1(98c1a9653d38f4918f78b3a11af0c29c658201f5) )
|
||||
ROM_LOAD( "gsgu760ae02.14e", 0x080000, 0x080000, CRC(2b9fe163) SHA1(f60190a9689a70d6c5bb14fb46b7ac2267cf0969) )
|
||||
ROM_LOAD( "gsgu760ae03.14c", 0x000000, 0x080000, CRC(1663d327) SHA1(98c1a9653d38f4918f78b3a11af0c29c658201f5) )
|
||||
ROM_LOAD( "gsgu760ae02.14e", 0x080000, 0x080000, CRC(2b9fe163) SHA1(f60190a9689a70d6c5bb14fb46b7ac2267cf0969) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( giclassvr )
|
||||
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_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_ad04.25q", 0x080000, 0x080000, CRC(71a45742) SHA1(fbddd54f5fb236662f7cc7e9b350723bc5404f72) )
|
||||
ROM_LOAD( "gsgu_760_ad05.25r", 0x000000, 0x080000, CRC(44221eec) SHA1(966452e606e828b536ed11cbdd626a2fe3165199) )
|
||||
|
||||
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.34k", 0x000002, 0x080000, CRC(8057a417) SHA1(82d4a1d84729e9f0a8aff4c219a19601b89caf15) )
|
||||
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_END
|
||||
|
||||
GAME( 1998, giclasex, 0, giclassic, giclassic, driver_device, 0, 0, "Konami", "GI-Classic EX (satellite terminal)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND_HW)
|
||||
|
@ -254,7 +254,7 @@ MACHINE_CONFIG_END
|
||||
Konami Contra
|
||||
* PCB label BH002
|
||||
* Sharp SM511 under epoxy (die label KMS73B, KMS773)
|
||||
|
||||
|
||||
Contra handheld is titled simply "C" in the USA.
|
||||
|
||||
***************************************************************************/
|
||||
@ -649,7 +649,7 @@ MACHINE_CONFIG_END
|
||||
|
||||
Nintendo Game & Watch: Boxing (model BX-301)
|
||||
* Sharp SM511 label BX-301 287C (die label KMS73B, KMS744)
|
||||
|
||||
|
||||
Also known as Punch-Out!! in the USA.
|
||||
|
||||
***************************************************************************/
|
||||
|
@ -150,31 +150,31 @@
|
||||
|
||||
// Constants of 98770A video
|
||||
// HBEND & VBEND probably are not really 0
|
||||
#define VIDEO_770_PIXEL_CLOCK 29798400
|
||||
#define VIDEO_770_HTOTAL 1024
|
||||
#define VIDEO_770_HBEND 0
|
||||
#define VIDEO_770_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH)
|
||||
#define VIDEO_770_VTOTAL 485
|
||||
#define VIDEO_770_VBEND 0
|
||||
#define VIDEO_770_VBSTART (VIDEO_770_VBEND + GVIDEO_VPIXELS)
|
||||
#define VIDEO_770_ALPHA_L_LIM 80 // Left-side limit of alpha-only horizontal part
|
||||
#define VIDEO_770_ALPHA_R_LIM 640 // Right-side limit of alpha-only horizontal part
|
||||
#define VIDEO_770_PIXEL_CLOCK 29798400
|
||||
#define VIDEO_770_HTOTAL 1024
|
||||
#define VIDEO_770_HBEND 0
|
||||
#define VIDEO_770_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH)
|
||||
#define VIDEO_770_VTOTAL 485
|
||||
#define VIDEO_770_VBEND 0
|
||||
#define VIDEO_770_VBSTART (VIDEO_770_VBEND + GVIDEO_VPIXELS)
|
||||
#define VIDEO_770_ALPHA_L_LIM 80 // Left-side limit of alpha-only horizontal part
|
||||
#define VIDEO_770_ALPHA_R_LIM 640 // Right-side limit of alpha-only horizontal part
|
||||
|
||||
// Constants of 98780A video
|
||||
#define VIDEO_780_PIXEL_CLOCK 28224000
|
||||
#define VIDEO_780_HTOTAL 896
|
||||
#define VIDEO_780_VTOTAL 525
|
||||
#define VIDEO_780_HBEND 0
|
||||
#define VIDEO_780_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH)
|
||||
#define VIDEO_780_VBEND 0
|
||||
#define VIDEO_780_VBSTART (VIDEO_780_VBEND + GVIDEO_VPIXELS)
|
||||
#define VIDEO_780_ALPHA_L_LIM 80 // Left-side limit of alpha-only horizontal part
|
||||
#define VIDEO_780_ALPHA_R_LIM 640 // Right-side limit of alpha-only horizontal part
|
||||
#define VIDEO_780_PIXEL_CLOCK 28224000
|
||||
#define VIDEO_780_HTOTAL 896
|
||||
#define VIDEO_780_VTOTAL 525
|
||||
#define VIDEO_780_HBEND 0
|
||||
#define VIDEO_780_HBSTART (VIDEO_CHAR_COLUMNS * VIDEO_CHAR_WIDTH)
|
||||
#define VIDEO_780_VBEND 0
|
||||
#define VIDEO_780_VBSTART (VIDEO_780_VBEND + GVIDEO_VPIXELS)
|
||||
#define VIDEO_780_ALPHA_L_LIM 80 // Left-side limit of alpha-only horizontal part
|
||||
#define VIDEO_780_ALPHA_R_LIM 640 // Right-side limit of alpha-only horizontal part
|
||||
|
||||
#define I_GR 0xb0 // graphics intensity
|
||||
#define I_AL 0xd0 // alpha intensity
|
||||
#define I_CU 0xf0 // graphics cursor intensity
|
||||
#define I_LP 0xff // light pen cursor intensity
|
||||
#define I_GR 0xb0 // graphics intensity
|
||||
#define I_AL 0xd0 // alpha intensity
|
||||
#define I_CU 0xf0 // graphics cursor intensity
|
||||
#define I_LP 0xff // light pen cursor intensity
|
||||
|
||||
// Palette indexes (for monochromatic screens)
|
||||
#define PEN_BLACK 0 // Black
|
||||
@ -188,10 +188,10 @@ constexpr unsigned LP_FOV = 9; // Field of view
|
||||
constexpr unsigned LP_XOFFSET = 5; // x-offset of LP (due to delay in hit recognition)
|
||||
|
||||
// Peripheral Addresses (PA)
|
||||
#define IO_SLOT_FIRST_PA 1
|
||||
#define IO_SLOT_LAST_PA 12
|
||||
#define IO_SLOT_FIRST_PA 1
|
||||
#define IO_SLOT_LAST_PA 12
|
||||
#define GVIDEO_PA 13
|
||||
#define T14_PA 14
|
||||
#define T14_PA 14
|
||||
#define T15_PA 15
|
||||
|
||||
#define KEY_SCAN_OSCILLATOR 327680
|
||||
@ -2649,11 +2649,11 @@ void hp9845t_state::machine_start()
|
||||
m_graphic_mem.resize(GVIDEO_MEM_SIZE);
|
||||
|
||||
// initialize palette
|
||||
m_palette->set_pen_color(PEN_BLACK , 0x00, 0x00, 0x00); // black
|
||||
m_palette->set_pen_color(PEN_GRAPHIC, 0x00, I_GR, 0x00); // graphics
|
||||
m_palette->set_pen_color(PEN_ALPHA , 0x00, I_AL, 0x00); // alpha
|
||||
m_palette->set_pen_color(PEN_CURSOR , 0x00, I_CU, 0x00); // graphics cursor
|
||||
m_palette->set_pen_color(PEN_LP , 0x00, I_LP, 0x00); // lightpen cursor
|
||||
m_palette->set_pen_color(PEN_BLACK , 0x00, 0x00, 0x00); // black
|
||||
m_palette->set_pen_color(PEN_GRAPHIC, 0x00, I_GR, 0x00); // graphics
|
||||
m_palette->set_pen_color(PEN_ALPHA , 0x00, I_AL, 0x00); // alpha
|
||||
m_palette->set_pen_color(PEN_CURSOR , 0x00, I_CU, 0x00); // graphics cursor
|
||||
m_palette->set_pen_color(PEN_LP , 0x00, I_LP, 0x00); // lightpen cursor
|
||||
}
|
||||
|
||||
void hp9845t_state::machine_reset()
|
||||
@ -2697,18 +2697,18 @@ READ16_MEMBER(hp9845t_state::graphic_r)
|
||||
BIT_SET(res, 6);
|
||||
}
|
||||
if (m_gv_lp_status && m_gv_lp_int_en) {
|
||||
BIT_SET(res, 0); // Lightpen service request
|
||||
BIT_SET(res, 0); // Lightpen service request
|
||||
}
|
||||
// TODO: gsr/
|
||||
// TODO: fix sk status
|
||||
if (m_gv_sk_status) {
|
||||
BIT_SET(res, 1); // Softkey service request
|
||||
BIT_SET(res, 1); // Softkey service request
|
||||
m_gv_sk_status = false;
|
||||
}
|
||||
BIT_SET(res, 9); // ID
|
||||
BIT_SET(res, 11); // ID
|
||||
BIT_SET(res, 9); // ID
|
||||
BIT_SET(res, 11); // ID
|
||||
if (m_gv_stat) {
|
||||
BIT_SET(res, 13); // error indication
|
||||
BIT_SET(res, 13); // error indication
|
||||
}
|
||||
|
||||
update_graphic_bits();
|
||||
@ -2758,8 +2758,8 @@ WRITE16_MEMBER(hp9845t_state::graphic_w)
|
||||
m_gv_gr_en = BIT(data , 8); // enables graphics controller & vector generator command processing and IRQs
|
||||
m_gv_sk_en = BIT(data , 9); // enables reads on R4 to return SK keycode, also enables SK IRQs
|
||||
m_gv_opt_en = BIT(data , 11); // not really used
|
||||
m_gv_dsa_en = BIT(data , 12); // for factory use only (function unknown)
|
||||
m_gv_fsm_state = GV_STAT_RESET; // command/reset state machine
|
||||
m_gv_dsa_en = BIT(data , 12); // for factory use only (function unknown)
|
||||
m_gv_fsm_state = GV_STAT_RESET; // command/reset state machine
|
||||
lp_r5_w(data);
|
||||
advance_gv_fsm(false , false);
|
||||
break;
|
||||
@ -2808,7 +2808,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(hp9845t_state::scanline_timer)
|
||||
|
||||
void hp9845t_state::set_graphic_mode(bool graphic , bool alpha)
|
||||
{
|
||||
m_back_arrow_cursor = graphic; // triggers back arrow cursor, 98780A uses video on/off command for enabling/disabling graphics
|
||||
m_back_arrow_cursor = graphic; // triggers back arrow cursor, 98780A uses video on/off command for enabling/disabling graphics
|
||||
m_alpha_sel = alpha;
|
||||
}
|
||||
|
||||
@ -2955,20 +2955,20 @@ void hp9845t_state::plot(uint16_t x, uint16_t y, bool draw_erase)
|
||||
if (BIT(m_gv_rb_control, 1)) {
|
||||
// save graphics memory to rubber band memory
|
||||
if (m_graphic_mem[ addr ] & pixel_mask)
|
||||
m_gv_rb_memory[m_gv_rb_counter/16] |= 0x1 << (m_gv_rb_counter % 16); // set
|
||||
m_gv_rb_memory[m_gv_rb_counter/16] |= 0x1 << (m_gv_rb_counter % 16); // set
|
||||
else
|
||||
m_gv_rb_memory[m_gv_rb_counter/16] &= ~(0x1 << (m_gv_rb_counter % 16)); // clear
|
||||
m_gv_rb_memory[m_gv_rb_counter/16] &= ~(0x1 << (m_gv_rb_counter % 16)); // clear
|
||||
m_gv_rb_counter++;
|
||||
if (m_gv_rb_counter > 4095) {
|
||||
m_gv_stat = true; // we might prevent data corruption here, but the original hardware doesn't
|
||||
m_gv_stat = true; // we might prevent data corruption here, but the original hardware doesn't
|
||||
m_gv_rb_counter = 0;
|
||||
}
|
||||
} else if (BIT(m_gv_rb_control, 0)) {
|
||||
// restore graphics memory from rubber band memory
|
||||
if (BIT(m_gv_rb_memory[m_gv_rb_counter / 16], m_gv_rb_counter % 16))
|
||||
m_graphic_mem[ addr ] |= pixel_mask; // set
|
||||
m_graphic_mem[ addr ] |= pixel_mask; // set
|
||||
else
|
||||
m_graphic_mem[ addr ] &= ~pixel_mask; // clear
|
||||
m_graphic_mem[ addr ] &= ~pixel_mask; // clear
|
||||
m_gv_rb_counter++;
|
||||
if (m_gv_rb_counter > 4095) {
|
||||
m_gv_stat = true;
|
||||
@ -3020,16 +3020,16 @@ void hp9845t_state::draw_arc(uint16_t x0, uint16_t y0, int xstart, int ystart, u
|
||||
if (do_plot) {
|
||||
switch (quadrant) {
|
||||
case 0:
|
||||
plot(x0 + x1, y0 - y1, draw_erase); // quadrant 0
|
||||
plot(x0 + x1, y0 - y1, draw_erase); // quadrant 0
|
||||
break;
|
||||
case 1:
|
||||
plot(x0 - y1, y0 - x1, draw_erase); // quadrant 1
|
||||
plot(x0 - y1, y0 - x1, draw_erase); // quadrant 1
|
||||
break;
|
||||
case 2:
|
||||
plot(x0 - x1, y0 + y1, draw_erase); // quadrant 2
|
||||
plot(x0 - x1, y0 + y1, draw_erase); // quadrant 2
|
||||
break;
|
||||
case 3:
|
||||
plot(x0 + y1, y0 + x1, draw_erase); // quadrant 3
|
||||
plot(x0 + y1, y0 + x1, draw_erase); // quadrant 3
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -3112,7 +3112,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position);
|
||||
}
|
||||
LOG(("read words, last = %x\n", m_gv_last_cmd));
|
||||
m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> read stream
|
||||
m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> read stream
|
||||
m_gv_last_cmd = m_gv_cmd;
|
||||
} else if (m_gv_cmd == 0xd) {
|
||||
// fast clear/set command
|
||||
@ -3125,10 +3125,10 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position);
|
||||
}
|
||||
LOG(("write words\n"));
|
||||
m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> write stream
|
||||
m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> write stream
|
||||
} else {
|
||||
// any other command
|
||||
m_gv_fsm_state = GV_STAT_WAIT_TRIG_0; // -> wait for trigger
|
||||
m_gv_fsm_state = GV_STAT_WAIT_TRIG_0; // -> wait for trigger
|
||||
}
|
||||
m_gv_last_cmd = m_gv_cmd;
|
||||
} else {
|
||||
@ -3139,21 +3139,21 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
case GV_STAT_WAIT_TRIG_0:
|
||||
// process data on R4 or R6
|
||||
switch (m_gv_cmd) {
|
||||
case 0x1: // load end points
|
||||
case 0x1: // load end points
|
||||
m_gv_ypt = m_gv_data_w & 0x3ff;
|
||||
LOG(("load end points y = %d\n", m_gv_ypt));
|
||||
break;
|
||||
case 0x3: // load arc
|
||||
case 0x3: // load arc
|
||||
m_gv_arc_parm = 0;
|
||||
m_gv_arc[ m_gv_arc_parm ] = m_gv_data_w;
|
||||
LOG(("load arc parm%d = %04x\n", m_gv_arc_parm, m_gv_arc[m_gv_arc_parm]));
|
||||
m_gv_arc_parm++;
|
||||
break;
|
||||
case 0x5: // load scan
|
||||
m_gv_scan_start_x = m_gv_data_w & 0x3ff; // 0..559
|
||||
case 0x5: // load scan
|
||||
m_gv_scan_start_x = m_gv_data_w & 0x3ff; // 0..559
|
||||
LOG(("load scan x = %d\n", m_gv_scan_start_x));
|
||||
break;
|
||||
case 0x6: // set line type/area fill
|
||||
case 0x6: // set line type/area fill
|
||||
m_gv_line_type_area_fill = m_gv_data_w & 0x1ff;
|
||||
if (BIT(m_gv_line_type_area_fill, 4)) {
|
||||
m_gv_line_type_mask = m_line_type[ m_gv_line_type_area_fill & 0x7 ];
|
||||
@ -3161,29 +3161,29 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
}
|
||||
LOG(("set line type = %04x\n", m_gv_line_type_area_fill));
|
||||
break;
|
||||
case 0x7: // load X/Y I/O address
|
||||
m_gv_word_y_position = m_gv_data_w & 0x1ff; // 0..454
|
||||
case 0x7: // load X/Y I/O address
|
||||
m_gv_word_y_position = m_gv_data_w & 0x1ff; // 0..454
|
||||
LOG(("load X/Y I/O adress y = %04x\n", m_gv_word_y_position));
|
||||
break;
|
||||
case 0xa: // load memory control
|
||||
case 0xa: // load memory control
|
||||
// A single bit is saved (InvBit)
|
||||
m_gv_memory_control = (m_gv_data_w & 0x9) == 9 || (m_gv_data_w & 0x12) == 0x12 || (m_gv_data_w & 0x24) == 0x24;
|
||||
LOG(("load memory control = %04x\n", m_gv_memory_control));
|
||||
break;
|
||||
case 0xb: // video on/off - enable graphics video output (1=on 2=off)
|
||||
case 0xb: // video on/off - enable graphics video output (1=on 2=off)
|
||||
m_graphic_sel = BIT(m_gv_data_w, 0);
|
||||
LOG(("video on/off parm = %d\n", m_gv_data_w & 0x3));
|
||||
break;
|
||||
case 0xc: // load color mask (no effect, just for compatibility with 9845c), takes a single word as parameter
|
||||
case 0xc: // load color mask (no effect, just for compatibility with 9845c), takes a single word as parameter
|
||||
break;
|
||||
case 0xe: // Y cursor position
|
||||
case 0xe: // Y cursor position
|
||||
m_gv_cursor_fs = (m_gv_data_w & 0x3) == 0;
|
||||
m_gv_cursor_gc = ((m_gv_data_w & 0x3) == 1) || m_gv_cursor_fs;
|
||||
m_gv_cursor_y = 559 - (m_gv_data_w >> 7);
|
||||
if (m_gv_cursor_fs) m_gv_cursor_y -= 4;
|
||||
LOG(("Y cursor position = %d, fs = %d, gc = %d\n", m_gv_cursor_y, m_gv_cursor_fs, m_gv_cursor_gc));
|
||||
break;
|
||||
case 0xf: // X cursor position
|
||||
case 0xf: // X cursor position
|
||||
m_gv_cursor_x = ((m_gv_data_w >> 6) & 0x3ff) - 121;
|
||||
LOG(("X cursor position = %d\n", m_gv_cursor_x));
|
||||
break;
|
||||
@ -3191,10 +3191,10 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
LOG(("unknown 98780A command = %d, parm = 0x%04x\n", m_gv_cmd, m_gv_data_w));
|
||||
}
|
||||
if ((m_gv_cmd == 0x1) || (m_gv_cmd == 0x3) || (m_gv_cmd == 0x5) || (m_gv_cmd == 0x7)) {
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> get second data word
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> get second data word
|
||||
} else {
|
||||
get_out = true;
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> done
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> done
|
||||
}
|
||||
break;
|
||||
|
||||
@ -3206,7 +3206,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
m_gv_data_r = m_graphic_mem[ m_gv_io_counter ];
|
||||
LOG(("read words @%04x = %04x\n" , m_gv_io_counter , m_gv_data_r));
|
||||
m_gv_io_counter = (m_gv_io_counter + 1) & GVIDEO_ADDR_MASK;
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_1; // -> proceed with read stream
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_1; // -> proceed with read stream
|
||||
} else {
|
||||
m_gv_timer->adjust(time_mem_av);
|
||||
get_out = true;
|
||||
@ -3217,7 +3217,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
// wait for data word to be read
|
||||
if (ds) {
|
||||
// -- next word
|
||||
m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> process data word
|
||||
m_gv_fsm_state = GV_STAT_WAIT_MEM_0; // -> process data word
|
||||
} else {
|
||||
// -- done
|
||||
get_out = true;
|
||||
@ -3228,7 +3228,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
// wait for data word to be written
|
||||
if (ds) {
|
||||
// -- next word
|
||||
m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> process data word
|
||||
m_gv_fsm_state = GV_STAT_WAIT_TRIG_1; // -> process data word
|
||||
} else {
|
||||
// done
|
||||
get_out = true;
|
||||
@ -3250,12 +3250,12 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
if (BIT(m_gv_data_w, 11)) {
|
||||
// draw vector
|
||||
LOG(("load end points x = %d, rb = %d (draw)\n", m_gv_xpt, m_gv_rb_control));
|
||||
m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector
|
||||
m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector
|
||||
} else {
|
||||
LOG(("load end points x = %d, rb = %d (move)\n", m_gv_xpt, m_gv_rb_control));
|
||||
m_gv_last_xpt = m_gv_xpt;
|
||||
m_gv_last_ypt = m_gv_ypt;
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> proceed with next word pair
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_0; // -> proceed with next word pair
|
||||
}
|
||||
break;
|
||||
|
||||
@ -3265,22 +3265,22 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
LOG(("load arc parm%d = %04x\n", m_gv_arc_parm, m_gv_arc[m_gv_arc_parm]));
|
||||
m_gv_arc_parm++;
|
||||
if (m_gv_arc_parm < 4) {
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with next word
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with next word
|
||||
} else {
|
||||
m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector
|
||||
m_gv_fsm_state = GV_STAT_WAIT_MEM_2; // -> proceed with draw vector
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x5:
|
||||
// load scan
|
||||
m_gv_scan_start_y = m_gv_data_w & 0x3ff; // 0..454
|
||||
m_gv_scan_start_y = m_gv_data_w & 0x3ff; // 0..454
|
||||
LOG(("load scan y = %d\n", m_gv_scan_start_y));
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_0;
|
||||
break;
|
||||
|
||||
case 0x7:
|
||||
// load X/Y I/O address
|
||||
m_gv_word_x_position = (m_gv_data_w & 0x3f0) >> 4; // 0..34
|
||||
m_gv_word_x_position = (m_gv_data_w & 0x3f0) >> 4; // 0..34
|
||||
m_gv_increment_to_next_row = BIT(m_gv_data_w, 11);
|
||||
m_gv_io_counter = get_gv_mem_addr(m_gv_word_x_position , m_gv_word_y_position);
|
||||
LOG(("load X/Y I/O adress x = %04x increment = %d\n", m_gv_word_x_position, m_gv_increment_to_next_row));
|
||||
@ -3289,7 +3289,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
|
||||
case 0x8:
|
||||
// write words command
|
||||
m_gv_fsm_state = GV_STAT_WAIT_MEM_1; // -> proceed with next word
|
||||
m_gv_fsm_state = GV_STAT_WAIT_MEM_1; // -> proceed with next word
|
||||
break;
|
||||
}
|
||||
break;
|
||||
@ -3304,7 +3304,7 @@ void hp9845t_state::advance_gv_fsm(bool ds , bool trigger)
|
||||
if (!m_gv_increment_to_next_row || (m_gv_word_x_position < 34)) {
|
||||
m_gv_io_counter = (m_gv_io_counter + 1) & GVIDEO_ADDR_MASK;
|
||||
}
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with write stream
|
||||
m_gv_fsm_state = GV_STAT_WAIT_DS_2; // -> proceed with write stream
|
||||
} else {
|
||||
m_gv_timer->adjust(time_mem_av);
|
||||
get_out = true;
|
||||
@ -3470,31 +3470,31 @@ static MACHINE_CONFIG_START( hp9835a, hp9845_state )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
/*
|
||||
Global memory map in blocks of 32 kwords / 64 kbytes each:
|
||||
Global memory map in blocks of 32 kwords / 64 kbytes each:
|
||||
|
||||
block 0: 0x000000 - 0x007fff (LPU RAM)
|
||||
block 1: 0x008000 - 0x00ffff (PPU RAM, only 0x00c000 - 0x00ffff used)
|
||||
block 2: 0x010000 - 0x017fff (unused)
|
||||
block 3: 0x018000 - 0x01ffff (LPU system ROM)
|
||||
block 4: 0x020000 - 0x027fff (LPU RAM)
|
||||
block 5: 0x028000 - 0x02ffff (PPU system ROM)
|
||||
block 6: 0x030000 - 0x037fff (LPU RAM)
|
||||
block 7: 0x038000 - 0x03ffff (LPU option ROM)
|
||||
block 10: 0x040000 - 0x047fff (LPU RAM)
|
||||
block 11: 0x048000 - 0x04ffff (PPU option ROM)
|
||||
block 12: 0x050000 - 0x057fff (LPU RAM)
|
||||
block 13: 0x058000 - 0x05ffff (LPU option ROM)
|
||||
block 14: 0x060000 - 0x067fff (LPU RAM)
|
||||
block 15: 0x068000 - 0x06ffff (PPU option ROM)
|
||||
block 16: 0x070000 - 0x077fff (LPU RAM)
|
||||
block 17: 0x078000 - 0x07ffff (unused)
|
||||
block 0: 0x000000 - 0x007fff (LPU RAM)
|
||||
block 1: 0x008000 - 0x00ffff (PPU RAM, only 0x00c000 - 0x00ffff used)
|
||||
block 2: 0x010000 - 0x017fff (unused)
|
||||
block 3: 0x018000 - 0x01ffff (LPU system ROM)
|
||||
block 4: 0x020000 - 0x027fff (LPU RAM)
|
||||
block 5: 0x028000 - 0x02ffff (PPU system ROM)
|
||||
block 6: 0x030000 - 0x037fff (LPU RAM)
|
||||
block 7: 0x038000 - 0x03ffff (LPU option ROM)
|
||||
block 10: 0x040000 - 0x047fff (LPU RAM)
|
||||
block 11: 0x048000 - 0x04ffff (PPU option ROM)
|
||||
block 12: 0x050000 - 0x057fff (LPU RAM)
|
||||
block 13: 0x058000 - 0x05ffff (LPU option ROM)
|
||||
block 14: 0x060000 - 0x067fff (LPU RAM)
|
||||
block 15: 0x068000 - 0x06ffff (PPU option ROM)
|
||||
block 16: 0x070000 - 0x077fff (LPU RAM)
|
||||
block 17: 0x078000 - 0x07ffff (unused)
|
||||
|
||||
notes:
|
||||
- all block numbers are octal
|
||||
- blocks 20 to 76 are reserved for 512 kbyte RAM boards (p/n 09845-66590)
|
||||
- block 45 is reserved for the Test ROM
|
||||
- memory addresses are continuous (for convenience, the mapping below uses block numbers as
|
||||
address part above 0xffff, so there are gaps between 0x8000 and 0xffff which are masked out).
|
||||
notes:
|
||||
- all block numbers are octal
|
||||
- blocks 20 to 76 are reserved for 512 kbyte RAM boards (p/n 09845-66590)
|
||||
- block 45 is reserved for the Test ROM
|
||||
- memory addresses are continuous (for convenience, the mapping below uses block numbers as
|
||||
address part above 0xffff, so there are gaps between 0x8000 and 0xffff which are masked out).
|
||||
- all LPU RAM is dynamically mapped at machine start according to -ramsize option
|
||||
*/
|
||||
|
||||
|
@ -202,7 +202,7 @@ public:
|
||||
/* keycode buffer (used for keypad/arrow key transition) */
|
||||
int m_keycode_buf[2];
|
||||
int m_keycode_buf_index;
|
||||
|
||||
|
||||
int m_cb2_in;
|
||||
#endif
|
||||
|
||||
@ -974,7 +974,7 @@ TIMER_CALLBACK_MEMBER(mac128_state::kbd_clock)
|
||||
|
||||
m_via->write_cb1(0);
|
||||
m_via->write_cb1(1);
|
||||
|
||||
|
||||
if (m_kbd_receive == TRUE)
|
||||
{
|
||||
if (i < 8)
|
||||
|
@ -113,9 +113,9 @@ ROM_START(nbamac)
|
||||
ROM_END
|
||||
|
||||
ROM_START(glxplay)
|
||||
ROM_REGION(0x4000, "maincpu", 0)
|
||||
ROM_LOAD("1083-1.cpu", 0x0000, 0x2000, CRC(3df33169) SHA1(657720aab4cccf3364f013acb3f5dbc46fe0e05c))
|
||||
ROM_LOAD("1083-2.cpu", 0x2000, 0x2000, CRC(47b4f49e) SHA1(59853ac56bb9e2dc7b848dc46ebd27c21b9d2e82))
|
||||
ROM_REGION(0x4000, "maincpu", 0)
|
||||
ROM_LOAD("1083-1.cpu", 0x0000, 0x2000, CRC(3df33169) SHA1(657720aab4cccf3364f013acb3f5dbc46fe0e05c))
|
||||
ROM_LOAD("1083-2.cpu", 0x2000, 0x2000, CRC(47b4f49e) SHA1(59853ac56bb9e2dc7b848dc46ebd27c21b9d2e82))
|
||||
ROM_END
|
||||
|
||||
ROM_START(kidnap)
|
||||
|
@ -305,16 +305,16 @@ READ32_MEMBER(midzeus_state::disk_asic_jr_r)
|
||||
/* CMOS/ZPRAM write enable; only low bit is used */
|
||||
case 2:
|
||||
break;
|
||||
// return disk_asic_jr[offset] | ~1;
|
||||
// return disk_asic_jr[offset] | ~1;
|
||||
|
||||
/* reset status; bit 0 is watchdog reset; mk4/invasn/thegrid read at startup; invasn freaks if it is 1 at startup */
|
||||
case 3:
|
||||
break;
|
||||
// return disk_asic_jr[offset] | ~1;
|
||||
// return disk_asic_jr[offset] | ~1;
|
||||
|
||||
/* ROM bank selection on Zeus 2; two bits are used */
|
||||
case 5:
|
||||
// return disk_asic_jr[offset] | ~3;
|
||||
// return disk_asic_jr[offset] | ~3;
|
||||
|
||||
/* disk asic jr id; crusnexo reads at startup: if (val & 0xf0) == 0xa0 it affects */
|
||||
/* how the Zeus is used (reg 0x5d is set to 0x54580006) */
|
||||
@ -1226,17 +1226,17 @@ static INPUT_PORTS_START( thegrid )
|
||||
PORT_BIT( 0xff, 0x38, IPT_AD_STICK_Y ) PORT_MINMAX(0x00,0x6f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_REVERSE
|
||||
|
||||
PORT_START("KEYPAD")
|
||||
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) /* keypad 1 */
|
||||
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) /* keypad 4 */
|
||||
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) /* keypad 7 */
|
||||
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad *") PORT_CODE(KEYCODE_MINUS_PAD) /* keypad * */
|
||||
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) /* keypad 2 */
|
||||
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) /* keypad 5 */
|
||||
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) /* keypad 8 */
|
||||
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) /* keypad 0 */
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) /* keypad 3 */
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) /* keypad 6 */
|
||||
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) /* keypad 9 */
|
||||
PORT_BIT(0x001, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 1") PORT_CODE(KEYCODE_1_PAD) /* keypad 1 */
|
||||
PORT_BIT(0x002, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 4") PORT_CODE(KEYCODE_4_PAD) /* keypad 4 */
|
||||
PORT_BIT(0x004, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 7") PORT_CODE(KEYCODE_7_PAD) /* keypad 7 */
|
||||
PORT_BIT(0x008, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad *") PORT_CODE(KEYCODE_MINUS_PAD) /* keypad * */
|
||||
PORT_BIT(0x010, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 2") PORT_CODE(KEYCODE_2_PAD) /* keypad 2 */
|
||||
PORT_BIT(0x020, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 5") PORT_CODE(KEYCODE_5_PAD) /* keypad 5 */
|
||||
PORT_BIT(0x040, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 8") PORT_CODE(KEYCODE_8_PAD) /* keypad 8 */
|
||||
PORT_BIT(0x080, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 0") PORT_CODE(KEYCODE_0_PAD) /* keypad 0 */
|
||||
PORT_BIT(0x100, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 3") PORT_CODE(KEYCODE_3_PAD) /* keypad 3 */
|
||||
PORT_BIT(0x200, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 6") PORT_CODE(KEYCODE_6_PAD) /* keypad 6 */
|
||||
PORT_BIT(0x400, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad 9") PORT_CODE(KEYCODE_9_PAD) /* keypad 9 */
|
||||
PORT_BIT(0x800, IP_ACTIVE_HIGH, IPT_SPECIAL) PORT_NAME("Keypad #") PORT_CODE(KEYCODE_PLUS_PAD) /* keypad # */
|
||||
|
||||
PORT_START("TRACKX1")
|
||||
|
@ -3,20 +3,20 @@
|
||||
/***************************************************************************
|
||||
|
||||
mtouchxl.cpp: Merit Industries MegaTouch XL
|
||||
|
||||
|
||||
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
|
||||
(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.
|
||||
|
||||
|
||||
Audio is a CS4231 combination CODEC/Mixer also found in Gravis Ultraound MAX
|
||||
and some SPARCstations.
|
||||
|
||||
Some boards use the DS1205 chip for security, others use the DS1991 iButton
|
||||
|
||||
Megatouch XL (Software) (* indicated verified dumps of CD + Boot ROM,
|
||||
- means we have it working but would like a redump)
|
||||
|
||||
Megatouch XL (Software) (* indicated verified dumps of CD + Boot ROM,
|
||||
- means we have it working but would like a redump)
|
||||
Megatouch XL (1997) (CD versions: R0, R0A, R0B, R0C, R0D, R1, R2, R3, R3A, R3B, R3C)
|
||||
Megatouch XL 5000 (1998) (CD versions: R5A, *R5B, R5D, *R5E, R5G, R5H, *R5I)
|
||||
Megatouch XL 6000 (1999) (CD versions: *R02, R04, R05, *R07)
|
||||
@ -205,18 +205,18 @@ static MACHINE_CONFIG_START( at486, mtxl_state )
|
||||
|
||||
/* internal ram */
|
||||
MCFG_RAM_ADD(RAM_TAG)
|
||||
MCFG_RAM_DEFAULT_SIZE("32M") // Early XL games had 8 MB RAM, 6000 and later require 32MB
|
||||
|
||||
MCFG_RAM_DEFAULT_SIZE("32M") // Early XL games had 8 MB RAM, 6000 and later require 32MB
|
||||
|
||||
/* bankdev for dxxxx */
|
||||
MCFG_DEVICE_ADD("dbank", ADDRESS_MAP_BANK, 0)
|
||||
MCFG_DEVICE_PROGRAM_MAP(dbank_map)
|
||||
MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
|
||||
MCFG_ADDRESS_MAP_BANK_DATABUS_WIDTH(32)
|
||||
MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000)
|
||||
|
||||
|
||||
/* Flash ROM */
|
||||
MCFG_AMD_29F040_ADD("flash")
|
||||
|
||||
|
||||
/* Security key */
|
||||
MCFG_DS1205_ADD("multikey")
|
||||
MACHINE_CONFIG_END
|
||||
@ -229,65 +229,65 @@ MACHINE_CONFIG_END
|
||||
|
||||
ROM_START( mtouchxl )
|
||||
MOTHERBOARD_ROMS
|
||||
|
||||
|
||||
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_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_IMAGE_READONLY("r1", 0, SHA1(874545bfc48eacba4c4887d1c45a40ebc7da456a))
|
||||
DISK_IMAGE_READONLY("r1", 0, SHA1(874545bfc48eacba4c4887d1c45a40ebc7da456a))
|
||||
ROM_END
|
||||
|
||||
ROM_START( mtchxl5k )
|
||||
MOTHERBOARD_ROMS
|
||||
|
||||
|
||||
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_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_IMAGE_READONLY("r5i", 0, SHA1(e776a842b557f402e179862397b2ded5cf926702))
|
||||
DISK_IMAGE_READONLY("r5i", 0, SHA1(e776a842b557f402e179862397b2ded5cf926702))
|
||||
ROM_END
|
||||
|
||||
ROM_START( mtchxl5ko )
|
||||
MOTHERBOARD_ROMS
|
||||
|
||||
|
||||
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_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_IMAGE_READONLY("r5b", 0, SHA1(37c2562053f0f4ed18c72a8ea04be371a6ac8413))
|
||||
DISK_IMAGE_READONLY("r5b", 0, SHA1(37c2562053f0f4ed18c72a8ea04be371a6ac8413))
|
||||
ROM_END
|
||||
|
||||
ROM_START( mtchxl5ko2 )
|
||||
MOTHERBOARD_ROMS
|
||||
|
||||
|
||||
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_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_IMAGE_READONLY("r5e", 0, SHA1(a07dc6da346bee999f822a3517ea1d65a68dd4a2))
|
||||
DISK_IMAGE_READONLY("r5e", 0, SHA1(a07dc6da346bee999f822a3517ea1d65a68dd4a2))
|
||||
ROM_END
|
||||
|
||||
ROM_START( mtchxl6k )
|
||||
MOTHERBOARD_ROMS
|
||||
|
||||
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_LOAD( "multikey", 0, 192, BAD_DUMP CRC(a7d118c1) SHA1(c1a08315a2ddaee1fa626a22553b1560b255a59e) ) // hand made
|
||||
|
||||
|
||||
DISK_REGION("board1:ide:ide:0:cdrom")
|
||||
DISK_IMAGE_READONLY("r07", 0, SHA1(95599e181d9249db09464420522180d753857f3b))
|
||||
ROM_END
|
||||
@ -296,11 +296,11 @@ ROM_START( mtchxl6ko )
|
||||
MOTHERBOARD_ROMS
|
||||
|
||||
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_LOAD( "multikey", 0, 192, BAD_DUMP CRC(a7d118c1) SHA1(c1a08315a2ddaee1fa626a22553b1560b255a59e) ) // hand made
|
||||
|
||||
|
||||
DISK_REGION("board1:ide:ide:0:cdrom")
|
||||
DISK_IMAGE_READONLY("r02", 0, SHA1(eaaf26d2b700f16138090de7f372b40b93e8dba9))
|
||||
ROM_END
|
||||
@ -309,13 +309,13 @@ ROM_START( mtchxlgld )
|
||||
MOTHERBOARD_ROMS
|
||||
|
||||
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_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_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_IMAGE_READONLY("r01", 0, SHA1(9946bb14d3f77eadbbc606ca9c79f233e402189b))
|
||||
@ -325,13 +325,13 @@ ROM_START( mtchxlgldo )
|
||||
MOTHERBOARD_ROMS
|
||||
|
||||
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_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_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_IMAGE_READONLY("r00", 0, SHA1(635e267f1abea060ce813eb7e78b88d57ea3f951))
|
||||
|
@ -910,7 +910,7 @@ static INPUT_PORTS_START( outfxies )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
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( 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( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
@ -944,7 +944,7 @@ static INPUT_PORTS_START( nbsports )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
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( 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( 0x20, IP_ACTIVE_LOW, IPT_COIN1 )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
@ -72,10 +72,10 @@ WRITE8_MEMBER(novagmcs48_state::presto_control_w)
|
||||
{
|
||||
// P21: input mux high
|
||||
m_inp_mux = (m_inp_mux & 0xff) | (~data << 7 & 0x100);
|
||||
|
||||
|
||||
// P22,P23: speaker lead 1,2
|
||||
m_dac->write(BIT(data, 2) & BIT(~data, 3));
|
||||
|
||||
|
||||
// P24-P26: led select
|
||||
m_led_select = ~data >> 4 & 7;
|
||||
display_matrix(8, 3, m_led_data, m_led_select);
|
||||
|
@ -1,18 +1,18 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:R. Belmont
|
||||
/*
|
||||
otomedius.cpp: Konami Otomedius (and maybe related Konami PC-based stuff)
|
||||
|
||||
Skeleton by R. Belmont
|
||||
|
||||
Hardware for Otomedius:
|
||||
- Intel Socket 478 Celeron CPU, 2.5 GHz, S-Spec "SL6ZY"
|
||||
More info: http://www.cpu-world.com/sspec/SL/SL6ZY.html
|
||||
- Intel 82865G northbridge
|
||||
- Intel 82801EB southbridge / "ICH5" Super I/O
|
||||
- 512MB of system RAM
|
||||
- ATI-branded Radeon 9600XT AGP video card with 128 MB of VRAM
|
||||
- Konami protection dongle marked "GEGGG JA-B"
|
||||
otomedius.cpp: Konami Otomedius (and maybe related Konami PC-based stuff)
|
||||
|
||||
Skeleton by R. Belmont
|
||||
|
||||
Hardware for Otomedius:
|
||||
- Intel Socket 478 Celeron CPU, 2.5 GHz, S-Spec "SL6ZY"
|
||||
More info: http://www.cpu-world.com/sspec/SL/SL6ZY.html
|
||||
- Intel 82865G northbridge
|
||||
- Intel 82801EB southbridge / "ICH5" Super I/O
|
||||
- 512MB of system RAM
|
||||
- ATI-branded Radeon 9600XT AGP video card with 128 MB of VRAM
|
||||
- Konami protection dongle marked "GEGGG JA-B"
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
@ -85,10 +85,10 @@ MACHINE_CONFIG_END
|
||||
|
||||
ROM_START( otomedius )
|
||||
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_LOAD( "ati.9600xt.128.samsung.031113.rom", 0x000000, 0x00d000, CRC(020ec211) SHA1(3860c980106f00e5259ecd8d4cd2f9b3fca2428a) )
|
||||
ROM_REGION( 0x10000, "vbios", 0 ) // video card BIOS
|
||||
ROM_LOAD( "ati.9600xt.128.samsung.031113.rom", 0x000000, 0x00d000, CRC(020ec211) SHA1(3860c980106f00e5259ecd8d4cd2f9b3fca2428a) )
|
||||
|
||||
DISK_REGION( "ide:0:hdd:image" ) // Seagate ST340015A 40GB PATA drive
|
||||
DISK_IMAGE( "otomedius", 0, SHA1(9283f8b7cd747be7b8e7321953adbf6cbe926f25) )
|
||||
|
@ -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, 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, 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, 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 */
|
||||
|
@ -1,9 +1,9 @@
|
||||
// license:BSD-3-Clause
|
||||
/**************************************************************************
|
||||
Pirate Ship
|
||||
|
||||
Pirate Ship
|
||||
|
||||
PWB(A)354460B
|
||||
|
||||
|
||||
MC68HC00FN16
|
||||
|
||||
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
|
||||
054156 - Tilemap generator
|
||||
053252 - CRTC
|
||||
|
||||
|
||||
|
||||
053250 config:
|
||||
|
||||
|
||||
SELC (69) GND
|
||||
SEL1 (83) GND
|
||||
SEL0 (82) GND
|
||||
MODE (68) GND
|
||||
|
||||
|
||||
TODO: Music stops if a coin is inserted. MAME or BTNAB?
|
||||
|
||||
|
||||
**************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
@ -53,11 +53,11 @@ public:
|
||||
m_k056832(*this, "k056832"),
|
||||
m_k055673(*this, "k055673"),
|
||||
m_k055555(*this, "k055555"),
|
||||
// m_k053246(*this, "k053246"),
|
||||
// m_k053246(*this, "k053246"),
|
||||
m_k054539(*this, "k054539"),
|
||||
m_spriteram(*this,"spriteram")
|
||||
{ }
|
||||
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
|
||||
required_device<k053250ps_device> m_k053250;
|
||||
@ -66,22 +66,22 @@ public:
|
||||
required_device<k055673_device> m_k055673;
|
||||
required_device<k055555_device> m_k055555;
|
||||
required_device<k054539_device> m_k054539;
|
||||
// required_device<k053247_device> m_k053246;
|
||||
// required_device<k053247_device> m_k053246;
|
||||
|
||||
optional_shared_ptr<uint16_t> m_spriteram;
|
||||
|
||||
|
||||
int m_layer_colorbase[6];
|
||||
int m_sprite_colorbase;
|
||||
int m_lvc_colorbase;
|
||||
|
||||
|
||||
uint8_t m_int_enable;
|
||||
uint8_t m_int_status;
|
||||
uint8_t m_sound_ctrl;
|
||||
uint8_t m_sound_nmi_clk;
|
||||
uint16_t m_control;
|
||||
|
||||
|
||||
void update_interrupts();
|
||||
|
||||
|
||||
DECLARE_READ16_MEMBER(K056832_rom_r);
|
||||
DECLARE_WRITE16_MEMBER(control1_w);
|
||||
DECLARE_WRITE16_MEMBER(control2_w);
|
||||
@ -93,7 +93,7 @@ public:
|
||||
DECLARE_WRITE16_MEMBER(k053247_martchmp_word_w);
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(helm_r);
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(battery_r);
|
||||
|
||||
|
||||
DECLARE_MACHINE_START(piratesh);
|
||||
DECLARE_MACHINE_RESET(piratesh);
|
||||
DECLARE_VIDEO_START(piratesh);
|
||||
@ -114,11 +114,11 @@ void piratesh_state::update_interrupts()
|
||||
|
||||
/*
|
||||
Priority issues:
|
||||
|
||||
|
||||
1. On title screen, stars should be behind the helm
|
||||
2. The Konami logo is a square transition
|
||||
3.
|
||||
|
||||
3.
|
||||
|
||||
*/
|
||||
|
||||
K056832_CB_MEMBER(piratesh_state::piratesh_tile_callback)
|
||||
@ -127,9 +127,9 @@ K056832_CB_MEMBER(piratesh_state::piratesh_tile_callback)
|
||||
// Code
|
||||
// Color
|
||||
// Flags
|
||||
// if (*color != 0)
|
||||
// printf("%x %x %x\n", layer, *code, *color >> 2);
|
||||
|
||||
// if (*color != 0)
|
||||
// printf("%x %x %x\n", layer, *code, *color >> 2);
|
||||
|
||||
*color = (m_layer_colorbase[layer] << 4) + ((*color >> 2));// & 0x0f);
|
||||
}
|
||||
|
||||
@ -143,16 +143,16 @@ K055673_CB_MEMBER(piratesh_state::piratesh_sprite_callback)
|
||||
// .... .... xxx. .... - Priority?
|
||||
// .... ..x. .... .... - ?
|
||||
// ..x. .... .... .... - ?
|
||||
|
||||
|
||||
#if 0
|
||||
int layerpri[4];
|
||||
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++)
|
||||
{
|
||||
layerpri[i] = m_k055555->K055555_read_register(pris[i]);
|
||||
}
|
||||
|
||||
|
||||
// TODO: THIS IS ALL WRONG
|
||||
if (pri <= layerpri[0])
|
||||
*priority_mask = 0;
|
||||
@ -165,12 +165,12 @@ K055673_CB_MEMBER(piratesh_state::piratesh_sprite_callback)
|
||||
#endif
|
||||
|
||||
*priority_mask = 0;
|
||||
|
||||
|
||||
// 0 - Sprites over everything
|
||||
// f0 -
|
||||
// f0 cc -
|
||||
// f0 cc aa -
|
||||
|
||||
|
||||
// 1111 0000
|
||||
// 1100 1100
|
||||
// 1010 1010
|
||||
@ -189,7 +189,7 @@ VIDEO_START_MEMBER(piratesh_state, piratesh)
|
||||
m_lvc_colorbase = 3;
|
||||
#if 0
|
||||
konamigx_mixer_init(*m_screen, 0);
|
||||
|
||||
|
||||
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(2, 2+2, 0);
|
||||
@ -202,21 +202,21 @@ uint32_t piratesh_state::screen_update_piratesh(screen_device &screen, bitmap_rg
|
||||
{
|
||||
bitmap.fill(0, cliprect);
|
||||
#if 1
|
||||
|
||||
|
||||
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 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++)
|
||||
{
|
||||
layers[i] = i;
|
||||
layerpri[i] = m_k055555->K055555_read_register(pris[i]);
|
||||
}
|
||||
|
||||
|
||||
konami_sortlayers4(layers, layerpri);
|
||||
|
||||
|
||||
screen.priority().fill(0, cliprect);
|
||||
|
||||
|
||||
const uint32_t input_enables = m_k055555->K055555_read_register(K55_INPUT_ENABLES);
|
||||
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (input_enables & K55_INP_SUB2)
|
||||
m_k055673->k053247_sprites_draw(bitmap, cliprect);
|
||||
|
||||
|
||||
#if 0
|
||||
#define K55_INP_VRAM_A 0x01
|
||||
#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_SUB3 0x80
|
||||
#endif
|
||||
|
||||
|
||||
//055555: 4 to reg 7 (A PRI 0)
|
||||
//055555: 0 to reg 8 (A PRI 1)
|
||||
//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: 0 to reg 11 (SUB2 PRI)
|
||||
//055555: 0 to reg 12 (SUB3 PRI)
|
||||
|
||||
|
||||
//055555: 0 to reg 17 (A PAL)
|
||||
//055555: 2 to reg 18 (B 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: 1 to reg 1e (SUB3 PAL)
|
||||
|
||||
|
||||
|
||||
#else
|
||||
// LAYER, FLAGS, PRIORITY
|
||||
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);
|
||||
|
||||
|
||||
// TODO: Fix priority
|
||||
m_k053250->draw(bitmap, cliprect, 0x20, 0, screen.priority(), 8);
|
||||
|
||||
|
||||
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, 0, K056832_DRAW_FLAG_MIRROR, 0);
|
||||
#endif
|
||||
@ -297,7 +297,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(piratesh_state::piratesh_interrupt)
|
||||
if (scanline == 240)
|
||||
{
|
||||
m_k053250->vblank_w(1);
|
||||
|
||||
|
||||
if (m_int_enable & 2)
|
||||
{
|
||||
m_int_status |= 2;
|
||||
@ -308,7 +308,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(piratesh_state::piratesh_interrupt)
|
||||
if (scanline == 0)
|
||||
{
|
||||
m_k053250->vblank_w(0);
|
||||
|
||||
|
||||
if (m_int_enable & 4)
|
||||
{
|
||||
m_int_status |= 4;
|
||||
@ -341,7 +341,7 @@ WRITE16_MEMBER(piratesh_state::control1_w)
|
||||
|
||||
WRITE16_MEMBER(piratesh_state::control2_w)
|
||||
{
|
||||
// .... .... ...x .... - Unknown (always 1?)
|
||||
// .... .... ...x .... - Unknown (always 1?)
|
||||
// .... .... ..x. .... - Unknown
|
||||
// .... .... .x.. .... - Counter out
|
||||
// .... .... x... .... - Counter in
|
||||
@ -363,16 +363,16 @@ WRITE16_MEMBER(piratesh_state::control2_w)
|
||||
|
||||
WRITE16_MEMBER(piratesh_state::control3_w)
|
||||
{
|
||||
// .... .... .... ...x - Watchdog? (051550?)
|
||||
// .... .... .... ...x - Watchdog? (051550?)
|
||||
// .... .... .... ..x. - 056832 ROM bank control
|
||||
// .... .... ...x .... - Ticket dispenser enable (active high)
|
||||
// .... .... ..x. .... - Hopper enable (active high)
|
||||
// .... ...x .... .... - Unknown (always 1?)
|
||||
|
||||
|
||||
if ((data & ~0x0133) || (~data & 0x100))
|
||||
printf("CTRL1 W: %x %x %x\n", offset, data, mem_mask);
|
||||
|
||||
// printf("CTRL 1: %x\n", data & 0x0010);
|
||||
// printf("CTRL 1: %x\n", data & 0x0010);
|
||||
machine().device<ticket_dispenser_device>("ticket")->motor_w(data & 0x0010 ? 1 : 0);
|
||||
machine().device<ticket_dispenser_device>("hopper")->motor_w(data & 0x0020 ? 1 : 0);
|
||||
|
||||
@ -423,7 +423,7 @@ WRITE_LINE_MEMBER(piratesh_state::k054539_nmi_gen)
|
||||
update_interrupts();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
m_sound_intck = state;
|
||||
}
|
||||
|
||||
@ -432,10 +432,10 @@ CUSTOM_INPUT_MEMBER(piratesh_state::helm_r)
|
||||
// Appears to be a quadrature encoder
|
||||
uint8_t xa, xb;
|
||||
uint16_t dx = ioport("HELM")->read();
|
||||
|
||||
|
||||
xa = ((dx + 1) & 7) <= 3;
|
||||
xb = (dx & 7) <= 3;
|
||||
|
||||
|
||||
return (xb << 1) | xa;
|
||||
}
|
||||
|
||||
@ -443,7 +443,7 @@ CUSTOM_INPUT_MEMBER(piratesh_state::battery_r)
|
||||
{
|
||||
// .x MB3790 /ALARM1
|
||||
// x. MB3790 /ALARM2
|
||||
|
||||
|
||||
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)
|
||||
for (i=0; i<=7; i++)
|
||||
{
|
||||
// m_k054539->set_gain(i, 0.5);
|
||||
// m_k054539->set_gain(i, 0.5);
|
||||
}
|
||||
|
||||
// // soften percussions(chip 1 channel 0-7)
|
||||
// for (i=0; i<=7; i++) m_k054539_2->set_gain(i, 0.5);
|
||||
// // soften percussions(chip 1 channel 0-7)
|
||||
// for (i=0; i<=7; i++) m_k054539_2->set_gain(i, 0.5);
|
||||
|
||||
}
|
||||
|
||||
@ -671,8 +671,8 @@ ROM_START( piratesh )
|
||||
ROM_LOAD( "360ua-a06.15t", 0x000000, 0x80000, CRC(6816a493) SHA1(4fc4cfbc164d84bbf8d75ccd78c9f40f3273d852) )
|
||||
ROM_LOAD( "360ua-a07.17t", 0x080000, 0x80000, CRC(af7127c5) SHA1(b525f3c6b831e3354eba46016d414bedcb3ae8dc) )
|
||||
|
||||
// ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
|
||||
// ROM_LOAD( "piratesh.nv", 0x0000, 0x080, CRC(28df2269) SHA1(3f071c97662745a199f96964e2e79f795bd5a391) )
|
||||
// ROM_REGION( 0x80, "eeprom", 0 ) // default eeprom to prevent game booting upside down with error
|
||||
// ROM_LOAD( "piratesh.nv", 0x0000, 0x080, CRC(28df2269) SHA1(3f071c97662745a199f96964e2e79f795bd5a391) )
|
||||
ROM_END
|
||||
|
||||
/* ROM parent machine inp init */
|
||||
|
@ -134,7 +134,7 @@ ROM_START( unkm1 ) // 1992.01.31 string
|
||||
ROM_LOAD( "epr-14429.ic104", 0x00000, 0x20000, CRC(1ff8262d) SHA1(fb90bd877b2dc65eb3e5495d6e21dee1f871fb44) )
|
||||
|
||||
// ROM_REGION( 0x8000, "m1comm", 0 ) // not present?
|
||||
|
||||
|
||||
ROM_REGION( 0x100, "plds", 0 )
|
||||
ROM_LOAD( "315-5472-01.ic22", 0x000, 0x0eb, CRC(828ee6e2) SHA1(f32dd0f6297cc8bd3049be4bca502c0f8ec738cf) )
|
||||
// dumps of the X-Board part, and the LINK PCB are missing.
|
||||
|
@ -164,7 +164,7 @@ On top copper layer:
|
||||
On bottom copper layer:
|
||||
"171-5200"
|
||||
|
||||
On a sticker:
|
||||
On a sticker:
|
||||
"REV C"
|
||||
|
||||
On a sticker:
|
||||
@ -184,7 +184,7 @@ All ICs have a date code of either 1983 or 1984.
|
||||
IC6 - SN74LS244N
|
||||
IC7 - SN73LS244N
|
||||
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)
|
||||
IC11 - 28-pin socket (silkscreen is "27128") for "EPR-6504D" (Fujitsu MB27128-30)
|
||||
IC12 - Toshiba TC4053BP
|
||||
@ -206,7 +206,7 @@ IC27 - Motorola NE592N
|
||||
IC28 - Motorola NE592N
|
||||
IC29 - NEC 7808
|
||||
|
||||
PC1 - GI B 5102 321J "TLP521-1"
|
||||
PC1 - GI B 5102 321J "TLP521-1"
|
||||
PC2 - GI D 5102 423J
|
||||
PC3 - GI D 5102 423J
|
||||
PC4 - GI D 5102 423J
|
||||
@ -251,18 +251,18 @@ Source code and text in EPR-6450D
|
||||
|
||||
POWER DOWN CHANGE
|
||||
TSEL:
|
||||
LD A,(BETFLG) ; READ CREDIT
|
||||
RRCA ; CREDIT IN ?
|
||||
JR C,BETSELZ
|
||||
LD A,(BETFLG) ; READ CREDIT
|
||||
RRCA ; CREDIT IN ?
|
||||
JR C,BETSELZ
|
||||
|
||||
LD A,(SELOLD)
|
||||
OR A
|
||||
LD C,A
|
||||
CALL NZ,OLDCLCG
|
||||
LD HL,0
|
||||
LD (SELOLD),HL
|
||||
LD (DBLSWCT),HL
|
||||
LD (LMPCNT),1
|
||||
LD A,(SELOLD)
|
||||
OR A
|
||||
LD C,A
|
||||
CALL NZ,OLDCLCG
|
||||
LD HL,0
|
||||
LD (SELOLD),HL
|
||||
LD (DBLSWCT),HL
|
||||
LD (LMPCNT),1
|
||||
|
||||
================================================================================
|
||||
End
|
||||
|
@ -682,9 +682,9 @@ static MACHINE_CONFIG_START( to7, thomson_state )
|
||||
MCFG_LEGACY_FLOPPY_CONFIG(thomson_floppy_interface)
|
||||
MCFG_LEGACY_FLOPPY_IDX_CB(WRITELINE(thomson_state, fdc_index_3_w))
|
||||
|
||||
MCFG_WD2793_ADD("wd2793", XTAL_1MHz)
|
||||
MCFG_FLOPPY_DRIVE_ADD("wd2793:0", cd90_640_floppies, "dd", thomson_state::cd90_640_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("wd2793:1", cd90_640_floppies, "dd", thomson_state::cd90_640_formats)
|
||||
MCFG_WD2793_ADD("wd2793", XTAL_1MHz)
|
||||
MCFG_FLOPPY_DRIVE_ADD("wd2793:0", cd90_640_floppies, "dd", thomson_state::cd90_640_formats)
|
||||
MCFG_FLOPPY_DRIVE_ADD("wd2793:1", cd90_640_floppies, "dd", thomson_state::cd90_640_formats)
|
||||
|
||||
|
||||
/* network */
|
||||
|
@ -112,18 +112,18 @@ MACHINE_CONFIG_END
|
||||
Game driver(s)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
Shark by U.S. Billiards
|
||||
|
||||
Etched in copper on Top (C) 1975
|
||||
010
|
||||
1SCOOP J6 2SCOOP
|
||||
Etched in copper on Top (C) 1975
|
||||
010
|
||||
1SCOOP J6 2SCOOP
|
||||
|
||||
Handwritten on top J0037
|
||||
124
|
||||
Handwritten on top J0037
|
||||
124
|
||||
|
||||
empty socket at 5M C etched in copper next to socket
|
||||
empty socket at 5M C etched in copper next to socket
|
||||
|
||||
*/
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
Driver by Ville Linde
|
||||
|
||||
|
||||
|
||||
|
||||
Software notes (as per Police 911)
|
||||
-- VL - 01.06.2011
|
||||
@ -73,8 +73,8 @@
|
||||
0x00009d00: LoadProgram(): R3 = ptr to filename
|
||||
|
||||
|
||||
TODO:
|
||||
- needs a proper way to dump security dongles, anything but p9112 has placeholder ROM for ds2430.
|
||||
TODO:
|
||||
- needs a proper way to dump security dongles, anything but p9112 has placeholder ROM for ds2430.
|
||||
|
||||
Game status:
|
||||
ppp2nd POST: "DIP SWITCH ERROR", "NO SECURITY ERROR"
|
||||
@ -1809,7 +1809,7 @@ READ64_MEMBER(viper_state::input_r)
|
||||
#endif
|
||||
|
||||
READ8_MEMBER(viper_state::input_r)
|
||||
{
|
||||
{
|
||||
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 )
|
||||
// ADDRESS_MAP_UNMAP_HIGH
|
||||
// ADDRESS_MAP_UNMAP_HIGH
|
||||
AM_RANGE(0x00000000, 0x00ffffff) AM_MIRROR(0x1000000) AM_RAM AM_SHARE("workram")
|
||||
AM_RANGE(0x80000000, 0x800fffff) AM_READWRITE32(epic_r, epic_w,0xffffffffffffffffU)
|
||||
AM_RANGE(0x82000000, 0x83ffffff) AM_READWRITE(voodoo3_r, voodoo3_w)
|
||||
@ -2079,7 +2079,7 @@ static ADDRESS_MAP_START(viper_map, AS_PROGRAM, 64, viper_state )
|
||||
// 0xff000000, 0xff000fff - cf_card_data_r/w (installed in DRIVER_INIT(vipercf))
|
||||
// 0xff200000, 0xff200fff - cf_card_r/w (installed in DRIVER_INIT(vipercf))
|
||||
// 0xff300000, 0xff300fff - ata_r/w (installed in DRIVER_INIT(viperhd))
|
||||
// AM_RANGE(0xff400xxx, 0xff400xxx) ppp2nd sense device
|
||||
// AM_RANGE(0xff400xxx, 0xff400xxx) ppp2nd sense device
|
||||
AM_RANGE(0xffe00000, 0xffe00007) AM_READ(e00000_r)
|
||||
AM_RANGE(0xffe00008, 0xffe0000f) AM_READWRITE(e00008_r, e00008_w)
|
||||
AM_RANGE(0xffe08000, 0xffe08007) AM_NOP
|
||||
@ -2108,10 +2108,10 @@ CUSTOM_INPUT_MEMBER(viper_state::ds2430_unk_r)
|
||||
static INPUT_PORTS_START( viper )
|
||||
PORT_START("IN0")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
|
||||
PORT_START("IN1")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
|
||||
PORT_START("IN2")
|
||||
PORT_DIPNAME( 0x01, 0x01, "DIP4" ) PORT_DIPLOCATION("SW:4")
|
||||
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( 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_START("IN3")
|
||||
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
||||
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_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
|
||||
PORT_START("IN4")
|
||||
PORT_DIPNAME( 0x01, 0x01, "4" )
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
@ -2172,22 +2172,22 @@ static INPUT_PORTS_START( viper )
|
||||
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) )
|
||||
PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
|
||||
PORT_START("IN5")
|
||||
PORT_BIT(0x3f, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
|
||||
|
||||
PORT_START("IN6")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
|
||||
PORT_START("IN7")
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
INPUT_PORTS_START( ppp2nd )
|
||||
PORT_INCLUDE( viper )
|
||||
|
||||
|
||||
PORT_MODIFY("IN2")
|
||||
PORT_DIPNAME( 0x01, 0x01, "DIP4" ) PORT_DIPLOCATION("SW:4")
|
||||
PORT_DIPSETTING( 0x01, DEF_STR( Off ) )
|
||||
@ -2201,14 +2201,14 @@ INPUT_PORTS_START( ppp2nd )
|
||||
PORT_DIPNAME( 0x08, 0x08, "DIP1" ) PORT_DIPLOCATION("SW:1")
|
||||
PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( On ) )
|
||||
|
||||
|
||||
PORT_MODIFY("IN3")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 ) PORT_NAME("OK Button")
|
||||
|
||||
PORT_MODIFY("IN4")
|
||||
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_MODIFY("IN5")
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // another OK button
|
||||
INPUT_PORTS_END
|
||||
@ -2218,41 +2218,41 @@ INPUT_PORTS_START( thrild2 )
|
||||
|
||||
PORT_MODIFY("IN3")
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Shift Down")
|
||||
|
||||
|
||||
PORT_MODIFY("IN4")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("Shift Up")
|
||||
|
||||
|
||||
// TODO: analog channels
|
||||
INPUT_PORTS_END
|
||||
|
||||
INPUT_PORTS_START( gticlub2 )
|
||||
PORT_INCLUDE( thrild2 )
|
||||
|
||||
|
||||
// TODO: specific analog channel for hand brake
|
||||
INPUT_PORTS_END
|
||||
|
||||
INPUT_PORTS_START( boxingm )
|
||||
PORT_INCLUDE( viper )
|
||||
|
||||
|
||||
PORT_MODIFY("IN5")
|
||||
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) // memory card check for boxingm (actually comms enable?)
|
||||
INPUT_PORTS_END
|
||||
|
||||
INPUT_PORTS_START( p911 )
|
||||
PORT_INCLUDE( viper )
|
||||
|
||||
|
||||
PORT_MODIFY("IN5")
|
||||
// one of these is P2 SHT2 (checks and fails serial if pressed)
|
||||
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_START( tsurugi )
|
||||
PORT_INCLUDE( viper )
|
||||
|
||||
|
||||
PORT_MODIFY("IN4")
|
||||
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("Shot Button")
|
||||
|
||||
|
||||
PORT_MODIFY("IN5")
|
||||
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
|
||||
@ -2263,7 +2263,7 @@ INPUT_PORTS_END
|
||||
|
||||
|
||||
INTERRUPT_GEN_MEMBER(viper_state::viper_vblank)
|
||||
{
|
||||
{
|
||||
mpc8240_interrupt(MPC8240_IRQ0);
|
||||
//mpc8240_interrupt(MPC8240_IRQ3);
|
||||
}
|
||||
@ -2298,7 +2298,7 @@ void viper_state::machine_reset()
|
||||
// Viper expects these settings or the BIOS fails
|
||||
identify_device[51] = 0x0200; /* 51: PIO data transfer cycle timing mode */
|
||||
identify_device[67] = 0x00f0; /* 67: minimum PIO transfer cycle time without flow control */
|
||||
|
||||
|
||||
m_ds2430_unk_status = 1;
|
||||
}
|
||||
|
||||
|
@ -206,7 +206,7 @@ public:
|
||||
|
||||
DECLARE_MACHINE_START(nevada);
|
||||
DECLARE_DRIVER_INIT(nevada);
|
||||
|
||||
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
|
||||
};
|
||||
@ -266,8 +266,8 @@ WRITE16_MEMBER( nevada_state::vram_w )
|
||||
{
|
||||
// Todo, Just for sample
|
||||
|
||||
m_vram[offset] = data;
|
||||
m_tilemap->mark_tile_dirty(offset / 2);
|
||||
m_vram[offset] = data;
|
||||
m_tilemap->mark_tile_dirty(offset / 2);
|
||||
|
||||
}
|
||||
|
||||
@ -281,12 +281,12 @@ GFXDECODE_END
|
||||
|
||||
TILE_GET_INFO_MEMBER( nevada_state::get_bg_tile_info )
|
||||
{
|
||||
//int attr = m_colorram[tile_index];
|
||||
int code = m_vram[tile_index*2+1];
|
||||
//int bank = (attr & 0x02) >> 1;
|
||||
//int color = (attr & 0x3c) >> 2;
|
||||
//int attr = m_colorram[tile_index];
|
||||
int code = m_vram[tile_index*2+1];
|
||||
//int bank = (attr & 0x02) >> 1;
|
||||
//int color = (attr & 0x3c) >> 2;
|
||||
|
||||
SET_TILE_INFO_MEMBER(0, code, 0, 0);
|
||||
SET_TILE_INFO_MEMBER(0, code, 0, 0);
|
||||
|
||||
}
|
||||
|
||||
@ -294,13 +294,13 @@ TILE_GET_INFO_MEMBER( nevada_state::get_bg_tile_info )
|
||||
/***************************************************************************/
|
||||
void nevada_state::video_start()
|
||||
{
|
||||
m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nevada_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,31,31);
|
||||
m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nevada_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,31,31);
|
||||
}
|
||||
|
||||
/***************************************************************************/
|
||||
uint32_t nevada_state::screen_update_nevada(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
||||
{
|
||||
m_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
m_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -529,7 +529,7 @@ ROM_END
|
||||
|
||||
ROM_START( policet2 )
|
||||
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_LOAD16_BYTE( "trident_tgui9680_bios.bin", 0x0000, 0x4000, CRC(1eebde64) BAD_DUMP SHA1(67896a854d43a575037613b3506aea6dae5d6a19) )
|
||||
|
@ -5,93 +5,93 @@
|
||||
Play Mechanix / Right Hand Tech "VP50", "VP100" and "VP101" platforms
|
||||
(PCBs are also marked "Raw Thrills" but all RT games appear to be on PC hardware)
|
||||
|
||||
Boards:
|
||||
- VP101: Johnny Nero. The original (?)
|
||||
- VP100: Special Forces Elite Training. A not-quite-complete VP101; missing ATA DMA.
|
||||
- VP50 : Zoofari. Cost-reduced (?) with TX4925 SoC, much less complex FPGA.
|
||||
Boards:
|
||||
- VP101: Johnny Nero. The original (?)
|
||||
- VP100: Special Forces Elite Training. A not-quite-complete VP101; missing ATA DMA.
|
||||
- VP50 : Zoofari. Cost-reduced (?) with TX4925 SoC, much less complex FPGA.
|
||||
|
||||
Preliminary driver by R. Belmont
|
||||
|
||||
|
||||
TODO:
|
||||
- All games: that formidable sounding 3D accelerator mentioned below.
|
||||
- All games: the sound system (the POST plays some example sounds)
|
||||
- Zoofari's framebuffer is 256 color but I don't know where the CLUT comes from.
|
||||
- All games: that formidable sounding 3D accelerator mentioned below.
|
||||
- All games: the sound system (the POST plays some example sounds)
|
||||
- Zoofari's framebuffer is 256 color but I don't know where the CLUT comes from.
|
||||
|
||||
To make the games go into a POST test, hold down START 1 while resetting.
|
||||
To make the games go into a POST test, hold down START 1 while resetting.
|
||||
|
||||
VP101 Features from http://web.archive.org/web/20041016000248/http://www.righthandtech.com/projects.htm
|
||||
|
||||
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.
|
||||
VP101 Features from http://web.archive.org/web/20041016000248/http://www.righthandtech.com/projects.htm
|
||||
|
||||
ATA/IDE Disk Drive Interface
|
||||
Standard ATA/IDE interface
|
||||
Ultra DMA 33/66/100/133 to the DDR SDRAM memory
|
||||
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
|
||||
|
||||
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
|
||||
Unified Memory Architecture - DDR SDRAM bank
|
||||
Arbitrating DDR SDRAM Memory controller
|
||||
128Mbyte to 512Mbyte memory capacity
|
||||
120/240 MHz @ 64 bits - ~2GBytes/sec bandwidth
|
||||
|
||||
Flash Memory
|
||||
Minimum of 1MB of Flash memory – expandable to 4 MB
|
||||
Updateable Boot ROM
|
||||
Updateable FPGA configuration
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
Security Interface
|
||||
Security processor provides for a means to “unlock” the FPGA functions
|
||||
Enabled for software protection against piracy and unwarranted game updates
|
||||
Sound System
|
||||
AC97 codec for low cost of implementation and development
|
||||
TDA7375 40 Watt Integrated Amplifier
|
||||
Codec fed from the DDR bank via a 16 channel (8 channels of stereo) DMA engine.
|
||||
|
||||
ATA/IDE Disk Drive Interface
|
||||
Standard ATA/IDE interface
|
||||
Ultra DMA 33/66/100/133 to the DDR SDRAM memory
|
||||
|
||||
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.
|
||||
Small outline design for easy kit retrofitting of existing cabinets.
|
||||
@ -118,25 +118,25 @@ public:
|
||||
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override;
|
||||
|
||||
|
||||
DECLARE_READ32_MEMBER(tty_ready_r);
|
||||
DECLARE_WRITE32_MEMBER(tty_w);
|
||||
DECLARE_READ32_MEMBER(test_r) { return 0xffffffff; }
|
||||
|
||||
|
||||
DECLARE_READ32_MEMBER(pic_r);
|
||||
DECLARE_WRITE32_MEMBER(pic_w);
|
||||
|
||||
|
||||
DECLARE_WRITE32_MEMBER(dmaaddr_w);
|
||||
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(dmarq_w);
|
||||
|
||||
|
||||
DECLARE_READ32_MEMBER(tty_4925_rdy_r) { return 0x2; }
|
||||
|
||||
|
||||
DECLARE_READ32_MEMBER(spi_status_r) { return 0x8007; }
|
||||
|
||||
|
||||
DECLARE_READ32_MEMBER(spi_r);
|
||||
DECLARE_WRITE32_MEMBER(spi_w);
|
||||
|
||||
|
||||
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);
|
||||
|
||||
@ -166,9 +166,9 @@ void vp10x_state::machine_reset()
|
||||
void vp10x_state::machine_start()
|
||||
{
|
||||
m_maincpu->mips3drc_set_options(MIPS3DRC_FASTEST_OPTIONS);
|
||||
// m_maincpu->add_fastram(0x00000000, 0x03ffffff, false, m_mainram);
|
||||
// m_maincpu->add_fastram(0x00000000, 0x03ffffff, false, m_mainram);
|
||||
}
|
||||
|
||||
|
||||
WRITE32_MEMBER(vp10x_state::dmaaddr_w)
|
||||
{
|
||||
m_dma_ptr = (data & 0x07ffffff);
|
||||
@ -179,18 +179,18 @@ WRITE_LINE_MEMBER(vp10x_state::dmarq_w)
|
||||
if (state != m_dmarq_state)
|
||||
{
|
||||
m_dmarq_state = state;
|
||||
|
||||
|
||||
if (state)
|
||||
{
|
||||
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)
|
||||
{
|
||||
*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);
|
||||
@ -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 serial[10] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a };
|
||||
@ -208,15 +208,15 @@ READ32_MEMBER(vp10x_state::pic_r)
|
||||
{
|
||||
case 0x20:
|
||||
return vers[pic_state++];
|
||||
|
||||
|
||||
case 0x21:
|
||||
case 0x22:
|
||||
return serial[pic_state++];
|
||||
|
||||
case 0x23: // this is the same for jnero and specfrce. great security!
|
||||
|
||||
case 0x23: // this is the same for jnero and specfrce. great security!
|
||||
return magic[pic_state++];
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -231,14 +231,14 @@ WRITE32_MEMBER(vp10x_state::pic_w)
|
||||
pic_state = 0;
|
||||
}
|
||||
|
||||
READ32_MEMBER(vp10x_state::spi_r)
|
||||
READ32_MEMBER(vp10x_state::spi_r)
|
||||
{
|
||||
return 0xffffffff;
|
||||
}
|
||||
|
||||
WRITE32_MEMBER(vp10x_state::spi_w)
|
||||
{
|
||||
// printf("%d to SPI select\n", data);
|
||||
// printf("%d to SPI select\n", 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;
|
||||
g = (pal_ram[video_ram[x]] >> 5) & 0x3f;
|
||||
b = pal_ram[video_ram[x]] & 0x1f;
|
||||
|
||||
|
||||
*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
|
||||
// Special Forces also says "<inited tv_cap> = 00000032"
|
||||
// printf("%c", data);
|
||||
// printf("%c", data);
|
||||
}
|
||||
|
||||
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, vp10x_state )
|
||||
@ -315,13 +315,13 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, vp10x_state )
|
||||
AM_RANGE(0x1c400000, 0x1c400003) AM_WRITE(tty_w) // boot ROM code uses this one
|
||||
AM_RANGE(0x1c400014, 0x1c400017) AM_READ(tty_ready_r)
|
||||
AM_RANGE(0x1ca0000c, 0x1ca0000f) AM_READ_PORT("IN0")
|
||||
AM_RANGE(0x1ca00010, 0x1ca00013) AM_READ(test_r) // bits here cause various test mode stuff
|
||||
AM_RANGE(0x1ca00010, 0x1ca00013) AM_READ(test_r) // bits here cause various test mode stuff
|
||||
AM_RANGE(0x1cf00000, 0x1cf00003) AM_NOP AM_READNOP
|
||||
AM_RANGE(0x1d000030, 0x1d000033) AM_WRITE(dmaaddr_w) // ATA DMA destination address
|
||||
AM_RANGE(0x1d000030, 0x1d000033) AM_WRITE(dmaaddr_w) // ATA DMA destination address
|
||||
AM_RANGE(0x1d000040, 0x1d00005f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0x0000ffff)
|
||||
AM_RANGE(0x1d000060, 0x1d00007f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0x0000ffff)
|
||||
AM_RANGE(0x1f200000, 0x1f200003) AM_READWRITE(pic_r, pic_w)
|
||||
AM_RANGE(0x1f807000, 0x1f807fff) AM_RAM AM_SHARE("nvram")
|
||||
AM_RANGE(0x1f807000, 0x1f807fff) AM_RAM AM_SHARE("nvram")
|
||||
AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
@ -329,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(0x1f000010, 0x1f00001f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs1, write_cs1, 0xffffffff)
|
||||
AM_RANGE(0x1f000020, 0x1f00002f) AM_DEVREADWRITE16("ata", ata_interface_device, read_cs0, write_cs0, 0xffffffff)
|
||||
AM_RANGE(0x1f400000, 0x1f400003) AM_NOP // FPGA bitstream download?
|
||||
AM_RANGE(0x1f400000, 0x1f400003) AM_NOP // FPGA bitstream download?
|
||||
AM_RANGE(0x1f400800, 0x1f400bff) AM_RAM AM_SHARE("nvram")
|
||||
AM_RANGE(0x1fc00000, 0x1fffffff) AM_ROM AM_REGION("maincpu", 0)
|
||||
|
||||
|
||||
// TX4925 peripherals
|
||||
AM_RANGE(0xff1ff40c, 0xff1ff40f) AM_READ(tty_4925_rdy_r)
|
||||
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( 0x00000004, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 )
|
||||
|
||||
|
||||
PORT_BIT( 0xfffffff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -357,7 +357,7 @@ static INPUT_PORTS_START( vp50 )
|
||||
PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START1 )
|
||||
PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_COIN2 )
|
||||
PORT_BIT( 0x00000008, IP_ACTIVE_LOW, IPT_START2 )
|
||||
|
||||
|
||||
PORT_BIT( 0xfffffff0, IP_ACTIVE_HIGH, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
@ -373,10 +373,10 @@ static MACHINE_CONFIG_START( vp101, vp10x_state )
|
||||
MCFG_SCREEN_UPDATE_DRIVER(vp10x_state, screen_update)
|
||||
MCFG_SCREEN_SIZE(320, 240)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239)
|
||||
|
||||
|
||||
MCFG_ATA_INTERFACE_ADD("ata", ata_devices, "hdd", nullptr, false)
|
||||
MCFG_ATA_INTERFACE_DMARQ_HANDLER(WRITELINE(vp10x_state, dmarq_w))
|
||||
|
||||
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
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_SIZE(400, 240)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 239)
|
||||
|
||||
|
||||
MCFG_ATA_INTERFACE_ADD("ata", ata_devices, "hdd", nullptr, false)
|
||||
|
||||
|
||||
MCFG_NVRAM_ADD_0FILL("nvram")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -405,8 +405,8 @@ ROM_START(jnero)
|
||||
ROM_REGION(0x80000, "pic", 0) /* PIC18c422 program - read-protected, need dumped */
|
||||
ROM_LOAD( "8722a-1206.bin", 0x000000, 0x80000, NO_DUMP )
|
||||
|
||||
DISK_REGION( "ata:0:hdd:image" ) /* ideally an IDENTIFY page from a real drive should be the IDTN metadata,
|
||||
but even factory-new boardsets came with a variety of HDD makes and models */
|
||||
DISK_REGION( "ata:0:hdd:image" ) /* ideally an IDENTIFY page from a real drive should be the IDTN metadata,
|
||||
but even factory-new boardsets came with a variety of HDD makes and models */
|
||||
DISK_IMAGE_READONLY("jn010108", 0, SHA1(5a27990478b65fca801c3a6518c519c5b4ca934d) )
|
||||
ROM_END
|
||||
|
||||
|
@ -185,7 +185,7 @@ public:
|
||||
uint8_t *maskBaseAddr;
|
||||
c123_tilemap_delegate cb;
|
||||
};
|
||||
|
||||
|
||||
c123_mTilemapInfo m_c123_TilemapInfo;
|
||||
|
||||
// C169 ROZ Layer Emulation
|
||||
|
@ -26,7 +26,7 @@ public:
|
||||
|
||||
uint8_t m_irq_mask;
|
||||
emu_timer *m_dac_irq_timer;
|
||||
|
||||
|
||||
DECLARE_WRITE8_MEMBER(irq_enable_w);
|
||||
DECLARE_WRITE8_MEMBER(trucocl_videoram_w);
|
||||
DECLARE_WRITE8_MEMBER(trucocl_colorram_w);
|
||||
|
@ -646,7 +646,7 @@ TIMER_CALLBACK_MEMBER(mac_state::mac_adb_tick)
|
||||
{
|
||||
m_adb_command <<= 1;
|
||||
}
|
||||
|
||||
|
||||
// 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);
|
||||
@ -659,7 +659,7 @@ TIMER_CALLBACK_MEMBER(mac_state::mac_adb_tick)
|
||||
if ((m_adb_direction) && (ADB_IS_BITBANG_CLASS))
|
||||
{
|
||||
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->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_waiting_cmd = 1; // we're going to get a command
|
||||
m_adb_irq_pending = 0;
|
||||
m_adb_extclock = 1; // VIA output shifts on falling clock
|
||||
m_adb_extclock = 1; // VIA output shifts on falling clock
|
||||
m_via1->write_cb1(m_adb_extclock);
|
||||
m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
|
||||
break;
|
||||
@ -709,9 +709,9 @@ void mac_state::mac_adb_newaction(int state)
|
||||
m_adb_send = m_adb_buffer[0];
|
||||
m_adb_datasize--;
|
||||
|
||||
m_adb_extclock = 0; // VIA input shifts on rising clock
|
||||
m_adb_extclock = 0; // VIA input shifts on rising clock
|
||||
m_via1->write_cb1(m_adb_extclock);
|
||||
|
||||
|
||||
// move down the rest of the buffer, if any
|
||||
for (i = 0; i < m_adb_datasize; i++)
|
||||
{
|
||||
@ -1125,7 +1125,7 @@ void mac_state::adb_vblank()
|
||||
this->adb_talk();
|
||||
|
||||
m_adb_timer_ticks = 8;
|
||||
m_adb_extclock = 0; // VIA input shifts on rising clock
|
||||
m_adb_extclock = 0; // VIA input shifts on rising clock
|
||||
m_via1->write_cb1(m_adb_extclock);
|
||||
this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
|
||||
}
|
||||
@ -1164,7 +1164,7 @@ void mac_state::adb_vblank()
|
||||
this->adb_talk();
|
||||
|
||||
m_adb_timer_ticks = 8;
|
||||
m_adb_extclock = 0; // VIA input shifts on rising clock
|
||||
m_adb_extclock = 0; // VIA input shifts on rising clock
|
||||
m_via1->write_cb1(m_adb_extclock);
|
||||
this->m_adb_timer->adjust(attotime(0, ATTOSECONDS_IN_USEC(100)));
|
||||
}
|
||||
|
@ -13480,7 +13480,7 @@ hapytour // (c) 2005 GAV Company (on Eolith's Ghost hardw
|
||||
touryuu // (c) 200? Yuki Enterprise
|
||||
|
||||
@source:giclassic.cpp
|
||||
giclasex
|
||||
giclasex
|
||||
giclassvr
|
||||
|
||||
@source:gijoe.cpp
|
||||
@ -27651,14 +27651,14 @@ yis60464 //
|
||||
mt735 //
|
||||
|
||||
@source:mtouchxl.cpp
|
||||
mtouchxl // 1997 Merit Industries
|
||||
mtchxl5k // 1998 Merit Industries
|
||||
mtchxl5ko // 1998 Merit Industries
|
||||
mtchxl5ko2 // 1998 Merit Industries
|
||||
mtchxl6k // 1999 Merit Industries
|
||||
mtchxl6ko // 1999 Merit Industries
|
||||
mtchxlgld // 2000 Merit Industries
|
||||
mtchxlgldo // 2000 Merit Industries
|
||||
mtouchxl // 1997 Merit Industries
|
||||
mtchxl5k // 1998 Merit Industries
|
||||
mtchxl5ko // 1998 Merit Industries
|
||||
mtchxl5ko2 // 1998 Merit Industries
|
||||
mtchxl6k // 1999 Merit Industries
|
||||
mtchxl6ko // 1999 Merit Industries
|
||||
mtchxlgld // 2000 Merit Industries
|
||||
mtchxlgldo // 2000 Merit Industries
|
||||
|
||||
@source:mtx.cpp
|
||||
mtx500 // 1983 Memotech MTX 500
|
||||
@ -29616,7 +29616,7 @@ othunderu // B67 (c) 1988 Taito America Corporation (US, r
|
||||
othunderuo // B67 (c) 1988 Taito America Corporation (US)
|
||||
|
||||
@source:otomedius.cpp
|
||||
otomedius // (c) 2007 Konami
|
||||
otomedius // (c) 2007 Konami
|
||||
|
||||
@source:overdriv.cpp
|
||||
overdriv // GX789 (c) 1990
|
||||
@ -30920,7 +30920,7 @@ pirates // (c) 1994 NIX
|
||||
piratesb // bootleg?
|
||||
|
||||
@source:piratesh.cpp
|
||||
piratesh // (c) 1995 Konami
|
||||
piratesh // (c) 1995 Konami
|
||||
|
||||
@source:pitagjr.cpp
|
||||
pitagjr // Pitagorin Junior
|
||||
@ -37001,7 +37001,7 @@ votrtnt // 1980 Votrax Type-'N-Talk
|
||||
|
||||
@source:voyager.cpp
|
||||
voyager // (c) 2002 Team Play, Inc.
|
||||
policet2 // (c) 2003 Team Play, Inc.
|
||||
policet2 // (c) 2003 Team Play, Inc.
|
||||
|
||||
@source:vp101.cpp
|
||||
jnero // (c) 2004 ICE/Play Mechanix
|
||||
|
@ -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];
|
||||
offset = ((offset & 4) >> 1);
|
||||
|
||||
|
||||
int finoffs = (romofs * 2) + (offset * 2) + magic;
|
||||
|
||||
return ROM[finoffs+2] | (ROM[finoffs]<<8);
|
||||
|
@ -7,19 +7,19 @@
|
||||
/*
|
||||
|
||||
Registers
|
||||
|
||||
|
||||
0
|
||||
xxxx xxxx X-Scroll [7:0]
|
||||
|
||||
1
|
||||
xxxx xxxx X-Scroll [15:8]
|
||||
|
||||
|
||||
2
|
||||
xxxx xxxx Y-Scroll [7:0]
|
||||
|
||||
|
||||
3
|
||||
xxxx xxxx Y-Scroll [15:8]
|
||||
|
||||
|
||||
4 Control
|
||||
.... ...x 0:Swap XY 1:Normal
|
||||
.... ..x. Interrupt related?
|
||||
@ -27,13 +27,13 @@
|
||||
.... x... Flip X
|
||||
...x .... Flip Y
|
||||
xxx. .... Wrap control
|
||||
|
||||
|
||||
5
|
||||
.... .... Unknown
|
||||
|
||||
|
||||
6
|
||||
xxxx xxxx ROM access address [7:0]
|
||||
|
||||
|
||||
7
|
||||
xxxx xxxx ROM access address [15:8]
|
||||
*/
|
||||
@ -72,9 +72,9 @@ void k053250ps_device::device_start()
|
||||
m_ram.resize(0x6000/2);
|
||||
m_buffer[0] = &m_ram[0x0000];
|
||||
m_buffer[1] = &m_ram[0x0800];
|
||||
|
||||
// m_buffer[0] = &m_ram[0x2000];
|
||||
// m_buffer[1] = &m_ram[0x2800];
|
||||
|
||||
// m_buffer[0] = &m_ram[0x2000];
|
||||
// m_buffer[1] = &m_ram[0x2800];
|
||||
|
||||
unpack_nibbles();
|
||||
|
||||
@ -82,7 +82,7 @@ void k053250ps_device::device_start()
|
||||
save_item(NAME(m_regs));
|
||||
save_item(NAME(m_page));
|
||||
save_item(NAME(m_dmairq_on));
|
||||
|
||||
|
||||
m_dmairq_cb.resolve_safe();
|
||||
m_timer_lvcdma = timer_alloc(0);
|
||||
}
|
||||
@ -91,10 +91,10 @@ void k053250ps_device::device_reset()
|
||||
{
|
||||
m_page = 0;
|
||||
memset(m_regs, 0, sizeof(m_regs));
|
||||
|
||||
|
||||
m_timer_lvcdma_state = OD_IDLE;
|
||||
m_timer_lvcdma->adjust(attotime::never);
|
||||
|
||||
|
||||
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 )
|
||||
{
|
||||
static int16_t scroll_x;
|
||||
|
||||
|
||||
if (machine().input().code_pressed(KEYCODE_A))
|
||||
{
|
||||
scroll_x--;
|
||||
popmessage("SCROLL: %d\n", scroll_x);
|
||||
}
|
||||
|
||||
|
||||
else if (machine().input().code_pressed(KEYCODE_S))
|
||||
{
|
||||
scroll_x++;
|
||||
popmessage("SCROLL: %d\n", scroll_x);
|
||||
}
|
||||
|
||||
|
||||
uint8_t *pix_ptr;
|
||||
const pen_t *pal_base, *pal_ptr;
|
||||
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;
|
||||
|
||||
//printf("CTRL: %x\n", ctrl);
|
||||
|
||||
|
||||
// 00
|
||||
// 0x12
|
||||
// 0x10
|
||||
|
||||
|
||||
switch (ctrl >> 5) // the upper four bits of the control register select source and target dimensions
|
||||
{
|
||||
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
|
||||
}
|
||||
|
||||
// dst_wrapmask = ~0; // scanlines don't seem to wrap horizontally in normal orientation
|
||||
// dst_wrapmask = ~0; // scanlines don't seem to wrap horizontally in normal orientation
|
||||
passes = 1; // draw scanline in a single pass
|
||||
}
|
||||
else // orientaion with X and Y parameters switched
|
||||
@ -401,13 +401,13 @@ void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, in
|
||||
if (src_clipmask)
|
||||
{
|
||||
// determine target wrap boundary and draw scanline in two passes if the source is clipped
|
||||
// dst_wrapmask = dst_height - 1;
|
||||
// dst_wrapmask = dst_height - 1;
|
||||
passes = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
// otherwise disable target wraparound and draw scanline in a single pass
|
||||
// dst_wrapmask = ~0;
|
||||
// dst_wrapmask = ~0;
|
||||
passes = 1;
|
||||
}
|
||||
}
|
||||
@ -421,7 +421,7 @@ void k053250ps_device::draw( bitmap_rgb32 &bitmap, const rectangle &cliprect, in
|
||||
|
||||
// load physical palette base
|
||||
pal_base = palette().pens() + (colorbase << 4) % palette().entries();
|
||||
|
||||
|
||||
//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++)
|
||||
{
|
||||
linedata_offs &= 0x7ff; // line info data wraps at the four-kilobyte boundary
|
||||
|
||||
|
||||
color = line_ram[linedata_offs]; // get scanline color code
|
||||
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];
|
||||
|
||||
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
|
||||
if (wrap500 && scroll >= 0x500) scroll -= 0x800;
|
||||
|
||||
|
||||
if (1 && scroll >= 0x500) scroll -= 0x800;
|
||||
|
||||
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]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// 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
|
||||
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->adjust(attotime::from_ticks(4096, clock()));
|
||||
m_dmairq_cb(ASSERT_LINE);
|
||||
|
||||
// memcpy(m_buffer[m_page], &m_ram[0], 0x1000);
|
||||
// m_page ^= 1;
|
||||
|
||||
// memcpy(m_buffer[m_page], &m_ram[0], 0x1000);
|
||||
// m_page ^= 1;
|
||||
|
||||
break;
|
||||
|
||||
|
||||
case OD_WAIT_END:
|
||||
m_timer_lvcdma_state = OD_IDLE;
|
||||
m_timer_lvcdma->adjust(attotime::never);
|
||||
m_dmairq_cb(CLEAR_LINE);
|
||||
|
||||
|
||||
if(/*(m_regs[4] & 0x02) &&*/ !m_dmairq_on)
|
||||
{
|
||||
m_dmairq_on = true;
|
||||
|
@ -26,7 +26,7 @@ public:
|
||||
|
||||
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); }
|
||||
|
||||
|
||||
DECLARE_READ16_MEMBER(reg_r);
|
||||
DECLARE_WRITE16_MEMBER(reg_w);
|
||||
DECLARE_READ16_MEMBER(ram_r);
|
||||
@ -44,7 +44,7 @@ protected:
|
||||
virtual void device_reset() override;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
enum {
|
||||
OD_IDLE,
|
||||
OD_WAIT_START,
|
||||
@ -54,7 +54,7 @@ private:
|
||||
devcb_write_line m_dmairq_cb;
|
||||
int m_timer_lvcdma_state;
|
||||
bool m_dmairq_on;
|
||||
|
||||
|
||||
// configuration
|
||||
int m_offx, m_offy;
|
||||
|
||||
|
@ -154,4 +154,4 @@ pen_t s97269pb_device::choose_pen(uint8_t x, uint8_t y, pen_t back_pen)
|
||||
}
|
||||
}
|
||||
return back_pen;
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ protected:
|
||||
private:
|
||||
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
|
||||
uint8_t m_palette_bank;
|
||||
};
|
||||
|
@ -103,7 +103,7 @@ void wolfpack_state::video_start()
|
||||
for (int i = 0; i < 0x8000; i++)
|
||||
{
|
||||
uint16_t val = 0;
|
||||
|
||||
|
||||
int bit = (val >> 0x0) ^ (val >> 0xe) ^ 1;
|
||||
|
||||
val = (val << 1) | (bit & 1);
|
||||
|
@ -88,7 +88,7 @@
|
||||
[memoryScroll setHasVerticalScroller:YES];
|
||||
[memoryScroll setAutohidesScrollers:YES];
|
||||
[memoryScroll setBorderType:NSNoBorder];
|
||||
[memoryScroll setDrawsBackground:NO];
|
||||
[memoryScroll setDrawsBackground:NO];
|
||||
[memoryScroll setDocumentView:memoryView];
|
||||
[memoryView release];
|
||||
[[window contentView] addSubview:memoryScroll];
|
||||
|
@ -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(OPTION_DEBUG, true, 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)->execute();
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user