mirror of
https://github.com/holub/mame
synced 2025-04-16 21:44:32 +03:00
srcclean and regenerate localisations (nw)
This commit is contained in:
parent
46af74afdf
commit
4e8bb7c7e5
@ -3,7 +3,7 @@
|
|||||||
<softwarelist name="cd32" description="Amiga CD-32 CD-ROMs">
|
<softwarelist name="cd32" description="Amiga CD-32 CD-ROMs">
|
||||||
|
|
||||||
<!--- Sourced from Redump -->
|
<!--- Sourced from Redump -->
|
||||||
|
|
||||||
<!-- Doesn't boot -->
|
<!-- Doesn't boot -->
|
||||||
<software name="arabian" supported="no">
|
<software name="arabian" supported="no">
|
||||||
<description>Arabian Nights</description>
|
<description>Arabian Nights</description>
|
||||||
@ -108,7 +108,7 @@
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Doesn't boot -->
|
<!-- Doesn't boot -->
|
||||||
<software name="benefact" supported="no">
|
<software name="benefact" supported="no">
|
||||||
<description>Benefactor</description>
|
<description>Benefactor</description>
|
||||||
@ -179,7 +179,7 @@
|
|||||||
<disk name="bump n burn (europe)" sha1="15c624de3acbbc6e23b45deefbe5b007e4eaf8ab"/>
|
<disk name="bump n burn (europe)" sha1="15c624de3acbbc6e23b45deefbe5b007e4eaf8ab"/>
|
||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Freezes after the intro, glitchy graphics-->
|
<!-- Freezes after the intro, glitchy graphics-->
|
||||||
<software name="chaoseng" supported="no">
|
<software name="chaoseng" supported="no">
|
||||||
@ -192,7 +192,7 @@
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Doesn't boot -->
|
<!-- Doesn't boot -->
|
||||||
<software name="chuckrck" supported="no">
|
<software name="chuckrck" supported="no">
|
||||||
<description>Chuck Rock</description>
|
<description>Chuck Rock</description>
|
||||||
@ -216,7 +216,7 @@
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Doesn't boot -->
|
<!-- Doesn't boot -->
|
||||||
<software name="darkseed" supported="no">
|
<software name="darkseed" supported="no">
|
||||||
<description>Darkseed</description>
|
<description>Darkseed</description>
|
||||||
@ -228,7 +228,7 @@
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- v1.01, appears to work -->
|
<!-- v1.01, appears to work -->
|
||||||
<software name="deepcore" supported="partial">
|
<software name="deepcore" supported="partial">
|
||||||
<description>Deep Core</description>
|
<description>Deep Core</description>
|
||||||
@ -240,7 +240,7 @@
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Appears to work? -->
|
<!-- Appears to work? -->
|
||||||
<software name="dgen">
|
<software name="dgen">
|
||||||
<description>D-Generation</description>
|
<description>D-Generation</description>
|
||||||
@ -251,8 +251,8 @@
|
|||||||
<disk name="d-generation (europe)" sha1="caefe01fe46eee977e9d46f32ecc3bbf37acb613"/>
|
<disk name="d-generation (europe)" sha1="caefe01fe46eee977e9d46f32ecc3bbf37acb613"/>
|
||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Doesn't progress past loading screen-->
|
<!-- Doesn't progress past loading screen-->
|
||||||
<software name="disphero" supported="no">
|
<software name="disphero" supported="no">
|
||||||
<description>Disposable Hero</description>
|
<description>Disposable Hero</description>
|
||||||
@ -264,7 +264,7 @@
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Doesn't boot -->
|
<!-- Doesn't boot -->
|
||||||
<software name="donk" supported="no">
|
<software name="donk" supported="no">
|
||||||
<description>Donk! The Samurai Duck!</description>
|
<description>Donk! The Samurai Duck!</description>
|
||||||
@ -276,7 +276,7 @@
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Doesn't boot -->
|
<!-- Doesn't boot -->
|
||||||
<software name="dstone" supported="no">
|
<software name="dstone" supported="no">
|
||||||
<description>Dragonstone</description>
|
<description>Dragonstone</description>
|
||||||
@ -324,7 +324,7 @@
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Glitchy graphics -->
|
<!-- Glitchy graphics -->
|
||||||
<software name="fireice" supported="partial">
|
<software name="fireice" supported="partial">
|
||||||
<description>Fire And Ice - The Daring Adventures of Cool Coyote</description>
|
<description>Fire And Ice - The Daring Adventures of Cool Coyote</description>
|
||||||
@ -336,7 +336,7 @@
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Doesn't boot -->
|
<!-- Doesn't boot -->
|
||||||
<software name="flink" supported="no">
|
<software name="flink" supported="no">
|
||||||
<description>Flink</description>
|
<description>Flink</description>
|
||||||
@ -431,7 +431,7 @@
|
|||||||
<disk name="kid chaos (europe)" sha1="5c0345d317f19501fe0ecb3c1df54a3b7a7cde31"/>
|
<disk name="kid chaos (europe)" sha1="5c0345d317f19501fe0ecb3c1df54a3b7a7cde31"/>
|
||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Doesn't boot -->
|
<!-- Doesn't boot -->
|
||||||
<software name="lotus" supported="no">
|
<software name="lotus" supported="no">
|
||||||
@ -491,7 +491,7 @@
|
|||||||
<disk name="overkill and lunar-c (europe)" sha1="b17f3f64dedada407ddb3cd7b835bc1da17cb0ee"/>
|
<disk name="overkill and lunar-c (europe)" sha1="b17f3f64dedada407ddb3cd7b835bc1da17cb0ee"/>
|
||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Doesn't boot? -->
|
<!-- Doesn't boot? -->
|
||||||
<software name="projxubb" supported="no">
|
<software name="projxubb" supported="no">
|
||||||
@ -504,7 +504,7 @@
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Seems to run? -->
|
<!-- Seems to run? -->
|
||||||
<software name="quik" supported="partial">
|
<software name="quik" supported="partial">
|
||||||
<description>Quik the Thunder Rabbit</description>
|
<description>Quik the Thunder Rabbit</description>
|
||||||
@ -515,7 +515,7 @@
|
|||||||
<disk name="quik the thunder rabbit (europe)" sha1="18f6fc02352b650edeaf4c479c8f2043899aa220"/>
|
<disk name="quik the thunder rabbit (europe)" sha1="18f6fc02352b650edeaf4c479c8f2043899aa220"/>
|
||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Glitchy graphics, gameplay too fast? -->
|
<!-- Glitchy graphics, gameplay too fast? -->
|
||||||
<software name="riserobo" supported="partial">
|
<software name="riserobo" supported="partial">
|
||||||
@ -528,7 +528,7 @@
|
|||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Doesn't boot -->
|
<!-- Doesn't boot -->
|
||||||
<software name="roadkill" supported="no">
|
<software name="roadkill" supported="no">
|
||||||
<description>Roadkill</description>
|
<description>Roadkill</description>
|
||||||
@ -539,7 +539,7 @@
|
|||||||
<disk name="roadkill (europe)" sha1="234bd47866333732f74a7563e149f0ab73529294"/>
|
<disk name="roadkill (europe)" sha1="234bd47866333732f74a7563e149f0ab73529294"/>
|
||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Glitchy graphics, works okay otherwise -->
|
<!-- Glitchy graphics, works okay otherwise -->
|
||||||
<software name="seekdest" supported="partial">
|
<software name="seekdest" supported="partial">
|
||||||
@ -587,7 +587,7 @@
|
|||||||
<disk name="skeleton krew (europe)" sha1="cd23102a322ff40fad7b2c50f43d7135ebeb16b4"/>
|
<disk name="skeleton krew (europe)" sha1="cd23102a322ff40fad7b2c50f43d7135ebeb16b4"/>
|
||||||
</diskarea>
|
</diskarea>
|
||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- Doesn't work -->
|
<!-- Doesn't work -->
|
||||||
<software name="suprputt" supported="no">
|
<software name="suprputt" supported="no">
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -9026,7 +9026,7 @@
|
|||||||
</part>
|
</part>
|
||||||
</software>
|
</software>
|
||||||
|
|
||||||
<!-- handwritten labels, possible hack of samsho5h?
|
<!-- handwritten labels, possible hack of samsho5h?
|
||||||
p1.bin 270-p1c.p1 90.607002%
|
p1.bin 270-p1c.p1 90.607002%
|
||||||
p2.bin 270-p2c.sp2 99.999763% (all bytes that differ do so by only bits 0x20 or 0x02, which is suspicious)
|
p2.bin 270-p2c.sp2 99.999763% (all bytes that differ do so by only bits 0x20 or 0x02, which is suspicious)
|
||||||
-->
|
-->
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -24,7 +24,7 @@ function portname.startplugin()
|
|||||||
end
|
end
|
||||||
return filename
|
return filename
|
||||||
end
|
end
|
||||||
|
|
||||||
emu.register_start(function()
|
emu.register_start(function()
|
||||||
local reclevel = 0
|
local reclevel = 0
|
||||||
local function parse_names(names)
|
local function parse_names(names)
|
||||||
|
@ -955,7 +955,7 @@ end
|
|||||||
buildoptions_cpp {
|
buildoptions_cpp {
|
||||||
"-Woverloaded-virtual",
|
"-Woverloaded-virtual",
|
||||||
}
|
}
|
||||||
|
|
||||||
if _OPTIONS["SANITIZE"] then
|
if _OPTIONS["SANITIZE"] then
|
||||||
buildoptions {
|
buildoptions {
|
||||||
"-fsanitize=".. _OPTIONS["SANITIZE"]
|
"-fsanitize=".. _OPTIONS["SANITIZE"]
|
||||||
|
@ -281,4 +281,4 @@ SLOT_INTERFACE_START(electron_cart)
|
|||||||
SLOT_INTERFACE_INTERNAL("click", ELECTRON_CLICK)
|
SLOT_INTERFACE_INTERNAL("click", ELECTRON_CLICK)
|
||||||
//SLOT_INTERFACE_INTERNAL("cumana", ELECTRON_CUMANA)
|
//SLOT_INTERFACE_INTERNAL("cumana", ELECTRON_CUMANA)
|
||||||
SLOT_INTERFACE_INTERNAL("peg400", ELECTRON_PEG400)
|
SLOT_INTERFACE_INTERNAL("peg400", ELECTRON_PEG400)
|
||||||
SLOT_INTERFACE_END
|
SLOT_INTERFACE_END
|
||||||
|
@ -92,7 +92,7 @@ READ16_MEMBER(mach32_8514a_device::mach32_config1_r)
|
|||||||
* bits 6-7 16bpp colour mode (0=555, 1=565, 2=655, 3=664)
|
* bits 6-7 16bpp colour mode (0=555, 1=565, 2=655, 3=664)
|
||||||
* bit 8 Multiplex pixels - processes 4 pixels in parallel by the DAC
|
* bit 8 Multiplex pixels - processes 4 pixels in parallel by the DAC
|
||||||
* bit 9 24bpp config (0=3Bytes/pixel, 1=4Bytes/pixel)
|
* bit 9 24bpp config (0=3Bytes/pixel, 1=4Bytes/pixel)
|
||||||
* bit 10 24bpp colour order (0=RGB, LSB reserved in 4Bpp, 1=BGR, MSB reserved in 4Bpp)
|
* bit 10 24bpp colour order (0=RGB, LSB reserved in 4Bpp, 1=BGR, MSB reserved in 4Bpp)
|
||||||
* bit 11 Display pixel size to be written
|
* bit 11 Display pixel size to be written
|
||||||
* bits 12-13 DAC extended address inputs RS2,RS3
|
* bits 12-13 DAC extended address inputs RS2,RS3
|
||||||
* bit 14 Enabled 8-bit DAC (0=6-bit)
|
* bit 14 Enabled 8-bit DAC (0=6-bit)
|
||||||
@ -164,7 +164,7 @@ void mach32_device::ati_define_video_mode()
|
|||||||
ati_vga_device::ati_define_video_mode();
|
ati_vga_device::ati_define_video_mode();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
set_dot_clock();
|
set_dot_clock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@ public:
|
|||||||
DECLARE_READ16_MEMBER(mach32_config1_r);
|
DECLARE_READ16_MEMBER(mach32_config1_r);
|
||||||
DECLARE_WRITE16_MEMBER(mach32_horz_overscan_w) {} // TODO
|
DECLARE_WRITE16_MEMBER(mach32_horz_overscan_w) {} // TODO
|
||||||
DECLARE_READ16_MEMBER(mach32_ext_ge_r) { return 0x0000; } // TODO
|
DECLARE_READ16_MEMBER(mach32_ext_ge_r) { return 0x0000; } // TODO
|
||||||
|
|
||||||
bool has_display_mode_changed() { if(display_mode_change) { display_mode_change = false; return true; } else return false; }
|
bool has_display_mode_changed() { if(display_mode_change) { display_mode_change = false; return true; } else return false; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -126,35 +126,35 @@ WRITE32_MEMBER( nubus_quadralink_device::dev_w )
|
|||||||
//printf("write %x to QL space @ %x, mask %08x\n", data, offset, mem_mask);
|
//printf("write %x to QL space @ %x, mask %08x\n", data, offset, mem_mask);
|
||||||
switch (offset)
|
switch (offset)
|
||||||
{
|
{
|
||||||
case 0x0000: // SCC 2 A control
|
case 0x0000: // SCC 2 A control
|
||||||
m_scc2->ca_w(space, 0, data & 0xff);
|
m_scc2->ca_w(space, 0, data & 0xff);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0002: // SCC 2 A data
|
case 0x0002: // SCC 2 A data
|
||||||
m_scc2->da_w(space, 0, data & 0xff);
|
m_scc2->da_w(space, 0, data & 0xff);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0004: // SCC 2 B control
|
case 0x0004: // SCC 2 B control
|
||||||
m_scc2->cb_w(space, 0, data & 0xff);
|
m_scc2->cb_w(space, 0, data & 0xff);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x0006: // SCC 2 B data
|
case 0x0006: // SCC 2 B data
|
||||||
m_scc2->db_w(space, 0, data & 0xff);
|
m_scc2->db_w(space, 0, data & 0xff);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x10000: // SCC 1 A control
|
case 0x10000: // SCC 1 A control
|
||||||
m_scc1->ca_w(space, 0, data & 0xff);
|
m_scc1->ca_w(space, 0, data & 0xff);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x10002: // SCC 1 A data
|
case 0x10002: // SCC 1 A data
|
||||||
m_scc1->da_w(space, 0, data & 0xff);
|
m_scc1->da_w(space, 0, data & 0xff);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x10004: // SCC 1 B control
|
case 0x10004: // SCC 1 B control
|
||||||
m_scc1->cb_w(space, 0, data & 0xff);
|
m_scc1->cb_w(space, 0, data & 0xff);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x10006: // SCC 1 B data
|
case 0x10006: // SCC 1 B data
|
||||||
m_scc1->db_w(space, 0, data & 0xff);
|
m_scc1->db_w(space, 0, data & 0xff);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -173,7 +173,7 @@ READ32_MEMBER( nubus_quadralink_device::dev_r )
|
|||||||
|
|
||||||
case 0x0004:
|
case 0x0004:
|
||||||
return m_scc2->cb_r(space, 0);
|
return m_scc2->cb_r(space, 0);
|
||||||
|
|
||||||
case 0x0006:
|
case 0x0006:
|
||||||
return m_scc2->db_r(space, 0);
|
return m_scc2->db_r(space, 0);
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ READ32_MEMBER( nubus_quadralink_device::dev_r )
|
|||||||
|
|
||||||
case 0x10004:
|
case 0x10004:
|
||||||
return m_scc1->cb_r(space, 0);
|
return m_scc1->cb_r(space, 0);
|
||||||
|
|
||||||
case 0x10006:
|
case 0x10006:
|
||||||
return m_scc1->db_r(space, 0);
|
return m_scc1->db_r(space, 0);
|
||||||
}
|
}
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
|
|
||||||
Datel Game Booster for Playstation 1
|
Datel Game Booster for Playstation 1
|
||||||
|
|
||||||
Gameboy emulator with Gameboy cartridge slot
|
Gameboy emulator with Gameboy cartridge slot
|
||||||
|
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
@ -106,7 +106,7 @@ WRITE16_MEMBER(psx_gamebooster_device::exp_w)
|
|||||||
{
|
{
|
||||||
offset -= 0x20000;
|
offset -= 0x20000;
|
||||||
logerror("%s: psx_gamebooster_device::exp_w %04x %04x\n", machine().describe_context(), offset*2, data);
|
logerror("%s: psx_gamebooster_device::exp_w %04x %04x\n", machine().describe_context(), offset*2, data);
|
||||||
|
|
||||||
if (mem_mask & 0xff00) m_cartslot->write_bank(space, (offset*2)+1, data>>8);
|
if (mem_mask & 0xff00) m_cartslot->write_bank(space, (offset*2)+1, data>>8);
|
||||||
if (mem_mask & 0x00ff) m_cartslot->write_bank(space, (offset*2)+0, data); // send this 2nd or it erases the bank with the above
|
if (mem_mask & 0x00ff) m_cartslot->write_bank(space, (offset*2)+0, data); // send this 2nd or it erases the bank with the above
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
#define EHCMACD 0x04e
|
#define EHCMACD 0x04e
|
||||||
#define EHCSUMD 0x086
|
#define EHCSUMD 0x086
|
||||||
#define EHCFFTD 0x096
|
#define EHCFFTD 0x096
|
||||||
#define EMUL_N 0x100
|
#define EMUL_N 0x100
|
||||||
#define EMUL 0x102
|
#define EMUL 0x102
|
||||||
#define EMULU 0x104
|
#define EMULU 0x104
|
||||||
#define EMULS 0x106
|
#define EMULS 0x106
|
||||||
|
@ -415,7 +415,7 @@ void hyperstone_device::dump_registers()
|
|||||||
{
|
{
|
||||||
//if (m_core->global_regs[0] == 0x11094)
|
//if (m_core->global_regs[0] == 0x11094)
|
||||||
//{
|
//{
|
||||||
// total_11094++;
|
// total_11094++;
|
||||||
//}
|
//}
|
||||||
return;
|
return;
|
||||||
} else if (total_ops == 0ULL) {
|
} else if (total_ops == 0ULL) {
|
||||||
@ -1943,4 +1943,4 @@ DEFINE_DEVICE_TYPE(E132XSR, e132xsr_device, "e132xsr", "E1-32XSR")
|
|||||||
DEFINE_DEVICE_TYPE(GMS30C2116, gms30c2116_device, "gms30c2116", "GMS30C2116")
|
DEFINE_DEVICE_TYPE(GMS30C2116, gms30c2116_device, "gms30c2116", "GMS30C2116")
|
||||||
DEFINE_DEVICE_TYPE(GMS30C2132, gms30c2132_device, "gms30c2132", "GMS30C2132")
|
DEFINE_DEVICE_TYPE(GMS30C2132, gms30c2132_device, "gms30c2132", "GMS30C2132")
|
||||||
DEFINE_DEVICE_TYPE(GMS30C2216, gms30c2216_device, "gms30c2216", "GMS30C2216")
|
DEFINE_DEVICE_TYPE(GMS30C2216, gms30c2216_device, "gms30c2216", "GMS30C2216")
|
||||||
DEFINE_DEVICE_TYPE(GMS30C2232, gms30c2232_device, "gms30c2232", "GMS30C2232")
|
DEFINE_DEVICE_TYPE(GMS30C2232, gms30c2232_device, "gms30c2232", "GMS30C2232")
|
||||||
|
@ -46,14 +46,14 @@
|
|||||||
#define EXECUTE_UNMAPPED_CODE 2
|
#define EXECUTE_UNMAPPED_CODE 2
|
||||||
#define EXECUTE_RESET_CACHE 3
|
#define EXECUTE_RESET_CACHE 3
|
||||||
|
|
||||||
#define E132XS_STRICT_VERIFY 0x0001 /* verify all instructions */
|
#define E132XS_STRICT_VERIFY 0x0001 /* verify all instructions */
|
||||||
|
|
||||||
#define SINGLE_INSTRUCTION_MODE (1)
|
#define SINGLE_INSTRUCTION_MODE (1)
|
||||||
|
|
||||||
#define ENABLE_E132XS_DRC (1)
|
#define ENABLE_E132XS_DRC (1)
|
||||||
|
|
||||||
#define E132XS_LOG_DRC_REGS (0)
|
#define E132XS_LOG_DRC_REGS (0)
|
||||||
#define E132XS_LOG_INTERPRETER_REGS (0)
|
#define E132XS_LOG_INTERPRETER_REGS (0)
|
||||||
#define E132XS_COUNT_INSTRUCTIONS (0)
|
#define E132XS_COUNT_INSTRUCTIONS (0)
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
@ -443,9 +443,9 @@ private:
|
|||||||
/* internal compiler state */
|
/* internal compiler state */
|
||||||
struct compiler_state
|
struct compiler_state
|
||||||
{
|
{
|
||||||
uint32_t m_cycles; /* accumulated cycles */
|
uint32_t m_cycles; /* accumulated cycles */
|
||||||
uint8_t m_checkints; /* need to check interrupts before next instruction */
|
uint8_t m_checkints; /* need to check interrupts before next instruction */
|
||||||
uml::code_label m_labelnum; /* index for local labels */
|
uml::code_label m_labelnum; /* index for local labels */
|
||||||
};
|
};
|
||||||
|
|
||||||
void execute_run_drc();
|
void execute_run_drc();
|
||||||
|
@ -1231,4 +1231,4 @@ bool hyperstone_device::generate_opcode(drcuml_block *block, compiler_state *com
|
|||||||
UML_LABEL(block, done);
|
UML_LABEL(block, done);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -4528,9 +4528,9 @@ void hyperstone_device::generate_lddp(drcuml_block *block, compiler_state *compi
|
|||||||
UML_ADD(block, I3, I0, 8);
|
UML_ADD(block, I3, I0, 8);
|
||||||
UML_AND(block, I0, I0, ~3);
|
UML_AND(block, I0, I0, ~3);
|
||||||
UML_CALLH(block, *m_mem_read32);
|
UML_CALLH(block, *m_mem_read32);
|
||||||
UML_MOV(block, I2, I1); // I2: dreg[0]
|
UML_MOV(block, I2, I1); // I2: dreg[0]
|
||||||
UML_ADD(block, I0, I0, 4);
|
UML_ADD(block, I0, I0, 4);
|
||||||
UML_CALLH(block, *m_mem_read32); // I1: dreg[4]
|
UML_CALLH(block, *m_mem_read32); // I1: dreg[4]
|
||||||
|
|
||||||
if (SRC_GLOBAL)
|
if (SRC_GLOBAL)
|
||||||
{
|
{
|
||||||
@ -4847,9 +4847,9 @@ void hyperstone_device::generate_frame(drcuml_block *block, compiler_state *comp
|
|||||||
|
|
||||||
UML_ROLAND(block, I1, DRC_SR, 7, 0x7f);
|
UML_ROLAND(block, I1, DRC_SR, 7, 0x7f);
|
||||||
UML_SUB(block, I1, I1, op & 0xf);
|
UML_SUB(block, I1, I1, op & 0xf);
|
||||||
UML_ROLINS(block, DRC_SR, I1, 25, 0xfe000000); // SET_FP(GET_FP - SRC_CODE)
|
UML_ROLINS(block, DRC_SR, I1, 25, 0xfe000000); // SET_FP(GET_FP - SRC_CODE)
|
||||||
UML_ROLINS(block, DRC_SR, op, 17, 0x01e00000); // SET_FL(DST_CODE)
|
UML_ROLINS(block, DRC_SR, op, 17, 0x01e00000); // SET_FL(DST_CODE)
|
||||||
UML_AND(block, DRC_SR, DRC_SR, ~M_MASK); // SET_M(0)
|
UML_AND(block, DRC_SR, DRC_SR, ~M_MASK); // SET_M(0)
|
||||||
|
|
||||||
UML_MOV(block, I0, mem(&SP));
|
UML_MOV(block, I0, mem(&SP));
|
||||||
UML_MOV(block, I6, I0);
|
UML_MOV(block, I6, I0);
|
||||||
@ -4859,7 +4859,7 @@ void hyperstone_device::generate_frame(drcuml_block *block, compiler_state *comp
|
|||||||
UML_ROLAND(block, I2, I0, 30, 0x7f);
|
UML_ROLAND(block, I2, I0, 30, 0x7f);
|
||||||
UML_ADD(block, I2, I2, (64 - 10));
|
UML_ADD(block, I2, I2, (64 - 10));
|
||||||
UML_SUB(block, I3, I2, I1);
|
UML_SUB(block, I3, I2, I1);
|
||||||
UML_SEXT(block, I3, I3, SIZE_BYTE); // difference = ((SP & 0x1fc) >> 2) + (64 - 10) - ((GET_FP - SRC_CODE) + GET_FL)
|
UML_SEXT(block, I3, I3, SIZE_BYTE); // difference = ((SP & 0x1fc) >> 2) + (64 - 10) - ((GET_FP - SRC_CODE) + GET_FL)
|
||||||
|
|
||||||
int diff_in_range, done;
|
int diff_in_range, done;
|
||||||
UML_CMP(block, I3, -64);
|
UML_CMP(block, I3, -64);
|
||||||
|
@ -14,9 +14,9 @@
|
|||||||
|
|
||||||
#define FE_FP ((m_cpu->m_core->global_regs[1] & 0xfe000000) >> 25)
|
#define FE_FP ((m_cpu->m_core->global_regs[1] & 0xfe000000) >> 25)
|
||||||
#define FE_FL (m_cpu->m_core->fl_lut[((m_cpu->m_core->global_regs[1] >> 21) & 0xf)])
|
#define FE_FL (m_cpu->m_core->fl_lut[((m_cpu->m_core->global_regs[1] >> 21) & 0xf)])
|
||||||
#define FE_DST_CODE ((op & 0xf0) >> 4)
|
#define FE_DST_CODE ((op & 0xf0) >> 4)
|
||||||
#define FE_SRC_CODE (op & 0x0f)
|
#define FE_SRC_CODE (op & 0x0f)
|
||||||
#define SR_CODE (1 << 1)
|
#define SR_CODE (1 << 1)
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
INSTRUCTION PARSERS
|
INSTRUCTION PARSERS
|
||||||
|
@ -31,4 +31,4 @@ private:
|
|||||||
hyperstone_device *m_cpu;
|
hyperstone_device *m_cpu;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* MAME_CPU_E132XS_E132XSFE_H */
|
#endif /* MAME_CPU_E132XS_E132XSFE_H */
|
||||||
|
@ -336,7 +336,7 @@ void hyperstone_device::hyperstone_mov()
|
|||||||
|
|
||||||
check_delay_PC();
|
check_delay_PC();
|
||||||
|
|
||||||
const bool h = (SR & H_MASK) != 0;
|
const bool h = (SR & H_MASK) != 0;
|
||||||
SR &= ~H_MASK;
|
SR &= ~H_MASK;
|
||||||
if (DST_GLOBAL && h && !(SR & S_MASK))
|
if (DST_GLOBAL && h && !(SR & S_MASK))
|
||||||
{
|
{
|
||||||
|
@ -271,7 +271,7 @@ INPUT_PORTS_START( myb3k_common_ports )
|
|||||||
PORT_START("MYB3K_TB")
|
PORT_START("MYB3K_TB")
|
||||||
PORT_BIT( 0x0001U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("KP 5") // 87
|
PORT_BIT( 0x0001U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("KP 5") // 87
|
||||||
PORT_BIT( 0x0002U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("KP 6") // 88
|
PORT_BIT( 0x0002U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("KP 6") // 88
|
||||||
// PORT_BIT( 0x0004U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA_PAD) PORT_NAME("KP ,") // 89
|
// PORT_BIT( 0x0004U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_COMMA_PAD) PORT_NAME("KP ,") // 89
|
||||||
PORT_BIT( 0x0008U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("KP 1") // 90
|
PORT_BIT( 0x0008U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("KP 1") // 90
|
||||||
PORT_BIT( 0x0010U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("KP 2") // 91
|
PORT_BIT( 0x0010U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("KP 2") // 91
|
||||||
PORT_BIT( 0x0020U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("KP 3") // 92
|
PORT_BIT( 0x0020U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("KP 3") // 92
|
||||||
@ -284,13 +284,13 @@ INPUT_PORTS_START( myb3k_keyboard )
|
|||||||
PORT_INCLUDE( myb3k_common_ports )
|
PORT_INCLUDE( myb3k_common_ports )
|
||||||
|
|
||||||
PORT_MODIFY("MYB3K_T2")
|
PORT_MODIFY("MYB3K_T2")
|
||||||
PORT_BIT( 0x0008U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F12) PORT_NAME("Kanji") PORT_CHAR(UCHAR_MAMEKEY(F12)) // 12
|
PORT_BIT( 0x0008U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_F12) PORT_NAME("Kanji") PORT_CHAR(UCHAR_MAMEKEY(F12)) // 12
|
||||||
|
|
||||||
PORT_MODIFY("MYB3K_T3")
|
PORT_MODIFY("MYB3K_T3")
|
||||||
PORT_BIT( 0x0080U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_NAME("1 !") PORT_CHAR('1') PORT_CHAR('!') PORT_CHAR_IGNORE PORT_CHAR(0x30AA) // 16 オ
|
PORT_BIT( 0x0080U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_1) PORT_NAME("1 !") PORT_CHAR('1') PORT_CHAR('!') PORT_CHAR_IGNORE PORT_CHAR(0x30AA) // 16 オ
|
||||||
|
|
||||||
PORT_MODIFY("MYB3K_T4")
|
PORT_MODIFY("MYB3K_T4")
|
||||||
PORT_BIT( 0x0002U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("3 #") PORT_CHAR('3') PORT_CHAR('#') PORT_CHAR_IGNORE PORT_CHAR(0x30E7) // 18 ョ
|
PORT_BIT( 0x0002U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_3) PORT_NAME("3 #") PORT_CHAR('3') PORT_CHAR('#') PORT_CHAR_IGNORE PORT_CHAR(0x30E7) // 18 ョ
|
||||||
|
|
||||||
PORT_MODIFY("MYB3K_T5")
|
PORT_MODIFY("MYB3K_T5")
|
||||||
PORT_BIT( 0x0080U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_NAME("w W") PORT_CHAR('w') PORT_CHAR('W') PORT_CHAR_IGNORE PORT_CHAR(0x30E8) // 32 ヨ
|
PORT_BIT( 0x0080U, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_W) PORT_NAME("w W") PORT_CHAR('w') PORT_CHAR('W') PORT_CHAR_IGNORE PORT_CHAR(0x30E8) // 32 ヨ
|
||||||
|
@ -72,7 +72,7 @@ protected:
|
|||||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
||||||
|
|
||||||
output_delegate m_keyboard_cb;
|
output_delegate m_keyboard_cb;
|
||||||
required_ioport_array<12> m_io_kbd_t;
|
required_ioport_array<12> m_io_kbd_t;
|
||||||
u8 m_io_kbd_state[12][8];
|
u8 m_io_kbd_state[12][8];
|
||||||
|
|
||||||
int m_x, m_y;
|
int m_x, m_y;
|
||||||
@ -84,7 +84,7 @@ protected:
|
|||||||
class jb3000_keyboard_device : public myb3k_keyboard_device
|
class jb3000_keyboard_device : public myb3k_keyboard_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
jb3000_keyboard_device(
|
jb3000_keyboard_device(
|
||||||
const machine_config &mconfig,
|
const machine_config &mconfig,
|
||||||
char const *tag,
|
char const *tag,
|
||||||
device_t *owner,
|
device_t *owner,
|
||||||
@ -96,7 +96,7 @@ private:
|
|||||||
class stepone_keyboard_device : public myb3k_keyboard_device
|
class stepone_keyboard_device : public myb3k_keyboard_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
stepone_keyboard_device(
|
stepone_keyboard_device(
|
||||||
const machine_config &mconfig,
|
const machine_config &mconfig,
|
||||||
char const *tag,
|
char const *tag,
|
||||||
device_t *owner,
|
device_t *owner,
|
||||||
|
@ -17,7 +17,7 @@ Implements WD2010 / WD1010 controller basics for a single hard disk.
|
|||||||
|
|
||||||
UNIMPLEMENTED FEATURES :
|
UNIMPLEMENTED FEATURES :
|
||||||
- more than 1 drive (untested)
|
- more than 1 drive (untested)
|
||||||
- multi sector transfers (M = 1)
|
- multi sector transfers (M = 1)
|
||||||
- seek and index timers / ID not found.
|
- seek and index timers / ID not found.
|
||||||
- implied seeks / implied writes / retries
|
- implied seeks / implied writes / retries
|
||||||
- edge or level triggered seek complete (SC)
|
- edge or level triggered seek complete (SC)
|
||||||
@ -399,7 +399,7 @@ void wd2010_device::restore(uint8_t data)
|
|||||||
// Datasheet: DIRIN HIGH = in ; LOW = out
|
// Datasheet: DIRIN HIGH = in ; LOW = out
|
||||||
m_out_dirin_cb(0); // 0 = heads move away from the spindle, towards track O.
|
m_out_dirin_cb(0); // 0 = heads move away from the spindle, towards track O.
|
||||||
|
|
||||||
// Omitted: store step rate for later (implied seeks).
|
// Omitted: store step rate for later (implied seeks).
|
||||||
|
|
||||||
int step_pulses = 0;
|
int step_pulses = 0;
|
||||||
while (step_pulses <= STEP_LIMIT)
|
while (step_pulses <= STEP_LIMIT)
|
||||||
@ -419,7 +419,7 @@ void wd2010_device::restore(uint8_t data)
|
|||||||
|
|
||||||
if ( m_in_tk000_cb() || (step_pulses == STEP_LIMIT) ) // Simulate TRACK 00 signal (normally from DRIVE)
|
if ( m_in_tk000_cb() || (step_pulses == STEP_LIMIT) ) // Simulate TRACK 00 signal (normally from DRIVE)
|
||||||
{
|
{
|
||||||
m_present_cylinder = 0;
|
m_present_cylinder = 0;
|
||||||
m_task_file[TASK_FILE_CYLINDER_HIGH] = 0;
|
m_task_file[TASK_FILE_CYLINDER_HIGH] = 0;
|
||||||
m_task_file[TASK_FILE_CYLINDER_LOW] = 0;
|
m_task_file[TASK_FILE_CYLINDER_LOW] = 0;
|
||||||
|
|
||||||
@ -428,9 +428,9 @@ void wd2010_device::restore(uint8_t data)
|
|||||||
newstatus &= ~(STATUS_BSY | STATUS_CIP); // prepare new status; (INTRQ later) reset BSY, CIP
|
newstatus &= ~(STATUS_BSY | STATUS_CIP); // prepare new status; (INTRQ later) reset BSY, CIP
|
||||||
|
|
||||||
// NOTE: calculation needs 'data' (extracted from command register)
|
// NOTE: calculation needs 'data' (extracted from command register)
|
||||||
float step_ms = SETTLING_MS + LATENCY_MS + ( (float)sqrt(1.0 * step_pulses) * STEP_RATE_MS );
|
float step_ms = SETTLING_MS + LATENCY_MS + ( (float)sqrt(1.0 * step_pulses) * STEP_RATE_MS );
|
||||||
|
|
||||||
cmd_timer->adjust(attotime::from_usec(1000 * step_ms), newstatus);
|
cmd_timer->adjust(attotime::from_usec(1000 * step_ms), newstatus);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -463,7 +463,7 @@ void wd2010_device::seek(uint8_t data)
|
|||||||
|
|
||||||
int direction; // 0 = towards 0
|
int direction; // 0 = towards 0
|
||||||
int step_pulses;
|
int step_pulses;
|
||||||
|
|
||||||
// Calculate number of steps by comparing the cylinder registers
|
// Calculate number of steps by comparing the cylinder registers
|
||||||
// HI/LO with the internally stored position.
|
// HI/LO with the internally stored position.
|
||||||
uint32_t cylinder_registers = CYLINDER;
|
uint32_t cylinder_registers = CYLINDER;
|
||||||
@ -479,7 +479,7 @@ void wd2010_device::seek(uint8_t data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: calculation needs 'step_pulses' and 'data' (taken from command register)
|
// NOTE: calculation needs 'step_pulses' and 'data' (taken from command register)
|
||||||
float step_ms = SETTLING_MS + LATENCY_MS + ( (float)sqrt(1.0 * step_pulses) * STEP_RATE_MS );
|
float step_ms = SETTLING_MS + LATENCY_MS + ( (float)sqrt(1.0 * step_pulses) * STEP_RATE_MS );
|
||||||
|
|
||||||
m_out_dirin_cb(direction);
|
m_out_dirin_cb(direction);
|
||||||
|
|
||||||
@ -532,7 +532,7 @@ void wd2010_device::seek(uint8_t data)
|
|||||||
m_task_file[TASK_FILE_CYLINDER_LOW] = (m_present_cylinder - ((m_task_file[TASK_FILE_CYLINDER_HIGH] << 8) )) & 0xff;
|
m_task_file[TASK_FILE_CYLINDER_LOW] = (m_present_cylinder - ((m_task_file[TASK_FILE_CYLINDER_HIGH] << 8) )) & 0xff;
|
||||||
|
|
||||||
//LOGERROR("SEEK (END) - m_present_cylinder = %u SDH CYL L/H %02x / %02x\n", m_present_cylinder,m_task_file[TASK_FILE_CYLINDER_LOW],m_task_file[TASK_FILE_CYLINDER_HIGH]);
|
//LOGERROR("SEEK (END) - m_present_cylinder = %u SDH CYL L/H %02x / %02x\n", m_present_cylinder,m_task_file[TASK_FILE_CYLINDER_LOW],m_task_file[TASK_FILE_CYLINDER_HIGH]);
|
||||||
cmd_timer->adjust(attotime::from_usec(1000 * step_ms), newstatus);
|
cmd_timer->adjust(attotime::from_usec(1000 * step_ms), newstatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
@ -73,7 +73,7 @@ protected:
|
|||||||
|
|
||||||
// device_sound_interface overrides
|
// device_sound_interface overrides
|
||||||
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
|
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
|
||||||
|
|
||||||
// device_rom_interface overrides
|
// device_rom_interface overrides
|
||||||
virtual void rom_bank_updated() override;
|
virtual void rom_bank_updated() override;
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ protected:
|
|||||||
|
|
||||||
// sound stream update overrides
|
// sound stream update overrides
|
||||||
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
|
virtual void sound_stream_update(sound_stream &stream, stream_sample_t **inputs, stream_sample_t **outputs, int samples) override;
|
||||||
|
|
||||||
// device_rom_interface overrides
|
// device_rom_interface overrides
|
||||||
virtual void rom_bank_updated() override;
|
virtual void rom_bank_updated() override;
|
||||||
|
|
||||||
|
@ -5,12 +5,12 @@
|
|||||||
volt_reg.c
|
volt_reg.c
|
||||||
|
|
||||||
Direct current.
|
Direct current.
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
- If we continue having this device in MAME, add support for default voltage other
|
- If we continue having this device in MAME, add support for default voltage other
|
||||||
than (currently hardcoded) 5.0
|
than (currently hardcoded) 5.0
|
||||||
- When used in combination with a DAC, vreg device 1st stream update is skipped,
|
- When used in combination with a DAC, vreg device 1st stream update is skipped,
|
||||||
causing the DAC to fetch invalid input data. Why does this happen?
|
causing the DAC to fetch invalid input data. Why does this happen?
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ public:
|
|||||||
virtual TIMER_CALLBACK_MEMBER(vblank_timer_cb);
|
virtual TIMER_CALLBACK_MEMBER(vblank_timer_cb);
|
||||||
|
|
||||||
void set_offset(uint16_t val) { vga.crtc.offset = val; }
|
void set_offset(uint16_t val) { vga.crtc.offset = val; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@ -284,7 +284,7 @@ public:
|
|||||||
|
|
||||||
bool is_8514a_enabled() { return ibm8514.enabled; }
|
bool is_8514a_enabled() { return ibm8514.enabled; }
|
||||||
bool is_passthrough_set() { return ibm8514.passthrough; }
|
bool is_passthrough_set() { return ibm8514.passthrough; }
|
||||||
|
|
||||||
READ16_MEMBER(ibm8514_gpstatus_r);
|
READ16_MEMBER(ibm8514_gpstatus_r);
|
||||||
WRITE16_MEMBER(ibm8514_cmd_w);
|
WRITE16_MEMBER(ibm8514_cmd_w);
|
||||||
WRITE16_MEMBER(ibm8514_display_ctrl_w);
|
WRITE16_MEMBER(ibm8514_display_ctrl_w);
|
||||||
@ -331,7 +331,7 @@ public:
|
|||||||
READ16_MEMBER(ibm8514_write_mask_r);
|
READ16_MEMBER(ibm8514_write_mask_r);
|
||||||
WRITE16_MEMBER(ibm8514_write_mask_w);
|
WRITE16_MEMBER(ibm8514_write_mask_w);
|
||||||
WRITE16_MEMBER(ibm8514_advfunc_w);
|
WRITE16_MEMBER(ibm8514_advfunc_w);
|
||||||
|
|
||||||
void ibm8514_wait_draw();
|
void ibm8514_wait_draw();
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
@ -469,7 +469,7 @@ public:
|
|||||||
WRITE16_MEMBER(mach8_advfunc_w) { mach8.ati_mode = false; ibm8514_advfunc_w(space,offset,data,mem_mask); }
|
WRITE16_MEMBER(mach8_advfunc_w) { mach8.ati_mode = false; ibm8514_advfunc_w(space,offset,data,mem_mask); }
|
||||||
uint16_t get_ext_config() { return mach8.ge_ext_config; }
|
uint16_t get_ext_config() { return mach8.ge_ext_config; }
|
||||||
uint16_t offset() { if(mach8.ati_mode) return mach8.ge_pitch; else return 128; }
|
uint16_t offset() { if(mach8.ati_mode) return mach8.ge_pitch; else return 128; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
mach8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
mach8_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
||||||
virtual void device_start() override;
|
virtual void device_start() override;
|
||||||
|
@ -219,8 +219,8 @@ protected:
|
|||||||
uint8_t m_planebuf[2];
|
uint8_t m_planebuf[2];
|
||||||
int m_scanline; /* scanline count */
|
int m_scanline; /* scanline count */
|
||||||
std::unique_ptr<uint8_t[]> m_spriteram; /* sprite ram */
|
std::unique_ptr<uint8_t[]> m_spriteram; /* sprite ram */
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static constexpr device_timer_id TIMER_HBLANK = 0;
|
static constexpr device_timer_id TIMER_HBLANK = 0;
|
||||||
static constexpr device_timer_id TIMER_NMI = 1;
|
static constexpr device_timer_id TIMER_NMI = 1;
|
||||||
|
@ -40,7 +40,7 @@ READ8_MEMBER(ppu_vt03_device::palette_read)
|
|||||||
|
|
||||||
void ppu_vt03_device::set_new_pen(int i)
|
void ppu_vt03_device::set_new_pen(int i)
|
||||||
{
|
{
|
||||||
if(m_pal_mode == PAL_MODE_NEW_RGB) {
|
if(m_pal_mode == PAL_MODE_NEW_RGB) {
|
||||||
uint16_t rgbval = (m_newpal[i&0x7f] & 0xff) | ((m_newpal[(i&0x7f)+0x80] & 0xff)<<8);
|
uint16_t rgbval = (m_newpal[i&0x7f] & 0xff) | ((m_newpal[(i&0x7f)+0x80] & 0xff)<<8);
|
||||||
uint8_t blue = (rgbval & 0x001f) << 3;
|
uint8_t blue = (rgbval & 0x001f) << 3;
|
||||||
uint8_t green = (rgbval & 0x3e0) >> 2;
|
uint8_t green = (rgbval & 0x3e0) >> 2;
|
||||||
@ -49,7 +49,7 @@ void ppu_vt03_device::set_new_pen(int i)
|
|||||||
} else {
|
} else {
|
||||||
// TODO: should this be tidied up?
|
// TODO: should this be tidied up?
|
||||||
uint16_t palval = (m_newpal[i&0x7f] & 0x3f) | ((m_newpal[(i&0x7f)+0x80] & 0x3f)<<6);
|
uint16_t palval = (m_newpal[i&0x7f] & 0x3f) | ((m_newpal[(i&0x7f)+0x80] & 0x3f)<<6);
|
||||||
|
|
||||||
uint8_t rhue = palval & 0x0F;
|
uint8_t rhue = palval & 0x0F;
|
||||||
uint8_t rlum = (palval >> 4) & 0x0F;
|
uint8_t rlum = (palval >> 4) & 0x0F;
|
||||||
uint8_t rsat = (palval >> 8) & 0x0F;
|
uint8_t rsat = (palval >> 8) & 0x0F;
|
||||||
@ -61,7 +61,7 @@ void ppu_vt03_device::set_new_pen(int i)
|
|||||||
uint8_t hue_lut[16] = {0xD, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x0, 0xE, 0xF};
|
uint8_t hue_lut[16] = {0xD, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x0, 0xE, 0xF};
|
||||||
rhue = hue_lut[rhue];
|
rhue = hue_lut[rhue];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get base color
|
// Get base color
|
||||||
double hue = 287.0;
|
double hue = 287.0;
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ void ppu_vt03_device::set_new_pen(int i)
|
|||||||
double Kb = 0.1145;
|
double Kb = 0.1145;
|
||||||
double Ku = 2.029;
|
double Ku = 2.029;
|
||||||
double Kv = 1.140;
|
double Kv = 1.140;
|
||||||
|
|
||||||
double sat;
|
double sat;
|
||||||
double y, u, v;
|
double y, u, v;
|
||||||
double rad;
|
double rad;
|
||||||
@ -97,7 +97,7 @@ void ppu_vt03_device::set_new_pen(int i)
|
|||||||
y = (m_pal_mode == PAL_MODE_NEW_VG) ? 0.4 : 0.9;
|
y = (m_pal_mode == PAL_MODE_NEW_VG) ? 0.4 : 0.9;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
sat *= (rsat / 15.0);
|
sat *= (rsat / 15.0);
|
||||||
y *= (rlum / 15.0);
|
y *= (rlum / 15.0);
|
||||||
u = sat * cos(rad);
|
u = sat * cos(rad);
|
||||||
@ -121,7 +121,7 @@ void ppu_vt03_device::set_new_pen(int i)
|
|||||||
B = 0;
|
B = 0;
|
||||||
if (B > 255)
|
if (B > 255)
|
||||||
B = 255;
|
B = 255;
|
||||||
|
|
||||||
m_palette->set_pen_color(i & 0x7f, rgb_t(R, G ,B));
|
m_palette->set_pen_color(i & 0x7f, rgb_t(R, G ,B));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,7 +194,7 @@ void ppu_vt03_device::device_reset()
|
|||||||
// todo: what are the actual defaults for these?
|
// todo: what are the actual defaults for these?
|
||||||
for (int i = 0;i < 0x20;i++)
|
for (int i = 0;i < 0x20;i++)
|
||||||
set_201x_reg(i, 0x00);
|
set_201x_reg(i, 0x00);
|
||||||
|
|
||||||
init_palette(*m_palette, 0);
|
init_palette(*m_palette, 0);
|
||||||
m_read_bg4_bg3 = 0;
|
m_read_bg4_bg3 = 0;
|
||||||
m_va34 = 0;
|
m_va34 = 0;
|
||||||
|
@ -42,9 +42,9 @@ public:
|
|||||||
|
|
||||||
template <class Object> static devcb_base &set_read_bg_callback(device_t &device, Object &&cb) { return downcast<ppu_vt03_device &>(device).m_read_bg.set_callback(std::forward<Object>(cb)); }
|
template <class Object> static devcb_base &set_read_bg_callback(device_t &device, Object &&cb) { return downcast<ppu_vt03_device &>(device).m_read_bg.set_callback(std::forward<Object>(cb)); }
|
||||||
template <class Object> static devcb_base &set_read_sp_callback(device_t &device, Object &&cb) { return downcast<ppu_vt03_device &>(device).m_read_sp.set_callback(std::forward<Object>(cb)); }
|
template <class Object> static devcb_base &set_read_sp_callback(device_t &device, Object &&cb) { return downcast<ppu_vt03_device &>(device).m_read_sp.set_callback(std::forward<Object>(cb)); }
|
||||||
|
|
||||||
static void set_palette_mode(device_t &device, vtxx_pal_mode pmode) { downcast<ppu_vt03_device &>(device).m_pal_mode = pmode; }
|
static void set_palette_mode(device_t &device, vtxx_pal_mode pmode) { downcast<ppu_vt03_device &>(device).m_pal_mode = pmode; }
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read) override;
|
virtual DECLARE_READ8_MEMBER(read) override;
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) override;
|
virtual DECLARE_WRITE8_MEMBER(write) override;
|
||||||
virtual DECLARE_READ8_MEMBER(palette_read) override;
|
virtual DECLARE_READ8_MEMBER(palette_read) override;
|
||||||
@ -86,9 +86,9 @@ private:
|
|||||||
palette_device *m_palette;
|
palette_device *m_palette;
|
||||||
|
|
||||||
uint8_t m_201x_regs[0x20];
|
uint8_t m_201x_regs[0x20];
|
||||||
|
|
||||||
vtxx_pal_mode m_pal_mode = PAL_MODE_VT0x;
|
vtxx_pal_mode m_pal_mode = PAL_MODE_VT0x;
|
||||||
|
|
||||||
void set_2010_reg(uint8_t data);
|
void set_2010_reg(uint8_t data);
|
||||||
|
|
||||||
void set_new_pen(int i);
|
void set_new_pen(int i);
|
||||||
|
@ -898,7 +898,7 @@ void saturn_state::drawpixel_4bpp_trans(int x, int y, int patterndata, int offse
|
|||||||
void saturn_state::drawpixel_generic(int x, int y, int patterndata, int offsetcnt)
|
void saturn_state::drawpixel_generic(int x, int y, int patterndata, int offsetcnt)
|
||||||
{
|
{
|
||||||
int pix,transmask, spd = stv2_current_sprite.CMDPMOD & 0x40;
|
int pix,transmask, spd = stv2_current_sprite.CMDPMOD & 0x40;
|
||||||
// int mode;
|
// int mode;
|
||||||
int mesh = stv2_current_sprite.CMDPMOD & 0x100;
|
int mesh = stv2_current_sprite.CMDPMOD & 0x100;
|
||||||
int pix2;
|
int pix2;
|
||||||
|
|
||||||
@ -966,7 +966,7 @@ void saturn_state::drawpixel_generic(int x, int y, int patterndata, int offsetcn
|
|||||||
//mode = 2;
|
//mode = 2;
|
||||||
pix = pix+(stv2_current_sprite.CMDCOLR&0xffc0);
|
pix = pix+(stv2_current_sprite.CMDCOLR&0xffc0);
|
||||||
transmask = 0x3f;
|
transmask = 0x3f;
|
||||||
|
|
||||||
// Scud: the disposable assassin wants transparent pen on 0
|
// Scud: the disposable assassin wants transparent pen on 0
|
||||||
if ( !spd )
|
if ( !spd )
|
||||||
{
|
{
|
||||||
@ -1018,7 +1018,7 @@ void saturn_state::drawpixel_generic(int x, int y, int patterndata, int offsetcn
|
|||||||
pix |= stv2_current_sprite.CMDPMOD & 0x8000;
|
pix |= stv2_current_sprite.CMDPMOD & 0x8000;
|
||||||
/*
|
/*
|
||||||
TODO: from docs:
|
TODO: from docs:
|
||||||
"Except for the color calculation of replace and shadow, color calculation can only be performed when the color code of the original picture is RGB code.
|
"Except for the color calculation of replace and shadow, color calculation can only be performed when the color code of the original picture is RGB code.
|
||||||
Color calculation can be executed when the color code is color bank code, but the results are not guaranteed."
|
Color calculation can be executed when the color code is color bank code, but the results are not guaranteed."
|
||||||
Currently no idea about the "result not guaranteed" part, let's disable this branch for the time being ...
|
Currently no idea about the "result not guaranteed" part, let's disable this branch for the time being ...
|
||||||
*/
|
*/
|
||||||
@ -1063,7 +1063,7 @@ void saturn_state::drawpixel_generic(int x, int y, int patterndata, int offsetcn
|
|||||||
m_vdp1.framebuffer_draw_lines[y][x] = stv_vdp1_apply_gouraud_shading( x, y, pix );
|
m_vdp1.framebuffer_draw_lines[y][x] = stv_vdp1_apply_gouraud_shading( x, y, pix );
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// TODO: mode 5: prohibited, mode 6: gouraud shading + half-luminance, mode 7: gouraud-shading + half-transparent
|
// TODO: mode 5: prohibited, mode 6: gouraud shading + half-luminance, mode 7: gouraud-shading + half-transparent
|
||||||
popmessage("VDP1 PMOD = %02x, contact MAMEdev",stv2_current_sprite.CMDPMOD & 0x7);
|
popmessage("VDP1 PMOD = %02x, contact MAMEdev",stv2_current_sprite.CMDPMOD & 0x7);
|
||||||
m_vdp1.framebuffer_draw_lines[y][x] = pix;
|
m_vdp1.framebuffer_draw_lines[y][x] = pix;
|
||||||
break;
|
break;
|
||||||
|
@ -64,7 +64,7 @@ Video emulation TODO:
|
|||||||
- virtual hydlide:
|
- virtual hydlide:
|
||||||
\- transparent pens usage on most vdp1 items should be black instead.
|
\- transparent pens usage on most vdp1 items should be black instead.
|
||||||
\- likewise "press start button" is the other way around, i.e. black pen where it should be transparent instead.
|
\- likewise "press start button" is the other way around, i.e. black pen where it should be transparent instead.
|
||||||
|
|
||||||
Notes of Interest & Unclear features:
|
Notes of Interest & Unclear features:
|
||||||
|
|
||||||
-the test mode / bios is drawn with layer NBG3;
|
-the test mode / bios is drawn with layer NBG3;
|
||||||
|
@ -129,7 +129,7 @@ public:
|
|||||||
template<typename _device> address_map_entry &r(const char *tag, uint16_t (_device::*read)(address_space &, offs_t, uint16_t), const char *read_name, uint64_t mask = 0) {
|
template<typename _device> address_map_entry &r(const char *tag, uint16_t (_device::*read)(address_space &, offs_t, uint16_t), const char *read_name, uint64_t mask = 0) {
|
||||||
return r(read16_delegate(read, read_name, tag, (_device *)nullptr),
|
return r(read16_delegate(read, read_name, tag, (_device *)nullptr),
|
||||||
mask);
|
mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _device> address_map_entry &r(const char *tag, uint32_t (_device::*read)(address_space &, offs_t, uint32_t), const char *read_name, uint64_t mask = 0) {
|
template<typename _device> address_map_entry &r(const char *tag, uint32_t (_device::*read)(address_space &, offs_t, uint32_t), const char *read_name, uint64_t mask = 0) {
|
||||||
return r(read32_delegate(read, read_name, tag, (_device *)nullptr),
|
return r(read32_delegate(read, read_name, tag, (_device *)nullptr),
|
||||||
@ -142,14 +142,14 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
template<typename _device> address_map_entry &w(const char *tag, void (_device::*write)(address_space &, offs_t, uint8_t, uint8_t), const char *write_name, uint64_t mask = 0) {
|
template<typename _device> address_map_entry &w(const char *tag, void (_device::*write)(address_space &, offs_t, uint8_t, uint8_t), const char *write_name, uint64_t mask = 0) {
|
||||||
return w(write8_delegate(write, write_name, tag, (_device *)nullptr),
|
return w(write8_delegate(write, write_name, tag, (_device *)nullptr),
|
||||||
mask);
|
mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _device> address_map_entry &w(const char *tag, void (_device::*write)(address_space &, offs_t, uint16_t, uint16_t), const char *write_name, uint64_t mask = 0) {
|
template<typename _device> address_map_entry &w(const char *tag, void (_device::*write)(address_space &, offs_t, uint16_t, uint16_t), const char *write_name, uint64_t mask = 0) {
|
||||||
return w(write16_delegate(write, write_name, tag, (_device *)nullptr),
|
return w(write16_delegate(write, write_name, tag, (_device *)nullptr),
|
||||||
mask);
|
mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _device> address_map_entry &w(const char *tag, void (_device::*write)(address_space &, offs_t, uint32_t, uint32_t), const char *write_name, uint64_t mask = 0) {
|
template<typename _device> address_map_entry &w(const char *tag, void (_device::*write)(address_space &, offs_t, uint32_t, uint32_t), const char *write_name, uint64_t mask = 0) {
|
||||||
return w(write32_delegate(write, write_name, tag, (_device *)nullptr),
|
return w(write32_delegate(write, write_name, tag, (_device *)nullptr),
|
||||||
@ -163,7 +163,7 @@ public:
|
|||||||
|
|
||||||
template<typename _device> address_map_entry &rw(const char *tag, uint8_t (_device::*read)(address_space &, offs_t, uint8_t), const char *read_name, void (_device::*write)(address_space &, offs_t, uint8_t, uint8_t), const char *write_name, uint64_t mask = 0) {
|
template<typename _device> address_map_entry &rw(const char *tag, uint8_t (_device::*read)(address_space &, offs_t, uint8_t), const char *read_name, void (_device::*write)(address_space &, offs_t, uint8_t, uint8_t), const char *write_name, uint64_t mask = 0) {
|
||||||
return rw(read8_delegate(read, read_name, tag, (_device *)nullptr),
|
return rw(read8_delegate(read, read_name, tag, (_device *)nullptr),
|
||||||
write8_delegate(write, write_name, tag, (_device *)nullptr),
|
write8_delegate(write, write_name, tag, (_device *)nullptr),
|
||||||
mask);
|
mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ public:
|
|||||||
return rw(read16_delegate(read, read_name, tag, (_device *)nullptr),
|
return rw(read16_delegate(read, read_name, tag, (_device *)nullptr),
|
||||||
write16_delegate(write, write_name, tag, (_device *)nullptr),
|
write16_delegate(write, write_name, tag, (_device *)nullptr),
|
||||||
mask);
|
mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename _device> address_map_entry &rw(const char *tag, uint32_t (_device::*read)(address_space &, offs_t, uint32_t), const char *read_name, void (_device::*write)(address_space &, offs_t, uint32_t, uint32_t), const char *write_name, uint64_t mask = 0) {
|
template<typename _device> address_map_entry &rw(const char *tag, uint32_t (_device::*read)(address_space &, offs_t, uint32_t), const char *read_name, void (_device::*write)(address_space &, offs_t, uint32_t, uint32_t), const char *write_name, uint64_t mask = 0) {
|
||||||
return rw(read32_delegate(read, read_name, tag, (_device *)nullptr),
|
return rw(read32_delegate(read, read_name, tag, (_device *)nullptr),
|
||||||
|
@ -35,7 +35,7 @@
|
|||||||
and readability reasons we tend to write the closest integer
|
and readability reasons we tend to write the closest integer
|
||||||
value. For example, 3.579545_MHz_XTAL should actually be
|
value. For example, 3.579545_MHz_XTAL should actually be
|
||||||
3.579545454545...MHz (315/88). This is no problem though: see above
|
3.579545454545...MHz (315/88). This is no problem though: see above
|
||||||
note about tolerance.
|
note about tolerance.
|
||||||
|
|
||||||
In the "Examples" column, please don't add 1000 examples, this is just
|
In the "Examples" column, please don't add 1000 examples, this is just
|
||||||
for interest, so two or three examples is enough.
|
for interest, so two or three examples is enough.
|
||||||
@ -54,15 +54,15 @@ const double XTAL::known_xtals[] = {
|
|||||||
/*
|
/*
|
||||||
Frequency Sugarvassed Examples
|
Frequency Sugarvassed Examples
|
||||||
----------- ---------------------- ---------------------------------------- */
|
----------- ---------------------- ---------------------------------------- */
|
||||||
32'768, /* 32.768_kHz_XTAL Used to drive RTC chips */
|
32'768, /* 32.768_kHz_XTAL Used to drive RTC chips */
|
||||||
384'000, /* 384_kHz_XTAL Resonator - Commonly used for driving OKI MSM5205 */
|
384'000, /* 384_kHz_XTAL Resonator - Commonly used for driving OKI MSM5205 */
|
||||||
400'000, /* 400_kHz_XTAL Resonator - OKI MSM5205 on Great Swordman h/w */
|
400'000, /* 400_kHz_XTAL Resonator - OKI MSM5205 on Great Swordman h/w */
|
||||||
430'000, /* 430_kHz_XTAL Resonator */
|
430'000, /* 430_kHz_XTAL Resonator */
|
||||||
455'000, /* 455_kHz_XTAL Resonator - OKI MSM5205 on Gladiator h/w */
|
455'000, /* 455_kHz_XTAL Resonator - OKI MSM5205 on Gladiator h/w */
|
||||||
512'000, /* 512_kHz_XTAL Resonator - Toshiba TC8830F */
|
512'000, /* 512_kHz_XTAL Resonator - Toshiba TC8830F */
|
||||||
600'000, /* 600_kHz_XTAL - */
|
600'000, /* 600_kHz_XTAL - */
|
||||||
640'000, /* 640_kHz_XTAL Resonator - NEC UPD7759, Texas Instruments Speech Chips @ 8khz */
|
640'000, /* 640_kHz_XTAL Resonator - NEC UPD7759, Texas Instruments Speech Chips @ 8khz */
|
||||||
960'000, /* 960_kHz_XTAL Resonator - Xerox Notetaker Keyboard UART */
|
960'000, /* 960_kHz_XTAL Resonator - Xerox Notetaker Keyboard UART */
|
||||||
1'000'000, /* 1_MHz_XTAL Used to drive OKI M6295 chips */
|
1'000'000, /* 1_MHz_XTAL Used to drive OKI M6295 chips */
|
||||||
1'056'000, /* 1.056_MHz_XTAL Resonator - OKI M6295 on Trio The Punch h/w */
|
1'056'000, /* 1.056_MHz_XTAL Resonator - OKI M6295 on Trio The Punch h/w */
|
||||||
1'294'400, /* 1.2944_MHz_XTAL BBN BitGraph PSG */
|
1'294'400, /* 1.2944_MHz_XTAL BBN BitGraph PSG */
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define M1AUDIO_TAG "m1audio"
|
#define M1AUDIO_TAG "m1audio"
|
||||||
#define M1AUDIO_CPU_REGION "m1audio:sndcpu"
|
#define M1AUDIO_CPU_REGION "m1audio:sndcpu"
|
||||||
#define M1AUDIO_MPCM1_REGION "m1audio:pcm1"
|
#define M1AUDIO_MPCM1_REGION "m1audio:pcm1"
|
||||||
#define M1AUDIO_MPCM2_REGION "m1audio:pcm2"
|
#define M1AUDIO_MPCM2_REGION "m1audio:pcm2"
|
||||||
@ -52,7 +52,7 @@ private:
|
|||||||
required_device<multipcm_device> m_multipcm_2;
|
required_device<multipcm_device> m_multipcm_2;
|
||||||
required_device<ym3438_device> m_ym;
|
required_device<ym3438_device> m_ym;
|
||||||
required_device<i8251_device> m_uart;
|
required_device<i8251_device> m_uart;
|
||||||
|
|
||||||
required_memory_region m_multipcm1_region;
|
required_memory_region m_multipcm1_region;
|
||||||
required_memory_region m_multipcm2_region;
|
required_memory_region m_multipcm2_region;
|
||||||
|
|
||||||
|
@ -178,7 +178,7 @@ void snes_sound_device::device_start()
|
|||||||
memcpy(m_ipl_region, machine().root_device().memregion("sound_ipl")->base(), 64);
|
memcpy(m_ipl_region, machine().root_device().memregion("sound_ipl")->base(), 64);
|
||||||
|
|
||||||
m_tick_timer = timer_alloc(TIMER_TICK_ID);
|
m_tick_timer = timer_alloc(TIMER_TICK_ID);
|
||||||
|
|
||||||
state_register();
|
state_register();
|
||||||
save_pointer(NAME(m_ram.get()), SNES_SPCRAM_SIZE);
|
save_pointer(NAME(m_ram.get()), SNES_SPCRAM_SIZE);
|
||||||
}
|
}
|
||||||
@ -207,10 +207,10 @@ void snes_sound_device::device_reset()
|
|||||||
m_counter[i] = 0;
|
m_counter[i] = 0;
|
||||||
m_subcounter[i] = 0;
|
m_subcounter[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
attotime period = attotime::from_hz(64000);
|
attotime period = attotime::from_hz(64000);
|
||||||
m_tick_timer->adjust(period, 0, period);
|
m_tick_timer->adjust(period, 0, period);
|
||||||
|
|
||||||
dsp_reset();
|
dsp_reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,9 +218,9 @@ inline void snes_sound_device::update_timer_tick(uint8_t which)
|
|||||||
{
|
{
|
||||||
if(m_timer_enabled[which] == false)
|
if(m_timer_enabled[which] == false)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_subcounter[which]++;
|
m_subcounter[which]++;
|
||||||
|
|
||||||
// if timer channel is 0 or 1 we update at 64000/8
|
// if timer channel is 0 or 1 we update at 64000/8
|
||||||
if(m_subcounter[which] >= 8 || which == 2)
|
if(m_subcounter[which] >= 8 || which == 2)
|
||||||
{
|
{
|
||||||
@ -242,7 +242,7 @@ void snes_sound_device::device_timer(emu_timer &timer, device_timer_id id, int p
|
|||||||
assert_always(false, "Unknown id in snes_sound_device::device_timer");
|
assert_always(false, "Unknown id in snes_sound_device::device_timer");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int ch=0;ch<3;ch++)
|
for(int ch=0;ch<3;ch++)
|
||||||
update_timer_tick(ch);
|
update_timer_tick(ch);
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,7 @@ private:
|
|||||||
|
|
||||||
DECLARE_READ8_MEMBER(dsp_io_r);
|
DECLARE_READ8_MEMBER(dsp_io_r);
|
||||||
DECLARE_WRITE8_MEMBER(dsp_io_w);
|
DECLARE_WRITE8_MEMBER(dsp_io_w);
|
||||||
// TIMER_CALLBACK_MEMBER(spc_timer);
|
// TIMER_CALLBACK_MEMBER(spc_timer);
|
||||||
void dsp_reset();
|
void dsp_reset();
|
||||||
void dsp_update(short *sound_ptr);
|
void dsp_update(short *sound_ptr);
|
||||||
int advance_envelope(int v);
|
int advance_envelope(int v);
|
||||||
@ -116,17 +116,17 @@ private:
|
|||||||
TIMER_TICK_ID = 1
|
TIMER_TICK_ID = 1
|
||||||
};
|
};
|
||||||
/* timers */
|
/* timers */
|
||||||
emu_timer *m_tick_timer;
|
emu_timer *m_tick_timer;
|
||||||
bool m_timer_enabled[3];
|
bool m_timer_enabled[3];
|
||||||
uint16_t m_counter[3];
|
uint16_t m_counter[3];
|
||||||
uint8_t m_subcounter[3];
|
uint8_t m_subcounter[3];
|
||||||
inline void update_timer_tick(uint8_t which);
|
inline void update_timer_tick(uint8_t which);
|
||||||
|
|
||||||
/* IO ports */
|
/* IO ports */
|
||||||
uint8_t m_port_in[4]; /* SPC input ports */
|
uint8_t m_port_in[4]; /* SPC input ports */
|
||||||
uint8_t m_port_out[4]; /* SPC output ports */
|
uint8_t m_port_out[4]; /* SPC output ports */
|
||||||
|
|
||||||
uint16_t m_TnDIV[3]; /**< Timer N Divider */
|
uint16_t m_TnDIV[3]; /**< Timer N Divider */
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_DEVICE_TYPE(SNES, snes_sound_device)
|
DECLARE_DEVICE_TYPE(SNES, snes_sound_device)
|
||||||
|
@ -3863,7 +3863,7 @@ ROM_END
|
|||||||
// Green Lizard [Reel Game] / Export / A - 05/01/01
|
// Green Lizard [Reel Game] / Export / A - 05/01/01
|
||||||
// Requires set chip version: 4.04.xx
|
// Requires set chip version: 4.04.xx
|
||||||
// Variation (% and NO):
|
// Variation (% and NO):
|
||||||
// Doesn't requires touch screen
|
// Doesn't requires touch screen
|
||||||
ROM_START( glizrdce )
|
ROM_START( glizrdce )
|
||||||
ARISTOCRAT_MK5_BIOS
|
ARISTOCRAT_MK5_BIOS
|
||||||
/*
|
/*
|
||||||
@ -4493,7 +4493,7 @@ ROM_END
|
|||||||
// Keep Your Hat On / Export / B - 08/05/2000
|
// Keep Your Hat On / Export / B - 08/05/2000
|
||||||
// Requires set chips 4.01.xx
|
// Requires set chips 4.01.xx
|
||||||
// Variation (% and NO)
|
// Variation (% and NO)
|
||||||
// Requires touch screen
|
// Requires touch screen
|
||||||
ROM_START( kyhatonu )
|
ROM_START( kyhatonu )
|
||||||
ARISTOCRAT_MK5_BIOS
|
ARISTOCRAT_MK5_BIOS
|
||||||
/*
|
/*
|
||||||
|
@ -190,7 +190,7 @@ MACHINE_CONFIG_START(bebox_state::bebox)
|
|||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480)
|
MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480)
|
||||||
MCFG_SCREEN_UPDATE_DEVICE("vga", cirrus_gd5428_device, screen_update)
|
MCFG_SCREEN_UPDATE_DEVICE("vga", cirrus_gd5428_device, screen_update)
|
||||||
|
|
||||||
MCFG_PALETTE_ADD("palette", 0x100)
|
MCFG_PALETTE_ADD("palette", 0x100)
|
||||||
MCFG_DEVICE_ADD("vga", CIRRUS_GD5428, 0)
|
MCFG_DEVICE_ADD("vga", CIRRUS_GD5428, 0)
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ protected:
|
|||||||
// overrides
|
// overrides
|
||||||
virtual void machine_start() override;
|
virtual void machine_start() override;
|
||||||
virtual void machine_reset() override;
|
virtual void machine_reset() override;
|
||||||
virtual void video_start() override;
|
virtual void video_start() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// driver variables
|
// driver variables
|
||||||
@ -412,7 +412,7 @@ READ8_MEMBER(blackt96_state::blackt96_soundio_port_c_r)
|
|||||||
|
|
||||||
WRITE8_MEMBER(blackt96_state::blackt96_soundio_port_c_w)
|
WRITE8_MEMBER(blackt96_state::blackt96_soundio_port_c_w)
|
||||||
{
|
{
|
||||||
// logerror("%s: blackt96_soundio_port_c_w (PREV DATA %02x CURR DATA %02x)\n", machine().describe_context().c_str(), m_port_c_data, data);
|
// logerror("%s: blackt96_soundio_port_c_w (PREV DATA %02x CURR DATA %02x)\n", machine().describe_context().c_str(), m_port_c_data, data);
|
||||||
// data & 0x80 unuused?
|
// data & 0x80 unuused?
|
||||||
// data & 0x40 is read - see above
|
// data & 0x40 is read - see above
|
||||||
|
|
||||||
@ -441,7 +441,7 @@ WRITE8_MEMBER(blackt96_state::blackt96_soundio_port_c_w)
|
|||||||
{
|
{
|
||||||
//logerror("%s: blackt96_soundio_port_c_w (write to OKI %02x) (oki selected is %02x)\n", machine().describe_context().c_str(), m_port_b_latch, m_oki_selected);
|
//logerror("%s: blackt96_soundio_port_c_w (write to OKI %02x) (oki selected is %02x)\n", machine().describe_context().c_str(), m_port_b_latch, m_oki_selected);
|
||||||
if (m_oki_selected == 0) m_oki[0]->write(space, 0, m_port_b_latch);
|
if (m_oki_selected == 0) m_oki[0]->write(space, 0, m_port_b_latch);
|
||||||
else if (m_oki_selected == 1) m_oki[1]->write(space, 0, m_port_b_latch);
|
else if (m_oki_selected == 1) m_oki[1]->write(space, 0, m_port_b_latch);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((data & 0x01) == 0x00) && ((m_port_c_data & 0x01) == 0x01)) // high -> low on bit 0x01 reads to selected OKI
|
if (((data & 0x01) == 0x00) && ((m_port_c_data & 0x01) == 0x01)) // high -> low on bit 0x01 reads to selected OKI
|
||||||
|
@ -129,7 +129,7 @@ static ADDRESS_MAP_START( agress_map, AS_PROGRAM, 16, blockout_state )
|
|||||||
AM_RANGE(0x180000, 0x1bffff) AM_RAM_WRITE(blockout_videoram_w) AM_SHARE("videoram")
|
AM_RANGE(0x180000, 0x1bffff) AM_RAM_WRITE(blockout_videoram_w) AM_SHARE("videoram")
|
||||||
AM_RANGE(0x1d4000, 0x1dffff) AM_RAM /* work RAM */
|
AM_RANGE(0x1d4000, 0x1dffff) AM_RAM /* work RAM */
|
||||||
AM_RANGE(0x1f4000, 0x1fffff) AM_RAM /* work RAM */
|
AM_RANGE(0x1f4000, 0x1fffff) AM_RAM /* work RAM */
|
||||||
AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("frontvideoram")
|
AM_RANGE(0x200000, 0x207fff) AM_RAM AM_SHARE("frontvideoram")
|
||||||
AM_RANGE(0x208000, 0x21ffff) AM_RAM /* ??? */
|
AM_RANGE(0x208000, 0x21ffff) AM_RAM /* ??? */
|
||||||
AM_RANGE(0x280002, 0x280003) AM_WRITE(blockout_frontcolor_w)
|
AM_RANGE(0x280002, 0x280003) AM_WRITE(blockout_frontcolor_w)
|
||||||
AM_RANGE(0x280200, 0x2805ff) AM_RAM_WRITE(blockout_paletteram_w) AM_SHARE("paletteram")
|
AM_RANGE(0x280200, 0x2805ff) AM_RAM_WRITE(blockout_paletteram_w) AM_SHARE("paletteram")
|
||||||
@ -226,8 +226,8 @@ static INPUT_PORTS_START( blockoutj )
|
|||||||
/* these can still be used on the difficutly select even if they can't be used for rotating pieces in this version */
|
/* these can still be used on the difficutly select even if they can't be used for rotating pieces in this version */
|
||||||
PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW2:7" ) /* Listed as "Unused" */
|
PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW2:7" ) /* Listed as "Unused" */
|
||||||
PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" ) /* Listed as "Unused" */
|
PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW2:8" ) /* Listed as "Unused" */
|
||||||
// PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_DIPLOCATION("SW2:7")
|
// PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_DIPLOCATION("SW2:7")
|
||||||
// PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_DIPLOCATION("SW2:8")
|
// PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(2) PORT_DIPLOCATION("SW2:8")
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
static INPUT_PORTS_START( agress )
|
static INPUT_PORTS_START( agress )
|
||||||
@ -238,12 +238,12 @@ static INPUT_PORTS_START( agress )
|
|||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1)
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Button 3 (Bomb)")
|
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Button 3 (Bomb)")
|
||||||
|
|
||||||
PORT_MODIFY("P2")
|
PORT_MODIFY("P2")
|
||||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
|
||||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
|
||||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Button 3 (Bomb)")
|
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_NAME("P2 Button 3 (Bomb)")
|
||||||
|
|
||||||
/* factory shipment setting is all dips OFF */
|
/* factory shipment setting is all dips OFF */
|
||||||
PORT_MODIFY("DSW1")
|
PORT_MODIFY("DSW1")
|
||||||
PORT_DIPNAME( 0x04, 0x04, "Opening Cut" ) PORT_DIPLOCATION("SW1:3")
|
PORT_DIPNAME( 0x04, 0x04, "Opening Cut" ) PORT_DIPLOCATION("SW1:3")
|
||||||
@ -256,8 +256,8 @@ static INPUT_PORTS_START( agress )
|
|||||||
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Players ) ) PORT_DIPLOCATION("SW2:3")
|
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Players ) ) PORT_DIPLOCATION("SW2:3")
|
||||||
PORT_DIPSETTING( 0x04, "1" )
|
PORT_DIPSETTING( 0x04, "1" )
|
||||||
PORT_DIPSETTING( 0x00, "2" )
|
PORT_DIPSETTING( 0x00, "2" )
|
||||||
PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW2:7" )
|
PORT_DIPUNKNOWN_DIPLOC( 0x40, 0x40, "SW2:7" )
|
||||||
PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW2:8" )
|
PORT_DIPUNKNOWN_DIPLOC( 0x80, 0x80, "SW2:8" )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
@ -436,22 +436,22 @@ DRIVER_INIT_MEMBER(blockout_state,agress)
|
|||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* agress checks at F3A that this is mirrored, blockout glitches if you mirror to it
|
* agress checks at F3A that this is mirrored, blockout glitches if you mirror to it
|
||||||
* But actually mirroring this VRAM makes display to be offset
|
* But actually mirroring this VRAM makes display to be offset
|
||||||
* (clearly visible with text being on top bank instead of bottom during gameplay)
|
* (clearly visible with text being on top bank instead of bottom during gameplay)
|
||||||
* There are many possible solutions to this:
|
* There are many possible solutions to this:
|
||||||
* A) reads are actually ORed between upper and lower banks
|
* A) reads are actually ORed between upper and lower banks
|
||||||
* B) VRAM is initialized with same pattern checked, or extreme open bus occurs for the second uninitalized bank.
|
* B) VRAM is initialized with same pattern checked, or extreme open bus occurs for the second uninitalized bank.
|
||||||
* C) Agress isn't truly identical to Block Out HW wise, it really mirrors VRAM data and offsets display
|
* C) Agress isn't truly identical to Block Out HW wise, it really mirrors VRAM data and offsets display
|
||||||
* D) it's not supposed to enter into trace mode at all, cause of the bogus mirror check (trace exception
|
* D) it's not supposed to enter into trace mode at all, cause of the bogus mirror check (trace exception
|
||||||
* occurs at very beginning of the program execution)
|
* occurs at very beginning of the program execution)
|
||||||
* For now let's use D and just patch the TRACE exception that causes the bogus mirror check
|
* For now let's use D and just patch the TRACE exception that causes the bogus mirror check
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint16_t *rom = (uint16_t *)memregion("maincpu")->base();
|
uint16_t *rom = (uint16_t *)memregion("maincpu")->base();
|
||||||
|
|
||||||
rom[0x82/2] = 0x2700;
|
rom[0x82/2] = 0x2700;
|
||||||
}
|
}
|
||||||
|
|
||||||
GAME( 1989, blockout, 0, blockout, blockout, blockout_state, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 1)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1989, blockout, 0, blockout, blockout, blockout_state, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 1)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1989, blockout2,blockout, blockout, blockout, blockout_state, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 2)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1989, blockout2,blockout, blockout, blockout, blockout_state, 0, ROT0, "Technos Japan / California Dreams", "Block Out (set 2)", MACHINE_SUPPORTS_SAVE )
|
||||||
GAME( 1989, blockoutj,blockout, blockout, blockoutj, blockout_state, 0, ROT0, "Technos Japan / California Dreams", "Block Out (Japan)", MACHINE_SUPPORTS_SAVE )
|
GAME( 1989, blockoutj,blockout, blockout, blockoutj, blockout_state, 0, ROT0, "Technos Japan / California Dreams", "Block Out (Japan)", MACHINE_SUPPORTS_SAVE )
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
Driver by Bryan McPhail and David Haywood.
|
Driver by Bryan McPhail and David Haywood.
|
||||||
|
|
||||||
DECO 99 "ACE" Chip hooked up by cam900.
|
DECO 99 "ACE" Chip hooked up by cam900.
|
||||||
|
|
||||||
Todo:
|
Todo:
|
||||||
* Sprite priorities aren't verified to be 100% accurate.
|
* Sprite priorities aren't verified to be 100% accurate.
|
||||||
|
@ -395,7 +395,7 @@ static ADDRESS_MAP_START( calchase_map, AS_PROGRAM, 32, calchase_state )
|
|||||||
AM_RANGE(0x000d0024, 0x000d0027) AM_DEVWRITE16("ldac", dac_word_interface, write, 0x0000ffff)
|
AM_RANGE(0x000d0024, 0x000d0027) AM_DEVWRITE16("ldac", dac_word_interface, write, 0x0000ffff)
|
||||||
AM_RANGE(0x000d0028, 0x000d002b) AM_DEVWRITE16("rdac", dac_word_interface, write, 0x0000ffff)
|
AM_RANGE(0x000d0028, 0x000d002b) AM_DEVWRITE16("rdac", dac_word_interface, write, 0x0000ffff)
|
||||||
AM_RANGE(0x000d0800, 0x000d0fff) AM_ROM AM_REGION("nvram",0) //
|
AM_RANGE(0x000d0800, 0x000d0fff) AM_ROM AM_REGION("nvram",0) //
|
||||||
// AM_RANGE(0x000d0800, 0x000d0fff) AM_RAM // GAME_CMOS
|
// AM_RANGE(0x000d0800, 0x000d0fff) AM_RAM // GAME_CMOS
|
||||||
|
|
||||||
//GRULL AM_RANGE(0x000e0000, 0x000effff) AM_RAM
|
//GRULL AM_RANGE(0x000e0000, 0x000effff) AM_RAM
|
||||||
//GRULL-AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1")
|
//GRULL-AM_RANGE(0x000f0000, 0x000fffff) AM_ROMBANK("bank1")
|
||||||
@ -460,7 +460,7 @@ ADDRESS_MAP_END
|
|||||||
static INPUT_PORTS_START( calchase )
|
static INPUT_PORTS_START( calchase )
|
||||||
PORT_START("pc_keyboard_0")
|
PORT_START("pc_keyboard_0")
|
||||||
PORT_BIT ( 0x0001, 0x0000, IPT_UNUSED ) /* unused scancode 0 */
|
PORT_BIT ( 0x0001, 0x0000, IPT_UNUSED ) /* unused scancode 0 */
|
||||||
// AT_KEYB_HELPER( 0x0002, "Esc", KEYCODE_Q ) /* Esc 01 81 */
|
// AT_KEYB_HELPER( 0x0002, "Esc", KEYCODE_Q ) /* Esc 01 81 */
|
||||||
// 0x0004, KEYCODE_0
|
// 0x0004, KEYCODE_0
|
||||||
// 0x0008, KEYCODE_1
|
// 0x0008, KEYCODE_1
|
||||||
// 0x0010, KEYCODE_2
|
// 0x0010, KEYCODE_2
|
||||||
@ -475,7 +475,7 @@ static INPUT_PORTS_START( calchase )
|
|||||||
// 0x2000, KEYCODE_EQUAL
|
// 0x2000, KEYCODE_EQUAL
|
||||||
// 0x4000, KEYCODE_BACKSPACE
|
// 0x4000, KEYCODE_BACKSPACE
|
||||||
// 0x8000, KEYCODE_TAB
|
// 0x8000, KEYCODE_TAB
|
||||||
|
|
||||||
PORT_START("pc_keyboard_1")
|
PORT_START("pc_keyboard_1")
|
||||||
// 0x0001, KEYCODE_Q
|
// 0x0001, KEYCODE_Q
|
||||||
// 0x0002, KEYCODE_W
|
// 0x0002, KEYCODE_W
|
||||||
@ -499,7 +499,7 @@ static INPUT_PORTS_START( calchase )
|
|||||||
PORT_START("pc_keyboard_3")
|
PORT_START("pc_keyboard_3")
|
||||||
AT_KEYB_HELPER( 0x0001, "B", KEYCODE_B ) /* B 30 B0 */
|
AT_KEYB_HELPER( 0x0001, "B", KEYCODE_B ) /* B 30 B0 */
|
||||||
AT_KEYB_HELPER( 0x0002, "N", KEYCODE_N ) /* N 31 B1 */
|
AT_KEYB_HELPER( 0x0002, "N", KEYCODE_N ) /* N 31 B1 */
|
||||||
AT_KEYB_HELPER( 0x0200, "SPACE", KEYCODE_SPACE ) /* N 31 B1 */
|
AT_KEYB_HELPER( 0x0200, "SPACE", KEYCODE_SPACE ) /* N 31 B1 */
|
||||||
AT_KEYB_HELPER( 0x0800, "F1", KEYCODE_F1 ) /* F1 3B BB */
|
AT_KEYB_HELPER( 0x0800, "F1", KEYCODE_F1 ) /* F1 3B BB */
|
||||||
// AT_KEYB_HELPER( 0x8000, "F5", KEYCODE_F5 )
|
// AT_KEYB_HELPER( 0x8000, "F5", KEYCODE_F5 )
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
* History of Candela Data AB
|
* History of Candela Data AB
|
||||||
*---------------------------
|
*---------------------------
|
||||||
* The Candela computer was designed to be the big breakthough and developed by Candela Data AB, "a Didact Company".
|
* The Candela computer was designed to be the big breakthough and developed by Candela Data AB, "a Didact Company".
|
||||||
* The Candela system was based around a main unit that could run OS-9 or Flex and a terminal unit that had a
|
* The Candela system was based around a main unit that could run OS-9 or Flex and a terminal unit that had a
|
||||||
* propietary software including CDBASIC. The Candela system lost the battle of the swedish schools to
|
* propietary software including CDBASIC. The Candela system lost the battle of the swedish schools to
|
||||||
* the Compis computer by TeleNova which was based on CP/M initially. Later both lost to IBM PC as we know.
|
* the Compis computer by TeleNova which was based on CP/M initially. Later both lost to IBM PC as we know.
|
||||||
* Candela Data continued to sell their system to the swedish industry without major successes despite great
|
* Candela Data continued to sell their system to the swedish industry without major successes despite great
|
||||||
|
@ -1179,7 +1179,7 @@ MACHINE_CONFIG_START(cninja_state::robocop2)
|
|||||||
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
|
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_robocop2)
|
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_robocop2)
|
||||||
MCFG_SCREEN_PALETTE("palette")
|
MCFG_SCREEN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(cninja_state,robocop2)
|
MCFG_MACHINE_START_OVERRIDE(cninja_state,robocop2)
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(cninja_state,robocop2)
|
MCFG_MACHINE_RESET_OVERRIDE(cninja_state,robocop2)
|
||||||
|
|
||||||
@ -1270,7 +1270,7 @@ MACHINE_CONFIG_START(cninja_state::mutantf)
|
|||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) // same as robocop2? verify this from real pcb
|
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) // same as robocop2? verify this from real pcb
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_mutantf)
|
MCFG_SCREEN_UPDATE_DRIVER(cninja_state, screen_update_mutantf)
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(cninja_state,robocop2)
|
MCFG_MACHINE_START_OVERRIDE(cninja_state,robocop2)
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(cninja_state,robocop2)
|
MCFG_MACHINE_RESET_OVERRIDE(cninja_state,robocop2)
|
||||||
MCFG_VIDEO_START_OVERRIDE(cninja_state,mutantf)
|
MCFG_VIDEO_START_OVERRIDE(cninja_state,mutantf)
|
||||||
|
44
src/mame/drivers/cybstorm.cpp
Executable file → Normal file
44
src/mame/drivers/cybstorm.cpp
Executable file → Normal file
@ -2,15 +2,15 @@
|
|||||||
// copyright-holders:Aaron Giles, Phil Bennett
|
// copyright-holders:Aaron Giles, Phil Bennett
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
Atari Cyberstorm hardware
|
Atari Cyberstorm hardware
|
||||||
|
|
||||||
driver by Aaron Giles and Phil Bennett
|
driver by Aaron Giles and Phil Bennett
|
||||||
|
|
||||||
Games supported:
|
Games supported:
|
||||||
* Cyberstorm (prototype) (1993)
|
* Cyberstorm (prototype) (1993)
|
||||||
|
|
||||||
Known bugs:
|
Known bugs:
|
||||||
* STAIN effect not 100% correct
|
* STAIN effect not 100% correct
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Initialization
|
* Initialization
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ MACHINE_RESET_MEMBER(cybstorm_state,cybstorm)
|
|||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* I/O handling
|
* I/O handling
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
@ -82,14 +82,14 @@ WRITE32_MEMBER(cybstorm_state::latch_w)
|
|||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Main CPU memory handlers
|
* Main CPU memory handlers
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Memory maps
|
* Memory maps
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
@ -124,7 +124,7 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Port definitions
|
* Port definitions
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
@ -178,7 +178,7 @@ INPUT_PORTS_END
|
|||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Graphics definitions
|
* Graphics definitions
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
@ -219,16 +219,16 @@ static const gfx_layout molayout =
|
|||||||
|
|
||||||
|
|
||||||
static GFXDECODE_START( cybstorm )
|
static GFXDECODE_START( cybstorm )
|
||||||
GFXDECODE_ENTRY( "gfx2", 0, pflayout, 0, 16 ) /* sprites & playfield */
|
GFXDECODE_ENTRY( "gfx2", 0, pflayout, 0, 16 ) /* sprites & playfield */
|
||||||
GFXDECODE_ENTRY( "gfx3", 0, molayout, 4096, 64 ) /* sprites & playfield */
|
GFXDECODE_ENTRY( "gfx3", 0, molayout, 4096, 64 ) /* sprites & playfield */
|
||||||
GFXDECODE_ENTRY( "gfx1", 0, anlayout, 16384, 64 ) /* characters 8x8 */
|
GFXDECODE_ENTRY( "gfx1", 0, anlayout, 16384, 64 ) /* characters 8x8 */
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Machine driver
|
* Machine driver
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
@ -289,18 +289,18 @@ MACHINE_CONFIG_END
|
|||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* ROM definition(s)
|
* ROM definition(s)
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
ROM_START( cybstorm )
|
ROM_START( cybstorm )
|
||||||
ROM_REGION( 0x200000, "maincpu", 0 ) /* 6*128k for 68020 code */
|
ROM_REGION( 0x200000, "maincpu", 0 ) /* 6*128k for 68020 code */
|
||||||
ROM_LOAD32_BYTE( "st_11.22.prog.6a", 0x000000, 0x080000, CRC(8b112ee9) SHA1(cd8367c47c653b8a1ba236c354f009f4297d521d) )
|
ROM_LOAD32_BYTE( "st_11.22.prog.6a", 0x000000, 0x080000, CRC(8b112ee9) SHA1(cd8367c47c653b8a1ba236c354f009f4297d521d) )
|
||||||
ROM_LOAD32_BYTE( "st_11.22.prog.8a", 0x000001, 0x080000, CRC(36b7cec9) SHA1(c9c2ba6df1fc849200e0c66a7cbc292e8b0b22f3) )
|
ROM_LOAD32_BYTE( "st_11.22.prog.8a", 0x000001, 0x080000, CRC(36b7cec9) SHA1(c9c2ba6df1fc849200e0c66a7cbc292e8b0b22f3) )
|
||||||
ROM_LOAD32_BYTE( "st_11.22.prog2.13a", 0x000002, 0x080000, CRC(1318f2c5) SHA1(929fbe96621852a10b7072490e1e554cdb2f20d8) )
|
ROM_LOAD32_BYTE( "st_11.22.prog2.13a", 0x000002, 0x080000, CRC(1318f2c5) SHA1(929fbe96621852a10b7072490e1e554cdb2f20d8) )
|
||||||
ROM_LOAD32_BYTE( "st_11.22.prog.16a", 0x000003, 0x080000, CRC(4ae586a8) SHA1(daa803ed38f6582677b397e744dd8f5f60cfb508) )
|
ROM_LOAD32_BYTE( "st_11.22.prog.16a", 0x000003, 0x080000, CRC(4ae586a8) SHA1(daa803ed38f6582677b397e744dd8f5f60cfb508) )
|
||||||
|
|
||||||
ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k + 16k for 6502 code */
|
ROM_REGION( 0x14000, "jsa:cpu", 0 ) /* 64k + 16k for 6502 code */
|
||||||
ROM_LOAD( "st_11.22.6502", 0x010000, 0x004000, CRC(947421b2) SHA1(72b2b66122e779135f1f5af794e4d8513ccbbef6) )
|
ROM_LOAD( "st_11.22.6502", 0x010000, 0x004000, CRC(947421b2) SHA1(72b2b66122e779135f1f5af794e4d8513ccbbef6) )
|
||||||
ROM_CONTINUE( 0x004000, 0x00c000 )
|
ROM_CONTINUE( 0x004000, 0x00c000 )
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ ROM_START( cybstorm )
|
|||||||
ROM_LOAD( "st_11.22.mo34",0x980000, 0x080000, CRC(b8b0c8b6) SHA1(f47218a4d94aa151964687a6e4c02f2b3065fdd3) )
|
ROM_LOAD( "st_11.22.mo34",0x980000, 0x080000, CRC(b8b0c8b6) SHA1(f47218a4d94aa151964687a6e4c02f2b3065fdd3) )
|
||||||
ROM_LOAD( "st_11.22.mo35",0xb80000, 0x080000, CRC(f0b9cf9d) SHA1(7ce30b05c1ee02346e8f568f36274b46d1ed99c4) )
|
ROM_LOAD( "st_11.22.mo35",0xb80000, 0x080000, CRC(f0b9cf9d) SHA1(7ce30b05c1ee02346e8f568f36274b46d1ed99c4) )
|
||||||
|
|
||||||
ROM_REGION( 0x100000, "jsa:oki1", 0 ) /* 1MB for ADPCM */
|
ROM_REGION( 0x100000, "jsa:oki1", 0 ) /* 1MB for ADPCM */
|
||||||
ROM_LOAD( "st_11.22.5a", 0x000000, 0x080000, CRC(d469692c) SHA1(b7d94c042cf9f28ea65d44f5305d56459562d209) )
|
ROM_LOAD( "st_11.22.5a", 0x000000, 0x080000, CRC(d469692c) SHA1(b7d94c042cf9f28ea65d44f5305d56459562d209) )
|
||||||
|
|
||||||
ROM_REGION( 0x100000, "jsa:oki2", 0 ) /* 1MB for ADPCM */
|
ROM_REGION( 0x100000, "jsa:oki2", 0 ) /* 1MB for ADPCM */
|
||||||
@ -354,7 +354,7 @@ ROM_END
|
|||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Driver initialization
|
* Driver initialization
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
@ -367,7 +367,7 @@ DRIVER_INIT_MEMBER(cybstorm_state, cybstorm)
|
|||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
*
|
*
|
||||||
* Game driver(s)
|
* Game driver(s)
|
||||||
*
|
*
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
|
@ -205,7 +205,7 @@ Stephh's notes (based on the games M68000 code and some tests) :
|
|||||||
Dip locations verified with US conversion kit manual.
|
Dip locations verified with US conversion kit manual.
|
||||||
|
|
||||||
TODO:
|
TODO:
|
||||||
Blend function aren't fully emulated.
|
Blend function aren't fully emulated.
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
@ -547,7 +547,7 @@ MACHINE_CONFIG_START(dassault_state::dassault)
|
|||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) // same as robocop2(cninja.cpp)? verify this from real pcb.
|
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248) // same as robocop2(cninja.cpp)? verify this from real pcb.
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(dassault_state, screen_update_dassault)
|
MCFG_SCREEN_UPDATE_DRIVER(dassault_state, screen_update_dassault)
|
||||||
|
|
||||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", dassault)
|
MCFG_GFXDECODE_ADD("gfxdecode", "palette", dassault)
|
||||||
|
@ -2290,7 +2290,7 @@ MACHINE_CONFIG_START(nslasher_state::tattass)
|
|||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
|
MCFG_SCREEN_RAW_PARAMS(XTAL(28'000'000) / 4, 442, 0, 320, 274, 8, 248)
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(nslasher_state, screen_update_nslasher)
|
MCFG_SCREEN_UPDATE_DRIVER(nslasher_state, screen_update_nslasher)
|
||||||
|
|
||||||
MCFG_DECO_ACE_ADD("deco_ace")
|
MCFG_DECO_ACE_ADD("deco_ace")
|
||||||
MCFG_DECO_ACE_PALETTE("palette")
|
MCFG_DECO_ACE_PALETTE("palette")
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
* Lars Bjorklund. They constructed a series of microcomputers for educational purposes such as "Mikrodator 6802",
|
* Lars Bjorklund. They constructed a series of microcomputers for educational purposes such as "Mikrodator 6802",
|
||||||
* Esselte 100 and the Candela computer for the swedish schools to educate the students in assembly programming
|
* Esselte 100 and the Candela computer for the swedish schools to educate the students in assembly programming
|
||||||
* and BASIC for electro mechanical applications such as stepper motors, simple process control, buttons
|
* and BASIC for electro mechanical applications such as stepper motors, simple process control, buttons
|
||||||
* and LED:s. Didact designs were marketed by Esselte Studium to the swedish schools.
|
* and LED:s. Didact designs were marketed by Esselte Studium to the swedish schools.
|
||||||
*
|
*
|
||||||
* The Esselte 1000 was an educational package based on Apple II plus software and litterature
|
* The Esselte 1000 was an educational package based on Apple II plus software and litterature
|
||||||
* but the relation to Didact is at this point unknown so it is probably a pure Esselte software production.
|
* but the relation to Didact is at this point unknown so it is probably a pure Esselte software production.
|
||||||
|
@ -7,12 +7,12 @@
|
|||||||
* See didact.cpp
|
* See didact.cpp
|
||||||
*
|
*
|
||||||
* The Esselte 100 was an original design with a CRT and a full Keyboard that also had a BASIC interpreter
|
* The Esselte 100 was an original design with a CRT and a full Keyboard that also had a BASIC interpreter
|
||||||
* extended with commands suitable for educational experiments using the exapansion bus and its built in
|
* extended with commands suitable for educational experiments using the exapansion bus and its built in
|
||||||
* io control capabilities.
|
* io control capabilities.
|
||||||
*
|
*
|
||||||
* The Esselte 1000 was an educational package based on Apple II plus software and litterature but the relation
|
* The Esselte 1000 was an educational package based on Apple II plus software and litterature but the relation
|
||||||
* to Didact is at this point unknown so it is probably a pure Esselte software production. If this branded
|
* to Didact is at this point unknown so it is probably a pure Esselte software production. If this branded
|
||||||
* distribution is recovered it will be added as a clone of the Apple II driver or just as softlist item.
|
* distribution is recovered it will be added as a clone of the Apple II driver or just as softlist item.
|
||||||
*
|
*
|
||||||
* Misc links about the boards supported by this driver.
|
* Misc links about the boards supported by this driver.
|
||||||
*-----------------------------------------------------
|
*-----------------------------------------------------
|
||||||
@ -131,7 +131,7 @@ class e100_state : public driver_device // public didact_state
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
e100_state(const machine_config &mconfig, device_type type, const char * tag)
|
e100_state(const machine_config &mconfig, device_type type, const char * tag)
|
||||||
// : didact_state(mconfig, type, tag)
|
// : didact_state(mconfig, type, tag)
|
||||||
: driver_device(mconfig, type, tag)
|
: driver_device(mconfig, type, tag)
|
||||||
,m_maincpu(*this, "maincpu")
|
,m_maincpu(*this, "maincpu")
|
||||||
,m_kbd_74145(*this, "kbd_74145")
|
,m_kbd_74145(*this, "kbd_74145")
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user