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